diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml index e43a065d44..7ce3be72d9 100644 --- a/application/src/main/resources/thingsboard.yml +++ b/application/src/main/resources/thingsboard.yml @@ -258,11 +258,11 @@ sql: ttl: ts: enabled: "${SQL_TTL_TS_ENABLED:true}" - execution_interval_ms: "${SQL_TTL_TS_EXECUTION_INTERVAL:86400000}" # Number of miliseconds. The current value corresponds to one day + execution_interval_ms: "${SQL_TTL_TS_EXECUTION_INTERVAL:86400000}" # Number of milliseconds. The current value corresponds to one day ts_key_value_ttl: "${SQL_TTL_TS_TS_KEY_VALUE_TTL:0}" # Number of seconds events: enabled: "${SQL_TTL_EVENTS_ENABLED:true}" - execution_interval_ms: "${SQL_TTL_EVENTS_EXECUTION_INTERVAL:86400000}" # Number of miliseconds. The current value corresponds to one day + execution_interval_ms: "${SQL_TTL_EVENTS_EXECUTION_INTERVAL:86400000}" # Number of milliseconds. The current value corresponds to one day events_ttl: "${SQL_TTL_EVENTS_EVENTS_TTL:0}" # Number of seconds debug_events_ttl: "${SQL_TTL_EVENTS_DEBUG_EVENTS_TTL:604800}" # Number of seconds. The current value corresponds to one week diff --git a/application/src/test/java/org/thingsboard/server/mqtt/MqttNoSqlTestSuite.java b/application/src/test/java/org/thingsboard/server/mqtt/MqttNoSqlTestSuite.java index a9bb113a60..ad81884f1f 100644 --- a/application/src/test/java/org/thingsboard/server/mqtt/MqttNoSqlTestSuite.java +++ b/application/src/test/java/org/thingsboard/server/mqtt/MqttNoSqlTestSuite.java @@ -34,7 +34,7 @@ public class MqttNoSqlTestSuite { @ClassRule public static CustomSqlUnit sqlUnit = new CustomSqlUnit( Arrays.asList("sql/schema-entities-hsql.sql", "sql/system-data.sql"), - "sql/drop-all-tables.sql", + "sql/hsql/drop-all-tables.sql", "nosql-test.properties"); @ClassRule diff --git a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/adaptor/JsonConverter.java b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/adaptor/JsonConverter.java index 56e2c87d6e..8375b84ffa 100644 --- a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/adaptor/JsonConverter.java +++ b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/adaptor/JsonConverter.java @@ -391,6 +391,7 @@ public class JsonConverter { break; case JSON_V: result.add(de.getKv().getKey(), JSON_PARSER.parse(de.getKv().getJsonV())); + break; default: throw new IllegalArgumentException("Unsupported data type: " + de.getKv().getType()); } diff --git a/dao/src/test/java/org/thingsboard/server/dao/NoSqlDaoServiceTestSuite.java b/dao/src/test/java/org/thingsboard/server/dao/NoSqlDaoServiceTestSuite.java index 48af5c4eb8..824f5887e2 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/NoSqlDaoServiceTestSuite.java +++ b/dao/src/test/java/org/thingsboard/server/dao/NoSqlDaoServiceTestSuite.java @@ -32,7 +32,7 @@ public class NoSqlDaoServiceTestSuite { @ClassRule public static CustomSqlUnit sqlUnit = new CustomSqlUnit( Arrays.asList("sql/schema-entities-hsql.sql", "sql/schema-entities-idx.sql", "sql/system-data.sql", "sql/system-test.sql"), - "sql/drop-all-tables.sql", + "sql/hsql/drop-all-tables.sql", "nosql-test.properties" ); diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbAbstractGetAttributesNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbAbstractGetAttributesNode.java index 8aa15a4f38..9c46cbbc1d 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbAbstractGetAttributesNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbAbstractGetAttributesNode.java @@ -177,6 +177,7 @@ public abstract class TbAbstractGetAttributesNode { - if (!authenticated) { - this.reset(true); - } + () => { + this.reset(true); } ); diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/maps/leaflet-map.ts b/ui-ngx/src/app/modules/home/components/widget/lib/maps/leaflet-map.ts index 73b859be84..982c29105d 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/maps/leaflet-map.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/maps/leaflet-map.ts @@ -40,7 +40,6 @@ export default abstract class LeafletMap { markers: Map = new Map(); polylines: Map = new Map(); polygons: Map = new Map(); - dragMode = false; map: L.Map; map$: BehaviorSubject = new BehaviorSubject(null); ready$: Observable = this.map$.pipe(filter(map => !!map)); @@ -240,7 +239,7 @@ export default abstract class LeafletMap { convertToCustomFormat(position: L.LatLng): object { return { - [this.options.latKeyName]: position.lat % 180, + [this.options.latKeyName]: position.lat % 90, [this.options.lngKeyName]: position.lng % 180 } } diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/maps/maps-utils.ts b/ui-ngx/src/app/modules/home/components/widget/lib/maps/maps-utils.ts index fd92306349..742e024a09 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/maps/maps-utils.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/maps/maps-utils.ts @@ -75,7 +75,7 @@ const imageAspectMap = {}; function imageLoader(imageUrl: string): Observable { return new Observable((observer: Observer) => { - const image = new Image(); + const image = document.createElement('img'); // support IE image.style.position = 'absolute'; image.style.left = '-99999px'; image.style.top = '-99999px'; @@ -236,3 +236,13 @@ export function safeExecute(func: (...args: any[]) => any, params = []) { } return res; } + +export function calculateNewPointCoordinate(coordinate: number, imageSize: number): number { + let pointCoordinate = coordinate / imageSize; + if (pointCoordinate < 0) { + pointCoordinate = 0; + } else if (pointCoordinate > 1) { + pointCoordinate = 1; + } + return pointCoordinate; +} diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/maps/markers.ts b/ui-ngx/src/app/modules/home/components/widget/lib/maps/markers.ts index 34f2fc3ab6..7c8f50e13f 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/maps/markers.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/maps/markers.ts @@ -29,8 +29,8 @@ export class Marker { data: FormattedData; dataSources: FormattedData[]; - constructor(location: L.LatLngExpression, public settings: MarkerSettings, - data?: FormattedData, dataSources?, onDragendListener?) { + constructor(location: L.LatLngExpression, public settings: MarkerSettings, + data?: FormattedData, dataSources?, onDragendListener?) { this.setDataSources(data, dataSources); this.leafletMarker = L.marker(location, { draggable: settings.draggableMarker diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/maps/providers/image-map.ts b/ui-ngx/src/app/modules/home/components/widget/lib/maps/providers/image-map.ts index ae57552cd0..ac46c2772b 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/maps/providers/image-map.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/maps/providers/image-map.ts @@ -19,7 +19,7 @@ import LeafletMap from '../leaflet-map'; import { UnitedMapSettings } from '../map-models'; import { Observable } from 'rxjs'; import { map, filter, switchMap } from 'rxjs/operators'; -import { aspectCache, parseFunction } from '@home/components/widget/lib/maps/maps-utils'; +import { aspectCache, calculateNewPointCoordinate, parseFunction } from '@home/components/widget/lib/maps/maps-utils'; const maxZoom = 4;// ? @@ -79,9 +79,10 @@ export class ImageMap extends LeafletMap { if (lastCenterPos) { lastCenterPos.x *= w; lastCenterPos.y *= h; - /* this.ctx.$scope.$injector.get('$mdUtil').nextTick(() => { - this.map.panTo(center, { animate: false }); - });*/ + const center = this.pointToLatLng(lastCenterPos.x, lastCenterPos.y); + setTimeout(() => { + this.map.panTo(center, { animate: false }); + }, 0); } } @@ -97,7 +98,7 @@ export class ImageMap extends LeafletMap { width *= maxZoom; const prevWidth = this.width; const prevHeight = this.height; - if (this.width !== width) { + if (this.width !== width || updateImage) { this.width = width; this.height = width / this.aspect; if (!this.map) { @@ -134,7 +135,7 @@ export class ImageMap extends LeafletMap { convertPosition(expression): L.LatLng { if (isNaN(expression[this.options.xPosKeyName]) || isNaN(expression[this.options.yPosKeyName])) return null; - Object.assign(expression, this.posFunction(expression[this.options.xPosKeyName], expression[this.options.yPosKeyName])) + Object.assign(expression, this.posFunction(expression[this.options.xPosKeyName], expression[this.options.yPosKeyName])); return this.pointToLatLng( expression.x * this.width, expression.y * this.height); @@ -149,9 +150,10 @@ export class ImageMap extends LeafletMap { } convertToCustomFormat(position: L.LatLng): object { + const point = this.latLngToPoint(position); return { - [this.options.xPosKeyName]: (position.lng + 180) / 360, - [this.options.yPosKeyName]: (position.lat + 180) / 360 + [this.options.xPosKeyName]: calculateNewPointCoordinate(point.x, this.width), + [this.options.yPosKeyName]: calculateNewPointCoordinate(point.y, this.height) } } }