diff --git a/src/main/webapp/app/app.module.ts b/src/main/webapp/app/app.module.ts index 0d54b73..958cca3 100755 --- a/src/main/webapp/app/app.module.ts +++ b/src/main/webapp/app/app.module.ts @@ -25,7 +25,6 @@ import { MatIconModule } from '@angular/material/icon'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { RscTreeComponent } from './rsc-tree/rsc-tree.component'; import { TableScreenComponent } from './table-screen/table-screen.component'; - @NgModule({ imports: [ BrowserModule, diff --git a/src/main/webapp/app/rsc-tree/rsc-tree.component.html b/src/main/webapp/app/rsc-tree/rsc-tree.component.html index 0293aca..c818862 100644 --- a/src/main/webapp/app/rsc-tree/rsc-tree.component.html +++ b/src/main/webapp/app/rsc-tree/rsc-tree.component.html @@ -5,25 +5,17 @@ - +
Context name - - Please enter context! - - + + {{ checkForErrorsIn(namefield) }} + + + {{ ctx.name }} | ID: {{ ctx.id }} @@ -31,12 +23,13 @@ Context UUID - + - +
+

Resource tree

diff --git a/src/main/webapp/app/rsc-tree/rsc-tree.component.ts b/src/main/webapp/app/rsc-tree/rsc-tree.component.ts index 0e53332..8bf14fe 100644 --- a/src/main/webapp/app/rsc-tree/rsc-tree.component.ts +++ b/src/main/webapp/app/rsc-tree/rsc-tree.component.ts @@ -5,9 +5,10 @@ import { NestedTreeControl } from '@angular/cdk/tree'; import { ResourcesLoaderService } from 'app/services/resources-loader.service'; import { IResource } from 'app/services/i-resource'; import { ContextsLoaderService } from 'app/services/contexts-loader.service'; -import { ContextNode, IContextNode } from 'app/services/i-context-node'; +import { IContextNode } from 'app/services/i-context-node'; import { Observable, map, startWith } from 'rxjs'; -import { FormBuilder, FormGroup } from '@angular/forms'; +import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { Clipboard } from '@angular/cdk/clipboard'; @Component({ selector: 'jhi-rsc-tree', @@ -20,12 +21,21 @@ export class RscTreeComponent implements OnInit { nestedDataSource = new MatTreeNestedDataSource(); @Output() treeNode = new EventEmitter(); //emitting event to parent - contexts: ContextNode[]; - filteredContexts: Observable | any; + contexts: IContextNode[]; + public filteredContexts: Observable | undefined; chooseContextForm: FormGroup | any; - constructor(private fb: FormBuilder, private resLoader: ResourcesLoaderService, private ctxLoader: ContextsLoaderService) { + constructor( + private fb: FormBuilder, + private resLoader: ResourcesLoaderService, + private ctxLoader: ContextsLoaderService, + private clipboard: Clipboard + ) { this.contexts = []; + this.chooseContextForm = this.fb.group({ + namefield: ['', [Validators.required]], + uidfield: [''], + }); } get namefield(): any { @@ -42,11 +52,6 @@ export class RscTreeComponent implements OnInit { this.nestedDataSource.data = res; }); - this.chooseContextForm = this.fb.group({ - namefield: null, - uidfield: null, - }); - // per la form dei contesti this.ctxLoader.getData().subscribe(res => { this.contexts = res; @@ -59,23 +64,29 @@ export class RscTreeComponent implements OnInit { ); } //fine oninit + //TODO: questo metodo va inserito in una classe di utility common + checkForErrorsIn(formControl: AbstractControl): string { + if (formControl.hasError('required')) { + return 'Value is required!'; + } + return ''; + } + //mettere ANY come tipo dell'argomento per evitare errore TypeScript nella map!! filterContexts(name: any): IContextNode[] { return this.contexts.filter(ctx => ctx.name.toLowerCase().includes(name.toLowerCase())); } - displayFn(name: string): string { - return name ? name : ''; + displayFn(ctx: IContextNode): string { + return ctx.name ? ctx.name + ' | ' + ctx.id : ''; } - /* -//mettendo ID come value da passare -displayFn(name: string): string { - if (!id) return ''; - let index = this.states.findIndex(state => state.id === id); - return this.states[index].name; + onSelFn(ctx: IContextNode): void { + console.log('-----------' + ctx.id); + this.uidfield.value = ctx.id; } - */ + + // (onSelectionChange)="onSelFn(ctx)" hasNestedChild(_: number, node: IResource): boolean { if (node.children == null) { @@ -84,4 +95,16 @@ displayFn(name: string): string { return node.children.length > 0; } } + + copyUid(): void { + //const res = this.uidfield ? this.uidfield.value : ''; + const res = this.uidfield.value; + this.clipboard.copy(res); + alert(this.uidfield.value); + } + + //TODO: modificare per gestire eventuali eventi sulla onselect + assignUid(uid: string): void { + console.debug('------------UUID:.....' + uid); + } } diff --git a/src/main/webapp/app/rsc-tree/rsc-tree.module.ts b/src/main/webapp/app/rsc-tree/rsc-tree.module.ts index ee5041d..ee128b2 100644 --- a/src/main/webapp/app/rsc-tree/rsc-tree.module.ts +++ b/src/main/webapp/app/rsc-tree/rsc-tree.module.ts @@ -9,6 +9,7 @@ import { MatInputModule } from '@angular/material/input'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatAutocompleteModule } from '@angular/material/autocomplete'; import { TableScreenComponent } from 'app/table-screen/table-screen.component'; +import { ClipboardModule } from '@angular/cdk/clipboard'; @NgModule({ declarations: [],