Compare commits

...

627 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
Valentin-Gabriel Mihai
5684f97389 Merge branch 'RED-10258' into 'master'
Fix text not displayed in viewer

See merge request redactmanager/red-ui!673
2024-11-01 16:28:48 +01:00
Dan Percic
bce93733c9 fix matTooltip import 2024-11-01 17:15:04 +02:00
Dan Percic
c677bc17e4 Merge branch 'master' into release/4.839.x 2024-11-01 17:04:11 +02:00
Nicoleta Panaghiu
91e344ae28 Merge branch 'RED-10258' into 'master'
Fix text not displayed in viewer

See merge request redactmanager/red-ui!672
2024-11-01 15:48:15 +01:00
Dan Percic
f4ad886a79 RED-10258 Add all available fonts 2024-11-01 16:40:23 +02:00
Valentin-Gabriel Mihai
ef51c2dbe3 Merge branch 'RED-10206' into 'master'
RED-10206: disable new dossier button when the template is invalid.

See merge request redactmanager/red-ui!671
2024-11-01 13:51:10 +01:00
Nicoleta Panaghiu
8984078767 RED-10206: disable new dossier button when the template is invalid. 2024-11-01 14:49:43 +02:00
Nicoleta Panaghiu
59231003ea Merge branch 'VM/RED-9944' into 'master'
RED-9944 - Action Items don't appear in document area in webviewer when...

Closes RED-9944

See merge request redactmanager/red-ui!670
2024-11-01 13:44:21 +01:00
Dan Percic
fb2fa6e6c2 Merge branch 'RED-10363' into 'master'
RED-10363: added a toaster error for locked dossier template rules.

See merge request redactmanager/red-ui!669
2024-11-01 10:21:57 +01:00
Nicoleta Panaghiu
dc253b0254 RED-10363: added a toaster error for locked dossier template rules. 2024-11-01 11:15:09 +02:00
Dan Percic
f3c1de430b Merge branch 'RED-10330' into 'master'
RED-10330: fixed remove in this context option permissions.

See merge request redactmanager/red-ui!668
2024-11-01 09:30:22 +01:00
Nicoleta Panaghiu
af5adade4d RED-10330: fixed remove in this context option permissions. 2024-11-01 10:24:53 +02:00
Dan Percic
d150fe6f80 Merge branch 'RED-10331' into 'master'
RED-10331: quick fix for jumping selection circle button.

See merge request redactmanager/red-ui!667
2024-11-01 07:57:00 +01:00
Nicoleta Panaghiu
ff132b2d87 RED-10331: quick fix for jumping selection circle button. 2024-11-01 08:42:20 +02:00
Valentin Mihai
90e8af9765 RED-9944 - Action Items don't appear in document area in webviewer when bulk-select is still unintenionally active 2024-10-31 19:55:26 +02:00
Valentin-Gabriel Mihai
ab27b6f63b Merge branch 'RED-10163' into 'master'
RED-10163: fix delete justification by using technical_name as id.

See merge request redactmanager/red-ui!666
2024-10-31 13:23:30 +01:00
Nicoleta Panaghiu
dcc711d4eb RED-10163: fix delete justification by using technical_name as id. 2024-10-31 14:02:52 +02:00
Valentin-Gabriel Mihai
95d57642c4 Merge branch 'RED-10258' into 'master'
Fix text not displayed in viewer?

See merge request redactmanager/red-ui!665
2024-10-31 11:35:27 +01:00
Dan Percic
7252119228 update watermarks webviewer 2024-10-31 11:54:06 +02:00
Dan Percic
0adf3288c8 upgrade pdf web viewer 2024-10-31 11:40:09 +02:00
Dan Percic
b30a6e159c update common-ui 2024-10-31 11:28:25 +02:00
Dan Percic
3c8a814abb update common-ui 2024-10-31 11:27:00 +02:00
Dan Percic
42093b81b2 other updates 2024-10-31 11:24:04 +02:00
Dan Percic
f11ffa18a1 ng updates 2024-10-31 11:17:49 +02:00
Dan Percic
8f541081ae Merge branch 'master' into release/4.839.x 2024-10-31 10:32:42 +02:00
Valentin-Gabriel Mihai
6a215c0440 Merge branch 'RED-10331' into 'master'
RED-10331: fixed missing remove-button from pdf-viewer on multi-select.

See merge request redactmanager/red-ui!664
2024-10-30 15:06:59 +01:00
Nicoleta Panaghiu
ada527370f RED-10331: fixed missing remove-button from pdf-viewer on multi-select. 2024-10-30 16:06:13 +02:00
Valentin-Gabriel Mihai
97f0230ac5 Merge branch 'RED-9663' into 'master'
RED-9663: removed UNASSIGNED option from the status filter.

See merge request redactmanager/red-ui!663
2024-10-30 15:03:06 +01:00
Nicoleta Panaghiu
1070d62e47 RED-9663: removed UNASSIGNED option from the status filter. 2024-10-30 15:26:51 +02:00
Dan Percic
ba3cb01f02 Merge branch 'VM/RED-10198' into 'master'
RED-10198 - missleading error message - creating user with existing email

Closes RED-10198

See merge request redactmanager/red-ui!662
2024-10-30 13:38:45 +01:00
Dan Percic
c52116f4e7 Merge branch 'VM/RED-10256' into 'master'
RED-10256 - Bulk-local: Changes should not be filtered + Remove for...

Closes RED-10256

See merge request redactmanager/red-ui!661
2024-10-30 13:38:06 +01:00
Valentin Mihai
c787881c76 RED-10198 - missleading error message - creating user with existing email 2024-10-30 14:36:06 +02:00
Valentin Mihai
fa7fd420a8 RED-10256 - Bulk-local: Changes should not be filtered + Remove for image-based redactions and hints 2024-10-30 14:22:50 +02:00
Dan Percic
12d30af308 Merge branch 'VM/RED-10048' into 'master'
RED-10048 - Improve display of error messages for csv files

Closes RED-10048

See merge request redactmanager/red-ui!660
2024-10-30 12:59:07 +01:00
Valentin Mihai
4695d31c72 RED-10048 - Improve display of error messages for csv files 2024-10-30 13:34:26 +02:00
Dan Percic
866e6ac45a Merge branch 'RED-10218' into 'master'
RED-10218: fixed fileNameColumn width overlap.

See merge request redactmanager/red-ui!659
2024-10-30 11:40:05 +01:00
Nicoleta Panaghiu
b1f8453daf RED-10218: fixed fileNameColumn width overlap. 2024-10-30 12:31:31 +02:00
Dan Percic
317d6d576b Merge branch 'annotation-id' into 'master'
Copy AnotationId to clipboard on ctrl + alt + click

See merge request redactmanager/red-ui!658
2024-10-30 11:00:28 +01:00
Kilian Schuettler
d66ea4e154 Copy AnotationId to clipboard on ctrl + alt + click 2024-10-30 09:19:12 +01:00
Valentin-Gabriel Mihai
bcfb915d93 Merge branch 'RED-10326' into 'master'
RED-10326: fix display of documents in trash on retention capacity chart.

See merge request redactmanager/red-ui!657
2024-10-29 15:40:13 +01:00
Nicoleta Panaghiu
e5c3d9c07b RED-10326: fix display of documents in trash on retention capacity chart. 2024-10-29 16:39:22 +02:00
Valentin-Gabriel Mihai
8a8c1b957f Merge branch 'RED-10320' into 'master'
RED-10320: removed general configuration header subtitle.

See merge request redactmanager/red-ui!656
2024-10-29 14:46:07 +01:00
Nicoleta Panaghiu
76b7ec9bc5 RED-10320: removed general configuration header subtitle. 2024-10-29 15:41:21 +02:00
Valentin-Gabriel Mihai
78fa17dc73 Merge branch 'RED-10275' into 'master'
RED-10275: differentiate available types by applyToAll flag state.

See merge request redactmanager/red-ui!655
2024-10-29 14:26:46 +01:00
Nicoleta Panaghiu
e678f6f4b3 RED-10275: differentiate available types by applyToAll flag state. 2024-10-29 15:23:33 +02:00
Valentin-Gabriel Mihai
2eb6d7b27c Merge branch 'RED-3800' into 'master'
RED-3800: localazy manual sync.

See merge request redactmanager/red-ui!654
2024-10-29 13:21:16 +01:00
Nicoleta Panaghiu
5805bb2a33 RED-3800: localazy manual sync. 2024-10-29 14:19:49 +02:00
Valentin-Gabriel Mihai
e92c7632d5 Merge branch 'RED-9733' into 'master'
RED-9733: translated initials in workload icons.

See merge request redactmanager/red-ui!653
2024-10-29 12:14:16 +01:00
Nicoleta Panaghiu
370b116656 RED-9733: translated initials in workload icons. 2024-10-29 13:11:33 +02:00
Valentin-Gabriel Mihai
35ebe4774f Merge branch 'RED-10244' into 'master'
RED-10244: fix dossier with files not having template field disabled.

See merge request redactmanager/red-ui!652
2024-10-28 17:23:05 +01:00
Nicoleta Panaghiu
8fab3fc04d RED-10244: fix dossier with files not having template field disabled. 2024-10-28 18:21:03 +02:00
Nicoleta Panaghiu
3dc63bf77c Merge branch 'VM/RED-7340' into 'master'
RED-7340 - Rectangle redactions: Use bulk-local redactions + New dialog design

Closes RED-7340

See merge request redactmanager/red-ui!651
2024-10-28 16:49:12 +01:00
Valentin Mihai
305bde5561 RED-7340 - Rectangle redactions: Use bulk-local redactions + New dialog design 2024-10-28 17:47:37 +02:00
Valentin-Gabriel Mihai
048356bf3f Merge branch 'RED-3800' into 'master'
RED-3800: localazy manual sync.

See merge request redactmanager/red-ui!650
2024-10-28 16:45:18 +01:00
Nicoleta Panaghiu
b389b07a6e RED-3800: localazy manual sync. 2024-10-28 17:38:35 +02:00
Nicoleta Panaghiu
7f72ef0021 Merge branch 'VM/RED-10256' into 'master'
RED-10256 - Bulk-local: Changes should not be filtered + Remove for image-based redactions

Closes RED-10256

See merge request redactmanager/red-ui!648
2024-10-28 16:33:36 +01:00
Nicoleta Panaghiu
395c9b0cd3 Merge branch 'RED-10262' into 'master'
RED-10262: fixed cancel resize.

See merge request redactmanager/red-ui!649
2024-10-28 16:27:58 +01:00
Nicoleta Panaghiu
7e44bdf1e2 RED-10262: fixed cancel resize. 2024-10-28 17:25:09 +02:00
Valentin Mihai
9e0ec97845 RED-10256 - Bulk-local: Changes should not be filtered + Remove for image-based redactions 2024-10-28 17:22:54 +02:00
Nicoleta Panaghiu
0259bcee06 Merge branch 'VM/RED-9944' into 'master'
RED-9944 - Action Items don't appear in document area in webviewer when...

Closes RED-9944

See merge request redactmanager/red-ui!647
2024-10-28 16:01:14 +01:00
Valentin Mihai
64e7cce171 RED-9944 - Action Items don't appear in document area in webviewer when bulk-select is still unintenionally active 2024-10-28 16:55:24 +02:00
Nicoleta Panaghiu
4e39914cff Merge branch 'VM/RED-10256' into 'master'
RED-10256 - Bulk-local: Changes should not be filtered + Remove for image-based redactions

Closes RED-10256

See merge request redactmanager/red-ui!646
2024-10-28 12:52:52 +01:00
Valentin Mihai
5347f986e4 Merge branch 'master' into VM/RED-10256 2024-10-28 13:52:11 +02:00
Valentin Mihai
7dd24698b1 WIP on VM/RED-10256
RED-10256 - Bulk-local: Changes should not be filtered + Remove for image-based redactions
2024-10-28 13:47:29 +02:00
Adina Teudan
a8534a8b13 Merge branch 'RED-10264' into 'master'
RED-10264: remove includeUnprocessed from all manual change calls

Closes RED-10264

See merge request redactmanager/red-ui!645
2024-10-28 12:38:44 +01:00
Dan Percic
d15cedd6d1 Merge branch 'RED-3800' into 'master'
RED-3800: manual localazy sync.

See merge request redactmanager/red-ui!643
2024-10-25 13:54:47 +02:00
Kilian Schuettler
51e46f20f4 RED-10264: remove includeUnprocessed from all manual change calls 2024-10-25 13:50:27 +02:00
Nicoleta Panaghiu
3a5a91f1e1 RED-3800: manual localazy sync. 2024-10-25 14:34:26 +03:00
Dan Percic
7e910b9339 Merge branch 'RED-9447' into 'master'
RED-9447 && RED-10244

See merge request redactmanager/red-ui!631
2024-10-25 12:31:51 +02:00
Maverick Studer
0fbf580293 RED-9447 && RED-10244 2024-10-25 12:31:51 +02:00
Dan Percic
d8b20774f4 Merge branch 'VM/RED-7340' into 'master'
RED-7340 - Rectangle redactions: Use bulk-local redactions + New dialog design

Closes RED-7340

See merge request redactmanager/red-ui!642
2024-10-24 10:01:12 +02:00
Dan Percic
63af59e624 Merge branch 'feature/RED-10260' into 'master'
feature/RED-10260: add quoteChar to componentMapping

Closes RED-10260

See merge request redactmanager/red-ui!640
2024-10-24 09:59:22 +02:00
Kilian Schüttler
61e9df1844 feature/RED-10260: add quoteChar to componentMapping 2024-10-24 09:59:21 +02:00
Valentin Mihai
a2823df27e RED-7340 - Rectangle redactions: Use bulk-local redactions + New dialog design 2024-10-23 23:47:20 +03:00
Dan Percic
7557025b01 Merge branch 'RED-8277' into 'master'
RED-8277: update common ui.

See merge request redactmanager/red-ui!639
2024-10-23 15:31:33 +02:00
Nicoleta Panaghiu
96662844b2 RED-8277: update common ui. 2024-10-23 16:10:01 +03:00
Dan Percic
16e7cdaa1f Merge branch 'RED-10255' into 'master'
RED-10255: fixed force ignored hint action.

See merge request redactmanager/red-ui!637
2024-10-22 18:19:53 +02:00
Nicoleta Panaghiu
feffcd5cdc RED-10255: fixed force ignored hint action. 2024-10-22 19:19:01 +03:00
Dan Percic
89d26778f2 Merge branch 'RED-10227' into 'master'
RED-10227: fixed audit log date filters.

See merge request redactmanager/red-ui!636
2024-10-22 18:01:22 +02:00
Nicoleta Panaghiu
b7ea2ac415 RED-10227: fixed audit log date filters. 2024-10-22 19:00:17 +03:00
Dan Percic
bb1f86c9d2 Merge branch 'RED-8277' into 'master'
RED-8277: update common ui.

See merge request redactmanager/red-ui!635
2024-10-22 16:58:59 +02:00
Nicoleta Panaghiu
cc972db41d RED-8277: update common ui. 2024-10-22 17:56:57 +03:00
Dan Percic
d9ce51f7e3 Merge branch 'RED-10220' into 'master'
RED-10220: description and legalBasis fields are no longer required.

See merge request redactmanager/red-ui!634
2024-10-22 16:46:47 +02:00
Nicoleta Panaghiu
5dd75f836c RED-10220: description and legalBasis fields are no longer required. 2024-10-22 17:40:37 +03:00
Dan Percic
b45627b4a7 Merge branch 'VM/RED-7340' into 'master'
RED-7340 - red border around the page input field should only appear after the...

Closes RED-7340

See merge request redactmanager/red-ui!633
2024-10-22 16:27:28 +02:00
Dan Percic
404e783060 Merge branch 'VM/RED-9944' into 'master'
RED-9944 - Action Items don't appear in document area in webviewer when bulk-select is still unintenionally active

Closes RED-9944

See merge request redactmanager/red-ui!632
2024-10-22 16:27:09 +02:00
Valentin Mihai
3515b9a942 RED-7340 - red border around the page input field should only appear after the user has finished entering the page range 2024-10-22 17:20:37 +03:00
Valentin Mihai
b244d1e4b4 WIP on master
RED-9944 - Action Items don't appear in document area in webviewer when bulk-select is still unintenionally active
2024-10-22 16:33:40 +03:00
Dan Percic
c4729167cd Merge branch 'RED-10220' into 'master'
RED-10220: added support for justification technical name.

See merge request redactmanager/red-ui!630
2024-10-22 11:46:41 +02:00
Nicoleta Panaghiu
a7b652c137 RED-10220: added support for justification technical name. 2024-10-22 12:45:34 +03:00
Dan Percic
d396b782a7 Merge branch 'VM/RED-7340' into 'master'
RED-7340 - When a user has entered an invalid page range string, display a...

