mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Add notification button to title bar
This commit is contained in:
parent
d93a92c1c8
commit
fc3012ba72
@ -119,7 +119,8 @@
|
|||||||
var options = {
|
var options = {
|
||||||
type: msg.type,
|
type: msg.type,
|
||||||
fixed: msg.timeout === undefined,
|
fixed: msg.timeout === undefined,
|
||||||
timeout: msg.timeout
|
timeout: msg.timeout,
|
||||||
|
id: notificationId
|
||||||
}
|
}
|
||||||
if (notificationId === "runtime-state") {
|
if (notificationId === "runtime-state") {
|
||||||
if (msg.error === "missing-types") {
|
if (msg.error === "missing-types") {
|
||||||
@ -128,8 +129,7 @@
|
|||||||
{
|
{
|
||||||
text: "Close",
|
text: "Close",
|
||||||
click: function() {
|
click: function() {
|
||||||
persistentNotifications[notificationId].close();
|
persistentNotifications[notificationId].hideNotification();
|
||||||
delete persistentNotifications[notificationId];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -139,8 +139,7 @@
|
|||||||
{
|
{
|
||||||
text: "Setup credentials",
|
text: "Setup credentials",
|
||||||
click: function() {
|
click: function() {
|
||||||
persistentNotifications[notificationId].close();
|
persistentNotifications[notificationId].hideNotification();
|
||||||
delete persistentNotifications[notificationId];
|
|
||||||
RED.projects.showCredentialsPrompt();
|
RED.projects.showCredentialsPrompt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -152,8 +151,7 @@
|
|||||||
{
|
{
|
||||||
text: "Setup project files",
|
text: "Setup project files",
|
||||||
click: function() {
|
click: function() {
|
||||||
persistentNotifications[notificationId].close();
|
persistentNotifications[notificationId].hideNotification();
|
||||||
delete persistentNotifications[notificationId];
|
|
||||||
RED.projects.showFilesPrompt();
|
RED.projects.showFilesPrompt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -165,14 +163,12 @@
|
|||||||
{
|
{
|
||||||
text: "No thanks",
|
text: "No thanks",
|
||||||
click: function() {
|
click: function() {
|
||||||
persistentNotifications[notificationId].close();
|
persistentNotifications[notificationId].hideNotification();
|
||||||
delete persistentNotifications[notificationId];
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
text: "Create default project files",
|
text: "Create default project files",
|
||||||
click: function() {
|
click: function() {
|
||||||
persistentNotifications[notificationId].close();
|
persistentNotifications[notificationId].hideNotification();
|
||||||
delete persistentNotifications[notificationId];
|
|
||||||
RED.projects.createDefaultFileSet();
|
RED.projects.createDefaultFileSet();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -397,6 +393,7 @@
|
|||||||
RED.menu.init({id:"btn-sidemenu",options: menuOptions});
|
RED.menu.init({id:"btn-sidemenu",options: menuOptions});
|
||||||
|
|
||||||
RED.deploy.init(RED.settings.theme("deployButton",null));
|
RED.deploy.init(RED.settings.theme("deployButton",null));
|
||||||
|
RED.notifications.init();
|
||||||
|
|
||||||
RED.actions.add("core:show-about", showAbout);
|
RED.actions.add("core:show-about", showAbout);
|
||||||
RED.nodes.init();
|
RED.nodes.init();
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
**/
|
**/
|
||||||
RED.notify = (function() {
|
RED.notifications = (function() {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// Example usage for a modal dialog with buttons
|
// Example usage for a modal dialog with buttons
|
||||||
@ -39,9 +39,11 @@ RED.notify = (function() {
|
|||||||
});
|
});
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
var persistentNotifications = {};
|
||||||
|
|
||||||
var currentNotifications = [];
|
var currentNotifications = [];
|
||||||
var c = 0;
|
var c = 0;
|
||||||
return function(msg,type,fixed,timeout) {
|
function notify(msg,type,fixed,timeout) {
|
||||||
var options = {};
|
var options = {};
|
||||||
if (type !== null && typeof type === 'object') {
|
if (type !== null && typeof type === 'object') {
|
||||||
options = type;
|
options = type;
|
||||||
@ -99,6 +101,12 @@ RED.notify = (function() {
|
|||||||
}
|
}
|
||||||
nn.closed = true;
|
nn.closed = true;
|
||||||
currentNotifications.splice(currentNotifications.indexOf(nn),1);
|
currentNotifications.splice(currentNotifications.indexOf(nn),1);
|
||||||
|
if (options.id) {
|
||||||
|
delete persistentNotifications[options.id];
|
||||||
|
if (Object.keys(persistentNotifications).length === 0) {
|
||||||
|
notificationButtonWrapper.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
$(nn).slideUp(300, function() {
|
$(nn).slideUp(300, function() {
|
||||||
nn.parentNode.removeChild(nn);
|
nn.parentNode.removeChild(nn);
|
||||||
});
|
});
|
||||||
@ -107,6 +115,26 @@ RED.notify = (function() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
n.hideNotification = (function() {
|
||||||
|
var nn = n;
|
||||||
|
return function() {
|
||||||
|
if (nn.closed) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
nn.hidden = true;
|
||||||
|
$(nn).slideUp(300);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
n.showNotification = (function() {
|
||||||
|
var nn = n;
|
||||||
|
return function() {
|
||||||
|
if (nn.closed || !nn.hidden) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
nn.hidden = false;
|
||||||
|
$(nn).slideDown(300);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
n.update = (function() {
|
n.update = (function() {
|
||||||
var nn = n;
|
var nn = n;
|
||||||
@ -137,6 +165,9 @@ RED.notify = (function() {
|
|||||||
} else {
|
} else {
|
||||||
window.clearTimeout(nn.timeoutid);
|
window.clearTimeout(nn.timeoutid);
|
||||||
}
|
}
|
||||||
|
if (nn.hidden) {
|
||||||
|
nn.showNotification();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
@ -152,7 +183,45 @@ RED.notify = (function() {
|
|||||||
n.timeoutid = window.setTimeout(n.close,timeout||5000);
|
n.timeoutid = window.setTimeout(n.close,timeout||5000);
|
||||||
}
|
}
|
||||||
currentNotifications.push(n);
|
currentNotifications.push(n);
|
||||||
|
if (options.id) {
|
||||||
|
persistentNotifications[options.id] = n;
|
||||||
|
notificationButtonWrapper.show();
|
||||||
|
}
|
||||||
c+=1;
|
c+=1;
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RED.notify = notify;
|
||||||
|
|
||||||
|
|
||||||
|
function hidePersistent() {
|
||||||
|
for(var i in persistentNotifications) {
|
||||||
|
if (persistentNotifications.hasOwnProperty(i)) {
|
||||||
|
persistentNotifications[i].hideNotification();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function showPersistent() {
|
||||||
|
for(var i in persistentNotifications) {
|
||||||
|
if (persistentNotifications.hasOwnProperty(i)) {
|
||||||
|
persistentNotifications[i].showNotification();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var notificationButtonWrapper;
|
||||||
|
|
||||||
|
return {
|
||||||
|
init: function() {
|
||||||
|
notificationButtonWrapper = $('<li>'+
|
||||||
|
'<a id="btn-notifications" class="button" href="#">'+
|
||||||
|
'<i class="fa fa-warning"></i>'+
|
||||||
|
'</a>'+
|
||||||
|
'</li>').prependTo(".header-toolbar").hide();
|
||||||
|
$('#btn-notifications').click(function() {
|
||||||
|
showPersistent();
|
||||||
|
})
|
||||||
|
},
|
||||||
|
notify: notify
|
||||||
|
}
|
||||||
})();
|
})();
|
||||||
|
Loading…
Reference in New Issue
Block a user