Projector detail template improvements

This commit is contained in:
Emanuel Schütze 2019-02-28 21:39:05 +01:00
parent 587a0fe443
commit 2257991aba
7 changed files with 98 additions and 70 deletions

View File

@ -7,6 +7,7 @@
position: absolute; position: absolute;
left: 50px; left: 50px;
top: 50px; top: 50px;
line-height: 1.5em;
} }
} }

View File

@ -72,10 +72,7 @@
<span translate>List of speakers</span> <span translate>List of speakers</span>
</button> </button>
<!-- Project --> <!-- Project -->
<button mat-menu-item *osPerms="'core.can_manage_projector'"> <os-projector-button [object]="motion" [menuItem]="true" *osPerms="'core.can_manage_projector'"></os-projector-button>
<mat-icon>videocam</mat-icon>
<span translate>Project</span>
</button>
<!-- New amendment --> <!-- New amendment -->
<button mat-menu-item (click)="createAmendment()" *ngIf="perms.isAllowed('can_create_amendments', motion)"> <button mat-menu-item (click)="createAmendment()" *ngIf="perms.isAllowed('can_create_amendments', motion)">
<mat-icon>add</mat-icon> <mat-icon>add</mat-icon>

View File

@ -14,36 +14,37 @@
</a> </a>
<!-- Controls under the projector preview --> <!-- Controls under the projector preview -->
<div class="control-group projector-controls"> <div class="control-group projector-controls">
<!-- scaling indicator -->
<div class="button-size">{{ projector.scale }}</div>
<!-- scale up --> <!-- scale up -->
<button type="button" mat-icon-button (click)="scale(scrollScaleDirection.Up)"> <button type="button" mat-icon-button (click)="scale(scrollScaleDirection.Up)">
<mat-icon>zoom_in</mat-icon> <mat-icon>zoom_in</mat-icon>
</button> </button>
<!-- scale down --> <!-- scale down -->
<button type="button" mat-icon-button (click)="scale(scrollScaleDirection.Down)"> <button type="button" mat-icon-button (click)="scale(scrollScaleDirection.Down)">
<mat-icon>zoom_out</mat-icon> <mat-icon>zoom_out</mat-icon>
</button> </button>
<!-- reset button -->
<!-- scroll indicator --> <button type="button" mat-icon-button (click)="scale(scrollScaleDirection.Reset)">
<div class="button-size">{{ projector.scroll }}</div> <mat-icon>refresh</mat-icon>
</button>
<!-- scaling indicator -->
<div class="button-size" [ngClass]="projector.scale != 0 ? 'warn' : ''">{{ projector.scale }}</div>
<!-- scroll down --> <!-- scroll down -->
<button type="button" mat-icon-button (click)="scroll(scrollScaleDirection.Down)"> <button type="button" class="spacer-left-40" mat-icon-button (click)="scroll(scrollScaleDirection.Down)">
<mat-icon>arrow_downward</mat-icon> <mat-icon>arrow_downward</mat-icon>
</button> </button>
<!-- scroll up --> <!-- scroll up -->
<button type="button" mat-icon-button (click)="scroll(scrollScaleDirection.Up)"> <button type="button" mat-icon-button (click)="scroll(scrollScaleDirection.Up)">
<mat-icon>arrow_upward</mat-icon> <mat-icon>arrow_upward</mat-icon>
</button> </button>
<!-- reset button -->
<!-- refresh button -->
<button type="button" mat-icon-button (click)="scroll(scrollScaleDirection.Reset)"> <button type="button" mat-icon-button (click)="scroll(scrollScaleDirection.Reset)">
<mat-icon>refresh</mat-icon> <mat-icon>refresh</mat-icon>
</button> </button>
<!-- scroll indicator -->
<div class="button-size" [ngClass]="projector.scroll != 0 ? 'warn' : ''">{{ projector.scroll }}</div>
</div> </div>
</div> </div>
<div class="column-right" *osPerms="'core.can_manage_projector'"> <div class="column-right" *osPerms="'core.can_manage_projector'">
@ -72,11 +73,18 @@
<div> <div>
<div *ngIf="projector.non_stable_elements.length"> <div *ngIf="projector.non_stable_elements.length">
<mat-list> <mat-list>
<mat-list-item *ngFor="let element of projector.non_stable_elements" class="projected"> <mat-list-item *ngFor="let element of projector.non_stable_elements" class="currentElement backgroundColorAccent">
<button type="button" mat-icon-button (click)="unprojectCurrent(element)"> <button type="button" mat-icon-button (click)="unprojectCurrent(element)">
<mat-icon>videocam</mat-icon> <mat-icon>videocam</mat-icon>
</button> </button>
{{ getSlideTitle(element) }} {{ getSlideTitle(element) }}
<div class="button-right">
<div>
<button type="button" mat-icon-button (click)="unprojectCurrent(element)">
<mat-icon>close</mat-icon>
</button>
</div>
</div>
</mat-list-item> </mat-list-item>
</mat-list> </mat-list>
</div> </div>
@ -84,7 +92,7 @@
<!-- Expandable elements --> <!-- Expandable elements -->
<mat-accordion multi="true"> <mat-accordion multi="true">
<!-- Queue --> <!-- Queue -->
<mat-expansion-panel *ngIf="projector.elements_preview.length" [expanded]="true"> <mat-expansion-panel *ngIf="projector.elements_preview.length" [expanded]="true" class="queue">
<mat-expansion-panel-header> <mat-expansion-panel-header>
<span translate>Queue</span> <span translate>Queue</span>
</mat-expansion-panel-header> </mat-expansion-panel-header>
@ -96,7 +104,7 @@
(cdkDropListDropped)="onSortingChange($event)" (cdkDropListDropped)="onSortingChange($event)"
> >
<div <div
class="drop-list-entry" class="drop-list-entry queue-element backgroundColorLight"
*ngFor="let element of projector.elements_preview; let i = index" *ngFor="let element of projector.elements_preview; let i = index"
cdkDrag cdkDrag
> >
@ -104,7 +112,7 @@
<mat-icon>drag_indicator</mat-icon> <mat-icon>drag_indicator</mat-icon>
</div> </div>
<div class="drag-handle" *ngIf="!editQueue"> <div class="drag-handle" *ngIf="!editQueue">
<button type="button" mat-mini-fab (click)="projectNow(i)"> <button type="button" mat-icon-button (click)="projectNow(i)">
<mat-icon>videocam</mat-icon> <mat-icon>videocam</mat-icon>
</button> </button>
</div> </div>
@ -121,14 +129,17 @@
</div> </div>
</div> </div>
<mat-action-row> <mat-action-row>
<button type="button" mat-icon-button (click)="editQueue = !editQueue"> <button *ngIf="!editQueue" type="button" mat-icon-button (click)="editQueue = !editQueue">
<mat-icon>edit</mat-icon> <mat-icon>edit</mat-icon>
</button> </button>
<button *ngIf="editQueue" type="button" mat-icon-button (click)="editQueue = !editQueue">
<mat-icon>close</mat-icon>
</button>
</mat-action-row> </mat-action-row>
</mat-expansion-panel> </mat-expansion-panel>
<!-- Previous Slides --> <!-- Previous Slides -->
<mat-expansion-panel *ngIf="projector.elements_history.length"> <mat-expansion-panel *ngIf="projector.elements_history.length" class="previous-slides">
<mat-expansion-panel-header> <mat-expansion-panel-header>
<span translate>History</span> <span translate>History</span>
</mat-expansion-panel-header> </mat-expansion-panel-header>
@ -192,17 +203,17 @@
<button type="button" mat-icon-button (click)="toggleClos(true)"> <button type="button" mat-icon-button (click)="toggleClos(true)">
<mat-icon>videocam</mat-icon> <mat-icon>videocam</mat-icon>
</button> </button>
<span translate>Current list of speakers overlay</span> <span translate>Overlay</span>
</mat-list-item> </mat-list-item>
</mat-list> </mat-list>
<!-- Current Speaker --> <!-- Current Speaker -->
<mat-list *ngIf="!isClosProjected(false)"> <mat-list>
<mat-list-item> <mat-list-item [ngClass]="{ projected: isClosProjected(false) }">
<button type="button" mat-icon-button (click)="toggleClos(false)"> <button type="button" mat-icon-button (click)="toggleClos(false)">
<mat-icon>videocam</mat-icon> <mat-icon>videocam</mat-icon>
</button> </button>
<span translate>Current list of speakers slide</span> <span translate>Slide</span>
</mat-list-item> </mat-list-item>
</mat-list> </mat-list>
@ -212,7 +223,7 @@
<button type="button" mat-icon-button (click)="toggleChyron()"> <button type="button" mat-icon-button (click)="toggleChyron()">
<mat-icon>videocam</mat-icon> <mat-icon>videocam</mat-icon>
</button> </button>
<span translate>Current speaker chyron</span> <span translate>Chyron</span>
</mat-list-item> </mat-list-item>
</mat-list> </mat-list>
</mat-expansion-panel> </mat-expansion-panel>

