From 284c3179368baffd2394236a863666c470d63051 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Thu, 7 Sep 2023 21:06:49 +0300 Subject: [PATCH 1/2] DM-414: Base dialog change detection --- libs/common-ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/common-ui b/libs/common-ui index 60ace0115..523f2c999 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 60ace0115100fe43591cabe973b5cb0067def173 +Subproject commit 523f2c999e05ed66749d9abc1d43a750246dc7bd From 7f029da67619d61fa31d08bcc9d7071da5cc0c9b Mon Sep 17 00:00:00 2001 From: George Date: Fri, 8 Sep 2023 10:51:44 +0300 Subject: [PATCH 2/2] DM-408, add errors next to save button. --- .../rules-screen/rules-screen.component.html | 23 ++++++---- .../rules-screen/rules-screen.component.scss | 42 +++++++++++++++++++ .../rules-screen/rules-screen.component.ts | 9 +++- .../admin/screens/rules/rules.module.ts | 11 ++++- apps/red-ui/src/assets/config/config.json | 10 ++--- apps/red-ui/src/assets/i18n/redact/de.json | 10 +++-- apps/red-ui/src/assets/i18n/redact/en.json | 10 +++-- apps/red-ui/src/assets/i18n/scm/de.json | 10 +++-- apps/red-ui/src/assets/i18n/scm/en.json | 7 ++-- 9 files changed, 103 insertions(+), 29 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.html index 80bb36faf..88a74ec4e 100644 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.html @@ -6,12 +6,21 @@
- +
+ + + + + +
+
+ -
+
+
diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.scss index 02e4143ba..978ec8419 100644 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.scss +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.scss @@ -23,3 +23,45 @@ ngx-monaco-editor { font-style: italic; } } + +.changes-box { + flex-direction: column; + justify-content: center; + align-items: start; + gap: 10px; + + > div { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + width: 100%; + } + + .errors { + cursor: pointer; + + .icon { + scale: 0.7; + } + + :first-child { + display: flex; + align-items: center; + gap: 0.5em; + font-weight: 500; + /* TODO: Update this to --iqser-error when added */ + color: var(--iqser-red-1); + } + + .face-up { + transform: rotate(90deg); + } + + margin-right: 0; + } + + .actions { + gap: 24px; + } +} diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts index a3020e91b..ea1da9364 100644 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit, signal, ViewChild } from '@angular/core'; import { PermissionsService } from '@services/permissions.service'; import { IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui'; import { saveAs } from 'file-saver'; @@ -25,6 +25,7 @@ interface SyntaxError { changeDetection: ChangeDetectionStrategy.OnPush, }) export class RulesScreenComponent implements OnInit, ComponentCanDeactivate { + readonly numberOfErrors = signal(0); readonly iconButtonTypes = IconButtonTypes; readonly editorOptions: IStandaloneEditorConstructionOptions = { theme: 'vs', @@ -90,8 +91,13 @@ export class RulesScreenComponent implements OnInit, ComponentCanDeactivate { this._decorations = this._codeEditor.deltaDecorations(this._decorations, newDecorations); } + goToErrors() { + this._codeEditor.trigger('keyboard', 'editor.action.marker.next', null); + } + async save(): Promise { this._loadingService.start(); + this.numberOfErrors.set(0); await firstValueFrom( this._rulesService.uploadRules({ rules: this._codeEditor.getModel().getValue(), @@ -180,6 +186,7 @@ export class RulesScreenComponent implements OnInit, ComponentCanDeactivate { }, }); }); + this.numberOfErrors.set(markers.length); this._errorGlyphs = this._codeEditor.deltaDecorations(this._errorGlyphs, glyphs); (window as any).monaco.editor.setModelMarkers(model, model.id, markers); } diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules.module.ts b/apps/red-ui/src/app/modules/admin/screens/rules/rules.module.ts index bd26cc278..e6b248714 100644 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules.module.ts +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules.module.ts @@ -7,11 +7,20 @@ import { PendingChangesGuard } from '@guards/can-deactivate.guard'; import { TranslateModule } from '@ngx-translate/core'; import { IconButtonComponent } from '@iqser/common-ui'; import { FormsModule } from '@angular/forms'; +import { MatIconModule } from '@angular/material/icon'; const routes = [{ path: '', component: RulesScreenComponent, canDeactivate: [PendingChangesGuard] }]; @NgModule({ declarations: [RulesScreenComponent], - imports: [RouterModule.forChild(routes), CommonModule, MonacoEditorModule, TranslateModule, IconButtonComponent, FormsModule], + imports: [ + RouterModule.forChild(routes), + CommonModule, + MonacoEditorModule, + TranslateModule, + IconButtonComponent, + FormsModule, + MatIconModule, + ], }) export class RulesModule {} diff --git a/apps/red-ui/src/assets/config/config.json b/apps/red-ui/src/assets/config/config.json index 2ccc6f6d1..42bf5941f 100644 --- a/apps/red-ui/src/assets/config/config.json +++ b/apps/red-ui/src/assets/config/config.json @@ -1,9 +1,9 @@ { "ADMIN_CONTACT_NAME": null, "ADMIN_CONTACT_URL": null, - "API_URL": "https://frontend2.iqser.cloud", + "API_URL": "https://dan.iqser.cloud", "APP_NAME": "RedactManager", - "IS_DOCUMINE": true, + "IS_DOCUMINE": false, "RULE_EDITOR_DEV_ONLY": false, "AUTO_READ_TIME": 3, "BACKEND_APP_VERSION": "4.4.40", @@ -13,13 +13,13 @@ "MAX_RETRIES_ON_SERVER_ERROR": 3, "OAUTH_CLIENT_ID": "redaction", "OAUTH_IDP_HINT": null, - "OAUTH_URL": "https://frontend2.iqser.cloud/auth", + "OAUTH_URL": "https://dan.iqser.cloud/auth", "RECENT_PERIOD_IN_HOURS": 24, "SELECTION_MODE": "structural", "MANUAL_BASE_URL": "https://docs.redactmanager.com/preview", "ANNOTATIONS_THRESHOLD": 1000, - "THEME": "scm", - "BASE_TRANSLATIONS_DIRECTORY": "/assets/i18n/scm/", + "THEME": "redact", + "BASE_TRANSLATIONS_DIRECTORY": "/assets/i18n/redact/", "AVAILABLE_NOTIFICATIONS_DAYS": 30, "AVAILABLE_OLD_NOTIFICATIONS_MINUTES": 60, "NOTIFICATIONS_THRESHOLD": 1000, diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json index 7d86de477..491127258 100644 --- a/apps/red-ui/src/assets/i18n/redact/de.json +++ b/apps/red-ui/src/assets/i18n/redact/de.json @@ -1237,7 +1237,8 @@ "reason": "", "redacted-text": "", "section": "", - "type": "" + "type": "", + "unchanged": "" }, "title": "" } @@ -2209,16 +2210,17 @@ "title": "" }, "rules-screen": { - "title": "", - "warning-text": "", "error": { "generic": "Es ist ein Fehler aufgetreten ... Die Regeln konnten nicht aktualisiert werden!" }, + "errors-found": "", "revert-changes": "Anmeldedaten speichern", "save-changes": "Änderungen speichern", "success": { "generic": "Die Regeln wurden aktualisiert!" - } + }, + "title": "", + "warning-text": "" }, "search-screen": { "cols": { diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json index 92551c9ae..90be40ba8 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -1237,7 +1237,8 @@ "reason": "Reason", "redacted-text": "Redacted text", "section": "Paragraph / Location", - "type": "Type" + "type": "Type", + "unchanged": "" }, "title": "Edit {type, select, image{Image} hint{Hint} other{Redaction}}" } @@ -2209,16 +2210,17 @@ "title": "Structured Component Management" }, "rules-screen": { - "title": "Rule Editor", - "warning-text": "Warning: experimental feature!", "error": { "generic": "Something went wrong... Rules update failed!" }, + "errors-found": "{errors, plural, one{An error} other{{errors} errors}} found in rules", "revert-changes": "Revert", "save-changes": "Save Changes", "success": { "generic": "Rules updated!" - } + }, + "title": "Rule Editor", + "warning-text": "Warning: experimental feature!" }, "search-screen": { "cols": { diff --git a/apps/red-ui/src/assets/i18n/scm/de.json b/apps/red-ui/src/assets/i18n/scm/de.json index 2ac5e426b..d1471dccf 100644 --- a/apps/red-ui/src/assets/i18n/scm/de.json +++ b/apps/red-ui/src/assets/i18n/scm/de.json @@ -1237,7 +1237,8 @@ "reason": "", "redacted-text": "", "section": "", - "type": "" + "type": "", + "unchanged": "" }, "title": "" } @@ -2209,16 +2210,17 @@ "title": "" }, "rules-screen": { - "title": "", - "warning-text": "", "error": { "generic": "Es ist ein Fehler aufgetreten ... Die Regeln konnten nicht aktualisiert werden!" }, + "errors-found": "", "revert-changes": "Anmeldedaten speichern", "save-changes": "Änderungen speichern", "success": { "generic": "Die Regeln wurden aktualisiert!" - } + }, + "title": "", + "warning-text": "" }, "search-screen": { "cols": { diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json index 67035859e..caf96dbd9 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -2210,16 +2210,17 @@ "title": "Component View" }, "rules-screen": { - "title": "Rule Editor", - "warning-text": "Warning: experimental feature!", "error": { "generic": "Something went wrong... Rules update failed!" }, + "errors-found": "", "revert-changes": "Revert", "save-changes": "Save Changes", "success": { "generic": "Rules updated!" - } + }, + "title": "Rule Editor", + "warning-text": "Warning: experimental feature!" }, "search-screen": { "cols": {