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

[player] Use element classes instead of element interfaces

parent c23000bf
No related branches found
No related tags found
No related merge requests found
...@@ -2,8 +2,8 @@ import { Component, OnInit } from '@angular/core'; ...@@ -2,8 +2,8 @@ import { Component, OnInit } from '@angular/core';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { import {
Unit, UnitPage Unit
} from '../../../common/unit'; } from '../../../common/classes/unit';
import { VeronaSubscriptionService } from './services/verona-subscription.service'; import { VeronaSubscriptionService } from './services/verona-subscription.service';
import { VeronaPostService } from './services/verona-post.service'; import { VeronaPostService } from './services/verona-post.service';
import { NativeEventService } from './services/native-event.service'; import { NativeEventService } from './services/native-event.service';
...@@ -12,6 +12,7 @@ import { PlayerConfig, VopStartCommand } from './models/verona'; ...@@ -12,6 +12,7 @@ import { PlayerConfig, VopStartCommand } from './models/verona';
import { AlertDialogComponent } from './components/alert-dialog/alert-dialog.component'; import { AlertDialogComponent } from './components/alert-dialog/alert-dialog.component';
import { KeyboardService } from './services/keyboard.service'; import { KeyboardService } from './services/keyboard.service';
import { UnitStateService } from './services/unit-state.service'; import { UnitStateService } from './services/unit-state.service';
import { Page } from '../../../common/classes/page';
@Component({ @Component({
selector: 'player-aspect', selector: 'player-aspect',
...@@ -23,7 +24,7 @@ import { UnitStateService } from './services/unit-state.service'; ...@@ -23,7 +24,7 @@ import { UnitStateService } from './services/unit-state.service';
` `
}) })
export class AppComponent implements OnInit { export class AppComponent implements OnInit {
pages!: UnitPage[]; pages!: Page[];
playerConfig!: PlayerConfig | undefined; playerConfig!: PlayerConfig | undefined;
constructor(private translateService: TranslateService, constructor(private translateService: TranslateService,
...@@ -63,7 +64,7 @@ export class AppComponent implements OnInit { ...@@ -63,7 +64,7 @@ export class AppComponent implements OnInit {
this.pages = unitDefinition.pages; this.pages = unitDefinition.pages;
this.unitStateService.unitStateElementCodes = message.unitState?.dataParts?.elementCodes ? this.unitStateService.unitStateElementCodes = message.unitState?.dataParts?.elementCodes ?
JSON.parse(message.unitState.dataParts.elementCodes) : []; JSON.parse(message.unitState.dataParts.elementCodes) : [];
this.keyboardService.useKeyboard(false, 'full'); this.keyboardService.useKeyboard(true, 'mini');
} else { } else {
this.dialog.open(AlertDialogComponent, { this.dialog.open(AlertDialogComponent, {
data: { data: {
......
...@@ -5,7 +5,6 @@ import { ...@@ -5,7 +5,6 @@ import {
import { FormBuilder, FormGroup } from '@angular/forms'; import { FormBuilder, FormGroup } from '@angular/forms';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { Subject } from 'rxjs'; import { Subject } from 'rxjs';
import { UnitUIElement } from '../../../../../common/unit';
import * as ComponentUtils from '../../../../../common/component-utils'; import * as ComponentUtils from '../../../../../common/component-utils';
import { KeyboardService } from '../../services/keyboard.service'; import { KeyboardService } from '../../services/keyboard.service';
import { TextFieldComponent } from '../../../../../common/element-components/text-field.component'; import { TextFieldComponent } from '../../../../../common/element-components/text-field.component';
...@@ -13,6 +12,7 @@ import { TextAreaComponent } from '../../../../../common/element-components/text ...@@ -13,6 +12,7 @@ import { TextAreaComponent } from '../../../../../common/element-components/text
import { FormService } from '../../../../../common/form.service'; import { FormService } from '../../../../../common/form.service';
import { ValueChangeElement } from '../../../../../common/form'; import { ValueChangeElement } from '../../../../../common/form';
import { UnitStateService } from '../../services/unit-state.service'; import { UnitStateService } from '../../services/unit-state.service';
import { UIElement } from '../../../../../common/classes/uIElement';
@Component({ @Component({
selector: 'app-element', selector: 'app-element',
...@@ -20,7 +20,7 @@ import { UnitStateService } from '../../services/unit-state.service'; ...@@ -20,7 +20,7 @@ import { UnitStateService } from '../../services/unit-state.service';
styleUrls: ['./element.component.css'] styleUrls: ['./element.component.css']
}) })
export class ElementComponent implements OnInit { export class ElementComponent implements OnInit {
@Input() elementModel!: UnitUIElement; @Input() elementModel!: UIElement;
@Input() parentForm!: FormGroup; @Input() parentForm!: FormGroup;
@Input() parentArrayIndex!: number; @Input() parentArrayIndex!: number;
......
...@@ -5,9 +5,9 @@ import { FormGroup } from '@angular/forms'; ...@@ -5,9 +5,9 @@ import { FormGroup } from '@angular/forms';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { Subject } from 'rxjs'; import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { UnitPage } from '../../../../../common/unit';
import { PlayerConfig } from '../../models/verona'; import { PlayerConfig } from '../../models/verona';
import { KeyboardService } from '../../services/keyboard.service'; import { KeyboardService } from '../../services/keyboard.service';
import { Page } from '../../../../../common/classes/page';
@Component({ @Component({
selector: 'app-layout', selector: 'app-layout',
...@@ -16,7 +16,7 @@ import { KeyboardService } from '../../services/keyboard.service'; ...@@ -16,7 +16,7 @@ import { KeyboardService } from '../../services/keyboard.service';
}) })
export class LayoutComponent implements OnInit, OnDestroy { export class LayoutComponent implements OnInit, OnDestroy {
@Input() parentForm!: FormGroup; @Input() parentForm!: FormGroup;
@Input() pages!: UnitPage[]; @Input() pages!: Page[];
@Input() selectedIndex!: number; @Input() selectedIndex!: number;
@Input() selectIndex!: Subject<number>; @Input() selectIndex!: Subject<number>;
@Input() playerConfig!: PlayerConfig; @Input() playerConfig!: PlayerConfig;
...@@ -28,9 +28,9 @@ export class LayoutComponent implements OnInit, OnDestroy { ...@@ -28,9 +28,9 @@ export class LayoutComponent implements OnInit, OnDestroy {
isKeyboardOpen!: boolean; isKeyboardOpen!: boolean;
scrollPagesIndices!: number[]; scrollPagesIndices!: number[];
scrollPages!: UnitPage[]; scrollPages!: Page[];
hasScrollPages!: boolean; hasScrollPages!: boolean;
alwaysVisiblePage!: UnitPage | undefined; alwaysVisiblePage!: Page | undefined;
alwaysVisibleUnitPageIndex!: number; alwaysVisibleUnitPageIndex!: number;
alwaysVisiblePagePosition!: 'top' | 'bottom' | 'left' | 'right' ; alwaysVisiblePagePosition!: 'top' | 'bottom' | 'left' | 'right' ;
layoutAlignment!: 'row' | 'column'; layoutAlignment!: 'row' | 'column';
...@@ -64,14 +64,14 @@ export class LayoutComponent implements OnInit, OnDestroy { ...@@ -64,14 +64,14 @@ export class LayoutComponent implements OnInit, OnDestroy {
} }
private initPages(): void { private initPages(): void {
this.alwaysVisibleUnitPageIndex = this.pages.findIndex((page: UnitPage): boolean => page.alwaysVisible); this.alwaysVisibleUnitPageIndex = this.pages.findIndex((page: Page): boolean => page.alwaysVisible);
this.alwaysVisiblePage = this.pages[this.alwaysVisibleUnitPageIndex]; this.alwaysVisiblePage = this.pages[this.alwaysVisibleUnitPageIndex];
this.scrollPages = this.pages.filter((page: UnitPage): boolean => !page.alwaysVisible); this.scrollPages = this.pages.filter((page: Page): boolean => !page.alwaysVisible);
this.hasScrollPages = this.scrollPages?.length > 0; this.hasScrollPages = this.scrollPages?.length > 0;
this.scrollPagesIndices = this.scrollPages.map( this.scrollPagesIndices = this.scrollPages.map(
(scrollPage: UnitPage): number => this.pages.indexOf(scrollPage) (scrollPage: Page): number => this.pages.indexOf(scrollPage)
); );
this.validPagesDetermined.emit(this.scrollPages.map((page: UnitPage, index: number): Record<string, string> => ( this.validPagesDetermined.emit(this.scrollPages.map((page: Page, index: number): Record<string, string> => (
{ {
[index.toString(10)]: `${this.translateService.instant('pageIndication', { [index.toString(10)]: `${this.translateService.instant('pageIndication', {
index: index + 1 index: index + 1
...@@ -101,7 +101,7 @@ export class LayoutComponent implements OnInit, OnDestroy { ...@@ -101,7 +101,7 @@ export class LayoutComponent implements OnInit, OnDestroy {
this.maxWidth.alwaysVisiblePage this.maxWidth.alwaysVisiblePage
); );
this.containerMaxWidth.scrollPages = this.getContainerMaxWidth( this.containerMaxWidth.scrollPages = this.getContainerMaxWidth(
this.scrollPages.findIndex((page: UnitPage): boolean => !page.hasMaxWidth) > -1, this.scrollPages.findIndex((page: Page): boolean => !page.hasMaxWidth) > -1,
this.maxWidth.scrollPages this.maxWidth.scrollPages
); );
} }
...@@ -120,10 +120,10 @@ export class LayoutComponent implements OnInit, OnDestroy { ...@@ -120,10 +120,10 @@ export class LayoutComponent implements OnInit, OnDestroy {
private getScrollPagesWidth(): number { private getScrollPagesWidth(): number {
return this.hasScrollPages ? return this.hasScrollPages ?
Math.max(...this.scrollPages.map((page: UnitPage): number => this.getAbsolutePageWidth(page))) : 0; Math.max(...this.scrollPages.map((page: Page): number => this.getAbsolutePageWidth(page))) : 0;
} }
private getAbsolutePageWidth = (page: UnitPage | undefined): number => ((page) ? 2 * page.margin + page.maxWidth : 0); private getAbsolutePageWidth = (page: Page | undefined): number => ((page) ? 2 * page.margin + page.maxWidth : 0);
onSelectedIndexChange(selectedIndex: number): void { onSelectedIndexChange(selectedIndex: number): void {
this.selectedIndexChange.emit(selectedIndex); this.selectedIndexChange.emit(selectedIndex);
......
...@@ -2,9 +2,9 @@ import { ...@@ -2,9 +2,9 @@ import {
Component, Input, OnInit, Output, EventEmitter Component, Input, OnInit, Output, EventEmitter
} from '@angular/core'; } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms'; import { FormBuilder, FormGroup } from '@angular/forms';
import { UnitPage } from '../../../../../common/unit';
import { FormService } from '../../../../../common/form.service'; import { FormService } from '../../../../../common/form.service';
import { UnitStateService } from '../../services/unit-state.service'; import { UnitStateService } from '../../services/unit-state.service';
import { Page } from '../../../../../common/classes/page';
@Component({ @Component({
selector: 'app-page', selector: 'app-page',
...@@ -12,7 +12,7 @@ import { UnitStateService } from '../../services/unit-state.service'; ...@@ -12,7 +12,7 @@ import { UnitStateService } from '../../services/unit-state.service';
}) })
export class PageComponent implements OnInit { export class PageComponent implements OnInit {
@Input() page!: UnitPage; @Input() page!: Page;
@Input() isLastPage!: boolean; @Input() isLastPage!: boolean;
@Input() parentForm!: FormGroup; @Input() parentForm!: FormGroup;
@Input() parentArrayIndex!: number; @Input() parentArrayIndex!: number;
......
...@@ -4,13 +4,13 @@ import { ...@@ -4,13 +4,13 @@ import {
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { Subject } from 'rxjs'; import { Subject } from 'rxjs';
import { UnitPage } from '../../../../../common/unit';
import { VeronaSubscriptionService } from '../../services/verona-subscription.service'; import { VeronaSubscriptionService } from '../../services/verona-subscription.service';
import { import {
PlayerConfig, PlayerState, RunningState, PlayerConfig, PlayerState, RunningState,
VopContinueCommand, VopGetStateRequest, VopPageNavigationCommand, VopStopCommand VopContinueCommand, VopGetStateRequest, VopPageNavigationCommand, VopStopCommand
} from '../../models/verona'; } from '../../models/verona';
import { VeronaPostService } from '../../services/verona-post.service'; import { VeronaPostService } from '../../services/verona-post.service';
import { Page } from '../../../../../common/classes/page';
@Component({ @Component({
selector: 'app-player-state', selector: 'app-player-state',
...@@ -19,7 +19,7 @@ import { VeronaPostService } from '../../services/verona-post.service'; ...@@ -19,7 +19,7 @@ import { VeronaPostService } from '../../services/verona-post.service';
}) })
export class PlayerStateComponent implements OnInit, OnDestroy { export class PlayerStateComponent implements OnInit, OnDestroy {
@Input() parentForm!: FormGroup; @Input() parentForm!: FormGroup;
@Input() pages!: UnitPage[]; @Input() pages!: Page[];
@Input() playerConfig!: PlayerConfig; @Input() playerConfig!: PlayerConfig;
currentPlayerPageIndex: number = 0; currentPlayerPageIndex: number = 0;
......
...@@ -2,8 +2,8 @@ import { ...@@ -2,8 +2,8 @@ import {
Component, Input, OnInit Component, Input, OnInit
} from '@angular/core'; } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms'; import { FormBuilder, FormGroup } from '@angular/forms';
import { UnitPageSection } from '../../../../../common/unit';
import { FormService } from '../../../../../common/form.service'; import { FormService } from '../../../../../common/form.service';
import { Section } from '../../../../../common/classes/section';
@Component({ @Component({
selector: 'app-section', selector: 'app-section',
...@@ -11,7 +11,7 @@ import { FormService } from '../../../../../common/form.service'; ...@@ -11,7 +11,7 @@ import { FormService } from '../../../../../common/form.service';
}) })
export class SectionComponent implements OnInit { export class SectionComponent implements OnInit {
@Input() parentForm!: FormGroup; @Input() parentForm!: FormGroup;
@Input() section!: UnitPageSection; @Input() section!: Section;
@Input() parentArrayIndex!: number; @Input() parentArrayIndex!: number;
sectionForm!: FormGroup; sectionForm!: FormGroup;
......
...@@ -19,15 +19,15 @@ import { ...@@ -19,15 +19,15 @@ import {
import { import {
PlayerConfig, Progress, UnitState, VopNavigationDeniedNotification PlayerConfig, Progress, UnitState, VopNavigationDeniedNotification
} from '../../models/verona'; } from '../../models/verona';
import { UnitPage } from '../../../../../common/unit';
import { UnitStateService } from '../../services/unit-state.service'; import { UnitStateService } from '../../services/unit-state.service';
import { Page } from '../../../../../common/classes/page';
@Component({ @Component({
selector: 'app-unit-state', selector: 'app-unit-state',
templateUrl: './unit-state.component.html' templateUrl: './unit-state.component.html'
}) })
export class UnitStateComponent implements OnInit, OnDestroy { export class UnitStateComponent implements OnInit, OnDestroy {
@Input() pages: UnitPage[] = []; @Input() pages: Page[] = [];
@Input() playerConfig!: PlayerConfig; @Input() playerConfig!: PlayerConfig;
form!: FormGroup; form!: FormGroup;
......
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs'; import { Observable, Subject } from 'rxjs';
import { UnitUIElement } from '../../../../common/unit';
import { import {
StatusChangeElement, StatusChangeElement,
UnitStateElementCode, UnitStateElementCode,
...@@ -8,6 +7,7 @@ import { ...@@ -8,6 +7,7 @@ import {
UnitStateElementCodeStatusValue UnitStateElementCodeStatusValue
} from '../models/verona'; } from '../models/verona';
import { ValueChangeElement } from '../../../../common/form'; import { ValueChangeElement } from '../../../../common/form';
import { InputElement } from '../../../../common/classes/uIElement';
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
...@@ -49,7 +49,7 @@ export class UnitStateService { ...@@ -49,7 +49,7 @@ export class UnitStateService {
return this._presentedPageAdded.asObservable(); return this._presentedPageAdded.asObservable();
} }
registerElement(element: UnitUIElement): void { registerElement(element: InputElement): void {
this.addUnitStateElementCode(element.id, element.value); this.addUnitStateElementCode(element.id, element.value);
} }
......
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