WIP Adding measure summary views.

This commit is contained in:
Jonathan Bernard
2019-04-06 00:04:54 -05:00
parent 622fed8e2a
commit 7a118bd8e8
15 changed files with 154 additions and 55 deletions

View File

@ -1,7 +1,7 @@
import { default as Axios, AxiosInstance } from 'axios';
import assign from 'lodash.assign';
import { ApiToken, LoginSubmit, Measure, MeasureConfig, Measurement, MeasurementMeta, User } from '@/models';
import { Logger, logService } from '@/services/logging';
import merge from 'lodash.merge';
export class PmApiClient {
private http: AxiosInstance;
@ -132,16 +132,18 @@ export class PmApiClient {
: Promise<Array<Measurement<MeasurementMeta>>> {
const resp = await this.http.get(`/measure/${measureSlug}`);
return resp.data;
return resp.data.map(this.fromMeasurementDTO);
}
public async createMeasurement<T extends MeasurementMeta>(
public async createMeasurement(
measureSlug: string,
measurement: Measurement<MeasureConfig>)
: Promise<Measurement<T>> {
measurement: Measurement<MeasurementMeta>)
: Promise<Measurement<MeasurementMeta>> {
const resp = await this.http.post(`/measure/${measureSlug}`, measurement);
return resp.data;
const resp = await this.http.post(
`/measure/${measureSlug}`,
this.toMeasurementDTO(measurement));
return this.fromMeasurementDTO(resp.data);
}
public async getMeasurement(
@ -151,7 +153,7 @@ export class PmApiClient {
const resp = await this.http
.get(`/measure/${measureSlug}/${measurementId}`);
return resp.data;
return this.fromMeasurementDTO(resp.data);
}
public async updateMeasurement(
@ -159,9 +161,10 @@ export class PmApiClient {
measurement: Measurement<MeasurementMeta>)
: Promise<Measurement<MeasurementMeta>> {
const resp = await this.http
.put(`/measure/${measureSlug}/${measurement.id}`, measurement);
return resp.data;
const resp = await this.http.put(
`/measure/${measureSlug}/${measurement.id}`,
this.toMeasurementDTO(measurement));
return this.fromMeasurementDTO(resp.data);
}
public async deleteMeasurement(
@ -173,6 +176,15 @@ export class PmApiClient {
.delete(`/measure/${measureSlug}/${measurementId}`);
return true;
}
private fromMeasurementDTO(dto: any): Measurement<MeasurementMeta> {
return assign({}, dto, { timestamp: new Date(dto.timestamp) });
}
private toMeasurementDTO(measurement: Measurement<MeasurementMeta>): object {
return assign({}, measurement, { timestamp: measurement.timestamp.toISOString() });
}
}
export const api = new PmApiClient(process.env.VUE_APP_PM_API_BASE);