openvidu-components: Refactored recordings pipes

pull/803/head
Carlos Santos 2023-04-24 17:41:29 +02:00
parent 5f8fa08fe0
commit fffbdd3cd5
1 changed files with 31 additions and 30 deletions

View File

@ -9,13 +9,15 @@ import { Pipe, PipeTransform } from '@angular/core';
export class DurationFromSecondsPipe implements PipeTransform {
transform(durationInSeconds: number): string {
if (durationInSeconds < 60) {
return Math.floor(durationInSeconds) + 's';
return `${Math.floor(durationInSeconds)}s`;
} else if (durationInSeconds < 3600) {
return Math.floor(durationInSeconds / 60) + 'm ' + Math.floor(durationInSeconds % 60) + 's';
const minutes = Math.floor(durationInSeconds / 60);
const seconds = Math.floor(durationInSeconds % 60);
return `${minutes}m ${seconds}s`;
} else {
const hours = Math.floor(durationInSeconds / 3600);
const minutes = Math.floor((durationInSeconds - hours * 3600) / 60);
return hours + 'h ' + minutes + 'm';
return `${hours}h ${minutes}m`;
}
}
}
@ -23,48 +25,47 @@ export class DurationFromSecondsPipe implements PipeTransform {
/**
* @internal
*/
@Pipe({
@Pipe({
name: 'searchByStringProperty'
})
export class SearchByStringPropertyPipe implements PipeTransform {
transform(items: any[], props: { properties: string[], filter: string }): any {
transform(items: any[], props: { properties: string[]; filter: string }): any {
if (!items || !props || props.properties.length === 0 || !props.filter) {
return items;
return items;
}
return items.filter(item => {
return props.properties.some(prop => {
const multipleProps = prop.split('.');
let recursiveProp = item;
try {
multipleProps.forEach(p => {
recursiveProp = recursiveProp[p];
if (recursiveProp === null || recursiveProp === undefined) {
throw new Error('Property not found');
return items.filter((item) => {
return props.properties.some((prop) => {
const multipleProps = prop.split('.');
let recursiveProp = item;
try {
multipleProps.forEach((p) => {
recursiveProp = recursiveProp[p];
if (recursiveProp === null || recursiveProp === undefined) {
throw new Error('Property not found');
}
});
} catch (error) {
return false;
}
});
} catch (error) {
return false;
}
return recursiveProp.indexOf(props.filter) !== -1;
})
return recursiveProp.indexOf(props.filter) !== -1;
});
});
}
}
}
/**
* @internal
*/
@Pipe({
@Pipe({
name: 'thumbnailUrl'
})
export class ThumbnailFromUrlPipe implements PipeTransform {
transform(url: string): string {
if(url.includes('.mp4')){
const lastPart = url.split('/').pop();
let thumbnailUrl = lastPart?.replace('mp4', 'jpg');
thumbnailUrl = `recordings/${thumbnailUrl?.split('.')[0]}/${thumbnailUrl}`;
return thumbnailUrl;
}
return url;
const lastPart = url.split('/').pop();
const isMp4 = url.includes('.mp4');
if (!lastPart || !isMp4) return url;
return `recordings/${lastPart.split('.')[0]}/${lastPart.replace('mp4', 'jpg')}`;
}
}