diff --git a/ui-ngx/src/app/modules/home/pages/admin/oauth2-settings.component.ts b/ui-ngx/src/app/modules/home/pages/admin/oauth2-settings.component.ts
index 34f35611b4..d274f6728e 100644
--- a/ui-ngx/src/app/modules/home/pages/admin/oauth2-settings.component.ts
+++ b/ui-ngx/src/app/modules/home/pages/admin/oauth2-settings.component.ts
@@ -570,4 +570,8 @@ export class OAuth2SettingsComponent extends PageComponent implements OnInit, Ha
trackByParams(index: number): number {
return index;
}
+
+ trackByItem(i, item) {
+ return item;
+ }
}
diff --git a/ui-ngx/src/app/modules/home/pages/notification/sent/sent-notification-dialog.componet.ts b/ui-ngx/src/app/modules/home/pages/notification/sent/sent-notification-dialog.componet.ts
index 4846cd063d..57ee325e90 100644
--- a/ui-ngx/src/app/modules/home/pages/notification/sent/sent-notification-dialog.componet.ts
+++ b/ui-ngx/src/app/modules/home/pages/notification/sent/sent-notification-dialog.componet.ts
@@ -162,7 +162,6 @@ export class SentNotificationDialogComponent extends
}
this.notificationRequestForm.get('useTemplate').setValue(useTemplate, {onlySelf : true});
}
-
this.refreshAllowDeliveryMethod();
}
@@ -337,19 +336,23 @@ export class SentNotificationDialogComponent extends
refreshAllowDeliveryMethod() {
this.notificationService.getAvailableDeliveryMethods({ignoreLoading: true}).subscribe(allowMethods => {
this.allowNotificationDeliveryMethods = allowMethods;
- this.updateDeliveryMethodsDisableState();
- this.showRefresh = (this.notificationDeliveryMethods.length !== allowMethods.length);
+ if (!this.notificationRequestForm.get('useTemplate').value) {
+ this.updateDeliveryMethodsDisableState();
+ this.showRefresh = (this.notificationDeliveryMethods.length !== allowMethods.length);
+ }
});
}
private updateDeliveryMethodsDisableState() {
- this.notificationDeliveryMethods.forEach(method => {
- if (this.allowNotificationDeliveryMethods.includes(method)) {
- this.getDeliveryMethodsTemplatesControl(method).enable({emitEvent: true});
- } else {
- this.getDeliveryMethodsTemplatesControl(method).disable({emitEvent: true});
- this.getDeliveryMethodsTemplatesControl(method).setValue(false, {emitEvent: true}); //used for notify again
- }
- });
+ if (this.allowNotificationDeliveryMethods) {
+ this.notificationDeliveryMethods.forEach(method => {
+ if (this.allowNotificationDeliveryMethods.includes(method)) {
+ this.getDeliveryMethodsTemplatesControl(method).enable({emitEvent: true});
+ } else {
+ this.getDeliveryMethodsTemplatesControl(method).disable({emitEvent: true});
+ this.getDeliveryMethodsTemplatesControl(method).setValue(false, {emitEvent: true}); //used for notify again
+ }
+ });
+ }
}
}
diff --git a/ui-ngx/src/app/modules/home/pages/rulechain/rulechain-page.component.scss b/ui-ngx/src/app/modules/home/pages/rulechain/rulechain-page.component.scss
index bb79851da4..b109b4753d 100644
--- a/ui-ngx/src/app/modules/home/pages/rulechain/rulechain-page.component.scss
+++ b/ui-ngx/src/app/modules/home/pages/rulechain/rulechain-page.component.scss
@@ -182,6 +182,7 @@
.fc-node {
border-radius: 8px;
&.fc-selected {
+ z-index: 2;
&:not(.fc-edit) {
margin: -3px;
border: solid 3px #f00;
diff --git a/ui-ngx/src/app/shared/components/notification/notification.component.html b/ui-ngx/src/app/shared/components/notification/notification.component.html
index 361d3589fb..b9ce3a840f 100644
--- a/ui-ngx/src/app/shared/components/notification/notification.component.html
+++ b/ui-ngx/src/app/shared/components/notification/notification.component.html
@@ -41,7 +41,7 @@
matTooltip="{{ 'notification.mark-as-read' | translate }}" matTooltipPosition="above">
check_circle_outline
-
{{alarmSeverityTranslations.get(notification.info.alarmSeverity) | translate}}
diff --git a/ui-ngx/src/app/shared/components/notification/notification.component.ts b/ui-ngx/src/app/shared/components/notification/notification.component.ts
index ad543c43c1..6e1ff508a7 100644
--- a/ui-ngx/src/app/shared/components/notification/notification.component.ts
+++ b/ui-ngx/src/app/shared/components/notification/notification.component.ts
@@ -139,7 +139,7 @@ export class NotificationComponent implements OnInit {
}
notificationColor(): string {
- if (this.notification.type === NotificationType.ALARM) {
+ if (this.notification.type === NotificationType.ALARM && !this.notification.info.cleared) {
return AlarmSeverityNotificationColors.get(this.notification.info.alarmSeverity);
}
return 'transparent';
diff --git a/ui-ngx/src/app/shared/components/rule-chain/rule-chain-select.component.html b/ui-ngx/src/app/shared/components/rule-chain/rule-chain-select.component.html
index 2b9c227c30..1d699b5857 100644
--- a/ui-ngx/src/app/shared/components/rule-chain/rule-chain-select.component.html
+++ b/ui-ngx/src/app/shared/components/rule-chain/rule-chain-select.component.html
@@ -15,13 +15,17 @@
limitations under the License.
-->
-
-
- {{ruleChain.name}}
-
-
+
+ settings_ethernet
+
+
+ {{ruleChain.name}}
+
+
+
diff --git a/ui-ngx/src/app/shared/components/rule-chain/rule-chain-select.component.scss b/ui-ngx/src/app/shared/components/rule-chain/rule-chain-select.component.scss
index c538da5725..c69661ad76 100644
--- a/ui-ngx/src/app/shared/components/rule-chain/rule-chain-select.component.scss
+++ b/ui-ngx/src/app/shared/components/rule-chain/rule-chain-select.component.scss
@@ -19,8 +19,16 @@
padding: 0 6px;
.tb-rule-chain-select {
display: flex;
- height: 48px;
min-height: 100%;
pointer-events: all;
}
}
+
+:host ::ng-deep {
+ .mat-mdc-form-field.tb-rule-select .mdc-text-field {
+ .mat-mdc-form-field-infix {
+ min-height: 48px;
+ padding: 12px 0;
+ }
+ }
+}
diff --git a/ui-ngx/src/app/shared/models/notification.models.ts b/ui-ngx/src/app/shared/models/notification.models.ts
index 2cef7c6cc2..4d8a9cffcd 100644
--- a/ui-ngx/src/app/shared/models/notification.models.ts
+++ b/ui-ngx/src/app/shared/models/notification.models.ts
@@ -48,6 +48,8 @@ export interface NotificationInfo {
alarmStatus?: AlarmStatus;
alarmType?: string;
stateEntityId?: EntityId;
+ acknowledged?: boolean;
+ cleared?: boolean;
}
export interface NotificationRequest extends Omit, 'label'> {
diff --git a/ui-ngx/src/app/shared/models/time/time.models.ts b/ui-ngx/src/app/shared/models/time/time.models.ts
index fd2b4f52fa..235df14bb0 100644
--- a/ui-ngx/src/app/shared/models/time/time.models.ts
+++ b/ui-ngx/src/app/shared/models/time/time.models.ts
@@ -452,6 +452,15 @@ export const calculateIntervalStartTime = (interval: QuickTimeInterval, currentD
case QuickTimeInterval.PREVIOUS_MONTH:
currentDate.subtract(1, 'months');
return currentDate.startOf('month');
+ case QuickTimeInterval.PREVIOUS_QUARTER:
+ currentDate.subtract(1, 'quarter');
+ return currentDate.startOf('quarter');
+ case QuickTimeInterval.PREVIOUS_HALF_YEAR:
+ if (currentDate.get('quarter') < 3) {
+ return currentDate.startOf('year').subtract(2, 'quarters');
+ } else {
+ return currentDate.startOf('year');
+ }
case QuickTimeInterval.PREVIOUS_YEAR:
currentDate.subtract(1, 'years');
return currentDate.startOf('year');
diff --git a/ui-ngx/src/assets/locale/locale.constant-en_US.json b/ui-ngx/src/assets/locale/locale.constant-en_US.json
index 07d6b76fd9..d3b374f1ec 100644
--- a/ui-ngx/src/assets/locale/locale.constant-en_US.json
+++ b/ui-ngx/src/assets/locale/locale.constant-en_US.json
@@ -4273,6 +4273,8 @@
"chart": {
"common-settings": "Common settings",
"enable-stacking-mode": "Enable stacking mode",
+ "selection": "Time range selection",
+ "enable-selection-mode": "Enable selection mode",
"line-shadow-size": "Line shadow size",
"display-smooth-lines": "Display smooth (curved) lines",
"default-bar-width": "Default bar width for non-aggregated data (milliseconds)",
diff --git a/ui-ngx/src/typings/jquery.flot.typings.d.ts b/ui-ngx/src/typings/jquery.flot.typings.d.ts
index 5bcc9b9b3e..e832a36e7a 100644
--- a/ui-ngx/src/typings/jquery.flot.typings.d.ts
+++ b/ui-ngx/src/typings/jquery.flot.typings.d.ts
@@ -119,6 +119,7 @@ interface JQueryPlotSelection {
color?: string;
shape?: JQueryPlotSelectionShape;
minSize?: number;
+ touch?: boolean;
}
interface JQueryPlotSelectionRanges {