Compare commits

...

231 Commits

Author SHA1 Message Date
Dominique Eifländer
f182be3db0 Merge branch 'RED10758' into 'master'
RED-10758: Fix remove and recategorize request in applicationType DocuMine

See merge request redactmanager/red-ui!767
2025-01-29 09:30:57 +01:00
Rosario Allegro
81a32f6d58 RED-10758: Fix remove and recategorize request in applicationType DocuMine 2025-01-28 15:34:17 +01:00
Dan Percic
82552b1748 Merge branch 'VM/RED-9580' into 'master'
RED-9580 - added getOne method for stats service to call new users stats...

Closes RED-9580

See merge request redactmanager/red-ui!765
2024-12-13 11:29:39 +01:00
Valentin Mihai
af7a45d739 RED-9580 - added getOne method for stats service to call new users stats endpoint and updated data from "delete user dialog" with new backend data 2024-12-13 12:03:17 +02:00
Valentin-Gabriel Mihai
21013a6fe5 Merge branch 'RED-9885' into 'master'
RED-9885: fixed resize bar behavior & style.

See merge request redactmanager/red-ui!764
2024-12-12 18:13:07 +01:00
Nicoleta Panaghiu
c81ad67844 RED-9885: fixed resize bar behavior & style. 2024-12-12 17:47:56 +02:00
Valentin-Gabriel Mihai
13797f1fb3 Merge branch 'RED-10030' into 'master'
RED-10030: persist the keyColumn value even if csv mapping is disabled.

See merge request redactmanager/red-ui!763
2024-12-12 15:48:47 +01:00
Nicoleta Panaghiu
ef5cd39b16 RED-10030: persist the keyColumn value even if csv mapping is disabled. 2024-12-12 15:59:36 +02:00
Valentin-Gabriel Mihai
e133e944e3 Merge branch 'RED-10589' into 'master'
RED-10589 -  removed file workload from workflow item on documine.

See merge request redactmanager/red-ui!762
2024-12-12 09:34:31 +01:00
Nicoleta Panaghiu
2ffb5bbb63 RED-10589 - removed file workload from workflow item on documine. 2024-12-12 10:30:56 +02:00
Valentin Mihai
0f16644944 Merge branch 'master' into VM/RED-9580 2024-12-11 19:24:25 +02:00
Nicoleta Panaghiu
0b41159ee4 Merge branch 'VM/RED-10301' into 'master'
RED-10301 - set app type config vars based existing tenants from local storage...

Closes RED-10301

See merge request redactmanager/red-ui!761
2024-12-11 17:30:06 +01:00
Valentin Mihai
2a78aea898 RED-10301 - set app type config vars based existing tenants from local storage or used default config if no tenant was set before 2024-12-11 18:27:56 +02:00
Valentin-Gabriel Mihai
4c5face779 Merge branch 'RED-10647' into 'master'
RED-10647: fixed documine helpmode links.

See merge request redactmanager/red-ui!760
2024-12-11 17:15:10 +01:00
Nicoleta Panaghiu
b3a8a8d30c RED-10647: fixed documine helpmode links. 2024-12-11 18:09:56 +02:00
Valentin-Gabriel Mihai
7836750171 Merge branch 'RED-10659' into 'master'
RED-10659: implemented filtering, sorted filters and added search.

See merge request redactmanager/red-ui!759
2024-12-11 16:15:02 +01:00
Nicoleta Panaghiu
ef9d3d2e8f RED-10659: implemented filtering, sorted filters and added search. 2024-12-11 17:10:29 +02:00
Dan Percic
3ca846b2c2 Merge branch 'blah' into 'master'
skip quality gate?

See merge request redactmanager/red-ui!758
2024-12-11 10:09:52 +01:00
Dan Percic
ae7b68bc16 skip quality gate? 2024-12-11 11:07:42 +02:00
Dan Percic
3150134e65 Merge branch 'RED-9856' into 'master'
Resolve RED-9856

Closes RED-9856

See merge request redactmanager/red-ui!757
2024-12-10 18:25:07 +01:00
Nicoleta Panaghiu
b552628b43 RED-9856: implemented revert-changes feature. 2024-12-10 17:58:32 +02:00
Nicoleta Panaghiu
9b3eb4702b RED-9856: class rename. 2024-12-10 17:13:19 +02:00
Nicoleta Panaghiu
52fa98f918 RED-9856: wip; save this for future purposes. 2024-12-10 17:13:19 +02:00
Nicoleta Panaghiu
1d874f37b2 Merge branch 'VM/RED-10627' into 'master'
RED-10627 - updated re processing required color

Closes RED-10627

See merge request redactmanager/red-ui!756
2024-12-10 16:09:03 +01:00
Valentin Mihai
582ba6023e RED-10627 - updated re processing required color 2024-12-10 17:06:55 +02:00
Nicoleta Panaghiu
fbcb522b43 Merge branch 'VM/RED-7772' into 'master'
RED-7772 - shown 'is processing' icon for OCR_PROCESSING_QUEUED status

Closes RED-7772

See merge request redactmanager/red-ui!755
2024-12-10 15:31:59 +01:00
Valentin Mihai
1d3096d82c RED-7772 - shown 'is processing' icon for OCR_PROCESSING_QUEUED status 2024-12-10 16:28:43 +02:00
Valentin-Gabriel Mihai
43ea2e7857 Merge branch 'RED-10614' into 'master'
RED-10614: added missing comma.

See merge request redactmanager/red-ui!754
2024-12-09 17:21:19 +01:00
Nicoleta Panaghiu
92038a1949 RED-10614: added missing comma. 2024-12-09 18:18:49 +02:00
Christoph Schabert
a323ddd5dd add sonar-project props 2024-12-09 15:23:59 +01:00
Christoph Schabert
e70cdd4cc5 Update .gitlab-ci.yml file 2024-12-09 15:21:24 +01:00
Nicoleta Panaghiu
427a81cff6 Merge branch 'release/4.839.x' into 'master'
Add websockets to handle annotations & rules

See merge request redactmanager/red-ui!753
2024-12-09 13:38:42 +01:00
Dan Percic
4933c7a678 RED-9582 finish copilot 2024-12-09 14:37:02 +02:00
Dan Percic
8ee2ec5749 Merge branch 'VM/RED-10575' into 'master'
RED-10575 - added 40px between processing bar and read-only icon

Closes RED-10575

See merge request redactmanager/red-ui!752
2024-12-09 12:07:33 +01:00
Valentin Mihai
ce4216e56c RED-10575 - added 40px between processing bar and read-only icon 2024-12-09 12:47:55 +02:00
Dan Percic
a3526d338f Merge master 2024-12-09 11:33:19 +02:00
Dan Percic
65041f77c3 Merge branch 'nicoleta' into 'master'
RED-3800: fixed sass breaking changes; removed unused imports.

See merge request redactmanager/red-ui!751
2024-12-09 10:28:19 +01:00
Dan Percic
4206993c72 Merge branch 'RED-10512' into 'master'
RED-10512: fixed file attribute text selection.

See merge request redactmanager/red-ui!750
2024-12-09 10:27:29 +01:00
Nicoleta Panaghiu
a7d8dc6a66 RED-3800: fixed sass breaking changes; removed unused imports. 2024-12-09 10:53:04 +02:00
Nicoleta Panaghiu
56bdf1bc4d RED-10512: fixed file attribute text selection. 2024-12-07 11:59:51 +02:00
Dan Percic
acb009a909 Merge branch 'VM/RED-10634' into 'master'
RED-10634 - closed "edit component view" when component is deleted

Closes RED-10634

See merge request redactmanager/red-ui!749
2024-12-06 19:43:46 +01:00
Valentin Mihai
96532fa61e RED-10634 - closed "edit component view" when component is deleted 2024-12-06 20:33:31 +02:00
Dan Percic
eed7f1917e Merge branch 'master' into release/4.839.x 2024-12-06 20:18:56 +02:00
Valentin-Gabriel Mihai
51b99089e4 Merge branch 'RED-10614' into 'master'
RED-10614: fixed UI not loading.

See merge request redactmanager/red-ui!748
2024-12-06 18:31:33 +01:00
Nicoleta Panaghiu
118e35e897 RED-10614: fixed UI not loading. 2024-12-06 19:26:40 +02:00
Dan Percic
b9197b1eb3 Merge remote-tracking branch 'origin/master' into release/4.839.x 2024-12-05 13:37:08 +02:00
Nicoleta Panaghiu
568bb696a7 Merge branch 'ng-updates' into 'master'
Ng 19

See merge request redactmanager/red-ui!747
2024-12-05 11:52:34 +01:00
Dan Percic
43616297c8 lint 2024-12-05 12:51:00 +02:00
Dan Percic
51801a03a0 update other deps 2024-12-05 12:50:21 +02:00
Dan Percic
59254c0294 ng 19 2024-12-05 11:46:40 +02:00
Dan Percic
61b238d511 Merge branch 'VM/RED-10593' into 'master'
RED-10593 - when legalBasisValue = 'n-a' set empty string as param to not...

Closes RED-10593

See merge request redactmanager/red-ui!746
2024-12-05 10:35:25 +01:00
Dan Percic
d5ca5331a7 Merge branch 'VM/RED-10587' into 'master'
RED-10587 - Add auto new line for edit-component textfield

Closes RED-10587

See merge request redactmanager/red-ui!745
2024-12-05 10:34:59 +01:00
Dan Percic
8f72d8608b Merge branch 'VM/RED-9585' into 'master'
RED-9585 - set count param for user roles translations to 1 to not be...

Closes RED-9585

See merge request redactmanager/red-ui!744
2024-12-05 10:20:28 +01:00
Valentin Mihai
425f3da9d4 RED-10587 - Add auto new line for edit-component textfield 2024-12-04 20:05:43 +02:00
Valentin Mihai
34dc025b79 RED-10593 - when legalBasisValue = 'n-a' set empty string as param to not display "Annotation based on rule n-a" 2024-12-04 19:04:25 +02:00
Valentin Mihai
b2f8cda99b RED-9585 - set count param for user roles translations to 1 to not be automatically used the plural form when it is undefined 2024-12-04 18:33:58 +02:00
Nicoleta Panaghiu
dd1e0c672b Merge branch 'VM/RED-9585' into 'master'
RED-9585 - set count param for user roles translations

Closes RED-9585

See merge request redactmanager/red-ui!743
2024-12-04 16:59:57 +01:00
Valentin Mihai
0e3cf56034 RED-9585 - set count param for user roles translations 2024-12-04 17:58:45 +02:00
Valentin Mihai
bfe409305c RED-9580 - use new user stats endpoint for everything related to User Management 2024-12-04 15:47:30 +02:00
Valentin-Gabriel Mihai
b225917a51 Merge branch 'RED-10592' into 'master'
RED-10592: fixed listener to esc key in pdf viewer.

See merge request redactmanager/red-ui!742
2024-12-04 12:09:28 +01:00
Nicoleta Panaghiu
5359f5aca9 RED-10592: fixed listener to esc key in pdf viewer. 2024-12-04 13:07:50 +02:00
Dan Percic
1d2f450ba4 Merge branch 'VM/RED-10554' into 'master'
RED-10554 - stopped event propagation when click on download component button

Closes RED-10554

See merge request redactmanager/red-ui!741
2024-12-04 10:40:20 +01:00
Dan Percic
4aa03ba3c5 Merge branch 'VM/RED-10575' into 'master'
RED-10575 - hid the "read only" text when file is in processing state

Closes RED-10575

See merge request redactmanager/red-ui!740
2024-12-04 10:39:54 +01:00
Dan Percic
118e34b380 Merge branch 'VM/RED-10600' into 'master'
RED-10600 - updated can assign reviewer logic when file is set to done to...

Closes RED-10600

See merge request redactmanager/red-ui!739
2024-12-04 10:39:30 +01:00
Dan Percic
ff3c5768c6 Merge branch 'VM/RED-9585' into 'master'
RED-9585 - updated translation param

Closes RED-9585

See merge request redactmanager/red-ui!738
2024-12-04 10:39:11 +01:00
Valentin Mihai
f293eefe8c RED-10554 - stopped event propagation when click on download component button 2024-12-04 11:25:42 +02:00
Valentin Mihai
49c59897bf RED-10575 - hid the "read only" text when file is in processing state 2024-12-03 23:26:33 +02:00
Valentin Mihai
0e53484b62 RED-10600 - updated can assign reviewer logic when file is set to done to assign user when is moved back to "in review" 2024-12-03 20:13:43 +02:00
Valentin Mihai
842bd4e251 RED-9585 - updated translation param 2024-12-03 17:30:58 +02:00
Dan Percic
003817ed9d Merge branch 'VM/RED-10301' into 'master'
RED-10301 - Use RM/DM UI depending on application type of tenant

Closes RED-10301

See merge request redactmanager/red-ui!737
2024-12-03 13:15:23 +01:00
Valentin Mihai
fb68e63bd0 Merge branch 'master' into VM/RED-10301 2024-12-03 12:39:06 +02:00
Valentin Mihai
e6a03c3b30 RED-10301 - update common ui (lint fix) 2024-12-03 12:38:13 +02:00
Valentin Mihai
fb8b3a3b09 RED-10301 - Use RM/DM UI depending on application type of tenant 2024-12-03 12:36:26 +02:00
Valentin-Gabriel Mihai
43fd966bf1 Merge branch 'RED-10531' into 'master'
RED-10531: disabled more buttons for file with error state.

See merge request redactmanager/red-ui!736
2024-11-29 13:14:16 +01:00
Nicoleta Panaghiu
315fa5a440 RED-10531: disabled more buttons for file with error state. 2024-11-29 14:12:14 +02:00
Valentin-Gabriel Mihai
3be593f464 Merge branch 'RED-10563' into 'master'
RED-10563: fixed key actions not prevented when input is focused.

See merge request redactmanager/red-ui!735
2024-11-29 11:40:02 +01:00
Nicoleta Panaghiu
8c47a8b758 RED-10563: grouped key events and extracted the target check. 2024-11-29 12:38:17 +02:00
Nicoleta Panaghiu
5515a5b4d6 RED-10563: fixed key actions not prevented when input is focused. 2024-11-29 12:27:59 +02:00
Valentin-Gabriel Mihai
cee0a92430 Merge branch 'RED-3800' into 'master'
RED-3800: localazy manual sync for redact.

See merge request redactmanager/red-ui!734
2024-11-29 10:11:04 +01:00
Nicoleta Panaghiu
ddc163f286 RED-3800: localazy manual sync for redact. 2024-11-29 11:09:53 +02:00
Valentin-Gabriel Mihai
81ce0bc708 Merge branch 'RED-10314' into 'master'
RED-10314: added missing help mode toggles and keys in dialogs.

See merge request redactmanager/red-ui!733
2024-11-28 17:35:54 +01:00
Nicoleta Panaghiu
29c870631b RED-10314: added missing help mode toggles and keys in dialogs. 2024-11-28 18:32:17 +02:00
Valentin-Gabriel Mihai
261674339a Merge branch 'RED-10563' into 'master'
RED-10563: fixed pdf search input.

