Task context + schema (#849)

* commting .d.ts changes

* added serverinfo to .d.ts

* maybe its working?

* works

* updated contrib

* remove unnecessary code

* fix compile errors

* update task schema and add the ability to specifiy a when clause

* update defaults for tasks widget

* add when to restore and back up tasks to not show up for cloud servers

* formatting

* fixing engine

* add restore to server page
This commit is contained in:
Anthony Dresser
2018-03-12 11:41:49 -07:00
committed by GitHub
parent 66f39fd3eb
commit 5c0002404a
7 changed files with 55 additions and 21 deletions

View File

@@ -30,13 +30,17 @@ import { $, Builder } from 'vs/base/browser/builder';
import * as DOM from 'vs/base/browser/dom';
import { CommandsRegistry, ICommand } from 'vs/platform/commands/common/commands';
import { MenuRegistry, ICommandAction } from 'vs/platform/actions/common/actions';
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
interface IConfig {
tasks: Array<Object>;
interface ITask {
name: string;
when: string;
}
const selector = 'tasks-widget';
@Component({
selector: 'tasks-widget',
selector,
templateUrl: decodeURI(require.toUrl('sql/parts/dashboard/widgets/tasks/tasksWidget.component.html'))
})
export class TasksWidget extends DashboardWidget implements IDashboardWidget, OnInit {
@@ -58,11 +62,22 @@ export class TasksWidget extends DashboardWidget implements IDashboardWidget, On
) {
super();
this._profile = this._bootstrap.connectionManagementService.connectionInfo.connectionProfile;
let tasksConfig = <IConfig>Object.values(this._config.widget)[0];
let tasksConfig = this._config.widget[selector] as Array<string | ITask>;
let tasks = TaskRegistry.getTasks();
if (tasksConfig.tasks) {
tasks = Object.keys(tasksConfig.tasks).filter(i => tasks.includes(i));
if (types.isArray(tasksConfig) && tasksConfig.length > 0) {
tasks = tasksConfig.map(i => {
if (types.isString(i)) {
if (tasks.includes(i)) {
return i;
}
} else {
if (tasks.includes(i.name) && _bootstrap.contextKeyService.contextMatchesRules(ContextKeyExpr.deserialize(i.when))) {
return i.name;
}
}
return undefined;
}).filter(i => !!i);
}
this._tasks = tasks.map(i => MenuRegistry.getCommand(i));