mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-05-15 04:44:35 +01:00
* Rev up prettier * Reformat * Remove deprecated tslint * Remove call to tslint and update package-lock.json
100 lines
3.0 KiB
TypeScript
100 lines
3.0 KiB
TypeScript
import Q from "q";
|
|
import { userContext } from "../../../UserContext";
|
|
import { useDialog } from "../../Controls/Dialog";
|
|
import Explorer from "../../Explorer";
|
|
import * as Entities from "../Entities";
|
|
import * as DataTableUtilities from "./DataTableUtilities";
|
|
import TableEntityListViewModel from "./TableEntityListViewModel";
|
|
|
|
export default class TableCommands {
|
|
// Command Ids
|
|
public static editEntityCommand = "edit";
|
|
public static deleteEntitiesCommand = "delete";
|
|
public static reorderColumnsCommand = "reorder";
|
|
public static resetColumnsCommand = "reset";
|
|
public static customizeColumnsCommand = "customizeColumns";
|
|
|
|
private _container: Explorer;
|
|
|
|
constructor(container: Explorer) {
|
|
this._container = container;
|
|
}
|
|
|
|
public isEnabled(commandName: string, selectedEntites: Entities.ITableEntity[]): boolean {
|
|
const singleItemSelected = DataTableUtilities.containSingleItem(selectedEntites);
|
|
const atLeastOneItemSelected = DataTableUtilities.containItems(selectedEntites);
|
|
switch (commandName) {
|
|
case TableCommands.editEntityCommand:
|
|
return singleItemSelected;
|
|
case TableCommands.deleteEntitiesCommand:
|
|
case TableCommands.reorderColumnsCommand:
|
|
return atLeastOneItemSelected;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public tryOpenEntityEditor(viewModel: TableEntityListViewModel): boolean {
|
|
if (this.isEnabled(TableCommands.editEntityCommand, viewModel.selected())) {
|
|
this.editEntityCommand(viewModel);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Edit entity
|
|
*/
|
|
//eslint-disable-next-line
|
|
public editEntityCommand(viewModel: TableEntityListViewModel): Q.Promise<any> {
|
|
if (!viewModel) {
|
|
return null; // Error
|
|
}
|
|
|
|
if (!DataTableUtilities.containSingleItem(viewModel.selected())) {
|
|
return null; // Erorr
|
|
}
|
|
|
|
return null;
|
|
}
|
|
//eslint-disable-next-line
|
|
public deleteEntitiesCommand(viewModel: TableEntityListViewModel): Q.Promise<any> {
|
|
if (!viewModel) {
|
|
return null; // Error
|
|
}
|
|
if (!DataTableUtilities.containItems(viewModel.selected())) {
|
|
return null; // Error
|
|
}
|
|
const entitiesToDelete: Entities.ITableEntity[] = viewModel.selected();
|
|
const deleteMessage: string =
|
|
userContext.apiType === "Cassandra"
|
|
? "Are you sure you want to delete the selected rows?"
|
|
: "Are you sure you want to delete the selected entities?";
|
|
|
|
useDialog.getState().showOkCancelModalDialog(
|
|
"Confirm delete",
|
|
deleteMessage,
|
|
"Delete",
|
|
() => {
|
|
viewModel.queryTablesTab.container.tableDataClient
|
|
.deleteDocuments(viewModel.queryTablesTab.collection, entitiesToDelete)
|
|
.then(() => {
|
|
return viewModel.removeEntitiesFromCache(entitiesToDelete).then(() => {
|
|
viewModel.redrawTableThrottled();
|
|
});
|
|
});
|
|
},
|
|
"Cancel",
|
|
undefined,
|
|
);
|
|
|
|
return null;
|
|
}
|
|
|
|
public resetColumns(viewModel: TableEntityListViewModel): void {
|
|
viewModel.reloadTable();
|
|
}
|
|
}
|