mirror of https://github.com/OpenVidu/openvidu.git
openvidu-components: Refactored recordings pipes
parent
5f8fa08fe0
commit
fffbdd3cd5
|
@ -9,13 +9,15 @@ import { Pipe, PipeTransform } from '@angular/core';
|
||||||
export class DurationFromSecondsPipe implements PipeTransform {
|
export class DurationFromSecondsPipe implements PipeTransform {
|
||||||
transform(durationInSeconds: number): string {
|
transform(durationInSeconds: number): string {
|
||||||
if (durationInSeconds < 60) {
|
if (durationInSeconds < 60) {
|
||||||
return Math.floor(durationInSeconds) + 's';
|
return `${Math.floor(durationInSeconds)}s`;
|
||||||
} else if (durationInSeconds < 3600) {
|
} 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 {
|
} else {
|
||||||
const hours = Math.floor(durationInSeconds / 3600);
|
const hours = Math.floor(durationInSeconds / 3600);
|
||||||
const minutes = Math.floor((durationInSeconds - hours * 3600) / 60);
|
const minutes = Math.floor((durationInSeconds - hours * 3600) / 60);
|
||||||
return hours + 'h ' + minutes + 'm';
|
return `${hours}h ${minutes}m`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,20 +25,20 @@ export class DurationFromSecondsPipe implements PipeTransform {
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
@Pipe({
|
@Pipe({
|
||||||
name: 'searchByStringProperty'
|
name: 'searchByStringProperty'
|
||||||
})
|
})
|
||||||
export class SearchByStringPropertyPipe implements PipeTransform {
|
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) {
|
if (!items || !props || props.properties.length === 0 || !props.filter) {
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
return items.filter(item => {
|
return items.filter((item) => {
|
||||||
return props.properties.some(prop => {
|
return props.properties.some((prop) => {
|
||||||
const multipleProps = prop.split('.');
|
const multipleProps = prop.split('.');
|
||||||
let recursiveProp = item;
|
let recursiveProp = item;
|
||||||
try {
|
try {
|
||||||
multipleProps.forEach(p => {
|
multipleProps.forEach((p) => {
|
||||||
recursiveProp = recursiveProp[p];
|
recursiveProp = recursiveProp[p];
|
||||||
if (recursiveProp === null || recursiveProp === undefined) {
|
if (recursiveProp === null || recursiveProp === undefined) {
|
||||||
throw new Error('Property not found');
|
throw new Error('Property not found');
|
||||||
|
@ -46,7 +48,7 @@ export class SearchByStringPropertyPipe implements PipeTransform {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return recursiveProp.indexOf(props.filter) !== -1;
|
return recursiveProp.indexOf(props.filter) !== -1;
|
||||||
})
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,17 +56,16 @@ export class SearchByStringPropertyPipe implements PipeTransform {
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
@Pipe({
|
@Pipe({
|
||||||
name: 'thumbnailUrl'
|
name: 'thumbnailUrl'
|
||||||
})
|
})
|
||||||
export class ThumbnailFromUrlPipe implements PipeTransform {
|
export class ThumbnailFromUrlPipe implements PipeTransform {
|
||||||
transform(url: string): string {
|
transform(url: string): string {
|
||||||
if(url.includes('.mp4')){
|
|
||||||
const lastPart = url.split('/').pop();
|
const lastPart = url.split('/').pop();
|
||||||
let thumbnailUrl = lastPart?.replace('mp4', 'jpg');
|
const isMp4 = url.includes('.mp4');
|
||||||
thumbnailUrl = `recordings/${thumbnailUrl?.split('.')[0]}/${thumbnailUrl}`;
|
|
||||||
return thumbnailUrl;
|
if (!lastPart || !isMp4) return url;
|
||||||
}
|
|
||||||
return url;
|
return `recordings/${lastPart.split('.')[0]}/${lastPart.replace('mp4', 'jpg')}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue