Add the possibility to select a title icon in widget configuration (#1900)

This commit is contained in:
Mirco Pizzichini 2019-08-07 12:16:20 +02:00 committed by Igor Kulikov
parent 3d5920e8cd
commit c8abaf1a06
8 changed files with 90 additions and 9 deletions

View File

@ -181,12 +181,15 @@ function DashboardController($scope, $rootScope, $element, $timeout, $mdMedia, $
vm.widgetCol = widgetCol;
vm.widgetStyle = widgetStyle;
vm.showWidgetTitle = showWidgetTitle;
vm.showWidgetTitleIcon = showWidgetTitleIcon;
vm.hasWidgetTitleTemplate = hasWidgetTitleTemplate;
vm.widgetTitleTemplate = widgetTitleTemplate;
vm.showWidgetTitlePanel = showWidgetTitlePanel;
vm.showWidgetActions = showWidgetActions;
vm.widgetTitleStyle = widgetTitleStyle;
vm.widgetTitle = widgetTitle;
vm.widgetTitleIcon = widgetTitleIcon;
vm.widgetTitleIconStyle = widgetTitleIconStyle;
vm.customWidgetHeaderActions = customWidgetHeaderActions;
vm.widgetActions = widgetActions;
vm.dropWidgetShadow = dropWidgetShadow;
@ -880,6 +883,14 @@ function DashboardController($scope, $rootScope, $element, $timeout, $mdMedia, $
}
}
function showWidgetTitleIcon(widget) {
if (angular.isDefined(widget.config.showTitleIcon)) {
return widget.config.showTitleIcon;
} else {
return false;
}
}
function hasWidgetTitleTemplate(widget) {
var ctx = widgetContext(widget);
if (ctx && ctx.widgetTitleTemplate) {
@ -934,6 +945,25 @@ function DashboardController($scope, $rootScope, $element, $timeout, $mdMedia, $
}
}
function widgetTitleIcon(widget) {
if (angular.isDefined(widget.config.titleIcon)) {
return widget.config.titleIcon;
} else {
return '';
}
}
function widgetTitleIconStyle(widget) {
var style = {};
if (angular.isDefined(widget.config.iconColor)) {
style.color = widget.config.iconColor;
}
if (angular.isDefined(widget.config.iconSize)) {
style.fontSize = widget.config.iconSize;
}
return style;
}
function customWidgetHeaderActions(widget) {
var ctx = widgetContext(widget);
if (ctx && ctx.customHeaderActions && ctx.customHeaderActions.length) {

View File

@ -47,7 +47,12 @@
<div layout="row" layout-align="space-between start">
<div class="tb-widget-title" layout="column" layout-align="center start" ng-show="vm.showWidgetTitlePanel(widget)">
<div ng-if="vm.hasWidgetTitleTemplate(widget)" ng-include="vm.widgetTitleTemplate(widget)"></div>
<span ng-show="vm.showWidgetTitle(widget)" ng-style="vm.widgetTitleStyle(widget)" class="md-subhead title">{{vm.widgetTitle(widget)}}</span>
<span ng-show="vm.showWidgetTitle(widget)" ng-style="vm.widgetTitleStyle(widget)" class="md-subhead title">
<md-icon class="material-icons" ng-if="vm.showWidgetTitleIcon(widget)" ng-style="vm.widgetTitleIconStyle(widget)">
{{vm.widgetTitleIcon(widget)}}
</md-icon>
{{vm.widgetTitle(widget)}}
</span>
<tb-timewindow aggregation="{{vm.hasAggregation(widget)}}" ng-if="vm.hasTimewindow(widget)" ng-model="widget.config.timewindow"></tb-timewindow>
</div>
<div class="tb-widget-actions" layout="row" layout-align="start center" ng-show="vm.showWidgetActions(widget)" tb-mousedown="$event.stopPropagation()"

View File

@ -109,6 +109,10 @@ function WidgetConfig($compile, $templateCache, $rootScope, $translate, $timeout
if (config) {
scope.selectedTab = 0;
scope.title = config.title;
scope.showTitleIcon = angular.isDefined(config.showTitleIcon) ? config.showTitleIcon : false;
scope.titleIcon = angular.isDefined(config.titleIcon) ? config.titleIcon : '';
scope.iconColor = angular.isDefined(config.iconColor) ? config.iconColor : 'rgba(0, 0, 0, 0.87)';
scope.iconSize = angular.isDefined(config.iconSize) ? config.iconSize : '24px';
scope.showTitle = config.showTitle;
scope.dropShadow = angular.isDefined(config.dropShadow) ? config.dropShadow : true;
scope.enableFullscreen = angular.isDefined(config.enableFullscreen) ? config.enableFullscreen : true;
@ -236,14 +240,18 @@ function WidgetConfig($compile, $templateCache, $rootScope, $translate, $timeout
}
};
scope.$watch('title + showTitle + dropShadow + enableFullscreen + backgroundColor + color + ' +
'padding + margin + widgetStyle + titleStyle + mobileOrder + mobileHeight + units + decimals + useDashboardTimewindow + displayTimewindow + ' +
'alarmSearchStatus + alarmsPollingInterval + showLegend', function () {
scope.$watch('title + showTitleIcon + titleIcon + iconColor + iconSize + showTitle + dropShadow + enableFullscreen + backgroundColor + ' +
'color + padding + margin + widgetStyle + titleStyle + mobileOrder + mobileHeight + units + decimals + useDashboardTimewindow + ' +
'displayTimewindow + alarmSearchStatus + alarmsPollingInterval + showLegend', function () {
if (ngModelCtrl.$viewValue) {
var value = ngModelCtrl.$viewValue;
if (value.config) {
var config = value.config;
config.title = scope.title;
config.showTitleIcon = scope.showTitleIcon;
config.titleIcon = scope.titleIcon;
config.iconColor = scope.iconColor;
config.iconSize = scope.iconSize;
config.showTitle = scope.showTitle;
config.dropShadow = scope.dropShadow;
config.enableFullscreen = scope.enableFullscreen;

View File

@ -190,6 +190,32 @@
</div>
</div>
</div>
<div layout='column' layout-align="center" layout-gt-sm='row' layout-align-gt-sm="start center">
<div layout="row" flex layout-padding>
<md-checkbox aria-label="{{ 'widget-config.display-icon' | translate }}"
ng-model="showTitleIcon">{{ 'widget-config.display-icon' | translate }}
</md-checkbox>
</div>
<div flex>
<tb-material-icon-select ng-disabled="!showTitleIcon" ng-model="titleIcon">
</tb-material-icon-select>
</div>
<div flex
md-color-picker
ng-model="iconColor"
label="{{ 'widget-config.icon-color' | translate }}"
icon="format_color_fill"
default="rgba(0, 0, 0, 0.87)"
md-color-clear-button="false"
open-on-input="true"
md-color-generic-palette="false"
md-color-history="false"
></div>
<md-input-container flex>
<label translate>widget-config.icon-size</label>
<input ng-model="iconSize">
</md-input-container>
</div>
<div layout='column' layout-align="center" layout-gt-sm='row' layout-align-gt-sm="start center">
<div layout="row" layout-padding>
<md-checkbox aria-label="{{ 'widget-config.display-title' | translate }}"

View File

@ -1610,7 +1610,10 @@
"edit-action": "Edit action",
"delete-action": "Delete action",
"delete-action-title": "Delete widget action",
"delete-action-text": "Are you sure you want delete widget action with name '{{actionName}}'?"
"delete-action-text": "Are you sure you want delete widget action with name '{{actionName}}'?",
"display-icon": "Display title icon",
"icon-color": "Icon color",
"icon-size": "Icon size"
},
"widget-type": {
"import": "Import widget type",
@ -1714,4 +1717,4 @@
"cs_CZ": "Czech"
}
}
}
}

View File

@ -1610,7 +1610,10 @@
"edit-action": "Editar acción",
"delete-action": "Eliminar acción",
"delete-action-title": "Eliminar acción del widget",
"delete-action-text": "¿Está seguro de que desea eliminar la acción del widget con nombre '{{actionName}}'?"
"delete-action-text": "¿Está seguro de que desea eliminar la acción del widget con nombre '{{actionName}}'?",
"display-icon": "Mostrar icono del título",
"icon-color": "Color del icono",
"icon-size": "Tamaño del icono"
},
"widget-type": {
"import": "Importar tipo de widget",

View File

@ -1431,7 +1431,10 @@
"title-style": "Style de titre",
"units": "Symbole spécial à afficher à côté de la valeur",
"use-dashboard-timewindow": "Utiliser la fenêtre de temps du tableau de bord",
"widget-style": "Style du widget"
"widget-style": "Style du widget",
"display-icon": "Afficher l'icône du titre",
"icon-color": "Couleur de l'icône",
"icon-size": "Taille de l'icône"
},
"widget-type": {
"create-new-widget-type": "Créer un nouveau type de widget",

View File

@ -1545,7 +1545,10 @@
"edit-action": "Modifica azione",
"delete-action": "Cancella azione",
"delete-action-title": "Cancella azione del widget",
"delete-action-text": "Sei sicuro di voler cancellare l'azione del widget '{{actionName}}'?"
"delete-action-text": "Sei sicuro di voler cancellare l'azione del widget '{{actionName}}'?",
"display-icon": "Mostra icona titolo",
"icon-color": "Colore dell'icona",
"icon-size": "Dimensione dell'icona"
},
"widget-type": {
"import": "Importa un tipo di widget",