View File

@ -30,7 +30,7 @@
color: rgba(0, 0, 0, 0.5); color: rgba(0, 0, 0, 0.5);
.button-size { .button-size {
width: 40px; padding-left: 5px;
display: inline-block; display: inline-block;
} }
} }
@ -43,6 +43,37 @@
text-align: right; text-align: right;
} }
.currentElement {
margin-bottom: 20px;
box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.25);
.button-right {
position: absolute;
right: 10px;
}
}
.queue,
.previous-slides {
box-shadow: none !important;
background: none !important;
margin-bottom: 20px;
.queue-element {
margin-bottom: 5px;
}
.mat-expansion-panel-header {
padding: 0 5px 0 0 !important;
height: 36px !important;
}
.mat-action-row {
border-top-style: none;
padding: 0;
}
}
.drop-list { .drop-list {
width: 100%; width: 100%;
display: block; display: block;
@ -53,8 +84,6 @@
display: table; display: table;
min-height: 50px; min-height: 50px;
width: 100%; width: 100%;
border-bottom: solid 1px #ccc;
color: rgba(0, 0, 0, 0.87);
.drag-handle { .drag-handle {
display: table-cell; display: table-cell;
@ -66,11 +95,6 @@
cursor: move; cursor: move;
} }
.name {
display: table-cell;
vertical-align: middle;
}
.button-right { .button-right {
display: table-cell; display: table-cell;
padding-right: 10px; padding-right: 10px;
@ -82,6 +106,11 @@
float: right; float: right;
} }
} }
.name {
display: table-cell;
vertical-align: middle;
}
} }
.drop-list-entry:last-child { .drop-list-entry:last-child {

View File

@ -19,7 +19,7 @@
color: mat-color($primary); color: mat-color($primary);
} }
.accent-text { .accent, .accent-text {
color: mat-color($accent); color: mat-color($accent);
} }
@ -42,7 +42,7 @@
font-size: 75%; font-size: 75%;
display: block; display: block;
} }
.error { .error, .warn {
color: mat-color($warn); color: mat-color($warn);
} }
@ -75,4 +75,13 @@
background-color: mat-color($primary); background-color: mat-color($primary);
color: white; // TODO color: white; // TODO
} }
.backgroundColorAccent {
background-color: mat-color($accent);
color: mat-color($accent, default-contrast) !important;
}
.backgroundColorLight {
background-color: mat-color($background, status-bar);
color: mat-color($foreground, text) !important;
}
} }

