mirror of
https://github.com/Tzahi12345/YoutubeDL-Material.git
synced 2026-04-23 02:33:19 +03:00
added search functionality
made subscription file cards more responsive on mobile layouts removed unused shell code
This commit is contained in:
@@ -1,39 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
cd backend
|
|
||||||
|
|
||||||
# Start the first process
|
|
||||||
node app.js &
|
|
||||||
status=$?
|
|
||||||
if [ $status -ne 0 ]; then
|
|
||||||
echo "Failed to start my_first_process: $status"
|
|
||||||
exit $status
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Start the second process
|
|
||||||
apachectl -DFOREGROUND
|
|
||||||
status=$?
|
|
||||||
if [ $status -ne 0 ]; then
|
|
||||||
echo "Failed to start my_second_process: $status"
|
|
||||||
exit $status
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Naive check runs checks once a minute to see if either of the processes exited.
|
|
||||||
# This illustrates part of the heavy lifting you need to do if you want to run
|
|
||||||
# more than one service in a container. The container will exit with an error
|
|
||||||
# if it detects that either of the processes has exited.
|
|
||||||
# Otherwise it will loop forever, waking up every 60 seconds
|
|
||||||
|
|
||||||
while /bin/true; do
|
|
||||||
ps aux |grep node\ app.js # |grep -q -v grep
|
|
||||||
PROCESS_1_STATUS=$?
|
|
||||||
ps aux |grep apache2 # |grep -q -v grep
|
|
||||||
PROCESS_2_STATUS=$?
|
|
||||||
# If the greps above find anything, they will exit with 0 status
|
|
||||||
# If they are not both 0, then something is wrong
|
|
||||||
if [ $PROCESS_1_STATUS -ne 0 -o $PROCESS_2_STATUS -ne 0 ]; then
|
|
||||||
echo "One of the processes has already exited."
|
|
||||||
exit -1
|
|
||||||
fi
|
|
||||||
sleep 60
|
|
||||||
done
|
|
||||||
@@ -9,10 +9,21 @@
|
|||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
<div *ngIf="subscription">
|
<div *ngIf="subscription">
|
||||||
|
<div class="flex-grid">
|
||||||
|
<div class="col"></div>
|
||||||
|
<div class="col">
|
||||||
<h4 style="text-align: center; margin-bottom: 20px;">Videos</h4>
|
<h4 style="text-align: center; margin-bottom: 20px;">Videos</h4>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<mat-form-field [ngClass]="searchIsFocused ? 'search-bar-focused' : 'search-bar-unfocused'" class="search-bar" color="accent">
|
||||||
|
<input (focus)="searchIsFocused = true" (blur)="searchIsFocused = false" class="search-input" type="text" placeholder="Search" [(ngModel)]="search_text" (ngModelChange)="onSearchInputChanged($event)" matInput>
|
||||||
|
<mat-icon matSuffix>search</mat-icon>
|
||||||
|
</mat-form-field>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div *ngFor="let file of files" class="col mb-4 sub-file-col">
|
<div *ngFor="let file of filtered_files" class="col-6 col-lg-4 mb-4 sub-file-col">
|
||||||
<app-subscription-file-card (reloadSubscription)="getSubscription()" (goToFileEmit)="goToFile($event)" [file]="file" [sub]="subscription" [use_youtubedl_archive]="use_youtubedl_archive"></app-subscription-file-card>
|
<app-subscription-file-card (reloadSubscription)="getSubscription()" (goToFileEmit)="goToFile($event)" [file]="file" [sub]="subscription" [use_youtubedl_archive]="use_youtubedl_archive"></app-subscription-file-card>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -7,3 +7,30 @@
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
left: 15px;
|
left: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.search-bar {
|
||||||
|
transition: all .5s ease;
|
||||||
|
position: relative;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-bar-unfocused {
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-input {
|
||||||
|
transition: all .5s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-bar-focused {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-grid {
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.col {
|
||||||
|
width: 33%;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
@@ -12,7 +12,11 @@ export class SubscriptionComponent implements OnInit {
|
|||||||
id = null;
|
id = null;
|
||||||
subscription = null;
|
subscription = null;
|
||||||
files: any[] = null;
|
files: any[] = null;
|
||||||
|
filtered_files: any[] = null;
|
||||||
use_youtubedl_archive = false;
|
use_youtubedl_archive = false;
|
||||||
|
search_mode = false;
|
||||||
|
search_text = '';
|
||||||
|
searchIsFocused = false;
|
||||||
|
|
||||||
constructor(private postsService: PostsService, private route: ActivatedRoute, private router: Router) { }
|
constructor(private postsService: PostsService, private route: ActivatedRoute, private router: Router) { }
|
||||||
|
|
||||||
@@ -33,6 +37,11 @@ export class SubscriptionComponent implements OnInit {
|
|||||||
this.postsService.getSubscription(this.id).subscribe(res => {
|
this.postsService.getSubscription(this.id).subscribe(res => {
|
||||||
this.subscription = res['subscription'];
|
this.subscription = res['subscription'];
|
||||||
this.files = res['files'];
|
this.files = res['files'];
|
||||||
|
if (this.search_mode) {
|
||||||
|
this.filterFiles(this.search_text);
|
||||||
|
} else {
|
||||||
|
this.filtered_files = this.files;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,4 +58,18 @@ export class SubscriptionComponent implements OnInit {
|
|||||||
subPlaylist: this.subscription.isPlaylist}]);
|
subPlaylist: this.subscription.isPlaylist}]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onSearchInputChanged(newvalue) {
|
||||||
|
if (newvalue.length > 0) {
|
||||||
|
this.search_mode = true;
|
||||||
|
this.filterFiles(newvalue);
|
||||||
|
} else {
|
||||||
|
this.search_mode = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private filterFiles(value: string) {
|
||||||
|
const filterValue = value.toLowerCase();
|
||||||
|
this.filtered_files = this.files.filter(option => option.id.toLowerCase().includes(filterValue));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user