mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
134 lines
3.8 KiB
JavaScript
134 lines
3.8 KiB
JavaScript
/////////////////////////////////////////////////////////////
|
|
//
|
|
// pgAdmin 4 - PostgreSQL Tools
|
|
//
|
|
// Copyright (C) 2013 - 2020, The pgAdmin Development Team
|
|
// This software is released under the PostgreSQL Licence
|
|
//
|
|
//////////////////////////////////////////////////////////////
|
|
|
|
import gettext from 'sources/gettext';
|
|
import Backgrid from 'pgadmin.backgrid';
|
|
import Backbone from 'backbone';
|
|
import Alertify from 'pgadmin.alertifyjs';
|
|
|
|
let NotificationsModel = Backbone.Model.extend({
|
|
defaults: {
|
|
recorded_time: undefined,
|
|
event: undefined,
|
|
pid: undefined,
|
|
payload: undefined,
|
|
},
|
|
schema: [{
|
|
id: 'recorded_time',
|
|
label: gettext('Recorded time'),
|
|
cell: 'string',
|
|
type: 'text',
|
|
editable: false,
|
|
cellHeaderClasses: 'width_percent_20',
|
|
headerCell: Backgrid.Extension.CustomHeaderCell,
|
|
},{
|
|
id: 'channel',
|
|
label: gettext('Event'),
|
|
cell: 'string',
|
|
type: 'text',
|
|
editable: false,
|
|
cellHeaderClasses: 'width_percent_20',
|
|
headerCell: Backgrid.Extension.CustomHeaderCell,
|
|
},{
|
|
id: 'pid',
|
|
label: gettext('Process ID'),
|
|
cell: 'string',
|
|
type: 'text',
|
|
editable: false,
|
|
cellHeaderClasses: 'width_percent_20',
|
|
headerCell: Backgrid.Extension.CustomHeaderCell,
|
|
},{
|
|
id: 'payload',
|
|
label: gettext('Payload'),
|
|
cell: 'string',
|
|
type: 'text',
|
|
editable: false,
|
|
cellHeaderClasses: 'width_percent_40',
|
|
headerCell: Backgrid.Extension.CustomHeaderCell,
|
|
}],
|
|
});
|
|
|
|
let NotificationCollection = Backbone.Collection.extend({
|
|
model: NotificationsModel,
|
|
});
|
|
|
|
let queryToolNotifications = {
|
|
|
|
collection: null,
|
|
|
|
/* This function is responsible to create and render the
|
|
* new backgrid for the notification tab.
|
|
*/
|
|
renderNotificationsGrid: function(notifications_panel) {
|
|
if (!queryToolNotifications.collection)
|
|
queryToolNotifications.collection = new NotificationCollection();
|
|
|
|
let gridCols = [{
|
|
name: 'recorded_time',
|
|
label: gettext('Recorded time'),
|
|
type: 'text',
|
|
editable: false,
|
|
cell: 'string',
|
|
}, {
|
|
name: 'channel',
|
|
label: gettext('Event'),
|
|
type: 'text',
|
|
editable: false,
|
|
cell: 'string',
|
|
}, {
|
|
name: 'pid',
|
|
label: gettext('Process ID'),
|
|
type: 'text',
|
|
editable: false,
|
|
cell: 'string',
|
|
}, {
|
|
name: 'payload',
|
|
label: gettext('Payload'),
|
|
type: 'text',
|
|
editable: false,
|
|
cell: 'string',
|
|
}];
|
|
|
|
// Set up the grid
|
|
let notifications_grid = new Backgrid.Grid({
|
|
emptyText: gettext('No data found'),
|
|
columns: gridCols,
|
|
collection: queryToolNotifications.collection,
|
|
className: 'backgrid presentation table table-bordered table-hover table-noouter-border table-bottom-border',
|
|
});
|
|
|
|
// Render the grid
|
|
if (notifications_grid && notifications_panel)
|
|
notifications_panel.$container.find('.sql-editor-notifications').append(notifications_grid.render().el);
|
|
},
|
|
|
|
// This function is used to raise notify messages and update the
|
|
// notification grid.
|
|
updateNotifications: function(notify_messages) {
|
|
if (notify_messages != null && notify_messages.length > 0) {
|
|
for (let i in notify_messages) {
|
|
let notify_msg = '';
|
|
if (notify_messages[i].payload != '') {
|
|
notify_msg = gettext('Asynchronous notification "%s" with payload "%s" received from server process with PID %s', notify_messages[i].channel, notify_messages[i].payload, notify_messages[i].pid);
|
|
}
|
|
else {
|
|
notify_msg = gettext('Asynchronous notification "%s" received from server process with PID %s', notify_messages[i].channel, notify_messages[i].pid);
|
|
}
|
|
|
|
Alertify.info(notify_msg);
|
|
}
|
|
|
|
// Add notify messages to the collection.
|
|
queryToolNotifications.collection.add(notify_messages);
|
|
}
|
|
},
|
|
};
|
|
|
|
module.exports = queryToolNotifications;
|