Closes RED-7340

See merge request redactmanager/red-ui!629
2024-10-21 17:14:40 +02:00
Valentin Mihai
965166a349 RED-7340 - When a user has entered an invalid page range string, display a read border around the input field 2024-10-21 18:06:01 +03:00
Valentin-Gabriel Mihai
733f811f9d Merge branch 'RED-3800' into 'master'
RED-3800: manual localazy sync.

See merge request redactmanager/red-ui!628
2024-10-18 16:34:33 +02:00
Nicoleta Panaghiu
7e42932028 RED-3800: manual localazy sync. 2024-10-18 17:23:12 +03:00
Nicoleta Panaghiu
cdc58066f6 Merge branch 'VM/RED-9944' into 'master'
RED-9944 - Action Items don't appear in document area in webviewer when...

Closes RED-9944

See merge request redactmanager/red-ui!627
2024-10-18 13:34:17 +02:00
Valentin Mihai
224dafcae6 RED-9944 - Action Items don't appear in document area in webviewer when bulk-select is still unintenionally active 2024-10-18 14:32:06 +03:00
Dan Percic
bb3f59f1bb 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!626
2024-10-17 14:01:31 +02:00
Valentin Mihai
876127d1fb RED-9585 - Incorrect capitalization in German translation + missing singular/plural distinction 2024-10-17 14:45:27 +03:00
Dan Percic
f27807097d Merge branch 'RED-8277' into 'master'
RED-8277: fix redirect when intending to open primary file attribute.

See merge request redactmanager/red-ui!625
2024-10-17 11:03:50 +02:00
Nicoleta Panaghiu
68bfcf6700 RED-8277: fix redirect when intending to open primary file attribute. 2024-10-17 12:02:23 +03:00
Nicoleta Panaghiu
829e009d4c Merge branch 'RED-3800' into 'master'
Localazy manual sync

Closes RED-3800

See merge request redactmanager/red-ui!624
2024-10-16 22:14:30 +02:00
Adina Țeudan
6dbe365362 Localazy manual sync 2024-10-16 21:37:30 +03:00
Dan Percic
db1d65e601 Merge branch 'VM/RED-9944' into 'master'
RED-9944 - cancel the bulk-selection mode when a user clicks somewhere else

Closes RED-9944

See merge request redactmanager/red-ui!623
2024-10-16 17:12:00 +02:00
Valentin Mihai
767e688d3c RED-9944 - cancel the bulk-selection mode when a user clicks somewhere else 2024-10-16 17:40:45 +03:00
Dan Percic
e647d4b355 Merge branch 'RED-8277' into 'master'
RED-8277: made it possible to open dossiers and files in a new tab.

See merge request redactmanager/red-ui!622
2024-10-16 14:30:31 +02:00
Nicoleta Panaghiu
b85559c686 RED-8277: made it possible to open dossiers and files in a new tab. 2024-10-16 15:27:33 +03:00
Dan Percic
6f353ce01d Merge branch 'VM/RED-7340' into 'master'
RED-7340 - prefill the range fields in the edit and remove dialogs

Closes RED-7340

See merge request redactmanager/red-ui!621
2024-10-16 13:37:26 +02:00
Valentin Mihai
5dfea0175d WIP on master
RED-7340 - prefill the range fields in the edit and remove dialogs
2024-10-16 14:35:48 +03:00
Dan Percic
b4c0ce17de Merge branch 'RED-10180' into 'master'
RED-10180: sync localazy translation.

See merge request redactmanager/red-ui!620
2024-10-16 13:13:40 +02:00
Dan Percic
c805887bbd Merge branch 'RED-10190' into 'master'
RED-10190: fixed notification padding.

See merge request redactmanager/red-ui!619
2024-10-16 13:13:23 +02:00
Nicoleta Panaghiu
d4b419ded8 RED-10180: sync localazy translation. 2024-10-16 14:09:58 +03:00
Nicoleta Panaghiu
a5e70e9def RED-10190: fixed notification padding. 2024-10-16 13:56:43 +03:00
Dan Percic
d06cd4be54 Merge branch 'VM/RED-7340' into 'master'
RED-7340 - Rectangle redactions: Use bulk-local redactions + New dialog design

Closes RED-7340

See merge request redactmanager/red-ui!618
2024-10-16 11:51:45 +02:00
Valentin Mihai
20d0334489 RED-7340 - Rectangle redactions: Use bulk-local redactions + New dialog design 2024-10-16 11:56:00 +03:00
Dan Percic
5438e800c7 Merge branch 'VM/RED-7340' into 'master'
RED-7340 - Rectangle redactions: Use bulk-local redactions + New dialog design

Closes RED-7340

See merge request redactmanager/red-ui!617
2024-10-15 16:20:01 +02:00
Valentin Mihai
4593b09bf3 RED-7340 - Rectangle redactions: Use bulk-local redactions + New dialog design 2024-10-15 15:43:13 +03:00
Dan Percic
33ed133f9f Merge branch 'RED-10180' into 'master'
RED-10180: update common ui + remove unused import.

See merge request redactmanager/red-ui!616
2024-10-14 16:27:05 +02:00
Nicoleta Panaghiu
fe2214d12c RED-10180: update common ui + remove unused import. 2024-10-14 17:26:09 +03:00
Dan Percic
2e41ac041e Merge branch 'RED-10190' into 'master'
RED-10190: fixed notifications redirect links.

See merge request redactmanager/red-ui!615
2024-10-14 16:11:22 +02:00
Dan Percic
98c3f749d8 Merge branch 'feature/RED-10072' into 'master'
RED-10072: AI description field and toggle for entities

Closes RED-10072

See merge request redactmanager/red-ui!614
2024-10-14 16:05:50 +02:00
Nicoleta Panaghiu
851b9fb3b2 RED-10190: fixed notifications redirect links. 2024-10-14 17:04:27 +03:00
Dan Percic
6aea290693 Merge branch 'RED-10182' into 'master'
RED-10182: fixed scrolling to annotation in workload upon selection.

See merge request redactmanager/red-ui!613
2024-10-14 15:58:07 +02:00
Nicoleta Panaghiu
ace0ecfce1 RED-10182: fixed scrolling to annotation in workload upon selection. 2024-10-14 16:34:00 +03:00
Dan Percic
a8c4f6dd29 Merge branch 'RED-10179' into 'master'
RED-10179 & RED-10177: fixed translations.

See merge request redactmanager/red-ui!612
2024-10-14 15:09:45 +02:00
Nicoleta Panaghiu
3818741453 RED-10179 & RED-10177: fixed translations. 2024-10-14 16:07:55 +03:00
Dan Percic
da3c18fde2 Merge branch 'RED-10132' into 'master'
RED-10132: save comment value for bulkLocal as well.

See merge request redactmanager/red-ui!611
2024-10-14 13:17:59 +02:00
Dan Percic
9836c2aab5 Merge branch 'RED-10183' into 'master'
RED-10183: use the user preferred language + component refactoring.

See merge request redactmanager/red-ui!610
2024-10-14 13:14:42 +02:00
maverickstuder
46202a0b64 RED-10072: AI description field and toggle for entities 2024-10-14 12:30:14 +02:00
Nicoleta Panaghiu
16a8d91815 RED-10132: save comment value for bulkLocal as well. 2024-10-14 13:21:49 +03:00
Nicoleta Panaghiu
6f5cd79a7f RED-10183: use the user preferred language + component refactoring. 2024-10-14 13:10:23 +03:00
Dan Percic
bf7fab3600 Merge branch 'RED-10011' into 'master'
RED-10011: Fixed broken menu after accessing configuration

Closes RED-10011

See merge request redactmanager/red-ui!609
2024-10-11 12:09:51 +02:00
Dominique Eifländer
d4653ca983 RED-10011: Fixed broken menu after accessing configuration 2024-10-11 11:22:24 +02:00
Nicoleta Panaghiu
c9444d7747 Merge branch 'VM/RED-9944' into 'master'
RED-9944 - Action Items don't appear in document area in webviewer when...

Closes RED-9944

See merge request redactmanager/red-ui!608
2024-10-10 15:54:43 +02:00
Valentin Mihai
287b95a538 RED-9944 - Action Items don't appear in document area in webviewer when bulk-select is still unintenionally active 2024-10-10 16:48:06 +03:00
Dan Percic
686f390b1a Merge branch 'RED-9381' into 'master'
RED-9381: added back the watermark pagination translations.

See merge request redactmanager/red-ui!607
2024-10-10 14:01:01 +02:00
Nicoleta Panaghiu
46fba3ca5a RED-9381: added back the watermark pagination translations. 2024-10-10 14:53:22 +03:00
Dan Percic
7d2f07d6b0 Merge branch 'RED-10105' into 'master'
RED-10105: added ids on dossier state related buttons.

See merge request redactmanager/red-ui!606
2024-10-10 11:57:20 +02:00
Nicoleta Panaghiu
6f9d2a7c85 RED-10105: added ids on dossier state related buttons. 2024-10-10 12:49:56 +03:00
Dan Percic
59998396d4 Merge branch 'RED-9554' into 'master'
RED-9554: use backend error message for dossier attributes.

See merge request redactmanager/red-ui!605
2024-10-09 18:07:45 +02:00
Nicoleta Panaghiu
60e151db0f RED-9554: use backend error message for dossier attributes. 2024-10-09 18:20:11 +03:00
Dan Percic
211d81ab7a Merge branch 'RED-9381' into 'master'
RED-9381: recovered translations for pdf viewer and annotation content.

See merge request redactmanager/red-ui!604
2024-10-09 16:58:41 +02:00
Nicoleta Panaghiu
eb255daac2 RED-9381: recovered translations for pdf viewer and annotation content. 2024-10-09 17:57:40 +03:00
Dan Percic
032b1eeabe Merge branch 'RED-10144' into 'master'
RED-10144: fixed multi-selection randomly activating.

See merge request redactmanager/red-ui!603
2024-10-09 16:31:04 +02:00
Nicoleta Panaghiu
4526138fae RED-10144: fixed multi-selection randomly activating. 2024-10-09 16:54:38 +03:00
Adina Teudan
428f1dd5fb Merge branch 'RED-10128' into 'master'
RED-10128: Incorrect File Extension for Downloaded (Multi-file) Reports

Closes RED-10128

See merge request redactmanager/red-ui!601
2024-10-08 16:55:48 +02:00
Nicoleta Panaghiu
4f4f286a5e Merge branch 'VM/RED-7340' into 'master'
RED-7340 - Rectangle redactions: Use bulk-local redactions + New dialog design

Closes RED-7340

See merge request redactmanager/red-ui!602
2024-10-08 14:26:04 +02:00
maverickstuder
05799650e6 RED-10128: Incorrect File Extension for Downloaded (Multi-file) Reports 2024-10-08 14:05:15 +02:00
Valentin Mihai
d67bef3001 Merge branch 'master' into VM/RED-7340 2024-10-08 00:52:34 +03:00
Valentin Mihai
76d329b888 RED-7340 - Rectangle redactions: Use bulk-local redactions + New dialog design 2024-10-08 00:51:21 +03:00
Adina Teudan
0329e74bbd Merge branch 'RED-10034' into 'master'
Resolve RED-10034

Closes RED-10034

See merge request redactmanager/red-ui!600
2024-10-07 18:35:16 +02:00
Adina Țeudan
9fabb7223a RED-10034: More performance improvements 2024-10-07 19:10:33 +03:00
Adina Țeudan
671c44438d RED-10034: File workload improvementes - WIP 2024-10-07 16:23:08 +03:00
Valentin Mihai
2377fbff55 RED-7340 - removed dictionary & false positive logic from rectangle annotation dialog 2024-10-05 22:55:28 +03:00
Valentin Mihai
af17c026ff Merge branch 'master' into VM/RED-7340 2024-10-05 20:51:23 +03:00
Valentin Mihai
7a1e968a52 RED-7340 - converted ManualAnnotationDialog into RectangleAnnotationDialog 2024-10-05 20:50:40 +03:00
Dan Percic
8e9f6e19bf Merge branch 'RED-3800' into 'master'
RED-3800: Localazy manual sync

Closes RED-3800

See merge request redactmanager/red-ui!599
2024-10-03 13:53:15 +02:00
Adina Țeudan
bef117a22c RED-3800: Localazy manual sync 2024-10-03 14:50:58 +03:00
Dan Percic
d4a50efc38 Merge branch 'RED-9559' into 'master'
RED-9559: dashboard skeleton, empty state and stats have the same width.

See merge request redactmanager/red-ui!598
2024-10-03 13:46:04 +02:00
Nicoleta Panaghiu
6693933941 RED-9559: dashboard skeleton, empty state and stats have the same width. 2024-10-03 14:33:09 +03:00
Dan Percic
b627b181e3 Merge branch 'RED-9578' into 'master'
RED-9578: fixed styles.

See merge request redactmanager/red-ui!597
2024-10-02 13:36:20 +02:00
Nicoleta Panaghiu
fcf159d091 RED-9578: fixed styles. 2024-10-02 14:32:57 +03:00
Dan Percic
aa9de3c369 Merge branch 'RED-9578' into 'master'
RED-9578: filter files without warnings.

See merge request redactmanager/red-ui!595
2024-09-30 13:11:32 +02:00
Nicoleta Panaghiu
b989da3f05 RED-9578: filter files without warnings. 2024-09-30 14:10:10 +03:00
Dan Percic
cdf39fd838 Merge branch 'RED-9722' into 'master'
RED-9722: split bulk remove-from-dict request into batches.

See merge request redactmanager/red-ui!594
2024-09-30 12:42:25 +02:00
Nicoleta Panaghiu
c3fbb9100a RED-9722: split bulk remove-from-dict request into batches. 2024-09-30 13:29:00 +03:00
Timo Bejan
fbc7dfce60 Merge branch 'RED-10034' into 'master'
RED-10034: Removed unnecessary draw call?

Closes RED-10034

See merge request redactmanager/red-ui!593
2024-09-28 16:13:35 +02:00
Adina Țeudan
bde8bd8475 Merge remote-tracking branch 'origin/master' into RED-10034 2024-09-28 17:10:10 +03:00
Adina Țeudan
c713b9d2f4 RED-10034: Improved UI components, reduced function calls 2024-09-28 17:06:43 +03:00
Dan Percic
25a0848c3e Merge branch 'RED-9381' into 'master'
Resolve RED-9381

Closes RED-9381

See merge request redactmanager/red-ui!592
2024-09-28 11:11:11 +02:00
Adina Țeudan
ccd008666e RED-10034: Removed unnecessary draw call? 2024-09-27 17:08:11 +03:00
Valentin Mihai
40d9eb15cf Merge branch 'master' into VM/RED-7340 2024-09-27 17:00:59 +03:00
Valentin Mihai
fad870e83e RED-7340 - WIP on Rectangle redactions: Use bulk-local redactions + New dialog design 2024-09-27 16:43:01 +03:00
Nicoleta Panaghiu
0f494b10d0 RED-9381: translations for annotation content tooltip. 2024-09-27 15:40:21 +03:00
Nicoleta Panaghiu
b2091d4f83 Merge remote-tracking branch 'origin/master' into RED-9381 2024-09-27 15:26:00 +03:00
Dan Percic
7b9c0d85cd Merge branch 'RED-9757' into 'master'
Resolve RED-9757

Closes RED-9757

See merge request redactmanager/red-ui!591
2024-09-27 12:35:24 +02:00
Adina Țeudan
5662cccc98 RED-9757: Updated translations 2024-09-26 21:23:28 +03:00
Adina Țeudan
2b6001402a RED-9757: Check for changes in dossier dictionary 2024-09-26 21:22:26 +03:00
Adina Țeudan
8d9df1f397 RED-9757: Fixed button display 2024-09-26 15:14:03 +03:00
Adina Țeudan
aa30982ff1 RED-9757: Show type switch for hints too 2024-09-26 15:11:44 +03:00
Adina Țeudan
c5f072f6b6 RED-9757: Working find panel toggle 2024-09-26 15:11:00 +03:00
Nicoleta Panaghiu
fb8e66e32d RED-9381: translations for pdf-viewer elements and watermarks editor. 2024-09-26 14:42:29 +03:00
Dan Percic
d457f9a46f Merge branch 'RED-7346' into 'master'
RED-7346: bulk-local edit redactions

Closes RED-7346

See merge request redactmanager/red-ui!590
2024-09-26 13:35:30 +02:00
Adina Țeudan
6bbe992940 RED-7346: bulk-local edit redactions 2024-09-26 14:31:11 +03:00
Valentin-Gabriel Mihai
1cb658f9d1 Merge branch 'RED-10064' into 'master'
RED-10064: added id on report container for hover + component refactor.

