Skip to content
Snippets Groups Projects
Commit dc8c9ad3 authored by Nils Brinckmann's avatar Nils Brinckmann
Browse files

Fixed customfields api

parent f331b4b0
No related branches found
No related tags found
2 merge requests!90Draft: restructure frontend properties 2,!82Restructure frontend
......@@ -90,7 +90,7 @@ export default class DeviceCustomFieldsPage extends Vue {
addField (): void {
const field = new CustomTextField()
this.isSaving = true
this.$api.customFields.add(this.deviceId, field).then(() => {
this.$api.customfields.add(this.deviceId, field).then(() => {
this.isSaving = false
this.$router.push('/devices/' + this.deviceId + '/customfields')
}).catch(() => {
......@@ -103,7 +103,7 @@ export default class DeviceCustomFieldsPage extends Vue {
if (!field.id) {
return
}
this.$api.customFields.deleteById(field.id).then(() => {
this.$api.customfields.deleteById(field.id).then(() => {
const index: number = this.customFields.findIndex((f: CustomTextField) => f.id === field.id)
if (index > -1) {
this.customFields.splice(index, 1)
......
......@@ -17,6 +17,8 @@ import { Component, Vue, Prop } from 'nuxt-property-decorator'
import CustomFieldCard from '@/components/CustomFieldCard.vue'
import ProgressIndicator from '@/components/ProgressIndicator.vue'
import { CustomTextField } from '@/models/CustomTextField'
@Component({
components: {
CustomFieldCard,
......
......@@ -73,11 +73,11 @@ export default class DeviceCustomFieldsShowPage extends Vue {
save (): void {
this.isSaving = true
this.$api.customFields.save(this.deviceId, this.valueCopy).then(() => {
this.$api.customfields.update(this.deviceId, this.valueCopy).then(() => {
this.isSaving = false
this.$emit('input', this.valueCopy)
this.$router.push('/devices/' + this.deviceId + '/customfields')
}).catch((e) => {
}).catch((_e: Error) => {
this.isSaving = false
this.$store.commit('snackbar/setError', 'Failed to save custom field')
})
......
......@@ -31,7 +31,7 @@
*/
import { ICustomTextField, CustomTextField } from '@/models/CustomTextField'
import {
IJsonApiDataWithOptionalIdWithoutRelationships,
IJsonApiDataWithOptionalId,
IJsonApiNestedElement,
IJsonApiObject,
IJsonApiObjectList,
......@@ -100,12 +100,20 @@ export class CustomTextFieldSerializer {
}
}
convertModelToJsonApiData (customField: ICustomTextField): IJsonApiDataWithOptionalIdWithoutRelationships {
convertModelToJsonApiData (customField: ICustomTextField, deviceId: string): IJsonApiDataWithOptionalId {
const data: any = {
type: 'customfield',
attributes: {
key: customField.key,
value: customField.value
},
relationships: {
device: {
data: {
type: 'device',
id: deviceId
}
}
}
}
if (customField.id) {
......
......@@ -36,7 +36,7 @@ import { DeviceApi } from '@/services/sms/DeviceApi'
import { PlatformApi } from '@/services/sms/PlatformApi'
import { ConfigurationApi } from '@/services/sms/ConfigurationApi'
import { ConfigurationStatusApi } from '@/services/sms/ConfigurationStatusApi'
import { CustomFieldsApi } from '@/services/sms/CustomFieldsApi'
import { CustomfieldsApi } from '@/services/sms/CustomfieldsApi'
import { CompartmentApi } from '@/services/cv/CompartmentApi'
import { DeviceTypeApi } from '@/services/cv/DeviceTypeApi'
......@@ -59,7 +59,7 @@ export class Api {
private readonly _platformApi: PlatformApi
private readonly _configurationApi: ConfigurationApi
private readonly _configurationStatesApi: ConfigurationStatusApi
private readonly _customFieldsApi: CustomFieldsApi
private readonly _customfieldsApi: CustomfieldsApi
private readonly _manufacturerApi: ManufacturerApi
private readonly _platformTypeApi: PlatformTypeApi
......@@ -101,7 +101,7 @@ export class Api {
)
this._configurationStatesApi = new ConfigurationStatusApi()
this._customFieldsApi = new CustomFieldsApi(
this._customfieldsApi = new CustomfieldsApi(
this.createAxios(smsBaseUrl, '/customfields', smsConfig, getIdToken)
)
......@@ -185,8 +185,8 @@ export class Api {
return this._configurationStatesApi
}
get customFields (): CustomFieldsApi {
return this._customFieldsApi
get customfields (): CustomfieldsApi {
return this._customfieldsApi
}
get contacts (): ContactApi {
......
......@@ -29,12 +29,12 @@
* implied. See the Licence for the specific language governing
* permissions and limitations under the Licence.
*/
import { AxiosInstance, Method } from 'axios'
import { AxiosInstance } from 'axios'
import { CustomTextField } from '@/models/CustomTextField'
import { CustomTextFieldSerializer } from '@/serializers/jsonapi/CustomTextFieldSerializer'
export class CustomFieldsApi {
export class CustomfieldsApi {
private axiosApi: AxiosInstance
private serializer: CustomTextFieldSerializer
......@@ -45,9 +45,7 @@ export class CustomFieldsApi {
findById (id: string): Promise<CustomTextField> {
return this.axiosApi.get(id, {
params: {
include: 'contacts'
}
// params: {}
}).then((rawResponse) => {
const rawData = rawResponse.data
return this.serializer.convertJsonApiObjectToModel(rawData)
......@@ -59,31 +57,21 @@ export class CustomFieldsApi {
}
add (deviceId: string, field: CustomTextField) {
const url = ''
const data: any = this.serializer.convertModelToJsonApiData(field, deviceId)
return this.axiosApi.post(url, { data })
}
save (deviceId: string, field: CustomTextField) {
const data: any = this.serializer.convertModelToJsonApiData(field)
let method: Method = 'patch'
let url = deviceId + '/customfields'
if (field.id === null) {
// new -> post
method = 'post'
} else {
// old -> patch
url += '/' + String(field.id)
}
console.log(data)
return this.axiosApi.request({
url,
method,
data: {
data
update (deviceId: string, field: CustomTextField) {
return new Promise<string>((resolve, reject) => {
if (field.id) {
resolve(field.id)
} else {
reject(new Error('no id for the CustomTextField'))
}
}).then((rawServerResponse) => {
console.log(rawServerResponse)
}).then((fieldId) => {
const data: any = this.serializer.convertModelToJsonApiData(field, deviceId)
return this.axiosApi.patch(fieldId, { data })
})
}
}
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