From 7cababc6db05e558c23fd0fd9120a98414d847cd 2013-05-02 00:32:46 From: MinRK Date: 2013-05-02 00:32:46 Subject: [PATCH] add checkpoint status to notebook header autosave is also there, but once the dirty flag is an event, this should stop having the date, and just become 'autosaved / unsaved changes' --- diff --git a/IPython/frontend/html/notebook/static/css/style.min.css b/IPython/frontend/html/notebook/static/css/style.min.css index e470ee7..b837eef 100644 --- a/IPython/frontend/html/notebook/static/css/style.min.css +++ b/IPython/frontend/html/notebook/static/css/style.min.css @@ -870,6 +870,7 @@ body{background-color:#ffffff;} body.notebook_app{overflow:hidden;} blockquote{border-left:4px solid #DDD;padding:0 15px;color:#777;} span#save_widget{padding:5px;margin:0px 0px 0px 300px;display:inline-block;} +span#checkpoint_status span#autosave_status{font-size:small;} span#notebook_name{height:1em;line-height:1em;padding:3px;border:none;font-size:146.5%;} .ui-menubar-item .ui-button .ui-button-text{padding:0.4em 1.0em;font-size:100%;} .ui-menu{-webkit-box-shadow:0px 6px 10px -1px #adadad;-moz-box-shadow:0px 6px 10px -1px #adadad;box-shadow:0px 6px 10px -1px #adadad;} diff --git a/IPython/frontend/html/notebook/static/js/savewidget.js b/IPython/frontend/html/notebook/static/js/savewidget.js index 7391f2a..11cd8ef 100644 --- a/IPython/frontend/html/notebook/static/js/savewidget.js +++ b/IPython/frontend/html/notebook/static/js/savewidget.js @@ -26,7 +26,9 @@ var IPython = (function (IPython) { SaveWidget.prototype.style = function () { this.element.find('span#save_widget').addClass('ui-widget'); this.element.find('span#notebook_name').addClass('ui-widget'); - this.element.find('span#save_status').addClass('ui-widget') + this.element.find('span#autosave_status').addClass('ui-widget') + .css({border: 'none'}); + this.element.find('span#checkpoint_status').addClass('ui-widget') .css({border: 'none', 'margin-left': '20px'}); }; @@ -54,6 +56,13 @@ var IPython = (function (IPython) { $([IPython.events]).on('notebook_save_failed.Notebook', function () { that.set_save_status('Last Save Failed!'); }); + $([IPython.events]).on('checkpoints_listed.Notebook', function (event, data) { + that.set_last_checkpoint(data); + }); + + $([IPython.events]).on('checkpoint_created.Notebook', function (event, data) { + that.set_last_checkpoint(data); + }); }; @@ -121,13 +130,23 @@ var IPython = (function (IPython) { SaveWidget.prototype.set_save_status = function (msg) { - this.element.find('span#save_status').html(msg); + this.element.find('span#autosave_status').html(msg); + } + + SaveWidget.prototype.set_checkpoint_status = function (msg) { + this.element.find('span#checkpoint_status').html(msg); } + SaveWidget.prototype.set_last_checkpoint = function (checkpoint) { + var d = new Date(checkpoint.last_modified); + this.set_checkpoint_status( + "Last Checkpoint: " + d.format('mmm dd HH:MM') + ); + } SaveWidget.prototype.set_last_saved = function () { var d = new Date(); - this.set_save_status('Last saved: '+d.format('mmm dd HH:MM')); + this.set_save_status('(autosaved: '+d.format('mmm dd HH:MM') + ')'); }; diff --git a/IPython/frontend/html/notebook/static/less/notebook.less b/IPython/frontend/html/notebook/static/less/notebook.less index 3f196e3..671cac9 100644 --- a/IPython/frontend/html/notebook/static/less/notebook.less +++ b/IPython/frontend/html/notebook/static/less/notebook.less @@ -27,6 +27,14 @@ span#save_widget { display:inline-block; } +span#checkpoint_status span#autosave_status { + font-size: small; +} + +/*span#save_widget > span#autosave_status { + font-size: x-small; +} +*/ span#notebook_name { height: 1em; line-height: 1em; @@ -498,3 +506,4 @@ input.raw_input { padding-top: 2px; height: 1em; } + diff --git a/IPython/frontend/html/notebook/templates/notebook.html b/IPython/frontend/html/notebook/templates/notebook.html index ef13359..3bb0d5c 100644 --- a/IPython/frontend/html/notebook/templates/notebook.html +++ b/IPython/frontend/html/notebook/templates/notebook.html @@ -38,7 +38,8 @@ class="notebook_app" - + + {% endblock %}