Skip to content
Snippets Groups Projects
dialog.service.ts 4.58 KiB
Newer Older
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { MatDialog } from '@angular/material/dialog';
import {
  DragNDropValueObject,
  PlayerProperties,
jojohoch's avatar
jojohoch committed
  TextImageLabel, Label, Hotspot
} from 'common/models/elements/element';
rhenck's avatar
rhenck committed
import { ClozeDocument } from 'common/models/elements/compound-elements/cloze/cloze';
import { LikertRowElement } from 'common/models/elements/compound-elements/likert/likert-row';
import { Section } from 'common/models/section';
import { SectionInsertDialogComponent } from 'editor/src/app/components/dialogs/section-insert-dialog.component';
import { LabelEditDialogComponent } from 'editor/src/app/components/dialogs/label-edit-dialog.component';
jojohoch's avatar
jojohoch committed
import {
  GeogebraAppDefinitionDialogComponent
} from 'editor/src/app/components/dialogs/geogebra-app-definition-dialog.component';
import { HotspotEditDialogComponent } from 'editor/src/app/components/dialogs/hotspot-edit-dialog.component';
import { ConfirmationDialogComponent } from '../components/dialogs/confirmation-dialog.component';
import { TextEditDialogComponent } from '../components/dialogs/text-edit-dialog.component';
import { TextEditMultilineDialogComponent } from '../components/dialogs/text-edit-multiline-dialog.component';
import { RichTextEditDialogComponent } from '../components/dialogs/rich-text-edit-dialog.component';
import { PlayerEditDialogComponent } from '../components/dialogs/player-edit-dialog.component';
import { LikertRowEditDialogComponent } from '../components/dialogs/likert-row-edit-dialog.component';
import { DropListOptionEditDialogComponent } from '../components/dialogs/drop-list-option-edit-dialog.component';

@Injectable({
  providedIn: 'root'
})
export class DialogService {
  constructor(private dialog: MatDialog) { }

  showLabelEditDialog(label: Label): Observable<Label> {
    const dialogRef = this.dialog.open(LabelEditDialogComponent, {
      data: { label }
    });
    return dialogRef.afterClosed();
  }

  showConfirmDialog(text: string): Observable<boolean> {
    const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
rhenck's avatar
rhenck committed
      data: { text }
    });
    return dialogRef.afterClosed();
  }

  showTextEditDialog(text: string): Observable<string> {
    const dialogRef = this.dialog.open(TextEditDialogComponent, {
rhenck's avatar
rhenck committed
      data: { text }
  showDropListOptionEditDialog(value: DragNDropValueObject): Observable<DragNDropValueObject> {
    const dialogRef = this.dialog.open(DropListOptionEditDialogComponent, {
rhenck's avatar
rhenck committed
      data: { value }
    });
    return dialogRef.afterClosed();
  }

  showMultilineTextEditDialog(text: string): Observable<string> {
    const dialogRef = this.dialog.open(TextEditMultilineDialogComponent, {
rhenck's avatar
rhenck committed
      data: { text }
  showRichTextEditDialog(text: string, defaultFontSize: number): Observable<string> {
    const dialogRef = this.dialog.open(RichTextEditDialogComponent, {
      data: {
        content: text,
        defaultFontSize,
        clozeMode: false
      },
      height: '700px',
    });
    return dialogRef.afterClosed();
  }
  showClozeTextEditDialog(document: ClozeDocument, defaultFontSize: number): Observable<string> {
    const dialogRef = this.dialog.open(RichTextEditDialogComponent, {
      data: {
        content: document,
        defaultFontSize,
        clozeMode: true
      },
      height: '795px',
    });
    return dialogRef.afterClosed();
  }

  showPlayerEditDialog(playerProps: PlayerProperties): Observable<PlayerProperties> {
    const dialogRef = this.dialog.open(PlayerEditDialogComponent, {
      data: { playerProps },
      height: '600px'
  showLikertRowEditDialog(row: LikertRowElement, options: TextImageLabel[]): Observable<LikertRowElement> {
    const dialogRef = this.dialog.open(LikertRowEditDialogComponent, {
      data: { row, options }
    });
    return dialogRef.afterClosed();
  }
jojohoch's avatar
jojohoch committed
  showHotspotEditDialog(hotspot: Hotspot): Observable<Hotspot> {
    const dialogRef = this.dialog.open(HotspotEditDialogComponent, {
      data: { hotspot }
    });
    return dialogRef.afterClosed();
  }

  showSectionInsertDialog(section: Section): Observable<Section> {
    const dialogRef = this.dialog.open(SectionInsertDialogComponent, {
      data: { section }
    });
    return dialogRef.afterClosed();
  }

  showGeogebraAppDefinitionDialog(): Observable<string> {
    const dialogRef = this.dialog.open(GeogebraAppDefinitionDialogComponent, {
      data: { },
      autoFocus: false
    });
    return dialogRef.afterClosed();
  }