See merge request redactmanager/red-ui!589
2024-09-26 13:21:13 +02:00
Nicoleta Panaghiu
b3de35eac7 RED-10064: added id on report container for hover + component refactor. 2024-09-26 14:00:06 +03:00
Dan Percic
5bb7c780a1 Merge branch 'RED-9985' into 'master'
RED-9985: prevent filter categories from collapsing upon selection.

See merge request redactmanager/red-ui!588
2024-09-26 11:19:53 +02:00
Nicoleta Panaghiu
5c5d1dc877 RED-9985: prevent filter categories from collapsing upon selection. 2024-09-26 11:52:21 +03:00
Nicoleta Panaghiu
8ab324f69e Merge branch 'VM/RED-7345' into 'master'
RED-7345 - added translation for value

Closes RED-7345

See merge request redactmanager/red-ui!587
2024-09-25 15:17:40 +02:00
Valentin Mihai
e30a54297a RED-7345 - added translation for value 2024-09-25 16:14:00 +03:00
Dan Percic
c4fc832ef6 Merge branch 'RED-9486' into 'master'
RED-9486: fixed naming of images in remove dialog.

See merge request redactmanager/red-ui!586
2024-09-25 13:57:49 +02:00
Nicoleta Panaghiu
750312c59e RED-9486: fixed naming of images in remove dialog. 2024-09-25 14:54:14 +03:00
Dan Percic
e8665f7484 Merge branch 'RED-9578' into 'master'
RED-9578: fixed issues and rewrote the annotations table component.

See merge request redactmanager/red-ui!585
2024-09-25 12:56:21 +02:00
Nicoleta Panaghiu
81669177cd RED-9578: fixed issues and rewrote the annotations table component. 2024-09-25 13:54:26 +03:00
Dan Percic
dc063218ff Merge branch 'RED-10011' into 'master'
RED-10011: Show stmp configuration only if license feature configurableSMTPServer is set to true

Closes RED-10011

See merge request redactmanager/red-ui!584
2024-09-24 10:56:34 +02:00
Dominique Eifländer
004025636c RED-10011: Show stmp configuration only if license feature configurableSMTPServer is set to true 2024-09-24 10:52:20 +02:00
Dan Percic
5a2e806e4a Merge branch 'VM/RED-7345' into 'master'
RED-7345 - Add/Remove bulk-local text redaction option in dialogs

Closes RED-7345

See merge request redactmanager/red-ui!583
2024-09-24 08:48:32 +02:00
Valentin Mihai
b918933665 RED-7345 - Add/Remove bulk-local text redaction option in dialogs 2024-09-24 09:47:07 +03:00
Nicoleta Panaghiu
e39e2522aa Merge branch 'VM/RED-7345' into 'master'
VM/RED-7345 - Add/Remove bulk-local text redaction option in dialogs

Closes RED-7345

See merge request redactmanager/red-ui!582
2024-09-23 16:32:56 +02:00
Valentin Mihai
8caa92d663 Merge branch 'master' into VM/RED-7345 2024-09-23 17:24:03 +03:00
Valentin Mihai
0be67a8589 RED-7345 - added bulk local remove logic for "remove redaction" dialog 2024-09-23 17:23:15 +03:00
Dominique Eifländer
d0250f3fd0 Merge branch 'RED-10084' into 'master'
RED-10084: All members of a dossier are able to reanalyse files in error...

Closes RED-10084

See merge request redactmanager/red-ui!575
2024-09-23 15:47:29 +02:00
Valentin-Gabriel Mihai
a11bb2282f Merge branch 'RED-9822' into 'master'
RED-9822: DocuMine translations

Closes RED-9822

See merge request redactmanager/red-ui!581
2024-09-23 15:05:40 +02:00
Adina Țeudan
664410821c RED-9822: DocuMine translations 2024-09-23 16:04:53 +03:00
Valentin-Gabriel Mihai
a2a0defa23 Merge branch 'RED-9993' into 'master'
RED-9993: fixed license labels.

See merge request redactmanager/red-ui!580
2024-09-23 14:59:22 +02:00
Nicoleta Panaghiu
c6595c6481 RED-9993: fixed license labels. 2024-09-23 15:56:31 +03:00
Valentin-Gabriel Mihai
cbedb8370b Merge branch 'RED-9840' into 'master'
RED-9840: Allow to open global search results in a new browser tab

Closes RED-9840

See merge request redactmanager/red-ui!579
2024-09-23 14:53:11 +02:00
Adina Țeudan
b92d9c9e04 RED-9840: Allow to open global search results in a new browser tab 2024-09-23 15:52:20 +03:00
Valentin-Gabriel Mihai
bd054ecedd Merge branch 'RED-9757' into 'master'
Revision of the dossier dictionary presentation

Closes RED-9757

See merge request redactmanager/red-ui!576
2024-09-23 14:45:37 +02:00
Valentin-Gabriel Mihai
9dfa101afe Merge branch 'RED-9170' into 'master'
Use new transactional endpoint for updating dictionaries

Closes RED-9170

See merge request redactmanager/red-ui!578
2024-09-23 14:45:26 +02:00
Valentin Mihai
f52a378280 WIP on VM/RED-7345
RED-7345 - adapted "force redaction" and "accept recommendation" dialogs to use new bulk-local api
2024-09-23 14:45:54 +03:00
Adina Țeudan
bda96f952e Use new transactional endpoint for updating dictionaries 2024-09-23 14:12:29 +03:00
Valentin-Gabriel Mihai
79fb9bd785 Merge branch 'RED-9830' into 'master'
RED-9830: Don't send additional comment request for annotation edit

Closes RED-9830

See merge request redactmanager/red-ui!577
2024-09-23 12:26:04 +02:00
Adina Țeudan
5de6b359ee Revision of the dossier dictionary presentation 2024-09-23 13:18:05 +03:00
Dominique Eifländer
b5f1afb81e RED-10084: All members of a dossier are able to reanalyse files in error state, no only the owner or assignee 2024-09-23 11:53:26 +02:00
Christoph Schabert
63e53cb2ed Update .gitlab-ci.yml file 2024-09-23 11:31:08 +02:00
Christoph Schabert
7f08355311 Update .gitlab-ci.yml file 2024-09-23 11:25:36 +02:00
Valentin-Gabriel Mihai
76403ef8ea Merge branch 'RED-10028' into 'master'
RED-10028: added OPTIMIZED_PREVIEW file type in download selection.

See merge request redactmanager/red-ui!574
2024-09-23 11:25:01 +02:00
Christoph Schabert
12768b5219 Update .gitlab-ci.yml file 2024-09-23 11:22:16 +02:00
Christoph Schabert
aa2012bbda Update .gitlab-ci.yml file 2024-09-23 11:19:06 +02:00
Nicoleta Panaghiu
179abe4f37 RED-10028: added OPTIMIZED_PREVIEW file type in download selection. 2024-09-23 11:58:39 +03:00
Adina Țeudan
43154346e3 RED-9830: Don't send additional comment request for annotation edit 2024-09-23 11:54:00 +03:00
Valentin Mihai
1b9128a68f Merge branch 'master' into VM/RED-7345 2024-09-23 11:12:25 +03:00
Valentin Mihai
b5b465d56f RED-7345 - update common ui 2024-09-23 11:11:02 +03:00
Dan Percic
94cbb2cf3d Merge branch 'RED-9900' into 'master'
RED-9900: removed help mode helper elements from hidden buttons.

See merge request redactmanager/red-ui!573
2024-09-19 16:59:11 +02:00
Dan Percic
a51e68c3d8 Merge branch 'RED-9578' into 'master'
RED-9578: implemented the new approval modal layout.

See merge request redactmanager/red-ui!572
2024-09-19 16:58:56 +02:00
Nicoleta Panaghiu
7208126584 RED-9900: removed help mode helper elements from hidden buttons. 2024-09-19 17:36:15 +03:00
Nicoleta Panaghiu
256305d12f RED-9578: implemented the new approval modal layout. 2024-09-19 15:03:32 +03:00
Dan Percic
7996bc7e23 Merge branch 'RED-10050' into 'master'
RED-10050: fixed navigating to doc with filtered annotations issue.

See merge request redactmanager/red-ui!571
2024-09-18 13:06:24 +02:00
Nicoleta Panaghiu
e86a7cf59f RED-10050: fixed navigating to doc with filtered annotations issue. 2024-09-18 13:57:54 +03:00
Dan Percic
6abcbc96ac Merge branch 'RED-10064' into 'master'
RED-10064: added ids for report documents.

See merge request redactmanager/red-ui!570
2024-09-17 16:39:41 +02:00
Nicoleta Panaghiu
b23c3e60d7 RED-10064: added ids for report documents. 2024-09-17 17:38:35 +03:00
Valentin Mihai
2f6d460442 RED-7345 - WIP Add/Remove bulk-local text redaction option in dialogs 2024-09-16 21:16:06 +03:00
Dan Percic
3cd1eaeddc Merge branch 'RED-9993' into 'master'
RED-9993: fixed license information.

See merge request redactmanager/red-ui!569
2024-09-13 10:04:40 +02:00
Nicoleta Panaghiu
feb3aa34e9 RED-9993: fixed license information. 2024-09-13 10:58:25 +03:00
Dan Percic
7f8c622f6b Merge branch 'RED-9372' into 'master'
Resolve RED-9372

Closes RED-9372

See merge request redactmanager/red-ui!568
2024-09-10 10:45:56 +02:00
Nicoleta Panaghiu
6628cf3495 RED-9372: update common ui. 2024-09-10 11:38:23 +03:00
Nicoleta Panaghiu
e6f3cd77de RED-9372: fixed scrolling on dossier details. 2024-09-10 11:36:29 +03:00
Dan Percic
8705524a4b Merge branch 'VM/RED-10016' into 'master'
RED-10016 - DM: Permanent loading triggerd when trying to edit the component

Closes RED-10016

See merge request redactmanager/red-ui!567
2024-09-10 09:12:54 +02:00
Valentin Mihai
4475f5979e RED-10016 - DM: Permanent loading triggerd when trying to edit the component 2024-09-10 09:45:35 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
93321437c1 push back localazy update 2024-09-10 01:03:26 +00:00
Dan Percic
0bf7f5f9ce Merge branch 'RED-9372' into 'master'
Resolve RED-9372

Closes RED-9372

See merge request redactmanager/red-ui!566
2024-09-05 16:19:56 +02:00
Nicoleta Panaghiu
ef8b1bc58e RED-9372: update common ui. 2024-09-05 17:17:49 +03:00
Nicoleta Panaghiu
8f938c825d RED-9372: fixed annotation details moving on hover. 2024-09-05 17:17:32 +03:00
Dan Percic
766ba97a0e Merge branch 'RED-9950' into 'master'
RED-9950: increased component management section width by 5%.

See merge request redactmanager/red-ui!565
2024-09-05 14:06:50 +02:00
Nicoleta Panaghiu
24c433dd5b RED-9950: increased component management section width by 5%. 2024-09-05 14:58:44 +03:00
Valentin-Gabriel Mihai
570dc20e8e Merge branch 'VM/RED-9548' into 'master'
RED-9548 - updated isModifyDictionary check

Closes RED-9548

See merge request redactmanager/red-ui!564
2024-09-05 13:25:24 +02:00
Valentin Mihai
34be5155c4 RED-9548 - updated isModifyDictionary check 2024-09-05 14:23:41 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
e752e4607c push back localazy update 2024-09-05 01:03:30 +00:00
Dan Percic
9e5ab63434 Merge branch 'VM/RED-9962' into 'master'
RED-9962 - RM-163: Components values are not updated in the UI until page is refreshed

Closes RED-9962

See merge request redactmanager/red-ui!563
2024-09-04 14:55:22 +02:00
Valentin Mihai
66cd961fc3 WIP on master
RED-9962 - RM-163: Components values are not updated in the UI until page is refreshed
2024-09-04 15:49:41 +03:00
Dan Percic
6216dd8bac Merge branch 'RED-9950' into 'master'
RED-9950: decreased component management width.

See merge request redactmanager/red-ui!562
2024-09-04 14:32:42 +02:00
Nicoleta Panaghiu
3677b7d761 RED-9950: decreased component management width. 2024-09-04 14:39:44 +03:00
Dan Percic
eae53022ee Merge branch 'RED-9937' into 'master'
RED-9937: made preview tab available & trigger reanalysis when required.

See merge request redactmanager/red-ui!561
2024-09-04 12:39:59 +02:00
Nicoleta Panaghiu
24e793582d RED-9937: made preview tab available & trigger reanalysis when required. 2024-09-04 13:29:36 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
01b8948b6a push back localazy update 2024-09-04 01:03:33 +00:00
Dan Percic
1b3dbfc98d Merge branch 'RED-9987' into 'master'
RED-9987: added sendSetPasswordMail flag in add user dialog.

See merge request redactmanager/red-ui!560
2024-09-03 13:44:04 +02:00
Nicoleta Panaghiu
a2930ccfdd RED-9987: added sendSetPasswordMail flag in add user dialog. 2024-09-03 14:42:59 +03:00
Dan Percic
201f4ca07f Merge branch 'VM/RED-9454' into 'master'
RED-9454 - Differences between Add Hint- and Add Redaction-Dialog

Closes RED-9454

See merge request redactmanager/red-ui!559
2024-09-03 13:06:11 +02:00
Valentin Mihai
e81e8e7252 RED-9454 - Differences between Add Hint- and Add Redaction-Dialog 2024-09-03 13:34:48 +03:00
Dan Percic
9d01fb5784 Merge branch 'RED-9950' into 'master'
RED-9950: removed more margins.

See merge request redactmanager/red-ui!558
2024-09-03 11:26:42 +02:00
Nicoleta Panaghiu
9921e868bc RED-9950: removed more margins. 2024-09-03 12:24:44 +03:00
Dan Percic
9dd6085bcf Merge branch 'master' into release/4.839.x 2024-09-02 16:48:59 +03:00
Dan Percic
2d1928ebd0 Merge branch 'RED-9950' into 'master'
RED-9950: increased document viewer space.

See merge request redactmanager/red-ui!557
2024-08-29 16:22:00 +02:00
Nicoleta Panaghiu
095853d090 RED-9950: increased document viewer space. 2024-08-29 17:19:27 +03:00
Dan Percic
fe46e69c53 Merge branch 'RED-9951' into 'master'
RED-9951: made document info scrollable & fixed paginator position.

See merge request redactmanager/red-ui!556
2024-08-29 12:08:40 +02:00
Nicoleta Panaghiu
a55571a381 RED-9951: made document info scrollable & fixed paginator position. 2024-08-29 13:03:14 +03:00
Dan Percic
7d449d3ff7 Merge branch 'RED-9887' into 'master'
RED-9887: fixed save button being disabled.

See merge request redactmanager/red-ui!555
2024-08-28 12:46:00 +02:00
Nicoleta Panaghiu
db1257751a RED-9887: fixed save button being disabled. 2024-08-28 13:22:37 +03:00
Dan Percic
43830f463d Merge branch 'RED-9946' into 'master'
RED-9946: added tooltip with valueDescription.

See merge request redactmanager/red-ui!554
2024-08-27 14:10:38 +02:00
Nicoleta Panaghiu
e798197110 RED-9946: added tooltip with valueDescription. 2024-08-27 15:09:41 +03:00
Dan Percic
35f2161913 Merge branch 'RED-9887' into 'master'
RED-9887: fixed component fields cancel and revert actions.

See merge request redactmanager/red-ui!553
2024-08-27 13:34:35 +02:00
Nicoleta Panaghiu
6f8edaf4ba RED-9887: fixed component fields cancel and revert actions. 2024-08-27 14:28:40 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
80a713d850 push back localazy update 2024-08-22 01:03:26 +00:00
Dan Percic
ed518d6910 Merge branch 'RED-9824' into 'master'
RED-9824: fixed toaster notification message for edit annotation action.

See merge request redactmanager/red-ui!552
2024-08-21 10:35:12 +02:00
Nicoleta Panaghiu
7ad36ea6f6 RED-9824: fixed toaster notification message for edit annotation action. 2024-08-21 11:33:33 +03:00
Dan Percic
65fc2971ac Merge branch 'RED-9893' into 'master'
RED-9893: show missing type toaster only once.

See merge request redactmanager/red-ui!551
2024-08-21 09:59:10 +02:00
Nicoleta Panaghiu
4438f90af4 RED-9893: show missing type toaster only once. 2024-08-21 10:53:13 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
2daa033b8e push back localazy update 2024-08-21 01:03:27 +00:00
Dan Percic
726f909589 Merge branch 'RED-9889' into 'master'
RED-9889: escape html in component values.

See merge request redactmanager/red-ui!550
2024-08-20 14:13:06 +02:00
Nicoleta Panaghiu
6a6db17d2c RED-9889: escape html in component values. 2024-08-20 15:11:30 +03:00
Dan Percic
021775d3a7 Merge branch 'RED-9916' into 'master'
RED-9916: update common ui.

