app.component.html 21.8 KB
Newer Older
Romain DELEAU's avatar
Romain DELEAU committed
1
<div class="container">
Romain DELEAU's avatar
Romain DELEAU committed
2
    <div class="container-appDragScroll" [ngClass]="siderFolded ? 'siderFolded' : ''" appDragScroll appMouseWheelZoom [scenario]="scenario">
3
        <div class="container-appMouseWheelZoom">
Romain DELEAU's avatar
Romain DELEAU committed
4 5 6

            <div class="container-scenario-main">
                <div class="container-scenario-main-gamePieces" [style.z-index]="4">
Romain DELEAU's avatar
Romain DELEAU committed
7 8
                    <app-game-educationnal-objective [scenario]="scenario" [gameEducationnalObjective]="this.scenario.educationnalObjective"></app-game-educationnal-objective>
                    <app-game-context [style.z-index]="2" [scenario]="scenario" [gameContext]="this.scenario.context"></app-game-context>
9 10
                    <app-game-characters [style.z-index]="3" [scenario]="scenario"></app-game-characters>
                    <app-rules [style.z-index]="4" [scenario]="scenario"></app-rules>
Romain DELEAU's avatar
Romain DELEAU committed
11 12
                </div>

Romain DELEAU's avatar
Romain DELEAU committed
13
                <div class="container-scenario-main-missions">
14
                    <div class="container-scenario-main-missions-mission" *ngFor="let mission of this.scenario.missions, let missionIndex = index">
15 16

                        <div class="container-scenario-chronologie">
17
                            <div class="container-scenario-chronologie-title">{{'steps_mission' | translate}}</div>
18
                            <div class="container-scenario-chronologie-steps">
19
                                <div *ngFor="let step of mission.chronologie, let i = index" [style.z-index]="mission.chronologie.length-i">
20
                                    <app-step *ngIf="step != null" [step]="step" [scenario]="scenario" [missionIndex]="missionIndex" [parent]="mission" [index]="i" [mission]="mission"></app-step>
Romain DELEAU's avatar
Romain DELEAU committed
21
                                    <div class="container-scenario-main-missions-mission-buttonAdd" style="height: 300px;" *ngIf="step == null">
22
                                        <button mat-button (click)="addMissionStep(mission, i, missionIndex)"
23
                                        [matTooltip]="translate.instant('plus_tooltip')"
24
                                        matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"><mat-icon fontIcon="add"></mat-icon></button>
Romain DELEAU's avatar
Romain DELEAU committed
25 26 27
                                    </div>
                                </div>
                                <div class="container-scenario-main-missions-mission-buttonAdd" style="height: 300px;">
28
                                    <button mat-button (click)="addMissionStep(mission, mission.chronologie.length, missionIndex)"
29
                                    [matTooltip]="translate.instant('plus_tooltip')"
30
                                    matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"><mat-icon fontIcon="add"></mat-icon></button>
31
                                </div>
32
                            </div>
Romain DELEAU's avatar
Romain DELEAU committed
33
                        </div>           
34 35

                        <div style="display: flex;">
Romain DELEAU's avatar
Romain DELEAU committed
36

37
                            <div class="container-scenario-main-missions-mission-missionPieces" [style.z-index]="3">
38 39
                                <app-educational-objective [educationnalObjective]="mission.educationnalObjective" [scenario]="scenario" [i]="missionIndex"></app-educational-objective>
                                <app-mission-context [style.z-index]="2" [missionContext]="mission.context" [scenario]="scenario" [i]="missionIndex"></app-mission-context>
40 41 42
                            </div>

                            <div class="container-scenario-main-missions-mission-roles" [style.z-index]="2">
43
                                <div class="container-scenario-main-missions-mission-roles-role" *ngFor="let role of mission.roles, let roleIndex = index">
Romain DELEAU's avatar
Romain DELEAU committed
44 45 46

                                    <div style="display: flex; flex-direction: column;">
                                        <div class="container-scenario-main-missions-mission-roles-role-chronologie">
