From fd251f0d9a82d38d228902a9c652b3b7679d2c9a Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Mon, 29 Oct 2018 18:28:15 +0200 Subject: [PATCH] Fix Turkish localization. Update angular material version to 1.1.9. Fix 0 digital gauges value when no animation. --- .../json/system/widget_bundles/cards.json | 2 +- ui/package.json | 4 +- ui/src/app/alarm/alarm-row.directive.js | 2 +- ui/src/app/app.js | 4 + ui/src/app/audit/audit-log-row.directive.js | 2 +- ui/src/app/common/thirdparty-fix.js | 195 ++++++++++++++++++ .../components/datasource-entity.directive.js | 4 +- .../app/components/datasource-entity.tpl.html | 2 - .../components/datasource-func.directive.js | 4 +- ui/src/app/components/json-form.directive.js | 2 +- .../material-icon-select.directive.js | 2 +- .../action/manage-widget-actions.directive.js | 4 +- ui/src/app/dashboard/add-widget.controller.js | 2 +- ui/src/app/dashboard/dashboard.controller.js | 12 +- ui/src/app/dashboard/edit-widget.directive.js | 2 +- .../manage-dashboard-layouts.controller.js | 2 +- .../manage-dashboard-states.controller.js | 4 +- .../entity/alias/entity-aliases.controller.js | 4 +- ...d-widget-to-dashboard-dialog.controller.js | 4 +- .../relation/relation-table.directive.js | 2 +- ui/src/app/event/event-row.directive.js | 2 +- .../extension/extension-table.directive.js | 2 +- .../import-export/import-export.service.js | 4 +- ui/src/app/layout/index.js | 2 - ui/src/app/locale/locale.constant-en_US.json | 2 +- ui/src/app/locale/locale.constant-es_ES.json | 2 +- ui/src/app/locale/locale.constant-fr_FR.json | 2 +- ui/src/app/locale/locale.constant-it_IT.json | 2 +- ui/src/app/locale/locale.constant-ja_JA.json | 2 +- ui/src/app/locale/locale.constant-ko_KR.json | 2 +- ui/src/app/locale/locale.constant-ru_RU.json | 2 +- ...ant-TR.json => locale.constant-tr_TR.json} | 128 ++++++------ ui/src/app/locale/locale.constant-zh_CN.json | 2 +- .../script/node-script-test.service.js | 2 +- ui/src/app/user/add-user.controller.js | 2 +- ui/src/app/user/user.controller.js | 2 +- ui/src/app/widget/lib/alarms-table-widget.js | 2 +- ui/src/app/widget/lib/canvas-digital-gauge.js | 2 +- 38 files changed, 309 insertions(+), 114 deletions(-) create mode 100644 ui/src/app/common/thirdparty-fix.js rename ui/src/app/locale/{locale.constant-TR.json => locale.constant-tr_TR.json} (94%) 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; }