diff --git a/web/src/components/measure-config/measure-config-form.ts b/web/src/components/measure-config/measure-config-form.ts index ad50aab..71c416c 100644 --- a/web/src/components/measure-config/measure-config-form.ts +++ b/web/src/components/measure-config/measure-config-form.ts @@ -12,7 +12,7 @@ import moment from 'moment'; export class MeasureConfigForm extends Vue { @Prop({}) public value!: MeasureConfig; @Prop({}) public disabled: boolean = false; - @Prop({}) public measureExists: boolean = false; + @Prop({}) public measureExists!: boolean; public now = moment(); public formatStrings = [ @@ -47,6 +47,14 @@ export class MeasureConfigForm extends Vue { this.value.timestampDisplayFormat = this.selectedFormat; } } + + private mounted() { + if (this.formatStrings.includes(this.value.timestampDisplayFormat)) { + this.selectedFormat = this.value.timestampDisplayFormat; + } else { + this.selectedFormat = 'custom'; + } + } } export default MeasureConfigForm; diff --git a/web/src/services/pm-api-client.ts b/web/src/services/pm-api-client.ts index 97fff4d..144a054 100644 --- a/web/src/services/pm-api-client.ts +++ b/web/src/services/pm-api-client.ts @@ -136,7 +136,7 @@ export class PmApiClient { public async getMeasurements(measureSlug: string) : Promise<Array<Measurement<MeasurementMeta>>> { - const resp = await this.http.get(`/measure/${measureSlug}`); + const resp = await this.http.get(`/measurements/${measureSlug}`); return resp.data.map(this.fromMeasurementDTO); } @@ -146,7 +146,7 @@ export class PmApiClient { : Promise<Measurement<MeasurementMeta>> { const resp = await this.http.post( - `/measure/${measureSlug}`, + `/measurements/${measureSlug}`, this.toMeasurementDTO(measurement)); return this.fromMeasurementDTO(resp.data); } @@ -157,7 +157,7 @@ export class PmApiClient { : Promise<Measurement<MeasurementMeta>> { const resp = await this.http - .get(`/measure/${measureSlug}/${measurementId}`); + .get(`/measurements/${measureSlug}/${measurementId}`); return this.fromMeasurementDTO(resp.data); } @@ -167,7 +167,7 @@ export class PmApiClient { : Promise<Measurement<MeasurementMeta>> { const resp = await this.http.put( - `/measure/${measureSlug}/${measurement.id}`, + `/measurements/${measureSlug}/${measurement.id}`, this.toMeasurementDTO(measurement)); return this.fromMeasurementDTO(resp.data); } @@ -178,7 +178,7 @@ export class PmApiClient { : Promise<boolean> { const resp = await this.http - .delete(`/measure/${measureSlug}/${measurementId}`); + .delete(`/measurements/${measureSlug}/${measurementId}`); return true; } diff --git a/web/src/views/EditMeasure.vue b/web/src/views/EditMeasure.vue index 7dbb05f..35bbbea 100644 --- a/web/src/views/EditMeasure.vue +++ b/web/src/views/EditMeasure.vue @@ -1,5 +1,5 @@ <template> - <div id=edit-measure> + <div id=edit-measure v-if=measure> <div class=header> <h1>Edit Measure</h1> <h2>{{measure.name}}</h2> diff --git a/web/src/views/edit-measure.ts b/web/src/views/edit-measure.ts index 2e73001..adaae7e 100644 --- a/web/src/views/edit-measure.ts +++ b/web/src/views/edit-measure.ts @@ -18,7 +18,11 @@ export class EditMeasure extends Vue { } private get slugFromName() { - return slugify(this.measure.name); + if (this.measure) { + return slugify(this.measure.name); + } else { + return null; + } } private async updateMeasure() { @@ -38,6 +42,15 @@ export class EditMeasure extends Vue { } } } + + private async mounted() { + // good chance we've already fetched this + // TODO: centralize this caching behavior? + if (!this.measure) { + await measureStore.fetchMeasure(this.$route.params.slug); + } + } + } export default EditMeasure;