See merge request redactmanager/red-ui!549
2024-08-20 12:26:58 +02:00
Nicoleta Panaghiu
88ef8830c2 RED-9916: update common ui. 2024-08-20 13:22:40 +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
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
ea07686946 push back localazy update 2024-08-16 01:03:28 +00:00
Nicoleta Panaghiu
3df6005549 Merge branch 'VM/RED-9862' into 'master'
RED-9862 - Broken resize dialog for imported redaction from preview file with disabled auto-analysis on upload

Closes RED-9862

See merge request redactmanager/red-ui!548
2024-08-15 12:27:25 +02:00
Nicoleta Panaghiu
511f24e3ef Merge branch 'VM/RED-9260' into 'master'
RED-9260 - Component Management UI

Closes RED-9260

See merge request redactmanager/red-ui!547
2024-08-15 12:22:11 +02:00
Valentin Mihai
4e49d2d7a6 WIP on master
RED-9862 - Broken resize dialog for imported redaction from preview file with disabled auto-analysis on upload
2024-08-15 09:48:00 +03:00
Valentin Mihai
c7e03043e0 RED-9890 - New created component-definition is not displayed in the list of component-definitions 2024-08-15 09:15:03 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
f85626a8e4 push back localazy update 2024-08-15 01:03:23 +00: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
Valentin Mihai
1bcd1869f0 RED-9260 - Component Management UI 2024-08-14 12:46:50 +03:00
Valentin-Gabriel Mihai
95c273e7b2 Merge branch 'RED-9777' into 'master'
RED-9777: added help button on edit and remove annotation dialogs.

See merge request redactmanager/red-ui!546
2024-08-14 10:50:16 +02:00
Nicoleta Panaghiu
6236275528 RED-9777: added help button on edit and remove annotation dialogs. 2024-08-14 11:43:22 +03:00
Valentin-Gabriel Mihai
d654bcfc4b Merge branch 'RED-9589' into 'master'
RED-9589: removed FP option for locally removed and forced redactions.

See merge request redactmanager/red-ui!545
2024-08-14 10:06:26 +02:00
Nicoleta Panaghiu
fcbffdad8f RED-9589: removed FP option for locally removed and forced redactions. 2024-08-14 11:02:28 +03:00
Nicoleta Panaghiu
8079079217 Merge branch 'VM/RED-9201' into 'master'
RED-9201 - UI for Component Mapping Tables

Closes RED-9201

See merge request redactmanager/red-ui!544
2024-08-14 09:47:09 +02:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
87fa2df399 push back localazy update 2024-08-14 01:03:23 +00:00
Valentin-Gabriel Mihai
5d6d69c8c4 Merge branch 'RED-9572' into 'master'
RED-9572: Format audit log values

Closes RED-9572

See merge request redactmanager/red-ui!543
2024-08-13 20:06:19 +02:00
Valentin Mihai
538f36aebc WIP on master
RED-9201 - UI for Component Mapping Tables
2024-08-13 21:04:47 +03:00
Adina Țeudan
9067272382 RED-9572: Format audit log values 2024-08-13 18:57:09 +03:00
Valentin-Gabriel Mihai
bc430a796f Merge branch 'RED-9874' into 'master'
RED-9874: added user preference for overwrite file option.

See merge request redactmanager/red-ui!542
2024-08-13 14:03:55 +02:00
Nicoleta Panaghiu
24fc875cc9 RED-9874: added user preference for overwrite file option. 2024-08-13 15:02:32 +03:00
Nicoleta Panaghiu
fc8a9da8cd Merge branch 'VM/RED-9201' into 'master'
RED-9201 - UI for Component Mapping Tables

Closes RED-9201

See merge request redactmanager/red-ui!541
2024-08-13 10:01:43 +02:00
Nicoleta Panaghiu
486ef92b07 Merge branch 'VM/RED-9260' into 'master'
RED-9260 - Component Management UI

See merge request redactmanager/red-ui!540
2024-08-13 09:52:27 +02:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
630db9071a push back localazy update 2024-08-13 01:03:23 +00:00
Valentin Mihai
8e2219235d RED-9201 - UI for Component Mapping Tables 2024-08-12 21:36:04 +03:00
Valentin-Gabriel Mihai
0a05d02623 Merge branch 'RED-7270' into 'master'
RED-7270: Display backend provided error message for dossier states

Closes RED-7270

See merge request redactmanager/red-ui!539
2024-08-12 20:09:19 +02:00
Valentin Mihai
f242c52a0c RED-9260 - update config 2024-08-12 21:00:21 +03:00
Valentin Mihai
6e115038b0 RED-9260 - Component Management UI 2024-08-12 20:54:30 +03:00
Adina Țeudan
428debcd6f RED-7270: Display backend provided error message for dossier states 2024-08-12 20:51:53 +03:00
Valentin Mihai
ddbef9bd11 Merge branch 'master' into VM/RED-9260 2024-08-12 19:24:41 +03:00
Valentin-Gabriel Mihai
1dc013e46b Merge branch 'RED-9835' into 'master'
RED-9835: removed experimental feature warning.

See merge request redactmanager/red-ui!538
2024-08-12 14:12:01 +02:00
Nicoleta Panaghiu
d409811aa6 RED-9835: removed experimental feature warning. 2024-08-12 15:08:10 +03:00
Valentin-Gabriel Mihai
ecb7b89f31 Merge branch 'RED-9762' into 'master'
RED-9762: removed open component view preference.

See merge request redactmanager/red-ui!537
2024-08-12 13:58:38 +02:00
Nicoleta Panaghiu
8a3d372223 RED-9762: removed open component view preference. 2024-08-12 13:42:29 +03:00
Valentin-Gabriel Mihai
3544538c19 Merge branch 'RED-9861' into 'master'
RED-9861: fixed bulk-select issues.

See merge request redactmanager/red-ui!536
2024-08-12 12:24:33 +02:00
Nicoleta Panaghiu
f82cdcf5bb RED-9861: fixed bulk-select issues. 2024-08-12 13:22:47 +03:00
Nicoleta Panaghiu
e6a3b1a585 Merge branch 'RED-9866' into 'master'
RED-9866: remove version limit on ARCHIVE DOSSIER feature.

See merge request redactmanager/red-ui!535
2024-08-12 10:45:17 +02:00
Nicoleta Panaghiu
8d970779f5 RED-9866: remove version limit on ARCHIVE DOSSIER feature. 2024-08-12 11:29:23 +03:00
Nicoleta Panaghiu
954fba26f7 Merge branch 'VM/RED-8748' into 'master'
RED-8748 - Integrated component view in DocuMine

Closes RED-8748

See merge request redactmanager/red-ui!533
2024-08-12 10:29:02 +02:00
Valentin-Gabriel Mihai
25418ced4a Merge branch 'RED-9777' into 'master'
RED-9777: added help mode missing links.

See merge request redactmanager/red-ui!534
2024-08-12 10:25:27 +02:00
Nicoleta Panaghiu
591b6eee36 RED-9777: fix. 2024-08-12 11:20:23 +03:00
Nicoleta Panaghiu
d7cc8e3232 RED-9777: update common ui. 2024-08-12 11:16:24 +03:00
Nicoleta Panaghiu
0d7adb4e6b RED-9777: added help mode missing links. 2024-08-12 11:12:31 +03:00
Valentin Mihai
62b8a55406 RED-8748 - Integrated component view in DocuMine 2024-08-11 21:05:20 +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
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
926d14056b push back localazy update 2024-08-10 01:03:32 +00:00
Valentin-Gabriel Mihai
937803fd75 Merge branch 'RED-9817' into 'master'
RED-9817: removed HTML code for space.

See merge request redactmanager/red-ui!532
2024-08-09 11:17:58 +02:00
Nicoleta Panaghiu
168730cfca RED-9817: removed HTML code for space. 2024-08-09 12:16:42 +03:00
Nicoleta Panaghiu
87c4becbe6 Merge branch 'VM/RED-9788-2' into 'master'
RED-9788 - Adapt Annotation column to display only annotations per component...

Closes RED-9788

See merge request redactmanager/red-ui!531
2024-08-09 09:31:21 +02:00
Valentin Mihai
f0535eb47f Merge branch 'master' into VM/RED-9788-2 2024-08-09 10:29:16 +03:00
Valentin Mihai
522a78d6a2 RED-9788 - update config 2024-08-09 09:02:53 +03:00
Valentin Mihai
4f955bcd50 RED-9788 - Adapt Annotation column to display only annotations per component if component is selected 2024-08-09 08:58:36 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
d9ccf89166 push back localazy update 2024-08-09 01:03:30 +00:00
Dan Percic
0af6e45868 Merge remote-tracking branch 'origin/master' into RED-9747 2024-08-08 13:57:34 +02:00
Nicoleta Panaghiu
b1c40806c5 Merge branch 'VM/RED-9201' into 'master'
RED-9201 - UI for Component Mapping Tables

Closes RED-9201

See merge request redactmanager/red-ui!530
2024-08-08 10:27:15 +02:00
Valentin Mihai
826c564af6 RED-9201 - UI for Component Mapping Tables 2024-08-08 11:06:20 +03:00
Valentin Mihai
b623449efb RED-9788 - remove active listing entity service 2024-08-07 21:25:43 +03:00
Valentin Mihai
221948411a Merge branch 'master' into VM/RED-9788-2 2024-08-07 21:15:11 +03:00
Valentin Mihai
fcba520003 RED-9788 - Adapt Annotation column to display only annotations per component if component is selected 2024-08-07 21:14:37 +03:00
Adina Teudan
f9c8571c31 Merge branch 'VM/RED-3800' into 'master'
RED-3800 - Refactoring / Code Cleanup

Closes RED-3800

See merge request redactmanager/red-ui!529
2024-08-07 19:51:26 +02:00
Valentin Mihai
90ba67a79c RED-3800 - Refactoring / Code Cleanup 2024-08-07 20:34:32 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
e78dcff3a7 push back localazy update 2024-08-07 01:03:26 +00:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
40897cf2b3 push back localazy update 2024-08-06 01:03:21 +00:00
Dan Percic
1bbef9eb37 Merge remote-tracking branch 'origin/master' into RED-9747 2024-08-05 17:54:22 +02:00
Nicoleta Panaghiu
9b770b2be7 Merge branch 'VM/RED-9776' into 'master'
RED-9776 - Consolidate components export and report download in one button

Closes RED-9776

See merge request redactmanager/red-ui!528
2024-08-05 12:59:45 +02:00
Valentin Mihai
77b133757e Merge branch 'master' into VM/RED-9776 2024-08-04 13:26:51 +03:00
Valentin Mihai
37b692c260 RED-9776 - Consolidate components export and report download in one button 2024-08-04 13:22:37 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
dc2ad98120 push back localazy update 2024-08-03 01:03:22 +00:00
Valentin-Gabriel Mihai
91d1ee28f6 Merge branch 'RED-9504' into 'master'
RED-9504: fix some translations.

See merge request redactmanager/red-ui!527
2024-08-02 11:23:30 +02:00
Nicoleta Panaghiu
e2b7807cf3 RED-9504: fix some translations. 2024-08-02 11:34:39 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
46375a3db4 push back localazy update 2024-08-02 01:03:42 +00:00
Dan Percic
0585800532 Merge branch 'RED-9731' into 'master'
RED-9731: fixed help button position on resize.

See merge request redactmanager/red-ui!526
2024-08-01 13:45:33 +02:00
Nicoleta Panaghiu
eccb00345a RED-9731: fixed help button position on resize. 2024-08-01 14:39:27 +03:00
Dan Percic
621b8185fd Merge branch 'VM/RED-9776' into 'master'
RED-9776 - Consolidate components export and report download in one button

Closes RED-9776

See merge request redactmanager/red-ui!525
2024-08-01 13:23:43 +02:00
Valentin Mihai
907249cc40 RED-9776 - Consolidate components export and report download in one button 2024-08-01 13:35:15 +03:00
Nicoleta Panaghiu
35342707f0 RED-9772: delete saved entity log on file overwrite. 2024-08-01 11:55:54 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
0a7919f786 push back localazy update 2024-08-01 01:03:27 +00:00
Dan Percic
c1fc52223b Merge remote-tracking branch 'origin/master' into RED-9747 2024-07-31 14:32:08 +03:00
Valentin-Gabriel Mihai
246e69d754 Merge branch 'RED-9742' into 'master'
RED-9742: fixed logo router link.

See merge request redactmanager/red-ui!524
2024-07-31 12:43:24 +02:00
Nicoleta Panaghiu
16927903cd RED-9742: fixed logo router link. 2024-07-31 13:20:22 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
862b420488 push back localazy update 2024-07-31 01:03:34 +00:00
Valentin Mihai
d445c5f31c Merge branch 'master' into VM/RED-9260 2024-07-30 20:40:10 +03:00
Valentin-Gabriel Mihai
c4625d2e7e Merge branch 'RED-9516' into 'master'
RED-9516: fixed filter options alignment.

See merge request redactmanager/red-ui!522
2024-07-30 16:07:31 +02:00
Nicoleta Panaghiu
3f14690c39 RED-9516: fixed filter options alignment. 2024-07-30 17:04:34 +03:00
Dan Percic
30c1f8628b Merge remote-tracking branch 'origin/master' into RED-9747 2024-07-30 16:21:46 +03:00
Nicoleta Panaghiu
f18cd31a72 Merge branch 'VM/RED-8748' into 'master'
RED-8748 - updated filtering when a component is selected

Closes RED-8748

See merge request redactmanager/red-ui!521
2024-07-30 14:15:23 +02:00
Valentin Mihai
9b197811d1 RED-8748 - updated filtering when a component is selected 2024-07-30 15:07:57 +03:00
Valentin-Gabriel Mihai
e2846a3178 Merge branch 'RED-9433' into 'master'
RED-9433: added auto line-break for checkbox label overflow.

See merge request redactmanager/red-ui!520
2024-07-30 13:16:48 +02:00
Nicoleta Panaghiu
ed8eb4840e RED-9433: added auto line-break for checkbox label overflow. 2024-07-30 14:14:58 +03:00
Valentin Mihai
f1b7effe3a Merge branch 'master' into VM/RED-9260 2024-07-30 12:51:51 +03:00
Dan Percic
8390687c5a Merge branch 'RED-9571' into 'master'
RED-9571: fixed initials-avatar not updating in some cases.

See merge request redactmanager/red-ui!519
2024-07-30 10:17:14 +02:00
Nicoleta Panaghiu
7f7148c859 RED-9571: fixed initials-avatar not updating in some cases. 2024-07-30 11:13:59 +03:00
Dan Percic
66df5f807c Merge remote-tracking branch 'origin/master' into RED-9747 2024-07-30 10:33:58 +03:00
Dan Percic
53044bd391 Merge branch 'VM/RED-8748' into 'master'
RED-8748 - Integrated component view in DocuMine

Closes RED-8748

See merge request redactmanager/red-ui!518
2024-07-29 17:12:59 +02:00
Valentin Mihai
2b4c52c13b RED-8748 - Integrated component view in DocuMine 2024-07-29 18:02:04 +03:00
Dan Percic
6540684063 Merge branch 'VM/RED-8748' into 'master'
RED-8748 - update export button

Closes RED-8748

See merge request redactmanager/red-ui!517
2024-07-29 15:03:51 +02:00
Valentin Mihai
171e18c8a9 RED-8748 - update export button 2024-07-29 15:51:05 +03:00
Nicoleta Panaghiu
5ddae5f664 Merge branch 'VM/RED-8748' into 'master'
RED-8748 - Integrated component view in DocuMine

Closes RED-8748

See merge request redactmanager/red-ui!516
2024-07-29 13:43:41 +02:00
Dan Percic
f25d134590 Merge remote-tracking branch 'origin/master' into RED-9747 2024-07-29 11:40:49 +03:00
Valentin Mihai
dbc609765b WIP on master
RED-8748 - Integrated component view in DocuMine
2024-07-29 01:02:46 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
aaef6c7649 push back localazy update 2024-07-27 01:03:29 +00:00
Dan Percic
333f5c7fc5 Merge branch 'RED-9754' into 'master'
RED-9754: removed document version in dossier templates in documine.

See merge request redactmanager/red-ui!515
2024-07-26 15:31:23 +02:00
Nicoleta Panaghiu
47b16d2287 RED-9754: removed document version in dossier templates in documine. 2024-07-26 16:28:36 +03:00
Dan Percic
c1a8898e92 Merge branch 'VM/RED-9201' into 'master'
RED-9201 - UI for Component Mapping Tables

Closes RED-9201

