Refactoring
This commit is contained in:
parent
7bc16bcbb9
commit
f6a1085214
@ -17,21 +17,17 @@
|
||||
import { EntityAliases, EntityAliasInfo, getEntityAliasId } from '@shared/models/alias.models';
|
||||
import { FilterInfo, Filters, getFilterId } from '@shared/models/query/query.models';
|
||||
import { Dashboard } from '@shared/models/dashboard.models';
|
||||
import { DataKey, Datasource, datasourcesHasAggregation, DatasourceType, Widget } from '@shared/models/widget.models';
|
||||
import { Datasource, datasourcesHasAggregation, DatasourceType, Widget } from '@shared/models/widget.models';
|
||||
import {
|
||||
additionalMapDataSourcesToDatasources,
|
||||
BaseMapSettings,
|
||||
CirclesDataLayerSettings,
|
||||
MapDataLayerSettings,
|
||||
MapDataLayerType,
|
||||
MapDataSourceSettings,
|
||||
mapDataSourceSettingsToDatasource,
|
||||
MapType,
|
||||
MarkersDataLayerSettings,
|
||||
PolygonsDataLayerSettings
|
||||
MapType
|
||||
} from '@shared/models/widget/maps/map.models';
|
||||
import { WidgetModelDefinition } from '@shared/models/widget/widget-model.definition';
|
||||
import { deepClone } from '@core/utils';
|
||||
|
||||
interface AliasFilterPair {
|
||||
alias?: EntityAliasInfo,
|
||||
@ -127,7 +123,7 @@ export const MapModelDefinition: WidgetModelDefinition<MapDatasourcesInfo> = {
|
||||
datasources.push(...getMapDataLayersDatasources(settings.circles));
|
||||
}
|
||||
if (settings.additionalDataSources?.length) {
|
||||
datasources.push(...getMapDataLayersDatasources(settings.additionalDataSources));
|
||||
datasources.push(...additionalMapDataSourcesToDatasources(settings.additionalDataSources));
|
||||
}
|
||||
return datasources;
|
||||
},
|
||||
@ -138,13 +134,13 @@ export const MapModelDefinition: WidgetModelDefinition<MapDatasourcesInfo> = {
|
||||
} else {
|
||||
const datasources: Datasource[] = [];
|
||||
if (settings.markers?.length) {
|
||||
datasources.push(...getMapLatestDataLayersDatasources(settings.markers, 'markers'));
|
||||
datasources.push(...getMapDataLayersDatasources(settings.markers, true, 'markers'));
|
||||
}
|
||||
if (settings.polygons?.length) {
|
||||
datasources.push(...getMapLatestDataLayersDatasources(settings.polygons, 'polygons'));
|
||||
datasources.push(...getMapDataLayersDatasources(settings.polygons, true, 'polygons'));
|
||||
}
|
||||
if (settings.circles?.length) {
|
||||
datasources.push(...getMapLatestDataLayersDatasources(settings.circles, 'circles'));
|
||||
datasources.push(...getMapDataLayersDatasources(settings.circles, true, 'circles'));
|
||||
}
|
||||
if (settings.additionalDataSources?.length) {
|
||||
datasources.push(...additionalMapDataSourcesToDatasources(settings.additionalDataSources));
|
||||
@ -238,52 +234,21 @@ const prepareAliasAndFilterPair = (dashboard: Dashboard, settings: MapDataSource
|
||||
}
|
||||
}
|
||||
|
||||
const getMapDataLayersDatasources = (settings: MapDataLayerSettings[] | MapDataSourceSettings[]): Datasource[] => {
|
||||
const getMapDataLayersDatasources = (settings: MapDataLayerSettings[],
|
||||
includeDataKeys = false, dataLayerType?: MapDataLayerType): Datasource[] => {
|
||||
const datasources: Datasource[] = [];
|
||||
settings.forEach((dsSettings) => {
|
||||
datasources.push(mapDataSourceSettingsToDatasource(dsSettings));
|
||||
if ((dsSettings as MapDataLayerSettings).additionalDataSources?.length) {
|
||||
(dsSettings as MapDataLayerSettings).additionalDataSources.forEach((ds) => {
|
||||
datasources.push(mapDataSourceSettingsToDatasource(ds));
|
||||
});
|
||||
}
|
||||
});
|
||||
return datasources;
|
||||
};
|
||||
|
||||
const getMapLatestDataLayersDatasources = (settings: MapDataLayerSettings[],
|
||||
dataLayerType: MapDataLayerType): Datasource[] => {
|
||||
const datasources: Datasource[] = [];
|
||||
settings.forEach((dsSettings) => {
|
||||
const dataKeys: DataKey[] = getMapLatestDataLayerDatasourceDataKeys(dsSettings, dataLayerType);
|
||||
const datasource: Datasource = mapDataSourceSettingsToDatasource(dsSettings);
|
||||
datasource.dataKeys.push(...dataKeys);
|
||||
const datasource: Datasource = mapDataSourceSettingsToDatasource(dsSettings, null, includeDataKeys, dataLayerType);
|
||||
datasources.push(datasource);
|
||||
if ((dsSettings).additionalDataSources?.length) {
|
||||
(dsSettings).additionalDataSources.forEach((ds) => {
|
||||
if (dsSettings.additionalDataSources?.length) {
|
||||
dsSettings.additionalDataSources.forEach((ds) => {
|
||||
const additionalDatasource: Datasource = mapDataSourceSettingsToDatasource(ds);
|
||||
additionalDatasource.dataKeys.push(...dataKeys);
|
||||
if (includeDataKeys) {
|
||||
additionalDatasource.dataKeys.push(...datasource.dataKeys);
|
||||
}
|
||||
datasources.push(additionalDatasource);
|
||||
});
|
||||
}
|
||||
});
|
||||
return datasources;
|
||||
};
|
||||
|
||||
const getMapLatestDataLayerDatasourceDataKeys = (settings: MapDataLayerSettings,
|
||||
dataLayerType: MapDataLayerType): DataKey[] => {
|
||||
const dataKeys = settings.additionalDataKeys?.length ? deepClone(settings.additionalDataKeys) : [];
|
||||
switch (dataLayerType) {
|
||||
case 'markers':
|
||||
const markersSettings = settings as MarkersDataLayerSettings;
|
||||
dataKeys.push(markersSettings.xKey, markersSettings.yKey);
|
||||
break;
|
||||
case 'polygons':
|
||||
dataKeys.push((settings as PolygonsDataLayerSettings).polygonKey);
|
||||
break;
|
||||
case 'circles':
|
||||
dataKeys.push((settings as CirclesDataLayerSettings).circleKey);
|
||||
break;
|
||||
}
|
||||
return dataKeys;
|
||||
};
|
||||
|
||||
@ -24,6 +24,7 @@ import {
|
||||
} from '@shared/models/widget.models';
|
||||
import { AttributeScope, DataKeyType } from '@shared/models/telemetry/telemetry.models';
|
||||
import {
|
||||
deepClone,
|
||||
guid,
|
||||
hashCode,
|
||||
isDefinedAndNotNull,
|
||||
@ -61,19 +62,44 @@ export interface TbMapDatasource extends Datasource {
|
||||
mapDataIds: string[];
|
||||
}
|
||||
|
||||
export const mapDataSourceSettingsToDatasource = (settings: MapDataSourceSettings, id = guid()): TbMapDatasource => {
|
||||
export const mapDataSourceSettingsToDatasource = (settings: MapDataSourceSettings | MapDataLayerSettings,
|
||||
id = guid(),
|
||||
includeDataKeys = false, dataLayerType?: MapDataLayerType): TbMapDatasource => {
|
||||
const dataKeys = includeDataKeys ? mapDataLayerDatasourceDataKeys((settings as MapDataLayerSettings), dataLayerType) : [];
|
||||
return {
|
||||
type: settings.dsType,
|
||||
name: settings.dsLabel,
|
||||
deviceId: settings.dsDeviceId,
|
||||
entityAliasId: settings.dsEntityAliasId,
|
||||
filterId: settings.dsFilterId,
|
||||
dataKeys: [],
|
||||
dataKeys: dataKeys,
|
||||
latestDataKeys: [],
|
||||
mapDataIds: [id]
|
||||
};
|
||||
};
|
||||
|
||||
const mapDataLayerDatasourceDataKeys = (settings: MapDataLayerSettings,
|
||||
dataLayerType: MapDataLayerType): DataKey[] => {
|
||||
const dataKeys = settings.additionalDataKeys?.length ? deepClone(settings.additionalDataKeys) : [];
|
||||
switch (dataLayerType) {
|
||||
case 'trips':
|
||||
const tripsSettings = settings as TripsDataLayerSettings;
|
||||
dataKeys.push(tripsSettings.xKey, tripsSettings.yKey);
|
||||
break;
|
||||
case 'markers':
|
||||
const markersSettings = settings as MarkersDataLayerSettings;
|
||||
dataKeys.push(markersSettings.xKey, markersSettings.yKey);
|
||||
break;
|
||||
case 'polygons':
|
||||
dataKeys.push((settings as PolygonsDataLayerSettings).polygonKey);
|
||||
break;
|
||||
case 'circles':
|
||||
dataKeys.push((settings as CirclesDataLayerSettings).circleKey);
|
||||
break;
|
||||
}
|
||||
return dataKeys;
|
||||
};
|
||||
|
||||
|
||||
export enum DataLayerPatternType {
|
||||
pattern = 'pattern',
|
||||
@ -658,10 +684,11 @@ export interface AdditionalMapDataSourceSettings extends MapDataSourceSettings {
|
||||
dataKeys: DataKey[];
|
||||
}
|
||||
|
||||
export const additionalMapDataSourcesToDatasources = (additionalMapDataSources: AdditionalMapDataSourceSettings[]): TbMapDatasource[] => {
|
||||
export const additionalMapDataSourcesToDatasources = (additionalMapDataSources: AdditionalMapDataSourceSettings[],
|
||||
includeDataKeys = true): TbMapDatasource[] => {
|
||||
return additionalMapDataSources.map(addDs => {
|
||||
const res = mapDataSourceSettingsToDatasource(addDs);
|
||||
res.dataKeys = addDs.dataKeys;
|
||||
res.dataKeys = includeDataKeys ? addDs.dataKeys : [];
|
||||
return res;
|
||||
});
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user