From 9f951fa0174e4548c57f7a5392d4d74587ac2023 Mon Sep 17 00:00:00 2001 From: 4gray Date: Wed, 17 Feb 2021 19:04:16 +0100 Subject: [PATCH] feat: add dialog about playlist details --- src/app/home/home.module.ts | 4 ++- .../playlist-info.component.html | 24 +++++++++++++ .../playlist-info.component.scss | 0 .../playlist-info.component.spec.ts | 34 +++++++++++++++++++ .../playlist-info/playlist-info.component.ts | 21 ++++++++++++ .../recent-playlists.component.html | 8 +++++ .../recent-playlists.component.ts | 18 ++++++++++ src/app/material.module.ts | 2 ++ 8 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 src/app/home/recent-playlists/playlist-info/playlist-info.component.html create mode 100644 src/app/home/recent-playlists/playlist-info/playlist-info.component.scss create mode 100644 src/app/home/recent-playlists/playlist-info/playlist-info.component.spec.ts create mode 100644 src/app/home/recent-playlists/playlist-info/playlist-info.component.ts diff --git a/src/app/home/home.module.ts b/src/app/home/home.module.ts index 05dbb92a3..01f2672eb 100644 --- a/src/app/home/home.module.ts +++ b/src/app/home/home.module.ts @@ -7,14 +7,16 @@ import { UrlUploadComponent } from './url-upload/url-upload.component'; import { RecentPlaylistsComponent } from './recent-playlists/recent-playlists.component'; import { HomeRoutingModule } from './home.routing'; import { NgxUploaderModule } from 'ngx-uploader'; +import { PlaylistInfoComponent } from './recent-playlists/playlist-info/playlist-info.component'; @NgModule({ imports: [CommonModule, HomeRoutingModule, NgxUploaderModule, SharedModule], declarations: [ HomeComponent, FileUploadComponent, - UrlUploadComponent, + PlaylistInfoComponent, RecentPlaylistsComponent, + UrlUploadComponent, ], }) export class HomeModule {} diff --git a/src/app/home/recent-playlists/playlist-info/playlist-info.component.html b/src/app/home/recent-playlists/playlist-info/playlist-info.component.html new file mode 100644 index 000000000..3a107f081 --- /dev/null +++ b/src/app/home/recent-playlists/playlist-info/playlist-info.component.html @@ -0,0 +1,24 @@ +

Playlist details

+ + + Title + + + + Added from the URL + + + + Import date + + + + Number of channels + + + + + + diff --git a/src/app/home/recent-playlists/playlist-info/playlist-info.component.scss b/src/app/home/recent-playlists/playlist-info/playlist-info.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/home/recent-playlists/playlist-info/playlist-info.component.spec.ts b/src/app/home/recent-playlists/playlist-info/playlist-info.component.spec.ts new file mode 100644 index 000000000..ae15af033 --- /dev/null +++ b/src/app/home/recent-playlists/playlist-info/playlist-info.component.spec.ts @@ -0,0 +1,34 @@ +import { MockModule } from 'ng-mocks'; +import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { PlaylistInfoComponent } from './playlist-info.component'; + +describe('PlaylistInfoComponent', () => { + let component: PlaylistInfoComponent; + let fixture: ComponentFixture; + + beforeEach( + waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [ + MockModule(MatDialogModule), + MockModule(MatFormFieldModule), + ], + declarations: [PlaylistInfoComponent], + providers: [{ provide: MAT_DIALOG_DATA, useValue: {} }], + }).compileComponents(); + }) + ); + + beforeEach(() => { + fixture = TestBed.createComponent(PlaylistInfoComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/home/recent-playlists/playlist-info/playlist-info.component.ts b/src/app/home/recent-playlists/playlist-info/playlist-info.component.ts new file mode 100644 index 000000000..42ec4f23d --- /dev/null +++ b/src/app/home/recent-playlists/playlist-info/playlist-info.component.ts @@ -0,0 +1,21 @@ +import { Component, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { Playlist } from '../../playlist.interface'; + +@Component({ + selector: 'app-playlist-info', + templateUrl: './playlist-info.component.html', + styleUrls: ['./playlist-info.component.scss'], +}) +export class PlaylistInfoComponent { + /** Playlist object */ + playlist: Playlist; + + /** + * Creates an instance of the component and injects the selected playlist from the parent component + * @param data playlist object to show + */ + constructor(@Inject(MAT_DIALOG_DATA) playlist: Playlist) { + this.playlist = playlist; + } +} diff --git a/src/app/home/recent-playlists/recent-playlists.component.html b/src/app/home/recent-playlists/recent-playlists.component.html index 2ee49c7bd..3eb339706 100644 --- a/src/app/home/recent-playlists/recent-playlists.component.html +++ b/src/app/home/recent-playlists/recent-playlists.component.html @@ -30,6 +30,14 @@ | Added: {{ item.importDate | date }} +