frontend: implement utility functions for formatting duration and file size
This commit is contained in:
parent
8ac5e2d46f
commit
72d5d78126
@ -25,6 +25,7 @@ import { MatTableModule } from '@angular/material/table';
|
|||||||
import { MatToolbarModule } from '@angular/material/toolbar';
|
import { MatToolbarModule } from '@angular/material/toolbar';
|
||||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
||||||
import { MeetRecordingInfo, MeetRecordingStatus } from '@lib/typings/ce';
|
import { MeetRecordingInfo, MeetRecordingStatus } from '@lib/typings/ce';
|
||||||
|
import { formatBytes, formatDurationToHMS } from '@lib/utils';
|
||||||
import { debounceTime, distinctUntilChanged } from 'rxjs';
|
import { debounceTime, distinctUntilChanged } from 'rxjs';
|
||||||
|
|
||||||
export interface RecordingTableAction {
|
export interface RecordingTableAction {
|
||||||
@ -365,29 +366,11 @@ export class RecordingListsComponent implements OnInit, OnChanges {
|
|||||||
return 'var(--ov-meet-text-secondary)';
|
return 'var(--ov-meet-text-secondary)';
|
||||||
}
|
}
|
||||||
|
|
||||||
formatFileSize(bytes: number | undefined): string {
|
formatDuration(duration?: number): string {
|
||||||
if (!bytes || bytes === 0) return '-';
|
return formatDurationToHMS(duration);
|
||||||
|
|
||||||
const k = 1024;
|
|
||||||
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
||||||
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
||||||
|
|
||||||
return `${(bytes / Math.pow(k, i)).toFixed(1)} ${sizes[i]}`;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
formatDuration(duration: number | undefined): string {
|
formatFileSize(bytes?: number): string {
|
||||||
if (!duration || duration === 0) return '-';
|
return formatBytes(bytes);
|
||||||
|
|
||||||
const hours = Math.floor(duration / 3600);
|
|
||||||
const minutes = Math.floor((duration % 3600) / 60);
|
|
||||||
const seconds = Math.floor(duration % 60);
|
|
||||||
|
|
||||||
if (hours > 0) {
|
|
||||||
return `${hours}h ${minutes}m ${seconds}s`;
|
|
||||||
} else if (minutes > 0) {
|
|
||||||
return `${minutes}m ${seconds}s`;
|
|
||||||
} else {
|
|
||||||
return `${seconds}s`;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,39 @@
|
|||||||
|
export const formatDurationToHMS = (durationSeconds?: number): string => {
|
||||||
|
if (!durationSeconds || durationSeconds === 0) return '-';
|
||||||
|
|
||||||
|
const hours = Math.floor(durationSeconds / 3600);
|
||||||
|
const minutes = Math.floor((durationSeconds % 3600) / 60);
|
||||||
|
const seconds = Math.floor(durationSeconds % 60);
|
||||||
|
|
||||||
|
if (hours > 0) {
|
||||||
|
return `${hours}h ${minutes}m ${seconds}s`;
|
||||||
|
} else if (minutes > 0) {
|
||||||
|
return `${minutes}m ${seconds}s`;
|
||||||
|
} else {
|
||||||
|
return `${seconds}s`;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const formatDurationToTime = (durationSeconds?: number): string => {
|
||||||
|
if (!durationSeconds || durationSeconds === 0) return '-';
|
||||||
|
|
||||||
|
const hours = Math.floor(durationSeconds / 3600);
|
||||||
|
const minutes = Math.floor((durationSeconds % 3600) / 60);
|
||||||
|
const seconds = Math.floor(durationSeconds % 60);
|
||||||
|
|
||||||
|
if (hours > 0) {
|
||||||
|
return `${hours}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
return `${minutes}:${seconds.toString().padStart(2, '0')}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const formatBytes = (bytes?: number): string => {
|
||||||
|
if (!bytes || bytes === 0) return '-';
|
||||||
|
|
||||||
|
const k = 1024;
|
||||||
|
const sizes = ['B', 'KB', 'MB', 'GB'];
|
||||||
|
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
||||||
|
|
||||||
|
return `${(bytes / Math.pow(k, i)).toFixed(1)} ${sizes[i]}`;
|
||||||
|
};
|
||||||
@ -1 +1,2 @@
|
|||||||
|
export * from './format.utils';
|
||||||
export * from './token.utils';
|
export * from './token.utils';
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user