From 72d5d78126a47a254ad7d9cde25af305cae275ab Mon Sep 17 00:00:00 2001 From: juancarmore Date: Wed, 6 Aug 2025 20:33:30 +0200 Subject: [PATCH] frontend: implement utility functions for formatting duration and file size --- .../recording-lists.component.ts | 27 +++---------- .../src/lib/utils/format.utils.ts | 39 +++++++++++++++++++ .../src/lib/utils/index.ts | 1 + 3 files changed, 45 insertions(+), 22 deletions(-) create mode 100644 frontend/projects/shared-meet-components/src/lib/utils/format.utils.ts diff --git a/frontend/projects/shared-meet-components/src/lib/components/recording-lists/recording-lists.component.ts b/frontend/projects/shared-meet-components/src/lib/components/recording-lists/recording-lists.component.ts index 4698754..6c94a65 100644 --- a/frontend/projects/shared-meet-components/src/lib/components/recording-lists/recording-lists.component.ts +++ b/frontend/projects/shared-meet-components/src/lib/components/recording-lists/recording-lists.component.ts @@ -25,6 +25,7 @@ import { MatTableModule } from '@angular/material/table'; import { MatToolbarModule } from '@angular/material/toolbar'; import { MatTooltipModule } from '@angular/material/tooltip'; import { MeetRecordingInfo, MeetRecordingStatus } from '@lib/typings/ce'; +import { formatBytes, formatDurationToHMS } from '@lib/utils'; import { debounceTime, distinctUntilChanged } from 'rxjs'; export interface RecordingTableAction { @@ -365,29 +366,11 @@ export class RecordingListsComponent implements OnInit, OnChanges { return 'var(--ov-meet-text-secondary)'; } - formatFileSize(bytes: number | undefined): 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]}`; + formatDuration(duration?: number): string { + return formatDurationToHMS(duration); } - formatDuration(duration: number | undefined): string { - if (!duration || duration === 0) return '-'; - - 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`; - } + formatFileSize(bytes?: number): string { + return formatBytes(bytes); } } diff --git a/frontend/projects/shared-meet-components/src/lib/utils/format.utils.ts b/frontend/projects/shared-meet-components/src/lib/utils/format.utils.ts new file mode 100644 index 0000000..6b2c5e0 --- /dev/null +++ b/frontend/projects/shared-meet-components/src/lib/utils/format.utils.ts @@ -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]}`; +}; diff --git a/frontend/projects/shared-meet-components/src/lib/utils/index.ts b/frontend/projects/shared-meet-components/src/lib/utils/index.ts index 54d9c05..e71e1cb 100644 --- a/frontend/projects/shared-meet-components/src/lib/utils/index.ts +++ b/frontend/projects/shared-meet-components/src/lib/utils/index.ts @@ -1 +1,2 @@ +export * from './format.utils'; export * from './token.utils';