{"version":3,"sources":["webpack:///./wwwroot/src/js/store/modules/field-record-system/automatic-zone-maps/index.js"],"names":["defaults","mode","showModeDetails","harvestYearOutdated","supportedCropUsageIdsForAuto","borderGeometry","cultivations","selectedQuickCultivations","notes","automaticModeUseLandsat","existingYearsWithFieldHistory","cloudCoverageThreshold","buffer","useRedBorder","__webpack_exports__","namespaced","state","getters","selectedCropUsageRanges","relevantCultivations","map","_ref","cropUsageId","dateTimeRange","relevantYears","now","moment","year","years","Array","fill","x","i","overlapsValidYear","cultivation","harvestYears","some","includes","filter","cult","type","supportedCultivations","isSupported","cultivationsByYear","fromPairs","orderBy","yearsWithoutCultivation","length","quickCultivations","isQuickCultivation","actions","loadPrerequisiteData","_loadPrerequisiteData","Object","C_src_Solutions_WebApp_node_modules_babel_runtime_corejs2_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_6__","regeneratorRuntime","mark","_callee","_ref2","commit","rootGetters","rootState","fieldId","harvestYear","fieldSpecificInputs","wrap","_context","prev","next","fieldRecordSystem","navigation","location","userSettings","expiry","inputs","Promise","all","axios","get","concat","catch","smarterGet","id","onResult","_objectSpread","geometry","sharedCache","forEach","isQuickCult","stop","_x","apply","this","arguments","startCreation","_ref3","cultivationInfo","_ref4","startTime","start","endTime","end","_rootState$fieldRecor","orgUnitId","billingOrgUnitId","paymentData","post","fieldHistoryLocation","createQuickCultivations","_ref5","dispatch","root","mutations","makeSetters","updateSelectedQuickCultivations","upsertQuickCultivation","_ref6","startOf","toISOString","endOf","indexQuickCultivation","indexOf","index","splice","push","console","error","deleteQuickCultivation","reset","assign","quickCultivationsSelection","allSelected"],"mappings":"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","file":"js/chunk-2d0cfeb7.f291665f.js","sourcesContent":["import moment from 'moment'\r\nimport axios from 'axios'\r\nimport {orderBy, fromPairs} from 'lodash'\r\n\r\nimport {makeSetters} from '@helpers/vuex/mutations'\r\nimport {smarterGet} from '@helpers/vuex/data-loading'\r\n\r\nconst defaults = () => ({\r\n mode: null,\r\n showModeDetails: false,\r\n harvestYearOutdated: false,\r\n supportedCropUsageIdsForAuto: [],\r\n borderGeometry: null,\r\n cultivations: [],\r\n selectedQuickCultivations: [],\r\n notes: '',\r\n automaticModeUseLandsat: false,\r\n existingYearsWithFieldHistory: [],\r\n cloudCoverageThreshold: 0.05,\r\n buffer: 10,\r\n useRedBorder: true\r\n})\r\n\r\nexport default {\r\n namespaced: true,\r\n state: defaults(),\r\n getters: {\r\n selectedCropUsageRanges (state, getters) {\r\n return getters.relevantCultivations.map(({cropUsageId, dateTimeRange}) => ({cropUsageId, dateTimeRange}))\r\n },\r\n relevantYears (state) {\r\n const now = moment().year()\r\n\r\n const years = state.mode === 'premium' ? 10 : now - 2015 + 1\r\n return new Array(years).fill(null).map((x, i) => now - i)\r\n },\r\n relevantCultivations (state, getters) {\r\n const overlapsValidYear = cultivation => cultivation.harvestYears.some(year => getters.relevantYears.includes(year))\r\n\r\n return state.cultivations.filter(overlapsValidYear).filter(cult => cult.type === 'main')\r\n },\r\n supportedCultivations (state, getters) {\r\n if (state.mode === 'premium') return getters.relevantCultivations\r\n\r\n const isSupported = cultivation => cultivation.cropUsageId && state.supportedCropUsageIdsForAuto.includes(cultivation.cropUsageId)\r\n\r\n return getters.relevantCultivations.filter(isSupported)\r\n },\r\n cultivationsByYear (state, getters) {\r\n return fromPairs(getters.relevantYears.map(year => [\r\n year,\r\n orderBy(getters.relevantCultivations.filter(cultivation => cultivation.harvestYears.includes(year)), ['dateTimeRange.start'], ['desc'])\r\n ]))\r\n },\r\n yearsWithoutCultivation (state, getters) {\r\n return getters.relevantYears.filter(year => getters.cultivationsByYear[year].length === 0)\r\n },\r\n quickCultivations (state) {\r\n return orderBy(state.cultivations.filter(cult => cult.isQuickCultivation), ['dateTimeRange.start'], ['desc'])\r\n }\r\n },\r\n actions: {\r\n async loadPrerequisiteData ({commit, state, rootGetters, rootState}) {\r\n const {fieldId} = rootState.fieldRecordSystem.navigation.location\r\n const {harvestYear} = rootState.fieldRecordSystem.userSettings\r\n commit('reset')\r\n\r\n const fieldSpecificInputs = {\r\n expiry: 0, // NOTE does not work properly with high expiration because store location is unloaded on module exit\r\n inputs: {\r\n harvestYear: () => rootState.fieldRecordSystem.userSettings.harvestYear,\r\n fieldId: () => rootGetters['fieldRecordSystem/fieldId']\r\n }\r\n }\r\n\r\n await Promise.all([\r\n axios.get(`/api/v2/frs/${harvestYear}/fields/${fieldId}/is-newest`)\r\n .catch(() => {\r\n commit('setHarvestYearOutdated', true)\r\n }),\r\n smarterGet('/api/v2/zone-maps/automatic/supported-crop-usages', {\r\n id: 'automaticZoneMaps.supportedCropUsages',\r\n expiry: 0, // NOTE does not work properly with high expiration because store location is unloaded on module exit\r\n onResult (supportedCropUsageIdsForAuto) {\r\n commit('setSupportedCropUsageIdsForAuto', supportedCropUsageIdsForAuto)\r\n }\r\n }),\r\n smarterGet('/api/v2/zone-maps/automatic/{harvestYear}/fields/{fieldId}/existing-field-history-for-last-decade', {\r\n id: 'automaticZoneMaps.setExistingYearsWithFieldHistory',\r\n ...fieldSpecificInputs,\r\n onResult (existingYearsWithFieldHistory) {\r\n commit('setExistingYearsWithFieldHistory', existingYearsWithFieldHistory)\r\n }\r\n }),\r\n smarterGet('/api/v2/entities/fields/{fieldId}/geodata/{harvestYear}', {\r\n id: 'automaticZoneMaps.borderGeometry',\r\n ...fieldSpecificInputs,\r\n onResult (geometry) {\r\n commit('setBorderGeometry', geometry)\r\n }\r\n })\r\n ])\r\n\r\n await smarterGet('/api/v2/frs/{harvestYear}/fields/{fieldId}/cultivations/all', {\r\n id: 'automaticZoneMaps.cultivations',\r\n sharedCache: true,\r\n expiry: 0,\r\n inputs: {\r\n harvestYear: () => rootState.fieldRecordSystem.userSettings.harvestYear,\r\n fieldId: () => rootGetters['fieldRecordSystem/fieldId']\r\n },\r\n onResult (cultivations) {\r\n cultivations.forEach(cult => {\r\n const isQuickCult = !cult.harvestYears.some(year => state.existingYearsWithFieldHistory.includes(year))\r\n\r\n if (isQuickCult) {\r\n cult.id = `cultivation_${cult.harvestYears[0]}`\r\n }\r\n cult.isQuickCultivation = isQuickCult\r\n })\r\n commit('setCultivations', cultivations)\r\n }\r\n })\r\n },\r\n startCreation ({state, getters, rootState, rootGetters}) {\r\n const cultivationInfo = getters.supportedCultivations.map(({cropUsageId, dateTimeRange, harvestYears}) => ({\r\n cropUsageId,\r\n startTime: dateTimeRange.start,\r\n endTime: dateTimeRange.end,\r\n harvestYear: harvestYears[0]\r\n }))\r\n const {fieldId, orgUnitId} = rootState.fieldRecordSystem.navigation.location\r\n const {harvestYear} = rootState.fieldRecordSystem.userSettings\r\n let billingOrgUnitId = orgUnitId\r\n\r\n const paymentData = rootGetters['fieldRecordSystem/companyData/nextPaymentData']\r\n if (paymentData) {\r\n billingOrgUnitId = paymentData.orgUnitId\r\n }\r\n\r\n return axios.post(`/api/v2/zone-maps/${state.mode}`, {\r\n cultivationInfo: orderBy(cultivationInfo, ['harvestYear'], ['desc']),\r\n orgUnitId,\r\n geometry: state.borderGeometry,\r\n billingOrgUnitId,\r\n fieldHistoryLocation: {\r\n fieldId,\r\n harvestYear\r\n },\r\n notes: state.notes,\r\n automaticModeUseLandsat: state.automaticModeUseLandsat,\r\n cloudCoverageThreshold: state.cloudCoverageThreshold,\r\n buffer: state.useRedBorder ? state.buffer : null\r\n })\r\n },\r\n createQuickCultivations ({state, dispatch}) {\r\n return Promise.all(state.selectedQuickCultivations.map(cult => {\r\n return dispatch('fieldRecordSystem/cultivationPlanning/saveQuickCultivation', {year: cult.harvestYears[0], cropUsageId: cult.cropUsageId}, {root: true})\r\n }))\r\n }\r\n },\r\n mutations: {\r\n ...makeSetters([\r\n 'showModeDetails',\r\n 'cultivations',\r\n 'mode',\r\n 'harvestYearOutdated',\r\n 'supportedCropUsageIdsForAuto',\r\n 'notes',\r\n 'automaticModeUseLandsat',\r\n 'existingYearsWithFieldHistory',\r\n 'cloudCoverageThreshold',\r\n 'buffer',\r\n 'useRedBorder',\r\n 'borderGeometry'\r\n ]),\r\n updateSelectedQuickCultivations (state, cultivations) {\r\n state.selectedQuickCultivations = cultivations\r\n },\r\n upsertQuickCultivation (state, {cropUsageId, year}) {\r\n if (state.mode === 'premium' || state.supportedCropUsageIdsForAuto.includes(cropUsageId)) {\r\n const cultivation = {\r\n id: `cultivation_${year}`,\r\n harvestYears: [year],\r\n type: 'main',\r\n dateTimeRange: {\r\n start: moment([year]).startOf('year').toISOString(),\r\n end: moment([year]).endOf('year').toISOString()\r\n },\r\n isQuickCultivation: true,\r\n cropUsageId\r\n }\r\n const selectedQuickCultivations = state.selectedQuickCultivations\r\n const cultivations = state.cultivations\r\n const indexQuickCultivation = selectedQuickCultivations.map(x => x.id).indexOf(cultivation.id)\r\n const index = cultivations.map(x => x.id).indexOf(cultivation.id)\r\n\r\n if (indexQuickCultivation > -1) {\r\n selectedQuickCultivations.splice(indexQuickCultivation, 1)\r\n }\r\n cultivations.push(cultivation)\r\n state.cultivations = cultivations\r\n\r\n if (index > -1) {\r\n cultivations.splice(index, 1)\r\n }\r\n\r\n if (state.existingYearsWithFieldHistory.includes(year)) {\r\n selectedQuickCultivations.push(cultivation)\r\n }\r\n state.selectedQuickCultivations = selectedQuickCultivations\r\n } else {\r\n console.error('No supported CropUsageId:' + cropUsageId)\r\n }\r\n },\r\n deleteQuickCultivation (state, year) {\r\n const cultivations = state.cultivations\r\n cultivations.splice(cultivations.map(x => x.id).indexOf(`cultivation_${year}`), 1)\r\n state.cultivations = cultivations\r\n },\r\n reset (state) {\r\n Object.assign(state, defaults())\r\n },\r\n quickCultivationsSelection (state, allSelected) {\r\n if (allSelected) {\r\n state.selectedQuickCultivations = orderBy(state.cultivations.filter(cult => cult.isQuickCultivation && state.existingYearsWithFieldHistory.includes(cult.harvestYears[0])), ['dateTimeRange.start'], ['desc'])\r\n } else {\r\n state.selectedQuickCultivations = []\r\n }\r\n }\r\n }\r\n}\r\n"],"sourceRoot":""}