kuzzle-device-manager-types 2.7.2 → 2.8.0-beta.1
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/lib/modules/asset/AssetModule.d.ts +1 -0
- package/dist/lib/modules/asset/AssetService.d.ts +9 -1
- package/dist/lib/modules/asset/AssetsController.d.ts +7 -1
- package/dist/lib/modules/asset/AssetsGroupsController.d.ts +3 -1
- package/dist/lib/modules/asset/AssetsGroupsService.d.ts +47 -0
- package/dist/lib/modules/asset/types/AssetApi.d.ts +5 -1
- package/dist/lib/modules/asset/types/AssetGroupContent.d.ts +5 -3
- package/dist/lib/modules/measure/MeasureService.d.ts +4 -0
- package/dist/lib/modules/measure/types/MeasureDefinition.d.ts +4 -0
- package/dist/lib/modules/model/ModelService.d.ts +15 -4
- package/dist/lib/modules/model/ModelsConflicts.d.ts +9 -1
- package/dist/lib/modules/model/ModelsController.d.ts +6 -1
- package/dist/lib/modules/model/ModelsRegister.d.ts +18 -2
- package/dist/lib/modules/model/types/ModelApi.d.ts +49 -1
- package/dist/lib/modules/model/types/ModelContent.d.ts +131 -1
- package/dist/lib/modules/model/types/ModelDefinition.d.ts +106 -2
- package/dist/lib/modules/model/types/ModelEvents.d.ts +8 -1
- package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +18 -1
- package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +54 -1
- package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +7 -0
- package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +4 -0
- package/dist/lib/modules/shared/types/Models.d.ts +2 -1
- package/dist/tests/application/groups/Parking.d.ts +14 -0
- package/dist/tests/application/groups/index.d.ts +1 -0
- package/dist/tests/application/tests/controller.d.ts +1 -0
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import { JSONObject, KDocument, KHit, SearchResult, mReplaceResponse } from "kuz
|
|
|
3
3
|
import { DeviceManagerPlugin } from "../plugin";
|
|
4
4
|
import { DigitalTwinService, Metadata, SearchParams } from "../shared";
|
|
5
5
|
import { AssetHistoryService } from "./AssetHistoryService";
|
|
6
|
-
import { ApiAssetMigrateTenantResult } from "./types/AssetApi";
|
|
6
|
+
import { ApiAssetMigrateTenantResult, ApiAssetUpdateModelLocales } from "./types/AssetApi";
|
|
7
7
|
import { AssetContent } from "./types/AssetContent";
|
|
8
8
|
export declare class AssetService extends DigitalTwinService {
|
|
9
9
|
private assetHistoryService;
|
|
@@ -39,6 +39,14 @@ export declare class AssetService extends DigitalTwinService {
|
|
|
39
39
|
mReplaceAndHistorize(engineId: string, assets: KDocument<AssetContent>[], removedMetadata: string[], { refresh }: {
|
|
40
40
|
refresh: any;
|
|
41
41
|
}): Promise<mReplaceResponse>;
|
|
42
|
+
/**
|
|
43
|
+
* Retrieve locales with the specified model and search all assets related to the model to update the locales.
|
|
44
|
+
* The operation is historized.
|
|
45
|
+
* @param request
|
|
46
|
+
* @param engineGroup
|
|
47
|
+
* @param model
|
|
48
|
+
*/
|
|
49
|
+
updateModelLocales(request: KuzzleRequest, engineGroup: string, model: string): Promise<ApiAssetUpdateModelLocales[]>;
|
|
42
50
|
private getEngine;
|
|
43
51
|
private refreshModel;
|
|
44
52
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ControllerDefinition, KuzzleRequest } from "kuzzle";
|
|
2
2
|
import { DeviceManagerPlugin } from "../plugin";
|
|
3
3
|
import { AssetService } from "./AssetService";
|
|
4
|
-
import { ApiAssetCreateResult, ApiAssetUpsertResult, ApiAssetDeleteResult, ApiAssetGetMeasuresResult, ApiAssetGetResult, ApiAssetSearchResult, ApiAssetUpdateResult, ApiAssetMigrateTenantResult, ApiAssetMetadataReplaceResult, ApiAssetGetLastMeasuresResult, ApiAssetMGetLastMeasuredAtResult, ApiAssetMGetLastMeasuresResult, ApiAssetGetLastMeasuredAtResult } from "./types/AssetApi";
|
|
4
|
+
import { ApiAssetCreateResult, ApiAssetUpsertResult, ApiAssetDeleteResult, ApiAssetGetMeasuresResult, ApiAssetGetResult, ApiAssetSearchResult, ApiAssetUpdateResult, ApiAssetMigrateTenantResult, ApiAssetMetadataReplaceResult, ApiAssetGetLastMeasuresResult, ApiAssetMGetLastMeasuredAtResult, ApiAssetMGetLastMeasuresResult, ApiAssetGetLastMeasuredAtResult, ApiAssetUpdateModelLocales } from "./types/AssetApi";
|
|
5
5
|
export declare class AssetsController {
|
|
6
6
|
private plugin;
|
|
7
7
|
private assetService;
|
|
@@ -36,4 +36,10 @@ export declare class AssetsController {
|
|
|
36
36
|
migrateTenant(request: KuzzleRequest): Promise<ApiAssetMigrateTenantResult>;
|
|
37
37
|
getLastMeasuredAt(request: KuzzleRequest): Promise<ApiAssetGetLastMeasuredAtResult>;
|
|
38
38
|
mGetLastMeasuredAt(request: KuzzleRequest): Promise<ApiAssetMGetLastMeasuredAtResult>;
|
|
39
|
+
/**
|
|
40
|
+
* Update modelLocales of all assets related to the specified asset model.
|
|
41
|
+
* This operation is done to make the search assets feature up to date
|
|
42
|
+
* @param request
|
|
43
|
+
*/
|
|
44
|
+
updateModelLocales(request: KuzzleRequest): Promise<ApiAssetUpdateModelLocales[]>;
|
|
39
45
|
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { ControllerDefinition, KuzzleRequest } from "kuzzle";
|
|
2
2
|
import { DeviceManagerPlugin } from "../plugin";
|
|
3
3
|
import { ApiGroupAddAssetsResult, ApiGroupCreateResult, ApiGroupDeleteResult, ApiGroupGetResult, ApiGroupRemoveAssetsResult, ApiGroupSearchResult, ApiGroupUpdateResult, AssetsGroupsBodyRequest } from "./types/AssetGroupsApi";
|
|
4
|
+
import { AssetsGroupsService } from "./AssetsGroupsService";
|
|
4
5
|
export declare class AssetsGroupsController {
|
|
5
6
|
private plugin;
|
|
7
|
+
private assetsGroupsService;
|
|
6
8
|
definition: ControllerDefinition;
|
|
7
|
-
constructor(plugin: DeviceManagerPlugin);
|
|
9
|
+
constructor(plugin: DeviceManagerPlugin, assetsGroupsService: AssetsGroupsService);
|
|
8
10
|
private get sdk();
|
|
9
11
|
private get as();
|
|
10
12
|
checkParent(engineId: string, parent: AssetsGroupsBodyRequest["parent"]): Promise<void>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { JSONObject, KDocument } from "kuzzle-sdk";
|
|
2
|
+
import { DeviceManagerPlugin } from "../plugin";
|
|
3
|
+
import { BaseService, SearchParams } from "../shared";
|
|
4
|
+
import { KuzzleRequest } from "kuzzle";
|
|
5
|
+
import { AssetsGroupContent } from "./types/AssetGroupContent";
|
|
6
|
+
export declare class AssetsGroupsService extends BaseService {
|
|
7
|
+
constructor(plugin: DeviceManagerPlugin);
|
|
8
|
+
create(_id: string, engineId: string, metadata: JSONObject, model: string, name: string, parent: string | null, request: KuzzleRequest): Promise<KDocument<AssetsGroupContent>>;
|
|
9
|
+
get(engineId: string, _id: string, request: KuzzleRequest): Promise<KDocument<AssetsGroupContent>>;
|
|
10
|
+
update(request: KuzzleRequest, _id: string, engineId: string, updateContent: JSONObject): Promise<KDocument<AssetsGroupContent>>;
|
|
11
|
+
delete(_id: string, engineId: string, request: KuzzleRequest): Promise<{
|
|
12
|
+
_id: string;
|
|
13
|
+
}>;
|
|
14
|
+
search(engineId: string, searchParams: SearchParams, request: KuzzleRequest): Promise<import("kuzzle-sdk").SearchResult<import("kuzzle-sdk").KHit<AssetsGroupContent>>>;
|
|
15
|
+
addAsset(engineId: string, _id: string, assetIds: string[], request: KuzzleRequest): Promise<{
|
|
16
|
+
assetsGroups: KDocument<AssetsGroupContent>;
|
|
17
|
+
successes: {
|
|
18
|
+
_id: string;
|
|
19
|
+
_source: JSONObject;
|
|
20
|
+
_version: number;
|
|
21
|
+
}[];
|
|
22
|
+
errors: {
|
|
23
|
+
document: {
|
|
24
|
+
_id: string;
|
|
25
|
+
_source: JSONObject;
|
|
26
|
+
};
|
|
27
|
+
status: number;
|
|
28
|
+
reason: string;
|
|
29
|
+
}[];
|
|
30
|
+
}>;
|
|
31
|
+
removeAsset(engineId: string, _id: string, assetIds: string[], request: KuzzleRequest): Promise<{
|
|
32
|
+
assetsGroups: KDocument<AssetsGroupContent>;
|
|
33
|
+
successes: {
|
|
34
|
+
_id: string;
|
|
35
|
+
_source: JSONObject;
|
|
36
|
+
_version: number;
|
|
37
|
+
}[];
|
|
38
|
+
errors: {
|
|
39
|
+
document: {
|
|
40
|
+
_id: string;
|
|
41
|
+
_source: JSONObject;
|
|
42
|
+
};
|
|
43
|
+
status: number;
|
|
44
|
+
reason: string;
|
|
45
|
+
}[];
|
|
46
|
+
}>;
|
|
47
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
|
|
1
|
+
import { JSONObject, KDocument, KHit, SearchResult, UpdateByQueryResponse } from "kuzzle-sdk";
|
|
2
2
|
import { MeasureContent, Measurement } from "../../../modules/measure";
|
|
3
3
|
import { ApiDigitalTwinGetLastMeasuredAtRequest, ApiDigitalTwinGetLastMeasuredAtResult, ApiDigitalTwinGetLastMeasuresRequest, ApiDigitalTwinGetLastMeasuresResult, ApiDigitalTwinMGetLastMeasuredAtRequest, ApiDigitalTwinMGetLastMeasuredAtResult, ApiDigitalTwinMGetLastMeasuresRequest, ApiDigitalTwinMGetLastMeasuresResult, Metadata } from "../../shared";
|
|
4
4
|
import { AssetContent } from "./AssetContent";
|
|
@@ -170,4 +170,8 @@ export type ApiAssetGetLastMeasuredAtRequest = ApiDigitalTwinGetLastMeasuredAtRe
|
|
|
170
170
|
export type ApiAssetGetLastMeasuredAtResult = ApiDigitalTwinGetLastMeasuredAtResult;
|
|
171
171
|
export type ApiAssetMGetLastMeasuredAtRequest = ApiDigitalTwinMGetLastMeasuredAtRequest<AssetsControllerName>;
|
|
172
172
|
export type ApiAssetMGetLastMeasuredAtResult = ApiDigitalTwinMGetLastMeasuredAtResult;
|
|
173
|
+
export type ApiAssetUpdateModelLocales = {
|
|
174
|
+
engineIndex: string;
|
|
175
|
+
result: UpdateByQueryResponse<AssetContent>;
|
|
176
|
+
};
|
|
173
177
|
export {};
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { KDocumentContent } from "kuzzle-sdk";
|
|
2
|
-
|
|
2
|
+
import { Metadata } from "lib/modules/shared";
|
|
3
|
+
export interface AssetsGroupsBody<TMetadata extends Metadata = Metadata> extends KDocumentContent {
|
|
3
4
|
name: string;
|
|
4
|
-
|
|
5
|
+
model?: string | null;
|
|
5
6
|
children: string[];
|
|
6
7
|
parent: string | null;
|
|
7
8
|
lastUpdate: number;
|
|
9
|
+
metadata?: TMetadata;
|
|
8
10
|
}
|
|
9
|
-
export type AssetsGroupContent =
|
|
11
|
+
export type AssetsGroupContent<TMetadata extends Metadata = any> = AssetsGroupsBody<TMetadata>;
|
|
@@ -88,4 +88,8 @@ export declare class MeasureService extends BaseService {
|
|
|
88
88
|
*/
|
|
89
89
|
private findAssetMeasureNameFromDevice;
|
|
90
90
|
private mutexUpdateAsset;
|
|
91
|
+
/**
|
|
92
|
+
* Create a new document in the collection asset-history, for each asset state
|
|
93
|
+
*/
|
|
94
|
+
private historizeAssetStates;
|
|
91
95
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SchemaObject } from "ajv";
|
|
2
2
|
import { JSONObject } from "kuzzle-sdk";
|
|
3
|
+
import { LocaleDetails } from "lib/modules/model";
|
|
3
4
|
interface MeasureLocales {
|
|
4
5
|
[localeString: string]: {
|
|
5
6
|
friendlyName: string;
|
|
@@ -44,6 +45,9 @@ export interface MeasureValuesDetails {
|
|
|
44
45
|
*}
|
|
45
46
|
*/
|
|
46
47
|
export interface MeasureDefinition {
|
|
48
|
+
locales?: {
|
|
49
|
+
[valueName: string]: LocaleDetails;
|
|
50
|
+
};
|
|
47
51
|
/**
|
|
48
52
|
* Mappings for the measurement values in order to index the fields
|
|
49
53
|
*/
|
|
@@ -2,7 +2,7 @@ import { KuzzleRequest } from "kuzzle";
|
|
|
2
2
|
import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
|
|
3
3
|
import { DeviceManagerPlugin } from "../plugin";
|
|
4
4
|
import { BaseService, SearchParams } from "../shared";
|
|
5
|
-
import { AssetModelContent, DeviceModelContent, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./types/ModelContent";
|
|
5
|
+
import { AssetModelContent, DeviceModelContent, GroupModelContent, LocaleDetails, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./types/ModelContent";
|
|
6
6
|
import { SchemaObject } from "ajv";
|
|
7
7
|
import { MeasureValuesDetails } from "../measure";
|
|
8
8
|
import { NamedMeasures } from "../decoder";
|
|
@@ -10,26 +10,37 @@ export declare class ModelService extends BaseService {
|
|
|
10
10
|
constructor(plugin: DeviceManagerPlugin);
|
|
11
11
|
registerAskEvents(): void;
|
|
12
12
|
private checkModelsConflicts;
|
|
13
|
-
writeAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: NamedMeasures, tooltipModels: TooltipModels
|
|
13
|
+
writeAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: NamedMeasures, tooltipModels: TooltipModels, locales: {
|
|
14
|
+
[valueName: string]: LocaleDetails;
|
|
15
|
+
}): Promise<KDocument<AssetModelContent>>;
|
|
14
16
|
private checkDefaultValues;
|
|
15
17
|
writeDevice(model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: NamedMeasures): Promise<KDocument<DeviceModelContent>>;
|
|
16
|
-
|
|
18
|
+
writeGroup(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups): Promise<KDocument<GroupModelContent>>;
|
|
19
|
+
writeMeasure(type: string, valuesMappings: JSONObject, validationSchema?: SchemaObject, valuesDetails?: MeasureValuesDetails, locales?: {
|
|
20
|
+
[valueName: string]: LocaleDetails;
|
|
21
|
+
}): Promise<KDocument<MeasureModelContent>>;
|
|
17
22
|
deleteAsset(_id: string): Promise<void>;
|
|
18
23
|
deleteDevice(_id: string): Promise<void>;
|
|
24
|
+
deleteGroup(_id: string): Promise<void>;
|
|
19
25
|
deleteMeasure(_id: string): Promise<void>;
|
|
20
26
|
listAsset(engineGroup: string): Promise<KDocument<AssetModelContent>[]>;
|
|
21
27
|
listDevices(): Promise<KDocument<DeviceModelContent>[]>;
|
|
28
|
+
listGroups(engineGroup: string): Promise<KDocument<GroupModelContent>[]>;
|
|
22
29
|
listMeasures(): Promise<KDocument<MeasureModelContent>[]>;
|
|
23
30
|
searchAssets(engineGroup: string, searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<AssetModelContent>>>;
|
|
24
31
|
searchDevices(searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<DeviceModelContent>>>;
|
|
32
|
+
searchGroups(engineGroup: string, searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<GroupModelContent>>>;
|
|
25
33
|
searchMeasures(searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<MeasureModelContent>>>;
|
|
26
34
|
assetExists(model: string): Promise<boolean>;
|
|
27
35
|
deviceExists(model: string): Promise<boolean>;
|
|
28
36
|
getAsset(engineGroup: string, model: string): Promise<KDocument<AssetModelContent>>;
|
|
29
37
|
getDevice(model: string): Promise<KDocument<DeviceModelContent>>;
|
|
38
|
+
getGroup(model: string): Promise<KDocument<GroupModelContent>>;
|
|
30
39
|
getMeasure(type: string): Promise<KDocument<MeasureModelContent>>;
|
|
31
40
|
/**
|
|
32
41
|
* Update an asset model
|
|
33
42
|
*/
|
|
34
|
-
updateAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: AssetModelContent["asset"]["measures"], tooltipModels: TooltipModels,
|
|
43
|
+
updateAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: AssetModelContent["asset"]["measures"], tooltipModels: TooltipModels, locales: {
|
|
44
|
+
[valueName: string]: LocaleDetails;
|
|
45
|
+
}, request: KuzzleRequest): Promise<KDocument<AssetModelContent>>;
|
|
35
46
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TwinModelContent, TwinType } from "../plugin";
|
|
2
|
-
import { MeasureModelContent } from "./exports";
|
|
2
|
+
import { GroupModelContent, MeasureModelContent } from "./exports";
|
|
3
3
|
export type ConflictChunk = {
|
|
4
4
|
sourceModel: string;
|
|
5
5
|
newModel: string;
|
|
@@ -20,6 +20,14 @@ export type MappingsConflict = {
|
|
|
20
20
|
* @returns An array of ConflictChunk between current twins and the new twin
|
|
21
21
|
*/
|
|
22
22
|
export declare function getTwinConflicts<TDigitalTwin extends TwinModelContent>(twinType: TwinType, models: TDigitalTwin[], additional: TDigitalTwin): ConflictChunk[];
|
|
23
|
+
/**
|
|
24
|
+
* Return every conflicts between the mappings of group models and a new group model
|
|
25
|
+
*
|
|
26
|
+
* @param groups The already present group models
|
|
27
|
+
* @param additional The new group model
|
|
28
|
+
* @returns An array of ConflictChunk between current groups and the new group
|
|
29
|
+
*/
|
|
30
|
+
export declare function getGroupConflicts(measures: GroupModelContent[], additional: GroupModelContent): ConflictChunk[];
|
|
23
31
|
/**
|
|
24
32
|
* Return every conflicts between the mappings of measure models and a new measure model
|
|
25
33
|
*
|
|
@@ -1,24 +1,29 @@
|
|
|
1
1
|
import { ControllerDefinition, KuzzleRequest } from "kuzzle";
|
|
2
2
|
import { ModelService } from "./ModelService";
|
|
3
|
-
import { ApiModelWriteAssetResult, ApiModelWriteDeviceResult, ApiModelWriteMeasureResult, ApiModelUpdateAssetResult, ApiModelDeleteAssetResult, ApiModelDeleteDeviceResult, ApiModelDeleteMeasureResult, ApiModelListAssetsResult, ApiModelListDevicesResult, ApiModelListMeasuresResult, ApiModelGetAssetResult, ApiModelGetDeviceResult, ApiModelGetMeasureResult, ApiModelSearchAssetsResult, ApiModelSearchDevicesResult, ApiModelSearchMeasuresResult } from "./types/ModelApi";
|
|
3
|
+
import { ApiModelWriteAssetResult, ApiModelWriteDeviceResult, ApiModelWriteMeasureResult, ApiModelUpdateAssetResult, ApiModelDeleteAssetResult, ApiModelDeleteDeviceResult, ApiModelDeleteMeasureResult, ApiModelListAssetsResult, ApiModelListDevicesResult, ApiModelListMeasuresResult, ApiModelGetAssetResult, ApiModelGetDeviceResult, ApiModelGetMeasureResult, ApiModelSearchAssetsResult, ApiModelSearchDevicesResult, ApiModelSearchMeasuresResult, ApiModelDeleteGroupResult, ApiModelGetGroupResult, ApiModelListGroupsResult, ApiModelSearchGroupsResult, ApiModelWriteGroupResult } from "./types/ModelApi";
|
|
4
4
|
export declare class ModelsController {
|
|
5
5
|
private modelService;
|
|
6
6
|
definition: ControllerDefinition;
|
|
7
7
|
constructor(modelService: ModelService);
|
|
8
8
|
getAsset(request: KuzzleRequest): Promise<ApiModelGetAssetResult>;
|
|
9
9
|
getDevice(request: KuzzleRequest): Promise<ApiModelGetDeviceResult>;
|
|
10
|
+
getGroup(request: KuzzleRequest): Promise<ApiModelGetGroupResult>;
|
|
10
11
|
getMeasure(request: KuzzleRequest): Promise<ApiModelGetMeasureResult>;
|
|
11
12
|
writeAsset(request: KuzzleRequest): Promise<ApiModelWriteAssetResult>;
|
|
12
13
|
writeDevice(request: KuzzleRequest): Promise<ApiModelWriteDeviceResult>;
|
|
14
|
+
writeGroup(request: KuzzleRequest): Promise<ApiModelWriteGroupResult>;
|
|
13
15
|
writeMeasure(request: KuzzleRequest): Promise<ApiModelWriteMeasureResult>;
|
|
14
16
|
deleteAsset(request: KuzzleRequest): Promise<ApiModelDeleteAssetResult>;
|
|
15
17
|
deleteDevice(request: KuzzleRequest): Promise<ApiModelDeleteDeviceResult>;
|
|
18
|
+
deleteGroup(request: KuzzleRequest): Promise<ApiModelDeleteGroupResult>;
|
|
16
19
|
deleteMeasure(request: KuzzleRequest): Promise<ApiModelDeleteMeasureResult>;
|
|
17
20
|
listAssets(request: KuzzleRequest): Promise<ApiModelListAssetsResult>;
|
|
18
21
|
listDevices(): Promise<ApiModelListDevicesResult>;
|
|
22
|
+
listGroups(request: KuzzleRequest): Promise<ApiModelListGroupsResult>;
|
|
19
23
|
listMeasures(): Promise<ApiModelListMeasuresResult>;
|
|
20
24
|
searchAssets(request: KuzzleRequest): Promise<ApiModelSearchAssetsResult>;
|
|
21
25
|
searchDevices(request: KuzzleRequest): Promise<ApiModelSearchDevicesResult>;
|
|
26
|
+
searchGroups(request: KuzzleRequest): Promise<ApiModelSearchGroupsResult>;
|
|
22
27
|
searchMeasures(request: KuzzleRequest): Promise<ApiModelSearchMeasuresResult>;
|
|
23
28
|
updateAsset(request: KuzzleRequest): Promise<ApiModelUpdateAssetResult>;
|
|
24
29
|
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { DeviceManagerPlugin } from "../plugin";
|
|
2
2
|
import { NamedMeasures } from "../decoder";
|
|
3
3
|
import { MeasureDefinition } from "../measure";
|
|
4
|
-
import { MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./types/ModelContent";
|
|
4
|
+
import { LocaleDetails, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./types/ModelContent";
|
|
5
5
|
import { JSONObject } from "kuzzle-sdk";
|
|
6
6
|
export declare class ModelsRegister {
|
|
7
7
|
private config;
|
|
8
8
|
private context;
|
|
9
9
|
private assetModels;
|
|
10
10
|
private deviceModels;
|
|
11
|
+
private groupModels;
|
|
11
12
|
private measureModels;
|
|
12
13
|
private get sdk();
|
|
13
14
|
init(plugin: DeviceManagerPlugin): void;
|
|
@@ -25,7 +26,9 @@ export declare class ModelsRegister {
|
|
|
25
26
|
* @param tooltipModels - Optional model list for tooltip, containing labels and tooltip content.
|
|
26
27
|
* @throws PluginImplementationError if the model name is not in PascalCase.
|
|
27
28
|
*/
|
|
28
|
-
registerAsset(engineGroup: string, model: string, measures: NamedMeasures, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups, tooltipModels?: TooltipModels
|
|
29
|
+
registerAsset(engineGroup: string, model: string, measures: NamedMeasures, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups, tooltipModels?: TooltipModels, locales?: {
|
|
30
|
+
[valueName: string]: LocaleDetails;
|
|
31
|
+
}): void;
|
|
29
32
|
/**
|
|
30
33
|
* Registers a device model.
|
|
31
34
|
*
|
|
@@ -38,6 +41,19 @@ export declare class ModelsRegister {
|
|
|
38
41
|
* @throws PluginImplementationError if the model name is not in PascalCase.
|
|
39
42
|
*/
|
|
40
43
|
registerDevice(model: string, measures: NamedMeasures, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups): void;
|
|
44
|
+
/**
|
|
45
|
+
* Registers a group model.
|
|
46
|
+
*
|
|
47
|
+
*
|
|
48
|
+
* @param engineGroup - The engine group name.
|
|
49
|
+
* @param model - The name of the group model, which must be in PascalCase.
|
|
50
|
+
* @param metadataMappings - The metadata mappings for the model, defaults to an empty object.
|
|
51
|
+
* @param defaultMetadata - The default metadata values for the model, defaults to an empty object.
|
|
52
|
+
* @param metadataDetails - Optional detailed metadata descriptions, localizations and definition.
|
|
53
|
+
* @param metadataGroups - Optional groups for organizing metadata, with localizations.
|
|
54
|
+
* @throws PluginImplementationError if the model name is not in PascalCase.
|
|
55
|
+
*/
|
|
56
|
+
registerGroup(engineGroup: string, model: string, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups): void;
|
|
41
57
|
registerMeasure(type: string, measureDefinition: MeasureDefinition): void;
|
|
42
58
|
private load;
|
|
43
59
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
|
|
2
|
-
import { AssetModelContent, DeviceModelContent, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
|
|
2
|
+
import { AssetModelContent, DeviceModelContent, GroupModelContent, LocaleDetails, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
|
|
3
3
|
import { SchemaObject } from "ajv";
|
|
4
4
|
import { MeasureValuesDetails } from "../../measure/types/MeasureDefinition";
|
|
5
5
|
interface ModelsControllerRequest {
|
|
@@ -16,6 +16,11 @@ export interface ApiModelGetDeviceRequest extends ModelsControllerRequest {
|
|
|
16
16
|
model: string;
|
|
17
17
|
}
|
|
18
18
|
export type ApiModelGetDeviceResult = KDocument<DeviceModelContent>;
|
|
19
|
+
export interface ApiModelGetGroupRequest extends ModelsControllerRequest {
|
|
20
|
+
action: "getGroup";
|
|
21
|
+
model: string;
|
|
22
|
+
}
|
|
23
|
+
export type ApiModelGetGroupResult = KDocument<GroupModelContent>;
|
|
19
24
|
export interface ApiModelGetMeasureRequest extends ModelsControllerRequest {
|
|
20
25
|
action: "getMeasure";
|
|
21
26
|
type: string;
|
|
@@ -32,6 +37,9 @@ export interface ApiModelWriteAssetRequest extends ModelsControllerRequest {
|
|
|
32
37
|
defaultValues?: JSONObject;
|
|
33
38
|
measures?: AssetModelContent["asset"]["measures"];
|
|
34
39
|
tooltipModels?: TooltipModels;
|
|
40
|
+
locales?: {
|
|
41
|
+
[valueName: string]: LocaleDetails;
|
|
42
|
+
};
|
|
35
43
|
};
|
|
36
44
|
}
|
|
37
45
|
export type ApiModelWriteAssetResult = KDocument<AssetModelContent>;
|
|
@@ -47,10 +55,25 @@ export interface ApiModelWriteDeviceRequest extends ModelsControllerRequest {
|
|
|
47
55
|
};
|
|
48
56
|
}
|
|
49
57
|
export type ApiModelWriteDeviceResult = KDocument<DeviceModelContent>;
|
|
58
|
+
export interface ApiModelWriteGroupRequest extends ModelsControllerRequest {
|
|
59
|
+
action: "writeGroup";
|
|
60
|
+
body: {
|
|
61
|
+
engineGroup: string;
|
|
62
|
+
model: string;
|
|
63
|
+
metadataDetails?: MetadataDetails;
|
|
64
|
+
metadataGroups?: MetadataGroups;
|
|
65
|
+
metadataMappings?: MetadataMappings;
|
|
66
|
+
defaultValues?: JSONObject;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export type ApiModelWriteGroupResult = KDocument<GroupModelContent>;
|
|
50
70
|
export interface ApiModelWriteMeasureRequest extends ModelsControllerRequest {
|
|
51
71
|
action: "writeMeasure";
|
|
52
72
|
body: {
|
|
53
73
|
type: string;
|
|
74
|
+
locales?: {
|
|
75
|
+
[valueName: string]: LocaleDetails;
|
|
76
|
+
};
|
|
54
77
|
valuesMappings: JSONObject;
|
|
55
78
|
validationSchema?: SchemaObject;
|
|
56
79
|
valuesDetails?: MeasureValuesDetails;
|
|
@@ -68,6 +91,9 @@ export interface ApiModelUpdateAssetRequest extends ModelsControllerRequest {
|
|
|
68
91
|
defaultValues?: JSONObject;
|
|
69
92
|
measures?: AssetModelContent["asset"]["measures"];
|
|
70
93
|
tooltipModels?: TooltipModels;
|
|
94
|
+
locales?: {
|
|
95
|
+
[valueName: string]: LocaleDetails;
|
|
96
|
+
};
|
|
71
97
|
};
|
|
72
98
|
}
|
|
73
99
|
export type ApiModelUpdateAssetResult = KDocument<AssetModelContent>;
|
|
@@ -81,6 +107,11 @@ export interface ApiModelDeleteDeviceRequest extends ModelsControllerRequest {
|
|
|
81
107
|
_id: string;
|
|
82
108
|
}
|
|
83
109
|
export type ApiModelDeleteDeviceResult = void;
|
|
110
|
+
export interface ApiModelDeleteGroupRequest extends ModelsControllerRequest {
|
|
111
|
+
action: "deleteGroup";
|
|
112
|
+
_id: string;
|
|
113
|
+
}
|
|
114
|
+
export type ApiModelDeleteGroupResult = void;
|
|
84
115
|
export interface ApiModelDeleteMeasureRequest extends ModelsControllerRequest {
|
|
85
116
|
action: "deleteMeasure";
|
|
86
117
|
_id: string;
|
|
@@ -101,6 +132,14 @@ export type ApiModelListDevicesResult = {
|
|
|
101
132
|
models: KDocument<DeviceModelContent>[];
|
|
102
133
|
total: number;
|
|
103
134
|
};
|
|
135
|
+
export interface ApiModelListGroupsRequest extends ModelsControllerRequest {
|
|
136
|
+
action: "listGroups";
|
|
137
|
+
engineGroup: string;
|
|
138
|
+
}
|
|
139
|
+
export type ApiModelListGroupsResult = {
|
|
140
|
+
models: KDocument<GroupModelContent>[];
|
|
141
|
+
total: number;
|
|
142
|
+
};
|
|
104
143
|
export interface ApiModelListMeasuresRequest extends ModelsControllerRequest {
|
|
105
144
|
action: "listMeasures";
|
|
106
145
|
}
|
|
@@ -125,6 +164,15 @@ export interface ApiModelSearchDevicesRequest extends ModelsControllerRequest {
|
|
|
125
164
|
body?: JSONObject;
|
|
126
165
|
}
|
|
127
166
|
export type ApiModelSearchDevicesResult = SearchResult<KHit<DeviceModelContent>>;
|
|
167
|
+
export interface ApiModelSearchGroupsRequest extends ModelsControllerRequest {
|
|
168
|
+
action: "searchGroups";
|
|
169
|
+
engineGroup: string;
|
|
170
|
+
from?: number;
|
|
171
|
+
size?: number;
|
|
172
|
+
scrollTTL?: string;
|
|
173
|
+
body?: JSONObject;
|
|
174
|
+
}
|
|
175
|
+
export type ApiModelSearchGroupsResult = SearchResult<KHit<GroupModelContent>>;
|
|
128
176
|
export interface ApiModelSearchMeasuresRequest extends ModelsControllerRequest {
|
|
129
177
|
action: "searchMeasures";
|
|
130
178
|
from?: number;
|
|
@@ -5,6 +5,9 @@ export interface MeasureModelContent extends KDocumentContent {
|
|
|
5
5
|
type: "measure";
|
|
6
6
|
measure: MeasureDefinition & {
|
|
7
7
|
type: string;
|
|
8
|
+
locales?: {
|
|
9
|
+
[valueName: string]: LocaleDetails;
|
|
10
|
+
};
|
|
8
11
|
};
|
|
9
12
|
}
|
|
10
13
|
export interface MetadataProperty {
|
|
@@ -265,6 +268,9 @@ export interface AssetModelContent extends KDocumentContent {
|
|
|
265
268
|
* ]
|
|
266
269
|
*/
|
|
267
270
|
tooltipModels?: TooltipModels;
|
|
271
|
+
locales?: {
|
|
272
|
+
[locale: string]: LocaleDetails;
|
|
273
|
+
};
|
|
268
274
|
};
|
|
269
275
|
}
|
|
270
276
|
export interface DeviceModelContent extends KDocumentContent {
|
|
@@ -356,4 +362,128 @@ export interface DeviceModelContent extends KDocumentContent {
|
|
|
356
362
|
measures: NamedMeasures;
|
|
357
363
|
};
|
|
358
364
|
}
|
|
359
|
-
export
|
|
365
|
+
export interface GroupModelContent extends KDocumentContent {
|
|
366
|
+
type: "group";
|
|
367
|
+
engineGroup: string;
|
|
368
|
+
group: {
|
|
369
|
+
/**
|
|
370
|
+
* Name of the model
|
|
371
|
+
*/
|
|
372
|
+
model: string;
|
|
373
|
+
/**
|
|
374
|
+
* Metadata mappings.
|
|
375
|
+
*
|
|
376
|
+
* @example
|
|
377
|
+
* {
|
|
378
|
+
* "company": {
|
|
379
|
+
* "properties": {
|
|
380
|
+
* "name": { "type": "keyword" },
|
|
381
|
+
* }
|
|
382
|
+
* }
|
|
383
|
+
* }
|
|
384
|
+
*/
|
|
385
|
+
metadataMappings: MetadataMappings;
|
|
386
|
+
/**
|
|
387
|
+
* Default values for metadata.
|
|
388
|
+
*
|
|
389
|
+
* @example
|
|
390
|
+
* {
|
|
391
|
+
* "company.name": "Firebird"
|
|
392
|
+
* }
|
|
393
|
+
*/
|
|
394
|
+
defaultMetadata: JSONObject;
|
|
395
|
+
/**
|
|
396
|
+
* Metadata details
|
|
397
|
+
* @example
|
|
398
|
+
* {
|
|
399
|
+
* "extTemp": {
|
|
400
|
+
* "group": "buildingEnv",
|
|
401
|
+
* "locales": {
|
|
402
|
+
* "en": {
|
|
403
|
+
* "friendlyName": "External temperature",
|
|
404
|
+
* "description": "Building external temperature"
|
|
405
|
+
* },
|
|
406
|
+
* "fr": {
|
|
407
|
+
* "friendlyName": "Température extérieure",
|
|
408
|
+
* "description": "Température à l'exterieur du bâtiment"
|
|
409
|
+
* },
|
|
410
|
+
* },
|
|
411
|
+
* "editorHint": {
|
|
412
|
+
* "readOnly": true,
|
|
413
|
+
* "type": EditorHintEnum.OPTION_SELECTOR,
|
|
414
|
+
* "values": ["red", "blue"],
|
|
415
|
+
* "customValueAllowed": true,
|
|
416
|
+
* },
|
|
417
|
+
* },
|
|
418
|
+
* }
|
|
419
|
+
*/
|
|
420
|
+
metadataDetails?: MetadataDetails;
|
|
421
|
+
/**
|
|
422
|
+
* Metadata groups list
|
|
423
|
+
* @example
|
|
424
|
+
* {
|
|
425
|
+
* "buildingEnv": {
|
|
426
|
+
* "locales": {
|
|
427
|
+
* "en": {
|
|
428
|
+
* "groupFriendlyName": "Building environment",
|
|
429
|
+
* "description": "The building environment"
|
|
430
|
+
* },
|
|
431
|
+
* "fr": {
|
|
432
|
+
* "groupFriendlyName": "Environnement du bâtiment",
|
|
433
|
+
* "description": "L'environnement du bâtiment"
|
|
434
|
+
* }
|
|
435
|
+
* }
|
|
436
|
+
* }
|
|
437
|
+
* }
|
|
438
|
+
*/
|
|
439
|
+
metadataGroups?: MetadataGroups;
|
|
440
|
+
/**
|
|
441
|
+
* List of tooltip models for this asset model
|
|
442
|
+
*
|
|
443
|
+
* @example
|
|
444
|
+
* [
|
|
445
|
+
* "defaultTooltipKey": {
|
|
446
|
+
* "tooltipLabel": "Default tooltip model",
|
|
447
|
+
* "content": [
|
|
448
|
+
* {
|
|
449
|
+
* "metadataPath": "geolocation",
|
|
450
|
+
* "label": {
|
|
451
|
+
* "locales": {
|
|
452
|
+
* "en": {
|
|
453
|
+
* "description": "",
|
|
454
|
+
* "friendlyName": "Container position"
|
|
455
|
+
* },
|
|
456
|
+
* "fr": {
|
|
457
|
+
* "description": "",
|
|
458
|
+
* "friendlyName": "Position du conteneur"
|
|
459
|
+
* }
|
|
460
|
+
* }
|
|
461
|
+
* },
|
|
462
|
+
* "category": "metadata"
|
|
463
|
+
* },
|
|
464
|
+
* {
|
|
465
|
+
* "measureValuePath": "externalTemperature",
|
|
466
|
+
* "measureSlot": "externalTemperature",
|
|
467
|
+
* "label": {
|
|
468
|
+
* "locales": {
|
|
469
|
+
* "en": {
|
|
470
|
+
* "description": "",
|
|
471
|
+
* "friendlyName": "External temperature"
|
|
472
|
+
* },
|
|
473
|
+
* "fr": {
|
|
474
|
+
* "description": "",
|
|
475
|
+
* "friendlyName": "Température extérieure"
|
|
476
|
+
* }
|
|
477
|
+
* }
|
|
478
|
+
* },
|
|
479
|
+
* "category": "measure",
|
|
480
|
+
* "suffix": "°C"
|
|
481
|
+
* }
|
|
482
|
+
* ]
|
|
483
|
+
* }
|
|
484
|
+
* ]
|
|
485
|
+
*/
|
|
486
|
+
tooltipModels?: TooltipModels;
|
|
487
|
+
};
|
|
488
|
+
}
|
|
489
|
+
export type ModelContent = MeasureModelContent | AssetModelContent | DeviceModelContent | GroupModelContent;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { JSONObject } from "kuzzle-sdk";
|
|
2
2
|
import { Decoder, NamedMeasures } from "../../../modules/decoder";
|
|
3
|
-
import { MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
|
|
3
|
+
import { LocaleDetails, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
|
|
4
4
|
/**
|
|
5
5
|
* Define an asset model
|
|
6
6
|
*
|
|
@@ -94,7 +94,17 @@ import { MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from
|
|
|
94
94
|
* }
|
|
95
95
|
* ]
|
|
96
96
|
* }
|
|
97
|
-
* }
|
|
97
|
+
* },
|
|
98
|
+
* locales: {
|
|
99
|
+
* en: {
|
|
100
|
+
* friendlyName: 'Container (translation by model)',
|
|
101
|
+
* description: 'Containerized container',
|
|
102
|
+
* },
|
|
103
|
+
* fr: {
|
|
104
|
+
* friendlyName: 'Conteneur (traduit par model)',
|
|
105
|
+
* description: 'Conteneur conteneurisé',
|
|
106
|
+
* },
|
|
107
|
+
* },
|
|
98
108
|
* }
|
|
99
109
|
*
|
|
100
110
|
*/
|
|
@@ -123,6 +133,9 @@ export type AssetModelDefinition = {
|
|
|
123
133
|
* Tooltip models
|
|
124
134
|
*/
|
|
125
135
|
tooltipModels?: TooltipModels;
|
|
136
|
+
locales?: {
|
|
137
|
+
[valueName: string]: LocaleDetails;
|
|
138
|
+
};
|
|
126
139
|
};
|
|
127
140
|
/**
|
|
128
141
|
* Define a device model
|
|
@@ -196,3 +209,94 @@ export type DeviceModelDefinition = {
|
|
|
196
209
|
*/
|
|
197
210
|
metadataGroups?: MetadataGroups;
|
|
198
211
|
};
|
|
212
|
+
/**
|
|
213
|
+
* Define a group model
|
|
214
|
+
*
|
|
215
|
+
* @example
|
|
216
|
+
* {
|
|
217
|
+
* metadataMappings: {
|
|
218
|
+
* position: { type: "geo_point" },
|
|
219
|
+
* },
|
|
220
|
+
* defaultMetadata: {
|
|
221
|
+
* position: {
|
|
222
|
+
* lat: 41.12,
|
|
223
|
+
* lon: -71.34
|
|
224
|
+
* }
|
|
225
|
+
* },
|
|
226
|
+
* metadataDetails: {
|
|
227
|
+
* "position": {
|
|
228
|
+
* "group": "geolocation",
|
|
229
|
+
* "locales": {
|
|
230
|
+
* "en": {
|
|
231
|
+
* "friendlyName": "Parking position",
|
|
232
|
+
* "description": "The coordinates of the parking"
|
|
233
|
+
* },
|
|
234
|
+
* "fr": {
|
|
235
|
+
* "friendlyName": "Position du parking",
|
|
236
|
+
* "description": "Les coordonnées GPS du parking"
|
|
237
|
+
* }
|
|
238
|
+
* },
|
|
239
|
+
* },
|
|
240
|
+
* },
|
|
241
|
+
* metadataGroups: {
|
|
242
|
+
* geolocation: {
|
|
243
|
+
* locales: {
|
|
244
|
+
* en: {
|
|
245
|
+
* groupFriendlyName: "Parking geolocation",
|
|
246
|
+
* description: "The parking geolocation"
|
|
247
|
+
* },
|
|
248
|
+
* fr: {
|
|
249
|
+
* groupFriendlyName: "Localisation du parking",
|
|
250
|
+
* description: "La localisation du parking"
|
|
251
|
+
* }
|
|
252
|
+
* }
|
|
253
|
+
* }
|
|
254
|
+
* },
|
|
255
|
+
* tooltipModels: {
|
|
256
|
+
* "defaultTooltipKey": {
|
|
257
|
+
* "tooltipLabel": "Default Tooltip Model",
|
|
258
|
+
* "content": [
|
|
259
|
+
* {
|
|
260
|
+
* "category": "metadata",
|
|
261
|
+
* "label": {
|
|
262
|
+
* "locales": {
|
|
263
|
+
* "en": {
|
|
264
|
+
* "friendlyName": "Parking position",
|
|
265
|
+
* "description": ""
|
|
266
|
+
* },
|
|
267
|
+
* "fr": {
|
|
268
|
+
* "friendlyName": "Position du parking",
|
|
269
|
+
* "description": ""
|
|
270
|
+
* }
|
|
271
|
+
* }
|
|
272
|
+
* },
|
|
273
|
+
* "metadataPath": "position"
|
|
274
|
+
* },
|
|
275
|
+
* ]
|
|
276
|
+
* }
|
|
277
|
+
* }
|
|
278
|
+
* }
|
|
279
|
+
*
|
|
280
|
+
*/
|
|
281
|
+
export type GroupModelDefinition = {
|
|
282
|
+
/**
|
|
283
|
+
* Metadata mappings definition
|
|
284
|
+
*/
|
|
285
|
+
metadataMappings?: MetadataMappings;
|
|
286
|
+
/**
|
|
287
|
+
* Default metadata values
|
|
288
|
+
*/
|
|
289
|
+
defaultMetadata?: JSONObject;
|
|
290
|
+
/**
|
|
291
|
+
* Metadata details including tanslations and group.
|
|
292
|
+
*/
|
|
293
|
+
metadataDetails?: MetadataDetails;
|
|
294
|
+
/**
|
|
295
|
+
* Metadata groups
|
|
296
|
+
*/
|
|
297
|
+
metadataGroups?: MetadataGroups;
|
|
298
|
+
/**
|
|
299
|
+
* Tooltip models
|
|
300
|
+
*/
|
|
301
|
+
tooltipModels?: TooltipModels;
|
|
302
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AssetModelContent, DeviceModelContent, MeasureModelContent } from "./ModelContent";
|
|
1
|
+
import { AssetModelContent, DeviceModelContent, GroupModelContent, MeasureModelContent } from "./ModelContent";
|
|
2
2
|
export type AskModelAssetGet = {
|
|
3
3
|
name: "ask:device-manager:model:asset:get";
|
|
4
4
|
payload: {
|
|
@@ -21,3 +21,10 @@ export type AskModelMeasureGet = {
|
|
|
21
21
|
};
|
|
22
22
|
result: MeasureModelContent;
|
|
23
23
|
};
|
|
24
|
+
export type AskModelGroupGet = {
|
|
25
|
+
name: "ask:device-manager:model:group:get";
|
|
26
|
+
payload: {
|
|
27
|
+
model: string;
|
|
28
|
+
};
|
|
29
|
+
result: GroupModelContent;
|
|
30
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Backend, KDocumentContent, Plugin } from "kuzzle";
|
|
2
2
|
import { AbstractEngine, ConfigManager, EngineContent } from "kuzzle-plugin-commons";
|
|
3
|
-
import { AssetModelContent, DeviceModelContent, MeasureModelContent } from "../model";
|
|
3
|
+
import { AssetModelContent, DeviceModelContent, GroupModelContent, MeasureModelContent } from "../model";
|
|
4
4
|
import { DeviceManagerPlugin } from "./DeviceManagerPlugin";
|
|
5
5
|
import { DeviceManagerConfiguration } from "./types/DeviceManagerConfiguration";
|
|
6
6
|
import { InternalCollection } from "./types/InternalCollection";
|
|
@@ -35,6 +35,7 @@ export type AskEngineUpdateConflict = {
|
|
|
35
35
|
models: TwinModelContent[];
|
|
36
36
|
};
|
|
37
37
|
measuresModels?: MeasureModelContent[];
|
|
38
|
+
groupModels?: GroupModelContent[];
|
|
38
39
|
};
|
|
39
40
|
result: ConflictChunk[];
|
|
40
41
|
};
|
|
@@ -54,6 +55,14 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
|
|
|
54
55
|
* @returns An array of conflict chunk
|
|
55
56
|
*/
|
|
56
57
|
private doesTwinUpdateConflicts;
|
|
58
|
+
/**
|
|
59
|
+
* Return conflicts between the new and already present group models
|
|
60
|
+
*
|
|
61
|
+
* @param groupModels The already present group models
|
|
62
|
+
* @param additionalGroups The new or updated group models
|
|
63
|
+
* @returns An array of ConflictChunk
|
|
64
|
+
*/
|
|
65
|
+
private doesGroupsUpdateConflicts;
|
|
57
66
|
/**
|
|
58
67
|
* Return conflicts between the new and already present measure models
|
|
59
68
|
*
|
|
@@ -166,6 +175,7 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
|
|
|
166
175
|
* @returns The complete ES mappings produced by merging models mappings
|
|
167
176
|
*/
|
|
168
177
|
private getMeasuresMappings;
|
|
178
|
+
getAssetGroupsMappingFromDB(): Promise<any>;
|
|
169
179
|
/**
|
|
170
180
|
* Retrieve a certain type of models associated to an engine
|
|
171
181
|
*
|
|
@@ -175,4 +185,11 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
|
|
|
175
185
|
* @returns An array of the generic type provided
|
|
176
186
|
*/
|
|
177
187
|
private getModels;
|
|
188
|
+
/**
|
|
189
|
+
* Detach all devices of an index in the admin index
|
|
190
|
+
*
|
|
191
|
+
* @param engineId The target engine Id
|
|
192
|
+
* @returns {any}
|
|
193
|
+
*/
|
|
194
|
+
private detachDevicesFromAdminIndex;
|
|
178
195
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Plugin, PluginContext } from "kuzzle";
|
|
2
2
|
import { JSONObject } from "kuzzle-sdk";
|
|
3
3
|
import { MeasureDefinition } from "../measure";
|
|
4
|
-
import { AssetModelDefinition, DeviceModelDefinition } from "../model";
|
|
4
|
+
import { AssetModelDefinition, DeviceModelDefinition, GroupModelDefinition } from "../model";
|
|
5
5
|
import { DeviceManagerConfiguration } from "./types/DeviceManagerConfiguration";
|
|
6
6
|
export declare class DeviceManagerPlugin extends Plugin {
|
|
7
7
|
config: DeviceManagerConfiguration;
|
|
@@ -177,6 +177,59 @@ export declare class DeviceManagerPlugin extends Plugin {
|
|
|
177
177
|
* ```
|
|
178
178
|
*/
|
|
179
179
|
registerDevice: (model: string, definition: DeviceModelDefinition) => void;
|
|
180
|
+
/**
|
|
181
|
+
* Register a group.
|
|
182
|
+
*
|
|
183
|
+
* @param model Name of the group model
|
|
184
|
+
* @param definition Object containing the group model definition, including:
|
|
185
|
+
* - metadataMappings: Metadata mappings definition
|
|
186
|
+
* - defaultMetadata: Default metadata values
|
|
187
|
+
* - metadataDetails: Localizations, detailed metadata descriptions and definition
|
|
188
|
+
* - metadataGroups: Groups for organizing metadata, with localizations
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```
|
|
192
|
+
* deviceManager.models.registerGroup(
|
|
193
|
+
* "Parking",
|
|
194
|
+
* {
|
|
195
|
+
* metadataMappings: {
|
|
196
|
+
* geolocation: { type: "geo_point" },
|
|
197
|
+
* },
|
|
198
|
+
* defaultMetadata: {
|
|
199
|
+
*
|
|
200
|
+
* },
|
|
201
|
+
* metadataDetails: {
|
|
202
|
+
* geolocation: {
|
|
203
|
+
* group: "access",
|
|
204
|
+
* locales: {
|
|
205
|
+
* en: {
|
|
206
|
+
* friendlyName: "Parking location",
|
|
207
|
+
* description: "GPS position of the parking"
|
|
208
|
+
* },
|
|
209
|
+
* fr: {
|
|
210
|
+
* friendlyName: "Emplacement du parking",
|
|
211
|
+
* description: "Position GPS du parking"
|
|
212
|
+
* }
|
|
213
|
+
* }
|
|
214
|
+
* }
|
|
215
|
+
* },
|
|
216
|
+
* metadataGroups: {
|
|
217
|
+
* access: {
|
|
218
|
+
* locales: {
|
|
219
|
+
* en: {
|
|
220
|
+
* groupFriendlyName: "Parking access info"
|
|
221
|
+
* },
|
|
222
|
+
* fr: {
|
|
223
|
+
* groupFriendlyName: "Information d'accès au parking"
|
|
224
|
+
* }
|
|
225
|
+
* }
|
|
226
|
+
* }
|
|
227
|
+
* }
|
|
228
|
+
* }
|
|
229
|
+
* );
|
|
230
|
+
* ```
|
|
231
|
+
*/
|
|
232
|
+
registerGroup: (engineGroup: string, model: string, definition: GroupModelDefinition) => void;
|
|
180
233
|
/**
|
|
181
234
|
* Register a new measure
|
|
182
235
|
*
|
|
@@ -6,6 +6,12 @@ export type DeviceManagerConfiguration = {
|
|
|
6
6
|
* Useful to start the plugin even if the mappings are not up to date.
|
|
7
7
|
*/
|
|
8
8
|
ignoreStartupErrors: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Should be set to true to historize measures in asset-history collection (deprecated)
|
|
11
|
+
*
|
|
12
|
+
* Should be enabled only for backward compatibility because it leads to important performance costs.
|
|
13
|
+
*/
|
|
14
|
+
assetsHistorizesMeasures: boolean;
|
|
9
15
|
engine: {
|
|
10
16
|
/**
|
|
11
17
|
* Auto update collection mappings with models
|
|
@@ -52,6 +58,7 @@ export type DeviceManagerConfiguration = {
|
|
|
52
58
|
};
|
|
53
59
|
assetGroups: {
|
|
54
60
|
name: string;
|
|
61
|
+
mappings: JSONObject;
|
|
55
62
|
settings?: JSONObject;
|
|
56
63
|
};
|
|
57
64
|
assetHistory: {
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { JSONObject, KDocumentContent } from "kuzzle-sdk";
|
|
2
2
|
import { Metadata } from "./Metadata";
|
|
3
3
|
import { DigitalTwinMeasures } from "./DigitalTwinMeasures";
|
|
4
|
+
import { LocaleDetails } from "lib/modules/model";
|
|
4
5
|
export interface DigitalTwinContent<TMeasures extends JSONObject = JSONObject, TMetadata extends Metadata = Metadata> extends KDocumentContent {
|
|
5
6
|
model: string;
|
|
7
|
+
modelLocales?: {
|
|
8
|
+
[locale: string]: LocaleDetails;
|
|
9
|
+
};
|
|
6
10
|
reference: string;
|
|
7
11
|
metadata: TMetadata;
|
|
8
12
|
measures: DigitalTwinMeasures<TMeasures>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MeasureDefinition } from "../../measure";
|
|
2
|
-
import { AssetModelDefinition, DeviceModelDefinition } from "../../model";
|
|
2
|
+
import { AssetModelDefinition, DeviceModelDefinition, GroupModelDefinition } from "../../model";
|
|
3
3
|
interface ModelDefinition<Definition> {
|
|
4
4
|
/**
|
|
5
5
|
* Name of model
|
|
@@ -14,4 +14,5 @@ interface ModelDefinition<Definition> {
|
|
|
14
14
|
export type AssetModel = ModelDefinition<AssetModelDefinition>;
|
|
15
15
|
export type DeviceModel = ModelDefinition<DeviceModelDefinition>;
|
|
16
16
|
export type MeasureModel = ModelDefinition<MeasureDefinition>;
|
|
17
|
+
export type GroupModel = ModelDefinition<GroupModelDefinition>;
|
|
17
18
|
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AssetsGroupContent } from "lib/modules/asset/exports";
|
|
2
|
+
import { GroupModel, Metadata } from "lib/modules/shared";
|
|
3
|
+
declare const modelName = "Parking";
|
|
4
|
+
export interface ParkingMetadata extends Metadata {
|
|
5
|
+
geolocation: {
|
|
6
|
+
lat: number;
|
|
7
|
+
lon: number;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export interface ParkingGroupContent extends AssetsGroupContent<ParkingMetadata> {
|
|
11
|
+
model: typeof modelName;
|
|
12
|
+
}
|
|
13
|
+
export declare const Parking: GroupModel;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Parking";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Backend, Controller, KuzzleRequest } from "kuzzle";
|
|
2
2
|
export declare class TestsController extends Controller {
|
|
3
3
|
constructor(app: Backend);
|
|
4
|
+
setAssetsHistorizesMeasuresConfig(request: KuzzleRequest): Promise<void>;
|
|
4
5
|
createDigitalTwinFromBackend(request: KuzzleRequest): Promise<void>;
|
|
5
6
|
}
|