hana-cli
Version:
HANA Developer Command Line Interface
155 lines (141 loc) • 7 kB
JavaScript
;
sap.ui.define([
"sap/hanacli/common/controller/BaseController",
"sap/m/Text",
"sap/m/Link",
"sap/ui/table/Column"
], function (BaseController, Text, Link, Column) {
const I18N_KEYS = {
ERROR_HTTP: "error.httpError"
};
return BaseController.extend("sap.hanacli.tables.controller.App", {
onAppInit: function () {
this.getHanaStatus();
this.getPrompts().then(() => {
const promptsModel = this.getModel("promptsModel");
if (!promptsModel) {
return;
}
if (!promptsModel.getProperty("/schema")) {
promptsModel.setProperty("/schema", "**CURRENT_SCHEMA**");
}
if (!promptsModel.getProperty("/table")) {
promptsModel.setProperty("/table", "*");
}
if (!promptsModel.getProperty("/view")) {
promptsModel.setProperty("/view", "*");
}
if (!promptsModel.getProperty("/user")) {
promptsModel.setProperty("/user", "*");
}
if (!promptsModel.getProperty("/limit")) {
promptsModel.setProperty("/limit", 200);
}
});
let model = this.getModel("promptsModel");
this.getView().setModel(model);
},
downloadExcel: function () {
window.open("/excel");
return;
},
executeCmd: async function () {
this.startBusy();
this.updatePrompts().then(() => {
let cmd = this.getModel("config").getProperty("/cmd");
let aUrl = `/hana/${cmd}/`;
let oController = this;
const resourceBundle = this.getResourceBundle();
fetch(aUrl)
.then(response => {
return response.json().then(data => ({
status: response.status,
ok: response.ok,
body: data
}));
})
.then(result => {
if (!result.ok) {
const errorMsg = result.body.message || resourceBundle.getText(I18N_KEYS.ERROR_HTTP, [result.status]);
const error = new Error(errorMsg);
error.response = result.body;
throw error;
}
oController.endBusy();
let model = oController.getModel("resultsModel");
let metaData = [];
if (result.body[0]) {
for (const key of Object.keys(result.body[0])) {
metaData.push({ property: key });
}
}
let data = { rows: result.body, columns: metaData };
model.setData(data);
let oTable = oController.getView().byId("table");
oTable.bindColumns("resultsModel>/columns", function (sId, oContext) {
var sColumnId = oContext.getObject().property;
let template = new Text({ text: { path: "resultsModel>" + sColumnId } });
if (cmd === "btpSubs-ui" && /url/i.test(sColumnId)) {
template = new Link({
text: { path: "resultsModel>" + sColumnId },
target: "_blank",
href: { path: "resultsModel>" + sColumnId }
});
}
if (cmd === "tables-ui" && sColumnId === "TABLE_NAME") {
template = new Link({
text: { path: "resultsModel>" + sColumnId },
target: "_blank",
href: { path: "resultsModel>" + sColumnId, formatter: function(value) { return "/ui/?tbl=" + value + "#inspectTable-ui"; } }
});
}
if (cmd === "views-ui" && sColumnId === "VIEW_NAME") {
template = new Link({
text: { path: "resultsModel>" + sColumnId },
target: "_blank",
href: { path: "resultsModel>" + sColumnId, formatter: function(value) { return "/ui/?viewInput=" + value + "#inspectView-ui"; } }
});
}
if (cmd === "procedures-ui" && sColumnId === "PROCEDURE_NAME") {
template = new Link({
text: { path: "resultsModel>" + sColumnId },
target: "_blank",
href: {
parts: [
{ path: "resultsModel>PROCEDURE_NAME" },
{ path: "resultsModel>SCHEMA_NAME" }
],
formatter: function (procedureName, schemaName) {
if (!procedureName) {
return "";
}
const proc = encodeURIComponent(procedureName);
const schema = schemaName ? "&schema=" + encodeURIComponent(schemaName) : "";
return "/ui/?proc=" + proc + schema + "#callProcedure-ui";
}
}
});
}
return new Column({
id: sColumnId,
label: sColumnId,
template: template,
sortProperty: sColumnId,
filterProperty: sColumnId
});
});
})
.catch(error => {
oController.onErrorCall(error, oController);
oController.endBusy();
});
});
},
/**
* Navigate to BTP Target Selection UI
*/
navigateToBtpTarget: function () {
window.location.hash = "btp-ui";
}
});
});