From d7e88a2fb1bfd82170861bfa6ba4a932d2f4b18c Mon Sep 17 00:00:00 2001 From: jojohoch <joachim.hoch@iqb.hu-berlin.de> Date: Wed, 10 Nov 2021 09:48:50 +0100 Subject: [PATCH] Implement abstract class MediaPlayerElementComponent AudioComponent and VideoComponent inherit from MediaPlayerElementComponent to avoid duplicate code --- projects/common/element-components/audio.component.ts | 8 +++----- projects/common/element-components/video.component.ts | 8 +++----- .../common/media-player-element-component.directive.ts | 8 ++++++++ 3 files changed, 14 insertions(+), 10 deletions(-) create mode 100644 projects/common/media-player-element-component.directive.ts diff --git a/projects/common/element-components/audio.component.ts b/projects/common/element-components/audio.component.ts index d07463380..582bdfa8e 100644 --- a/projects/common/element-components/audio.component.ts +++ b/projects/common/element-components/audio.component.ts @@ -1,7 +1,6 @@ -import { Component, EventEmitter, Output } from '@angular/core'; -import { ElementComponent } from '../element-component.directive'; +import { Component } from '@angular/core'; import { AudioElement } from '../models/audio-element'; -import { ValueChangeElement } from '../models/uI-element'; +import { MediaPlayerElementComponent } from '../media-player-element-component.directive'; @Component({ selector: 'app-audio', @@ -19,7 +18,6 @@ import { ValueChangeElement } from '../models/uI-element'; </div> ` }) -export class AudioComponent extends ElementComponent { - @Output() playbackTimeChanged = new EventEmitter<ValueChangeElement>(); +export class AudioComponent extends MediaPlayerElementComponent { elementModel!: AudioElement; } diff --git a/projects/common/element-components/video.component.ts b/projects/common/element-components/video.component.ts index 0398d550a..add8712dc 100644 --- a/projects/common/element-components/video.component.ts +++ b/projects/common/element-components/video.component.ts @@ -1,7 +1,6 @@ -import { Component, EventEmitter, Output } from '@angular/core'; -import { ElementComponent } from '../element-component.directive'; +import { Component } from '@angular/core'; import { VideoElement } from '../models/video-element'; -import { ValueChangeElement } from '../models/uI-element'; +import { MediaPlayerElementComponent } from '../media-player-element-component.directive'; @Component({ selector: 'app-video', @@ -22,7 +21,6 @@ import { ValueChangeElement } from '../models/uI-element'; `, styles: ['.correct-position{ display: block; margin-top: -4px; }'] }) -export class VideoComponent extends ElementComponent { - @Output() playbackTimeChanged = new EventEmitter<ValueChangeElement>(); +export class VideoComponent extends MediaPlayerElementComponent { elementModel!: VideoElement; } diff --git a/projects/common/media-player-element-component.directive.ts b/projects/common/media-player-element-component.directive.ts new file mode 100644 index 000000000..fd1875481 --- /dev/null +++ b/projects/common/media-player-element-component.directive.ts @@ -0,0 +1,8 @@ +import { Directive, EventEmitter, Output } from '@angular/core'; +import { ValueChangeElement } from './models/uI-element'; +import { ElementComponent } from './element-component.directive'; + +@Directive() +export abstract class MediaPlayerElementComponent extends ElementComponent { + @Output() playbackTimeChanged = new EventEmitter<ValueChangeElement>(); +} -- GitLab