See merge request redactmanager/red-ui!732
2024-11-28 15:26:39 +01:00
Nicoleta Panaghiu
bfb418fdfd RED-10563: fixed pdf search input. 2024-11-28 16:24:58 +02:00
Valentin-Gabriel Mihai
5c8c191151 Merge branch 'RED-3800' into 'master'
RED-3800: redact manager localazy manual sync.

See merge request redactmanager/red-ui!731
2024-11-28 10:14:52 +01:00
Nicoleta Panaghiu
9e558944d1 RED-3800: redact manager localazy manual sync. 2024-11-28 11:10:00 +02:00
Valentin-Gabriel Mihai
d8134f6d42 Merge branch 'RED-10531' into 'master'
RED-10531: enable assignToSelf on error files; display assignee.

See merge request redactmanager/red-ui!730
2024-11-28 09:57:19 +01:00
Nicoleta Panaghiu
aa3ae524f4 RED-10531: enable assignToSelf on error files; display assignee. 2024-11-27 20:18:15 +02:00
Valentin-Gabriel Mihai
cd2b12c35a Merge branch 'RED-10517' into 'master'
RED-10517: disabled scrolling for select all annotations.

See merge request redactmanager/red-ui!729
2024-11-27 16:14:42 +01:00
Nicoleta Panaghiu
b7e1e5764e RED-10517: disabled scrolling for select all annotations. 2024-11-27 16:54:04 +02:00
Valentin-Gabriel Mihai
9ef4ba4af5 Merge branch 'RED-9885' into 'master'
Resolve RED-9885

Closes RED-9885

See merge request redactmanager/red-ui!728
2024-11-27 15:36:10 +01:00
Nicoleta Panaghiu
86deaceade RED-9885: removed unused class, reset the config file to redact. 2024-11-27 16:31:58 +02:00
Nicoleta Panaghiu
fd76d110d4 RED-9885: implemented resize file-preview components. 2024-11-27 16:28:47 +02:00
Nicoleta Panaghiu
21f67651ff Merge branch 'master' into RED-9885 2024-11-27 16:23:53 +02:00
Nicoleta Panaghiu
0cf22e96bc Merge branch 'VM/RED-10373' into 'master'
RED-10373 - fixed bulk remove for multiple text redactions by splitting them...

Closes RED-10373

See merge request redactmanager/red-ui!727
2024-11-26 11:49:23 +01:00
Valentin Mihai
86eeab5e69 RED-10373 - fixed bulk remove for multiple text redactions by splitting them into multiple requests as bulk endpoint do not support a list of redactions 2024-11-26 12:44:24 +02:00
Nicoleta Panaghiu
e8c98be687 RED-9885 - wip 2024-11-25 18:19:43 +02:00
Dan Percic
bf04423524 Merge branch 'RED-10528' into 'master'
RED-10528: added support for F5 when the pdf viewer is focused.

See merge request redactmanager/red-ui!726
2024-11-25 14:58:27 +01:00
Nicoleta Panaghiu
25df51af78 RED-10528: added support for F5 when the pdf viewer is focused. 2024-11-25 15:55:49 +02:00
Nicoleta Panaghiu
6ef4b981fc Merge branch 'RED-10484' into 'master'
RED-10484: conditionally hide value placeholder.

See merge request redactmanager/red-ui!725
2024-11-25 14:45:10 +01:00
Nicoleta Panaghiu
4bd13949f6 RED-10484: conditionally hide value placeholder. 2024-11-25 14:55:32 +02:00
Dan Percic
5fea526d6c Merge branch 'RED-10426' into 'master'
RED-10426: rewrote sorting considering given point as bottom left.

See merge request redactmanager/red-ui!724
2024-11-25 13:54:03 +01:00
Nicoleta Panaghiu
0b367efa27 RED-10426: rewrote sorting considering given point as bottom left. 2024-11-25 14:28:48 +02:00
Dan Percic
8d60e8d864 Merge branch 'RED-10509' into 'master'
RED-10509: disabled stopPropagation on documine .

See merge request redactmanager/red-ui!723
2024-11-25 10:47:12 +01:00
Nicoleta Panaghiu
047a599809 RED-10509: disabled stopPropagation on documine . 2024-11-25 11:03:52 +02:00
Valentin-Gabriel Mihai
44d361b658 Merge branch 'RED-10509' into 'master'
RED-10509: disabled stopPropagation when editing file attribute.

See merge request redactmanager/red-ui!722
2024-11-24 13:05:48 +01:00
Nicoleta Panaghiu
780976243a RED-10509: disabled stopPropagation when editing file attribute. 2024-11-24 13:46:05 +02:00
Nicoleta Panaghiu
820dab3bfb Merge branch 'VM/RED-10504' into 'master'
RED-10504 - displayed all file annotations on documine when devMode is active...

Closes RED-10504

See merge request redactmanager/red-ui!721
2024-11-24 11:19:09 +01:00
Valentin Mihai
67020213ed RED-10504 - displayed all file annotations on documine when devMode is active and removed page filtering 2024-11-23 19:42:31 +02:00
Valentin-Gabriel Mihai
13e019b5e5 Merge branch 'RED-10515' into 'master'
RED-10515: fixed multi select for hidden annotations.

See merge request redactmanager/red-ui!720
2024-11-22 14:50:25 +01:00
Nicoleta Panaghiu
78c8dcb8e6 RED-10515: fixed multi select for hidden annotations. 2024-11-22 15:49:04 +02:00
Valentin-Gabriel Mihai
db90ae538e Merge branch 'RED-10498' into 'master'
RED-10498: included RED_ADMIN permission requirement.

See merge request redactmanager/red-ui!719
2024-11-22 11:33:17 +01:00
Nicoleta Panaghiu
97484c5f1a RED-10498: included RED_ADMIN permission requirement. 2024-11-22 12:31:08 +02:00
Nicoleta Panaghiu
1f6bdc30c8 Merge branch 'RED-10443-update' into 'master'
RED-10443 - 500 Error occurs when selecting ISO-8859-1 as Encoding Type for...

Closes RED-10443

See merge request redactmanager/red-ui!718
2024-11-22 10:30:10 +01:00
corinaolariu
19dd650510 RED-10443 - 500 Error occurs when selecting ISO-8859-1 as Encoding Type for any CSV File Format - update
- update also the key ISO encoding to ISO-8859-1
2024-11-22 11:18:38 +02:00
Corina Olariu
72d57ca342 Merge branch 'RED-10443' into 'master'
RED-10443 - 500 Error occurs when selecting ISO-8859-1 as Encoding Type for any CSV File Format

Closes RED-10443

See merge request redactmanager/red-ui!714
2024-11-22 08:16:57 +01:00
Valentin-Gabriel Mihai
fc3258ad9a Merge branch 'RED-10148' into 'master'
RED-10148: fixed text selection; implemented key listener for shift.

See merge request redactmanager/red-ui!717
2024-11-21 17:14:30 +01:00
Nicoleta Panaghiu
2632675cbe RED-10148: fixed text selection; implemented key listener for shift. 2024-11-21 18:12:45 +02:00
Valentin-Gabriel Mihai
b7c820e87c Merge branch 'RED-10405' into 'master'
RED-10405 - fixed toggle disabled state.

See merge request redactmanager/red-ui!716
2024-11-21 16:32:45 +01:00
Nicoleta Panaghiu
3578ed8512 RED-10405 - fixed toggle disabled state. 2024-11-21 17:29:18 +02:00
Valentin-Gabriel Mihai
7c719b4d26 Merge branch 'RED-10484' into 'master'
RED-10484: removed multiplePages option for imported rectangles.

See merge request redactmanager/red-ui!713
2024-11-21 13:49:21 +01:00
Nicoleta Panaghiu
4e3de53e45 RED-10484: removed multiplePages option for imported rectangles. 2024-11-21 14:47:52 +02:00
corinaolariu
13cba9831c RED-10443 - 500 Error occurs when selecting ISO-8859-1 as Encoding Type for any CSV File Format
- update the value of ISO encoding to ISO-8859-1
2024-11-21 14:47:26 +02:00
Nicoleta Panaghiu
c02863b079 Merge branch 'VM/RED-10483' into 'master'
RED-10483 - stop making additional dossier requests which leads to "Dossier...

Closes RED-10483

See merge request redactmanager/red-ui!712
2024-11-21 10:35:55 +01:00
Valentin Mihai
27e64380b0 RED-10483 - stop making additional dossier requests which leads to "Dossier not found" error when dossier is already deleted 2024-11-21 11:34:00 +02:00
Valentin-Gabriel Mihai
2699b36ab0 Merge branch 'RED-10498' into 'master'
RED-10498 - added the locked rules indicator; implemented the reset

See merge request redactmanager/red-ui!711
2024-11-20 16:28:02 +01:00
Nicoleta Panaghiu
420c59a862 RED-10498 - added the locked rules indicator; implemented the reset 2024-11-20 17:15:15 +02:00
Nicoleta Panaghiu
5ece842b2c Merge branch 'VM/RED-10396' into 'master'
RED-10396 - undefined checks

Closes RED-10396

See merge request redactmanager/red-ui!710
2024-11-20 14:12:07 +01:00
Maverick Studer
6f77cef2ab Merge branch 'feature/RED-10115' into 'master'
RED-10115: Refactoring of justifications

Closes RED-10115

See merge request redactmanager/red-ui!703
2024-11-20 10:38:28 +01:00
Maverick Studer
54b59ab90c RED-10115: Refactoring of justifications 2024-11-20 10:38:27 +01:00
Valentin Mihai
01fb7f0a1a RED-10396 - undefined checks 2024-11-20 10:01:17 +02:00
Valentin-Gabriel Mihai
d7586c2705 Merge branch 'RED-10363' into 'master'
RED-10363: check for rules on analysis btn click; refactor to signals.

See merge request redactmanager/red-ui!709
2024-11-19 17:22:09 +01:00
Nicoleta Panaghiu
b00ff1186d RED-10363: check for rules on analysis btn click; refactor to signals. 2024-11-19 18:05:07 +02:00
Dan Percic
9bea3c487a Merge branch 'VM/RED-10491' into 'master'
RED-10491 - updated view mode when page is changed

Closes RED-10491

See merge request redactmanager/red-ui!707
2024-11-19 09:12:39 +01:00
Valentin Mihai
2b2c72fe04 RED-10491 - updated view mode when page is changed 2024-11-18 20:44:45 +02:00
Nicoleta Panaghiu
edadf1ea41 Merge branch 'VM/RED-9996' into 'master'
RED-9996 - pre-filter available annotation filter types in new DocuMine component view

Closes RED-9996

See merge request redactmanager/red-ui!706
2024-11-18 17:26:16 +01:00
Valentin Mihai
c8e5752395 WIP on master
RED-9996 - pre-filter available annotation filter types in new DocuMine component view
2024-11-18 18:20:57 +02:00
Valentin-Gabriel Mihai
bac2d96605 Merge branch 'RED-10426' into 'master'
RED-10426: implemented another method of sorting rectangles.

See merge request redactmanager/red-ui!705
2024-11-18 17:07:50 +01:00
Nicoleta Panaghiu
063d40f845 RED-10426: implemented another method of sorting rectangles. 2024-11-18 17:31:25 +02:00
Dan Percic
881ad3a110 Merge branch 'RED-10405' into 'master'
RED-10405: removed locked rules pending type and fixed pending count.

See merge request redactmanager/red-ui!704
2024-11-18 11:07:24 +01:00
Nicoleta Panaghiu
c248f55fbd RED-10405: removed locked rules pending type and fixed pending count. 2024-11-18 11:39:35 +02:00
Dan Percic
2501bf5d56 Merge branch 'RED-10363' into 'master'
RED-10363: fixed cosmetical issue, added tooltips to and disabled btns.

See merge request redactmanager/red-ui!702
2024-11-14 10:08:38 +01:00
Dan Percic
48c8613f9b Merge branch 'VM/RED-10460' into 'master'
RED-10460 - enable switching the language in Edit Profile page in non-dev mode

Closes RED-10460

See merge request redactmanager/red-ui!701
2024-11-14 10:08:14 +01:00
Dan Percic
b26053efa4 Merge branch 'VM/RED-10461' into 'master'
RED-10461 - updated message when upload a zip file

Closes RED-10461

See merge request redactmanager/red-ui!700
2024-11-14 10:07:27 +01:00
Nicoleta Panaghiu
32ef5393e2 RED-10363: fixed cosmetical issue, added tooltips to and disabled btns. 2024-11-14 11:04:10 +02:00
Valentin Mihai
abc54fae4f RED-10460 - enable switching the language in Edit Profile page in non-dev mode 2024-11-13 21:51:16 +02:00
Valentin Mihai
d094001792 RED-10461 - updated message when upload a zip file 2024-11-13 20:29:55 +02:00
Valentin-Gabriel Mihai
573e1f3865 Merge branch 'RED-10405' into 'master'
RED-10405: check if file isError, indent pending type, remove unknown.

See merge request redactmanager/red-ui!698
2024-11-13 18:43:38 +01:00
Nicoleta Panaghiu
d99f96b079 RED-10405: check if file isError, indent pending type, remove unknown. 2024-11-13 15:06:34 +02:00
Dan Percic
4b68708624 Merge branch 'RED-10397' into 'master'
RED-10397: changed the active state for redacted btn; hid rectangle btn.

See merge request redactmanager/red-ui!697
2024-11-13 12:43:18 +01:00
Nicoleta Panaghiu
7e764cdf62 RED-10397: changed the active state for redacted btn; hid rectangle btn. 2024-11-13 13:35:33 +02:00
Nicoleta Panaghiu
32dd6e6ced Merge branch 'VM/RED-10453' into 'master'
RED-10453 - reload file or files (bulk case) after approval request

Closes RED-10453

See merge request redactmanager/red-ui!696
2024-11-13 10:43:01 +01:00
Valentin Mihai
fb9242f637 RED-10453 - reload file or files (bulk case) after approval request 2024-11-13 11:28:41 +02:00
Dan Percic
acf4a4f4d7 Merge branch 'RED-10405' into 'master'
RED-10405: added labels and filtering for separate file pending types.

See merge request redactmanager/red-ui!695
2024-11-13 09:38:33 +01:00
Nicoleta Panaghiu
260a53aaf1 RED-10405: added labels and filtering for separate file pending types. 2024-11-13 10:29:34 +02:00
Dan Percic
42d4829f2e Merge branch 'VM/RED-10332' into 'master'
RED-10332 - fixed dictionary dropdown that did not update when another dossier...

Closes RED-10332

See merge request redactmanager/red-ui!694
2024-11-13 08:29:21 +01:00
Valentin Mihai
6ac6f0a441 RED-10332 - fixed dictionary dropdown that did not update when another dossier template was selected 2024-11-12 22:10:05 +02:00
Dan Percic
54ad666355 Merge branch 'VM/RED-10373' into 'master'
RED-10373 - remove redaction dialog updates to be able to create multiple bulk...

Closes RED-10373

