Skip to content
Snippets Groups Projects
hotspot-edit-dialog.component.ts 5.18 KiB
Newer Older
  • Learn to ignore specific revisions
  • jojohoch's avatar
    jojohoch committed
    import { Component, Inject } from '@angular/core';
    
    import { MAT_DIALOG_DATA } from '@angular/material/dialog';
    
    jojohoch's avatar
    jojohoch committed
    import { Hotspot } from 'common/models/elements/element';
    
    @Component({
      selector: 'aspect-hotspot-edit-dialog',
      template: `
    
        <mat-dialog-content class="fx-column-start-stretch fx-fix-gap-10">
          <div class="fx-row-start-stretch fx-fix-gap-10">
            <mat-form-field class="fx-flex-50" appearance="fill">
    
    jojohoch's avatar
    jojohoch committed
              <mat-label>{{ 'hotspot.top' | translate }}</mat-label>
              <input matInput type="number" min="0"
                     [(ngModel)]="newHotspot.top">
            </mat-form-field>
    
            <mat-form-field class="fx-flex-50"  appearance="fill">
    
    jojohoch's avatar
    jojohoch committed
              <mat-label>{{ 'hotspot.left' | translate }}</mat-label>
              <input matInput type="number" min="0"
                     [(ngModel)]="newHotspot.left">
            </mat-form-field>
          </div>
    
          <div class="fx-row-start-stretch fx-fix-gap-10">
            <mat-form-field class="fx-flex-50"  appearance="fill">
    
    jojohoch's avatar
    jojohoch committed
              <mat-label>{{ 'hotspot.width' | translate }}</mat-label>
              <input matInput type="number" min="0"
                     [(ngModel)]="newHotspot.width">
            </mat-form-field>
    
            <mat-form-field class="fx-flex-50" appearance="fill">
    
    jojohoch's avatar
    jojohoch committed
              <mat-label>{{ 'hotspot.height' | translate }}</mat-label>
              <input matInput type="number" min="0"
                     [(ngModel)]="newHotspot.height">
            </mat-form-field>
          </div>
    
          <div class="fx-row-space-between-center fx-fix-gap-10">
            <mat-radio-group [(ngModel)]="newHotspot.shape" class="fx-column-start-stretch fx-flex-50 fx-fix-gap-5">
    
    jojohoch's avatar
    jojohoch committed
              <label>{{'hotspot.shape' | translate}}</label>
              <mat-radio-button value='ellipse'>{{'hotspot.ellipse' | translate}}</mat-radio-button>
    
              <mat-radio-button value='rectangle'>{{'hotspot.rectangle' | translate}}</mat-radio-button>
    
              <mat-radio-button value='triangle'>{{'hotspot.triangle' | translate}}</mat-radio-button>
    
    jojohoch's avatar
    jojohoch committed
            </mat-radio-group>
    
            <mat-form-field class="fx-flex-50" appearance="fill">
    
    jojohoch's avatar
    jojohoch committed
              <mat-label>{{ 'hotspot.borderWidth' | translate }}</mat-label>
              <input matInput type="number" min="0"
                     [(ngModel)]="newHotspot.borderWidth">
            </mat-form-field>
          </div>
    
    
    
          <div class="fx-row-start-stretch fx-fix-gap-10">
            <mat-form-field appearance="fill" class="mdInput textsingleline fx-flex-50">
    
    jojohoch's avatar
    jojohoch committed
              <mat-label>{{'hotspot.backgroundColor' | translate }}</mat-label>
              <input matInput type="text" [(ngModel)]="newHotspot.backgroundColor">
              <button mat-icon-button matSuffix (click)="backgroundColorInput.click()">
                <mat-icon>edit</mat-icon>
              </button>
            </mat-form-field>
            <input matInput type="color" hidden #backgroundColorInput [(ngModel)]="newHotspot.backgroundColor">
    
    
            <mat-form-field appearance="fill" class="mdInput textsingleline fx-flex-50">
    
    jojohoch's avatar
    jojohoch committed
              <mat-label>{{'hotspot.borderColor' | translate }}</mat-label>
              <input matInput type="text" [(ngModel)]="newHotspot.borderColor">
              <button mat-icon-button matSuffix (click)="borderColorInput.click()">
                <mat-icon>edit</mat-icon>
              </button>
            </mat-form-field>
            <input matInput type="color" hidden #borderColorInput [(ngModel)]="newHotspot.borderColor">
          </div>
    
    
          <div class="fx-row-start-stretch fx-fix-gap-10">
            <mat-form-field  class="fx-flex-50" appearance="fill">
    
    jojohoch's avatar
    jojohoch committed
              <mat-label>{{ 'hotspot.rotation' | translate }}</mat-label>
              <input matInput type="number" min="0"
                     [(ngModel)]="newHotspot.rotation">
            </mat-form-field>
    
    jojohoch's avatar
    jojohoch committed
              <mat-checkbox [checked]="newHotspot.value"
                            (change)="newHotspot.value = $event.checked">
                {{ 'hotspot.value' | translate }}
              </mat-checkbox>
              <mat-checkbox [checked]="newHotspot.readOnly"
                            (change)="newHotspot.readOnly = $event.checked">
                {{ 'hotspot.readOnly' | translate }}
              </mat-checkbox>
            </div>
          </div>
        </mat-dialog-content>
        <mat-dialog-actions>
          <button mat-button [mat-dialog-close]="newHotspot">{{'save' | translate }}</button>
          <button mat-button mat-dialog-close>{{'cancel' | translate }}</button>
        </mat-dialog-actions>
    
      `,
      styles: [`
        .fx-column-start-stretch {
          box-sizing: border-box;
          display: flex;
          flex-direction: column;
    
          justify-content: flex-start;
    
          align-items: stretch;
        }
    
        .fx-row-start-stretch {
          box-sizing: border-box;
          display: flex;
          flex-direction: row;
    
          justify-content: flex-start;
    
          align-items: stretch;
        }
    
        .fx-row-space-between-center {
          box-sizing: border-box;
          display: flex;
          flex-direction: row;
          justify-content: space-between;
          align-items: center;
        }
    
        .fx-fix-gap-10 {
          gap: 10px;
        }
    
        .fx-fix-gap-5 {
          gap: 5px;
        }
    
        .fx-flex-50 {
          flex: 1 1 100%;
          box-sizing: border-box;
          max-width: 50%;
        }
      `]
    
    jojohoch's avatar
    jojohoch committed
    })
    export class HotspotEditDialogComponent {
      constructor(@Inject(MAT_DIALOG_DATA) public data: { hotspot: Hotspot }) { }
    
      newHotspot = { ...this.data.hotspot };
    }