Remove jquery.contextMenu (#248)

This commit is contained in:
Steve Faulkner
2020-10-08 18:19:24 -05:00
committed by GitHub
parent fe085b3e5a
commit ba862a8106
7 changed files with 0 additions and 2073 deletions

View File

@@ -1,150 +0,0 @@
import Q from "q";
import * as Constants from "../Constants";
import TableCommands from "./TableCommands";
import TableEntityListViewModel from "./TableEntityListViewModel";
/*
* ContextMenu view representation
*/
export default class DataTableContextMenu {
public viewModel: TableEntityListViewModel;
// There is one context menu for each selector on each tab and they should all be registered here.
// Once the context menus are registered, we should access them through this instance.
public static Instance: { [key: string]: { contextMenu: DataTableContextMenu } } = {};
private _tableCommands: TableCommands;
constructor(viewModel: TableEntityListViewModel, tableCommands: TableCommands) {
this.viewModel = viewModel;
this._tableCommands = tableCommands;
this.registerTableBodyContextMenu();
this.registerTableHeaderContextMenu();
DataTableContextMenu.Instance[viewModel.queryTablesTab.tabId] = { contextMenu: this };
}
public unregisterContextMenu(selector: string): void {
$.contextMenu("destroy", "div#" + this.viewModel.queryTablesTab.tabId + ".tab-pane " + selector);
}
public registerTableBodyContextMenu(): void {
// Localize
$.contextMenu({
selector:
"div#" + this.viewModel.queryTablesTab.tabId + ".tab-pane " + Constants.htmlSelectors.dataTableBodyRowSelector,
callback: this.bodyContextMenuSelect,
items: {
edit: {
name: "Edit",
cmd: TableCommands.editEntityCommand,
icon: "edit-entity",
disabled: () => !this.isEnabled(TableCommands.editEntityCommand)
},
delete: {
name: "Delete",
cmd: TableCommands.deleteEntitiesCommand,
icon: "delete-entity",
disabled: () => !this.isEnabled(TableCommands.deleteEntitiesCommand)
},
reorder: {
name: "Reorder Columns Based on Schema",
cmd: TableCommands.reorderColumnsCommand,
icon: "shift-non-empty-columns-left",
disabled: () => !this.isEnabled(TableCommands.reorderColumnsCommand)
},
reset: {
name: "Reset Columns",
cmd: TableCommands.resetColumnsCommand,
icon: "reset-column-order"
}
}
});
}
public registerTableHeaderContextMenu(): void {
// Localize
$.contextMenu({
selector:
"div#" + this.viewModel.queryTablesTab.tabId + ".tab-pane " + Constants.htmlSelectors.dataTableHeadRowSelector,
callback: this.headerContextMenuSelect,
items: {
customizeColumns: {
name: "Column Options",
cmd: TableCommands.customizeColumnsCommand,
icon: "customize-columns"
},
reset: {
name: "Reset Columns",
cmd: TableCommands.resetColumnsCommand,
icon: "reset-column-order"
}
}
});
}
private isEnabled(commandName: string): boolean {
return this._tableCommands.isEnabled(commandName, this.viewModel.selected());
}
private headerContextMenuSelect = (key: any, options: any): void => {
var promise: Q.Promise<any> = null;
switch (key) {
case TableCommands.customizeColumnsCommand:
promise = this._tableCommands.customizeColumnsCommand(this.viewModel);
break;
case TableCommands.resetColumnsCommand:
promise = Q.resolve(this._tableCommands.resetColumns(this.viewModel));
break;
default:
break;
}
if (promise) {
promise.then(() => {
this.viewModel.focusDataTable();
});
}
};
private bodyContextMenuSelect = (key: any, options: any): void => {
var promise: Q.Promise<any> = null;
switch (key) {
case TableCommands.editEntityCommand:
promise = this._tableCommands.editEntityCommand(this.viewModel);
break;
case TableCommands.deleteEntitiesCommand:
promise = this._tableCommands.deleteEntitiesCommand(this.viewModel);
break;
case TableCommands.reorderColumnsCommand:
promise = this._tableCommands.reorderColumnsBasedOnSelectedEntities(this.viewModel);
break;
case TableCommands.resetColumnsCommand:
promise = Q.resolve(this._tableCommands.resetColumns(this.viewModel));
break;
default:
break;
}
if (promise) {
promise.then(() => {
this.viewModel.focusDataTable();
});
}
};
/**
* A context menu factory to construct the one context menu for each tab/table view model.
*/
public static contextMenuFactory(viewModel: TableEntityListViewModel, tableCommands: TableCommands) {
if (!DataTableContextMenu.Instance[viewModel.queryTablesTab.tabId]) {
DataTableContextMenu.Instance[viewModel.queryTablesTab.tabId] = {
contextMenu: new DataTableContextMenu(viewModel, tableCommands)
};
}
}
}

View File

@@ -41,18 +41,6 @@ export default class DataTableOperationManager {
this.tryOpenEditor();
};
private contextMenu = (event: JQueryEventObject) => {
var elem: JQuery = $(event.currentTarget);
this.updateLastSelectedItem(elem, event.shiftKey);
this.applyContextMenuSelection(elem);
setTimeout(function() {
$(".context-menu-list")
.attr("tabindex", -1)
.focus();
}, 0);
};
private keyDown = (event: JQueryEventObject): boolean => {
var isUpArrowKey: boolean = event.keyCode === Constants.keyCodes.UpArrow,
isDownArrowKey: boolean = event.keyCode === Constants.keyCodes.DownArrow,
@@ -293,7 +281,6 @@ export default class DataTableOperationManager {
public bind() {
this.dataTable.on("click", "tr", this.click);
this.dataTable.on("dblclick", "tr", this.doubleClick);
this.dataTable.on("contextmenu", "tr", this.contextMenu);
this.dataTable.on("keydown", "td", this.keyDown);
this.dataTable.on("keyup", "td", this.keyUp);

View File

@@ -5,7 +5,6 @@ import Q from "q";
import { Action } from "../../../Shared/Telemetry/TelemetryConstants";
import { CassandraTableKey, CassandraAPIDataClient } from "../TableDataClient";
import DataTableViewModel from "./DataTableViewModel";
import DataTableContextMenu from "./DataTableContextMenu";
import * as DataTableUtilities from "./DataTableUtilities";
import TableCommands from "./TableCommands";
import TableEntityCache from "./TableEntityCache";
@@ -56,8 +55,6 @@ export default class TableEntityListViewModel extends DataTableViewModel {
this.cache = new TableEntityCache();
this.queryErrorMessage = ko.observable<string>();
this.queryTablesTab = queryTablesTab;
// Enable Context menu for the data table.
DataTableContextMenu.contextMenuFactory(this, tableCommands);
this.id = `tableEntityListViewModel${this.queryTablesTab.tabId}`;
this.cqlQuery = ko.observable<string>(
`SELECT * FROM ${this.queryTablesTab.collection.databaseId}.${this.queryTablesTab.collection.id()}`