diff --git a/frappe/__init__.py b/frappe/__init__.py index 26d9c9da49..a51be7426f 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -283,6 +283,12 @@ def throw(msg, exc=ValidationError): :param exc: Exception class. Default `frappe.ValidationError`""" msgprint(msg, raise_exception=exc) +def emit_js(js, user=False, **kwargs): + from frappe.async import publish_realtime + if user == False: + user = session.user + publish_realtime('eval_js', js, user=user, **kwargs) + def create_folder(path, with_init=False): """Create a folder in the given path and add an `__init__.py` file (optional). diff --git a/frappe/public/css/form.css b/frappe/public/css/form.css index d88d6dd557..0c9f75e87c 100644 --- a/frappe/public/css/form.css +++ b/frappe/public/css/form.css @@ -71,17 +71,11 @@ display: none; } } -.form-dashboard { - border-bottom: 1px solid #EBEFF2; -} .form-dashboard-section { padding: 15px 30px; margin: 0px; border-bottom: 1px solid #EBEFF2; } -.form-dashboard-section:last-child { - border-bottom: none; -} .form-heatmap { padding-top: 30px; } @@ -427,11 +421,18 @@ select.form-control { font-weight: bold; background-color: #fffdf4; } +.form-headline { + padding: 0px 15px; +} .form-headline .alert { font-size: 12px; background-color: #fffce7; + font-weight: normal !important; + border: 0px; + border-radius: 0px; margin-bottom: 0px; margin: 0px -15px; + padding: 10px 30px; } .delivery-status-indicator { display: inline-block; diff --git a/frappe/public/js/frappe/form/dashboard.js b/frappe/public/js/frappe/form/dashboard.js index 74948f0298..3e0ef36b2d 100644 --- a/frappe/public/js/frappe/form/dashboard.js +++ b/frappe/public/js/frappe/form/dashboard.js @@ -42,6 +42,21 @@ frappe.ui.form.Dashboard = Class.extend({ this.headline.empty().addClass('hidden'); } }, + + add_comment: function(text, permanent) { + var me = this; + this.set_headline_alert(text); + if(!permanent) { + setTimeout(function() { + me.clear_headline(); + }, 10000); + } + }, + + clear_comment: function() { + this.clear_headline(); + }, + set_headline_alert: function(text, alert_class) { if(text) { if(!alert_class) alert_class = "alert-warning"; diff --git a/frappe/public/js/frappe/socketio_client.js b/frappe/public/js/frappe/socketio_client.js index 5f561c1347..2f4ed84d16 100644 --- a/frappe/public/js/frappe/socketio_client.js +++ b/frappe/public/js/frappe/socketio_client.js @@ -27,6 +27,10 @@ frappe.socket = { frappe.msgprint(message); }); + frappe.socket.socket.on('eval_js', function(message) { + eval(message); + }); + frappe.socket.setup_listeners(); frappe.socket.setup_reconnect(); diff --git a/frappe/public/js/frappe/ui/messages.js b/frappe/public/js/frappe/ui/messages.js index f008de7e96..74cbd2d446 100644 --- a/frappe/public/js/frappe/ui/messages.js +++ b/frappe/public/js/frappe/ui/messages.js @@ -230,7 +230,7 @@ frappe.show_alert = function(txt, seconds) { return false; }); - div.delay(seconds ? seconds * 1000 : 3000).fadeOut(300); + div.delay(seconds ? seconds * 1000 : 7000).fadeOut(300); return div; } diff --git a/frappe/public/less/form.less b/frappe/public/less/form.less index 6766e0eb81..4622a64c54 100644 --- a/frappe/public/less/form.less +++ b/frappe/public/less/form.less @@ -101,7 +101,7 @@ } .form-dashboard { - border-bottom: 1px solid @light-border-color; + //border-bottom: 1px solid @light-border-color; } .form-dashboard-section { @@ -111,7 +111,7 @@ } .form-dashboard-section:last-child { - border-bottom: none; + // border-bottom: none; } .form-heatmap { @@ -540,11 +540,19 @@ select.form-control { background-color: @extra-light-yellow; } +.form-headline { + padding: 0px 15px; +} + .form-headline .alert { font-size: @text-medium; background-color: @light-yellow; + font-weight: normal !important; + border: 0px; + border-radius: 0px; margin-bottom: 0px; margin: 0px -15px; + padding: 10px 30px; } .delivery-status-indicator {