Commit 7985fb31f06f4ed00783a9c33b20840e86ed33c3
1 parent
7fee32c2
Fix resize trip-animation widget and calculate dsIndex
Showing
3 changed files
with
27 additions
and
5 deletions
... | ... | @@ -125,9 +125,9 @@ |
125 | 125 | "sizeX": 10, |
126 | 126 | "sizeY": 6.5, |
127 | 127 | "resources": [], |
128 | - "templateHtml": "<trip-animation #tripanimation [ctx]=\"ctx\" ></trip-animation>", | |
128 | + "templateHtml": "<trip-animation #tripanimation [ctx]=\"ctx\"></trip-animation>", | |
129 | 129 | "templateCss": ".legend {\n font-size: 13px;\n line-height: 10px;\n}\n\n.legend table { \n border-spacing: 0px;\n border-collapse: separate;\n}\n\n.mouse-events .flot-overlay {\n cursor: crosshair; \n}\n\n", |
130 | - "controllerScript": " self.onInit = function() {\n var $scope = self.ctx.$scope;\n $scope.self = self;\n }\n \n \n self.actionSources = function () {\n return {\n 'tooltipAction': {\n name: 'widget-action.tooltip-tag-action',\n multiple: false\n }\n }\n };\n \n self.getSettingsSchema = function() {\n return TbTripAnimationWidget.getSettingsSchema();\n}\n", | |
130 | + "controllerScript": "self.onInit = function() {\n var $scope = self.ctx.$scope;\n $scope.self = self;\n}\n\nself.actionSources = function() {\n return {\n 'tooltipAction': {\n name: 'widget-action.tooltip-tag-action',\n multiple: false\n }\n }\n};\n\nself.getSettingsSchema = function() {\n return TbTripAnimationWidget.getSettingsSchema();\n}", | |
131 | 131 | "settingsSchema": "", |
132 | 132 | "dataKeySettingsSchema": "{}", |
133 | 133 | "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"entityAliasId\":null,\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"latitude\",\"color\":\"#2196f3\",\"settings\":{\"showLines\":true,\"fillLines\":true,\"showPoints\":false},\"_hash\":0.8587686344902596,\"funcBody\":\"var gpsData = [\\n37.771210000, -122.510960000,\\n 37.771990000, -122.497070000,\\n 37.772730000, -122.480740000,\\n 37.773360000, -122.466870000,\\n 37.774270000, -122.458520000,\\n 37.771980000, -122.454110000,\\n 37.768250000, -122.453380000,\\n 37.765920000, -122.456810000,\\n 37.765930000, -122.467680000,\\n 37.765500000, -122.477180000,\\n 37.765300000, -122.481660000,\\n 37.764780000, -122.493350000,\\n 37.764120000, -122.508360000,\\n 37.766410000, -122.510260000,\\n 37.770010000, -122.510830000,\\n 37.770980000, -122.510930000\\n];\\n let value = gpsData.indexOf(prevValue); \\nreturn gpsData[(value == -1 ? 0 : (value + 2) % gpsData.length)];\",\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"longitude\",\"color\":\"#ffc107\",\"settings\":{\"showLines\":true,\"fillLines\":false,\"showPoints\":false},\"_hash\":0.12775350966079668,\"funcBody\":\"var gpsData = [\\n37.771210000, -122.510960000,\\n 37.771990000, -122.497070000,\\n 37.772730000, -122.480740000,\\n 37.773360000, -122.466870000,\\n 37.774270000, -122.458520000,\\n 37.771980000, -122.454110000,\\n 37.768250000, -122.453380000,\\n 37.765920000, -122.456810000,\\n 37.765930000, -122.467680000,\\n 37.765500000, -122.477180000,\\n 37.765300000, -122.481660000,\\n 37.764780000, -122.493350000,\\n 37.764120000, -122.508360000,\\n 37.766410000, -122.510260000,\\n 37.770010000, -122.510830000,\\n 37.770980000, -122.510930000\\n];\\n let value = gpsData.indexOf(prevValue); \\nreturn gpsData[(value == -1 ? 1 : (value + 2) % gpsData.length)];\",\"units\":null,\"decimals\":null,\"usePostProcessing\":null,\"postFuncBody\":null}]}],\"timewindow\":{\"history\":{\"interval\":1000,\"timewindowMs\":60000},\"aggregation\":{\"type\":\"NONE\",\"limit\":500}},\"showTitle\":true,\"backgroundColor\":\"#fff\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"8px\",\"settings\":{\"mapProvider\":\"OpenStreetMap.Mapnik\",\"latKeyName\":\"latitude\",\"lngKeyName\":\"longitude\",\"showLabel\":true,\"label\":\"${entityName}\",\"showTooltip\":true,\"tooltipColor\":\"#fff\",\"tooltipFontColor\":\"#000\",\"tooltipOpacity\":1,\"tooltipPattern\":\"<b>${entityName}</b><br/><br/><b>Latitude:</b> ${latitude:7}<br/><b>Longitude:</b> ${longitude:7}<br/><b>End Time:</b> ${maxTime}<br/><b>Start Time:</b> ${minTime}\",\"strokeWeight\":2,\"strokeOpacity\":1,\"pointSize\":10,\"markerImageSize\":34,\"rotationAngle\":180,\"provider\":\"openstreet-map\",\"normalizationStep\":1000,\"polKeyName\":\"coordinates\",\"decoratorSymbol\":\"arrowHead\",\"decoratorSymbolSize\":10,\"decoratorCustomColor\":\"#000\",\"decoratorOffset\":\"20px\",\"endDecoratorOffset\":\"20px\",\"decoratorRepeat\":\"20px\",\"polygonTooltipPattern\":\"<b>${entityName}</b><br/><br/><b>TimeStamp:</b> ${ts:7}\",\"polygonOpacity\":0.5,\"polygonStrokeOpacity\":1,\"polygonStrokeWeight\":1,\"pointTooltipOnRightPanel\":true,\"autocloseTooltip\":true},\"title\":\"Trip Animation\",\"dropShadow\":true,\"enableFullscreen\":true,\"titleStyle\":{\"fontSize\":\"16px\",\"fontWeight\":400},\"mobileHeight\":null,\"widgetStyle\":{},\"useDashboardTimewindow\":false,\"showLegend\":false,\"actions\":{},\"legendConfig\":{\"position\":\"bottom\",\"showMin\":false,\"showMax\":false,\"showAvg\":false,\"showTotal\":false},\"displayTimewindow\":true}" | ... | ... |
... | ... | @@ -254,7 +254,7 @@ export function parseArray(input: any[]): any[] { |
254 | 254 | const obj = { |
255 | 255 | entityName: entityArray[0]?.datasource?.entityName, |
256 | 256 | $datasource: entityArray[0]?.datasource, |
257 | - dsIndex, | |
257 | + dsIndex: i, | |
258 | 258 | time: el[0], |
259 | 259 | deviceType: null |
260 | 260 | }; | ... | ... |
... | ... | @@ -17,7 +17,16 @@ |
17 | 17 | import _ from 'lodash'; |
18 | 18 | import tinycolor from 'tinycolor2'; |
19 | 19 | |
20 | -import { AfterViewInit, ChangeDetectorRef, Component, Input, OnInit, SecurityContext, ViewChild } from '@angular/core'; | |
20 | +import { | |
21 | + AfterViewInit, | |
22 | + ChangeDetectorRef, | |
23 | + Component, | |
24 | + Input, | |
25 | + OnDestroy, | |
26 | + OnInit, | |
27 | + SecurityContext, | |
28 | + ViewChild | |
29 | +} from '@angular/core'; | |
21 | 30 | import { MapWidgetController, TbMapWidgetV2 } from '../lib/maps/map-widget2'; |
22 | 31 | import { FormattedData, MapProviders, TripAnimationSettings } from '../lib/maps/map-models'; |
23 | 32 | import { addCondition, addGroupInfo, addToSchema, initSchema } from '@app/core/schema-utils'; |
... | ... | @@ -36,6 +45,7 @@ import { |
36 | 45 | import { JsonSettingsSchema, WidgetConfig } from '@shared/models/widget.models'; |
37 | 46 | import moment from 'moment'; |
38 | 47 | import { isUndefined } from '@core/utils'; |
48 | +import { ResizeObserver } from '@juggle/resize-observer'; | |
39 | 49 | |
40 | 50 | |
41 | 51 | @Component({ |
... | ... | @@ -44,7 +54,9 @@ import { isUndefined } from '@core/utils'; |
44 | 54 | templateUrl: './trip-animation.component.html', |
45 | 55 | styleUrls: ['./trip-animation.component.scss'] |
46 | 56 | }) |
47 | -export class TripAnimationComponent implements OnInit, AfterViewInit { | |
57 | +export class TripAnimationComponent implements OnInit, AfterViewInit, OnDestroy { | |
58 | + | |
59 | + private mapResize$: ResizeObserver; | |
48 | 60 | |
49 | 61 | constructor(private cd: ChangeDetectorRef, private sanitizer: DomSanitizer) { } |
50 | 62 | |
... | ... | @@ -113,6 +125,16 @@ export class TripAnimationComponent implements OnInit, AfterViewInit { |
113 | 125 | ngAfterViewInit() { |
114 | 126 | const ctxCopy: WidgetContext = _.cloneDeep(this.ctx); |
115 | 127 | this.mapWidget = new MapWidgetController(MapProviders.openstreet, false, ctxCopy, this.mapContainer.nativeElement); |
128 | + this.mapResize$ = new ResizeObserver(() => { | |
129 | + this.mapWidget.resize(); | |
130 | + }); | |
131 | + this.mapResize$.observe(this.mapContainer.nativeElement); | |
132 | + } | |
133 | + | |
134 | + ngOnDestroy() { | |
135 | + if (this.mapResize$) { | |
136 | + this.mapResize$.disconnect(); | |
137 | + } | |
116 | 138 | } |
117 | 139 | |
118 | 140 | timeUpdated(time: number) { | ... | ... |