See merge request redactmanager/red-ui!693
2024-11-12 16:52:58 +01:00
Valentin Mihai
43f4cc6c9e RED-10373 - remove redaction dialog updates to be able to create multiple bulk requests for rectangle annotations 2024-11-12 17:25:59 +02:00
Dan Percic
6219ceb0a2 Merge branch 'RED-10440' into 'master'
RED-10440: map redacted image hints to redaction.

See merge request redactmanager/red-ui!692
2024-11-12 13:00:57 +01:00
Nicoleta Panaghiu
725c99211b RED-10440: map redacted image hints to redaction. 2024-11-12 13:51:35 +02:00
Dan Percic
bcf29eea45 Merge branch 'RED-10363' into 'master'
RED-10363: fixed distinctUntilChanged comparator.

See merge request redactmanager/red-ui!691
2024-11-12 12:17:56 +01:00
Nicoleta Panaghiu
0d4546bb9e RED-10363: fixed distinctUntilChanged comparator. 2024-11-12 12:55:20 +02:00
Dan Percic
e4ce12057b Merge branch 'nicoleta' into 'master'
RED-3800: fixed generic errors.

See merge request redactmanager/red-ui!690
2024-11-12 11:29:03 +01:00
Nicoleta Panaghiu
19ecd12c5f RED-3800: fixed generic errors. 2024-11-12 12:23:18 +02:00
Dan Percic
b96e55f42c Merge branch 'VM/RED-10396' into 'master'
RED-10396 - fixed current page active annotations re evaluation when they are updated

Closes RED-10396

See merge request redactmanager/red-ui!689
2024-11-12 09:41:59 +01:00
Valentin Mihai
31d4018698 RED-10396 - fixed current page active annotations re evaluation when they are updated 2024-11-12 10:37:13 +02:00
Valentin Mihai
ef26003755 RED-10396 - fixed current page active annotations re evaluation when they are updated 2024-11-11 20:50:04 +02:00
Dan Percic
931d311281 Merge branch 'RED-10440' into 'master'
RED-10440: fixed redacted image hint display color.

See merge request redactmanager/red-ui!688
2024-11-11 16:05:38 +01:00
Nicoleta Panaghiu
01eda98415 RED-10440: fixed redacted image hint display color. 2024-11-11 16:47:08 +02:00
Nicoleta Panaghiu
1b0fe9d352 Merge branch 'VM/RED-10339' into 'master'
RED-10339 - Secondary Save button in redaction dialogs to store selected option as default

Closes RED-10339

See merge request redactmanager/red-ui!687
2024-11-11 14:52:12 +01:00
Valentin Mihai
f31db95241 RED-10339 - Secondary Save button in redaction dialogs to store selected option as default 2024-11-11 15:44:37 +02:00
Dan Percic
ebedde5ed6 Merge branch 'RED-10420' into 'master'
RED-10420: prevent page refresh by using stop propagation.

See merge request redactmanager/red-ui!686
2024-11-11 14:30:04 +01:00
Nicoleta Panaghiu
8e2ab6c2c4 RED-10420: prevent page refresh by using stop propagation. 2024-11-11 15:01:52 +02:00
Dan Percic
e1308b6fd5 Merge branch 'RED-10422' into 'master'
RED-10422 - improved number of requests with help of new changes endpoint

Closes RED-10422

See merge request redactmanager/red-ui!683
2024-11-11 13:05:07 +01:00
Dan Percic
a5b3caea11 Merge branch 'RED-10427' into 'master'
RED-10427: send rectangle updated value for edit on multiple pages.

See merge request redactmanager/red-ui!685
2024-11-11 13:04:48 +01:00
Nicoleta Panaghiu
de1495ee2e RED-10427: send rectangle updated value for edit on multiple pages. 2024-11-11 14:01:28 +02:00
Dan Percic
7a78dd6547 Merge branch 'RED-10363' into 'master'
RED-10363: disable analysis button when rules are locked.

See merge request redactmanager/red-ui!684
2024-11-11 12:46:40 +01:00
Nicoleta Panaghiu
8cdb869a10 RED-10363: disable analysis button when rules are locked. 2024-11-11 12:23:47 +02:00
Dan Percic
f5639ec79d Merge branch 'VM/RED-10332' into 'master'
RED-10332 - Dossier Template not changeable when comparing dossier...

Closes RED-10332

See merge request redactmanager/red-ui!491
2024-11-08 16:08:36 +01:00
Dan Percic
3d31728194 Merge branch 'RED-10426' into 'master'
RED-10426: sort annotations according to visual alignment.

See merge request redactmanager/red-ui!490
2024-11-08 16:08:09 +01:00
Valentin Mihai
a996eaf53c Merge branch 'master' into VM/RED-10332 2024-11-08 17:06:53 +02:00
Valentin Mihai
f0b6cf9712 WIP on VM/RED-10332
RED-10332 - Dossier Template not changeable when comparing dossier dictionaries in Edit dossier modal
2024-11-08 17:06:29 +02:00
Nicoleta Panaghiu
470685a94f RED-10426: sort annotations according to visual alignment. 2024-11-08 17:01:41 +02:00
Dan Percic
c10b2c49b5 Merge branch 'VM/RED-9585' into 'master'
RED-9585 - Incorrect capitalization in German translation + missing singular/plural distinction

Closes RED-9585

See merge request redactmanager/red-ui!489
2024-11-08 13:12:15 +01:00
Valentin Mihai
f1aa0e4817 RED-9585 - Incorrect capitalization in German translation + missing singular/plural distinction 2024-11-08 13:39:20 +02:00
Valentin Mihai
82e31fffd8 RED-10332 - Dossier Template not changeable when comparing dossier dictionaries in Edit dossier modal 2024-11-08 13:27:37 +02:00
Timo Bejan
cdc5d2ee6c RED-10422 - improved number of requests with help of new changes endpoint 2024-11-07 15:41:33 +02:00
Dan Percic
3d26a73b05 Merge branch 'RED-10423' into 'master'
RED-10423: fixed multiple pages rectangle remove action.

See merge request redactmanager/red-ui!682
2024-11-07 12:53:28 +01:00
Nicoleta Panaghiu
b1fb38027d RED-10423: fixed multiple pages rectangle remove action. 2024-11-07 13:19:03 +02:00
Dan Percic
eef1139c0d Merge branch 'RED-9646' into 'master'
RED-9646: enable toaster notifications for zip files.

See merge request redactmanager/red-ui!681
2024-11-06 15:32:04 +01:00
Nicoleta Panaghiu
cb0bdb89c5 RED-9646: enable toaster notifications for zip files. 2024-11-06 16:09:25 +02:00
Timo Bejan
d6a4b11b65 Merge branch 'RED-10414' into 'master'
RED-10414 Removed offset and fixed notification polling

Closes RED-10414

See merge request redactmanager/red-ui!680
2024-11-06 14:49:41 +01:00
Timo Bejan
a80a75ca77 RED-10414 Removed offset and fixed notification polling 2024-11-06 15:49:19 +02:00
Timo Bejan
a56c66d19f Merge branch 'RED-10414' into 'master'
RED-10414 Removed offset and fixed notification polling

Closes RED-10414

See merge request redactmanager/red-ui!679
2024-11-06 14:43:20 +01:00
Timo Bejan
bc7e2483c2 RED-10414 Removed offset and fixed notification polling 2024-11-06 15:42:37 +02:00
Dan Percic
00decf1f6c Merge remote-tracking branch 'origin/master' into release/4.839.x 2024-11-05 22:00:00 +02:00
Dan Percic
306b524dee copilot working as a conversation 2024-11-05 21:58:07 +02:00
Dan Percic
f26772d4a0 Merge branch 'RED-3800' into 'master'
RED-3800: manual localazy sync.

See merge request redactmanager/red-ui!678
2024-11-05 11:19:53 +01:00
Nicoleta Panaghiu
e39ab31397 RED-3800: manual localazy sync. 2024-11-05 12:16:33 +02:00
Dan Percic
208a1568b3 Merge branch 'VM/RED-10373' into 'master'
RED-10373 - Singular-Plural disctinction in translation for remove in document

Closes RED-10373

See merge request redactmanager/red-ui!677
2024-11-04 16:34:38 +01:00
Valentin Mihai
a7a4c18715 RED-10373 - Singular-Plural disctinction in translation for remove in document 2024-11-04 16:56:25 +02:00
Dan Percic
9228976803 Merge branch 'VM/RED-10332' into 'master'
RED-10332 - Dossier Template not changeable when comparing dossier...

Closes RED-10332

See merge request redactmanager/red-ui!676
2024-11-04 15:29:19 +01:00
Valentin Mihai
6619b9f4de RED-10332 - Dossier Template not changeable when comparing dossier dictionaries in Edit dossier modal 2024-11-04 16:07:38 +02:00
Kilian Schüttler
9f1f654521 Merge branch 'ai-creation-placeholders' into 'master'
Update AI creation placeholders

See merge request redactmanager/red-ui!674
2024-11-04 13:39:58 +01:00
Kilian Schuettler
ad974ef07b Update AI creation placeholders 2024-11-04 13:33:45 +01:00
Dan Percic
ff8009167b other fixes 2024-11-04 13:03:12 +02:00
Dan Percic
b3dc8b04c8 wip web socket annotations 2024-11-01 19:22:50 +02:00
Dan Percic
c677bc17e4 Merge branch 'master' into release/4.839.x 2024-11-01 17:04:11 +02:00
Dan Percic
8f541081ae Merge branch 'master' into release/4.839.x 2024-10-31 10:32:42 +02:00
Dan Percic
9dd6085bcf Merge branch 'master' into release/4.839.x 2024-09-02 16:48:59 +03:00
Dan Percic
eb9bd777e0 fix merge 2024-08-19 12:03:29 +03:00
Dan Percic
e3ef820bac Merge branch 'release/4.839.x' of https://gitlab.knecon.com/redactmanager/red-ui into release/4.839.x 2024-08-19 12:02:30 +03:00
Dan Percic
9317f55d81 fix delete annotation 2024-08-19 12:01:09 +03:00
Dan Percic
5d7849be45 filter removed entries 2024-08-19 10:21:49 +03:00
Dan Percic
74b4c1a11f reload entity log when file is assigned to current user 2024-08-19 10:19:53 +03:00
Dan Percic
0f79f04f52 Merge remote-tracking branch 'origin/master' into RED-9747 2024-08-18 01:38:11 +03:00
Dan Percic
6282675682 merge fixes 2024-08-14 15:40:40 +03:00
Dan Percic
747d8157b5 Merge remote-tracking branch 'origin/master' into RED-9747 2024-08-14 15:37:28 +03:00
Dan Percic
c4c549fe1b fix 2024-08-10 14:21:27 +02:00
Dan Percic
e41ac70dfe copilot ws implementation, wip 2024-08-10 14:18:22 +02:00
Dan Percic
59ce4177d2 Merge remote-tracking branch 'origin/master' into RED-9747 2024-08-10 14:17:26 +02:00
Dan Percic
0af6e45868 Merge remote-tracking branch 'origin/master' into RED-9747 2024-08-08 13:57:34 +02:00
Dan Percic
1bbef9eb37 Merge remote-tracking branch 'origin/master' into RED-9747 2024-08-05 17:54:22 +02:00
Nicoleta Panaghiu
35342707f0 RED-9772: delete saved entity log on file overwrite. 2024-08-01 11:55:54 +03:00
Dan Percic
c1fc52223b Merge remote-tracking branch 'origin/master' into RED-9747 2024-07-31 14:32:08 +03:00
Dan Percic
30c1f8628b Merge remote-tracking branch 'origin/master' into RED-9747 2024-07-30 16:21:46 +03:00
Dan Percic
66df5f807c Merge remote-tracking branch 'origin/master' into RED-9747 2024-07-30 10:33:58 +03:00
Dan Percic
f25d134590 Merge remote-tracking branch 'origin/master' into RED-9747 2024-07-29 11:40:49 +03:00
Dan Percic
10fa81e77c Merge remote-tracking branch 'origin/master' into RED-9747 2024-07-26 16:02:19 +03:00
Dan Percic
613a7429b8 RED-9747 add initial ws entity log refresh 2024-07-26 12:25:13 +03:00
350 changed files with 5264 additions and 6322 deletions

View File

