From f06c0ffda37474108227d7348dcb7d9a92fabd51 Mon Sep 17 00:00:00 2001 From: paf <paf@titelfrei.de> Date: Thu, 1 Apr 2021 09:53:01 +0200 Subject: [PATCH] adds backgrounds to the session-rows according to state and booklet-species --- .../group-monitor.component.html | 2 +- .../group-monitor/group-monitor.component.ts | 37 ++++++++++++------- .../group-monitor/group-monitor.service.ts | 2 +- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/app/group-monitor/group-monitor.component.html b/src/app/group-monitor/group-monitor.component.html index 549f28ea..71b5d87e 100644 --- a/src/app/group-monitor/group-monitor.component.html +++ b/src/app/group-monitor/group-monitor.component.html @@ -243,7 +243,7 @@ (selectedElement$)="selectElement($event)" [checked]="gms.isChecked(session)" (checked$)="toggleChecked($event, session)" - [style]="{backgroundColor: getClusterColor(session)}" + [ngStyle]="{background: getSessionColor(session)}" > </tc-test-view> </ng-container> diff --git a/src/app/group-monitor/group-monitor.component.ts b/src/app/group-monitor/group-monitor.component.ts index 5266bb9e..e901b229 100644 --- a/src/app/group-monitor/group-monitor.component.ts +++ b/src/app/group-monitor/group-monitor.component.ts @@ -146,20 +146,31 @@ export class GroupMonitorComponent implements OnInit, OnDestroy { elem.classList[reachedBottom ? 'add' : 'remove']('hide-scroll-hint'); } - getClusterColor(session: TestSession): string { - if (!this.displayOptions.highlightSpecies) { - return 'white'; + getSessionColor(session: TestSession): string { + const stripes = (c1, c2) => `repeating-linear-gradient(45deg, ${c1}, ${c1} 10px, ${c2} 10px, ${c2} 20px)`; + const hsl = (h, s, l) => `hsl(${h}, ${s}%, ${l}%)`; + const colorful = this.displayOptions.highlightSpecies; + const h = colorful ? ( + session.booklet.species.length * + session.booklet.species.charCodeAt(0) * + session.booklet.species.charCodeAt(session.booklet.species.length / 4) * + session.booklet.species.charCodeAt(session.booklet.species.length / 2) * + session.booklet.species.charCodeAt(3 * (session.booklet.species.length / 4)) * + session.booklet.species.charCodeAt(session.booklet.species.length - 1) + ) % 360 : 0; + + switch (session.state) { + case 'paused': + return hsl(h, colorful ? 45 : 0, 90); + case 'pending': + return stripes(hsl(h, colorful ? 75 : 0, 95), hsl(h, 0, 98)); + case 'locked': + return stripes(hsl(h, colorful ? 75 : 0, 95), hsl(0, 0, 92)); + case 'error': + return stripes(hsl(h, colorful ? 75 : 0, 95), hsl(0, 30, 95)); + default: + return hsl(h, colorful ? 75 : 0, colorful ? 95 : 100); } - const species = session.booklet.species; - const q1 = species.length / 4; - const q2 = species.length / 2; - const q3 = 3 * (species.length / 4); - const end = species.length - 1; - const cnn = species.length * (species.charCodeAt(0) + species.charCodeAt(q1) + - species.charCodeAt(q2) + species.charCodeAt(q3) + species.charCodeAt(end)); - const rgb = [255, 255, 255]; - rgb[species.charCodeAt(end) % 3] = (cnn % 150); - return `rgba(${rgb[0]},${rgb[1]},${rgb[2]}, 0.07)`; } markElement(marking: Selection): void { diff --git a/src/app/group-monitor/group-monitor.service.ts b/src/app/group-monitor/group-monitor.service.ts index e6522901..64f8b791 100644 --- a/src/app/group-monitor/group-monitor.service.ts +++ b/src/app/group-monitor/group-monitor.service.ts @@ -30,7 +30,7 @@ import { ConnectionStatus } from '../shared/websocket-backend.service'; * - kombinierte hintergrundfarben * tidy: * # was geben die commands zurück? - * - wie wird alles reseted? + * # wie wird alles reseted? * test * polish: * - design -- GitLab