app.component.html 18.9 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" 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 119

    <div class="container-sider">
120 121
        <div class="container-sider-title">{{getSiderTitle()}}</div>
        <div class="container-sider-elements">
Romain DELEAU's avatar
Romain DELEAU committed
122
            <app-role-occurence class="container-sider-elements-element" [role]="pieceDetailsService.pieceAsRole()" *ngIf="pieceDetailsService.pieceIsRole()" [scenario]="scenario"></app-role-occurence>
123
            <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
124
            <app-repeat class="container-sider-elements-element" [task]="pieceDetailsService.pieceAsTask()" *ngIf="pieceDetailsService.pieceIsTask()" [scenario]="scenario"></app-repeat>
Romain DELEAU's avatar
Romain DELEAU committed
125
            <app-interupt class="container-sider-elements-element" [task]="pieceDetailsService.pieceAsTask()" *ngIf="pieceDetailsService.pieceIsTask()" [scenario]="scenario"></app-interupt>
126
            <app-characters class="container-sider-elements-element" [scenario]="scenario" [task]="pieceDetailsService.pieceAsTask()" *ngIf="pieceDetailsService.pieceIsTask()"></app-characters>
Romain DELEAU's avatar
Romain DELEAU committed
127
            <app-comments class="container-sider-elements-element" [piece]="pieceDetailsService.piece" [scenario]="scenario"></app-comments> 
128 129
        </div>
        
Romain DELEAU's avatar
Romain DELEAU committed
130 131
    </div>

132
    <div class="container-settings">
Romain DELEAU's avatar
Romain DELEAU committed
133
        <div class="container-settings-mode"
134
        [matTooltip]="translate.instant('unity_tooltip')"
Romain DELEAU's avatar
Romain DELEAU committed
135 136 137
        matTooltipPosition="below" [matTooltipDisabled]="!tooltipService.activatedTooltips"
        [style.background-color]="'lightgray'">
            <input name="unity" type="checkbox" disabled/>
138
            <label for="unity">{{'unity_label' | translate}}</label>
139
        </div>
Romain DELEAU's avatar
Romain DELEAU committed
140
        <div class="container-settings-mode"
141
        [matTooltip]="translate.instant('enableHelp_tooltip')"
Romain DELEAU's avatar
Romain DELEAU committed
142
        matTooltipPosition="below" [matTooltipDisabled]="!tooltipService.activatedTooltips">
143
            <input name="tooltip" type="checkbox" [(ngModel)]="tooltipService.activatedTooltips" (change)="tooltipsTrace($event)"/>
144
            <label for="tooltip">{{'enableHelp_label' | translate}}</label>
145
        </div>
146
        <button mat-mini-fab color="white" (click)="downloadFile()"
147
        [matTooltip]="translate.instant('download_tooltip')"
148 149
        matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"><mat-icon fontIcon="download_file"></mat-icon></button>
        <button mat-mini-fab color="white" (click)="selectFile()"
150
        [matTooltip]="translate.instant('upload_tooltip')"
151
        matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"><mat-icon fontIcon="upload-file"></mat-icon></button>
152
        <input type="file" #fileInput style="display: none" (change)="onFileSelected($event)"> 
153
    </div>
154
    <div class="container-settings container-settings-secondline">
155 156 157 158 159 160 161
        <button mat-mini-fab color="white" style="font-size: 20px;" [matMenuTriggerFor]="changeLanguageMenu"
        [matTooltip]="translate.instant('lang_tooltip')"
        matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips">{{langEmoji}}</button>
        <mat-menu #changeLanguageMenu="matMenu">
            <button mat-menu-item (click)="changeLanguage('fr')">🇫🇷 {{'language_fr' | translate}}</button>
            <button mat-menu-item (click)="changeLanguage('en')">🇬🇧 {{'language_en' | translate}}</button>
        </mat-menu>
162
        <button mat-mini-fab color="white" (click)="downloadManual()"
163
        [matTooltip]="translate.instant('manual_tooltip')"
164 165
        matTooltipPosition="above" [matTooltipDisabled]="!tooltipService.activatedTooltips"><mat-icon fontIcon="menu_book"></mat-icon></button>
    </div>
166
    <div class="container-minimap"></div>
167 168
    <div class="container-zoom">
        <button mat-mini-fab color="white" (click)="zoomIn()"
169
        [matTooltip]="translate.instant('zoomIn_tooltip')"
170 171
        matTooltipPosition="before" [matTooltipDisabled]="!tooltipService.activatedTooltips"><mat-icon fontIcon="zoom_in"></mat-icon></button>
        <button mat-mini-fab color="white" (click)="zoomOut()"
172
        [matTooltip]="translate.instant('zoomOut_tooltip')"
173 174
        matTooltipPosition="before" [matTooltipDisabled]="!tooltipService.activatedTooltips"><mat-icon fontIcon="zoom_out"></mat-icon></button>
    </div>
Romain DELEAU's avatar
Romain DELEAU committed
175 176 177

    <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
178
</div>