47
                                            <div class="container-scenario-main-missions-mission-roles-role-chronologie-title">{{'steps_role' | translate}}</div>
Romain DELEAU's avatar
Romain DELEAU committed
48 49 50
                                            <div class="container-scenario-main-missions-mission-roles-role-chronologie-steps">

                                                <div *ngFor="let step of role.chronologie, let i = index" [style.z-index]="role.chronologie.length-i">
51
                                                    <app-step *ngIf="step != null" [step]="step" [scenario]="scenario" [missionIndex]="missionIndex" [roleIndex]="roleIndex" [parent]="role" [index]="i" [mission]="mission"></app-step>
Romain DELEAU's avatar
Romain DELEAU committed
52
                                                    <div class="container-scenario-main-missions-mission-buttonAdd" style="height: 300px;" *ngIf="step == null">
53
                                                        <button mat-button (click)="addRoleStep(mission, role, i, missionIndex, roleIndex)"
54
                                                        [matTooltip]="translate.instant('plus_tooltip')"
55
                                                        matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"><mat-icon fontIcon="add"></mat-icon></button>
Romain DELEAU's avatar
Romain DELEAU committed
56
                                                    </div>
Romain DELEAU's avatar
Romain DELEAU committed
57
                                                </div>   
Romain DELEAU's avatar
Romain DELEAU committed
58
                                                <div class="container-scenario-main-missions-mission-buttonAdd" style="height: 300px;">
59
                                                    <button mat-button (click)="addRoleStep(mission, role, role.chronologie.length, missionIndex, roleIndex)"
60
                                                    [matTooltip]="translate.instant('plus_tooltip')"
61
                                                    matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"><mat-icon fontIcon="add"></mat-icon></button>
Romain DELEAU's avatar
Romain DELEAU committed
62
                                                </div>
Romain DELEAU's avatar
Romain DELEAU committed
63
                                            </div>
64
                                        </div>
Romain DELEAU's avatar
Romain DELEAU committed
65 66

                                        <div style="display: flex; flex-direction: row;">
67
                                            <app-role [style.z-index]="2" [scenario]="scenario" [role]="role" [mission]="mission" [i]="roleIndex" [missionIndex]="missionIndex"></app-role>
Romain DELEAU's avatar
Romain DELEAU committed
68 69 70 71
                                            <div class="container-scenario-main-missions-mission-roles-role-tasks" [style.z-index]="1">
                                                <div class="container-scenario-main-missions-mission-roles-role-tasks-inlineTasks" *ngFor="let tasks of role.tasks, let i = index" [style.z-index]="role.tasks.length+i">
                                                    <div *ngFor="let task of tasks, let j = index" [style.z-index]="tasks.length-j">
                                                        <div *ngIf="task != null">
72 73 74 75 76 77
                                                            <app-task *ngIf="task.type == 'normal'" [task]="task" [scenario]="scenario" [mission]="mission" [missionIndex]="missionIndex" [role]="role" [roleIndex]="roleIndex" [i]="i" [j]="j"></app-task>
                                                            <app-annexe-task *ngIf="task.type == 'annexe'" [task]="task" [scenario]="scenario" [mission]="mission" [missionIndex]="missionIndex" [role]="role" [roleIndex]="roleIndex" [i]="i" [j]="j"></app-annexe-task>
                                                            <app-random-event *ngIf="task.type == 'event'" [task]="task" [scenario]="scenario" [mission]="mission" [missionIndex]="missionIndex" [role]="role" [roleIndex]="roleIndex" [i]="i" [j]="j"></app-random-event>
                                                            <app-optionnal-task *ngIf="task.type == 'optionnal'" [task]="task" [scenario]="scenario" [mission]="mission" [missionIndex]="missionIndex" [role]="role" [roleIndex]="roleIndex" [i]="i" [j]="j"></app-optionnal-task>
                                                            <app-final-task *ngIf="task.type == 'final'" [task]="task" [scenario]="scenario" [mission]="mission" [missionIndex]="missionIndex" [role]="role" [roleIndex]="roleIndex" [i]="i" [j]="j"></app-final-task>
                                                            <app-repeat-task *ngIf="task.type == 'repeat'" [task]="task" [scenario]="scenario" [mission]="mission" [missionIndex]="missionIndex" [role]="role" [roleIndex]="roleIndex" [i]="i" [j]="j"></app-repeat-task>
