From b4997e9af81768920e4f3cb831368e7109d40271 Mon Sep 17 00:00:00 2001 From: Mostafa Abdo Date: Wed, 26 Feb 2025 12:00:03 -0800 Subject: [PATCH] fix import component --- CSETWebNg/src/app/app.module.ts | 11 +++- .../src/app/import/import.component.html | 2 +- CSETWebNg/src/app/import/import.component.ts | 52 +++++++++++-------- 3 files changed, 39 insertions(+), 26 deletions(-) diff --git a/CSETWebNg/src/app/app.module.ts b/CSETWebNg/src/app/app.module.ts index 5a2c67f4f2..bfd5e58ae7 100644 --- a/CSETWebNg/src/app/app.module.ts +++ b/CSETWebNg/src/app/app.module.ts @@ -688,6 +688,8 @@ import { RolesChangedComponent } from './dialogs/roles-changed/roles-changed.com import { AnalyticsResultsComponent } from './assessment/results/analytics-results/analytics-results.component'; import { firstValueFrom } from 'rxjs'; import { UpgradeComponent } from './assessment/upgrade/upgrade.component'; +import { CodeEditorModule } from '@ngstack/code-editor'; +import { ImportComponent } from './import/import.component'; @NgModule({ declarations: [ @@ -1228,7 +1230,8 @@ import { UpgradeComponent } from './assessment/upgrade/upgrade.component'; QuestionsReviewedComponent, RolesChangedComponent, AnalyticsResultsComponent, - UpgradeComponent + UpgradeComponent, + ImportComponent ], bootstrap: [AppComponent], imports: [BrowserModule, BrowserAnimationsModule, @@ -1292,7 +1295,11 @@ import { UpgradeComponent } from './assessment/upgrade/upgrade.component'; TooltipModule, SwiperModule, EllipsisModule, - HotkeyModule.forRoot(),], + HotkeyModule.forRoot(), + CodeEditorModule.forRoot({ + typingsWorkerUrl: 'assets/workers/typings-worker.js', + baseUrl: 'assets/monaco' + })], providers: [ TranslocoService, provideTranslocoScope('tutorial', 'reports'), diff --git a/CSETWebNg/src/app/import/import.component.html b/CSETWebNg/src/app/import/import.component.html index 7d06d40706..c433bcfa65 100644 --- a/CSETWebNg/src/app/import/import.component.html +++ b/CSETWebNg/src/app/import/import.component.html @@ -185,7 +185,7 @@

Warning: This will clear the code editor - --> + diff --git a/CSETWebNg/src/app/import/import.component.ts b/CSETWebNg/src/app/import/import.component.ts index 037d866051..6bc92335f5 100644 --- a/CSETWebNg/src/app/import/import.component.ts +++ b/CSETWebNg/src/app/import/import.component.ts @@ -22,21 +22,19 @@ // //////////////////////////////// import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core'; -import { CodeEditorComponent, CodeEditorService, CodeModel, provideCodeEditor } from '@ngstack/code-editor'; +import { CodeEditorComponent, CodeEditorService, CodeModel } from '@ngstack/code-editor'; import { saveAs } from 'file-saver'; import { editor } from 'monaco-editor/esm/vs/editor/editor.api'; import { Subject, Subscription } from 'rxjs'; import { debounceTime } from 'rxjs/operators'; import screenfull from 'screenfull'; import { Screenfull } from "screenfull"; -import { FileItem, FileUploader, FileUploadModule } from 'ng2-file-upload'; +import { FileItem, FileUploader } from 'ng2-file-upload'; import { XmlCompletionItemProvider } from '../models/xmlCompletionItemProvider.model'; import { ConfigService } from '../services/config.service'; import { FileUploadClientService, LinkedSet } from '../services/file-client.service'; import { XmlFormatterFactory } from './formatting/xml-formatter'; import { XmlFormattingEditProvider } from './formatting/xml-formatting-edit-provider'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; export class ImportFormData { @@ -49,12 +47,7 @@ export class ImportFormData { templateUrl: './import.component.html', // eslint-disable-next-line host: { class: 'd-flex flex-11a w-100' }, - standalone: true, - imports: [CommonModule, CodeEditorComponent, FormsModule, FileUploadModule], - providers: [provideCodeEditor({ - typingsWorkerUrl: 'assets/workers/typings-worker.js', - baseUrl: 'assets/monaco' - })] + standalone: false, }) export class ImportComponent implements OnInit, OnDestroy { public uploader: FileUploader; @@ -371,20 +364,12 @@ export class ImportComponent implements OnInit, OnDestroy { uri: 'http://custom/schema.xsd', schema: s }); - if (t?.monaco?.languages) { + + if (t?.monaco) { this.monaco = t.monaco; - t.monaco.languages.registerCompletionItemProvider( - 'xml', - new XmlCompletionItemProvider(t, s) - ); - t.monaco.languages.registerDocumentFormattingEditProvider( - 'xml', - new XmlFormattingEditProvider(XmlFormatterFactory.getXmlFormatter()) - ); - t.monaco.languages.registerDocumentRangeFormattingEditProvider( - 'xml', - new XmlFormattingEditProvider(XmlFormatterFactory.getXmlFormatter()) - ); + this.registerXmlProviders(s); + } else { + console.warn("Monaco not fully initialized"); } }); }); @@ -398,6 +383,27 @@ export class ImportComponent implements OnInit, OnDestroy { }); } + private registerXmlProviders(schemaContent: string) { + try { + if (this.monaco?.languages) { + this.monaco.languages.registerCompletionItemProvider( + 'xml', + new XmlCompletionItemProvider(this.monaco, schemaContent) + ); + this.monaco.languages.registerDocumentFormattingEditProvider( + 'xml', + new XmlFormattingEditProvider(XmlFormatterFactory.getXmlFormatter()) + ); + this.monaco.languages.registerDocumentRangeFormattingEditProvider( + 'xml', + new XmlFormattingEditProvider(XmlFormatterFactory.getXmlFormatter()) + ); + } + } catch (err) { + console.error('Failed to register XML providers:', err); + } + } + public showError(): boolean { if (this.state === 'Processing') { return false;