avvir 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avvir_api.node.js +39 -19
- package/dist/esm/api/scan_dataset_api.d.ts +11 -5
- package/dist/esm/api/scan_dataset_api.js +21 -15
- package/dist/esm/api/scan_dataset_api.js.map +1 -1
- package/dist/esm/models/api/api_scan_dataset.d.ts +13 -3
- package/dist/esm/models/api/api_scan_dataset.js +15 -3
- package/dist/esm/models/api/api_scan_dataset.js.map +1 -1
- package/package.json +1 -1
- package/source/api/scan_dataset_api.ts +37 -27
- package/source/models/api/api_scan_dataset.ts +17 -4
package/dist/avvir_api.node.js
CHANGED
|
@@ -1199,35 +1199,42 @@ var ScanDatasetApi = /** @class */ (function () {
|
|
|
1199
1199
|
var url = _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"].baseUrl() + "/projects/" + projectId + "/floors/" + floorId + "/scan-datasets";
|
|
1200
1200
|
return _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"].get(url, user);
|
|
1201
1201
|
};
|
|
1202
|
-
ScanDatasetApi.
|
|
1202
|
+
ScanDatasetApi.createScanDataset = function (_a, scanDate, user) {
|
|
1203
|
+
var projectId = _a.projectId, floorId = _a.floorId;
|
|
1204
|
+
var url = _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"].baseUrl() + "/projects/" + projectId + "/floors/" + floorId + "/scan-datasets?scanDate=" + _converters__WEBPACK_IMPORTED_MODULE_2__.DateConverter.dateToISO(scanDate);
|
|
1205
|
+
return _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"].post(url, user, null);
|
|
1206
|
+
};
|
|
1207
|
+
ScanDatasetApi.deleteScanDataset = function (_a, user) {
|
|
1203
1208
|
var projectId = _a.projectId, floorId = _a.floorId, scanDatasetId = _a.scanDatasetId;
|
|
1204
1209
|
var url = _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"].baseUrl() + "/projects/" + projectId + "/floors/" + floorId + "/scan-datasets/" + scanDatasetId;
|
|
1205
|
-
return _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"]
|
|
1210
|
+
return _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"]["delete"](url, user);
|
|
1206
1211
|
};
|
|
1207
|
-
|
|
1212
|
+
;
|
|
1208
1213
|
ScanDatasetApi.updateScanDataset = function (_a, scanDataset, user) {
|
|
1209
1214
|
var projectId = _a.projectId, floorId = _a.floorId, scanDatasetId = _a.scanDatasetId;
|
|
1210
|
-
|
|
1215
|
+
var url = _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"].baseUrl() + "/projects/" + projectId + "/floors/" + floorId + "/scan-datasets/" + scanDatasetId;
|
|
1216
|
+
return _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"].patch(url, user, scanDataset);
|
|
1217
|
+
};
|
|
1218
|
+
/**
|
|
1219
|
+
* @deprecated use updateScanDataset instead, this is an alias
|
|
1220
|
+
*/
|
|
1221
|
+
ScanDatasetApi.mergeScanDataset = function (_a, scanDataset, user) {
|
|
1222
|
+
var projectId = _a.projectId, floorId = _a.floorId, scanDatasetId = _a.scanDatasetId;
|
|
1223
|
+
return this.updateScanDataset({ projectId: projectId, floorId: floorId, scanDatasetId: scanDatasetId }, scanDataset, user);
|
|
1211
1224
|
};
|
|
1225
|
+
/**
|
|
1226
|
+
* @deprecated use updateScanDataset instead, it does the exact same thing on the back end
|
|
1227
|
+
*/
|
|
1212
1228
|
ScanDatasetApi.replaceScanDataset = function (_a, scanDataset, user) {
|
|
1213
1229
|
var projectId = _a.projectId, floorId = _a.floorId, scanDatasetId = _a.scanDatasetId;
|
|
1214
1230
|
var url = _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"].baseUrl() + "/projects/" + projectId + "/floors/" + floorId + "/scan-datasets/" + scanDatasetId;
|
|
1215
1231
|
return _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"].put(url, user, scanDataset);
|
|
1216
1232
|
};
|
|
1217
|
-
ScanDatasetApi.
|
|
1218
|
-
var projectId = _a.projectId, floorId = _a.floorId, scanDate = _a.scanDate;
|
|
1219
|
-
var url = _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"].baseUrl() + "/projects/" + projectId + "/floors/" + floorId + "/scan-datasets";
|
|
1220
|
-
if (scanDate) {
|
|
1221
|
-
url += "?scanDate=" + _converters__WEBPACK_IMPORTED_MODULE_2__.DateConverter.dateToISO(scanDate);
|
|
1222
|
-
}
|
|
1223
|
-
return _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"].post(url, user, null);
|
|
1224
|
-
};
|
|
1225
|
-
ScanDatasetApi.deleteScanDataset = function (_a, user) {
|
|
1233
|
+
ScanDatasetApi.updateQaState = function (_a, qaState, user) {
|
|
1226
1234
|
var projectId = _a.projectId, floorId = _a.floorId, scanDatasetId = _a.scanDatasetId;
|
|
1227
|
-
var url = _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"].baseUrl() + "/projects/" + projectId + "/floors/" + floorId + "/scan-datasets/" + scanDatasetId;
|
|
1228
|
-
return _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"]
|
|
1235
|
+
var url = _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"].baseUrl() + "/projects/" + projectId + "/floors/" + floorId + "/scan-datasets/" + scanDatasetId + "/qa-state";
|
|
1236
|
+
return _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"].post(url, user, qaState);
|
|
1229
1237
|
};
|
|
1230
|
-
;
|
|
1231
1238
|
ScanDatasetApi.saveScanAnalysis = function (_a, analysis, user) {
|
|
1232
1239
|
var projectId = _a.projectId, floorId = _a.floorId, scanDatasetId = _a.scanDatasetId;
|
|
1233
1240
|
var url = _utilities_http__WEBPACK_IMPORTED_MODULE_0__["default"].baseUrl() + "/projects/" + projectId + "/floors/" + floorId + "/scan-datasets/" + scanDatasetId + "/analysis?enforceBuiltPersistence=false";
|
|
@@ -4616,6 +4623,7 @@ var ApiRunningProcess = /** @class */ (function () {
|
|
|
4616
4623
|
"use strict";
|
|
4617
4624
|
__webpack_require__.r(__webpack_exports__);
|
|
4618
4625
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4626
|
+
/* harmony export */ "ApiScanDatasetQaState": () => (/* binding */ ApiScanDatasetQaState),
|
|
4619
4627
|
/* harmony export */ "ApiScanDataset": () => (/* binding */ ApiScanDataset),
|
|
4620
4628
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
4621
4629
|
/* harmony export */ });
|
|
@@ -4628,9 +4636,15 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4628
4636
|
|
|
4629
4637
|
|
|
4630
4638
|
|
|
4639
|
+
var ApiScanDatasetQaState;
|
|
4640
|
+
(function (ApiScanDatasetQaState) {
|
|
4641
|
+
ApiScanDatasetQaState["NOT_STARTED"] = "NOT_STARTED";
|
|
4642
|
+
ApiScanDatasetQaState["STARTED"] = "STARTED";
|
|
4643
|
+
ApiScanDatasetQaState["COMPLETED"] = "COMPLETED";
|
|
4644
|
+
})(ApiScanDatasetQaState || (ApiScanDatasetQaState = {}));
|
|
4631
4645
|
var ApiScanDataset = /** @class */ (function () {
|
|
4632
4646
|
function ApiScanDataset(_a) {
|
|
4633
|
-
var id = _a.id, firebaseId = _a.firebaseId, firebaseFloorId = _a.firebaseFloorId, scanNumber = _a.scanNumber, dataPresences = _a.dataPresences, analysisCompleted = _a.analysisCompleted, manualQcPresent = _a.manualQcPresent, notes = _a.notes, name = _a.name, coarseAlignmentMatrix = _a.coarseAlignmentMatrix, fineAlignmentMatrix = _a.fineAlignmentMatrix, scanDate = _a.scanDate, scanDateString = _a.scanDateString, qaStarted = _a.qaStarted, qaComplete = _a.qaComplete;
|
|
4647
|
+
var id = _a.id, firebaseId = _a.firebaseId, firebaseFloorId = _a.firebaseFloorId, scanNumber = _a.scanNumber, dataPresences = _a.dataPresences, analysisCompleted = _a.analysisCompleted, manualQcPresent = _a.manualQcPresent, notes = _a.notes, name = _a.name, coarseAlignmentMatrix = _a.coarseAlignmentMatrix, fineAlignmentMatrix = _a.fineAlignmentMatrix, scanDate = _a.scanDate, scanDateString = _a.scanDateString, qaStarted = _a.qaStarted, qaComplete = _a.qaComplete, qaState = _a.qaState;
|
|
4634
4648
|
/**
|
|
4635
4649
|
* Date that the dataset was captured.
|
|
4636
4650
|
*/
|
|
@@ -4643,8 +4657,13 @@ var ApiScanDataset = /** @class */ (function () {
|
|
|
4643
4657
|
this.fineAlignmentMatrix = null;
|
|
4644
4658
|
this.notes = null;
|
|
4645
4659
|
this.name = null;
|
|
4646
|
-
this.qaComplete = null;
|
|
4647
4660
|
this.qaStarted = null;
|
|
4661
|
+
this.qaComplete = null;
|
|
4662
|
+
/**
|
|
4663
|
+
* current QA/QC state based on qaStarted/qaComplete, calculated by the
|
|
4664
|
+
* gateway so the frontend doesn't need to replicate business logic
|
|
4665
|
+
*/
|
|
4666
|
+
this.qaState = null;
|
|
4648
4667
|
(0,_mixins_add_instant_getter_and_setter_to_api_model__WEBPACK_IMPORTED_MODULE_1__["default"])(this, "scanDate");
|
|
4649
4668
|
(0,_mixins_add_read_only_properties_to_model__WEBPACK_IMPORTED_MODULE_3__["default"])(this, { id: id, firebaseId: firebaseId, firebaseFloorId: firebaseFloorId, scanNumber: scanNumber });
|
|
4650
4669
|
var coarseAlignmentMatrixVal, fineAlignmentMatrixVal;
|
|
@@ -4698,8 +4717,9 @@ var ApiScanDataset = /** @class */ (function () {
|
|
|
4698
4717
|
this.scanDateString = scanDateString;
|
|
4699
4718
|
this.analysisCompleted = analysisCompleted;
|
|
4700
4719
|
this.manualQcPresent = manualQcPresent;
|
|
4701
|
-
this.qaComplete = qaComplete;
|
|
4702
4720
|
this.qaStarted = qaStarted;
|
|
4721
|
+
this.qaComplete = qaComplete;
|
|
4722
|
+
this.qaState = qaState;
|
|
4703
4723
|
}
|
|
4704
4724
|
return ApiScanDataset;
|
|
4705
4725
|
}());
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { User } from "../utilities/get_authorization_headers";
|
|
2
2
|
import { ApiBuiltStatus, ApiDetailedElement, ApiPhotoSession, ApiScanDataset, ApiScannedElementType, AssociationIds, DateLike } from "../models";
|
|
3
3
|
import ApiView, { ViewParameter } from "../models/api/api_view";
|
|
4
|
+
import { ApiScanDatasetQaState } from "../models/api/api_scan_dataset";
|
|
4
5
|
export default class ScanDatasetApi {
|
|
5
6
|
static listScanDatasetsForFloor({ projectId, floorId }: AssociationIds, user: User): Promise<ApiScanDataset[]>;
|
|
6
|
-
static
|
|
7
|
+
static createScanDataset({ projectId, floorId }: AssociationIds, scanDate: DateLike, user: User): Promise<void>;
|
|
8
|
+
static deleteScanDataset({ projectId, floorId, scanDatasetId }: AssociationIds, user: User): Promise<void>;
|
|
7
9
|
static updateScanDataset({ projectId, floorId, scanDatasetId }: AssociationIds, scanDataset: ApiScanDataset, user: User): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* @deprecated use updateScanDataset instead, this is an alias
|
|
12
|
+
*/
|
|
13
|
+
static mergeScanDataset({ projectId, floorId, scanDatasetId }: AssociationIds, scanDataset: ApiScanDataset, user: User): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated use updateScanDataset instead, it does the exact same thing on the back end
|
|
16
|
+
*/
|
|
8
17
|
static replaceScanDataset({ projectId, floorId, scanDatasetId }: AssociationIds, scanDataset: ApiScanDataset, user: User): Promise<void>;
|
|
9
|
-
static
|
|
10
|
-
scanDate?: DateLike;
|
|
11
|
-
}, user: User): Promise<ApiScanDataset>;
|
|
12
|
-
static deleteScanDataset({ projectId, floorId, scanDatasetId }: AssociationIds, user: User): Promise<void>;
|
|
18
|
+
static updateQaState({ projectId, floorId, scanDatasetId }: AssociationIds, qaState: ApiScanDatasetQaState, user: User): Promise<void>;
|
|
13
19
|
static saveScanAnalysis({ projectId, floorId, scanDatasetId }: AssociationIds, analysis: ApiScannedElementType<ApiBuiltStatus>[], user: User): Promise<void>;
|
|
14
20
|
static getScanDataset({ projectId, floorId, scanDatasetId }: AssociationIds, user: User): Promise<ApiScanDataset>;
|
|
15
21
|
static getViewerDetailedElementsForScanDataset({ projectId, floorId, scanDatasetId }: AssociationIds, user: User): Promise<ApiDetailedElement[]>;
|
|
@@ -6,30 +6,36 @@ export default class ScanDatasetApi {
|
|
|
6
6
|
let url = `${Http.baseUrl()}/projects/${projectId}/floors/${floorId}/scan-datasets`;
|
|
7
7
|
return Http.get(url, user);
|
|
8
8
|
}
|
|
9
|
-
static
|
|
9
|
+
static createScanDataset({ projectId, floorId }, scanDate, user) {
|
|
10
|
+
let url = `${Http.baseUrl()}/projects/${projectId}/floors/${floorId}/scan-datasets?scanDate=${DateConverter.dateToISO(scanDate)}`;
|
|
11
|
+
return Http.post(url, user, null);
|
|
12
|
+
}
|
|
13
|
+
static deleteScanDataset({ projectId, floorId, scanDatasetId }, user) {
|
|
14
|
+
let url = `${Http.baseUrl()}/projects/${projectId}/floors/${floorId}/scan-datasets/${scanDatasetId}`;
|
|
15
|
+
return Http.delete(url, user);
|
|
16
|
+
}
|
|
17
|
+
;
|
|
18
|
+
static updateScanDataset({ projectId, floorId, scanDatasetId }, scanDataset, user) {
|
|
10
19
|
const url = `${Http.baseUrl()}/projects/${projectId}/floors/${floorId}/scan-datasets/${scanDatasetId}`;
|
|
11
20
|
return Http.patch(url, user, scanDataset);
|
|
12
21
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
22
|
+
/**
|
|
23
|
+
* @deprecated use updateScanDataset instead, this is an alias
|
|
24
|
+
*/
|
|
25
|
+
static mergeScanDataset({ projectId, floorId, scanDatasetId }, scanDataset, user) {
|
|
26
|
+
return this.updateScanDataset({ projectId, floorId, scanDatasetId }, scanDataset, user);
|
|
16
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* @deprecated use updateScanDataset instead, it does the exact same thing on the back end
|
|
30
|
+
*/
|
|
17
31
|
static replaceScanDataset({ projectId, floorId, scanDatasetId }, scanDataset, user) {
|
|
18
32
|
const url = `${Http.baseUrl()}/projects/${projectId}/floors/${floorId}/scan-datasets/${scanDatasetId}`;
|
|
19
33
|
return Http.put(url, user, scanDataset);
|
|
20
34
|
}
|
|
21
|
-
static
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
url += `?scanDate=${DateConverter.dateToISO(scanDate)}`;
|
|
25
|
-
}
|
|
26
|
-
return Http.post(url, user, null);
|
|
35
|
+
static updateQaState({ projectId, floorId, scanDatasetId }, qaState, user) {
|
|
36
|
+
const url = `${Http.baseUrl()}/projects/${projectId}/floors/${floorId}/scan-datasets/${scanDatasetId}/qa-state`;
|
|
37
|
+
return Http.post(url, user, qaState);
|
|
27
38
|
}
|
|
28
|
-
static deleteScanDataset({ projectId, floorId, scanDatasetId }, user) {
|
|
29
|
-
let url = `${Http.baseUrl()}/projects/${projectId}/floors/${floorId}/scan-datasets/${scanDatasetId}`;
|
|
30
|
-
return Http.delete(url, user);
|
|
31
|
-
}
|
|
32
|
-
;
|
|
33
39
|
static saveScanAnalysis({ projectId, floorId, scanDatasetId }, analysis, user) {
|
|
34
40
|
const url = `${Http.baseUrl()}/projects/${projectId}/floors/${floorId}/scan-datasets/${scanDatasetId}/analysis?enforceBuiltPersistence=false`;
|
|
35
41
|
return Http.post(url, user, analysis);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan_dataset_api.js","sourceRoot":"","sources":["../../../source/api/scan_dataset_api.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,gBAAgB,MAAM,iCAAiC,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"scan_dataset_api.js","sourceRoot":"","sources":["../../../source/api/scan_dataset_api.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,13 @@ export interface ApiScanDatasetArgument extends Partial<Modify<ApiScanDataset, {
|
|
|
8
8
|
scanDateString?: string;
|
|
9
9
|
}>> {
|
|
10
10
|
}
|
|
11
|
+
export declare enum ApiScanDatasetQaState {
|
|
12
|
+
NOT_STARTED = "NOT_STARTED",
|
|
13
|
+
STARTED = "STARTED",
|
|
14
|
+
COMPLETED = "COMPLETED"
|
|
15
|
+
}
|
|
11
16
|
export declare class ApiScanDataset {
|
|
12
|
-
constructor({ id, firebaseId, firebaseFloorId, scanNumber, dataPresences, analysisCompleted, manualQcPresent, notes, name, coarseAlignmentMatrix, fineAlignmentMatrix, scanDate, scanDateString, qaStarted, qaComplete }: ApiScanDatasetArgument);
|
|
17
|
+
constructor({ id, firebaseId, firebaseFloorId, scanNumber, dataPresences, analysisCompleted, manualQcPresent, notes, name, coarseAlignmentMatrix, fineAlignmentMatrix, scanDate, scanDateString, qaStarted, qaComplete, qaState, }: ApiScanDatasetArgument);
|
|
13
18
|
/**
|
|
14
19
|
* Internal identifier, not used in URLs.
|
|
15
20
|
*/
|
|
@@ -43,7 +48,12 @@ export declare class ApiScanDataset {
|
|
|
43
48
|
};
|
|
44
49
|
notes: string | null;
|
|
45
50
|
name: string | null;
|
|
46
|
-
|
|
47
|
-
|
|
51
|
+
readonly qaStarted: Date | null;
|
|
52
|
+
readonly qaComplete: Date | null;
|
|
53
|
+
/**
|
|
54
|
+
* current QA/QC state based on qaStarted/qaComplete, calculated by the
|
|
55
|
+
* gateway so the frontend doesn't need to replicate business logic
|
|
56
|
+
*/
|
|
57
|
+
readonly qaState: ApiScanDatasetQaState;
|
|
48
58
|
}
|
|
49
59
|
export default ApiScanDataset;
|
|
@@ -2,8 +2,14 @@ import { Matrix4 } from "three";
|
|
|
2
2
|
import addInstantGetterAndSetterToApiModel from "../../mixins/add_instant_getter_and_setter_to_api_model";
|
|
3
3
|
import addReadOnlyPropertiesToModel from "../../mixins/add_read_only_properties_to_model";
|
|
4
4
|
import Matrix4Converter from "../../converters/matrix_4_converter";
|
|
5
|
+
export var ApiScanDatasetQaState;
|
|
6
|
+
(function (ApiScanDatasetQaState) {
|
|
7
|
+
ApiScanDatasetQaState["NOT_STARTED"] = "NOT_STARTED";
|
|
8
|
+
ApiScanDatasetQaState["STARTED"] = "STARTED";
|
|
9
|
+
ApiScanDatasetQaState["COMPLETED"] = "COMPLETED";
|
|
10
|
+
})(ApiScanDatasetQaState || (ApiScanDatasetQaState = {}));
|
|
5
11
|
export class ApiScanDataset {
|
|
6
|
-
constructor({ id, firebaseId, firebaseFloorId, scanNumber, dataPresences, analysisCompleted, manualQcPresent, notes, name, coarseAlignmentMatrix, fineAlignmentMatrix, scanDate, scanDateString, qaStarted, qaComplete }) {
|
|
12
|
+
constructor({ id, firebaseId, firebaseFloorId, scanNumber, dataPresences, analysisCompleted, manualQcPresent, notes, name, coarseAlignmentMatrix, fineAlignmentMatrix, scanDate, scanDateString, qaStarted, qaComplete, qaState, }) {
|
|
7
13
|
/**
|
|
8
14
|
* Date that the dataset was captured.
|
|
9
15
|
*/
|
|
@@ -16,8 +22,13 @@ export class ApiScanDataset {
|
|
|
16
22
|
this.fineAlignmentMatrix = null;
|
|
17
23
|
this.notes = null;
|
|
18
24
|
this.name = null;
|
|
19
|
-
this.qaComplete = null;
|
|
20
25
|
this.qaStarted = null;
|
|
26
|
+
this.qaComplete = null;
|
|
27
|
+
/**
|
|
28
|
+
* current QA/QC state based on qaStarted/qaComplete, calculated by the
|
|
29
|
+
* gateway so the frontend doesn't need to replicate business logic
|
|
30
|
+
*/
|
|
31
|
+
this.qaState = null;
|
|
21
32
|
addInstantGetterAndSetterToApiModel(this, "scanDate");
|
|
22
33
|
addReadOnlyPropertiesToModel(this, { id, firebaseId, firebaseFloorId, scanNumber });
|
|
23
34
|
let coarseAlignmentMatrixVal, fineAlignmentMatrixVal;
|
|
@@ -71,8 +82,9 @@ export class ApiScanDataset {
|
|
|
71
82
|
this.scanDateString = scanDateString;
|
|
72
83
|
this.analysisCompleted = analysisCompleted;
|
|
73
84
|
this.manualQcPresent = manualQcPresent;
|
|
74
|
-
this.qaComplete = qaComplete;
|
|
75
85
|
this.qaStarted = qaStarted;
|
|
86
|
+
this.qaComplete = qaComplete;
|
|
87
|
+
this.qaState = qaState;
|
|
76
88
|
}
|
|
77
89
|
}
|
|
78
90
|
export default ApiScanDataset;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api_scan_dataset.js","sourceRoot":"","sources":["../../../../source/models/api/api_scan_dataset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,mCAAmC,MAAM,yDAAyD,CAAC;AAC1G,OAAO,4BAA4B,MAAM,gDAAgD,CAAC;AAE1F,OAAO,gBAAgB,MAAM,qCAAqC,CAAC;AAUnE,MAAM,OAAO,cAAc;IACzB,YAAY,EACV,EAAE,EACF,UAAU,EACV,eAAe,EACf,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,KAAK,EACL,IAAI,EACJ,qBAAqB,EACrB,mBAAmB,EACnB,QAAQ,EACR,cAAc,EACd,SAAS,EACT,UAAU,
|
|
1
|
+
{"version":3,"file":"api_scan_dataset.js","sourceRoot":"","sources":["../../../../source/models/api/api_scan_dataset.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -4,6 +4,7 @@ import Http from "../utilities/http";
|
|
|
4
4
|
import makeErrorsPretty from "../utilities/make_errors_pretty";
|
|
5
5
|
import ApiView, { ViewParameter } from "../models/api/api_view";
|
|
6
6
|
import { DateConverter } from "../converters";
|
|
7
|
+
import {ApiScanDatasetQaState} from "../models/api/api_scan_dataset";
|
|
7
8
|
|
|
8
9
|
export default class ScanDatasetApi {
|
|
9
10
|
static listScanDatasetsForFloor({ projectId, floorId }: AssociationIds, user: User): Promise<ApiScanDataset[]> {
|
|
@@ -11,24 +12,42 @@ export default class ScanDatasetApi {
|
|
|
11
12
|
return Http.get(url, user) as unknown as Promise<ApiScanDataset[]>;
|
|
12
13
|
}
|
|
13
14
|
|
|
14
|
-
static
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return Http.patch(url, user, scanDataset) as unknown as Promise<void>;
|
|
15
|
+
static createScanDataset({
|
|
16
|
+
projectId,
|
|
17
|
+
floorId
|
|
18
|
+
}: AssociationIds, scanDate: DateLike, user: User): Promise<void> {
|
|
19
|
+
let url = `${Http.baseUrl()}/projects/${projectId}/floors/${floorId}/scan-datasets?scanDate=${DateConverter.dateToISO(scanDate)}`;
|
|
20
|
+
return Http.post(url, user, null) as unknown as Promise<void>;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
static deleteScanDataset({ projectId, floorId, scanDatasetId }: AssociationIds, user: User): Promise<void> {
|
|
24
|
+
let url = `${Http.baseUrl()}/projects/${projectId}/floors/${floorId}/scan-datasets/${scanDatasetId}`;
|
|
25
|
+
return Http.delete(url, user) as unknown as Promise<void>;
|
|
26
|
+
};
|
|
27
|
+
|
|
24
28
|
static updateScanDataset({
|
|
25
29
|
projectId,
|
|
26
30
|
floorId,
|
|
27
31
|
scanDatasetId
|
|
28
32
|
}: AssociationIds, scanDataset: ApiScanDataset, user: User): Promise<void> {
|
|
29
|
-
|
|
33
|
+
const url = `${Http.baseUrl()}/projects/${projectId}/floors/${floorId}/scan-datasets/${scanDatasetId}`;
|
|
34
|
+
return Http.patch(url, user, scanDataset) as unknown as Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated use updateScanDataset instead, this is an alias
|
|
39
|
+
*/
|
|
40
|
+
static mergeScanDataset({
|
|
41
|
+
projectId,
|
|
42
|
+
floorId,
|
|
43
|
+
scanDatasetId
|
|
44
|
+
}: AssociationIds, scanDataset: ApiScanDataset, user: User): Promise<void> {
|
|
45
|
+
return this.updateScanDataset({ projectId, floorId, scanDatasetId }, scanDataset, user);
|
|
30
46
|
}
|
|
31
47
|
|
|
48
|
+
/**
|
|
49
|
+
* @deprecated use updateScanDataset instead, it does the exact same thing on the back end
|
|
50
|
+
*/
|
|
32
51
|
static replaceScanDataset({
|
|
33
52
|
projectId,
|
|
34
53
|
floorId,
|
|
@@ -38,30 +57,21 @@ export default class ScanDatasetApi {
|
|
|
38
57
|
return Http.put(url, user, scanDataset) as unknown as Promise<void>;
|
|
39
58
|
}
|
|
40
59
|
|
|
41
|
-
static
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
let url = `${Http.baseUrl()}/projects/${projectId}/floors/${floorId}/scan-datasets`;
|
|
47
|
-
if (scanDate) {
|
|
48
|
-
url += `?scanDate=${DateConverter.dateToISO(scanDate)}`;
|
|
49
|
-
}
|
|
50
|
-
return Http.post(url, user, null) as unknown as Promise<ApiScanDataset>;
|
|
51
|
-
}
|
|
60
|
+
static updateQaState({
|
|
61
|
+
projectId,
|
|
62
|
+
floorId,
|
|
63
|
+
scanDatasetId
|
|
64
|
+
}: AssociationIds, qaState: ApiScanDatasetQaState, user: User): Promise<void> {
|
|
52
65
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
};
|
|
66
|
+
const url = `${Http.baseUrl()}/projects/${projectId}/floors/${floorId}/scan-datasets/${scanDatasetId}/qa-state`;
|
|
67
|
+
return Http.post(url, user, qaState) as unknown as Promise<void>;
|
|
68
|
+
}
|
|
57
69
|
|
|
58
70
|
static saveScanAnalysis({
|
|
59
71
|
projectId,
|
|
60
72
|
floorId,
|
|
61
73
|
scanDatasetId
|
|
62
|
-
}: AssociationIds,
|
|
63
|
-
analysis: ApiScannedElementType<ApiBuiltStatus>[],
|
|
64
|
-
user: User): Promise<void> {
|
|
74
|
+
}: AssociationIds, analysis: ApiScannedElementType<ApiBuiltStatus>[], user: User): Promise<void> {
|
|
65
75
|
const url = `${Http.baseUrl()}/projects/${projectId}/floors/${floorId}/scan-datasets/${scanDatasetId}/analysis?enforceBuiltPersistence=false`;
|
|
66
76
|
return Http.post(url, user, analysis) as unknown as Promise<void>;
|
|
67
77
|
}
|
|
@@ -12,6 +12,12 @@ export interface ApiScanDatasetArgument extends Partial<Modify<ApiScanDataset, {
|
|
|
12
12
|
scanDateString?: string,
|
|
13
13
|
}>> {}
|
|
14
14
|
|
|
15
|
+
export enum ApiScanDatasetQaState {
|
|
16
|
+
NOT_STARTED = "NOT_STARTED",
|
|
17
|
+
STARTED = "STARTED",
|
|
18
|
+
COMPLETED = "COMPLETED",
|
|
19
|
+
}
|
|
20
|
+
|
|
15
21
|
export class ApiScanDataset {
|
|
16
22
|
constructor({
|
|
17
23
|
id,
|
|
@@ -28,7 +34,8 @@ export class ApiScanDataset {
|
|
|
28
34
|
scanDate,
|
|
29
35
|
scanDateString,
|
|
30
36
|
qaStarted,
|
|
31
|
-
qaComplete
|
|
37
|
+
qaComplete,
|
|
38
|
+
qaState,
|
|
32
39
|
}: ApiScanDatasetArgument) {
|
|
33
40
|
addInstantGetterAndSetterToApiModel(this, "scanDate");
|
|
34
41
|
addReadOnlyPropertiesToModel(this, { id, firebaseId, firebaseFloorId, scanNumber });
|
|
@@ -79,8 +86,9 @@ export class ApiScanDataset {
|
|
|
79
86
|
this.scanDateString = scanDateString;
|
|
80
87
|
this.analysisCompleted = analysisCompleted;
|
|
81
88
|
this.manualQcPresent = manualQcPresent;
|
|
82
|
-
this.qaComplete = qaComplete;
|
|
83
89
|
this.qaStarted = qaStarted;
|
|
90
|
+
this.qaComplete = qaComplete;
|
|
91
|
+
this.qaState = qaState;
|
|
84
92
|
}
|
|
85
93
|
|
|
86
94
|
/**
|
|
@@ -119,8 +127,13 @@ export class ApiScanDataset {
|
|
|
119
127
|
dataPresences?: { scanAnalysis?: boolean };
|
|
120
128
|
notes: string | null = null;
|
|
121
129
|
name: string | null = null;
|
|
122
|
-
|
|
123
|
-
|
|
130
|
+
readonly qaStarted: Date | null = null;
|
|
131
|
+
readonly qaComplete: Date | null = null;
|
|
132
|
+
/**
|
|
133
|
+
* current QA/QC state based on qaStarted/qaComplete, calculated by the
|
|
134
|
+
* gateway so the frontend doesn't need to replicate business logic
|
|
135
|
+
*/
|
|
136
|
+
readonly qaState: ApiScanDatasetQaState = null;
|
|
124
137
|
}
|
|
125
138
|
|
|
126
139
|
export default ApiScanDataset;
|