Romain DELEAU's avatar
Romain DELEAU committed
78 79
                                                        </div>
                                                        <div class="container-scenario-main-missions-mission-buttonAdd" style="height: 400px;" *ngIf="task == null">
80
                                                            <button mat-button [matMenuTriggerFor]="addTaskMenu"
81
                                                            [matTooltip]="translate.instant('plus_tooltip')"
82
                                                            matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"><mat-icon fontIcon="add"></mat-icon></button>
Romain DELEAU's avatar
Romain DELEAU committed
83
                                                            <mat-menu #addTaskMenu="matMenu">
84 85 86 87 88 89
                                                                <button class="container-scenario-main-missions-mission-roles-role-tasks-menuButton" [style.background-color]="'#b9dfe3'" mat-menu-item (click)="addTask(mission, role, missionIndex, roleIndex, i, j, 'normal')">{{'normalTask_add' | translate}}</button>
                                                                <button class="container-scenario-main-missions-mission-roles-role-tasks-menuButton" [style.background-color]="'#bccecc'" mat-menu-item (click)="addTask(mission, role, missionIndex, roleIndex, i, j, 'annexe')">{{'annexeTask_add' | translate}}</button>
                                                                <button class="container-scenario-main-missions-mission-roles-role-tasks-menuButton" [style.background-color]="'#e8e3b3'" mat-menu-item (click)="addTask(mission, role, missionIndex, roleIndex, i, j, 'optionnal')">{{'optionnalTask_add' | translate}}</button>
                                                                <button class="container-scenario-main-missions-mission-roles-role-tasks-menuButton" [style.background-color]="'#b28386'" mat-menu-item (click)="addTask(mission, role, missionIndex, roleIndex, i, j, 'final')" *ngIf="canCreateFinalOrRepeatTask(tasks, j)">{{'finalTask_add' | translate}}</button>
                                                                <button class="container-scenario-main-missions-mission-roles-role-tasks-menuButton" [style.background-color]="'#bfdaa3'" mat-menu-item (click)="addTask(mission, role, missionIndex, roleIndex, i, j, 'event')">{{'randomEvent_add' | translate}}</button>
                                                                <button class="container-scenario-main-missions-mission-roles-role-tasks-menuButton" [style.background-color]="'#abbcc6'" mat-menu-item (click)="addTask(mission, role, missionIndex, roleIndex, i, j, 'repeat')" *ngIf="canCreateFinalOrRepeatTask(tasks, j)">{{'repeatTask_add' | translate}}</button>
Romain DELEAU's avatar
Romain DELEAU committed
90 91 92 93
                                                            </mat-menu>
                                                        </div>
                                                    </div>
                                                    <div class="container-scenario-main-missions-mission-buttonAdd" style="height: 400px;" *ngIf="dontContainFinalOrRepeatTask(tasks)">
94
                                                        <button mat-button [matMenuTriggerFor]="addTaskMenu"
95
                                                        [matTooltip]="translate.instant('plus_tooltip')"
96
                                                        matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"><mat-icon fontIcon="add"></mat-icon></button>
Romain DELEAU's avatar
Romain DELEAU committed
97
                                                        <mat-menu #addTaskMenu="matMenu">
98 99 100 101 102 103
                                                            <button class="container-scenario-main-missions-mission-roles-role-tasks-menuButton" [style.background-color]="'#b9dfe3'" mat-menu-item (click)="addTask(mission, role, missionIndex, roleIndex, i, tasks.length, 'normal')">{{'normalTask_add' | translate}}</button>
                                                            <button class="container-scenario-main-missions-mission-roles-role-tasks-menuButton" [style.background-color]="'#bccecc'" mat-menu-item (click)="addTask(mission, role, missionIndex, roleIndex, i, tasks.length, 'annexe')">{{'annexeTask_add' | translate}}</button>
                                                            <button class="container-scenario-main-missions-mission-roles-role-tasks-menuButton" [style.background-color]="'#e8e3b3'" mat-menu-item (click)="addTask(mission, role, missionIndex, roleIndex, i, tasks.length, 'optionnal')">{{'optionnalTask_add' | translate}}</button>
                                                            <button class="container-scenario-main-missions-mission-roles-role-tasks-menuButton" [style.background-color]="'#b28386'" mat-menu-item (click)="addTask(mission, role, missionIndex, roleIndex, i, tasks.length, 'final')">{{'finalTask_add' | translate}}</button>
                                                            <button class="container-scenario-main-missions-mission-roles-role-tasks-menuButton" [style.background-color]="'#bfdaa3'" mat-menu-item (click)="addTask(mission, role, missionIndex, roleIndex, i, tasks.length, 'event')">{{'randomEvent_add' | translate}}</button>
                                                            <button class="container-scenario-main-missions-mission-roles-role-tasks-menuButton" [style.background-color]="'#abbcc6'" mat-menu-item (click)="addTask(mission, role, missionIndex, roleIndex, i, tasks.length, 'repeat')">{{'repeatTask_add' | translate}}</button>
Romain DELEAU's avatar
Romain DELEAU committed
104 105
                                                        </mat-menu>
                                                    </div>
Romain DELEAU's avatar
Romain DELEAU committed
106 107
                                                </div>
                                            </div>
108
                                        </div>
Romain DELEAU's avatar
Romain DELEAU committed
109 110
                                    </div>
                                </div>
Romain DELEAU's avatar
Romain DELEAU committed
111
                            </div>
Romain DELEAU's avatar
Romain DELEAU committed
112
                        </div>
Romain DELEAU's avatar
Romain DELEAU committed
113 114
                    </div>
                </div>
Romain DELEAU's avatar
Romain DELEAU committed
115
            </div>
Romain DELEAU's avatar
Romain DELEAU committed
116
        </div>
Romain DELEAU's avatar
Romain DELEAU committed
117
    </div>
Romain DELEAU's avatar
Romain DELEAU committed
118

Romain DELEAU's avatar
Romain DELEAU committed
119 120 121 122 123 124
    <div class="container-sider" [ngClass]="siderFolded ? 'siderFolded' : ''">
        <div class="container-sider-deploy" (click)="siderFolded = !siderFolded; minimapService.reset()"
        [matTooltip]="siderFolded ? translate.instant('siderDeploy_tooltip') : translate.instant('siderFold_tooltip')"
        matTooltipPosition="left" [matTooltipDisabled]="!tooltipService.activatedTooltips">
            <mat-icon fontIcon="arrow_forward" [ngClass]="siderFolded ? 'siderFolded' : ''"></mat-icon>
        </div>
125 126
        <div class="container-sider-title">{{getSiderTitle()}}</div>
        <div class="container-sider-elements">
127
            <app-rewards class="container-sider-elements-element" [task]="pieceDetailsService.pieceAsTask()" [role]="pieceDetailsService.parentAsRole()" *ngIf="pieceDetailsService.pieceIsTask()" [scenario]="scenario"></app-rewards>
Romain DELEAU's avatar
Romain DELEAU committed
128
            <app-role-occurence class="container-sider-elements-element" [role]="pieceDetailsService.pieceAsRole()" *ngIf="pieceDetailsService.pieceIsRole()" [scenario]="scenario"></app-role-occurence>
