{"version":3,"sources":["webpack:///./wwwroot/src/vue/areas/field-record-system/components/basic-fertilization/oxidform-calculation.js","webpack:///./wwwroot/src/js/store/modules/field-record-system/phbb/index.js"],"names":["__webpack_require__","d","__webpack_exports__","calculateToOxidform","calculateFromOxidform","oxideNames","normalFactors","phosphorus","magnesium","potassium","oxideFactors","nutrient","value","defaults","data","common","entireField","targetValue","selectedMaps","upload","mappingDate","method","blockSize","pixelSize","sensorData","selectedAttributes","calibration","availableOrders","selectedOrders","algorithmTypes","requiredNutrient","algorithmType","soilGroupMapId","clayMapId","humusMapId","phMapId","limingInterval","soilTesting","showMap","soilGroup","humusContent","pH","clayContent","application","fileFormat","requiredNutrientMapId","alignInDrivingDirection","spreaderWorkingWidth","rasterLength","lane","caOMap","classifyGridToMaximumUCUs","limeApplication","caoApplicationMapId","limeApplicationMap","fertilizerId","useExistingFertilizer","customFertilizer","name","caValue","mgValue","useOxidValues","adjustLowerLimit","applicationRate","minAmount","maxAmount","meanValue","totalRequirement","ui","step","limeApplicationStep","state","namespaced","getters","soilMaps","rootState","rootGetters","soilMapLookup","fieldRecordSystem","mapManagement","soilMap","mapLookup","soilMapIdsByFieldId","mapIdsByFieldId","fieldId","soilMapIds","maps","map","id","requiredNutrientMaps","length","filter","x","category","caOApplicationMaps","actions","createRequiredNutrientMap","_ref","harvestYear","orgUnitId","_state$data$requiredN","_objectSpread","smarterPost","concat","createCaOApplicationMap","_ref2","commit","_state$data$applicati","mapId","then","saveCaOMapWithoutRecalculation","_ref3","_state$data$applicati2","borderGeometry","generatedAt","metaData","origin","zones","createLimeApplicationMap","_ref4","caO","mgO","dispatch","isRecalculation","arguments","undefined","products","_state$data$limeAppli","fertilizer","lime","_state$data$limeAppli2","productId","CaOValue","toFixed","MgOValue","_state$data$limeAppli3","fertilizerMinAmount","fertilizerMaxAmount","fertilizerTotalRequirement","_ref5","Object","C_src_Solutions_WebApp_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4__","regeneratorRuntime","mark","_callee","result","wrap","_context","prev","next","root","stop","_x","apply","this","saveCustomFertilizer","_ref6","_state$data$limeAppli4","product","type","isOrganic","isLiquid","source","uploadAndInterpolateSensorData","_ref7","_state$data$common","_state$data$upload","calibrateSensorData","_ref8","_state$data$common2","_state$data$calibrati","dataFields","samplingPoints","reduce","acc","samplingPointsPerOrder","features","feature","dataProps","pick","properties","values","keys","key","sampleId","probingDate","created","geometry","toWkt","loadCompletedFullOrders","_ref9","smarterGet","expiry","inputs","onResult","orders","lookup","keyBy","mutations","makeSetters","setDefaultState","assign","setCaOMap","setApplicationRate"],"mappings":"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","file":"js/chunk-581a1786.bb1229e1.js","sourcesContent":["const normalFactors = {\r\n phosphorus: 0.4364253538112,\r\n magnesium: 0.603136308858,\r\n potassium: 0.8298755186722\r\n}\r\n\r\nconst oxideFactors = {\r\n phosphorus: 2.291342588755,\r\n magnesium: 1.6580,\r\n potassium: 1.2050\r\n}\r\n\r\nexport const calculateToOxidform = (nutrient, value) => {\r\n return oxideFactors[nutrient] * value\r\n}\r\n\r\nexport const calculateFromOxidform = (nutrient, value) => {\r\n return normalFactors[nutrient] * value\r\n}\r\n\r\nexport const oxideNames = {\r\n potassium: 'K₂O',\r\n phosphorus: 'P₂O₅',\r\n magnesium: 'MgO'\r\n}\r\n","import {keyBy, pick} from 'lodash'\r\nimport {toWkt} from '@helpers/openlayers/features'\r\n\r\nimport {makeSetters} from '@helpers/vuex/mutations'\r\nimport {smarterGet, smarterPost} from '@helpers/vuex/data-loading'\r\nimport {calculateToOxidform} from '@frs/components/basic-fertilization/oxidform-calculation'\r\n\r\nconst defaults = () => ({\r\n data: {\r\n common: {\r\n entireField: true,\r\n targetValue: 'humus',\r\n selectedMaps: []\r\n },\r\n upload: {\r\n mappingDate: null,\r\n method: 'standard',\r\n blockSize: 10,\r\n pixelSize: 2,\r\n sensorData: null, // geoJson\r\n selectedAttributes: []\r\n },\r\n calibration: {\r\n availableOrders: {},\r\n selectedOrders: []\r\n },\r\n algorithmTypes: ['vdlufa', 'stepless'],\r\n requiredNutrient: {\r\n algorithmType: 'vdlufa',\r\n soilGroupMapId: null,\r\n clayMapId: null,\r\n humusMapId: null,\r\n phMapId: null,\r\n limingInterval: null,\r\n soilTesting: null,\r\n showMap: {\r\n soilGroup: false,\r\n humusContent: false,\r\n pH: false,\r\n clayContent: false\r\n }\r\n },\r\n application: {\r\n fileFormat: 'IsoXML',\r\n requiredNutrientMapId: null,\r\n alignInDrivingDirection: false,\r\n spreaderWorkingWidth: 12,\r\n rasterLength: 40, // specified by project (WAA-878)\r\n lane: null,\r\n caOMap: null,\r\n classifyGridToMaximumUCUs: false\r\n },\r\n limeApplication: {\r\n caoApplicationMapId: null,\r\n limeApplicationMap: null,\r\n fertilizerId: null,\r\n useExistingFertilizer: true,\r\n customFertilizer: {\r\n name: '',\r\n caValue: 0,\r\n mgValue: 0,\r\n useOxidValues: false\r\n },\r\n adjustLowerLimit: false,\r\n applicationRate: {\r\n minAmount: 0,\r\n maxAmount: 0,\r\n meanValue: 0,\r\n totalRequirement: 0\r\n }\r\n }\r\n },\r\n ui: {\r\n application: {\r\n step: 'start' // 'start', 'calculating', 'calculatedSuccess', 'classificationLimitExceeded'\r\n },\r\n limeApplication: {\r\n limeApplicationStep: 'start' // 'start', 'calculating', 'calculated'\r\n }\r\n }\r\n})\r\n\r\nconst state = defaults()\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n getters: {\r\n soilMaps (state, getters, rootState, rootGetters) {\r\n const soilMapLookup = rootState.fieldRecordSystem.mapManagement.data.soilMap.mapLookup\r\n const soilMapIdsByFieldId = rootState.fieldRecordSystem.mapManagement.data.soilMap.mapIdsByFieldId\r\n const fieldId = rootGetters['fieldRecordSystem/fieldId']\r\n\r\n if (!soilMapIdsByFieldId[fieldId]) {\r\n return []\r\n }\r\n\r\n const soilMapIds = soilMapIdsByFieldId[fieldId]\r\n const maps = soilMapIds.map(id => {\r\n return soilMapLookup[id]\r\n })\r\n\r\n return maps\r\n },\r\n requiredNutrientMaps (state, getters) {\r\n if (!getters.soilMaps.length) return []\r\n\r\n return getters.soilMaps.filter(x => x.category === 'caORequiredNutrient')\r\n },\r\n caOApplicationMaps (state, getters) {\r\n if (!getters.soilMaps.length) return []\r\n\r\n return getters.soilMaps.filter(x => x.category === 'caOApplicationMap')\r\n }\r\n },\r\n actions: {\r\n createRequiredNutrientMap ({state, rootGetters}) {\r\n const harvestYear = rootGetters['fieldRecordSystem/harvestYear']\r\n const fieldId = rootGetters['fieldRecordSystem/fieldId']\r\n const orgUnitId = rootGetters['fieldRecordSystem/orgUnitId']\r\n const {algorithmType, soilGroupMapId, clayMapId, humusMapId, phMapId, soilTesting, limingInterval} = {...state.data.requiredNutrient}\r\n const data = {\r\n soilGroupMapId,\r\n humusMapId,\r\n phMapId,\r\n clayMapId,\r\n soilTesting,\r\n limingInterval,\r\n fieldId\r\n }\r\n return smarterPost(`/api/v2/phbb/cao/required-nutrient-map/create/${orgUnitId}/${algorithmType}/${harvestYear}`, data, {\r\n id: 'phbb.create.caoRequiredNutrientMap'\r\n })\r\n },\r\n createCaOApplicationMap ({state, commit, rootGetters}) {\r\n const harvestYear = rootGetters['fieldRecordSystem/harvestYear']\r\n const orgUnitId = rootGetters['fieldRecordSystem/orgUnitId']\r\n const fieldId = rootGetters['fieldRecordSystem/fieldId']\r\n\r\n const {fileFormat, requiredNutrientMapId, alignInDrivingDirection, spreaderWorkingWidth, rasterLength, lane, classifyGridToMaximumUCUs} = {...state.data.application}\r\n const data = {\r\n fileFormat,\r\n requiredNutrientMapId,\r\n alignInDrivingDirection,\r\n spreaderWorkingWidth,\r\n rasterLength,\r\n fieldId,\r\n lane,\r\n classifyGridToMaximumUCUs\r\n }\r\n\r\n if (state.data.application.caOMap) {\r\n data.mapId = state.data.application.caOMap.id\r\n }\r\n\r\n return smarterPost(`/api/v2/phbb/cao/create-application/${orgUnitId}/${harvestYear}`, data, {\r\n id: 'phbb.create.caoApplication'\r\n })\r\n .then(map => {\r\n commit('setCaOMap', map)\r\n })\r\n },\r\n saveCaOMapWithoutRecalculation ({state, rootGetters}) {\r\n const harvestYear = rootGetters['fieldRecordSystem/harvestYear']\r\n const orgUnitId = rootGetters['fieldRecordSystem/orgUnitId']\r\n const {borderGeometry, category, generatedAt, id, metaData, name, origin, zones} = {...state.data.application.caOMap}\r\n const data = {\r\n borderGeometry,\r\n category,\r\n generatedAt,\r\n id,\r\n metaData,\r\n name,\r\n origin,\r\n zones\r\n }\r\n\r\n return smarterPost(`/api/v2/phbb/cao/create-application/save/${orgUnitId}/${harvestYear}`, data, {\r\n id: 'phbb.create.caoApplication.save'\r\n })\r\n },\r\n createLimeApplicationMap ({state, commit, dispatch, rootGetters}, isRecalculation = false) {\r\n const harvestYear = rootGetters['fieldRecordSystem/harvestYear']\r\n const orgUnitId = rootGetters['fieldRecordSystem/orgUnitId']\r\n const fieldId = rootGetters['fieldRecordSystem/fieldId']\r\n\r\n const products = rootGetters['masterData/products']\r\n\r\n const {caoApplicationMapId, fertilizerId, useExistingFertilizer} = {...state.data.limeApplication}\r\n\r\n const fertilizer = products[fertilizerId]\r\n\r\n let caO, mgO\r\n\r\n if (useExistingFertilizer) {\r\n caO = fertilizer.lime\r\n mgO = calculateToOxidform('magnesium', fertilizer.magnesium)\r\n } else {\r\n const {caValue, mgValue, useOxidValues} = state.data.limeApplication.customFertilizer\r\n caO = useOxidValues ? caValue * 0.4004 : caValue\r\n mgO = useOxidValues ? mgValue * 0.478 : mgValue\r\n }\r\n\r\n let data = {\r\n caoApplicationMapId,\r\n fieldId,\r\n productId: fertilizerId,\r\n CaOValue: caO.toFixed(2),\r\n MgOValue: mgO.toFixed(2)\r\n }\r\n\r\n if (isRecalculation) {\r\n const {minAmount, maxAmount, totalRequirement} = state.data.limeApplication.applicationRate\r\n\r\n data.isRecalculation = true\r\n data.fertilizerMinAmount = minAmount\r\n data.fertilizerMaxAmount = maxAmount\r\n data.fertilizerTotalRequirement = totalRequirement\r\n data.adjustLowerLimit = state.data.limeApplication.adjustLowerLimit\r\n }\r\n\r\n return smarterPost(`/api/v2/phbb/cao/create-lime-application/${orgUnitId}/${harvestYear}`, data, {\r\n id: 'phbb.create.caoApplication'\r\n })\r\n .then(async result => {\r\n commit('setLimeApplicationMap', result)\r\n commit('setApplicationRate', result.metaData)\r\n commit('dataLoading/invalidate', 'applicationMapInfos.forField', {root: true})\r\n await dispatch('fieldRecordSystem/mapManagement/loadAvailableApplicationMapsForField', fieldId, {root: true})\r\n })\r\n },\r\n saveCustomFertilizer ({state, commit, rootGetters}) {\r\n const harvestYear = rootGetters['fieldRecordSystem/harvestYear']\r\n const orgUnitId = rootGetters['fieldRecordSystem/orgUnitId']\r\n\r\n const {name, caValue, mgValue, useOxidValues} = state.data.limeApplication.customFertilizer\r\n\r\n const product = {\r\n harvestYear,\r\n orgUnitId,\r\n type: 'fertilizer',\r\n isOrganic: false,\r\n isLiquid: false,\r\n magnesium: useOxidValues ? mgValue * 0.478 : mgValue, // factor from MgCO3 to MgO is 0.478\r\n lime: useOxidValues ? caValue * 0.4004 : caValue, // factor from CaCO3 to CaO is 0.4004\r\n name,\r\n source: 'phbb'\r\n }\r\n return smarterPost('/api/v2/master-data/products', product, {\r\n id: 'phbb.create.product'\r\n })\r\n .then(product => {\r\n commit('setFertilizerId', product.id)\r\n })\r\n },\r\n uploadAndInterpolateSensorData ({state, rootGetters}) {\r\n const harvestYear = rootGetters['fieldRecordSystem/harvestYear']\r\n const orgUnitId = rootGetters['fieldRecordSystem/orgUnitId']\r\n const fieldId = rootGetters['fieldRecordSystem/fieldId']\r\n const {entireField} = {...state.data.common}\r\n const {mappingDate, method, blockSize, pixelSize, sensorData, selectedAttributes} = {...state.data.upload}\r\n const data = {\r\n entireField,\r\n mappingDate,\r\n method,\r\n blockSize,\r\n pixelSize,\r\n fieldId,\r\n sensorData,\r\n selectedAttributes\r\n }\r\n return smarterPost(`/api/v2/phbb/sensor-data/interpolate/${orgUnitId}/${harvestYear}`, data, {\r\n id: 'phbb.upload.sensorData'\r\n })\r\n },\r\n calibrateSensorData ({state, rootGetters}) {\r\n const harvestYear = rootGetters['fieldRecordSystem/harvestYear']\r\n const orgUnitId = rootGetters['fieldRecordSystem/orgUnitId']\r\n const fieldId = rootGetters['fieldRecordSystem/fieldId']\r\n\r\n const {entireField, targetValue, selectedMaps} = {...state.data.common}\r\n const {selectedOrders, availableOrders} = {...state.data.calibration}\r\n\r\n const dataFields = (value) => {\r\n switch (value) {\r\n case 'ph':\r\n return ['ph']\r\n case 'humus':\r\n return ['humus']\r\n case 'soilTexture':\r\n return ['sand', 'silt', 'clay']\r\n }\r\n }\r\n\r\n const samplingPoints = selectedOrders.reduce((acc, id) => {\r\n const samplingPointsPerOrder = availableOrders[id].features.map(feature => {\r\n const dataProps = pick(feature.properties, dataFields(targetValue))\r\n const values = Object.keys(dataProps).map(key => ({name: key, value: dataProps[key]}))\r\n\r\n return {\r\n id: feature.properties.sampleId,\r\n probingDate: availableOrders[id].created,\r\n geometry: toWkt(feature),\r\n values\r\n }\r\n })\r\n return acc.concat(samplingPointsPerOrder)\r\n }, [])\r\n\r\n const data = {\r\n entireField,\r\n targetValue,\r\n selectedMaps,\r\n samplingPoints\r\n }\r\n return smarterPost(`/api/v2/phbb/sensor-data/calibrate/${orgUnitId}/${fieldId}/${harvestYear}`, data, {\r\n id: 'phbb.calibration.sensorData'\r\n })\r\n },\r\n loadCompletedFullOrders ({commit, rootGetters}) {\r\n const orgUnitId = rootGetters['fieldRecordSystem/orgUnitId']\r\n const fieldId = rootGetters['fieldRecordSystem/fieldId']\r\n const harvestYear = rootGetters['fieldRecordSystem/harvestYear']\r\n\r\n // get completed orders only\r\n return smarterGet('/api/v2/phbb/orders/{fieldId}/{harvestYear}', {\r\n id: 'phbb.calibration.orders',\r\n expiry: 0,\r\n inputs: {\r\n fieldId: () => fieldId,\r\n orgUnitId: () => orgUnitId,\r\n harvestYear: () => harvestYear\r\n },\r\n onResult (orders) {\r\n const lookup = keyBy(orders, 'id')\r\n commit('setAvailableOrders', lookup)\r\n }\r\n })\r\n }\r\n },\r\n mutations: {\r\n ...makeSetters([\r\n 'data.common.entireField',\r\n 'data.common.targetValue',\r\n 'data.common.selectedMaps',\r\n\r\n 'data.upload.mappingDate',\r\n 'data.upload.method',\r\n 'data.upload.epsg',\r\n 'data.upload.blockSize',\r\n 'data.upload.pixelSize',\r\n 'data.upload.sensorData',\r\n 'data.upload.selectedAttributes',\r\n\r\n 'data.calibration.availableOrders',\r\n 'data.calibration.selectedOrders',\r\n\r\n 'data.requiredNutrient.algorithmType',\r\n 'data.requiredNutrient.soilGroupMapId',\r\n 'data.requiredNutrient.clayMapId',\r\n 'data.requiredNutrient.humusMapId',\r\n 'data.requiredNutrient.phMapId',\r\n 'data.requiredNutrient.soilTesting',\r\n 'data.requiredNutrient.showMap',\r\n 'data.requiredNutrient.limingInterval',\r\n\r\n 'data.application.fileFormat',\r\n 'data.application.requiredNutrientMapId',\r\n 'data.application.alignInDrivingDirection',\r\n 'data.application.spreaderWorkingWidth',\r\n 'data.application.lane',\r\n 'data.application.classifyGridToMaximumUCUs',\r\n\r\n 'data.limeApplication.limeApplicationMap',\r\n 'data.limeApplication.caoApplicationMapId',\r\n 'data.limeApplication.fertilizerId',\r\n 'data.limeApplication.adjustLowerLimit',\r\n 'data.limeApplication.applicationRate.minAmount',\r\n 'data.limeApplication.applicationRate.maxAmount',\r\n 'data.limeApplication.applicationRate.meanValue',\r\n 'data.limeApplication.applicationRate.totalRequirement',\r\n 'data.limeApplication.useExistingFertilizer',\r\n 'data.limeApplication.customFertilizer.name',\r\n 'data.limeApplication.customFertilizer.caValue',\r\n 'data.limeApplication.customFertilizer.mgValue',\r\n 'data.limeApplication.customFertilizer.useOxidValues',\r\n\r\n 'ui.application.step',\r\n 'ui.limeApplication.limeApplicationStep'\r\n ]),\r\n setDefaultState (state) {\r\n Object.assign(state, defaults())\r\n },\r\n setCaOMap (state, map) {\r\n state.data.application.caOMap = map\r\n },\r\n setApplicationRate (state, applicationRate) {\r\n state.data.limeApplication.applicationRate.minAmount = applicationRate.minAmount\r\n state.data.limeApplication.applicationRate.maxAmount = applicationRate.maxAmount\r\n state.data.limeApplication.applicationRate.meanValue = applicationRate.meanValue\r\n state.data.limeApplication.applicationRate.totalRequirement = applicationRate.totalRequirement\r\n }\r\n }\r\n}\r\n"],"sourceRoot":""}