From bcd72d21c7236f502a434c0b93ac0275d096363b Mon Sep 17 00:00:00 2001 From: Anthony Dresser Date: Tue, 13 Mar 2018 13:55:08 -0700 Subject: [PATCH] Tasks schema registration (#900) * inital task update * fix schema update problems * remove dead code --- .../dashboardWidgetContainer.contribution.ts | 2 +- .../widgets/tasks/tasksWidget.contribution.ts | 38 +++++++++++-------- .../common/dashboardContainerRegistry.ts | 4 +- .../dashboard/common/widgetRegistry.ts | 2 +- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/src/sql/parts/dashboard/containers/dashboardWidgetContainer.contribution.ts b/src/sql/parts/dashboard/containers/dashboardWidgetContainer.contribution.ts index fec6943df3..eae28c778d 100644 --- a/src/sql/parts/dashboard/containers/dashboardWidgetContainer.contribution.ts +++ b/src/sql/parts/dashboard/containers/dashboardWidgetContainer.contribution.ts @@ -12,7 +12,7 @@ import { WidgetConfig } from 'sql/parts/dashboard/common/dashboardWidget'; export const WIDGETS_CONTAINER = 'widgets-container'; -let widgetsSchema: IJSONSchema = { +const widgetsSchema: IJSONSchema = { type: 'array', description: nls.localize('dashboard.container.widgets', "The list of widgets that will be displayed in this tab."), items: generateDashboardWidgetSchema(undefined, true) diff --git a/src/sql/parts/dashboard/widgets/tasks/tasksWidget.contribution.ts b/src/sql/parts/dashboard/widgets/tasks/tasksWidget.contribution.ts index 0a04d09c1a..dadcd76065 100644 --- a/src/sql/parts/dashboard/widgets/tasks/tasksWidget.contribution.ts +++ b/src/sql/parts/dashboard/widgets/tasks/tasksWidget.contribution.ts @@ -2,30 +2,36 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { IJSONSchema } from 'vs/base/common/jsonSchema'; import { registerDashboardWidget } from 'sql/platform/dashboard/common/widgetRegistry'; import { TaskRegistry } from 'sql/platform/tasks/common/tasks'; +import { IJSONSchema } from 'vs/base/common/jsonSchema'; + +const singleTaskSchema: IJSONSchema = { + type: 'string', + enum: TaskRegistry.getTasks() +}; + const tasksSchema: IJSONSchema = { type: 'array', items: { - anyOf: [{ - type: 'string', - enum: TaskRegistry.getTasks() - }, - { - type: 'object', - properties: { - name: { - type: 'string', - enum: TaskRegistry.getTasks() - }, - when: { - type: 'string' + anyOf: [ + singleTaskSchema, + { + type: 'object', + properties: { + name: singleTaskSchema, + when: { + type: 'string' + } } } - }] + ] } }; -registerDashboardWidget('tasks-widget', '', tasksSchema); \ No newline at end of file +TaskRegistry.onTaskRegistered(e => { + singleTaskSchema.enum.push(e); +}); + +registerDashboardWidget('tasks-widget', '', tasksSchema); diff --git a/src/sql/platform/dashboard/common/dashboardContainerRegistry.ts b/src/sql/platform/dashboard/common/dashboardContainerRegistry.ts index fefd03bb9d..313635a53e 100644 --- a/src/sql/platform/dashboard/common/dashboardContainerRegistry.ts +++ b/src/sql/platform/dashboard/common/dashboardContainerRegistry.ts @@ -51,7 +51,7 @@ class DashboardContainerRegistry implements IDashboardContainerRegistry { } public get containerTypeSchemaProperties(): IJSONSchemaMap { - return deepClone(this._dashboardContainerTypeSchemaProperties); + return this._dashboardContainerTypeSchemaProperties; } /** @@ -64,7 +64,7 @@ class DashboardContainerRegistry implements IDashboardContainerRegistry { } public get navSectionContainerTypeSchemaProperties(): IJSONSchemaMap { - return deepClone(this._dashboardNavSectionContainerTypeSchemaProperties); + return this._dashboardNavSectionContainerTypeSchemaProperties; } } diff --git a/src/sql/platform/dashboard/common/widgetRegistry.ts b/src/sql/platform/dashboard/common/widgetRegistry.ts index b7cd615c59..a6bcf63aa7 100644 --- a/src/sql/platform/dashboard/common/widgetRegistry.ts +++ b/src/sql/platform/dashboard/common/widgetRegistry.ts @@ -78,7 +78,7 @@ class DashboardWidgetRegistry implements IDashboardWidgetRegistry { * @param val cal for default * @param context either 'database' or 'server' for what page to register for; if not specified, will register for both */ - registerNonCustomDashboardWidget(id: string, description: string, val: IInsightsConfig, context?: 'database' | 'server'): WidgetIdentifier { + public registerNonCustomDashboardWidget(id: string, description: string, val: IInsightsConfig, context?: 'database' | 'server'): WidgetIdentifier { if (context === undefined || context === 'database') { this._dashboardWidgetSchema.properties[id] = { type: 'null', default: null }; }