diff --git a/application/src/main/data/json/system/widget_bundles/cards.json b/application/src/main/data/json/system/widget_bundles/cards.json
index f48ef37160..6550f58da4 100644
--- a/application/src/main/data/json/system/widget_bundles/cards.json
+++ b/application/src/main/data/json/system/widget_bundles/cards.json
@@ -15,7 +15,7 @@
"resources": [],
"templateHtml": "",
"templateCss": "#container {\n overflow: auto;\n}\n\n.tbDatasource-container {\n margin: 5px;\n padding: 8px;\n}\n\n.tbDatasource-title {\n font-size: 1.200rem;\n font-weight: 500;\n padding-bottom: 10px;\n}\n\n.tbDatasource-table {\n width: 100%;\n box-shadow: 0 0 10px #ccc;\n border-collapse: collapse;\n white-space: nowrap;\n font-size: 1.000rem;\n color: #757575;\n}\n\n.tbDatasource-table td {\n position: relative;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n padding: 0px 18px;\n box-sizing: border-box;\n}",
- "controllerScript": "self.onInit = function() {\n \n self.ctx.datasourceTitleCells = [];\n self.ctx.valueCells = [];\n self.ctx.labelCells = [];\n \n for (var i=0; i < self.ctx.datasources.length; i++) {\n var tbDatasource = self.ctx.datasources[i];\n\n var datasourceId = 'tbDatasource' + i;\n self.ctx.$container.append(\n \"
\"\n );\n\n var datasourceContainer = $('#' + datasourceId,\n self.ctx.$container);\n\n datasourceContainer.append(\n \"\" +\n tbDatasource.name + \"
\"\n );\n \n var datasourceTitleCell = $('.tbDatasource-title', datasourceContainer);\n self.ctx.datasourceTitleCells.push(datasourceTitleCell);\n \n var tableId = 'table' + i;\n datasourceContainer.append(\n \"\"\n );\n var table = $('#' + tableId, self.ctx.$container);\n\n for (var a = 0; a < tbDatasource.dataKeys.length; a++) {\n var dataKey = tbDatasource.dataKeys[a];\n var labelCellId = 'labelCell' + a;\n var cellId = 'cell' + a;\n table.append(\"| \" + dataKey.label +\n \" | |
\");\n var labelCell = $('#' + labelCellId, table);\n self.ctx.labelCells.push(labelCell);\n var valueCell = $('#' + cellId, table);\n self.ctx.valueCells.push(valueCell);\n }\n } \n \n self.onResize();\n}\n\nself.onDataUpdated = function() {\n for (var i = 0; i < self.ctx.valueCells.length; i++) {\n var cellData = self.ctx.data[i];\n console.log(self.ctx); //del\n if (cellData && cellData.data && cellData.data.length > 0) {\n var tvPair = cellData.data[cellData.data.length -\n 1];\n var value = tvPair[1];\n var textValue;\n //toDo -> + IsNumber\n \n if (isNumber(value)) {\n var decimals = self.ctx.decimals;\n var units = self.ctx.units;\n if (cellData.dataKey.decimals || cellData.dataKey.decimals === 0) {\n decimals = cellData.dataKey.decimals;\n }\n if (cellData.dataKey.units) {\n units = cellData.dataKey.units;\n }\n txtValue = self.ctx.utils.formatValue(value, decimals, units, true);\n } else {\n txtValue = value;\n }\n self.ctx.valueCells[i].html(txtValue);\n }\n }\n \n function isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n}\n\nself.onResize = function() {\n var datasoirceTitleFontSize = self.ctx.height/8;\n if (self.ctx.width/self.ctx.height <= 1.5) {\n datasoirceTitleFontSize = self.ctx.width/12;\n }\n datasoirceTitleFontSize = Math.min(datasoirceTitleFontSize, 20);\n for (var i = 0; i < self.ctx.datasourceTitleCells.length; i++) {\n self.ctx.datasourceTitleCells[i].css('font-size', datasoirceTitleFontSize+'px');\n }\n var valueFontSize = self.ctx.height/9;\n var labelFontSize = self.ctx.height/9;\n if (self.ctx.width/self.ctx.height <= 1.5) {\n valueFontSize = self.ctx.width/15;\n labelFontSize = self.ctx.width/15;\n }\n valueFontSize = Math.min(valueFontSize, 18);\n labelFontSize = Math.min(labelFontSize, 18);\n\n for (i = 0; i < self.ctx.valueCells; i++) {\n self.ctx.valueCells[i].css('font-size', valueFontSize+'px');\n self.ctx.valueCells[i].css('height', valueFontSize*2.5+'px');\n self.ctx.valueCells[i].css('padding', '0px ' + valueFontSize + 'px');\n self.ctx.labelCells[i].css('font-size', labelFontSize+'px');\n self.ctx.labelCells[i].css('height', labelFontSize*2.5+'px');\n self.ctx.labelCells[i].css('padding', '0px ' + labelFontSize + 'px');\n } \n}\n\nself.onDestroy = function() {\n}\n",
+ "controllerScript": "self.onInit = function() {\n \n self.ctx.datasourceTitleCells = [];\n self.ctx.valueCells = [];\n self.ctx.labelCells = [];\n \n for (var i=0; i < self.ctx.datasources.length; i++) {\n var tbDatasource = self.ctx.datasources[i];\n\n var datasourceId = 'tbDatasource' + i;\n self.ctx.$container.append(\n \"\"\n );\n\n var datasourceContainer = $('#' + datasourceId,\n self.ctx.$container);\n\n datasourceContainer.append(\n \"\" +\n tbDatasource.name + \"
\"\n );\n \n var datasourceTitleCell = $('.tbDatasource-title', datasourceContainer);\n self.ctx.datasourceTitleCells.push(datasourceTitleCell);\n \n var tableId = 'table' + i;\n datasourceContainer.append(\n \"\"\n );\n var table = $('#' + tableId, self.ctx.$container);\n\n for (var a = 0; a < tbDatasource.dataKeys.length; a++) {\n var dataKey = tbDatasource.dataKeys[a];\n var labelCellId = 'labelCell' + a;\n var cellId = 'cell' + a;\n table.append(\"| \" + dataKey.label +\n \" | |
\");\n var labelCell = $('#' + labelCellId, table);\n self.ctx.labelCells.push(labelCell);\n var valueCell = $('#' + cellId, table);\n self.ctx.valueCells.push(valueCell);\n }\n } \n \n self.onResize();\n}\n\nself.onDataUpdated = function() {\n for (var i = 0; i < self.ctx.valueCells.length; i++) {\n var cellData = self.ctx.data[i];\n if (cellData && cellData.data && cellData.data.length > 0) {\n var tvPair = cellData.data[cellData.data.length -\n 1];\n var value = tvPair[1];\n var textValue;\n //toDo -> + IsNumber\n \n if (isNumber(value)) {\n var decimals = self.ctx.decimals;\n var units = self.ctx.units;\n if (cellData.dataKey.decimals || cellData.dataKey.decimals === 0) {\n decimals = cellData.dataKey.decimals;\n }\n if (cellData.dataKey.units) {\n units = cellData.dataKey.units;\n }\n txtValue = self.ctx.utils.formatValue(value, decimals, units, true);\n } else {\n txtValue = value;\n }\n self.ctx.valueCells[i].html(txtValue);\n }\n }\n \n function isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n}\n\nself.onResize = function() {\n var datasoirceTitleFontSize = self.ctx.height/8;\n if (self.ctx.width/self.ctx.height <= 1.5) {\n datasoirceTitleFontSize = self.ctx.width/12;\n }\n datasoirceTitleFontSize = Math.min(datasoirceTitleFontSize, 20);\n for (var i = 0; i < self.ctx.datasourceTitleCells.length; i++) {\n self.ctx.datasourceTitleCells[i].css('font-size', datasoirceTitleFontSize+'px');\n }\n var valueFontSize = self.ctx.height/9;\n var labelFontSize = self.ctx.height/9;\n if (self.ctx.width/self.ctx.height <= 1.5) {\n valueFontSize = self.ctx.width/15;\n labelFontSize = self.ctx.width/15;\n }\n valueFontSize = Math.min(valueFontSize, 18);\n labelFontSize = Math.min(labelFontSize, 18);\n\n for (i = 0; i < self.ctx.valueCells; i++) {\n self.ctx.valueCells[i].css('font-size', valueFontSize+'px');\n self.ctx.valueCells[i].css('height', valueFontSize*2.5+'px');\n self.ctx.valueCells[i].css('padding', '0px ' + valueFontSize + 'px');\n self.ctx.labelCells[i].css('font-size', labelFontSize+'px');\n self.ctx.labelCells[i].css('height', labelFontSize*2.5+'px');\n self.ctx.labelCells[i].css('padding', '0px ' + labelFontSize + 'px');\n } \n}\n\nself.onDestroy = function() {\n}\n",
"settingsSchema": "{}",
"dataKeySettingsSchema": "{}\n",
"defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Random\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.15479322438769105,\"funcBody\":\"var value = prevValue + Math.random() * 100 - 50;\\nvar multiplier = Math.pow(10, 2 || 0);\\nvar value = Math.round(value * multiplier) / multiplier;\\nif (value < -1000) {\\n\\tvalue = -1000;\\n} else if (value > 1000) {\\n\\tvalue = 1000;\\n}\\nreturn value;\"}]}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"#fff\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"8px\",\"settings\":{},\"title\":\"Attributes card\"}"
diff --git a/ui/package.json b/ui/package.json
index 7874170159..9fb0cc54d7 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -26,7 +26,7 @@
"angular-gridster": "^0.13.14",
"angular-hotkeys": "^1.7.0",
"angular-jwt": "^0.1.6",
- "angular-material": "1.1.1",
+ "angular-material": "1.1.9",
"angular-material-data-table": "^0.10.9",
"angular-material-icons": "^0.7.1",
"angular-material-expansion-panel": "^0.7.2",
@@ -63,7 +63,7 @@
"leaflet-providers": "^1.1.17",
"material-ui": "^0.16.1",
"material-ui-number-input": "^5.0.16",
- "md-color-picker": "^0.2.6",
+ "md-color-picker": "0.2.6",
"mdPickers": "git://github.com/alenaksu/mdPickers.git#0.7.5",
"moment": "^2.15.0",
"ngclipboard": "^1.1.1",
diff --git a/ui/src/app/alarm/alarm-row.directive.js b/ui/src/app/alarm/alarm-row.directive.js
index 37eec7cc70..681498ff76 100644
--- a/ui/src/app/alarm/alarm-row.directive.js
+++ b/ui/src/app/alarm/alarm-row.directive.js
@@ -50,7 +50,7 @@ export default function AlarmRowDirective($compile, $templateCache, types, $mdDi
parent: angular.element($document[0].body),
targetEvent: $event,
fullscreen: true,
- skipHide: true,
+ multiple: true,
onShowing: function(scope, element) {
onShowingCallback.onShowing(scope, element);
}
diff --git a/ui/src/app/app.js b/ui/src/app/app.js
index 824dbb0f69..31b53a0d03 100644
--- a/ui/src/app/app.js
+++ b/ui/src/app/app.js
@@ -31,6 +31,7 @@ import 'angular-translate-interpolation-messageformat';
import 'md-color-picker';
import mdPickers from 'mdPickers';
import ngSanitize from 'angular-sanitize';
+import FBAngular from 'angular-fullscreen';
import vAccordion from 'v-accordion';
import ngAnimate from 'angular-animate';
import 'angular-websocket';
@@ -65,6 +66,7 @@ import 'angular-material-expansion-panel/dist/md-expansion-panel.min.css';
import 'ngFlowchart/dist/flowchart.css';
import '../scss/main.scss';
+import thingsboardThirdpartyFix from './common/thirdparty-fix';
import thingsboardTranslateHandler from './locale/translate-handler';
import thingsboardLogin from './login';
import thingsboardDialogs from './components/datakey-config-dialog.controller';
@@ -105,6 +107,7 @@ angular.module('thingsboard', [
'mdColorPicker',
mdPickers,
ngSanitize,
+ FBAngular.name,
vAccordion,
ngAnimate,
'ngWebSocket',
@@ -118,6 +121,7 @@ angular.module('thingsboard', [
react.name,
'flow',
'flowchart',
+ thingsboardThirdpartyFix,
thingsboardTranslateHandler,
thingsboardLogin,
thingsboardDialogs,
diff --git a/ui/src/app/audit/audit-log-row.directive.js b/ui/src/app/audit/audit-log-row.directive.js
index 2c2e170690..f13a0d27c8 100644
--- a/ui/src/app/audit/audit-log-row.directive.js
+++ b/ui/src/app/audit/audit-log-row.directive.js
@@ -48,7 +48,7 @@ export default function AuditLogRowDirective($compile, $templateCache, types, $m
parent: angular.element($document[0].body),
targetEvent: $event,
fullscreen: true,
- skipHide: true,
+ multiple: true,
onShowing: function(scope, element) {
onShowingCallback.onShowing(scope, element);
}
diff --git a/ui/src/app/common/thirdparty-fix.js b/ui/src/app/common/thirdparty-fix.js
new file mode 100644
index 0000000000..b00a7822c5
--- /dev/null
+++ b/ui/src/app/common/thirdparty-fix.js
@@ -0,0 +1,195 @@
+/*
+ * Copyright © 2016-2018 The Thingsboard Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import tinycolor from 'tinycolor2';
+
+export default angular.module('thingsboard.thirdpartyFix', [])
+ .factory('Fullscreen', Fullscreen)
+ .factory('$mdColorPicker', mdColorPicker)
+ .name;
+
+/*@ngInject*/
+function Fullscreen($document, $rootScope) {
+
+ /* eslint-disable */
+
+ var document = $document[0];
+
+ // ensure ALLOW_KEYBOARD_INPUT is available and enabled
+ var isKeyboardAvailbleOnFullScreen = (typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element) && Element.ALLOW_KEYBOARD_INPUT;
+
+ var emitter = $rootScope.$new();
+
+ // listen event on document instead of element to avoid firefox limitation
+ // see https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode
+ $document.on('fullscreenchange webkitfullscreenchange mozfullscreenchange MSFullscreenChange', function(){
+ emitter.$emit('FBFullscreen.change', serviceInstance.isEnabled());
+ });
+
+ var serviceInstance = {
+ $on: angular.bind(emitter, emitter.$on),
+ all: function() {
+ serviceInstance.enable( document.documentElement );
+ },
+ enable: function(element) {
+ if(element.requestFullScreen) {
+ element.requestFullScreen();
+ } else if(element.mozRequestFullScreen) {
+ element.mozRequestFullScreen();
+ } else if(element.webkitRequestFullscreen) {
+ // Safari temporary fix
+ //if (/Version\/[\d]{1,2}(\.[\d]{1,2}){1}(\.(\d){1,2}){0,1} Safari/.test(navigator.userAgent)) {
+ if (/Safari/.test(navigator.userAgent)) {
+ element.webkitRequestFullscreen();
+ } else {
+ element.webkitRequestFullscreen(isKeyboardAvailbleOnFullScreen);
+ }
+ } else if (element.msRequestFullscreen) {
+ element.msRequestFullscreen();
+ }
+ },
+ cancel: function() {
+ if(document.cancelFullScreen) {
+ document.cancelFullScreen();
+ } else if(document.mozCancelFullScreen) {
+ document.mozCancelFullScreen();
+ } else if(document.webkitExitFullscreen) {
+ document.webkitExitFullscreen();
+ } else if (document.msExitFullscreen) {
+ document.msExitFullscreen();
+ }
+ },
+ isEnabled: function(){
+ var fullscreenElement = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement;
+ return fullscreenElement ? true : false;
+ },
+ toggleAll: function(){
+ serviceInstance.isEnabled() ? serviceInstance.cancel() : serviceInstance.all();
+ },
+ isSupported: function(){
+ var docElm = document.documentElement;
+ var requestFullscreen = docElm.requestFullScreen || docElm.mozRequestFullScreen || docElm.webkitRequestFullscreen || docElm.msRequestFullscreen;
+ return requestFullscreen ? true : false;
+ }
+ };
+
+ /* eslint-enable */
+
+ return serviceInstance;
+}
+
+/*@ngInject*/
+function mdColorPicker($q, $mdDialog, mdColorPickerHistory) {
+ var dialog;
+
+ /* eslint-disable angular/definedundefined */
+
+ return {
+ show: function (options)
+ {
+ if ( options === undefined ) {
+ options = {};
+ }
+ //console.log( 'DIALOG OPTIONS', options );
+ // Defaults
+ // Dialog Properties
+ options.hasBackdrop = options.hasBackdrop === undefined ? true : options.hasBackdrop;
+ options.clickOutsideToClose = options.clickOutsideToClose === undefined ? true : options.clickOutsideToClose;
+ options.defaultValue = options.defaultValue === undefined ? '#FFFFFF' : options.defaultValue;
+ options.focusOnOpen = options.focusOnOpen === undefined ? false : options.focusOnOpen;
+ options.preserveScope = options.preserveScope === undefined ? true : options.preserveScope;
+ if (options.skipHide !== undefined) {
+ options.multiple = options.skipHide;
+ }
+ if (options.multiple === undefined) {
+ options.multiple = true;
+ }
+
+ // mdColorPicker Properties
+ options.mdColorAlphaChannel = options.mdColorAlphaChannel === undefined ? false : options.mdColorAlphaChannel;
+ options.mdColorSpectrum = options.mdColorSpectrum === undefined ? true : options.mdColorSpectrum;
+ options.mdColorSliders = options.mdColorSliders === undefined ? true : options.mdColorSliders;
+ options.mdColorGenericPalette = options.mdColorGenericPalette === undefined ? true : options.mdColorGenericPalette;
+ options.mdColorMaterialPalette = options.mdColorMaterialPalette === undefined ? true : options.mdColorMaterialPalette;
+ options.mdColorHistory = options.mdColorHistory === undefined ? true : options.mdColorHistory;
+
+
+ dialog = $mdDialog.show({
+ templateUrl: 'mdColorPickerDialog.tpl.html',
+ hasBackdrop: options.hasBackdrop,
+ clickOutsideToClose: options.clickOutsideToClose,
+
+ controller: ['$scope', 'options', function( $scope, options ) {
+ //console.log( "DIALOG CONTROLLER OPEN", Date.now() - dateClick );
+ $scope.close = function close()
+ {
+ $mdDialog.cancel();
+ };
+ $scope.ok = function ok()
+ {
+ $mdDialog.hide( $scope.value );
+ };
+ $scope.hide = $scope.ok;
+
+
+
+ $scope.value = options.value;
+ $scope.default = options.defaultValue;
+ $scope.random = options.random;
+
+ $scope.mdColorAlphaChannel = options.mdColorAlphaChannel;
+ $scope.mdColorSpectrum = options.mdColorSpectrum;
+ $scope.mdColorSliders = options.mdColorSliders;
+ $scope.mdColorGenericPalette = options.mdColorGenericPalette;
+ $scope.mdColorMaterialPalette = options.mdColorMaterialPalette;
+ $scope.mdColorHistory = options.mdColorHistory;
+ $scope.mdColorDefaultTab = options.mdColorDefaultTab;
+
+ }],
+
+ locals: {
+ options: options,
+ },
+ preserveScope: options.preserveScope,
+ multiple: options.multiple,
+
+ targetEvent: options.$event,
+ focusOnOpen: options.focusOnOpen,
+ autoWrap: false,
+ onShowing: function() {
+ // console.log( "DIALOG OPEN START", Date.now() - dateClick );
+ },
+ onComplete: function() {
+ // console.log( "DIALOG OPEN COMPLETE", Date.now() - dateClick );
+ }
+ });
+
+ dialog.then(function (value) {
+ mdColorPickerHistory.add(new tinycolor(value));
+ }, function () { });
+
+ return dialog;
+ },
+ hide: function() {
+ return dialog.hide();
+ },
+ cancel: function() {
+ return dialog.cancel();
+ }
+ };
+
+ /* eslint-enable angular/definedundefined */
+}
diff --git a/ui/src/app/components/datasource-entity.directive.js b/ui/src/app/components/datasource-entity.directive.js
index b02a30d206..6bc1932be6 100644
--- a/ui/src/app/components/datasource-entity.directive.js
+++ b/ui/src/app/components/datasource-entity.directive.js
@@ -186,7 +186,7 @@ function DatasourceEntity($compile, $templateCache, $q, $mdDialog, $window, $doc
random: tinycolor.random(),
clickOutsideToClose: false,
hasBackdrop: false,
- skipHide: true,
+ multiple: true,
preserveScope: false,
mdColorAlphaChannel: true,
@@ -220,7 +220,7 @@ function DatasourceEntity($compile, $templateCache, $q, $mdDialog, $window, $doc
parent: angular.element($document[0].body),
fullscreen: true,
targetEvent: event,
- skipHide: true,
+ multiple: true,
onComplete: function () {
var w = angular.element($window);
w.triggerHandler('resize');
diff --git a/ui/src/app/components/datasource-entity.tpl.html b/ui/src/app/components/datasource-entity.tpl.html
index db6fd3be96..8f257874c5 100644
--- a/ui/src/app/components/datasource-entity.tpl.html
+++ b/ui/src/app/components/datasource-entity.tpl.html
@@ -26,7 +26,6 @@
@@ -78,7 +77,6 @@
diff --git a/ui/src/app/components/datasource-func.directive.js b/ui/src/app/components/datasource-func.directive.js
index 7515b61cc7..982685ffe1 100644
--- a/ui/src/app/components/datasource-func.directive.js
+++ b/ui/src/app/components/datasource-func.directive.js
@@ -139,7 +139,7 @@ function DatasourceFunc($compile, $templateCache, $mdDialog, $window, $document,
random: tinycolor.random(),
clickOutsideToClose: false,
hasBackdrop: false,
- skipHide: true,
+ multiple: true,
preserveScope: false,
mdColorAlphaChannel: true,
@@ -173,7 +173,7 @@ function DatasourceFunc($compile, $templateCache, $mdDialog, $window, $document,
parent: angular.element($document[0].body),
fullscreen: true,
targetEvent: event,
- skipHide: true,
+ multiple: true,
onComplete: function () {
var w = angular.element($window);
w.triggerHandler('resize');
diff --git a/ui/src/app/components/json-form.directive.js b/ui/src/app/components/json-form.directive.js
index b016f57d89..97b7bfb05f 100644
--- a/ui/src/app/components/json-form.directive.js
+++ b/ui/src/app/components/json-form.directive.js
@@ -96,7 +96,7 @@ function JsonForm($compile, $templateCache, $mdColorPicker) {
random: tinycolor.random(),
clickOutsideToClose: false,
hasBackdrop: false,
- skipHide: true,
+ multiple: true,
preserveScope: false,
mdColorAlphaChannel: true,
diff --git a/ui/src/app/components/material-icon-select.directive.js b/ui/src/app/components/material-icon-select.directive.js
index 67caff203f..f3efe63eba 100644
--- a/ui/src/app/components/material-icon-select.directive.js
+++ b/ui/src/app/components/material-icon-select.directive.js
@@ -67,7 +67,7 @@ function MaterialIconSelect($compile, $templateCache, $document, $mdDialog) {
templateUrl: materialIconsDialogTemplate,
parent: angular.element($document[0].body),
locals: {icon: scope.icon},
- skipHide: true,
+ multiple: true,
fullscreen: true,
targetEvent: $event
}).then(function (icon) {
diff --git a/ui/src/app/components/widget/action/manage-widget-actions.directive.js b/ui/src/app/components/widget/action/manage-widget-actions.directive.js
index 81103227ba..959720410e 100644
--- a/ui/src/app/components/widget/action/manage-widget-actions.directive.js
+++ b/ui/src/app/components/widget/action/manage-widget-actions.directive.js
@@ -164,7 +164,7 @@ function ManageWidgetActionsController($rootScope, $scope, $document, $mdDialog,
.cancel($translate.instant('action.no'))
.ok($translate.instant('action.yes'));
- confirm._options.skipHide = true;
+ confirm._options.multiple = true;
confirm._options.fullscreen = true;
$mdDialog.show(confirm).then(function () {
@@ -212,7 +212,7 @@ function ManageWidgetActionsController($rootScope, $scope, $document, $mdDialog,
locals: {isAdd: isAdd, fetchDashboardStates: vm.fetchDashboardStates,
actionSources: availableActionSources, widgetActions: vm.widgetActions,
action: angular.copy(action)},
- skipHide: true,
+ multiple: true,
fullscreen: true,
targetEvent: $event
}).then(function (action) {
diff --git a/ui/src/app/dashboard/add-widget.controller.js b/ui/src/app/dashboard/add-widget.controller.js
index caa69d6f98..fd665fd1a6 100644
--- a/ui/src/app/dashboard/add-widget.controller.js
+++ b/ui/src/app/dashboard/add-widget.controller.js
@@ -166,7 +166,7 @@ export default function AddWidgetController($scope, widgetService, entityService
},
parent: angular.element($document[0].body),
fullscreen: true,
- skipHide: true,
+ multiple: true,
targetEvent: event
}).then(function (singleEntityAlias) {
vm.dashboard.configuration.entityAliases[singleEntityAlias.id] = singleEntityAlias;
diff --git a/ui/src/app/dashboard/dashboard.controller.js b/ui/src/app/dashboard/dashboard.controller.js
index 6df48df032..3f32e1b92c 100644
--- a/ui/src/app/dashboard/dashboard.controller.js
+++ b/ui/src/app/dashboard/dashboard.controller.js
@@ -463,7 +463,7 @@ export default function DashboardController(types, utils, dashboardUtils, widget
}
},
parent: angular.element($document[0].body),
- skipHide: true,
+ multiple: true,
fullscreen: true,
targetEvent: $event
}).then(function (entityAliases) {
@@ -488,7 +488,7 @@ export default function DashboardController(types, utils, dashboardUtils, widget
gridSettings: gridSettings
},
parent: angular.element($document[0].body),
- skipHide: true,
+ multiple: true,
fullscreen: true,
targetEvent: $event
}).then(function (data) {
@@ -510,7 +510,7 @@ export default function DashboardController(types, utils, dashboardUtils, widget
layouts: angular.copy(vm.dashboard.configuration.states[vm.dashboardCtx.state].layouts)
},
parent: angular.element($document[0].body),
- skipHide: true,
+ multiple: true,
fullscreen: true,
targetEvent: $event
}).then(function (layouts) {
@@ -531,7 +531,7 @@ export default function DashboardController(types, utils, dashboardUtils, widget
states: states
},
parent: angular.element($document[0].body),
- skipHide: true,
+ multiple: true,
fullscreen: true,
targetEvent: $event
}).then(function (states) {
@@ -873,7 +873,7 @@ export default function DashboardController(types, utils, dashboardUtils, widget
templateUrl: selectTargetLayoutTemplate,
parent: angular.element($document[0].body),
fullscreen: true,
- skipHide: true,
+ multiple: true,
targetEvent: $event
}).then(
function success(layoutId) {
@@ -941,7 +941,7 @@ export default function DashboardController(types, utils, dashboardUtils, widget
},
parent: angular.element($document[0].body),
fullscreen: true,
- skipHide: true,
+ multiple: true,
targetEvent: event,
onComplete: function () {
var w = angular.element($window);
diff --git a/ui/src/app/dashboard/edit-widget.directive.js b/ui/src/app/dashboard/edit-widget.directive.js
index e6858b4227..f8aee69224 100644
--- a/ui/src/app/dashboard/edit-widget.directive.js
+++ b/ui/src/app/dashboard/edit-widget.directive.js
@@ -131,7 +131,7 @@ export default function EditWidgetDirective($compile, $templateCache, types, wid
},
parent: angular.element($document[0].body),
fullscreen: true,
- skipHide: true,
+ multiple: true,
targetEvent: event
}).then(function (singleEntityAlias) {
scope.dashboard.configuration.entityAliases[singleEntityAlias.id] = singleEntityAlias;
diff --git a/ui/src/app/dashboard/layouts/manage-dashboard-layouts.controller.js b/ui/src/app/dashboard/layouts/manage-dashboard-layouts.controller.js
index 5ce8a6ca23..828bd6f8a7 100644
--- a/ui/src/app/dashboard/layouts/manage-dashboard-layouts.controller.js
+++ b/ui/src/app/dashboard/layouts/manage-dashboard-layouts.controller.js
@@ -51,7 +51,7 @@ export default function ManageDashboardLayoutsController($scope, $mdDialog, $doc
gridSettings: gridSettings
},
parent: angular.element($document[0].body),
- skipHide: true,
+ multiple: true,
fullscreen: true,
targetEvent: $event
}).then(function (data) {
diff --git a/ui/src/app/dashboard/states/manage-dashboard-states.controller.js b/ui/src/app/dashboard/states/manage-dashboard-states.controller.js
index 98df466599..298b2ab5e7 100644
--- a/ui/src/app/dashboard/states/manage-dashboard-states.controller.js
+++ b/ui/src/app/dashboard/states/manage-dashboard-states.controller.js
@@ -111,7 +111,7 @@ export default function ManageDashboardStatesController($scope, $mdDialog, $filt
templateUrl: dashboardStateDialogTemplate,
parent: angular.element($document[0].body),
locals: {isAdd: isAdd, allStates: vm.allStates, state: angular.copy(state)},
- skipHide: true,
+ multiple: true,
fullscreen: true,
targetEvent: $event
}).then(function (state) {
@@ -163,7 +163,7 @@ export default function ManageDashboardStatesController($scope, $mdDialog, $filt
.cancel($translate.instant('action.no'))
.ok($translate.instant('action.yes'));
- confirm._options.skipHide = true;
+ confirm._options.multiple = true;
confirm._options.fullscreen = true;
$mdDialog.show(confirm).then(function () {
diff --git a/ui/src/app/entity/alias/entity-aliases.controller.js b/ui/src/app/entity/alias/entity-aliases.controller.js
index 732f10f456..49f28c9122 100644
--- a/ui/src/app/entity/alias/entity-aliases.controller.js
+++ b/ui/src/app/entity/alias/entity-aliases.controller.js
@@ -126,7 +126,7 @@ export default function EntityAliasesController(utils, entityService, toast, $sc
},
parent: angular.element($document[0].body),
fullscreen: true,
- skipHide: true,
+ multiple: true,
targetEvent: $event
}).then(function (alias) {
if (isAdd) {
@@ -158,7 +158,7 @@ export default function EntityAliasesController(utils, entityService, toast, $sc
.ariaLabel($translate.instant('entity.unable-delete-entity-alias-title'))
.ok($translate.instant('action.close'))
.targetEvent($event);
- alert._options.skipHide = true;
+ alert._options.multiple = true;
alert._options.fullscreen = true;
$mdDialog.show(alert);
diff --git a/ui/src/app/entity/attribute/add-widget-to-dashboard-dialog.controller.js b/ui/src/app/entity/attribute/add-widget-to-dashboard-dialog.controller.js
index 5346e038f8..f39593c2be 100644
--- a/ui/src/app/entity/attribute/add-widget-to-dashboard-dialog.controller.js
+++ b/ui/src/app/entity/attribute/add-widget-to-dashboard-dialog.controller.js
@@ -53,7 +53,7 @@ export default function AddWidgetToDashboardDialogController($scope, $mdDialog,
states: states
},
fullscreen: true,
- skipHide: true,
+ multiple: true,
targetEvent: $event
}).then(
function success(stateId) {
@@ -81,7 +81,7 @@ export default function AddWidgetToDashboardDialogController($scope, $mdDialog,
templateUrl: selectTargetLayoutTemplate,
parent: angular.element($document[0].body),
fullscreen: true,
- skipHide: true,
+ multiple: true,
targetEvent: $event
}).then(
function success(layoutId) {
diff --git a/ui/src/app/entity/relation/relation-table.directive.js b/ui/src/app/entity/relation/relation-table.directive.js
index 872042c2fa..d2586c4845 100644
--- a/ui/src/app/entity/relation/relation-table.directive.js
+++ b/ui/src/app/entity/relation/relation-table.directive.js
@@ -160,7 +160,7 @@ function RelationTableController($scope, $q, $mdDialog, $document, $translate, $
showingCallback: onShowingCallback},
targetEvent: $event,
fullscreen: true,
- skipHide: true,
+ multiple: true,
onShowing: function(scope, element) {
onShowingCallback.onShowing(scope, element);
}
diff --git a/ui/src/app/event/event-row.directive.js b/ui/src/app/event/event-row.directive.js
index b808fb8fff..5f84187e2c 100644
--- a/ui/src/app/event/event-row.directive.js
+++ b/ui/src/app/event/event-row.directive.js
@@ -79,7 +79,7 @@ export default function EventRowDirective($compile, $templateCache, $mdDialog, $
parent: angular.element($document[0].body),
fullscreen: true,
targetEvent: $event,
- skipHide: true,
+ multiple: true,
onShowing: function(scope, element) {
onShowingCallback.onShowing(scope, element);
}
diff --git a/ui/src/app/extension/extension-table.directive.js b/ui/src/app/extension/extension-table.directive.js
index 18d281c0b0..73c5d93e80 100644
--- a/ui/src/app/extension/extension-table.directive.js
+++ b/ui/src/app/extension/extension-table.directive.js
@@ -208,7 +208,7 @@ function ExtensionTableController($scope, $filter, $document, $translate, $timeo
bindToController: true,
targetEvent: $event,
fullscreen: true,
- skipHide: true
+ multiple: true
}).then(function() {
reloadExtensions();
}, function () {
diff --git a/ui/src/app/import-export/import-export.service.js b/ui/src/app/import-export/import-export.service.js
index d64441fdef..e08fd24d5a 100644
--- a/ui/src/app/import-export/import-export.service.js
+++ b/ui/src/app/import-export/import-export.service.js
@@ -721,7 +721,7 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document,
}
},
parent: angular.element($document[0].body),
- skipHide: true,
+ multiple: true,
fullscreen: true,
targetEvent: $event
}).then(function (updatedEntityAliases) {
@@ -796,7 +796,7 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document,
importFileLabel: importFileLabel
},
parent: angular.element($document[0].body),
- skipHide: true,
+ multiple: true,
fullscreen: true,
targetEvent: $event
}).then(function (importData) {
diff --git a/ui/src/app/layout/index.js b/ui/src/app/layout/index.js
index 192400a646..7c7e870205 100644
--- a/ui/src/app/layout/index.js
+++ b/ui/src/app/layout/index.js
@@ -17,7 +17,6 @@ import './home.scss';
import uiRouter from 'angular-ui-router';
import ngSanitize from 'angular-sanitize';
-import FBAngular from 'angular-fullscreen';
import 'angular-breadcrumb';
import thingsboardMenu from '../services/menu.service';
@@ -63,7 +62,6 @@ import BreadcrumbIcon from './breadcrumb-icon.filter';
export default angular.module('thingsboard.home', [
uiRouter,
ngSanitize,
- FBAngular.name,
'ncy-angular-breadcrumb',
thingsboardMenu,
thingsboardHomeLinks,
diff --git a/ui/src/app/locale/locale.constant-en_US.json b/ui/src/app/locale/locale.constant-en_US.json
index 9f326c7612..b3c89c7729 100644
--- a/ui/src/app/locale/locale.constant-en_US.json
+++ b/ui/src/app/locale/locale.constant-en_US.json
@@ -1573,7 +1573,7 @@
"ru_RU": "Russian",
"es_ES": "Spanish",
"ja_JA": "Japanese",
- "TR": "Turkish"
+ "tr_TR": "Turkish"
}
}
}
diff --git a/ui/src/app/locale/locale.constant-es_ES.json b/ui/src/app/locale/locale.constant-es_ES.json
index 81cc52ed6f..7b0214190b 100644
--- a/ui/src/app/locale/locale.constant-es_ES.json
+++ b/ui/src/app/locale/locale.constant-es_ES.json
@@ -1552,7 +1552,7 @@
"ru_RU": "Ruso",
"es_ES": "Español",
"ja_JA": "Japonés",
- "TR": "Turco"
+ "tr_TR": "Turco"
}
}
}
diff --git a/ui/src/app/locale/locale.constant-fr_FR.json b/ui/src/app/locale/locale.constant-fr_FR.json
index 8b270aa7af..dd2fa0d864 100644
--- a/ui/src/app/locale/locale.constant-fr_FR.json
+++ b/ui/src/app/locale/locale.constant-fr_FR.json
@@ -1010,7 +1010,7 @@
"ko_KR": "Coréen",
"ru_RU": "Russe",
"zh_CN": "Chinois",
- "TR": "Turc"
+ "tr_TR": "Turc"
}
},
"layout": {
diff --git a/ui/src/app/locale/locale.constant-it_IT.json b/ui/src/app/locale/locale.constant-it_IT.json
index 79843ab09b..49f9b4880d 100644
--- a/ui/src/app/locale/locale.constant-it_IT.json
+++ b/ui/src/app/locale/locale.constant-it_IT.json
@@ -1442,7 +1442,7 @@
"ru_RU": "Russo",
"es_ES": "Spagnolo",
"ja_JA": "Giapponese",
- "TR": "Turco"
+ "tr_TR": "Turco"
}
}
}
diff --git a/ui/src/app/locale/locale.constant-ja_JA.json b/ui/src/app/locale/locale.constant-ja_JA.json
index 6c4889460d..2ab2bcb909 100644
--- a/ui/src/app/locale/locale.constant-ja_JA.json
+++ b/ui/src/app/locale/locale.constant-ja_JA.json
@@ -1458,7 +1458,7 @@
"ru_RU": "ロシア",
"es_ES": "スペイン語",
"ja_JA": "日本語",
- "TR": "トルコ語"
+ "tr_TR": "トルコ語"
}
}
}
diff --git a/ui/src/app/locale/locale.constant-ko_KR.json b/ui/src/app/locale/locale.constant-ko_KR.json
index 07e7dd6070..62c0054d53 100644
--- a/ui/src/app/locale/locale.constant-ko_KR.json
+++ b/ui/src/app/locale/locale.constant-ko_KR.json
@@ -1336,7 +1336,7 @@
"es_ES": "스페인어",
"it_IT": "이탈리아 사람",
"ja_JA": "일본어",
- "TR": "터키어"
+ "tr_TR": "터키어"
}
}
}
diff --git a/ui/src/app/locale/locale.constant-ru_RU.json b/ui/src/app/locale/locale.constant-ru_RU.json
index 893bbcd86c..eb9996d274 100644
--- a/ui/src/app/locale/locale.constant-ru_RU.json
+++ b/ui/src/app/locale/locale.constant-ru_RU.json
@@ -1361,7 +1361,7 @@
"it_IT": "Итальянский",
"ru_RU": "Русский",
"ja_JA": "Японский",
- "TR": "Турецкий"
+ "tr_TR": "Турецкий"
}
}
diff --git a/ui/src/app/locale/locale.constant-TR.json b/ui/src/app/locale/locale.constant-tr_TR.json
similarity index 94%
rename from ui/src/app/locale/locale.constant-TR.json
rename to ui/src/app/locale/locale.constant-tr_TR.json
index de88116fe5..54176d83a9 100644
--- a/ui/src/app/locale/locale.constant-TR.json
+++ b/ui/src/app/locale/locale.constant-tr_TR.json
@@ -126,15 +126,15 @@
"acknowledge": "Onayla",
"clear": "Temizle",
"search": "Alarm ara",
- "selected-alarms": "{ count, select, 1 {1 alarm} other {# alarm} } seçildi",
+ "selected-alarms": "{ count, plural, 1 {1 alarm} other {# alarm} } seçildi",
"no-data": "Görüntülenecek veri bulunmuyor",
"polling-interval": "Alarm yoklama aralığı (saniye)",
"polling-interval-required": "Alarm yoklama aralığı gerekli.",
"min-polling-interval-message": "Alarm yoklama aralığı en az 1 saniye olmalıdır.",
- "aknowledge-alarms-title": "{ count, select, 1 {1 alarmı} other {# alarmı} } onayla",
- "aknowledge-alarms-text": "{ count, select, 1 {1 alarmı} other {# alarmı} } onaylamak istediğinize emin misiniz?",
- "clear-alarms-title": "{ count, select, 1 {1 alarmı} other {# alarmı} } temizle",
- "clear-alarms-text": "{ count, select, 1 {1 alarmı} other {# alarmı} } temizlemek istediğinize emin misiniz?"
+ "aknowledge-alarms-title": "{ count, plural, 1 {1 alarmı} other {# alarmı} } onayla",
+ "aknowledge-alarms-text": "{ count, plural, 1 {1 alarmı} other {# alarmı} } onaylamak istediğinize emin misiniz?",
+ "clear-alarms-title": "{ count, plural, 1 {1 alarmı} other {# alarmı} } temizle",
+ "clear-alarms-text": "{ count, plural, 1 {1 alarmı} other {# alarmı} } temizlemek istediğinize emin misiniz?"
},
"alias": {
"add": "Kısa ad ekle",
@@ -212,15 +212,15 @@
"add-asset-text": "Yeni varlık ekle",
"asset-details": "Varlık detayları",
"assign-assets": "Varlıkları ata",
- "assign-assets-text": "{ count, select, 1 {1 varlığı} other {# varlığı} } kullanıcı grubuna ata",
+ "assign-assets-text": "{ count, plural, 1 {1 varlığı} other {# varlığı} } kullanıcı grubuna ata",
"delete-assets": "Varlıkları sil",
"unassign-assets": "Varlıkların atamalarını kaldır",
- "unassign-assets-action-title": "{ count, select, 1 {1 varlığın} other {# varlığın} } atamalarını kullanıcı grubundan kaldır",
+ "unassign-assets-action-title": "{ count, plural, 1 {1 varlığın} other {# varlığın} } atamalarını kullanıcı grubundan kaldır",
"assign-new-asset": "Yeni varlık ata",
"delete-asset-title": "'{{assetName}}' isimli varlığı silmek istediğinize emin misiniz?",
"delete-asset-text": "UYARI: Onaylandıktan sonra varlık ve ilgili tüm veriler geri yüklenemeyecek şekilde silinecek.",
- "delete-assets-title": "{ count, select, 1 {1 varlığı} other {# varlığı} } silmek istediğinize emin misiniz?",
- "delete-assets-action-title": "{ count, select, 1 {1 varlığı} other {# varlığı} } sil",
+ "delete-assets-title": "{ count, plural, 1 {1 varlığı} other {# varlığı} } silmek istediğinize emin misiniz?",
+ "delete-assets-action-title": "{ count, plural, 1 {1 varlığı} other {# varlığı} } sil",
"delete-assets-text": "UYARI: Onaylandıktan sonra tüm seçili varlıklar ver ilgili tüm veriler geri yüklenemyeck şekilde silinecek.",
"make-public-asset-title": "'{{assetName}}' isimli varlığı açık hale getirmek istediğinize emin misiniz?",
"make-public-asset-text": "Onaylandıktan sonra varlık ve ilgili veriler açık hale gelecek ve başkaları tarafından erişilebilir olacaktır.",
@@ -229,7 +229,7 @@
"unassign-asset-title": "'{{assetName}}' isimli varlığın atamasını kaldırmak istediğinize emin misiniz?",
"unassign-asset-text": "Onaylandıktan sonra varlığın ataması kaldırılacak ve kullanıcı grubu tarafından erişilemez olacaktır.",
"unassign-asset": "Varlık atamasını kaldır",
- "unassign-assets-title": " { count, select, 1 {1 varlık} other {# varlık} } atamasını kaldırmak istediğinize emin misiniz?",
+ "unassign-assets-title": " { count, plural, 1 {1 varlık} other {# varlık} } atamasını kaldırmak istediğinize emin misiniz?",
"unassign-assets-text": "Onaylandıktan sonra tüm seçili varlıkların ataması kaldırılacak ve kullanıcı grubu tarafından erişilemez olacaktır.",
"copyId": "Varlık kimliğini kopyala",
"idCopiedMessage": "Varlık kimliği panoya kopyalandı",
@@ -252,7 +252,7 @@
"key-required": "Öznitelik anahtarı gerekli.",
"value": "Değer",
"value-required": "Öznitelik değeri gerekli.",
- "delete-attributes-title": "Silmek istediğinize emin misiniz { count, select, 1 {1 öznitelik} other {# öznitelik} }?",
+ "delete-attributes-title": "Silmek istediğinize emin misiniz { count, plural, 1 {1 öznitelik} other {# öznitelik} }?",
"delete-attributes-text": "UYARI: Onaylandıktan sonra tüm seçili öznitelikler kaldırılacak.",
"delete-attributes": "Öznitelikleri sil",
"enter-attribute-value": "Öznitelik değeri gir",
@@ -262,8 +262,8 @@
"prev-widget": "Önceki gösterge",
"add-to-dashboard": "Kontrol paneline ekle",
"add-widget-to-dashboard": "Göstergeyi kontrol paneline ekle",
- "selected-attributes": "{ count, select, 1 {1 öznitelik} other {# öznitelik} } seçildi",
- "selected-telemetry": "{ count, select, 1 {1 telemetri birimi} other {# telemetri birimi} } seçildi"
+ "selected-attributes": "{ count, plural, 1 {1 öznitelik} other {# öznitelik} } seçildi",
+ "selected-telemetry": "{ count, plural, 1 {1 telemetri birimi} other {# telemetri birimi} } seçildi"
},
"audit-log": {
"audit": "Log ve Hata Yönetimi",
@@ -358,8 +358,8 @@
"customer-details": "Kullanıcı Grubu detayları",
"delete-customer-title": "'{{customerTitle}}' isimli kullanıcı grubunu silmek istediğinize emin misiniz?",
"delete-customer-text": "UYARI: Onaylandıktan sonra kullanıcı grubu ve tüm ilişkili veriler geri yüklenemeyecek şekilde silinecek.",
- "delete-customers-title": "{ count, select, 1 {1 kullanıcı grubunu} other {# kullanıcı grubunu} } silmek istediğinize emin misiniz?",
- "delete-customers-action-title": "{ count, select, 1 {1 kullanıcı grubunu} other {# kullanıcı grubunu} } sil",
+ "delete-customers-title": "{ count, plural, 1 {1 kullanıcı grubunu} other {# kullanıcı grubunu} } silmek istediğinize emin misiniz?",
+ "delete-customers-action-title": "{ count, plural, 1 {1 kullanıcı grubunu} other {# kullanıcı grubunu} } sil",
"delete-customers-text": "UYARI: Onaylandıktan sonra tüm seçili kullanıcı grupları ve ilişkili veriler geri yüklenemez şekilde silinecek.",
"manage-users": "Kullanıcıları yönet",
"manage-assets": "Varlıkları yönet",
@@ -418,20 +418,20 @@
"add-dashboard-text": "Yeni kontrol paneli ekle",
"assign-dashboards": "Kontrol panelleri ata",
"assign-new-dashboard": "Yeni kontrol paneli ata",
- "assign-dashboards-text": "{ count, select, 1 {1 kontrol panelini} other {# kontrol panelini} } kullanıcı grubuna ata",
- "unassign-dashboards-action-text": "Müşterilerden atama sayısı, çoğul, 1 {1 gösterge tablosu} diğer {# panolar}}",
+ "assign-dashboards-text": "{ count, plural, 1 {1 kontrol panelini} other {# kontrol panelini} } kullanıcı grubuna ata",
+ "unassign-dashboards-action-text": "Müşterilerden atama { count, plural, 1 {1 gösterge tablosu} other {# panolar}}",
"delete-dashboards": "Kontrol panellerini sil",
"unassign-dashboards": "Kontrol panellerinden atamayı kaldır",
- "unassign-dashboards-action-title": "{ count, select, 1 {1 kontrol panelinin} other {# kontrol panelinin} } atamaları kullanıcı grubundan kaldır",
+ "unassign-dashboards-action-title": "{ count, plural, 1 {1 kontrol panelinin} other {# kontrol panelinin} } atamaları kullanıcı grubundan kaldır",
"delete-dashboard-title": "'{{dashboardTitle}}' isimli kontrol panelini silmek istediğinize emin misiniz?",
"delete-dashboard-text": "UYARI: Onaylandıktan sonra kontrol paneli ve ilişkili verileri geri yüklenemez şekilde silinecek.",
- "delete-dashboards-title": "{ count, select, 1 {1 kontrol panelini} other {# kontrol panelini} } silmek istediğinize emin misiniz?",
- "delete-dashboards-action-title": "{ count, select, 1 {1 kontrol panelini} other {# kontrol panelini} } sil",
+ "delete-dashboards-title": "{ count, plural, 1 {1 kontrol panelini} other {# kontrol panelini} } silmek istediğinize emin misiniz?",
+ "delete-dashboards-action-title": "{ count, plural, 1 {1 kontrol panelini} other {# kontrol panelini} } sil",
"delete-dashboards-text": "UYARI: Onaylandıktan sonra tüm seçili kontrol panelleri ve ilişkili verileri geri yüklenemez şekilde silinecek.",
"unassign-dashboard-title": "'{{dashboardTitle}}' isimli kontrol panelindeki atamayı kaldırmak istediğinize emin misiniz?",
"unassign-dashboard-text": "Onaylandıktan sonra kontrol panelinin ataması kaldırılacak ve kullanıcı grubu tarafından erişilemez hale gelecektir.",
"unassign-dashboard": "Kontrol panelinin ataması kaldır",
- "unassign-dashboards-title": "{count, select, 1 {1 kontrol panelindeki} other {# kontrol panelindeki} } atamayı kaldırmak istediğinize emin misiniz?",
+ "unassign-dashboards-title": "{count, plural, 1 {1 kontrol panelindeki} other {# kontrol panelindeki} } atamayı kaldırmak istediğinize emin misiniz?",
"unassign-dashboards-text": "Onaylandıktan {{dashboardTitle}} açık hale getirildi ve bu bağlantıdan erişilebilir durumda",
@@ -508,7 +508,7 @@
"manage-states": "Kontrol paneli durumlarını yönet",
"states": "Kontrol paneli durumları",
"search-states": "Kontrol paneli durumu ara",
- "selected-states": "{ count, select, 1 {1 kontrol paneli durumu} other {# kontrol paneli durumu} } seçildi",
+ "selected-states": "{ count, plural, 1 {1 kontrol paneli durumu} other {# kontrol paneli durumu} } seçildi",
"edit-state": "Kontrol paneli durumu düzenle",
"delete-state": "Kontrol paneli durumunu sil",
"add-state": "Kontrol paneli durumu ekle",
@@ -541,11 +541,11 @@
"alarm": "Alarm alanları",
"timeseries-required": "Zaman serisi öğesi gerekli.",
"timeseries-or-attributes-required": "Zaman serisi/öznitelikler öğesi gerekli.",
- "maximum-timeseries-or-attributes": "Maksimum { count, select, 1 {1 zamanserisi/öznitelik kabul edilir.} other {# zamanserisi/öznitelik kabul edilir} }",
+ "maximum-timeseries-or-attributes": "Maksimum { count, plural, 1 {1 zamanserisi/öznitelik kabul edilir.} other {# zamanserisi/öznitelik kabul edilir} }",
"alarm-fields-required": "Alarm alanları gerekli.",
"function-types": "Fonksiyon türleri",
"function-types-required": "Fonksiyon türleri gerekli.",
- "maximum-function-types": "Maksimum { count, select, 1 {1 fonksiyon türü kabul edilir.} other {# fonksiyon türü kabul edilir} }"
+ "maximum-function-types": "Maksimum { count, plural, 1 {1 fonksiyon türü kabul edilir.} other {# fonksiyon türü kabul edilir} }"
},
"datasource": {
"type": "Veri kaynağı türü",
@@ -597,11 +597,11 @@
"manage-credentials": "Kimlik bilgilerini yönet",
"delete": "Aygıt sil",
"assign-devices": "Aygıt ata",
- "assign-devices-text": "{ count, select, 1 {1 aygıtı} other {# aygıtı} } kullanıcı grubuna ata",
+ "assign-devices-text": "{ count, plural, 1 {1 aygıtı} other {# aygıtı} } kullanıcı grubuna ata",
"delete-devices": "Aygıtları sil",
"unassign-from-customer": "Kullanıcı Grubundan atamayı kaldır",
"unassign-devices": "Aygıtlardan atamayı kaldır",
- "unassign-devices-action-title": "{ count, select, 1 {1 aygıtın} other {# aygıtın} } atamasını kullanıcı grubundan kaldır",
+ "unassign-devices-action-title": "{ count, plural, 1 {1 aygıtın} other {# aygıtın} } atamasını kullanıcı grubundan kaldır",
"assign-new-device": "Yeni aygıt ata",
"make-public-device-title": "'{{deviceName}}' isimli aygıtı açık hale getirmek istediğinizden emin misiniz?",
"make-public-device-text": "Onaylandıktan sonra aygıt ve verileri açık hale getirilecek ve diğerleri tarafından erişilebilir olacak.",
@@ -610,13 +610,13 @@
"view-credentials": "Kimlik bilgilerini görüntüle",
"delete-device-title": "'{{deviceName}}' isimli aygıtı silmek istediğinize emin misiniz?",
"delete-device-text": "UYARI: Onaylandıktan sonra aygıt ve ilişkili verileri geri yüklenemez şekilde silinecek.",
- "delete-devices-title": "{ count, select, 1 {1 aygıtı} other {# aygıtı} } silmek istediğinize emin misiniz?",
- "delete-devices-action-title": "{ count, select, 1 {1 aygıtı} other {# aygıtı} } sil",
+ "delete-devices-title": "{ count, plural, 1 {1 aygıtı} other {# aygıtı} } silmek istediğinize emin misiniz?",
+ "delete-devices-action-title": "{ count, plural, 1 {1 aygıtı} other {# aygıtı} } sil",
"delete-devices-text": "UYARI: Onaylandıktan sonra tüm seçili aygıtlar ve ilişkili verileri geri yüklenemez şekilde silinecek.",
"unassign-device-title": "'{{deviceName}}' isimli aygıtın atamasını kaldırmak istediğinize emin misiniz?",
"unassign-device-text": "Onaylandıktan sonra aygıtın ataması kaldırılacak ve kullanıcı grubu tarafından erişilemez olacak.",
"unassign-device": "Aygıt atamasını kaldır",
- "unassign-devices-title": "{ count, select, 1 {1 aygıtın} other {# aygıtın} } atamasını kaldırmak istediğinize emin misiniz?",
+ "unassign-devices-title": "{ count, plural, 1 {1 aygıtın} other {# aygıtın} } atamasını kaldırmak istediğinize emin misiniz?",
"unassign-devices-text": "Onaylandıktan sonra seçili aygıtların atamaları kaldırılacak ve kullanıcı grubu tarafından erişilemez olacak.",
"device-credentials": "Aygıt Kimlik Bilgileri",
"credentials-type": "Kimlik Bilgi Türü",
@@ -702,55 +702,55 @@
"type-required": "Öğe türü gerekli.",
"type-device": "Aygıt",
"type-devices": "Aygıtlar",
- "list-of-devices": "{ count, select, 1 {Bir aygıt} other {# Aygıtın Listesi} }",
+ "list-of-devices": "{ count, plural, 1 {Bir aygıt} other {# Aygıtın Listesi} }",
"device-name-starts-with": "İsimleri '{{prefix}}' ile başlayan aygıtlar",
"type-asset": "Varlık",
"type-assets": "Varlıklar",
- "list-of-assets": "{ count, select, 1 {Bir varlık} other {# Varlığın Listesi} }",
+ "list-of-assets": "{ count, plural, 1 {Bir varlık} other {# Varlığın Listesi} }",
"asset-name-starts-with": "İsmi '{{prefix}}' ile başlayan varlıklar",
"type-entity-view": "Varlık Görünümü",
"type-entity-views": "Varlık Görünümleri",
- "list-of-entity-views": "{count, çoğul, 1 {Bir varlık görünümü} diğer {# varlık görüntüleme}} listesi",
+ "list-of-entity-views": "{ count, plural, 1 {Bir varlık görünümü} other {# varlık görüntüleme}} listesi",
"entity-view-name-starts-with": "Adı {{önek}} ile başlayan varlık görünümleri",
"type-rule": "Kural",
"type-rules": "Kurallar",
- "list-of-rules": "{ count, select, 1 {Bir kural} other {# Kuralın Listesi} }",
+ "list-of-rules": "{ count, plural, 1 {Bir kural} other {# Kuralın Listesi} }",
"rule-name-starts-with": "İsmi '{{prefix}}' ile başlayan kurallar",
"type-plugin": "Eklenti",
"type-plugins": "Eklentiler",
- "list-of-plugins": "{ count, select, 1 {Bir eklenti} other {# Eklentinin Listesi} }",
+ "list-of-plugins": "{ count, plural, 1 {Bir eklenti} other {# Eklentinin Listesi} }",
"plugin-name-starts-with": "İsmi '{{prefix}}' ile başlayan eklentiler",
"type-tenant": "Tenant",
"type-tenants": "Tenantlar",
- "list-of-tenants": "{ count, select, 1 {Bir tenant} other {# Tenantın Listesi} }",
+ "list-of-tenants": "{ count, plural, 1 {Bir tenant} other {# Tenantın Listesi} }",
"tenant-name-starts-with": "İsmi '{{prefix}}' ile başlayan tenantlar",
"type-customer": "Kullanıcı Grubu",
"type-customers": "Kullanıcı Grupları",
- "list-of-customers": "{ count, select, 1 {Bir Kullanıcı Grubu} other {# Kullanıcı Grupları} }",
+ "list-of-customers": "{ count, plural, 1 {Bir Kullanıcı Grubu} other {# Kullanıcı Grupları} }",
"customer-name-starts-with": "İsmi '{{prefix}}' ile başlayan Kullanıcı Grupları",
"type-user": "Kullanıcı",
"type-users": "Kullanıcılar",
- "list-of-users": "{ count, select, 1 {Bir kullanıcı} other {# Kullanıcının Listesi} }",
+ "list-of-users": "{ count, plural, 1 {Bir kullanıcı} other {# Kullanıcının Listesi} }",
"user-name-starts-with": "İsmi '{{prefix}}' ile başlayan kullanıcılar",
"type-dashboard": "Kontrol paneli",
"type-dashboards": "Kontrol panelleri",
- "list-of-dashboards": "{ count, select, 1 {Bir kontrol paneli} other {# Kontrol Panelinin Listesi} }",
+ "list-of-dashboards": "{ count, plural, 1 {Bir kontrol paneli} other {# Kontrol Panelinin Listesi} }",
"dashboard-name-starts-with": "İsmi '{{prefix}}' ile başlayan kontrol panelleri",
"type-alarm": "Alarm",
"type-alarms": "Alarmlar",
- "list-of-alarms": "{ count, select, 1 {Bir alarm} other {# Alarmın Listesi} }",
+ "list-of-alarms": "{ count, plural, 1 {Bir alarm} other {# Alarmın Listesi} }",
"alarm-name-starts-with": "İsmi '{{prefix}}' ile başlayan alarmlar",
"type-rulechain": "Kural zinciri",
"type-rulechains": "Kural zincirleri",
- "list-of-rulechains": "{count, çoğul, 1 {Bir kural zinciri} diğer {# kural zincirinin listesi}}",
+ "list-of-rulechains": "{ count, plural, 1 {Bir kural zinciri} other {# kural zincirinin listesi}}",
"rulechain-name-starts-with": "İsimleri {{prefix}} ile başlayan kural zincirleri",
"type-rulenode": "Kural düğümü",
"type-rulenodes": "Kural düğümleri",
- "list-of-rulenodes": "{count, çoğul, 1 {Bir kural node} diğer {# kural düğümünün listesi}}",
+ "list-of-rulenodes": "{ count, plural, 1 {Bir kural node} other {# kural düğümünün listesi}}",
"rulenode-name-starts-with": "İsimleri '{{prefix}} ile başlayan kural düğümleri",
"type-current-customer": "Mevcut Müşteri",
"search": "Öğeleri ara",
- "selected-entities": "{ count, select, 1 {1 öğe} other {# öğe} } seçildi",
+ "selected-entities": "{ count, plural, 1 {1 öğe} other {# öğe} } seçildi",
"entity-name": "Öğe adı",
"details": "Öğe detayları",
"no-entities-prompt": "Hiçbir öğe bulunamadı",
@@ -792,21 +792,21 @@
"add-entity-view-text": "Yeni varlık görünümü ekle",
"delete": "Varlık görünümünü sil",
"assign-entity-views": "Varlık görünümleri atama",
- "assign-entity-views-text": "Müşteriye {count, çoğul, 1 {1 entityView} diğer {# entityViews}} atayın ",
+ "assign-entity-views-text": "Müşteriye { count, plural, 1 {1 entityView} other {# entityViews}} atayın ",
"delete-entity-views": "Varlık görünümlerini sil",
"unassign-from-customer": "Müşteriden atama",
"unassign-entity-views": "Varlık görünümlerini atama",
- "unassign-entity-views-action-title": "Müşteriden atama sayım, çoğul, 1 {1 entityView} diğer {# entityViews}}",
+ "unassign-entity-views-action-title": "Müşteriden atama { count, plural, 1 {1 entityView} other {# entityViews}}",
"assign-new-entity-view": "Yeni varlık görünümü atama",
"delete-entity-view-title": "Varlık görünümünü silmek istediğinizden emin misiniz?, {{entityViewName}} '? ",
"delete-entity-view-text": "Dikkatli olun, onaylandıktan sonra varlık görünümü ve ilgili tüm veriler kurtarılamayacak.",
- "delete-entity-views-title": "{count, çoğul, 1 {1 entityView} diğer {# entityViews}} varlık görünümüne sahip olmak istediğinizden emin misiniz?",
- "delete-entity-views-action-title": "Sil {count, çoğul, 1 {1 entityView} diğer {# entityViews}}",
+ "delete-entity-views-title": "{ count, plural, 1 {1 entityView} other {# entityViews}} varlık görünümüne sahip olmak istediğinizden emin misiniz?",
+ "delete-entity-views-action-title": "Sil { count, plural, 1 {1 entityView} other {# entityViews}}",
"delete-entity-views-text": "Dikkatli olun, onaylandıktan sonra tüm seçilen görünümler kaldırılacak ve ilgili tüm veriler kurtarılamayacaktır.",
"unassign-entity-view-title": "Varlık görünümünün atamasını kaldırmak istediğinizden emin misiniz? {{entityViewName}} '? ",
"unassign-entity-view-text": "Onaydan sonra varlık görünümü atanmamış olacak ve müşteri tarafından erişilemeyecektir.",
"unassign-entity-view": "Varlık görünümünün atamasını kaldır",
- "unassign-entity-views-title": "Sayım, çoğul, 1 {1 entityView} diğer {# entityViews}} hesabının atamasını kaldırmak istediğinizden emin misiniz?",
+ "unassign-entity-views-title": "{ count, plural, 1 {1 entityView} other {# entityViews}} hesabının atamasını kaldırmak istediğinizden emin misiniz?",
"unassign-entity-views-text": "Onaylandıktan sonra, seçilen tüm öğe görünümleri atamadan kaldırılacak ve müşteri tarafından erişilemeyecektir.",
"entity-view-type": "Varlık Görünümü türü",
"entity-view-type-required": "Varlık Görünümü türü gerekli.",
@@ -861,7 +861,7 @@
},
"extension": {
"extensions": "Uzantılar",
- "selected-extensions": "{count, çoğul, 1 {1 uzantı} diğer {# extensions}} seçildi",
+ "selected-extensions": "{ count, plural, 1 {1 uzantı} other {# extensions}} seçildi",
"type": "Tür",
"key": "Anahtar",
"value": "Değer",
@@ -875,7 +875,7 @@
"edit": "Uzantıyı düzenle",
"delete-extension-title": "{{ExtensionId}} uzantısını silmek istediğinizden emin misiniz? ",
"delete-extension-text": "Dikkatli olun, onaylamadan sonra uzantı ve ilgili tüm veriler kurtarılamaz.",
- "delete-extensions-title": "{Count, çoğul, 1 {1 uzantı} diğer {# extensions}} silmek istediğinizden emin misiniz?",
+ "delete-extensions-title": "{ count, plural, 1 {1 uzantı} other {# extensions}} silmek istediğinizden emin misiniz?",
"delete-extensions-text": "Dikkatli olun, onaylandıktan sonra tüm seçilen uzantılar kaldırılacak.",
"converters": "Dönüştürücü",
"converter-id": "Dönüştürücü kimliği",
@@ -1026,8 +1026,8 @@
"grid": {
"delete-item-title": "Bu öğeyi silmek istediğinizden emin misiniz?",
"delete-item-text": "UYARI: Onayladıktan sonra bu öğe ve ilişkili tüm verileri geri yüklenemez şekilde silinecektir.",
- "delete-items-title": "{ count, select, 1 {1 öğeyi} other {# öğeyi} } silmek istediğinizden emin misiniz?",
- "delete-items-action-title": "{ count, select, 1 {1 öğeyi} other {# öğeyi} } sil",
+ "delete-items-title": "{ count, plural, 1 {1 öğeyi} other {# öğeyi} } silmek istediğinizden emin misiniz?",
+ "delete-items-action-title": "{ count, plural, 1 {1 öğeyi} other {# öğeyi} } sil",
"delete-items-text": "UYARI: Onayladıktan sonra tüm seçili öğeler ve ilişkili tüm verileri geri yüklenemez şekilde silinecektir.",
"add-item-text": "Yeni öğe ekle",
"no-items-text": "Hiç bir öğe bulunamadı",
@@ -1128,7 +1128,7 @@
},
"from-relations": "Giden ilişkiler",
"to-relations": "Gelen ilişkiler",
- "selected-relations": "{ count, select, 1 {1 ilişki} other {# ilişki} } seçildi",
+ "selected-relations": "{ count, plural, 1 {1 ilişki} other {# ilişki} } seçildi",
"type": "Tür",
"to-entity-type": "Hedef Öğe Türü",
"to-entity-name": "Hedef Öğe Adı",
@@ -1144,11 +1144,11 @@
"edit": "İlişki düzenle",
"delete-to-relation-title": "'{{entityName}}' öğesine olan ilişkiyi silmek istediğinize emin misiniz?",
"delete-to-relation-text": "UYARI: Onaylandıktan sonra '{{entityName}}' öğesinin şimdiki öğeyle olan ilişkisi sona erecektir.",
- "delete-to-relations-title": "{ count, select, 1 {1 ilişkiyi} other {# ilişkiyi} } silmek istediğinize emin misiniz?",
+ "delete-to-relations-title": "{ count, plural, 1 {1 ilişkiyi} other {# ilişkiyi} } silmek istediğinize emin misiniz?",
"delete-to-relations-text": "UYARI: Onaylandıktan sonra tüm seçili ilişkiler kaldırılacaktır ve ilgili öğelerin şimdiki öğeyle ilişkisi sona erecektir.",
"delete-from-relation-title": "'{{entityName}}' öğesinden ilişkiyi silmek istediğinize emin misiniz?",
"delete-from-relation-text": "UYARI: Onaylandıktan sonra şimdiki öğenin '{{entityName}}' öğesiyle ilişkisi sonlandırılacaktır.",
- "delete-from-relations-title": "{ count, select, 1 {1 ilişkiyi} other {# ilişkiyi} } silmek istediğinize emin misiniz?",
+ "delete-from-relations-title": "{ count, plural, 1 {1 ilişkiyi} other {# ilişkiyi} } silmek istediğinize emin misiniz?",
"delete-from-relations-text": "UYARI: Onaylandıktan sonra tüm seçili ilişkiler kaldırılacak ve şimdiki öğenin ilgili tüm öğelerle ilişkisi sona erecektir.",
"remove-relation-filter": "İlişki filtresini kaldır",
"add-relation-filter": "İlişkisi ekle",
@@ -1171,8 +1171,8 @@
"set-root-rulechain-text": "Onaydan sonra kural zinciri kökleşecek ve gelen tüm iletilerle ilgilenecek.",
"delete-rulechain-title": "'{{ruleName}}' isimli kuralı silmek istediğinize emin misiniz?",
"delete-rulechain-text": "UYARI: Onaylandıktan sonra kural ve ilişkili tüm veriler geri yüklenemez şekilde silinecektir.",
- "delete-rulechains-title": "{ count, select, 1 {1 kuralı} other {# kuralı} } sikmek istediğinize emin misiniz?",
- "delete-rulechains-action-title": "{ count, select, 1 {1 kuralı} other {# kuralı} sil}",
+ "delete-rulechains-title": "{ count, plural, 1 {1 kuralı} other {# kuralı} } sikmek istediğinize emin misiniz?",
+ "delete-rulechains-action-title": "{ count, plural, 1 {1 kuralı} other {# kuralı} } sil",
"delete-rulechains-text": "UYARI: Onaylandıktan sonra seçili tüm kurallar ve ilişkili tüm veriler geri yüklenemez şekilde silinecektir.",
"add-rulechain-text": "Yeni kural ekle",
"no-rulechains-text":"Hiçbir kural bulunamadı",
@@ -1270,8 +1270,8 @@
"tenant-details": "Tenant detayları",
"delete-tenant-title": "'{{tenantTitle}}' isimli tenantı silmek istediğinize emin misiniz?",
"delete-tenant-text": "UYARI: Onaylandıktan sonra tenant ve ilişkili tüm veriler geri yüklenemez şekilde silinecektir.",
- "delete-tenants-title": "{ count, select, 1 {1 tenantı} other {# tenantı} } silmek istediğinize emin misiniz?",
- "delete-tenants-action-title": "{ count, select, 1 {1 tenantı} other {# tenantı} } sil",
+ "delete-tenants-title": "{ count, plural, 1 {1 tenantı} other {# tenantı} } silmek istediğinize emin misiniz?",
+ "delete-tenants-action-title": "{ count, plural, 1 {1 tenantı} other {# tenantı} } sil",
"delete-tenants-text": "UYARI: Onaylandıktan sonra seçili tüm tenantlar ve ilişkili tüm veriler geri yüklenemez şekilde silinecektir",
"title": "Başlık",
"title-required": "Başlık gerekli.",
@@ -1325,8 +1325,8 @@
"user-details": "Kullanıcı detayları",
"delete-user-title": "'{{userEmail}}' kullanıcısını silmek istediğinize emin misiniz?",
"delete-user-text": "UYARI: Onaylandıktan sonra kullanıcı ve ilişkili tüm verileri geri yüklenemez şekilde silinecektir.",
- "delete-users-title": "{ count, select, 1 {1 kullanıcıyı} other {# kullanıcıyı} } sikmek istediğinize emin misiniz?",
- "delete-users-action-title": "{ count, select, 1 {1 kullancıyı} other {# kullanıcıyı} } sil",
+ "delete-users-title": "{ count, plural, 1 {1 kullanıcıyı} other {# kullanıcıyı} } sikmek istediğinize emin misiniz?",
+ "delete-users-action-title": "{ count, plural, 1 {1 kullancıyı} other {# kullanıcıyı} } sil",
"delete-users-text": "UYARI: Onaylandıktan sonra kullanıcı ve ilişkili tüm verileri geri yüklenemez şekilde silinecektir.",
"activation-email-sent-message": "Etkinleştirme e-postası başarılı bir şekilde gönderildi!",
"resend-activation": "Etkinleştirme e-postasını yeniden gönder",
@@ -1445,8 +1445,8 @@
"widgets-bundle-details": "Gösterge demeti detayları",
"delete-widgets-bundle-title": "'{{widgetsBundleTitle}}' isimli gösterge demetini silmek istediğinize emin misiniz?",
"delete-widgets-bundle-text": "UYARI: Onaylandıktan sonra gösterge demeti ve ilişkili tüm veriler geri yüklenemez şekilde silinecektir.",
- "delete-widgets-bundles-title": "{ count, select, 1 {1 gösterge demetini} other {# gösterge demetini} } silmek istediğinize emin misiniz?",
- "delete-widgets-bundles-action-title": "{ count, select, 1 {1 gösterge demetini} other {# gösterge demetini} } sil",
+ "delete-widgets-bundles-title": "{ count, plural, 1 {1 gösterge demetini} other {# gösterge demetini} } silmek istediğinize emin misiniz?",
+ "delete-widgets-bundles-action-title": "{ count, plural, 1 {1 gösterge demetini} other {# gösterge demetini} } sil",
"delete-widgets-bundles-text": "UYARI: Onaylandıktan sonra seçili tüm gösterge demetleri ve ilişkili tüm veriler geri yüklenemez şekilde silinecektir.",
"no-widgets-bundles-matching": "'{{widgetsBundle}}' ile eşleşen gösterge demeti bulunamadı.",
"widgets-bundle-required": "Gösterge demeti gerekli.",
@@ -1482,7 +1482,7 @@
"use-dashboard-timewindow": "Kontrol paneli zaman aralığı kullan",
"display-legend": "Lejant göster",
"datasources": "Veri kaynakları",
- "maximum-datasources": "En fazla { count, select, 1 {1 veri kaynağı kullanılabilir.} other {# veri kaynağı kullanılabilir} }",
+ "maximum-datasources": "En fazla { count, plural, 1 {1 veri kaynağı kullanılabilir.} other {# veri kaynağı kullanılabilir} }",
"datasource-type": "Tür",
"datasource-parameters": "Parametreler",
"remove-datasource": "Veri kaynağını kaldır",
@@ -1539,7 +1539,7 @@
"ru_RU": "Rusça",
"es_ES": "İspanyol",
"ja_JA": "Japonca",
- "TR": "Türkçe"
+ "tr_TR": "Türkçe"
}
}
}
\ No newline at end of file
diff --git a/ui/src/app/locale/locale.constant-zh_CN.json b/ui/src/app/locale/locale.constant-zh_CN.json
index c952f9cd32..bac1706c67 100644
--- a/ui/src/app/locale/locale.constant-zh_CN.json
+++ b/ui/src/app/locale/locale.constant-zh_CN.json
@@ -1445,7 +1445,7 @@
"es_ES": "西班牙语",
"it_IT": "意大利",
"ja_JA": "日本",
- "TR": "土耳其"
+ "tr_TR": "土耳其"
}
}
}
diff --git a/ui/src/app/rulechain/script/node-script-test.service.js b/ui/src/app/rulechain/script/node-script-test.service.js
index 81d81c1c54..d4e6df82d5 100644
--- a/ui/src/app/rulechain/script/node-script-test.service.js
+++ b/ui/src/app/rulechain/script/node-script-test.service.js
@@ -121,7 +121,7 @@ export default function NodeScriptTest($q, $mdDialog, $document, ruleChainServic
onShowingCallback: onShowingCallback
},
fullscreen: true,
- skipHide: true,
+ multiple: true,
targetEvent: $event,
onComplete: () => {
onShowingCallback.onShowed();
diff --git a/ui/src/app/user/add-user.controller.js b/ui/src/app/user/add-user.controller.js
index 20ad0beaf7..c81cd67a57 100644
--- a/ui/src/app/user/add-user.controller.js
+++ b/ui/src/app/user/add-user.controller.js
@@ -100,7 +100,7 @@ export default function AddUserController($scope, $mdDialog, $state, $stateParam
},
parent: angular.element($document[0].body),
fullscreen: true,
- skipHide: true,
+ multiple: true,
targetEvent: $event
}).then(function () {
deferred.resolve();
diff --git a/ui/src/app/user/user.controller.js b/ui/src/app/user/user.controller.js
index 8d7f214b9a..ef7948daf0 100644
--- a/ui/src/app/user/user.controller.js
+++ b/ui/src/app/user/user.controller.js
@@ -186,7 +186,7 @@ export default function UserController(userService, toast, $scope, $mdDialog, $d
},
parent: angular.element($document[0].body),
fullscreen: true,
- skipHide: true,
+ multiple: true,
targetEvent: event
});
}
diff --git a/ui/src/app/widget/lib/alarms-table-widget.js b/ui/src/app/widget/lib/alarms-table-widget.js
index 6ae17e0459..3d91e9abbc 100644
--- a/ui/src/app/widget/lib/alarms-table-widget.js
+++ b/ui/src/app/widget/lib/alarms-table-widget.js
@@ -402,7 +402,7 @@ function AlarmsTableWidgetController($element, $scope, $filter, $mdMedia, $mdDia
parent: angular.element($document[0].body),
targetEvent: $event,
fullscreen: true,
- skipHide: true,
+ multiple: true,
onShowing: function(scope, element) {
onShowingCallback.onShowing(scope, element);
}
diff --git a/ui/src/app/widget/lib/canvas-digital-gauge.js b/ui/src/app/widget/lib/canvas-digital-gauge.js
index 283a42676b..274cc97901 100644
--- a/ui/src/app/widget/lib/canvas-digital-gauge.js
+++ b/ui/src/app/widget/lib/canvas-digital-gauge.js
@@ -209,8 +209,8 @@ export default class TbCanvasDigitalGauge {
}
var value = tvPair[1];
if(value !== this.gauge.value) {
- this.gauge.value = value;
this.gauge._value = value;
+ this.gauge.value = value;
} else if (this.localSettings.showTimestamp && this.gauge.timestamp != timestamp) {
this.gauge.timestamp = timestamp;
}