3 lines
5.2 KiB
JavaScript
3 lines
5.2 KiB
JavaScript
/*! maintenance_supporter frontend 2.95.0 */
|
|
import{p as k}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4XNVTWGC.js";var C={days:1,weeks:7,months:30.4368,years:365.25};function v(e,n){return!e||e<=0?0:e*(C[n||"days"]??1)}function O(e,n,s){let t=v(e,s);if(t<=0||n==null)return{pct:0,overflow:!1};let r=(t-n)/t*100;return{pct:Math.max(0,Math.min(100,r)),overflow:r>100}}var D=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 B(e){let n=String(e.getHours()).padStart(2,"0"),s=String(e.getMinutes()).padStart(2,"0");return`${b(e)}T${n}:${s}:00`}function x(e,n){let s=[];for(let t=0;t<n;t++){let r=new Date(e);r.setDate(r.getDate()+t),r.setHours(0,0,0,0),s.push(b(r))}return s}function h(e,n){let[s,t,r]=e.split("-").map(Number),l=new Date(s,t-1,r);return l.setDate(l.getDate()+n),b(l)}function M(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 I(e){let{windowStart:n,windowEnd:s,task:t,entryId:r,objectName:l}=e,c=[],g=(i,a)=>({date:i,entry_id:r,task_id:t.id,task_name:t.name,object_name:l,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:M(t.history),adaptive_enabled:!!t.adaptive_config?.enabled,prediction_confidence:t.threshold_prediction_confidence??null}),d=Math.max(1,Math.round(v(t.interval_days,t.interval_unit)));if(t.status==="overdue"||t.status==="triggered"){if(c.push(g(n,!1)),t.schedule_type==="time_based"&&t.interval_days&&t.interval_days>0){let i=h(n,d),a=1;for(;i<=s&&a<D;)c.push(g(i,!0)),a++,i=h(i,d)}return c}let u=t.next_due;if(typeof u!="string"||!u)return c;let o=u.slice(0,10);if(o>=n&&o<=s)c.push(g(o,!1));else if(o>s)return c;if(t.schedule_type==="time_based"&&t.interval_days&&t.interval_days>0){let i=h(o,d),a=c.length;for(;i<=s&&a<D;)i>=n&&(c.push(g(i,!0)),a++),i=h(i,d)}return c}function N(e,n,s,t=null){let r=x(n,s),l=r[0],c=r[r.length-1],g=[];for(let u of e){let o=u.object?.name||"",i=u.entry_id,a=u.tasks||[];for(let _ of a){if(t&&_.responsible_user_id!==t||_.enabled===!1)continue;let p=I({windowStart:l,windowEnd:c,task:_,entryId:i,objectName:o});g.push(...p)}}let d=new Map;for(let u of r)d.set(u,[]);for(let u of g){let o=d.get(u.date);o&&o.push(u)}for(let[,u]of d)u.sort((o,i)=>{let a=k(o.status),_=k(i.status);if(a!==_)return a-_;if(o.projected!==i.projected)return o.projected?1:-1;let p=o.object_name.localeCompare(i.object_name);return p!==0?p:o.task_name.localeCompare(i.task_name)});return r.map(u=>({date:u,events:d.get(u)??[]}))}var P={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 $(e,n,s){let t=E(n,s)[0],r=[];for(let l of e)for(let c of l.tasks||[]){let g=c.history||[],d=c.history_count??g.length;if(d<=g.length)continue;let u=g.map(a=>typeof a?.timestamp=="string"?a.timestamp:"").filter(Boolean),o=u.length?u.reduce((a,_)=>a<_?a:_).slice(0,10):"";if(o&&o<t)continue;let i=j(l.entry_id,c.id);r.push({entryId:l.entry_id,taskId:c.id,key:i,sig:`${i}:${d}:${A(JSON.stringify(g))}`})}return r}function A(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 E(e,n){let s=[];for(let t=n-1;t>=0;t--){let r=new Date(e);r.setDate(r.getDate()-t),r.setHours(0,0,0,0),s.push(b(r))}return s}function Y(e,n,s,t=null,r={}){let l=E(n,s),c=l[0],g=l[l.length-1],d=new Map;for(let o of l)d.set(o,[]);for(let o of e){let i=o.object?.name||"",a=o.entry_id,_=o.tasks||[];for(let p of _){if(t&&p.responsible_user_id!==t)continue;let y=r[j(a,p.id)]??(p.history||[]);for(let f of y){if(typeof f?.timestamp!="string")continue;let m=f.timestamp.slice(0,10);if(m<c||m>g)continue;let w=d.get(m);if(!w)continue;let S=f.type??"completed";w.push({date:m,entry_id:a,task_id:p.id,task_name:p.name,object_name:i,status:P[S]??"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:S,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 u={completed:0,reset:1,skipped:2,triggered:3,trigger_replaced:4};for(let[,o]of d)o.sort((i,a)=>{let _=u[i.history_type??""]??99,p=u[a.history_type??""]??99;if(_!==p)return _-p;let y=i.object_name.localeCompare(a.object_name);return y!==0?y:i.task_name.localeCompare(a.task_name)});return l.map(o=>({date:o,events:d.get(o)??[]}))}function L(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 r=[];for(let l of n){if(typeof l!="string")continue;let c=l.trim();if(!(!c||r.includes(c))&&(r.push(c),r.length>=10))break}return r}export{O as a,b,B as c,N as d,j as e,$ as f,Y as g,L as h};
|