Fixing bug where if copy duration went over 24h it would reset to 00:00:00 (#23290)

* Fixing bug where if copy duration went over 24h it would reset to 00:00:00
This commit is contained in:
Austin Bryan
2023-06-06 12:21:24 -07:00
committed by GitHub
parent 85dcec51ac
commit 9328c4ee9e
2 changed files with 29 additions and 4 deletions

View File

@@ -101,7 +101,7 @@ const _dateFormatter = new Intl.DateTimeFormat(
second: '2-digit' second: '2-digit'
}); });
const _numberFormatter = new Intl.NumberFormat( const _numberFormatterOneMinIntegers = new Intl.NumberFormat(
undefined, { undefined, {
style: 'decimal', style: 'decimal',
useGrouping: true, useGrouping: true,
@@ -110,6 +110,31 @@ const _numberFormatter = new Intl.NumberFormat(
maximumFractionDigits: 0, 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 { export function formatDateTimeString(dateTime: string): string {
return dateTime return dateTime
? _dateFormatter.format(new Date(dateTime)) ? _dateFormatter.format(new Date(dateTime))
@@ -129,7 +154,7 @@ export function formatTime(miliseconds: number): string {
export function formatNumber(value: number): string { export function formatNumber(value: number): string {
return value >= 0 return value >= 0
? _numberFormatter.format(value) ? _numberFormatterOneMinIntegers.format(value)
: ''; : '';
} }

View File

@@ -8,7 +8,7 @@ import * as vscode from 'vscode';
import * as loc from '../constants/strings'; import * as loc from '../constants/strings';
import { getMigrationStatusImage, getPipelineStatusImage } from '../api/utils'; import { getMigrationStatusImage, getPipelineStatusImage } from '../api/utils';
import { logError, TelemetryViews } from '../telemetry'; 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 { CopyProgressDetail, getResourceName } from '../api/azure';
import { InfoFieldSchema, MigrationDetailsTabBase, MigrationTargetTypeName } from './migrationDetailsTabBase'; import { InfoFieldSchema, MigrationDetailsTabBase, MigrationTargetTypeName } from './migrationDetailsTabBase';
import { IconPathHelper } from '../constants/iconPathHelper'; import { IconPathHelper } from '../constants/iconPathHelper';
@@ -355,7 +355,7 @@ export class MigrationDetailsTableTab extends MigrationDetailsTabBase<MigrationD
formatNumber(d.rowsRead), formatNumber(d.rowsRead),
formatNumber(d.rowsCopied), formatNumber(d.rowsCopied),
formatSizeKb(d.copyThroughput), formatSizeKb(d.copyThroughput),
formatTime((d.copyDuration ?? 0) * 1000), formatSecondsIntoReadableTime((d.copyDuration ?? 0)),
loc.ParallelCopyType[d.parallelCopyType] ?? d.parallelCopyType, loc.ParallelCopyType[d.parallelCopyType] ?? d.parallelCopyType,
d.usedParallelCopies, d.usedParallelCopies,
formatDateTimeString(d.copyStart), formatDateTimeString(d.copyStart),