Commit baf24c4c authored by Romain DELEAU's avatar Romain DELEAU

trace on download/upload/game-objective/game-context/mission-objective/mission-context/role

parent f4aa56e2
...@@ -31,6 +31,7 @@ import { Title } from '@angular/platform-browser'; ...@@ -31,6 +31,7 @@ import { Title } from '@angular/platform-browser';
import { MatSnackBar } from '@angular/material/snack-bar'; import { MatSnackBar } from '@angular/material/snack-bar';
import { LoadingsucessSnackbarComponent } from './components/snackbars/loadingsucess-snackbar/loadingsucess-snackbar.component'; import { LoadingsucessSnackbarComponent } from './components/snackbars/loadingsucess-snackbar/loadingsucess-snackbar.component';
import { LoadingfailSnackbarComponent } from './components/snackbars/loadingfail-snackbar/loadingfail-snackbar.component'; import { LoadingfailSnackbarComponent } from './components/snackbars/loadingfail-snackbar/loadingfail-snackbar.component';
import { Trace } from './class/trace/trace';
@Component({ @Component({
selector: 'app-root', selector: 'app-root',
...@@ -79,6 +80,7 @@ export class AppComponent { ...@@ -79,6 +80,7 @@ export class AppComponent {
this.titleService.setTitle('RLG Maker - '+this.scenario.projectName); this.titleService.setTitle('RLG Maker - '+this.scenario.projectName);
} }
this.scenario.tooltips = this.tooltipService.activatedTooltips; this.scenario.tooltips = this.tooltipService.activatedTooltips;
this.scenario.traces.push(new Trace(this.scenario.traces.length, 'save', undefined, undefined, 'all', 'Scenario'));
const jsonString = JSON.stringify(this.scenario); const jsonString = JSON.stringify(this.scenario);
const blob = new Blob([jsonString], { type: 'application/json' }); const blob = new Blob([jsonString], { type: 'application/json' });
const url = URL.createObjectURL(blob); const url = URL.createObjectURL(blob);
...@@ -87,6 +89,8 @@ export class AppComponent { ...@@ -87,6 +89,8 @@ export class AppComponent {
link.href = url; link.href = url;
link.click(); link.click();
URL.revokeObjectURL(url); URL.revokeObjectURL(url);
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length, 'cancel_save', undefined, undefined, 'all', 'Scenario'));
} }
}); });
} }
...@@ -227,6 +231,7 @@ export class AppComponent { ...@@ -227,6 +231,7 @@ export class AppComponent {
}); });
this.scenario = scenario; this.scenario = scenario;
this.pieceDetailsService.piece = this.scenario; this.pieceDetailsService.piece = this.scenario;
this.scenario.traces.push(new Trace(this.scenario.traces.length, 'import', undefined, undefined, 'all', 'Scenario'));
if (scenario.projectName) { if (scenario.projectName) {
this.titleService.setTitle('RLG Maker - ' + this.scenario.projectName); this.titleService.setTitle('RLG Maker - ' + this.scenario.projectName);
} else { } else {
......
...@@ -4,6 +4,7 @@ import { GameEducationnalObjective } from "../game-educationnal-objective/game-e ...@@ -4,6 +4,7 @@ import { GameEducationnalObjective } from "../game-educationnal-objective/game-e
import { Mission } from "../mission/mission"; import { Mission } from "../mission/mission";
import { Ressource } from "../ressource/ressource"; import { Ressource } from "../ressource/ressource";
import { Comment } from "../comment/comment"; import { Comment } from "../comment/comment";
import { Trace } from "../trace/trace";
export class Scenario { export class Scenario {
...@@ -16,4 +17,5 @@ export class Scenario { ...@@ -16,4 +17,5 @@ export class Scenario {
comments: Comment[] = []; comments: Comment[] = [];
projectName: string = ''; projectName: string = '';
tooltips: boolean = true; tooltips: boolean = true;
traces: Trace[] = [new Trace(0, 'new', undefined, undefined, 'all', 'Scenario')];
} }
\ No newline at end of file
import { Trace } from './trace';
describe('Trace', () => {
it('should create an instance', () => {
expect(new Trace()).toBeTruthy();
});
});
export class Trace {
sequence: number;
timestamp: string;
action: string;
mission?: number;
role?: number;
case?: string;
target?: string;
color?: string;
flag?: string;
constructor(sequence: number, action: string, mission?: number, role?: number, Case?: string, target?: string, color?: string, flag?: string) {
this.sequence = sequence;
this.timestamp = new Date().toLocaleString('fr');
this.action = action;
this.mission = mission;
this.role = role;
this.case = Case;
this.target = target;
this.color = color;
this.flag = flag;
}
}
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<mat-icon class="piece-form-comment" fontIcon="comment" *ngIf="scenario.missions[i].comments.length > 0"></mat-icon> <mat-icon class="piece-form-comment" fontIcon="comment" *ngIf="scenario.missions[i].comments.length > 0"></mat-icon>
<div class="piece-form-objective"> <div class="piece-form-objective">
<label for="objective">Commun pour la mission {{i+1}}</label> <label for="objective">Commun pour la mission {{i+1}}</label>
<textarea name="objective" [(ngModel)]="educationnalObjective.objective" placeholder="Comprendre les rôles impliqués dans la conception d'un site web" <textarea name="objective" [(ngModel)]="educationnalObjective.objective" (change)="editTrace($event, 'Obj_m')" placeholder="Comprendre les rôles impliqués dans la conception d'un site web"
matTooltip="Ce que l’on veut atteindre en situation de formation. Commencer chaque objectif par un verbe. Si votre jeu est composé de plusieurs missions, distinguez les objectifs globaux du jeu et les objectifs de chaque mission" matTooltip="Ce que l’on veut atteindre en situation de formation. Commencer chaque objectif par un verbe. Si votre jeu est composé de plusieurs missions, distinguez les objectifs globaux du jeu et les objectifs de chaque mission"
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea>
</div> </div>
......
...@@ -8,6 +8,7 @@ import { TooltipService } from 'src/app/services/tooltip/tooltip.service'; ...@@ -8,6 +8,7 @@ import { TooltipService } from 'src/app/services/tooltip/tooltip.service';
import { SuppressDialogComponent } from 'src/app/components/dialogs/suppress-dialog/suppress-dialog.component'; import { SuppressDialogComponent } from 'src/app/components/dialogs/suppress-dialog/suppress-dialog.component';
import { CleanDialogComponent } from 'src/app/components/dialogs/clean-dialog/clean-dialog.component'; import { CleanDialogComponent } from 'src/app/components/dialogs/clean-dialog/clean-dialog.component';
import { CreateDialogComponent } from 'src/app/components/dialogs/create-dialog/create-dialog.component'; import { CreateDialogComponent } from 'src/app/components/dialogs/create-dialog/create-dialog.component';
import { Trace } from 'src/app/class/trace/trace';
@Component({ @Component({
selector: 'app-educational-objective', selector: 'app-educational-objective',
...@@ -36,6 +37,9 @@ export class EducationalObjectiveComponent implements OnInit { ...@@ -36,6 +37,9 @@ export class EducationalObjectiveComponent implements OnInit {
dialogRef.afterClosed().subscribe(result => { dialogRef.afterClosed().subscribe(result => {
if (result == true) { if (result == true) {
this.scenario.missions.push(new Mission()); this.scenario.missions.push(new Mission());
this.scenario.traces.push(new Trace(this.scenario.traces.length,'new',this.i,undefined,'all','Mission_['+(this.scenario.missions.length-1)+']'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'cancel_new',this.i,undefined,'all','Mission_['+(this.scenario.missions.length-1)+']'));
} }
}); });
} }
...@@ -45,6 +49,9 @@ export class EducationalObjectiveComponent implements OnInit { ...@@ -45,6 +49,9 @@ export class EducationalObjectiveComponent implements OnInit {
dialogRef.afterClosed().subscribe(result => { dialogRef.afterClosed().subscribe(result => {
if (result == true) { if (result == true) {
this.educationnalObjective.objective = ''; this.educationnalObjective.objective = '';
this.scenario.traces.push(new Trace(this.scenario.traces.length,'erase',this.i,undefined,'all','Obj_m_['+(this.i)+']','#D0BBDB'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'cancel_erase',this.i,undefined,'all','Obj_m_['+(this.i)+']','#D0BBDB'));
} }
}); });
} }
...@@ -54,6 +61,9 @@ export class EducationalObjectiveComponent implements OnInit { ...@@ -54,6 +61,9 @@ export class EducationalObjectiveComponent implements OnInit {
dialogRef.afterClosed().subscribe(result => { dialogRef.afterClosed().subscribe(result => {
if (result == true) { if (result == true) {
this.scenario.missions.splice(this.i, 1); this.scenario.missions.splice(this.i, 1);
this.scenario.traces.push(new Trace(this.scenario.traces.length,'delete',this.i,undefined,undefined,'Mission_['+(this.i)+']'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'cancel_delete',this.i,undefined,undefined,'Mission_['+(this.i)+']'));
} }
}); });
} }
...@@ -66,4 +76,11 @@ export class EducationalObjectiveComponent implements OnInit { ...@@ -66,4 +76,11 @@ export class EducationalObjectiveComponent implements OnInit {
return res; return res;
} }
editTrace(event: any, source: string): void {
if (event.target.value != '') {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'write',this.i,undefined,source,'Obj_m', '#D0BBDB'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'erase',this.i,undefined,source,'Obj_m', '#D0BBDB'));
}
}
} }
...@@ -13,31 +13,31 @@ ...@@ -13,31 +13,31 @@
<div class="piece-form-title">Contexte du jeu</div> <div class="piece-form-title">Contexte du jeu</div>
<div class="piece-form-universe"> <div class="piece-form-universe">
<label for="univers">Univers</label> <label for="univers">Univers</label>
<input name="univers" type="text" [(ngModel)]="gameContext.univers" placeholder="Réaliste" <input name="univers" type="text" [(ngModel)]="gameContext.univers" (change)="editTrace($event, 'Universe')" placeholder="Réaliste"
matTooltip="Est-ce que le jeu est réaliste ou est-il futuriste, médiéval-fantastique, post-apocalyptique, est-ce la science-fiction ?" matTooltip="Est-ce que le jeu est réaliste ou est-il futuriste, médiéval-fantastique, post-apocalyptique, est-ce la science-fiction ?"
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/>
</div> </div>
<div class="piece-form-support"> <div class="piece-form-support">
<label for="support">Medium / Support(s)</label> <label for="support">Medium / Support(s)</label>
<input name="support" type="text" [(ngModel)]="gameContext.support" placeholder="Ordinateur en 3D" <input name="support" type="text" [(ngModel)]="gameContext.support" (change)="editTrace($event, 'Medium')" placeholder="Ordinateur en 3D"
matTooltip="Votre jeu sera-t-il sur ordinateur, en VR, sur tablette / smartphone ou sans technologie particulière ?" matTooltip="Votre jeu sera-t-il sur ordinateur, en VR, sur tablette / smartphone ou sans technologie particulière ?"
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/>
</div> </div>
<div class="piece-form-duration"> <div class="piece-form-duration">
<label for="duration">Durée</label> <label for="duration">Durée</label>
<input name="duration" type="text" [(ngModel)]="gameContext.duration" placeholder="3h" <input name="duration" type="text" [(ngModel)]="gameContext.duration" (change)="editTrace($event, 'Duration_g')" placeholder="3h"
matTooltip="Combien de temps va durer le jeu ? Sachant que le jeu comporte 1 ou plusieurs missions. Une mission peut être la durée d’une séance de cours et le jeu se déroulerait sur plusieurs séances de cours." matTooltip="Combien de temps va durer le jeu ? Sachant que le jeu comporte 1 ou plusieurs missions. Une mission peut être la durée d’une séance de cours et le jeu se déroulerait sur plusieurs séances de cours."
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/>
</div> </div>
<div class="piece-form-intrigue"> <div class="piece-form-intrigue">
<label for="intrigue">Intrigue</label> <label for="intrigue">Intrigue</label>
<textarea name="intrigue" [(ngModel)]="gameContext.intrigue" placeholder="Vous êtes stagiaire dans une agence de communication et devez faire vos preuves pour être embauché.e" <textarea name="intrigue" [(ngModel)]="gameContext.intrigue" (change)="editTrace($event, 'Plot_g')" placeholder="Vous êtes stagiaire dans une agence de communication et devez faire vos preuves pour être embauché.e"
matTooltip="Quelle est l’histoire du jeu ? Quel est l’enjeu pour les joueurs ?" matTooltip="Quelle est l’histoire du jeu ? Quel est l’enjeu pour les joueurs ?"
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea>
</div> </div>
<div class="piece-form-other"> <div class="piece-form-other">
<label for="other">Autre</label> <label for="other">Autre</label>
<textarea name="other" [(ngModel)]="gameContext.other" placeholder="Contexte d’utilisation : lieu, présence de tuteur/formateur, à quel moment du cursus utiliser ce jeu, matériel nécessaire" <textarea name="other" [(ngModel)]="gameContext.other" (change)="editTrace($event, 'Other_g')" placeholder="Contexte d’utilisation : lieu, présence de tuteur/formateur, à quel moment du cursus utiliser ce jeu, matériel nécessaire"
matTooltip="Tout autre élément que vous souhaiteriez prendre en compte dans le jeu et non défini dans les tuiles" matTooltip="Tout autre élément que vous souhaiteriez prendre en compte dans le jeu et non défini dans les tuiles"
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea>
</div> </div>
......
...@@ -5,6 +5,7 @@ import { PieceDetailsService } from 'src/app/services/piece-details/piece-detail ...@@ -5,6 +5,7 @@ import { PieceDetailsService } from 'src/app/services/piece-details/piece-detail
import { TooltipService } from 'src/app/services/tooltip/tooltip.service'; import { TooltipService } from 'src/app/services/tooltip/tooltip.service';
import { CleanDialogComponent } from 'src/app/components/dialogs/clean-dialog/clean-dialog.component'; import { CleanDialogComponent } from 'src/app/components/dialogs/clean-dialog/clean-dialog.component';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { Trace } from 'src/app/class/trace/trace';
@Component({ @Component({
selector: 'app-game-context', selector: 'app-game-context',
...@@ -32,6 +33,9 @@ export class GameContextComponent implements OnInit { ...@@ -32,6 +33,9 @@ export class GameContextComponent implements OnInit {
this.gameContext.duration = ''; this.gameContext.duration = '';
this.gameContext.intrigue = ''; this.gameContext.intrigue = '';
this.gameContext.other = ''; this.gameContext.other = '';
this.scenario.traces.push(new Trace(this.scenario.traces.length,'erase',undefined,undefined,'all','Context_g','#B6CC87'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'cancel_erase',undefined,undefined,'all','Context_g','#B6CC87'));
} }
}); });
} }
...@@ -40,4 +44,11 @@ export class GameContextComponent implements OnInit { ...@@ -40,4 +44,11 @@ export class GameContextComponent implements OnInit {
this.pieceDetailsService.piece = this.scenario; this.pieceDetailsService.piece = this.scenario;
} }
editTrace(event: any, source: string): void {
if (event.target.value != '') {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'write',undefined,undefined,source,'Context_g', '#B6CC87'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'erase',undefined,undefined,source,'Context_g', '#B6CC87'));
}
}
} }
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<mat-icon class="piece-form-comment" fontIcon="comment" *ngIf="scenario.comments.length > 0"></mat-icon> <mat-icon class="piece-form-comment" fontIcon="comment" *ngIf="scenario.comments.length > 0"></mat-icon>
<div class="piece-form-objective"> <div class="piece-form-objective">
<label for="objective">Commun pour le jeu</label> <label for="objective">Commun pour le jeu</label>
<textarea name="objective" [(ngModel)]="gameEducationnalObjective.objective" placeholder="- Améliorer les softskills&#10;- Apprendre à coopérer" <textarea name="objective" [(ngModel)]="gameEducationnalObjective.objective" (change)="editTrace($event, 'Obj_game')" placeholder="- Améliorer les softskills&#10;- Apprendre à coopérer"
matTooltip="Ce que l’on veut atteindre en situation de formation. Commencer chaque objectif par un verbe. Si votre jeu est composé de plusieurs missions, distinguez les objectifs globaux du jeu et les objectifs de chaque mission." matTooltip="Ce que l’on veut atteindre en situation de formation. Commencer chaque objectif par un verbe. Si votre jeu est composé de plusieurs missions, distinguez les objectifs globaux du jeu et les objectifs de chaque mission."
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea>
</div> </div>
......
...@@ -5,6 +5,7 @@ import { PieceDetailsService } from 'src/app/services/piece-details/piece-detail ...@@ -5,6 +5,7 @@ import { PieceDetailsService } from 'src/app/services/piece-details/piece-detail
import { TooltipService } from 'src/app/services/tooltip/tooltip.service'; import { TooltipService } from 'src/app/services/tooltip/tooltip.service';
import { CleanDialogComponent } from 'src/app/components/dialogs/clean-dialog/clean-dialog.component'; import { CleanDialogComponent } from 'src/app/components/dialogs/clean-dialog/clean-dialog.component';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { Trace } from 'src/app/class/trace/trace';
@Component({ @Component({
selector: 'app-game-educationnal-objective', selector: 'app-game-educationnal-objective',
...@@ -32,7 +33,18 @@ export class GameEducationnalObjectiveComponent implements OnInit { ...@@ -32,7 +33,18 @@ export class GameEducationnalObjectiveComponent implements OnInit {
dialogRef.afterClosed().subscribe(result => { dialogRef.afterClosed().subscribe(result => {
if (result == true) { if (result == true) {
this.gameEducationnalObjective.objective = ''; this.gameEducationnalObjective.objective = '';
this.scenario.traces.push(new Trace(this.scenario.traces.length,'erase',undefined,undefined,'all','Obj_g','#BAC5D8'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'cancel_erase',undefined,undefined,'all','Obj_g','#BAC5D8'));
} }
}); });
} }
editTrace(event: any, source: string): void {
if (event.target.value != '') {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'write',undefined,undefined,source,'Obj_g', '#BAC5D8'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'erase',undefined,undefined,source,'Obj_g', '#BAC5D8'));
}
}
} }
...@@ -20,25 +20,25 @@ ...@@ -20,25 +20,25 @@
<div class="piece-form-title">Contexte de la mission {{i+1}}</div> <div class="piece-form-title">Contexte de la mission {{i+1}}</div>
<div class="piece-form-duration"> <div class="piece-form-duration">
<label for="duration">Durée</label> <label for="duration">Durée</label>
<input name="duration" type="text" [(ngModel)]="missionContext.duration" placeholder="1h" <input name="duration" type="text" [(ngModel)]="missionContext.duration" (change)="editTrace($event, 'Duration_m')" placeholder="1h"
matTooltip="Combien de temps va durer la mission ?" matTooltip="Combien de temps va durer la mission ?"
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/>
</div> </div>
<div class="piece-form-intrigue"> <div class="piece-form-intrigue">
<label for="intrigue">Intrigue</label> <label for="intrigue">Intrigue</label>
<textarea name="intrigue" [(ngModel)]="missionContext.intrigue" placeholder="Concevez un site web ergonomique pour votre premier client" <textarea name="intrigue" [(ngModel)]="missionContext.intrigue" (change)="editTrace($event, 'Plot_m')" placeholder="Concevez un site web ergonomique pour votre premier client"
matTooltip="Quelle est l’histoire de la mission ? Quel est l’enjeu pour les joueurs ?" matTooltip="Quelle est l’histoire de la mission ? Quel est l’enjeu pour les joueurs ?"
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea>
</div> </div>
<div class="piece-form-communication"> <div class="piece-form-communication">
<label for="communication">Moyen(s) de communication</label> <label for="communication">Moyen(s) de communication</label>
<textarea name="communication" [(ngModel)]="missionContext.communication" <textarea name="communication" [(ngModel)]="missionContext.communication" (change)="editTrace($event, 'Communication')" placeholder="Chat en ligne, vocal en ligne, face à face, talkie walkie, pigeon voyageur..."
matTooltip="Comment les joueurs vont-ils communiquer entre eux : à l'oral, par chat, en vocal sur ordinateur, par messages, etc." matTooltip="Comment les joueurs vont-ils communiquer entre eux : à l'oral, par chat, en vocal sur ordinateur, par messages, etc."
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea>
</div> </div>
<div class="piece-form-divers"> <div class="piece-form-divers">
<label for="divers">Autre</label> <label for="divers">Autre</label>
<textarea name="divers" [(ngModel)]="missionContext.various" placeholder="Contexte d’utilisation : lieu, présence de tuteur/formateur, à quel moment du cursus utiliser ce jeu, matériel nécessaire" <textarea name="divers" [(ngModel)]="missionContext.various" (change)="editTrace($event, 'Other_m')" placeholder="Contexte d’utilisation : lieu, présence de tuteur/formateur, à quel moment du cursus utiliser ce jeu, matériel nécessaire, public cible"
matTooltip="Tout autre élément que vous souhaiteriez prendre en compte dans la mission et non défini dans les tuiles" matTooltip="Tout autre élément que vous souhaiteriez prendre en compte dans la mission et non défini dans les tuiles"
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea>
</div> </div>
......
...@@ -8,6 +8,7 @@ import { TooltipService } from 'src/app/services/tooltip/tooltip.service'; ...@@ -8,6 +8,7 @@ import { TooltipService } from 'src/app/services/tooltip/tooltip.service';
import { SuppressDialogComponent } from 'src/app/components/dialogs/suppress-dialog/suppress-dialog.component'; import { SuppressDialogComponent } from 'src/app/components/dialogs/suppress-dialog/suppress-dialog.component';
import { CleanDialogComponent } from 'src/app/components/dialogs/clean-dialog/clean-dialog.component'; import { CleanDialogComponent } from 'src/app/components/dialogs/clean-dialog/clean-dialog.component';
import { CreateDialogComponent } from 'src/app/components/dialogs/create-dialog/create-dialog.component'; import { CreateDialogComponent } from 'src/app/components/dialogs/create-dialog/create-dialog.component';
import { Trace } from 'src/app/class/trace/trace';
@Component({ @Component({
selector: 'app-mission-context', selector: 'app-mission-context',
...@@ -36,6 +37,9 @@ export class MissionContextComponent implements OnInit { ...@@ -36,6 +37,9 @@ export class MissionContextComponent implements OnInit {
dialogRef.afterClosed().subscribe(result => { dialogRef.afterClosed().subscribe(result => {
if (result == true) { if (result == true) {
this.scenario.missions.push(new Mission()); this.scenario.missions.push(new Mission());
this.scenario.traces.push(new Trace(this.scenario.traces.length,'new',this.i,undefined,'all','Mission_['+(this.scenario.missions.length-1)+']'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'cancel_new',this.i,undefined,'all','Mission_['+(this.scenario.missions.length-1)+']'));
} }
}); });
} }
...@@ -48,6 +52,9 @@ export class MissionContextComponent implements OnInit { ...@@ -48,6 +52,9 @@ export class MissionContextComponent implements OnInit {
this.missionContext.intrigue = ''; this.missionContext.intrigue = '';
this.missionContext.communication = ''; this.missionContext.communication = '';
this.missionContext.various = ''; this.missionContext.various = '';
this.scenario.traces.push(new Trace(this.scenario.traces.length,'erase',this.i,undefined,'all','Context_m_['+(this.i)+']','#EAC19B'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'cancel_erase',this.i,undefined,'all','Context_m_['+(this.i)+']','#EAC19B'));
} }
}); });
} }
...@@ -57,6 +64,9 @@ export class MissionContextComponent implements OnInit { ...@@ -57,6 +64,9 @@ export class MissionContextComponent implements OnInit {
dialogRef.afterClosed().subscribe(result => { dialogRef.afterClosed().subscribe(result => {
if (result == true) { if (result == true) {
this.scenario.missions.splice(this.i, 1); this.scenario.missions.splice(this.i, 1);
this.scenario.traces.push(new Trace(this.scenario.traces.length,'delete',this.i,undefined,'all','Mission_['+(this.i)+']'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'cancel_delete',this.i,undefined,'all','Mission_['+(this.i)+']'));
} }
}); });
} }
...@@ -69,4 +79,11 @@ export class MissionContextComponent implements OnInit { ...@@ -69,4 +79,11 @@ export class MissionContextComponent implements OnInit {
return res; return res;
} }
editTrace(event: any, source: string): void {
if (event.target.value != '') {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'write',this.i,undefined,source,'Context_m', '#EAC19B'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'erase',this.i,undefined,source,'Context_m', '#EAC19B'));
}
}
} }
...@@ -23,26 +23,26 @@ ...@@ -23,26 +23,26 @@
<img src="../../../assets/background-images/role2_opacity0.png" draggable="false" *ngIf="i == 1"/> <img src="../../../assets/background-images/role2_opacity0.png" draggable="false" *ngIf="i == 1"/>
<div class="piece-form-intitule"> <div class="piece-form-intitule">
<label for="intitule">Intitulé</label> <label for="intitule">Intitulé</label>
<input name="intitule" type="text" [(ngModel)]="role.intitule" placeholder="Développeur/euse web" <input name="intitule" type="text" [(ngModel)]="role.intitule" (change)="editTrace($event,'name')" placeholder="Développeur/euse web"
matTooltip="Nom de ce rôle." matTooltip="Nom de ce rôle."
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/>
</div> </div>
<div class="piece-form-name"> <div class="piece-form-name">
<label for="name">Nom de la quête</label> <label for="name">Nom de la quête</label>
<input name="name" type="text" [(ngModel)]="role.questName" placeholder="Intégration de site web" <input name="name" type="text" [(ngModel)]="role.questName" (change)="editTrace($event,'quest_name')" placeholder="Intégration de site web"
matTooltip="En 2-3 mots, l'intitulé de la quête de ce rôle" matTooltip="En 2-3 mots, l'intitulé de la quête de ce rôle"
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/>
</div> </div>
<div class="piece-form-description"> <div class="piece-form-description">
<label for="description">Description</label> <label for="description">Description</label>
<textarea name="description" [(ngModel)]="role.description" <textarea name="description" [(ngModel)]="role.description" (change)="editTrace($event,'description_r')"
matTooltip="Élément précis sur ce rôle si nécessaire." matTooltip="Élément précis sur ce rôle si nécessaire."
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea>
</div> </div>
<div class="piece-form-objectives"> <div class="piece-form-objectives">
<label for="objective">Objectif(s) pédagoqique(s)</label> <label for="objective">Objectif(s) pédagoqique(s)</label>
<div class="piece-form-objectives-objective" *ngFor="let objective of role.educationnalObjectives, let i = index"> <div class="piece-form-objectives-objective" *ngFor="let objective of role.educationnalObjectives, let i = index">
<input name="objective" type="text" [(ngModel)]="role.educationnalObjectives[i].objective" placeholder="Nom de l'objectif" <input name="objective" type="text" [(ngModel)]="role.educationnalObjectives[i].objective" (change)="editTrace($event, 'Obj_['+(i)+']')" placeholder="Nom de l'objectif"
matTooltip="Les objectifs visés pour ce rôle en particulier" matTooltip="Les objectifs visés pour ce rôle en particulier"
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/>
<button mat-button *ngIf="role.educationnalObjectives.length > 1" (click)="removeEducationnalObjective(i)"><mat-icon fontIcon="remove"></mat-icon></button> <button mat-button *ngIf="role.educationnalObjectives.length > 1" (click)="removeEducationnalObjective(i)"><mat-icon fontIcon="remove"></mat-icon></button>
...@@ -68,8 +68,8 @@ ...@@ -68,8 +68,8 @@
</div> </div>
<div class="piece-form-rewards-reward-objects" *ngIf="reward.type == 'objects'"> <div class="piece-form-rewards-reward-objects" *ngIf="reward.type == 'objects'">
<div class="piece-form-rewards-reward-objects-object" *ngFor="let object of getObjectsReward(i).objects, let j = index"> <div class="piece-form-rewards-reward-objects-object" *ngFor="let object of getObjectsReward(i).objects, let j = index">
<input type="number" [(ngModel)]="object.number"/> <input type="number" [(ngModel)]="object.number" (change)="editTrace($event, 'Reward_['+i+']_object_['+j+']_quantity')"/>
<input type="text" [(ngModel)]="object.name" placeholder="Nom de l'objet"/> <input type="text" [(ngModel)]="object.name" (change)="editTrace($event, 'Reward_['+i+']_object_['+j+']_name')" placeholder="Nom de l'objet"/>
<button mat-button (click)="removeObject(i,j)"><mat-icon fontIcon="remove"></mat-icon></button> <button mat-button (click)="removeObject(i,j)"><mat-icon fontIcon="remove"></mat-icon></button>
</div> </div>
<button mat-button class="piece-form-rewards-reward-objects-add" (click)="addObject(i)"><mat-icon fontIcon="add"></mat-icon></button> <button mat-button class="piece-form-rewards-reward-objects-add" (click)="addObject(i)"><mat-icon fontIcon="add"></mat-icon></button>
...@@ -90,8 +90,8 @@ ...@@ -90,8 +90,8 @@
</div> </div>
--> -->
<div class="piece-form-rewards-reward-skill" *ngIf="reward.type == 'skill'"> <div class="piece-form-rewards-reward-skill" *ngIf="reward.type == 'skill'">
<input type="number" [(ngModel)]="getSkillReward(i).quantity"/> <input type="number" [(ngModel)]="getSkillReward(i).quantity" (change)="editTrace($event, 'Reward_['+i+']_quantity')"/>
<select [(ngModel)]="getSkillReward(i).skill"> <select [(ngModel)]="getSkillReward(i).skill" (change)="editTrace($event, 'Reward_['+i+']_skill')">
<ng-container *ngFor="let skill of role.ressources"> <ng-container *ngFor="let skill of role.ressources">
<option [ngValue]="skill" *ngIf="skill.type == 'attribut'">{{skill.name}}</option> <option [ngValue]="skill" *ngIf="skill.type == 'attribut'">{{skill.name}}</option>
</ng-container> </ng-container>
...@@ -112,13 +112,13 @@ ...@@ -112,13 +112,13 @@
<button mat-button (click)="removeReward(i)"><mat-icon fontIcon="remove"></mat-icon></button> <button mat-button (click)="removeReward(i)"><mat-icon fontIcon="remove"></mat-icon></button>
</div> </div>
<div class="piece-form-rewards-reward-objective" *ngIf="reward.type == 'objective'"> <div class="piece-form-rewards-reward-objective" *ngIf="reward.type == 'objective'">
<select [(ngModel)]="getObjectiveReward(i).objective"> <select [(ngModel)]="getObjectiveReward(i).objective" (change)="editTrace($event, 'Reward_['+i+']_objective')">
<option [ngValue]="objective" *ngFor="let objective of role.educationnalObjectives">{{objective.objective}}</option> <option [ngValue]="objective" *ngFor="let objective of role.educationnalObjectives">{{objective.objective}}</option>
</select> </select>
<button mat-button (click)="removeReward(i)"><mat-icon fontIcon="remove"></mat-icon></button> <button mat-button (click)="removeReward(i)"><mat-icon fontIcon="remove"></mat-icon></button>
</div> </div>
<div class="piece-form-rewards-reward-other" *ngIf="reward.type == 'other'"> <div class="piece-form-rewards-reward-other" *ngIf="reward.type == 'other'">
<textarea [(ngModel)]="getOtherReward(i).text"></textarea> <textarea [(ngModel)]="getOtherReward(i).text" (change)="editTrace($event, 'Reward_['+i+']_other')"></textarea>
<button mat-button (click)="removeReward(i)"><mat-icon fontIcon="remove"></mat-icon></button> <button mat-button (click)="removeReward(i)"><mat-icon fontIcon="remove"></mat-icon></button>
</div> </div>
</div> </div>
...@@ -131,7 +131,7 @@ ...@@ -131,7 +131,7 @@
<div class="piece-form-title">Personnalisation</div> <div class="piece-form-title">Personnalisation</div>
<div class="piece-form-personnalization-appearance"> <div class="piece-form-personnalization-appearance">
<label>Apparence, équipement</label> <label>Apparence, équipement</label>
<textarea [(ngModel)]="role.stuff" <textarea [(ngModel)]="role.stuff" (change)="editTrace($event, 'equipment')"
matTooltip="Si le rôle a une tenue particulière ou des objets spécifiques" matTooltip="Si le rôle a une tenue particulière ou des objets spécifiques"
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea>
</div> </div>
...@@ -144,15 +144,15 @@ ...@@ -144,15 +144,15 @@
<div class="piece-form-ressources-ressource" *ngFor="let ressource of role.ressources, let i = index"> <div class="piece-form-ressources-ressource" *ngFor="let ressource of role.ressources, let i = index">
<div class="piece-form-ressources-ressource-name"> <div class="piece-form-ressources-ressource-name">
<label for="name">Nom</label> <label for="name">Nom</label>
<input name="name" type="text" [(ngModel)]="ressource.name"/> <input name="name" type="text" [(ngModel)]="ressource.name" (change)="editTrace($event, 'Skill/Ressource_['+i+']_name')"/>
</div> </div>
<div class="piece-form-ressources-ressource-quantity"> <div class="piece-form-ressources-ressource-quantity">
<label for="quantity">Nombre / stats</label> <label for="quantity">Nombre / stats</label>
<input name="quantity" type="text" [(ngModel)]="ressource.number"> <input name="quantity" type="text" [(ngModel)]="ressource.number" (change)="editTrace($event, 'Skill/Ressource_['+i+']_stats')">
</div> </div>
<div class="piece-form-ressources-ressource-quantity"> <div class="piece-form-ressources-ressource-quantity">
<label for="type">Type</label> <label for="type">Type</label>
<select name="type" [(ngModel)]="ressource.type"> <select name="type" [(ngModel)]="ressource.type" (change)="editTrace($event, 'Skill/Ressource_['+i+']_type')">
<option value="ressource">Ressource / Objet</option> <option value="ressource">Ressource / Objet</option>
<option value="attribut">Compétence</option> <option value="attribut">Compétence</option>
</select> </select>
...@@ -169,29 +169,29 @@ ...@@ -169,29 +169,29 @@
<div> <div>
<div class="piece-form-supplementary-form-name"> <div class="piece-form-supplementary-form-name">
<label for="name">Nom</label> <label for="name">Nom</label>
<input name="name" type="text" [(ngModel)]="supplementaryRole.name" <input name="name" type="text" [(ngModel)]="supplementaryRole.name" (change)="editTrace($event, 'Secondary_role_['+i+']_name')"
matTooltip="Intitulé du rôle supplémentaire" matTooltip="Intitulé du rôle supplémentaire"
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"/>
</div> </div>
<div class="piece-form-supplementary-form-color"> <div class="piece-form-supplementary-form-color">
<label for="color">Couleur</label> <label for="color">Couleur</label>
<input name="color" type="color" [(ngModel)]="supplementaryRole.color"/> <input name="color" type="color" [(ngModel)]="supplementaryRole.color" (change)="editTrace($event, 'Secondary_role_['+i+']_color')"/>
</div> </div>
<div class="piece-form-supplementary-form-textarea"> <div class="piece-form-supplementary-form-textarea">
<label for="objectives">Objectifs</label> <label for="objectives">Objectifs</label>
<textarea name="objectives" [(ngModel)]="supplementaryRole.objectives" <textarea name="objectives" [(ngModel)]="supplementaryRole.objectives" (change)="editTrace($event, 'Secondary_role_['+i+']_obj')"
matTooltip="Objectifs (pédagogiques) de ce rôle supplémentaire" matTooltip="Objectifs (pédagogiques) de ce rôle supplémentaire"
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea>
</div> </div>
<div class="piece-form-supplementary-form-textarea"> <div class="piece-form-supplementary-form-textarea">
<label for="skills">Compétences</label> <label for="skills">Compétences</label>
<textarea name="skills" [(ngModel)]="supplementaryRole.skills" <textarea name="skills" [(ngModel)]="supplementaryRole.skills" (change)="editTrace($event, 'Secondary_role_['+i+']_skill')"
matTooltip="Compétences spécifiques à ce rôle pour effectuer les tâches qui lui seront liées (même couleur)" matTooltip="Compétences spécifiques à ce rôle pour effectuer les tâches qui lui seront liées (même couleur)"
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea>
</div> </div>
<div class="piece-form-supplementary-form-textarea"> <div class="piece-form-supplementary-form-textarea">
<label for="rules">Règles</label> <label for="rules">Règles</label>
<textarea name="rules" [(ngModel)]="supplementaryRole.rules" <textarea name="rules" [(ngModel)]="supplementaryRole.rules" (change)="editTrace($event, 'Secondary_role_['+i+']_rule')"
matTooltip="Règles spécifiques à ce rôle (a-t-il des contraintes ou des droits, accès supplémentaires ?)" matTooltip="Règles spécifiques à ce rôle (a-t-il des contraintes ou des droits, accès supplémentaires ?)"
matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea> matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"></textarea>
</div> </div>
......
...@@ -17,6 +17,7 @@ import { TooltipService } from 'src/app/services/tooltip/tooltip.service'; ...@@ -17,6 +17,7 @@ import { TooltipService } from 'src/app/services/tooltip/tooltip.service';
import { SuppressDialogComponent } from 'src/app/components/dialogs/suppress-dialog/suppress-dialog.component'; import { SuppressDialogComponent } from 'src/app/components/dialogs/suppress-dialog/suppress-dialog.component';
import { CleanDialogComponent } from 'src/app/components/dialogs/clean-dialog/clean-dialog.component'; import { CleanDialogComponent } from 'src/app/components/dialogs/clean-dialog/clean-dialog.component';
import { CreateDialogComponent } from 'src/app/components/dialogs/create-dialog/create-dialog.component'; import { CreateDialogComponent } from 'src/app/components/dialogs/create-dialog/create-dialog.component';
import { Trace } from 'src/app/class/trace/trace';
@Component({ @Component({
selector: 'app-role', selector: 'app-role',
...@@ -49,6 +50,8 @@ export class RoleComponent implements OnInit { ...@@ -49,6 +50,8 @@ export class RoleComponent implements OnInit {
dialogRef.afterClosed().subscribe(result => { dialogRef.afterClosed().subscribe(result => {
if (result == true) { if (result == true) {
this.mission.roles.push(new Role()); this.mission.roles.push(new Role());
let missionIndex: number = this.scenario.missions.findIndex(mission => mission == this.mission);
this.scenario.traces.push(new Trace(this.scenario.traces.length,'new',missionIndex,this.i,'all','Role_['+(this.mission.roles.length-1)+']','#9AD5EC'));
} }
}); });
} }
...@@ -75,6 +78,7 @@ export class RoleComponent implements OnInit { ...@@ -75,6 +78,7 @@ export class RoleComponent implements OnInit {
}); });
}); });
this.role.ressources = []; this.role.ressources = [];
this.scenario.traces.push(new Trace(this.scenario.traces.length,'erase',this.missionIndex,this.i,'all','Role_['+(this.i)+']','#9AD5EC'));
} }
}); });
} }
...@@ -84,6 +88,8 @@ export class RoleComponent implements OnInit { ...@@ -84,6 +88,8 @@ export class RoleComponent implements OnInit {
dialogRef.afterClosed().subscribe(result => { dialogRef.afterClosed().subscribe(result => {
if (result == true) { if (result == true) {
this.mission.roles.splice(this.i, 1); this.mission.roles.splice(this.i, 1);
let missionIndex: number = this.scenario.missions.findIndex(mission => mission == this.mission);
this.scenario.traces.push(new Trace(this.scenario.traces.length,'delete',missionIndex,this.i,'all','Role_['+(this.i)+']','#9AD5EC'));
} }
}); });
} }
...@@ -98,6 +104,7 @@ export class RoleComponent implements OnInit { ...@@ -98,6 +104,7 @@ export class RoleComponent implements OnInit {
addEducationnalObjective(): void { addEducationnalObjective(): void {
this.role.educationnalObjectives.push(new RoleEducationnalObjective()); this.role.educationnalObjectives.push(new RoleEducationnalObjective());
this.scenario.traces.push(new Trace(this.scenario.traces.length,'new',this.missionIndex,this.i,'Obj_['+(this.role.educationnalObjectives.length-1)+']', 'Role_['+this.i+']', '#9AD5EC', '*'));
} }
removeEducationnalObjective(index: number): void { removeEducationnalObjective(index: number): void {
...@@ -105,12 +112,16 @@ export class RoleComponent implements OnInit { ...@@ -105,12 +112,16 @@ export class RoleComponent implements OnInit {
dialogRef.afterClosed().subscribe(result => { dialogRef.afterClosed().subscribe(result => {
if (result == true) { if (result == true) {
this.role.educationnalObjectives.splice(index, 1); this.role.educationnalObjectives.splice(index, 1);
this.scenario.traces.push(new Trace(this.scenario.traces.length,'delete',this.missionIndex,this.i,'Obj_['+(index)+']', 'Role_['+this.i+']', '#9AD5EC', '*'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'cancel_delete',this.missionIndex,this.i,'Obj_['+(index)+']', 'Role_['+this.i+']', '#9AD5EC', '*'));
} }
}); });
} }
addRessource(): void { addRessource(): void {
this.role.ressources.push(new Ressource()); this.role.ressources.push(new Ressource());
this.scenario.traces.push(new Trace(this.scenario.traces.length,'new',this.missionIndex,this.i,'skill/ressource_['+this.role.ressources.length+']', 'Role_['+this.i+']', '#9AD5EC', '*'));
} }
removeRessource(index: number): void { removeRessource(index: number): void {
...@@ -127,12 +138,16 @@ export class RoleComponent implements OnInit { ...@@ -127,12 +138,16 @@ export class RoleComponent implements OnInit {
}); });
}); });
this.role.ressources.splice(index, 1); this.role.ressources.splice(index, 1);
this.scenario.traces.push(new Trace(this.scenario.traces.length,'delete',this.missionIndex,this.i,'Skill/Ressource_['+index+']', 'Role_['+this.i+']', '#9AD5EC', '*'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'cancel_delete',this.missionIndex,this.i,'Skill/Ressource_['+index+']', 'Role_['+this.i+']', '#9AD5EC', '*'));
} }
}); });
} }
addSupplementaryRole(): void { addSupplementaryRole(): void {
this.role.supplementaryRoles.push(new SupplementaryRole()); this.role.supplementaryRoles.push(new SupplementaryRole());
this.scenario.traces.push(new Trace(this.scenario.traces.length,'new',this.missionIndex,this.i,'Secondary_role_['+this.role.supplementaryRoles.length+']', 'Role_['+this.i+']', '#9AD5EC', '*'));
} }
removeSupplementaryRole(index: number) { removeSupplementaryRole(index: number) {
...@@ -140,22 +155,32 @@ export class RoleComponent implements OnInit { ...@@ -140,22 +155,32 @@ export class RoleComponent implements OnInit {
dialogRef.afterClosed().subscribe(result => { dialogRef.afterClosed().subscribe(result => {
if (result == true) { if (result == true) {
this.role.supplementaryRoles.splice(index, 1); this.role.supplementaryRoles.splice(index, 1);
this.scenario.traces.push(new Trace(this.scenario.traces.length,'delete',this.missionIndex,this.i,'Secondary_role_['+index+']', 'Role_['+this.i+']', '#9AD5EC', '*'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'cancel_delete',this.missionIndex,this.i,'Secondary_role_['+index+']', 'Role_['+this.i+']', '#9AD5EC', '*'));
} }
}); });
} }
addReward(): void { addReward(): void {
this.role.rewards.push(new QuestReward()); this.role.rewards.push(new QuestReward());
this.scenario.traces.push(new Trace(this.scenario.traces.length,'new',this.missionIndex,this.i,'Reward_['+this.role.rewards.length+']', 'Role_['+this.i+']', '#9AD5EC', '*'));
} }
changeRewardType(index: number, type: string): void { changeRewardType(index: number, type: string): void {
switch(type) { switch(type) {
case 'objects': this.role.rewards[index] = new ObjectsReward(); break; case 'objects': this.role.rewards[index] = new ObjectsReward();
case 'quest': this.role.rewards[index] = new QuestReward(); break; this.scenario.traces.push(new Trace(this.scenario.traces.length,'transform',this.missionIndex,this.i,'Reward_['+index+']_transform_into_[ObjectsReward]', 'Role_['+this.i+']', '#9AD5EC', '*')); break;
case 'skill': this.role.rewards[index] = new SkillReward(); break; case 'quest': this.role.rewards[index] = new QuestReward();
case 'objective': this.role.rewards[index] = new ObjectiveReward(); break; this.scenario.traces.push(new Trace(this.scenario.traces.length,'transform',this.missionIndex,this.i,'Reward_['+index+']_transform_into_[QuestReward]', 'Role_['+this.i+']', '#9AD5EC', '*'));break;
case 'character': this.role.rewards[index] = new CharacterReward(); break; case 'skill': this.role.rewards[index] = new SkillReward();
case 'other': this.role.rewards[index] = new OtherReward(); break; this.scenario.traces.push(new Trace(this.scenario.traces.length,'transform',this.missionIndex,this.i,'Reward_['+index+']_transform_into_[SkillReward]', 'Role_['+this.i+']', '#9AD5EC', '*'));break;
case 'objective': this.role.rewards[index] = new ObjectiveReward();
this.scenario.traces.push(new Trace(this.scenario.traces.length,'transform',this.missionIndex,this.i,'Reward_['+index+']_transform_into_[ObjectiveReward]', 'Role_['+this.i+']', '#9AD5EC', '*'));break;
case 'character': this.role.rewards[index] = new CharacterReward();
this.scenario.traces.push(new Trace(this.scenario.traces.length,'transform',this.missionIndex,this.i,'Reward_['+index+']_transform_into_[CharacterReward]', 'Role_['+this.i+']', '#9AD5EC', '*')); break;
case 'other': this.role.rewards[index] = new OtherReward();
this.scenario.traces.push(new Trace(this.scenario.traces.length,'transform',this.missionIndex,this.i,'Reward_['+index+']_transform_into_[OtherReward]', 'Role_['+this.i+']', '#9AD5EC', '*'));break;
} }
} }
...@@ -164,6 +189,9 @@ export class RoleComponent implements OnInit { ...@@ -164,6 +189,9 @@ export class RoleComponent implements OnInit {
dialogRef.afterClosed().subscribe(result => { dialogRef.afterClosed().subscribe(result => {
if (result == true) { if (result == true) {
this.role.rewards.splice(index, 1); this.role.rewards.splice(index, 1);
this.scenario.traces.push(new Trace(this.scenario.traces.length,'delete',this.missionIndex,this.i,'Reward_['+index+']', 'Role_['+this.i+']', '#9AD5EC', '*'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'cancel_delete',this.missionIndex,this.i,'Reward_['+index+']', 'Role_['+this.i+']', '#9AD5EC', '*'));
} }
}); });
} }
...@@ -194,6 +222,7 @@ export class RoleComponent implements OnInit { ...@@ -194,6 +222,7 @@ export class RoleComponent implements OnInit {
addObject(index: number): void { addObject(index: number): void {
this.getObjectsReward(index).objects.push(new Ressource); this.getObjectsReward(index).objects.push(new Ressource);
this.scenario.traces.push(new Trace(this.scenario.traces.length,'new',this.missionIndex,this.i,'Reward_['+index+']_object_['+this.getObjectsReward(index).objects.length+']', 'Role_['+this.i+']', '#9AD5EC', '*'));
} }
removeObject(i: number, j: number): void { removeObject(i: number, j: number): void {
...@@ -201,6 +230,9 @@ export class RoleComponent implements OnInit { ...@@ -201,6 +230,9 @@ export class RoleComponent implements OnInit {
dialogRef.afterClosed().subscribe(result => { dialogRef.afterClosed().subscribe(result => {
if (result == true) { if (result == true) {
this.getObjectsReward(i).objects.splice(j, 1); this.getObjectsReward(i).objects.splice(j, 1);
this.scenario.traces.push(new Trace(this.scenario.traces.length,'delete',this.missionIndex,this.i,'Reward_['+i+']_object_['+j+']', 'Role_['+this.i+']', '#9AD5EC', '*'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'cancel_delete',this.missionIndex,this.i,'Reward_['+i+']_object_['+j+']', 'Role_['+this.i+']', '#9AD5EC', '*'));
} }
}); });
} }
...@@ -211,5 +243,14 @@ export class RoleComponent implements OnInit { ...@@ -211,5 +243,14 @@ export class RoleComponent implements OnInit {
reward.intitule = this.role.intitule; reward.intitule = this.role.intitule;
reward.questName = value; reward.questName = value;
this.role.rewards[index] = reward; this.role.rewards[index] = reward;
this.editTrace(event, 'Reward_['+index+']_quest');
}
editTrace(event: any, source: string): void {
if (event.target.value != '') {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'write',this.missionIndex,this.i,source,'Role_['+(this.i)+']', '#9AD5EC','*'));
} else {
this.scenario.traces.push(new Trace(this.scenario.traces.length,'erase',this.missionIndex,this.i,source,'Role_['+(this.i)+']', '#9AD5EC','*'));
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment