{"version":3,"sources":["webpack:///./node_modules/rbush/index.js","webpack:///./wwwroot/src/js/helpers/openlayers/layers.js","webpack:///./node_modules/color-hash/lib/color-hash.js","webpack:///./node_modules/quickselect/quickselect.js","webpack:///./wwwroot/src/vue/areas/field-record-system/map-styles/field.js","webpack:///./wwwroot/src/vue/areas/field-record-system/map-styles/cultivation.js","webpack:///./wwwroot/src/vue/areas/field-record-system/map-styles/action.js","webpack:///./wwwroot/src/vue/areas/field-record-system/map-styles/zonemap.js","webpack:///./wwwroot/src/vue/areas/field-record-system/map-styles/basic-fertilization/probing-geometries.js","webpack:///./wwwroot/src/vue/areas/field-record-system/map-styles/basic-fertilization/index.js","webpack:///./wwwroot/src/vue/areas/field-record-system/map-styles/entity-import.js","webpack:///./wwwroot/src/vue/areas/field-record-system/map-styles/hadoop-experimental.js","webpack:///./wwwroot/src/vue/areas/field-record-system/map-styles/selection.js","webpack:///./wwwroot/src/vue/areas/field-record-system/map-styles/index.js","webpack:///./wwwroot/src/vue/areas/field-record-system/helpers/crops.js","webpack:///./wwwroot/src/vue/areas/field-record-system/helpers/colors.js","webpack:///./wwwroot/src/js/helpers/vuex/i18n.js","webpack:///./wwwroot/src/js/helpers/vuex/forms.js","webpack:///./wwwroot/src/js/helpers/vuex/index.js","webpack:///./wwwroot/src/vue/components/map/IxVectorLayer.js","webpack:///./node_modules/color-hash/lib/bkdr-hash.js"],"names":["module","exports","rbush","default","quickselect","__webpack_require__","maxEntries","format","this","_maxEntries","Math","max","_minEntries","ceil","_initFormat","clear","findItem","item","items","equalsFn","indexOf","i","length","calcBBox","node","toBBox","distBBox","children","k","p","destNode","createNode","minX","Infinity","minY","maxX","maxY","child","extend","leaf","a","b","min","compareNodeMinX","compareNodeMinY","bboxArea","bboxMargin","enlargedArea","intersectionArea","contains","intersects","height","multiSelect","arr","left","right","n","compare","mid","stack","pop","push","prototype","all","_all","data","search","bbox","result","len","childBBox","nodesToSearch","collides","load","insert","_build","slice","_splitRoot","tmpNode","_insert","remove","parent","index","goingUp","path","indexes","splice","_condense","compareMinX","compareMinY","toJSON","fromJSON","apply","N","M","log","pow","j","right2","right3","N2","N1","sqrt","_chooseSubtree","level","targetNode","area","enlargement","minArea","minEnlargement","isNode","insertPath","_split","_adjustParentBBoxes","m","_chooseSplitAxis","splitIndex","_chooseSplitIndex","newNode","bbox1","bbox2","overlap","minOverlap","xMargin","_allDistMargin","yMargin","sort","leftBBox","rightBBox","margin","siblings","compareArr","Function","join","defaultAttribution","concat","Date","getFullYear","makeVectorLayer","_ref","id","_ref$name","name","features","style","layer","VectorLayer","source","VectorSource","attributions","set","makeWFSLayer","_ref3","url","typeNames","GeoJSON","extent","strategy","makeWMSLayer","_ref4","layers","TileLayer","TileWMSSource","params","LAYERS","BKDRHash","RGB2HEX","RGBArray","hex","forEach","value","toString","HSL2RGB","H","S","L","q","map","color","round","ColorHash","options","LS","lightness","saturation","param","Object","call","hash","hsl","str","parseInt","rgb","global","factory","quickselectStep","defaultCompare","z","s","exp","sd","newLeft","floor","newRight","t","swap","tmp","field","modifierStack","border","setLabel","feature","get","fieldWithCode","fieldBorder","borderBase","fieldCluster","resolution","polygonClusterBase","getText","setText","normalizedResolution","opacity","toFixed","getImage","getFill","setColor","setRadius","fieldBorderSelected","Style","stroke","Stroke","width","main","secondary","catch","dual","eco","cultivationToLabel","type","cropUsage","getCropUsageTranslations","cultivation","polygonBase","_feature$getPropertie","getProperties","ecoTypeId","cultivationToColor","stripedPolygonBase","_feature$getPropertie2","_feature$getPropertie3","cultivationWithoutText","stripedPolygonBaseWithoutText","_feature$getPropertie4","fill","cultivationWithCode","props","fieldCodes","_feature$getPropertie5","cultivationColor","textColor","cultivationFieldBorder","lineDash","fieldBorderCultivationSelected","actionTypeColors","seeding","irrigation","tillage","fertilization","harvest","protection","maintenance","logistics","actionToColor","stripes","actionCultivationSelection","actionCultivationSelectionSelected","actionCultivationSelectionHover","actionCultivationSelectionCutOff","Fill","action","minimalZoneColors","zonemap","zoneBase","zone","zoneCount","colorFunctions","agrosat","placeholder","variation","e_vari","minimalBase","displayValue","mutedZoneColors","desaturate","error","image","Circle","radius","makePointStyle","withAlpha","text","Text","textAlign","textBaseline","font","readableTextColor","offsetX","overflow","geometry","getGeometry","getType","Point","getCoordinateAt","makeLineStyle","makeVertexStyle","MultiPoint","getCoordinates","makeZentroidStyle","reduce","sum","val","add","makePointLineBaseStyle","point","line","vertex","zentroid","probingGeometryBaseStyles","colors","probingGeometry","setProbingGeometryLabel","label","sampleId","number","undefined","makeProbingGeometryStyle","colorSelectorFunc","styles","classificationResultBaseStyles","classification","setClassificationLabel","classificationResultStyle","_classificationResult","selectPlanningColor","isActive","isNew","markedForDeletion","planningPoint","selectOrderPointPreviewColor","_ref2","active","selectResultPreviewColor","isCompleted","isSelected","probingResultPreview","nutrientClassification","nutrientMap","contentClass","lufa","verboseLabel","entityImportPreview","colorProperty","colorKey","selected","entityImportPreviewHover","fieldBorderSuggestionBase","fieldBorderSuggestion","roads","makeUniversalStyle","_ref$radius","defaultSelectionStyle","selectionMarkerStyle","getInteriorPoint","selectionStyle","hoverStyle","selectedPoint","d","__webpack_exports__","base","field_fieldCluster","cultivation_cultivation","maps","translationOrNull","namespace","key","translation","store","state","i18n","translations","allTranslationsFromKeys","keys","obj","assign","C_src_Solutions_WebApp_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__","useFallbackAbbreviation","abbreviation","substring","getCropHarvestQualityTranslations","displayColor","arguments","isVueInternal","createProxy","alias","resource","Proxy","ownKeys","existing","dispatch","mapResources","prefix","resources","window","Error","Array","isArray","propertyName","split","computed","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_loop","_step$value","fullResource","replaceAliases","$store","_iterator","Symbol","iterator","next","done","err","return","mapFormFields","modulePath","fields","modulePathSegments","splitModulePathSegments","resolveModule","vm","followPath","x","replace","defineProperty","_splitPropertyPath","splitPropertyPath","_splitPropertyPath2","slicedToArray","fieldPath","read","write","propertyNameOverride","mutation","defaultSetterName","fullMutationName","_this","getters","filter","startsWith","RegExp","specificFullMutationName","includes","commit","modelProxy","$options","model","prop","event","$emit","i18n_mapResources","geoJsonFormat","dataProjection","featureProjection","inject","vectorStyle","required","clusterStyle","maxZoom","Number","zIndex","autoFocus","Boolean","fast","layerId","String","zoom","olFeatures","featureArrayOrCollection","readFeatures","readFeature","methods","recreate","getLayers","useSpatialIndex","updateWhileAnimating","updateWhileInteracting","clusterLayer","Cluster","distance","getSource","geometryFunction","getCenter","getInteriorPoints","getExtent","focus","size","getSize","getView","fit","duration","watch","addFeatures","setZIndex","updated","mounted","getMap","then","getZoom","zoomListenerKey","on","beforeDestroy","unByKey","render","seed","seed2","MAX_SAFE_INTEGER","charCodeAt"],"mappings":"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","file":"js/chunk-0068fef8.b2e429ec.js","sourcesContent":["'use strict';\n\nmodule.exports = rbush;\nmodule.exports.default = rbush;\n\nvar quickselect = require('quickselect');\n\nfunction rbush(maxEntries, format) {\n if (!(this instanceof rbush)) return new rbush(maxEntries, format);\n\n // max entries in a node is 9 by default; min node fill is 40% for best performance\n this._maxEntries = Math.max(4, maxEntries || 9);\n this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));\n\n if (format) {\n this._initFormat(format);\n }\n\n this.clear();\n}\n\nrbush.prototype = {\n\n all: function () {\n return this._all(this.data, []);\n },\n\n search: function (bbox) {\n\n var node = this.data,\n result = [],\n toBBox = this.toBBox;\n\n if (!intersects(bbox, node)) return result;\n\n var nodesToSearch = [],\n i, len, child, childBBox;\n\n while (node) {\n for (i = 0, len = node.children.length; i < len; i++) {\n\n child = node.children[i];\n childBBox = node.leaf ? toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf) result.push(child);\n else if (contains(bbox, childBBox)) this._all(child, result);\n else nodesToSearch.push(child);\n }\n }\n node = nodesToSearch.pop();\n }\n\n return result;\n },\n\n collides: function (bbox) {\n\n var node = this.data,\n toBBox = this.toBBox;\n\n if (!intersects(bbox, node)) return false;\n\n var nodesToSearch = [],\n i, len, child, childBBox;\n\n while (node) {\n for (i = 0, len = node.children.length; i < len; i++) {\n\n child = node.children[i];\n childBBox = node.leaf ? toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf || contains(bbox, childBBox)) return true;\n nodesToSearch.push(child);\n }\n }\n node = nodesToSearch.pop();\n }\n\n return false;\n },\n\n load: function (data) {\n if (!(data && data.length)) return this;\n\n if (data.length < this._minEntries) {\n for (var i = 0, len = data.length; i < len; i++) {\n this.insert(data[i]);\n }\n return this;\n }\n\n // recursively build the tree with the given data from scratch using OMT algorithm\n var node = this._build(data.slice(), 0, data.length - 1, 0);\n\n if (!this.data.children.length) {\n // save as is if tree is empty\n this.data = node;\n\n } else if (this.data.height === node.height) {\n // split root if trees have the same height\n this._splitRoot(this.data, node);\n\n } else {\n if (this.data.height < node.height) {\n // swap trees if inserted one is bigger\n var tmpNode = this.data;\n this.data = node;\n node = tmpNode;\n }\n\n // insert the small tree into the large tree at appropriate level\n this._insert(node, this.data.height - node.height - 1, true);\n }\n\n return this;\n },\n\n insert: function (item) {\n if (item) this._insert(item, this.data.height - 1);\n return this;\n },\n\n clear: function () {\n this.data = createNode([]);\n return this;\n },\n\n remove: function (item, equalsFn) {\n if (!item) return this;\n\n var node = this.data,\n bbox = this.toBBox(item),\n path = [],\n indexes = [],\n i, parent, index, goingUp;\n\n // depth-first iterative tree traversal\n while (node || path.length) {\n\n if (!node) { // go up\n node = path.pop();\n parent = path[path.length - 1];\n i = indexes.pop();\n goingUp = true;\n }\n\n if (node.leaf) { // check current node\n index = findItem(item, node.children, equalsFn);\n\n if (index !== -1) {\n // item found, remove the item and condense tree upwards\n node.children.splice(index, 1);\n path.push(node);\n this._condense(path);\n return this;\n }\n }\n\n if (!goingUp && !node.leaf && contains(node, bbox)) { // go down\n path.push(node);\n indexes.push(i);\n i = 0;\n parent = node;\n node = node.children[0];\n\n } else if (parent) { // go right\n i++;\n node = parent.children[i];\n goingUp = false;\n\n } else node = null; // nothing found\n }\n\n return this;\n },\n\n toBBox: function (item) { return item; },\n\n compareMinX: compareNodeMinX,\n compareMinY: compareNodeMinY,\n\n toJSON: function () { return this.data; },\n\n fromJSON: function (data) {\n this.data = data;\n return this;\n },\n\n _all: function (node, result) {\n var nodesToSearch = [];\n while (node) {\n if (node.leaf) result.push.apply(result, node.children);\n else nodesToSearch.push.apply(nodesToSearch, node.children);\n\n node = nodesToSearch.pop();\n }\n return result;\n },\n\n _build: function (items, left, right, height) {\n\n var N = right - left + 1,\n M = this._maxEntries,\n node;\n\n if (N <= M) {\n // reached leaf level; return leaf\n node = createNode(items.slice(left, right + 1));\n calcBBox(node, this.toBBox);\n return node;\n }\n\n if (!height) {\n // target height of the bulk-loaded tree\n height = Math.ceil(Math.log(N) / Math.log(M));\n\n // target number of root entries to maximize storage utilization\n M = Math.ceil(N / Math.pow(M, height - 1));\n }\n\n node = createNode([]);\n node.leaf = false;\n node.height = height;\n\n // split the items into M mostly square tiles\n\n var N2 = Math.ceil(N / M),\n N1 = N2 * Math.ceil(Math.sqrt(M)),\n i, j, right2, right3;\n\n multiSelect(items, left, right, N1, this.compareMinX);\n\n for (i = left; i <= right; i += N1) {\n\n right2 = Math.min(i + N1 - 1, right);\n\n multiSelect(items, i, right2, N2, this.compareMinY);\n\n for (j = i; j <= right2; j += N2) {\n\n right3 = Math.min(j + N2 - 1, right2);\n\n // pack each entry recursively\n node.children.push(this._build(items, j, right3, height - 1));\n }\n }\n\n calcBBox(node, this.toBBox);\n\n return node;\n },\n\n _chooseSubtree: function (bbox, node, level, path) {\n\n var i, len, child, targetNode, area, enlargement, minArea, minEnlargement;\n\n while (true) {\n path.push(node);\n\n if (node.leaf || path.length - 1 === level) break;\n\n minArea = minEnlargement = Infinity;\n\n for (i = 0, len = node.children.length; i < len; i++) {\n child = node.children[i];\n area = bboxArea(child);\n enlargement = enlargedArea(bbox, child) - area;\n\n // choose entry with the least area enlargement\n if (enlargement < minEnlargement) {\n minEnlargement = enlargement;\n minArea = area < minArea ? area : minArea;\n targetNode = child;\n\n } else if (enlargement === minEnlargement) {\n // otherwise choose one with the smallest area\n if (area < minArea) {\n minArea = area;\n targetNode = child;\n }\n }\n }\n\n node = targetNode || node.children[0];\n }\n\n return node;\n },\n\n _insert: function (item, level, isNode) {\n\n var toBBox = this.toBBox,\n bbox = isNode ? item : toBBox(item),\n insertPath = [];\n\n // find the best node for accommodating the item, saving all nodes along the path too\n var node = this._chooseSubtree(bbox, this.data, level, insertPath);\n\n // put the item into the node\n node.children.push(item);\n extend(node, bbox);\n\n // split on node overflow; propagate upwards if necessary\n while (level >= 0) {\n if (insertPath[level].children.length > this._maxEntries) {\n this._split(insertPath, level);\n level--;\n } else break;\n }\n\n // adjust bboxes along the insertion path\n this._adjustParentBBoxes(bbox, insertPath, level);\n },\n\n // split overflowed node into two\n _split: function (insertPath, level) {\n\n var node = insertPath[level],\n M = node.children.length,\n m = this._minEntries;\n\n this._chooseSplitAxis(node, m, M);\n\n var splitIndex = this._chooseSplitIndex(node, m, M);\n\n var newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex));\n newNode.height = node.height;\n newNode.leaf = node.leaf;\n\n calcBBox(node, this.toBBox);\n calcBBox(newNode, this.toBBox);\n\n if (level) insertPath[level - 1].children.push(newNode);\n else this._splitRoot(node, newNode);\n },\n\n _splitRoot: function (node, newNode) {\n // split root node\n this.data = createNode([node, newNode]);\n this.data.height = node.height + 1;\n this.data.leaf = false;\n calcBBox(this.data, this.toBBox);\n },\n\n _chooseSplitIndex: function (node, m, M) {\n\n var i, bbox1, bbox2, overlap, area, minOverlap, minArea, index;\n\n minOverlap = minArea = Infinity;\n\n for (i = m; i <= M - m; i++) {\n bbox1 = distBBox(node, 0, i, this.toBBox);\n bbox2 = distBBox(node, i, M, this.toBBox);\n\n overlap = intersectionArea(bbox1, bbox2);\n area = bboxArea(bbox1) + bboxArea(bbox2);\n\n // choose distribution with minimum overlap\n if (overlap < minOverlap) {\n minOverlap = overlap;\n index = i;\n\n minArea = area < minArea ? area : minArea;\n\n } else if (overlap === minOverlap) {\n // otherwise choose distribution with minimum area\n if (area < minArea) {\n minArea = area;\n index = i;\n }\n }\n }\n\n return index;\n },\n\n // sorts node children by the best axis for split\n _chooseSplitAxis: function (node, m, M) {\n\n var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX,\n compareMinY = node.leaf ? this.compareMinY : compareNodeMinY,\n xMargin = this._allDistMargin(node, m, M, compareMinX),\n yMargin = this._allDistMargin(node, m, M, compareMinY);\n\n // if total distributions margin value is minimal for x, sort by minX,\n // otherwise it's already sorted by minY\n if (xMargin < yMargin) node.children.sort(compareMinX);\n },\n\n // total margin of all possible split distributions where each node is at least m full\n _allDistMargin: function (node, m, M, compare) {\n\n node.children.sort(compare);\n\n var toBBox = this.toBBox,\n leftBBox = distBBox(node, 0, m, toBBox),\n rightBBox = distBBox(node, M - m, M, toBBox),\n margin = bboxMargin(leftBBox) + bboxMargin(rightBBox),\n i, child;\n\n for (i = m; i < M - m; i++) {\n child = node.children[i];\n extend(leftBBox, node.leaf ? toBBox(child) : child);\n margin += bboxMargin(leftBBox);\n }\n\n for (i = M - m - 1; i >= m; i--) {\n child = node.children[i];\n extend(rightBBox, node.leaf ? toBBox(child) : child);\n margin += bboxMargin(rightBBox);\n }\n\n return margin;\n },\n\n _adjustParentBBoxes: function (bbox, path, level) {\n // adjust bboxes along the given tree path\n for (var i = level; i >= 0; i--) {\n extend(path[i], bbox);\n }\n },\n\n _condense: function (path) {\n // go through the path, removing empty nodes and updating bboxes\n for (var i = path.length - 1, siblings; i >= 0; i--) {\n if (path[i].children.length === 0) {\n if (i > 0) {\n siblings = path[i - 1].children;\n siblings.splice(siblings.indexOf(path[i]), 1);\n\n } else this.clear();\n\n } else calcBBox(path[i], this.toBBox);\n }\n },\n\n _initFormat: function (format) {\n // data format (minX, minY, maxX, maxY accessors)\n\n // uses eval-type function compilation instead of just accepting a toBBox function\n // because the algorithms are very sensitive to sorting functions performance,\n // so they should be dead simple and without inner calls\n\n var compareArr = ['return a', ' - b', ';'];\n\n this.compareMinX = new Function('a', 'b', compareArr.join(format[0]));\n this.compareMinY = new Function('a', 'b', compareArr.join(format[1]));\n\n this.toBBox = new Function('a',\n 'return {minX: a' + format[0] +\n ', minY: a' + format[1] +\n ', maxX: a' + format[2] +\n ', maxY: a' + format[3] + '};');\n }\n};\n\nfunction findItem(item, items, equalsFn) {\n if (!equalsFn) return items.indexOf(item);\n\n for (var i = 0; i < items.length; i++) {\n if (equalsFn(item, items[i])) return i;\n }\n return -1;\n}\n\n// calculate node's bbox from bboxes of its children\nfunction calcBBox(node, toBBox) {\n distBBox(node, 0, node.children.length, toBBox, node);\n}\n\n// min bounding rectangle of node children from k to p-1\nfunction distBBox(node, k, p, toBBox, destNode) {\n if (!destNode) destNode = createNode(null);\n destNode.minX = Infinity;\n destNode.minY = Infinity;\n destNode.maxX = -Infinity;\n destNode.maxY = -Infinity;\n\n for (var i = k, child; i < p; i++) {\n child = node.children[i];\n extend(destNode, node.leaf ? toBBox(child) : child);\n }\n\n return destNode;\n}\n\nfunction extend(a, b) {\n a.minX = Math.min(a.minX, b.minX);\n a.minY = Math.min(a.minY, b.minY);\n a.maxX = Math.max(a.maxX, b.maxX);\n a.maxY = Math.max(a.maxY, b.maxY);\n return a;\n}\n\nfunction compareNodeMinX(a, b) { return a.minX - b.minX; }\nfunction compareNodeMinY(a, b) { return a.minY - b.minY; }\n\nfunction bboxArea(a) { return (a.maxX - a.minX) * (a.maxY - a.minY); }\nfunction bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); }\n\nfunction enlargedArea(a, b) {\n return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) *\n (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));\n}\n\nfunction intersectionArea(a, b) {\n var minX = Math.max(a.minX, b.minX),\n minY = Math.max(a.minY, b.minY),\n maxX = Math.min(a.maxX, b.maxX),\n maxY = Math.min(a.maxY, b.maxY);\n\n return Math.max(0, maxX - minX) *\n Math.max(0, maxY - minY);\n}\n\nfunction contains(a, b) {\n return a.minX <= b.minX &&\n a.minY <= b.minY &&\n b.maxX <= a.maxX &&\n b.maxY <= a.maxY;\n}\n\nfunction intersects(a, b) {\n return b.minX <= a.maxX &&\n b.minY <= a.maxY &&\n b.maxX >= a.minX &&\n b.maxY >= a.minY;\n}\n\nfunction createNode(children) {\n return {\n children: children,\n height: 1,\n leaf: true,\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity\n };\n}\n\n// sort an array so that items come in groups of n unsorted items, with groups sorted between each other;\n// combines selection algorithm with binary divide & conquer approach\n\nfunction multiSelect(arr, left, right, n, compare) {\n var stack = [left, right],\n mid;\n\n while (stack.length) {\n right = stack.pop();\n left = stack.pop();\n\n if (right - left <= n) continue;\n\n mid = left + Math.ceil((right - left) / n / 2) * n;\n quickselect(arr, mid, left, right, compare);\n\n stack.push(left, mid, mid, right);\n }\n}\n","import VectorLayer from 'ol/layer/Vector'\r\nimport VectorSource from 'ol/source/Vector'\r\nimport Cluster from 'ol/source/Cluster'\r\nimport TileLayer from 'ol/layer/Tile'\r\nimport TileWMSSource from 'ol/source/TileWMS'\r\nimport Point from 'ol/geom/Point'\r\nimport GeoJSON from 'ol/format/GeoJSON'\r\nimport {bbox} from 'ol/loadingstrategy'\r\nimport {getCenter} from 'ol/extent'\r\n\r\nexport const defaultAttribution = `© ${new Date().getFullYear()} iXmap Services GmbH & Co. KG`\r\n\r\nexport const makeVectorLayer = ({id, name = 'Unnamed data layer', features, style}) => {\r\n const layer = new VectorLayer({\r\n source: new VectorSource({\r\n attributions: [defaultAttribution],\r\n features\r\n }),\r\n style\r\n })\r\n layer.set('id', id)\r\n layer.set('name', name)\r\n return layer\r\n}\r\n\r\nexport const makePolygonClusterLayer = ({id, name = 'Unnamed data layer', source, style, distance}) => {\r\n const layer = new VectorLayer({\r\n source: new Cluster({\r\n attributions: [defaultAttribution],\r\n distance,\r\n source,\r\n geometryFunction: feature => {\r\n if (feature.getGeometry().getType() === 'MultiPolygon') {\r\n return new Point(getCenter(feature.getGeometry().getInteriorPoints().getExtent()))\r\n } else {\r\n return feature.getGeometry().getInteriorPoint()\r\n }\r\n }\r\n }),\r\n style\r\n })\r\n layer.set('id', id)\r\n layer.set('name', name)\r\n return layer\r\n}\r\n\r\nexport function makeWFSLayer ({url, typeNames, style}) {\r\n return new VectorLayer({\r\n // source: new ol.source.Cluster({\r\n source: new VectorSource({\r\n attributions: [defaultAttribution],\r\n format: new GeoJSON(),\r\n url: function (extent) {\r\n return `${url}?service=WFS&version=2.0.0&request=GetFeature&typeNames=${typeNames}&outputFormat=application/json&srsname=EPSG:3857&bbox=${extent.join(',')},EPSG:3857`\r\n },\r\n strategy: bbox\r\n }),\r\n style\r\n })\r\n}\r\n\r\nexport function makeWMSLayer ({url, layers}) {\r\n return new TileLayer({\r\n source: new TileWMSSource({\r\n attributions: [defaultAttribution],\r\n url,\r\n params: {\r\n LAYERS: layers\r\n }\r\n })\r\n })\r\n}\r\n\r\nexport function findLayerById (map, id) {\r\n const queue = [...map.getLayers().getArray()]\r\n\r\n while (queue.length) {\r\n const layer = queue.shift()\r\n if (layer.getLayers instanceof Function) {\r\n queue.unshift(...layer.getLayers().getArray())\r\n } else if (layer.get('id') === id) {\r\n return layer\r\n }\r\n }\r\n\r\n return null\r\n}\r\n","var BKDRHash = require('./bkdr-hash');\n\n/**\n * Convert RGB Array to HEX\n *\n * @param {Array} RGBArray - [R, G, B]\n * @returns {String} 6 digits hex starting with #\n */\nvar RGB2HEX = function(RGBArray) {\n var hex = '#';\n RGBArray.forEach(function(value) {\n if (value < 16) {\n hex += 0;\n }\n hex += value.toString(16);\n });\n return hex;\n};\n\n/**\n * Convert HSL to RGB\n *\n * @see {@link http://zh.wikipedia.org/wiki/HSL和HSV色彩空间} for further information.\n * @param {Number} H Hue ∈ [0, 360)\n * @param {Number} S Saturation ∈ [0, 1]\n * @param {Number} L Lightness ∈ [0, 1]\n * @returns {Array} R, G, B ∈ [0, 255]\n */\nvar HSL2RGB = function(H, S, L) {\n H /= 360;\n\n var q = L < 0.5 ? L * (1 + S) : L + S - L * S;\n var p = 2 * L - q;\n\n return [H + 1/3, H, H - 1/3].map(function(color) {\n if(color < 0) {\n color++;\n }\n if(color > 1) {\n color--;\n }\n if(color < 1/6) {\n color = p + (q - p) * 6 * color;\n } else if(color < 0.5) {\n color = q;\n } else if(color < 2/3) {\n color = p + (q - p) * 6 * (2/3 - color);\n } else {\n color = p;\n }\n return Math.round(color * 255);\n });\n};\n\n/**\n * Color Hash Class\n *\n * @class\n */\nvar ColorHash = function(options) {\n options = options || {};\n\n var LS = [options.lightness, options.saturation].map(function(param) {\n param = param || [0.35, 0.5, 0.65]; // note that 3 is a prime\n return Object.prototype.toString.call(param) === '[object Array]' ? param.concat() : [param];\n });\n\n this.L = LS[0];\n this.S = LS[1];\n\n this.hash = options.hash || BKDRHash;\n};\n\n/**\n * Returns the hash in [h, s, l].\n * Note that H ∈ [0, 360); S ∈ [0, 1]; L ∈ [0, 1];\n *\n * @param {String} str string to hash\n * @returns {Array} [h, s, l]\n */\nColorHash.prototype.hsl = function(str) {\n var H, S, L;\n var hash = this.hash(str);\n\n H = hash % 359; // note that 359 is a prime\n hash = parseInt(hash / 360);\n S = this.S[hash % this.S.length];\n hash = parseInt(hash / this.S.length);\n L = this.L[hash % this.L.length];\n\n return [H, S, L];\n};\n\n/**\n * Returns the hash in [r, g, b].\n * Note that R, G, B ∈ [0, 255]\n *\n * @param {String} str string to hash\n * @returns {Array} [r, g, b]\n */\nColorHash.prototype.rgb = function(str) {\n var hsl = this.hsl(str);\n return HSL2RGB.apply(this, hsl);\n};\n\n/**\n * Returns the hash in hex\n *\n * @param {String} str string to hash\n * @returns {String} hex with #\n */\nColorHash.prototype.hex = function(str) {\n var rgb = this.rgb(str);\n return RGB2HEX(rgb);\n};\n\nmodule.exports = ColorHash;\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.quickselect = factory());\n}(this, (function () { 'use strict';\n\nfunction quickselect(arr, k, left, right, compare) {\n quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n while (right > left) {\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselectStep(arr, k, newLeft, newRight, compare);\n }\n\n var t = arr[k];\n var i = left;\n var j = right;\n\n swap(arr, left, k);\n if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n while (i < j) {\n swap(arr, i, j);\n i++;\n j--;\n while (compare(arr[i], t) < 0) i++;\n while (compare(arr[j], t) > 0) j--;\n }\n\n if (compare(arr[left], t) === 0) swap(arr, left, j);\n else {\n j++;\n swap(arr, j, right);\n }\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\n\nfunction swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nreturn quickselect;\n\n})));\n","import Style from 'ol/style/Style'\r\nimport Stroke from 'ol/style/Stroke'\r\n\r\nimport {setLabel, modifierStack} from '@helpers/openlayers/styles'\r\nimport {polygonClusterBase, border, borderBase} from './base'\r\n\r\nexport const field = modifierStack(border, [\r\n setLabel(feature => feature.get('name') || '')\r\n])\r\n\r\nexport const fieldWithCode = modifierStack(border, [\r\n setLabel(feature => feature.get('code') || '')\r\n])\r\n\r\n// TODO: might be obsolete\r\nexport const fieldBorder = modifierStack(borderBase, [\r\n setLabel(feature => feature.get('name') || '')\r\n])\r\n\r\nexport const fieldCluster = (feature, resolution) => {\r\n if (resolution < 100) {\r\n return []\r\n } else {\r\n polygonClusterBase.getText().setText(feature.get('features').length.toString())\r\n const normalizedResolution = (Math.min(500, resolution) - 100) / 400\r\n const opacity = (0.2 + normalizedResolution * 0.6).toFixed(2)\r\n polygonClusterBase.getImage().getFill().setColor(`rgba(255, 130, 40, ${opacity})`)\r\n polygonClusterBase.getImage().setRadius(15) // NOTE necessary because of ol issue #5775, cached rendering of ol.Image classes, circle only re-renders on radius change\r\n\r\n // NOTE size calculation would need screenspace coordinates, can't access map object here for .getPixelFromCoordinate\r\n // const coordinates = feature.get('features').map(x => x.getGeometry().getCoordinates()).reduce((combined, coords) => combined.concat(coords), [])\r\n // const [minx, miny, maxx, maxy] = ol.extent.boundingExtent(coordinates)\r\n // const radius = ((maxx - minx) + (maxy - miny)) / 4\r\n // polygonClusterBase.getImage().setRadius(Math.max(10, radius))\r\n return polygonClusterBase\r\n }\r\n}\r\n\r\nexport const fieldBorderSelected = new Style({\r\n stroke: new Stroke({\r\n color: 'rgb(255, 255, 255)',\r\n width: 4\r\n })\r\n // fill: new Fill({\r\n // color: 'rgba(255, 255, 255, 0.3)'\r\n // })\r\n})\r\n","import Style from 'ol/style/Style'\r\nimport Stroke from 'ol/style/Stroke'\r\n\r\nimport {setLabel, setColor, modifierStack} from '@helpers/openlayers/styles'\r\nimport {cultivationToColor} from '@frs/helpers/colors'\r\nimport {getCropUsageTranslations} from '@frs/helpers/crops'\r\n\r\nimport {polygonBase, stripedPolygonBase, stripedPolygonBaseWithoutText} from './base'\r\n\r\n// TODO resolve via localization if possible\r\nconst typeNames = {\r\n main: 'Hauptfrucht',\r\n secondary: 'Zweitfrucht',\r\n catch: 'Zwischenfrucht',\r\n dual: 'ZKNS',\r\n eco: 'ÖVF'\r\n}\r\n\r\nconst cultivationToLabel = (type, cropUsage) => {\r\n switch (type) {\r\n case 'main':\r\n case 'secondary': {\r\n return cropUsage ? getCropUsageTranslations(cropUsage.id).name : typeNames[type]\r\n }\r\n default:\r\n return typeNames[type]\r\n }\r\n}\r\n\r\nexport const activeCultivation = modifierStack(polygonBase, [\r\n setLabel(feature => feature.get('name')),\r\n setColor(feature => {\r\n const {type, ecoTypeId, cropUsage} = feature.getProperties()\r\n return cultivationToColor({type, ecoTypeId}, cropUsage)\r\n })\r\n])\r\n\r\nexport const cultivation = modifierStack(stripedPolygonBase, [\r\n setLabel(feature => {\r\n const {type, cropUsage} = feature.getProperties()\r\n return cultivationToLabel(type, cropUsage)\r\n }),\r\n setColor(feature => {\r\n const {type, ecoTypeId, cropUsage} = feature.getProperties()\r\n return cultivationToColor({type, ecoTypeId}, cropUsage)\r\n })\r\n])\r\n\r\nexport const cultivationWithoutText = modifierStack(stripedPolygonBaseWithoutText, [\r\n setColor(feature => {\r\n const {type, ecoTypeId, color} = feature.getProperties()\r\n return {\r\n fill: cultivationToColor({type, ecoTypeId}, null, color),\r\n stroke: 'rgb(255, 0, 0)'\r\n }\r\n })\r\n])\r\n\r\nexport const cultivationWithCode = modifierStack(stripedPolygonBase, [\r\n setLabel(feature => {\r\n const props = feature.getProperties()\r\n return props.fieldCodes\r\n }),\r\n setColor(feature => {\r\n const {type, ecoTypeId, color} = feature.getProperties()\r\n const cultivationColor = cultivationToColor({type, ecoTypeId}, null, color)\r\n return {\r\n fill: cultivationColor,\r\n stroke: 'rgb(255, 0, 0)',\r\n textColor: cultivationColor\r\n }\r\n })\r\n])\r\n\r\nexport const cultivationFieldBorder = [new Style({\r\n stroke: new Stroke({\r\n color: 'rgb(180, 180, 180)',\r\n width: 1,\r\n lineDash: [10, 5]\r\n })\r\n})]\r\n\r\nexport const fieldBorderCultivationSelected = new Style({\r\n stroke: new Stroke({\r\n color: 'rgb(255, 255, 255)',\r\n width: 3\r\n })\r\n})\r\n","import Style from 'ol/style/Style'\r\nimport Fill from 'ol/style/Fill'\r\n\r\nimport {modifierStack, setLabel, setColor} from '@helpers/openlayers/styles'\r\nimport {stripes} from 'src/js/helpers/openlayers/patterns'\r\n\r\nimport {cultivationToColor} from '@frs/helpers/colors'\r\n\r\nimport {polygonBase, stripedPolygonBase} from './base'\r\n\r\nconst actionTypeColors = {\r\n 'seeding': 'rgb(145, 210, 80)',\r\n 'irrigation': 'rgb(150, 180, 215)',\r\n 'tillage': 'rgb(200, 95, 10)',\r\n 'fertilization': 'rgb(90, 115, 45)',\r\n 'harvest': 'rgb(255, 190, 0)',\r\n 'protection': 'rgb(245, 50, 15)',\r\n 'maintenance': 'rgb(245, 250, 85)',\r\n 'logistics': 'rgb(125, 125, 125)'\r\n}\r\n\r\nconst actionToColor = ({type}) => {\r\n const color = actionTypeColors[type] || 'rgb(138, 138, 138)'\r\n return {fill: stripes(color, 'transparent'), stroke: color}\r\n}\r\n\r\nexport const actionCultivationSelection = modifierStack(polygonBase, [\r\n setLabel(feature => ''),\r\n setColor(feature => {\r\n const {cultivation, cropUsage} = feature.getProperties()\r\n if (cultivation) {\r\n const {type, ecoTypeId} = cultivation\r\n return cultivationToColor({type, ecoTypeId}, cropUsage)\r\n } else {\r\n return 'rgb(138, 138, 138)'\r\n }\r\n })\r\n])\r\n\r\nexport const actionCultivationSelectionSelected = modifierStack(stripedPolygonBase, [\r\n setLabel(feature => ''),\r\n setColor(feature => ({stroke: 'rgba(255, 255, 255, 0.5)', fill: stripes('rgba(255, 255, 255, 0.4)', 'transparent')}))\r\n])\r\n\r\nexport const actionCultivationSelectionHover = modifierStack(polygonBase, [\r\n setLabel(feature => ''),\r\n setColor(feature => ({stroke: 'rgba(255, 255, 255, 1)', fill: 'rgba(255, 255, 255, 0.4)'}))\r\n])\r\n\r\nexport const actionCultivationSelectionCutOff = new Style({\r\n fill: new Fill({\r\n color: stripes('rgba(255, 0, 255, 0.3)', 'transparent')\r\n })\r\n})\r\n\r\nexport const action = modifierStack(stripedPolygonBase, [\r\n setLabel(feature => {\r\n const {name} = feature.getProperties()\r\n return name || ''\r\n }),\r\n setColor(feature => {\r\n const {type} = feature.getProperties()\r\n return actionToColor({type})\r\n })\r\n])\r\n","import Style from 'ol/style/Style'\r\nimport Fill from 'ol/style/Fill'\r\nimport Circle from 'ol/style/Circle'\r\nimport Stroke from 'ol/style/Stroke'\r\n\r\nimport {modifierStack, setColor, setLabel} from '@helpers/openlayers/styles'\r\nimport {desaturate} from '@helpers/color'\r\nimport {colorFunctions} from '@helpers/map-color-schemes'\r\nimport {zoneBase} from './base'\r\n\r\nconst minimalZoneColors = [\r\n '#0050d7',\r\n '#1bc1d1',\r\n '#35d11b',\r\n '#d1b41b',\r\n '#bb1303'\r\n]\r\n\r\nexport const zonemap = modifierStack(zoneBase, [\r\n setColor((feature) => {\r\n // TODO rename `zone` to `zoneNumber` or `number`\r\n const {zone, zoneCount} = feature.getProperties()\r\n\r\n return colorFunctions.agrosat(zone, zoneCount)\r\n }, 0.75),\r\n setLabel((feature) => {\r\n const {placeholder, zone, e_vari: variation} = feature.getProperties()\r\n\r\n if (placeholder) return placeholder\r\n\r\n return variation ? `${zone} ${variation}` : `${zone}`\r\n })\r\n])\r\n\r\nexport const agrosatApplicationMap = modifierStack(zoneBase, [\r\n setColor((feature) => {\r\n // TODO rename `zone` to `zoneNumber` or `number`\r\n const {zone, zoneCount} = feature.getProperties()\r\n\r\n return colorFunctions.agrosat(zone, zoneCount)\r\n }, 0.75),\r\n setLabel((feature) => {\r\n const {displayValue} = feature.getProperties()\r\n return displayValue\r\n })\r\n])\r\nconst minimalBase = new Style({\r\n fill: new Fill({\r\n color: 'transparent'\r\n })\r\n})\r\n\r\nconst mutedZoneColors = minimalZoneColors.map(color => desaturate(color, 0.6))\r\n\r\nexport const zonemapMinimal = modifierStack(minimalBase, [\r\n setColor(feature => mutedZoneColors[feature.get('zone')] || '#dddddd', 0.6)\r\n])\r\n\r\nexport const error = [new Style({\r\n image: new Circle({\r\n fill: new Fill({\r\n color: 'rgba(255, 127, 0, 0.3)'\r\n }),\r\n stroke: new Stroke({\r\n color: 'rgba(255, 0, 0, 1)',\r\n width: 5\r\n }),\r\n radius: 20\r\n })\r\n})]\r\n","import Style from 'ol/style/Style'\r\nimport Stroke from 'ol/style/Stroke'\r\nimport Fill from 'ol/style/Fill'\r\nimport Circle from 'ol/style/Circle'\r\nimport Text from 'ol/style/Text'\r\nimport Point from 'ol/geom/Point'\r\nimport MultiPoint from 'ol/geom/MultiPoint'\r\nimport {add} from 'ol/coordinate'\r\n\r\nimport {setLabel} from '@helpers/openlayers/styles'\r\nimport {withAlpha, readableTextColor} from '@helpers/color'\r\nimport {map} from '@helpers/objects'\r\n\r\nimport colors from './colors'\r\n\r\nconst makePointStyle = color => new Style({\r\n image: new Circle({\r\n radius: 5,\r\n stroke: new Stroke({color: '#000000', width: 2}),\r\n fill: new Fill({color: withAlpha(color, 0.85)})\r\n }),\r\n text: new Text({\r\n textAlign: 'left',\r\n textBaseline: 'middle',\r\n text: '1 (placeholder)',\r\n font: '14px CalibreWeb',\r\n fill: new Fill({\r\n color: readableTextColor(color)\r\n }),\r\n stroke: new Stroke({\r\n color: withAlpha(color, 1),\r\n width: 3\r\n }),\r\n offsetX: 8,\r\n overflow: true\r\n }),\r\n geometry (feature) {\r\n const geometry = feature.getGeometry()\r\n if (geometry.getType() === 'LineString') {\r\n return new Point(geometry.getCoordinateAt(0.5))\r\n }\r\n return geometry\r\n }\r\n})\r\n\r\nconst makeLineStyle = color => new Style({\r\n stroke: new Stroke({\r\n color: withAlpha(color, 1),\r\n width: 3\r\n })\r\n})\r\n\r\nconst makeVertexStyle = color => new Style({\r\n image: new Circle({\r\n radius: 2,\r\n fill: new Fill({color: withAlpha(color, 1)})\r\n }),\r\n geometry (feature) {\r\n const geometry = feature.getGeometry()\r\n if (geometry.getType() === 'LineString') {\r\n return new MultiPoint(geometry.getCoordinates())\r\n }\r\n return null\r\n }\r\n})\r\n\r\nconst makeZentroidStyle = color => new Style({\r\n image: new Circle({\r\n radius: 7,\r\n stroke: new Stroke({color: withAlpha(color, 1)}),\r\n fill: new Fill({color: withAlpha(color, 0.05)})\r\n }),\r\n text: new Text({\r\n textAlign: 'left',\r\n textBaseline: 'middle',\r\n text: 'Z',\r\n font: '10px CalibreWeb',\r\n fill: new Fill({\r\n color: readableTextColor(color)\r\n }),\r\n stroke: new Stroke({\r\n color: withAlpha(color, 1),\r\n width: 3\r\n }),\r\n offsetX: 10,\r\n overflow: true\r\n }),\r\n geometry (feature) {\r\n const geometry = feature.getGeometry()\r\n if (geometry.getType() === 'LineString' && feature.get('showZentroid')) {\r\n return new Point(geometry.getCoordinates().reduce((sum, val) => add(sum, val)).map(s => s / geometry.getCoordinates().length))\r\n }\r\n return null\r\n }\r\n})\r\n\r\nexport const makePointLineBaseStyle = color => ({\r\n point: makePointStyle(color),\r\n line: makeLineStyle(color),\r\n vertex: makeVertexStyle(color),\r\n zentroid: makeZentroidStyle(color)\r\n})\r\n\r\nconst probingGeometryBaseStyles = map(colors.probingGeometry, makePointLineBaseStyle)\r\n\r\nconst setProbingGeometryLabel = setLabel(feature => {\r\n const {label, sampleId, number} = feature.getProperties()\r\n\r\n return (label || sampleId || '') + (number !== undefined ? ` (${number})` : '')\r\n})\r\n\r\nexport const makeProbingGeometryStyle = colorSelectorFunc => (feature, resolution) => {\r\n const styles = probingGeometryBaseStyles[colorSelectorFunc(feature.getProperties())]\r\n\r\n if (!styles) return null\r\n\r\n const {line, vertex, point} = styles || {}\r\n setProbingGeometryLabel(point, feature, resolution)\r\n\r\n return [line, vertex, point]\r\n}\r\n\r\nconst classificationResultBaseStyles = map(colors.classification, makePointLineBaseStyle)\r\n\r\nconst setClassificationLabel = setLabel(feature => feature.get('value'))\r\n\r\nexport const classificationResultStyle = (feature, resolution) => {\r\n const {line, vertex, point, zentroid} = classificationResultBaseStyles[feature.get('value')]\r\n\r\n setClassificationLabel(point, feature, resolution)\r\n\r\n return [line, vertex, point, zentroid]\r\n}\r\n","import {modifierStack, setColor, setLabel} from '@helpers/openlayers/styles'\r\nimport {zoneBase} from '@frs/map-styles/base'\r\nimport {colorFunctions} from '@helpers/map-color-schemes'\r\n\r\nimport colors from './colors'\r\nimport {makeProbingGeometryStyle, classificationResultStyle} from './probing-geometries'\r\n\r\nconst selectPlanningColor = ({isActive, isNew, markedForDeletion}) => isNew\r\n ? markedForDeletion\r\n ? null\r\n : 'new'\r\n : markedForDeletion\r\n ? 'deleted'\r\n : isActive\r\n ? 'active'\r\n : 'inactive'\r\n\r\nexport const planningPoint = makeProbingGeometryStyle(selectPlanningColor)\r\n\r\nconst selectOrderPointPreviewColor = ({active}) => active\r\n ? 'active'\r\n : 'inactive'\r\n\r\nexport const orderPointPreview = makeProbingGeometryStyle(selectOrderPointPreviewColor)\r\n\r\nconst selectResultPreviewColor = ({isCompleted, isSelected}) => isSelected\r\n ? 'active'\r\n : isCompleted\r\n ? 'hasResult'\r\n : 'open'\r\n\r\nexport const probingResultPreview = makeProbingGeometryStyle(selectResultPreviewColor)\r\n\r\nexport const nutrientClassification = classificationResultStyle\r\n\r\nexport const nutrientMap = modifierStack(zoneBase, [\r\n setColor(feature => {\r\n const {placeholder, contentClass} = feature.getProperties()\r\n\r\n if (placeholder) return '#c1c1c1'\r\n\r\n return colors.classification[contentClass] || '#ff00ff'\r\n }, 0.75),\r\n setLabel(feature => {\r\n const {placeholder, id} = feature.getProperties()\r\n\r\n return placeholder || `${id}`\r\n })\r\n])\r\n\r\nexport const nutrientApplicationMap = modifierStack(zoneBase, [\r\n setColor(feature => {\r\n // TODO rename `type` to `nutrient`\r\n const {value, type} = feature.getProperties()\r\n\r\n return colorFunctions.lufa(value, type)\r\n }),\r\n setLabel(feature => {\r\n const {id, verboseLabel, displayValue} = feature.getProperties()\r\n return verboseLabel\r\n ? `Zone ${id} (${displayValue} kg/ha)`\r\n : `Zone ${id}`\r\n })\r\n])\r\n\r\nexport const plannedYield = modifierStack(zoneBase, [\r\n setColor(feature => feature.get('plannedYield') ? '#008000' : '#777777', 0.75),\r\n setLabel(feature => feature.get('plannedYield') || '')\r\n])\r\n","import Style from 'ol/style/Style'\r\nimport Stroke from 'ol/style/Stroke'\r\nimport ColorHash from 'color-hash'\r\n\r\nimport {setLabel, setColor, modifierStack} from '@helpers/openlayers/styles'\r\nimport {withAlpha} from '@helpers/color'\r\nimport {polygonBase} from './base'\r\n\r\nconst hash = new ColorHash()\r\n\r\nexport const entityImportPreview = modifierStack(polygonBase, [\r\n setLabel(feature => {\r\n const {name, colorProperty} = feature.getProperties()\r\n\r\n if (!colorProperty) return name\r\n\r\n const colorKey = feature.get(colorProperty)\r\n\r\n return colorKey\r\n ? `${name} (${colorKey})`\r\n : name\r\n }),\r\n setColor(feature => {\r\n const {selected, colorProperty} = feature.getProperties()\r\n\r\n const colorKey = feature.get(colorProperty)\r\n const color = colorKey ? hash.hex(colorKey) : '#bbb'\r\n\r\n return {stroke: color, fill: selected ? withAlpha(color, 0.75) : 'rgba(0, 0, 0, 0)'}\r\n })\r\n])\r\n\r\nexport const entityImportPreviewHover = new Style({\r\n stroke: new Stroke({\r\n color: '#ffffff',\r\n width: 2\r\n })\r\n})\r\n","import Style from 'ol/style/Style'\r\nimport Stroke from 'ol/style/Stroke'\r\nimport Fill from 'ol/style/Fill'\r\n\r\nimport {setColor, modifierStack} from '@helpers/openlayers/styles'\r\n\r\nexport const fieldBorderSuggestionBase = new Style({\r\n fill: new Fill({\r\n color: 'rgba(255, 255, 255, 0.25)'\r\n }),\r\n stroke: new Stroke({\r\n color: 'rgba(255, 255, 255, 0.5)',\r\n width: 1\r\n })\r\n})\r\n\r\nexport const fieldBorderSuggestion = modifierStack(fieldBorderSuggestionBase, [\r\n setColor(feature => feature.get('fclass') === 'farm' ? 'rgba(255, 255, 255)' : 'rgba(128, 128, 128)', 0.5)\r\n])\r\n\r\nexport const roads = new Style({\r\n stroke: new Stroke({\r\n color: 'rgb(99, 165, 182)',\r\n width: 2\r\n })\r\n})\r\n","import Style from 'ol/style/Style'\r\nimport Stroke from 'ol/style/Stroke'\r\nimport Fill from 'ol/style/Fill'\r\nimport Circle from 'ol/style/Circle'\r\n\r\nconst makeUniversalStyle = ({stroke, fill, radius = 5}) => new Style({\r\n image: new Circle({\r\n radius,\r\n stroke,\r\n fill\r\n }),\r\n stroke,\r\n fill\r\n})\r\n\r\nconst defaultSelectionStyle = makeUniversalStyle({\r\n stroke: new Stroke({\r\n color: 'white',\r\n width: 4\r\n })\r\n})\r\n\r\nconst selectionMarkerStyle = new Style({\r\n image: new Circle({\r\n radius: 20,\r\n stroke: new Stroke({color: 'white', width: 2})\r\n }),\r\n geometry: feature => {\r\n const geometry = feature.getGeometry()\r\n if (geometry.getType() === 'Polygon') {\r\n return geometry.getInteriorPoint()\r\n }\r\n }\r\n})\r\n\r\nexport const selectionStyle = (feature, resolution) => {\r\n if (resolution > 100) {\r\n return [defaultSelectionStyle, selectionMarkerStyle]\r\n } else {\r\n return defaultSelectionStyle\r\n }\r\n}\r\n\r\nexport const hoverStyle = makeUniversalStyle({\r\n stroke: new Stroke({\r\n color: 'white',\r\n width: 1\r\n }),\r\n fill: new Fill({\r\n color: 'rgba(255, 255, 255, 0.1)'\r\n })\r\n})\r\n\r\nexport const selectedPoint = new Style({\r\n image: new Circle({\r\n radius: 6,\r\n fill: new Fill({\r\n color: '#ffa500'\r\n }),\r\n stroke: new Stroke({color: '#875900', width: 3})\r\n })\r\n})\r\n","export * from './base'\r\nexport * from './field'\r\nexport * from './cultivation'\r\nexport * from './action'\r\nexport * from './zonemap'\r\nexport * from './basic-fertilization'\r\nexport * from './entity-import'\r\nexport * from './maps'\r\nexport * from './hadoop-experimental'\r\nexport * from './selection'\r\n","import store from '@store'\r\n\r\nfunction translationOrNull (namespace, key) {\r\n const translation = store.state.i18n.translations[namespace][key]\r\n\r\n return typeof translation === 'string' ? translation : null\r\n}\r\n\r\nconst allTranslationsFromKeys = (id, namespace, keys) => keys\r\n .reduce((obj, key) => Object.assign(obj, {[key]: translationOrNull(namespace, `${id}_${key}`)}), {})\r\n\r\nexport const getCropTranslations = id => allTranslationsFromKeys(id, 'masterData.crops.crop', ['name'])\r\n\r\nexport const getCropUsageTranslations = (id, useFallbackAbbreviation) => {\r\n const translations = allTranslationsFromKeys(id, 'masterData.crops.usage', ['name', 'abbreviation'])\r\n if (useFallbackAbbreviation && !translations.abbreviation) {\r\n translations.abbreviation = translations.name.substring(0, 3)\r\n }\r\n return translations\r\n}\r\n\r\nexport const getCropHarvestQualityTranslations = id => allTranslationsFromKeys(id, 'masterData.crops.quality', ['name'])\r\n","export function cultivationToColor ({type, ecoTypeId}, cropUsage = null, color = null) {\r\n let displayColor\r\n switch (type) {\r\n case 'main':\r\n case 'secondary':\r\n if (cropUsage) {\r\n displayColor = cropUsage.color\r\n } else if (color) {\r\n displayColor = color\r\n }\r\n break\r\n case 'eco': {\r\n switch (ecoTypeId) {\r\n case 'Brache': {\r\n displayColor = '#4a91b1'\r\n break\r\n }\r\n default: {\r\n displayColor = '#6c9db3'\r\n break\r\n }\r\n }\r\n break\r\n }\r\n case 'catch': {\r\n displayColor = '#302f69'\r\n break\r\n }\r\n default: {\r\n displayColor = '#ff0000'\r\n break\r\n }\r\n }\r\n return displayColor || '#3b3b3b'\r\n}\r\n","import {replaceAliases} from '@helpers/i18n'\r\n\r\nconst isVueInternal = (key) => typeof key !== 'string' || key === 'toJSON' || key === '_isVue' || key === '_vm' || key === 'render' || key === 'state'\r\n\r\nconst createProxy = (alias, resource, store) => new Proxy(store.state.i18n, {\r\n ownKeys (state) {\r\n return Object.keys(state.translations[resource] || {})\r\n },\r\n get (state, key) {\r\n if (key === '_alias') {\r\n return alias\r\n }\r\n if (key === '_resource') {\r\n return resource\r\n }\r\n const existing = state.translations[resource] ? state.translations[resource][key] : undefined\r\n if (existing === undefined && !isVueInternal(key)) {\r\n store.dispatch('i18n/signalMissingTranslation', {namespace: resource, key})\r\n }\r\n return existing\r\n }\r\n})\r\n\r\nexport function normalizeMap (map) {\r\n return Array.isArray(map)\r\n ? map.map(key => ({key, val: key}))\r\n : Object.keys(map).map(key => ({key, val: map[key]}))\r\n}\r\n\r\n/*\r\nUsage:\r\n\r\nimport {mapResources} from '@helpers/vuex'\r\n\r\nexport default {\r\n computed: {\r\n // filename is used as property name\r\n ...mapResources([\r\n 'Areas.FieldRecordSystem.SR_FieldRecordSystem'\r\n ]),\r\n ...mapResources('Areas.FieldRecordSystem', [\r\n 'SR_FieldRecordSystem',\r\n 'SR_FieldRecordSystemSubResource'\r\n ]),\r\n // custom property name\r\n ...mapResources({\r\n SR_FRS: 'Areas.FieldRecordSystem.SR_FieldRecordSystem'\r\n }),\r\n ...mapResources('Areas.FieldRecordSystem', {\r\n SR_FRS: 'SR_FieldRecordSystem'\r\n }),\r\n // predefined global aliases for common paths\r\n ...mapResources([\r\n '@frs.SR_FieldRecordSystem' // resolves to 'Areas.FieldRecordSystem.SR_FieldRecordSystem'\r\n ])\r\n }\r\n}\r\n*/\r\nexport const mapResources = (prefix, resources) => {\r\n if (!window.Proxy) {\r\n throw new Error('ES6 Proxy not supported, localization mixin will not work correctly')\r\n }\r\n\r\n if (typeof prefix !== 'string') {\r\n resources = prefix\r\n prefix = ''\r\n }\r\n\r\n resources = Array.isArray(resources)\r\n ? resources.map(resource => ({propertyName: resource.split('.').slice(-1)[0], resource}))\r\n : Object.keys(resources).map(propertyName => ({propertyName, resource: resources[propertyName]}))\r\n\r\n const computed = {}\r\n\r\n for (const {propertyName, resource} of resources) {\r\n const fullResource = replaceAliases(prefix ? `${prefix}.${resource}` : resource)\r\n\r\n computed[propertyName] = function () {\r\n return window.Proxy ? createProxy(propertyName, fullResource, this.$store) : {}\r\n }\r\n }\r\n\r\n return computed\r\n}\r\n","import {followPath, splitPropertyPath, splitModulePathSegments, defaultSetterName} from './common'\r\n\r\nexport function mapFormFields (modulePath, fields) {\r\n if (typeof modulePath !== 'string') {\r\n fields = modulePath\r\n modulePath = ''\r\n }\r\n\r\n const modulePathSegments = modulePath ? splitModulePathSegments(modulePath) : []\r\n\r\n const resolveModule = vm => followPath(vm.$store.state, modulePathSegments.map(x => {\r\n if (vm.modulePath) {\r\n return x.replace('{modulePath}', vm.modulePath)\r\n } else {\r\n return x\r\n }\r\n }))\r\n\r\n const computed = {}\r\n\r\n if (Array.isArray(fields)) {\r\n fields = fields.reduce((obj, path) => Object.assign(obj, {[path]: {}}), {})\r\n }\r\n\r\n for (const field in fields || {}) {\r\n const [fieldPath, propertyName] = splitPropertyPath(field)\r\n\r\n const options = fields[field]\r\n const {read, write, propertyName: propertyNameOverride} = options\r\n\r\n const mutation = typeof options === 'string'\r\n ? options\r\n : options.mutation\r\n ? options.mutation\r\n : defaultSetterName(propertyName)\r\n\r\n const fullMutationName = modulePath\r\n ? `${modulePath}/${mutation}`\r\n : mutation\r\n\r\n computed[propertyNameOverride || propertyName] = {\r\n get: read\r\n ? function () {\r\n const state = resolveModule(this)\r\n const getters = modulePath\r\n ? Object.keys(this.$store.getters)\r\n .filter(key => key.startsWith(`${modulePath}/`))\r\n .reduce((getters, key) => Object.assign(getters, {[key.replace(new RegExp(`^${modulePath}/`), '')]: this.$store.getters[key]}), {})\r\n : this.$store.getters\r\n\r\n const value = followPath(state, fieldPath)[propertyName]\r\n return read.call(this, value, state, getters)\r\n }\r\n : function () {\r\n const state = resolveModule(this)\r\n return followPath(state, fieldPath)[propertyName]\r\n },\r\n set (value) {\r\n const specificFullMutationName = fullMutationName.includes('{modulePath}') ? fullMutationName.replace('{modulePath}', this.modulePath) : fullMutationName\r\n this.$store.commit(specificFullMutationName, write ? write.call(this, value) : value)\r\n }\r\n }\r\n }\r\n return computed\r\n}\r\n\r\nexport const modelProxy = {\r\n get () {\r\n return this.$options.model && this.$options.model.prop ? this[this.$options.model.prop] : this.value\r\n },\r\n set (value) {\r\n if (this.$options.model && this.$options.model.event) {\r\n this.$emit(this.$options.model.event, value)\r\n } else {\r\n this.$emit('input', value)\r\n }\r\n }\r\n}\r\n","export * from './i18n'\r\nexport * from './forms'\r\n","import {unByKey} from 'ol/Observable'\r\nimport VectorLayer from 'ol/layer/Vector'\r\nimport VectorSource from 'ol/source/Vector'\r\nimport Cluster from 'ol/source/Cluster'\r\nimport Point from 'ol/geom/Point'\r\nimport GeoJSON from 'ol/format/GeoJSON'\r\nimport {getCenter} from 'ol/extent'\r\n\r\nimport {defaultAttribution} from '@helpers/openlayers/layers'\r\n\r\nconst geoJsonFormat = new GeoJSON({dataProjection: 'EPSG:4326', featureProjection: 'EPSG:3857'})\r\n\r\nexport default {\r\n inject: [\r\n 'getMap'\r\n ],\r\n props: {\r\n features: {\r\n default: () => []\r\n },\r\n vectorStyle: {\r\n required: true\r\n },\r\n clusterStyle: {\r\n default: null\r\n },\r\n maxZoom: {\r\n type: Number,\r\n default: Infinity\r\n },\r\n zIndex: {\r\n type: Number,\r\n default: 0\r\n },\r\n autoFocus: Boolean,\r\n fast: Boolean,\r\n layerId: String\r\n },\r\n data () {\r\n return {\r\n zoom: null\r\n }\r\n },\r\n computed: {\r\n olFeatures () {\r\n const featureArrayOrCollection = this.features\r\n\r\n let features\r\n if (featureArrayOrCollection.type === 'FeatureCollection') {\r\n features = geoJsonFormat.readFeatures(featureArrayOrCollection)\r\n } else {\r\n if (featureArrayOrCollection.length && featureArrayOrCollection[0].type === 'Feature') {\r\n features = featureArrayOrCollection.map(x => geoJsonFormat.readFeature(x))\r\n } else {\r\n // TODO replace with throw at some point, when ol.Feature references have been purged from application code\r\n features = featureArrayOrCollection\r\n }\r\n }\r\n\r\n return features\r\n }\r\n },\r\n methods: {\r\n recreate () {\r\n if (this.layer) {\r\n this.map.getLayers().remove(this.layer)\r\n this.layer = null\r\n }\r\n\r\n if (this.zoom > this.maxZoom) return\r\n\r\n this.layer = new VectorLayer({\r\n source: new VectorSource({\r\n attributions: [defaultAttribution],\r\n features: this.olFeatures,\r\n useSpatialIndex: !this.fast\r\n }),\r\n style: this.vectorStyle,\r\n zIndex: this.zIndex,\r\n updateWhileAnimating: this.fast,\r\n updateWhileInteracting: this.fast\r\n })\r\n\r\n if (this.layerId) {\r\n this.layer.set('id', this.layerId)\r\n }\r\n\r\n this.map.getLayers().push(this.layer)\r\n\r\n if (this.clusterStyle) {\r\n this.clusterLayer = new VectorLayer({\r\n source: new Cluster({\r\n attributions: [defaultAttribution],\r\n distance: 20,\r\n source: this.layer.getSource(),\r\n geometryFunction: feature => {\r\n const geometry = feature.getGeometry()\r\n switch (geometry.getType()) {\r\n case 'MultiPolygon': {\r\n return new Point(getCenter(geometry.getInteriorPoints().getExtent()))\r\n }\r\n case 'Polygon': {\r\n return geometry.getInteriorPoint()\r\n }\r\n case 'MultiPoint': {\r\n return getCenter(geometry.getExtent())\r\n }\r\n default: return geometry\r\n }\r\n }\r\n }),\r\n style: this.clusterStyle\r\n })\r\n\r\n if (this.layerId) {\r\n this.clusterLayer.set('id', `${this.layerId}-cluster`)\r\n }\r\n\r\n this.map.getLayers().push(this.clusterLayer)\r\n }\r\n\r\n if (this.autoFocus) {\r\n this.focus()\r\n }\r\n },\r\n focus () {\r\n if (!this.olFeatures || (Array.isArray(this.olFeatures) && !this.olFeatures.length)) return\r\n\r\n const extent = this.layer.getSource().getExtent()\r\n const size = this.map.getSize()\r\n this.map.getView().fit(extent, {size, duration: 500})\r\n }\r\n },\r\n watch: {\r\n zoom (zoom) {\r\n if ((this.layer && zoom > this.maxZoom) || (!this.layer && zoom <= this.maxZoom)) {\r\n this.recreate()\r\n }\r\n\r\n this.$emit('zoom', this.zoom)\r\n },\r\n olFeatures (features) {\r\n if (!this.layer) return\r\n\r\n const source = this.layer.getSource()\r\n source.clear()\r\n source.addFeatures(features)\r\n\r\n if (this.autoFocus) {\r\n this.focus()\r\n }\r\n },\r\n zIndex (zIndex) {\r\n if (this.layer) {\r\n this.layer.setZIndex(zIndex)\r\n }\r\n },\r\n vectorStyle () {\r\n if (this.map) {\r\n this.recreate()\r\n }\r\n }\r\n },\r\n updated () {\r\n if (this.map) {\r\n this.recreate()\r\n }\r\n },\r\n mounted () {\r\n this.getMap().then(map => {\r\n this.map = map\r\n\r\n this.zoom = this.map.getView().getZoom()\r\n this.zoomListenerKey = this.map.getView().on('change:resolution', () => {\r\n this.zoom = this.map.getView().getZoom()\r\n })\r\n\r\n this.recreate()\r\n })\r\n },\r\n beforeDestroy () {\r\n if (this.layer) {\r\n this.map.getLayers().remove(this.layer)\r\n }\r\n if (this.clusterLayer) {\r\n this.map.getLayers().remove(this.clusterLayer)\r\n }\r\n unByKey(this.zoomListenerKey)\r\n },\r\n render () {\r\n return null\r\n }\r\n}\r\n","/**\n * BKDR Hash (modified version)\n *\n * @param {String} str string to hash\n * @returns {Number}\n */\nvar BKDRHash = function(str) {\n var seed = 131;\n var seed2 = 137;\n var hash = 0;\n // make hash more sensitive for short string like 'a', 'b', 'c'\n str += 'x';\n // Note: Number.MAX_SAFE_INTEGER equals 9007199254740991\n var MAX_SAFE_INTEGER = parseInt(9007199254740991 / seed2);\n for(var i = 0; i < str.length; i++) {\n if(hash > MAX_SAFE_INTEGER) {\n hash = parseInt(hash / seed2);\n }\n hash = hash * seed + str.charCodeAt(i);\n }\n return hash;\n};\n\nmodule.exports = BKDRHash;\n"],"sourceRoot":""}