{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/status/StatusChart.vue?b886","webpack:///./src/components/table/Table.vue?3e2a","webpack:///./src/components/bron/BronChart.vue?a0fe","webpack:///./src/App.vue?3ead","webpack:///./src/components/MainContainer.vue?9794","webpack:///./src/components/QuickWinnersChart.vue?d612","webpack:///./src/components/topper/ToppersTables.vue?145f","webpack:///./src/App.vue?b25a","webpack:///./src/components/header/Header.vue?8d6a","webpack:///./src/components/header/Header.vue","webpack:///./src/components/header/Header.vue?fa8a","webpack:///./src/components/header/Header.vue?972c","webpack:///./src/components/footer/Footer.vue?241f","webpack:///./src/components/footer/Footer.vue","webpack:///./src/components/footer/Footer.vue?c7b8","webpack:///./src/components/footer/Footer.vue?9fb5","webpack:///./src/App.vue","webpack:///./src/App.vue?15ab","webpack:///./src/App.vue?8573","webpack:///./src/components/MainContainer.vue?ea19","webpack:///./src/model/TerugmeldingStats.ts","webpack:///./src/model/StatusAfgerond.ts","webpack:///./src/model/Overdue.ts","webpack:///./src/config/OverdueConfig.ts","webpack:///./src/services/TerugmeldingMarshaller.ts","webpack:///./src/services/BgtInfoService.ts","webpack:///./src/components/QuickWinnersChart.vue?d566","webpack:///./src/components/QuickWinnersChart.vue","webpack:///./src/components/QuickWinnersChart.vue?6f96","webpack:///./src/components/QuickWinnersChart.vue?a2de","webpack:///./src/components/topper/ToppersTables.vue?ddde","webpack:///./src/components/topper/ToppersTables.vue","webpack:///./src/components/topper/ToppersTables.vue?146a","webpack:///./src/components/topper/ToppersTables.vue?c41d","webpack:///./src/components/table/Table.vue?df53","webpack:///./src/components/table/Table.vue","webpack:///./src/components/table/Table.vue?ff68","webpack:///./src/components/table/Table.vue?7db0","webpack:///./src/components/alert/Alert.vue?a88f","webpack:///./src/components/alert/Alert.vue","webpack:///./src/components/alert/Alert.vue?5898","webpack:///./src/components/alert/Alert.vue?dceb","webpack:///./src/components/status/StatusChart.vue?f1c8","webpack:///./src/services/util/Calculator.ts","webpack:///./src/components/status/StatusCalculator.ts","webpack:///./src/components/status/StatusChart.vue","webpack:///./src/components/status/StatusChart.vue?9554","webpack:///./src/components/status/StatusChart.vue?67c6","webpack:///./src/components/bron/BronChart.vue?f4bd","webpack:///./src/components/bron/BronChart.vue","webpack:///./src/components/bron/BronChart.vue?4a1a","webpack:///./src/components/bron/BronChart.vue?c06c","webpack:///./src/components/carddeckstats/CardDeckStats.vue?decd","webpack:///./src/components/carddeckstats/CardDeckStatsCalculator.ts","webpack:///./src/components/carddeckstats/CardDeckStats.vue","webpack:///./src/components/carddeckstats/CardDeckStats.vue?b48c","webpack:///./src/components/carddeckstats/CardDeckStats.vue?335b","webpack:///./src/services/ApiClient.ts","webpack:///./src/services/TerugmeldingService.ts","webpack:///./src/services/util/Convertor.ts","webpack:///./src/components/MainContainer.vue","webpack:///./src/components/MainContainer.vue?3b6b","webpack:///./src/components/MainContainer.vue?72ad","webpack:///./src/components/contact/Contact.vue?4f9e","webpack:///./src/components/contact/Contact.vue","webpack:///./src/components/contact/Contact.vue?bad1","webpack:///./src/components/contact/Contact.vue?82bf","webpack:///./src/components/about/About.vue?f684","webpack:///./src/components/about/About.vue","webpack:///./src/components/about/About.vue?d7f7","webpack:///./src/components/about/About.vue?b7d6","webpack:///./src/router/index.ts","webpack:///./src/main.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","jsonpScriptSrc","p","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","attrs","staticRenderFns","_v","Header","component","staticClass","_s","Date","getFullYear","_m","Footer","App","components","variant","alertMessage","registratie","now","features","quickWinnersArray","topperArray","tableData","terugmeldingStatsDefaults","totalLastMonth","totalActive","totalOverdue","overdueMonths","StatusClosed","BRT","BGT","BAG","DEFAULT","OverdueMap","Map","overdueParams","OverdueParams","registrations","getOwnPropertyNames","forEach","months","days","Math","ceil","overdue","set","getOverdueFor","overdueConfig","DAYS","WEEKS","produceTerugmeldingViewData","featureCollection","terugmeldingViewData","createTerugmeldingViewDate","terugmeldingStats","calculateTotalForLastMonth","activeFeatures","filter","active","calculateTotalOverdueForDays","sortedAndGroupedFeatures","findOldestGroupedByBrondhoudernaam","flop10","feature","convertFeatureTo","Array","currentMonth","getMonth","currentYear","calculateTotalForYearAndMonth","year","month","sort","sortOnTijdstipRegistratie","lastMonthFeatures","date","properties","tijdstipRegistratie","tijdStipregistratieMonth","tijdStipregistratieYear","overdueFeatures","numberOfDays","calculateDaysFromDate","a","statusCode","closed","includes","b","getDateOrNull","aDate","bDate","getTime","resultFeatures","selectedBronhouders","currentBronhoudernaam","bronhoudernaam","calculateWeeksFromDate","givenDate","fromDate","elapsedTime","weeks","round","terugmeldingInfo","aantalWekenOpenstaand","meldingsNummerVolledig","BGTINFOSERVICE","apiClient","terugmeldingMarshaller","refreshData","getFeatureCollection","then","catch","getTerugmeldingStats","class","quickWinnersChartData","mounted","chart","title","titles","text","fontSize","marginBottom","categoryAxis","yAxes","dataFields","category","renderer","grid","template","location","inversed","minGridDistance","axisFills","disabled","fillOpacity","valueAxis","xAxes","createSeries","field","color","series","valueX","categoryY","stacked","stroke","fill","columns","tooltipText","label","bullets","strokeWidth","truncate","hideOversized","locationX","min","max","ticks","strokeOpacity","labels","adapter","add","legend","position","itemContainers","togglable","numberFormatter","numberFormat","interfaceColors","positiveColor","getFor","negativeColor","lighten","events","on","each","container","dataItem","dataContext","toBack","onPropertyChanged","oldValue","mySortedArray","TMOpenOverduePct","first10","beforeDestroy","dispose","default","QuickWinnersChart","getTableTitle","tableItems","fields","timeSort","topperData","fieldsTable","fieldBronhouder","fieldAvgHoursClosed","formatter","item","time","String","toString","fieldTotalClosed","allTerugmeldingen","closedTerugmeldingen","tm","TMTotalClosed","TMAvgHoursClosed","Table","getTableDataLength","toLocaleDateString","showDismissibleAlert","$event","dismiss","Alert","countOpenAndClosedForGroup","groupedByBrondhoudercode","tmCountArray","terugmeldingen","tmCount","countOpenAndClosedAndPercentage","TMTotal","TMOpen","TMClosed","TMOpenOverdue","TMClosedOverdue","overdueSeconds","terugmelding","tijdstipStatusWijziging","secondsBetween","total","TMOpenPct","calculatePercentage","TMClosedPct","TMClosedOverduePct","count","promillage","countOpenAndClosedAverageHours","tmAvgCount","TMTotalOpen","TMAvgHoursOpen","avgHours","countTotalForPropertyName","propertyName","nameCount","number","mapToArray","map","items","index","calculator","colorMap","loadDataAndColor","statusSequense","dataItems","colorArray","status","lowerCaseStatus","toLocaleLowerCase","capitalizedStatusString","charAt","toUpperCase","replace","colors","statusCalculator","hiddenState","opacity","radius","innerRadius","startAngle","endAngle","paddingLeft","slices","cornerRadius","innerCornerRadius","draggable","hideSmall","ev","values","percent","hide","show","states","getKey","shiftRadius","inert","alignLabels","wrap","marginLeft","marginRight","markerTemplate","markers","width","height","recievedUpdatedFeatures","statusCodeTotal","itemsAndColor","list","StatusChart","stomHoor","bronTotal","staticStyle","header","cardDeckStatsCalculator","updateTerugmeldingStats","copyFeatures","CardDeckStats","prodKey","ftoKey","ftoURL","prodURL","localHost","url","fetch","method","headers","apikey","response","ok","statusText","json","ApiClient","TERUGMELDING_SERVICE","retrieveFeatures","groupByBronhoudercode","bronhoudercodeMap","bronhoudercode","bronhouderArray","filterOutOpen","filterOutClosed","openTerugmeldingen","convertor","barChartTop5","barChartFlop5","bgtService","terugmeldingService","refresh","generateData","updated","toLocaleTimeString","MainContainer","BronChart","ToppersTables","adres","Contact","bgtLink","bagLink","apiLink","brtLink","verbeterdekaartLink","bagViewerLink","About","use","routes","path","props","redirect","router","config","productionTip","h","$mount"],"mappings":"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","file":"js/app.0eb85f1e.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"canvg\":\"canvg\",\"pdfmake\":\"pdfmake\",\"xlsx\":\"xlsx\"}[chunkId]||chunkId) + \".\" + {\"canvg\":\"876d523f\",\"pdfmake\":\"06e6311b\",\"xlsx\":\"7a011f56\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatusChart.vue?vue&type=style&index=0&id=723cff90&scoped=true&lang=less&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Table.vue?vue&type=style&index=0&id=42d52d3e&scoped=true&lang=less&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BronChart.vue?vue&type=style&index=0&id=dfa27388&scoped=true&lang=less&\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainContainer.vue?vue&type=style&index=0&id=17226142&scoped=true&lang=less&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickWinnersChart.vue?vue&type=style&index=0&id=1d6f48c2&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToppersTables.vue?vue&type=style&index=0&id=9391aa6a&scoped=true&lang=less&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('Header'),_c('router-view'),_c('Footer')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-navbar',{attrs:{\"toggleable\":\"sm\",\"variant\":\"dark\",\"type\":\"dark\",\"fixed\":\"top\"}},[_c('b-navbar-toggle',{attrs:{\"target\":\"nav-collapse\"}}),_c('b-navbar-brand',{attrs:{\"href\":\"http://www.terugmeldinginzicht.nl\"}},[_c('b-icon',{attrs:{\"icon\":\"map\",\"font-scale\":\"1\"}}),_vm._v(\" Terugmeldinginzicht.nl \")],1),_c('b-collapse',{attrs:{\"id\":\"nav-collapse\",\"is-nav\":\"\"}},[_c('b-navbar-nav',[_c('b-nav-item',{attrs:{\"to\":\"/registratie/BAG\"}},[_vm._v(\"BAG\")]),_c('b-nav-item',{attrs:{\"to\":\"/registratie/BGT\"}},[_vm._v(\"BGT\")]),_c('b-nav-item',{attrs:{\"to\":\"/registratie/BRT\"}},[_vm._v(\"BRT\")]),_c('b-nav-item',{attrs:{\"to\":\"/Contact\"}},[_vm._v(\"Contact\")]),_c('b-nav-item',{attrs:{\"to\":\"/About\"}},[_vm._v(\"About\")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\n\n@Component\nexport default class Header extends Vue {\n \n}\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Header.vue?vue&type=template&id=51bf9276&\"\nimport script from \"./Header.vue?vue&type=script&lang=ts&\"\nexport * from \"./Header.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-column mt-3\"},[_c('footer',{staticClass:\"footer\"},[_c('div',[_c('a',{attrs:{\"href\":\"http://terugmeldinginzicht.nl\"}},[_vm._v(\"Terugmelding Inzicht\")]),_c('span',[_vm._v(\" © \"+_vm._s(new Date().getFullYear()))])]),_vm._m(0)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"ml-auto\"},[_c('span',[_vm._v(\"Created by \")]),_c('a',{attrs:{\"href\":\"https://upgraded.design\"}},[_vm._v(\"RenS.\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\n\n@Component\nexport default class Footer extends Vue {\n \n}\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=1067fb3e&\"\nimport script from \"./Footer.vue?vue&type=script&lang=ts&\"\nexport * from \"./Footer.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport 'bootstrap/dist/css/bootstrap.css'\nimport 'bootstrap-vue/dist/bootstrap-vue.css'\nimport { Component, Vue } from \"vue-property-decorator\";\nimport Header from '@/components/header/Header.vue';\nimport Footer from '@/components/footer/Footer.vue';\n\n@Component({\n components: {\n Header,\n Footer\n }\n})\n\nexport default class App extends Vue {}\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/ts-loader/index.js??ref--14-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/ts-loader/index.js??ref--14-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=8f8cd260&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('alert',{attrs:{\"variant\":_vm.variant,\"alertMessage\":_vm.alertMessage}}),_vm._v(\" Dit betreft registratie: \"+_vm._s(_vm.registratie)+\" opgehaald op \"+_vm._s(_vm.now)+\" \"),_c('CardDeckStats',{staticClass:\"mt-3\",attrs:{\"registratie\":_vm.registratie,\"features\":_vm.features}}),_c('b-card',{staticClass:\"mt-3\",attrs:{\"border-variant\":\"secondary\"}},[_c('QuickWinnersChart',{attrs:{\"registratie\":_vm.registratie,\"quick-winners-chart-data\":_vm.quickWinnersArray}})],1),_c('b-row',{attrs:{\"no-gutters\":\"\"}},[_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('b-card',{staticClass:\"mt-3 mr-lg-2\",attrs:{\"border-variant\":\"secondary\"}},[_c('ToppersTables',{attrs:{\"registratie\":_vm.registratie,\"tableData\":_vm.topperArray,\"timeSort\":true}})],1)],1),_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('b-card',{staticClass:\"mt-3 ml-lg-2\",attrs:{\"border-variant\":\"secondary\"}},[_c('ToppersTables',{attrs:{\"registratie\":_vm.registratie,\"tableData\":_vm.topperArray,\"timeSort\":false}})],1)],1)],1),_c('Table',{staticClass:\"mt-3\",attrs:{\"registratie\":_vm.registratie,\"tableData\":_vm.tableData}}),_c('b-row',{attrs:{\"no-gutters\":\"\"}},[_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('b-card',{staticClass:\"mt-3 mr-lg-2\",attrs:{\"title\":\"Statusoverzicht terugmeldingen\",\"border-variant\":\"secondary\"}},[_c('StatusChart',{attrs:{\"features\":_vm.features}})],1)],1),_c('b-col',{attrs:{\"lg\":\"6\"}},[_c('b-card',{staticClass:\"mt-3 ml-lg-2\",attrs:{\"title\":\"Bronoverzicht terugmeldingen\",\"border-variant\":\"secondary\"}},[_c('BronChart',{attrs:{\"features\":_vm.features}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n\nThese are the statistic data of a specific collection of terugmeldingen\n\n*/\ninterface TerugmeldingStats {\n\n totalLastMonth: number;\n totalActive: number;\n totalOverdue: number;\n overdueMonths: number;\n\n}\n\n// this is a constant and can be used as a default\nconst terugmeldingStatsDefaults = {\n totalLastMonth: -1,\n totalActive: -1,\n totalOverdue: -1,\n overdueMonths: -1\n}\n\nexport {TerugmeldingStats, terugmeldingStatsDefaults}\n","/*\n* De waarde van afgsloten statussen\n*/\n\nconst StatusClosed = [\n 'AFGEROND',\n 'AFGEWEZEN',\n 'DOORGESTUURD',\n 'DOORGESTUURD_BAG',\n 'DOORGESTUURD_BRT'\n]\n\nexport { StatusClosed }","/*\n These are the overdue-limits for the different registrations in months and is used in calculations\n An enum gives the value and a key if you run a forEach on it.\n*/\nclass OverdueParams {\n\n BRT = 24;\n BGT = 18;\n BAG = 6;\n\n // default value\n DEFAULT = 3;\n\n}\n\n/*\n This interface holds the overdue-limits in months and days\n used for calculations and displaying.\n*/\ninterface Overdue {\n\n months: number;\n days: number;\n\n}\n\nexport {Overdue, OverdueParams}\n","import {Overdue, OverdueParams} from '@/model/Overdue';\n\n/*\n configuration to get the ovedue days for a registration\n*/\n\nclass OverdueConfig {\n\n private OverdueMap: Map;\n\n constructor() {\n this.OverdueMap = new Map();\n const overdueParams = new OverdueParams();\n // get the names of the Registrations\n const registrations = Object.getOwnPropertyNames(overdueParams);\n registrations.forEach(registratie => {\n const months = overdueParams[registratie];\n const days = Math.ceil(months * 365 / 12);\n const overdue = {months: months, days: days} as Overdue;\n this.OverdueMap.set(registratie, overdue);\n })\n }\n\n getOverdueFor(registratie: string): Overdue {\n const overdue = this.OverdueMap.get(registratie);\n return overdue ? overdue : this.OverdueMap.get('DEFAULT');\n }\n}\n\n// create instance\nconst overdueConfig = new OverdueConfig();\n\n// export instance\nexport default overdueConfig;\n","import {Feature, FeatureCollection, GeoJsonProperties, Geometry} from \"geojson\";\nimport {TerugmeldingInfo} from \"@/model/TerugmeldingInfo\";\nimport {StatusClosed} from '@/model/StatusAfgerond';\nimport {TerugmeldingViewData} from \"@/model/TerugmeldingViewData\";\nimport {TerugmeldingStats} from \"@/model/TerugmeldingStats\";\nimport overdueConfig from \"@/config/OverdueConfig\";\n\nexport class TerugmeldingMarshaller {\n // 7 days, 24 uur, 60 minutes etc\n DAYS = 24 * 60 * 60 * 1000;\n WEEKS = 7 * this.DAYS;\n\n constructor() {\n }\n\n produceTerugmeldingViewData(registratie : string, featureCollection: FeatureCollection): TerugmeldingViewData {\n const features = featureCollection.features;\n const terugmeldingViewData = this.createTerugmeldingViewDate();\n const terugmeldingStats = terugmeldingViewData.terugmeldingStats;\n terugmeldingStats.totalActive = features.length;\n terugmeldingStats.totalLastMonth = this.calculateTotalForLastMonth(features)\n const activeFeatures = features.filter(this.active);\n const overdue = overdueConfig.getOverdueFor(registratie);\n terugmeldingStats.overdueMonths = overdue.months;\n terugmeldingStats.totalOverdue = this.calculateTotalOverdueForDays(activeFeatures, overdue.days);\n const sortedAndGroupedFeatures = this.findOldestGroupedByBrondhoudernaam(activeFeatures);\n const flop10 = sortedAndGroupedFeatures.slice(0, 10);\n flop10.forEach(feature => {\n terugmeldingViewData.flop10.push(this.convertFeatureTo(feature))\n })\n return terugmeldingViewData;\n }\n\n createTerugmeldingViewDate() : TerugmeldingViewData {\n const terugmeldingViewData = {} as TerugmeldingViewData;\n terugmeldingViewData.terugmeldingStats = {} as TerugmeldingStats;\n terugmeldingViewData.flop10 = new Array();\n return terugmeldingViewData;\n }\n\n calculateTotalForLastMonth(features: Feature[]): number {\n // TODO Calculate year and month\n const now = new Date();\n let currentMonth = now.getMonth();\n let currentYear = now.getFullYear();\n if (currentMonth === 0) {\n currentMonth = 11;\n currentYear--;\n } else {\n currentMonth--;\n }\n return this.calculateTotalForYearAndMonth(features, currentYear, currentMonth);\n }\n\n private calculateTotalForYearAndMonth(features: Feature[], year: number, month: number): number {\n features.sort(this.sortOnTijdstipRegistratie);\n const lastMonthFeatures = features.filter(feature => {\n const date = new Date(feature.properties.tijdstipRegistratie);\n const tijdStipregistratieMonth = date.getMonth();\n const tijdStipregistratieYear = date.getFullYear()\n return tijdStipregistratieYear === year && tijdStipregistratieMonth === month\n });\n return lastMonthFeatures.length;\n }\n\n calculateTotalOverdueForDays(features: Feature[], days: number): number {\n const now = new Date();\n const overdueFeatures = features.filter(feature => {\n const tijdstipRegistratie = new Date(feature.properties.tijdstipRegistratie);\n const numberOfDays = this.calculateDaysFromDate(tijdstipRegistratie, now);\n return numberOfDays > days;\n });\n return overdueFeatures.length;\n }\n\n active(a: Feature): boolean {\n // closed is true when statusCode is like : DOORGESTUURD,AFGEWEZEN,AFGEROND\"\n const statusCode = a.properties.statusCode;\n if (statusCode === undefined) {\n return true;\n }\n const closed = StatusClosed.includes(statusCode);\n return !closed; // when NOT closed it is active\n }\n\n sortOnTijdstipRegistratie(a: Feature, b: Feature): number {\n function getDateOrNull(feature: Feature): Date | undefined {\n if (feature === null) {\n return undefined;\n }\n if (feature.properties === null) {\n return undefined;\n }\n return feature.properties.tijdstipRegistratie;\n }\n\n const aDate = getDateOrNull(a);\n const bDate = getDateOrNull(b);\n if (aDate === bDate) {\n return 0;\n }\n if (aDate === undefined) {\n return -1;\n }\n if (bDate === undefined) {\n return 1;\n }\n // return 50 - 100 = -50, ligt dus op volgorde\n return new Date(aDate).getTime() - new Date(bDate).getTime();\n }\n\n findOldestGroupedByBrondhoudernaam(features: Feature[]): Feature[] {\n const resultFeatures = new Array();\n const selectedBronhouders = new Array();\n features.forEach(feature => {\n const currentBronhoudernaam = feature.properties.bronhoudernaam;\n if (selectedBronhouders.includes(currentBronhoudernaam)) {\n // already select, continue\n } else {\n resultFeatures.push(feature);\n selectedBronhouders.push(currentBronhoudernaam);\n }\n });\n return resultFeatures;\n }\n\n calculateWeeksFromDate(givenDate: Date, fromDate: Date): number {\n if (givenDate === undefined || fromDate === undefined) {\n return -1;\n }\n const elapsedTime = fromDate.getTime() - givenDate.getTime();\n const weeks = elapsedTime / this.WEEKS;\n return Math.round(weeks);\n }\n\n calculateDaysFromDate(givenDate: Date, fromDate: Date): number {\n if (givenDate === undefined || fromDate === undefined) {\n return -1;\n }\n const elapsedTime = fromDate.getTime() - givenDate.getTime();\n const weeks = elapsedTime / this.DAYS\n return Math.round(weeks);\n }\n\n convertFeatureTo(feature: Feature) {\n const terugmeldingInfo = {} as TerugmeldingInfo;\n const properties = feature.properties;\n const tijdstipRegistratie: string = properties.tijdstipRegistratie;\n terugmeldingInfo.tijdstipRegistratie = new Date(tijdstipRegistratie);\n terugmeldingInfo.aantalWekenOpenstaand =\n this.calculateWeeksFromDate(terugmeldingInfo.tijdstipRegistratie, new Date());\n if (properties.bronhoudernaam === null) {\n terugmeldingInfo.bronhoudernaam = '(nog) niet bepaald'\n } else {\n terugmeldingInfo.bronhoudernaam = properties.bronhoudernaam;\n }\n terugmeldingInfo.meldingsNummerVolledig = properties.meldingsNummerVolledig;\n return terugmeldingInfo;\n }\n}\n","import {TerugmeldingStats, terugmeldingStatsDefaults} from '@/model/TerugmeldingStats';\nimport {TerugmeldingMarshaller} from './TerugmeldingMarshaller';\nimport {ApiClient} from './ApiClient';\nimport {TerugmeldingViewData} from '@/model/TerugmeldingViewData';\nconst BGTINFOSERVICE = 'BGTInfoservice';\n\nexport class BgtInfoService {\n private terugmeldingViewData = {} as TerugmeldingViewData\n\n private terugmeldingMarshaller: TerugmeldingMarshaller;\n\n // FIXME autowire ApiClient, dependency injection (singleton)\n constructor(private apiClient: ApiClient) {\n this.terugmeldingMarshaller = new TerugmeldingMarshaller();\n this.terugmeldingViewData.terugmeldingStats = terugmeldingStatsDefaults;\n }\n\n refreshData(registratie: string): Promise {\n // TODO Add in cache for 5 minutes or so. \n return new Promise((resolve, reject ) => {\n this.apiClient.getFeatureCollection(registratie)\n .then(featureCollection => {\n if (featureCollection != null) {\n if (featureCollection.features != null && featureCollection.features.length > 0) {\n this.terugmeldingViewData = this.terugmeldingMarshaller.produceTerugmeldingViewData(registratie, featureCollection);\n }\n }\n resolve(this.terugmeldingViewData);\n })\n .catch(error => {\n reject(BGTINFOSERVICE + \" - \" + error);\n });\n });\n }\n\n // FIXME must be removed\n getTerugmeldingStats(): TerugmeldingStats {\n return this.terugmeldingViewData.terugmeldingStats\n }\n\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"QuickWinnersChart\",class:_vm.registratie,attrs:{\"id\":\"quickwinnerschartdiv\",\"registratie\":\"registratie\",\"quickWinnersChartData\":_vm.quickWinnersChartData}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport * as am4core from \"@amcharts/amcharts4/core\";\nimport * as am4charts from \"@amcharts/amcharts4/charts\";\nimport am4themes_animated from \"@amcharts/amcharts4/themes/animated\";\nimport { TerugmeldingInfo } from '../model/TerugmeldingInfo';\nimport { TerugmeldingCountByTimeAndState } from '../model/Types';\n\nam4core.useTheme(am4themes_animated);\n\n@Component\nexport default class QuickWinnersChart extends Vue {\n @Prop() private registratie!: string;\n @Prop({default: []}) private quickWinnersChartData: [];\n\n private chart!: am4charts.XYChart;\n\n mounted() {\n let chart = am4core.create('quickwinnerschartdiv', am4charts.XYChart);\n \n // Title\n var title = chart.titles.push(new am4core.Label());\n title.text = \"Bronhouder Quick Winners top 10, afhandeling terugmeldingen in percentages\";\n title.fontSize = 20;\n title.marginBottom = 15;\n\n // Create axes\n var categoryAxis = chart.yAxes.push(new am4charts.CategoryAxis());\n categoryAxis.dataFields.category = \"bronhoudernaam\";\n categoryAxis.renderer.grid.template.location = 0;\n categoryAxis.renderer.inversed = true;\n categoryAxis.renderer.minGridDistance = 20;\n categoryAxis.renderer.axisFills.template.disabled = false;\n categoryAxis.renderer.axisFills.template.fillOpacity = 0.05;\n\n var valueAxis = chart.xAxes.push(new am4charts.ValueAxis());\n valueAxis.min = -100;\n valueAxis.max = 100;\n valueAxis.fontSize = 12;\n valueAxis.renderer.minGridDistance = 50;\n valueAxis.renderer.ticks.template.length = 5;\n valueAxis.renderer.ticks.template.disabled = false;\n valueAxis.renderer.ticks.template.strokeOpacity = 0.4;\n valueAxis.renderer.labels.template.adapter.add(\"text\", function(text) {\n return text + \"%\";\n })\n\n // Legend\n chart.legend = new am4charts.Legend();\n chart.legend.position = \"bottom\";\n chart.legend.itemContainers.template.togglable = false;\n\n\n // Use only absolute numbers\n chart.numberFormatter.numberFormat = \"##.#s\";\n\n // Create series\n function createSeries(field, name, color) {\n var series : am4charts.ColumnSeries = chart.series.push(new am4charts.ColumnSeries());\n series.dataFields.valueX = field;\n series.dataFields.categoryY = \"bronhoudernaam\";\n\n series.stacked = true;\n series.name = name;\n series.stroke = color;\n series.fill = color;\n series.columns.template.tooltipText = 'Van de in totaal [bold]{TMTotal}[/] terugmeldingen van {categoryY}\\n' +\n ' is [bold]{valueX}%[/] van de {name}';\n\n var label = series.bullets.push(new am4charts.LabelBullet);\n label.label.text = \"{valueX}%\";\n label.label.fontSize = 12;\n label.label.fill = am4core.color(\"#fff\");\n label.label.strokeWidth = 0;\n label.label.truncate = false;\n label.label.hideOversized = true;\n label.locationX = 0.5;\n return series;\n }\n\n var interfaceColors = new am4core.InterfaceColorSet();\n var positiveColor = interfaceColors.getFor(\"positive\");\n var negativeColor = interfaceColors.getFor(\"negative\");\n\n createSeries(\"TMClosedOverduePct\", \"Meldingen gesloten, buiten afhandelingstijd\", negativeColor.lighten(0.5));\n createSeries(\"TMOpenOverduePct\", \"Meldingen open, buiten afhandelingstijd\", negativeColor);\n createSeries(\"TMOpenPct\", \"Meldingen open, binnen afhandelingstijd\", positiveColor.lighten(0.5));\n createSeries(\"TMClosedPct\", \"Meldingen gesloten, binnen afhandelingstijd\", positiveColor);\n\n chart.legend.events.on(\"layoutvalidated\", function(event){\n chart.legend.itemContainers.each((container: any)=>{\n if(container.dataItem.dataContext.name == \"Never\"){\n container.toBack();\n }\n })\n })\n\n this.chart = chart;\n // the chart data will be set when it is avalible\n // at this moment in the life cycle the data is nog ready yet.\n }\n\n @Watch(\"quickWinnersChartData\") onPropertyChanged(value: [], oldValue: []) {\n if (value.length > 0) {\n const mySortedArray = value.slice(0) as Array\n mySortedArray.sort((a, b): number => {\n if (a.TMOpenOverduePct < b.TMOpenOverduePct) return -1;\n if (a.TMOpenOverduePct > b.TMOpenOverduePct) return 1;\n // return a.TMOpenOverduePct - b.TMOpenOverduePct;\n return 0;\n })\n const first10 = mySortedArray.slice(0,10) as Array\n\n this.chart.data = first10;\n } else {\n // when the vale has no length then give the craht an ampty array.\n this.chart.data = [];\n }\n }\n\n beforeDestroy() {\n if (this.chart) {\n this.chart.dispose();\n }\n }\n};\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--14-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickWinnersChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--14-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickWinnersChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QuickWinnersChart.vue?vue&type=template&id=1d6f48c2&scoped=true&\"\nimport script from \"./QuickWinnersChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./QuickWinnersChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./QuickWinnersChart.vue?vue&type=style&index=0&id=1d6f48c2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d6f48c2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"tableHeader\"},[_vm._v(\" \"+_vm._s(_vm.getTableTitle())+\" \")]),_c('b-table',{attrs:{\"striped\":\"\",\"small\":\"\",\"hover\":\"\",\"items\":_vm.tableItems(),\"fields\":_vm.fields(),\"registratie\":_vm.registratie,\"timeSort\":_vm.timeSort}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { type } from \"@amcharts/amcharts4/core\";\nimport { Overdue } from \"@/model/Overdue\";\nimport { TerugmeldingCountVelocetyInAvgHoursAndState } from \"@/model/Types\";\n\n@Component\nexport default class Table extends Vue {\n @Prop() private tableData!: [];\n @Prop({ default: \"onbekend\" }) registratie: string;\n @Prop({ default: true }) timeSort: boolean;\n\n private topperData: Array = [];\n\n private fieldsTable = [];\n private fieldBronhouder = { key: 'bronhoudernaam', label: 'Bronhouder' };\n private fieldAvgHoursClosed = { key: \"TMAvgHoursClosed\",\n label: \"Gemiddelde tijd\",\n formatter: (value, key, item) => {\n let time = \"...\";\n if (value < 1) \n { time = String(Math.round(value * 60)) + ' min'} \n else if ( value < 24) { \n time = String(Math.round(value)) + ' uur'; \n } else {\n time = String(Math.round(value / 24)) + ' dagen'; \n }\n return time.toString();\n },\n variant : '' // will be set in mounted()\n };\n private fieldTotalClosed = { key: \"TMTotalClosed\",\n label: \"Totaal gesloten\",\n variant : '' // wil be set in mounted() \n };\n\n mounted() {\n this.fieldsTable.push(this.fieldBronhouder);\n if (this.timeSort) {\n this.fieldAvgHoursClosed.variant = 'success'\n this.fieldsTable.push(this.fieldAvgHoursClosed);\n this.fieldsTable.push(this.fieldTotalClosed);\n } else {\n this.fieldTotalClosed.variant = 'success'\n this.fieldsTable.push(this.fieldTotalClosed);\n this.fieldsTable.push(this.fieldAvgHoursClosed);\n }\n }\n\n\n fields() {\n return this.fieldsTable;\n }\n tableItems(): Array {\n return this.topperData;\n }\n\n getTableTitle(): string {\n if (this.timeSort) {\n return \"Bronhouder toppers in gemiddelde afhandeltijd\"; \n } else {\n return \"Bronhouder toppers in aantal afhandelingen\";\n }\n }\n\n @Watch(\"tableData\") onPropertyChanged(value: [], oldValue: []) {\n if (value.length > 0) {\n const allTerugmeldingen = value.slice(0) as Array;\n const closedTerugmeldingen = allTerugmeldingen.filter((tm) => {\n if (tm.TMTotalClosed > 0) return true;\n });\n\n if (this.timeSort) {\n // Sorteer op de gemiddelde tijd van gesloten meldingen\n closedTerugmeldingen.sort((a, b): number => {\n if (a.TMAvgHoursClosed < b.TMAvgHoursClosed) return -1;\n if (a.TMAvgHoursClosed > b.TMAvgHoursClosed) return 1;\n return 0;\n });\n } else {\n closedTerugmeldingen.sort((a, b): number => {\n if (a.TMTotalClosed < b.TMTotalClosed) return 1;\n if (a.TMTotalClosed > b.TMTotalClosed) return -1;\n return 0;\n });\n }\n const first10 = closedTerugmeldingen.slice(0, 10);\n this.topperData = first10;\n } else {\n // when the vale has no length then give the craht an ampty array.\n this.topperData = [];\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToppersTables.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToppersTables.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ToppersTables.vue?vue&type=template&id=9391aa6a&scoped=true&\"\nimport script from \"./ToppersTables.vue?vue&type=script&lang=ts&\"\nexport * from \"./ToppersTables.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ToppersTables.vue?vue&type=style&index=0&id=9391aa6a&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9391aa6a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-card',{attrs:{\"border-variant\":\"secondary\"}},[_c('div',{staticClass:\"tableHeader\"},[_vm._v(\" Overzicht van de \"+_vm._s(_vm.getTableDataLength())+\" langst openstaande terugmeldingen per bronhouder: \")]),_c('b-table',{attrs:{\"striped\":\"\",\"small\":\"\",\"hover\":\"\",\"items\":_vm.tableItems(),\"fields\":_vm.fields,\"registratie\":_vm.registratie}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch} from 'vue-property-decorator';\nimport { type } from '@amcharts/amcharts4/core';\nimport overdueConfig from \"@/config/OverdueConfig\";\nimport { Overdue } from \"@/model/Overdue\";\n\n@Component\nexport default class Table extends Vue {\n @Prop() private tableData: [];\n @Prop({default: 'onbekend'}) registratie: string;\n\n private overdue;\n \n data () {\n return {\n fields: [\n {\n key: 'aantalWekenOpenstaand',\n label: 'Aantal weken openstaand'\n },\n {\n key: 'extra',\n label: 'Aantal maanden te laat',\n formatter: (value, key, item) => {\n return Math.round(item.aantalWekenOpenstaand / 52 * 12 - this.overdue.months)\n },\n variant: 'danger'\n },\n {\n key: 'bronhoudernaam',\n label: 'Bronhoudernaam'\n },\n {\n key: 'tijdstipRegistratie',\n label: 'Registratietijdstip',\n formatter: (value, key, item) => {\n return value.toLocaleDateString('nl-NL')\n }\n },\n {\n key: 'meldingsNummerVolledig',\n label: 'Meldingsnummer'\n }\n ]\n }\n }\n \n mounted() {\n this.overdue = overdueConfig.getOverdueFor(this.registratie);\n }\n\n tableItems(): [] {\n if (this.tableData.length > 0) {\n return this.tableData;\n } else {\n return [];\n }\n }\n\n getTableDataLength(): number{\n const data = this.tableData;\n if (data.length == undefined) {\n return -1;\n } else {\n return data.length\n }\n }\n\n @Watch('tableData')\n onPropertyChanged(value: [], oldValue: []) {\n this.overdue = overdueConfig.getOverdueFor(this.registratie);\n }\n} \n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Table.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Table.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Table.vue?vue&type=template&id=42d52d3e&scoped=true&\"\nimport script from \"./Table.vue?vue&type=script&lang=ts&\"\nexport * from \"./Table.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Table.vue?vue&type=style&index=0&id=42d52d3e&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42d52d3e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-alert',{attrs:{\"variant\":_vm.variant,\"dismissible\":\"\",\"fade\":\"\",\"show\":_vm.showDismissibleAlert},on:{\"dismissed\":function($event){return _vm.dismiss()}}},[_vm._v(\" \"+_vm._s(_vm.alertMessage)+\" \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue, Watch} from 'vue-property-decorator';\n\n@Component\nexport default class Alert extends Vue {\n @Prop({default: \"danger\"}) private variant!: string;\n @Prop({default: \"No alert message\"}) private alertMessage!: string;\n \n private showDismissibleAlert: boolean;\n\n data() {\n return {\n showDismissibleAlert: false,\n }\n }\n\n @Watch('alertMessage')\n onPropertyChanged(value: string, oldValue: string) {\n // NOTE remove oldValue ?\n if (value === '') {\n this.showDismissibleAlert = false;\n } else {\n this.showDismissibleAlert = true;\n }\n } \n\n dismiss() {\n this.showDismissibleAlert=false\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Alert.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Alert.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Alert.vue?vue&type=template&id=178f944c&\"\nimport script from \"./Alert.vue?vue&type=script&lang=ts&\"\nexport * from \"./Alert.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"StatusChart\",attrs:{\"id\":\"statuschartdiv\"}})])}]\n\nexport { render, staticRenderFns }","import {Feature} from \"geojson\";\nimport {NameTotal, TerugmeldingCountByTimeAndState, \n TerugmeldingCountVelocetyInAvgHoursAndState} from \"@/model/Types\";\nimport overdueConfig from '@/config/OverdueConfig';\nimport {StatusClosed} from \"@/model/StatusAfgerond\";\n\nclass Calculator {\n countOpenAndClosedForGroup(groupedByBrondhoudercode: Map>,\n registratie:string): Array {\n const tmCountArray = new Array();\n groupedByBrondhoudercode.forEach(terugmeldingen => {\n const tmCount = this.countOpenAndClosedAndPercentage(terugmeldingen, registratie);\n tmCountArray.push(tmCount);\n })\n return tmCountArray;\n }\n\n countOpenAndClosedAndPercentage(terugmeldingen: Array, registratie:string): TerugmeldingCountByTimeAndState {\n const name = terugmeldingen[0].properties.bronhoudernaam;\n const tmCount = { bronhoudernaam: name } as TerugmeldingCountByTimeAndState;\n tmCount.TMTotal = terugmeldingen.length;\n tmCount.TMOpen = 0;\n tmCount.TMClosed = 0;\n tmCount.TMOpenOverdue = 0;\n tmCount.TMClosedOverdue = 0;\n const overdue = overdueConfig.getOverdueFor(registratie)\n const overdueSeconds = overdue.days * 86400;\n\n terugmeldingen.forEach(terugmelding => {\n const properties = terugmelding.properties;\n // Get tijdstipRegistratie and tijdstipStatusWijziging as number\n const tijdstipRegistratie = new Date(properties.tijdstipRegistratie).getTime()\n let tijdstipStatusWijziging: number;\n if (properties.tijdstipStatusWijziging) {\n tijdstipStatusWijziging = new Date(properties.tijdstipStatusWijziging).getTime()\n } else {\n tijdstipStatusWijziging = Date.now()\n }\n // FIXME use function and use elapsedDays\n const secondsBetween = (tijdstipStatusWijziging - tijdstipRegistratie) / 1000;\n // console.log(' second in between', secondsBetween, ' and status ', properties.statusCode)\n if (secondsBetween > (overdueSeconds)) {\n // this is overdue\n if (StatusClosed.includes(properties.statusCode)) {\n // but closed\n tmCount.TMClosedOverdue++\n } else {\n // still in progress\n tmCount.TMOpenOverdue++;\n }\n } else {\n // still on time\n if (StatusClosed.includes(properties.statusCode)) {\n // and closed\n tmCount.TMClosed++\n } else {\n // and in progress\n tmCount.TMOpen++;\n }\n }\n })\n const total = tmCount.TMTotal;\n tmCount.TMOpenPct = this.calculatePercentage(total, tmCount.TMOpen);\n tmCount.TMClosedPct = this.calculatePercentage(total, tmCount.TMClosed);\n tmCount.TMOpenOverduePct = - this.calculatePercentage(total, tmCount.TMOpenOverdue);\n tmCount.TMClosedOverduePct = - this.calculatePercentage(total, tmCount.TMClosedOverdue);\n return tmCount;\n }\n\n calculatePercentage(total : number, count:number) : number {\n if (count == 0){\n return 0;\n }\n // first we calculate promillage, So numbers les tha 1% will be visible\n const promillage = Math.round(count * 1000 / total);\n return promillage / 10;\n }\n\n countOpenAndClosedAverageHours(terugmeldingen: Array, registratie:string): TerugmeldingCountVelocetyInAvgHoursAndState {\n const name = terugmeldingen[0].properties.bronhoudernaam;\n const tmAvgCount = { bronhoudernaam: name } as TerugmeldingCountVelocetyInAvgHoursAndState;\n tmAvgCount.TMTotal = terugmeldingen.length;\n tmAvgCount.TMTotalOpen = 0;\n tmAvgCount.TMAvgHoursOpen = 0;\n tmAvgCount.TMTotalClosed = 0;\n tmAvgCount.TMAvgHoursClosed = 0;\n\n terugmeldingen.forEach(terugmelding => {\n const properties = terugmelding.properties;\n // Get tijdstipRegistratie and tijdstipStatusWijziging as number\n const tijdstipRegistratie = new Date(properties.tijdstipRegistratie)\n let tijdstipStatusWijziging: number;\n if (properties.tijdstipStatusWijziging) {\n tijdstipStatusWijziging = new Date(properties.tijdstipStatusWijziging).getTime()\n } else {\n // tijdstipStatusWijziging = Date.now()\n }\n if (!StatusClosed.includes(properties.statusCode)) {\n tijdstipStatusWijziging = Date.now()\n }\n // FIXME use function and use elapsedDays\n const secondsBetween = (tijdstipStatusWijziging - tijdstipRegistratie.getTime()) / 1000;\n // console.log(' secondBetween' , secondsBetween, ' and status ', properties.statusCode)\n if (StatusClosed.includes(properties.statusCode)) {\n // calculate the hours and closed\n if (tmAvgCount.TMAvgHoursClosed) {\n let avgHours = tmAvgCount.TMAvgHoursClosed * tmAvgCount.TMTotalClosed\n avgHours += (secondsBetween / 3600)\n tmAvgCount.TMTotalClosed++;\n tmAvgCount.TMAvgHoursClosed = avgHours / tmAvgCount.TMTotalClosed;\n } else {\n tmAvgCount.TMTotalClosed++;\n tmAvgCount.TMAvgHoursClosed = secondsBetween / 3600;\n }\n } else {\n // calculate the hours and open\n if (tmAvgCount.TMAvgHoursOpen) {\n let avgHours = tmAvgCount.TMAvgHoursOpen * tmAvgCount.TMTotalOpen\n avgHours += (secondsBetween / 3600)\n tmAvgCount.TMTotalOpen++;\n tmAvgCount.TMAvgHoursOpen = avgHours / tmAvgCount.TMTotalOpen;\n } else {\n tmAvgCount.TMTotalOpen++;\n tmAvgCount.TMAvgHoursOpen = secondsBetween / 3600;\n }\n }\n })\n return tmAvgCount;\n }\n\n // Not unit tested yet\n countTotalForPropertyName(terugmeldingen: Feature[], propertyName: string): Map {\n const nameCount = new Map();\n terugmeldingen.forEach((feature) => {\n const property = feature.properties[propertyName];\n const number = nameCount.get(property);\n if (number === undefined) {\n nameCount.set(property, 1);\n } else {\n nameCount.set(property, number+1);\n }\n });\n return nameCount;\n }\n\n // TODO is this a good name?\n mapToArray(map: Map): Array {\n const items = new Array();\n map.forEach((value, key, index) => {\n const item = {name: key, total: value} as NameTotal;\n items.push(item);\n });\n return items;\n }\n}\n\nconst calculator = new Calculator();\n\nexport default calculator;\n","import { NameTotal, ItemsAndColors } from '@/model/Types';\nimport * as am4core from \"@amcharts/amcharts4/core\";\n\nclass StatusCalculator {\n\n colorMap : Map ;\n\n constructor() {\n this.colorMap = new Map();\n this.colorMap.set('NIEUW', am4core.color('#008DC9'));\n this.colorMap.set('AFGEROND', am4core.color('#70A326'));\n this.colorMap.set('AFGEWEZEN', am4core.color('#D52B1E'));\n this.colorMap.set('IN_ONDERZOEK', am4core.color('#E17020'));\n this.colorMap.set('GOEDGEKEURD', am4core.color('#70A326'));\n this.colorMap.set('DOORGESTUURD', am4core.color('#E17020'));\n this.colorMap.set('GEPARKEERD', am4core.color('#E17020'));\n }\n\n loadDataAndColor(statusCode: Map): ItemsAndColors{\n const statusSequense = ['NIEUW', 'IN_ONDERZOEK', 'GOEDGEKEURD', 'GEPARKEERD',\n 'DOORGESTUURD', 'AFGEWEZEN', 'AFGEROND']\n\n const dataItems = new Array();\n const colorArray = new Array();\n \n statusSequense.forEach(status => {\n const total = statusCode.get(status);\n if (total) {\n const lowerCaseStatus = status.toLocaleLowerCase();\n // Lowercase except the firts Letter\n const capitalizedStatusString = lowerCaseStatus.charAt(0).toUpperCase() + lowerCaseStatus.slice(1);\n // replace _ bij a psace\n dataItems.push({ name: capitalizedStatusString.replace('_',' '), total : total});\n colorArray.push(this.colorMap.get(status));\n }\n })\n return { items : dataItems , colors : colorArray};\n }\n\n}\n\nconst statusCalculator = new StatusCalculator();\n\nexport default statusCalculator;\n","\n\n\n\n\n\n\nimport {Component, Prop, Vue, Watch} from 'vue-property-decorator';\nimport {Feature} from \"geojson\";\nimport calculator from '@/services/util/Calculator'\nimport statusCalculator from './StatusCalculator'\nimport * as am4core from \"@amcharts/amcharts4/core\";\nimport * as am4charts from \"@amcharts/amcharts4/charts\";\nimport am4themes_animated from \"@amcharts/amcharts4/themes/amcharts\";\n\n// Themes begin\nam4core.useTheme(am4themes_animated);\n// Themes end\n\n@Component\nexport default class StatusChart extends Vue {\n @Prop() private features!: Feature[];\n \n private chart: am4charts.PieChart;\n private series: am4charts.PieSeries;\n\n mounted() {\n // Configure amChart\n let chart = am4core.create(\"statuschartdiv\", am4charts.PieChart);\n chart.hiddenState.properties.opacity = 0; // this creates initial fade-in\n\n chart.radius = am4core.percent(70);\n chart.innerRadius = am4core.percent(0);\n chart.startAngle = -90;\n chart.endAngle = 270;\n chart.paddingLeft = 24; \n\n this.series = chart.series.push(new am4charts.PieSeries());\n this.series.dataFields.value = \"total\";\n this.series.dataFields.category = \"name\";\n\n this.series.slices.template.cornerRadius = 0;\n this.series.slices.template.innerCornerRadius = 0;\n this.series.slices.template.draggable = false;\n // Disabling move slice on click\n var slice = this.series.slices.template;\n slice.states.getKey(\"active\").properties.shiftRadius = 0;\n\n this.series.slices.template.inert = true;\n this.series.labels.template.text = \"{value.percent.formatNumber('#.0')}%\";\n this.series.labels.template.disabled = false;\n this.series.ticks.template.disabled = true;\n this.series.alignLabels = false;\n // this.series.fontSize = 13.0;\n this.series.labels.template.events.on(\"ready\", hideSmall);\n this.series.labels.template.events.on(\"visibilitychanged\", hideSmall);\n\n function hideSmall(ev) {\n if (ev.target.dataItem && (ev.target.dataItem.values.value.percent < 1)) {\n ev.target.hide();\n }\n else {\n ev.target.show();\n }\n }\n\n // series.hiddenState.properties.startAngle = 0;\n // series.hiddenState.properties.endAngle = 0;\n\n chart.legend = new am4charts.Legend();\n chart.legend.position = \"right\";\n chart.legend.fontSize = 14.0;\n // chart.legend.width = 300;\n chart.legend.labels.template.truncate = true;\n chart.legend.labels.template.wrap = true;\n chart.legend.itemContainers.template.togglable = false;\n\n chart.legend.marginLeft = 10;\n chart.legend.marginRight = 0;\n // Set the size of the squared marker\n let markerTemplate = chart.legend.markers.template;\n markerTemplate.width = 16;\n markerTemplate.height = 16;\n this.chart = chart;\n }\n\n @Watch('features')\n recievedUpdatedFeatures(){\n // count the different statusCode\n let statusCodeTotal = calculator.countTotalForPropertyName(this.features, \"statusCode\");\n // Construct data items and colors\n const itemsAndColor = statusCalculator.loadDataAndColor(statusCodeTotal); \n this.series.colors.list = itemsAndColor.colors;\n this.chart.data = itemsAndColor.items;\n }\n\n beforeDestroy() {\n if (this.chart) {\n this.chart.dispose();\n }\n }\n}\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatusChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatusChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./StatusChart.vue?vue&type=template&id=723cff90&scoped=true&\"\nimport script from \"./StatusChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./StatusChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./StatusChart.vue?vue&type=style&index=0&id=723cff90&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"723cff90\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"BronChart\",attrs:{\"id\":\"bronchartdiv\"}})])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport {Component, Prop, Vue, Watch} from 'vue-property-decorator';\nimport {Feature} from \"geojson\";\nimport calculator from '@/services/util/Calculator'\nimport * as am4core from \"@amcharts/amcharts4/core\";\nimport * as am4charts from \"@amcharts/amcharts4/charts\";\nimport am4themes_animated from \"@amcharts/amcharts4/themes/animated\";\nimport { NameTotal } from '@/model/Types';\n\n// Themes begin\nam4core.useTheme(am4themes_animated);\n// Themes end\n\n@Component\nexport default class StatusChart extends Vue {\n @Prop() private features!: Feature[];\n \n private chart: am4charts.PieChart;\n\n mounted() {\n // Configure amChart\n let chart = am4core.create(\"bronchartdiv\", am4charts.PieChart);\n chart.hiddenState.properties.opacity = 0; // this creates initial fade-in\n\n chart.radius = am4core.percent(70);\n chart.innerRadius = am4core.percent(0);\n chart.startAngle = 0;\n chart.endAngle = 360; \n chart.paddingLeft = 24; \n\n let series = chart.series.push(new am4charts.PieSeries());\n series.dataFields.value = \"total\";\n series.dataFields.category = \"name\";\n\n // series.colors.list = [\n // am4core.color('#388E3C'),\n // am4core.color('#FBC02D'),\n // am4core.color('#0288D1'),\n // am4core.color('#F44336'),\n // am4core.color('#8E24AA')\n // ]\n // Andere mogelijkheid:\n // series.colors.list = [\"#388E3C\", \"#FBC02D\", \"#0288d1\", \"#F44336\", \"#8E24AA\"].map(function(color) {\n // return new am4core.color(color);\n // });\n\n series.slices.template.cornerRadius = 0;\n series.slices.template.innerCornerRadius = 0;\n series.slices.template.draggable = false;\n // Disabling move slice on click\n var slice = series.slices.template;\n slice.states.getKey(\"active\").properties.shiftRadius = 0;\n series.slices.template.inert = true;\n series.labels.template.text = \"{value.percent.formatNumber('#.0')}%\";\n series.labels.template.disabled = false;\n series.ticks.template.disabled = true;\n series.alignLabels = false;\n series.labels.template.events.on(\"ready\", hideSmall);\n series.labels.template.events.on(\"visibilitychanged\", hideSmall);\n\nfunction hideSmall(ev) {\n if (ev.target.dataItem && (ev.target.dataItem.values.value.percent < 1)) {\n ev.target.hide();\n }\n else {\n ev.target.show();\n }\n}\n\n\n series.hiddenState.properties.startAngle = 90;\n series.hiddenState.properties.endAngle = 90;\n\n chart.legend = new am4charts.Legend();\n chart.legend.position = \"right\";\n chart.legend.fontSize = 14.0;\n chart.legend.itemContainers.template.togglable = false;\n\n // chart.legend.width = 300;\n chart.legend.labels.template.truncate = false;\n chart.legend.labels.template.wrap = true;\n chart.legend.marginLeft = 10;\n chart.legend.marginRight = 0;\n // Set the size of the squared marker\n let markerTemplate = chart.legend.markers.template;\n markerTemplate.width = 16;\n markerTemplate.height = 16;\n this.chart = chart;\n }\n\n @Watch('features')\n stomHoor(){\n // update die handel\n let bronTotal = calculator.countTotalForPropertyName(this.features, \"bron\");\n let items : Array = calculator.mapToArray(bronTotal);\n // give data to amChart\n this.chart.data = items;\n }\n\n beforeDestroy() {\n if (this.chart) {\n this.chart.dispose();\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BronChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BronChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BronChart.vue?vue&type=template&id=dfa27388&scoped=true&\"\nimport script from \"./BronChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./BronChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BronChart.vue?vue&type=style&index=0&id=dfa27388&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dfa27388\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-row',{attrs:{\"no-gutters\":\"\"}},[_c('b-col',{attrs:{\"sm\":\"4\"}},[_c('b-card',{staticClass:\"mr-2\",staticStyle:{\"min-width\":\"10rem\"},attrs:{\"border-variant\":\"secondary\",\"header\":\"Totaal aantal terugmeldingen de laatste maand:\",\"header-border-variant\":\"secondary\",\"align\":\"center\"}},[_c('b-card-text',{staticClass:\"mb-0\"},[_c('h1',[_vm._v(_vm._s(_vm.terugmeldingStats.totalLastMonth))])])],1)],1),_c('b-col',{attrs:{\"sm\":\"4\"}},[_c('b-card',{staticClass:\"mx-2\",staticStyle:{\"min-width\":\"10rem\"},attrs:{\"border-variant\":\"secondary\",\"header\":\"Totaal aantal actieve terugmeldingen:\",\"header-border-variant\":\"secondary\",\"align\":\"center\"}},[_c('b-card-text',{staticClass:\"mb-0\"},[_c('h1',[_vm._v(_vm._s(_vm.terugmeldingStats.totalActive))])])],1)],1),_c('b-col',{attrs:{\"sm\":\"4\"}},[_c('b-card',{staticClass:\"ml-2\",staticStyle:{\"min-width\":\"10rem\"},attrs:{\"border-variant\":\"secondary\",\"header\":_vm.header(),\"header-border-variant\":\"secondary\",\"align\":\"center\"}},[_c('b-card-text',{staticClass:\"mb-0\"},[_c('h1',[_vm._v(_vm._s(_vm.terugmeldingStats.totalOverdue))])])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import {Feature } from \"geojson\";\nimport {StatusClosed} from '@/model/StatusAfgerond';\nimport {TerugmeldingStats} from \"@/model/TerugmeldingStats\";\nimport overdueConfig from \"@/config/OverdueConfig\";\n\nclass CardDeckStatsCalculator {\n // 7 days, 24 uur, 60 minutes etc\n DAYS = 24 * 60 * 60 * 1000;\n WEEKS = 7 * this.DAYS;\n\n constructor() {\n }\n\n produceTerugmeldingViewData(registratie : string, features: Feature[]): TerugmeldingStats {\n const terugmeldingStats = {} as TerugmeldingStats;\n terugmeldingStats.totalActive = features.length;\n terugmeldingStats.totalLastMonth = this.calculateTotalForLastMonth(features)\n const activeFeatures = features.filter(this.active);\n const overdue = overdueConfig.getOverdueFor(registratie);\n terugmeldingStats.overdueMonths = overdue.months;\n terugmeldingStats.totalOverdue = this.calculateTotalOverdueForDays(activeFeatures, overdue.days);\n return terugmeldingStats;\n }\n\n calculateTotalForLastMonth(features: Feature[]): number {\n // TODO Calculate year and month\n const now = new Date();\n let currentMonth = now.getMonth();\n let currentYear = now.getFullYear();\n if (currentMonth === 0) {\n currentMonth = 11;\n currentYear--;\n } else {\n currentMonth--;\n }\n return this.calculateTotalForYearAndMonth(features, currentYear, currentMonth);\n }\n\n private calculateTotalForYearAndMonth(features: Feature[], year: number, month: number): number {\n features.sort(this.sortOnTijdstipRegistratie);\n const lastMonthFeatures = features.filter(feature => {\n const date = new Date(feature.properties.tijdstipRegistratie);\n const tijdStipregistratieMonth = date.getMonth();\n const tijdStipregistratieYear = date.getFullYear()\n return tijdStipregistratieYear === year && tijdStipregistratieMonth === month\n });\n return lastMonthFeatures.length;\n }\n\n calculateTotalOverdueForDays(features: Feature[], days: number): number {\n const now = new Date();\n const overdueFeatures = features.filter(feature => {\n const tijdstipRegistratie = new Date(feature.properties.tijdstipRegistratie);\n const numberOfDays = this.calculateDaysFromDate(tijdstipRegistratie, now);\n return numberOfDays > days;\n });\n return overdueFeatures.length;\n }\n\n active(a: Feature): boolean {\n // closed is true when statusCode is like : DOORGESTUURD,AFGEWEZEN,AFGEROND\"\n const statusCode = a.properties.statusCode;\n if (statusCode === undefined) {\n return true;\n }\n const closed = StatusClosed.includes(statusCode);\n return !closed; // when NOT closed it is active\n }\n\n sortOnTijdstipRegistratie(a: Feature, b: Feature): number {\n function getDateOrNull(feature: Feature): Date | undefined {\n if (feature === null) {\n return undefined;\n }\n if (feature.properties === null) {\n return undefined;\n }\n return feature.properties.tijdstipRegistratie;\n }\n\n const aDate = getDateOrNull(a);\n const bDate = getDateOrNull(b);\n if (aDate === bDate) {\n return 0;\n }\n if (aDate === undefined) {\n return -1;\n }\n if (bDate === undefined) {\n return 1;\n }\n // return 50 - 100 = -50, ligt dus op volgorde\n return new Date(aDate).getTime() - new Date(bDate).getTime();\n }\n\n findOldestGroupedByBrondhoudernaam(features: Feature[]): Feature[] {\n const resultFeatures = new Array();\n const selectedBronhouders = new Array();\n features.forEach(feature => {\n const currentBronhoudernaam = feature.properties.bronhoudernaam;\n if (selectedBronhouders.includes(currentBronhoudernaam)) {\n // already select, continue\n } else {\n resultFeatures.push(feature);\n selectedBronhouders.push(currentBronhoudernaam);\n }\n });\n return resultFeatures;\n }\n\n calculateWeeksFromDate(givenDate: Date, fromDate: Date): number {\n if (givenDate === undefined || fromDate === undefined) {\n return -1;\n }\n const elapsedTime = fromDate.getTime() - givenDate.getTime();\n const weeks = elapsedTime / this.WEEKS;\n return Math.round(weeks);\n }\n\n calculateDaysFromDate(givenDate: Date, fromDate: Date): number {\n if (givenDate === undefined || fromDate === undefined) {\n return -1;\n }\n const elapsedTime = fromDate.getTime() - givenDate.getTime();\n const weeks = elapsedTime / this.DAYS\n return Math.round(weeks);\n }\n\n}\n\nconst cardDeckStatsCalculator = new CardDeckStatsCalculator();\n\nexport default cardDeckStatsCalculator;\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue, Watch} from 'vue-property-decorator';\nimport { TerugmeldingStats, terugmeldingStatsDefaults } from '@/model/TerugmeldingStats';\nimport { Feature } from 'geojson';\nimport cardDeckStatsCalculator from './CardDeckStatsCalculator';\n\n@Component\nexport default class CardDeckStats extends Vue {\n\n @Prop({default: 'onbekend'}) registratie: string;\n @Prop() private features!: Feature[];\n // Dit geeft een error\n // @Prop({default: []}) private terugmeldingen!: FeatureCollection;\n\n private terugmeldingStats: TerugmeldingStats = terugmeldingStatsDefaults;\n \n data() {\n return {\n terugmeldingStats: terugmeldingStatsDefaults\n };\n }\n\n header() {\n return 'Open terugmeldingen ouder dan ' + this.terugmeldingStats.overdueMonths + ' maanden:'\n }\n\n @Watch('features')\n updateTerugmeldingStats(value: [], oldValue: []){\n const copyFeatures = value.slice()\n this.terugmeldingStats = cardDeckStatsCalculator.produceTerugmeldingViewData(this.registratie, copyFeatures);\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardDeckStats.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardDeckStats.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CardDeckStats.vue?vue&type=template&id=b23956a4&scoped=true&\"\nimport script from \"./CardDeckStats.vue?vue&type=script&lang=ts&\"\nexport * from \"./CardDeckStats.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b23956a4\",\n null\n \n)\n\nexport default component.exports","import { FeatureCollection} from \"geojson\";\n\nclass ApiClient {\n private prodKey: string = \"l713872cda4c1a48aa8bc609cc8501bcd1\";\n private ftoKey: string = \"l798369319de3946828f1e6c700f74972b\";\n\n private ftoURL = \"https://api.acceptatie.kadaster.nl/tms/v1/terugmeldingen?registratie=\";\n private prodURL = \"https://api.kadaster.nl/tms/v1/terugmeldingen?registratie=\";\n // test purpose\n private localHost = \"http://localhost:8080/BgtTerugmeldingen.json\";\n \n getFeatureCollection(registratie: string): Promise {\n \n // const url = this.ftoURL + registratie;\n const url = this.prodURL + registratie;\n return fetch(url, {\n method: 'GET',\n mode: 'cors',\n headers: {\n // apikey: this.ftoKey,\n apikey: this.prodKey,\n \"API-Version\": \"1.0.0\"\n }\n })\n .then(response => {\n if (!response.ok) {\n // If not OK (200) throw error\n throw Error(response.statusText);\n }\n // this retuns a promise that wil be retunr to the user of the ApiClient\n return response.json();\n })\n .catch(function (err) {\n const error = err as Error;\n // rethrow only the message, not the compleet Error\n throw Error(error.message);\n });\n }\n}\n\nconst apiClient = new ApiClient();\n\nexport { ApiClient };\nexport default apiClient;","import apiClient from './ApiClient';\nimport {FeatureCollection} from 'geojson';\n\nconst TERUGMELDING_SERVICE = 'TerugmeldingService';\n\nexport class TerugmeldingService {\n\n retrieveFeatures(registratie: string): Promise {\n return new Promise((resolve, reject ) => {\n apiClient.getFeatureCollection(registratie)\n .then(result => {\n resolve(result);\n })\n .catch(error => {\n reject(TERUGMELDING_SERVICE + \" - \" + error);\n });\n });\n }\n\n}\n","import {Feature} from \"geojson\";\nimport {StatusClosed} from '@/model/StatusAfgerond'\n\nclass Convertor {\n\n groupByBronhoudercode(terugmeldingen: Array): Map> {\n const bronhoudercodeMap = new Map>();\n terugmeldingen.forEach((terugmelding) => {\n const bronhoudercode = terugmelding.properties.bronhoudercode;\n let bronhouderArray = bronhoudercodeMap.get(bronhoudercode);\n if (bronhouderArray) {\n bronhouderArray.push(terugmelding);\n } else {\n bronhouderArray = new Array();\n bronhouderArray.push(terugmelding);\n bronhoudercodeMap.set(bronhoudercode, bronhouderArray);\n }\n });\n return bronhoudercodeMap;\n }\n\n filterOutOpen(terugmeldingen: Array): Array{\n\n const closedTerugmeldingen = terugmeldingen.filter(terugmelding => {\n return StatusClosed.includes(terugmelding.properties.statusCode)\n });\n\n return closedTerugmeldingen;\n }\n\n filterOutClosed(terugmeldingen: Array): Array{\n\n const openTerugmeldingen = terugmeldingen.filter(terugmelding => {\n // When not closed, it is open ;-) \n return !StatusClosed.includes(terugmelding.properties.statusCode)\n });\n\n return openTerugmeldingen;\n }\n\n\n}\n\nconst convertor = new Convertor();\n\nexport default convertor;\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue, Watch} from 'vue-property-decorator';\nimport { BgtInfoService } from '@/services/BgtInfoService';\nimport QuickWinnersChart from './QuickWinnersChart.vue';\nimport ToppersTables from './topper/ToppersTables.vue';\nimport Table from '@/components/table/Table.vue';\nimport Alert from '@/components/alert/Alert.vue';\nimport StatusChart from '@/components/status/StatusChart.vue';\nimport BronChart from '@/components/bron/BronChart.vue';\nimport CardDeckStats from '@/components/carddeckstats/CardDeckStats.vue';\nimport { ApiClient } from '@/services/ApiClient';\nimport { TerugmeldingStats, terugmeldingStatsDefaults} from '@/model/TerugmeldingStats';\nimport { TerugmeldingInfo, } from '@/model/TerugmeldingInfo';\nimport { TerugmeldingService } from '../services/TerugmeldingService';\nimport {TerugmeldingCountByTimeAndState, TerugmeldingCountVelocetyInAvgHoursAndState} from '@/model/Types'\nimport calculator from \"@/services/util/Calculator\";\nimport convertor from '@/services/util/Convertor';\nimport { Feature } from 'geojson';\n\n\n@Component({\n components: {\n StatusChart,\n BronChart,\n QuickWinnersChart,\n ToppersTables,\n Table,\n CardDeckStats,\n Alert\n }\n})\nexport default class MainContainer extends Vue {\n @Prop({default: 'onbekend'}) registratie: string;\n\n private bgtService : BgtInfoService;\n private terugmeldingService : TerugmeldingService;\n\n private now : string;\n private tableData: TerugmeldingInfo[];\n private variant : string;\n private alertMessage : string;\n\n private quickWinnersArray: Array;\n private topperArray: Array;\n private features : Array;\n\n data() {\n return {\n now: '...',\n barChartTop5: [],\n barChartFlop5: [],\n tableData: {},\n variant: '',\n alertMessage: '',\n quickWinnersArray: [],\n topperArray: [],\n features: []\n };\n }\n\n mounted() {\n this.bgtService = new BgtInfoService(new ApiClient());\n this.terugmeldingService = new TerugmeldingService();\n this.refresh();\n this.generateData();\n }\n\n @Watch('registratie')\n onPropertyChanged(value: string, oldValue: string) {\n this.refresh();\n this.generateData();\n }\n\n updated() {\n // to show time lapse\n this.now = new Date().toLocaleTimeString();\n }\n\n private refresh() {\n this.now = new Date().toLocaleTimeString();\n this.alertMessage=''; // reset allertMessage\n this.bgtService.refreshData(this.registratie)\n .then(result => {\n this.tableData = result.flop10;\n })\n .catch(error => {\n this.variant = 'danger';\n this.alertMessage=error;\n });\n }\n\n private generateData() {\n this.terugmeldingService.retrieveFeatures(this.registratie)\n .then(result => {\n this.features = result.features;\n const groupedByBrondhoudercode = convertor.groupByBronhoudercode(this.features);\n this.quickWinnersArray = calculator.countOpenAndClosedForGroup(groupedByBrondhoudercode, this.registratie);\n \n this.topperArray = [];\n groupedByBrondhoudercode.forEach(terugmeldingen => {\n const tmCount = calculator.countOpenAndClosedAverageHours(terugmeldingen, this.registratie);\n this.topperArray.push(tmCount);\n })\n })\n .catch(error => {\n this.variant = 'danger';\n this.alertMessage = error;\n // clear chart data\n this.quickWinnersArray = [];\n this.topperArray = [];\n });\n }\n\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--14-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainContainer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--14-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainContainer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MainContainer.vue?vue&type=template&id=17226142&scoped=true&\"\nimport script from \"./MainContainer.vue?vue&type=script&lang=ts&\"\nexport * from \"./MainContainer.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MainContainer.vue?vue&type=style&index=0&id=17226142&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17226142\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-card',{staticClass:\"mb-2 mb-sm-4 mx-auto\",staticStyle:{\"max-width\":\"60rem\"},attrs:{\"border-variant\":\"secondary\",\"header\":\"Contact informatie\",\"header-border-variant\":\"secondary\",\"align\":\"center\"}},[_c('b-card-text',[_vm._v(\" Terugmelding Inzicht is gecreëerd door RenS. \"),_c('br'),_c('br'),_vm._v(\" Vragen of opmerkingen? Stuur ons een \"),_c('a',{attrs:{\"href\":'mailto:' + _vm.adres}},[_vm._v(\"bericht\")])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\n\n@Component\nexport default class Contact extends Vue {\n\n data() {\n return {\n adres: '%69%6E%66%6F@%74%65%72%75%67%6D%65%6C%64%69%6E%67%69%6E%7A%69%63%68%74.%6E%6C'\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Contact.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Contact.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Contact.vue?vue&type=template&id=125c2b32&\"\nimport script from \"./Contact.vue?vue&type=script&lang=ts&\"\nexport * from \"./Contact.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-card',{staticClass:\"mb-2 mb-sm-4 mx-auto\",staticStyle:{\"max-width\":\"60rem\"},attrs:{\"border-variant\":\"secondary\",\"header\":\"About Terugmelding Inzicht\",\"header-border-variant\":\"secondary\",\"align\":\"left\"}},[_c('b-card-text',[_vm._v(\" Terugmelding Inzicht toont actuele statistieken over terugmeldingen op de \"),_c('b-link',{attrs:{\"target\":\"blank\",\"href\":_vm.bgtLink}},[_vm._v(\"Basisregistratie Grootschalige Topografie (BGT)\")]),_vm._v(\" en \"),_c('b-link',{attrs:{\"target\":\"blank\",\"href\":_vm.bagLink}},[_vm._v(\"Basisregistratie Adressen en Gebouwen (BAG)\")]),_vm._v(\". Deze gegevens worden rechtstreeks opgehaald uit de \"),_c('b-link',{attrs:{\"target\":\"blank\",\"href\":_vm.apiLink}},[_vm._v(\"Terugmelding API\")]),_vm._v(\" Iedereen kan een terugmelding doen, wanneer hij of zij denkt dat de basisregistratie ergens niet klopt. Voor de BGT (en \"),_c('b-link',{attrs:{\"target\":\"blank\",\"href\":_vm.brtLink}},[_vm._v(\"Basisregistratie Topografie (BRT)\")]),_vm._v(\") kan dit via \"),_c('b-link',{attrs:{\"target\":\"blank\",\"href\":_vm.verbeterdekaartLink}},[_vm._v(\"verbeter de kaart\")]),_vm._v(\" en voor de BAG via de \"),_c('b-link',{attrs:{\"target\":\"blank\",\"href\":_vm.bagViewerLink}},[_vm._v(\"BAG viewer\")]),_vm._v(\". \"),_c('br'),_c('br'),_vm._v(\" Bronhouders zijn wettelijk verplicht om deze terugmeldingen te onderzoeken en af te handelen. Dit zijn vaak gemeenten (BAG), maar het kunnen ook waterschappen, provincies of rijksoverheidsinstellingen zijn (BGT). Helaas gaat de afhandeling niet bij elke organisatie even voorspoedig. Terugmelding Inzicht toont daarom de organisaties waar het goed gaat (Toppers) en de organisaties die nog wat aanmoediging kunnen gebruiken (Quick Winners). \")],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\n\n@Component\nexport default class About extends Vue {\n\n data() {\n return {\n bagLink: 'https://www.geobasisregistraties.nl/basisregistraties/adressen-en-gebouwen',\n brtLink: 'https://www.geobasisregistraties.nl/basisregistraties/topografie',\n bgtLink: 'https://www.geobasisregistraties.nl/basisregistraties/grootschalige-topografie/basisregistratie-grootschalige-topografie',\n apiLink: 'https://www.pdok.nl/restful-api/-/article/terugmeldingen-1',\n verbeterdekaartLink: 'https://www.verbeterdekaart.nl/',\n bagViewerLink: 'https://bagviewer.kadaster.nl/lvbag/bag-viewer/'\n }\n }\n\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./About.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--14-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./About.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./About.vue?vue&type=template&id=72139a71&\"\nimport script from \"./About.vue?vue&type=script&lang=ts&\"\nexport * from \"./About.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport MainContainer from '@/components/MainContainer.vue'\nimport Contact from '@/components/contact/Contact.vue'\nimport About from '@/components/about/About.vue'\n\nVue.use(VueRouter)\n\nconst routes = [\n {\n path: '/registratie/:registratie',\n name : 'Registratie',\n component: MainContainer, props: true\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/contact',\n name: 'Contact',\n component: Contact\n },\n {\n path: '/',\n redirect: '/Registratie/BAG',\n name: 'Root',\n }\n]\n\nconst router = new VueRouter({\n routes\n})\n\nexport default router\n","import Vue from \"vue\";\nimport App from \"./App.vue\";\nimport { BootstrapVue, IconsPlugin } from \"bootstrap-vue\"\nimport router from './router'\n\n// Install BootstrapVue\nVue.use(BootstrapVue)\n// Optionally install the BootstrapVue icon components plugin\nVue.use(IconsPlugin)\n\nVue.config.productionTip = false;\n\nnew Vue({\n router,\n render: h => h(App)\n}).$mount(\"#app\");\n"],"sourceRoot":""}