51 lines
1.6 KiB
TypeScript
51 lines
1.6 KiB
TypeScript
|
import { Injectable } from '@angular/core';
|
||
|
|
||
|
import { OpenSlidesComponent } from 'app/openslides.component';
|
||
|
import { Projectable } from 'app/site/base/projectable';
|
||
|
import { MatDialog } from '@angular/material';
|
||
|
import {
|
||
|
ProjectionDialogComponent,
|
||
|
ProjectionDialogReturnType
|
||
|
} from 'app/shared/components/projection-dialog/projection-dialog.component';
|
||
|
import { ProjectorService } from './projector.service';
|
||
|
|
||
|
/**
|
||
|
* Manages the projection dialog. Projects the result of the user's choice.
|
||
|
*/
|
||
|
@Injectable({
|
||
|
providedIn: 'root'
|
||
|
})
|
||
|
export class ProjectionDialogService extends OpenSlidesComponent {
|
||
|
/**
|
||
|
* Constructor.
|
||
|
*
|
||
|
* @param dialog
|
||
|
* @param projectorService
|
||
|
*/
|
||
|
public constructor(private dialog: MatDialog, private projectorService: ProjectorService) {
|
||
|
super();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Opens the projection dialog for the given projectable. After the user's choice,
|
||
|
* the projectors will be updated.
|
||
|
*
|
||
|
* @param obj The projectable.
|
||
|
*/
|
||
|
public async openProjectDialogFor(obj: Projectable): Promise<void> {
|
||
|
const dialogRef = this.dialog.open<ProjectionDialogComponent, Projectable, ProjectionDialogReturnType>(
|
||
|
ProjectionDialogComponent,
|
||
|
{
|
||
|
minWidth: '500px',
|
||
|
maxHeight: '90vh',
|
||
|
data: obj
|
||
|
}
|
||
|
);
|
||
|
const response = await dialogRef.afterClosed().toPromise();
|
||
|
if (response) {
|
||
|
const [projectors, projectorElement]: ProjectionDialogReturnType = response;
|
||
|
this.projectorService.projectOn(projectors, projectorElement);
|
||
|
}
|
||
|
}
|
||
|
}
|