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