From 28853c7df5c89b2db1d965a62ef2e957338672a1 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Wed, 30 Aug 2017 20:41:20 +0300 Subject: [PATCH] UI: MS Edge/IE compatibility. --- ui/package.json | 3 +- ui/src/app/app.js | 3 ++ .../components/widget/widget.controller.js | 2 +- ui/src/app/ie.support.js | 28 +++++++++++++++++++ ui/src/app/widget/lib/CanvasDigitalGauge.js | 6 ++++ ui/src/app/widget/lib/alarms-table-widget.js | 2 +- .../app/widget/lib/entities-table-widget.js | 2 +- ui/src/app/widget/lib/image-map.js | 5 +++- ui/src/app/widget/lib/image-map.scss | 2 +- ui/webpack.config.dev.js | 2 +- ui/webpack.config.prod.js | 2 +- 11 files changed, 49 insertions(+), 8 deletions(-) diff --git a/ui/package.json b/ui/package.json index 11af5d3ad5..f2e581a9ee 100644 --- a/ui/package.json +++ b/ui/package.json @@ -1,7 +1,7 @@ { "name": "thingsboard", "private": true, - "version": "1.3.0", + "version": "1.3.1", "description": "Thingsboard UI", "licenses": [ { @@ -50,6 +50,7 @@ "canvas-gauges": "^2.0.9", "clipboard": "^1.5.15", "compass-sass-mixins": "^0.12.7", + "event-source-polyfill": "0.0.9", "flot": "git://github.com/flot/flot.git#0.9-work", "flot-curvedlines": "git://github.com/MichaelZinsmaier/CurvedLines.git#master", "font-awesome": "^4.6.3", diff --git a/ui/src/app/app.js b/ui/src/app/app.js index 9ba34b4c29..4a6f3f0a8d 100644 --- a/ui/src/app/app.js +++ b/ui/src/app/app.js @@ -15,6 +15,9 @@ */ import './ie.support'; + +import 'event-source-polyfill'; + import angular from 'angular'; import ngMaterial from 'angular-material'; import ngMdIcons from 'angular-material-icons'; diff --git a/ui/src/app/components/widget/widget.controller.js b/ui/src/app/components/widget/widget.controller.js index 0e418a4e3e..03f1b96d03 100644 --- a/ui/src/app/components/widget/widget.controller.js +++ b/ui/src/app/components/widget/widget.controller.js @@ -839,7 +839,7 @@ export default function WidgetController($scope, $state, $timeout, $window, $ele subscription.destroy(); } subscriptionInited = false; - widgetContext.subscriptions = []; + widgetContext.subscriptions = {}; if (widgetContext.inited) { widgetContext.inited = false; for (var cafId in cafs) { diff --git a/ui/src/app/ie.support.js b/ui/src/app/ie.support.js index f540a303c2..e0dce28077 100644 --- a/ui/src/app/ie.support.js +++ b/ui/src/app/ie.support.js @@ -26,4 +26,32 @@ return this.indexOf(suffix, this.length - suffix.length) !== -1; }; } + if (!String.prototype.repeat) { + String.prototype.repeat = function(count) { + if (this == null) { + throw TypeError(); + } + var string = String(this); + // `ToInteger` + var n = count ? Number(count) : 0; + if (n != n) { // better `isNaN` + n = 0; + } + // Account for out-of-bounds indices + if (n < 0 || n == Infinity) { + throw RangeError(); + } + var result = ''; + while (n) { + if (n % 2 == 1) { + result += string; + } + if (n > 1) { + string += string; + } + n >>= 1; + } + return result; + }; + } })(); \ No newline at end of file diff --git a/ui/src/app/widget/lib/CanvasDigitalGauge.js b/ui/src/app/widget/lib/CanvasDigitalGauge.js index 1ddf0e7c04..a1cfca281d 100644 --- a/ui/src/app/widget/lib/CanvasDigitalGauge.js +++ b/ui/src/app/widget/lib/CanvasDigitalGauge.js @@ -157,7 +157,13 @@ export default class CanvasDigitalGauge extends canvasGauges.BaseGauge { draw() { try { + let canvas = this.canvas; + + if (!canvas.drawWidth || !canvas.drawHeight) { + return this; + } + let [x, y, w, h] = [ -canvas.drawX, -canvas.drawY, diff --git a/ui/src/app/widget/lib/alarms-table-widget.js b/ui/src/app/widget/lib/alarms-table-widget.js index a91c2a02af..10e7aa3bc1 100644 --- a/ui/src/app/widget/lib/alarms-table-widget.js +++ b/ui/src/app/widget/lib/alarms-table-widget.js @@ -181,7 +181,7 @@ function AlarmsTableWidgetController($element, $scope, $filter, $mdMedia, $mdDia vm.displayPagination = angular.isDefined(vm.settings.displayPagination) ? vm.settings.displayPagination : true; var pageSize = vm.settings.defaultPageSize; - if (angular.isDefined(pageSize) && Number.isInteger(pageSize) && pageSize > 0) { + if (angular.isDefined(pageSize) && angular.isNumber(pageSize) && pageSize > 0) { vm.defaultPageSize = pageSize; } diff --git a/ui/src/app/widget/lib/entities-table-widget.js b/ui/src/app/widget/lib/entities-table-widget.js index 7d97fe4559..a4a968e496 100644 --- a/ui/src/app/widget/lib/entities-table-widget.js +++ b/ui/src/app/widget/lib/entities-table-widget.js @@ -167,7 +167,7 @@ function EntitiesTableWidgetController($element, $scope, $filter, $mdMedia, $tra vm.displayPagination = angular.isDefined(vm.settings.displayPagination) ? vm.settings.displayPagination : true; var pageSize = vm.settings.defaultPageSize; - if (angular.isDefined(pageSize) && Number.isInteger(pageSize) && pageSize > 0) { + if (angular.isDefined(pageSize) && angular.isNumber(pageSize) && pageSize > 0) { vm.defaultPageSize = pageSize; } diff --git a/ui/src/app/widget/lib/image-map.js b/ui/src/app/widget/lib/image-map.js index 17f3d3d497..089e9f49b3 100644 --- a/ui/src/app/widget/lib/image-map.js +++ b/ui/src/app/widget/lib/image-map.js @@ -58,14 +58,17 @@ export default class TbImageMap { } var imageMap = this; - var testImage = new Image(); // eslint-disable-line no-undef + var testImage = document.createElement('img'); // eslint-disable-line + testImage.style.visibility = 'hidden'; testImage.onload = function() { imageMap.aspect = testImage.width / testImage.height; + document.body.removeChild(testImage); //eslint-disable-line imageMap.onresize(); if (initCallback) { setTimeout(initCallback, 0); //eslint-disable-line } } + document.body.appendChild(testImage); //eslint-disable-line testImage.src = imageUrl; } diff --git a/ui/src/app/widget/lib/image-map.scss b/ui/src/app/widget/lib/image-map.scss index a4a6dac22d..b41266dd14 100644 --- a/ui/src/app/widget/lib/image-map.scss +++ b/ui/src/app/widget/lib/image-map.scss @@ -52,7 +52,7 @@ position: relative; margin: auto; background: transparent no-repeat scroll 0 0; - background-size: cover; + background-size: 100% 100%; &.is-pointer { cursor: pointer !important; diff --git a/ui/webpack.config.dev.js b/ui/webpack.config.dev.js index fa019d3292..3af7d007e1 100644 --- a/ui/webpack.config.dev.js +++ b/ui/webpack.config.dev.js @@ -51,7 +51,7 @@ module.exports = { new HtmlWebpackPlugin({ template: './src/index.html', filename: 'index.html', - title: 'Thingsboard', + title: 'ThingsBoard', inject: 'body', }), new webpack.optimize.OccurrenceOrderPlugin(), diff --git a/ui/webpack.config.prod.js b/ui/webpack.config.prod.js index a746488850..987eec27b6 100644 --- a/ui/webpack.config.prod.js +++ b/ui/webpack.config.prod.js @@ -47,7 +47,7 @@ module.exports = { new HtmlWebpackPlugin({ template: './src/index.html', filename: '../index.html', - title: 'Thingsboard', + title: 'ThingsBoard', inject: 'body', }), new webpack.optimize.OccurrenceOrderPlugin(),