@ -16,6 +16,7 @@
},
"rules": {
"rxjs/no-ignored-subscription": "warn",
"@angular-eslint/prefer-standalone": "off",
"@angular-eslint/no-conflicting-lifecycle": "error",
"@angular-eslint/no-host-metadata-property": "error",
"@angular-eslint/no-input-rename": "error",

View File

@ -4,41 +4,60 @@ variables:
PROJECT: red-ui
DOCKERFILELOCATION: 'docker/$PROJECT/Dockerfile'
include:
- project: 'gitlab/gitlab'
ref: 'main'
file: 'ci-templates/docker_build_nexus_v2.yml'
rules:
- if: $CI_PIPELINE_SOURCE != "schedule"
- if: $CI_PIPELINE_SOURCE != "schedule"
sonarqube:
stage: test
image:
name: sonarsource/sonar-scanner-cli:11.1
entrypoint:
- ''
variables:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"
GIT_DEPTH: '0'
cache:
key: "${CI_JOB_NAME}"
paths:
- ".sonar/cache"
script:
- sonar-scanner
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
- if: "$CI_COMMIT_BRANCH =~ /^release/"
localazy update:
image: node:20.5
cache:
- key:
files:
- yarn.lock
paths:
- .yarn-cache/
script:
# - git config user.email "${CI_EMAIL}"
# - git config user.name "${CI_USERNAME}"
# - git remote add gitlab_origin https://${CI_USERNAME}:${CI_ACCESS_TOKEN}@gitlab.knecon.com/redactmanager/red-ui.git
- git push https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.knecon.com/redactmanager/red-ui.git
- cd tools/localazy
- yarn install --cache-folder .yarn-cache
- yarn start
- cd ../..
- git add .
- |-
CHANGES=$(git status --porcelain | wc -l)
if [ "$CHANGES" -gt "0" ]
then
git status
git commit -m "push back localazy update"
git push gitlab_origin HEAD:${CI_COMMIT_REF_NAME}
# git push https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.knecon.com/redactmanager/red-ui.git
# git push
fi
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"
image: node:20.5
cache:
- key:
files:
- yarn.lock
paths:
- .yarn-cache/
script:
# - git config user.email "${CI_EMAIL}"
# - git config user.name "${CI_USERNAME}"
# - git remote add gitlab_origin https://${CI_USERNAME}:${CI_ACCESS_TOKEN}@gitlab.knecon.com/redactmanager/red-ui.git
- git push https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.knecon.com/redactmanager/red-ui.git
- cd tools/localazy
- yarn install --cache-folder .yarn-cache
- yarn start
- cd ../..
- git add .
- |-
CHANGES=$(git status --porcelain | wc -l)
if [ "$CHANGES" -gt "0" ]
then
git status
git commit -m "push back localazy update"
git push gitlab_origin HEAD:${CI_COMMIT_REF_NAME}
# git push https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.knecon.com/redactmanager/red-ui.git
# git push
fi
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"

View File

@ -50,7 +50,7 @@
{
"glob": "**/*",
"input": "node_modules/@pdftron/webviewer/public/",
"output": "/assets/wv-resources/11.0.0/"
"output": "/assets/wv-resources/11.1.0/"
},
{
"glob": "**/*",

View File

@ -4,26 +4,27 @@ import { UserPreferenceService } from '@users/user-preference.service';
import { getConfig } from '@iqser/common-ui';
import { AppConfig } from '@red/domain';
import { NavigationEnd, Router } from '@angular/router';
import { filter, map, switchMap, take } from 'rxjs/operators';
import { filter, map, switchMap, take, tap } from 'rxjs/operators';
import { APP_TYPE_PATHS } from '@common-ui/utils/constants';
import { MatIconRegistry } from '@angular/material/icon';
import { DomSanitizer } from '@angular/platform-browser';
import { TenantsService } from '@common-ui/tenants';
function loadCustomTheme() {
const cssFileName = getConfig<AppConfig>().THEME;
if (cssFileName) {
const head = document.getElementsByTagName('head')[0];
const link = document.createElement('link');
link.id = cssFileName;
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = 'assets/styles/themes/' + cssFileName + '.css';
link.media = 'all';
head.appendChild(link);
}
export function loadCustomTheme(cssFileName: string) {
const head = document.getElementsByTagName('head')[0];
const link = document.createElement('link');
link.id = cssFileName;
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = 'assets/styles/themes/' + cssFileName + '.css';
link.media = 'all';
head.appendChild(link);
}
@Component({
selector: 'redaction-root',
templateUrl: './app.component.html',
standalone: false,
})
export class AppComponent {
constructor(
@ -34,9 +35,12 @@ export class AppComponent {
userPreferenceService: UserPreferenceService,
renderer: Renderer2,
private readonly _router: Router,
private readonly _iconRegistry: MatIconRegistry,
private readonly _sanitizer: DomSanitizer,
private readonly _tenantsService: TenantsService,
) {
const config = getConfig<AppConfig>();
renderer.addClass(document.body, userPreferenceService.getTheme());
loadCustomTheme();
const removeQueryParams = _router.events.pipe(
filter((event): event is NavigationEnd => event instanceof NavigationEnd),
@ -47,9 +51,25 @@ export class AppComponent {
);
removeQueryParams.subscribe();
if (getConfig().IS_DOCUMINE) {
document.getElementById('favicon').setAttribute('href', 'assets/icons/documine-logo.ico');
}
this._tenantsService
.waitForSettingTenant()
.pipe(
tap(() => {
const isDocumine = this._tenantsService.activeTenant.documine;
const logo = isDocumine ? 'documine' : 'redaction';
_iconRegistry.addSvgIconInNamespace(
'iqser',
'logo',
_sanitizer.bypassSecurityTrustResourceUrl(`/assets/icons/general/${logo}-logo.svg`),
);
if (isDocumine) {
document.getElementById('favicon').setAttribute('href', 'assets/icons/documine-logo.ico');
}
loadCustomTheme(isDocumine ? APP_TYPE_PATHS.SCM : APP_TYPE_PATHS.REDACT);
}),
take(1),
)
.subscribe();
}
#removeKeycloakQueryParams() {

View File

@ -1,6 +1,6 @@
import { APP_BASE_HREF, DatePipe as BaseDatePipe } from '@angular/common';
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { ENVIRONMENT_INITIALIZER, ErrorHandler, inject, NgModule } from '@angular/core';
import { ErrorHandler, inject, NgModule, provideEnvironmentInitializer } from '@angular/core';
import { MatDividerModule } from '@angular/material/divider';
import { MatIcon } from '@angular/material/icon';
import { MatMenu, MatMenuContent, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';
@ -117,7 +117,7 @@ export const appModuleFactory = (config: AppConfig) => {
resetTimeoutOnDuplicate: true,
}),
TenantsModule.forRoot(),
IqserTranslateModule.forRoot({ pathPrefix: config.BASE_TRANSLATIONS_DIRECTORY || '/assets/i18n/redact/' }),
IqserTranslateModule.forRoot({ pathPrefix: config.BASE_TRANSLATIONS_DIRECTORY }),
IqserLoadingModule.forRoot(),
ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),
LoggerModule.forRoot(undefined, {
@ -135,20 +135,20 @@ export const appModuleFactory = (config: AppConfig) => {
features: {
ANNOTATIONS: {
color: 'aqua',
enabled: true,
enabled: false,
level: NgxLoggerLevel.DEBUG,
},
FILTERS: {
enabled: false,
},
TENANTS: {
enabled: true,
enabled: false,
},
ROUTES: {
enabled: true,
enabled: false,
},
PDF: {
enabled: true,
enabled: false,
},
FILE: {
enabled: false,
@ -171,6 +171,9 @@ export const appModuleFactory = (config: AppConfig) => {
DOSSIERS_CHANGES: {
enabled: false,
},
GUARDS: {
enabled: false,
},
},
} as ILoggerConfig,
},
@ -230,14 +233,10 @@ export const appModuleFactory = (config: AppConfig) => {
provide: ErrorHandler,
useClass: GlobalErrorHandler,
},
{
provide: ENVIRONMENT_INITIALIZER,
multi: true,
useValue: async () => {
const languageService = inject(LanguageService);
return languageService.setInitialLanguage();
},
},
provideEnvironmentInitializer(async () => {
const languageService = inject(LanguageService);
return languageService.setInitialLanguage();
}),
{
provide: MAX_RETRIES_ON_SERVER_ERROR,
useFactory: () => config.MAX_RETRIES_ON_SERVER_ERROR,
@ -258,6 +257,7 @@ export const appModuleFactory = (config: AppConfig) => {
provide: MAT_TOOLTIP_DEFAULT_OPTIONS,
useValue: {
disableTooltipInteractivity: true,
showDelay: 1,
},
},
BaseDatePipe,

View File

@ -7,6 +7,7 @@ import { AppConfig } from '@red/domain';
selector: 'redaction-auth-error',
templateUrl: './auth-error.component.html',
styleUrls: ['./auth-error.component.scss'],
standalone: false,
})
export class AuthErrorComponent {
readonly #config = getConfig<AppConfig>();

View File

@ -20,6 +20,7 @@ const isSearchScreen: (url: string) => boolean = url => url.includes('/search');
@Component({
templateUrl: './base-screen.component.html',
styleUrls: ['./base-screen.component.scss'],
standalone: false,
})
export class BaseScreenComponent {
readonly roles = Roles;

View File

@ -7,6 +7,7 @@ import { Breadcrumb, BreadcrumbDisplayType, BreadcrumbsService } from '@services
selector: 'redaction-breadcrumbs',
templateUrl: './breadcrumbs.component.html',
styleUrls: ['./breadcrumbs.component.scss'],
standalone: false,
})
export class BreadcrumbsComponent {
constructor(readonly breadcrumbsService: BreadcrumbsService) {}

View File

@ -13,6 +13,7 @@ import { firstValueFrom } from 'rxjs';
entitiesService: FileDownloadService,
component: DownloadsListScreenComponent,
}),
standalone: false,
})
export class DownloadsListScreenComponent extends ListingComponent<DownloadStatus> implements OnDestroy {
readonly #interval: number;

View File

@ -25,6 +25,7 @@ function chronologically(first: string, second: string) {
selector: 'redaction-notifications',
templateUrl: './notifications.component.html',
styleUrls: ['./notifications.component.scss'],
standalone: false,
})
export class NotificationsComponent {
readonly hasUnreadNotifications$: Observable<boolean>;

View File

@ -5,5 +5,6 @@ import { ChangeDetectionStrategy, Component } from '@angular/core';
templateUrl: './dashboard-skeleton.component.html',
styleUrls: ['./dashboard-skeleton.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false,
})
export class DashboardSkeletonComponent {}

View File

@ -5,6 +5,7 @@ import { ChangeDetectionStrategy, Component, OnInit, TemplateRef, ViewChild } fr
templateUrl: './dossier-skeleton.component.html',
styleUrls: ['./dossier-skeleton.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false,
})
export class DossierSkeletonComponent implements OnInit {
@ViewChild('workload1', { static: true }) workload1: TemplateRef<unknown>;

View File

@ -5,5 +5,6 @@ import { ChangeDetectionStrategy, Component } from '@angular/core';
templateUrl: './skeleton-stats.component.html',
styleUrls: ['./skeleton-stats.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false,
})
export class SkeletonStatsComponent {}

View File

@ -6,6 +6,7 @@ import { Title } from '@angular/platform-browser';
templateUrl: './skeleton-top-bar.component.html',
styleUrls: ['./skeleton-top-bar.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false,
})
export class SkeletonTopBarComponent {
constructor(readonly titleService: Title) {}

View File

@ -9,6 +9,7 @@ import { MatMenuTrigger } from '@angular/material/menu';
templateUrl: './spotlight-search.component.html',
styleUrls: ['./spotlight-search.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: false,
})
export class SpotlightSearchComponent {
@Input() actions: readonly SpotlightSearchAction[];

View File

@ -9,6 +9,7 @@ interface ITenant extends IStoredTenantId {
selector: 'app-tenants-menu',
templateUrl: './tenants-menu.component.html',
styleUrls: ['./tenants-menu.component.scss'],
standalone: false,
})
export class TenantsMenuComponent {
readonly tenantsService = inject(TenantsService);

View File

@ -20,6 +20,7 @@ interface MenuItem {
selector: 'app-user-menu',
templateUrl: './user-menu.component.html',
styleUrls: ['./user-menu.component.scss'],
standalone: false,
})
export class UserMenuComponent {
readonly currentUser = getCurrentUser<User>();

View File

@ -23,12 +23,14 @@ export function templateExistsWhenEnteringAdmin(): CanActivateFn {
const defaultColorsService = inject(DefaultColorsService);
const watermarksService = inject(WatermarkService);
const router = inject(Router);
const rulesService = inject(RulesService);
const isDocumine = getConfig().IS_DOCUMINE;
const dossierTemplate = inject(DossierTemplateStatsService).get(dossierTemplateId);
await firstValueFrom(fileAttributesService.loadFileAttributesConfig(dossierTemplateId));
await firstValueFrom(dictionaryService.loadDictionaryDataForDossierTemplate(dossierTemplateId));
await firstValueFrom(defaultColorsService.loadForDossierTemplate(dossierTemplateId));
await firstValueFrom(rulesService.getFor(dossierTemplateId));
if (!isDocumine) {
await firstValueFrom(watermarksService.loadForDossierTemplate(dossierTemplateId));
}

View File

@ -40,8 +40,7 @@ export function ifLoggedIn(): AsyncGuard {
logger.info('[KEYCLOAK] Keycloak init...');
await keycloakInitializer(tenant);
logger.info('[KEYCLOAK] Keycloak init done!');
console.log({ tenant });
logger.info('[KEYCLOAK] Keycloak init done for tenant: ', { tenant });
await tenantsService.selectTenant(tenant);
await usersService.initialize();
await licenseService.loadLicenses();
@ -51,6 +50,7 @@ export function ifLoggedIn(): AsyncGuard {
const jwtToken = jwtDecode(token) as JwtToken;
const authTime = (jwtToken.auth_time || jwtToken.iat).toString();
localStorage.setItem('authTime', authTime);
localStorage.setItem('token', token);
}
}

View File

@ -69,3 +69,5 @@ export const canEditHint = (annotation: AnnotationWrapper) =>
((annotation.isHint && !annotation.isRuleBased) || annotation.isIgnoredHint) && !annotation.isImage;
export const canEditImage = (annotation: AnnotationWrapper) => annotation.isImage;
export const canRevertChanges = (annotation: AnnotationWrapper) => annotation.hasRedactionChanges;

View File

@ -17,6 +17,7 @@ import {
canRemoveRedaction,
canResizeAnnotation,
canResizeInDictionary,
canRevertChanges,
canUndo,
} from './annotation-permissions.utils';
import { AnnotationWrapper } from './annotation.wrapper';
@ -37,6 +38,7 @@ export class AnnotationPermissions {
canEditAnnotations = true;
canEditHints = true;
canEditImages = true;
canRevertChanges = true;
static forUser(
isApprover: boolean,
@ -75,6 +77,7 @@ export class AnnotationPermissions {
permissions.canEditAnnotations = canEditAnnotation(annotation);
permissions.canEditHints = canEditHint(annotation);
permissions.canEditImages = canEditImage(annotation);
permissions.canRevertChanges = canRevertChanges(annotation);
summedPermissions._merge(permissions);
}
return summedPermissions;
@ -97,6 +100,7 @@ export class AnnotationPermissions {
result.canEditAnnotations = permissions.reduce((acc, next) => acc && next.canEditAnnotations, true);
result.canEditHints = permissions.reduce((acc, next) => acc && next.canEditHints, true);
result.canEditImages = permissions.reduce((acc, next) => acc && next.canEditImages, true);
result.canRevertChanges = permissions.reduce((acc, next) => acc && next.canRevertChanges, true);
return result;
}

View File

@ -40,7 +40,7 @@ export class AnnotationWrapper implements IListable {
typeLabel?: string;
color: string;
numberOfComments = 0;
firstTopLeftPoint: IPoint;
firstBottomLeftPoint: IPoint;
shortContent: string;
content: AnnotationContent;
value: string;
@ -84,7 +84,10 @@ export class AnnotationWrapper implements IListable {
}
get isRedactedImageHint() {
return this.IMAGE_HINT && this.superType === SuperTypes.Redaction;
return (
(this.IMAGE_HINT && this.superType === SuperTypes.Redaction) ||
(this.IMAGE_HINT && this.superType === SuperTypes.ManualRedaction)
);
}
get isSkippedImageHint() {
@ -196,11 +199,11 @@ export class AnnotationWrapper implements IListable {
}
get x() {
return this.firstTopLeftPoint.x;
return this.firstBottomLeftPoint.x;
}
get y() {
return this.firstTopLeftPoint.y;
return this.firstBottomLeftPoint.y;
}
get legalBasis() {
@ -225,7 +228,7 @@ export class AnnotationWrapper implements IListable {
annotationWrapper.value = 'Imported';
annotationWrapper.color = earmark.hexColor;
annotationWrapper.positions = earmark.positions;
annotationWrapper.firstTopLeftPoint = earmark.positions[0]?.topLeft;
annotationWrapper.firstBottomLeftPoint = earmark.positions[0]?.topLeft;
annotationWrapper.superTypeLabel = annotationTypesTranslations[annotationWrapper.superType];
return annotationWrapper;
@ -246,7 +249,7 @@ export class AnnotationWrapper implements IListable {
annotationWrapper.isChangeLogEntry = logEntry.state === EntryStates.REMOVED || !!changeLogType;
annotationWrapper.type = logEntry.type;
annotationWrapper.value = logEntry.value;
annotationWrapper.firstTopLeftPoint = { x: logEntry.positions[0].rectangle[0], y: logEntry.positions[0].rectangle[1] };
annotationWrapper.firstBottomLeftPoint = { x: logEntry.positions[0].rectangle[0], y: logEntry.positions[0].rectangle[1] };
annotationWrapper.pageNumber = logEntry.positions[0].pageNumber;
annotationWrapper.positions = logEntry.positions.map(p => ({
page: p.pageNumber,
@ -375,7 +378,7 @@ export class AnnotationWrapper implements IListable {
static #getShortContent(annotationWrapper: AnnotationWrapper, legalBasisList: ILegalBasis[]) {
if (annotationWrapper.legalBasis) {
const lb = legalBasisList.find(lbm => lbm.reason?.toLowerCase().includes(annotationWrapper.legalBasis.toLowerCase()));
const lb = legalBasisList.find(lbm => lbm.technicalName?.toLowerCase().includes(annotationWrapper.legalBasis.toLowerCase()));
if (lb) {
return lb.name;
}

View File

@ -21,7 +21,6 @@ interface NavItem {
templateUrl: './account-side-nav.component.html',
styleUrls: ['./account-side-nav.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [SideNavComponent, TranslateModule, NgForOf, NgIf, RouterLinkActive, RouterLink],
})
export class AccountSideNavComponent {

View File

@ -8,10 +8,11 @@
<div class="content-container full-height">
<div class="overlay-shadow"></div>
<div [ngClass]="!isWarningsScreen && 'dialog'">
<div *ngIf="!isWarningsScreen" class="dialog-header">
<div class="heading-l" [translate]="translations[path]"></div>
</div>
@if (!isWarningsScreen) {
<div class="dialog-header">
<div class="heading-l" [translate]="translations[path]"></div>
</div>
}
<router-outlet></router-outlet>
</div>
</div>

View File

@ -1,7 +1,7 @@
import { ChangeDetectionStrategy, Component, OnInit, ViewContainerRef } from '@angular/core';
import { Router, RouterOutlet } from '@angular/router';
import { accountTranslations } from '@translations/account-translations';
import { NgClass, NgIf } from '@angular/common';
import { NgClass } from '@angular/common';
import { AccountSideNavComponent } from '../account-side-nav/account-side-nav.component';
import { TranslateModule } from '@ngx-translate/core';
@ -10,8 +10,7 @@ import { TranslateModule } from '@ngx-translate/core';
templateUrl: './base-account-screen-component.html',
styleUrls: ['./base-account-screen-component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [NgClass, NgIf, RouterOutlet, AccountSideNavComponent, TranslateModule],
imports: [NgClass, RouterOutlet, AccountSideNavComponent, TranslateModule],
})
export class BaseAccountScreenComponent implements OnInit {
readonly translations = accountTranslations;

View File

@ -25,7 +25,6 @@ const RSS_EXCLUDED_SETTINGS = ['USER_PROMOTED_TO_APPROVER', 'USER_DEGRADED_TO_RE
templateUrl: './notifications-screen.component.html',
styleUrls: ['./notifications-screen.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [ReactiveFormsModule, NgForOf, MatSlideToggle, TranslateModule, NgIf, MatCheckbox, IconButtonComponent],
})
export class NotificationsScreenComponent extends BaseFormComponent implements OnInit {

View File

@ -41,7 +41,6 @@ interface DefaultOptionsForm {
selector: 'redaction-dialog-defaults',
templateUrl: './dialog-defaults.component.html',
styleUrl: './dialog-defaults.component.scss',
standalone: true,
imports: [ReactiveFormsModule, TranslateModule, MatFormField, MatSelect, MatOption, NgForOf, MatCheckbox, NgIf, IconButtonComponent],
})
export class DialogDefaultsComponent extends BaseFormComponent {

View File

@ -44,7 +44,6 @@ const Screens = {
templateUrl: './preferences.component.html',
styleUrls: ['./preferences.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [
DialogDefaultsComponent,
NgClass,

View File

@ -10,7 +10,6 @@ interface FormType {
@Component({
templateUrl: './confirm-password-dialog.component.html',
standalone: true,
imports: [ReactiveFormsModule, IconButtonComponent, TranslateModule, CircleButtonComponent],
})
export class ConfirmPasswordDialogComponent extends BaseDialogComponent {

View File

@ -16,14 +16,16 @@
<input formControlName="lastName" name="lastName" type="text" />
</div>
<div *ngIf="devMode" class="iqser-input-group">
<div class="iqser-input-group">
<label [translate]="'top-bar.navigation-items.my-account.children.language.label'"></label>
<mat-form-field>
<mat-select formControlName="language">
<mat-select-trigger>{{ languageSelectLabel() | translate }}</mat-select-trigger>
<mat-option *ngFor="let language of languages" [value]="language">
{{ translations[language] | translate }}
</mat-option>
@for (language of languages; track language) {
<mat-option [value]="language">
{{ translations[language] | translate }}
</mat-option>
}
</mat-select>
</mat-form-field>
</div>
@ -32,11 +34,13 @@
<a (click)="resetPassword()" target="_blank"> {{ 'user-profile-screen.actions.change-password' | translate }}</a>
</div>
<div *ngIf="devMode" class="iqser-input-group">
<mat-slide-toggle color="primary" formControlName="darkTheme">
{{ 'user-profile-screen.form.dark-theme' | translate }}
</mat-slide-toggle>
</div>
@if (devMode) {
<div class="iqser-input-group">
<mat-slide-toggle color="primary" formControlName="darkTheme">
{{ 'user-profile-screen.form.dark-theme' | translate }}
</mat-slide-toggle>
</div>
}
</div>
</div>

View File

@ -17,7 +17,6 @@ import { UserPreferenceService } from '@users/user-preference.service';
import { UserService } from '@users/user.service';
import { firstValueFrom } from 'rxjs';
import { UserProfileDialogService } from '../services/user-profile-dialog.service';
import { NgForOf, NgIf } from '@angular/common';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatSlideToggle } from '@angular/material/slide-toggle';
@ -37,14 +36,11 @@ interface UserProfileForm {
templateUrl: './user-profile-screen.component.html',
styleUrls: ['./user-profile-screen.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [
ReactiveFormsModule,
NgIf,
MatFormField,
MatSelect,
MatOption,
NgForOf,
TranslateModule,
MatSlideToggle,
IconButtonComponent,

View File

@ -1,22 +1,24 @@
import { CompositeRouteGuard, IqserPermissionsGuard, IqserRoutes } from '@iqser/common-ui';
import { RedRoleGuard } from '@users/red-role.guard';
import { EntitiesListingScreenComponent } from './screens/entities-listing/entities-listing-screen.component';
import { inject, provideEnvironmentInitializer } from '@angular/core';
import { PendingChangesGuard } from '@guards/can-deactivate.guard';
import { DefaultColorsScreenComponent } from './screens/default-colors/default-colors-screen.component';
import { UserListingScreenComponent } from './screens/user-listing/user-listing-screen.component';
import { DigitalSignatureScreenComponent } from './screens/digital-signature/digital-signature-screen.component';
import { AuditScreenComponent } from './screens/audit/audit-screen.component';
import { GeneralConfigScreenComponent } from './screens/general-config/general-config-screen.component';
import { templateExistsWhenEnteringAdmin } from '@guards/dossier-template-exists.guard';
import { DossierTemplatesGuard } from '@guards/dossier-templates.guard';
import { entityExistsGuard } from '@guards/entity-exists-guard.service';
import { PermissionsGuard } from '@guards/permissions-guard';
import { CompositeRouteGuard, IqserPermissionsGuard, IqserRoutes } from '@iqser/common-ui';
import { IqserAuthGuard } from '@iqser/common-ui/lib/users';
import { DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@red/domain';
import { CopilotService } from '@services/copilot.service';
import { RedRoleGuard } from '@users/red-role.guard';
import { Roles } from '@users/roles';
import { BaseAdminScreenComponent } from './base-admin-screen/base-admin-screen.component';
import { BaseDossierTemplateScreenComponent } from './base-dossier-templates-screen/base-dossier-template-screen.component';
import { DossierTemplatesGuard } from '@guards/dossier-templates.guard';
import { DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@red/domain';
import { templateExistsWhenEnteringAdmin } from '@guards/dossier-template-exists.guard';
import { entityExistsGuard } from '@guards/entity-exists-guard.service';
import { BaseEntityScreenComponent } from './base-entity-screen/base-entity-screen.component';
import { PermissionsGuard } from '@guards/permissions-guard';
import { Roles } from '@users/roles';
import { IqserAuthGuard } from '@iqser/common-ui/lib/users';
import { AuditScreenComponent } from './screens/audit/audit-screen.component';
import { DefaultColorsScreenComponent } from './screens/default-colors/default-colors-screen.component';
import { DigitalSignatureScreenComponent } from './screens/digital-signature/digital-signature-screen.component';
import { EntitiesListingScreenComponent } from './screens/entities-listing/entities-listing-screen.component';
import { GeneralConfigScreenComponent } from './screens/general-config/general-config-screen.component';
import { UserListingScreenComponent } from './screens/user-listing/user-listing-screen.component';
import { AdminDialogService } from './services/admin-dialog.service';
import { AuditService } from './services/audit.service';
import { DigitalSignatureService } from './services/digital-signature.service';
@ -78,7 +80,12 @@ const dossierTemplateIdRoutes: IqserRoutes = [
},
type: 'ENTITY',
},
providers: [RulesService],
providers: [
RulesService,
provideEnvironmentInitializer(() => {
return inject(CopilotService).connectAsync('/api/llm/llm-websocket');
}),
],
},
{
path: 'component-rules',

View File

@ -5,7 +5,6 @@ import { RouterOutlet } from '@angular/router';
@Component({
templateUrl: './base-admin-screen.component.html',
styleUrls: ['./base-admin-screen.component.scss'],
standalone: true,
imports: [AdminSideNavComponent, RouterOutlet],
})
export class BaseAdminScreenComponent {}

View File

@ -9,7 +9,6 @@ import { AdminSideNavComponent } from '../shared/components/admin-side-nav/admin
@Component({
templateUrl: './base-dossier-template-screen.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [
DossierTemplateBreadcrumbsComponent,
DossierTemplateActionsComponent,

View File

@ -18,7 +18,6 @@ import { AdminSideNavComponent } from '../shared/components/admin-side-nav/admin
@Component({
templateUrl: './base-entity-screen.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [
DossierTemplateBreadcrumbsComponent,
CircleButtonComponent,

View File

@ -8,7 +8,6 @@ import { DonutChartComponent } from '@shared/components/donut-chart/donut-chart.
selector: 'redaction-users-stats',
templateUrl: './users-stats.component.html',
styleUrls: ['./users-stats.component.scss'],
standalone: true,
imports: [CircleButtonComponent, TranslateModule, DonutChartComponent],
})
export class UsersStatsComponent {

View File

@ -16,7 +16,6 @@ export interface CloneTemplateData {
@Component({
templateUrl: './add-clone-dossier-template-dialog.component.html',
styleUrls: ['./add-clone-dossier-template-dialog.component.scss'],
standalone: true,
imports: [TranslateModule, ReactiveFormsModule, IconButtonComponent, CircleButtonComponent],
})
export class AddCloneDossierTemplateDialogComponent extends BaseDialogComponent {

View File

@ -8,7 +8,6 @@ import { UserDetailsComponent } from './user-details/user-details.component';
@Component({
selector: 'redaction-add-edit-user-dialog',
templateUrl: './add-edit-user-dialog.component.html',
standalone: true,
imports: [UserDetailsComponent, ResetPasswordComponent, CircleButtonComponent],
})
export class AddEditUserDialogComponent extends BaseDialogComponent {

View File

@ -10,7 +10,6 @@ import { NamePipe } from '@common-ui/users/name.pipe';
@Component({
selector: 'redaction-reset-password',
templateUrl: './reset-password.component.html',
standalone: true,
imports: [TranslateModule, NamePipe, ReactiveFormsModule, IconButtonComponent],
})
export class ResetPasswordComponent {

View File

@ -32,7 +32,7 @@
[formControlName]="role"
color="primary"
>
{{ translations[role] | translate }}
{{ translations[role] | translate: { count: 1 } }}
</mat-checkbox>
</div>
</div>

View File

@ -3,10 +3,8 @@ import { ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, Validators }
import { AdminDialogService } from '../../../services/admin-dialog.service';
import { BaseFormComponent, IconButtonComponent, LoadingService, Toaster } from '@iqser/common-ui';
import { rolesTranslations } from '@translations/roles-translations';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { User } from '@red/domain';
import { UserService } from '@users/user.service';
import { HttpStatusCode } from '@angular/common/http';
import { firstValueFrom } from 'rxjs';
import { IProfileUpdateRequest } from '@iqser/common-ui/lib/users';
import { TranslateModule } from '@ngx-translate/core';
@ -17,7 +15,6 @@ import { NgForOf, NgIf } from '@angular/common';
selector: 'redaction-user-details',
templateUrl: './user-details.component.html',
styleUrls: ['./user-details.component.scss'],
standalone: true,
imports: [TranslateModule, ReactiveFormsModule, MatCheckbox, NgForOf, IconButtonComponent, NgIf],
})
export class UserDetailsComponent extends BaseFormComponent implements OnInit {

View File

@ -19,7 +19,6 @@ interface DialogData {
@Component({
templateUrl: './add-entity-dialog.component.html',
styleUrls: ['./add-entity-dialog.component.scss'],
standalone: true,
imports: [AddEditEntityComponent, TranslateModule, IconButtonComponent, NgIf, CircleButtonComponent, HelpButtonComponent],
})
export class AddEntityDialogComponent extends BaseDialogComponent {

View File

@ -16,7 +16,6 @@ type OrderFn = (a: KeyValue<string, string>, b: KeyValue<string, string>) => num
templateUrl: './audit-info-dialog.component.html',
styleUrls: ['./audit-info-dialog.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [TranslateModule, NgForOf, KeyValuePipe, HumanizePipe, CircleButtonComponent, JsonPipe],
})
export class AuditInfoDialogComponent extends BaseDialogComponent {

View File

@ -20,7 +20,6 @@ const KMS_SIGNATURE_DIALOG_WIDTH = '810px';
@Component({
templateUrl: './configure-certificate-dialog.component.html',
styleUrls: ['./configure-certificate-dialog.component.scss'],
standalone: true,
imports: [
DetailsRadioComponent,
NgIf,

View File

@ -13,7 +13,6 @@ import { TranslateModule } from '@ngx-translate/core';
templateUrl: './kms-signature-configuration.component.html',
styleUrls: ['./kms-signature-configuration.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [UploadFileComponent, ReactiveFormsModule, NgIf, TranslateModule],
})
export class KmsSignatureConfigurationComponent extends BaseSignatureConfigurationComponent implements OnInit {

View File

@ -14,7 +14,6 @@ import { TranslateModule } from '@ngx-translate/core';
templateUrl: './pkcs-signature-configuration.component.html',
styleUrls: ['./pkcs-signature-configuration.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [UploadFileComponent, ReactiveFormsModule, NgIf, TranslateModule],
})
export class PkcsSignatureConfigurationComponent extends BaseSignatureConfigurationComponent implements OnInit {

View File

@ -20,7 +20,6 @@ interface IEditColorData {
@Component({
templateUrl: './edit-color-dialog.component.html',
styleUrls: ['./edit-color-dialog.component.scss'],
standalone: true,
imports: [ReactiveFormsModule, TranslateModule, ColorPickerModule, MatIcon, NgIf, IconButtonComponent, CircleButtonComponent],
})
export class EditColorDialogComponent extends BaseDialogComponent {

View File

@ -9,7 +9,6 @@ import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'redaction-smtp-auth-dialog',
templateUrl: './smtp-auth-dialog.component.html',
standalone: true,
imports: [ReactiveFormsModule, TranslateModule, IconButtonComponent, CircleButtonComponent, MatDialogClose],
})
export class SmtpAuthDialogComponent extends BaseDialogComponent {

View File

@ -7,7 +7,6 @@ import { TranslateModule } from '@ngx-translate/core';
templateUrl: './upload-dictionary-dialog.component.html',
styleUrls: ['./upload-dictionary-dialog.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [IconButtonComponent, TranslateModule],
})
export class UploadDictionaryDialogComponent {

View File

@ -36,7 +36,6 @@ const PAGE_SIZE = 50;
templateUrl: './audit-screen.component.html',
styleUrls: ['./audit-screen.component.scss'],
providers: listingProvidersFactory(AuditScreenComponent),
standalone: true,
imports: [
IqserListingModule,
TranslateModule,

View File

@ -1,12 +1,18 @@
import { Component, OnInit, signal } from '@angular/core';
import { BaseFormComponent, CircleButtonComponent, IconButtonComponent, listingProvidersFactory, LoadingService } from '@iqser/common-ui';
import {
BaseFormComponent,
CircleButtonComponent,
HasScrollbarDirective,
IconButtonComponent,
listingProvidersFactory,
LoadingService,
} from '@iqser/common-ui';
import { ComponentDefinitionsService } from '@services/entity-services/component-definitions.service';
import { firstValueFrom } from 'rxjs';
import { getParam } from '@common-ui/utils';
import { DOSSIER_TEMPLATE_ID, IComponentDefinition } from '@red/domain';
import { toObservable } from '@angular/core/rxjs-interop';
import { InputWithActionComponent } from '@common-ui/inputs/input-with-action/input-with-action.component';
import { CommonModule, NgIf } from '@angular/common';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { PermissionsService } from '@services/permissions.service';
import { MatIcon } from '@angular/material/icon';
@ -18,11 +24,8 @@ import { AdminDialogService } from '../../services/admin-dialog.service';
templateUrl: './component-definitions.component.html',
styleUrls: ['./component-definitions.component.scss'],
providers: listingProvidersFactory(ComponentDefinitionsComponent),
standalone: true,
imports: [
IconButtonComponent,
InputWithActionComponent,
NgIf,
TranslateModule,
CommonModule,
MatIcon,
@ -32,6 +35,7 @@ import { AdminDialogService } from '../../services/admin-dialog.service';
FormsModule,
ReactiveFormsModule,
CircleButtonComponent,
HasScrollbarDirective,
],
})
export default class ComponentDefinitionsComponent extends BaseFormComponent implements OnInit {
@ -103,6 +107,7 @@ export default class ComponentDefinitionsComponent extends BaseFormComponent imp
this._dialogService.openDialog('confirm', null, async () => {
await firstValueFrom(this._componentDefinitionsService.deleteComponentDefinitions(this.#dossierTemplateId, [componentId]));
await this.#loadData();
this.selectedComponent = null;
});
}

View File

@ -7,7 +7,7 @@ import { NgForOf, NgIf } from '@angular/common';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatDialogModule } from '@angular/material/dialog';
import { MatOption } from '@angular/material/autocomplete';
import { MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatSelect } from '@angular/material/select';
import { fileAttributeEncodingTypesTranslations } from '@translations/file-attribute-encoding-types-translations';
import { firstValueFrom } from 'rxjs';
import { ComponentMappingsService } from '@services/entity-services/component-mappings.service';
@ -31,7 +31,6 @@ interface DialogResult {
@Component({
templateUrl: './add-edit-component-mapping-dialog.component.html',
styleUrls: ['./add-edit-component-mapping-dialog.component.scss'],
standalone: true,
imports: [
TranslateModule,
ReactiveFormsModule,
@ -41,7 +40,6 @@ interface DialogResult {
CircleButtonComponent,
MatDialogModule,
MatOption,
MatSelectTrigger,
MatSelect,
IconButtonComponent,
UploadFileComponent,

View File

@ -1,6 +1,5 @@
import { AsyncPipe, NgIf } from '@angular/common';
import { Component, OnInit } from '@angular/core';
import { RouterLink } from '@angular/router';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { InputWithActionComponent } from '@common-ui/inputs/input-with-action/input-with-action.component';
import { getCurrentUser } from '@common-ui/users';
@ -25,9 +24,6 @@ import { Roles } from '@users/roles';
import { combineLatest, firstValueFrom } from 'rxjs';
import { map, tap } from 'rxjs/operators';
import { AdminDialogService } from '../../services/admin-dialog.service';
import { AdminSideNavComponent } from '../../shared/components/admin-side-nav/admin-side-nav.component';
import { DossierTemplateActionsComponent } from '../../shared/components/dossier-template-actions/dossier-template-actions.component';
import { DossierTemplateBreadcrumbsComponent } from '../../shared/components/dossier-template-breadcrumbs/dossier-template-breadcrumbs.component';
import { AddEditComponentMappingDialogComponent } from './add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component';
import { download } from '@utils/file-download-utils';
import { MatTooltip } from '@angular/material/tooltip';
@ -36,16 +32,11 @@ import { MatTooltip } from '@angular/material/tooltip';
templateUrl: './component-mappings-screen.component.html',
styleUrls: ['./component-mappings-screen.component.scss'],
providers: listingProvidersFactory(ComponentMappingsScreenComponent),
standalone: true,
imports: [
DossierTemplateBreadcrumbsComponent,
AsyncPipe,
NgIf,
DossierTemplateActionsComponent,
CircleButtonComponent,
TranslateModule,
RouterLink,
AdminSideNavComponent,
IqserListingModule,
InputWithActionComponent,
IconButtonComponent,

View File

@ -33,7 +33,6 @@ interface ListItem extends IListable {
styleUrls: ['./default-colors-screen.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
providers: listingProvidersFactory(DefaultColorsScreenComponent),
standalone: true,
imports: [IqserListingModule, NgStyle, CircleButtonComponent, IqserAllowDirective, TranslateModule, AsyncPipe, NgIf],
})
export class DefaultColorsScreenComponent extends ListingComponent<ListItem> implements OnInit {

View File

@ -25,7 +25,6 @@ import { DigitalSignatureService } from '../../services/digital-signature.servic
selector: 'redaction-digital-signature-screen',
templateUrl: './digital-signature-screen.component.html',
styleUrls: ['./digital-signature-screen.component.scss'],
standalone: true,
imports: [
IqserListingModule,
EmptyStateComponent,

View File

@ -20,7 +20,6 @@ export interface AddEditDossierAttributeDialogData {
@Component({
templateUrl: './add-edit-dossier-attribute-dialog.component.html',
styleUrls: ['./add-edit-dossier-attribute-dialog.component.scss'],
standalone: true,
imports: [
TranslateModule,
ReactiveFormsModule,

View File

@ -35,7 +35,6 @@ import { TableItemComponent } from './table-item/table-item.component';
entitiesService: DossierAttributesService,
component: DossierAttributesListingScreenComponent,
}),
standalone: true,
imports: [
IqserListingModule,
TranslateModule,

View File

@ -10,7 +10,6 @@ import { NgIf } from '@angular/common';
selector: 'redaction-table-item [attribute] [canEditDossierAttributes]',
templateUrl: './table-item.component.html',
styleUrls: ['./table-item.component.scss'],
standalone: true,
imports: [MatTooltip, TranslateModule, CircleButtonComponent, NgIf],
})
export class TableItemComponent {

View File

@ -18,7 +18,6 @@ export interface AddEditDossierStateDialogData {
@Component({
templateUrl: './add-edit-dossier-state-dialog.component.html',
styleUrls: ['./add-edit-dossier-state-dialog.component.scss'],
standalone: true,
imports: [TranslateModule, ReactiveFormsModule, ColorPickerModule, MatIcon, NgIf, IconButtonComponent, CircleButtonComponent],
})
export class AddEditDossierStateDialogComponent extends BaseDialogComponent {

View File

@ -11,7 +11,7 @@ import { ArchivedDossiersService } from '@services/dossiers/archived-dossiers.se
import { TranslateModule } from '@ngx-translate/core';
import { MatCheckbox } from '@angular/material/checkbox';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatOption, MatSelect } from '@angular/material/select';
import { NgForOf, NgIf } from '@angular/common';
export interface ConfirmDeleteDossierStateDialogData {
@ -23,13 +23,11 @@ export interface ConfirmDeleteDossierStateDialogData {
@Component({
templateUrl: './confirm-delete-dossier-state-dialog.component.html',
styleUrls: ['./confirm-delete-dossier-state-dialog.component.scss'],
standalone: true,
imports: [
TranslateModule,
ReactiveFormsModule,
MatCheckbox,
MatFormField,
MatSelectTrigger,
MatSelect,
MatOption,
NgForOf,

View File

@ -33,7 +33,6 @@ import { DossierStatesTableItemComponent } from '../dossier-states-table-item/do
templateUrl: './dossier-states-listing-screen.component.html',
styleUrls: ['./dossier-states-listing-screen.component.scss'],
providers: listingProvidersFactory(DossierStatesListingScreenComponent),
standalone: true,
imports: [
IqserListingModule,
DonutChartComponent,

View File

@ -20,7 +20,6 @@ import { SnakeCasePipe } from '@common-ui/pipes/snake-case.pipe';
selector: 'redaction-dossier-states-table-item',
templateUrl: './dossier-states-table-item.component.html',
styleUrls: ['./dossier-states-table-item.component.scss'],
standalone: true,
imports: [MatTooltip, CircleButtonComponent, TranslateModule, NgIf, SnakeCasePipe],
})
export class DossierStatesTableItemComponent {

View File

@ -33,7 +33,6 @@ import { TableItemComponent } from '../table-item/table-item.component';
entitiesService: DossierTemplatesService,
component: DossierTemplatesListingScreenComponent,
}),
standalone: true,
imports: [
IqserListingModule,
TranslateModule,

View File

@ -17,7 +17,6 @@ import { DatePipe } from '@shared/pipes/date.pipe';
templateUrl: './table-item.component.html',
styleUrls: ['./table-item.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [MatTooltip, NgIf, AsyncPipe, MatIcon, TranslateModule, DatePipe, DossierTemplateActionsComponent, InitialsAvatarComponent],
})
export class TableItemComponent implements OnChanges {

View File

@ -87,6 +87,7 @@
[routerLink]="dict.routerLink"
[tooltip]="'entities-listing.action.edit' | translate"
icon="iqser:edit"
iqserStopPropagation
></iqser-circle-button>
</div>
</div>

View File

@ -11,6 +11,7 @@ import {
ListingComponent,
listingProvidersFactory,
LoadingService,
StopPropagationDirective,
TableColumnConfig,
} from '@iqser/common-ui';
import { getParam } from '@iqser/common-ui/lib/utils';
@ -29,7 +30,6 @@ import { AdminDialogService } from '../../services/admin-dialog.service';
templateUrl: './entities-listing-screen.component.html',
styleUrls: ['./entities-listing-screen.component.scss'],
providers: listingProvidersFactory(EntitiesListingScreenComponent),
standalone: true,
imports: [
IqserListingModule,
TranslateModule,
@ -41,6 +41,7 @@ import { AdminDialogService } from '../../services/admin-dialog.service';
AnnotationIconComponent,
AsyncPipe,
RouterLink,
StopPropagationDirective,
],
})
export class EntitiesListingScreenComponent extends ListingComponent<Dictionary> implements OnInit {

View File

@ -16,7 +16,6 @@ import { AsyncPipe } from '@angular/common';
templateUrl: './dictionary-screen.component.html',
styleUrls: ['./dictionary-screen.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [AsyncPipe, DictionaryManagerComponent],
})
export class DictionaryScreenComponent implements OnInit {

View File

@ -1,6 +1,6 @@
import { ChangeDetectionStrategy, Component, HostListener, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { getConfig, HasScrollbarDirective, HelpButtonComponent, IconButtonComponent, IconButtonTypes } from '@iqser/common-ui';
import { getConfig, HasScrollbarDirective, IconButtonComponent, IconButtonTypes } from '@iqser/common-ui';
import { IqserEventTarget } from '@iqser/common-ui/lib/utils';
import { Dictionary, DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@red/domain';
import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service';
@ -17,17 +17,7 @@ import { TranslateModule } from '@ngx-translate/core';
templateUrl: './entity-info.component.html',
styleUrls: ['./entity-info.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [
HasScrollbarDirective,
MatIcon,
NgIf,
TranslateModule,
AsyncPipe,
IconButtonComponent,
AddEditEntityComponent,
HelpButtonComponent,
],
imports: [HasScrollbarDirective, MatIcon, NgIf, TranslateModule, AsyncPipe, IconButtonComponent, AddEditEntityComponent],
})
export class EntityInfoComponent {
@ViewChild(AddEditEntityComponent) private readonly _addEditEntityComponent: AddEditEntityComponent;

View File

@ -22,7 +22,6 @@ export interface AddEditFileAttributeDialogData {
@Component({
templateUrl: './add-edit-file-attribute-dialog.component.html',
styleUrls: ['./add-edit-file-attribute-dialog.component.scss'],
standalone: true,
imports: [
ReactiveFormsModule,
TranslateModule,

View File

@ -13,7 +13,6 @@ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
@Component({
templateUrl: './file-attributes-configurations-dialog.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [
ReactiveFormsModule,
MatSlideToggleModule,
@ -58,6 +57,7 @@ export class FileAttributesConfigurationsDialogComponent extends BaseDialogCompo
if (supportCsvMapping) {
return {
...this.#configuration,
keyColumn: this.form.get('keyColumn').value,
filenameMappingColumnHeaderName: this.form.get('keyColumn').value,
delimiter: this.form.get('delimiter').value,
encoding: this.form.get('encodingType').value,
@ -67,13 +67,14 @@ export class FileAttributesConfigurationsDialogComponent extends BaseDialogCompo
return {
...this.#configuration,
filenameMappingColumnHeaderName: '',
keyColumn: this.form.get('keyColumn').value,
};
}
#getForm() {
return this._formBuilder.group({
supportCsvMapping: [!!this.#configuration.filenameMappingColumnHeaderName],
keyColumn: [this.#configuration.filenameMappingColumnHeaderName || '', [Validators.required]],
keyColumn: [this.#configuration.filenameMappingColumnHeaderName || this.#configuration.keyColumn || '', [Validators.required]],
delimiter: [this.#configuration.delimiter || '', [Validators.required]],
encodingType: [this.#configuration.encoding || FileAttributeEncodingTypes['UTF-8'], [Validators.required]],
});

View File

@ -2,8 +2,8 @@ import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { MatFormField } from '@angular/material/form-field';
import { MatMenu, MatMenuTrigger } from '@angular/material/menu';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatMenu, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';
import { MatOption, MatSelect } from '@angular/material/select';
import { MatSlideToggle } from '@angular/material/slide-toggle';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { ChevronButtonComponent } from '@common-ui/buttons/chevron-button';
@ -19,7 +19,6 @@ import { fileAttributeTypesTranslations } from '@translations/file-attribute-typ
templateUrl: './active-fields-listing.component.html',
styleUrls: ['./active-fields-listing.component.scss'],
providers: listingProvidersFactory(ActiveFieldsListingComponent),
standalone: true,
imports: [
IqserListingModule,
CircleButtonComponent,
@ -30,7 +29,6 @@ import { fileAttributeTypesTranslations } from '@translations/file-attribute-typ
MatMenu,
EditableInputComponent,
MatFormField,
MatSelectTrigger,
MatSelect,
MatOption,
FormsModule,
@ -38,6 +36,7 @@ import { fileAttributeTypesTranslations } from '@translations/file-attribute-typ
RoundCheckboxComponent,
NgForOf,
NgIf,
MatMenuItem,
],
})
export class ActiveFieldsListingComponent extends ListingComponent<IField> implements OnChanges {

View File

@ -4,7 +4,7 @@ import { AbstractControl, ReactiveFormsModule, UntypedFormBuilder, UntypedFormGr
import { MatAutocomplete, MatAutocompleteTrigger, MatOption } from '@angular/material/autocomplete';
import { MAT_DIALOG_DATA, MatDialogClose, MatDialogRef } from '@angular/material/dialog';
import { MatFormField } from '@angular/material/form-field';
import { MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatSelect } from '@angular/material/select';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { InputWithActionComponent } from '@common-ui/inputs/input-with-action/input-with-action.component';
import {
@ -38,7 +38,6 @@ export interface IFileAttributesCSVImportData {
styleUrls: ['./file-attributes-csv-import-dialog.component.scss'],
providers: listingProvidersFactory(),
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [
ReactiveFormsModule,
MatFormField,
@ -46,7 +45,6 @@ export interface IFileAttributesCSVImportData {
MatAutocomplete,
AsyncPipe,
MatOption,
MatSelectTrigger,
MatSelect,
CircleButtonComponent,
NgIf,

View File

@ -46,7 +46,6 @@ import {
templateUrl: './file-attributes-listing-screen.component.html',
styleUrls: ['./file-attributes-listing-screen.component.scss'],
providers: listingProvidersFactory(FileAttributesListingScreenComponent),
standalone: true,
imports: [
IqserListingModule,
NgForOf,
@ -86,6 +85,7 @@ export default class FileAttributesListingScreenComponent extends ListingCompone
},
];
readonly roles = Roles;
keyColumnValue: string = '';
constructor(
readonly permissionsService: PermissionsService,
@ -172,13 +172,13 @@ export default class FileAttributesListingScreenComponent extends ListingCompone
FileAttributesConfigurationsDialogComponent,
{
...defaultDialogConfig,
data: this.#existingConfiguration,
data: { ...this.#existingConfiguration, keyColumn: this.keyColumnValue },
},
);
const configuration = await firstValueFrom(ref.afterClosed());
if (configuration) {
this.keyColumnValue = configuration.keyColumn;
await this.#setConfigAndLoadData(configuration);
}
}

View File

@ -13,7 +13,6 @@ import { MatSlideToggle } from '@angular/material/slide-toggle';
@Component({
selector: 'redaction-general-config-form',
templateUrl: './general-config-form.component.html',
standalone: true,
imports: [ReactiveFormsModule, TranslateModule, NgIf, MatSlideToggle, IconButtonComponent],
})
export class GeneralConfigFormComponent extends BaseFormComponent implements OnInit {

View File

@ -13,7 +13,6 @@ import { ILicenseFeature } from '@red/domain';
selector: 'redaction-general-config-screen',
templateUrl: './general-config-screen.component.html',
styleUrls: ['./general-config-screen.component.scss'],
standalone: true,
imports: [IqserListingModule, GeneralConfigFormComponent, SystemPreferencesFormComponent, SmtpFormComponent, TranslateModule],
})
export class GeneralConfigScreenComponent extends BaseFormComponent implements AfterViewInit {

View File

@ -21,7 +21,6 @@ import { NgIf } from '@angular/common';
@Component({
selector: 'redaction-smtp-form',
templateUrl: './smtp-form.component.html',
standalone: true,
imports: [ReactiveFormsModule, TranslateModule, MatSlideToggle, IconButtonComponent, NgIf],
})
export class SmtpFormComponent extends BaseFormComponent implements OnInit {

View File

@ -15,7 +15,6 @@ export type ValueType = 'number' | 'string' | 'boolean';
@Component({
selector: 'redaction-system-preferences-form',
templateUrl: './system-preferences-form.component.html',
standalone: true,
imports: [NgIf, ReactiveFormsModule, NgForOf, TranslateModule, MatSlideToggle, IconButtonComponent],
})
export class SystemPreferencesFormComponent extends BaseFormComponent {

View File

@ -34,6 +34,20 @@
<span [innerHTML]="'dossier-template-info-screen.created-on' | translate: { date: createdOn }"></span>
</div>
<div *ngIf="areRulesLocked()">
<mat-icon
(click)="resetRules()"
[matTooltip]="
currentUser.isAdmin
? ('dossier-template-info-screen.rules-reset.tooltip' | translate)
: ('dossier-template-info-screen.rules-reset.disabled-action' | translate)
"
[class.action-icon]="currentUser.isAdmin"
svgIcon="iqser:alert-circle"
></mat-icon>
<span class="error">{{ 'dossier-template-info-screen.rules-reset.label' | translate }}</span>
</div>
<div>
<mat-icon svgIcon="red:entries"></mat-icon>
{{ 'dossier-template-info-screen.entries' | translate: { count: ctx.stats.numberOfEntries } }}

View File

@ -18,3 +18,11 @@
padding-right: 24px;
margin-right: 24px;
}
.error {
color: var(--iqser-primary);
}
.action-icon {
cursor: pointer;
}

View File

@ -1,4 +1,4 @@
import { Component, Input, OnInit } from '@angular/core';
import { Component, computed, Input, OnInit } from '@angular/core';
import { ContextComponent } from '@iqser/common-ui/lib/utils';
import { type DossierTemplate, type DossierTemplateStats } from '@red/domain';
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
@ -9,6 +9,12 @@ import { MatIcon } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
import { InitialsAvatarComponent } from '@common-ui/users';
import { DatePipe } from '@shared/pipes/date.pipe';
import { RulesService } from '../../../services/rules.service';
import { Toaster } from '@iqser/common-ui';
import { MatTooltip } from '@angular/material/tooltip';
import { firstValueFrom } from 'rxjs';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { getCurrentUser } from '@users/user.service';
interface Context {
readonly dossierTemplate: DossierTemplate;
@ -19,17 +25,21 @@ interface Context {
selector: 'redaction-dossier-template-details',
templateUrl: './dossier-template-details.component.html',
styleUrls: ['./dossier-template-details.component.scss'],
standalone: true,
imports: [NgIf, AsyncPipe, MatIcon, TranslateModule, DatePipe, InitialsAvatarComponent],
imports: [NgIf, AsyncPipe, MatIcon, TranslateModule, DatePipe, InitialsAvatarComponent, MatTooltip],
})
export class DossierTemplateDetailsComponent extends ContextComponent<Context> implements OnInit {
readonly translations = dossierTemplateStatusTranslations;
@Input({ required: true }) dossierTemplateId: string;
readonly areRulesLocked = computed(() => {
return this._rulesService.currentTemplateRules().timeoutDetected;
});
readonly currentUser = getCurrentUser();
constructor(
private readonly _dossierTemplatesService: DossierTemplatesService,
private readonly _dossierTemplateStatsService: DossierTemplateStatsService,
private readonly _rulesService: RulesService,
private readonly _toaster: Toaster,
) {
super();
}
@ -40,4 +50,15 @@ export class DossierTemplateDetailsComponent extends ContextComponent<Context> i
stats: this._dossierTemplateStatsService.watch$(this.dossierTemplateId),
});
}
async resetRules() {
if (!this.currentUser.isAdmin) return;
try {
await firstValueFrom(this._rulesService.reset(this.dossierTemplateId));
this._toaster.success(_('dossier-template-info-screen.rules-reset.success'));
await firstValueFrom(this._rulesService.getFor(this.dossierTemplateId));
} catch (error) {
this._toaster.rawError(error.error.message);
}
}
}

View File

@ -22,7 +22,6 @@ import { Observable } from 'rxjs';
import { DossierTemplateDetailsComponent } from '../dossier-template-details/dossier-template-details.component';
import { TranslateModule } from '@ngx-translate/core';
import { MatCheckbox } from '@angular/material/checkbox';
import { NgIf } from '@angular/common';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatIcon } from '@angular/material/icon';
import { SelectComponent } from '@shared/components/select/select.component';
@ -36,14 +35,12 @@ const downloadTypes = ['ORIGINAL', 'PREVIEW', 'OPTIMIZED_PREVIEW', 'DELTA_PREVIE
@Component({
templateUrl: './dossier-template-info-screen.component.html',
styleUrls: ['./dossier-template-info-screen.component.scss'],
standalone: true,
imports: [
HasScrollbarDirective,
ReactiveFormsModule,
DossierTemplateDetailsComponent,
TranslateModule,
MatCheckbox,
NgIf,
MatDatepickerModule,
SelectComponent,
IconButtonComponent,

View File

@ -17,7 +17,6 @@ interface DialogData {
@Component({
templateUrl: './add-edit-justification-dialog.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [TranslateModule, ReactiveFormsModule, IconButtonComponent, CircleButtonComponent, HasScrollbarDirective],
})
export class AddEditJustificationDialogComponent extends BaseDialogComponent {

View File

@ -33,7 +33,6 @@ import { TranslateModule } from '@ngx-translate/core';
}),
JustificationsDialogService,
],
standalone: true,
imports: [IqserListingModule, CircleButtonComponent, NgIf, TableItemComponent, TranslateModule, AsyncPipe, IconButtonComponent],
})
export default class JustificationsScreenComponent extends ListingComponent<Justification> implements OnInit {

View File

@ -12,7 +12,6 @@ import { TranslateModule } from '@ngx-translate/core';
selector: 'redaction-table-item',
templateUrl: './table-item.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [MatTooltip, CircleButtonComponent, NgIf, TranslateModule],
})
export class TableItemComponent {

View File

@ -6,7 +6,6 @@ import { BaseChartDirective, provideCharts, withDefaultRegisterables } from 'ng2
selector: 'redaction-chart',
templateUrl: './chart.component.html',
styleUrls: ['./chart.component.scss'],
standalone: true,
imports: [BaseChartDirective],
providers: [provideCharts(withDefaultRegisterables())],
})

View File

@ -16,7 +16,6 @@ import { ChartComponent } from '../chart/chart.component';
selector: 'red-license-analysis-capacity-usage',
templateUrl: './license-analysis-capacity-usage.component.html',
styleUrls: ['./license-analysis-capacity-usage.component.scss'],
standalone: true,
imports: [SizePipe, DecimalPipe, ChartComponent, AsyncPipe, NgIf, TranslateModule],
})
export class LicenseAnalysisCapacityUsageComponent {

View File

@ -14,7 +14,6 @@ import { ChartComponent } from '../chart/chart.component';
selector: 'red-license-page-usage',
templateUrl: './license-page-usage.component.html',
styleUrls: ['./license-page-usage.component.scss'],
standalone: true,
imports: [DecimalPipe, TranslateModule, ChartComponent, NgIf, AsyncPipe],
})
export class LicensePageUsageComponent {

View File

@ -17,7 +17,6 @@ import { ChartComponent } from '../chart/chart.component';
selector: 'red-license-retention-capacity',
templateUrl: './license-retention-capacity.component.html',
styleUrls: ['./license-retention-capacity.component.scss'],
standalone: true,
imports: [SizePipe, DecimalPipe, NgIf, DonutChartComponent, AsyncPipe, ChartComponent, TranslateModule],
})
export class LicenseRetentionCapacityComponent {

View File

@ -6,7 +6,7 @@
</mat-select-trigger>
<mat-option *ngFor="let license of licenses" [value]="license">
<ng-container *ngTemplateOutlet="licenseInfo; context: { license: this.license }"></ng-container>
<ng-container *ngTemplateOutlet="licenseInfo; context: { license: license }"></ng-container>
</mat-option>
</mat-select>
</mat-form-field>

View File

@ -19,7 +19,6 @@ const translations = {
selector: 'redaction-license-select',
templateUrl: './license-select.component.html',
styleUrls: ['./license-select.component.scss'],
standalone: true,
imports: [
AsyncPipe,
NgIf,

View File

@ -16,7 +16,6 @@ import { DatePipe } from '@shared/pipes/date.pipe';
@Component({
templateUrl: './license-screen.component.html',
styleUrls: ['./license-screen.component.scss'],
standalone: true,
imports: [
IqserListingModule,
TranslateModule,

View File

@ -30,7 +30,6 @@ import { TranslateModule } from '@ngx-translate/core';
templateUrl: './permissions-screen.component.html',
styleUrls: ['./permissions-screen.component.scss'],
providers: listingProvidersFactory(PermissionsScreenComponent),
standalone: true,
imports: [IqserListingModule, NgIf, NgForOf, MatSlideToggle, AsyncPipe, TranslateModule],
})
export default class PermissionsScreenComponent extends ListingComponent<PermissionsMapping> implements OnInit {

View File

@ -41,7 +41,6 @@ const placeholderTypes: PlaceholderType[] = ['generalPlaceholders', 'fileAttribu
templateUrl: './reports-screen.component.html',
styleUrls: ['./reports-screen.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [HasScrollbarDirective, AsyncPipe, TranslateModule, CircleButtonComponent, IqserAllowDirective, SnakeCasePipe],
})
export default class ReportsScreenComponent implements OnInit {

View File

@ -1,8 +1,57 @@
<div class="header-container">
<div [translate]="translations[this.type]['title']" class="heading-l"></div>
<div [translate]="translations[type()]['title']" class="heading-l"></div>
</div>
<ngx-monaco-editor (init)="onCodeEditorInit($event)" [(ngModel)]="codeEditorText" [options]="editorOptions"></ngx-monaco-editor>
<div class="flex" style="height: 100%">
<ngx-monaco-editor (init)="onCodeEditorInit($event)" [(ngModel)]="codeEditorText" [options]="editorOptions"></ngx-monaco-editor>
<div [class.collapsed]="collapsed()" class="right-container flex-column">
<div class="collapsed-wrapper">
<ng-container
*ngTemplateOutlet="collapsible; context: { action: 'expand', tooltip: ('copilot.label' | translate) }"
></ng-container>
<div class="all-caps-label" translate="copilot.label"></div>
</div>
<div class="header-wrapper flex mt-8">
<div class="heading-xl flex-1">{{ 'copilot.label' | translate | titlecase }}</div>
<ng-container
*ngTemplateOutlet="collapsible; context: { action: 'collapse', tooltip: ('copilot.label' | translate) }"
></ng-container>
</div>
<div class="mt-24">
@for (comment of conversation(); track comment) {
<div class="comment">
<div class="comment-details-wrapper">
<div [matTooltipPosition]="'above'" [matTooltip]="comment.date | date: 'exactDate'" class="small-label">
{{ comment.date | date: 'sophisticatedDate' }}
</div>
</div>
<pre class="text-auto">{{ comment.text }}</pre>
</div>
}
<iqser-input-with-action
(action)="add($event)"
[placeholder]="'comments.add-comment' | translate"
autocomplete="off"
icon="iqser:collapse"
width="full"
></iqser-input-with-action>
</div>
</div>
</div>
<ng-template #collapsible let-action="action" let-tooltip="tooltip">
<iqser-circle-button
(action)="toggleCollapse()"
[icon]="'iqser:' + action"
[tooltipPosition]="IqserTooltipPositions.before"
[tooltip]="tooltip"
></iqser-circle-button>
</ng-template>
<div *ngIf="changed && permissionsService.canEditRules() && !isLeaving" class="changes-box">
<div (click)="goToErrors()" *ngIf="numberOfErrors() || numberOfWarnings()" class="errors">
@ -12,15 +61,15 @@
<span
*ngIf="numberOfErrors()"
[translateParams]="{ errors: numberOfErrors() }"
[translate]="translations[this.type]['errors-found']"
[translate]="translations[type()]['errors-found']"
>
</span>
<span
*ngIf="numberOfWarnings()"
[translateParams]="{ warnings: numberOfWarnings() }"
[translate]="translations[this.type]['warnings-found']"
class="warning"
[class.only-warning]="!numberOfErrors()"
[translateParams]="{ warnings: numberOfWarnings() }"
[translate]="translations[type()]['warnings-found']"
class="warning"
></span>
</div>
</span>
@ -29,11 +78,11 @@
<div class="actions">
<iqser-icon-button
(action)="save()"
[label]="translations[this.type]['save-changes'] | translate"
[label]="translations[type()]['save-changes'] | translate"
[type]="iconButtonTypes.primary"
icon="iqser:check"
></iqser-icon-button>
<div (click)="revert()" [translate]="translations[this.type]['revert-changes']" class="all-caps-label cancel"></div>
<div (click)="revert()" [translate]="translations[type()]['revert-changes']" class="all-caps-label cancel"></div>
</div>
</div>

View File

@ -81,3 +81,22 @@ ngx-monaco-editor {
gap: 24px;
}
}
.right-container {
display: flex;
width: 750px;
min-width: 375px;
padding: 16px 24px 16px 24px;
&.has-scrollbar:hover {
padding-right: 13px;
}
redaction-dossier-details {
width: 100%;
}
}
.text-auto {
text-wrap: auto;
}

View File

@ -1,22 +1,40 @@
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, OnInit, signal } from '@angular/core';
import { PermissionsService } from '@services/permissions.service';
import { IconButtonComponent, IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui';
import { RulesService } from '../../../services/rules.service';
import { firstValueFrom } from 'rxjs';
import { DOSSIER_TEMPLATE_ID, DroolsKeywords, IRules } from '@red/domain';
import { EditorThemeService } from '@services/editor-theme.service';
import { NgIf, NgTemplateOutlet, TitleCasePipe } from '@angular/common';
import {
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
computed,
DestroyRef,
inject,
input,
OnInit,
signal,
viewChild,
} from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { FormsModule } from '@angular/forms';
import { MatIcon } from '@angular/material/icon';
import { MatTooltip } from '@angular/material/tooltip';
import { InputWithActionComponent } from '@common-ui/inputs/input-with-action/input-with-action.component';
import { TenantsService } from '@common-ui/tenants';
import { getCurrentUser } from '@common-ui/users';
import { ComponentCanDeactivate } from '@guards/can-deactivate.guard';
import { Debounce, getParam } from '@iqser/common-ui/lib/utils';
import { ActivatedRoute } from '@angular/router';
import { CircleButtonComponent, IconButtonComponent, IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui';
import { Debounce, IqserTooltipPositions } from '@iqser/common-ui/lib/utils';
import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor';
import { TranslateModule } from '@ngx-translate/core';
import { DroolsKeywords, IRules } from '@red/domain';
import { CopilotService } from '@services/copilot.service';
import { EditorThemeService } from '@services/editor-theme.service';
import { PermissionsService } from '@services/permissions.service';
import { DatePipe } from '@shared/pipes/date.pipe';
import { firstValueFrom } from 'rxjs';
import { map } from 'rxjs/operators';
import { RulesService } from '../../../services/rules.service';
import { rulesScreenTranslations } from '../../../translations/rules-screen-translations';
import ICodeEditor = monaco.editor.ICodeEditor;
import IModelDeltaDecoration = monaco.editor.IModelDeltaDecoration;
import IStandaloneEditorConstructionOptions = monaco.editor.IStandaloneEditorConstructionOptions;
import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor';
import { MatIcon } from '@angular/material/icon';
import { FormsModule } from '@angular/forms';
import { NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
interface SyntaxError {
line: number;
@ -31,19 +49,57 @@ interface UploadResponse {
deprecatedWarnings: SyntaxError[];
}
export const SentenceTypes = {
question: 'question',
answer: 'answer',
} as const;
export type SentenceType = keyof typeof SentenceTypes;
interface Sentence {
text: string | null;
date: string;
type: SentenceType;
}
const endingSentence: Sentence = { text: null, date: new Date().toISOString(), type: SentenceTypes.answer };
const RULE_VALIDATION_TIMEOUT = 2000;
@Component({
templateUrl: './rules-screen.component.html',
styleUrls: ['./rules-screen.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [MonacoEditorModule, MatIcon, FormsModule, IconButtonComponent, NgIf, TranslateModule],
imports: [
MonacoEditorModule,
MatIcon,
FormsModule,
IconButtonComponent,
NgIf,
TranslateModule,
CircleButtonComponent,
InputWithActionComponent,
MatTooltip,
NgTemplateOutlet,
DatePipe,
TitleCasePipe,
],
})
export default class RulesScreenComponent implements OnInit, ComponentCanDeactivate {
readonly #errorGlyphs = signal<string[]>([]);
#codeEditor: ICodeEditor;
#decorations: string[] = [];
readonly #errors = signal<SyntaxError[]>([]);
#ruleValidationTimeout: number = null;
readonly #copilotService = inject(CopilotService);
readonly #currentUser = getCurrentUser();
readonly #conversation = signal<Sentence[]>([endingSentence]);
protected readonly collapsed = signal(true);
protected readonly IqserTooltipPositions = IqserTooltipPositions;
readonly dossierTemplateId = input.required<string>();
readonly translations = rulesScreenTranslations;
readonly iconButtonTypes = IconButtonTypes;
readonly inputWithAction = viewChild(InputWithActionComponent);
readonly editorOptions: IStandaloneEditorConstructionOptions = {
theme: 'vs',
language: 'java',
@ -55,19 +111,43 @@ export default class RulesScreenComponent implements OnInit, ComponentCanDeactiv
initialLines: string[] = [];
currentLines: string[] = [];
isLeaving = false;
readonly type: IRules['ruleFileType'];
readonly #errorGlyphs = signal<string[]>([]);
readonly type = input.required<IRules['ruleFileType']>();
readonly numberOfErrors = computed(() => this.#errors().filter(e => !e.warning).length);
readonly numberOfWarnings = computed(() => this.#errors().filter(e => e.warning).length);
readonly #dossierTemplateId = getParam(DOSSIER_TEMPLATE_ID);
#codeEditor: ICodeEditor;
#decorations: string[] = [];
#errors = signal<SyntaxError[]>([]);
#ruleValidationTimeout: number = null;
readonly conversation = computed(() => this.#conversation().filter(r => !!r.text));
constructor(
readonly permissionsService: PermissionsService,
private readonly _rulesService: RulesService,
private readonly _changeDetectorRef: ChangeDetectorRef,
private readonly _toaster: Toaster,
private readonly _loadingService: LoadingService,
private readonly _editorThemeService: EditorThemeService,
) {
const username = this.#currentUser.id;
const tenant = inject(TenantsService).activeTenantId;
inject(DestroyRef).onDestroy(() => this.#copilotService.deactivate());
this.#copilotService
.listen<{ token?: string }>('/user/' + username + '/queue/' + tenant + '/rules-copilot')
.pipe(
takeUntilDestroyed(),
map(res => res?.token),
)
.subscribe(token => {
if (token === null) {
this.#conversation.update(responses => [...responses, { ...endingSentence }]);
return;
}
this.#conversation.update(responses => {
const last = responses.pop();
return [...responses, { ...last, text: (last.text ?? '') + token }];
});
});
}
set isLeavingPage(isLeaving: boolean) {
this.isLeaving = isLeaving;
this._changeDetectorRef.detectChanges();
this._changeDetectorRef.markForCheck();
}
get changed(): boolean {
@ -85,16 +165,23 @@ export default class RulesScreenComponent implements OnInit, ComponentCanDeactiv
this.#closeProblemsView();
}
constructor(
readonly permissionsService: PermissionsService,
private readonly _rulesService: RulesService,
private readonly _changeDetectorRef: ChangeDetectorRef,
private readonly _toaster: Toaster,
private readonly _loadingService: LoadingService,
private readonly _editorThemeService: EditorThemeService,
private readonly _route: ActivatedRoute,
) {
this.type = this._route.snapshot.data.type;
toggleCollapse() {
this.collapsed.update(collapsed => !collapsed);
if (this.#conversation().length === 1) {
this.#copilotService.send('Hello!');
}
}
add(question: string) {
this.#conversation.update(responses => {
const last = responses.pop();
last.text = question;
last.type = SentenceTypes.question;
last.date = new Date().toISOString();
return [...responses, last, { ...endingSentence }];
});
this.inputWithAction().reset();
this.#copilotService.send(question);
}
async ngOnInit() {
@ -122,7 +209,7 @@ export default class RulesScreenComponent implements OnInit, ComponentCanDeactiv
}
(window as any).monaco.editor.setTheme(this._editorThemeService.getTheme(true));
await this.#configureSyntaxHighlighting();
this._changeDetectorRef.detectChanges();
this._changeDetectorRef.markForCheck();
}
@Debounce()
@ -142,12 +229,20 @@ export default class RulesScreenComponent implements OnInit, ComponentCanDeactiv
await this.#uploadRules();
}
revert(): void {
this.currentLines = this.initialLines;
this.#decorations = this.#codeEditor?.deltaDecorations(this.#decorations, []) || [];
this.#removeErrorMarkers();
this._changeDetectorRef.markForCheck();
this._loadingService.stop();
}
async #uploadRules(dryRun = false) {
return firstValueFrom(
this._rulesService.uploadRules({
rules: this.#getValue(),
dossierTemplateId: this.#dossierTemplateId,
ruleFileType: this.type,
dossierTemplateId: this.dossierTemplateId(),
ruleFileType: this.type(),
dryRun,
}),
).then(
@ -156,7 +251,7 @@ export default class RulesScreenComponent implements OnInit, ComponentCanDeactiv
this.#drawErrorMarkers(errors);
if (!dryRun) {
await this.#initialize();
this._toaster.success(rulesScreenTranslations[this.type]['success.generic']);
this._toaster.success(rulesScreenTranslations[this.type()]['success.generic']);
}
},
error => {
@ -173,20 +268,12 @@ export default class RulesScreenComponent implements OnInit, ComponentCanDeactiv
this.#drawErrorMarkers(errors);
this._loadingService.stop();
if (!dryRun) {
this._toaster.error(rulesScreenTranslations[this.type]['error.generic']);
this._toaster.error(rulesScreenTranslations[this.type()]['error.generic']);
}
},
);
}
revert(): void {
this.currentLines = this.initialLines;
this.#decorations = this.#codeEditor?.deltaDecorations(this.#decorations, []) || [];
this.#removeErrorMarkers();
this._changeDetectorRef.detectChanges();
this._loadingService.stop();
}
#mapErrors(response: UploadResponse, dryRun = false) {
const warnings = response.deprecatedWarnings.map(w => ({ ...w, warning: true }));
if (dryRun) {
@ -296,7 +383,7 @@ export default class RulesScreenComponent implements OnInit, ComponentCanDeactiv
async #initialize() {
this._loadingService.start();
await firstValueFrom(this._rulesService.download(this.#dossierTemplateId, this.type)).then(
await firstValueFrom(this._rulesService.download(this.dossierTemplateId(), this.type())).then(
rules => {
this.currentLines = this.initialLines = rules.rules.split('\n');
this.revert();

View File

@ -46,7 +46,6 @@ function configToFilter({ key, label }: DonutChartConfig) {
entitiesService: UserService,
component: UserListingScreenComponent,
}),
standalone: true,
imports: [
IqserListingModule,
TranslateModule,
@ -126,7 +125,7 @@ export class UserListingScreenComponent extends ListingComponent<User> implement
getDisplayRoles(user: User) {
const oldRedRoles = user.roles.filter(role => role.startsWith('RED_'));
const translatedRoles = oldRedRoles.map(role => this._translateService.instant(this.translations[role]));
const translatedRoles = oldRedRoles.map(role => this._translateService.instant(this.translations[role], { count: 1 }));
return translatedRoles.join(', ') || this._translateService.instant(this.translations['NO_ROLE']);
}

View File

@ -6,7 +6,6 @@ import { TranslateModule } from '@ngx-translate/core';
selector: 'redaction-paginator',
templateUrl: './paginator.component.html',
styleUrls: ['./paginator.component.scss'],
standalone: true,
imports: [MatIcon, TranslateModule],
})
export class PaginatorComponent {

View File

@ -74,7 +74,6 @@ interface WatermarkForm {
@Component({
templateUrl: './watermark-screen.component.html',
styleUrls: ['./watermark-screen.component.scss'],
standalone: true,
imports: [
PaginatorComponent,
NgIf,
@ -249,7 +248,7 @@ export class WatermarkScreenComponent implements OnInit {
this.instance = await WebViewer.Iframe(
{
licenseKey: this._licenseService.activeLicenseKey,
path: this.#convertPath('/assets/wv-resources/11.0.0'),
path: this.#convertPath('/assets/wv-resources/11.1.0'),
css: this.#convertPath('/assets/pdftron/stylesheet.css'),
fullAPI: true,
isReadOnly: true,

View File

@ -31,7 +31,6 @@ import { DatePipe } from '@shared/pipes/date.pipe';
templateUrl: './watermarks-listing-screen.component.html',
styleUrls: ['./watermarks-listing-screen.component.scss'],
providers: listingProvidersFactory(WatermarksListingScreenComponent),
standalone: true,
imports: [
IqserListingModule,
TranslateModule,

Some files were not shown because too many files have changed in this diff Show More