mirror of
https://github.com/Tzahi12345/YoutubeDL-Material.git
synced 2026-03-07 20:10:03 +03:00
thumbnails now lazy load. when it is loading, a content loading gradient is shown in front of it
made file cards look better on mobile devices
This commit is contained in:
@@ -26,7 +26,9 @@
|
|||||||
"@angular/router": "^8.2.11",
|
"@angular/router": "^8.2.11",
|
||||||
"core-js": "^2.4.1",
|
"core-js": "^2.4.1",
|
||||||
"file-saver": "^2.0.2",
|
"file-saver": "^2.0.2",
|
||||||
|
"ng-lazyload-image": "^7.0.1",
|
||||||
"ng4-configure": "^0.1.7",
|
"ng4-configure": "^0.1.7",
|
||||||
|
"ngx-content-loading": "^0.1.3",
|
||||||
"rxjs": "^6.5.3",
|
"rxjs": "^6.5.3",
|
||||||
"rxjs-compat": "^6.0.0-rc.0",
|
"rxjs-compat": "^6.0.0-rc.0",
|
||||||
"tslib": "^1.10.0",
|
"tslib": "^1.10.0",
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ import {VgControlsModule} from 'videogular2/compiled/controls';
|
|||||||
import {VgOverlayPlayModule} from 'videogular2/compiled/overlay-play';
|
import {VgOverlayPlayModule} from 'videogular2/compiled/overlay-play';
|
||||||
import {VgBufferingModule} from 'videogular2/compiled/buffering';
|
import {VgBufferingModule} from 'videogular2/compiled/buffering';
|
||||||
import { InputDialogComponent } from './input-dialog/input-dialog.component';
|
import { InputDialogComponent } from './input-dialog/input-dialog.component';
|
||||||
|
import { LazyLoadImageModule } from 'ng-lazyload-image';
|
||||||
|
import { NgxContentLoadingModule } from 'ngx-content-loading';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
@@ -62,8 +64,10 @@ import { InputDialogComponent } from './input-dialog/input-dialog.component';
|
|||||||
VgControlsModule,
|
VgControlsModule,
|
||||||
VgOverlayPlayModule,
|
VgOverlayPlayModule,
|
||||||
VgBufferingModule,
|
VgBufferingModule,
|
||||||
|
LazyLoadImageModule,
|
||||||
|
NgxContentLoadingModule,
|
||||||
RouterModule,
|
RouterModule,
|
||||||
AppRoutingModule
|
AppRoutingModule,
|
||||||
],
|
],
|
||||||
entryComponents: [
|
entryComponents: [
|
||||||
InputDialogComponent
|
InputDialogComponent
|
||||||
|
|||||||
@@ -30,4 +30,30 @@
|
|||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-div {
|
||||||
|
max-height: 80px;
|
||||||
|
padding: 0px;
|
||||||
|
margin: 0px 0px 0px -5px;
|
||||||
|
width: calc(100% + 5px + 5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.max-two-lines {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -moz-box;
|
||||||
|
max-height: 2.4em;
|
||||||
|
line-height: 1.2em;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
-webkit-line-clamp: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 576px){
|
||||||
|
|
||||||
|
.example-card {
|
||||||
|
width: 125px !important;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,12 +3,19 @@
|
|||||||
<div style="padding:5px">
|
<div style="padding:5px">
|
||||||
<b><a href="javascript:void(0)" (click)="!isPlaylist ? mainComponent.goToFile(name, isAudio) : mainComponent.goToPlaylist(name, type)">{{title}}</a></b>
|
<b><a href="javascript:void(0)" (click)="!isPlaylist ? mainComponent.goToFile(name, isAudio) : mainComponent.goToPlaylist(name, type)">{{title}}</a></b>
|
||||||
<br/>
|
<br/>
|
||||||
ID: {{name}}
|
<span class="max-two-lines">ID: {{name}}</span>
|
||||||
<div *ngIf="isPlaylist">Count: {{count}}</div>
|
<div *ngIf="isPlaylist">Count: {{count}}</div>
|
||||||
|
<div class="img-div">
|
||||||
|
<img class="image" [lazyLoad]="thumbnailURL" (onLoad)="imageLoaded($event)" alt="Thumbnail">
|
||||||
|
<span *ngIf="!image_loaded">
|
||||||
|
<ngx-content-loading [width]="500" [height]="360">
|
||||||
|
<svg:g ngx-rect width="500" height="360" y="0" x="0" rx="4" ry="4"></svg:g>
|
||||||
|
</ngx-content-loading>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="centered example-full-width-height"><img class="image" src="{{thumbnailURL}}" alt="Thumbnail"></div>
|
|
||||||
|
|
||||||
</mat-card>
|
</mat-card>
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ export class FileCardComponent implements OnInit {
|
|||||||
@Input() isPlaylist = false;
|
@Input() isPlaylist = false;
|
||||||
@Input() count = null;
|
@Input() count = null;
|
||||||
type;
|
type;
|
||||||
|
image_loaded = false;
|
||||||
|
|
||||||
constructor(private postsService: PostsService, public snackBar: MatSnackBar, public mainComponent: MainComponent) { }
|
constructor(private postsService: PostsService, public snackBar: MatSnackBar, public mainComponent: MainComponent) { }
|
||||||
|
|
||||||
@@ -43,6 +44,10 @@ export class FileCardComponent implements OnInit {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
imageLoaded(loaded) {
|
||||||
|
this.image_loaded = true;
|
||||||
|
}
|
||||||
|
|
||||||
public openSnackBar(message: string, action: string) {
|
public openSnackBar(message: string, action: string) {
|
||||||
this.snackBar.open(message, action, {
|
this.snackBar.open(message, action, {
|
||||||
duration: 2000,
|
duration: 2000,
|
||||||
|
|||||||
Reference in New Issue
Block a user