{"version":3,"file":"app.6baac2517d9a8ad8691e.bundle.d.js","mappings":"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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACnS2B;AAEpB,MAAM,SAAS;IAEX,gBAAgB;QACnB,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAChF,IAAI,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CA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","sources":["webpack://datalast/./src/components/ie-message/ie-message.html","webpack://datalast/./src/components/main-header/main-header.html","webpack://datalast/./src/components/navbar/navbar.html","webpack://datalast/./src/components/vd-charts/vd-charts/vd-charts.html","webpack://datalast/./src/components/vd-charts/vd-piechart/vd-piechart.html","webpack://datalast/./src/components/vd-date-picker/vd-date-picker.html","webpack://datalast/./src/components/vd-map/vd-map.html","webpack://datalast/./src/components/vd-slider-range/vd-slider-range.html","webpack://datalast/./src/routes/app/app.html","webpack://datalast/./src/routes/home/home.html","webpack://datalast/./src/routes/not-found/not-found.html","webpack://datalast/./src/locales/index.js","webpack://datalast/./config/environment.json","webpack://datalast/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://datalast/./src/components/ie-message/ie-message.ts","webpack://datalast/./src/components/main-header/main-header.ts","webpack://datalast/./src/components/navbar/navbar.ts","webpack://datalast/./src/components/vd-charts/vd-charts-dataset.ts","webpack://datalast/./src/components/vd-charts/vd-charts-labelset.ts","webpack://datalast/./src/components/vd-charts/vd-charts-legendset.ts","webpack://datalast/./src/components/vd-charts/vd-charts-months.ts","webpack://datalast/./src/components/vd-charts/vd-charts-series.ts","webpack://datalast/./src/components/vd-charts/vd-charts-types.ts","webpack://datalast/./src/components/vd-charts/vd-charts-yaxis.ts","webpack://datalast/./src/components/vd-charts/vd-charts/options/options.ts","webpack://datalast/./src/components/vd-charts/vd-charts/options/pie-options.ts","webpack://datalast/./src/components/vd-charts/vd-charts/vd-charts.ts","webpack://datalast/./src/components/vd-charts/vd-piechart/vd-piechart.ts","webpack://datalast/./src/components/vd-date-picker/vd-date-picker.ts","webpack://datalast/./src/components/vd-map/map-layer.ts","webpack://datalast/./src/components/vd-map/map-utils.ts","webpack://datalast/./src/components/vd-map/nobil.ts","webpack://datalast/./src/components/vd-map/vd-map.ts","webpack://datalast/./src/components/vd-slider-range/vd-slider-range.ts","webpack://datalast/./src/config/appsettings.ts","webpack://datalast/./src/config/plugins/app-insights/index.ts","webpack://datalast/./src/config/plugins/authentication/index.ts","webpack://datalast/./src/lib/abortable.ts","webpack://datalast/./src/lib/calendarHelper.ts","webpack://datalast/./src/lib/queryString.ts","webpack://datalast/./src/lib/stringHelper.ts","webpack://datalast/./src/lib/tools.ts","webpack://datalast/./src/main.ts","webpack://datalast/./src/models/available-types.ts","webpack://datalast/./src/models/period-alternatives.ts","webpack://datalast/./src/models/selection-data.ts","webpack://datalast/./src/models/vehicle-categories.ts","webpack://datalast/./src/resources/index.ts","webpack://datalast/./src/resources/value-converters/number-format.ts","webpack://datalast/./src/resources/value-converters/numeric.ts","webpack://datalast/./src/routes/app/app.ts","webpack://datalast/./src/routes/home/home.ts","webpack://datalast/./src/routes/not-found/not-found.ts","webpack://datalast/./src/services/api/api-service.ts","webpack://datalast/./src/services/google-maps/google-maps-api.ts","webpack://datalast/./src/services/logger/app-log-appender.ts","webpack://datalast/./src/services/logger/log.ts","webpack://datalast/./src/value-converters/date-format.ts","webpack://datalast/./src/value-converters/index.ts"],"sourcesContent":["// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Imports\nimport ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \"../../../node_modules/html-loader/dist/runtime/getUrl.js\";\nvar ___HTML_LOADER_IMPORT_0___ = new URL(\"../../assets/images/third-party/glplogo.webp\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_1___ = new URL(\"../../assets/images/third-party/statens-vegvesen-logo-farger.webp\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_2___ = new URL(\"../../assets/images/third-party/miljodir-logo.svg\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_3___ = new URL(\"../../assets/images/logo/Linx-logo.png\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_4___ = new URL(\"../../assets/images/logo/Coginatechnology-logo.png\", import.meta.url);\n// Module\nvar ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___);\nvar ___HTML_LOADER_REPLACEMENT_1___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_1___);\nvar ___HTML_LOADER_REPLACEMENT_2___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_2___);\nvar ___HTML_LOADER_REPLACEMENT_3___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_3___);\nvar ___HTML_LOADER_REPLACEMENT_4___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_4___);\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","module.exports = {\"en-US\":{\"translation\":{\"months\":{\"january\":\"january\",\"february\":\"february\",\"march\":\"march\",\"april\":\"april\",\"may\":\"may\",\"june\":\"june\",\"july\":\"juli\",\"august\":\"august\",\"september\":\"september\",\"october\":\"october\",\"november\":\"november\",\"december\":\"december\"},\"monthsShort\":{\"jan\":\"jan\",\"feb\":\"feb\",\"mar\":\"mar\",\"apr\":\"apr\",\"may\":\"may\",\"jun\":\"jun\",\"jul\":\"jul\",\"aug\":\"aug\",\"sep\":\"sep\",\"oct\":\"oct\",\"nov\":\"nov\",\"dec\":\"dec\"},\"weekdays\":{\"monday\":\"monday\",\"tuesday\":\"tuesday\",\"wednesday\":\"wednesday\",\"thursday\":\"thursday\",\"friday\":\"friday\",\"saturday\":\"saturday\",\"sunday\":\"sunday\"},\"weekdaysShort\":{\"mon\":\"mon\",\"tue\":\"tue\",\"wed\":\"wed\",\"thu\":\"thu\",\"fri\":\"fri\",\"sat\":\"sat\",\"sun\":\"sun\"},\"calendar\":{\"sameDay\":\"today\",\"nextDay\":\"next day\",\"nextWeek\":\"next week\",\"lastDay\":\"yesterday\",\"lastWeek\":\"last week\",\"sameElse\":\"other\"},\"time\":{\"hours\":\"hours\"},\"relativeTime\":{\"future\":\"in %s\",\"past\":\"%s ago\",\"s\":\"few seconds\",\"ss\":\"%d seconds\",\"m\":\"one minute\",\"mm\":\"%d minutes\",\"h\":\"one hour\",\"hh\":\"%d hours\",\"d\":\"one day\",\"dd\":\"%d days\",\"M\":\"one month\",\"MM\":\"%d months\",\"y\":\"one year\",\"yy\":\"%d years\"}}},\"nb-NO\":{\"translation\":{\"months\":{\"january\":\"januar\",\"february\":\"februar\",\"march\":\"mars\",\"april\":\"april\",\"may\":\"mai\",\"june\":\"juni\",\"july\":\"juli\",\"august\":\"august\",\"september\":\"september\",\"october\":\"oktober\",\"november\":\"november\",\"december\":\"desember\"},\"monthsShort\":{\"jan\":\"jan\",\"feb\":\"feb\",\"mar\":\"mar\",\"apr\":\"apr\",\"may\":\"mai\",\"jun\":\"jun\",\"jul\":\"jul\",\"aug\":\"aug\",\"sep\":\"sep\",\"oct\":\"okt\",\"nov\":\"nov\",\"dec\":\"dec\"},\"weekdays\":{\"monday\":\"mandag\",\"tuesday\":\"tirsdag\",\"wednesday\":\"onsdag\",\"thursday\":\"torsdag\",\"friday\":\"fredag\",\"saturday\":\"lørdag\",\"sunday\":\"søndag\"},\"weekdaysShort\":{\"mon\":\"man\",\"tue\":\"tir\",\"wed\":\"ons\",\"thu\":\"tor\",\"fri\":\"fre\",\"sat\":\"lør\",\"sun\":\"søn\"},\"calendar\":{\"sameDay\":\"i dag\",\"nextDay\":\"neste dag\",\"nextWeek\":\"neste uke\",\"lastDay\":\"i går\",\"lastWeek\":\"forrige uke\",\"sameElse\":\"annet\"},\"time\":{\"hours\":\"timer\"},\"relativeTime\":{\"future\":\"om %s\",\"past\":\"%s siden\",\"s\":\"noen sekunder\",\"ss\":\"%d sekunder\",\"m\":\"ett minutt\",\"mm\":\"%d minutter\",\"h\":\"en time\",\"hh\":\"%d timer\",\"d\":\"en dag\",\"dd\":\"%d dager\",\"M\":\"en måned\",\"MM\":\"%d måneder\",\"y\":\"et år\",\"yy\":\"%d år\"},\"map\":{\"filterCategory\":{\"assetType\":\"Eiendelstype\",\"fuelType\":\"Drivkilde\",\"weightClass\":\"Vektklasse\"},\"filterKey\":{\"unique\":\"Unike\",\"total\":\"Total\",\"truck\":\"Lastebiler\",\"car\":\"Personbiler\",\"van\":\"Varebiler\",\"vehicle\":\"Kjøretøy\",\"machine\":\"Maskiner\",\"gasoline\":\"Bensin\",\"diesel\":\"Diesel\",\"electric\":\"Elektrisk\",\"gas\":\"Gass\",\"hydrogen\":\"Hydrogen\",\"hybrid\":\"Hybrid\",\"other\":\"Andre drivkilder\",\"lowWeightClass\":\"< 3.5t\",\"mediumWeightClass\":\"3.5t - 7.5t\",\"highWeightClass\":\"> 7.5t\"}},\"nobil\":{\"attr\":{\"4\":{\"17\":\"Tesla\",\"30\":\"CHAdeMO\",\"31\":\"Type 1\",\"32\":\"Type 2\",\"39\":\"CCS/Combo\",\"82\":\"Biogass\"},\"17\":{\"1\":\"Personbil og varebil\",\"10\":\"Større lastebiler\",\"14\":\"Buss og lastebil\",\"15\":\"Alle ladbare kjøretøy\",\"16\":\"Biogass\"},\"20\":{\"1\":\"Mode 1\",\"2\":\"Mode 2\",\"3\":\"Mode 3\",\"4\":\"Mode 4\"},\"26\":{\"1\":\"Elektrisitet\",\"3\":\"Biogass\"},\"connectorType\":\"Kontakttype\",\"vehicleType\":\"Kjøretøytype\",\"chargeMode\":\"Lademetode\",\"energyCarrier\":\"Energikilde\"}}}}}","module.exports = {\"debug\":false,\"environment\":\"development\",\"logging\":{\"appLogLevel\":\"debug\",\"appInsightsLogLevel\":\"warn\"},\"endpoints\":{\"api\":\"https://api.linx.no/global\",\"auth\":\"https://api.linx.no/auth\",\"fms\":\"\"},\"applicationInsightsKey\":\"devkey\"}","var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn-bd\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tk\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","import './ie-message.scss';\r\n\r\nexport class IeMessage {\r\n\r\n public isInvalidBrowser() {\r\n var trident = Boolean(navigator.userAgent.toLowerCase().indexOf('trident') > 0);\r\n var ie = Boolean(navigator.userAgent.toLowerCase().indexOf('msie') > 0);\r\n return ie || trident;\r\n }\r\n}","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { bindable } from 'aurelia-templating';\r\nimport { AvailableTypes } from 'models/available-types';\r\nimport SelectionData from 'models/selection-data';\r\nimport './main-header.scss';\r\n\r\n@autoinject\r\nexport class MainHeader {\r\n\r\n @bindable\r\n public data: SelectionData;\r\n public availableTypeEnum = AvailableTypes;\r\n\r\n constructor(private eventAggregator: EventAggregator) {\r\n\r\n }\r\n\r\n public async attached() {\r\n this.eventAggregator.subscribe('data-updated', this.dataLoaded);\r\n }\r\n\r\n private dataLoaded(data: SelectionData) {\r\n this.data = data;\r\n }\r\n\r\n public changeSelection(selection: AvailableTypes) {\r\n this.data.setSelectedType(selection);\r\n }\r\n}\r\n\r\n\r\n","import './navbar.scss';\r\n\r\nexport class Navbar {\r\n public isShowing: boolean;\r\n constructor() {}\r\n\r\n public async attached() {}\r\n\r\n public toggle() {\r\n this.isShowing = !this.isShowing;\r\n }\r\n\r\n public goToSection(id: string) {\r\n const element = document.getElementById(id);\r\n if (element) {\r\n element.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n\r\n this.toggle();\r\n }\r\n}\r\n","import { VdChartsSeries } from './vd-charts-series';\r\nimport { VdChartsYAxis } from './vd-charts-yaxis';\r\n\r\nexport class VdChartsDataSet {\r\n public series: Array = new Array();\r\n public yAxis: Array = new Array();\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n public addSeries(series: VdChartsSeries): VdChartsDataSet {\r\n\r\n var copy = this.series.slice();\r\n copy.push(series);\r\n this.series = copy;\r\n\r\n return this;\r\n }\r\n\r\n public removeSeries(name: string): VdChartsDataSet {\r\n var index = this.series.findIndex(x => x.name === name);\r\n this.series = this.series.slice(index - 1, index);\r\n\r\n return this;\r\n }\r\n\r\n public clearSeries() {\r\n this.series = [];\r\n }\r\n\r\n public addYAxis(axis: VdChartsYAxis): VdChartsDataSet {\r\n\r\n if (this.yAxis.findIndex(x => x.id === axis.id) === -1) {\r\n this.yAxis.push(axis);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public removeYAxis(id: string): VdChartsDataSet {\r\n var index = this.yAxis.findIndex(x => x.id == id);\r\n this.yAxis = this.yAxis.slice(index - 1, index);\r\n\r\n return this;\r\n }\r\n\r\n public clearYAxis() {\r\n this.yAxis = [];\r\n }\r\n}","export class VdChartsLabelSet {\r\n public labels: Array = new Array();\r\n\r\n public clearLabels() {\r\n if (this.labels) {\r\n this.labels.slice(0, 0);\r\n }\r\n }\r\n\r\n public setLabels(labels: Array): VdChartsLabelSet {\r\n this.labels = labels;\r\n\r\n return this;\r\n }\r\n}","export class VdChartsLegend {\r\n public title: string;\r\n public color: string;\r\n public value: number;\r\n}\r\n\r\nexport class VdChartsLegendSet {\r\n public legends: Array = new Array();\r\n\r\n public positionTop: boolean = true;\r\n public autoSortLegends: boolean = true;\r\n\r\n public clearLegends() {\r\n while (this.legends.length) {\r\n this.legends.pop();\r\n }\r\n }\r\n\r\n public addLegend(title: string, color: string, value = null) {\r\n var legend = new VdChartsLegend();\r\n legend.title = title;\r\n legend.color = color;\r\n legend.value = value;\r\n\r\n this.legends.push(legend);\r\n\r\n if (!this.autoSortLegends) { return; }\r\n\r\n this.legends = this.legends.sort((x1, x2) => {\r\n\r\n if (x1.value === null || x2.value === null) {\r\n return 0;\r\n }\r\n\r\n return x2.value - x1.value;\r\n });\r\n }\r\n}","import { VdChartsLabelSet } from './vd-charts-labelset';\r\n\r\nexport class VdChartsMonths {\r\n private static getDate(months: number) {\r\n var d = new Date();\r\n d.setMonth(d.getMonth() - months);\r\n\r\n return d;\r\n }\r\n\r\n public static getLabelSetForLastThirteenMonths(): VdChartsLabelSet {\r\n var series: Array = ['Januar', 'Februar', 'Mars', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Desember'];\r\n\r\n var xaxis = [];\r\n for (var i = 13; i > 0; i--) {\r\n var d = this.getDate(i);\r\n xaxis.push(series[d.getMonth()].slice(0, 3) + ' ' + d.getFullYear());\r\n }\r\n\r\n return new VdChartsLabelSet().setLabels(xaxis);\r\n }\r\n\r\n public getLabelSetForLastThirteenMonths(): VdChartsLabelSet {\r\n return VdChartsMonths.getLabelSetForLastThirteenMonths();\r\n }\r\n\r\n public longMonthFormatter(e) {\r\n return e.value;\r\n }\r\n\r\n public shortMonthFormatter(e) {\r\n\r\n if (e.axis.series.findIndex(x => x.options.type === 'histogram' || x.options.type === 'column') != -1) {\r\n return e.value;\r\n }\r\n if (typeof e.value === 'string' || e.value instanceof String) {\r\n return e.value.slice(0, 3);\r\n }\r\n return e.value;\r\n }\r\n}\r\n","import { VdChartsTypes } from './vd-charts-types';\r\n\r\nexport class VdChartsSeries {\r\n public name: string = '';\r\n public data: Array = new Array();\r\n public max: number;\r\n public min: number;\r\n public yaxis: string = 'default';\r\n public type: string = VdChartsTypes.Spline;\r\n public color: string;\r\n public className: string;\r\n public customFormatter: Function;\r\n\r\n /** Sets the inner diameter of an pie chart, set i.e. 65% to make it a doughnut. */\r\n public innerSize: string = null;\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n public setName(name: string): VdChartsSeries {\r\n this.name = name;\r\n return this;\r\n }\r\n\r\n public setData(data: Array): VdChartsSeries {\r\n this.data = data;\r\n return this;\r\n }\r\n\r\n public usingYAxis(id: string): VdChartsSeries {\r\n this.yaxis = id;\r\n return this;\r\n }\r\n\r\n public setType(type: string): VdChartsSeries {\r\n if (type === 'doughnut') {\r\n this.type = 'pie';\r\n this.innerSize = '65%';\r\n }\r\n else {\r\n\r\n this.type = type;\r\n }\r\n return this;\r\n }\r\n\r\n public setColor(color: string): VdChartsSeries {\r\n this.color = color;\r\n return this;\r\n }\r\n\r\n public setClass(className: string): VdChartsSeries {\r\n this.className = className;\r\n return this;\r\n }\r\n\r\n public setFormatter(formatter: Function) {\r\n this.customFormatter = formatter;\r\n return this;\r\n }\r\n}","export enum VdChartsTypes {\r\n Spline = 'spline',\r\n Line = 'line'\r\n}","export class VdChartsYAxis {\r\n public id: string;\r\n public title: string;\r\n public max: number;\r\n public min: number;\r\n public opposite: boolean = false;\r\n public formatter: Function;\r\n\r\n constructor(id: string, title: string) {\r\n this.id = id;\r\n this.title = title;\r\n }\r\n\r\n public setMax(max: number): VdChartsYAxis {\r\n this.max = max;\r\n return this;\r\n }\r\n\r\n public setMin(min: number): VdChartsYAxis {\r\n this.min = min;\r\n return this;\r\n }\r\n\r\n public setOpposite(opposite: boolean): VdChartsYAxis {\r\n this.opposite = opposite;\r\n return this;\r\n }\r\n\r\n public setFormatter(func: Function): VdChartsYAxis {\r\n this.formatter = func;\r\n return this;\r\n }\r\n}","import { VdChartsMonths } from '../../vd-charts-months';\r\n\r\nexport interface IEnabled {\r\n enabled: boolean;\r\n}\r\n\r\nexport interface IOptions {\r\n exporting: boolean;\r\n legend: any;\r\n credits: IEnabled;\r\n colors: Array;\r\n chart: any;\r\n title: any;\r\n subtitle: any;\r\n tooltip: any;\r\n labels: any;\r\n responsive: any;\r\n plotOptions: any;\r\n yAxis: any;\r\n}\r\n\r\nexport class Options {\r\n public static default(): IOptions {\r\n return {\r\n exporting: false,\r\n legend: {\r\n enabled: true,\r\n itemStyle: {\r\n fontSize: '14px',\r\n fontFamily: 'Poppins, Tahoma, Geneva, Verdana, sans-serif'\r\n }\r\n },\r\n credits: {\r\n enabled: false\r\n },\r\n colors: [\r\n '#058DC7',\r\n '#50B432',\r\n '#ED561B',\r\n '#DDDF00',\r\n '#24CBE5',\r\n '#64E572',\r\n '#FF9655',\r\n '#FFF263',\r\n '#6AF9C4'\r\n ],\r\n chart: {\r\n backgroundColor: 'transparent',\r\n style: {\r\n fontFamily: 'roboto, verdana',\r\n height: null,\r\n width: null\r\n }\r\n },\r\n\r\n title: {\r\n text: '',\r\n style: {\r\n display: 'none'\r\n }\r\n },\r\n\r\n subtitle: {\r\n text: '',\r\n style: {\r\n display: 'none'\r\n }\r\n },\r\n tooltip: {\r\n formatter: function () {\r\n var xValue = this.x;\r\n var yValue = this.y;\r\n if (this.series && this.series.options && this.series.options.customFormatter) {\r\n yValue = this.series.options.customFormatter({ value: this.y });\r\n }\r\n\r\n return xValue + '
' + '' + yValue + '';\r\n }\r\n },\r\n labels: {\r\n style: {\r\n fontSize: '12px',\r\n fontFamily: 'Roboto, verdana',\r\n color: 'rgba(0, 0, 0, 0.54)'\r\n }\r\n },\r\n responsive: {\r\n rules: [{\r\n condition: {\r\n maxWidth: 600\r\n },\r\n chartOptions: {\r\n xAxis: {\r\n labels: {\r\n enabled: false\r\n }\r\n }\r\n }\r\n }, {\r\n condition: {\r\n minWidth: 600\r\n },\r\n chartOptions: {\r\n xAxis: {\r\n labels: {\r\n enabled: true,\r\n formatter: new VdChartsMonths().shortMonthFormatter\r\n }\r\n }\r\n }\r\n }, {\r\n condition: {\r\n minWidth: 1280\r\n },\r\n chartOptions: {\r\n xAxis: {\r\n labels: {\r\n enabled: true,\r\n formatter: new VdChartsMonths().longMonthFormatter\r\n }\r\n }\r\n }\r\n }]\r\n },\r\n plotOptions: {},\r\n yAxis: {}\r\n };\r\n }\r\n}\r\n","import { Options, IOptions } from './options';\r\n\r\nexport class PieOptions extends Options {\r\n public static default(): IOptions {\r\n let options = Options.default();\r\n // Override tooltip as the default one does not fit a pie.\r\n options.tooltip = {\r\n pointFormat: '{series.name}: {point.percentage:.1f}%'\r\n };\r\n options.responsive = null;\r\n // options.legend = {\r\n // enabled: true,\r\n // itemStyle: {\r\n // fontFamily: 'Poppins, Tahoma, Geneva, Verdana, sans-serif'\r\n // }\r\n // };\r\n options.plotOptions = {\r\n pie: {\r\n allowPointSelect: true,\r\n cursor: 'pointer',\r\n dataLabels: {\r\n enabled: (window.innerWidth > 1095),\r\n format: '{point.name}:
{point.value}',\r\n connectorColor: 'silver'\r\n },\r\n showInLegend: true\r\n }\r\n };\r\n\r\n return options;\r\n }\r\n}\r\n","import './vd-charts.scss';\r\nimport { bindable, BindingEngine, inject } from 'aurelia-framework';\r\nimport * as Highcharts from 'highcharts';\r\n\r\nimport Histogram from 'highcharts/modules/histogram-bellcurve';\r\nHistogram(Highcharts);\r\n\r\nimport { Options } from './options/options';\r\nimport { VdChartsLabelSet } from '../vd-charts-labelset';\r\nimport { VdChartsDataSet } from '../vd-charts-dataset';\r\nimport { VdChartsYAxis } from '../vd-charts-yaxis';\r\nimport { VdChartsSeries } from '../vd-charts-series';\r\nimport { VdChartsTypes } from '../vd-charts-types';\r\nimport { VdChartsLegendSet } from '../vd-charts-legendset';\r\nimport { tools } from '../../../lib/tools';\r\n\r\n@inject(BindingEngine)\r\nexport class VdCharts {\r\n @bindable\r\n public header: string;\r\n\r\n @bindable\r\n public labels: VdChartsLabelSet;\r\n\r\n @bindable\r\n public data: VdChartsDataSet;\r\n\r\n @bindable\r\n public id: string = 'container';\r\n\r\n @bindable\r\n public legends: VdChartsLegendSet;\r\n\r\n @bindable\r\n public options: Options;\r\n\r\n public charts: any = null;\r\n public isAttached: boolean = false;\r\n\r\n public bindingEngine: BindingEngine;\r\n public subscription: any;\r\n public palette: any = [\r\n '#185177',\r\n '#B9CAD6',\r\n '#969696',\r\n '#2ead36',\r\n '#6a0000',\r\n '#0544d3',\r\n '#6b0392',\r\n '#f05b4f',\r\n '#dda458',\r\n '#eacf7d',\r\n '#86797d',\r\n '#b2c326',\r\n '#6188e2',\r\n '#a748ca'];\r\n\r\n public paletteIndex = 0;\r\n\r\n public isSet(prop: any) {\r\n return typeof (prop) !== 'undefined' && prop !== null;\r\n }\r\n\r\n public getNextColor(): string {\r\n var color = this.palette[this.paletteIndex];\r\n this.paletteIndex++;\r\n\r\n return color;\r\n }\r\n\r\n public draw(data: VdChartsDataSet, labels: VdChartsLabelSet) {\r\n var chartOptions = this.options ? this.options : Options.default();\r\n\r\n if (typeof labels !== 'undefined' && labels! !== null) {\r\n var labelOptions = {\r\n xAxis: {\r\n tickmarkPlacement: 'between',\r\n categories: labels.labels\r\n }\r\n };\r\n\r\n chartOptions = tools.extend(chartOptions, labelOptions);\r\n }\r\n\r\n if (typeof data !== 'undefined' && data !== null) {\r\n var dataOptions = {\r\n series: [],\r\n yAxis: []\r\n };\r\n\r\n if (data.yAxis.length == 0) {\r\n data.addYAxis(new VdChartsYAxis('myOtherAxis', ''));\r\n }\r\n\r\n // Y-axis\r\n\r\n if (data.yAxis.length === 2) {\r\n data.yAxis[1].opposite = true;\r\n }\r\n\r\n data.yAxis.forEach((x: VdChartsYAxis) => {\r\n var axis = {\r\n allowDecimals: false,\r\n id: x.id,\r\n min: null,\r\n max: null,\r\n opposite: false,\r\n gridLineWidth: 0,\r\n alignTicks: false,\r\n //offset: 20,\r\n title: {\r\n text: null\r\n },\r\n labels: {\r\n formatter: null\r\n }\r\n };\r\n\r\n if (this.isSet(x.max)) {\r\n axis.max = x.max;\r\n }\r\n\r\n if (this.isSet(x.min)) {\r\n axis.min = x.min;\r\n }\r\n\r\n if (this.isSet(x.title)) {\r\n axis.title.text = x.title;\r\n }\r\n\r\n if (this.isSet(x.opposite)) {\r\n axis.opposite = x.opposite;\r\n }\r\n\r\n if (this.isSet(x.formatter)) {\r\n axis.labels.formatter = x.formatter;\r\n }\r\n\r\n dataOptions.yAxis.push(axis);\r\n });\r\n\r\n // Series\r\n this.paletteIndex = 0;\r\n data.series.forEach((x: VdChartsSeries) => {\r\n\r\n var yAxisNo = dataOptions.yAxis.findIndex((y: VdChartsYAxis) => y.id === x.yaxis);\r\n if (yAxisNo < 0) {\r\n yAxisNo = 0;\r\n }\r\n\r\n dataOptions.series.push({\r\n name: x.name,\r\n data: x.data,\r\n //customFormatter: data.yAxis[yAxisNo].formatter,\r\n lineWidth: 3,\r\n type: this.isSet(x.type) ? x.type : VdChartsTypes.Spline,\r\n yAxis: yAxisNo,\r\n color: this.isSet(x.color) ? x.color : this.getNextColor(),\r\n innerSize: x.innerSize\r\n });\r\n });\r\n\r\n // General\r\n chartOptions = tools.extend(chartOptions, dataOptions);\r\n }\r\n\r\n if (this.isAttached) {\r\n this.charts = Highcharts.chart(this.id, chartOptions);\r\n }\r\n }\r\n\r\n constructor(bindingEngine) {\r\n this.bindingEngine = bindingEngine;\r\n\r\n }\r\n\r\n\r\n public detached() {\r\n this.subscription.dispose();\r\n }\r\n\r\n\r\n public attached() {\r\n this.subscription = this.bindingEngine\r\n .propertyObserver(this.data, 'series')\r\n .subscribe((newValue, oldValue) => {\r\n this.data.series = newValue;\r\n this.draw(this.data, this.labels);\r\n });\r\n this.isAttached = true;\r\n this.draw(this.data, this.labels);\r\n }\r\n}\r\n","import { VdChartsLabelSet } from './../vd-charts-labelset';\r\nimport './vd-piechart.scss';\r\nimport { VdChartsDataSet } from 'components/vd-charts/vd-charts-dataset';\r\nimport { VdChartsSeries } from 'components/vd-charts/vd-charts-series';\r\nimport { IOptions } from 'components/vd-charts/vd-charts/options/options';\r\nimport { PieOptions } from 'components/vd-charts/vd-charts/options/pie-options';\r\nimport { autoinject, bindable } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { VdChartsLegendSet } from 'components/vd-charts/vd-charts-legendset';\r\nimport SelectionData from 'models/selection-data';\r\nimport IAggregatedKpis from 'models/aggregated-kpis';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { NumberFormatValueConverter } from 'resources/value-converters/number-format';\r\n\r\n@autoinject\r\nexport class VdPiechart {\r\n\r\n @bindable\r\n public hasError: boolean;\r\n\r\n @bindable\r\n public kpis: IAggregatedKpis;\r\n\r\n public dataset = new VdChartsDataSet();\r\n public legends = new VdChartsLegendSet();\r\n public labels = new VdChartsLabelSet();\r\n private options: IOptions;\r\n private dataLabelsFormatter: any;\r\n\r\n constructor(private i18n: I18N, private eventAggregator: EventAggregator, private numberFormatValueConverter: NumberFormatValueConverter) {\r\n this.options = PieOptions.default();\r\n\r\n this.dataLabelsFormatter = function () {\r\n return `${this.point.name}
${numberFormatValueConverter.toView(this.point.value)} kWh`;\r\n };\r\n }\r\n\r\n public async attached() {\r\n //this.prepareGraph();\r\n this.eventAggregator.subscribe('data-updated', (data) => this.dataLoaded(data));\r\n\r\n this.options.plotOptions.pie.dataLabels = {\r\n enabled: true,\r\n formatter: this.dataLabelsFormatter\r\n };\r\n }\r\n\r\n private dataLoaded(data: SelectionData) {\r\n this.kpis = data.kpis;\r\n this.prepareGraph();\r\n }\r\n\r\n private prepareGraph() {\r\n this.dataset.clearSeries();\r\n this.dataset.clearYAxis();\r\n\r\n let pieData = new Array();\r\n\r\n this.addData(pieData, 'Bensin', '#8ecae6', this.kpis ? this.kpis.fuelConsumptionGasoline : 0);\r\n this.addData(pieData, 'Elektrisitet', '#219ebc', this.kpis ? this.kpis.fuelConsumptionElectric : 0);\r\n this.addData(pieData, 'Diesel', '#023047', this.kpis ? this.kpis.fuelConsumptionDiesel : 0);\r\n this.addData(pieData, 'Hydrogen', '#ffb703', this.kpis ? this.kpis.fuelConsumptionHydrogen : 0);\r\n this.addData(pieData, 'Gass', '#8fca48', this.kpis ? this.kpis.fuelConsumptionGas : 0);\r\n\r\n this.dataset.addSeries(new VdChartsSeries()\r\n .setName('Andel')\r\n .setType('doughnut')\r\n .setData(pieData));\r\n\r\n this.legends.positionTop = false;\r\n this.legends.autoSortLegends = false;\r\n }\r\n\r\n private addData(pieData: any[], name: string, color: string, value: number) {\r\n if (value === 0 || value === null || value === undefined || this.kpis === null || this.kpis === undefined) { return; }\r\n\r\n pieData.push({\r\n name: name,\r\n y: value / this.kpis.fuelConsumptionTotal,\r\n color: color,\r\n value: value\r\n });\r\n }\r\n}\r\n","import { autoinject, bindable } from 'aurelia-framework';\r\nimport AirDatepicker from 'air-datepicker';\r\nimport './vd-date-picker.scss';\r\nimport { addDays, differenceInDays, eachDayOfInterval, endOfWeek, isMonday, isSameWeek, isSunday, startOfWeek, subDays } from 'date-fns';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { log } from 'services/logger/log';\r\n\r\n@autoinject\r\nexport class VdDatePicker {\r\n @bindable\r\n public from: Date;\r\n @bindable\r\n public to: Date;\r\n @bindable\r\n public max: Date;\r\n @bindable\r\n public label: string;\r\n\r\n public active: boolean = false;\r\n\r\n private datepicker: AirDatepicker;\r\n\r\n constructor(private translator: I18N) { }\r\n\r\n public async attached() {\r\n window.addEventListener('click', (event) => {\r\n if (this.active && !this.datepicker.$datepicker.contains(event.target as Node)) {\r\n this.active = false;\r\n }\r\n }, true);\r\n\r\n let lastFocusedDate: Date = null;\r\n this.datepicker = new AirDatepicker('#datepicker', {\r\n range: true,\r\n selectedDates: [this.from, this.to],\r\n maxDate: this.max,\r\n multipleDatesSeparator: ' - ',\r\n locale: {\r\n days: [\r\n this.translator.tr('weekdays.sunday'),\r\n this.translator.tr('weekdays.monday'),\r\n this.translator.tr('weekdays.tuesday'),\r\n this.translator.tr('weekdays.wednesday'),\r\n this.translator.tr('weekdays.thursday'),\r\n this.translator.tr('weekdays.friday'),\r\n this.translator.tr('weekdays.saturday'),\r\n ],\r\n daysShort: [\r\n this.translator.tr('weekdaysShort.sun'),\r\n this.translator.tr('weekdaysShort.mon'),\r\n this.translator.tr('weekdaysShort.tue'),\r\n this.translator.tr('weekdaysShort.wed'),\r\n this.translator.tr('weekdaysShort.thu'),\r\n this.translator.tr('weekdaysShort.fri'),\r\n this.translator.tr('weekdaysShort.sat'),\r\n ],\r\n daysMin: [\r\n this.translator.tr('weekdaysShort.sun').slice(0, 2),\r\n this.translator.tr('weekdaysShort.mon').slice(0, 2),\r\n this.translator.tr('weekdaysShort.tue').slice(0, 2),\r\n this.translator.tr('weekdaysShort.wed').slice(0, 2),\r\n this.translator.tr('weekdaysShort.thu').slice(0, 2),\r\n this.translator.tr('weekdaysShort.fri').slice(0, 2),\r\n this.translator.tr('weekdaysShort.sat').slice(0, 2),\r\n ],\r\n months: [\r\n this.translator.tr('months.january'),\r\n this.translator.tr('months.february'),\r\n this.translator.tr('months.march'),\r\n this.translator.tr('months.april'),\r\n this.translator.tr('months.may'),\r\n this.translator.tr('months.june'),\r\n this.translator.tr('months.july'),\r\n this.translator.tr('months.august'),\r\n this.translator.tr('months.september'),\r\n this.translator.tr('months.october'),\r\n this.translator.tr('months.november'),\r\n this.translator.tr('months.december'),\r\n ],\r\n monthsShort: [\r\n this.translator.tr('monthsShort.jan'),\r\n this.translator.tr('monthsShort.feb'),\r\n this.translator.tr('monthsShort.mar'),\r\n this.translator.tr('monthsShort.apr'),\r\n this.translator.tr('monthsShort.may'),\r\n this.translator.tr('monthsShort.jun'),\r\n this.translator.tr('monthsShort.jul'),\r\n this.translator.tr('monthsShort.aug'),\r\n this.translator.tr('monthsShort.sep'),\r\n this.translator.tr('monthsShort.oct'),\r\n this.translator.tr('monthsShort.nov'),\r\n this.translator.tr('monthsShort.dec'),\r\n ],\r\n today: this.translator.tr('calendar.sameDay'),\r\n clear: 'clear',\r\n firstDay: 1,\r\n },\r\n onFocus: ({ date, datepicker }) => {\r\n if (!isSameWeek(date, lastFocusedDate)) {\r\n this.setFocusWeek(date);\r\n }\r\n lastFocusedDate = date;\r\n },\r\n onSelect: ({ date, formattedDate, datepicker }) => {\r\n if (datepicker.selectedDates.length === 1) {\r\n const startDate = startOfWeek(datepicker.selectedDates[0], { weekStartsOn: 1 });\r\n if (differenceInDays(datepicker.selectedDates[0], startDate) !== 0) {\r\n datepicker.unselectDate(datepicker.selectedDates[0]);\r\n datepicker.selectDate(startDate);\r\n }\r\n }\r\n\r\n if (datepicker.selectedDates.length === 2) {\r\n const endDate = endOfWeek(datepicker.selectedDates[1], { weekStartsOn: 1 });\r\n if (differenceInDays(datepicker.selectedDates[1], endDate) !== 0) {\r\n datepicker.unselectDate(datepicker.selectedDates[1]);\r\n datepicker.selectDate(endDate);\r\n this.clearFocusWeek();\r\n setTimeout(() => {\r\n this.active = false;\r\n }, 150);\r\n }\r\n\r\n this.from = datepicker.selectedDates[0];\r\n this.to = datepicker.selectedDates[1];\r\n }\r\n }\r\n });\r\n }\r\n\r\n private clearFocusWeek() {\r\n const datepickerDaysEl = document.getElementsByClassName('air-datepicker-body--cells -days-')[0];\r\n for (let i = 0; i < datepickerDaysEl.childElementCount; i++) {\r\n const day = datepickerDaysEl.children[i];\r\n day.classList.remove('-focus-week-');\r\n }\r\n }\r\n\r\n private setFocusWeek(date: Date) {\r\n const datepickerDaysEl = document.getElementsByClassName('air-datepicker-body--cells -days-')[0];\r\n const startDate = startOfWeek(date, { weekStartsOn: 1 });\r\n\r\n for (let i = 0; i < datepickerDaysEl.childElementCount; i++) {\r\n const day = datepickerDaysEl.children[i];\r\n const dayDate = parseInt(day.getAttribute('data-date'));\r\n const monthDate = parseInt(day.getAttribute('data-month'));\r\n const yearDate = parseInt(day.getAttribute('data-year'));\r\n const date = new Date(yearDate, monthDate, dayDate);\r\n\r\n if (isSameWeek(date, startDate, { weekStartsOn: 1 })) {\r\n day.classList.add('-focus-week-');\r\n } else {\r\n day.classList.remove('-focus-week-');\r\n }\r\n }\r\n }\r\n\r\n public openPicker() {\r\n this.active = !this.active;\r\n }\r\n}\r\n","import { Cluster, MarkerClusterer } from '@googlemaps/markerclusterer';\r\nimport { GoogleMapsOverlay as DeckOverlay } from '@deck.gl/google-maps';\r\nimport {\r\n GeoJsonLayer,\r\n IconLayer,\r\n IconLayerProps,\r\n ScatterplotLayer,\r\n ScatterplotLayerProps,\r\n} from '@deck.gl/layers';\r\nimport {\r\n GPUGridLayer,\r\n GPUGridLayerProps,\r\n HeatmapLayer,\r\n HeatmapLayerProps,\r\n HexagonLayer,\r\n HexagonLayerProps,\r\n} from '@deck.gl/aggregation-layers';\r\nimport { H3HexagonLayer, H3HexagonLayerProps } from '@deck.gl/geo-layers';\r\nimport { Layer, LayerProps } from '@deck.gl/core';\r\nimport { log } from 'services/logger/log';\r\n\r\nexport type Data = {\r\n position: [longitude: number, latitude: number];\r\n};\r\n\r\nexport type LayerConfig = {\r\n getTooltip: (data: TData | any) => string;\r\n minZoom: number;\r\n maxZoom: number;\r\n};\r\n\r\nexport class MapLayerData {\r\n private data: TData[] = [];\r\n private filtered: TData[] = [];\r\n\r\n public getData() {\r\n return this.filtered;\r\n }\r\n\r\n public setData(data: TData[]) {\r\n this.data = data;\r\n this.filtered = this.data;\r\n }\r\n\r\n public applyFilter(filter: Filter) {\r\n this.filtered = this.data.filter((d) => {\r\n const data = filter.getFilterValue(d);\r\n for (let i = 0; i < data.length; i++) {\r\n if (\r\n data[i] < filter.filterRange[i][0] ||\r\n data[i] > filter.filterRange[i][1]\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n public applyDataFilter(filter: (data: TData) => boolean) {\r\n this.filtered = this.data.filter(filter);\r\n }\r\n}\r\n\r\nexport class MapLayers {\r\n private map: google.maps.Map;\r\n private data: MapLayerData;\r\n private layers: Map> = new Map();\r\n private filter: Filter;\r\n\r\n constructor(map: google.maps.Map, data: MapLayerData) {\r\n this.map = map;\r\n this.data = data;\r\n }\r\n\r\n public update() {\r\n this.layers.forEach((layer) => layer.update());\r\n }\r\n\r\n public setFilter(filter: Filter) {\r\n this.filter = filter;\r\n }\r\n\r\n public updateFilter(ranges: [number, number][]) {\r\n if (!this.filter) {\r\n log.error('No filter set');\r\n return;\r\n }\r\n\r\n this.filter.filterRange = ranges;\r\n this.data.applyFilter(this.filter);\r\n }\r\n\r\n public show() {\r\n this.layers.forEach((layer) => layer.show());\r\n }\r\n\r\n public hide() {\r\n this.layers.forEach((layer) => layer.hide());\r\n }\r\n\r\n public addScatterplotLayer(\r\n id: string,\r\n layerConfig: Partial>,\r\n config: LayerConfig\r\n ) {\r\n let layer = new ScatterplotLayer({\r\n id: id,\r\n ...layerConfig,\r\n });\r\n\r\n this.layers.set(\r\n id,\r\n new DeckMapLayer(id, this.map, this.data, layer, config)\r\n );\r\n }\r\n\r\n public addHexagonLayer(\r\n id: string,\r\n hexConfig: Partial>> & any,\r\n config: LayerConfig\r\n ) {\r\n let layer = new HexagonLayer({\r\n id: id,\r\n ...hexConfig,\r\n });\r\n\r\n this.layers.set(\r\n id,\r\n new DeckMapLayer(id, this.map, this.data, layer, config)\r\n );\r\n }\r\n\r\n public addH3HexagonLayer(\r\n id: string,\r\n hexConfig: Partial>> & any,\r\n config: LayerConfig\r\n ) {\r\n let layer = new H3HexagonLayer({\r\n id: id,\r\n ...hexConfig,\r\n });\r\n\r\n this.layers.set(\r\n id,\r\n new DeckMapLayer(id, this.map, this.data, layer, config)\r\n );\r\n }\r\n\r\n public addGPUGridLayer(\r\n id: string,\r\n gridConfig: Partial>> & any,\r\n config: LayerConfig\r\n ) {\r\n let layer = new GPUGridLayer({\r\n id: id,\r\n ...gridConfig,\r\n });\r\n\r\n this.layers.set(\r\n id,\r\n new DeckMapLayer(id, this.map, this.data, layer, config)\r\n );\r\n }\r\n\r\n public addHeatmapLayer(\r\n id: string,\r\n heatmapConfig: Partial>> & any,\r\n config: LayerConfig\r\n ) {\r\n let layer = new HeatmapLayer({\r\n id: id,\r\n ...heatmapConfig,\r\n });\r\n\r\n this.layers.set(\r\n id,\r\n new DeckMapLayer(id, this.map, this.data, layer, config)\r\n );\r\n }\r\n\r\n public addIconLayer(\r\n id: string,\r\n iconConfig: Partial>,\r\n config: LayerConfig\r\n ) {\r\n let layer = new IconLayer({\r\n id: id,\r\n ...iconConfig,\r\n });\r\n\r\n this.layers.set(\r\n id,\r\n new DeckMapLayer(id, this.map, this.data, layer, config)\r\n );\r\n }\r\n\r\n public addClusteredMarkerLayer(\r\n id: string,\r\n markerConfig: MarkerConfig,\r\n config: LayerConfig\r\n ) {\r\n const layer = new ClusterMapLayer(\r\n id,\r\n this.map,\r\n this.data,\r\n config,\r\n markerConfig\r\n );\r\n\r\n this.layers.set(id, layer);\r\n }\r\n\r\n public getLayer(id: string): MapLayer {\r\n return this.layers.get(id);\r\n }\r\n}\r\n\r\nexport abstract class MapLayer {\r\n protected id: string;\r\n protected data: MapLayerData;\r\n protected googleMap: google.maps.Map;\r\n\r\n constructor(\r\n id: string,\r\n googleMap: google.maps.Map,\r\n data: MapLayerData\r\n ) {\r\n this.id = id;\r\n this.data = data;\r\n this.googleMap = googleMap;\r\n }\r\n\r\n public abstract update(): void;\r\n public abstract show();\r\n public abstract hide();\r\n}\r\n\r\nexport class DeckMapLayer extends MapLayer {\r\n private overlay: DeckOverlay;\r\n private layer: Layer<{}>;\r\n private visible: boolean;\r\n private forceHidden: boolean;\r\n\r\n constructor(\r\n id: string,\r\n googleMap: google.maps.Map,\r\n data: MapLayerData,\r\n layer: Layer<{}>,\r\n private layerConfig: LayerConfig\r\n ) {\r\n super(id, googleMap, data);\r\n\r\n this.layer = layer;\r\n this.overlay = new DeckOverlay({\r\n layers: [layer],\r\n layerFilter: (layer) => this.visible,\r\n getTooltip: ({ object }) => {\r\n if (object) {\r\n const html = layerConfig.getTooltip(object);\r\n return {\r\n html: html,\r\n style: {\r\n backgroundColor: 'white',\r\n color: 'black',\r\n },\r\n };\r\n }\r\n return null;\r\n },\r\n });\r\n this.overlay.setMap(googleMap);\r\n\r\n this.checkVisible();\r\n googleMap.addListener('zoom_changed', this.checkVisible.bind(this));\r\n }\r\n\r\n public update() {\r\n if (!this.visible) {\r\n return;\r\n }\r\n\r\n this.layer = this.layer.clone({ data: this.data.getData() });\r\n this.overlay.setProps({ layers: [this.layer] });\r\n }\r\n\r\n public updateProps(props: Partial>) {\r\n this.layer = this.layer.clone(props);\r\n this.overlay.setProps({ layers: [this.layer] });\r\n }\r\n\r\n public show() {\r\n this.forceHidden = false;\r\n this.checkVisible();\r\n }\r\n\r\n public hide() {\r\n this.forceHidden = true;\r\n this.checkVisible();\r\n }\r\n\r\n private checkVisible() {\r\n const zoom = Math.floor(this.googleMap.getZoom());\r\n const visible =\r\n zoom >= this.layerConfig.minZoom &&\r\n zoom <= this.layerConfig.maxZoom &&\r\n !this.forceHidden;\r\n\r\n if (visible != this.visible) {\r\n this.visible = visible;\r\n this.overlay.setProps({\r\n layers: [\r\n (this.layer = this.layer.clone({\r\n visible: this.visible,\r\n })),\r\n ],\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport type MarkerConfig = {\r\n getId: (data: TData | Cluster) => string;\r\n getTooltip: (data: TData | Cluster) => string;\r\n getContent: (data: TData | Cluster) => Node;\r\n};\r\n\r\nexport class ClusterMapLayer extends MapLayer {\r\n private clusterer: MarkerClusterer;\r\n private markers: {\r\n uniqueId: string;\r\n marker: google.maps.marker.AdvancedMarkerElement;\r\n }[] = [];\r\n\r\n constructor(\r\n id: string,\r\n googleMap: google.maps.Map,\r\n data: MapLayerData,\r\n private layerConfig: LayerConfig,\r\n private markerConfig: MarkerConfig\r\n ) {\r\n super(id, googleMap, data);\r\n this.clusterer = new MarkerClusterer({\r\n map: this.googleMap,\r\n markers: [],\r\n });\r\n\r\n this.clusterer.addListener('clusteringend', () => {\r\n this.markers.filter((e) => e.marker.map);\r\n });\r\n }\r\n\r\n public update(): void {\r\n for (const data of this.data.getData()) {\r\n const id = this.markerConfig.getId(data);\r\n const marker = this.markers.find((m) => m.uniqueId == id);\r\n\r\n if (marker) {\r\n marker.marker.position = {\r\n lat: data.position[1],\r\n lng: data.position[0],\r\n };\r\n } else {\r\n let content = this.markerConfig.getContent(data);\r\n const mapMarker = new google.maps.marker.AdvancedMarkerElement({\r\n position: {\r\n lat: data.position[1],\r\n lng: data.position[0],\r\n },\r\n map: this.googleMap,\r\n content: content,\r\n title: this.markerConfig.getTooltip(data),\r\n gmpClickable: true,\r\n });\r\n mapMarker.addListener('click', ({ domEvent, latLng }) => {\r\n const { target } = domEvent;\r\n });\r\n\r\n const marker = { uniqueId: id, marker: mapMarker };\r\n this.markers.push(marker);\r\n }\r\n }\r\n\r\n this.clusterer.clearMarkers(true);\r\n this.clusterer.addMarkers(\r\n this.markers.map((e) => e.marker),\r\n false\r\n );\r\n }\r\n\r\n public show() { }\r\n public hide() { }\r\n}\r\n\r\nexport type Filter = {\r\n getFilterValue: (d: TData) => number[];\r\n filterRange: [number, number][];\r\n};\r\n\r\nexport function createFilter(\r\n filterRanges: [number, number][],\r\n filterSelector: (d: TData) => number[]\r\n): Filter {\r\n return {\r\n getFilterValue: filterSelector,\r\n filterRange: filterRanges,\r\n };\r\n}\r\n","import { MapAggregationCounters } from 'models/map';\r\nimport { log } from 'services/logger/log';\r\n\r\nexport function generateColorRange(\r\n steps: number,\r\n from: [number, number, number],\r\n to: [number, number, number]\r\n): [number, number, number][] {\r\n const colors = [];\r\n\r\n for (let i = 0; i < steps; i++) {\r\n colors.push([\r\n from[0] + (to[0] - from[0]) * (i / steps),\r\n from[1] + (to[1] - from[1]) * (i / steps),\r\n from[2] + (to[2] - from[2]) * (i / steps),\r\n ]);\r\n }\r\n\r\n return colors;\r\n}\r\n\r\nexport function generateColor(\r\n t: number,\r\n from: [number, number, number],\r\n to: [number, number, number]\r\n): [number, number, number] {\r\n return [\r\n from[0] + (to[0] - from[0]) * t,\r\n from[1] + (to[1] - from[1]) * t,\r\n from[2] + (to[2] - from[2]) * t,\r\n ];\r\n}\r\n\r\nexport function chargerStationIcon() {\r\n var icon = new DOMParser().parseFromString(\r\n `\r\n \r\n \r\n \r\n `,\r\n 'image/svg+xml'\r\n ).documentElement;\r\n\r\n icon.style.transform = 'scale(2.0)';\r\n return icon;\r\n}\r\n\r\nexport function countersTooltip(counters: MapAggregationCounters): string {\r\n let result =\r\n '
';\r\n result += '

Antall

';\r\n\r\n if (counters.unique > 0) {\r\n result += `

Unike eiendeler

${counters.unique}

`;\r\n }\r\n\r\n result += '

Eiendelstype

';\r\n if (counters.vehicle > 0) {\r\n result += `

Kjøretøy

${counters.vehicle}

`;\r\n }\r\n if (counters.machine > 0) {\r\n result += `

Maskiner

${counters.machine}

`;\r\n }\r\n if (counters.truck > 0) {\r\n result += `

Lastebil

${counters.truck}

`;\r\n }\r\n if (counters.car > 0) {\r\n result += `

Personbil

${counters.car}

`;\r\n }\r\n if (counters.van > 0) {\r\n result += `

Varebil

${counters.van}

`;\r\n }\r\n\r\n result += '

Drivkilde

';\r\n if (counters.gasoline > 0) {\r\n result += `

Bensin

${counters.gasoline}

`;\r\n }\r\n if (counters.diesel > 0) {\r\n result += `

Diesel

${counters.diesel}

`;\r\n }\r\n if (counters.electric > 0) {\r\n result += `

Elektrisk

${counters.electric}

`;\r\n }\r\n if (counters.gas > 0) {\r\n result += `

Gass

${counters.gas}

`;\r\n }\r\n if (counters.hydrogen > 0) {\r\n result += `

Hydrogen

${counters.hydrogen}

`;\r\n }\r\n if (counters.hybrid > 0) {\r\n result += `

Hybrid

${counters.hybrid}

`;\r\n }\r\n if (counters.other > 0) {\r\n result += `

Andre

${counters.other}

`;\r\n }\r\n\r\n result += '

Vektklasse

';\r\n if (counters.lowWeightClass > 0) {\r\n result += `

< 3.5t

${counters.lowWeightClass}

`;\r\n }\r\n if (counters.mediumWeightClass > 0) {\r\n result += `

3.5t - 7.5t

${counters.mediumWeightClass}

`;\r\n }\r\n if (counters.highWeightClass > 0) {\r\n result += `

> 7.5t

${counters.highWeightClass}

`;\r\n }\r\n result += '
';\r\n\r\n return result;\r\n}\r\n\r\nexport type DataFilter = {\r\n category: string;\r\n active: boolean;\r\n range: [min: number, max: number];\r\n selected: [min: number, max: number];\r\n};\r\n\r\nexport function createDataFilter(category: string, range: [number, number]): DataFilter {\r\n return {\r\n category: category,\r\n range: range,\r\n selected: range,\r\n active: true,\r\n };\r\n}\r\n\r\nexport type PositionDataFilter = {\r\n unique: DataFilter;\r\n total: DataFilter;\r\n truck: DataFilter;\r\n car: DataFilter;\r\n van: DataFilter;\r\n vehicle: DataFilter;\r\n machine: DataFilter;\r\n gasoline: DataFilter;\r\n diesel: DataFilter;\r\n electric: DataFilter;\r\n gas: DataFilter;\r\n hydrogen: DataFilter;\r\n hybrid: DataFilter;\r\n other: DataFilter;\r\n lowWeightClass: DataFilter;\r\n mediumWeightClass: DataFilter;\r\n highWeightClass: DataFilter;\r\n};\r\n\r\nexport function defaultPositionDataFilter(): PositionDataFilter {\r\n return {\r\n unique: createDataFilter('assetType', [0, 1]),\r\n total: createDataFilter('assetType', [0, 1]),\r\n truck: createDataFilter('assetType', [0, 1]),\r\n car: createDataFilter('assetType', [0, 1]),\r\n van: createDataFilter('assetType', [0, 1]),\r\n vehicle: createDataFilter('assetType', [0, 1]),\r\n machine: createDataFilter('assetType', [0, 1]),\r\n gasoline: createDataFilter('fuelType', [0, 1]),\r\n diesel: createDataFilter('fuelType', [0, 1]),\r\n electric: createDataFilter('fuelType', [0, 1]),\r\n gas: createDataFilter('fuelType', [0, 1]),\r\n hydrogen: createDataFilter('fuelType', [0, 1]),\r\n hybrid: createDataFilter('fuelType', [0, 1]),\r\n other: createDataFilter('fuelType', [0, 1]),\r\n lowWeightClass: createDataFilter('weightClass', [0, 1]),\r\n mediumWeightClass: createDataFilter('weightClass', [0, 1]),\r\n highWeightClass: createDataFilter('weightClass', [0, 1]),\r\n };\r\n}\r\n\r\nexport function updatePositionDataFilterRanges(positionDataFilter: PositionDataFilter, counters: MapAggregationCounters[]) {\r\n const filterRanges: { [key: string]: [number, number] } = {\r\n unique: [0, 0],\r\n total: [0, 0],\r\n truck: [0, 0],\r\n car: [0, 0],\r\n van: [0, 0],\r\n vehicle: [0, 0],\r\n machine: [0, 0],\r\n gasoline: [0, 0],\r\n diesel: [0, 0],\r\n electric: [0, 0],\r\n gas: [0, 0],\r\n hydrogen: [0, 0],\r\n hybrid: [0, 0],\r\n other: [0, 0],\r\n lowWeightClass: [0, 0],\r\n mediumWeightClass: [0, 0],\r\n highWeightClass: [0, 0],\r\n };\r\n\r\n for (const counter of counters) {\r\n for (const key of Object.keys(counter)) {\r\n filterRanges[key][0] = Math.min(\r\n filterRanges[key][0],\r\n counter[key]\r\n );\r\n filterRanges[key][1] = Math.max(\r\n filterRanges[key][1],\r\n counter[key]\r\n );\r\n }\r\n }\r\n\r\n for (const key of Object.keys(filterRanges)) {\r\n if (filterRanges[key][0] === 1 << 30 || filterRanges[key][0] === filterRanges[key][1]) {\r\n filterRanges[key] = [0, 1];\r\n }\r\n\r\n positionDataFilter[key] = {\r\n ...positionDataFilter[key],\r\n active: filterRanges[key][0] !== 0 && filterRanges[key][1] !== 1,\r\n range: filterRanges[key],\r\n selected: [\r\n clamp(positionDataFilter[key].selected[0], filterRanges[key][0], filterRanges[key][1]),\r\n clamp(positionDataFilter[key].selected[1], filterRanges[key][0], filterRanges[key][1]),\r\n ],\r\n };\r\n }\r\n}\r\n\r\nfunction clamp(value: number, min: number, max: number): number {\r\n return Math.max(min, Math.min(value, max));\r\n}\r\n\r\nexport function categorizePositionDataFilter(positionDataFilter: PositionDataFilter) {\r\n const result: { category: string, items: (keyof PositionDataFilter)[] }[] = [];\r\n if (!positionDataFilter) {\r\n return result;\r\n }\r\n\r\n let key: keyof PositionDataFilter;\r\n for (key in positionDataFilter) {\r\n const filter = positionDataFilter[key];\r\n const category = filter.category;\r\n if (!result.find(r => r.category === category)) {\r\n result.push({ category: category, items: <(keyof PositionDataFilter)[]>[] });\r\n }\r\n\r\n result.find(r => r.category === category).items.push(key);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function distinct(array: T[]): T[] {\r\n return [...new Set(array)];\r\n}\r\n\r\nexport function distinctBy(array: T[], key: keyof T): T[] {\r\n return array.filter((value, index, self) => self.findIndex(v => v[key] === value[key]) === index);\r\n}\r\n\r\nexport function distinctByFn(array: T[], pred: (val: T) => string): T[] {\r\n return array.filter((value, index, self) => self.findIndex(v => pred(v) === pred(value)) === index);\r\n}\r\n","import $ from 'jquery';\r\n\r\nexport type NobilModel = {\r\n Provider: string;\r\n Rights: string;\r\n apiver: string;\r\n chargerstations: NobilChargerStation[];\r\n};\r\n\r\nexport type NobilChargerStation = {\r\n csmd: NobilCsmd;\r\n attr: {\r\n st: Record;\r\n conn: Record;\r\n };\r\n};\r\n\r\nexport type NobilAttrs = Record;\r\n\r\nexport enum NobilAttrType {\r\n ChargeMode = '20',\r\n ConnectorType = '4',\r\n EnergyCarrier = '26',\r\n VehicleType = '17',\r\n}\r\n\r\nexport type NobilAttr = {\r\n attrtypeid: string;\r\n attrname: string;\r\n attrvalid: string;\r\n trans: string;\r\n attrval: string;\r\n};\r\n\r\nexport type NobilCsmd = {\r\n id: number;\r\n name: string;\r\n ocpidb_mapping_stasjon_id: string;\r\n Street: string;\r\n House_number: string;\r\n Zipcode: string;\r\n City: string;\r\n Municipality_ID: string;\r\n Municipality: string;\r\n County_ID: string;\r\n County: string;\r\n Description_of_location: null | string;\r\n Owned_by: string;\r\n Operator: string;\r\n Number_charging_points: number;\r\n Position: string;\r\n Image: string;\r\n Available_charging_points: number;\r\n User_comment: null | string;\r\n Contact_info: null | string;\r\n Created: string;\r\n Updated: string;\r\n Station_status: number;\r\n Land_code: string;\r\n International_id: string;\r\n};\r\n\r\nexport function loadNobilData(bounds: google.maps.LatLngBounds, callback: (data: any) => void) {\r\n return $.ajax({\r\n url: 'https://nobil.no/api/server/search.php',\r\n data: {\r\n apikey: '7a2e7a84ce9919fdfd661568be5cfdbd',\r\n apiversion: '3',\r\n action: 'search',\r\n type: 'rectangle',\r\n northeast: `(${bounds.getNorthEast().lat()}, ${bounds\r\n .getNorthEast()\r\n .lng()})`,\r\n southwest: `(${bounds.getSouthWest().lat()}, ${bounds\r\n .getSouthWest()\r\n .lng()})`,\r\n existingids: '',\r\n },\r\n success: (data) => {\r\n if ('error' in data) {\r\n return;\r\n }\r\n callback(data);\r\n },\r\n error: () => { },\r\n dataType: 'jsonp',\r\n });\r\n}\r\n","import { autoinject } from 'aurelia-dependency-injection';\r\nimport { GoogleMapsApi } from 'services/google-maps/google-maps-api';\r\nimport { DeckMapLayer, MapLayerData, MapLayers, createFilter } from './map-layer';\r\nimport { log } from 'services/logger/log';\r\nimport { NobilAttr, NobilAttrs, NobilModel, loadNobilData } from './nobil';\r\nimport $ from 'jquery';\r\nimport { computedFrom, observable } from 'aurelia-framework';\r\nimport { MapAggregationCounters } from 'models/map';\r\nimport { ApiService } from 'services/api/api-service';\r\nimport { endOfWeek, startOfWeek, subWeeks } from 'date-fns';\r\nimport { DataFilter, PositionDataFilter, categorizePositionDataFilter, countersTooltip, createDataFilter, defaultPositionDataFilter, distinct, distinctBy, distinctByFn, generateColor, generateColorRange, updatePositionDataFilterRanges } from './map-utils';\r\nimport { Abortable } from 'lib/abortable';\r\nimport './vd-map.scss';\r\nimport { BindingSignaler } from 'aurelia-templating-resources';\r\nimport { cellToLatLng, h3IndexToSplitLong, latLngToCell } from 'h3-js';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\nconst INITIAL_VIEW_STATE = {\r\n latitude: 59.24794819375307,\r\n longitude: 10.259915969375003,\r\n zoom: 15,\r\n};\r\n\r\ntype PositionData = {\r\n position: [longitude: number, latitude: number];\r\n color: [r: number, g: number, b: number];\r\n radius: number;\r\n counters: MapAggregationCounters;\r\n};\r\n\r\ntype ChargingStationData = {\r\n name: string;\r\n positionHash: string;\r\n position: [longitude: number, latitude: number];\r\n ids: number[];\r\n chargingPoints: number;\r\n connections: ChargingStationConnection[];\r\n};\r\n\r\ntype ChargingStationConnection = {\r\n connectorType: NobilAttr;\r\n vehicleType: NobilAttr;\r\n chargeMode: NobilAttr;\r\n energyCarrier: NobilAttr;\r\n};\r\n\r\ntype ChargingStationFilter = {\r\n connectorType: {\r\n allSelected: boolean;\r\n options: (NobilAttr & { selected: boolean })[];\r\n };\r\n vehicleType: {\r\n allSelected: boolean;\r\n options: (NobilAttr & { selected: boolean })[];\r\n };\r\n chargeMode: {\r\n allSelected: boolean;\r\n options: (NobilAttr & { selected: boolean })[];\r\n };\r\n energyCarrier: {\r\n allSelected: boolean;\r\n options: (NobilAttr & { selected: boolean })[];\r\n };\r\n};\r\n\r\n@autoinject\r\nexport class VdMap {\r\n public filterOpen: boolean = true;\r\n\r\n private googleMap: google.maps.Map;\r\n private prevBounds: google.maps.LatLngBounds;\r\n private prevZoom: number;\r\n\r\n private isLoadingPositionData: boolean;\r\n private isLoadingChargerStationData: boolean;\r\n @computedFrom('isLoadingPositionData', 'isLoadingChargerStationData')\r\n public get isLoading() {\r\n return this.isLoadingPositionData || this.isLoadingChargerStationData;\r\n }\r\n\r\n private positionDataFetch: Abortable = new Abortable();\r\n private positionData: MapLayerData = new MapLayerData();\r\n private positionLayer: MapLayers;\r\n public positionDataFilter: PositionDataFilter = defaultPositionDataFilter();\r\n public positionDataFilters: { category: string, items: (keyof PositionDataFilter)[] }[] = categorizePositionDataFilter(this.positionDataFilter);\r\n\r\n // jquery xhr request object\r\n private chargerStationDataFetch: any;\r\n private chargerStationData: MapLayerData =\r\n new MapLayerData();\r\n private chargerStationLayer: MapLayers;\r\n private chargerStationCache: Map = new Map();\r\n public anyChargingStationFilterActive: boolean;\r\n public chargerStationFilterOptions: ChargingStationFilter = {\r\n connectorType: { options: [], allSelected: true },\r\n vehicleType: { options: [], allSelected: true },\r\n chargeMode: { options: [], allSelected: true },\r\n energyCarrier: { options: [], allSelected: true },\r\n };\r\n public get chargerStationFilterOptionsKeys() {\r\n return Object.keys(this.chargerStationFilterOptions);\r\n }\r\n\r\n @observable\r\n public fromDate: Date = subWeeks(startOfWeek(new Date(), { weekStartsOn: 1 }), 1);\r\n @observable\r\n public toDate: Date = subWeeks(endOfWeek(new Date(), { weekStartsOn: 1 }), 1);\r\n public maxDate = subWeeks(endOfWeek(new Date(), { weekStartsOn: 1 }), 1);\r\n\r\n @observable\r\n public showPositionsLayer: boolean = true;\r\n @observable\r\n public showChargerStationsLayer: boolean = true;\r\n\r\n constructor(\r\n private googleMapsApi: GoogleMapsApi,\r\n private apiService: ApiService,\r\n private bindingSignaler: BindingSignaler,\r\n private translator: I18N\r\n ) { }\r\n\r\n public async attached() {\r\n await this.googleMapsApi.load();\r\n\r\n const mapOpts: google.maps.MapOptions = {\r\n mapId: 'f840a9d786b69ed',\r\n isFractionalZoomEnabled: false,\r\n center: {\r\n lat: INITIAL_VIEW_STATE.latitude,\r\n lng: INITIAL_VIEW_STATE.longitude,\r\n },\r\n zoom: INITIAL_VIEW_STATE.zoom,\r\n gestureHandling: 'cooperative',\r\n controlSize: 20,\r\n fullscreenControl: false,\r\n zoomControl: false,\r\n mapTypeControl: false,\r\n streetViewControl: false,\r\n clickableIcons: false,\r\n mapTypeId: google.maps.MapTypeId.ROADMAP,\r\n };\r\n\r\n this.googleMap = this.googleMapsApi.map(\r\n document.getElementById('map-container'),\r\n mapOpts\r\n );\r\n\r\n this.positionLayer = new MapLayers(this.googleMap, this.positionData);\r\n this.positionLayer.setFilter(\r\n createFilter(\r\n Object.values(this.positionDataFilter).map(f => f.selected),\r\n (d) => {\r\n return Object.values(d.counters);\r\n }\r\n )\r\n );\r\n\r\n\r\n this.positionLayer.addScatterplotLayer(\r\n 'points',\r\n {\r\n getPosition: (d) => d.position,\r\n getFillColor: (d) => d.color,\r\n getRadius: (d) => d.radius,\r\n radiusMinPixels: 4,\r\n radiusMaxPixels: 24,\r\n pickable: true,\r\n visible: true,\r\n autoHighlight: true,\r\n },\r\n {\r\n getTooltip: (d) => countersTooltip(d.counters),\r\n minZoom: 13,\r\n maxZoom: 100,\r\n }\r\n );\r\n\r\n function aggregatedLayerTooltip(obj): string {\r\n const acc = (obj.points).reduce(\r\n (acc, p) => {\r\n for (const key of Object.keys(p.source.counters)) {\r\n acc[key] += p.source.counters[key];\r\n }\r\n return acc;\r\n },\r\n {\r\n total: 0,\r\n unique: 0,\r\n vehicle: 0,\r\n machine: 0,\r\n truck: 0,\r\n car: 0,\r\n van: 0,\r\n gasoline: 0,\r\n diesel: 0,\r\n electric: 0,\r\n gas: 0,\r\n hydrogen: 0,\r\n hybrid: 0,\r\n other: 0,\r\n lowWeightClass: 0,\r\n mediumWeightClass: 0,\r\n highWeightClass: 0,\r\n }\r\n );\r\n return countersTooltip(acc);\r\n }\r\n\r\n this.positionLayer.addHexagonLayer(\r\n 'hex',\r\n {\r\n extruded: false,\r\n getPosition: (d: PositionData) => d.position,\r\n getColorWeight: (d: PositionData) => Math.min(d.counters.total, 30),\r\n colorRange: generateColorRange(\r\n 32,\r\n [0, 100, 100],\r\n [0xf1, 0xc4, 0x00]\r\n ),\r\n opacity: 0.5,\r\n radius: 400,\r\n pickable: true,\r\n visible: true,\r\n autoHighlight: true,\r\n onClick: (info) => {\r\n const bounds = new google.maps.LatLngBounds({\r\n lat: info.coordinate[1],\r\n lng: info.coordinate[0],\r\n });\r\n this.googleMap.fitBounds(bounds);\r\n this.googleMap.setZoom(this.prevZoom + 1);\r\n return true;\r\n },\r\n },\r\n {\r\n getTooltip: aggregatedLayerTooltip,\r\n minZoom: 7,\r\n maxZoom: 12,\r\n }\r\n );\r\n\r\n this.positionLayer.addHeatmapLayer(\r\n 'heatmap',\r\n {\r\n getPosition: (d) => d.position,\r\n getWeight: (d) => d.counters.total,\r\n colorRange: generateColorRange(\r\n 32,\r\n [0, 100, 100],\r\n [0xf1, 0xc4, 0x00]\r\n ),\r\n radiusPixels: 50,\r\n intensity: 1,\r\n visible: true,\r\n pickable: false,\r\n opacity: 0.5,\r\n },\r\n {\r\n getTooltip: aggregatedLayerTooltip,\r\n minZoom: 0,\r\n maxZoom: 6,\r\n }\r\n );\r\n\r\n this.chargerStationLayer = new MapLayers(\r\n this.googleMap,\r\n this.chargerStationData\r\n );\r\n\r\n this.chargerStationLayer.addIconLayer(\r\n 'charging-stations',\r\n {\r\n getPosition: (d) => d.position,\r\n getIcon: () => ({\r\n url: '/images/icons/charging_station.png',\r\n width: 64,\r\n height: 64,\r\n }),\r\n getSize: 24,\r\n pickable: true,\r\n visible: true,\r\n autoHighlight: true,\r\n },\r\n {\r\n getTooltip: (d: ChargingStationData) => {\r\n let result = `Energistasjon

${d.name}

`;\r\n\r\n const connectorTypes = distinct(d.connections.filter(c => c.connectorType).map(c => this.translator.tr('nobil.attr.' + c.connectorType.attrtypeid + '.' + c.connectorType.attrvalid))).join(', ');\r\n if (connectorTypes?.length > 0) {\r\n result += `

Ladetyper: ${connectorTypes}

`;\r\n }\r\n const chargeModes = distinct(d.connections.filter(c => c.chargeMode).map(c => this.translator.tr('nobil.attr.' + c.chargeMode.attrtypeid + '.' + c.chargeMode.attrvalid))).join(', ');\r\n if (chargeModes?.length > 0) {\r\n result += `

Lademoduser: ${chargeModes}

`;\r\n }\r\n\r\n result += `\r\n

Energitype: ${distinct(d.connections.filter(c => c.energyCarrier).map(c => this.translator.tr('nobil.attr.' + c.energyCarrier.attrtypeid + '.' + c.energyCarrier.attrvalid))).join(', ')}

\r\n

Kjøretøystype: ${distinct(d.connections.filter(c => c.vehicleType).map(c => this.translator.tr('nobil.attr.' + c.vehicleType.attrtypeid + '.' + c.vehicleType.attrvalid))).join(', ')}

\r\n `;\r\n\r\n result += '
Data hentet fra NOBIL.no';\r\n return result;\r\n },\r\n minZoom: 13,\r\n maxZoom: 100,\r\n }\r\n );\r\n\r\n this.prevBounds = this.googleMap.getBounds();\r\n this.prevZoom = this.googleMap.getZoom();\r\n this.googleMap.addListener('idle', () => {\r\n if (this.prevBounds !== this.googleMap.getBounds()) {\r\n this.prevBounds = this.googleMap.getBounds();\r\n if (this.prevBounds) {\r\n this.loadChargerStationData();\r\n this.loadPositionData();\r\n }\r\n }\r\n\r\n if (this.prevZoom !== this.googleMap.getZoom()) {\r\n this.prevZoom = this.googleMap.getZoom();\r\n\r\n const hexLayer = this.positionLayer.getLayer('hex') as DeckMapLayer;\r\n hexLayer.updateProps({\r\n radius: 200 / Math.pow(2, this.prevZoom - 12),\r\n });\r\n }\r\n });\r\n }\r\n\r\n private async loadPositionData() {\r\n if (!this.prevBounds) {\r\n return;\r\n }\r\n\r\n if (this.positionDataFetch.isActive) {\r\n this.positionDataFetch.abort();\r\n }\r\n this.isLoadingPositionData = true;\r\n\r\n const bounds = {\r\n swLat: this.prevBounds.getSouthWest().lat(),\r\n swLng: this.prevBounds.getSouthWest().lng(),\r\n neLat: this.prevBounds.getNorthEast().lat(),\r\n neLng: this.prevBounds.getNorthEast().lng(),\r\n };\r\n\r\n const metersPerPx = 156543.03392 / Math.pow(2, this.googleMap.getZoom());\r\n const positionDataRaw = await this.apiService.getMapAggregatedPositions(\r\n Math.floor(metersPerPx * 5), bounds, this.fromDate, this.toDate, this.positionDataFetch.signal\r\n ).catch((e) => {\r\n if (e === 'aborted by user') {\r\n return;\r\n }\r\n this.isLoadingPositionData = false;\r\n });\r\n if (!positionDataRaw) {\r\n return;\r\n }\r\n\r\n this.isLoadingPositionData = false;\r\n const positionData: PositionData[] = positionDataRaw.features.map(\r\n (f) =>\r\n {\r\n position: [\r\n f.geometry.coordinates[0],\r\n f.geometry.coordinates[1],\r\n ],\r\n color: generateColor(\r\n (Math.max(0, Math.min(50, f.properties.counters.total)) / 50),\r\n [0, 100, 100],\r\n [0xf1, 0xc4, 0x00]\r\n ),\r\n radius: Math.min(f.properties.counters.unique * 5 + 2, 50),\r\n counters: f.properties.counters,\r\n }\r\n );\r\n\r\n updatePositionDataFilterRanges(this.positionDataFilter, positionData.map(d => d.counters));\r\n\r\n this.positionData.setData(positionData);\r\n this.positionLayer.updateFilter(Object.values(this.positionDataFilter).map(f => f.selected));\r\n this.positionLayer.update();\r\n\r\n this.bindingSignaler.signal('positionDataFilter');\r\n }\r\n\r\n private async loadChargerStationData() {\r\n const bounds = this.googleMap.getBounds();\r\n if (!bounds) {\r\n return;\r\n }\r\n if (this.googleMap.getZoom() < 13) {\r\n return;\r\n }\r\n\r\n this.chargerStationDataFetch?.abort();\r\n this.isLoadingChargerStationData = true;\r\n\r\n const handleResponse = (data: NobilModel) => {\r\n for (const cs of data.chargerstations) {\r\n const connections: ChargingStationConnection[] = [];\r\n\r\n for (const conn of Object.values(cs.attr.conn)) {\r\n if (conn['20'] && !this.chargerStationFilterOptions.chargeMode.options.some(c => c.attrvalid === conn['20'].attrvalid)) {\r\n this.chargerStationFilterOptions.chargeMode.options.push({ ...conn['20'], selected: true });\r\n }\r\n if (conn['4'] && !this.chargerStationFilterOptions.connectorType.options.some(c => c.attrvalid === conn['4'].attrvalid)) {\r\n this.chargerStationFilterOptions.connectorType.options.push({ ...conn['4'], selected: true });\r\n }\r\n if (conn['26'] && !this.chargerStationFilterOptions.energyCarrier.options.some(c => c.attrvalid === conn['26'].attrvalid)) {\r\n this.chargerStationFilterOptions.energyCarrier.options.push({ ...conn['26'], selected: true });\r\n }\r\n if (conn['17'] && !this.chargerStationFilterOptions.vehicleType.options.some(c => c.attrvalid === conn['17'].attrvalid)) {\r\n this.chargerStationFilterOptions.vehicleType.options.push({ ...conn['17'], selected: true });\r\n }\r\n\r\n connections.push({\r\n chargeMode: conn['20'],\r\n connectorType: conn['4'],\r\n energyCarrier: conn['26'],\r\n vehicleType: conn['17'],\r\n });\r\n }\r\n\r\n if (this.chargerStationCache.has(cs.csmd.Position)) {\r\n const curr = this.chargerStationCache.get(cs.csmd.Position);\r\n if (!curr.ids.includes(cs.csmd.id)) {\r\n curr.ids.push(cs.csmd.id);\r\n curr.chargingPoints += cs.csmd.Available_charging_points;\r\n curr.connections.push(...connections);\r\n }\r\n continue;\r\n }\r\n\r\n this.chargerStationCache.set(cs.csmd.Position, <\r\n ChargingStationData\r\n >{\r\n positionHash: cs.csmd.Position,\r\n name: cs.csmd.name,\r\n ids: [cs.csmd.id],\r\n chargingPoints: cs.csmd.Available_charging_points,\r\n connections: connections,\r\n position: cs.csmd.Position.slice(\r\n 1,\r\n cs.csmd.Position.length - 2\r\n )\r\n .split(',')\r\n .map((e) => parseFloat(e))\r\n .reverse(),\r\n });\r\n }\r\n\r\n this.chargerStationData.setData(\r\n Array.from(this.chargerStationCache.values())\r\n );\r\n this.filterChargingStations();\r\n };\r\n\r\n try {\r\n this.chargerStationDataFetch = loadNobilData(bounds, handleResponse).always(() => {\r\n this.isLoadingChargerStationData = false;\r\n });\r\n } catch (e) { log.error(e); }\r\n }\r\n\r\n public positionDataFilterChanged(\r\n min: number,\r\n max: number,\r\n key: keyof PositionDataFilter\r\n ) {\r\n this.positionDataFilter[key].selected = [Number(min), Number(max)];\r\n\r\n this.positionLayer.updateFilter(Object.values(this.positionDataFilter).map(f => f.selected));\r\n this.positionLayer.update();\r\n this.bindingSignaler.signal('positionDataFilter');\r\n }\r\n\r\n private showPositionsLayerChanged() {\r\n if (!this.showPositionsLayer) {\r\n this.positionLayer?.hide();\r\n } else {\r\n this.positionLayer?.show();\r\n }\r\n }\r\n\r\n private showChargerStationsLayerChanged() {\r\n if (!this.showChargerStationsLayer) {\r\n this.chargerStationLayer?.hide();\r\n } else {\r\n this.chargerStationLayer?.show();\r\n }\r\n }\r\n\r\n private fromDateChanged() {\r\n this.loadPositionData();\r\n }\r\n\r\n private toDateChanged() {\r\n this.loadPositionData();\r\n }\r\n\r\n public filterChanged(filter: keyof PositionDataFilter): boolean {\r\n if (!this.positionDataFilter || !(filter in this.positionDataFilter)) {\r\n return;\r\n }\r\n\r\n const filterItem = this.positionDataFilter[filter];\r\n const changed = filterItem.range[0] !== filterItem.selected[0] ||\r\n filterItem.range[1] !== filterItem.selected[1];\r\n return changed;\r\n }\r\n\r\n public filterCategoryChanged(category: string): boolean {\r\n return this.positionDataFilters.find(f => f.category === category)?.items.some(i => this.filterChanged(i));\r\n }\r\n\r\n public onChargingStationFilterChanged(attr: keyof ChargingStationFilter, selected: { rowIndex: number }) {\r\n this.anyChargingStationFilterActive = this.chargerStationFilterOptions.chargeMode.options.some(c => !c.selected) ||\r\n this.chargerStationFilterOptions.connectorType.options.some(c => !c.selected) ||\r\n this.chargerStationFilterOptions.energyCarrier.options.some(c => !c.selected) ||\r\n this.chargerStationFilterOptions.vehicleType.options.some(c => !c.selected);\r\n this.filterChargingStations();\r\n }\r\n\r\n public filterChargingStations() {\r\n this.chargerStationData.applyDataFilter((d) => {\r\n return this.chargerStationFilterOptions.connectorType.options.some(c => c.selected && d.connections.some(conn => !conn.connectorType || conn.connectorType.attrvalid === c.attrvalid)) &&\r\n this.chargerStationFilterOptions.vehicleType.options.some(c => c.selected && d.connections.some(conn => !conn.vehicleType || conn.vehicleType.attrvalid === c.attrvalid)) &&\r\n this.chargerStationFilterOptions.chargeMode.options.some(c => c.selected && d.connections.some(conn => !conn.chargeMode || conn.chargeMode.attrvalid === c.attrvalid)) &&\r\n this.chargerStationFilterOptions.energyCarrier.options.some(c => c.selected && d.connections.some(conn => !conn.energyCarrier || conn.energyCarrier.attrvalid === c.attrvalid));\r\n });\r\n this.chargerStationLayer.update();\r\n this.bindingSignaler.signal('chargerStationFilterOptions');\r\n }\r\n}\r\n","import { observable } from 'aurelia-binding';\r\nimport { autoinject } from 'aurelia-dependency-injection';\r\nimport { BindingSignaler } from 'aurelia-templating-resources';\r\nimport { bindable } from 'aurelia-templating';\r\nimport './vd-slider-range.scss';\r\n\r\n@autoinject\r\nexport class VdSliderRange {\r\n @bindable\r\n public range: [min: number, max: number] = [0, 1];\r\n @bindable\r\n public step: number = 1;\r\n\r\n @bindable\r\n public startValue: number = 0;\r\n @bindable\r\n public endValue: number = 1;\r\n\r\n @observable\r\n public start: number = 0;\r\n @observable\r\n public end: number = 1;\r\n\r\n public min: number = 0;\r\n public max: number = 1;\r\n\r\n @bindable\r\n public changed: Function;\r\n\r\n @bindable\r\n public mode: 'none' | 'some' | 'range' = 'range';\r\n @observable public noneSelected: boolean = false;\r\n @observable public someSelected: boolean = false;\r\n @observable public rangeSelected: boolean = true;\r\n\r\n // slider from aurelia mdc somehow cant handle changing min/max without breakout\r\n // because of a requirement that min has to be less than max\r\n // the entire thing crashes if this happens and there is no way to actually force\r\n // them to be updated in the correct order\r\n public updating: boolean = false;\r\n\r\n public isAttached: boolean = false;\r\n\r\n constructor(private bindingSignaler: BindingSignaler) { }\r\n\r\n public attached() {\r\n setTimeout(() => {\r\n this.isAttached = true;\r\n }, 0);\r\n }\r\n\r\n private startChanged(newValue: number, oldValue: number) {\r\n if (newValue === oldValue) {\r\n return;\r\n }\r\n\r\n this.modeChanged();\r\n }\r\n\r\n private endChanged(newValue: number, oldValue: number) {\r\n if (newValue === oldValue) {\r\n return;\r\n }\r\n\r\n this.modeChanged();\r\n }\r\n\r\n private rangeChanged() {\r\n this.updating = true;\r\n\r\n setTimeout(() => {\r\n this.min = this.range[0];\r\n this.max = this.range[1];\r\n this.start = Math.max(this.min, Math.min(this.start, this.max));\r\n this.end = Math.max(this.min, Math.min(this.end, this.max));\r\n this.updating = false;\r\n });\r\n }\r\n\r\n private startValueChanged(newValue: number) {\r\n if (this.startValue !== this.start) {\r\n setTimeout(() => {\r\n this.start = newValue;\r\n });\r\n }\r\n }\r\n\r\n private endValueChanged(newValue: number) {\r\n if (newValue !== this.end) {\r\n setTimeout(() => {\r\n this.end = newValue;\r\n });\r\n }\r\n }\r\n\r\n private modeChanged() {\r\n setTimeout(() => {\r\n if (this.mode === 'none') {\r\n if (this.changed) {\r\n this.changed({ start: 0, end: 0 });\r\n }\r\n }\r\n if (this.mode === 'some') {\r\n if (this.changed) {\r\n this.changed({ start: 1, end: this.max });\r\n }\r\n }\r\n if (this.mode === 'range') {\r\n if (this.changed) {\r\n this.changed({ start: this.start, end: this.end });\r\n }\r\n }\r\n }, 0);\r\n }\r\n\r\n private noneSelectedChanged() {\r\n if (this.noneSelected) {\r\n this.mode = 'none';\r\n }\r\n }\r\n\r\n private someSelectedChanged() {\r\n if (this.someSelected) {\r\n this.mode = 'some';\r\n }\r\n }\r\n\r\n private rangeSelectedChanged() {\r\n if (this.rangeSelected) {\r\n this.mode = 'range';\r\n }\r\n }\r\n}\r\n","import { LogManager } from 'aurelia-framework';\r\nimport * as environment from '~/../../config/environment.json';\r\n\r\nexport interface IEndpoints {\r\n api: string;\r\n auth: string;\r\n fms: string;\r\n}\r\n\r\nexport class AppSettings {\r\n public static readonly environment: string = environment.environment;\r\n public static readonly isLocalDevevelopment: boolean =\r\n environment.environment == 'local';\r\n public static readonly isDevevelopment: boolean =\r\n environment.environment == 'development';\r\n public static readonly isStaging: boolean =\r\n environment.environment == 'staging';\r\n public static readonly isProduction: boolean =\r\n environment.environment == 'production';\r\n public static readonly appLogLevel: number =\r\n LogManager.logLevel[environment.logging.appLogLevel];\r\n public static readonly appInsightsLogLevel: number =\r\n LogManager.logLevel[environment.logging.appInsightsLogLevel];\r\n\r\n public static readonly endpoints: IEndpoints = {\r\n api: environment.endpoints.api,\r\n auth: environment.endpoints.auth,\r\n fms: environment.endpoints.fms,\r\n };\r\n\r\n public static readonly applicationInsightsKey: string =\r\n environment.applicationInsightsKey;\r\n}\r\n\r\n//Output some settings\r\n/* eslint-disable */\r\nconsole.info('Current environment: ', AppSettings.environment);\r\nconsole.info('Current app log level: ', environment.logging.appLogLevel);\r\nconsole.info(\r\n 'Current app insights log level: ',\r\n environment.logging.appInsightsLogLevel\r\n);\r\n/* eslint-enable */\r\n","import { AppInsights } from 'applicationinsights-js';\r\nimport { LogManager } from 'aurelia-framework';\r\nimport { AppSettings } from 'config/appsettings';\r\n\r\nexport const configureApplicationInsights = () => {\r\n if (AppSettings.appInsightsLogLevel != LogManager.logLevel.none) {\r\n let appInsightsKey: string = AppSettings.applicationInsightsKey;\r\n AppInsights.downloadAndSetup({\r\n instrumentationKey: appInsightsKey\r\n });\r\n }\r\n};\r\n","import { Aurelia } from 'aurelia-framework';\r\nimport { BaseConfig } from 'aurelia-authentication';\r\nimport { PLATFORM } from 'aurelia-pal';\r\nimport { AppSettings } from 'config/appsettings';\r\n\r\nexport const authConfig = {\r\n baseUrl: AppSettings.endpoints.auth,\r\n configureEndpoints: ['auth', 'api'],\r\n loginUrl: 'connect/token',\r\n httpInterceptor: true,\r\n authHeader: 'Authorization',\r\n authTokenType: 'Bearer',\r\n accessTokenProp: 'access_token',\r\n useRefreshToken: false,\r\n loginRedirect: '/',\r\n logoutRedirect: '/'\r\n};\r\n\r\nexport const configureAuth = (aurelia: Aurelia) => {\r\n aurelia.use.plugin(PLATFORM.moduleName('aurelia-authentication'), (baseConfig: BaseConfig) => {\r\n baseConfig.configure(authConfig);\r\n });\r\n};\r\n","export class Abortable {\r\n private abortController: AbortController;\r\n\r\n public get signal(): { signal: AbortSignal } {\r\n this.abortController ??= new AbortController();\r\n return {\r\n signal: this.abortController.signal\r\n };\r\n }\r\n\r\n public get isActive(): boolean {\r\n return this.abortController !== undefined && this.abortController !== null;\r\n }\r\n\r\n public abort() {\r\n try {\r\n this.abortController?.abort('aborted by user');\r\n this.abortController = null;\r\n } catch (e) { }\r\n }\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { StringHelper } from './stringHelper';\r\n\r\nexport class CalendarHelper {\r\n\r\n public static getMonthNames(i18n: I18N, capitalize: boolean = false): Array {\r\n let monthNames: Array =\r\n [\r\n i18n.tr('months.january'),\r\n i18n.tr('months.february'),\r\n i18n.tr('months.march'),\r\n i18n.tr('months.april'),\r\n i18n.tr('months.may'),\r\n i18n.tr('months.june'),\r\n i18n.tr('months.july'),\r\n i18n.tr('months.august'),\r\n i18n.tr('months.september'),\r\n i18n.tr('months.october'),\r\n i18n.tr('months.november'),\r\n i18n.tr('months.december')\r\n ];\r\n\r\n if (capitalize) {\r\n monthNames = StringHelper.capitalizeArray(monthNames);\r\n }\r\n\r\n return monthNames;\r\n }\r\n\r\n public static getMonthNamesShort(i18n: I18N, capitalize: boolean = false): Array {\r\n let monthNames: Array =\r\n [\r\n i18n.tr('monthsShort.jan'),\r\n i18n.tr('monthsShort.feb'),\r\n i18n.tr('monthsShort.mar'),\r\n i18n.tr('monthsShort.apr'),\r\n i18n.tr('monthsShort.may'),\r\n i18n.tr('monthsShort.jun'),\r\n i18n.tr('monthsShort.jul'),\r\n i18n.tr('monthsShort.aug'),\r\n i18n.tr('monthsShort.sep'),\r\n i18n.tr('monthsShort.oct'),\r\n i18n.tr('monthsShort.nov'),\r\n i18n.tr('monthsShort.dec')\r\n ];\r\n\r\n if (capitalize) {\r\n monthNames = StringHelper.capitalizeArray(monthNames);\r\n }\r\n return monthNames;\r\n }\r\n\r\n public static getWeekNames(i18n: I18N, capitalize: boolean = false): Array {\r\n let weekNames: Array =\r\n [\r\n i18n.tr('weekdays.monday'),\r\n i18n.tr('weekdays.tuesday'),\r\n i18n.tr('weekdays.wednesday'),\r\n i18n.tr('weekdays.thursday'),\r\n i18n.tr('weekdays.friday'),\r\n i18n.tr('weekdays.saturday'),\r\n i18n.tr('weekdays.sunday')\r\n ];\r\n if (capitalize) {\r\n weekNames = StringHelper.capitalizeArray(weekNames);\r\n }\r\n return weekNames;\r\n }\r\n\r\n public static getWeekNamesShort(i18n: I18N, capitalize: boolean = false): Array {\r\n let weekNames: Array =\r\n [\r\n i18n.tr('weekdaysShort.mon'),\r\n i18n.tr('weekdaysShort.tue'),\r\n i18n.tr('weekdaysShort.wed'),\r\n i18n.tr('weekdaysShort.thu'),\r\n i18n.tr('weekdaysShort.fri'),\r\n i18n.tr('weekdaysShort.sat'),\r\n i18n.tr('weekdaysShort.sun')\r\n ];\r\n if (capitalize) {\r\n weekNames = StringHelper.capitalizeArray(weekNames);\r\n }\r\n return weekNames;\r\n }\r\n\r\n public static getCalendarTexts(i18n: I18N): any {\r\n let texts =\r\n {\r\n sameDay: i18n.tr('calendar.sameDay'),\r\n nextDay: i18n.tr('calendar.nextDay'),\r\n nextWeek: i18n.tr('calendar.nextWeek'),\r\n lastDay: i18n.tr('calendar.lastDay'),\r\n lastWeek: i18n.tr('calendar.lastWeek'),\r\n sameElse: i18n.tr('calendar.sameElse')\r\n };\r\n\r\n return texts;\r\n }\r\n\r\n public static getCalendarTextsRelative(i18n: I18N): any {\r\n let texts =\r\n {\r\n future: i18n.tr('relativeTime.future'),\r\n past: i18n.tr('relativeTime.past'),\r\n s: i18n.tr('relativeTime.s'),\r\n ss: i18n.tr('relativeTime.ss'),\r\n m: i18n.tr('relativeTime.m'),\r\n mm: i18n.tr('relativeTime.mm'),\r\n h: i18n.tr('relativeTime.h'),\r\n hh: i18n.tr('relativeTime.hh'),\r\n d: i18n.tr('relativeTime.d'),\r\n dd: i18n.tr('relativeTime.dd'),\r\n M: i18n.tr('relativeTime.M'),\r\n MM: i18n.tr('relativeTime.MM'),\r\n y: i18n.tr('relativeTime.y'),\r\n yy: i18n.tr('relativeTime.yy')\r\n };\r\n\r\n return texts;\r\n }\r\n}","export function getQueryString(params) {\r\n var result = Object.keys(params)\r\n .map((k) => {\r\n if (params[k] != null) {\r\n if (Array.isArray(params[k])) {\r\n return params[k]\r\n .map(\r\n (val) =>\r\n `${encodeURIComponent(k)}=${encodeURIComponent(\r\n val\r\n )}`\r\n )\r\n .join('&');\r\n }\r\n return `${encodeURIComponent(k)}=${encodeURIComponent(\r\n params[k]\r\n )}`;\r\n } else {\r\n return null;\r\n }\r\n })\r\n .filter((f) => f != null)\r\n .join('&');\r\n\r\n if (result) {\r\n return '?' + result;\r\n }\r\n\r\n return '';\r\n}\r\n","\r\nexport class StringHelper {\r\n public static capitalizeArray(items: Array): Array {\r\n for (let i: number = 0; i < items.length; i++) {\r\n items[i] = items[i].charAt(0).toUpperCase() + items[i].slice(1);\r\n }\r\n return items;\r\n }\r\n}","export class tools {\r\n public static extend(...args: any[]) {\r\n\r\n // Variables\r\n var extended = {};\r\n var deep = false;\r\n var i = 0;\r\n var length = arguments.length;\r\n\r\n // Check if a deep merge\r\n if ((Object).prototype.toString.call(arguments[0]) === '[object Boolean]') {\r\n deep = arguments[0];\r\n i++;\r\n }\r\n\r\n // Merge the object into the extended object\r\n var merge = function (obj) {\r\n for (var prop in obj) {\r\n if ((Object).prototype.hasOwnProperty.call(obj, prop)) {\r\n // If deep merge and property is an object, merge properties\r\n if (deep && (Object).prototype.toString.call(obj[prop]) === '[object Object]') {\r\n extended[prop] = this.extend(true, extended[prop], obj[prop]);\r\n } else {\r\n extended[prop] = obj[prop];\r\n }\r\n }\r\n }\r\n };\r\n\r\n // Loop through each object and conduct a merge\r\n for (; i < length; i++) {\r\n var obj = arguments[i];\r\n merge(obj);\r\n }\r\n\r\n return extended;\r\n\r\n }\r\n\r\n public static getWeekNumber(date: Date) {\r\n\r\n var dowOffset = 1;\r\n var newYear = new Date(date.getFullYear(), 0, 1);\r\n var day = newYear.getDay() - dowOffset; //the day of week the year begins on\r\n day = (day >= 0 ? day : day + 7);\r\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\r\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\r\n var weeknum;\r\n\r\n //if the year starts before the middle of a week\r\n if (day < 4) {\r\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\r\n if (weeknum > 52) {\r\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\r\n var nday = nYear.getDay() - dowOffset;\r\n nday = nday >= 0 ? nday : nday + 7;\r\n\r\n //if the next year starts before the middle of the week, it is week #1 of that year\r\n weeknum = nday < 4 ? 1 : 53;\r\n }\r\n }\r\n else {\r\n weeknum = Math.floor((daynum + day - 1) / 7);\r\n }\r\n return weeknum;\r\n\r\n }\r\n\r\n public static toUTC(date: Date): Date {\r\n\r\n if (typeof date === 'undefined' || date === null) {\r\n return null;\r\n }\r\n\r\n return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\r\n }\r\n\r\n public static toUTCString(date: Date): string {\r\n\r\n if (typeof date === 'undefined' || date === null) {\r\n return null;\r\n }\r\n\r\n if (typeof date === 'string') {\r\n return date;\r\n }\r\n\r\n return JSON.stringify(this.toUTC(date)).replace(new RegExp('\"', 'g'), '');\r\n }\r\n}","import { Aurelia } from 'aurelia-framework';\r\nimport { PLATFORM } from 'aurelia-pal';\r\nimport { configureAuth } from 'config/plugins/authentication';\r\nimport { AuthService } from 'aurelia-authentication';\r\nimport { LogManager } from 'aurelia-framework';\r\nimport * as Bluebird from 'bluebird';\r\nimport moment from 'moment';\r\nimport { Config } from 'aurelia-api';\r\nimport { CalendarHelper } from 'lib/calendarHelper';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { AppSettings } from 'config/appsettings';\r\nimport { AppLogAppender } from 'services/logger/app-log-appender';\r\nimport { configureApplicationInsights } from 'config/plugins/app-insights';\r\nimport { nb } from 'date-fns/locale';\r\n\r\nvar resBundle = require('i18next-resource-store-loader?include=\\\\.json$!./locales/index.js');\r\n\r\nBluebird.config({\r\n warnings: false,\r\n longStackTraces: false,\r\n});\r\n\r\nexport async function configure(aurelia: Aurelia) {\r\n //Logging\r\n configureApplicationInsights();\r\n LogManager.addAppender(new AppLogAppender());\r\n LogManager.setLevel(AppSettings.appLogLevel);\r\n\r\n if (!AppSettings.isProduction) {\r\n // eslint-disable-next-line no-console\r\n console.info('Development logging is enabled!');\r\n aurelia.use.developmentLogging();\r\n }\r\n\r\n aurelia.use.standardConfiguration();\r\n\r\n aurelia.use.plugin(PLATFORM.moduleName('aurelia-api'), (config: Config) => {\r\n config.registerEndpoint('auth', AppSettings.endpoints.auth);\r\n config.registerEndpoint('api', AppSettings.endpoints.api);\r\n config.registerEndpoint('fms', AppSettings.endpoints.fms);\r\n });\r\n //configureAuth(aurelia);\r\n\r\n aurelia.use.plugin(PLATFORM.moduleName('aurelia-i18n'), (i18n: I18N) => {\r\n var result = i18n.setup({\r\n resources: resBundle,\r\n lng: 'nb-NO',\r\n attributes: ['t'],\r\n fallbackLng: 'nb-NO',\r\n debug: false,\r\n });\r\n\r\n //Configure moment\r\n moment.locale('no', {\r\n months: CalendarHelper.getMonthNames(i18n),\r\n monthsShort: CalendarHelper.getMonthNamesShort(i18n),\r\n weekdays: CalendarHelper.getWeekNames(i18n),\r\n weekdaysShort: CalendarHelper.getWeekNamesShort(i18n),\r\n calendar: CalendarHelper.getCalendarTexts(i18n),\r\n relativeTime: CalendarHelper.getCalendarTextsRelative(i18n),\r\n });\r\n\r\n return result;\r\n });\r\n\r\n aurelia.use.feature(PLATFORM.moduleName('resources/index'));\r\n aurelia.use.plugin(PLATFORM.moduleName('aurelia-validation'));\r\n aurelia.use.plugin(PLATFORM.moduleName('aurelia-ui-virtualization'));\r\n\r\n aurelia.use.plugin(PLATFORM.moduleName('@aurelia-mdc-web/all'));\r\n\r\n //aurelia.use.globalResources(PLATFORM.moduleName(''));\r\n\r\n aurelia.use.plugin(PLATFORM.moduleName('aurelia-dialog'), (config: any) => {\r\n config.useDefaults();\r\n config.settings.lock = true;\r\n config.settings.centerHorizontalOnly = false;\r\n config.settings.startingZIndex = 5;\r\n config.settings.keyboard = true;\r\n });\r\n\r\n aurelia.use\r\n .feature(PLATFORM.moduleName('value-converters/index'))\r\n .globalResources(PLATFORM.moduleName('components/navbar/navbar'))\r\n .globalResources(\r\n PLATFORM.moduleName('components/main-header/main-header')\r\n )\r\n .globalResources(\r\n PLATFORM.moduleName('components/vd-charts/vd-charts/vd-charts')\r\n )\r\n .globalResources(\r\n PLATFORM.moduleName('components/vd-charts/vd-piechart/vd-piechart')\r\n )\r\n .globalResources(\r\n PLATFORM.moduleName('components/vd-slider-range/vd-slider-range')\r\n )\r\n .globalResources(\r\n PLATFORM.moduleName('components/vd-date-picker/vd-date-picker')\r\n );\r\n\r\n configureAuth(aurelia);\r\n\r\n await aurelia.start();\r\n\r\n let authService = aurelia.container.get(AuthService);\r\n\r\n aurelia.setRoot(PLATFORM.moduleName('routes/app/app'));\r\n}\r\n","export enum AvailableTypes {\r\n All,\r\n Vehicle,\r\n Machine,\r\n}\r\n","export enum PeriodAlternatives {\r\n Last30Days = 0,\r\n Yesterday = 1,\r\n LastYear = 2,\r\n YearToDate = 3\r\n}","import IAssetCounts from 'models/asset-counts';\r\nimport { AvailableTypes } from './available-types';\r\nimport IAggregatedKpis from './aggregated-kpis';\r\nimport IAggregatedTrends from './aggregated-trends';\r\nimport { VehicleCategories } from './vehicle-categories';\r\nimport { PeriodAlternatives } from './period-alternatives';\r\nimport { ApiService } from 'services/api/api-service';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\n\r\nexport interface INormalizedTrends {\r\n distance: number[];\r\n engineRunTimeHours: number[];\r\n averageFuelConsumptionPerHour: number[];\r\n averageFuelConsumptionPer10Km: number[];\r\n co2EmissionTotal: number[];\r\n fuelConsumptionTotal: number[];\r\n}\r\n\r\nexport default class SelectionData {\r\n public selectedType: AvailableTypes;\r\n public selectedVehicleCategory: VehicleCategories;\r\n public period: PeriodAlternatives;\r\n public from: Date;\r\n public to: Date;\r\n public assetCounts: IAssetCounts;\r\n public kpis: IAggregatedKpis;\r\n public environmentScore: number;\r\n public trends: IAggregatedTrends;\r\n public normalizedTrends: INormalizedTrends = {\r\n distance: [],\r\n engineRunTimeHours: [],\r\n averageFuelConsumptionPer10Km: [],\r\n averageFuelConsumptionPerHour: [],\r\n co2EmissionTotal: [],\r\n fuelConsumptionTotal: []\r\n };\r\n\r\n constructor(private apiService: ApiService, private eventAggregator: EventAggregator) {\r\n this.selectedType = AvailableTypes.All;\r\n this.selectedVehicleCategory = VehicleCategories.All;\r\n this.period = PeriodAlternatives.Last30Days;\r\n this.setPeriodLast30Days();\r\n }\r\n\r\n public async loadData() {\r\n this.selectedType = AvailableTypes.Vehicle;\r\n this.assetCounts = await this.apiService.getAssetCounts();\r\n await this.loadKpis();\r\n await this.loadTrends();\r\n this.calculateNormalizedTrends();\r\n\r\n this.eventAggregator.publish('data-updated', this);\r\n }\r\n\r\n private calculateNormalizedTrends() {\r\n if (this.selectedType === AvailableTypes.Vehicle) {\r\n this.normalizedTrends.distance = this.calculateNormalized(this.trends.distance);\r\n } else {\r\n this.normalizedTrends.engineRunTimeHours = this.calculateNormalized(this.trends.engineRunTimeHours);\r\n }\r\n\r\n if (this.selectedType === AvailableTypes.Vehicle) {\r\n this.normalizedTrends.averageFuelConsumptionPer10Km = this.calculateNormalized(this.trends.averageFuelConsumptionPer10Km);\r\n } else {\r\n this.normalizedTrends.averageFuelConsumptionPerHour = this.calculateNormalized(this.trends.averageFuelConsumptionPerHour);\r\n }\r\n this.normalizedTrends.co2EmissionTotal = this.calculateNormalized(this.trends.co2EmissionTotal);\r\n this.normalizedTrends.fuelConsumptionTotal = this.calculateNormalized(this.trends.fuelConsumptionTotal);\r\n }\r\n\r\n private calculateNormalized(values: Array): number[] {\r\n var valueCount = 0;\r\n var total = 0;\r\n for (let i = 0; i < values.length; i++) {\r\n if (values[i] === undefined || values[i] === null) {\r\n continue;\r\n }\r\n total += values[i];\r\n valueCount++;\r\n }\r\n var avg = total / valueCount;\r\n var normalized = [];\r\n\r\n for (let i = 0; i < values.length; i++) {\r\n if (values[i] === undefined || values[i] === null) {\r\n normalized.push(null);\r\n continue;\r\n };\r\n normalized.push(((values[i] / avg) * 100) - 100);\r\n }\r\n\r\n return normalized;\r\n }\r\n\r\n public async updateFilterSelection(category: VehicleCategories, period: PeriodAlternatives) {\r\n this.period = period;\r\n this.selectedVehicleCategory = category;\r\n switch (period) {\r\n case PeriodAlternatives.Last30Days:\r\n this.setPeriodLast30Days();\r\n break;\r\n case PeriodAlternatives.Yesterday:\r\n this.setPeriodYesterday();\r\n break;\r\n case PeriodAlternatives.LastYear:\r\n this.setPeriodLastYear();\r\n break;\r\n case PeriodAlternatives.YearToDate:\r\n this.setPeriodYearToDate();\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n await this.loadKpis();\r\n this.eventAggregator.publish('data-updated', this);\r\n }\r\n\r\n public async setSelectedType(type: AvailableTypes) {\r\n this.selectedType = type;\r\n await this.loadKpis();\r\n await this.loadTrends();\r\n\r\n this.eventAggregator.publish('data-updated', this);\r\n }\r\n\r\n private async loadTrends() {\r\n var trendStart = new Date();\r\n trendStart.setFullYear(trendStart.getFullYear() - 1);\r\n trendStart.setMonth(trendStart.getMonth() - 1);\r\n trendStart.setDate(1);\r\n trendStart.setUTCHours(0, 0, 0, 0);\r\n\r\n var trendEnd = new Date();\r\n trendEnd.setDate(0);\r\n trendEnd.setUTCHours(23, 59, 99, 99);\r\n\r\n this.trends = await this.apiService.getTrends(trendStart, trendEnd, this.selectedType, this.selectedVehicleCategory);\r\n this.calculateNormalizedTrends();\r\n }\r\n\r\n private async loadKpis() {\r\n this.kpis = await this.apiService.getKpis(this.from, this.to, this.selectedType, this.selectedVehicleCategory);\r\n this.environmentScore = Math.round((this.kpis.driverScore + this.kpis.planningScore + this.kpis.idlingScore) / 3);\r\n }\r\n\r\n private setPeriodLast30Days() {\r\n this.from = new Date();\r\n this.to = new Date();\r\n\r\n this.from.setFullYear(this.from.getFullYear(), this.from.getMonth(), this.from.getDate() - 30);\r\n this.from.setHours(0, 0, 0, 0);\r\n this.to.setFullYear(this.to.getFullYear(), this.to.getMonth(), this.to.getDate());\r\n this.to.setHours(0, 0, 0, 0);\r\n }\r\n\r\n private setPeriodYesterday() {\r\n this.from = new Date();\r\n this.to = new Date();\r\n\r\n this.from.setFullYear(this.from.getFullYear(), this.from.getMonth(), this.from.getDate() - 1);\r\n this.from.setHours(0, 0, 0, 0);\r\n this.to.setFullYear(this.to.getFullYear(), this.to.getMonth(), this.to.getDate());\r\n this.to.setHours(0, 0, 0, 0);\r\n }\r\n\r\n private setPeriodLastYear() {\r\n this.from = new Date();\r\n this.to = new Date();\r\n\r\n this.from.setFullYear(this.from.getFullYear() - 1, 0, 1);\r\n this.from.setHours(0, 0, 0, 0);\r\n this.to.setFullYear(this.to.getFullYear(), 0, 0);\r\n this.to.setHours(0, 0, 0, 0);\r\n }\r\n\r\n private setPeriodYearToDate() {\r\n this.from = new Date();\r\n this.to = new Date();\r\n\r\n this.from.setFullYear(this.from.getFullYear(), 0, 1);\r\n this.from.setHours(0, 0, 0, 0);\r\n this.to.setFullYear(this.to.getFullYear(), this.to.getMonth(), this.to.getDate());\r\n this.to.setHours(0, 0, 0, 0);\r\n }\r\n}\r\n","export enum VehicleCategories {\r\n All = 0,\r\n Cars = 1,\r\n Vans = 2,\r\n Trucks = 3\r\n}","import { FrameworkConfiguration, PLATFORM } from 'aurelia-framework';\r\n\r\nexport function configure(config: FrameworkConfiguration): void {\r\n config.globalResources([\r\n PLATFORM.moduleName('./value-converters/numeric'),\r\n PLATFORM.moduleName('./value-converters/number-format')\r\n ]);\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject\r\nexport class NumberFormatValueConverter {\r\n constructor(private i18n: I18N) {\r\n\r\n }\r\n\r\n public toView(value: any, min: number = 0) {\r\n if (typeof value === 'undefined' || value === '' || value === null || value === '-' || isNaN(value)) {\r\n return min;\r\n }\r\n\r\n return this.i18n.nf(undefined, 'nb-NO').format(parseFloat(value));\r\n }\r\n}","export class NumericValueConverter {\r\n public toView(value: any, min: number = 0) {\r\n if (typeof value === 'undefined' || value === '' || value === null || value === '-' || isNaN(value)) {\r\n return min;\r\n }\r\n\r\n return parseFloat(value);\r\n }\r\n\r\n public fromView(value: any, min: number = 0) {\r\n\r\n if (typeof value === 'undefined' || value === '' || value === null || value === '-' || isNaN(value)) {\r\n return min;\r\n }\r\n\r\n return parseFloat(value);\r\n }\r\n}\r\n","import './app.scss';\r\nimport 'themes/global.scss';\r\nimport {\r\n AuthenticateStep,\r\n AuthService,\r\n FetchConfig,\r\n} from 'aurelia-authentication';\r\nimport { HttpClient } from 'aurelia-fetch-client';\r\nimport { PLATFORM } from 'aurelia-pal';\r\nimport {\r\n NavigationInstruction,\r\n PipelineResult,\r\n Router,\r\n RouterConfiguration,\r\n RouterEvent,\r\n} from 'aurelia-router';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { log } from 'services/logger/log';\r\nimport { AppSettings } from 'config/appsettings';\r\nimport { authConfig } from 'config/plugins/authentication';\r\nimport { GoogleMapsApi } from 'services/google-maps/google-maps-api';\r\n\r\n@autoinject\r\nexport class App {\r\n public router: Router;\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private fetchConfig: FetchConfig,\r\n private httpClient: HttpClient,\r\n private i18n: I18N,\r\n private eventAggregator: EventAggregator,\r\n private googleMapsApi: GoogleMapsApi\r\n ) {\r\n eventAggregator.subscribe(\r\n RouterEvent.Error,\r\n (event: {\r\n instruction: NavigationInstruction;\r\n result: PipelineResult;\r\n }) => {\r\n log.error(\r\n 'Navigation failed',\r\n event.result.output,\r\n event.instruction\r\n );\r\n }\r\n );\r\n }\r\n\r\n public async activate() {\r\n this.fetchConfig.configure(this.httpClient);\r\n this.i18n.setLocale('no').then(() => log.debug('Language configured.'));\r\n await this.googleMapsApi.load();\r\n }\r\n\r\n public configureRouter(config: RouterConfiguration, router: Router) {\r\n config.title = 'Datalast';\r\n\r\n config.addAuthorizeStep(AuthenticateStep); // Add a route filter so only authenticated uses are authorized to access some routes\r\n config.options.pushState = true;\r\n\r\n config.map([\r\n {\r\n route: ['', '/index'],\r\n name: 'index',\r\n moduleId: PLATFORM.moduleName('routes/home/home'),\r\n nav: true,\r\n title: 'Home',\r\n },\r\n ]);\r\n\r\n var handleUnknownRoutes = (instruction: any) => {\r\n log.warn('Unknown route - logged in', instruction);\r\n return PLATFORM.moduleName('routes/not-found/not-found');\r\n };\r\n\r\n config.mapUnknownRoutes(handleUnknownRoutes);\r\n config.fallbackRoute('errorpage');\r\n\r\n this.router = router;\r\n }\r\n}\r\n","import { Navbar } from './../../components/navbar/navbar';\r\nimport { MainHeader } from './../../components/main-header/main-header';\r\nimport './home.scss';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { VdChartsSeries } from 'components/vd-charts/vd-charts-series';\r\nimport { VdChartsDataSet } from 'components/vd-charts/vd-charts-dataset';\r\nimport { VdChartsLabelSet } from 'components/vd-charts/vd-charts-labelset';\r\nimport { VdChartsYAxis } from 'components/vd-charts/vd-charts-yaxis';\r\nimport { IOptions, Options } from 'components/vd-charts/vd-charts/options/options';\r\nimport { ApiService } from 'services/api/api-service';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { AvailableTypes } from 'models/available-types';\r\nimport SelectionData from 'models/selection-data';\r\nimport { PeriodAlternatives } from 'models/period-alternatives';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { VehicleCategories } from 'models/vehicle-categories';\r\nimport { NumberFormatValueConverter } from 'resources/value-converters/number-format';\r\n\r\n@autoinject\r\nexport class Home {\r\n public navbar: Navbar;\r\n public header: MainHeader;\r\n public dataSet = new VdChartsDataSet();\r\n public labels: VdChartsLabelSet;\r\n public options: IOptions = Options.default();\r\n public showFilter: boolean;\r\n public showEnergySources: boolean;\r\n public data: SelectionData;\r\n\r\n public filterSelectedCategory: VehicleCategories;\r\n public filterSelectedPeriod: PeriodAlternatives;\r\n\r\n public availableTypeEnum = AvailableTypes;\r\n public vehicleCategories = VehicleCategories;\r\n public periodAlternatives = PeriodAlternatives;\r\n\r\n public trendTooltipFormatter: any;\r\n\r\n public kWhToPetrolRatio: number = 0.10989; // 1 kWh * ratio = liter\r\n public kWhToDieselRatio: number = 0.09901; // 1 kWh * ratio = liter\r\n public kWhToGasRatio: number = 0.074074; // 1 kwh * ratio = kg\r\n public kWhToHydrogenRatio: number = 0.02994; // 1 kWh * ratio = kg\r\n\r\n constructor(private apiService: ApiService, private i18n: I18N, private eventAggregator: EventAggregator, private numberFormat: NumberFormatValueConverter) {\r\n\r\n }\r\n\r\n public async attached() {\r\n this.data = new SelectionData(this.apiService, this.eventAggregator);\r\n await this.data.loadData();\r\n\r\n this.options.yAxis = {\r\n labels: {\r\n staggerLines: 1\r\n }\r\n };\r\n\r\n this.filterSelectedCategory = VehicleCategories.All;\r\n this.filterSelectedPeriod = PeriodAlternatives.Last30Days;\r\n\r\n this.eventAggregator.subscribe('data-updated', () => this.prepareGraph());\r\n this.prepareGraph();\r\n }\r\n\r\n private get getPeriodSelectionText() {\r\n switch (this.data.period) {\r\n case PeriodAlternatives.Last30Days:\r\n return 'siste 30 dager';\r\n case PeriodAlternatives.Yesterday:\r\n return 'i går';\r\n case PeriodAlternatives.LastYear:\r\n return 'forrige år';\r\n case PeriodAlternatives.YearToDate:\r\n return 'år til dato';\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n private setFilterSelectedCategory(category: VehicleCategories) {\r\n this.filterSelectedCategory = category;\r\n }\r\n\r\n private setFilterSelectedPeriod(period: PeriodAlternatives) {\r\n this.filterSelectedPeriod = period;\r\n }\r\n\r\n private applyFilter() {\r\n this.data.updateFilterSelection(this.filterSelectedCategory, this.filterSelectedPeriod);\r\n this.showFilter = false;\r\n }\r\n\r\n private toggleFilter(e: MouseEvent) {\r\n this.showFilter = !this.showFilter;\r\n e?.stopPropagation();\r\n }\r\n private hideFilter(e: MouseEvent) {\r\n this.showFilter = false;\r\n e?.stopPropagation();\r\n }\r\n\r\n // test \r\n private toggleEnergySources(e: MouseEvent) {\r\n this.showEnergySources = !this.showEnergySources;\r\n e?.stopPropagation();\r\n }\r\n private hideEnergySources(e: MouseEvent) {\r\n this.showEnergySources = false;\r\n e?.stopPropagation();\r\n }\r\n\r\n // TODO: Fix clickthrough\r\n private ignoreFilterClick(e: MouseEvent) {\r\n e?.stopPropagation();\r\n }\r\n\r\n private prepareGraph() {\r\n // Change this if other than last 13 months\r\n this.labels = this.getLabelSetForLastThirteenMonths();\r\n\r\n this.dataSet.clearSeries();\r\n this.dataSet.clearYAxis();\r\n\r\n var yAxis = new VdChartsYAxis('normalized', 'Gjennomsnitt');\r\n yAxis.setFormatter(function () {\r\n if (this.value === undefined) {\r\n return 'test';\r\n }\r\n\r\n return `${parseInt(this.value?.toFixed(2))}%`;\r\n });\r\n\r\n this.dataSet.addYAxis(yAxis);\r\n // .setMax(100));\r\n\r\n\r\n // We need one series for each graph\r\n if (this.data.selectedType === AvailableTypes.Vehicle) {\r\n this.dataSet.addSeries(new VdChartsSeries()\r\n .setName('Distanse')\r\n .setColor('#003f5c')\r\n .setData(this.data.normalizedTrends.distance)\r\n .setFormatter(customSeriesFormatter));\r\n } else {\r\n this.dataSet.addSeries(new VdChartsSeries()\r\n .setName('Timer')\r\n .setColor('#003f5c')\r\n .setData(this.data.normalizedTrends.engineRunTimeHours)\r\n .setFormatter(customSeriesFormatter));\r\n }\r\n\r\n this.dataSet.addSeries(new VdChartsSeries()\r\n .setName('Totalforbruk')\r\n .setColor('#8fca48')\r\n .setData(this.data.normalizedTrends.fuelConsumptionTotal)\r\n .setFormatter(customSeriesFormatter));\r\n\r\n if (this.data.selectedType === AvailableTypes.Vehicle) {\r\n this.dataSet.addSeries(new VdChartsSeries()\r\n .setName('Snittforbruk per mil')\r\n .setColor('#f1c400')\r\n .setData(this.data.normalizedTrends.averageFuelConsumptionPer10Km)\r\n .setFormatter(customSeriesFormatter));\r\n } else {\r\n this.dataSet.addSeries(new VdChartsSeries()\r\n .setName('Snittforbruk per time')\r\n .setColor('#f1c400')\r\n .setData(this.data.normalizedTrends.averageFuelConsumptionPerHour)\r\n .setFormatter(customSeriesFormatter));\r\n }\r\n\r\n this.dataSet.addSeries(new VdChartsSeries()\r\n .setName('CO\\u2082 totalt')\r\n .setColor('#3697b5')\r\n .setData(this.data.normalizedTrends.co2EmissionTotal)\r\n .setFormatter(customSeriesFormatter));\r\n\r\n var data = this.data;\r\n var nf = this.numberFormat;\r\n this.trendTooltipFormatter = function () {\r\n var actual = '';\r\n switch (this.series.name) {\r\n case 'Distanse':\r\n actual = `${nf.toView(data.trends.distance[this.point.index])} km`;\r\n break;\r\n case 'Timer':\r\n actual = `${nf.toView(data.trends.engineRunTimeHours[this.point.index])} timer`;\r\n break;\r\n case 'Totalforbruk':\r\n actual = `${nf.toView(data.trends.fuelConsumptionTotal[this.point.index])} kwh`;\r\n break;\r\n case 'Snittforbruk per mil':\r\n actual = `${nf.toView(data.trends.averageFuelConsumptionPer10Km[this.point.index])} kwh/mil`;\r\n break;\r\n case 'Snittforbruk per time':\r\n actual = `${nf.toView(data.trends.averageFuelConsumptionPerHour[this.point.index])} kwh/time`;\r\n break;\r\n case 'CO\\u2082 totalt':\r\n actual = `${nf.toView(data.trends.co2EmissionTotal[this.point.index])} tonn`;\r\n break;\r\n default:\r\n break;\r\n }\r\n return `\r\n ${this.point.category}
\r\n ${actual}
\r\n ${Math.round(this.point.y)}%\r\n `;\r\n };\r\n this.options.tooltip.formatter = this.trendTooltipFormatter;\r\n }\r\n\r\n private get getSubCategoryName() {\r\n if (this.data === undefined || this.data.selectedType === undefined) {\r\n return 'kjøretøy';\r\n }\r\n switch (this.data.selectedType) {\r\n case AvailableTypes.All:\r\n return 'kjøretøy og maskiner';\r\n case AvailableTypes.Machine:\r\n return 'maskiner';\r\n case AvailableTypes.Vehicle:\r\n switch (this.data.selectedVehicleCategory) {\r\n case VehicleCategories.All:\r\n return 'kjøretøy';\r\n case VehicleCategories.Cars:\r\n return 'personbiler';\r\n case VehicleCategories.Vans:\r\n return 'varebiler';\r\n case VehicleCategories.Trucks:\r\n return 'lastebiler';\r\n default: '';\r\n }\r\n default: '';\r\n }\r\n }\r\n\r\n private get getMainCategoryCount() {\r\n if (this.data === undefined || this.data.selectedType === undefined) {\r\n return 'kjøretøy';\r\n }\r\n if (this.data.assetCounts === undefined) {\r\n return '-';\r\n }\r\n switch (this.data.selectedType) {\r\n case AvailableTypes.All:\r\n return this.data.assetCounts.machinesCount + this.data.assetCounts.vehiclesCount;\r\n case AvailableTypes.Vehicle:\r\n return this.data.assetCounts.vehiclesCount;\r\n case AvailableTypes.Machine:\r\n return this.data.assetCounts.machinesCount;\r\n default: return 0;\r\n }\r\n }\r\n\r\n\r\n public getLabelSetForLastThirteenMonths(): VdChartsLabelSet {\r\n var series: Array = ['Januar', 'Februar', 'Mars', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Desember'];\r\n\r\n var xaxis = [];\r\n for (var i = 13; i > 0; i--) {\r\n var d = this.getDate(i);\r\n xaxis.push(series[d.getMonth()].slice(0, 3) + ' ' + d.getFullYear());\r\n }\r\n\r\n return new VdChartsLabelSet().setLabels(xaxis);\r\n }\r\n\r\n private getDate(months: number) {\r\n var d = new Date();\r\n d.setMonth(d.getMonth() - months);\r\n\r\n return d;\r\n }\r\n}\r\n\r\nfunction customSeriesFormatter() {\r\n var a = this.value;\r\n return 'test';\r\n}\r\n","import './not-found.scss';\r\n\r\nexport class NotFound {\r\n}","import { autoinject } from 'aurelia-framework';\r\nimport { Config, Rest } from 'aurelia-api';\r\nimport IAssetCounts from 'models/asset-counts';\r\nimport IAggregatedKpis from 'models/aggregated-kpis';\r\nimport IAggregatedTrends from 'models/aggregated-trends';\r\nimport { AvailableTypes } from 'models/available-types';\r\nimport { VehicleCategories } from 'models/vehicle-categories';\r\nimport { getQueryString } from 'lib/queryString';\r\nimport { log } from 'services/logger/log';\r\nimport { AppSettings } from 'config/appsettings';\r\nimport moment from 'moment';\r\nimport { addMinutes, format, subMinutes } from 'date-fns';\r\n\r\n@autoinject\r\nexport class ApiService {\r\n private api: Rest;\r\n private fmsApi: Rest;\r\n\r\n constructor(private apiConfig: Config) {\r\n this.api = apiConfig.getEndpoint('api');\r\n this.api.defaults = {\r\n headers: {\r\n 'Api-Version': 'v1',\r\n },\r\n };\r\n\r\n this.fmsApi = apiConfig.getEndpoint('fms');\r\n }\r\n\r\n public async getSome(): Promise {\r\n return this.api.find('/some');\r\n }\r\n\r\n public async getKpis(\r\n from: Date,\r\n to: Date,\r\n type: AvailableTypes,\r\n category: VehicleCategories\r\n ): Promise {\r\n var categoryType = this.getCategoryType(type, category);\r\n return this.api.find(\r\n `/aggregated/kpis?from=${encodeURIComponent(\r\n from.toISOString()\r\n )}&to=${encodeURIComponent(to.toISOString())}${categoryType === null ? '' : `&categoryType=${categoryType}`\r\n }`\r\n );\r\n }\r\n\r\n public async getTrends(\r\n from: Date,\r\n to: Date,\r\n type: AvailableTypes,\r\n category: VehicleCategories\r\n ): Promise {\r\n var categoryType = this.getCategoryType(type, category);\r\n return this.api.find(\r\n `/aggregated/trends?from=${encodeURIComponent(\r\n from.toISOString()\r\n )}&to=${encodeURIComponent(to.toISOString())}${categoryType === null ? '' : `&categoryType=${categoryType}`\r\n }`\r\n );\r\n }\r\n\r\n public async getAssetCounts(): Promise {\r\n return this.api.find('/assets/counts');\r\n }\r\n\r\n private getCategoryType(type: AvailableTypes, category: VehicleCategories) {\r\n switch (type) {\r\n case AvailableTypes.All:\r\n return null;\r\n case AvailableTypes.Machine:\r\n return 'Machines';\r\n case AvailableTypes.Vehicle:\r\n if (\r\n category === null ||\r\n category === undefined ||\r\n category === VehicleCategories.All\r\n ) {\r\n return 'Vehicles';\r\n } else {\r\n switch (category) {\r\n case VehicleCategories.Cars:\r\n return 'Car';\r\n case VehicleCategories.Vans:\r\n return 'Van';\r\n case VehicleCategories.Trucks:\r\n return 'Truck';\r\n default:\r\n return 'Unknown';\r\n }\r\n }\r\n default:\r\n return 'Unknown';\r\n }\r\n }\r\n\r\n public async getMapAggregatedPositions(\r\n metersForGrouping: number,\r\n mapBounds: { swLat: number; swLng: number; neLat: number; neLng: number },\r\n fromDate: Date,\r\n toDate: Date,\r\n abortSignal: { signal: AbortSignal }\r\n ): Promise {\r\n const params = getQueryString({\r\n metersForGrouping: metersForGrouping,\r\n from: subMinutes(fromDate, fromDate.getTimezoneOffset()).toJSON(),\r\n to: subMinutes(toDate, toDate.getTimezoneOffset()).toJSON(),\r\n ...mapBounds,\r\n });\r\n\r\n if (AppSettings.isLocalDevevelopment) {\r\n return this.fmsApi.find(`/api/externalapi/map/aggregated${params}`, undefined, abortSignal);\r\n } else {\r\n return this.api.find(`/map/aggregated${params}`, undefined, abortSignal);\r\n }\r\n }\r\n}\r\n","import { Loader } from '@googlemaps/js-api-loader';\r\nimport { inject } from 'aurelia-framework';\r\n\r\nconst apiVersion = '3.55' as const;\r\n\r\n@inject(\r\n new Loader({\r\n apiKey: 'AIzaSyAStos0LcB4lmHgvoBRIygQtNcUuhuM0SM',\r\n version: apiVersion,\r\n libraries: ['marker', 'geometry'],\r\n })\r\n)\r\nexport class GoogleMapsApi {\r\n private googleApi: any;\r\n\r\n private loading: Promise;\r\n\r\n constructor(private googleApiLoader: Loader) {\r\n this.load();\r\n }\r\n\r\n public get api(): any {\r\n return this.googleApi;\r\n }\r\n\r\n public async load() {\r\n if (this.googleApi) {\r\n return;\r\n }\r\n\r\n if (this.loading) {\r\n await this.loading;\r\n return;\r\n }\r\n\r\n this.loading = this.googleApiLoader.load().then((googleApi) => {\r\n this.googleApi = googleApi;\r\n });\r\n\r\n await this.loading;\r\n }\r\n\r\n public map(\r\n container: Element,\r\n options: google.maps.MapOptions\r\n ): google.maps.Map {\r\n if (!this.googleApi) {\r\n return null;\r\n }\r\n\r\n return new this.googleApi.maps.Map(container, options);\r\n }\r\n}\r\n","import { Appender } from 'aurelia-logging';\r\nimport { AppInsights } from 'applicationinsights-js';\r\nimport { AppSettings } from 'config/appsettings';\r\nimport { LogManager } from 'aurelia-framework';\r\n\r\n\r\nexport class AppLogAppender implements Appender {\r\n\r\n public debug(logger: { id: string }, ...rest: any[]): void {\r\n if (AppSettings.appInsightsLogLevel >= LogManager.logLevel.debug) {\r\n let name = typeof (rest[0]) == 'string' ? typeof (rest[0]) : 'Unknown';\r\n AppInsights.trackEvent(name, Object.assign({ level: 'debug' }, rest[1]));\r\n // eslint-disable-next-line no-console\r\n console.debug(`DEBUG [AI] [${logger.id}]`, ...rest);\r\n }\r\n else {\r\n // eslint-disable-next-line no-console\r\n console.debug(`DEBUG [${logger.id}]`, ...rest);\r\n }\r\n }\r\n\r\n public info(logger: { id: string }, ...rest: any[]): void {\r\n if (AppSettings.appInsightsLogLevel >= LogManager.logLevel.info) {\r\n let name = typeof (rest[0]) == 'string' ? typeof (rest[0]) : 'Unknown';\r\n AppInsights.trackEvent(name, Object.assign({ level: 'info' }, rest[1]));\r\n // eslint-disable-next-line no-console\r\n console.info(`INFO [AI] [${logger.id}]`, ...rest);\r\n }\r\n else {\r\n // eslint-disable-next-line no-console\r\n console.info(`INFO [${logger.id}]`, ...rest);\r\n }\r\n }\r\n\r\n public warn(logger: { id: string }, ...rest: any[]): void {\r\n if (AppSettings.appInsightsLogLevel >= LogManager.logLevel.warn) {\r\n let name = typeof (rest[0]) == 'string' ? typeof (rest[0]) : 'Unknown';\r\n AppInsights.trackEvent(name, Object.assign({ level: 'warn' }, rest[1]));\r\n // eslint-disable-next-line no-console\r\n console.warn(`WARN [AI] [${logger.id}]`, ...rest);\r\n }\r\n else {\r\n // eslint-disable-next-line no-console\r\n console.warn(`WARN [${logger.id}]`, ...rest);\r\n }\r\n }\r\n\r\n public error(logger: { id: string }, ...rest: any[]): void {\r\n if (AppSettings.appInsightsLogLevel >= LogManager.logLevel.error) {\r\n let name = typeof (rest[0]) == 'string' ? typeof (rest[0]) : 'Unknown';\r\n AppInsights.trackEvent(name, Object.assign({ level: 'error' }, rest[1]));\r\n // eslint-disable-next-line no-console\r\n console.error(`ERROR [AI] [${logger.id}]`, ...rest);\r\n }\r\n else {\r\n // eslint-disable-next-line no-console\r\n console.error(`ERROR [${logger.id}]`, ...rest);\r\n }\r\n }\r\n}","import { LogManager } from 'aurelia-framework';\r\nexport var log = LogManager.getLogger('app');","import moment from 'moment';\r\n\r\nexport class DateFormatValueConverter {\r\n public toView(value: any, ...args: string[]) {\r\n if (!value) {\r\n return 'ugyldig dato';\r\n }\r\n var utc = args.indexOf('utc') > -1;\r\n var seconds = args.indexOf('seconds') > -1;\r\n var showTime = seconds || args.indexOf('time') > -1;\r\n var noDate = args.indexOf('nodate') > -1;\r\n var noYear = args.indexOf('noyear') > -1;\r\n\r\n let format = '';\r\n if (!noDate) {\r\n format += 'DD. MMM' + (noYear ? '' : ' YYYY') + ' ';\r\n }\r\n if (showTime) {\r\n format += 'HH:mm' + (seconds ? ':ss' : '');\r\n }\r\n\r\n let date = utc ? moment.utc(value) : moment(value);\r\n if (date.year() == 1) {\r\n return '-';\r\n }\r\n return date.format(format);\r\n\r\n // return new DateFormatValueConverter().toView(value, utc, showTime, seconds);\r\n }\r\n}\r\n","import { FrameworkConfiguration, PLATFORM } from 'aurelia-framework';\r\n\r\nexport function configure(config: FrameworkConfiguration): void {\r\n config.globalResources([\r\n PLATFORM.moduleName('./date-format')\r\n ]);\r\n}\r\n"],"names":[],"sourceRoot":""}