Files
HomeAssistantVS/custom_components/maintenance_supporter/frontend/panel-chunks/chunk-IRVVKPDP.js
T

3 lines
6.2 KiB
JavaScript

/*! maintenance_supporter frontend 2.94.0 */
import{p as k}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-JE577H3E.js";var E={days:1,weeks:7,months:30.4368,years:365.25};function w(e,n){return!e||e<=0?0:e*(E[n||"days"]??1)}function R(e,n,s){let t=w(e,s);if(t<=0||n==null)return{pct:0,overflow:!1};let o=(t-n)/t*100;return{pct:Math.max(0,Math.min(100,o)),overflow:o>100}}var S=5;function b(e){let n=e.getFullYear(),s=String(e.getMonth()+1).padStart(2,"0"),t=String(e.getDate()).padStart(2,"0");return`${n}-${s}-${t}`}function U(e){let n=String(e.getHours()).padStart(2,"0"),s=String(e.getMinutes()).padStart(2,"0");return`${b(e)}T${n}:${s}:00`}function P(e,n){let s=[];for(let t=0;t<n;t++){let o=new Date(e);o.setDate(o.getDate()+t),o.setHours(0,0,0,0),s.push(b(o))}return s}function h(e,n){let[s,t,o]=e.split("-").map(Number),c=new Date(s,t-1,o);return c.setDate(c.getDate()+n),b(c)}function A(e){if(!e||e.length===0)return null;let n=e.map(s=>s.cost).filter(s=>typeof s=="number");return n.length===0?null:n.reduce((s,t)=>s+t,0)/n.length}function C(e){let{windowStart:n,windowEnd:s,task:t,entryId:o,objectName:c}=e,u=[],_=(i,a)=>({date:i,entry_id:o,task_id:t.id,task_name:t.name,object_name:c,status:a&&(t.status==="overdue"||t.status==="triggered")?"ok":t.status,days_until_due:a?null:t.days_until_due??null,projected:a,schedule_type:t.schedule_type,interval_days:t.interval_days??null,interval_unit:t.interval_unit??null,responsible_user_id:t.responsible_user_id??null,avg_cost:A(t.history),adaptive_enabled:!!t.adaptive_config?.enabled,prediction_confidence:t.threshold_prediction_confidence??null}),l=Math.max(1,Math.round(w(t.interval_days,t.interval_unit)));if(t.status==="overdue"||t.status==="triggered"){if(u.push(_(n,!1)),t.schedule_type==="time_based"&&t.interval_days&&t.interval_days>0){let i=h(n,l),a=1;for(;i<=s&&a<S;)u.push(_(i,!0)),a++,i=h(i,l)}return u}let d=t.next_due;if(typeof d!="string"||!d)return u;let r=d.slice(0,10);if(r>=n&&r<=s)u.push(_(r,!1));else if(r>s)return u;if(t.schedule_type==="time_based"&&t.interval_days&&t.interval_days>0){let i=h(r,l),a=u.length;for(;i<=s&&a<S;)i>=n&&(u.push(_(i,!0)),a++),i=h(i,l)}return u}function Y(e,n,s,t=null){let o=P(n,s),c=o[0],u=o[o.length-1],_=[];for(let d of e){let r=d.object?.name||"",i=d.entry_id,a=d.tasks||[];for(let g of a){if(t&&g.responsible_user_id!==t||g.enabled===!1)continue;let p=C({windowStart:c,windowEnd:u,task:g,entryId:i,objectName:r});_.push(...p)}}let l=new Map;for(let d of o)l.set(d,[]);for(let d of _){let r=l.get(d.date);r&&r.push(d)}for(let[,d]of l)d.sort((r,i)=>{let a=k(r.status),g=k(i.status);if(a!==g)return a-g;if(r.projected!==i.projected)return r.projected?1:-1;let p=r.object_name.localeCompare(i.object_name);return p!==0?p:r.task_name.localeCompare(i.task_name)});return o.map(d=>({date:d,events:l.get(d)??[]}))}var T={completed:"ok",reset:"ok",skipped:"due_soon",missed:"overdue",triggered:"triggered",trigger_replaced:"triggered",trigger_removed:"ok"};function j(e,n){return`${e}/${n}`}function L(e,n,s){let t=x(n,s)[0],o=[];for(let c of e)for(let u of c.tasks||[]){let _=u.history||[],l=u.history_count??_.length;if(l<=_.length)continue;let d=_.map(a=>typeof a?.timestamp=="string"?a.timestamp:"").filter(Boolean),r=d.length?d.reduce((a,g)=>a<g?a:g).slice(0,10):"";if(r&&r<t)continue;let i=j(c.entry_id,u.id);o.push({entryId:c.entry_id,taskId:u.id,key:i,sig:`${i}:${l}:${M(JSON.stringify(_))}`})}return o}function M(e){let n=2166136261;for(let s=0;s<e.length;s++)n^=e.charCodeAt(s),n=Math.imul(n,16777619);return(n>>>0).toString(36)}function x(e,n){let s=[];for(let t=n-1;t>=0;t--){let o=new Date(e);o.setDate(o.getDate()-t),o.setHours(0,0,0,0),s.push(b(o))}return s}function X(e,n,s,t=null,o={}){let c=x(n,s),u=c[0],_=c[c.length-1],l=new Map;for(let r of c)l.set(r,[]);for(let r of e){let i=r.object?.name||"",a=r.entry_id,g=r.tasks||[];for(let p of g){if(t&&p.responsible_user_id!==t)continue;let m=o[j(a,p.id)]??(p.history||[]);for(let f of m){if(typeof f?.timestamp!="string")continue;let y=f.timestamp.slice(0,10);if(y<u||y>_)continue;let v=l.get(y);if(!v)continue;let D=f.type??"completed";v.push({date:y,entry_id:a,task_id:p.id,task_name:p.name,object_name:i,status:T[D]??"ok",days_until_due:null,projected:!1,schedule_type:p.schedule_type,interval_days:p.interval_days??null,responsible_user_id:p.responsible_user_id??null,avg_cost:typeof f.cost=="number"?f.cost:null,adaptive_enabled:!!p.adaptive_config?.enabled,prediction_confidence:null,history_timestamp:f.timestamp,history_type:D,history_cost:typeof f.cost=="number"?f.cost:null,history_notes:typeof f.notes=="string"?f.notes:null,history_duration:typeof f.duration=="number"?f.duration:null})}}}let d={completed:0,reset:1,skipped:2,triggered:3,trigger_replaced:4};for(let[,r]of l)r.sort((i,a)=>{let g=d[i.history_type??""]??99,p=d[a.history_type??""]??99;if(g!==p)return g-p;let m=i.object_name.localeCompare(a.object_name);return m!==0?m:i.task_name.localeCompare(a.task_name)});return c.map(r=>({date:r,events:l.get(r)??[]}))}function K(e){if(!e)return[];let n=[],s=e.photo_doc_id;typeof s=="string"&&n.push(s);let t=e.photo_doc_ids;Array.isArray(t)&&n.push(...t);let o=[];for(let c of n){if(typeof c!="string")continue;let u=c.trim();if(!(!u||o.includes(u))&&(o.push(u),o.length>=10))break}return o}async function O(e,n,s){let t=e.auth;if(t?.expired&&t.refreshAccessToken)try{await t.refreshAccessToken()}catch{}return fetch(n,{...s,headers:{...s.headers??{},Authorization:`Bearer ${t?.data?.access_token??""}`}})}var z=500*1024*1024;async function H(e,n,s,t="doc_too_large"){let o=await O(e,n,{method:"POST",body:s});if(o.status===413)throw new Error(t);if(!o.ok)throw new Error("doc_upload_failed");return await o.json()}async function I(e,n,s,t){let o=new FormData;o.append("entry_id",n);for(let u of t)o.append("tags",u);o.append("file",s,s.name);let c=await H(e,"/api/maintenance_supporter/document/upload",o);if(!c.id)throw new Error("doc_upload_failed");return{id:c.id,deduped:!!c.deduped,duplicate_in_object:c.duplicate_in_object??null}}async function G(e,n,s){return(await I(e,n,s,["photo"])).id}async function J(e,n,s){await Promise.all(s.map(t=>e.connection.sendMessagePromise({type:"maintenance_supporter/documents/discard_upload",entry_id:n,doc_id:t}).catch(()=>{})))}export{R as a,b,U as c,Y as d,j as e,L as f,X as g,K as h,z as i,H as j,I as k,G as l,J as m};