Dev/brih/feature/switch ads to portal context (#18963)

* Add CodeQL Analysis workflow (#10195)

* Add CodeQL Analysis workflow

* Fix path

* dashboard refactor

* update version, readme, minor ui changes

* fix merge issue

* Revert "Add CodeQL Analysis workflow (#10195)"

This reverts commit fe98d586cd75be4758ac544649bb4983accf4acd.

* fix context switching issue

* fix resource id parsing error and mi api version

* mv refresh btn, rm autorefresh, align cards

* remove missed autorefresh code

* improve error handling and messages

* fix typos

* remove duplicate/unnecessary  _populate* calls

* change clear configuration button text

* remove confusing watermark text

* add stale account handling

Co-authored-by: Justin Hutchings <jhutchings1@users.noreply.github.com>
This commit is contained in:
brian-harris
2022-04-12 16:26:40 -07:00
committed by GitHub
parent d98a421035
commit 3a0ac7279a
30 changed files with 2163 additions and 1701 deletions

View File

@@ -7,8 +7,9 @@ import { window, CategoryValue, DropDownComponent, IconPath } from 'azdata';
import { IconPathHelper } from '../constants/iconPathHelper';
import { DAYS, HRS, MINUTE, SEC } from '../constants/strings';
import { AdsMigrationStatus } from '../dialog/migrationStatus/migrationStatusDialogModel';
import { MigrationStatus, MigrationContext, ProvisioningState } from '../models/migrationLocalStorage';
import { MigrationStatus, ProvisioningState } from '../models/migrationLocalStorage';
import * as crypto from 'crypto';
import { DatabaseMigration } from './azure';
export function deepClone<T>(obj: T): T {
if (!obj || typeof obj !== 'object') {
@@ -89,40 +90,34 @@ export function convertTimeDifferenceToDuration(startTime: Date, endTime: Date):
}
}
export function filterMigrations(databaseMigrations: MigrationContext[], statusFilter: string, databaseNameFilter?: string): MigrationContext[] {
let filteredMigration: MigrationContext[] = [];
export function filterMigrations(databaseMigrations: DatabaseMigration[], statusFilter: string, databaseNameFilter?: string): DatabaseMigration[] {
let filteredMigration: DatabaseMigration[] = [];
if (statusFilter === AdsMigrationStatus.ALL) {
filteredMigration = databaseMigrations;
} else if (statusFilter === AdsMigrationStatus.ONGOING) {
filteredMigration = databaseMigrations.filter((value) => {
const status = value.migrationContext.properties?.migrationStatus;
const provisioning = value.migrationContext.properties?.provisioningState;
return status === MigrationStatus.InProgress
|| status === MigrationStatus.Creating
|| provisioning === MigrationStatus.Creating;
});
filteredMigration = databaseMigrations.filter(
value => {
const status = value.properties?.migrationStatus;
return status === MigrationStatus.InProgress
|| status === MigrationStatus.Creating
|| value.properties?.provisioningState === MigrationStatus.Creating;
});
} else if (statusFilter === AdsMigrationStatus.SUCCEEDED) {
filteredMigration = databaseMigrations.filter((value) => {
const status = value.migrationContext.properties?.migrationStatus;
return status === MigrationStatus.Succeeded;
});
filteredMigration = databaseMigrations.filter(
value => value.properties?.migrationStatus === MigrationStatus.Succeeded);
} else if (statusFilter === AdsMigrationStatus.FAILED) {
filteredMigration = databaseMigrations.filter((value) => {
const status = value.migrationContext.properties?.migrationStatus;
const provisioning = value.migrationContext.properties?.provisioningState;
return status === MigrationStatus.Failed
|| provisioning === ProvisioningState.Failed;
});
filteredMigration = databaseMigrations.filter(
value =>
value.properties?.migrationStatus === MigrationStatus.Failed ||
value.properties?.provisioningState === ProvisioningState.Failed);
} else if (statusFilter === AdsMigrationStatus.COMPLETING) {
filteredMigration = databaseMigrations.filter((value) => {
const status = value.migrationContext.properties?.migrationStatus;
return status === MigrationStatus.Completing;
});
filteredMigration = databaseMigrations.filter(
value => value.properties?.migrationStatus === MigrationStatus.Completing);
}
if (databaseNameFilter) {
filteredMigration = filteredMigration.filter((value) => {
return value.migrationContext.name.toLowerCase().includes(databaseNameFilter.toLowerCase());
});
const filter = databaseNameFilter.toLowerCase();
filteredMigration = filteredMigration.filter(
migration => migration.name?.toLowerCase().includes(filter));
}
return filteredMigration;
}
@@ -144,35 +139,36 @@ export function convertIsoTimeToLocalTime(isoTime: string): Date {
return new Date(isoDate.getTime() + (isoDate.getTimezoneOffset() * 60000));
}
export type SupportedAutoRefreshIntervals = -1 | 15000 | 30000 | 60000 | 180000 | 300000;
export function selectDefaultDropdownValue(dropDown: DropDownComponent, value?: string, useDisplayName: boolean = true): void {
const selectedIndex = value ? findDropDownItemIndex(dropDown, value, useDisplayName) : -1;
if (selectedIndex > -1) {
selectDropDownIndex(dropDown, selectedIndex);
} else {
selectDropDownIndex(dropDown, 0);
if (dropDown.values && dropDown.values.length > 0) {
const selectedIndex = value ? findDropDownItemIndex(dropDown, value, useDisplayName) : -1;
if (selectedIndex > -1) {
selectDropDownIndex(dropDown, selectedIndex);
} else {
selectDropDownIndex(dropDown, 0);
}
}
}
export function selectDropDownIndex(dropDown: DropDownComponent, index: number): void {
if (index >= 0 && dropDown.values && index <= dropDown.values.length - 1) {
const value = dropDown.values[index];
dropDown.value = value as CategoryValue;
if (dropDown.values && dropDown.values.length > 0) {
if (index >= 0 && index <= dropDown.values.length - 1) {
dropDown.value = dropDown.values[index] as CategoryValue;
return;
}
}
dropDown.value = undefined;
}
export function findDropDownItemIndex(dropDown: DropDownComponent, value: string, useDisplayName: boolean = true): number {
if (dropDown.values) {
if (useDisplayName) {
return dropDown.values.findIndex((v: any) =>
(v as CategoryValue)?.displayName?.toLowerCase() === value?.toLowerCase());
} else {
return dropDown.values.findIndex((v: any) =>
(v as CategoryValue)?.name?.toLowerCase() === value?.toLowerCase());
}
if (value && dropDown.values && dropDown.values.length > 0) {
const searachValue = value?.toLowerCase();
return useDisplayName
? dropDown.values.findIndex((v: any) =>
(v as CategoryValue)?.displayName?.toLowerCase() === searachValue)
: dropDown.values.findIndex((v: any) =>
(v as CategoryValue)?.name?.toLowerCase() === searachValue);
}
return -1;
}