diff --git a/extensions/sql-migration/src/constants/helper.ts b/extensions/sql-migration/src/constants/helper.ts index 9ad7ea7fa8..0036e7e9b7 100644 --- a/extensions/sql-migration/src/constants/helper.ts +++ b/extensions/sql-migration/src/constants/helper.ts @@ -101,7 +101,7 @@ const _dateFormatter = new Intl.DateTimeFormat( second: '2-digit' }); -const _numberFormatter = new Intl.NumberFormat( +const _numberFormatterOneMinIntegers = new Intl.NumberFormat( undefined, { style: 'decimal', useGrouping: true, @@ -110,6 +110,31 @@ const _numberFormatter = new Intl.NumberFormat( maximumFractionDigits: 0, }); +const _numberFormatterTwoMinIntegers = new Intl.NumberFormat( + undefined, { + style: 'decimal', + useGrouping: true, + minimumIntegerDigits: 2, + minimumFractionDigits: 0, + maximumFractionDigits: 0, +}); + +export function formatSecondsIntoReadableTime(seconds: number) { + const hours = seconds / (60 * 60); + const absoluteHours = Math.floor(hours); + const h = _numberFormatterTwoMinIntegers.format(absoluteHours); + + const minutesRemaining = (hours - absoluteHours) * 60; + const absoluteMinutes = Math.floor(minutesRemaining); + const m = _numberFormatterTwoMinIntegers.format(absoluteMinutes); + + const secondsRemaining = (minutesRemaining - absoluteMinutes) * 60; + const absoluteSeconds = Math.floor(secondsRemaining); + const s = _numberFormatterTwoMinIntegers.format(absoluteSeconds); + + return h + ':' + m + ':' + s; +} + export function formatDateTimeString(dateTime: string): string { return dateTime ? _dateFormatter.format(new Date(dateTime)) @@ -129,7 +154,7 @@ export function formatTime(miliseconds: number): string { export function formatNumber(value: number): string { return value >= 0 - ? _numberFormatter.format(value) + ? _numberFormatterOneMinIntegers.format(value) : ''; } diff --git a/extensions/sql-migration/src/dashboard/migrationDetailsTableTab.ts b/extensions/sql-migration/src/dashboard/migrationDetailsTableTab.ts index ece8f1e79d..53332f7e3d 100644 --- a/extensions/sql-migration/src/dashboard/migrationDetailsTableTab.ts +++ b/extensions/sql-migration/src/dashboard/migrationDetailsTableTab.ts @@ -8,7 +8,7 @@ import * as vscode from 'vscode'; import * as loc from '../constants/strings'; import { getMigrationStatusImage, getPipelineStatusImage } from '../api/utils'; import { logError, TelemetryViews } from '../telemetry'; -import { canCancelMigration, canCutoverMigration, canDeleteMigration, canRestartMigrationWizard, canRetryMigration, formatDateTimeString, formatNumber, formatSizeBytes, formatSizeKb, formatTime, getMigrationStatusString, getMigrationTargetTypeEnum, isOfflineMigation, PipelineStatusCodes } from '../constants/helper'; +import { canCancelMigration, canCutoverMigration, canDeleteMigration, canRestartMigrationWizard, canRetryMigration, formatDateTimeString, formatNumber, formatSecondsIntoReadableTime, formatSizeBytes, formatSizeKb, getMigrationStatusString, getMigrationTargetTypeEnum, isOfflineMigation, PipelineStatusCodes } from '../constants/helper'; import { CopyProgressDetail, getResourceName } from '../api/azure'; import { InfoFieldSchema, MigrationDetailsTabBase, MigrationTargetTypeName } from './migrationDetailsTabBase'; import { IconPathHelper } from '../constants/iconPathHelper'; @@ -355,7 +355,7 @@ export class MigrationDetailsTableTab extends MigrationDetailsTabBase