Skip to content
Snippets Groups Projects
Commit eb179983 authored by Tobias Kuhnert's avatar Tobias Kuhnert
Browse files

progress on fetching related actions of a configuration, still wip

parent c970f67d
No related branches found
No related tags found
2 merge requests!296Merge develop for staging release,!225Draft: Resolve "[Refactoring] Improve vuex store usage"
......@@ -177,8 +177,13 @@ export default class ConfigurationLocations extends mixins(Rules) {
await this.loadEpsgCodes()
await this.loadElevationData()
await this.loadAllContacts()
}
const test = await this.$api.configurations.findRelatedStaticLocationBeginActions(this.configurationId)
console.log('test',test);
}
get configurationId () {
return this.$route.params.configurationId
}
// private configuration: Configuration = new Configuration()
// private epsgCodes: EpsgCode[] = []
// private elevationData: ElevationDatum[] = []
......
......@@ -33,14 +33,40 @@ implied. See the Licence for the specific language governing
permissions and limitations under the Licence.
-->
<template>
<NuxtChild />
<div>
<ProgressIndicator
v-model="isLoading"
/>
<NuxtChild />
</div>
</template>
<script lang="ts">
import { Component, Vue } from 'nuxt-property-decorator'
@Component
import ProgressIndicator from '@/components/ProgressIndicator.vue'
import { mapActions } from 'vuex'
@Component({
components: { ProgressIndicator },
methods:mapActions('configurations',['loadMountingActions'])
})
export default class ConfigurationPlatformsAndDevices extends Vue {
private isLoading = false
async created(){
try {
this.isLoading=true
this.loadMountingActions(this.configurationId)
}catch (_e){
this.$store.commit('snackbar/setError', 'Failed to fetch actions')
}finally {
this.isLoading=false
}
}
get configurationId () {
return this.$route.params.configurationId
}
head () {
return {
titleTemplate: 'Platforms and Devices - %s'
......
......@@ -221,34 +221,34 @@ export class ConfigurationSerializer {
allPossibleDevices[deviceId] = device
}
if (relationships) {
// seems to be necessary as the pure if clause isn't recognized by typescript to avoid undefined type
const rs = relationships as IJsonApiRelationships
configuration.platformMountActions = this.platformMountActionSerializer.convertJsonApiRelationshipsModelList(
rs, included, allPossibleContacts, allPossiblePlatforms
)
configuration.platformUnmountActions = this.platformUnmountActionSerializer.convertJsonApiRelationshipsModelList(
rs, included, allPossibleContacts, allPossiblePlatforms
)
configuration.deviceMountActions = this.deviceMountActionSerializer.convertJsonApiRelationshipsModelList(
rs, included, allPossibleContacts, allPossibleDevices, allPossiblePlatforms
)
configuration.deviceUnmountActions = this.deviceUnmountActionSerializer.convertJsonApiRelationshipsModelList(
rs, included, allPossibleContacts, allPossibleDevices
)
configuration.staticLocationBeginActions = this.staticLocationBeginActionSerializer.convertJsonApiRelationshipsModelList(
rs, included, allPossibleContacts
)
configuration.staticLocationEndActions = this.staticLocationEndActionSerializer.convertJsonApiRelationshipsModelList(
rs, included, allPossibleContacts
)
configuration.dynamicLocationBeginActions = this.dynamicLocationBeginActionSerializer.convertJsonApiRelationshipsModelList(
rs, included, allPossibleContacts, devicePropertyLookupById
)
configuration.dynamicLocationEndActions = this.dynamicLocationEndActionSerializer.convertJsonApiRelationshipsModelList(
rs, included, allPossibleContacts
)
}
// if (relationships) {
// // seems to be necessary as the pure if clause isn't recognized by typescript to avoid undefined type
// const rs = relationships as IJsonApiRelationships
// configuration.platformMountActions = this.platformMountActionSerializer.convertJsonApiRelationshipsModelList(
// rs, included, allPossibleContacts, allPossiblePlatforms
// )
// configuration.platformUnmountActions = this.platformUnmountActionSerializer.convertJsonApiRelationshipsModelList(
// rs, included, allPossibleContacts, allPossiblePlatforms
// )
// configuration.deviceMountActions = this.deviceMountActionSerializer.convertJsonApiRelationshipsModelList(
// rs, included, allPossibleContacts, allPossibleDevices, allPossiblePlatforms
// )
// configuration.deviceUnmountActions = this.deviceUnmountActionSerializer.convertJsonApiRelationshipsModelList(
// rs, included, allPossibleContacts, allPossibleDevices
// )
// configuration.staticLocationBeginActions = this.staticLocationBeginActionSerializer.convertJsonApiRelationshipsModelList(
// rs, included, allPossibleContacts
// )
// configuration.staticLocationEndActions = this.staticLocationEndActionSerializer.convertJsonApiRelationshipsModelList(
// rs, included, allPossibleContacts
// )
// configuration.dynamicLocationBeginActions = this.dynamicLocationBeginActionSerializer.convertJsonApiRelationshipsModelList(
// rs, included, allPossibleContacts, devicePropertyLookupById
// )
// configuration.dynamicLocationEndActions = this.dynamicLocationEndActionSerializer.convertJsonApiRelationshipsModelList(
// rs, included, allPossibleContacts
// )
// }
return {
configuration,
......
......@@ -57,6 +57,16 @@ import { StaticLocationBeginActionApi } from '@/services/sms/StaticLocationBegin
import { StaticLocationEndActionApi } from '@/services/sms/StaticLocationEndActionApi'
import { DynamicLocationBeginActionApi } from '@/services/sms/DynamicLocationBeginActionApi'
import { DynamicLocationEndActionApi } from '@/services/sms/DynamicLocationEndActionApi'
import { StaticLocationBeginAction } from '@/models/StaticLocationBeginAction'
import { StaticLocationBeginActionSerializer } from '@/serializers/jsonapi/StaticLocationBeginActionSerializer'
import { DateTime } from 'luxon'
import { StaticLocationEndAction } from '@/models/StaticLocationEndAction'
import { DynamicLocationBeginAction } from '@/models/DynamicLocationBeginAction'
import { DynamicLocationEndAction } from '@/models/DynamicLocationEndAction'
import { DeviceMountAction } from '@/models/DeviceMountAction'
import { PlatformMountAction } from '@/models/PlatformMountAction'
import { DeviceSerializer } from '@/serializers/jsonapi/DeviceSerializer'
import { PlatformSerializer } from '@/serializers/jsonapi/PlatformSerializer'
export class ConfigurationApi {
private axiosApi: AxiosInstance
......@@ -544,7 +554,190 @@ export class ConfigurationApi {
return new ContactSerializer().convertJsonApiObjectListToModelList(rawServerResponse.data)
})
}
// /configurations/1/relationships/configuration-static-location-begin-actions
findRelatedStaticLocationBeginActions(configurationId: string): Promise<StaticLocationBeginAction>{
const url = this.basePath + '/' + configurationId + '/static-location-begin-actions'
const params = {
'page[size]': 10000
}
return this.axiosApi.get(url, { params }).then((rawServerResponse) => {
return rawServerResponse.data.data.map((apiData: any)=>{
return {
id:apiData.id,
beginDate:DateTime.fromISO(apiData.attributes.begin_date, { zone: 'UTC' }),
description:apiData.attributes.description,
epsgCode:apiData.attributes.epsg_code ?? '4326',
x:apiData.attributes.x,
y:apiData.attributes.y,
z:apiData.attributes.z,
elevationDatumName:apiData.attributes.elevation_datum_name ?? 'MSL',
elevationDatumUri:apiData.attributes.elevation_datum_uri ?? '',
}
})
})
}
findRelatedStaticLocationEndActions(configurationId: string): Promise<StaticLocationEndAction>{
const url = this.basePath + '/' + configurationId + '/static-location-end-actions'
const params = {
'page[size]': 10000
}
return this.axiosApi.get(url, { params }).then((rawServerResponse) => {
return rawServerResponse.data.data.map((apiData: any)=>{
return {
id:apiData.id,
description:apiData.attributes.description,
endDate:apiData.attributes.end_data
}
})
})
}
findRelatedDynamicLocationBeginActions(configurationId: string): Promise<DynamicLocationBeginAction>{
const url = this.basePath + '/' + configurationId + '/dynamic-location-begin-action'
const params = {
'page[size]': 10000
}
return this.axiosApi.get(url, { params }).then((rawServerResponse) => {
return rawServerResponse.data.data.map((apiData: any)=>{
return {
id:apiData.id,
beginDate:DateTime.fromISO(apiData.attributes.begin_date, { zone: 'UTC' }),
description:apiData.attributes.description,
epsgCode:apiData.attributes.epsg_code ?? '4326',
elevationDatumName:apiData.attributes.elevation_datum_name ?? 'MSL',
elevationDatumUri:apiData.attributes.elevation_datum_uri ?? '',
contactId:apiData.relationships.contact.data.id
}
})
})
}
findRelatedDynamicLocationEndActions(configurationId: string): Promise<DynamicLocationEndAction>{
const url = this.basePath + '/' + configurationId + '/dynamic-location-end-actions'
const params = {
'page[size]': 10000
}
return this.axiosApi.get(url, { params }).then((rawServerResponse) => {
return rawServerResponse.data.data.map((apiData: any)=>{
return {
id:apiData.id,
description:apiData.attributes.description,
endDate:apiData.attributes.end_data
}
})
})
}
findRelatedDeviceMountActions(configurationId: string): Promise<DeviceMountAction>{
const url = this.basePath + '/' + configurationId + '/device-mount-actions'
const params = {
'page[size]': 10000,
include:'device,contact,parent_platform'
}
return this.axiosApi.get(url, { params }).then((rawServerResponse) => {
const included = rawServerResponse.data.included
let includedContacts = included.filter((element:any) => element.type==='contact')
let includedDevices = included.filter((element:any) => element.type==='device')
// let includedContacts = included.filter((element:any) => element.type==='')
console.log('includedContacts',includedContacts);
console.log('includedDevices',includedDevices);
return rawServerResponse.data.data.map((apiData: any)=>{
let contactId = apiData.relationships.contact.data?.id
let deviceId = apiData.relationships.device.data?.id
let parentPlatformId = apiData.relationships.parent_platform.data?.id
let deviceData = includedDevices.find((element:any)=> element.id === deviceId)
let contactData = includedContacts.find((element:any)=> element.id === contactId)
//Todo parent platform
let deviceWithMeta= new DeviceSerializer().convertJsonApiDataToModel(deviceData,[])
return {
id: apiData.id,
offsetX: apiData.attributes.offset_x,
offsetY: apiData.attributes.offset_y,
offsetZ: apiData.attributes.offset_z,
description: apiData.attributes.description,
date: DateTime.fromISO(apiData.attributes.begin_date, { zone: 'UTC' }),
device:deviceWithMeta.device
}
})
})
}
findRelatedPlatformMountActions(configurationId: string): Promise<PlatformMountAction>{
const url = this.basePath + '/' + configurationId + '/platform-mount-actions'
const params = {
'page[size]': 10000,
include:'platform,contact,parent_platform'
}
return this.axiosApi.get(url, { params }).then((rawServerResponse) => {
const included = rawServerResponse.data.included
let includedContacts = included.filter((element:any) => element.type==='contact')
let includedPlatforms = included.filter((element:any) => element.type==='platform')
return rawServerResponse.data.data.map((apiData: any)=>{
let contactId = apiData.relationships.contact.data?.id
let platformId = apiData.relationships.platform.data?.id
let parentPlatformId = apiData.relationships.parent_platform.data?.id
let platformData = includedPlatforms.find((element:any)=> element.id === platformId)
let contactData = includedContacts.find((element:any)=> element.id === contactId)
//Todo parent platform
let paltformWithMeta= new PlatformSerializer().convertJsonApiDataToModel(platformData,[])
return {
id: apiData.id,
offsetX: apiData.attributes.offset_x,
offsetY: apiData.attributes.offset_y,
offsetZ: apiData.attributes.offset_z,
description: apiData.attributes.description,
date: DateTime.fromISO(apiData.attributes.begin_date, { zone: 'UTC' }),
platform:paltformWithMeta.platform
}
})
})
}
findRelatedDeviceUnmountActions(configurationId: string): Promise<PlatformMountAction>{
const url = this.basePath + '/' + configurationId + '/device-unmount-actions'
const params = {
'page[size]': 10000
}
return this.axiosApi.get(url, { params }).then((rawServerResponse) => {
return rawServerResponse.data.data.map((apiData: any)=>{
return {
id: apiData.id,
description: apiData.attributes.description,
date: DateTime.fromISO(apiData.attributes.end_date, { zone: 'UTC' }),
}
})
})
}
findRelatedPlatformUnmountActions(configurationId: string): Promise<PlatformMountAction>{
const url = this.basePath + '/' + configurationId + '/platform-unmount-actions'
const params = {
'page[size]': 10000
}
return this.axiosApi.get(url, { params }).then((rawServerResponse) => {
return rawServerResponse.data.data.map((apiData: any)=>{
return {
id: apiData.id,
description: apiData.attributes.description,
date: DateTime.fromISO(apiData.attributes.end_date, { zone: 'UTC' }),
}
})
})
}
//const url = this.basePath + '/' + configurationId + '/dynamic-location-begin-actions-x'
//const url = this.basePath + '/' + configurationId + '/dynamic-location-begin-actions-y'
//const url = this.basePath + '/' + configurationId + '/dynamic-location-begin-actions-z'
removeContact (configurationId: string, contactId: string): Promise<void> {
const url = this.basePath + '/' + configurationId + '/relationships/contacts'
......
......@@ -33,7 +33,7 @@
* implied. See the Licence for the specific language governing
* permissions and limitations under the Licence.
*/
import { Commit } from 'vuex/types'
import { Commit, Dispatch } from 'vuex/types'
import { Configuration } from '@/models/Configuration'
import { Project } from '@/models/Project'
......@@ -77,14 +77,14 @@ export interface configurationsState {
configurationContacts: Contact[]
configurationStates: string[]
projects: Project[],
deviceMountActions:DeviceMountAction[],
deviceUnMountActions:DeviceUnmountAction[],
platformMountActions:PlatformMountAction[],
platformUnMountActions:PlatformUnmountAction[],
staticLocationBeginActions: StaticLocationBeginAction[],
staticLocationEndActions:StaticLocationEndAction[],
dynamicLocationBeginActions: DynamicLocationBeginAction[],
dynamicLocationEndActions: DynamicLocationEndAction[],
configurationDeviceMountActions:DeviceMountAction[],
configurationDeviceUnmountActions:DeviceUnmountAction[],
configurationPlatformMountActions:PlatformMountAction[],
configurationPlatformUnmountActions:PlatformUnmountAction[],
configurationStaticLocationBeginActions: StaticLocationBeginAction[],
configurationStaticLocationEndActions:StaticLocationEndAction[],
configurationDynamicLocationBeginActions: DynamicLocationBeginAction[],
configurationDynamicLocationEndActions: DynamicLocationEndAction[],
totalPages: number
pageNumber: number
pageSize: number
......@@ -96,14 +96,14 @@ const state = () => ({
configurationContacts: [],
configurationStates: [],
projects: [],
deviceMountActions:[],
deviceUnMountActions:[],
platformMountActions:[],
platformUnMountActions:[],
staticLocationBeginActions:[],
staticLocationEndActions:[],
dynamicLocationBeginActions:[],
dynamicLocationEndActions:[],
configurationDeviceMountActions:[],
configurationDeviceUnmountActions:[],
configurationPlatformMountActions:[],
configurationPlatformUnmountActions:[],
configurationStaticLocationBeginActions:[],
configurationStaticLocationEndActions:[],
configurationDynamicLocationBeginActions:[],
configurationDynamicLocationEndActions:[],
totalPages: 1,
pageNumber: 1,
pageSize: 20
......@@ -151,25 +151,25 @@ const getters = {
if (state.configuration) {
const datesWithTexts: IActionDateWithTextItem[] = []
for (const platformMountAction of state.configuration.platformMountActions) {
for (const platformMountAction of state.configurationPlatformMountActions) {
datesWithTexts.push({
date: platformMountAction.date,
text: dateToDateTimeStringHHMM(platformMountAction.date) + ' - ' + 'Mount ' + platformMountAction.platform.shortName
})
}
for (const platformUnmountAction of state.configuration.platformUnmountActions) {
for (const platformUnmountAction of state.configurationPlatformUnmountActions) {
datesWithTexts.push({
date: platformUnmountAction.date,
text: dateToDateTimeStringHHMM(platformUnmountAction.date) + ' - ' + 'Unmount ' + platformUnmountAction.platform.shortName
})
}
for (const deviceMountAction of state.configuration.deviceMountActions) {
for (const deviceMountAction of state.configurationDeviceMountActions) {
datesWithTexts.push({
date: deviceMountAction.date,
text: dateToDateTimeStringHHMM(deviceMountAction.date) + ' - ' + 'Mount ' + deviceMountAction.device.shortName
})
}
for (const deviceUnmountAction of state.configuration.deviceUnmountActions) {
for (const deviceUnmountAction of state.configurationDeviceUnmountActions) {
datesWithTexts.push({
date: deviceUnmountAction.date,
text: dateToDateTimeStringHHMM(deviceUnmountAction.date) + ' - ' + 'Unmount ' + deviceUnmountAction.device.shortName
......@@ -289,6 +289,42 @@ const actions: {
const projects = await this.$api.projects.findAll()
commit('setProjects', projects)
},
async loadConfigurationDeviceMountActions({ commit }: { commit: Commit },id:string){
commit('setConfigurationDeviceMountActions',await this.$api.configurations.findRelatedDeviceMountActions(id))
},
async loadConfigurationDeviceUnmountActions({ commit }: { commit: Commit },id:string){
commit('setConfigurationDeviceUnmountActions',await this.$api.configurations.findRelatedDeviceUnmountActions(id))
},
async loadConfigurationPlatformMountActions({ commit }: { commit: Commit },id:string){
commit('setConfigurationPlatformMountActions',await this.$api.configurations.findRelatedPlatformMountActions(id))
},
async loadConfigurationPlatformUnmountActions({ commit }: { commit: Commit },id:string){
commit('setConfigurationPlatformUnmountActions',await this.$api.configurations.findRelatedPlatformUnmountActions(id))
},
async loadConfigurationStaticLocationBeginActions({ commit }: { commit: Commit },id:string){
commit('setConfigurationStaticLocationBeginActions',await this.$api.configurations.findRelatedStaticLocationBeginActions(id))
},
async loadConfigurationStaticLocationEndActions({ commit }: { commit: Commit },id:string){
commit('setConfigurationStaticLocationEndActions',await this.$api.configurations.findRelatedStaticLocationEndActions(id))
},
async loadConfigurationDynamicLocationBeginActions({ commit }: { commit: Commit },id:string){
commit('setConfigurationDynamicLocationBeginActions',await this.$api.configurations.findRelatedDynamicLocationBeginActions(id))
},
async loadConfigurationDynamicLocationEndActions({ commit }: { commit: Commit },id:string){
commit('setConfigurationDynamicLocationEndActions',await this.$api.configurations.findRelatedDynamicLocationEndActions(id))
},
async loadMountingActions({dispatch}:{dispatch:Dispatch},id:string){
await dispatch('loadConfigurationDeviceMountActions',id)
await dispatch('loadConfigurationDeviceUnmountActions',id)
await dispatch('loadConfigurationPlatformMountActions',id)
await dispatch('loadConfigurationPlatformUnmountActions',id)
},
async loadLocationActions({dispatch}:{dispatch:Dispatch},id:string){
await dispatch('loadConfigurationStaticLocationBeginActions',id)
await dispatch('loadConfigurationStaticLocationEndActions',id)
await dispatch('loadConfigurationDynamicLocationBeginActions',id)
await dispatch('loadConfigurationDynamicLocationEndActions',id)
},
async deleteConfiguration ({ _commit }: { _commit: Commit }, id: string) {
await this.$api.configurations.deleteById(id)
},
......@@ -372,7 +408,32 @@ const mutations = {
},
setProjects (state: configurationsState, projects: Project[]) {
state.projects = projects
},
setConfigurationDeviceMountActions(state:configurationsState,deviceMountActions:DeviceMountAction[]){
state.configurationDeviceMountActions=deviceMountActions
},
setConfigurationDeviceUnmountActions(state:configurationsState,deviceUnmountActions:DeviceUnmountAction[]){
state.configurationDeviceUnmountActions=deviceUnmountActions
},
setConfigurationPlatformMountActions(state:configurationsState,platformMountActions:PlatformMountAction[]){
state.configurationPlatformMountActions=platformMountActions
},
setConfigurationPlatformUnmountActions(state:configurationsState,platformUnmountActions:PlatformUnmountAction[]){
state.configurationPlatformUnmountActions=platformUnmountActions
},
setConfigurationStaticLocationBeginActions(state:configurationsState,staticLocationBeginActions:StaticLocationBeginAction[]){
state.configurationStaticLocationBeginActions=staticLocationBeginActions
},
setConfigurationStaticLocationEndActions(state:configurationsState,staticLocationEndActions:StaticLocationEndAction[]){
state.configurationStaticLocationEndActions=staticLocationEndActions
},
setConfigurationDynamicLocationBeginActions(state:configurationsState,dynamicLocationBeginActions:DynamicLocationBeginAction[]){
state.configurationDynamicLocationBeginActions=dynamicLocationBeginActions
},
setConfigurationDynamicLocationEndActions(state:configurationsState,dynamicLocationEndActions:DynamicLocationEndAction[]){
state.configurationDynamicLocationEndActions=dynamicLocationEndActions
}
}
export default {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment