mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
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:
@@ -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)
|
||||||
: '';
|
: '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
Reference in New Issue
Block a user