Skip to content
Snippets Groups Projects
unit-interface-initializer.ts 11.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • import {
      FontProperties,
      PlayerProperties,
      PositionProperties,
      SurfaceProperties,
      UIElement
    } from '../models/uI-element';
    
    // Properties check is only for backwards compatibility
    
    const DEFAULT_DYNAMIC_POSITIONING = false;
    
    const DEFAULT_FONT_COLOR = '#000000';
    const DEFAULT_FONT = 'Roboto';
    const DEFAULT_FONT_SIZE = 20;
    const DEFAULT_LINE_HEIGHT = 120;
    const DEFAULT_BOLD = false;
    const DEFAULT_ITALIC = false;
    const DEFAULT_UNDERLINE = false;
    
    const DEFAULT_BACKGROUND_COLOR = '#d3d3d3';
    
    export function initPositionedElement(serializedElement: Partial<UIElement>): PositionProperties {
      if (serializedElement.positionProps) {
        return {
          dynamicPositioning: serializedElement.positionProps.dynamicPositioning as boolean || DEFAULT_DYNAMIC_POSITIONING,
          xPosition: serializedElement.positionProps.xPosition !== undefined ?
            serializedElement.positionProps.xPosition as number : 0,
          yPosition: serializedElement.positionProps.yPosition !== undefined ?
            serializedElement.positionProps.yPosition as number : 0,
          useMinHeight: serializedElement.positionProps.useMinHeight !== undefined ?
            serializedElement.positionProps.useMinHeight as boolean : false,
          gridColumnStart: serializedElement.positionProps.gridColumnStart !== undefined ?
            serializedElement.positionProps.gridColumnStart as number : 1,
          gridColumnEnd: serializedElement.positionProps.gridColumnEnd !== undefined ?
            serializedElement.positionProps.gridColumnEnd as number : 2,
          gridRowStart: serializedElement.positionProps.gridRowStart !== undefined ?
            serializedElement.positionProps.gridRowStart as number : 1,
          gridRowEnd: serializedElement.positionProps.gridRowEnd !== undefined ?
            serializedElement.positionProps.gridRowEnd as number : 2,
          marginLeft: serializedElement.positionProps.marginLeft !== undefined ?
            serializedElement.positionProps.marginLeft as number : 0,
          marginRight: serializedElement.positionProps.marginRight !== undefined ?
            serializedElement.positionProps.marginRight as number : 0,
          marginTop: serializedElement.positionProps.marginTop !== undefined ?
            serializedElement.positionProps.marginTop as number : 0,
          marginBottom: serializedElement.positionProps.marginBottom !== undefined ?
            serializedElement.positionProps.marginBottom as number : 0,
          zIndex: serializedElement.positionProps.zIndex !== undefined ?
            serializedElement.positionProps.zIndex as number : 0
        };
      }
    
        dynamicPositioning: serializedElement.dynamicPositioning as boolean || DEFAULT_DYNAMIC_POSITIONING,
        xPosition: serializedElement.xPosition !== undefined ? serializedElement.xPosition as number : 0,
        yPosition: serializedElement.yPosition !== undefined ? serializedElement.yPosition as number : 0,
        useMinHeight: serializedElement.useMinHeight !== undefined ? serializedElement.useMinHeight as boolean : false,
        gridColumnStart: serializedElement.gridColumnStart !== undefined ? serializedElement.gridColumnStart as number : 1,
        gridColumnEnd: serializedElement.gridColumnEnd !== undefined ? serializedElement.gridColumnEnd as number : 2,
        gridRowStart: serializedElement.gridRowStart !== undefined ? serializedElement.gridRowStart as number : 1,
        gridRowEnd: serializedElement.gridRowEnd !== undefined ? serializedElement.gridRowEnd as number : 2,
        marginLeft: serializedElement.marginLeft !== undefined ? serializedElement.marginLeft as number : 0,
        marginRight: serializedElement.marginRight !== undefined ? serializedElement.marginRight as number : 0,
        marginTop: serializedElement.marginTop !== undefined ? serializedElement.marginTop as number : 0,
        marginBottom: serializedElement.marginBottom !== undefined ? serializedElement.marginBottom as number : 0,
        zIndex: serializedElement.zIndex !== undefined ? serializedElement.zIndex as number : 0
    
    export function initFontElement(serializedElement: Partial<UIElement>): FontProperties {
      if (serializedElement.fontProps) {
        return {
          fontColor: (serializedElement.fontProps as FontProperties).fontColor as string || DEFAULT_FONT_COLOR,
          font: (serializedElement.fontProps as FontProperties).font as string || DEFAULT_FONT,
          fontSize: (serializedElement.fontProps as FontProperties).fontSize !== undefined ?
            serializedElement.fontSize as number : DEFAULT_FONT_SIZE,
          lineHeight: (serializedElement.fontProps as FontProperties).lineHeight !== undefined ?
            serializedElement.lineHeight as number : DEFAULT_LINE_HEIGHT,
          bold: (serializedElement.fontProps as FontProperties).bold !== undefined ?
            serializedElement.bold as boolean : DEFAULT_BOLD,
          italic: (serializedElement.fontProps as FontProperties).italic !== undefined ?
            serializedElement.italic as boolean : DEFAULT_ITALIC,
          underline: (serializedElement.fontProps as FontProperties).underline !== undefined ?
            serializedElement.underline as boolean : DEFAULT_UNDERLINE
        };
      }
      return {
        fontColor: serializedElement.fontColor as string || DEFAULT_FONT_COLOR,
        font: serializedElement.font as string || DEFAULT_FONT,
        fontSize: serializedElement.fontSize !== undefined ? serializedElement.fontSize as number : DEFAULT_FONT_SIZE,
        lineHeight: serializedElement.lineHeight !== undefined ?
          serializedElement.lineHeight as number : DEFAULT_LINE_HEIGHT,
        bold: serializedElement.bold !== undefined ? serializedElement.bold as boolean : DEFAULT_BOLD,
        italic: serializedElement.italic !== undefined ? serializedElement.italic as boolean : DEFAULT_ITALIC,
        underline: serializedElement.underline !== undefined ? serializedElement.underline as boolean : DEFAULT_UNDERLINE
      };
    }
    
    export function initSurfaceElement(serializedElement: Partial<UIElement>): SurfaceProperties {
      if (serializedElement.surfaceProps) {
        return { backgroundColor: serializedElement.surfaceProps.backgroundColor as string || DEFAULT_BACKGROUND_COLOR };
      }
      return { backgroundColor: serializedElement.backgroundColor as string || DEFAULT_BACKGROUND_COLOR };
    
    export function initPlayerElement(serializedElement: Partial<UIElement>): PlayerProperties {
      if (serializedElement.playerProps) {
        return {
          autostart: serializedElement.playerProps.autostart !== undefined ?
            serializedElement.playerProps.autostart as boolean : false,
          autostartDelay: serializedElement.playerProps.autostartDelay !== undefined ?
            serializedElement.playerProps.autostartDelay as number : 0,
          loop: serializedElement.playerProps.loop !== undefined ?
            serializedElement.playerProps.loop as boolean : false,
          startControl: serializedElement.playerProps.startControl !== undefined ?
            serializedElement.playerProps.startControl as boolean : true,
          pauseControl: serializedElement.playerProps.pauseControl !== undefined ?
            serializedElement.playerProps.pauseControl as boolean : false,
          progressBar: serializedElement.playerProps.progressBar !== undefined ?
            serializedElement.playerProps.progressBar as boolean : true,
          interactiveProgressbar: serializedElement.playerProps.interactiveProgressbar !== undefined ?
            serializedElement.playerProps.interactiveProgressbar as boolean : false,
          volumeControl: serializedElement.playerProps.volumeControl !== undefined ?
            serializedElement.playerProps.volumeControl as boolean : true,
          defaultVolume: serializedElement.playerProps.defaultVolume !== undefined ?
            serializedElement.playerProps.defaultVolume as number : 0.8,
          minVolume: serializedElement.playerProps.minVolume !== undefined ?
            serializedElement.playerProps.minVolume as number : 0,
          muteControl: serializedElement.playerProps.muteControl !== undefined ?
            serializedElement.playerProps.muteControl as boolean : true,
          hintLabel: serializedElement.playerProps.hintLabel as string || '',
          hintLabelDelay: serializedElement.playerProps.hintLabelDelay !== undefined ?
            serializedElement.playerProps.hintLabelDelay as number : 0,
          uninterruptible: serializedElement.playerProps.uninterruptible !== undefined ?
            serializedElement.playerProps.uninterruptible as boolean : false,
          hideOtherPages: serializedElement.playerProps.hideOtherPages !== undefined ?
            serializedElement.playerProps.hideOtherPages as boolean : false,
          activeAfterID: serializedElement.playerProps.activeAfterID as string || '',
          minRuns: serializedElement.playerProps.minRuns !== undefined ?
            serializedElement.playerProps.minRuns as number : 1,
          maxRuns: serializedElement.playerProps.maxRuns !== undefined ?
            serializedElement.playerProps.maxRuns as number | null : null,
          showRestRuns: serializedElement.playerProps.showRestRuns !== undefined ?
            serializedElement.playerProps.showRestRuns as boolean : false,
          showRestTime: serializedElement.playerProps.showRestTime !== undefined ?
            serializedElement.playerProps.showRestTime as boolean : true,
          playbackTime: serializedElement.playerProps.playbackTime !== undefined ?
            serializedElement.playerProps.playbackTime as number : 0
        };
      }
    
    
        autostart: serializedElement.autostart !== undefined ? serializedElement.autostart as boolean : false,
    
        autostartDelay: serializedElement.autostartDelay !== undefined ? serializedElement.autostartDelay as number : 0,
    
        loop: serializedElement.loop !== undefined ? serializedElement.loop as boolean : false,
        startControl: serializedElement.startControl !== undefined ? serializedElement.startControl as boolean : true,
        pauseControl: serializedElement.pauseControl !== undefined ? serializedElement.pauseControl as boolean : false,
        progressBar: serializedElement.progressBar !== undefined ? serializedElement.progressBar as boolean : true,
        interactiveProgressbar: serializedElement.interactiveProgressbar !== undefined ?
          serializedElement.interactiveProgressbar as boolean : false,
        volumeControl: serializedElement.volumeControl !== undefined ? serializedElement.volumeControl as boolean : true,
    
        defaultVolume: serializedElement.defaultVolume !== undefined ? serializedElement.defaultVolume as number : 0.8,
        minVolume: serializedElement.minVolume !== undefined ? serializedElement.minVolume as number : 0,
        muteControl: serializedElement.muteControl !== undefined ? serializedElement.muteControl as boolean : true,
    
        hintLabel: serializedElement.hintLabel as string || '',
    
        hintLabelDelay: serializedElement.hintLabelDelay !== undefined ? serializedElement.hintLabelDelay as number : 0,
    
        uninterruptible:
          serializedElement.uninterruptible !== undefined ? serializedElement.uninterruptible as boolean : false,
        hideOtherPages:
          serializedElement.hideOtherPages !== undefined ? serializedElement.hideOtherPages as boolean : false,
    
        activeAfterID: serializedElement.activeAfterID as string || '',
    
        minRuns: serializedElement.minRuns !== undefined ? serializedElement.minRuns as number : 1,
    
        maxRuns: serializedElement.maxRuns !== undefined ? serializedElement.maxRuns as number : null,
    
        showRestRuns: serializedElement.showRestRuns !== undefined ? serializedElement.showRestRuns as boolean : false,
        showRestTime: serializedElement.showRestTime !== undefined ? serializedElement.showRestTime as boolean : true,
    
        playbackTime: serializedElement.playbackTime !== undefined ? serializedElement.playbackTime as number : 0