Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
truenas-rk3588
webui
Commits
df99e8fb
Commit
df99e8fb
authored
3 years ago
by
Evgeny Stepanovych
Committed by
Bug Clerk
3 years ago
Browse files
Options
Download
Email Patches
Plain Diff
NAS-113738: Hack-fixes alerts
(cherry picked from commit
8cc4e956
)
parent
78736d44
base
DOCS
DOCS-3538
NAS-010101
NAS-100796
NAS-105865
NAS-108939
NAS-110488
NAS-110533
NAS-110571
NAS-110777
NAS-110800
NAS-111872
NAS-111962-master
NAS-111989
NAS-112189
NAS-112307
NAS-112334
NAS-112343
NAS-112371
NAS-112767
NAS-112767-alt2
NAS-112767-mocks
NAS-112795
NAS-112921
NAS-112995-22.12
NAS-113044
NAS-113293-reproduction
NAS-113464
NAS-113464-alt
NAS-113490
NAS-113511
NAS-113671
NAS-113675
NAS-113679
NAS-113695
NAS-113706
NAS-113708
NAS-113738-22.02
NAS-113790
NAS-113817
NAS-113821
NAS-113837
NAS-113860
NAS-113867
NAS-113876
NAS-113903
NAS-113903-2
NAS-113904-2
NAS-113953
NAS-114032
NAS-114045
NAS-114058
NAS-114084
NAS-114087
NAS-114088
NAS-114098
NAS-114171
NAS-114173
NAS-114179
NAS-114179-2
NAS-114204
NAS-114214
NAS-114215
NAS-114241
NAS-114338
NAS-114347
NAS-114389
NAS-114410
NAS-114413-2
NAS-114420
NAS-114428
NAS-114447
NAS-114448
NAS-114448-bluefin
NAS-114471
NAS-114546
NAS-114549
NAS-114554
NAS-114607
NAS-114622
NAS-114639
NAS-114659
NAS-114660
NAS-114751
NAS-114769
NAS-114806
NAS-114845
NAS-114846
NAS-114881
NAS-114915
NAS-114950
NAS-115146
NAS-115162
NAS-115254
NAS-115271
NAS-115339
NAS-115340
NAS-115357
NAS-115488
NAS-115546
NAS-115547
NAS-115593
NAS-115593-2
NAS-115593-3
NAS-115593-4
NAS-115593-5
NAS-115593-6
NAS-115593-7
NAS-115713-22-12
NAS-115759
NAS-115759-22.12
NAS-115887-22.02.1
NAS-115942-22.02
NAS-116151
NAS-116162
NAS-116334-1
NAS-116334-2
NAS-116393
NAS-116395
NAS-116397
NAS-116397-2
NAS-116397-3
NAS-116398
NAS-116405
NAS-116406
NAS-116410
NAS-116422
NAS-116450
NAS-116469
NAS-116609
NAS-116715
NAS-116715-mobile
NAS-116715-v2
NAS-116724
NAS-116915
NAS-116916
NAS-117017
NAS-117019
NAS-117028-22.12-BETA.2
NAS-117060
NAS-117098
NAS-117149-22.12
NAS-117216
NAS-117233
NAS-117239
NAS-117253
NAS-117278
NAS-117317
NAS-117323
NAS-117333
NAS-117401
NAS-117439
NAS-117475
NAS-117476
NAS-117481-test
NAS-117520
NAS-117573-v2
NAS-117594
NAS-117628
NAS-117688-bluefin
NAS-117700
NAS-117713-12
NAS-117714
NAS-117718
NAS-117734
NAS-117768
NAS-117813
NAS-117823
NAS-117841-2
NAS-117846
NAS-117959
NAS-118036
NAS-118044
NAS-118113
NAS-118165
NAS-118303
NAS-118454-22.12
NAS-118465
NAS-118505-22.12
NAS-118545
NAS-118548
NAS-119131
NAS-119140
NAS-119180-22.12.1
NAS-119431
NAS-119556-23.10
NAS-119615-22.12.1
NAS-119668
NAS-119695
NAS-119749-bluefin
NAS-119750-22.12.1
NAS-119806
NAS-119812
NAS-119886-22.12.1
NAS-119996
NAS-119996-bluefin
NAS-120045
NAS-120047
NAS-120057
NAS-120173-22.12.1
NAS-120181-22.12.1
NAS-120264-22.12.1
NAS-120274
NAS-120296-22.12.1
NAS-120326-22.12.1
NAS-120490_
NAS-120503
NAS-121006-22.12.2
NAS-121124
NAS-121128-22.12.2
NAS-121128-release-22.12.2
NAS-121136
NAS-121177
NAS-121218-22.12.3
NAS-121300
NAS-121316
NAS-121541
NAS-121542
NAS-121686
NAS-121721-22.12.3
NAS-121778
NAS-121827
NAS-121884-22.12.3
NAS-122267-22.12.4
NAS-122372
NAS-122601
NAS-122686
NAS-122706
NAS-122721
NAS-122751-23.10-BETA.1
NAS-122759
NAS-122781
NAS-122794-23.10
NAS-122855
NAS-122870-bluefin
NAS-122969
NAS-122993-22.12.4
NAS-123055-22.12.4
NAS-123278
NAS-123295
NAS-123437
NAS-123478-22.12.4
NAS-123484
NAS-123492
NAS-123526-22.12.4
NAS-123651
NAS-123651-23.10-BETA.1
NAS-123666
NAS-123723
NAS-123723-cobia
NAS-123762
NAS-123762-23.10
NAS-123778-23.10
NAS-123778-23.10-RC.1
NAS-123778-RC.1
NAS-123801
NAS-123810-23.10
NAS-123813-22.12.4
NAS-123836
NAS-123836-23.10-BETA.1
NAS-123836-24.04
NAS-123861
NAS-123911-23.10-BETA.1
NAS-123928-23.10
NAS-123931-22.12.4
NAS-123945
NAS-124044
NAS-124077
NAS-124131-23.10
NAS-124137
NAS-124183
NAS-124231
NAS-124232
NAS-124237-23.10
NAS-124325-23.10.0
NAS-124335
NAS-124354
NAS-124430
NAS-124454
NAS-124481-23.10.0
NAS-124481-23.10.1
NAS-124555-23.10.0
NAS-124555-23.10.1
NAS-124666
NAS-124707-23.10.0
NAS-124707-23.10.1
NAS-124716
NAS-124846-23.10.0
NAS-124846-23.10.1
NAS-124892
NAS-124895-23.10.1
NAS-124908
NAS-124951
NAS-124964
NAS-124999
NAS-125092
NAS-125213-23.10.1
NAS-125307
NAS-125532
NAS-125568
NAS-125607-validator
NAS-125616-23.10.2
NAS-125654
NAS-125703-23.10.2
NAS-125728
NAS-125931
NAS-126699
NAS-126774-24.04-RC.1
NAS-126774-dragonfish
NAS-126795
NAS-126795-test
NAS-126795-test2
NAS-127001
NAS-127002-24.04-RC.1
NAS-127022
NAS-127041-24.04-BETA.1
NAS-127049-24.04-RC.1
NAS-127297-24.04-RC.1
NAS-127297-24.10
NAS-127369
NAS-127551
NAS-127551-alt
NAS-127589-24.04.0
NAS-127593
NAS-127615-24.04.0
NAS-127660
NAS-127794
NAS-127829-24.10
NAS-127854-24.04.0
NAS-128030
NAS-128045
NAS-128071
NAS-128173
NAS-128209
NAS-128287
NAS-128289
TE-1553-dragonfish
TE-1628
auto-129
back
bugfix/NAS-117859-sidebar-menu-fix
bugfix/NAS-117941-error-when-removing-pools-and-visit-datasets
bugfix/NAS-118171-rsynk-task-local-path
bugfix/NAS-118260-boot-env-keep-table-row
bugfix/NAS-118282-search-input-fixes
bugfix/NAS-118404-dataset-icon-role-double-toooltip
bugfix/NAS-118414-warning-modal-icon
bugfix/NAS-118415-tree-select-undefined
bugfix/NAS-118454-acl-manager-after-dataset-creation-fix
bugfix/NAS-118470-multiselext-styles-are-broken
bugfix/NAS-118503-datasets-glitch-fix
bugfix/NAS-118504-redirect-to-correct-dataset-after-permissions-submit
bugfix/NAS-118510-redirect-url-fix-after-manual-change
bugfix/NAS-118530-advanced-settings-box-duplicates
bugfix/NAS-118541-progress-bar-oberflows
bugfix/NAS-118557-replication-task-forbid-custom-retention-policy-cases
bugfix/NAS-118600-smb-share-redirect
bugfix/NAS-118601-remove-mixed-for-zfs-datasets
cpu-pinning
dataset-tree-tooltips
developer/lyy
feature/NAS-117754-font-rendering
feature/NAS-117968-tooltips-to-status-icons-on-pools
feature/NAS-118058-improve-dashboard-icons-sync-pool-and-storage
feature/NAS-118147-html-refactoring
feature/NAS-118269-improve-ui
feature/NAS-118303
feature/NAS-118333-storage-dashboard-icons-update
feature/NAS-118334-screentype-enum
feature/NAS-118335-improve-spinners-look
feature/NAS-118349-datasets-long-names
feature/NAS-118360-handle-clipboard-api-not-available
feature/NAS-118412-pool-processing-modal
feature/NAS-118466-root-path-mnt
feature/NAS-118543-user-password-field
feauture/NAS-117474-datasets-table-header-sticky
l10n_master
llll
master
master-old
metrics-enable
patch-1
patch-235
q5sys-3838
rel-v0.0.1
release-test/22.02.3
release/22.02
release/22.02-test
release/22.02.1
release/22.02.2
release/22.02.3
release/22.02.4
release/22.12
release/22.12-BETA.1
release/22.12-BETA.2
release/22.12-RC.1
release/22.12.1
release/22.12.2
release/22.12.3
release/22.12.4
release/23.10-BETA.1
release/23.10-RC.1
release/23.10.0
release/23.10.1
release/23.10.1.1
release/23.10.1.2
release/23.10.1.3
release/23.10.2
release/24.04-BETA.1
release/24.04-RC.1
release/24.04.0
renediepenbroek/master
revert-6783-NAS-116405
revert-7745-NAS-120274
stable/angelfish
stable/bluefin
stable/cobia
stable/dragonfish
t1356-scaleuitest
test-xxxyyy
testing-refine-branchout-process
testing-refine-branchout-process2
v0.0.2
TS-24.04-RC.1
TS-24.04-BETA.1
TS-23.10.2
TS-23.10.1.3
TS-23.10.1.2
TS-23.10.1.1
TS-23.10.1
TS-23.10.0.1
TS-23.10.0
TS-23.10-RC.1
TS-23.10-BETA.1
TS-22.12.4.2
TS-22.12.4.1
TS-22.12.4
TS-22.12.3.3
TS-22.12.3.2
TS-22.12.3.1
TS-22.12.3
TS-22.12.2
TS-22.12.1
TS-22.12.0
TS-22.12-RC.1
TS-22.12-BETA.2
TS-22.12-BETA.1
TS-22.12-ALPHA.1
TS-22.02.4
TS-22.02.3
TS-22.02.2.1
TS-22.02.2
TS-22.02.1
TS-22.02.0.1
TS-22.02.0
TS-22.2.0
TS-22.02.RELEASE.1
TS-12.12.3
DN110M-CS-v2.0
No related merge requests found
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
src/app/components/common/notifications/notifications.component.html
+14
-10
...ponents/common/notifications/notifications.component.html
src/app/components/common/notifications/notifications.component.ts
+11
-13
...omponents/common/notifications/notifications.component.ts
src/app/enums/api-event-message.enum.ts
+1
-0
src/app/enums/api-event-message.enum.ts
src/app/interfaces/api-event.interface.ts
+3
-0
src/app/interfaces/api-event.interface.ts
src/app/services/notifications.service.ts
+13
-4
src/app/services/notifications.service.ts
with
42 additions
and
27 deletions
+42
-27
src/app/components/common/notifications/notifications.component.html
View file @
df99e8fb
...
...
@@ -62,17 +62,21 @@
</mat-list-item>
<mat-list-item
*ngFor=
"let n of notifications; let last = last"
*ngFor=
"let n
otification
of notifications; let last = last"
class=
"notific-item unread m-0 p-0"
role=
"listitem"
[class.last]=
"last"
>
<mat-icon
[color]=
"n.color"
class=
"notific-icon"
[matTooltip]=
"n.icon_tooltip"
>
{{n.icon}}
</mat-icon>
<mat-icon
[color]=
"notification.color"
class=
"notific-icon"
[matTooltip]=
"notification.icon_tooltip"
>
{{notification.icon}}
</mat-icon>
<div
class=
"mat-list-text"
>
<h3
class=
"notific-title {{n.color}}"
>
{{n.level}}
</h3>
<h4
class=
"message"
[innerHTML]=
"n.message"
></h4>
<small
class=
"time"
>
{{n.time_locale | date: ngDateFormat }} ({{n.timezone}})
</small>
<a
(click)=
"
turnMeOff(
n,$event)"
class=
"dismiss"
>
{{ 'Dismiss' | translate }}
</a>
<h3
class=
"notific-title {{n
otification
.color}}"
>
{{n
otification
.level}}
</h3>
<h4
class=
"message"
[innerHTML]=
"n
otification
.message"
></h4>
<small
class=
"time"
>
{{n
otification
.time_locale | date: ngDateFormat }} ({{n
otification
.timezone}})
</small>
<a
(click)=
"
onDismiss(notificatio
n,$event)"
class=
"dismiss"
>
{{ 'Dismiss' | translate }}
</a>
</div>
</mat-list-item>
...
...
@@ -83,16 +87,16 @@
</div>
<mat-list-item
*ngFor=
"let n of dismissedNotifications; let last = last"
*ngFor=
"let n
otification
of dismissedNotifications; let last = last"
class=
"notific-item read"
role=
"listitem"
[class.last]=
"last"
>
<mat-icon
class=
"notific-icon dismissed"
[matTooltip]=
"'DISMISSED' | translate"
>
check_circle
</mat-icon>
<div
class=
"mat-list-text dismissed"
>
<h4
class=
"message"
[innerHTML]=
"n.message"
></h4>
<small
class=
"time"
>
{{n.time_locale | date: ngDateFormat }} ({{n.timezone}})
</small>
<a
(click)=
"
turnMeOn(
n, $event)"
class=
"dismiss"
>
{{ 'Re-Open' | translate }}
</a>
<h4
class=
"message"
[innerHTML]=
"n
otification
.message"
></h4>
<small
class=
"time"
>
{{n
otification
.time_locale | date: ngDateFormat }} ({{n
otification
.timezone}})
</small>
<a
(click)=
"
onRestore(notificatio
n, $event)"
class=
"dismiss"
>
{{ 'Re-Open' | translate }}
</a>
</div>
</mat-list-item>
...
...
This diff is collapsed.
Click to expand it.
src/app/components/common/notifications/notifications.component.ts
View file @
df99e8fb
...
...
@@ -33,18 +33,16 @@ export class NotificationsComponent implements OnInit {
this
.
notifications
=
[];
this
.
dismissedNotifications
=
[];
setTimeout
(()
=>
{
this
.
ngDateFormat
=
`
${
this
.
localeService
.
getAngularFormat
()}
`
;
notifications
.
forEach
((
notification
:
NotificationAlert
)
=>
{
if
(
!
notification
.
dismissed
)
{
if
(
!
_
.
find
(
this
.
notifications
,
{
id
:
notification
.
id
}))
{
this
.
notifications
.
push
(
notification
);
}
}
else
if
(
!
_
.
find
(
this
.
dismissedNotifications
,
{
id
:
notification
.
id
}))
{
this
.
dismissedNotifications
.
push
(
notification
);
this
.
ngDateFormat
=
`
${
this
.
localeService
.
getAngularFormat
()}
`
;
notifications
.
forEach
((
notification
:
NotificationAlert
)
=>
{
if
(
!
notification
.
dismissed
)
{
if
(
!
_
.
find
(
this
.
notifications
,
{
id
:
notification
.
id
}))
{
this
.
notifications
.
push
(
notification
);
}
});
},
-
1
);
}
else
if
(
!
_
.
find
(
this
.
dismissedNotifications
,
{
id
:
notification
.
id
}))
{
this
.
dismissedNotifications
.
push
(
notification
);
}
});
});
this
.
localeService
.
dateTimeFormatChange$
.
pipe
(
untilDestroyed
(
this
)).
subscribe
(()
=>
{
this
.
ngDateFormat
=
`
${
this
.
localeService
.
getAngularFormat
()}
`
;
...
...
@@ -75,12 +73,12 @@ export class NotificationsComponent implements OnInit {
this
.
notificationsService
.
restoreNotifications
(
this
.
dismissedNotifications
);
}
turnMeOff
(
notification
:
NotificationAlert
,
e
:
MouseEvent
):
void
{
onDismiss
(
notification
:
NotificationAlert
,
e
:
MouseEvent
):
void
{
e
.
preventDefault
();
this
.
notificationsService
.
dismissNotifications
([
notification
]);
}
turnMeOn
(
notification
:
NotificationAlert
,
e
:
MouseEvent
):
void
{
onRestore
(
notification
:
NotificationAlert
,
e
:
MouseEvent
):
void
{
e
.
preventDefault
();
this
.
notificationsService
.
restoreNotifications
([
notification
]);
}
...
...
This diff is collapsed.
Click to expand it.
src/app/enums/api-event-message.enum.ts
View file @
df99e8fb
export
enum
ApiEventMessage
{
Changed
=
'
changed
'
,
Added
=
'
added
'
,
Removed
=
'
removed
'
,
Result
=
'
result
'
,
Connected
=
'
connected
'
,
Connect
=
'
connect
'
,
...
...
This diff is collapsed.
Click to expand it.
src/app/interfaces/api-event.interface.ts
View file @
df99e8fb
...
...
@@ -5,4 +5,7 @@ export interface ApiEvent<T> {
fields
:
T
;
id
:
number
;
msg
:
ApiEventMessage
;
// true when item is fully removed from the collection
// TODO: Find usages and guard against directly in WebsocketService. Only rely on 'removed' ApiEventMessage
cleared
?:
boolean
;
}
This diff is collapsed.
Click to expand it.
src/app/services/notifications.service.ts
View file @
df99e8fb
...
...
@@ -48,17 +48,26 @@ export class NotificationsService {
});
this
.
ws
.
sub
(
'
alert.list
'
).
pipe
(
untilDestroyed
(
this
)).
subscribe
((
alert
)
=>
{
// check for updates to alerts
if
((
alert
.
msg
===
ApiEventMessage
.
Changed
&&
alert
.
cleared
)
||
alert
.
msg
===
ApiEventMessage
.
Removed
)
{
// Sometimes alerts are dismissed and sometimes they are fully removed.
// Full removal is handled below.
// TODO: Rewrite.
return
;
}
const
notification
=
this
.
alertsArrivedHandler
([
alert
])[
0
];
if
(
!
_
.
find
(
this
.
notifications
,
{
id
:
notification
.
id
}))
{
const
existingIndex
=
_
.
findIndex
(
this
.
notifications
,
{
id
:
notification
.
id
});
if
(
existingIndex
===
-
1
)
{
this
.
notifications
.
push
(
notification
);
}
else
{
this
.
notifications
[
existingIndex
]
=
notification
;
}
this
.
subject$
.
next
(
this
.
notifications
);
});
this
.
ws
.
subscribe
(
'
alert.list
'
).
pipe
(
untilDestroyed
(
this
)).
subscribe
((
event
)
=>
{
//
check for changed
alert
s
if
(
event
&&
event
.
msg
===
ApiEventMessage
.
Changed
&&
(
event
as
any
)
.
cleared
)
{
//
Handle full removal of an
alert
.
if
(
event
&&
event
.
msg
===
ApiEventMessage
.
Changed
&&
event
.
cleared
)
{
const
index
=
_
.
findIndex
(
this
.
notifications
,
{
id
:
String
(
event
.
id
)
});
if
(
index
!==
-
1
)
{
this
.
notifications
.
splice
(
index
,
1
);
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help