{"version":3,"sources":["webpack:///./src/components/fairway/Fairwayprofile.vue","webpack:///src/components/fairway/Fairwayprofile.vue","webpack:///./src/components/fairway/Fairwayprofile.vue?f338","webpack:///./src/components/fairway/Fairwayprofile.vue?bb7e","webpack:///./node_modules/core-js/modules/_array-fill.js","webpack:///./src/components/fairway/Fairwayprofile.vue?6405","webpack:///./node_modules/core-js/modules/es6.array.fill.js","webpack:///./node_modules/debounce/index.js","webpack:///./node_modules/core-js/modules/es6.number.is-finite.js","webpack:///./src/lib/DefaultDiagramTemplate.js"],"names":["render","_vm","this","_c","_self","staticClass","attrs","title","close","openLayersMap","staticStyle","directives","name","rawName","_v","style","getLayerStyle","fillColor","strokeColor","value","form","template","expression","on","$event","$$selectedVal","Array","prototype","filter","call","target","options","o","selected","map","val","_value","$set","multiple","applyChange","_l","templates","key","domProps","_s","downloadPDF","concat","fileName","downloadImage","fairwayData","_e","refWaterlevelValid","waterlevelValid","staticRenderFns","GROUND_COLOR","WATER_COLOR","isNumber","Number","isFinite","mixins","diagram","pdfgen","templateLoader","components","DiagramLegend","data","resizeListenerFunction","width","height","defaultTemplate","defaultDiagramTemplate","pdf","doc","templateData","computed","_objectSpread","mapGetters","mapState","_this","dates","selectedSurvey","date_info","waterlevelLabel","selectedWaterLevel","depth_reference","additionalSurvey","push","d","$options","filters","dateTime","waterlevelMeasurement","waterlevel","$gettext","bottleneck","get","join","currentData","currentProfile","hasOwnProperty","points","additionalData","_this2","getLayer","getSource","getFeatures","find","f","selectedBottleneck","refWaterlevel","waterlevel_value","downloadFilename","watch","depth","useCustomDepth","drawDiagram","waterLevels","$store","commit","methods","addLegendToCanvas","ctx","_ref","x","y","font","textAlign","beginPath","fillStyle","strokeStyle","arc","Math","PI","fill","stroke","fillText","closePath","setLineDash","paneSetup","dispatch","los","getStyle","getFill","getColor","getStroke","strokeDash","getLineDash","_this3","loadTemplates","then","response","prepareImages","template_data","elements","values","forEach","v","index","url","catch","error","message","_error$response","status","displayError","fairwayInfo","generatePDF","diagramTitle","save","addDiagramLegend","position","offset","color","setFontSize","getStringUnitWidth","indexOf","getTextHeight","setTextColor","setDrawColor","setFillColor","circle","text","toRGB","s","_s$match","match","_s$match2","_slicedToArray","r","g","b","toHex","n","parseInt","toString","length","los1Color","los1Fill","los2Color","los2Fill","los3Color","los3Fill","setLineDashPattern","getPrintLayout","svgHeight","svgWidth","main","top","floor","right","bottom","left","d3","remove","scaleFairwayProfile","layout","renderTo","element","dimensions","getDimensions","_ref2","svg","append","attr","mainHeight","offsetY","_this$generateScalesA","generateScalesAndGraph","xScale","yScaleRight","graph","drawWaterlevel","drawLabels","drawProfile","opacity","drawFairway","_ref3","_this4","undefined","_step","_iterator","_createForOfIteratorHelper","_loop","coordinates","_coordinates","startPoint","endPoint","referenceDepth","maxAlt","customdepth","fairwayArea","y0","y1","strokColor","_strokColor$substring","substring","split","_strokColor$substring2","rgb","datum","done","err","e","_ref4","_ref5","_this5","domain","totalLength","rangeRound","upperLimit","minAlt","abs","yScaleLeft","xAxis","tickSizeOuter","ticks","yAxisRight","tickSizeInner","scale","yAxisLeft","tickFormat","mainMargin","selectAll","select","parentNode","_ref6","waterArea","_ref7","_step2","_this6","_iterator2","part","profileLine","profileArea","document","querySelector","clientHeight","clientWidth","created","debounce","window","addEventListener","mounted","_this7","setTimeout","HTTP","headers","localStorage","getItem","_error$response2","updated","destroyed","removeEventListener","component","toObject","toAbsoluteIndex","toLength","module","exports","O","aLen","arguments","end","endPos","$export","P","func","wait","immediate","timeout","args","context","timestamp","result","later","last","Date","now","apply","debounced","callNow","clear","clearTimeout","flush","_isFinite","S","it","properties","paperSize","type","fontsize"],"mappings":"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","file":"js/chunk-47ec679b.3b83f764.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"d-flex flex-column flex-fill\"},[_c('UIBoxHeader',{attrs:{\"icon\":\"chart-area\",\"title\":_vm.title,\"closeCallback\":_vm.close}}),(_vm.openLayersMap())?_c('div',{staticClass:\"d-flex flex-fill\"},[_c('DiagramLegend',[_c('div',{staticClass:\"legend\"},[_c('span',{staticStyle:{\"background-color\":\"#5995ff\",\"width\":\"20px\",\"height\":\"20px\"}}),_c('span',{directives:[{name:\"translate\",rawName:\"v-translate\"}],staticClass:\"fix-trans-space\",staticStyle:{\"display\":\"inline\"}},[_vm._v(\"Water\")])]),_c('div',{staticClass:\"legend\"},[_c('span',{style:('width: 16px; height: 16px; background:' +\n this.getLayerStyle(1).fillColor +\n '; border: dotted 2px ' +\n this.getLayerStyle(1).strokeColor +\n '; background-clip: padding-box; box-sizing: content-box;')}),_c('span',{directives:[{name:\"translate\",rawName:\"v-translate\"}],staticClass:\"fix-trans-space\",staticStyle:{\"display\":\"inline\"}},[_vm._v(\"Fairway (LOS 1)\")])]),_c('div',{staticClass:\"legend\"},[_c('span',{style:('width: 16px; height: 16px; background:' +\n this.getLayerStyle(2).fillColor +\n '; border: dashed 2px ' +\n this.getLayerStyle(2).strokeColor +\n '; background-clip: padding-box; box-sizing: content-box;')}),_c('span',{directives:[{name:\"translate\",rawName:\"v-translate\"}],staticClass:\"fix-trans-space\",staticStyle:{\"display\":\"inline\"}},[_vm._v(\"Fairway (LOS 2)\")])]),_c('div',{staticClass:\"legend\"},[_c('span',{style:('width: 16px; height: 16px; background:' +\n this.getLayerStyle(3).fillColor +\n '; border: solid 2px ' +\n this.getLayerStyle(3).strokeColor +\n '; background-clip: padding-box; box-sizing: content-box;')}),_c('span',{directives:[{name:\"translate\",rawName:\"v-translate\"}],staticClass:\"fix-trans-space\",staticStyle:{\"display\":\"inline\"}},[_vm._v(\"Fairway (LOS 3)\")])]),_c('div',{staticClass:\"legend\"},[_c('span',{staticStyle:{\"width\":\"14px\",\"height\":\"14px\",\"background-color\":\"#4a2f06\",\"border\":\"solid 3px black\",\"background-clip\":\"padding-box\",\"box-sizing\":\"content-box\"}}),_c('span',{directives:[{name:\"translate\",rawName:\"v-translate\"}],staticClass:\"fix-trans-space\",staticStyle:{\"display\":\"inline\"}},[_vm._v(\"Sediment\")])]),_c('div',{staticClass:\"legend\"},[_c('span',{staticStyle:{\"width\":\"14px\",\"height\":\"14px\",\"background-color\":\"rgba(74, 47, 6, 0.6)\",\"border\":\"solid 3px #943007\",\"background-clip\":\"padding-box\",\"box-sizing\":\"content-box\"}}),_c('span',{directives:[{name:\"translate\",rawName:\"v-translate\"}],staticClass:\"fix-trans-space\",staticStyle:{\"display\":\"inline\"}},[_vm._v(\"Sediment (Compare)\")])]),_c('div',[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form.template),expression:\"form.template\"}],staticClass:\"form-control d-block custom-select-sm w-100\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.form, \"template\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])},_vm.applyChange]}},_vm._l((_vm.templates),function(template){return _c('option',{key:template.name,domProps:{\"value\":template}},[_vm._v(\"\\n \"+_vm._s(template.name)+\"\\n \")])}),0),_c('button',{staticClass:\"btn btn-sm btn-info d-block w-100 mt-2\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.downloadPDF}},[_c('translate',[_vm._v(\"Export to PDF\")])],1),_c('a',{staticClass:\"btn btn-sm btn-info text-white d-block w-100 mt-2\",attrs:{\"id\":\"fairwaypng\",\"download\":`${_vm.fileName}.png`},on:{\"click\":function($event){return _vm.downloadImage('fairwaypng', _vm.title)}}},[_c('translate',[_vm._v(\"Export as Image\")])],1)])]),_c('div',{staticClass:\"d-flex flex-fill justify-content-center align-items-center diagram-container position-relative\",attrs:{\"id\":\"pdfContainer\"}},[_c('div',{staticClass:\"direction-indicator\"}),(!_vm.fairwayData)?_c('div',[_c('translate',[_vm._v(\"No data available.\")])],1):_vm._e(),(!_vm.refWaterlevelValid)?_c('div',[_c('translate',[_vm._v(\"No valid reference waterlevel data available.\")])],1):_vm._e(),(!_vm.waterlevelValid)?_c('div',[_c('translate',[_vm._v(\"No valid waterlevel data available.\")])],1):_vm._e()])],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"d-flex flex-column flex-fill\">\n <UIBoxHeader icon=\"chart-area\" :title=\"title\" :closeCallback=\"close\" />\n <div class=\"d-flex flex-fill\" v-if=\"openLayersMap()\">\n <DiagramLegend>\n <div class=\"legend\">\n <span\n style=\"background-color: #5995ff; width: 20px; height: 20px;\"\n ></span>\n <span class=\"fix-trans-space\" style=\"display:inline;\" v-translate\n >Water</span\n >\n </div>\n <div class=\"legend\">\n <span\n :style=\"\n 'width: 16px; height: 16px; background:' +\n this.getLayerStyle(1).fillColor +\n '; border: dotted 2px ' +\n this.getLayerStyle(1).strokeColor +\n '; background-clip: padding-box; box-sizing: content-box;'\n \"\n ></span>\n <span class=\"fix-trans-space\" style=\"display:inline;\" v-translate\n >Fairway (LOS 1)</span\n >\n </div>\n <div class=\"legend\">\n <span\n :style=\"\n 'width: 16px; height: 16px; background:' +\n this.getLayerStyle(2).fillColor +\n '; border: dashed 2px ' +\n this.getLayerStyle(2).strokeColor +\n '; background-clip: padding-box; box-sizing: content-box;'\n \"\n ></span>\n <span class=\"fix-trans-space\" style=\"display:inline;\" v-translate\n >Fairway (LOS 2)</span\n >\n </div>\n <div class=\"legend\">\n <span\n :style=\"\n 'width: 16px; height: 16px; background:' +\n this.getLayerStyle(3).fillColor +\n '; border: solid 2px ' +\n this.getLayerStyle(3).strokeColor +\n '; background-clip: padding-box; box-sizing: content-box;'\n \"\n ></span>\n <span class=\"fix-trans-space\" style=\"display:inline;\" v-translate\n >Fairway (LOS 3)</span\n >\n </div>\n <div class=\"legend\">\n <span\n style=\"width: 14px; height: 14px; background-color: #4a2f06; border: solid 3px black; background-clip: padding-box; box-sizing: content-box;\"\n ></span>\n <span class=\"fix-trans-space\" style=\"display:inline;\" v-translate\n >Sediment</span\n >\n </div>\n <div class=\"legend\">\n <span\n style=\"width: 14px; height: 14px; background-color: rgba(74, 47, 6, 0.6); border: solid 3px #943007; background-clip: padding-box; box-sizing: content-box;\"\n ></span>\n <span class=\"fix-trans-space\" style=\"display:inline;\" v-translate\n >Sediment (Compare)</span\n >\n </div>\n <div>\n <select\n v-model=\"form.template\"\n @change=\"applyChange\"\n class=\"form-control d-block custom-select-sm w-100\"\n >\n <option\n v-for=\"template in templates\"\n :value=\"template\"\n :key=\"template.name\"\n >\n {{ template.name }}\n </option>\n </select>\n <button\n @click=\"downloadPDF\"\n type=\"button\"\n class=\"btn btn-sm btn-info d-block w-100 mt-2\"\n >\n <translate>Export to PDF</translate>\n </button>\n <a\n @click=\"downloadImage('fairwaypng', title)\"\n id=\"fairwaypng\"\n class=\"btn btn-sm btn-info text-white d-block w-100 mt-2\"\n :download=\"`${fileName}.png`\"\n >\n <translate>Export as Image</translate>\n </a>\n </div>\n </DiagramLegend>\n <div\n id=\"pdfContainer\"\n class=\"d-flex flex-fill justify-content-center align-items-center diagram-container position-relative\"\n >\n <div class=\"direction-indicator\"></div>\n <div v-if=\"!fairwayData\">\n <translate>No data available.</translate>\n </div>\n <div v-if=\"!refWaterlevelValid\">\n <translate>No valid reference waterlevel data available.</translate>\n </div>\n <div v-if=\"!waterlevelValid\">\n <translate>No valid waterlevel data available.</translate>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.direction-indicator {\n width: 70px;\n height: 0;\n border-top: dashed 2px #333;\n position: absolute;\n bottom: 50px;\n left: 115px;\n margin-left: -35px;\n}\n.direction-indicator::after {\n content: \"\";\n width: 0;\n height: 0;\n border-width: 10px;\n border-top-width: 5px;\n border-bottom-width: 5px;\n border-style: solid;\n border-color: transparent;\n border-left-color: #333;\n position: absolute;\n right: -20px;\n top: -6px;\n}\n</style>\n\n<script>\n/* This is Free Software under GNU Affero General Public License v >= 3.0\n * without warranty, see README.md and license for details.\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * License-Filename: LICENSES/AGPL-3.0.txt\n *\n * Copyright (C) 2018, 2019 by via donau\n * – Österreichische Wasserstraßen-Gesellschaft mbH\n * Software engineering by Intevation GmbH\n *\n * Author(s):\n * Thomas Junk <thomas.junk@intevation.de>\n * Markus Kottländer <markus.kottlaender@intevation.de>\n * Fadi Abbud <fadi.abbud@intevation.de>\n */\nimport * as d3 from \"d3\";\nimport { mapState, mapGetters } from \"vuex\";\nimport debounce from \"debounce\";\nimport { diagram, pdfgen, templateLoader } from \"@/lib/mixins\";\nimport { HTTP } from \"@/lib/http\";\nimport { displayError } from \"@/lib/errors\";\nimport { defaultDiagramTemplate } from \"@/lib/DefaultDiagramTemplate\";\n\nconst GROUND_COLOR = \"#4A2F06\";\nconst WATER_COLOR = \"#005DFF\";\n\nconst isNumber = value => {\n if (typeof value !== \"number\") {\n return false;\n }\n\n if (value !== Number(value)) {\n return false;\n }\n\n if (Number.isFinite(value) === false) {\n return false;\n }\n\n return true;\n};\n\nexport default {\n mixins: [diagram, pdfgen, templateLoader],\n name: \"fairwayprofile\",\n components: {\n DiagramLegend: () => import(\"@/components/DiagramLegend\")\n },\n data() {\n return {\n resizeListenerFunction: null,\n width: null,\n height: null,\n form: {\n template: null\n },\n templates: [],\n defaultTemplate: defaultDiagramTemplate,\n pdf: {\n doc: null,\n width: 32,\n height: 297\n },\n templateData: null\n };\n },\n computed: {\n ...mapGetters(\"map\", [\"openLayersMap\"]),\n ...mapGetters(\"fairwayprofile\", [\"totalLength\"]),\n ...mapState(\"fairwayprofile\", [\n \"additionalSurvey\",\n \"currentProfile\",\n \"startPoint\",\n \"endPoint\",\n \"fairwayData\",\n \"minAlt\",\n \"maxAlt\",\n \"selectedWaterLevel\",\n \"depth\",\n \"useCustomDepth\"\n ]),\n ...mapState(\"bottlenecks\", [\"selectedSurvey\", \"selectedBottleneck\"]),\n ...mapState(\"application\", [\"paneSetup\"]),\n title() {\n let dates = [this.selectedSurvey.date_info];\n let waterlevelLabel =\n this.selectedWaterLevel === \"ref\"\n ? this.selectedSurvey.depth_reference\n : \"Current\";\n if (this.additionalSurvey) dates.push(this.additionalSurvey.date_info);\n dates.map(d => this.$options.filters.dateTime(d, true));\n const waterlevelMeasurement =\n this.waterlevelValid && this.refWaterlevelValid\n ? `${this.$options.filters.waterlevel(this.waterlevel)} m`\n : this.$gettext(\"No valid value available\");\n return `${this.$gettext(\"Fairwayprofile\")}: ${this.bottleneck.get(\n \"objnam\" //for title label objnam is okay\n )} (${dates.join(\n \", \"\n )}) WL: ${waterlevelLabel} ( ${waterlevelMeasurement} )`;\n },\n currentData() {\n if (\n !this.selectedSurvey ||\n !this.currentProfile.hasOwnProperty(this.selectedSurvey.date_info)\n )\n return [];\n return this.currentProfile[this.selectedSurvey.date_info].points;\n },\n additionalData() {\n if (\n !this.additionalSurvey ||\n !this.currentProfile.hasOwnProperty(this.additionalSurvey.date_info)\n )\n return [];\n return this.currentProfile[this.additionalSurvey.date_info].points;\n },\n bottleneck() {\n return this.openLayersMap()\n .getLayer(\"BOTTLENECKS\")\n .getSource()\n .getFeatures()\n .find(f => f.get(\"bottleneck_id\") === this.selectedBottleneck);\n },\n waterlevel() {\n return this.selectedWaterLevel === \"ref\"\n ? this.refWaterlevel\n : this.bottleneck.get(\"gm_waterlevel\");\n },\n refWaterlevel() {\n if (!this.selectedSurvey) return 0;\n return this.selectedSurvey.waterlevel_value;\n },\n waterlevelValid() {\n return isNumber(this.waterlevel);\n },\n refWaterlevelValid() {\n return isNumber(this.refWaterlevel);\n },\n fileName() {\n return this.downloadFilename(\n this.$gettext(\"Fairwayprofile\"),\n this.bottleneck.get(\"objnam\") //for filename objnam is okay\n );\n }\n },\n watch: {\n depth() {\n if (!this.useCustomDepth) return;\n this.drawDiagram();\n },\n useCustomDepth() {\n this.drawDiagram();\n },\n currentData() {\n this.drawDiagram();\n },\n additionalData() {\n this.drawDiagram();\n },\n width() {\n this.drawDiagram();\n },\n height() {\n this.drawDiagram();\n },\n waterLevels() {\n this.drawDiagram();\n },\n selectedWaterLevel() {\n this.drawDiagram();\n },\n fairwayData() {\n this.drawDiagram();\n },\n selectedBottleneck() {\n this.$store.commit(\"application/paneSetup\", \"DEFAULT\");\n }\n },\n methods: {\n addLegendToCanvas(ctx, { width, height }) {\n let x = width / 12,\n y = height - 55;\n ctx.font = \"12px sans-serif\";\n ctx.textAlign = \"start\";\n\n ctx.beginPath();\n ctx.fillStyle = \"#5995ff\";\n ctx.strokeStyle = \"#5995ff\";\n ctx.arc(x, y, 8, 0, 2 * Math.PI);\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = \"black\";\n ctx.fillText(this.$gettext(\"Water\"), x + 14, y + 5);\n ctx.closePath();\n\n ctx.beginPath();\n ctx.fillStyle = this.getLayerStyle(1).fillColor;\n ctx.strokeStyle = this.getLayerStyle(1).strokeColor;\n ctx.arc(x, (y += 20), 8, 0, 2 * Math.PI);\n ctx.setLineDash([0.8], 0);\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = \"black\";\n ctx.fillText(this.$gettext(\"Fairway (LOS 1)\"), x + 14, y + 5);\n ctx.closePath();\n\n ctx.beginPath();\n ctx.fillStyle = this.getLayerStyle(2).fillColor;\n ctx.strokeStyle = this.getLayerStyle(2).strokeColor;\n ctx.arc(x, (y += 20), 8, 0, 2 * Math.PI);\n ctx.setLineDash([1.8], 0);\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = \"black\";\n ctx.fillText(this.$gettext(\"Fairway (LOS 2)\"), x + 14, y + 5);\n ctx.closePath();\n\n ctx.beginPath();\n ctx.fillStyle = this.getLayerStyle(3).fillColor;\n ctx.strokeStyle = this.getLayerStyle(3).strokeColor;\n ctx.arc(x, (y += 20), 8, 0, 2 * Math.PI);\n ctx.setLineDash([]);\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = \"black\";\n ctx.fillText(this.$gettext(\"Fairway (LOS 3)\"), x + 14, y + 5);\n ctx.closePath();\n\n ctx.beginPath();\n ctx.fillStyle = \"#4a2e06\";\n ctx.strokeStyle = \"black\";\n ctx.arc(x, (y += 20), 8, 0, 2 * Math.PI);\n ctx.setLineDash([]);\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = \"black\";\n ctx.fillText(this.$gettext(\"Sediment\"), x + 14, y + 5);\n ctx.closePath();\n\n ctx.beginPath();\n ctx.fillStyle = \"rgba(74, 47, 6, 0.6)\";\n ctx.strokeStyle = \"#943007\";\n ctx.arc(x, (y += 20), 8, 0, 2 * Math.PI);\n ctx.setLineDash([]);\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = \"black\";\n ctx.fillText(this.$gettext(\"Sediment (compare)\"), x + 14, y + 5);\n ctx.closePath();\n },\n close() {\n this.$store.commit(\n \"application/paneSetup\",\n this.paneSetup === \"COMPARESURVEYS_FAIRWAYPROFILE\"\n ? \"COMPARESURVEYS\"\n : \"DEFAULT\"\n );\n this.$store.dispatch(\"fairwayprofile/clearCurrentProfile\");\n },\n getLayerStyle(los) {\n let style = this.openLayersMap()\n .getLayer(\"FAIRWAYDIMENSIONSLOS\" + los)\n .getStyle()()[0];\n // use spread operator to clone arrays\n let fillColor = style.getFill().getColor();\n let strokeColor = style.getStroke().getColor();\n let strokeDash = style.getStroke().getLineDash();\n return { fillColor, strokeColor, strokeDash };\n },\n applyChange() {\n if (this.form.template.hasOwnProperty(\"properties\")) {\n this.templateData = this.defaultTemplate;\n return;\n }\n if (this.form.template) {\n this.loadTemplates(\"/templates/diagram/\" + this.form.template.name)\n .then(response => {\n this.prepareImages(response.data.template_data.elements).then(\n values => {\n values.forEach(v => {\n response.data.template_data.elements[v.index].url = v.url;\n });\n this.templateData = response.data.template_data;\n }\n );\n })\n .catch(error => {\n let message = \"Backend not reachable\";\n if (error.response) {\n const { status, data } = error.response;\n message = `${status}: ${data.message || data}`;\n }\n displayError({\n title: this.$gettext(\"Backend Error\"),\n message: message\n });\n });\n }\n },\n downloadPDF() {\n let fairwayInfo =\n this.bottleneck.get(\"objnam\") + //for Filename objnam is okay\n \" (\" +\n this.selectedSurvey.date_info +\n \")\";\n this.generatePDF({\n templateData: this.templateData,\n diagramTitle: fairwayInfo\n });\n this.pdf.doc.save(this.fileName + \".pdf\");\n },\n\n // Diagram legend\n addDiagramLegend(position, offset, color) {\n let x = offset.x,\n y = offset.y;\n this.pdf.doc.setFontSize(10);\n let width =\n (this.pdf.doc.getStringUnitWidth(\"Sediment (Compare)\") * 10) /\n (72 / 25.6) +\n 4;\n if ([\"topright\", \"bottomright\"].indexOf(position) !== -1) {\n x = this.pdf.width - offset.x - width;\n }\n if ([\"bottomright\", \"bottomleft\"].indexOf(position) !== -1) {\n y = this.pdf.height - offset.y - this.getTextHeight(8);\n }\n\n this.pdf.doc.setTextColor(color);\n this.pdf.doc.setDrawColor(\"#5995ff\");\n this.pdf.doc.setFillColor(\"#5995ff\");\n this.pdf.doc.circle(x, y, 2, \"FD\");\n this.pdf.doc.text(x + 3, y + 1, this.$gettext(\"Water\"));\n\n const toRGB = s => {\n let [, r, g, b] = s.match(/.*?(\\d+), (\\d+), (\\d+), .*/);\n const toHex = n => {\n let val = parseInt(n).toString(16);\n if (val.length === 1) return `0${val}`;\n return val;\n };\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n };\n\n const los1Color = toRGB(this.getLayerStyle(1).strokeColor);\n const los1Fill = toRGB(this.getLayerStyle(1).fillColor);\n const los2Color = toRGB(this.getLayerStyle(2).strokeColor);\n const los2Fill = toRGB(this.getLayerStyle(2).fillColor);\n const los3Color = toRGB(this.getLayerStyle(3).strokeColor);\n const los3Fill = toRGB(this.getLayerStyle(3).fillColor);\n\n this.pdf.doc.setLineDashPattern([0.8], 0);\n this.pdf.doc.setDrawColor(los1Color);\n this.pdf.doc.setFillColor(los1Fill);\n this.pdf.doc.circle(x, y + 5, 2, \"FD\");\n this.pdf.doc.text(x + 3, y + 6, this.$gettext(\"Fairway (LOS 1)\"));\n\n this.pdf.doc.setLineDashPattern([1.8], 0);\n this.pdf.doc.setFillColor(los2Fill);\n this.pdf.doc.setDrawColor(los2Color);\n this.pdf.doc.circle(x, y + 10, 2, \"FD\");\n this.pdf.doc.text(x + 3, y + 11, this.$gettext(\"Fairway (LOS 2)\"));\n\n this.pdf.doc.setLineDashPattern([], 0);\n this.pdf.doc.setFillColor(los3Fill);\n this.pdf.doc.setDrawColor(los3Color);\n this.pdf.doc.circle(x, y + 15, 2, \"FD\");\n this.pdf.doc.text(x + 3, y + 16, this.$gettext(\"Fairway (LOS 3)\"));\n\n this.pdf.doc.setDrawColor(\"black\");\n this.pdf.doc.setFillColor(\"#4a2e06\");\n this.pdf.doc.circle(x, y + 20, 2, \"FD\");\n this.pdf.doc.text(x + 3, y + 21, this.$gettext(\"Sediment\"));\n\n this.pdf.doc.setDrawColor(\"#943007\");\n this.pdf.doc.setFillColor(\"#928269\");\n this.pdf.doc.circle(x, y + 25, 2, \"FD\");\n this.pdf.doc.text(x + 3, y + 26, this.$gettext(\"Sediment (Compare)\"));\n },\n getPrintLayout(svgHeight, svgWidth) {\n return {\n main: {\n top: Math.floor(0.08 * svgHeight),\n right: Math.floor(0.08 * svgWidth),\n bottom: Math.floor(0.2 * svgHeight),\n left: Math.floor(0.08 * svgWidth)\n }\n };\n },\n drawDiagram() {\n d3.select(\".diagram-container svg\").remove();\n this.scaleFairwayProfile();\n if (!this.height || !this.width) return; // do not try to render when height and width are unknown\n const layout = this.getPrintLayout(this.height, this.width);\n this.renderTo({\n element: \".diagram-container\",\n dimensions: this.getDimensions({\n svgWidth: this.width,\n svgHeight: this.height,\n ...layout\n })\n });\n },\n renderTo({ element, dimensions }) {\n if (!this.waterlevelValid || !this.refWaterlevelValid) return;\n let svg = d3.select(element).append(\"svg\");\n svg.attr(\"width\", \"100%\");\n svg.attr(\"height\", \"100%\");\n svg\n .append(\"g\")\n .append(\"rect\")\n .attr(\"width\", \"100%\")\n .attr(\"height\", \"100%\")\n .attr(\"fill\", \"#ffffff\");\n const width = dimensions.width;\n const height = dimensions.mainHeight;\n const offsetY = 15;\n const currentData = this.currentData;\n const additionalData = this.additionalData;\n const { xScale, yScaleRight, graph } = this.generateScalesAndGraph({\n svg,\n height,\n width,\n dimensions,\n offsetY\n });\n this.drawWaterlevel({ graph, xScale, yScaleRight, height, offsetY });\n this.drawLabels({ graph, dimensions });\n if (currentData) {\n this.drawProfile({\n graph,\n xScale,\n yScaleRight,\n currentData,\n height,\n color: GROUND_COLOR,\n strokeColor: \"black\",\n opacity: 1,\n offsetY\n });\n }\n if (additionalData) {\n this.drawProfile({\n graph,\n xScale,\n yScaleRight,\n currentData: additionalData,\n height,\n color: GROUND_COLOR,\n strokeColor: \"#943007\",\n opacity: 0.6,\n offsetY\n });\n }\n this.drawFairway({ graph, xScale, yScaleRight, offsetY });\n },\n /**\n * Draws Fairway rectangle\n *\n * start end\n * ____________\n * [___________] customDepth | referenceDepth\n *\n * Starting point is the 0 line of the diagram\n *\n */\n drawFairway({ graph, xScale, yScaleRight, offsetY }) {\n if (this.fairwayData === undefined) {\n return;\n }\n for (let data of this.fairwayData) {\n data.coordinates.forEach(coordinates => {\n const [startPoint, endPoint, depth] = coordinates;\n const referenceDepth =\n this.maxAlt * 1.1 + (this.waterlevel - this.refWaterlevel) / 100;\n let customdepth =\n this.depth < referenceDepth ? this.depth : referenceDepth;\n let fairwayArea = d3\n .area()\n .x(function(d) {\n return xScale(d.x);\n })\n .y0(yScaleRight(0))\n .y1(function(d) {\n return yScaleRight(d.y);\n });\n let strokColor = this.getLayerStyle(data.los).strokeColor;\n // Convert stroke value to rgb() and opacity to pass them separately\n let [r, g, b, opacity] = strokColor\n .substring(5, strokColor.length - 1)\n .split(\",\");\n let rgb = `rgb(${r}, ${g}, ${b})`;\n graph\n .append(\"path\")\n .datum([\n { x: startPoint, y: this.useCustomDepth ? customdepth : depth },\n { x: endPoint, y: this.useCustomDepth ? customdepth : depth }\n ])\n .attr(\"fill\", `${this.getLayerStyle(data.los).fillColor}`)\n .attr(\"stroke\", rgb)\n .attr(\"stroke-opacity\", opacity)\n .attr(\"stroke-dasharray\", this.getLayerStyle(data.los).strokeDash)\n .attr(\"d\", fairwayArea)\n .attr(\"transform\", `translate(0 ${-offsetY})`);\n });\n }\n },\n drawLabels({ graph, dimensions }) {\n graph\n .append(\"text\")\n .attr(\"transform\", [\"rotate(-90)\"])\n .attr(\"y\", dimensions.width + Math.floor(0.06 * dimensions.width))\n .attr(\"x\", -dimensions.mainHeight / 2)\n .attr(\"fill\", \"black\")\n .style(\"text-anchor\", \"middle\")\n .text(this.$gettext(\"Depth [m]\"));\n graph\n .append(\"text\")\n .attr(\"transform\", [\"rotate(-90)\"])\n .attr(\"y\", -1 * Math.floor(0.065 * dimensions.width))\n .attr(\"x\", -dimensions.mainHeight / 2)\n .attr(\"fill\", \"black\")\n .style(\"text-anchor\", \"middle\")\n .text(this.$gettext(\"Waterlevel [m]\"));\n graph\n .append(\"text\")\n .attr(\"y\", 0)\n .attr(\"x\", 0)\n .attr(\"dy\", \"1em\")\n .attr(\"fill\", \"black\")\n .style(\"text-anchor\", \"middle\")\n .attr(\"transform\", [\n `translate(${dimensions.width / 2} ${dimensions.mainHeight})`,\n \"rotate(0)\"\n ])\n .text(this.$gettext(\"Width [m]\"));\n },\n generateScalesAndGraph({ svg, height, width, dimensions, offsetY }) {\n let xScale = d3\n .scaleLinear()\n .domain([0, this.totalLength])\n .rangeRound([0, width]);\n // Upper limit is relevant for the extension of the y-Axis\n // If there is no measure above the waterlevel we choose a cosmetic value of this.maxAlt *0.1\n // to get a bit of space above the waterlevel.\n // Otherwise we take the maximum measured value\n const upperLimit =\n this.minAlt > 0 ? this.maxAlt * 0.1 : Math.abs(this.minAlt);\n // In order to draw positive values downwards, we switch both values in the\n // domain definition [min, max] => [max, min] has the desired effect.\n let yScaleRight = d3\n .scaleLinear()\n .domain([\n this.maxAlt * 1.1 + (this.waterlevel - this.refWaterlevel) / 100,\n -upperLimit\n ])\n .rangeRound([height, 0]);\n // This definition is accordingly but uses values * 100 for the tickformatter\n let yScaleLeft = d3\n .scaleLinear()\n .domain([\n this.waterlevel -\n (this.maxAlt * 110 + (this.waterlevel - this.refWaterlevel)),\n this.waterlevel + upperLimit * 100\n ])\n .rangeRound([height, 0]);\n\n let xAxis = d3\n .axisBottom(xScale)\n .tickSizeOuter(0)\n .ticks(5);\n let yAxisRight = d3\n .axisRight()\n .tickSizeOuter(0)\n .tickSizeInner(5)\n .scale(yScaleRight);\n let yAxisLeft = d3\n .axisLeft()\n .tickSizeOuter(0)\n .tickSizeInner(5)\n .scale(yScaleLeft)\n .tickFormat(d => this.$options.filters.waterlevel(d));\n\n let graph = svg\n .append(\"g\")\n .attr(\n \"transform\",\n \"translate(\" +\n dimensions.mainMargin.left +\n \",\" +\n dimensions.mainMargin.top +\n \")\"\n );\n graph\n .append(\"g\")\n .attr(\"transform\", `translate(0 ${height - offsetY})`)\n .call(xAxis)\n .selectAll(\".tick text\")\n .attr(\"fill\", \"black\")\n .select(function() {\n return this.parentNode;\n })\n .selectAll(\".tick line\")\n .attr(\"stroke\", \"black\");\n graph\n .append(\"g\")\n .attr(\"transform\", `translate(${width} ${-offsetY})`)\n .call(yAxisRight)\n .selectAll(\".tick text\")\n .attr(\"fill\", \"black\")\n .select(function() {\n return this.parentNode;\n })\n .selectAll(\".tick line\")\n .attr(\"stroke\", \"black\");\n graph\n .append(\"g\")\n .attr(\"transform\", `translate(0 ${-offsetY})`)\n .call(yAxisLeft)\n .selectAll(\".tick text\")\n .attr(\"fill\", \"black\")\n .select(function() {\n return this.parentNode;\n })\n .selectAll(\".tick line\")\n .attr(\"stroke\", \"black\");\n\n graph.selectAll(\".domain\").attr(\"stroke\", \"black\");\n return { xScale, yScaleRight, graph };\n },\n /**\n * Draws a rectangle for the waterlevel\n * (0,0) (totalLength,0)\n * ____________\n * [____________]\n * (0,height) (totalLength, height)\n */\n drawWaterlevel({ graph, xScale, yScaleRight, height, offsetY }) {\n let waterArea = d3\n .area()\n .x(function(d) {\n return xScale(d.x);\n })\n .y0(height)\n .y1(function(d) {\n return yScaleRight(d.y);\n });\n graph\n .append(\"path\")\n .datum([\n { x: 0, y: 0 },\n { x: this.totalLength, y: 0 }\n ])\n .attr(\"fill-opacity\", 0.65)\n .attr(\"fill\", WATER_COLOR)\n .attr(\"stroke\", \"transparent\")\n .attr(\"d\", waterArea)\n .attr(\"transform\", `translate(0 ${-offsetY})`);\n },\n /**\n *\n * Draws the ground level\n *\n * (x, y + ΔWaterlevel)\n *\n * ΔWaterlevel is the difference between the current waterlevel and the reference level\n *\n * Is the current level higher as the reference level ΔWaterlevel is positive, which in\n * turn means that the distance between the surface and the ground is increased.\n *\n * Is the current level below the reference level ΔWaterlevel is negative, which in turn means\n * that the distance between the surface and the ground is decreased.\n *\n */\n drawProfile({\n graph,\n xScale,\n yScaleRight,\n currentData,\n height,\n color,\n strokeColor,\n opacity,\n offsetY\n }) {\n for (let part of currentData) {\n let profileLine = d3\n .line()\n .x(d => {\n return xScale(d.x);\n })\n .y(d =>\n yScaleRight(d.y + (this.waterlevel - this.refWaterlevel) / 100)\n );\n let profileArea = d3\n .area()\n .x(function(d) {\n return xScale(d.x);\n })\n .y0(height)\n .y1(d =>\n yScaleRight(d.y + (this.waterlevel - this.refWaterlevel) / 100)\n );\n graph\n .append(\"path\")\n .datum(part)\n .attr(\"fill\", color)\n .attr(\"stroke\", \"transparent\")\n .attr(\"fill-opacity\", opacity)\n .attr(\"d\", profileArea)\n .attr(\"transform\", `translate(0 ${-offsetY})`);\n graph\n .append(\"path\")\n .datum(part)\n .attr(\"fill\", \"none\")\n .attr(\"stroke\", strokeColor)\n .attr(\"stroke-linejoin\", \"round\")\n .attr(\"stroke-linecap\", \"round\")\n .attr(\"stroke-width\", 3)\n .attr(\"stroke-opacity\", opacity)\n .attr(\"fill-opacity\", 0)\n .attr(\"d\", profileLine)\n .attr(\"transform\", `translate(0 ${-offsetY})`);\n }\n },\n scaleFairwayProfile() {\n if (!document.querySelector(\".diagram-container\")) return;\n const clientHeight = document.querySelector(\".diagram-container\")\n .clientHeight;\n const clientWidth = document.querySelector(\".diagram-container\")\n .clientWidth;\n if (!clientHeight || !clientWidth) return;\n this.height = clientHeight;\n this.width = clientWidth;\n }\n },\n created() {\n this.resizeListenerFunction = debounce(this.drawDiagram, 100);\n window.addEventListener(\"resize\", this.resizeListenerFunction);\n },\n mounted() {\n // Nasty but necessary if we don't want to use the updated hook to re-draw\n // the diagram because this would re-draw it also for irrelevant reasons.\n // In this case we need to wait for the child component (DiagramLegend) to\n // render. According to the docs (https://vuejs.org/v2/api/#mounted) this\n // should be possible with $nextTick() but it doesn't work because it does\n // not guarantee that the DOM is not only updated but also re-painted on the\n // screen.\n setTimeout(this.drawDiagram, 150);\n\n this.templates[0] = this.defaultTemplate;\n this.form.template = this.templates[0];\n this.templateData = this.form.template;\n HTTP.get(\"/templates/diagram\", {\n headers: {\n \"X-Gemma-Auth\": localStorage.getItem(\"token\"),\n \"Content-type\": \"text/xml; charset=UTF-8\"\n }\n })\n .then(response => {\n if (response.data.length) {\n this.templates = response.data;\n this.form.template = this.templates[0];\n this.templates[this.templates.length] = this.defaultTemplate;\n this.applyChange();\n }\n })\n .catch(error => {\n let message = \"Backend not reachable\";\n if (error.response) {\n const { status, data } = error.response;\n message = `${status}: ${data.message || data}`;\n }\n displayError({\n title: this.$gettext(\"Backend Error\"),\n message: message\n });\n });\n },\n updated() {\n this.drawDiagram();\n },\n destroyed() {\n window.removeEventListener(\"resize\", this.resizeListenerFunction);\n }\n};\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Fairwayprofile.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Fairwayprofile.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Fairwayprofile.vue?vue&type=template&id=333b61bb&scoped=true\"\nimport script from \"./Fairwayprofile.vue?vue&type=script&lang=js\"\nexport * from \"./Fairwayprofile.vue?vue&type=script&lang=js\"\nimport style0 from \"./Fairwayprofile.vue?vue&type=style&index=0&id=333b61bb&prod&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 \"333b61bb\",\n null\n \n)\n\nexport default component.exports","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Fairwayprofile.vue?vue&type=style&index=0&id=333b61bb&prod&scoped=true&lang=css\"","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","const defaultDiagramTemplate = {\n name: \"Default\",\n properties: {\n paperSize: \"a4\"\n },\n elements: [\n {\n type: \"diagramtitle\",\n position: \"topleft\",\n offset: { x: 74, y: 25 },\n fontsize: 20,\n color: \"steelblue\"\n },\n {\n type: \"diagram\",\n position: \"topleft\",\n offset: { x: 24, y: 40 },\n width: 248,\n height: 119\n },\n {\n type: \"diagramlegend\",\n position: \"topleft\",\n offset: { x: 44, y: 167 },\n color: \"black\"\n }\n ]\n};\n\nexport { defaultDiagramTemplate };\n"],"sourceRoot":""}