Skip to content
Snippets Groups Projects
Commit c059b7a0 authored by jojohoch's avatar jojohoch
Browse files

Activate hidden sections with specified delay

parent 2bd675dc
No related branches found
No related tags found
No related merge requests found
Pipeline #42506 passed
...@@ -23,6 +23,8 @@ Editor ...@@ -23,6 +23,8 @@ Editor
- Möglichkeit, die maximale Zeichenanzahl von Eingabefeldern zu begrenzen - Möglichkeit, die maximale Zeichenanzahl von Eingabefeldern zu begrenzen
- Im TextEditor können nun Bereiche markiert werden, die dann im Navigationsknopf - Im TextEditor können nun Bereiche markiert werden, die dann im Navigationsknopf
über die Aktion "Textabschnitt hervorheben" ausgewählt werden können. über die Aktion "Textabschnitt hervorheben" ausgewählt werden können.
- Ermöglicht die Angabe einer Verzögerung (in Millisekunden)
für Aktivieren von verborgenen Abschnitten
### Verbesserungen ### Verbesserungen
- Ermöglicht für Eingabebereiche die dynamische Anpassung der Anzahl von Zeilen - Ermöglicht für Eingabebereiche die dynamische Anpassung der Anzahl von Zeilen
......
...@@ -17,6 +17,7 @@ Player ...@@ -17,6 +17,7 @@ Player
Text über die Zwischenablage eingefügt werden Text über die Zwischenablage eingefügt werden
- Vordefinierte markierte Bereiche in Texten können gezielt über vordefinierte Klicks auf - Vordefinierte markierte Bereiche in Texten können gezielt über vordefinierte Klicks auf
Navigationsknöpfe für 30 Sekunden farblich hervorgehoben werden Navigationsknöpfe für 30 Sekunden farblich hervorgehoben werden
- Aktiviert verborgene Abschnitten mit der angegebenen Verzögerung (in Millisekunden)
### Verbesserungen ### Verbesserungen
- Verbessert die Performanz von GeoGebra-Elementen - Verbessert die Performanz von GeoGebra-Elementen
......
...@@ -58,6 +58,7 @@ iqb-aspect-definition@1.0.0 ...@@ -58,6 +58,7 @@ iqb-aspect-definition@1.0.0
- Remove drop-list-simple as cloze child; is now a drop-list - Remove drop-list-simple as cloze child; is now a drop-list
- ButtonElement: action +highlightText - ButtonElement: action +highlightText
param +string param +string
- Section: +activeAfterIdDelay: number
3.9.0 3.9.0
- DropListElement: +deleteDroppedItemWithSameID - DropListElement: +deleteDroppedItemWithSameID
...@@ -16,6 +16,7 @@ export class Section { ...@@ -16,6 +16,7 @@ export class Section {
gridColumnSizes: string = '1fr 1fr'; gridColumnSizes: string = '1fr 1fr';
gridRowSizes: string = '1fr'; gridRowSizes: string = '1fr';
activeAfterID: string | null = null; activeAfterID: string | null = null;
activeAfterIdDelay: number = 0;
constructor(section?: Partial<Section>) { constructor(section?: Partial<Section>) {
if (section?.height) this.height = section.height; if (section?.height) this.height = section.height;
...@@ -26,6 +27,7 @@ export class Section { ...@@ -26,6 +27,7 @@ export class Section {
if (section?.gridColumnSizes !== undefined) this.gridColumnSizes = section.gridColumnSizes; if (section?.gridColumnSizes !== undefined) this.gridColumnSizes = section.gridColumnSizes;
if (section?.gridRowSizes !== undefined) this.gridRowSizes = section.gridRowSizes; if (section?.gridRowSizes !== undefined) this.gridRowSizes = section.gridRowSizes;
if (section?.activeAfterID) this.activeAfterID = section.activeAfterID; if (section?.activeAfterID) this.activeAfterID = section.activeAfterID;
if (section?.activeAfterIdDelay) this.activeAfterIdDelay = section.activeAfterIdDelay;
this.elements = this.elements =
section?.elements?.map(element => ElementFactory.createElement({ section?.elements?.map(element => ElementFactory.createElement({
...element, ...element,
......
...@@ -54,8 +54,15 @@ import { SelectionService } from '../../services/selection.service'; ...@@ -54,8 +54,15 @@ import { SelectionService } from '../../services/selection.service';
(click)="$any($event).stopPropagation()" (click)="$any($event).stopPropagation()"
(change)="updateModel('activeAfterID', $any($event.target).value)"> (change)="updateModel('activeAfterID', $any($event.target).value)">
</mat-form-field> </mat-form-field>
<mat-form-field appearance="fill">
<mat-label>{{'section-menu.activeAfterIdDelay' | translate }}</mat-label>
<input matInput type="number" step="1000" min="0"
[disabled]="!section.activeAfterID"
[value]="$any(section.activeAfterIdDelay)"
(click)="$any($event).stopPropagation()"
(change)="updateModel('activeAfterIdDelay', $any($event.target).value)">
</mat-form-field>
</mat-menu> </mat-menu>
<button mat-mini-fab [matMenuTriggerFor]="layoutMenu" <button mat-mini-fab [matMenuTriggerFor]="layoutMenu"
[matTooltip]="'Layout'" [matTooltipPosition]="'left'"> [matTooltip]="'Layout'" [matTooltipPosition]="'left'">
<mat-icon>space_dashboard</mat-icon> <mat-icon>space_dashboard</mat-icon>
......
...@@ -270,7 +270,8 @@ ...@@ -270,7 +270,8 @@
"width": "Breite", "width": "Breite",
"fraction": "Anteile", "fraction": "Anteile",
"pixel": "Bildpunkte", "pixel": "Bildpunkte",
"activeAfterID": "Sichtbar nach A/V-ID" "activeAfterID": "Sichtbar nach A/V-ID",
"activeAfterIdDelay": "Verzögerung der Sichtbarkeit"
}, },
"Bitte kopierten Abschnitt einfügen": "Bitte kopierten Abschnitt einfügen", "Bitte kopierten Abschnitt einfügen": "Bitte kopierten Abschnitt einfügen",
"Doppelte IDs festgestellt. Weiter mit neu generierten IDs?": "Doppelte IDs festgestellt. Weiter mit neu generierten IDs?", "Doppelte IDs festgestellt. Weiter mit neu generierten IDs?": "Doppelte IDs festgestellt. Weiter mit neu generierten IDs?",
......
import { Directive, ElementRef, Input } from '@angular/core'; import { Directive, ElementRef, Input } from '@angular/core';
import { Subject } from 'rxjs'; import { delay, Subject } from 'rxjs';
import { Section } from 'common/models/section'; import { Section } from 'common/models/section';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
...@@ -27,7 +27,9 @@ export class SectionVisibilityHandlingDirective { ...@@ -27,7 +27,9 @@ export class SectionVisibilityHandlingDirective {
if (this.mediaStatusChanged) { if (this.mediaStatusChanged) {
this.mediaStatusChanged this.mediaStatusChanged
.pipe(takeUntil(this.ngUnsubscribe)) .pipe(
takeUntil(this.ngUnsubscribe),
delay(this.section.activeAfterIdDelay))
.subscribe((id: string): void => this.setActiveAfterID(id)); .subscribe((id: string): void => this.setActiveAfterID(id));
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment