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