See merge request redactmanager/red-ui!514
2024-07-26 15:17:24 +02:00
Valentin Mihai
456ca8cc46 RED-9201 - UI for Component Mapping Tables 2024-07-26 16:14:37 +03:00
Dan Percic
10fa81e77c Merge remote-tracking branch 'origin/master' into RED-9747 2024-07-26 16:02:19 +03:00
Dan Percic
b015b804a1 Merge branch 'VM/RED-9201' into 'master'
VM/RED-9201 - UI for Component Mapping Tables

Closes RED-9201

See merge request redactmanager/red-ui!513
2024-07-26 15:01:37 +02:00
Valentin Mihai
c5fd581a62 RED-9201 - UI for Component Mapping Tables 2024-07-26 15:36:24 +03:00
Dan Percic
613a7429b8 RED-9747 add initial ws entity log refresh 2024-07-26 12:25:13 +03:00
Valentin Mihai
9010677c6d RED-9201 - UI for Component Mapping Tables 2024-07-26 12:13:05 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
2b00876e6b push back localazy update 2024-07-26 01:03:27 +00:00
Dan Percic
a87e4c7472 Merge branch 'RED-9542' into 'master'
RED-9542: fixed resize dialog header.

See merge request redactmanager/red-ui!511
2024-07-25 15:47:08 +02:00
Nicoleta Panaghiu
ebc074c308 RED-9542: fixed resize dialog header. 2024-07-25 16:44:57 +03:00
Nicoleta Panaghiu
e3325bb620 Merge branch 'VM/RED-9201' into 'master'
RED-9201 - UI for Component Mapping Tables

Closes RED-9201

See merge request redactmanager/red-ui!510
2024-07-25 11:14:38 +02:00
Valentin Mihai
0bcb3829c7 RED-9201 - displayed all column labels string in a tooltip 2024-07-25 12:12:50 +03:00
Dan Percic
848a44276f Merge branch 'RED-9589' into 'master'
RED-9589: enabled false positive option for some annotation configs.

See merge request redactmanager/red-ui!509
2024-07-25 11:09:11 +02:00
Nicoleta Panaghiu
299be2364e RED-9589: enabled false positive option for some annotation configs. 2024-07-25 12:06:23 +03:00
Valentin Mihai
a9b399ebbd RED-9201 - UI for Component Mapping Tables 2024-07-25 11:49:40 +03:00
Valentin Mihai
87e2e27e56 RED-9260 - Component Management UI 2024-07-25 00:35:48 +03:00
Dan Percic
4f2d320553 Merge branch 'RED-9716' into 'master'
RED-9716: removed analyse button for archived files.

See merge request redactmanager/red-ui!508
2024-07-24 12:03:25 +02:00
Nicoleta Panaghiu
425c982865 RED-9716: removed analyse button for archived files. 2024-07-24 13:00:45 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
804fbf7b05 push back localazy update 2024-07-24 01:03:22 +00:00
Dan Percic
111b354a58 Merge branch 'RED-9657' into 'master'
RED-9657: additional fixes for help mode links.

Closes RED-9657

See merge request redactmanager/red-ui!507
2024-07-23 11:04:55 +02:00
Nicoleta Panaghiu
7b4c6b42ae RED-9657: additional fixes for help mode links. 2024-07-23 11:54:14 +03:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
d21abaad3f push back localazy update 2024-07-23 01:03:25 +00:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
e7670e65b3 push back localazy update 2024-07-20 01:03:25 +00:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
c0e59a58c5 push back localazy update 2024-07-19 01:03:24 +00:00
project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1
4f7e5c8259 push back localazy update 2024-07-18 01:03:20 +00:00
Nicoleta Panaghiu
2b93d00833 Merge branch 'VM/RED-9260' into 'master'
RED-9260 - Component Management UI

Closes RED-9260

