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

3 lines
6.7 KiB
JavaScript

/*! maintenance_supporter frontend 2.99.0 */
import{b as x}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-SYPCMUXO.js";import{a as H,e as S}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-55ND3GKE.js";import{A as k,B as A,y as v}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-3FGYBPXY.js";var V=500,B=new Set(["completed","skipped","reset","missed"]);function M(r,e){let o=r.reading_values||[];return o.length?o.filter(n=>typeof n.value=="number").map(n=>({id:n.id,name:n.name||"",value:n.value,unit:n.unit||""})):typeof r.reading_value=="number"?[{id:"",name:"",value:r.reading_value,unit:e||""}]:[]}function O(r){let e=[];for(let o of r){let n=[...o.history??[]].map(t=>({h:t,ts:k(t.timestamp)})).filter(t=>Number.isFinite(t.ts)).sort((t,a)=>t.ts-a.ts),s=new Map;for(let{h:t,ts:a}of n){let y=M(t,o.reading_unit).map(u=>{let f=s.get(u.id);return s.set(u.id,u.value),{name:u.name,value:u.value,unit:u.unit,delta:f==null?null:u.value-f}});if(!B.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:o.id,taskName:o.name,type:t.type,cost:S(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&&o.phases?.[t.phase_id]?.name||null,refNo:typeof t.ref_no=="number"?t.ref_no:null,taskRefNo:typeof o.ref_no=="number"?o.ref_no:null,readings:y,parts:(t.used_parts||[]).filter(u=>u&&(u.name||u.part_id)).map(u=>({name:u.name||u.part_id,quantity:typeof u.quantity=="number"?u.quantity:1})),photoIds:H(t),checklist:c&&c.length?{done:c.filter(Boolean).length,total:c.length}:null})}}return e.sort((o,n)=>n.ts-o.ts||o.taskName.localeCompare(n.taskName)),e}function R(r,e){return r.filter(o=>{if(e.taskId&&o.taskId!==e.taskId)return!1;if(!e.from&&!e.to)return!0;let n=A(o.timestamp);return!(!n||e.from&&n<e.from||e.to&&n>e.to)})}function E(r){let e=0,o=0;for(let n of r)n.type==="completed"&&(e++,n.cost!=null&&(o+=n.cost));return{completed:e,totalCost:o}}var d="__none__",L=36;function T(r){return r.area_id||d}function K(r,e,o){return r===d?o:e?.[r]?.name||r}function Y(r,e){return r===d?"mdi:map-marker-off-outline":e?.[r]?.icon||"mdi:map-marker-outline"}function J(r,e,o){return r.filter(n=>(o||!n.object.archived)&&T(n.object)===e)}function D(r,e){let o=[];for(let n of r){let s=O(n.tasks.map(t=>({id:t.id,name:t.name,history:e(n.entry_id,t),phases:t.phases,ref_no:t.ref_no,reading_unit:t.reading_unit})));for(let t of s)o.push({...t,entryId:n.entry_id,objectName:n.object.name})}return o.sort((n,s)=>s.ts-n.ts||n.objectName.localeCompare(s.objectName)||n.taskName.localeCompare(s.taskName)),o}function W(r,e){let o=(e.taskQuery??"").trim();return R(r,{from:e.from,to:e.to}).filter(n=>(!e.entryId||n.entryId===e.entryId)&&(!o||x(n.taskName,o)))}function Z(r){let{completed:e,totalCost:o}=E(r),n=0,s=0,t=0;for(let a of r)a.type==="completed"&&(a.duration!=null&&(n+=a.duration),!((a.cost??0)<0)&&(s++,t+=a.cost??0));return{completions:e,totalCost:o,avgCost:s?t/s:null,totalDuration:n}}function tt(r,e){let o=new Map;for(let t of e)o.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=o.get(t.entryId);a&&(a.completions++,t.cost!=null&&(a.cost+=t.cost))}let n=[...o.values()].reduce((t,a)=>t+Math.max(a.cost,0),0),s=[...o.values()].map(t=>({...t,share:n>0?Math.max(t.cost,0)/n:0}));return s.sort((t,a)=>a.cost-t.cost||a.completions-t.completions||t.objectName.localeCompare(a.objectName)),s}function C(r){let[e,o]=r.split("-").map(Number);return[e,o-1]}function I(r,e){return`${r}-${String(e+1).padStart(2,"0")}`}function et(r,e,o=v()){let n=r.filter(i=>i.type==="completed"),s=n.map(i=>A(i.timestamp)),t=s.filter(i=>i!==null),a=t.reduce((i,m)=>m<i?m:i,o),y=t.reduce((i,m)=>m>i?m:i,o),[c,u]=C(e.from||a),[f,h]=C(e.to||y),l=f*12+h-(c*12+u)+1;if(l<=0)return{unit:"month",buckets:[]};let g=l>L?"year":"month",_=[],j=new Map;if(g==="month")for(let i=0;i<l;i++){let m=c+Math.floor((u+i)/12),b=(u+i)%12,p={key:I(m,b),year:m,month:b,cost:0,completions:0};_.push(p),j.set(p.key,p)}else for(let i=c;i<=f;i++){let m={key:String(i),year:i,month:null,cost:0,completions:0};_.push(m),j.set(m.key,m)}return n.forEach((i,m)=>{let b=s[m];if(!b)return;let p=j.get(g==="month"?b.slice(0,7):b.slice(0,4));p&&(p.completions++,i.cost!=null&&(p.cost+=i.cost))}),{unit:g,buckets:_}}function rt(r=v()){let[e,o]=C(r),n=e*12+o-11;return{from:`${I(Math.floor(n/12),n%12)}-01`,to:r}}function nt(r){return{from:`${r}-01-01`,to:`${r}-12-31`}}function w(r){let e=A(r.timestamp);return e?Number(e.slice(0,4)):null}function ot(r,e){let o=new Set([e]);for(let n of r){let s=n.type==="completed"?w(n):null;s!==null&&o.add(s)}return[...o].sort((n,s)=>s-n)}function st(r,e){let o=new Map;for(let s of r){if(!e.showArchived&&s.object.archived)continue;let t=T(s.object),a=o.get(t);a?a.push(s):o.set(t,[s])}let n=[];for(let[s,t]of o){let a=t.flatMap(l=>l.tasks.filter(g=>e.showArchived||!g.archived)),y=a.filter(l=>!l.archived),c=0,u=0,f=-1/0,h=null;for(let l of D(t,e.historyOf))l.type==="completed"&&(l.cost!=null&&(u+=l.cost,w(l)===e.year&&(c+=l.cost)),l.ts>f&&(f=l.ts,h=l.timestamp));n.push({key:s,name:K(s,e.areas,e.noAreaLabel),icon:Y(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:u,lastCompletion:h})}return n.sort((s,t)=>+(s.key===d)-+(t.key===d)||s.name.localeCompare(t.name)),n}var F=["name","objects","tasks","overdue","due_soon","cost_year","cost_total","last"],q={key:"name",dir:"asc"};function at(r){let[e,o]=(r??"").split(":");return F.includes(e)&&(o==="asc"||o==="desc")?{key:e,dir:o}:q}function it(r,e){return r.key===e?{key:e,dir:r.dir==="asc"?"desc":"asc"}:{key:e,dir:e==="name"?"asc":"desc"}}function N(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?k(r.lastCompletion):-1/0}}function ut(r,e){let o=e.dir==="asc"?1:-1;return[...r].sort((n,s)=>{if(e.key==="name"){let c=+(n.key===d)-+(s.key===d);if(c)return c}let t=N(n,e.key),a=N(s,e.key),y=typeof t=="string"?t.localeCompare(a):t-a;return o*y||n.name.localeCompare(s.name)})}function lt(r,e){let o=e.trim();return o?r.filter(n=>x(n.name,o)):[...r]}export{V as a,O as b,R as c,E as d,T as e,K as f,Y as g,J as h,D as i,W as j,Z as k,tt as l,et as m,rt as n,nt as o,ot as p,st as q,at as r,it as s,ut as t,lt as u};