From c4de57ab5c73d08093d6b85d05ba1664a0425bff Mon Sep 17 00:00:00 2001 From: floxx2112 Date: Tue, 18 Apr 2023 16:35:18 +0200 Subject: [PATCH] update tag and add link Tag/script --- src/app/add-script/add-script.component.html | 17 ++++- src/app/add-script/add-script.component.ts | 75 ++++++++++++++++--- .../edit-script/edit-script.component.html | 16 +++- src/app/edit-script/edit-script.component.ts | 66 ++++++++++++++-- src/app/model/link-script-tag.ts | 5 ++ .../script-management.component.html | 5 +- .../script-management.component.ts | 46 +++++++++++- src/app/service/script.service.ts | 15 ++-- .../tags-management.component.ts | 4 - 9 files changed, 215 insertions(+), 34 deletions(-) create mode 100644 src/app/model/link-script-tag.ts diff --git a/src/app/add-script/add-script.component.html b/src/app/add-script/add-script.component.html index 19d6e8a..f233b56 100644 --- a/src/app/add-script/add-script.component.html +++ b/src/app/add-script/add-script.component.html @@ -44,7 +44,7 @@ -
+
Informations du Script :
Nom du Script :
@@ -53,8 +53,19 @@ - - +
Tags associés :
+ + +
diff --git a/src/app/add-script/add-script.component.ts b/src/app/add-script/add-script.component.ts index 93b51e6..dcec975 100644 --- a/src/app/add-script/add-script.component.ts +++ b/src/app/add-script/add-script.component.ts @@ -6,6 +6,8 @@ import { Observable, Subject } from 'rxjs'; import { Script } from '../model/script'; import { Router, RouterModule } from '@angular/router'; import { ScriptService } from '../service/script.service'; +import { Tag } from '../model/tag'; +import { TagsService } from '../service/tags.service'; @Component({ selector: 'app-add-script', @@ -22,17 +24,55 @@ export class AddScriptComponent { files: File[] = []; contentOfFiles: string[] = []; scriptToSend: Script | undefined; + dropdownTagList: Tag[] = []; + selectedTagList: Tag[] = []; + dropdownSettings = {}; + linkId: number | undefined; constructor( private scriptService: ScriptService, + private tagService: TagsService, private router: Router, private matIconRegistry: MatIconRegistry, private domSanitizer: DomSanitizer){ this.matIconRegistry.addSvgIcon('upload', this.domSanitizer.bypassSecurityTrustResourceUrl('../../assets/svg/upload.svg')), this.matIconRegistry.addSvgIcon('trash', this.domSanitizer.bypassSecurityTrustResourceUrl('../../assets/svg/trash.svg')) + + const navigation = this.router.getCurrentNavigation(); + if(navigation){ + const state = navigation.extras.state as { + nextId: number + }; + this.linkId = state.nextId; + } + } + ngOnInit(): void{ + this.retrieveTags(); + + this.dropdownSettings = { + singleSelection: false, + idField: "tagId", + textField: "nameTag", + selectAllText: "Tout Sélectionner", + unSelectAllText: "Déselectionner tout", + itemsShowLimit: 3, + allowSearchFilter: true + }; + } + + public retrieveTags(){ + this.tagService.getAllTags().subscribe( + (response: Tag[]) => { + this.dropdownTagList = response; + }, + (error: HttpErrorResponse) => { + alert(error.message) + }); + } + public isNewFile (){ this.newFile = true; } @@ -55,7 +95,6 @@ export class AddScriptComponent { for(const item of event){ this.files.push(item); } - console.log(this.files) } public displayText(index: number){ @@ -79,15 +118,8 @@ export class AddScriptComponent { } public renderFileContent( value: string[] ) : void { - console.log(value) - //this.existingFileData = value; this.newFileData = value[0]; - console.log(this.existingFileData) - } - public seeCont(){ - console.log(this.newFileData) - } public formatBytes(bytes: number) { if (bytes === 0) { @@ -101,7 +133,13 @@ export class AddScriptComponent { } public addScriptToCentral(){ - if(this.nameOfExtension && this.nameOfFile && (this.existingFileData || this.newFileData)){ + if(this.nameOfExtension && this.nameOfFile && this.linkId && this.selectedTagList && (this.existingFileData || this.newFileData)){ + + let listOfTags: String[] = [] + this.selectedTagList.forEach(tag => { + listOfTags.push(tag.nameTag); + }); + const fullName = this.nameOfFile + "." + this.nameOfExtension; let tempData: String = ""; if(this.newFile && this.newFileData){ @@ -114,7 +152,7 @@ export class AddScriptComponent { name: fullName, data: tempData, } - this.scriptService.addOneScript(this.scriptToSend).subscribe( + this.scriptService.addOneScript(this.scriptToSend, listOfTags, this.linkId).subscribe( () => { this.router.navigateByUrl('scriptmanagement'); }, @@ -124,4 +162,21 @@ export class AddScriptComponent { } } + onItemSelect(item: any) { + + } + + onSelectAll(items: any) { + this.selectedTagList = items; + + } + + onItemDeselect(item: any){ + + } + + onDeselectAll(items: any){ + this.selectedTagList = []; + } + } diff --git a/src/app/edit-script/edit-script.component.html b/src/app/edit-script/edit-script.component.html index 19a5d4e..218bd99 100644 --- a/src/app/edit-script/edit-script.component.html +++ b/src/app/edit-script/edit-script.component.html @@ -13,7 +13,7 @@
-
+
Informations du Script :
Nom du Script :
@@ -23,7 +23,19 @@ - +
Tags associés :
+ + +
diff --git a/src/app/edit-script/edit-script.component.ts b/src/app/edit-script/edit-script.component.ts index d3138cf..98978e0 100644 --- a/src/app/edit-script/edit-script.component.ts +++ b/src/app/edit-script/edit-script.component.ts @@ -2,6 +2,8 @@ import { HttpErrorResponse } from '@angular/common/http'; import { Component } from '@angular/core'; import { Router } from '@angular/router'; import { ScriptService } from '../service/script.service'; +import { Tag } from '../model/tag'; +import { TagsService } from '../service/tags.service'; @Component({ selector: 'app-edit-script', @@ -13,32 +15,67 @@ export class EditScriptComponent { newName: String | undefined; newExtension: String | undefined; newData: String | undefined; + editedId: number | undefined; listOfExtension : String[] = ["sql", "ps1", "txt", "bat"]; + dropdownTagList: Tag[] = []; + selectedTagList: Tag[] = []; + dropdownSettings = {}; constructor(private router: Router, - private scriptService: ScriptService,){ + private scriptService: ScriptService, + private tagService: TagsService,){ const navigation = this.router.getCurrentNavigation(); if(navigation){ const state = navigation.extras.state as { name: string, extension: string, - data: string + data: string, + linkId: number, + tags: Tag[] }; const splitString = state.name.split("."); this.defaultName = state.name; this.newName = splitString[0]; this.newExtension = state.extension; this.newData = state.data; - console.log(this.defaultName, this.newData) + this.editedId = state.linkId; + this.selectedTagList = state.tags; } } + ngOnInit(): void{ + this.retrieveTags(); + + this.dropdownSettings = { + singleSelection: false, + idField: "tagId", + textField: "nameTag", + selectAllText: "Tout Sélectionner", + unSelectAllText: "Déselectionner tout", + itemsShowLimit: 3, + allowSearchFilter: true + }; + } + + public retrieveTags(){ + this.tagService.getAllTags().subscribe( + (response: Tag[]) => { + this.dropdownTagList = response; + }, + (error: HttpErrorResponse) => { + alert(error.message) + }); + } + public editScript(){ - if(this.newExtension && this.newName && this.newData && this.defaultName){ + if(this.newExtension && this.editedId && this.newName && this.newData && this.defaultName){ const fullName = this.newName + "." + this.newExtension; - console.log(this.defaultName, fullName, this.newData) + let listOfTags: String[] = [] + this.selectedTagList.forEach(tag => { + listOfTags.push(tag.nameTag); + }); - this.scriptService.editScript(this.newData, this.defaultName, fullName).subscribe( + this.scriptService.editScript(this.newData, this.defaultName, fullName, listOfTags, this.editedId).subscribe( () => { this.router.navigateByUrl('scriptmanagement'); }, @@ -48,5 +85,22 @@ export class EditScriptComponent { } } + onItemSelect(item: any) { + + } + + onSelectAll(items: any) { + this.selectedTagList = items; + + } + + onItemDeselect(item: any){ + + } + + onDeselectAll(items: any){ + this.selectedTagList = []; + } + } diff --git a/src/app/model/link-script-tag.ts b/src/app/model/link-script-tag.ts new file mode 100644 index 0000000..671a0ec --- /dev/null +++ b/src/app/model/link-script-tag.ts @@ -0,0 +1,5 @@ +export interface LinkScriptTag { + id: number; + scriptName: String; + tags: String[]; +} diff --git a/src/app/script-management/script-management.component.html b/src/app/script-management/script-management.component.html index c8dd08a..13cd641 100644 --- a/src/app/script-management/script-management.component.html +++ b/src/app/script-management/script-management.component.html @@ -1,14 +1,15 @@
- + +
|| Gestionnaire de Scripts ||
Gérer les Tags - Ajouter un Script +
diff --git a/src/app/script-management/script-management.component.ts b/src/app/script-management/script-management.component.ts index 41574b1..2102472 100644 --- a/src/app/script-management/script-management.component.ts +++ b/src/app/script-management/script-management.component.ts @@ -7,6 +7,7 @@ import { DomSanitizer } from '@angular/platform-browser'; import { Router, NavigationExtras } from '@angular/router'; import { TagsService } from '../service/tags.service'; import { Tag } from '../model/tag'; +import { LinkScriptTag } from '../model/link-script-tag'; @Component({ @@ -18,6 +19,7 @@ export class ScriptManagementComponent implements OnInit { listScript: String[] = ['INNER JOIN', 'LEFT JOIN', 'RIGHT JOIN', 'FULL JOIN', 'LEFT JOIN', 'RIGHT JOIN', 'FULL JOIN', 'LEFT JOIN', 'RIGHT JOIN', 'FULL JOIN', 'LEFT JOIN', 'RIGHT JOIN', 'FULL JOIN']; textTo: String | undefined; allScripts: Script[] = []; + allLinksScriptTag: LinkScriptTag[]= []; filterScriptName: any; dropdownTagList: Tag[] = []; selectedTagList: Tag[] = []; @@ -36,7 +38,7 @@ export class ScriptManagementComponent implements OnInit { } ngOnInit(): void{ - + this.getAllScriptsWithTags(); this.getAllScripts(); this.retrieveTags(); @@ -86,15 +88,43 @@ export class ScriptManagementComponent implements OnInit { public editScript(script: Script){ + let linkId; + let editedTagList: Tag[] = []; + this.allLinksScriptTag.forEach((linkTag, i) => { + if(linkTag.scriptName == script.name){ + linkId = linkTag.id; + editedTagList = this.dropdownTagList.filter(dp => linkTag.tags.some(lt => lt === dp.nameTag)); + console.log(this.dropdownTagList) + + } + }); + console.log(editedTagList) const navigationExtras: NavigationExtras = { state: { name: script.name, extension: script.extension, - data: script.data + data: script.data, + linkId: linkId, + tags: editedTagList } }; this.router.navigate(['editscript'], navigationExtras); + } + public addScript(){ + let remId; + if(this.allLinksScriptTag.length > 0){ + remId = this.allLinksScriptTag[this.allLinksScriptTag.length - 1].id + 1; + } else { + remId = 1; + } + const navigationExtras: NavigationExtras = { + state: { + nextId: remId + + } + }; + this.router.navigate(['addscript'], navigationExtras); } public getAllScripts(){ @@ -108,6 +138,18 @@ export class ScriptManagementComponent implements OnInit { ); } + public getAllScriptsWithTags(){ + this.scriptService.getAllScriptsWithTags().subscribe( + (response : LinkScriptTag[]) => { + this.allLinksScriptTag = response; + console.log(this.allLinksScriptTag) + }, + (error: HttpErrorResponse) => { + alert(error.message) + } + ); + } + public deleteSpecifiedScript(name: String){ if(window.confirm('Êtes-vous sûr de vouloir supprimer ce Script ?')){ this.scriptService.deleteScript(name).subscribe( diff --git a/src/app/service/script.service.ts b/src/app/service/script.service.ts index a807e8e..2ddd8a9 100644 --- a/src/app/service/script.service.ts +++ b/src/app/service/script.service.ts @@ -1,8 +1,9 @@ import { Injectable } from '@angular/core'; import { environment } from '../../environments/environment.development'; import { HttpClient, HttpParams } from '@angular/common/http'; -import { Observable } from 'rxjs'; +import { Observable, from } from 'rxjs'; import { Script } from '../model/script'; +import { LinkScriptTag } from '../model/link-script-tag'; @Injectable({ providedIn: 'root' @@ -16,17 +17,21 @@ export class ScriptService { return this.http.get(`${this.apiServerUrl}/api/scripts`); } + public getAllScriptsWithTags(): Observable{ + return this.http.get(`${this.apiServerUrl}/api/scripts/link`); + } + public deleteScript(name: String){ return this.http.delete(`${this.apiServerUrl}/api/script/delete/${name}`); } - public addOneScript(script: Script){ - const paramsAddScript = new HttpParams().set('content', script.data.toString()).set('name', script.name.toString()); + public addOneScript(script: Script, tagList: String[], id: number){ + const paramsAddScript = new HttpParams().set('content', script.data.toString()).set('name', script.name.toString()).set('tagList', tagList.join(', ')).set('linkid', id); return this.http.get(`${this.apiServerUrl}/api/script/add`, {params: paramsAddScript}); } - public editScript(content: String, defaultName: String, newName: String){ - const paramsAddScript = new HttpParams().set('content', content.toString()).set('defaultname', defaultName.toString()).set('newname', newName.toString()); + public editScript(content: String, defaultName: String, newName: String, tagList: String[], id: number){ + const paramsAddScript = new HttpParams().set('content', content.toString()).set('defaultname', defaultName.toString()).set('newname', newName.toString()).set('tagList', tagList.join(', ')).set('linkid', id); return this.http.get(`${this.apiServerUrl}/api/script/edit`, {params: paramsAddScript}); } } diff --git a/src/app/tags-management/tags-management.component.ts b/src/app/tags-management/tags-management.component.ts index 6557126..334fd04 100644 --- a/src/app/tags-management/tags-management.component.ts +++ b/src/app/tags-management/tags-management.component.ts @@ -30,7 +30,6 @@ export class TagsManagementComponent implements OnInit{ public retrieveTags(){ this.tagService.getAllTags().subscribe( (response: Tag[]) => { - console.log(response) this.allTags = response; }, (error: HttpErrorResponse) => { @@ -60,14 +59,12 @@ export class TagsManagementComponent implements OnInit{ } public modifyTag(){ - console.log(this.previousId, this.previousName, this.previousDesc, this.modifyName, this.modifyDesc) if(this.previousName && this.previousDesc && this.previousId && this.modifyName && this.modifyDesc){ let modifyTag: Tag = { tagId: this.previousId, nameTag: this.modifyName.toString(), descriptionTag: this.modifyDesc.toString() } - console.log(this.previousName, modifyTag) this.tagService.updateTag(this.previousName.toString(), modifyTag).subscribe( () => { this.modifyPress = false; @@ -98,7 +95,6 @@ export class TagsManagementComponent implements OnInit{ if(window.confirm('Êtes-vous sûr de vouloir supprimer tous les tags ?')){ this.tagService.deleteAllTags().subscribe( () => { - console.log("c supp") }, (error: HttpErrorResponse) => { alert(error.message)