in broker-plugins/management-http/src/main/java/resources/js/qpid/management/dashboard/widget/query.js [128:287]
createPortlet: function ()
{
var preference = this.preference;
var query = {
category: preference.value.category,
select: preference.value.select,
where: "1=2"
};
var deferred = new Deferred();
var queryPreflightRequestPromise = this.management.query(query);
queryPreflightRequestPromise.then(lang.hitch(this, function (preflightResults)
{
var headers = lang.clone(preflightResults.headers);
var columns = [];
for (var i = 0; i < headers.length; i++)
{
columns.push({
field: i,
label: headers[i],
sortable: false
});
}
var queryGrid = new QueryGrid({
detectChanges: true,
rowsPerPage: this.limit,
management: this.management,
parentObject: this.parentObject,
category: preference.value.category,
selectClause: preference.value.select + ",id",
orderBy: preference.value.orderBy,
where: preference.value.where,
pageSizeOptions: [],
previousNextArrows: false,
pagingLinks: 0,
columns: columns,
idProperty: columns.length
});
queryGrid.on('rowBrowsed', lang.hitch(this, function (event)
{
this.controller.showById(event.id);
}));
this._queryGrid = queryGrid;
var portlet = new Portlet({
title: preference.name,
content: queryGrid,
open: !this.hidden,
onClose: lang.hitch(this, function ()
{
MessageDialog.confirm({
title: "Remove widget?",
message: ("Are you sure you want to remove the query widget '"
+ entities.encode(new String(preference.name)) + "'"
+ " from the dashboard?"),
confirmationId: "dashboard.confirmation.widget.delete"
})
.then(lang.hitch(this, function ()
{
this.emit("close");
}));
}),
startup: function ()
{
this.inherited("startup", arguments);
// inherited startup adds the settings icon to the portlet's toolbar but does not expose
// a handle to it.
var settingsIconNodes = dojo.query(".dashboardWidgetSettingsIcon", this.domNode);
if (settingsIconNodes && settingsIconNodes.length == 1)
{
settingsIconNodes[0].title = "Configure the settings of this widget.";
util.stopEventPropagation(settingsIconNodes[0], "mousedown");
}
}
});
if (portlet.closeIcon)
{
portlet.closeIcon.title = "Remove this query from the dashboard.";
util.stopEventPropagation(portlet.closeIcon, "mousedown");
}
if (portlet.arrowNode)
{
portlet.arrowNode.title = "Maximise/minimise this widget.";
util.stopEventPropagation(portlet.arrowNode, "mousedown");
}
portlet._preferenceAccessIcon = portlet._createIcon("preferenceAccessIcon",
"preferenceAccessHoverIcon",
lang.hitch(this, function ()
{
var tabData = {
tabType: "query",
modelObject: this.parentObject,
data: preference,
preferenceId: preference.id
};
this.controller.showTab(tabData);
}));
portlet._preferenceAccessIcon.title = "Open this query in a separate tab.";
util.stopEventPropagation(portlet._preferenceAccessIcon, "mousedown");
var settings = new QueryWidgetSettings();
settings.set("limit", this.limit);
settings.set("refreshPeriod", this.refreshPeriod);
// TODO: remove hardcoded sizes
var settingsDialog = new PortletDialogSettings({
content: settings,
dimensions: [540, 130],
portletIconClass: "dashboardWidgetSettingsIcon",
portletIconHoverClass: "dashboardWidgetSettingsHoverIcon",
title: "Widget settings - " + preference.name
});
settings.on("save", lang.hitch(this, function (event)
{
var settings = event.settings;
var emitChange = this.limit !== settings.limit || this.refreshPeriod !== settings.refreshPeriod;
this.limit = settings.limit;
this.refreshPeriod = settings.refreshPeriod;
this.deactivate();
this.activate();
queryGrid.set("rowsPerPage", this.limit);
settingsDialog.toggle();
if (emitChange)
{
this.emit("change");
}
}));
settings.on("cancel", lang.hitch(settingsDialog, settingsDialog.toggle));
portlet.addChild(settingsDialog);
portlet.on("hide", lang.hitch(this, function(){
this.hidden = true;
this.emit("change");
}));
portlet.on("show", lang.hitch(this, function(){
this.hidden = false;
this.emit("change");
}));
this.activate();
this.portlet = portlet;
deferred.resolve(portlet);
}), function (error)
{
deferred.cancel(error);
});
return deferred.promise;
},