View File

@ -32,46 +32,11 @@ $openslides-blue: (
) )
); );
$openslides-green: (
50: #e9f2e6,
100: #c8e0bf,
200: #a3cb95,
300: #7eb66b,
400: #62a64b,
500: #46962b,
600: #3f8e26,
700: #0a321e,
800: #092d1a,
900: #072616,
A100: #acff9d,
A200: #80ff6a,
A400: #55ff37,
A700: #3fff1e,
contrast: (
50: #000000,
100: #000000,
200: #000000,
300: #000000,
400: #000000,
500: #ffffff,
600: #ffffff,
700: #ffffff,
800: #ffffff,
900: #ffffff,
A100: #000000,
A200: #000000,
A400: #000000,
A700: #000000
)
);
// Generate paletes using: https://material.io/design/color/ // Generate paletes using: https://material.io/design/color/
// default values fir mat-palette: $default: 500, $lighter: 100, $darker: 700. // default values fir mat-palette: $default: 500, $lighter: 100, $darker: 700.
$openslides-primary: mat-palette($openslides-blue); $openslides-primary: mat-palette($openslides-blue);
$openslides-accent: mat-palette($mat-light-blue); $openslides-accent: mat-palette($mat-light-blue);
// $openslides-primary: mat-palette($openslides-green);
// $openslides-accent: mat-palette($mat-amber);
$openslides-warn: mat-palette($mat-red); $openslides-warn: mat-palette($mat-red);

View File

@ -409,6 +409,9 @@ button.mat-menu-item.selected {
.spacer-left-10 { .spacer-left-10 {
margin-left: 10px; margin-left: 10px;
} }
.spacer-left-40 {
margin-left: 40px !important;
}
.button24 { .button24 {
background-color: white; background-color: white;
@ -469,6 +472,12 @@ button.mat-menu-item.selected {
.center { .center {
text-align: center; text-align: center;
} }
.pointer:hover {
cursor: pointer;
}
.pointer.selected {
cursor: pointer;
}
/** Colors **/ /** Colors **/
.lightblue { .lightblue {
@ -638,3 +647,10 @@ button.mat-menu-item.selected {
.mat-cell > * { .mat-cell > * {
z-index: 2; z-index: 2;
} }
.queue {
.mat-expansion-panel-body {
padding: 0 !important;
}
}