{"version":3,"sources":["webpack:///./src/modules/AreaSaggio/services/areaSaggioService.ts","webpack:///./src/modules/AreaSaggioPiantaCampione/store/areaSaggioPiantaCampione.store.ts","webpack:///./src/modules/AreaSaggio/store/areaSaggio.store.ts","webpack:///./src/modules/AreaSaggioClasseDiametrica/components/form.vue?c2b5","webpack:///./src/modules/AreaSaggioClasseDiametrica/components/form.ts","webpack:///./src/modules/AreaSaggioClasseDiametrica/components/form.ts?675d","webpack:///./src/modules/AreaSaggioClasseDiametrica/components/form.vue","webpack:///./src/modules/AreaSaggioClasseDiametrica/components/index.ts","webpack:///./src/modules/AreaSaggioClasseDiametrica/components/index.ts?89c2","webpack:///./src/modules/Reports/store/report.store.ts","webpack:///./src/modules/domains/module.ts","webpack:///./src/modules/domains/sync.ts","webpack:///./src/modules/domains/index.ts","webpack:///./src/modules/AreaSaggioPiantaCampione/services/areaSaggioPiantaCampioneService.ts"],"names":["AreaSaggioService","baseUrl","api","apiServerUrl","versioneId","ts","this","Get","id","obj","Post","Delete","areaSaggioService","TABLES","areaSaggioPiantaCampione","AreaSaggioPiantaCampioneStore","PREFIX","namespaced","mutations","getters","get","state","getAll","current","currentVersion","result","length","getMaxTs","maxts","List","then","r","a","b","set","catch","requiredSync","some","s","__needsSync","nearestareaSaggioPiantaCampione","position","ui","currentGPSPosition","areaSaggioPiantaCampioneStore","map","f","distance","sort","shift","actions","setAreaSaggioPiantaCampione","context","payload","operation","update","create","toString","i","Set","o","n","op","publish","type","oldTypeId","newTypeId","remove","Remove","clean","Promise","all","Math","sqrt","pow","abs","longitude","latitude","areaSaggio","areaSaggioClasseDiametrica","AreaSaggioStore","areaSaggioId","resultDoSync","filter","classeDiametricaDoSync","piantaCampionDoSync","nearestAreaSaggio","areaSaggioStore","setAreaSaggio","render","_vm","_h","$createElement","_c","_self","staticClass","on","$event","back","ref","preventDefault","stopPropagation","validateForm","saving","cancel","_e","_v","_m","attrs","specieArboreeAreaSaggio","beforeSpecieArboreaDelete","model","value","manage","callback","$$v","$set","expression","specieArboree","specieArboreeMax","_s","sogliaClasseDiametrica","diametroMax","rangeClasseDiametrica","rilevamenti","formIsValid","ok","staticRenderFns","Form","isNew","classiDiametriche","diametroMin","min","max","setTimeout","$refs","form","checkValidity","deferred","resolve","item","status","unchanged","closeModal","beforeDelete","show","removeAll","changed","error","needSync","onlineCheck","online","specieArboreaId","specie","timeStamp","_okConfirm","toDelete","diametro","indexOf","key","elem","index","cell","find","specieOrderIndex","contatore","setAreaSaggioClasseDiametrica","push","store","navigation","selected","specieArboreePresenti","forEach","m","default","lazy","component","isWeb","Index","showSearchBar","text","showsize","_specieArboree","specieArboreeSelezionateIds","storeSaggio","speciePresenti","_specieArboreeAreaSaggio","includes","rilievo","areeSaggioClassiDiametriche","modalHelper","showModal","items","areeSaggioClasseDiametrica","concat","description","nome","areeSaggio","set_filter","area","set_logarithmic_regression","classiDimateriche","slice","uniqueValues","classiDiametricheResized","classeDiametrica","specieArborea","localeCompare","ReportStore","logarithmicRegression","regression","init","getValuesOfLogarithmicExpression","commit","reportStore","coordinates","pianteCampione","altezza","data","options","order","precision","sum","len","log","coeffB","round","coeffA","fn","x","points","point","equation","string","r2","determinationCoefficient","results","predictions","observations","d","reduce","observation","mean","ssyy","difference","sse","accum","prediction","residual","number","factor","registerModule","startup","composizioneVegetazionali","danniOsservati","esposizioni","feriteTroncoCicatrizzazione","feriteTroncoDimensioni","fustiFibratura","fustiNodosita","fustiSezione","fustiTipo","giaciture","governi","lettiere","origineMaterialiSelezionati","originePiantePlus","originePopolamentiForestali","pietrosita","posizioniPiantePlus","potaturePiantePlus","struttureOrizzontali","struttureVerticali","substratiPetrogenici","terreniSottostanti","tipiPiantePlus","trattamenti","ubicazioni","istat","modulename","module","sync","roles","AreaSaggioPiantaCampioneService","areaSaggioPiantaCampioneService"],"mappings":"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","file":"chunk-313addbb.js","sourcesContent":["import { baseRestService } from \"@/utils/baseRestService\"\r\nimport { Config } from '@/config';\r\n\r\nclass AreaSaggioService extends baseRestService {\r\n\r\n constructor() {\r\n super()\r\n this.baseUrl = Config.api.apiServerUrl;\r\n }\r\n\r\n async List(versioneId: string, ts: number): Promise {\r\n return await this.Get(`/api/in-situ/${versioneId}/area-saggio`, { ts: ts }) || [];\r\n }\r\n\r\n async Detail(id: string, versioneId: string): Promise {\r\n return await this.Get(`/api/in-situ/${versioneId}/area-saggio/${id}`);\r\n }\r\n\r\n async Set(obj: server.areaSaggio, versioneId: string): Promise {\r\n return await this.Post(`/api/in-situ/${versioneId}/area-saggio`, obj);\r\n }\r\n\r\n async Remove(id: string, versioneId: string): Promise {\r\n return await this.Delete(`/api/in-situ/${versioneId}/area-saggio/${id}`);\r\n }\r\n}\r\n\r\nexport const areaSaggioService = new AreaSaggioService();","import { GetterTree, ActionTree } from 'vuex';\r\nimport { PersistentStore, saveAndSync, syncOperation } from '@/utils/PersistentStore';\r\nimport { replaceInArray } from '@/utils/Array';\r\nimport { messageService } from '@/utils/MessageService';\r\nimport vuestore, { store } from '@/store';\r\nimport { CreateTypedStoreProxy } from 'vuex-typed-store';\r\nimport { areaSaggioPiantaCampioneService } from '../services/areaSaggioPiantaCampioneService';\r\nimport { Guid } from 'guid-typescript';\r\nimport { versioneInSituStore } from '@/modules/VersioneInSitu/store/VersioneInSitu.store';\r\nimport { syncDeletedRow } from '@/modules/SyncDeletedRow/helper/syncDeletedRowHelper';\r\n\r\nexport interface areaSaggioPiantaCampioneStoreModel { }\r\n\r\nexport interface areaSaggioPiantaCampioneStoreActions {\r\n setAreaSaggioPiantaCampione(payload: server.areaSaggioPiantaCampione);\r\n remove(payload: server.areaSaggioPiantaCampione): Promise;\r\n clean(): Promise;\r\n}\r\n\r\nexport interface areaSaggioPiantaCampioneStoreGetters {\r\n get(id): Promise;\r\n getAll(): Promise;\r\n requiredSync(): Promise;\r\n nearestareaSaggioPiantaCampione(): Promise;\r\n}\r\n\r\nexport const TABLES = { areaSaggioPiantaCampione: 'AreeSaggioPianteCampione' };\r\nexport const AreaSaggioPiantaCampioneStore = {\r\n PREFIX: 'areaSaggioPiantaCampione',\r\n namespaced: true,\r\n mutations: {},\r\n getters: {\r\n get: (state) => async (id): Promise => await PersistentStore.get(TABLES.areaSaggioPiantaCampione, id),\r\n getAll: (state) => async (): Promise => {\r\n let currentVersion = await versioneInSituStore.getters.current();\r\n if (!currentVersion) return [];\r\n\r\n var result = await PersistentStore.getAll(TABLES.areaSaggioPiantaCampione) || [];\r\n\r\n if (result.length > 0) {\r\n result = await syncDeletedRow(TABLES.areaSaggioPiantaCampione, result);\r\n }\r\n\r\n var maxts = await PersistentStore.getMaxTs(TABLES.areaSaggioPiantaCampione);\r\n return areaSaggioPiantaCampioneService.List(currentVersion.id, maxts).then(async (r) => {\r\n replaceInArray(r, result, (a, b) => a.id == b.id);\r\n await PersistentStore.set(TABLES.areaSaggioPiantaCampione, r);\r\n return result;\r\n }).catch(() => result);\r\n },\r\n requiredSync: (state) => async (): Promise => {\r\n var result = await PersistentStore.getAll(TABLES.areaSaggioPiantaCampione) || [];\r\n return result.some((s: any) => s.__needsSync)\r\n },\r\n nearestareaSaggioPiantaCampione: (state) => async (): Promise => {\r\n var position = store.getters.ui.currentGPSPosition();\r\n if (position != null)\r\n return (await areaSaggioPiantaCampioneStore.getters.getAll()).map(f => { return { distance: distance(f, position), f } })\r\n .sort((a, b) => a.distance - b.distance).shift()?.f;\r\n return null;\r\n }\r\n } as GetterTree,\r\n\r\n actions: {\r\n async setAreaSaggioPiantaCampione(context, payload: server.areaSaggioPiantaCampione) {\r\n let operation: syncOperation = syncOperation.update;\r\n if (!payload.id) {\r\n payload.id = Guid.create().toString();\r\n operation = syncOperation.create;\r\n }\r\n\r\n await saveAndSync(payload, TABLES.areaSaggioPiantaCampione,\r\n i => operation, i => areaSaggioPiantaCampioneService.Set(i, i.versioneId), i => areaSaggioPiantaCampioneService.Set(i, i.versioneId),\r\n async (o, n, op) => {\r\n messageService.publish('updateMediaReference', { type: 'areaSaggioPiantaCampione', oldTypeId: o.id, newTypeId: n.id } as messages.updateMediaReference);\r\n })\r\n },\r\n async remove(context, payload: server.areaSaggioPiantaCampione) {\r\n await areaSaggioPiantaCampioneService.Remove(payload.id, payload.versioneId);\r\n await PersistentStore.remove(TABLES.areaSaggioPiantaCampione, payload);\r\n },\r\n async clean(context) {\r\n var result = await PersistentStore.getAll(TABLES.areaSaggioPiantaCampione) || [];\r\n if (result.length > 0) {\r\n return Promise.all(result.map(async (f) => PersistentStore.remove(TABLES.areaSaggioPiantaCampione, f)));\r\n }\r\n }\r\n } as ActionTree\r\n}\r\n\r\nexport const areaSaggioPiantaCampioneStore = CreateTypedStoreProxy(vuestore, AreaSaggioPiantaCampioneStore.PREFIX);\r\n\r\nfunction distance(f: server.areaSaggioPiantaCampione, position: { latitude: number, longitude: number }) {\r\n return Math.sqrt(\r\n Math.pow(Math.abs(f.longitude - position.longitude), 2) +\r\n Math.pow(Math.abs(f.latitude - position.latitude), 2)\r\n )\r\n}","import { GetterTree, ActionTree } from 'vuex';\r\nimport { replaceInArray } from '@/utils/Array';\r\nimport { messageService } from '@/utils/MessageService';\r\nimport { PersistentStore, saveAndSync, syncOperation } from '@/utils/PersistentStore';\r\nimport vuestore, { store } from '@/store';\r\nimport { CreateTypedStoreProxy } from 'vuex-typed-store';\r\nimport { areaSaggioService } from '../services/areaSaggioService';\r\nimport { versioneInSituStore } from '@/modules/VersioneInSitu/store/VersioneInSitu.store';\r\nimport { Guid } from 'guid-typescript';\r\nimport { syncDeletedRow } from '@/modules/SyncDeletedRow/helper/syncDeletedRowHelper';\r\n\r\nexport interface AreaSaggioStoreModel { }\r\n\r\nexport interface AreaSaggioStoreActions {\r\n setAreaSaggio(payload: server.areaSaggio): Promise;\r\n remove(payload: server.areaSaggio): Promise;\r\n clean(): Promise;\r\n}\r\n\r\nexport interface AreaSaggioStoreGetters {\r\n get(id): Promise;\r\n getAll(): Promise;\r\n requiredSync(areaSaggioId: string): Promise;\r\n nearestAreaSaggio(): Promise;\r\n}\r\n\r\nexport const TABLES = {\r\n areaSaggio: 'AreeSaggio',\r\n areaSaggioClasseDiametrica: 'AreeSaggioClassiDiametriche',\r\n areaSaggioPiantaCampione: 'AreeSaggioPianteCampione'\r\n};\r\nexport const AreaSaggioStore = {\r\n PREFIX: 'areaSaggio',\r\n namespaced: true,\r\n mutations: {},\r\n getters: {\r\n get: (state) => async (id): Promise => await PersistentStore.get(TABLES.areaSaggio, id),\r\n getAll: (state) => async (): Promise => {\r\n let currentVersion = await versioneInSituStore.getters.current();\r\n if (!currentVersion) return [];\r\n\r\n var result = await PersistentStore.getAll(TABLES.areaSaggio) || [];\r\n\r\n if (result.length > 0) {\r\n result = await syncDeletedRow(TABLES.areaSaggio, result);\r\n }\r\n\r\n var maxts = await PersistentStore.getMaxTs(TABLES.areaSaggio);\r\n areaSaggioService.List(currentVersion.id, maxts).then(async (r) => {\r\n replaceInArray(r, result, (a, b) => a.id == b.id);\r\n await PersistentStore.set(TABLES.areaSaggio, r);\r\n });\r\n return result;\r\n },\r\n requiredSync: (state) => async (areaSaggioId: string): Promise => {\r\n var resultDoSync = (await PersistentStore.getAll(TABLES.areaSaggio) || [])\r\n .filter(f => f.id === areaSaggioId).some((s: any) => s.__needsSync);\r\n var classeDiametricaDoSync = (await PersistentStore.getAll(TABLES.areaSaggioClasseDiametrica) || [])\r\n .filter(f => f.id === areaSaggioId).some((s: any) => s.__needsSync);\r\n var piantaCampionDoSync = (await PersistentStore.getAll(TABLES.areaSaggioPiantaCampione) || [])\r\n .filter(f => f.id === areaSaggioId).some((s: any) => s.__needsSync);\r\n return resultDoSync && classeDiametricaDoSync && piantaCampionDoSync;\r\n },\r\n nearestAreaSaggio: (state) => async (): Promise => {\r\n var position = store.getters.ui.currentGPSPosition();\r\n if (position != null)\r\n return (await areaSaggioStore.getters.getAll()).map(f => { return { distance: distance(f, position), f } })\r\n .sort((a, b) => a.distance - b.distance).shift()?.f;\r\n return null;\r\n }\r\n } as GetterTree,\r\n actions: {\r\n async setAreaSaggio(context, payload: server.areaSaggio) {\r\n let operation: syncOperation = syncOperation.update;\r\n if (!payload.id) {\r\n payload.id = Guid.create().toString();\r\n operation = syncOperation.create;\r\n }\r\n\r\n await saveAndSync(payload, TABLES.areaSaggio,\r\n i => operation, i => areaSaggioService.Set(i, i.versioneId), i => areaSaggioService.Set(i, i.versioneId),\r\n async (o, n, op) => {\r\n messageService.publish('updateMediaReference', { type: 'areaSaggio', oldTypeId: o.id, newTypeId: n.id } as messages.updateMediaReference);\r\n })\r\n },\r\n async remove(context, payload: server.areaSaggio) {\r\n await areaSaggioService.Remove(payload.id, payload.versioneId);\r\n await PersistentStore.remove(TABLES.areaSaggio, payload);\r\n },\r\n async clean(context) {\r\n var result = await PersistentStore.getAll(TABLES.areaSaggio) || [];\r\n if (result.length > 0) {\r\n return Promise.all(result.map(async (f) => PersistentStore.remove(TABLES.areaSaggio, f)));\r\n }\r\n }\r\n } as ActionTree\r\n}\r\n\r\nexport const areaSaggioStore = CreateTypedStoreProxy(vuestore, AreaSaggioStore.PREFIX);\r\n\r\nfunction distance(f: server.areaSaggio, position: { latitude: number, longitude: number }) {\r\n return Math.sqrt(\r\n Math.pow(Math.abs(f.longitude - position.longitude), 2) +\r\n Math.pow(Math.abs(f.latitude - position.latitude), 2)\r\n )\r\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('dialog',{staticClass:\"form-container\"},[_c('header',[_c('button',{staticClass:\"btn-cancel\",on:{\"click\":function($event){return _vm.back()}}},[_c('i',{staticClass:\"fas fa-arrow-left hide-mobile\"}),_c('i',{staticClass:\"fas fa-chevron-right hide-web\"})])]),_c('form',{ref:\"form\",on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();},\"change\":_vm.validateForm}},[(_vm.saving || _vm.cancel)?_c('div',{staticClass:\"wait\"}):_vm._e(),(_vm.manage)?_c('section',[_c('label',[_vm._v(\"Dati rilievo cavallettamento\")]),_vm._m(0),_c('specie-arboree',{attrs:{\"availableValues\":_vm.specieArboreeAreaSaggio,\"title\":'Specie arboree',\"button-title\":'Aggiungi specie arborea',\"warning-message\":\"Non sono disponibili ulteriori specie da poter inserire. Nei rilievi da cavallettamento le specie disponibili sono le 'specie presenti' nell'area di saggio associata.\",\"disabled\":_vm.saving || _vm.cancel,\"beforeDelete\":_vm.beforeSpecieArboreaDelete},model:{value:(_vm.manage.specieArboree),callback:function ($$v) {_vm.$set(_vm.manage, \"specieArboree\", $$v)},expression:\"manage.specieArboree\"}}),(_vm.manage.specieArboree.length > _vm.specieArboreeMax)?_c('div',{staticClass:\"notification-badge alert-badge\"},[_c('i',{staticClass:\"fas fa-exclamation-triangle\"}),_vm._v(\" Non è possibile inserire più di \"+_vm._s(_vm.specieArboreeMax)+\" specie arboree per il rilievo da cavallettamento \")]):_vm._e(),_c('section',[_c('label',[_vm._v(\"Intervallo classi diametriche\")]),_c('cell',{attrs:{\"validate\":true,\"immediate\":true,\"placeholder\":\"Classe diametrica minima\"}},[_c('numeric',{attrs:{\"required\":\"\",\"precision\":0,\"min\":0},model:{value:(_vm.manage.diametroMin),callback:function ($$v) {_vm.$set(_vm.manage, \"diametroMin\", $$v)},expression:\"manage.diametroMin\"}}),_c('small',[_vm._v(\"cm\")])],1),_c('cell',{attrs:{\"validate\":true,\"immediate\":true,\"placeholder\":\"Classe diametrica massima\"}},[_c('numeric',{attrs:{\"required\":\"\",\"precision\":0,\"min\":0,\"max\":_vm.sogliaClasseDiametrica},model:{value:(_vm.manage.diametroMax),callback:function ($$v) {_vm.$set(_vm.manage, \"diametroMax\", $$v)},expression:\"manage.diametroMax\"}}),_c('small',[_vm._v(\"cm\")])],1)],1),(_vm.manage.diametroMax > _vm.sogliaClasseDiametrica)?_c('div',{staticClass:\"notification-badge alert-badge\"},[_c('i',{staticClass:\"fas fa-exclamation-triangle\"}),_vm._v(\" L'intervallo di classi diametriche deve essere minore o uguale \"+_vm._s(_vm.rangeClasseDiametrica)+\" \")]):_vm._e()],1):_vm._e()]),(!(_vm.saving || _vm.cancel))?_c('footer',[_c('button',{staticClass:\"btn-cancel\",on:{\"click\":function($event){return _vm.back()}}},[_c('i',{staticClass:\"fas fa-arrow-left hide-mobile\"}),_c('i',{staticClass:\"fas fa-times hide-web\"})]),(_vm.value.rilevamenti.length > 0)?_c('button',{staticClass:\"btn-danger\",on:{\"click\":function($event){return _vm.remove()}}},[_c('i',{staticClass:\"fas fa-trash\"})]):_vm._e(),_c('button',{staticClass:\"btn-primary\",attrs:{\"disabled\":(_vm.manage && _vm.manage.specieArboree.length > _vm.specieArboreeMax) || !_vm.formIsValid},on:{\"click\":function($event){return _vm.ok()}}},[_c('i',{staticClass:\"fas fa-check\"})])]):_vm._e(),(_vm.saving || _vm.cancel)?_c('footer',[(_vm.saving)?_c('button',{staticClass:\"btn-info\",attrs:{\"disabled\":\"\"}},[_vm._v(\" Impostazione rilievo cavallettamento in corso... \")]):_vm._e(),(_vm.cancel)?_c('button',{staticClass:\"btn-info\",attrs:{\"disabled\":\"\"}},[_vm._v(\" Cancellazione rilievo cavallettamento in corso... \")]):_vm._e()]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"notification-badge info-badge\"},[_c('i',{staticClass:\"fas fa-info-circle\"}),_vm._v(\" Le specie arboree inseribilil nel rilievo da cavallettamento sono le specie presenti dell'area di saggio associata \")])}]\n\nexport { render, staticRenderFns }","import Vue from \"vue\";\r\nimport Component from 'vue-class-component';\r\nimport { modalHelper, IModalBase, DataItem, alertHelper, DataItemStatus } from '@/components';\r\nimport { Deferred } from '@/utils/Deferred';\r\nimport { areaSaggioClasseDiametricaStore } from '../store/areaSaggioClasseDiametrica.store';\r\nimport { Prop, Watch } from 'vue-property-decorator';\r\nimport { localizeFunction } from '@/filters/localizeFilter';\r\nimport { Async } from '@/utils/AsyncDecorators';\r\nimport { domainStore } from '@/modules/domains/store/domains.store';\r\nimport { toastHelper } from '@/helpers/ToastHelper';\r\nimport { Guid } from 'guid-typescript';\r\nimport { watch } from 'esri/core/watchUtils';\r\nimport { store } from '@/store';\r\nimport { onlineCheck } from \"@/utils/onlineCheck\";\r\n\r\n@Component({})\r\nexport default class Form extends Vue {\r\n @Prop()\r\n value: {\r\n versioneId: string,\r\n areaSaggioId: string,\r\n specieArboree: number[],\r\n specieArboreePresenti: number[],\r\n classiDiametriche: number[],\r\n rilevamenti: server.areaSaggioClasseDiametrica[]\r\n };\r\n\r\n @Prop()\r\n deferred: Deferred>;\r\n\r\n specieArboreeMax: number = 10;\r\n rangeClasseDiametrica: number = 100;\r\n get sogliaClasseDiametrica() {\r\n return (this.manage.diametroMin || 0) + this.rangeClasseDiametrica\r\n }\r\n\r\n get areaSaggioIdNavigationSelected() {\r\n return store.getters.navigation.selected(\"areaSaggio\");\r\n }\r\n\r\n @Watch(\"areaSaggioIdNavigationSelected\")\r\n changeAreaSaggioIdNavigationSelected(n, o) {\r\n if (n != o) this.back()\r\n }\r\n\r\n @Async({ async get() { return await (await domainStore.getters.specieArboree()) }, default: [], lazy: false })\r\n specieArboree: domains.domini[];\r\n\r\n get specieArboreeAreaSaggio(): domains.domini[] {\r\n const result: domains.domini[] = [];\r\n this.value.specieArboreePresenti.forEach(m => {\r\n const specie = this.specieArboree.find(f => f.id === m)\r\n if (specie) result.push(specie);\r\n })\r\n return result;\r\n }\r\n\r\n manage: { isNew: boolean, specieArboree: number[], diametroMin: number, diametroMax: number } = null\r\n mounted() {\r\n this.manage = {\r\n isNew: this.value.classiDiametriche.length <= 0,\r\n diametroMin: (this.value.classiDiametriche || []).length > 0 ? Math.min(...this.value.classiDiametriche) : 3,\r\n diametroMax: (this.value.classiDiametriche || []).length > 0 ? Math.max(...this.value.classiDiametriche) : 72,\r\n specieArboree: [...new Set(this.value.specieArboree)]\r\n }\r\n setTimeout(this.validateForm, 2000);\r\n }\r\n\r\n formIsValid: boolean = false;\r\n validateForm() {\r\n this.formIsValid = (this.$refs.form && (this.$refs.form as any).checkValidity())\r\n }\r\n\r\n back() {\r\n this.deferred.resolve({ item: [], status: DataItemStatus.unchanged } as DataItem);\r\n modalHelper.closeModal(\"extended\");\r\n }\r\n\r\n cancel: boolean = false;\r\n async remove() {\r\n const beforeDelete = await this.beforeDelete();\r\n if (beforeDelete)\r\n if (await alertHelper.show(localizeFunction('confirm-delete', `Sei sicuro di voler cancellare questo rilievo da cavallettamento?`))) {\r\n try {\r\n this.cancel = true;\r\n await areaSaggioClasseDiametricaStore.actions.removeAll({ versioneId: this.value.versioneId, areaSaggioId: this.value.areaSaggioId });\r\n this.deferred.resolve({ item: [], status: DataItemStatus.changed } as DataItem);\r\n modalHelper.closeModal(\"extended\");\r\n this.cancel = false;\r\n } catch (e) {\r\n toastHelper.error('Impossibile cancellare il rilievo.')\r\n }\r\n }\r\n }\r\n\r\n async beforeDelete() {\r\n const needSync = await areaSaggioClasseDiametricaStore.getters.requiredSync();\r\n if (needSync) {\r\n toastHelper.error(\"Ci sono dei Rilievi da cavallettamento che necessitano di sincronia. Effettuare la sincronia prima di poter effettuare la cancellazione\")\r\n return false;\r\n }\r\n\r\n const online = await onlineCheck()\r\n if (!online) {\r\n toastHelper.error(\"Non è possibile effettuare la cancellazione in modalità Offline\")\r\n return false;\r\n }\r\n\r\n return !needSync && online;\r\n }\r\n\r\n async beforeSpecieArboreaDelete(specieArboreaId?: number): Promise {\r\n var result = await areaSaggioClasseDiametricaStore.getters.getAll() || [];\r\n\r\n const filter = result.filter(f => f.areaSaggioId === this.value.areaSaggioId && (!specieArboreaId || specieArboreaId === f.specie));\r\n\r\n const needSync = filter.filter(s => s.__needsSync);\r\n\r\n if (needSync.length > 0 && needSync.length !== filter.length) {\r\n toastHelper.error(\"Ci sono dei Rilievi da cavallettamento che necessitano di sincronia. Effettuare la sincronia prima di poter effettuare la cancellazione\")\r\n return false;\r\n }\r\n\r\n const online = await onlineCheck()\r\n if (!online && filter.some(s => !!s.timeStamp)) {\r\n toastHelper.error(\"Non è possibile effettuare la cancellazione in modalità Offline\")\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n saving: boolean = false;\r\n async ok() {\r\n if ((this.manage.specieArboree || []).length <= 0) {\r\n toastHelper.error(\"E' necessario inserire almeno una specie arborea!\")\r\n return;\r\n }\r\n\r\n if (this.manage.diametroMin > this.manage.diametroMax) {\r\n toastHelper.error(\"Il diametro minimo non può essere maggiore del diametro massimo!\")\r\n return;\r\n }\r\n\r\n const online = await onlineCheck();\r\n const diametroMin = (this.value.classiDiametriche || []).length > 0 ? Math.min(...this.value.classiDiametriche) : 3;\r\n const diametroMax = (this.value.classiDiametriche || []).length > 0 ? Math.max(...this.value.classiDiametriche) : 72;\r\n\r\n if (online) {\r\n this._okConfirm();\r\n return;\r\n }\r\n else {\r\n if (this.manage.isNew) {\r\n this._okConfirm();\r\n return;\r\n } else {\r\n if (diametroMin >= this.manage.diametroMin && diametroMax <= this.manage.diametroMax) {\r\n this._okConfirm();\r\n return;\r\n } else {\r\n if (await alertHelper.show(localizeFunction(\r\n 'confirm-confirm-change',\r\n `Attenzione, in modalità Offline, non è possibile ridurre l'intervallo delle classi diametriche. Continuare il salvataggio con le classi diametriche precedenti?`))) {\r\n if (diametroMin < this.manage.diametroMin)\r\n this.manage.diametroMin = diametroMin;\r\n if (diametroMax > this.manage.diametroMax)\r\n this.manage.diametroMax = diametroMax;\r\n this._okConfirm();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n private async _okConfirm() {\r\n this.saving = true;\r\n var toDelete = this.value.rilevamenti.filter(f => f.diametro < this.manage.diametroMin || f.diametro > this.manage.diametroMax || this.manage.specieArboree.indexOf(f.specie) === -1)\r\n if (toDelete.length > 0) {\r\n for (const key in toDelete) {\r\n const elem = toDelete[key];\r\n await areaSaggioClasseDiametricaStore.actions.remove(elem);\r\n }\r\n }\r\n\r\n const result: server.areaSaggioClasseDiametrica[] = [];\r\n for (let diametro = this.manage.diametroMin; diametro <= this.manage.diametroMax; diametro++) {\r\n for (let index = 0; index < this.manage.specieArboree.length; index++) {\r\n const specieArboreaId = this.manage.specieArboree[index];\r\n\r\n let cell = (this.value.rilevamenti || []).find(f =>\r\n f.versioneId === this.value.versioneId &&\r\n f.areaSaggioId === this.value.areaSaggioId &&\r\n f.specie === specieArboreaId &&\r\n f.diametro === diametro\r\n );\r\n\r\n if (!cell || (cell && cell.specieOrderIndex !== index)) {\r\n if (!cell) {\r\n cell = {\r\n id: Guid.create().toString(),\r\n versioneId: this.value.versioneId,\r\n areaSaggioId: this.value.areaSaggioId,\r\n specie: specieArboreaId,\r\n diametro: diametro,\r\n contatore: 0,\r\n specieOrderIndex: index\r\n } as server.areaSaggioClasseDiametrica;\r\n }\r\n cell.specieOrderIndex = index;\r\n await areaSaggioClasseDiametricaStore.actions.setAreaSaggioClasseDiametrica(cell);\r\n }\r\n result.push(cell);\r\n }\r\n }\r\n\r\n this.deferred.resolve({ item: result, status: DataItemStatus.changed } as DataItem);\r\n modalHelper.closeModal(\"extended\");\r\n this.saving = false;\r\n }\r\n}","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!./form.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!./form.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./form.vue?vue&type=template&id=9ade727c&\"\nimport script from \"./form.ts?vue&type=script&lang=ts&\"\nexport * from \"./form.ts?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { modalHelper, DataItemStatus } from '@/components/modal/modalHelper';\r\nimport { Async } from '@/utils/AsyncDecorators';\r\nimport { Watch } from 'vue-property-decorator';\r\nimport Form from \"./form.vue\";\r\nimport { areaSaggioClasseDiametricaStore } from '../store/areaSaggioClasseDiametrica.store';\r\nimport { versioneInSituStore } from '@/modules/VersioneInSitu/store/VersioneInSitu.store';\r\nimport { areaSaggioStore } from '@/modules/AreaSaggio/store/areaSaggio.store';\r\nimport { store } from '@/store';\r\nimport { layoutHelper } from '@/helpers/LayoutHelper';\r\nimport { domainStore } from '@/modules/domains';\r\nimport { replaceInArray } from '@/utils/Array';\r\nimport { localVersionHelper } from '@/helpers/LocalVersionHelper';\r\nimport { Guid } from 'guid-typescript';\r\nimport { reportStore } from '@/modules/Reports/store/report.store';\r\n\r\nVue.component(\"classe-diametrica-row\", () => !layoutHelper.isWeb ? import(\"./mobile/classeDiametricaRow.vue\") : import(\"./web/classeDiametricaRow.vue\"));\r\n\r\n@Component({})\r\nexport default class Index extends Vue {\r\n showSearchBar: boolean = false;\r\n\r\n @Async({ async get() { return (await areaSaggioStore.getters.getAll()).sort((a, b) => a.nome.localeCompare(b.nome)); }, default: [], lazy: false })\r\n storeSaggio: server.areaSaggio[];\r\n\r\n @Async({ async get() { return await areaSaggioClasseDiametricaStore.getters.getAll() }, default: [], lazy: true })\r\n areeSaggioClasseDiametrica: server.areaSaggioClasseDiametrica[];\r\n\r\n @Async({ async get() { return await versioneInSituStore.getters.current() }, default: {}, lazy: false })\r\n currentVersion: server.VersioneInSitu;\r\n\r\n @Async({ async get() { return await (await domainStore.getters.specieArboree()) }, default: [], lazy: true })\r\n specieArboree: domains.domini[];\r\n\r\n get areeSaggio() {\r\n return this.storeSaggio.map((m) => {\r\n return {\r\n key: m.id,\r\n value: m.id,\r\n description: m.nome,\r\n } as server.autocomplete\r\n })\r\n }\r\n\r\n get areaSaggioId() {\r\n return store.getters.navigation.selected(\"areaSaggio\");\r\n }\r\n get navigation() {\r\n if (!this.areaSaggioId) return null;\r\n return this.areeSaggio.find(f => f.key === this.areaSaggioId) || {} as server.autocomplete;\r\n }\r\n set navigation(value: server.autocomplete) {\r\n if (value.key !== this.areaSaggioId) {\r\n store.actions.navigation.set_filter({ area: \"areaSaggio\", id: value ? value.key : null });\r\n reportStore.actions.set_logarithmic_regression(value ? value.key : null);\r\n this.selected = null;\r\n }\r\n }\r\n\r\n filter = {\r\n text: \"\",\r\n };\r\n\r\n get areeSaggioClassiDiametriche(): server.areaSaggioClasseDiametrica[] {\r\n if (!this.areaSaggioId) return [];\r\n return this.areeSaggioClasseDiametrica.filter(i => i.areaSaggioId === this.areaSaggioId);\r\n }\r\n\r\n @Watch('filter.text')\r\n change(n, o) { this.showsize = 20; }\r\n showsize: number = 20;\r\n\r\n get classiDiametriche(): number[] {\r\n const classiDimateriche = this.areeSaggioClassiDiametriche.sort((a, b) => a.diametro - b.diametro).map(m => m.diametro);\r\n return [...new Set(classiDimateriche)];\r\n }\r\n\r\n get classiDiametricheResized(): number[] {\r\n return this.classiDiametriche.slice(0, this.showsize);\r\n }\r\n\r\n get specieArboreeSelezionateIds(): number[] {\r\n const specieArboree = this.areeSaggioClassiDiametriche.sort((a, b) => a.specieOrderIndex - b.specieOrderIndex).map(m => m.specie);\r\n const uniqueValues = [...new Set(specieArboree)]\r\n return uniqueValues;\r\n };\r\n\r\n get specieArboreeInserite(): domains.domini[] {\r\n if ((this.specieArboree || []).length <= 0 || (this.specieArboreeSelezionateIds || []).length <= 0) return [];\r\n const result: domains.domini[] = [];\r\n this.specieArboreeSelezionateIds.forEach(m => {\r\n const specie = this.specieArboree.find(f => f.id === m)\r\n if (specie) result.push(specie);\r\n })\r\n return result;\r\n }\r\n\r\n get rowCells(): any {\r\n if (this.areeSaggioClassiDiametriche.length <= 0 || this.specieArboreeSelezionateIds.length <= 0) return {};\r\n\r\n const result = {};\r\n this.classiDiametricheResized.forEach(classeDiametrica => {\r\n result[classeDiametrica] = this.specieArboreeSelezionateIds.map((specieArborea) => {\r\n let elem = this.areeSaggioClassiDiametriche.find(f => f.diametro == classeDiametrica && f.specie === specieArborea);\r\n if (elem) return elem;\r\n elem = {\r\n id: Guid.create().toString(),\r\n versioneId: this.currentVersion.id,\r\n areaSaggioId: this.areaSaggioId,\r\n specie: specieArborea,\r\n diametro: classeDiametrica,\r\n contatore: 0\r\n } as server.areaSaggioClasseDiametrica\r\n areaSaggioClasseDiametricaStore.actions.setAreaSaggioClasseDiametrica(elem);\r\n })\r\n })\r\n \r\n return result;\r\n }\r\n\r\n async edit() {\r\n let _specieArboree = this.specieArboreeSelezionateIds;\r\n if (!_specieArboree || _specieArboree.length <= 0) {\r\n //nel caso in cui non ci sono classi diametriche imposto le specie dell'area di saggio\r\n _specieArboree = this.storeSaggio.find(f => f.id === this.areaSaggioId)?.speciePresenti || [];\r\n }\r\n\r\n let _specieArboreeAreaSaggio = this.storeSaggio.find(f => f.id === this.areaSaggioId)?.speciePresenti || [];\r\n _specieArboree = _specieArboree.filter((value) => _specieArboreeAreaSaggio.includes(value));\r\n\r\n const rilievo = {\r\n versioneId: this.currentVersion.id,\r\n areaSaggioId: this.areaSaggioId,\r\n specieArboree: _specieArboree,\r\n specieArboreePresenti: _specieArboreeAreaSaggio,\r\n classiDiametriche: this.classiDiametriche || [],\r\n rilevamenti: this.areeSaggioClassiDiametriche\r\n };\r\n let result = await modalHelper.showModal(Form, rilievo);\r\n if (result.status === DataItemStatus.changed) {\r\n const items = this.areeSaggioClasseDiametrica.filter(f => f.areaSaggioId !== this.areaSaggioId);\r\n this.areeSaggioClasseDiametrica = items.concat(result.item || []);\r\n }\r\n }\r\n\r\n async add() {\r\n let _specieArboreeAreaSaggio = this.storeSaggio.find(f => f.id === this.areaSaggioId)?.speciePresenti || [];\r\n let _specieArboree = this.specieArboreeSelezionateIds;\r\n if (!_specieArboree || _specieArboree.length <= 0) {\r\n //nel caso in cui non ci sono classi diametriche imposto le specie dell'area di saggio\r\n _specieArboree = _specieArboreeAreaSaggio;\r\n }\r\n\r\n\r\n let result = await modalHelper.showModal(Form, {\r\n versioneId: this.currentVersion.id,\r\n areaSaggioId: this.areaSaggioId,\r\n specieArboree: _specieArboree,\r\n specieArboreePresenti: _specieArboreeAreaSaggio,\r\n classiDiametriche: this.classiDiametriche || [],\r\n rilevamenti: []\r\n });\r\n if (result.status === DataItemStatus.changed) {\r\n const items = this.areeSaggioClasseDiametrica.filter(f => f.areaSaggioId !== this.areaSaggioId);\r\n this.areeSaggioClasseDiametrica = items.concat(result.item);\r\n }\r\n }\r\n\r\n selected: server.areaSaggioClasseDiametrica = null;\r\n async select(item: server.areaSaggioClasseDiametrica) {\r\n this.selected = item;\r\n }\r\n\r\n async increases() {\r\n if (this.selected) {\r\n this.selected.contatore++\r\n await areaSaggioClasseDiametricaStore.actions.setAreaSaggioClasseDiametrica(this.selected);\r\n replaceInArray([this.selected], this.areeSaggioClasseDiametrica, (a, b) => a.id == b.id);\r\n }\r\n }\r\n\r\n async decreases() {\r\n if (this.selected && this.selected.contatore > 0) {\r\n this.selected.contatore--\r\n await areaSaggioClasseDiametricaStore.actions.setAreaSaggioClasseDiametrica(this.selected);\r\n replaceInArray([this.selected], this.areeSaggioClasseDiametrica, (a, b) => a.id == b.id);\r\n }\r\n }\r\n\r\n onShow() {\r\n return localVersionHelper.get(\"InSitu\") ? true : false\r\n }\r\n}","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!./index.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!./index.ts?vue&type=script&lang=ts&\"","import { GetterTree, ActionTree } from 'vuex';\r\nimport { CreateTypedStoreProxy } from 'vuex-typed-store';\r\nimport vuestore, { store } from '../../../store';\r\nimport { areaSaggioPiantaCampioneStore } from '@/modules/AreaSaggioPiantaCampione/store/areaSaggioPiantaCampione.store';\r\n\r\nexport interface ReportStoreModel {\r\n logarithmicRegression: report.regression\r\n}\r\n\r\nexport interface ReportStoreActions {\r\n init();\r\n set_logarithmic_regression: (areaSaggioId) => Promise;\r\n}\r\n\r\nexport interface ReportStoreGetters {\r\n regression: () => report.regression;\r\n}\r\n\r\nexport const ReportStore = {\r\n PREFIX: 'report',\r\n namespaced: true,\r\n state: {\r\n logarithmicRegression: null\r\n },\r\n mutations: {\r\n set_logarithmic_regression(state: ReportStoreModel, regression: report.regression) {\r\n state.logarithmicRegression = regression\r\n },\r\n },\r\n getters: {\r\n regression: (state) => () => state.logarithmicRegression\r\n } as GetterTree,\r\n actions: {\r\n async init(context) {\r\n const areaSaggioId = store.getters.navigation.selected(\"areaSaggio\");\r\n const value = await getValuesOfLogarithmicExpression(areaSaggioId);\r\n context.commit('set_logarithmic_regression', value);\r\n },\r\n async set_logarithmic_regression(context, areaSaggioId: string) {\r\n const value = await getValuesOfLogarithmicExpression(areaSaggioId);\r\n context.commit('set_logarithmic_regression', value);\r\n }\r\n } as ActionTree\r\n}\r\n\r\nexport const reportStore = CreateTypedStoreProxy(vuestore, ReportStore.PREFIX);\r\n\r\nasync function getValuesOfLogarithmicExpression(areaSaggioId: string): Promise {\r\n let coordinates = [];\r\n if (!areaSaggioId)\r\n return null;\r\n const pianteCampione = (await areaSaggioPiantaCampioneStore.getters.getAll())\r\n .filter(i => i.areaSaggioId === areaSaggioId);\r\n\r\n coordinates = pianteCampione.map(m => {\r\n return [m.diametro || 0, m.altezza || 0];\r\n })\r\n return logarithmicRegression(coordinates);\r\n\r\n}\r\n\r\nfunction logarithmicRegression(data, options: { order: number, precision: number } = { order: 2, precision: 2 }): report.regression {\r\n const sum = [0, 0, 0, 0];\r\n const len = data.length;\r\n\r\n for (let n = 0; n < len; n++) {\r\n if (data[n][1] !== null) {\r\n sum[0] += Math.log(data[n][0]);\r\n sum[1] += data[n][1] * Math.log(data[n][0]);\r\n sum[2] += data[n][1];\r\n sum[3] += (Math.log(data[n][0]) ** 2);\r\n }\r\n }\r\n\r\n const a = ((len * sum[1]) - (sum[2] * sum[0])) / ((len * sum[3]) - (sum[0] * sum[0]));\r\n const coeffB = round(a, options.precision);\r\n const coeffA = round((sum[2] - (coeffB * sum[0])) / len, options.precision);\r\n \r\n \r\n const fn = x => round(round(coeffA + (coeffB * Math.log(x)), options.precision), options.precision);\r\n const points = data.map(point => fn(point[0]));\r\n\r\n return {\r\n points,\r\n fn: fn,\r\n equation: [coeffA, coeffB],\r\n string: `y = ${coeffA} + ${coeffB} ln(x)`,\r\n r2: round(determinationCoefficient(data, points), options.precision),\r\n };\r\n\r\n function determinationCoefficient(data, results) {\r\n const predictions = [];\r\n const observations = [];\r\n\r\n data.forEach((d, i) => {\r\n if (d[1] !== null) {\r\n observations.push(d);\r\n predictions.push(results[i]);\r\n }\r\n });\r\n\r\n const sum = observations.reduce((a, observation) => a + observation[1], 0);\r\n const mean = sum / observations.length;\r\n\r\n const ssyy = observations.reduce((a, observation) => {\r\n const difference = observation[1] - mean;\r\n return a + (difference * difference);\r\n }, 0);\r\n\r\n const sse = observations.reduce((accum, observation, index) => {\r\n const prediction = predictions[index];\r\n const residual = observation[1] - prediction[1];\r\n return accum + (residual * residual);\r\n }, 0);\r\n\r\n return 1 - (sse / ssyy);\r\n }\r\n\r\n function round(number, precision) {\r\n const factor = 10 ** precision;\r\n return Math.round(number * factor) / factor;\r\n }\r\n}\r\n","import vuestore from '@/store';\r\nimport { DomainStore } from './store/domains.store';\r\nimport { IstatStore } from './store/istat.store';\r\n\r\nexport function init() {\r\n //REGISTRAZIONE DELLO STORE\r\n vuestore.registerModule(DomainStore.PREFIX, DomainStore);\r\n vuestore.registerModule(IstatStore.PREFIX, IstatStore);\r\n}","import { domainStore } from './store/domains.store';\r\nimport { istatStore } from './store/istat.store';\r\nimport { ISyncOptions } from '@/utils/ISyncOptions';\r\n\r\nexport default {\r\n\r\n startup: async (): Promise => {\r\n await domainStore.getters.composizioneVegetazionali();\r\n await domainStore.getters.danniOsservati();\r\n await domainStore.getters.esposizioni();\r\n await domainStore.getters.feriteTroncoCicatrizzazione();\r\n await domainStore.getters.feriteTroncoDimensioni();\r\n await domainStore.getters.fustiFibratura();\r\n await domainStore.getters.fustiNodosita();\r\n await domainStore.getters.fustiSezione();\r\n await domainStore.getters.fustiTipo();\r\n await domainStore.getters.giaciture();\r\n await domainStore.getters.governi();\r\n await domainStore.getters.lettiere();\r\n await domainStore.getters.origineMaterialiSelezionati();\r\n await domainStore.getters.originePiantePlus();\r\n await domainStore.getters.originePopolamentiForestali();\r\n await domainStore.getters.pietrosita();\r\n await domainStore.getters.posizioniPiantePlus();\r\n await domainStore.getters.potaturePiantePlus();\r\n await domainStore.getters.specieArboree();\r\n await domainStore.getters.struttureOrizzontali();\r\n await domainStore.getters.struttureVerticali();\r\n await domainStore.getters.substratiPetrogenici();\r\n await domainStore.getters.terreniSottostanti();\r\n await domainStore.getters.tipiPiantePlus();\r\n await domainStore.getters.trattamenti();\r\n await domainStore.getters.ubicazioni();\r\n\r\n await istatStore.getters.istat();\r\n }\r\n\r\n} as ISyncOptions;","\r\nimport * as module from \"./module\";\r\nimport * as sync from \"./sync\";\r\nimport { IModuleOptions } from '@/utils/IModuleOptions';\r\n\r\n\r\n// IMPORTANTE: Esportare le rotte e il module\r\nexport default {\r\n modulename: 'domains', module, sync, \r\n roles: [\"Amministratore\", \"Editore\", \"Visualizzatore\"]\r\n} as IModuleOptions\r\n\r\n\r\nexport { domainService } from \"./services/domainService\";\r\nexport { domainStore } from \"./store/domains.store\";\r\nexport { istatStore } from \"./store/istat.store\";","import { baseRestService } from \"@/utils/baseRestService\"\r\nimport { Config } from '@/config';\r\n\r\nclass AreaSaggioPiantaCampioneService extends baseRestService {\r\n\r\n constructor() {\r\n super()\r\n this.baseUrl = Config.api.apiServerUrl;\r\n }\r\n\r\n async List(versioneId: string, ts: number): Promise {\r\n return await this.Get(`/api/in-situ/${versioneId}/area-saggio-pianta-campione`, { ts: ts }) || [];\r\n }\r\n\r\n async Detail(id: string, versioneId: string): Promise {\r\n return await this.Get(`/api/in-situ/${versioneId}/area-saggio-pianta-campione/${id}`);\r\n }\r\n\r\n async Set(obj: server.areaSaggioPiantaCampione, versioneId: string): Promise {\r\n return await this.Post(`/api/in-situ/${versioneId}/area-saggio-pianta-campione`, obj);\r\n }\r\n\r\n async Remove(id: string, versioneId: string): Promise {\r\n return await this.Delete(`/api/in-situ/${versioneId}/area-saggio-pianta-campione/${id}`);\r\n }\r\n\r\n}\r\n\r\nexport const areaSaggioPiantaCampioneService = new AreaSaggioPiantaCampioneService();"],"sourceRoot":""}