Merge branch 'master' of github.com:thingsboard/thingsboard

This commit is contained in:
Igor Kulikov 2021-01-29 15:05:42 +02:00
commit 8f9a8dd61a
5 changed files with 23 additions and 1 deletions

View File

@ -626,10 +626,14 @@ export default abstract class LeafletMap {
} }
this.points = new FeatureGroup(); this.points = new FeatureGroup();
} }
let pointColor = this.options.pointColor;
for (const pointsList of pointsData) { for (const pointsList of pointsData) {
pointsList.filter(pdata => !!this.convertPosition(pdata)).forEach(data => { pointsList.filter(pdata => !!this.convertPosition(pdata)).forEach(data => {
if (this.options.useColorPointFunction) {
pointColor = safeExecute(this.options.colorPointFunction, [data, pointsData, data.dsIndex]);
}
const point = L.circleMarker(this.convertPosition(data), { const point = L.circleMarker(this.convertPosition(data), {
color: this.options.pointColor, color: pointColor,
radius: this.options.pointSize radius: this.options.pointSize
}); });
if (!this.options.pointTooltipOnRightPanel) { if (!this.options.pointTooltipOnRightPanel) {

View File

@ -201,6 +201,8 @@ export type TripAnimationSettings = {
pointAsAnchorFunction: GenericFunction; pointAsAnchorFunction: GenericFunction;
tooltipFunction: GenericFunction; tooltipFunction: GenericFunction;
labelFunction: GenericFunction; labelFunction: GenericFunction;
useColorPointFunction: boolean;
colorPointFunction: GenericFunction;
}; };
export type actionsHandler = ($event: Event, datasource: Datasource) => void; export type actionsHandler = ($event: Event, datasource: Datasource) => void;

View File

@ -301,6 +301,7 @@ export class MapWidgetController implements MapWidgetInterface {
labelFunction: parseFunction(settings.labelFunction, functionParams), labelFunction: parseFunction(settings.labelFunction, functionParams),
tooltipFunction: parseFunction(settings.tooltipFunction, functionParams), tooltipFunction: parseFunction(settings.tooltipFunction, functionParams),
colorFunction: parseFunction(settings.colorFunction, functionParams), colorFunction: parseFunction(settings.colorFunction, functionParams),
colorPointFunction: parseFunction(settings.colorPointFunction, functionParams),
polygonColorFunction: parseFunction(settings.polygonColorFunction, functionParams), polygonColorFunction: parseFunction(settings.polygonColorFunction, functionParams),
polygonTooltipFunction: parseFunction(settings.polygonTooltipFunction, functionParams), polygonTooltipFunction: parseFunction(settings.polygonTooltipFunction, functionParams),
markerImageFunction: parseFunction(settings.markerImageFunction, ['data', 'images', 'dsData', 'dsIndex']), markerImageFunction: parseFunction(settings.markerImageFunction, ['data', 'images', 'dsData', 'dsIndex']),

View File

@ -871,6 +871,15 @@ export const pointSchema =
title: 'Point color', title: 'Point color',
type: 'string' type: 'string'
}, },
useColorPointFunction: {
title: 'Use color point function',
type: 'boolean',
default: false
},
colorPointFunction: {
title: 'Color point function: f(data, dsData, dsIndex)',
type: 'string'
},
pointSize: { pointSize: {
title: 'Point size (px)', title: 'Point size (px)',
type: 'number', type: 'number',
@ -899,6 +908,11 @@ export const pointSchema =
key: 'pointColor', key: 'pointColor',
type: 'color' type: 'color'
}, },
'useColorPointFunction',
{
key: 'colorPointFunction',
type: 'javascript'
},
'pointSize', 'pointSize',
'usePointAsAnchor', 'usePointAsAnchor',
{ {

View File

@ -112,6 +112,7 @@ export class TripAnimationComponent implements OnInit, AfterViewInit, OnDestroy
this.settings.pointAsAnchorFunction = parseFunction(this.settings.pointAsAnchorFunction, ['data', 'dsData', 'dsIndex']); this.settings.pointAsAnchorFunction = parseFunction(this.settings.pointAsAnchorFunction, ['data', 'dsData', 'dsIndex']);
this.settings.tooltipFunction = parseFunction(this.settings.tooltipFunction, ['data', 'dsData', 'dsIndex']); this.settings.tooltipFunction = parseFunction(this.settings.tooltipFunction, ['data', 'dsData', 'dsIndex']);
this.settings.labelFunction = parseFunction(this.settings.labelFunction, ['data', 'dsData', 'dsIndex']); this.settings.labelFunction = parseFunction(this.settings.labelFunction, ['data', 'dsData', 'dsIndex']);
this.settings.colorPointFunction = parseFunction(this.settings.colorPointFunction, ['data', 'dsData', 'dsIndex']);
this.normalizationStep = this.settings.normalizationStep; this.normalizationStep = this.settings.normalizationStep;
const subscription = this.ctx.defaultSubscription; const subscription = this.ctx.defaultSubscription;
subscription.callbacks.onDataUpdated = () => { subscription.callbacks.onDataUpdated = () => {