See merge request redactmanager/red-ui!506
2024-07-17 08:56:24 +02:00
Valentin Mihai
cfbc6bc83c RED-9260 - Component Management UI 2024-07-16 20:18:55 +03:00
747 changed files with 12740 additions and 11457 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,38 +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
- 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}
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/10.10.1/"
"output": "/assets/wv-resources/11.1.0/"
},
{
"glob": "**/*",
@ -73,7 +73,7 @@
"stylePreprocessorOptions": {
"includePaths": ["./apps/red-ui/src/assets/styles", "./libs/common-ui/src/assets/styles"]
},
"scripts": ["node_modules/@pdftron/webviewer/webviewer.min.js", "node_modules/chart.js/auto/auto.cjs"],
"scripts": ["node_modules/chart.js/auto/auto.cjs"],
"extractLicenses": false,
"sourceMap": true,
"optimization": false,

View File

@ -16,7 +16,7 @@ import { CompositeRouteGuard, DEFAULT_REDIRECT_KEY, IqserPermissionsGuard, Iqser
import { TenantSelectComponent } from '@iqser/common-ui/lib/tenants';
import { doesNotHaveAnyRole, hasAnyRole, IqserAuthGuard } from '@iqser/common-ui/lib/users';
import { CustomRouteReuseStrategy } from '@iqser/common-ui/lib/utils';
import { ARCHIVE_ROUTE, BreadcrumbTypes, DOSSIER_ID, DOSSIER_TEMPLATE_ID, DOSSIERS_ARCHIVE, DOSSIERS_ROUTE, FILE_ID } from '@red/domain';
import { ARCHIVE_ROUTE, BreadcrumbTypes, DOSSIER_ID, DOSSIER_TEMPLATE_ID, DOSSIERS_ROUTE, FILE_ID } from '@red/domain';
import { RedRoleGuard } from '@users/red-role.guard';
import { Roles } from '@users/roles';
import { mainGuard } from '@utils/main.guard';
@ -81,7 +81,6 @@ const dossierTemplateIdRoutes: IqserRoutes = [
canActivate: [CompositeRouteGuard, loadArchivedDossiersGuard()],
data: {
routeGuards: [FeaturesGuard],
features: [DOSSIERS_ARCHIVE],
},
},
{

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

@ -9,7 +9,7 @@
<redaction-breadcrumbs></redaction-breadcrumbs>
</div>
<a [matTooltip]="'top-bar.navigation-items.back-to-dashboard' | translate" [routerLink]="['/']" class="logo">
<a [matTooltip]="'top-bar.navigation-items.back-to-dashboard' | translate" [routerLink]="['/main']" class="logo">
<div [attr.help-mode-key]="'home'" class="actions">
<iqser-logo (iqserHiddenAction)="userPreferenceService.toggleDevFeatures()" icon="iqser:logo"></iqser-logo>
<div class="app-name">{{ titleService.getTitle() }}</div>

View File

@ -8,8 +8,7 @@ import { SpotlightSearchAction } from '@components/spotlight-search/spotlight-se
import { filter, map, startWith } from 'rxjs/operators';
import { getConfig, IqserPermissionsService } from '@iqser/common-ui';
import { BreadcrumbsService } from '@services/breadcrumbs.service';
import { FeaturesService } from '@services/features.service';
import { ARCHIVE_ROUTE, DOSSIERS_ARCHIVE, DOSSIERS_ROUTE } from '@red/domain';
import { ARCHIVE_ROUTE, DOSSIERS_ROUTE } from '@red/domain';
import { Roles } from '@users/roles';
import { REDDocumentViewer } from '../../modules/pdf-viewer/services/document-viewer.service';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@ -21,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;
@ -36,7 +36,6 @@ export class BaseScreenComponent {
{
text: this._translateService.instant('search.active-dossiers'),
icon: 'red:enter',
hide: () => !this._featuresService.isEnabled(DOSSIERS_ARCHIVE),
action: (query): void => this.#search(query, [], true),
},
{
@ -58,7 +57,6 @@ export class BaseScreenComponent {
private readonly _router: Router,
activatedRoute: ActivatedRoute,
private readonly _translateService: TranslateService,
private readonly _featuresService: FeaturesService,
readonly permissionsService: IqserPermissionsService,
readonly userService: UserService,
readonly userPreferenceService: UserPreferenceService,

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

@ -22,7 +22,7 @@
}
.mat-mdc-menu-item.notification {
padding: 8px 26px 10px 8px;
padding: 8px 26px 10px 8px !important;
margin: 2px 0 0 0;
height: fit-content;
position: relative;

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

@ -9,7 +9,7 @@
.container {
padding: 32px;
width: 900px;
width: 1000px;
max-width: 100%;
box-sizing: border-box;
}

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

@ -11,7 +11,9 @@ import { DictionaryService } from '@services/entity-services/dictionary.service'
import { DefaultColorsService } from '@services/entity-services/default-colors.service';
import { WatermarkService } from '@services/entity-services/watermark.service';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { getConfig } from '@iqser/common-ui';
import { getConfig, Toaster } from '@iqser/common-ui';
import { RulesService } from '../modules/admin/services/rules.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
export function templateExistsWhenEnteringAdmin(): CanActivateFn {
return async function (route: ActivatedRouteSnapshot): Promise<boolean> {
@ -21,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));
}
@ -50,6 +54,8 @@ export function templateExistsWhenEnteringDossierList(): CanActivateFn {
const dictionaryService = inject(DictionaryService);
const defaultColorsService = inject(DefaultColorsService);
const watermarksService = inject(WatermarkService);
const rulesService = inject(RulesService);
const toaster = inject(Toaster);
const isDocumine = getConfig().IS_DOCUMINE;
await firstValueFrom(dashboardStatsService.loadForTemplate(dossierTemplateId));
@ -64,6 +70,10 @@ export function templateExistsWhenEnteringDossierList(): CanActivateFn {
await firstValueFrom(fileAttributesService.loadFileAttributesConfig(dossierTemplateId));
await firstValueFrom(dictionaryService.loadDictionaryDataForDossierTemplate(dossierTemplateId));
await firstValueFrom(defaultColorsService.loadForDossierTemplate(dossierTemplateId));
const rules = await firstValueFrom(rulesService.getFor(dossierTemplateId));
if (rules.timeoutDetected) {
toaster.error(_('dossier-listing.rules.timeoutError'));
}
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

@ -1,6 +1,6 @@
import { AnnotationPermissions } from '@models/file/annotation.permissions';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { Dictionary, LogEntryEngines, SuperTypes } from '@red/domain';
import { Dictionary, SuperTypes } from '@red/domain';
export const canUndo = (annotation: AnnotationWrapper, isApprover: boolean) => !isApprover && annotation.pending;
@ -16,10 +16,7 @@ export const canForceRedaction = (annotation: AnnotationWrapper, canAddRedaction
export const canAcceptRecommendation = (annotation: AnnotationWrapper) => annotation.isRecommendation && !annotation.pending;
export const canMarkAsFalsePositive = (annotation: AnnotationWrapper, annotationEntity: Dictionary) =>
annotation.canBeMarkedAsFalsePositive &&
!annotation.hasBeenForcedRedaction &&
!annotation.hasBeenResizedLocally &&
annotationEntity?.hasDictionary;
annotation.canBeMarkedAsFalsePositive && !annotation.hasBeenResizedLocally && annotationEntity?.hasDictionary;
export const canRemoveOnlyHere = (annotation: AnnotationWrapper, canAddRedaction: boolean, autoAnalysisDisabled: boolean) =>
canAddRedaction &&
@ -27,10 +24,10 @@ export const canRemoveOnlyHere = (annotation: AnnotationWrapper, canAddRedaction
(annotation.isRedacted || (annotation.isHint && !annotation.isImage));
export const canRemoveFromDictionary = (annotation: AnnotationWrapper, autoAnalysisDisabled: boolean) =>
annotation.isModifyDictionary &&
(annotation.isModifyDictionary || annotation.engines.includes('DICTIONARY') || annotation.engines.includes('DOSSIER_DICTIONARY')) &&
(annotation.isRedacted || annotation.isSkipped || annotation.isHint || (annotation.isIgnoredHint && !annotation.isRuleBased)) &&
(autoAnalysisDisabled || !annotation.pending) &&
[LogEntryEngines.DICTIONARY, LogEntryEngines.DOSSIER_DICTIONARY].some(engine => annotation.engines.includes(engine));
annotation.isDictBased;
export const canRemoveRedaction = (annotation: AnnotationWrapper, permissions: AnnotationPermissions) =>
(!annotation.isIgnoredHint || !annotation.isRuleBased) &&
@ -72,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

@ -26,6 +26,12 @@ import {
} from '@red/domain';
import { annotationTypesTranslations } from '@translations/annotation-types-translations';
interface AnnotationContent {
translation: string;
params: { [key: string]: string };
untranslatedContent: string;
}
export class AnnotationWrapper implements IListable {
id: string;
superType: SuperType;
@ -34,9 +40,9 @@ export class AnnotationWrapper implements IListable {
typeLabel?: string;
color: string;
numberOfComments = 0;
firstTopLeftPoint: IPoint;
firstBottomLeftPoint: IPoint;
shortContent: string;
content: string;
content: AnnotationContent;
value: string;
pageNumber: number;
dictionaryOperation = false;
@ -74,11 +80,18 @@ export class AnnotationWrapper implements IListable {
}
get isDictBased() {
return this.engines.includes(LogEntryEngines.DICTIONARY);
return [LogEntryEngines.DICTIONARY, LogEntryEngines.DOSSIER_DICTIONARY].some(engine => this.engines.includes(engine));
}
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() {
return this.IMAGE_HINT && this.superType === SuperTypes.Hint;
}
get searchKey(): string {
@ -99,7 +112,10 @@ export class AnnotationWrapper implements IListable {
get canBeMarkedAsFalsePositive() {
return (
(this.isRecommendation || this.superType === SuperTypes.Redaction || (this.isSkipped && this.isDictBased)) &&
(this.isRecommendation ||
this.superType === SuperTypes.Redaction ||
(this.isSkipped && this.isDictBased) ||
(this.isRemovedLocally && this.isDictBased)) &&
!this.isImage &&
!this.imported &&
!this.pending &&
@ -183,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() {
@ -212,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;
@ -233,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,
@ -275,7 +291,7 @@ export class AnnotationWrapper implements IListable {
);
const content = this.#createContent(annotationWrapper, logEntry, isDocumine);
annotationWrapper.shortContent = this.#getShortContent(annotationWrapper, legalBasisList) || content;
annotationWrapper.shortContent = this.#getShortContent(annotationWrapper, legalBasisList) || content.untranslatedContent;
annotationWrapper.content = content;
const lastRelevantManualChange = logEntry.manualChanges?.at(-1);
@ -307,44 +323,62 @@ export class AnnotationWrapper implements IListable {
}
static #createContent(annotationWrapper: AnnotationWrapper, logEntry: IEntityLogEntry, isDocumine: boolean) {
let content = '';
let untranslatedContent = '';
const params: { [key: string]: string } = {};
if (logEntry.matchedRule) {
content += `Rule ${logEntry.matchedRule} matched${isDocumine ? ':' : ''} \n\n`;
params['hasRule'] = 'true';
params['matchedRule'] = logEntry.matchedRule.replace(/(^[, ]*)|([, ]*$)/g, '');
params['ruleSymbol'] = isDocumine ? ':' : '';
untranslatedContent += `Rule ${logEntry.matchedRule} matched${isDocumine ? ':' : ''} \n\n`;
}
if (logEntry.reason) {
params['hasReason'] = 'true';
if (isDocumine && logEntry.reason.slice(-1) === '.') {
logEntry.reason = logEntry.reason.slice(0, -1);
}
content += logEntry.reason + '\n\n';
if (!params['hasRule']) {
params['reason'] = logEntry.reason.substring(0, 1).toUpperCase() + logEntry.reason.substring(1);
} else {
params['reason'] = logEntry.reason;
}
params['reason'] = params['reason'].replace(/(^[, ]*)|([, ]*$)/g, '');
untranslatedContent += logEntry.reason + '\n\n';
//remove leading and trailing commas and whitespaces
content = content.replace(/(^[, ]*)|([, ]*$)/g, '');
content = content.substring(0, 1).toUpperCase() + content.substring(1);
untranslatedContent = untranslatedContent.replace(/(^[, ]*)|([, ]*$)/g, '');
untranslatedContent = untranslatedContent.substring(0, 1).toUpperCase() + untranslatedContent.substring(1);
}
if (annotationWrapper.legalBasis && !isDocumine) {
content += 'Legal basis: ' + annotationWrapper.legalBasis + '\n\n';
params['hasLb'] = 'true';
params['legalBasis'] = annotationWrapper.legalBasis;
untranslatedContent += 'Legal basis: ' + annotationWrapper.legalBasis + '\n\n';
}
if (annotationWrapper.hasBeenRemovedByManualOverride) {
content += 'Removed by manual override';
params['hasOverride'] = 'true';
untranslatedContent += 'Removed by manual override';
}
if (logEntry.section) {
params['hasSection'] = 'true';
params['sectionSymbol'] = isDocumine ? '' : ':';
params['shouldLower'] = untranslatedContent.length.toString();
params['section'] = logEntry.section;
let prefix = `In section${isDocumine ? '' : ':'} `;
if (content.length) {
if (untranslatedContent.length) {
prefix = ` ${prefix.toLowerCase()}`;
}
content += `${prefix} "${logEntry.section}"`;
untranslatedContent += `${prefix} "${logEntry.section}"`;
}
return content;
return { translation: _('annotation-content'), params: params, untranslatedContent: untranslatedContent };
}
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

@ -11,12 +11,6 @@
</mat-slide-toggle>
</div>
<div *ngIf="config.IS_DOCUMINE" class="iqser-input-group">
<mat-slide-toggle color="primary" formControlName="openScmDialogByDefault">
{{ 'preferences-screen.form.open-structured-view-by-default' | translate }}
</mat-slide-toggle>
</div>
<div *allow="roles.getTables" class="iqser-input-group">
<label [translate]="'preferences-screen.form.table-extraction-type'"></label>
<input formControlName="tableExtractionType" />
@ -37,6 +31,11 @@
{{ 'preferences-screen.form.help-mode-dialog' | translate }}
</mat-checkbox>
</div>
<div class="iqser-input-group">
<mat-checkbox color="primary" formControlName="overwriteFileOption">
{{ 'preferences-screen.form.overwrite-file-option' | translate }}
</mat-checkbox>
</div>
</ng-container>
</div>
</div>

View File

@ -1,4 +1,4 @@
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';
import { ActivatedRoute } from '@angular/router';
import {
@ -23,11 +23,11 @@ import { MatCheckbox } from '@angular/material/checkbox';
interface PreferencesForm {
// preferences
autoExpandFiltersOnActions: boolean;
openScmDialogByDefault: boolean;
tableExtractionType: string;
// warnings preferences
loadAllAnnotationsWarning: boolean;
helpModeDialog: boolean;
overwriteFileOption: boolean;
[k: string]: any;
}
@ -44,7 +44,6 @@ const Screens = {
templateUrl: './preferences.component.html',
styleUrls: ['./preferences.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [
DialogDefaultsComponent,
NgClass,
@ -58,6 +57,12 @@ const Screens = {
],
})
export class PreferencesComponent extends BaseFormComponent implements OnInit {
readonly #formBuilder = inject(FormBuilder);
readonly #permissionsService = inject(IqserPermissionsService);
readonly #changeRef = inject(ChangeDetectorRef);
readonly #loadingService = inject(LoadingService);
readonly #userPreferenceService = inject(UserPreferenceService);
readonly form: FormGroup<AsControl<PreferencesForm>>;
readonly currentScreen: Screen;
readonly screens = Screens;
@ -66,81 +71,87 @@ export class PreferencesComponent extends BaseFormComponent implements OnInit {
readonly config = getConfig();
readonly isIqserDevMode = isIqserDevMode();
constructor(
route: ActivatedRoute,
readonly userPreferenceService: UserPreferenceService,
private readonly _formBuilder: FormBuilder,
private readonly _permissionsService: IqserPermissionsService,
private readonly _changeRef: ChangeDetectorRef,
private readonly _loadingService: LoadingService,
) {
get #isOverwriteFileOptionActive() {
return !(this.#userPreferenceService.getOverwriteFileOption() === 'undefined');
}
constructor(route: ActivatedRoute) {
super();
this.form = this._formBuilder.group({
this.form = this.#formBuilder.group({
// preferences
autoExpandFiltersOnActions: [this.userPreferenceService.getAutoExpandFiltersOnActions()],
openScmDialogByDefault: [this.userPreferenceService.getOpenScmDialogByDefault()],
tableExtractionType: [this.userPreferenceService.getTableExtractionType()],
autoExpandFiltersOnActions: [this.#userPreferenceService.getAutoExpandFiltersOnActions()],
tableExtractionType: [this.#userPreferenceService.getTableExtractionType()],
// warnings preferences
loadAllAnnotationsWarning: [this.userPreferenceService.getBool(PreferencesKeys.loadAllAnnotationsWarning)],
helpModeDialog: [this.userPreferenceService.getBool(KEYS.helpModeDialog)],
loadAllAnnotationsWarning: [this.#userPreferenceService.getBool(PreferencesKeys.loadAllAnnotationsWarning)],
helpModeDialog: [this.#userPreferenceService.getBool(KEYS.helpModeDialog)],
overwriteFileOption: [this.#isOverwriteFileOptionActive],
});
if (!this._permissionsService.has(Roles.managePreferences)) {
if (!this.#permissionsService.has(Roles.managePreferences)) {
this.form.disable();
}
if (!this._permissionsService.has(Roles.getTables)) {
if (!this.#permissionsService.has(Roles.getTables)) {
this.form.controls.tableExtractionType.disable();
}
if (!this.#isOverwriteFileOptionActive) {
this.form.controls.overwriteFileOption.disable();
}
this.initialFormValue = this.form.getRawValue();
this.currentScreen = route.snapshot.data.screen;
}
ngOnInit() {
this._loadingService.stop();
this.#loadingService.stop();
}
async save(): Promise<any> {
if (this.form.controls.autoExpandFiltersOnActions.value !== this.userPreferenceService.getAutoExpandFiltersOnActions()) {
await this.userPreferenceService.toggleAutoExpandFiltersOnActions();
}
if (this.form.controls.openScmDialogByDefault.value !== this.userPreferenceService.getOpenScmDialogByDefault()) {
await this.userPreferenceService.toggleOpenScmDialogByDefault();
if (this.form.controls.autoExpandFiltersOnActions.value !== this.#userPreferenceService.getAutoExpandFiltersOnActions()) {
await this.#userPreferenceService.toggleAutoExpandFiltersOnActions();
}
if (this.form.controls.tableExtractionType.value !== this.userPreferenceService.getTableExtractionType()) {
await this.userPreferenceService.save(PreferencesKeys.tableExtractionType, this.form.controls.tableExtractionType.value);
if (this.form.controls.tableExtractionType.value !== this.#userPreferenceService.getTableExtractionType()) {
await this.#userPreferenceService.save(PreferencesKeys.tableExtractionType, this.form.controls.tableExtractionType.value);
}
if (
this.form.controls.loadAllAnnotationsWarning.value !==
this.userPreferenceService.getBool(PreferencesKeys.loadAllAnnotationsWarning)
this.#userPreferenceService.getBool(PreferencesKeys.loadAllAnnotationsWarning)
) {
await this.userPreferenceService.save(
await this.#userPreferenceService.save(
PreferencesKeys.loadAllAnnotationsWarning,
String(this.form.controls.loadAllAnnotationsWarning.value),
);
}
if (this.form.controls.helpModeDialog.value !== this.userPreferenceService.getBool(KEYS.helpModeDialog)) {
await this.userPreferenceService.save(KEYS.helpModeDialog, String(this.form.controls.helpModeDialog.value));
if (this.form.controls.helpModeDialog.value !== this.#userPreferenceService.getBool(KEYS.helpModeDialog)) {
await this.#userPreferenceService.save(KEYS.helpModeDialog, String(this.form.controls.helpModeDialog.value));
}
await this.userPreferenceService.reload();
if (this.form.controls.overwriteFileOption.enabled && !this.form.controls.overwriteFileOption.value) {
await this.#userPreferenceService.saveOverwriteFileOption('undefined');
}
await this.#userPreferenceService.reload();
this.#patchValues();
this.initialFormValue = this.form.getRawValue();
this._changeRef.markForCheck();
this.#changeRef.markForCheck();
}
#patchValues() {
this.form.patchValue({
autoExpandFiltersOnActions: this.userPreferenceService.getAutoExpandFiltersOnActions(),
openScmDialogByDefault: this.userPreferenceService.getOpenScmDialogByDefault(),
tableExtractionType: this.userPreferenceService.getTableExtractionType(),
loadAllAnnotationsWarning: this.userPreferenceService.getBool(PreferencesKeys.loadAllAnnotationsWarning),
helpModeDialog: this.userPreferenceService.getBool(KEYS.helpModeDialog),
autoExpandFiltersOnActions: this.#userPreferenceService.getAutoExpandFiltersOnActions(),
tableExtractionType: this.#userPreferenceService.getTableExtractionType(),
loadAllAnnotationsWarning: this.#userPreferenceService.getBool(PreferencesKeys.loadAllAnnotationsWarning),
helpModeDialog: this.#userPreferenceService.getBool(KEYS.helpModeDialog),
overwriteFileOption: this.#isOverwriteFileOptionActive,
});
if (!this.#isOverwriteFileOptionActive) {
this.form.controls.overwriteFileOption.disable();
}
}
}

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,13 +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-option *ngFor="let language of languages" [value]="language">
{{ translations[language] | translate }}
</mat-option>
<mat-select-trigger>{{ languageSelectLabel() | translate }}</mat-select-trigger>
@for (language of languages; track language) {
<mat-option [value]="language">
{{ translations[language] | translate }}
</mat-option>
}
</mat-select>
</mat-form-field>
</div>
@ -31,17 +34,19 @@
<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>
<div class="dialog-actions">
<iqser-icon-button
[disabled]="form.invalid || !(profileChanged || languageChanged || themeChanged)"
[disabled]="disabled"
[label]="'user-profile-screen.actions.save' | translate"
[submit]="true"
[type]="iconButtonTypes.primary"

View File

@ -1,5 +1,5 @@
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';
import { ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed } from '@angular/core';
import { FormGroup, ReactiveFormsModule, UntypedFormBuilder, Validators } from '@angular/forms';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import {
BaseFormComponent,
@ -17,23 +17,47 @@ 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 } from '@angular/material/select';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatSlideToggle } from '@angular/material/slide-toggle';
import { PdfViewer } from '../../../../pdf-viewer/services/pdf-viewer.service';
import { formControlToSignal } from '@utils/functions';
import { AsControl } from '@common-ui/utils';
interface UserProfileForm {
email: string;
firstName: string;
lastName: string;
language: string;
darkTheme: boolean;
}
@Component({
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],
imports: [
ReactiveFormsModule,
MatFormField,
MatSelect,
MatOption,
TranslateModule,
MatSlideToggle,
IconButtonComponent,
MatSelectTrigger,
],
})
export class UserProfileScreenComponent extends BaseFormComponent implements OnInit {
#profileModel: IProfile;
export class UserProfileScreenComponent extends BaseFormComponent {
readonly form: FormGroup<AsControl<UserProfileForm>> = this.#getForm();
initialFormValue = this.form.getRawValue();
readonly translations = languagesTranslations;
readonly devMode = this._userPreferenceService.isIqserDevMode;
readonly profileKeys = ['email', 'firstName', 'lastName'];
readonly languages = this._translateService.langs;
readonly language = formControlToSignal<UserProfileForm['language']>(this.form.controls.language);
readonly languageSelectLabel = computed(() => this.translations[this.language()]);
constructor(
private readonly _userService: UserService,
private readonly _loadingService: LoadingService,
@ -45,43 +69,29 @@ export class UserProfileScreenComponent extends BaseFormComponent implements OnI
protected readonly _userPreferenceService: UserPreferenceService,
private readonly _changeRef: ChangeDetectorRef,
private readonly _toaster: Toaster,
private readonly _pdfViewer: PdfViewer,
) {
super();
this._loadingService.start();
if (!this._permissionsService.has(Roles.updateMyProfile)) {
this.form.disable();
}
this._loadingService.stop();
}
get languageChanged(): boolean {
return this.#profileModel['language'] !== this.form.get('language').value;
return this.initialFormValue['language'] !== this.form.controls.language.value;
}
get themeChanged(): boolean {
return this.#profileModel['darkTheme'] !== this.form.get('darkTheme').value;
return this.initialFormValue['darkTheme'] !== this.form.controls.darkTheme.value;
}
get emailChanged(): boolean {
return this.#profileModel['email'] !== this.form.get('email').value;
return this.initialFormValue['email'] !== this.form.controls.email.value;
}
get profileChanged(): boolean {
const keys = Object.keys(this.form.getRawValue());
keys.splice(keys.indexOf('language'), 1);
keys.splice(keys.indexOf('darkTheme'), 1);
for (const key of keys) {
if (this.#profileModel[key] !== this.form.get(key).value) {
return true;
}
}
return false;
}
get languages(): string[] {
return this._translateService.langs;
}
ngOnInit() {
this._initializeForm();
return this.profileKeys.some(key => this.initialFormValue[key] !== this.form.get(key).value);
}
async save(): Promise<void> {
@ -106,15 +116,17 @@ export class UserProfileScreenComponent extends BaseFormComponent implements OnI
}
if (this.languageChanged) {
await this._languageService.change(this.form.get('language').value);
await this._languageService.change(this.form.controls.language.value);
await this._pdfViewer.instance?.UI.setLanguage(this._languageService.currentLanguage);
}
if (this.themeChanged) {
await this._userPreferenceService.saveTheme(this.form.get('darkTheme').value ? 'dark' : 'light');
await this._userPreferenceService.saveTheme(this.form.controls.darkTheme.value ? 'dark' : 'light');
}
this._initializeForm();
this.initialFormValue = this.form.getRawValue();
this._changeRef.markForCheck();
this._loadingService.stop();
this._toaster.success(_('user-profile-screen.update.success'));
} catch (e) {
this._loadingService.stop();
@ -125,35 +137,13 @@ export class UserProfileScreenComponent extends BaseFormComponent implements OnI
await this._userService.createResetPasswordAction();
}
private _getForm(): UntypedFormGroup {
#getForm() {
return this._formBuilder.group({
email: ['', [Validators.required, Validators.email]],
firstName: [''],
lastName: [''],
language: [''],
darkTheme: [false],
email: [this._userService.currentUser.email ?? '', [Validators.required, Validators.email]],
firstName: [this._userService.currentUser.firstName ?? ''],
lastName: [this._userService.currentUser.lastName ?? ''],
language: [this._userPreferenceService.getLanguage()],
darkTheme: [this._userPreferenceService.getTheme() === 'dark'],
});
}
private _initializeForm(): void {
try {
this.form = this._getForm();
if (!this._permissionsService.has(Roles.updateMyProfile)) {
this.form.disable();
}
this.#profileModel = {
email: this._userService.currentUser.email ?? '',
firstName: this._userService.currentUser.firstName ?? '',
lastName: this._userService.currentUser.lastName ?? '',
language: this._languageService.currentLanguage ?? '',
darkTheme: this._userPreferenceService.getTheme() === 'dark',
};
this.form.patchValue(this.#profileModel, { emitEvent: false });
this.initialFormValue = this.form.getRawValue();
} catch (e) {
} finally {
this._loadingService.stop();
this._changeRef.markForCheck();
}
}
}

View File

@ -2,11 +2,18 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { addHintTranslations } from '@translations/add-hint-translations';
import { redactTextTranslations } from '@translations/redact-text-translations';
import { removeRedactionTranslations } from '@translations/remove-redaction-translations';
import { RedactOrHintOptions, RemoveRedactionOptions } from '../../file-preview/utils/dialog-types';
import {
ForceAnnotationOptions,
RectangleRedactOptions,
RedactOrHintOptions,
RemoveRedactionOptions,
} from '../../file-preview/utils/dialog-types';
export const SystemDefaults = {
RECTANGLE_REDACT_DEFAULT: RectangleRedactOptions.ONLY_THIS_PAGE,
ADD_REDACTION_DEFAULT: RedactOrHintOptions.IN_DOSSIER,
ADD_HINT_DEFAULT: RedactOrHintOptions.IN_DOSSIER,
FORCE_REDACTION_DEFAULT: ForceAnnotationOptions.ONLY_HERE,
REMOVE_REDACTION_DEFAULT: RemoveRedactionOptions.ONLY_HERE,
REMOVE_HINT_DEFAULT: RemoveRedactionOptions.ONLY_HERE,
REMOVE_RECOMMENDATION_DEFAULT: RemoveRedactionOptions.DO_NOT_RECOMMEND,
@ -28,6 +35,10 @@ export const redactionAddOptions = [
label: redactTextTranslations.onlyHere.label,
value: RedactOrHintOptions.ONLY_HERE,
},
{
label: redactTextTranslations.inDocument.label,
value: RedactOrHintOptions.IN_DOCUMENT,
},
{
label: redactTextTranslations.inDossier.label,
value: RedactOrHintOptions.IN_DOSSIER,

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',
@ -103,6 +110,14 @@ const dossierTemplateIdRoutes: IqserRoutes = [
routeGuards: [IqserAuthGuard, RedRoleGuard],
},
},
{
path: 'components',
loadComponent: () => import('./screens/component-definitions/component-definitions.component'),
canActivate: [CompositeRouteGuard],
data: {
routeGuards: [IqserAuthGuard, RedRoleGuard],
},
},
{
path: 'file-attributes',
loadComponent: () => import('./screens/file-attributes-listing/file-attributes-listing-screen.component'),

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

@ -23,7 +23,7 @@
<div class="mt-44">
<redaction-donut-chart
[config]="chartConfig"
[config]="chartConfig()"
[radius]="63"
[strokeWidth]="15"
[subtitles]="['user-stats.chart.users' | translate]"

View File

@ -1,4 +1,4 @@
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { Component, EventEmitter, input, Input, output, Output } from '@angular/core';
import { DonutChartConfig } from '@red/domain';
import { CircleButtonComponent } from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
@ -8,10 +8,9 @@ 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 {
@Output() toggleCollapse = new EventEmitter();
@Input() chartConfig: DonutChartConfig[];
readonly chartConfig = input.required<DonutChartConfig[]>();
readonly toggleCollapse = output();
}

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

@ -1,6 +1,6 @@
<div
[translateParams]="{
type: user ? 'edit' : 'create'
type: !!user() ? 'edit' : 'create',
}"
[translate]="'add-edit-user.title'"
class="dialog-header heading-l"
@ -32,14 +32,22 @@
[formControlName]="role"
color="primary"
>
{{ translations[role] | translate }}
{{ translations[role] | translate: { count: 1 } }}
</mat-checkbox>
</div>
</div>
@if (!user()) {
<div class="iqser-input-group">
<label [translate]="'add-edit-user.form.account-setup'"></label>
<mat-checkbox formControlName="sendSetPasswordMail">{{ 'add-edit-user.form.send-email' | translate }}</mat-checkbox>
<span [translate]="'add-edit-user.form.send-email-explanation'" class="hint"></span>
</div>
}
<div
(click)="toggleResetPassword.emit()"
*ngIf="!!user"
*ngIf="!!user()"
[translate]="'add-edit-user.form.reset-password'"
class="mt-24 fit-content link-action"
></div>
@ -48,14 +56,14 @@
<div class="dialog-actions">
<iqser-icon-button
[disabled]="form.invalid || !changed"
[label]="(user ? 'add-edit-user.actions.save-changes' : 'add-edit-user.actions.save') | translate"
[label]="(user() ? 'add-edit-user.actions.save-changes' : 'add-edit-user.actions.save') | translate"
[submit]="true"
[type]="iconButtonTypes.primary"
></iqser-icon-button>
<iqser-icon-button
(action)="delete()"
*ngIf="user && !disabledDelete(user)"
*ngIf="user() && !disabledDelete(user())"
[label]="'add-edit-user.actions.delete' | translate"
[type]="iconButtonTypes.dark"
icon="iqser:trash"

View File

@ -5,3 +5,7 @@
margin-top: 8px;
width: 300px;
}
.hint {
margin-left: 23px;
}

View File

@ -1,12 +1,10 @@
import { Component, EventEmitter, Input, OnChanges, Output } from '@angular/core';
import { Component, input, OnInit, output } from '@angular/core';
import { ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
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,18 +15,17 @@ 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 OnChanges {
/** e.g. a RED_ADMIN is automatically a RED_USER_ADMIN => can't disable RED_USER_ADMIN as long as RED_ADMIN is checked */
private readonly _ROLE_REQUIREMENTS = { RED_MANAGER: 'RED_USER', RED_ADMIN: 'RED_USER_ADMIN' };
@Input() user: User;
@Output() readonly toggleResetPassword = new EventEmitter();
@Output() readonly closeDialog = new EventEmitter();
@Output() readonly cancel = new EventEmitter();
export class UserDetailsComponent extends BaseFormComponent implements OnInit {
user = input<User>();
readonly toggleResetPassword = output();
readonly closeDialog = output<boolean>();
readonly cancel = output();
readonly ROLES = ['RED_USER', 'RED_MANAGER', 'RED_USER_ADMIN', 'RED_ADMIN'];
readonly translations = rolesTranslations;
/** e.g. a RED_ADMIN is automatically a RED_USER_ADMIN => can't disable RED_USER_ADMIN as long as RED_ADMIN is checked */
readonly #ROLE_REQUIREMENTS = { RED_MANAGER: 'RED_USER', RED_ADMIN: 'RED_USER_ADMIN' };
constructor(
private readonly _formBuilder: UntypedFormBuilder,
@ -49,13 +46,17 @@ export class UserDetailsComponent extends BaseFormComponent implements OnChanges
}, []);
}
private get _rolesControls(): any {
get sendSetPasswordMail() {
return !this.form.controls.sendSetPasswordMail.value;
}
get #rolesControls() {
return this.ROLES.reduce(
(prev, role) => ({
...prev,
[role]: [
{
value: this.user && this.user.has(role),
value: this.user() && this.user().has(role),
disabled: this.shouldBeDisabled(role),
},
],
@ -64,20 +65,20 @@ export class UserDetailsComponent extends BaseFormComponent implements OnChanges
);
}
ngOnChanges() {
this.form = this._getForm();
ngOnInit() {
this.form = this.#getForm();
this.initialFormValue = this.form.getRawValue();
}
shouldBeDisabled(role: string): boolean {
const isCurrentAdminUser = this.user && this.user.isAdmin && this.user.id === this._userService.currentUser.id;
const isCurrentAdminUser = this.user() && this.user().isAdmin && this.user().id === this._userService.currentUser.id;
return (
// RED_ADMIN can't remove own RED_ADMIN role
(role === 'RED_ADMIN' && isCurrentAdminUser) ||
// only RED_ADMINs can edit RED_ADMIN roles
(role === 'RED_ADMIN' && !this._userService.currentUser.isAdmin) ||
Object.keys(this._ROLE_REQUIREMENTS).reduce(
(value, key) => value || (role === this._ROLE_REQUIREMENTS[key] && this.user?.roles.includes(key)),
Object.keys(this.#ROLE_REQUIREMENTS).reduce(
(value, key) => value || (role === this.#ROLE_REQUIREMENTS[key] && this.user()?.roles.includes(key)),
false,
)
);
@ -85,38 +86,38 @@ export class UserDetailsComponent extends BaseFormComponent implements OnChanges
async save() {
this._loadingService.start();
const userData: IProfileUpdateRequest = { ...this.form.getRawValue(), roles: this.activeRoles };
const userData: IProfileUpdateRequest = {
...this.form.getRawValue(),
roles: this.activeRoles,
sendSetPasswordMail: this.sendSetPasswordMail,
};
if (!this.user) {
if (!this.user()) {
await firstValueFrom(this._userService.create(userData))
.then(() => {
this.closeDialog.emit(true);
})
.catch(error => {
if (error.status === HttpStatusCode.Conflict) {
this._toaster.error(_('add-edit-user.error.email-already-used'));
} else {
this._toaster.error(_('add-edit-user.error.generic'));
}
this._toaster.error(null, { error });
this._loadingService.stop();
});
} else {
await firstValueFrom(this._userService.updateProfile(userData, this.user.id));
await firstValueFrom(this._userService.updateProfile(userData, this.user().id));
this.closeDialog.emit(true);
}
}
delete() {
this._dialogService.deleteUsers([this.user.id], () => this.closeDialog.emit(true));
this._dialogService.deleteUsers([this.user().id], () => this.closeDialog.emit(true));
}
setRolesRequirements(checked: boolean, role: string): void {
if (Object.keys(this._ROLE_REQUIREMENTS).includes(role)) {
if (Object.keys(this.#ROLE_REQUIREMENTS).includes(role)) {
if (checked) {
this.form.patchValue({ [this._ROLE_REQUIREMENTS[role]]: true });
this.form.controls[this._ROLE_REQUIREMENTS[role]].disable();
this.form.patchValue({ [this.#ROLE_REQUIREMENTS[role]]: true });
this.form.controls[this.#ROLE_REQUIREMENTS[role]].disable();
} else {
this.form.controls[this._ROLE_REQUIREMENTS[role]].enable();
this.form.controls[this.#ROLE_REQUIREMENTS[role]].enable();
}
}
}
@ -127,18 +128,19 @@ export class UserDetailsComponent extends BaseFormComponent implements OnChanges
return user.id === this._userService.currentUser.id || (userAdmin && !currentUserAdmin);
}
private _getForm(): UntypedFormGroup {
#getForm(): UntypedFormGroup {
return this._formBuilder.group({
firstName: [this.user?.firstName, Validators.required],
lastName: [this.user?.lastName, Validators.required],
firstName: [this.user()?.firstName, Validators.required],
lastName: [this.user()?.lastName, Validators.required],
email: [
{
value: this.user?.email,
disabled: !!this.user?.email,
value: this.user()?.email,
disabled: !!this.user()?.email,
},
[Validators.required, Validators.email],
],
...this._rolesControls,
...this.#rolesControls,
sendSetPasswordMail: [false],
});
}
}

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

@ -6,9 +6,11 @@
<div class="table-header">Key</div>
<div class="table-header">Value</div>
<ng-container *ngFor="let entry of data.auditEntry.details | keyvalue : originalOrder">
<ng-container *ngFor="let entry of data.auditEntry.details | keyvalue: originalOrder">
<div class="bold">{{ entry.key | humanize }}</div>
<div>{{ entry.value }}</div>
<div>
<pre>{{ entry.value | json }}</pre>
</div>
</ng-container>
</div>
</div>

View File

@ -1,4 +1,4 @@
import { KeyValue, KeyValuePipe, NgForOf } from '@angular/common';
import { JsonPipe, KeyValue, KeyValuePipe, NgForOf } from '@angular/common';
import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { BaseDialogComponent, CircleButtonComponent, HumanizePipe } from '@iqser/common-ui';
@ -16,8 +16,7 @@ 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],
imports: [TranslateModule, NgForOf, KeyValuePipe, HumanizePipe, CircleButtonComponent, JsonPipe],
})
export class AuditInfoDialogComponent extends BaseDialogComponent {
constructor(

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

@ -17,7 +17,7 @@ import { RouterHistoryService } from '@services/router-history.service';
import { auditCategoriesTranslations } from '@translations/audit-categories-translations';
import { Roles } from '@users/roles';
import { applyIntervalConstraints } from '@utils/date-inputs-utils';
import { Dayjs } from 'dayjs';
import dayjs, { Dayjs } from 'dayjs';
import { firstValueFrom } from 'rxjs';
import { AdminDialogService } from '../../services/admin-dialog.service';
import { AuditService } from '../../services/audit.service';
@ -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,
@ -139,16 +138,9 @@ export class AuditScreenComponent extends ListingComponent<Audit> implements OnI
const promises = [];
const category = this.form.get('category').value;
const userId = this.form.get('userId').value;
const from = this.form.get('from').value;
let to = this.form.get('to').value;
if (to) {
const hoursLeft = new Date(to).getHours();
const minutesLeft = new Date(to).getMinutes();
to = to
.clone()
.add(24 - hoursLeft - 1, 'h')
.add(60 - minutesLeft - 1);
}
const from = this.form.get('from').value ? dayjs(this.form.get('from').value).startOf('day').toISOString() : null;
const to = this.form.get('to').value ? dayjs(this.form.get('to').value).endOf('day').toISOString() : null;
const logsRequestBody: IAuditSearchRequest = {
pageSize: PAGE_SIZE,
page: page,

View File

@ -0,0 +1,130 @@
@if (componentDefinitions$ | async; as componentDefinitions) {
<div class="content-container">
<div class="content-header">
<div class="header-title">
<span
class="all-caps-label"
[innerHTML]="'component-definitions.title' | translate: { length: componentDefinitions.length }"
></span>
</div>
<div class="actions">
@if (permissionsService.canEditEntities()) {
<iqser-icon-button
(action)="createEmptyComponentDefinition()"
[label]="'component-definitions.add-new' | translate"
[type]="iconButtonTypes.primary"
icon="iqser:plus"
></iqser-icon-button>
}
</div>
</div>
<div class="content">
<div class="components-list">
<div class="header">
<div class="item-content">
<div class="all-caps-label">{{ 'component-definitions.columns.position' | translate }}</div>
<div class="all-caps-label">{{ 'component-definitions.columns.name' | translate }}</div>
</div>
</div>
<div (cdkDropListDropped)="drop($event)" cdkDropList class="list-content">
@for (component of componentDefinitions; track component) {
<div
class="list-item"
[class.selected]="selectedComponent?.id === component.id"
cdkDrag
(click)="selectComponent(component)"
>
<div class="item-content">
<div class="table-item-title heading">
<mat-icon cdkDragHandle class="draggable" svgIcon="red:draggable-dots"></mat-icon>
<span> {{ component.rank }} </span>
</div>
<div class="table-item-title heading">{{ component.displayName }}</div>
<div class="right-content">
@if (permissionsService.canEditEntities()) {
<iqser-circle-button
[class]="'delete-component-definition'"
(action)="deleteComponent(component.id)"
[tooltip]="'trash.action.delete' | translate"
icon="iqser:trash"
></iqser-circle-button>
}
<mat-icon
[class.not-visible]="selectedComponent?.id !== component.id"
class="arrow-right"
svgIcon="red:arrow-right"
></mat-icon>
</div>
</div>
</div>
}
</div>
</div>
@if (selectedComponent) {
<section class="dialog">
<div class="dialog-header">
@if (selectedComponent.id) {
<div
class="heading-l"
[innerHTML]="'component-definitions.edit-title' | translate: { displayName: selectedComponent.displayName }"
></div>
} @else {
<div class="heading-l" [innerHTML]="'component-definitions.add-title' | translate"></div>
}
</div>
@if (form) {
<form (submit)="save()" [formGroup]="form">
<div class="dialog-content">
<div class="iqser-input-group w-300 required">
<label [translate]="'component-definitions.form.display-name'"></label>
<input
formControlName="displayName"
name="displayName"
placeholder="{{ 'component-definitions.form.display-name-placeholder' | translate }}"
type="text"
/>
</div>
<div class="iqser-input-group w-450">
<label [translate]="'component-definitions.form.description'"></label>
<textarea
[placeholder]="'component-definitions.form.description-placeholder' | translate"
formControlName="description"
iqserHasScrollbar
name="description"
rows="5"
type="text"
></textarea>
</div>
<div class="iqser-input-group w-450">
<label [translate]="'component-definitions.form.technical-name-label'"></label>
<span class="technical-name"> {{ technicalName }} </span>
<label [translate]="'component-definitions.form.autogenerated-label'"></label>
</div>
</div>
<div class="dialog-actions">
<iqser-icon-button
[disabled]="disabled"
[label]="'component-definitions.actions.save' | translate"
[submit]="true"
[type]="iconButtonTypes.primary"
></iqser-icon-button>
@if (selectedComponent.id) {
<div
(click)="initForm()"
[class.disabled]="disabled"
[translate]="'component-definitions.actions.revert'"
class="all-caps-label cancel"
></div>
}
</div>
</form>
}
</section>
}
</div>
</div>
}

View File

@ -0,0 +1,145 @@
%item-content-style {
position: relative;
display: flex;
flex: 1;
margin: 5px;
div:first-child {
width: 100px;
}
div {
display: flex;
align-items: center;
justify-content: center;
.draggable {
cursor: grab;
transform: scale(0.7);
width: 40px;
margin-left: -30px;
::ng-deep svg {
fill: var(--iqser-grey-7);
}
}
}
.right-content {
visibility: hidden;
flex: 1;
justify-content: flex-end;
align-items: center;
gap: 5px;
iqser-circle-button {
visibility: hidden;
}
.arrow-right {
transform: scale(0.7);
&.not-visible {
visibility: hidden;
}
}
}
}
.content-container {
background-color: var(--iqser-grey-6);
height: 100vh;
display: flex;
flex-direction: column;
.content-header {
display: flex;
height: 50px;
background-color: var(--iqser-grey-6);
align-items: center;
padding: 0 24px;
.actions {
display: flex;
flex: 1;
justify-content: flex-end;
}
}
.content {
flex: 1;
display: flex;
gap: 20px;
overflow: hidden;
.components-list {
flex: 1;
background-color: var(--iqser-white);
display: flex;
flex-direction: column;
.header {
height: 30px;
}
.list-content {
overflow-y: auto;
height: calc(100vh - 30px);
outline: none;
}
.list-item {
height: 80px;
transition: background 0.3s ease;
}
.header,
.list-item {
display: flex;
border-bottom: 1px solid var(--iqser-separator);
.item-content {
@extend %item-content-style;
}
}
.list-item:hover,
.selected {
cursor: pointer;
.item-content {
background-color: var(--iqser-grey-8);
.right-content {
visibility: visible;
}
}
}
.list-item:hover > .item-content > .right-content > iqser-circle-button {
visibility: visible;
}
}
section {
background-color: var(--iqser-white);
border-radius: 8px;
width: 700px;
height: 470px;
margin-right: 150px;
.technical-name {
min-height: 16px;
}
}
}
}
.cdk-drag-preview {
.list-item {
transition: background 0.3s ease;
}
.item-content {
@extend %item-content-style;
}
}

View File

@ -0,0 +1,138 @@
import { Component, OnInit, signal } from '@angular/core';
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 { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { PermissionsService } from '@services/permissions.service';
import { MatIcon } from '@angular/material/icon';
import { CdkDrag, CdkDragDrop, CdkDragHandle, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';
import { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
import { AdminDialogService } from '../../services/admin-dialog.service';
@Component({
templateUrl: './component-definitions.component.html',
styleUrls: ['./component-definitions.component.scss'],
providers: listingProvidersFactory(ComponentDefinitionsComponent),
imports: [
IconButtonComponent,
TranslateModule,
CommonModule,
MatIcon,
CdkDragHandle,
CdkDropList,
CdkDrag,
FormsModule,
ReactiveFormsModule,
CircleButtonComponent,
HasScrollbarDirective,
],
})
export default class ComponentDefinitionsComponent extends BaseFormComponent implements OnInit {
readonly #dossierTemplateId = getParam(DOSSIER_TEMPLATE_ID);
readonly #componentDefinitions = signal<IComponentDefinition[]>([]);
protected readonly componentDefinitions$ = toObservable(this.#componentDefinitions);
protected selectedComponent: IComponentDefinition | null = null;
constructor(
private readonly _loadingService: LoadingService,
private readonly _componentDefinitionsService: ComponentDefinitionsService,
private readonly _formBuilder: FormBuilder,
private readonly _dialogService: AdminDialogService,
protected readonly permissionsService: PermissionsService,
) {
super();
}
async ngOnInit() {
this._loadingService.stop();
await this.#loadData();
}
async #loadData() {
const componentDefinitions = await firstValueFrom(
this._componentDefinitionsService.getComponentDefinitions(this.#dossierTemplateId),
);
this.#componentDefinitions.set(componentDefinitions);
}
async createEmptyComponentDefinition() {
this.selectedComponent = {
displayName: '',
description: '',
} as IComponentDefinition;
this.initForm();
}
async save() {
if (this.selectedComponent.id) {
const component = { ...this.form.getRawValue(), id: this.selectedComponent.id };
await firstValueFrom(this._componentDefinitionsService.updateComponentDefinition(this.#dossierTemplateId, component));
} else {
const component = {
...this.form.getRawValue(),
dossierTemplateId: this.#dossierTemplateId,
technicalName: this.technicalName,
};
await firstValueFrom(this._componentDefinitionsService.createComponentDefinition(this.#dossierTemplateId, component));
}
await this.#loadData();
this.selectComponent();
await this.initForm();
}
async drop(event: CdkDragDrop<string>) {
if (event.isPointerOverContainer) {
moveItemInArray(this.#componentDefinitions(), event.previousIndex, event.currentIndex);
const componentIds = this.#componentDefinitions().map(c => c.id);
const componentDefinitions = await firstValueFrom(
this._componentDefinitionsService.reorderComponentDefinitions(this.#dossierTemplateId, componentIds),
);
this.#componentDefinitions.set(componentDefinitions);
}
}
async deleteComponent(componentId: string) {
this._dialogService.openDialog('confirm', null, async () => {
await firstValueFrom(this._componentDefinitionsService.deleteComponentDefinitions(this.#dossierTemplateId, [componentId]));
await this.#loadData();
this.selectedComponent = null;
});
}
initForm() {
this.form = this.#getForm();
this.initialFormValue = this.form.getRawValue();
}
#getForm() {
return this._formBuilder.group({
displayName: [this.selectedComponent?.displayName, Validators.required],
description: [this.selectedComponent?.description],
});
}
selectComponent(component?: IComponentDefinition) {
if (component && this.selectedComponent?.id !== component.id) {
this.selectedComponent = component;
this.initForm();
return;
}
this.selectedComponent = null;
}
get technicalName() {
return this.selectedComponent.technicalName ?? this.form.get('displayName')?.value?.toLowerCase().trim().replace(/\s+/g, '_');
}
}

View File

@ -24,10 +24,15 @@
<div class="iqser-input-group required">
<label translate="add-edit-component-mapping.form.file"></label>
<iqser-upload-file (fileChanged)="fileChanged($event)" [file]="activeFile" [accept]="'.csv'" />
<iqser-upload-file (fileChanged)="changeFile($event)" [file]="activeFile" [accept]="'.csv'" />
</div>
<div class="row">
<div
class="row"
[matTooltip]="'add-edit-component-mapping.disabled-file-options' | translate"
[matTooltipDisabled]="!form.get('encoding')?.disabled"
[matTooltipPosition]="'above'"
>
<div class="iqser-input-group required w-150">
<label translate="add-edit-component-mapping.form.delimiter"></label>
<input
@ -37,6 +42,15 @@
type="text"
/>
</div>
<div class="iqser-input-group required w-150">
<label translate="add-edit-component-mapping.form.quote-char"></label>
<input
[placeholder]="'add-edit-component-mapping.form.quote-char-placeholder' | translate"
formControlName="quoteChar"
name="quoteChar"
type="text"
/>
</div>
<div class="iqser-input-group required w-150">
<label translate="add-edit-component-mapping.form.encoding-type"></label>

View File

@ -1,5 +1,5 @@
import { Component, OnInit } from '@angular/core';
import { CircleButtonComponent, IconButtonComponent, IconButtonTypes, IqserDialogComponent, UploadFileComponent } from '@iqser/common-ui';
import { CircleButtonComponent, IconButtonComponent, IqserDialogComponent, UploadFileComponent } from '@iqser/common-ui';
import { FileAttributeEncodingTypes, IComponentMapping } from '@red/domain';
import { FormBuilder, ReactiveFormsModule, UntypedFormGroup, Validators } from '@angular/forms';
import { TranslateModule } from '@ngx-translate/core';
@ -7,27 +7,30 @@ 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';
import { MatTooltip } from '@angular/material/tooltip';
interface DialogData {
dossierTemplateId: string;
mapping: IComponentMapping;
}
interface DialogResult {
id: string;
name: string;
file: Blob;
encoding: string;
delimiter: string;
quoteChar: string;
fileName?: string;
}
@Component({
templateUrl: './add-edit-component-mapping-dialog.component.html',
styleUrls: ['./add-edit-component-mapping-dialog.component.scss'],
standalone: true,
imports: [
TranslateModule,
ReactiveFormsModule,
@ -37,10 +40,10 @@ interface DialogResult {
CircleButtonComponent,
MatDialogModule,
MatOption,
MatSelectTrigger,
MatSelect,
IconButtonComponent,
UploadFileComponent,
MatTooltip,
],
})
export class AddEditComponentMappingDialogComponent
@ -63,16 +66,20 @@ export class AddEditComponentMappingDialogComponent
async ngOnInit() {
if (this.data.mapping?.fileName) {
this.activeFile = { name: this.data.mapping.fileName } as File;
const file = await firstValueFrom(
const fileContent = await firstValueFrom(
this._componentMappingService.getComponentMappingFile(this.data.dossierTemplateId, this.data.mapping.id),
);
const file = new Blob([fileContent.body as Blob], { type: 'text/csv' });
this.form.get('file').setValue(file);
this.initialFormValue = this.form.getRawValue();
this.#disableEncodingAndQuoteCharAndDelimiter();
}
}
fileChanged(file: Blob) {
changeFile(file: File) {
this.form.get('file').setValue(file);
this.form.get('fileName').setValue(file?.name);
this.#enableEncodingAndQuoteCharAndDelimiter();
}
save() {
@ -83,8 +90,22 @@ export class AddEditComponentMappingDialogComponent
return this._formBuilder.group({
name: [this.data?.mapping?.name, Validators.required],
file: [null, Validators.required],
fileName: [this.data?.mapping?.fileName, Validators.required],
encoding: this.encodingTypeOptions.find(e => e === this.data?.mapping?.encoding) ?? this.encodingTypeOptions[0],
delimiter: [this.data?.mapping?.delimiter ?? ',', Validators.required],
quoteChar: [this.data?.mapping?.quoteChar ?? '"', Validators.required],
});
}
#disableEncodingAndQuoteCharAndDelimiter() {
this.form.get('encoding').disable();
this.form.get('delimiter').disable();
this.form.get('quoteChar').disable();
}
#enableEncodingAndQuoteCharAndDelimiter() {
this.form.get('encoding').enable();
this.form.get('delimiter').enable();
this.form.get('quoteChar').enable();
}
}

View File

@ -44,6 +44,10 @@
<span>{{ entity.numberOfLines }}</span>
</div>
<div class="cell" [matTooltip]="entity.columnLabelsString" [matTooltipPosition]="'above'" [matTooltipClass]="'custom-tooltip'">
<span class="ellipsis">{{ entity.columnLabelsString }}</span>
</div>
<div class="cell">
<div *allow="roles.componentMappings.write; if: currentUser.isAdmin" class="action-buttons">
<iqser-circle-button

View File

@ -0,0 +1,11 @@
.ellipsis {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
::ng-deep .custom-tooltip {
max-width: 300px;
white-space: normal;
word-wrap: break-word;
}

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,29 +24,24 @@ 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';
@Component({
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,
IqserAllowDirective,
MatTooltip,
],
})
export default class ComponentMappingsScreenComponent extends ListingComponent<ComponentMapping> implements OnInit {
@ -61,6 +55,7 @@ export default class ComponentMappingsScreenComponent extends ListingComponent<C
{ label: _('component-mappings-screen.table-col-names.name'), sortByKey: 'searchKey' },
{ label: _('component-mappings-screen.table-col-names.version') },
{ label: _('component-mappings-screen.table-col-names.number-of-lines') },
{ label: _('component-mappings-screen.table-col-names.column-labels') },
];
readonly tableHeaderLabel = _('component-mappings-screen.table-header.title');
@ -95,8 +90,8 @@ export default class ComponentMappingsScreenComponent extends ListingComponent<C
const result = await dialog.result();
if (result) {
this._loadingService.start();
const { id, name, encoding, delimiter } = result;
const newMapping = { id, name, encoding, delimiter };
const { id, name, encoding, delimiter, fileName, quoteChar } = result;
const newMapping = { id, name, encoding, delimiter, fileName, quoteChar };
await firstValueFrom(
this._componentMappingService.createUpdateComponentMapping(this.#dossierTemplateId, newMapping, result.file),
);

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,
@ -91,7 +90,7 @@ export class AddEditDossierAttributeDialogComponent extends BaseDialogComponent
const createOrUpdate = this._dossierAttributesService.createOrUpdate(attribute, this.data.dossierTemplateId);
const result = await createOrUpdate.catch((error: HttpErrorResponse) => {
this._loadingService.stop();
this._toaster.error(_('add-edit-dossier-attribute.error.generic'), { error });
this._toaster.rawError(error.error.message);
return undefined;
});

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

@ -47,6 +47,7 @@
<div class="dialog-actions">
<iqser-icon-button
(action)="save()"
[buttonId]="'save-dossier-state'"
[disabled]="disabled"
[label]="'add-edit-dossier-state.save' | translate"
[submit]="true"

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

@ -4,12 +4,12 @@
</div>
<div class="dialog-content">
<div [innerHTML]="'confirm-delete-dossier-state.warning' | translate : translateArgs" class="heading"></div>
<div [innerHTML]="'confirm-delete-dossier-state.warning' | translate: translateArgs" class="heading"></div>
<form *ngIf="data.dossierCount !== 0 && data.otherStates.length > 0" [formGroup]="form" class="mt-16">
<div class="iqser-input-group">
<mat-checkbox color="primary" formControlName="replace">
{{ 'confirm-delete-dossier-state.question' | translate : { count: data.dossierCount } }}
{{ 'confirm-delete-dossier-state.question' | translate: { count: data.dossierCount } }}
</mat-checkbox>
</div>
@ -30,7 +30,12 @@
</div>
<div class="dialog-actions">
<iqser-icon-button (action)="save()" [label]="label | translate" [type]="iconButtonTypes.primary"></iqser-icon-button>
<iqser-icon-button
(action)="save()"
[buttonId]="'confirm-delete-dossier-state'"
[label]="label | translate"
[type]="iconButtonTypes.primary"
></iqser-icon-button>
<div [translate]="'confirm-delete-dossier-state.cancel'" class="all-caps-label cancel" mat-dialog-close></div>
</div>

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

@ -13,18 +13,20 @@
<span class="small-label">{{ state.dossierCount }}</span>
</div>
<div class="cell">
<div [id]="'dossier_' + (state.name | snakeCase)" class="cell">
<div *ngIf="permissionsService.canPerformDossierStatesActions()" class="action-buttons">
<div [attr.help-mode-key]="'edit_delete_dossier_state'">
<iqser-circle-button
(action)="openEditStateDialog(state)"
[tooltip]="'dossier-states-listing.action.edit' | translate"
[buttonId]="'dossier-state-edit-button'"
icon="iqser:edit"
></iqser-circle-button>
<iqser-circle-button
(action)="openConfirmDeleteStateDialog(state)"
[tooltip]="'dossier-states-listing.action.delete' | translate"
[buttonId]="'dossier-state-delete-button'"
icon="iqser:trash"
></iqser-circle-button>
</div>

View File

@ -14,13 +14,13 @@ import {
import { MatTooltip } from '@angular/material/tooltip';
import { TranslateModule } from '@ngx-translate/core';
import { NgIf } from '@angular/common';
import { SnakeCasePipe } from '@common-ui/pipes/snake-case.pipe';
@Component({
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],
imports: [MatTooltip, CircleButtonComponent, TranslateModule, NgIf, SnakeCasePipe],
})
export class DossierStatesTableItemComponent {
readonly #dialog = inject(MatDialog);

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,7 +1,7 @@
<div class="content-container" iqserHasScrollbar>
<div class="dialog">
<div class="dialog-header">
<div [translate]="'entity.info.heading'" [attr.help-mode-key]="'entity_info'" class="heading-l"></div>
<div [translate]="'entity.info.heading'" [attr.help-mode-key]="'entity_info'" class="heading-l w-full"></div>
<div *ngIf="!permissionsService.canEditEntities()" class="read-only-indicator all-caps-label primary">
<mat-icon class="mr-8" svgIcon="red:read-only"></mat-icon>
@ -26,8 +26,6 @@
></iqser-icon-button>
<div (click)="revert()" [translate]="'entity.info.actions.revert'" class="all-caps-label cancel"></div>
<iqser-help-button *ngIf="!config.IS_DOCUMINE"></iqser-help-button>
</div>
</div>
</div>

View File

@ -26,3 +26,7 @@
min-height: unset;
}
}
.w-full {
width: 100%;
}

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

@ -1,6 +1,5 @@
<div class="dialog-header">
<div class="heading-l" translate="general-config-screen.general.title"></div>
<div translate="general-config-screen.general.subtitle"></div>
</div>
<form (submit)="save()" *ngIf="form" [formGroup]="form">
<div class="dialog-content">

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

@ -11,7 +11,12 @@
<div class="dialog mt-24 mb-0">
<redaction-system-preferences-form></redaction-system-preferences-form>
</div>
<div class="dialog mt-24">
<redaction-smtp-form></redaction-smtp-form>
</div>
@if (smtpLicenseFeatureEnabled) {
<div class="dialog mt-24">
<redaction-smtp-form></redaction-smtp-form>
</div>
} @else {
<div style="visibility: hidden" class="dialog mt-24"></div>
}
</div>

View File

@ -6,26 +6,29 @@ import { BaseFormComponent, IqserListingModule } from '@iqser/common-ui';
import { SystemPreferencesFormComponent } from './system-preferences-form/system-preferences-form.component';
import { RouterHistoryService } from '@services/router-history.service';
import { TranslateModule } from '@ngx-translate/core';
import { LicenseService } from '@services/license.service';
import { ILicenseFeature } from '@red/domain';
@Component({
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 {
readonly currentUser = inject(UserService).currentUser;
readonly routerHistoryService = inject(RouterHistoryService);
readonly licenseService = inject(LicenseService);
@ViewChild(GeneralConfigFormComponent) generalConfigFormComponent: GeneralConfigFormComponent;
@ViewChild(SystemPreferencesFormComponent) systemPreferencesFormComponent: SystemPreferencesFormComponent;
@ViewChild(SmtpFormComponent) smtpFormComponent: SmtpFormComponent;
children: BaseFormComponent[];
smtpLicenseFeatureEnabled: boolean;
get changed(): boolean {
for (const child of this.children) {
if (child.changed) {
if (child?.changed) {
return true;
}
}
@ -43,6 +46,8 @@ export class GeneralConfigScreenComponent extends BaseFormComponent implements A
ngAfterViewInit() {
this.children = [this.generalConfigFormComponent, this.systemPreferencesFormComponent, this.smtpFormComponent];
let licenseFeature: ILicenseFeature = this.licenseService.getFeature('configurableSMTPServer');
this.smtpLicenseFeatureEnabled = licenseFeature != null && licenseFeature.value === true;
}
async save(): Promise<void> {

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 } }}

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