129
            <app-supplementary-task class="container-sider-elements-element" [task]="pieceDetailsService.pieceAsTask()" [role]="pieceDetailsService.parentAsRole()" *ngIf="pieceDetailsService.pieceIsTask()" [scenario]="scenario"></app-supplementary-task>
Romain DELEAU's avatar
Romain DELEAU committed
130
            <app-repeat class="container-sider-elements-element" [task]="pieceDetailsService.pieceAsTask()" *ngIf="pieceDetailsService.pieceIsTask()" [scenario]="scenario"></app-repeat>
Romain DELEAU's avatar
Romain DELEAU committed
131
            <app-interupt class="container-sider-elements-element" [task]="pieceDetailsService.pieceAsTask()" *ngIf="pieceDetailsService.pieceIsTask()" [scenario]="scenario"></app-interupt>
132
            <app-characters class="container-sider-elements-element" [scenario]="scenario" [task]="pieceDetailsService.pieceAsTask()" *ngIf="pieceDetailsService.pieceIsTask()"></app-characters>
133 134
            <app-comments class="container-sider-elements-element" [piece]="pieceDetailsService.piece" [scenario]="scenario"></app-comments>
            <app-discussions class="container-sider-elements-element" [scenario]="scenario" [role]="pieceDetailsService.pieceAsRole()" *ngIf="unityService.unity_isActive && pieceDetailsService.pieceIsRole()"></app-discussions>
135 136
        </div>
        
Romain DELEAU's avatar
Romain DELEAU committed
137 138
    </div>

Romain DELEAU's avatar
Romain DELEAU committed
139
    <div class="container-settings-button" [ngClass]="siderFolded ? 'siderFolded' : ''">
Romain DELEAU's avatar
Romain DELEAU committed
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
        <button mat-mini-fab color="white" [matMenuTriggerFor]="settingsMenu"            
        [matTooltip]="translate.instant('settingsMenu_tooltip')"
        matTooltipPosition="left" [matTooltipDisabled]="!tooltipService.activatedTooltips">
            <mat-icon fontIcon="menu"></mat-icon>
        </button>
        <input type="file" #fileInput style="display: none" (change)="onFileSelected($event)">
        <mat-menu class="container-settings" #settingsMenu="matMenu" xPosition="before">
            <button mat-menu-item (click)="downloadFile()"
            [matTooltip]="translate.instant('download_tooltip')"
            matTooltipPosition="left" [matTooltipDisabled]="!tooltipService.activatedTooltips">
                <mat-icon fontIcon="download_file"></mat-icon>
                <span>{{'download_label' | translate}}</span>
            </button>
            <button mat-menu-item (click)="selectFile()"
            [matTooltip]="translate.instant('upload_tooltip')"
            matTooltipPosition="left" [matTooltipDisabled]="!tooltipService.activatedTooltips">
                <mat-icon fontIcon="upload-file"></mat-icon>
                <span>{{'upload_label' | translate}}</span>
            </button>
            <span mat-menu-item (click)="tooltipService.activatedTooltips = !tooltipService.activatedTooltips; tooltipsTrace($event)"
            [matTooltip]="translate.instant('enableHelp_tooltip')"
            matTooltipPosition="left" [matTooltipDisabled]="!tooltipService.activatedTooltips">
                <input name="tooltip" type="checkbox" [(ngModel)]="tooltipService.activatedTooltips"/>
                <label for="tooltip">{{'enableHelp_label' | translate}}</label>
            </span>
            <button mat-menu-item (click)="verifyGame()"
            [matTooltip]="translate.instant('verify_tooltip')"
            matTooltipPosition="left" [matTooltipDisabled]="!tooltipService.activatedTooltips">
                <mat-icon fontIcon="verified"></mat-icon>
                <span>{{'verify_label' | translate}}</span>
            </button>
            <button mat-menu-item (click)="downloadManual()"
            [matTooltip]="translate.instant('manual_tooltip')"
            matTooltipPosition="left" [matTooltipDisabled]="!tooltipService.activatedTooltips">
                <mat-icon fontIcon="menu_book"></mat-icon>
                <span>{{'manual_label' | translate}}</span>
            </button>
            <button mat-menu-item [matMenuTriggerFor]="changeLanguageMenu"
            [matTooltip]="translate.instant('lang_tooltip')"
            matTooltipPosition="left" [matTooltipDisabled]="!tooltipService.activatedTooltips">
                <img class="langIcon" [src]="'./assets/lang/icons/'+selectedLang+'.png'"/>
                <span>{{'lang_label' | translate}}</span>
            </button>
