Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Tabu
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
9
Issues
9
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dennis Willers
Tabu
Commits
046a4c10
Commit
046a4c10
authored
Feb 15, 2021
by
Dennis Willers
🏀
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Change Screen Resolution / Fix Button Spam Bug
parent
1fbeaaf8
Pipeline
#382
passed with stages
in 5 minutes and 41 seconds
Changes
12
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
276 additions
and
96 deletions
+276
-96
app.component.ts
src/app/app.component.ts
+4
-1
app.module.ts
src/app/app.module.ts
+3
-1
viewModus.ts
src/app/dao/viewModus.ts
+14
-0
game.component.html
src/app/game/game.component.html
+10
-8
game.component.scss
src/app/game/game.component.scss
+12
-4
game.component.ts
src/app/game/game.component.ts
+10
-5
overview.component.html
src/app/overview/overview.component.html
+10
-3
overview.component.scss
src/app/overview/overview.component.scss
+4
-0
overview.component.ts
src/app/overview/overview.component.ts
+11
-6
round-history.component.html
src/app/round-history/round-history.component.html
+160
-67
round-history.component.scss
src/app/round-history/round-history.component.scss
+17
-0
round-history.component.ts
src/app/round-history/round-history.component.ts
+21
-1
No files found.
src/app/app.component.ts
View file @
046a4c10
import
{
Component
,
HostListener
,
OnInit
}
from
'
@angular/core
'
;
import
{
Component
,
HostListener
,
OnInit
}
from
'
@angular/core
'
;
import
{
ViewModus
}
from
'
./dao/viewModus
'
;
@
Component
({
@
Component
({
selector
:
'
app-root
'
,
selector
:
'
app-root
'
,
...
@@ -14,9 +15,10 @@ export class AppComponent implements OnInit {
...
@@ -14,9 +15,10 @@ export class AppComponent implements OnInit {
this
.
setView
(
width
);
this
.
setView
(
width
);
}
}
constructor
(
private
screen
:
ViewModus
){}
@
HostListener
(
'
window:resize
'
,
[
'
$event
'
])
@
HostListener
(
'
window:resize
'
,
[
'
$event
'
])
onResize
(
$event
:
any
):
any
{
onResize
(
$event
:
any
):
any
{
console
.
log
(
'
RESIZE
'
);
const
width
=
window
.
innerWidth
;
const
width
=
window
.
innerWidth
;
this
.
setView
(
width
);
this
.
setView
(
width
);
}
}
...
@@ -29,5 +31,6 @@ export class AppComponent implements OnInit {
...
@@ -29,5 +31,6 @@ export class AppComponent implements OnInit {
}
else
{
}
else
{
this
.
view
=
'
desktopView
'
;
this
.
view
=
'
desktopView
'
;
}
}
this
.
screen
.
setNewView
(
this
.
view
);
}
}
}
}
src/app/app.module.ts
View file @
046a4c10
...
@@ -30,6 +30,7 @@ import { RulesComponent } from './rules/rules.component';
...
@@ -30,6 +30,7 @@ import { RulesComponent } from './rules/rules.component';
import
{
RoundHistoryComponent
}
from
'
./round-history/round-history.component
'
;
import
{
RoundHistoryComponent
}
from
'
./round-history/round-history.component
'
;
import
{
MatTableModule
}
from
'
@angular/material/table
'
;
import
{
MatTableModule
}
from
'
@angular/material/table
'
;
import
{
MatTreeModule
}
from
'
@angular/material/tree
'
;
import
{
MatTreeModule
}
from
'
@angular/material/tree
'
;
import
{
ViewModus
}
from
'
./dao/viewModus
'
;
@
NgModule
({
@
NgModule
({
declarations
:
[
declarations
:
[
...
@@ -66,7 +67,8 @@ import {MatTreeModule} from '@angular/material/tree';
...
@@ -66,7 +67,8 @@ import {MatTreeModule} from '@angular/material/tree';
],
],
providers
:
[
providers
:
[
IsAllowedToPlay
,
IsAllowedToPlay
,
SocketDataService
SocketDataService
,
ViewModus
],
],
bootstrap
:
[
AppComponent
]
bootstrap
:
[
AppComponent
]
})
})
...
...
src/app/dao/viewModus.ts
0 → 100644
View file @
046a4c10
import
{
Injectable
}
from
'
@angular/core
'
;
import
{
Subject
}
from
'
rxjs
'
;
@
Injectable
()
export
class
ViewModus
{
actuallView
=
'
desktopView
'
;
view
=
new
Subject
<
string
>
();
$view
=
this
.
view
.
asObservable
();
setNewView
(
view
:
string
):
void
{
this
.
view
.
next
(
view
);
this
.
actuallView
=
view
;
}
}
src/app/game/game.component.html
View file @
046a4c10
<div
*ngIf=
"
isMobileResolution
"
style=
"margin-top: -4.25em;"
>
<div
*ngIf=
"
view !== 'desktopView'
"
style=
"margin-top: -4.25em;"
>
<mat-progress-spinner
style=
"border-radius: 50%;"
class =
"center"
color=
"primary"
mode=
"determinate"
value=
{{timeLeft}}
aria-label=
"Rating"
>
<mat-progress-spinner
style=
"border-radius: 50%;"
class =
"center
white transparent
"
color=
"primary"
mode=
"determinate"
value=
{{timeLeft}}
aria-label=
"Rating"
>
</mat-progress-spinner>
</mat-progress-spinner>
<mat-card-content
class =
"timer"
>
{{timeRemaining}}
</mat-card-content>
<mat-card-content
class =
"timer"
>
{{timeRemaining}}
</mat-card-content>
<br>
<br>
</div>
</div>
<div
*ngIf=
"!isMobileResolution"
class=
"TimerLeft"
style=
"margin-top: -4.25em; margin-right: -11.5em; margin-left: auto"
>
<div
*ngIf=
"view === 'desktopView'"
class=
"TimerLeft"
style=
"margin-top: -4.25em; margin-right: -11.5em; margin-left: auto"
>
<mat-progress-spinner
style=
"border-radius: 50%;"
class =
"white"
color=
"primary"
mode=
"determinate"
value=
{{timeLeft}}
aria-label=
"Rating"
>
<mat-progress-spinner
style=
"border-radius: 50%;"
class =
"white transparent"
color=
"primary"
mode=
"determinate"
value=
{{timeLeft}}
aria-label=
"Rating"
>
</mat-progress-spinner>
</mat-progress-spinner>
<mat-card-content
class =
"timer"
>
{{timeRemaining}}
</mat-card-content>
<mat-card-content
class =
"timer"
>
{{timeRemaining}}
</mat-card-content>
</div>
</div>
...
@@ -44,9 +43,12 @@
...
@@ -44,9 +43,12 @@
</h2>
</h2>
</mat-card>
</mat-card>
<br>
<br>
<button
*ngIf=
"isExplainer"
class=
"marginButton"
mat-raised-button
color=
"primary"
(click)=
"rightAnswer()"
>
Richtig
✔
</button>
<div
class=
"marginButtons"
>
<button
*ngIf=
"isExplainer"
class=
"marginButton"
mat-raised-button
color=
"accent"
(click)=
"skipCard()"
>
Überspringen
»
</button>
<button
class=
"marginButtonRight"
*ngIf=
"isExplainer"
mat-raised-button
color=
"primary"
(click)=
"rightAnswer()"
>
Richtig
✔
</button>
<button
mat-raised-button
class=
"marginButton"
color=
"warn"
[disabled]=
"PressTaboohDisabled"
(click)=
"wrongAnswer()"
>
Tabooh
✘
</button>
<button
class=
"marginButtonLeft marginButtonRight"
*ngIf=
"isExplainer"
mat-raised-button
color=
"accent"
(click)=
"skipCard()"
>
Überspringen
»
</button>
<a
*ngIf=
"!isExplainer"
class=
"marginButtonRight"
></a>
<button
class=
"marginButtonLeft"
mat-raised-button
color=
"warn"
[disabled]=
"PressTaboohDisabled"
(click)=
"wrongAnswer()"
>
Tabooh
✘
</button>
</div>
<br>
<br>
<br>
<br>
<mat-card
class=
"transparent"
>
<mat-card
class=
"transparent"
>
...
...
src/app/game/game.component.scss
View file @
046a4c10
...
@@ -14,7 +14,6 @@ th{
...
@@ -14,7 +14,6 @@ th{
.white
{
.white
{
background-color
:
white
;
background-color
:
white
;
}
}
.timer
{
.timer
{
...
@@ -51,8 +50,17 @@ body {
...
@@ -51,8 +50,17 @@ body {
margin-right
:
auto
;
margin-right
:
auto
;
}
}
.marginButton
{
.marginButtonRight
{
margin-right
:
10px
;
margin-right
:
clamp
(
7px
,
2%
,
25px
);
margin-left
:
10px
;
}
.marginButtonLeft
{
margin-left
:
clamp
(
7px
,
2%
,
25px
);
}
}
.marginButtons
{
display
:
flex
;
justify-content
:
center
;
}
src/app/game/game.component.ts
View file @
046a4c10
...
@@ -7,6 +7,7 @@ import {IsAllowedToPlay} from '../dao/isAllowedToPlay';
...
@@ -7,6 +7,7 @@ import {IsAllowedToPlay} from '../dao/isAllowedToPlay';
import
{
SocketDataService
}
from
'
../dao/socketDataService
'
;
import
{
SocketDataService
}
from
'
../dao/socketDataService
'
;
import
{
Subject
}
from
'
rxjs
'
;
import
{
Subject
}
from
'
rxjs
'
;
import
{
takeUntil
}
from
'
rxjs/operators
'
;
import
{
takeUntil
}
from
'
rxjs/operators
'
;
import
{
ViewModus
}
from
'
../dao/viewModus
'
;
@
Component
({
@
Component
({
selector
:
'
app-game
'
,
selector
:
'
app-game
'
,
...
@@ -14,8 +15,7 @@ import {takeUntil} from 'rxjs/operators';
...
@@ -14,8 +15,7 @@ import {takeUntil} from 'rxjs/operators';
styleUrls
:
[
'
./game.component.scss
'
]
styleUrls
:
[
'
./game.component.scss
'
]
})
})
export
class
GameComponent
implements
OnInit
,
OnDestroy
{
export
class
GameComponent
implements
OnInit
,
OnDestroy
{
isMobileResolution
=
false
;
view
=
'
desktopView
'
;
private
ngUnsubscribe
=
new
Subject
();
private
ngUnsubscribe
=
new
Subject
();
subNewCard
:
any
;
subNewCard
:
any
;
subEndRound
:
any
;
subEndRound
:
any
;
...
@@ -60,11 +60,16 @@ export class GameComponent implements OnInit, OnDestroy {
...
@@ -60,11 +60,16 @@ export class GameComponent implements OnInit, OnDestroy {
private
router
:
Router
,
private
router
:
Router
,
private
activatedRoute
:
ActivatedRoute
,
private
activatedRoute
:
ActivatedRoute
,
private
isAllowedToPlay
:
IsAllowedToPlay
,
private
isAllowedToPlay
:
IsAllowedToPlay
,
private
socketDataService
:
SocketDataService
)
{
private
socketDataService
:
SocketDataService
,
private
screen
:
ViewModus
)
{
screen
.
$view
.
subscribe
(
view
=>
{
this
.
view
=
view
;
});
}
}
ngOnInit
():
void
{
ngOnInit
():
void
{
this
.
isMobileResolution
=
window
.
innerWidth
<
768
;
this
.
view
=
this
.
screen
.
actuallView
;
this
.
activatedRoute
.
paramMap
.
subscribe
(
params
=>
{
this
.
activatedRoute
.
paramMap
.
subscribe
(
params
=>
{
this
.
sessionName
=
String
(
params
.
get
(
'
sessionName
'
)).
toLowerCase
();
this
.
sessionName
=
String
(
params
.
get
(
'
sessionName
'
)).
toLowerCase
();
this
.
team
=
String
(
params
.
get
(
'
team
'
));
this
.
team
=
String
(
params
.
get
(
'
team
'
));
...
@@ -128,7 +133,7 @@ export class GameComponent implements OnInit, OnDestroy {
...
@@ -128,7 +133,7 @@ export class GameComponent implements OnInit, OnDestroy {
this
.
timePassed
=
this
.
timePassed
+=
1
;
this
.
timePassed
=
this
.
timePassed
+=
1
;
this
.
timeLeft
=
(
this
.
TIME_LIMIT
-
this
.
timePassed
);
this
.
timeLeft
=
(
this
.
TIME_LIMIT
-
this
.
timePassed
);
if
(
this
.
timeLeft
===
0
)
{
if
(
this
.
timeLeft
===
0
)
{
//this.onTimesUp();
//
this.onTimesUp();
}
}
},
593
);
},
593
);
}
}
...
...
src/app/overview/overview.component.html
View file @
046a4c10
...
@@ -17,12 +17,19 @@
...
@@ -17,12 +17,19 @@
<mat-card
class=
"transparent"
>
<mat-card
class=
"transparent"
>
<div
class=
"FloatLeftAndCenterElement"
>
<div
class=
"FloatLeftAndCenterElement"
>
<div
class=
"newStartButtonLeft
"
>
<div
*ngIf=
"view === 'mobileView'"
class=
"textMobileView
"
>
<button
matTooltip=
"Neues Spiel starten"
[disabled]=
"buttonNewGameDisabled || gameStatus.activeExplainer == 1"
mat-raised-button
color=
"primary"
(click)=
"startGame()"
>
<button
matTooltip=
"Neues Spiel starten"
[disabled]=
"buttonNewGameDisabled || gameStatus.activeExplainer == 1"
mat-raised-button
color=
"primary"
(click)=
"startGame()"
>
<mat-icon
color =
"white"
aria-hidden=
"false"
>
autorenew
</mat-icon></button>
<mat-icon
color =
"white"
aria-hidden=
"false"
>
autorenew
</mat-icon>
</button>
</div>
<div
*ngIf=
"view !== 'mobileView'"
class=
"newStartButtonLeft"
>
<button
matTooltip=
"Neues Spiel starten"
[disabled]=
"buttonNewGameDisabled || gameStatus.activeExplainer == 1"
mat-raised-button
color=
"primary"
(click)=
"startGame()"
>
<mat-icon
color =
"white"
aria-hidden=
"false"
>
autorenew
</mat-icon>
</button>
</div>
</div>
<div
class=
"CenterText"
>
<div
class=
"CenterText"
>
<h2>
{{membership}}
</h2>
<h2
*ngIf=
"view === 'mobileView'"
class=
"textMobileView"
>
{{membership}}
</h2>
<h2
*ngIf=
"view !== 'mobileView'"
>
{{membership}}
</h2>
</div>
</div>
</div>
</div>
<button
mat-raised-button
class =
"{{red}}"
(click)=
"joinTeam('red')"
>
<button
mat-raised-button
class =
"{{red}}"
(click)=
"joinTeam('red')"
>
...
...
src/app/overview/overview.component.scss
View file @
046a4c10
...
@@ -58,3 +58,7 @@ th{
...
@@ -58,3 +58,7 @@ th{
left
:
50%
;
left
:
50%
;
transform
:
translateX
(
-50%
);
transform
:
translateX
(
-50%
);
}
}
.textMobileView
{
display
:
inline
;
}
src/app/overview/overview.component.ts
View file @
046a4c10
import
{
Component
,
HostListener
,
OnDestroy
,
OnInit
}
from
'
@angular/core
'
;
import
{
Component
,
HostListener
,
Input
,
OnChanges
,
OnDestroy
,
OnInit
,
SimpleChanges
}
from
'
@angular/core
'
;
import
{
ActivatedRoute
,
Router
}
from
'
@angular/router
'
;
import
{
ActivatedRoute
,
Router
}
from
'
@angular/router
'
;
import
{
TabuMiddlewareService
}
from
'
../dao/TabuMiddlewareService
'
;
import
{
TabuMiddlewareService
}
from
'
../dao/TabuMiddlewareService
'
;
import
{
GameStatus
}
from
'
../interface/gameStatus
'
;
import
{
GameStatus
}
from
'
../interface/gameStatus
'
;
...
@@ -6,6 +6,7 @@ import {IsAllowedToPlay} from '../dao/isAllowedToPlay';
...
@@ -6,6 +6,7 @@ import {IsAllowedToPlay} from '../dao/isAllowedToPlay';
import
{
SocketDataService
}
from
'
../dao/socketDataService
'
;
import
{
SocketDataService
}
from
'
../dao/socketDataService
'
;
import
{
Subject
}
from
'
rxjs
'
;
import
{
Subject
}
from
'
rxjs
'
;
import
{
takeUntil
}
from
'
rxjs/operators
'
;
import
{
takeUntil
}
from
'
rxjs/operators
'
;
import
{
ViewModus
}
from
'
../dao/viewModus
'
;
@
Component
({
@
Component
({
selector
:
'
app-overview
'
,
selector
:
'
app-overview
'
,
...
@@ -13,7 +14,7 @@ import {takeUntil} from 'rxjs/operators';
...
@@ -13,7 +14,7 @@ import {takeUntil} from 'rxjs/operators';
styleUrls
:
[
'
./overview.component.scss
'
]
styleUrls
:
[
'
./overview.component.scss
'
]
})
})
export
class
OverviewComponent
implements
OnInit
,
OnDestroy
{
export
class
OverviewComponent
implements
OnInit
,
OnDestroy
{
view
=
'
desktopView
'
;
private
ngUnsubscribe
=
new
Subject
();
private
ngUnsubscribe
=
new
Subject
();
subNewGame
:
any
;
subNewGame
:
any
;
subNewCard
:
any
;
subNewCard
:
any
;
...
@@ -50,9 +51,16 @@ export class OverviewComponent implements OnInit, OnDestroy {
...
@@ -50,9 +51,16 @@ export class OverviewComponent implements OnInit, OnDestroy {
private
activatedRoute
:
ActivatedRoute
,
private
activatedRoute
:
ActivatedRoute
,
private
service
:
TabuMiddlewareService
,
private
service
:
TabuMiddlewareService
,
private
isAllowedToPlay
:
IsAllowedToPlay
,
private
isAllowedToPlay
:
IsAllowedToPlay
,
private
socketDataService
:
SocketDataService
)
{
}
private
socketDataService
:
SocketDataService
,
private
screen
:
ViewModus
)
{
screen
.
$view
.
subscribe
(
view
=>
{
this
.
view
=
view
;
});
}
ngOnInit
():
void
{
ngOnInit
():
void
{
this
.
view
=
this
.
screen
.
actuallView
;
this
.
activatedRoute
.
paramMap
.
subscribe
(
params
=>
{
this
.
activatedRoute
.
paramMap
.
subscribe
(
params
=>
{
this
.
sessionName
=
String
(
params
.
get
(
'
sessionName
'
)).
toLowerCase
();
this
.
sessionName
=
String
(
params
.
get
(
'
sessionName
'
)).
toLowerCase
();
this
.
team
=
String
(
params
.
get
(
'
team
'
));
this
.
team
=
String
(
params
.
get
(
'
team
'
));
...
@@ -93,9 +101,7 @@ export class OverviewComponent implements OnInit, OnDestroy {
...
@@ -93,9 +101,7 @@ export class OverviewComponent implements OnInit, OnDestroy {
getSocketData
():
void
{
getSocketData
():
void
{
this
.
subHistoryChanged
=
this
.
socketDataService
.
getHistoryChangedInfo
(
this
.
sessionName
)
this
.
subHistoryChanged
=
this
.
socketDataService
.
getHistoryChangedInfo
(
this
.
sessionName
)
.
pipe
(
takeUntil
(
this
.
ngUnsubscribe
)).
subscribe
(
data
=>
{
.
pipe
(
takeUntil
(
this
.
ngUnsubscribe
)).
subscribe
(
data
=>
{
console
.
log
(
'
WANT UPDATE:
'
,
this
.
canUpdateHistory
);
if
(
this
.
canUpdateHistory
)
{
if
(
this
.
canUpdateHistory
)
{
console
.
log
(
'
UPDATE HISTORY
'
);
this
.
getGameStatus
();
this
.
getGameStatus
();
}
}
});
});
...
@@ -105,7 +111,6 @@ export class OverviewComponent implements OnInit, OnDestroy {
...
@@ -105,7 +111,6 @@ export class OverviewComponent implements OnInit, OnDestroy {
});
});
this
.
subNewCard
=
this
.
socketDataService
.
getNewCard
(
this
.
sessionName
)
this
.
subNewCard
=
this
.
socketDataService
.
getNewCard
(
this
.
sessionName
)
.
pipe
(
takeUntil
(
this
.
ngUnsubscribe
)).
subscribe
(
data
=>
{
.
pipe
(
takeUntil
(
this
.
ngUnsubscribe
)).
subscribe
(
data
=>
{
console
.
log
(
'
UPDATE CARD
'
);
this
.
getGameStatus
();
this
.
getGameStatus
();
});
});
this
.
subEndRound
=
this
.
socketDataService
.
getEndRound
(
this
.
sessionName
)
this
.
subEndRound
=
this
.
socketDataService
.
getEndRound
(
this
.
sessionName
)
...
...
src/app/round-history/round-history.component.html
View file @
046a4c10
...
@@ -17,7 +17,10 @@
...
@@ -17,7 +17,10 @@
</ng-container>
</ng-container>
<!-- Solution Column -->
<!-- Solution Column -->
<ng-container
matColumnDef=
"solution"
>
<ng-container
*ngIf=
"view === 'mobileView'"
matColumnDef=
"solution"
>
<mat-cell
*matCellDef=
"let element"
class=
"marginButtons"
>
<b
*ngIf=
"element.answer !== answer.zeitLaueft"
>
{{element.solution}}
</b></mat-cell>
</ng-container>
<ng-container
*ngIf=
"view !== 'mobileView'"
matColumnDef=
"solution"
>
<mat-cell
*matCellDef=
"let element"
>
<b
*ngIf=
"element.answer !== answer.zeitLaueft"
>
{{element.solution}}
</b></mat-cell>
<mat-cell
*matCellDef=
"let element"
>
<b
*ngIf=
"element.answer !== answer.zeitLaueft"
>
{{element.solution}}
</b></mat-cell>
</ng-container>
</ng-container>
...
@@ -47,76 +50,166 @@
...
@@ -47,76 +50,166 @@
</ng-container>
</ng-container>
<!-- Expanded Content Column - The detail row is made up of this one column -->
<!-- Expanded Content Column - The detail row is made up of this one column -->
<ng-container
matColumnDef=
"expandedDetail"
class=
"volleBreite"
>
<ng-container
*ngIf=
"view === 'mobileView'"
matColumnDef=
"expandedDetail"
>
<mat-cell
*matCellDef=
"let detail"
class=
"expandStyle"
>
<mat-cell
*matCellDef=
"let detail"
class=
"marginButtons"
>
<!-- Richtig -->
<div
class=
"noSpaceWaste"
>
<button
<div>
mat-stroked-button
*ngIf=
"detail.element.answer !== answer.richtig"
<mat-card-subtitle>
{{detail.element.tabu1}}
</mat-card-subtitle>
color=
"primary"
class=
"expandStyle"
</div>
(click)=
"updateAnswer(detail.element, answer.richtig)"
<div>
>
<mat-card-subtitle>
{{detail.element.tabu2}}
</mat-card-subtitle>
Richtig
✔
</div>
</button>
<div>
<button
<mat-card-subtitle>
{{detail.element.tabu3}}
</mat-card-subtitle>
mat-raised-button
</div>
*ngIf=
"detail.element.answer === answer.richtig"
<div>
color=
"primary"
class=
"expandStyle"
<mat-card-subtitle>
{{detail.element.tabu4}}
</mat-card-subtitle>
>
</div>
Richtig
✔
<div>
</button>
<mat-card-subtitle>
{{detail.element.tabu5}}
</mat-card-subtitle>
<!-- Zeit abgelaufen -->
</div>
<button
<div
class=
"marginButtons"
>
mat-stroked-button
<!-- Richtig -->
*ngIf=
"detail.element.answer !== answer.zeitAbgelaufen
<button
mat-stroked-button
*ngIf=
"detail.element.answer !== answer.richtig"
color=
"primary"
class=
"marginButtonRight"
(click)=
"updateAnswer(detail.element, answer.richtig)"
>
Richtig
✔
</button>
<button
mat-raised-button
*ngIf=
"detail.element.answer === answer.richtig"
color=
"primary"
class=
"marginButtonRight"
>
Richtig
✔
</button>
<!-- Zeit abgelaufen -->
<button
mat-stroked-button
*ngIf=
"detail.element.answer !== answer.zeitAbgelaufen
&& detail.element.s2cID === lastS2CID"
class=
"marginButtonLeft marginButtonRight"
(click)=
"updateAnswer(detail.element, answer.zeitAbgelaufen)"
>
Zeit abgelaufen
⏱
</button>
<button
mat-raised-button
*ngIf=
"detail.element.answer === answer.zeitAbgelaufen
&& detail.element.s2cID === lastS2CID"
class=
"marginButtonLeft marginButtonRight"
>
Zeit abgelaufen
⏱
</button>
<!-- Uebersprungen -->
<button
mat-stroked-button
*ngIf=
"detail.element.answer !== answer.uebersprungen
&& detail.element.s2cID !== lastS2CID"
color=
"accent"
class=
"marginButtonLeft marginButtonRight"
(click)=
"updateAnswer(detail.element, answer.uebersprungen)"
>
Überspringen
»
</button>
<button
mat-raised-button
*ngIf=
"detail.element.answer === answer.uebersprungen
&& detail.element.s2cID !== lastS2CID"
color=
"accent"
class=
"marginButtonLeft marginButtonRight"
>
Überspringen
»
</button>
<!-- Tabooh -->
<button
mat-stroked-button
*ngIf=
"detail.element.answer !== answer.tabooh"
color=
"warn"
class=
"marginButtonLeft"
(click)=
"updateAnswer(detail.element, answer.tabooh)"
>
Tabooh
✘
</button>
<button
mat-raised-button
*ngIf=
"detail.element.answer === answer.tabooh"
color=
"warn"
class=
"marginButtonLeft"
>
Tabooh
✘
</button>
</div>
</div>
</mat-cell>
</ng-container>
<ng-container
*ngIf=
"view !== 'mobileView'"
matColumnDef=
"expandedDetail"
class=
"volleBreite"
>
<mat-cell
*matCellDef=
"let detail"
class=
"marginButtons"
>
<!-- Richtig -->
<button
mat-stroked-button
*ngIf=
"detail.element.answer !== answer.richtig"
color=
"primary"
class=
"marginButtonRight"
(click)=
"updateAnswer(detail.element, answer.richtig)"
>
Richtig
✔
</button>
<button
mat-raised-button
*ngIf=
"detail.element.answer === answer.richtig"
color=
"primary"
class=
"marginButtonRight"
>
Richtig
✔
</button>
<!-- Zeit abgelaufen -->
<button
mat-stroked-button
*ngIf=
"detail.element.answer !== answer.zeitAbgelaufen
&& detail.element.s2cID === lastS2CID"
&& detail.element.s2cID === lastS2CID"
class=
"expandStyle
"
class=
"marginButtonLeft marginButtonRight
"
(click)=
"updateAnswer(detail.element, answer.zeitAbgelaufen)"
(click)=
"updateAnswer(detail.element, answer.zeitAbgelaufen)"
>
>
Zeit abgelaufen
⏱
Zeit abgelaufen
⏱
</button>
</button>
<button
<button
mat-raised-button
mat-raised-button
*ngIf=
"detail.element.answer === answer.zeitAbgelaufen
*ngIf=
"detail.element.answer === answer.zeitAbgelaufen
&& detail.element.s2cID === lastS2CID"
&& detail.element.s2cID === lastS2CID"
class=
"expandStyle
"
class=
"marginButtonLeft marginButtonRight
"
>
>
Zeit abgelaufen
⏱
Zeit abgelaufen
⏱
</button>
</button>
<!-- Uebersprungen -->
<!-- Uebersprungen -->
<button
<button
mat-stroked-button
mat-stroked-button
*ngIf=
"detail.element.answer !== answer.uebersprungen
*ngIf=
"detail.element.answer !== answer.uebersprungen
&& detail.element.s2cID !== lastS2CID"
&& detail.element.s2cID !== lastS2CID"
color=
"accent"
class=
"expandStyle
"
color=
"accent"
class=
"marginButtonLeft marginButtonRight
"
(click)=
"updateAnswer(detail.element, answer.uebersprungen)"
(click)=
"updateAnswer(detail.element, answer.uebersprungen)"
>
>
Überspringen
»
Überspringen
»
</button>
</button>
<button
<button
mat-raised-button
mat-raised-button
*ngIf=
"detail.element.answer === answer.uebersprungen
*ngIf=
"detail.element.answer === answer.uebersprungen
&& detail.element.s2cID !== lastS2CID"
&& detail.element.s2cID !== lastS2CID"
color=
"accent"
class=
"expandStyle
"
color=
"accent"
class=
"marginButtonLeft marginButtonRight
"
>
>
Überspringen
»
Überspringen
»
</button>
</button>
<!-- Tabooh -->
<!-- Tabooh -->
<button
<button
mat-stroked-button
mat-stroked-button
*ngIf=
"detail.element.answer !== answer.tabooh"
*ngIf=
"detail.element.answer !== answer.tabooh"
color=
"warn"
class=
"expandStyle
"
color=
"warn"
class=
"marginButtonLeft
"
(click)=
"updateAnswer(detail.element, answer.tabooh)"
(click)=
"updateAnswer(detail.element, answer.tabooh)"
>
>
Tabooh
✘
Tabooh
✘
</button>
</button>
<button
<button
mat-raised-button
mat-raised-button
*ngIf=
"detail.element.answer === answer.tabooh"
*ngIf=
"detail.element.answer === answer.tabooh"
color=
"warn"
class=
"expandStyle
"
color=
"warn"
class=
"marginButtonLeft
"
>
>
Tabooh
✘
Tabooh
✘
</button>
</button>
</mat-cell>
</mat-cell>
</ng-container>
</ng-container>
<mat-row
*matRowDef=
"let row; columns: displayedColumns;"
<mat-row
*matRowDef=
"let row; columns: displayedColumns;"
...
...
src/app/round-history/round-history.component.scss
View file @
046a4c10
...
@@ -46,3 +46,20 @@
...
@@ -46,3 +46,20 @@
.element-row-noEdit
{
.element-row-noEdit
{
position
:
relative
;
position
:
relative
;
}
}
.marginButtonRight
{
margin-right
:
clamp
(
7px
,
2%
,
25px
);
}
.marginButtonLeft
{
margin-left
:
clamp
(
7px
,
4%
,
25px
);
}
.marginButtons
{
display
:
flex
;
justify-content
:
center
;
}
.noSpaceWaste
{
width
:
100%
;
}
src/app/round-history/round-history.component.ts
View file @
046a4c10
...
@@ -3,6 +3,7 @@ import {animate, state, style, transition, trigger} from '@angular/animations';
...
@@ -3,6 +3,7 @@ import {animate, state, style, transition, trigger} from '@angular/animations';
import
{
DataSource
}
from
'
@angular/cdk/table
'
;
import
{
DataSource
}
from
'
@angular/cdk/table
'
;
import
{
Observable
,
of
}
from
'
rxjs
'
;
import
{
Observable
,
of
}
from
'
rxjs
'
;
import
{
TabuMiddlewareService
}
from
'
../dao/TabuMiddlewareService
'
;
import
{
TabuMiddlewareService
}
from
'
../dao/TabuMiddlewareService
'
;
import
{
ViewModus
}
from
'
../dao/viewModus
'
;
export
interface
CardResultHistory
{
export
interface
CardResultHistory
{
answer
:
Answer
;
answer
:
Answer
;
...
@@ -50,6 +51,7 @@ export class RoundHistoryComponent extends DataSource<any> implements OnInit, On
...
@@ -50,6 +51,7 @@ export class RoundHistoryComponent extends DataSource<any> implements OnInit, On
gameStatus
=
new
EventEmitter
();
gameStatus
=
new
EventEmitter
();
@
Output
()
@
Output
()
canUpdate
=
new
EventEmitter
();
canUpdate
=
new
EventEmitter
();
view
=
'
desktopView
'
;
redTurn
=
''
;
redTurn
=
''
;
lastS2CID
=
0
;
lastS2CID
=
0
;
...
@@ -65,11 +67,21 @@ export class RoundHistoryComponent extends DataSource<any> implements OnInit, On
...
@@ -65,11 +67,21 @@ export class RoundHistoryComponent extends DataSource<any> implements OnInit, On
expandedElement
:
any
;
expandedElement
:
any
;
isExpansionDetailRow
=
(
i
:
number
,
row
:
object
)
=>
row
.
hasOwnProperty
(
'
detailRow
'
);
isExpansionDetailRow
=
(
i
:
number
,
row
:
object
)
=>
row
.
hasOwnProperty
(
'
detailRow
'
);
constructor
(
private
service
:
TabuMiddlewareService
)
{
constructor
(
private
service
:
TabuMiddlewareService
,
private
screen
:
ViewModus
)
{
super
();
super
();
screen
.
$view
.
subscribe
(
view
=>
{
this
.
view
=
view
;
this
.
setDisplayColumns
();
});
}
}
ngOnInit
():
void
{
ngOnInit
():
void
{
this
.
view
=
this
.
screen
.
actuallView
;
this
.
setDisplayColumns
();
console
.
log
(
"
ACTUAL VIEW:
"
,
this
.
view
);
}
}
ngOnChanges
(
changes
:
SimpleChanges
):
void
{
ngOnChanges
(
changes
:
SimpleChanges
):
void
{
...
@@ -93,6 +105,14 @@ export class RoundHistoryComponent extends DataSource<any> implements OnInit, On
...
@@ -93,6 +105,14 @@ export class RoundHistoryComponent extends DataSource<any> implements OnInit, On
}
}
}
}
setDisplayColumns
():
void
{
if
(
this
.
view
===
'
mobileView
'
)
{
this
.
displayedColumns
=
[
'
answer
'
,
'
solution
'
];
}
else
{
this
.
displayedColumns
=
[
'
answer
'
,
'
solution
'
,
'
tabu1
'
,
'
tabu2
'
,
'
tabu3
'
,
'
tabu4
'
,
'
tabu5
'
];
}
}
getRoundDataFromHistory
():
void
{
getRoundDataFromHistory
():
void
{
this
.
roundHistory
=
[];
this
.
roundHistory
=
[];
let
redTurn
=
null
;
let
redTurn
=
null
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment