1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[13973],{77306:function(e,t,i){(window.__NEXT_P=window.__NEXT_P||[]).push(["/module/box/energy",function(){return i(25038)}])},45606:function(e,t,i){"use strict";var a=i(85893),s=i(75069),o=i(67294),r=i(88329),n=i(90092),l=i(37860),c=i(77443),d=i(96606),u=i(41609),m=i.n(u);t.Z=e=>{let{children:t,subSystem:i,subSystems:u=[]}=e,{subsystems:g}=(0,s.C)(e=>e.apiData),{client:x,building:p}=(0,s.C)(e=>e.apiData.favourite),{loading:h,moduleAccessMap:f}=(0,s.C)(e=>e.apiData),[j,y]=(0,o.useState)(!1);return((0,o.useEffect)(()=>{let e=!1,t=["94031","3236061"],a=f[x];if(!a){y(!1);return}Object.keys(a).map(s=>{if(!t.includes(s)){if(a[s].buildings.includes(p)){var o;(null===(o=a[s].subsystems)||void 0===o?void 0:o.find(e=>(null==e?void 0:e.name)===i))?e=!0:!1===e&&(e=!1)}else!1===e&&(e=!1)}}),y(e)},[i,g,x,f,p]),h.clients||h.contracts||h.buildings||h.subsystems||h.roles||h.privileges||m()(f))?(0,a.jsx)(r.k,{minH:"100vh",justifyContent:"center",alignItems:"center",children:(0,a.jsxs)(r.k,{direction:"column",children:[(0,a.jsx)(l.a,{}),(0,a.jsx)(n.x,{fontSize:"sm",fontWeight:"bold",children:"Checking module availability..."})]})}):j||m()(f)?(0,a.jsx)(a.Fragment,{children:t}):(0,a.jsx)(c.Z,{children:(0,a.jsxs)(r.k,{h:"50px",p:5,alignItems:"center",gap:2,children:[(0,a.jsx)(d.Cw1,{size:"30",color:"red"}),(0,a.jsx)(n.x,{fontSize:"xl",fontWeight:"500",children:"Module not available for selected building"})]})})}},9984:function(e,t,i){"use strict";i.d(t,{v:function(){return l}});var a=i(13975),s=i(31536),o=i(25615),r=i(88793),n=i(8451),l=(0,a.z)({chartName:"BarChart",GraphicalChild:s.$,defaultTooltipEventType:"axis",validateTooltipEventTypes:["axis","item"],axisComponents:[{axisType:"xAxis",AxisComp:o.K},{axisType:"yAxis",AxisComp:r.B}],formatAxisMap:n.t9})},25038:function(e,t,i){"use strict";i.r(t),i.d(t,{default:function(){return eT}});var a=i(85893),s=i(67294),o=i(45606),r=i(11112),n=i(58526),l=i(34373),c=i(92194),d=i(33700),u=i(80957),m=i(89488);
1i(61548);var g=i(37860),x=i(20931),p=i(75069),h=i(58018),f=i(87715),j=i(59876),y=i(70052),v=i(31046),k=i(88329),D=i(90092),F=i(74703),S=i(21901),w=i(57167),b=i(4476),C=i(43416),U=i(43321),T=i(59099),N=i(54506),W=i(30980),E=i(42845),B=i(64831),z=i(133),K=i(6916),M=i(58095),A=i(68337),O=i(44572),P=i(51275),L=i(49578),I=i(75829),Q=i(97971),_=i(51398),Z=i(37378),G=i(2079),H=i(32532),q=i(87943),R=i(97723),$=i(11482),X=i(17387),Y=i(18446),V=i.n(Y),J=i(89734),ee=i.n(J),et=i(34526),ei=i(45810),ea=i(64715),es=i(64520),eo=i(67017),er=i(55400),en=i(88793),el=i(25615),ec=i(78042),ed=i(24570),eu=i(9794),em=i(9984),eg=i(31536),ex=i(66235),ep=i(31712),eh=i(72775);let ef=e=>{var t;let{fromDate:i,toDate:o,includeSummary:u,includeDatatable:m,energyMode:x,utility:f,deviceRestriction:U,includeSwitch:T=!0,widget:N=!1,selectedBuilding:W="",defaultBuilding:E,utilityName:B="",defaultClient:K,notifyCompleted:M,exportTableData:A,setEstimatedValues:O,setEstimatedLoading:P}=e,[L]=(0,y.dQ)("fontSizes",["sm"]),{client:I}=(0,p.C)(e=>e.apiData.favourite),{dateFormat:Q}=(0,p.C)(e=>e.app),_=(0,r.cM)(),Z=(0,v.ff)("gray.200","#001129"),G=(0,v.ff)("gray.100","#111E34"),[H,q]=(0,s.useState)([]),[R,$]=(0,s.useState)(""),[X,Y]=(0,s.useState)(),[V,J]=(0,s.useState)(""),[ee,eu]=(0,s.useState)(""),[em,eg]=(0,s.useState)(""),[ex,ep]=(0,s.use
1State)(""),[eh,ef]=(0,s.useState)("usage"),ej=K||I,ey=E?E.id:W,[ek,eD]=(0,s.useState)({}),eF=(0,r.K2)(),eS=i&&o?"(".concat((0,z.WU)(i,Q)," - ").concat((0,z.WU)(o,Q),")"):"",{data:ew,isLoading:eb,isFetching:eC}=(0,h.qk)({url:"client/".concat(ej,"/module/sensor/getUsageBreakdown"),params:{dateFrom:i/1e3,dateTo:o/1e3+86400,building:E?E.id:ey,utility:f,deviceRestriction:U,wholeWeekBreakdown:1}},{skip:!ej||!i||!o||"0"===f}),{data:eU}=(0,h.bm)({url:"client/".concat(ej,"/utilityTimeBreakdowns"),params:{complete:1}},{skip:!ej});(0,s.useEffect)(()=>{},[x]);let eT=(e,t,i,a)=>{if(a){if(a.schedule){var s=a.schedule[e];if(s)for(var o=0;o<s.length;o++){var r=s[o];if(t>=r.startTime&&t<=r.endTime)return+r.unitCost}}return+a.baseUnitCost}return+i.unitCost};(0,s.useEffect)(()=>{O&&O({weekdays:V,weekends:ee})},[V,ee,O]),(0,s.useEffect)(()=>{if(ew&&eU&&"success"==ew.status&&"success"==eU.status){let F=0,S=0;if(+i&&+o){let e=i.getUTCDay(),t=1+Math.round(o/1e3-i/1e3)/86400;for(let i=0;i<t;i++)0==e||6==e?F++:S++,e=(e+1)%7}let w=null==ew?void 0:ew.utility,b=[...eU.data];(b=""!=ey&&ey&&b.find(e=>e.building==ey)?b.filter(e=>e.building==ey):b.filter(e=>"0"==e.building)).sort((e,t)=>Number(e.periodStartTime)<Number(t.periodStartTime)?-1:1);let C=[];b.forEach(e=>{let t=+e.periodStartTime/60;C.length&&(C[C.length-1].to=t),C.push({from:t,to:24,name:e.periodName})});for(var e=0;e<C.length;e++){var t=C[e];t.totalDuration=t.to-t.from}C.length>1&&C[0].from>0&&(C[C.length-1].totalDuration+=C[0].from);for(var a={weekday:{approx:0,trace:[],costApprox:0,costTrace:[]},weekend:{approx:0,trace:[],costApprox:0,costTrace:[]},periodUsage:C},e=0;e<24;e++)a.weekday.trace[e]=0,a.weekend.trace[e]=0,a.weekday.costTrace[e]=0,a.weekend.costTrace[e]=0;for(var e=0;e<a.periodUsage.length;e++)a.periodUsage[e].classes={},a.periodUsage[e].countActive=0,a.periodUsage[e].countIdle=0,a.periodUsage[e].totalUsage=0,a.periodUsage[e].totalCost=0;var s=ew.deviceClassUsages;for(var r in s){for(var n=0;n<a.periodUsage.length;n++)a.periodUsage[n].classes[r]||(a.periodUsage[n].classes[r]={deviceClass:s[r].deviceClass,devices:{}});for(var l=s[r].devices,c=0;c<l.length;c++)for(var d=l[c],u=0;u<168;u++){var m=u%24;(u<24||u>=144)&&(m+=24);let e=m>=24;var g=0;for(var x in d.usage)g+=Number(d.usage[x][u].a);var p=m<24?"weekday":"weekend",h=(g=Math.max(0,Math.min(100,+g)))/100,f=h*d.powerRating,j=f*eT(Math.floor(u/24),u%24*60,ew.utility,ew.tariffByBuildingAtEndOfPeriod[d.bid]),y=m<24?Math.min(5,S):Math.min(2,F);if(0==y&&(y=1),a[p].approx+=f/y,a[p].trace[m%24]+=f/y,a[p].costApprox+=j/y,a[p].costTrace[m%24]+=j/y,h>.01)for(var v=m%24,n=0;n<a.periodUsage.length;n++){var k=a.periodUsage[n];if(v>=k.from&&v<k.to||n==a.periodUsage.length-1){k.classes[r].devices[d.id]||(k.classes[r].devices[d.id]={device:d,use:0,powerUse:0,cost:0,periodUseWeekday:0,periodPowerUseWeekday:0,periodCostWeekday:0,periodUseWeekend:0,periodPowerUseWeekend:0,periodCostWeekend:0,periodUseTotal:0,periodPowerUseTotal:0,periodCostTotal:0}),k.classes[r].devices[d.id].use+=h,k.classes[r].devices[d.id].powerUse+=f,k.classes[r].devices[d.id].cost+=j;let t=(e?F:S)/y;e?(k.classes[r].devices[d.id].periodUseWeekend+=h*t,k.classes[r].devices[d.id].periodPowerUseWeekend+=f*t,k.classes[r].devices[d.id].periodCostWeekend+=j*t):(k.classes[r].devices[d.id].periodUseWeekday+=h*t,k.classes[r].devices[d.id].periodPowerUseWeekday+=f*t,k.classes[r].devices[d.id].periodCostWeekday+=j*t),k.classes[r].devices[d.id].periodUseTotal+=h*t,k.classes[r].devices[d.id].periodPowerUseTotal+=f*t,k.classes[r].devices[d.id].periodCostTotal+=j*t;break}}}}for(var n=0;n<a.periodUsage.length;n++)!function e(t,i){if(i||(i=t),t){if(t.countActive=0,t.countIdle=0,t.totalUsage=0,t.totalCost=0,t.periodUsage=0,t.periodCost=0,t.classes)for(var a in t.classes){var s=e(t.classes[a],i);t.countActive+=s.countActive,t.countIdle+=s.countIdle,t.totalUsage+=s.totalUsage,t.totalCost+=s.totalCost,t.periodUsage+=s.periodUsage,t.periodCost+=s.periodCost}else if(t.devices){var o=[];for(var r in t.devices){var n=t.devices[r];t.countActive++,100*n.use/(7*i.totalDuration)<=10&&t.countIdle++,t.totalUsage+=n.powerUse,t.totalCost+=n.cost,t.periodUsage+=n.periodPowerUseTotal,t.periodCost+=n.periodCostTotal,o.push(n)}o.sort(function(e,t){return t.powerUse-e.powerUse}),t.devices=o}}return t}(a.periodUsage[n]);let U="usage"===eh?"trace":"costTrace",T=[];for(var e=0;e<24;e++){var D={time:e+":00",weekend:a.weekend[U][e],weekday:a.weekday[U][e]};T.push(D)}T.push({time:"24:00",weekend:a.weekend[U][0],weekday:a.weekday[U][0]}
1),Y(T),J((5*a.weekday.approx).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})),eu((2*a.weekend.approx).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})),eg((5*a.weekday.costApprox).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})),ep((2*a.weekend.costApprox).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})),q(a),$(w.unitDescription),P&&P(!1),M&&M(!0)}},[ew,eh,eU,ey,M,i,o]),(0,s.useEffect)(()=>{if(A){var e;let t=[],a=[];null==H||null===(e=H.periodUsage)||void 0===e||e.forEach(e=>{let s={period:e.name,deviceType:"",deviceName:"",active:e.countActive,usage:Number(e.totalUsage).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2}),cost:Number(e.totalCost).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})};t.push(s),a.push(s),Object.keys(e.classes).forEach(s=>{let r=e.classes[s];if(!(null===(l=r.devices)||void 0===l?void 0:l.length))return;let n={period:"",deviceType:r.deviceClass,deviceName:"",active:r.countActive,usage:Number(r.totalUsage).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2}),cost:Number(r.totalCost).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})};t.push(n),a.push(n);var l,c=0,d=0;if(r.devices.map(s=>{var r;let n=1+Math.round(o/1e3-i/1e3)/86400,l=100*s.use/(Math.min(n,7)*e.totalDuration),u={period:"",deviceType:"",deviceName:null===(r=s.device)||void 0===r?void 0:r.name,active:Number(l).toFixed(2)+"% active",usage:Number(s.powerUse).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2}),cost:Number(s.cost).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})};t.push(u),l>=75?a.push(u):(c+=Number(s.powerUse),d+=Number(s.cost))}),c){let e={period:"",deviceType:"",deviceName:"Other devices (sub-75% utilisation)",active:"",usage:Number(c).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2}),cost:Number(d).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})};a.push(e)}})}),"majorPlant"==U?(A("majorPlantPeriodUsage",t),A("majorPlantCriticalPeriodUsage",a)):(A("periodUsage",t),A("criticalPeriodUsage",a))}},[A,H,U]);let eN=e=>{let t={...ek};t[e]=!t[e],eD(t)},eW=()=>(0,a.jsx)(j.v4,{w:"20px",h:"20px",mr:1}),eE=()=>(0,a.jsx)(j.XC,{w:"20px",h:"20px",mr:1});return(0,a.jsx)(a.Fragment,{children:eb||eC?(0,a.jsx)(g.a,{}):""===f||"0"===f?(0,a.jsx)(k.k,{justifyContent:"center",padding:5,children:"Please select utility"}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(k.k,{direction:"column",mt:N?2:5,w:"full",children:[(0,a.jsxs)(k.k,{direction:"column",children:[(0,a.jsx)(k.k,{justifyContent:"space-between",children:(0,a.jsx)(ev,{text:"24h ".concat("majorPlant"===U?"Major Plant":""," Average ").concat((0,d.Ps)(B)," Usage ").concat(eS),widget:N})}),T?(0,a.jsxs)(k.k,{gap:2,children:[(0,a.jsxs)(D.x,{fontSize:"sm",mr:1,children:["Change mode"," "]}),(0,a.jsx)(ei.Z,{checked:"usage"!==eh,onChange:()=>{"cost"===eh?ef("usage"):ef("cost")},handleDiameter:22,offColor:"#ECEEEE",onColor:"#ECEEEE",height:28,width:56,activeBoxShadow:"0px 0px 5px 5px lightgray",uncheckedIcon:(0,a.jsx)(et.YZ4,{size:18,fill:"black"}),checkedIcon:(0,a.jsx)(k.k,{h:"100%",alignItems:"center",justifyContent:"center",children:(0,a.jsx)(l.EnergyIcon,{fill:"gray"})}),uncheckedHandleIcon:(0,a.jsx)(k.k,{h:"100%",alignItems:"center",justifyContent:"center",children:(0,a.jsx)(l.EnergyIcon,{fill:"black"})}),checkedHandleIcon:(0,a.jsx)(et.YZ4,{size:18,fill:"gray"})})]}):(0,a.jsx)(a.Fragment,{})]}),(0,a.jsx)(ea.h,{width:"100%",height:N?"100%":400,children:(0,a.jsxs)(es.T,{data:X,margin:{top:20,right:20,left:40,bottom:20},children:[(0,a.jsx)(eo.q,{strokeDasharray:"3 3",strokeOpacity:.5}),(0,a.jsxs)("defs",{children:[(0,a.jsxs)("linearGradient",{id:"weekday",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,a.jsx)("stop",{offset:"5%",stopColor:"#FFCD41",stopOpacity:.5}),(0,a.jsx)("stop",{offset:"95%",stopColor:"#FFCD41",stopOpacity:0})]}),(0,a.jsxs)("linearGradient",{id:"weekend",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,a.jsx)("stop",{offset:"5%",
1stopColor:"#ED8936",stopOpacity:.5}),(0,a.jsx)("stop",{offset:"95%",stopColor:"#ED8936",stopOpacity:0})]})]}),(0,a.jsx)(er.u,{isAnimationActive:!1,type:"monotone",dataKey:"weekday",stroke:"#FFCD41",fillOpacity:1,fill:"url(#weekday)"}),(0,a.jsx)(er.u,{isAnimationActive:!1,type:"monotone",dataKey:"weekend",stroke:"#ED8936",fillOpacity:1,fill:"url(#weekend)"}),(0,a.jsx)(en.B,{fontSize:L,unit:"usage"===eh?R:(0,n.getCurrencySymbol)(ey),type:"number",orientation:"left",interval:"preserveStart",tickFormatter:e=>Number(e).toLocaleString("en-US",e<5?{maximumFractionDigits:2,minimumFractionDigits:2}:{maximumFractionDigits:0})}),(0,a.jsx)(el.K,{fontSize:L,tickSize:10,tickMargin:5,dataKey:"time",interval:"preserveStart"}),(0,a.jsx)(ec.D,{wrapperStyle:{fontSize:L},verticalAlign:"top"}),(0,a.jsx)(ed.u,{contentStyle:{backgroundColor:eF,borderRadius:"5px",fontSize:L},offset:10,formatter:e=>{try{let t=Number(e).toLocaleString("en-GB",{minimumFractionDigits:2,maximumFractionDigits:2});return"cost"==eh?"\xa3 ".concat(t):"".concat(t," ").concat(R)}catch(t){return e}}})]})})]}),u?(0,a.jsxs)(k.k,{direction:"column",alignItems:"center",children:[(0,a.jsxs)(D.x,{fontSize:"sm",fontWeight:500,children:["Estimated Weekly","cost"===eh?" Cost":" Usage"]}),(0,a.jsx)(k.k,{direction:"column",children:"cost"===eh?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(D.x,{fontSize:"sm",children:["\xa3",em," (weekdays) "]}),(0,a.jsxs)(D.x,{fontSize:"sm",children:["\xa3",ex," (weekends)"]})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(D.x,{fontSize:"sm",children:[V," (weekdays) kWh"]}),(0,a.jsxs)(D.x,{fontSize:"sm",children:[ee," (weekends) kWh"]})]})})]}):(0,a.jsx)(a.Fragment,{}),m?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(ev,{text:"Approximate Usage in Period ".concat(eS),widget:N}),(0,a.jsxs)(F.i,{size:"sm",style:{marginTop:"32px",borderCollapse:"separate"},children:[(0,a.jsxs)(S.h,{children:[(0,a.jsxs)(w.Tr,{children:[(0,a.jsx)(b.Th,{rowSpan:2,children:"Period"}),(0,a.jsx)(b.Th,{rowSpan:2,children:"Devices Active"}),(0,a.jsxs)(b.Th,{rowSpan:2,isNumeric:!0,children:["Estimated",(0,a.jsx)("br",{}),"Weekly Usage","cost"===eh?" (\xa3)":" (kWh)"]}),(0,a.jsxs)(b.Th,{colSpan:3,style:{textAlign:"center"},children:["Period Usage","cost"===eh?" (\xa3)":" (kWh)"]})]}),(0,a.jsxs)(w.Tr,{children:[(0,a.jsx)(b.Th,{isNumeric:!0,children:"Weekday"}),(0,a.jsx)(b.Th,{isNumeric:!0,children:"Weekend"}),(0,a.jsx)(b.Th,{isNumeric:!0,children:"Total"})]})]}),null==H?void 0:null===(t=H.periodUsage)||void 0===t?void 0:t.map((e,t)=>(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(w.Tr,{transition:"all 0.2s ease-in-out",_hover:{bg:_},cursor:"pointer",onClick:()=>{eN(t)},children:[(0,a.jsxs)(C.Td,{children:[ek[t]?(0,a.jsx)(eW,{}):(0,a.jsx)(eE,{}),e.name]}),(0,a.jsx)(C.Td,{children:(0,a.jsx)(c.Z,{status:"gray",label:e.countActive-e.countIdle})}),(0,a.jsx)(C.Td,{isNumeric:!0,children:Number(e["usage"===eh?"totalUsage":"totalCost"]).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})}),(0,a.jsx)(C.Td,{colSpan:3,isNumeric:!0,children:Number(e["usage"===eh?"periodUsage":"periodCost"]).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})})]},t),ek[t]?Object.keys(e.classes).map(s=>{let r=e.classes[s];var n=t+"-"+r.deviceClass;return 0===r.countActive?(0,a.jsx)(a.Fragment,{}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(w.Tr,{bg:Z,transition:"all 0.2s ease-in-out",_hover:{bg:_},cursor:"pointer",onClick:()=>{eN(n)},children:[(0,a.jsxs)(C.Td,{textIndent:"20px",children:[ek[n]?(0,a.jsx)(eW,{}):(0,a.jsx)(eE,{}),r.deviceClass]}),(0,a.jsx)(C.Td,{children:(0,a.jsx)(c.Z,{status:"gray",label:r.countActive-r.countIdle})}),(0,a.jsx)(C.Td,{isNumeric:!0,children:Number(r["usage"===eh?"totalUsage":"totalCost"]).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})}),(0,a.jsx)(C.Td,{colSpan:3,isNumeric:!0,children:Number(r["usage"===eh?"periodUsage":"periodCost"]).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})})]},n),ek[n]?r.devices.map((t,s)=>{var r;let l=1+Math.round(o/1e3-i/1e3)/86400,d=100*t.use/(Math.min(l,7)*e.totalDuration);return(0,a.jsxs)(w.Tr,{bg:G,transition:"all 0.2s ease-in-out",cursor:"pointer",children:[(0,a.jsx)(C.Td,{textIndent:"40px",children:null===(r=t.device)||void 0===r?void 0:r.name}),(0,a.jsx)(C.Td,{children:(0,a.jsx)(c.Z,{status:d>75?"error":d>25?"warning":"success",label:Number(d).toFixed(2)+"% power utilisation"})}),(0,a.jsx)(C.Td,{isNumeric:!0,children:Number("usage"===eh?t.powerUse:t.cost).toLocaleStr
1ing(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})}),(0,a.jsx)(C.Td,{isNumeric:!0,children:Number("usage"===eh?t.periodPowerUseWeekday:t.periodCostWeekday).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})}),(0,a.jsx)(C.Td,{isNumeric:!0,children:Number("usage"===eh?t.periodPowerUseWeekend:t.periodCostWeekend).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})}),(0,a.jsx)(C.Td,{isNumeric:!0,children:Number("usage"===eh?t.periodPowerUseTotal:t.periodCostTotal).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})})]},n+"-"+s)}):(0,a.jsx)(a.Fragment,{})]})}):(0,a.jsx)(a.Fragment,{})]}))]})]}):(0,a.jsx)(a.Fragment,{})]})})},ej=e=>{let{mode:t="daily",fromDate:i,toDate:o,utility:n,unit:l,selectedBuilding:c="",utilityName:d="",defaultClient:u="",defaultBuilding:m="",energyMode:h,widget:j=!1,chartType:v="area",card:D=!1,asset:F,setQueryLoading:S,notifyCompleted:w}=e,[b]=(0,y.dQ)("fontSizes",["md"]),[C]=(0,y.dQ)("fontSizes",["sm"]),{client:U}=(0,p.C)(e=>e.apiData.favourite),{dateFormat:T}=(0,p.C)(e=>e.app),[N,W]=(0,s.useState)([]),E=(0,r.K2)(),B=m||c,K=T;D&&(K="dd/MM");let I={utility:n,building:B,dateFrom:(0,M.Q)(i),dateTo:(0,M.Q)(o)};F&&(I.asset=F.id);let{data:Q,isLoading:_,isFetching:Z}=(0,f.Q)({client:u||U,filters:I},{skip:void 0===i||void 0===o});if((0,s.useEffect)(()=>{let e="cost"==h?"costByDate":"usageByDate";if(!_&&!Z&&(null==Q?void 0:Q.status)==="success"){if(S&&S(!1),W([]),"daily"===t)try{Object.keys(Q[e]).map(t=>{W(i=>[...i,{time:t,Usage:Q[e][t]}])})}catch(e){}if("weekly"===t){let t=[];Object.keys(Q[e]).map(i=>{let a=(0,A.Q)(new Date(1e3*+i));void 0===t[a]?t[a]=Q[e][i]:t[a]+=Q[e][i]}),t.map((e,t)=>{let i=(0,O.z)((0,P.$)(new Date,t,{}),{weekStartsOn:1});W(t=>[...t,{time:(0,M.Q)(i),Usage:e}])})}w&&w()}},[Q,_,Z,h,B,t,w]),""===n)return(0,a.jsx)(a.Fragment,{});if(_||Z)return(0,a.jsx)(g.a,{});let G=(0,a.jsx)(ed.u,{wrapperStyle:{fontSize:b},cursor:{fill:"transparent"},contentStyle:{backgroundColor:E,borderRadius:"5px"},offset:10,labelFormatter:(e,t)=>t&&t[0]?"Date: ".concat((0,z.WU)(new Date(1e3*t[0].payload.time),"E ".concat(K))):"",formatter:(e,t)=>{try{return Number(+e).toLocaleString("en-US",{maximumFractionDigits:2,minimumFractionDigits:2})+" "+l}catch(t){return e}}}),H=(0,a.jsx)(en.B,{fontSize:C,unit:l,dataKey:"Usage",type:"number",domain:[e=>0,e=>e+.05*e],orientation:"left",tickFormatter:e=>0===e?"0":Number(e).toLocaleString("en-US",{maximumFractionDigits:0})}),q=(0,a.jsx)(el.K,{fontSize:C,tickSize:10,tickMargin:5,dataKey:"time",interval:"preserveStartEnd",tickFormatter:e=>{try{let i=new Date(1e3*e);if("daily"===t)return(0,z.WU)(i,K);if("weekly"===t)return(0,z.WU)((0,L.k)(i,7),"dd")+"-"+(0,z.WU)((0,L.k)(i,1),K)}catch(t){return e}}}),R=j?(0,a.jsx)(a.Fragment,{}):(0,a.jsx)(eu.B,{style:{marginTop:"220px"},tickFormatter:e=>(0,z.WU)(new Date(1e3*e),"".concat(K," HH:mm")),dataKey:"time",height:30}),$=(0,a.jsx)(eo.q,{strokeDasharray:"5 5"});return(0,a.jsxs)(k.k,{w:"full",direction:"column",p:j?3:0,children:[j?(0,a.jsx)(a.Fragment,{}):(0,a.jsx)(ev,{text:"Daily ".concat(d," Usage"),widget:j}),(0,a.jsx)(ea.h,{width:"100%",height:j?"100%":400,children:"area"===v?(0,a.jsxs)(es.T,{data:N,margin:{left:40},children:[(0,a.jsx)("defs",{children:(0,a.jsxs)("linearGradient",{id:"energyWave",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,a.jsx)("stop",{offset:"5%",stopColor:"#FFCD41",stopOpacity:1}),(0,a.jsx)("stop",{offset:"95%",stopColor:"#FFCD41",stopOpacity:0})]})}),(0,a.jsx)(er.u,{strokeWidth:x.x,fill:"url(#energyWave)",type:"monotone",dataKey:"Usage",stroke:"#FFD400",dot:!1}),G,H,q,R,$]}):(0,a.jsxs)(em.v,{data:N,margin:{left:40},children:[(0,a.jsx)("defs",{children:(0,a.jsxs)("linearGradient",{id:"energyWave",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,a.jsx)("stop",{offset:"5%",stopColor:"#FFCD41",stopOpacity:1}),(0,a.jsx)("stop",{offset:"95%",stopColor:"#FFCD41",stopOpacity:0})]})}),(0,a.jsx)(eg.$,{fill:"url(#energyWave)",type:"monotone",dataKey:"Usage",stroke:"#FFD400"}),(0,a.jsx)(eo.q,{strokeDasharray:"5 5"}),G,H,q,R,$]})})]})};var ey=e=>{let{includeSummary:t,pickDates:i,initialFromDate:o,initialToDate:r,includeDatatable:n,utilities:l=[],carbonFootprint:c=!1,deviceUtilization:d=!1}
1=e,[g,x]=(0,s.useState)(o),{building:h}=(0,p.C)(e=>e.apiData.favourite),{buildings:f}=(0,p.C)(e=>e.apiData),[j,y]=(0,s.useState)(r),[v,k]=(0,s.useState)(void 0),[D,F]=(0,s.useState)(0),[S,w]=(0,s.useState)(!1);return(f.find(e=>e.id===h),(0,s.useEffect)(()=>{x(o),y(r)},[o,r]),(0,s.useEffect)(()=>{l.length>0&&k(l[0])},[l]),void 0===v)?(0,a.jsx)(a.Fragment,{}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(a.Fragment,{children:i?(0,a.jsx)(u.Z,{children:(0,a.jsx)(X.J9,{validateOnMount:!0,enableReinitialize:!0,initialValues:{fromDate:g/1e3,toDate:j/1e3,utility:v},onSubmit:(e,t)=>{let{setSubmitting:i}=t;x(new Date(1e3*e.fromDate)),y(new Date(1e3*e.toDate)),k(e.utility),i(!1)},children:e=>{let{handleSubmit:t,values:i,...s}=e;return(0,a.jsx)(a.Fragment,{children:(0,a.jsx)("form",{onSubmit:t,noValidate:!0,children:(0,a.jsxs)(U.M,{columns:[1,1,1,3],spacingX:4,spacingY:2,children:[(0,a.jsx)(T.P,{children:(0,a.jsx)(m.Z,{width:"full",maxDate:(0,K.E)(new Date,1),label:"Date range:",startDate:g,setStartDate:x,endDate:j,setEndDate:y})}),(0,a.jsx)(T.P,{children:(0,a.jsxs)(N.NI,{id:"utility",children:[(0,a.jsx)(W.l,{htmlFor:"utility",children:"Utility:"}),(0,a.jsxs)(E.P,{value:v.id,onChange:e=>{k(l.find(t=>t.id==e.target.value))},children:[(0,a.jsx)("option",{value:"",children:"Please select utility"}),l.map(e=>{let{id:t,name:i}=e;return(0,a.jsx)("option",{value:t,children:i},t)})]})]})})]})})})}})}):(0,a.jsx)(a.Fragment,{})}),c?null:(0,a.jsxs)(a.Fragment,{children:[!d&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(ej,{fromDate:g,toDate:j,utility:v?v.id:"",utilityName:v.name,selectedBuilding:h,unit:v.unitDescription}),(0,a.jsx)(B.i,{mt:5})]}),!d&&(0,a.jsx)(ek,{utility:v?v.id:"",utilityName:v.name,selectedBuilding:h,unit:v.unitDescription}),(0,a.jsx)(B.i,{my:5}),(0,a.jsx)(ef,{fromDate:g,toDate:j,includeSummary:t,includeDatatable:n,selectedBuilding:h,utility:v.id,utilityName:v.name})]}),c?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(B.i,{my:5}),(0,a.jsx)(eD,{selectedBuilding:h,utility:v.id,unit:v.unitDescription,kgCo2:+v.kgCo2}),(0,a.jsx)(B.i,{my:5}),(0,a.jsx)(eF,{utility:v,building:h})]}):null]})};let ev=e=>{let{widget:t,text:i}=e;return(0,a.jsxs)(D.x,{fontSize:"md",whiteSpace:"nowrap",py:t?0:5,fontWeight:500,children:[i," "]})},ek=e=>{let{utility:t,unit:i,selectedBuilding:o="",utilityName:n="",defaultClient:l="",defaultBuilding:c="",widget:d=!1,queryData:u,setQueryLoading:m,notifyCompleted:h,setQueryData:j}=e,{client:v}=(0,p.C)(e=>e.apiData.favourite),D=new Date,[F]=(0,y.dQ)("fontSizes",["sm"]),S=(0,L.k)(D,1),w=(0,I.m)((0,Q.N)((0,_.W)(S,5)),3600),[b,C]=(0,s.useState)([]),U=(0,r.K2)(),{data:T,isLoading:N,isFetching:W}=(0,f.Q)({client:l||v,filters:{utility:t,building:c||o,dateFrom:(0,M.Q)((0,Z.i)(w)),dateTo:(0,M.Q)((0,Z.i)(S))}},{skip:void 0===w||void 0===S});return((0,s.useEffect)(()=>{if(!N&&!W&&(null==T?void 0:T.status)==="success"){C([]),m&&m(!1);let e={};Object.keys(T.usageByDate).map(t=>{let i=new Date(1e3*+t),a=(0,z.WU)(i,"MM/yyyy");void 0===e[a]?e[a]={date:i,total:0}:e[a].total+=T.usageByDate[t]}),ee()(e,["date"]).map((t,i)=>{let a=0;if(ee()(e,["date"]).length-1===i){let e=new Date,i=100*+(0,z.WU)(e,"d")/+(0,G.N)(e);a=100*t.total/i}else a=t.total;C(e=>[...e,{time:(0,z.WU)(t.date,"MM/yyyy"),Usage:+t.total,Projection:a}])}),j&&!V()(u,ee()(e,["date"]))&&j(ee()(e,["date"]))}h&&h()},[T,N,W,u,j,h,m]),""===t)?(0,a.jsx)(a.Fragment,{}):N||W?(0,a.jsx)(g.a,{}):(0,a.jsxs)(k.k,{w:"full",direction:"column",p:d?3:0,children:[d?(0,a.jsx)(a.Fragment,{}):(0,a.jsx)(ev,{text:"".concat(n," Usage Over Last 6 Months"),widget:d}),(0,a.jsx)(ea.h,{width:"100%",height:d?"100%":400,children:(0,a.jsxs)(ex.c,{margin:{left:50},data:b,children:[(0,a.jsx)(eg.$,{tooltipType:"none",barSize:20,dataKey:"Usage",stroke:"#FFD400",fill:"url(#energyWaveBar)"}),(0,a.jsx)(ep.x,{type:"monotone",strokeWidth:x.x,dataKey:"Projection",stroke:"#F6AD55",strokeDasharray:"3 3"}),(0,a.jsx)(er.u,{strokeWidth:x.x,type:"monotone",dataKey:"Usage",fill:"url(#energyWaveBar)",stroke:"#FFD400"}),(0,a.jsx)("defs",{children:(0,a.jsxs)("linearGradient",{id:"energyWaveBar",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,a.jsx)("stop",{offset:"5%",
1stopColor:"#FFCD41",stopOpacity:1}),(0,a.jsx)("stop",{offset:"95%",stopColor:"#FFCD41",stopOpacity:0})]})}),(0,a.jsx)(eo.q,{strokeDasharray:"5 5"}),(0,a.jsx)(ed.u,{cursor:{fill:"transparent"},contentStyle:{backgroundColor:U,borderRadius:"5px",fontSize:F},offset:10,formatter:(e,t)=>{try{return Number(+e).toLocaleString("en-US",{maximumFractionDigits:2,minimumFractionDigits:2})+" "+i}catch(t){return e}}}),d?(0,a.jsx)(a.Fragment,{}):(0,a.jsx)(eu.B,{dataKey:"time",height:30}),(0,a.jsx)(en.B,{fontSize:F,unit:i,dataKey:"Usage",type:"number",domain:[e=>0,e=>e+.05*e],orientation:"left",tickFormatter:e=>0===e?"0":Number(e).toLocaleString("en-US",{maximumFractionDigits:0})}),(0,a.jsx)(el.K,{fontSize:F,tickSize:10,tickMargin:5,dataKey:"time",interval:"preserveStartEnd"})]})})]})},eD=e=>{let t,{utility:i="",selectedBuilding:o="",defaultClient:n="",defaultBuilding:l="",kgCo2:c=.265,widget:d=!1,carbonData:u=[],setQueryLoading:m,notifyCompleted:h,setCarbonData:j}=e,{client:v}=(0,p.C)(e=>e.apiData.favourite),[D]=(0,y.dQ)("fontSizes",["sm"]),[F,S]=(0,s.useState)([]),w=(0,r.K2)(),b=new Date,C=(0,L.k)(b,1),U=(0,I.m)((0,Q.N)((0,_.W)(C,5)),3600),[T,N]=(0,s.useState)(0),{data:W,isLoading:E,isFetching:B}=(0,f.Q)({client:n||v,filters:{utility:i,building:l||o,dateFrom:(0,M.Q)((0,Z.i)(U)),dateTo:(0,M.Q)((0,Z.i)(C))}},{skip:void 0===U||void 0===C});return((0,s.useEffect)(()=>{if(!E&&!B&&(null==W?void 0:W.status)==="success"){S([]),m&&m(!1);let e={};Object.keys(W.usageByDate).map(t=>{let i=new Date(1e3*+t),a=(0,z.WU)(i,"MM/yyyy");void 0===e[a]?e[a]={date:i,total:0}:e[a].total+=W.usageByDate[t]}),Object.keys(e).map(t=>{e[t].total=e[t].total*c}),ee()(e,["date"]).map((t,i)=>{let a=0;if(Object.keys(e).length-1===i){let e=100*+(0,z.WU)(new Date,"d")/(0,G.N)(new Date);a=100*+t.total/e}else a=+t.total;a>T&&N(a),+t.total>T&&N(+t.total),S(e=>[...e,{time:(0,z.WU)(t.date,"MM/yyyy"),Usage:+t.total,Projection:a}])})}h&&h()},[W,E,B,T,c,h,m]),(0,s.useEffect)(()=>{F.length>0&&0===u.length&&j&&j(F)},[F,u,j]),""===i)?(0,a.jsx)(a.Fragment,{}):E||B?(0,a.jsx)(g.a,{}):0===c?(0,a.jsx)(k.k,{w:"full",direction:"column",p:d?3:0}):(0,a.jsxs)(k.k,{w:"full",direction:"column",p:d?3:0,children:[d?(0,a.jsx)(a.Fragment,{}):(0,a.jsx)(ev,{text:"Decarbonisation",widget:d}),(0,a.jsx)(ea.h,{width:"100%",height:d?"100%":400,children:(0,a.jsxs)(ex.c,{margin:{left:70},data:F,children:[(0,a.jsx)("defs",{children:(0,a.jsxs)("linearGradient",{id:"carbonWave",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,a.jsx)("stop",{offset:"5%",stopColor:"#48BB78",stopOpacity:.5}),(0,a.jsx)("stop",{offset:"95%",stopColor:"#48BB78",stopOpacity:0})]})}),(0,a.jsx)(eo.q,{strokeDasharray:"5 5"}),(0,a.jsx)(eg.$,{tooltipType:"none",dataKey:"Usage",barSize:20,fill:"#48BB7890"}),(0,a.jsx)(ep.x,{type:"monotone",dot:!1,strokeWidth:x.x,dataKey:"Projection",stroke:"#48BB78",strokeDasharray:"3 3"}),(0,a.jsx)(er.u,{strokeWidth:x.x,type:"monotone",dataKey:"Usage",fill:"url(#carbonWave)",stroke:"#48BB78"}),(0,a.jsx)(en.B,{fontSize:D,allowDataOverflow:!1,unit:"kgCO2",dataKey:"Projection",type:"number",domain:[(t=+T,(null==F||F.map(e=>{(null==e?void 0:e.Usage)<t&&(t=null==e?void 0:e.Usage),(null==e?void 0:e.Projection)<t&&(t=null==e?void 0:e.Projection)}),0===t)?0:t-.1*t),"dataMax + 1000"],orientation:"left",tickFormatter:e=>0===e?"0":Number(e).toLocaleString("en-US",{maximumFractionDigits:0})}),(0,a.jsx)(el.K,{fontSize:D,tickSize:10,tickMargin:5,dataKey:"time"}),(0,a.jsx)(ed.u,{contentStyle:{backgroundColor:w,borderRadius:"5px"},offset:10,labelFormatter:e=>"",formatter:(e,t,i,a)=>{try{return Number(+e).toLocaleString("en-US",{maximumFractionDigits:2,minimumFractionDigits:2})+" kgCO2"}catch(t){return e}}}),d?(0,a.jsx)(a.Fragment,{}):(0,a.jsx)(eu.B,{style:{marginTop:"20px"},dataKey:"time",height:30})]})})]})},eF=e=>{let{building:t,utility:i,carbonData:o,widget:r=!1,overwrittenTitle:n="",kwhOnly:l=!1,notifyCompleted:c,setCarbonData:d}=e,{client:u}
1=(0,p.C)(e=>e.apiData.favourite),{buildings:m}=(0,p.C)(e=>e.apiData),[h,j]=(0,s.useState)([]),[v,D]=(0,s.useState)(void 0),[F,S]=(0,s.useState)(0),[w,b]=(0,s.useState)(void 0),[C,U]=(0,s.useState)(void 0),{data:T,isLoading:N,isFetching:W}=(0,f.Q)({client:u,filters:{utility:i.id,building:t,dateFrom:(0,M.Q)((0,Z.i)(w)),dateTo:(0,M.Q)((0,Z.i)(C))}},{skip:void 0===w||void 0===C}),[E]=(0,y.dQ)("fontSizes",["sm"]),B=m.find(e=>e.id==t),K=l?"kWh":"kgCO2",A=l?1:+i.kgCo2,O=l?"#FFD400":"#48BB78",P=l?+B.targetKwh:+B.targetKgCo2;return((0,s.useEffect)(()=>{let e=new Date,t=new Date;t.setHours(0,0,0,0),t.setDate(1),t.setMonth(+i.startingMonth),void 0===v&&D(t);let a=[];for(let e=0;e<12;e++){let e=(0,z.WU)(t,"MM/yyyy");a.push({date:t,total:0,projection:void 0,dateKey:e}),t=(0,H.z)(t,1)}let s=ee()(a,["date"]),o=s[11].date;(o=(0,q.q)(o)).setHours(23,59,59,999),b(s[0].date),U((0,L.k)(e,1)),N||W||(null==T?void 0:T.status)!=="success"||s.map(e=>{let t=0;Object.keys(T.usageByDate).map(i=>{let a=new Date(1e3*+i);(0,R.x)(a,e.date)&&(0,$.F)(a,e.date)&&(t+=+T.usageByDate[i])}),t>0?e.total=+t*A:(e.total=void 0,e.subTotal=void 0)});for(let e=0;e<s.length;e++){let t=s[e].total;if(t>0||void 0!==t){let t=0;for(let i=0;i<e+1;i++)void 0!==s[i].total&&(t+=+s[i].total);s[e].subTotal=+t,s[e].projection=+t}}for(let e=0;e<s.length;e++)if(void 0===s[e].total){let t=0;for(let i=0;i<e+1;i++)void 0!==s[i].subTotal&&(t+=+s[i].subTotal);if(t>0){let i=void 0!==s[e-1].subTotal?s[e-1].subTotal:s[e-1].projection;s[e].projection=+t/e+i,s[e].total=+t/e}else s[e].projection=0,s[e].total=0}j(s),c&&c()},[v,i.startingMonth,h.length,N,T,W,A,c]),(0,s.useEffect)(()=>{!V()(o,h)&&d&&d(h)},[h,o,d]),0===h.length||void 0===B)?(0,a.jsx)(a.Fragment,{}):N||W?(0,a.jsx)(g.a,{}):(0,a.jsxs)(k.k,{direction:"column",w:"full",h:"full",p:r?5:0,children:[(0,a.jsx)(ev,{text:n.length>0?n:"Decarbonisation annual target pathway",widget:r}),(0,a.jsx)(k.k,{w:"full",h:"full",pr:5,pt:2,children:(0,a.jsx)(ea.h,{width:"100%",height:r?"100%":400,children:(0,a.jsxs)(ex.c,{margin:{left:70},data:h,children:[(0,a.jsx)(el.K,{fontSize:E,tickSize:10,tickMargin:5,dataKey:"dateKey"}),(0,a.jsx)(ed.u,{formatter:e=>{try{return Number(e).toLocaleString("en-GB",{minimumFractionDigits:2,maximumFractionDigits:2})+" "+K}catch(t){return e}}}),(0,a.jsx)(ep.x,{isAnimationActive:!1,dot:!1,connectNulls:!1,type:"monotone",strokeWidth:x.x,strokeDasharray:"3 3",dataKey:"projection",name:"Projection",stroke:O}),(0,a.jsx)(ep.x,{tooltipType:"none",strokeWidth:x.x,isAnimationActive:!1,dot:!1,connectNulls:!1,type:"monotone",dataKey:"subTotal",stroke:O}),(0,a.jsx)(en.B,{fontSize:E,unit:K,type:"number",domain:[0,F>+B.targetKgCo2?F:+B.targetKgCo2],tickFormatter:e=>0===e?"0":Number(e).toLocaleString("en-US",{maximumFractionDigits:0})}),+P>0?(0,a.jsx)(eh.d,{strokeWidth:x.x,ifOverflow:"visible",stroke:l?"#F6AD55":"#276749",strokeDasharray:"5 5",segment:[{x:h[0].dateKey,y:0},{x:h[11].dateKey,y:P}]}):(0,a.jsx)(a.Fragment,{})]})})})]})};var eS=i(72971),ew=i(9008),eb=i.n(ew),eC=i(77443);let eU=()=>{var e;let{client:t}=(0,p.C)(e=>e.apiData.favourite),[i,o]=(0,s.useState)(null),[r,n]=(0,s.useState)(null),l=(0,h.qk)({url:"client/".concat(t,"/module/sensor/lastActiveTime")},{skip:!t}),c=(0,eS.H)({client:t,filters:{complete:"1"}},{skip:!t});return(0,s.useEffect)(()=>{let e=null==l?void 0:l.data;if(n(null),e&&"success"==e.status){let t=new Date((null==e?void 0:e.time)*1e3);t.setUTCHours(0,0,0,0),t.setUTCDate(t.getUTCDate()-2),o((0,L.k)(t,7)),n(t)}},[l,t]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eb(),{children:(0,a.jsx)("title",{children:"Modules | Box | Energy"})}),i&&r?(0,a.jsx)(u.Z,{children:(0,a.jsx)(ey,{utilities:null===(e=c.data)||void 0===e?void 0:e.data,includeDatatable:!0,includeSummary:!0,pickDates:!0,initialFromDate:i,initialToDate:r})}):(0,a.jsx)(g.a,{})]})};eU.getLayout=function(e){return(0,a.jsx)(o.Z,{subSystem:"Box",children:(0,a.jsx)(eC.Z,{children:e})})};var eT=eU}},function(e){e.O(0,[19440,76660,5970,73768,78845,47665,74232,40123,60509,23219,15443,44321,41664,27606,133,92575,79679,92888,49774,40179],function(){return e(e.s=77306)}),_N_E=e.O()}]); 2//# sourceMappingURL=energy-4ba5d8c5ed0e3c74.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.