183
            <span mat-menu-item (click)="unityService.unity_isActive = !unityService.unity_isActive; unityTrace($event); minimapService.reset()"
Romain DELEAU's avatar
Romain DELEAU committed
184 185
            [matTooltip]="translate.instant('unity_tooltip')"
            matTooltipPosition="left" [matTooltipDisabled]="!tooltipService.activatedTooltips">
186
                <input name="unity" type="checkbox" [(ngModel)]="unityService.unity_isActive"/>
Romain DELEAU's avatar
Romain DELEAU committed
187
                <label for="unity">{{'unity_label' | translate}}</label>
188
            </span>
189 190 191 192 193 194
            <button mat-menu-item (click)="consultLegals()"
            [matTooltip]="translate.instant('legal_tooltip')"
            matTooltipPosition="left" [matTooltipDisabled]="!tooltipService.activatedTooltips">
                <mat-icon fontIcon="attribution"></mat-icon>
                <span>{{'legal_label' | translate}}</span>
            </button>
Romain DELEAU's avatar
Romain DELEAU committed
195
        </mat-menu>
196
        <mat-menu #changeLanguageMenu="matMenu">
Romain DELEAU's avatar
Romain DELEAU committed
197
            <button mat-menu-item (click)="changeLanguage('fr')">
198
                <img class="langIcon" src="./assets/lang/icons/fr.png"/>
Romain DELEAU's avatar
Romain DELEAU committed
199
                <span>{{'language_fr' | translate}}</span>
200
            </button>
Romain DELEAU's avatar
Romain DELEAU committed
201 202 203
            <button mat-menu-item (click)="changeLanguage('en')">
                <img class="langIcon" src="./assets/lang/icons/en.png"/>
                <span>{{'language_en' | translate}}</span>
204
            </button>
205
        </mat-menu>
206
    </div>
Romain DELEAU's avatar
Romain DELEAU committed
207

Romain DELEAU's avatar
Romain DELEAU committed
208 209
    <div class="container-minimap" [ngClass]="siderFolded ? 'siderFolded' : ''"></div>
    <div class="container-zoom" [ngClass]="siderFolded ? 'siderFolded' : ''">
210
        <button mat-mini-fab color="white" (click)="zoomIn()"
211
        [matTooltip]="translate.instant('zoomIn_tooltip')"
212 213
        matTooltipPosition="before" [matTooltipDisabled]="!tooltipService.activatedTooltips"><mat-icon fontIcon="zoom_in"></mat-icon></button>
        <button mat-mini-fab color="white" (click)="zoomOut()"
214
        [matTooltip]="translate.instant('zoomOut_tooltip')"
215 216
        matTooltipPosition="before" [matTooltipDisabled]="!tooltipService.activatedTooltips"><mat-icon fontIcon="zoom_out"></mat-icon></button>
    </div>
Romain DELEAU's avatar
Romain DELEAU committed
217 218 219

    <button class="container-tutorial-resume" mat-raised-button (click)="tutorialService.isActive = !tutorialService.isActive; resumeTutorialTrace()" *ngIf="!tutorialService.isActive"><mat-icon fontIcon="keyboard_return"></mat-icon> {{'tutorial_resume' | translate}}</button>
    <app-tutorial style="z-index: 10; position: absolute;" *ngIf="tutorialService.isActive" cdkDrag cdkDragBoundary=".container"></app-tutorial>
Romain DELEAU's avatar
Romain DELEAU committed
220
</div>