3 lines
6.6 KiB
JavaScript
3 lines
6.6 KiB
JavaScript
/*! maintenance_supporter frontend 2.96.0 */
|
|
import{b as j}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4OFQFCKD.js";import{e as x,f as A,l as v}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-BYGTDXRD.js";var q=500,E=new Set(["completed","skipped","reset","missed"]);function N(r,e){let n=r.reading_values||[];return n.length?n.filter(o=>typeof o.value=="number").map(o=>({id:o.id,name:o.name||"",value:o.value,unit:o.unit||""})):typeof r.reading_value=="number"?[{id:"",name:"",value:r.reading_value,unit:e||""}]:[]}function C(r){let e=[];for(let n of r){let o=[...n.history??[]].map(t=>({h:t,ts:new Date(t.timestamp).getTime()})).filter(t=>Number.isFinite(t.ts)).sort((t,a)=>t.ts-a.ts),s=new Map;for(let{h:t,ts:a}of o){let y=N(t,n.reading_unit).map(i=>{let d=s.get(i.id);return s.set(i.id,i.value),{name:i.name,value:i.value,unit:i.unit,delta:d==null?null:i.value-d}});if(!E.has(t.type))continue;let c=t.checklist_state&&typeof t.checklist_state=="object"?Object.values(t.checklist_state):null;e.push({ts:a,timestamp:t.timestamp,taskId:n.id,taskName:n.name,type:t.type,cost:x(t),partsCost:typeof t.parts_cost=="number"?t.parts_cost:null,partsCounted:t.cost_basis==="use",purchaseCost:t.cost_basis==="use"&&t.purchase&&typeof t.cost=="number"?t.cost:null,duration:typeof t.duration=="number"?t.duration:null,notes:t.notes??null,completedBy:t.completed_by??null,phaseName:t.phase_id&&n.phases?.[t.phase_id]?.name||null,refNo:typeof t.ref_no=="number"?t.ref_no:null,taskRefNo:typeof n.ref_no=="number"?n.ref_no:null,readings:y,parts:(t.used_parts||[]).filter(i=>i&&(i.name||i.part_id)).map(i=>({name:i.name||i.part_id,quantity:typeof i.quantity=="number"?i.quantity:1})),photoIds:v(t),checklist:c&&c.length?{done:c.filter(Boolean).length,total:c.length}:null})}}return e.sort((n,o)=>o.ts-n.ts||n.taskName.localeCompare(o.taskName)),e}function H(r,e){let n=e.from?new Date(`${e.from}T00:00:00`).getTime():null,o=e.to?new Date(`${e.to}T00:00:00`).getTime()+864e5:null;return r.filter(s=>!(e.taskId&&s.taskId!==e.taskId||n!=null&&s.ts<n||o!=null&&s.ts>=o))}function S(r){let e=0,n=0;for(let o of r)o.type==="completed"&&(e++,o.cost!=null&&(n+=o.cost));return{completed:e,totalCost:n}}var p="__none__",I=36;function T(r){return r.area_id||p}function w(r,e,n){return r===p?n:e?.[r]?.name||r}function D(r,e){return r===p?"mdi:map-marker-off-outline":e?.[r]?.icon||"mdi:map-marker-outline"}function U(r,e,n){return r.filter(o=>(n||!o.object.archived)&&T(o.object)===e)}function B(r,e){let n=[];for(let o of r){let s=C(o.tasks.map(t=>({id:t.id,name:t.name,history:e(o.entry_id,t),phases:t.phases,ref_no:t.ref_no,reading_unit:t.reading_unit})));for(let t of s)n.push({...t,entryId:o.entry_id,objectName:o.object.name})}return n.sort((o,s)=>s.ts-o.ts||o.objectName.localeCompare(s.objectName)||o.taskName.localeCompare(s.taskName)),n}function z(r,e){let n=(e.taskQuery??"").trim();return H(r,{from:e.from,to:e.to}).filter(o=>(!e.entryId||o.entryId===e.entryId)&&(!n||j(o.taskName,n)))}function X(r){let{completed:e,totalCost:n}=S(r),o=0;for(let s of r)s.type==="completed"&&s.duration!=null&&(o+=s.duration);return{completions:e,totalCost:n,avgCost:e?n/e:null,totalDuration:o}}function G(r,e){let n=new Map;for(let t of e)n.set(t.entry_id,{entryId:t.entry_id,objectName:t.object.name,completions:0,cost:0,share:0});for(let t of r){if(t.type!=="completed")continue;let a=n.get(t.entryId);a&&(a.completions++,t.cost!=null&&(a.cost+=t.cost))}let o=[...n.values()].reduce((t,a)=>t+a.cost,0),s=[...n.values()].map(t=>({...t,share:o>0?t.cost/o:0}));return s.sort((t,a)=>a.cost-t.cost||a.completions-t.completions||t.objectName.localeCompare(a.objectName)),s}function R(r){let[e,n]=r.split("-").map(Number);return[e,n-1]}function L(r,e){return`${r}-${String(e+1).padStart(2,"0")}`}function J(r,e,n=new Date){let o=r.filter(u=>u.type==="completed"),s=o.map(u=>A(new Date(u.ts))),t=A(n),a=s.reduce((u,m)=>m<u?m:u,t),y=s.reduce((u,m)=>m>u?m:u,t),[c,i]=R(e.from||a),[d,h]=R(e.to||y),l=d*12+h-(c*12+i)+1;if(l<=0)return{unit:"month",buckets:[]};let g=l>I?"year":"month",k=[],_=new Map;if(g==="month")for(let u=0;u<l;u++){let m=c+Math.floor((i+u)/12),b=(i+u)%12,f={key:L(m,b),year:m,month:b,cost:0,completions:0};k.push(f),_.set(f.key,f)}else for(let u=c;u<=d;u++){let m={key:String(u),year:u,month:null,cost:0,completions:0};k.push(m),_.set(m.key,m)}return o.forEach((u,m)=>{let b=s[m],f=_.get(g==="month"?b.slice(0,7):b.slice(0,4));f&&(f.completions++,u.cost!=null&&(f.cost+=u.cost))}),{unit:g,buckets:k}}function W(r=new Date){return{from:A(new Date(r.getFullYear(),r.getMonth()-11,1)),to:A(r)}}function Z(r){return{from:`${r}-01-01`,to:`${r}-12-31`}}function tt(r,e){let n=new Set([e]);for(let o of r)o.type==="completed"&&n.add(new Date(o.ts).getFullYear());return[...n].sort((o,s)=>s-o)}function et(r,e){let n=new Map;for(let s of r){if(!e.showArchived&&s.object.archived)continue;let t=T(s.object),a=n.get(t);a?a.push(s):n.set(t,[s])}let o=[];for(let[s,t]of n){let a=t.flatMap(l=>l.tasks.filter(g=>e.showArchived||!g.archived)),y=a.filter(l=>!l.archived),c=0,i=0,d=-1/0,h=null;for(let l of B(t,e.historyOf))l.type==="completed"&&(l.cost!=null&&(i+=l.cost,new Date(l.ts).getFullYear()===e.year&&(c+=l.cost)),l.ts>d&&(d=l.ts,h=l.timestamp));o.push({key:s,name:w(s,e.areas,e.noAreaLabel),icon:D(s,e.areas),objects:t.length,tasks:a.length,overdue:y.filter(l=>l.status==="overdue"||l.status==="triggered").length,dueSoon:y.filter(l=>l.status==="due_soon").length,costYear:c,costTotal:i,lastCompletion:h})}return o.sort((s,t)=>+(s.key===p)-+(t.key===p)||s.name.localeCompare(t.name)),o}var Y=["name","objects","tasks","overdue","due_soon","cost_year","cost_total","last"],F={key:"name",dir:"asc"};function rt(r){let[e,n]=(r??"").split(":");return Y.includes(e)&&(n==="asc"||n==="desc")?{key:e,dir:n}:F}function nt(r,e){return r.key===e?{key:e,dir:r.dir==="asc"?"desc":"asc"}:{key:e,dir:e==="name"?"asc":"desc"}}function O(r,e){switch(e){case"name":return r.name;case"objects":return r.objects;case"tasks":return r.tasks;case"overdue":return r.overdue;case"due_soon":return r.dueSoon;case"cost_year":return r.costYear;case"cost_total":return r.costTotal;case"last":return r.lastCompletion?new Date(r.lastCompletion).getTime():-1/0}}function ot(r,e){let n=e.dir==="asc"?1:-1;return[...r].sort((o,s)=>{if(e.key==="name"){let c=+(o.key===p)-+(s.key===p);if(c)return c}let t=O(o,e.key),a=O(s,e.key),y=typeof t=="string"?t.localeCompare(a):t-a;return n*y||o.name.localeCompare(s.name)})}function st(r,e){let n=e.trim();return n?r.filter(o=>j(o.name,n)):[...r]}export{q as a,C as b,H as c,S as d,T as e,w as f,D as g,U as h,B as i,z as j,X as k,G as l,J as m,W as n,Z as o,tt as p,et as q,rt as r,nt as s,ot as t,st as u};
|