From 3bb65447696f8cda40dba476e183a11e0f91597f Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Wed, 11 Apr 2012 15:18:30 +0530 Subject: [PATCH 1/5] form header refactor --- css/fonts/pacifico.woff | Bin 0 -> 28324 bytes css/legacy/body.css | 11 ++- css/legacy/forms.css | 31 +++++-- css/ui/fonts.css | 8 ++ js/legacy/widgets/form/form.js | 31 +++---- js/legacy/widgets/form/form_fields.js | 29 +++---- js/legacy/widgets/form/form_header.js | 115 ++++++++++++++++++++++++++ js/legacy/wn/page_layout.js | 2 +- js/wn/views/breadcrumbs.js | 5 +- 9 files changed, 181 insertions(+), 51 deletions(-) create mode 100644 css/fonts/pacifico.woff diff --git a/css/fonts/pacifico.woff b/css/fonts/pacifico.woff new file mode 100644 index 0000000000000000000000000000000000000000..373c3815f6ff227d3f93a3abfecec0c6200c81de GIT binary patch literal 28324 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\ -
%(label)s\ -
%(description)s
\ + $(this.row.main_head).html(repl('
\ +

%(label)s

\ +
%(description)s
\
', this.df)); - - this.$expand = $(this.row.main_head).find('.head').click(function() { - if($(me.row.main_head).find('h3').length) { - me.section_collapse(); - } else { - me.section_expand(); - } - return false; - }); - - this.collapsible = true; } else { // simple $(this.wrapper).html('
'); @@ -163,11 +153,12 @@ _f.SectionBreak.prototype.refresh = function(from_form) { if(this.row)this.row.hide(); } else { if(this.collapsible) { - if(this.df.reqd || this.has_data()) { - this.section_expand(from_form); - } else { - this.section_collapse(); - } + //this.section_expand(from_form); + //if(this.df.reqd || this.has_data()) { + // this.section_expand(from_form); + //} else { + // this.section_collapse(); + //} } } } diff --git a/js/legacy/widgets/form/form_header.js b/js/legacy/widgets/form/form_header.js index 4568a20645..d38e18e460 100644 --- a/js/legacy/widgets/form/form_header.js +++ b/js/legacy/widgets/form/form_header.js @@ -20,6 +20,119 @@ // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // +// features +// -------- +// toolbar - standard and custom +// label - saved, submitted etc +// breadcrumbs +// save / submit button toggle based on "saved" or not +// highlight and fade name based on refresh + +_f.FrmHeader = Class.extend({ + init: function(parent, frm) { + this.buttons = {}; + this.$w = $('
\ +
\ + \ + \ + ×\ +
\ +
\ +
\ +
').appendTo(parent); + this.$w.find('.close').click(function() { + window.history.back(); + }) + }, + refresh: function() { + // refresh breadcrumbs + wn.views.breadcrumbs($(this.$w.find('.breadcrumb-area')), + cur_frm.meta.module, cur_frm.meta.name, cur_frm.docname); + + this.refresh_labels(); + this.refresh_toolbar(); + + }, + refresh_labels: function() { + var labinfo = { + 0: ['Draft', ''], + 1: ['Submitted', 'label-info'], + 2: ['Cancelled', 'label-important'] + }[cint(cur_frm.doc.docstatus)]; + + if(cur_frm.doc.__unsaved) { + labinfo[1] = 'label-warning' + } + + this.$w.find('.label-area').html(repl('\ + %(lab_status)s', { + lab_status: labinfo[0], + lab_class: labinfo[1] + })); + }, + refresh_toolbar: function() { + // clear + this.$w.find('.form-header-toolbar').empty(); + var p = cur_frm.get_doc_perms(); + + // Edit + if(cur_frm.meta.read_only_onload && !cur_frm.doc.__islocal) { + if(!cur_frm.editable) + this.add_button('Edit', function() { + cur_frm.edit_doc(); + },'icon-pencil'); + else + this.add_button('Print View', function() { + cur_frm.is_editable[cur_frm.docname] = 0; + cur_frm.refresh(); }, 'icon-print' ); + } + + var docstatus = cint(cur_frm.doc.docstatus); + // Save + if(docstatus==0 && p[WRITE]) { + this.add_button('Save', function() { cur_frm.save('Save');}, ''); + this.buttons['Save'].addClass('btn-primary'); + } + // Submit + if(docstatus==0 && p[SUBMIT] && (!cur_frm.doc.__islocal)) + this.add_button('Submit', function() { cur_frm.savesubmit();}, 'icon-lock'); + + // Update after sumit + if(docstatus==1 && p[SUBMIT]) { + this.add_button('Update', function() { cur_frm.savesubmit();}, ''); + if(!cur_frm.doc.__unsaved) this.buttons['Update'].toggle(false); + } + + // Cancel + if(docstatus==1 && p[CANCEL]) + this.add_button('Cancel', function() { cur_frm.savecancel() }, 'icon-remove'); + + // Amend + if(docstatus==2 && p[AMEND]) + this.add_button('Amend', function() { cur_frm.amend_doc() }, 'icon-pencil'); + + }, + add_button: function(label, click, icon) { + args = { label: label, icon:'' }; + if(icon) { + args.icon = ''; + } + this.buttons[label] = $(repl('', args)) + .click(click) + .appendTo(this.$w.find('.form-header-toolbar')); + }, + show: function() { + }, + hide: function() { + + }, + hide_close: function() { + this.$w.find('.close').toggle(false); + } +}) + +/* _f.FrmHeader = function(parent, frm) { var me = this; this.wrapper = $a(parent, 'div'); @@ -229,3 +342,5 @@ _f.FrmHeader.prototype.refresh_labels = function(f) { setTimeout('$(cur_frm.frm_head.dn_area).addClass("background-fade-in")\ .css("background-color", "white")', 1500) } + +*/ \ No newline at end of file diff --git a/js/legacy/wn/page_layout.js b/js/legacy/wn/page_layout.js index 3883be852f..c480fd6b8e 100644 --- a/js/legacy/wn/page_layout.js +++ b/js/legacy/wn/page_layout.js @@ -35,10 +35,10 @@ wn.PageLayout = function(args) { $.extend(this, args) this.wrapper = $a(this.parent, 'div', 'layout-wrapper layout-wrapper-background'); + this.head = $a(this.wrapper, 'div'); this.main = $a(this.wrapper, 'div', 'layout-main-section'); this.sidebar_area = $a(this.wrapper, 'div', 'layout-side-section'); $a(this.wrapper, 'div', '', {clear:'both'}); - this.head = $a(this.main, 'div'); this.toolbar_area = $a(this.main, 'div'); this.body = $a(this.main, 'div'); this.footer = $a(this.main, 'div'); diff --git a/js/wn/views/breadcrumbs.js b/js/wn/views/breadcrumbs.js index fb4f136e30..544bbcdebc 100644 --- a/js/wn/views/breadcrumbs.js +++ b/js/wn/views/breadcrumbs.js @@ -1,5 +1,6 @@ wn.provide('wn.views'); wn.views.breadcrumbs = function(parent, module, doctype, name) { + $(parent).empty(); var $bspan = $(repl('\ Home', {home_page: wn.boot.home_page})); if(module) { @@ -7,11 +8,11 @@ wn.views.breadcrumbs = function(parent, module, doctype, name) { {module: module, module_small: module.toLowerCase() })) } if(doctype && (locals.DocType[doctype] && !locals.DocType[doctype].issingle)) { - $bspan.append(repl(' / %(doctype)s List', + $bspan.append(repl(' / %(doctype)s', {doctype: doctype})) } if(name) { - $bspan.append(' / ' + name) + $bspan.append(' / ' + name.bold()) } $bspan.appendTo(parent); } \ No newline at end of file From 0a37d29cbfe5fa41fb66d517ac710c5e2762e96b Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Wed, 11 Apr 2012 15:28:07 +0530 Subject: [PATCH 2/5] form header refactor --- css/legacy/forms.css | 31 --------------------------- js/core.min.js | 6 ++++-- js/legacy/widgets/form/form_header.js | 10 ++++----- js/wn/views/doclistview.js | 6 ++++-- 4 files changed, 13 insertions(+), 40 deletions(-) diff --git a/css/legacy/forms.css b/css/legacy/forms.css index f38c9d7062..5c90cebf93 100644 --- a/css/legacy/forms.css +++ b/css/legacy/forms.css @@ -1,36 +1,5 @@ /* FORMS */ -.breadcrumbs-area { - margin-bottom: 8px; -} - -.breadcrumbs { - color: #000000; -} - -.breadcrumbs a { - color: #000000; -} - -div.form-header-main { - padding: 6px; - background: #eeeeee; /* Old browsers */ - background: -moz-linear-gradient(top, #eeeeee 0%, #cccccc 100%); /* FF3.6+ */ - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eeeeee), color-stop(100%,#cccccc)); /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #eeeeee 0%,#cccccc 100%); /* Chrome10+,Safari5.1+ */ - background: -o-linear-gradient(top, #eeeeee 0%,#cccccc 100%); /* Opera 11.10+ */ - background: -ms-linear-gradient(top, #eeeeee 0%,#cccccc 100%); /* IE10+ */ - background: linear-gradient(top, #eeeeee 0%,#cccccc 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#cccccc',GradientType=0 ); /* IE6-9 */ - border-bottom: 1px solid #ccc; -} -div.form-header-toolbar { - padding: 4px; - background: #eeeeee; - border-top: 1px solid #f8f8f8; - border-bottom: 1px solid #ccc; -} - div.form-section-head { margin: 11px -15px 3px -15px; border-top: 1px solid #ccc; diff --git a/js/core.min.js b/js/core.min.js index 86a9d5ea0e..67dc804ad3 100644 --- a/js/core.min.js +++ b/js/core.min.js @@ -222,9 +222,11 @@ wn.views.add_list_btn=function(parent,doctype){$(parent).append(repl('\ -
\ +
\ + \ ×\ - \ +
\ +
\

%(label)s

\
\
Loading...
\ diff --git a/js/legacy/widgets/form/form_header.js b/js/legacy/widgets/form/form_header.js index d38e18e460..486e5f4ba3 100644 --- a/js/legacy/widgets/form/form_header.js +++ b/js/legacy/widgets/form/form_header.js @@ -32,12 +32,12 @@ _f.FrmHeader = Class.extend({ init: function(parent, frm) { this.buttons = {}; this.$w = $('
\ -
\ +
\ \ \ ×\
\ -
\ +
\
\
').appendTo(parent); this.$w.find('.close').click(function() { @@ -72,7 +72,7 @@ _f.FrmHeader = Class.extend({ }, refresh_toolbar: function() { // clear - this.$w.find('.form-header-toolbar').empty(); + this.$w.find('.page-app-toolbar').empty(); var p = cur_frm.get_doc_perms(); // Edit @@ -91,7 +91,7 @@ _f.FrmHeader = Class.extend({ // Save if(docstatus==0 && p[WRITE]) { this.add_button('Save', function() { cur_frm.save('Save');}, ''); - this.buttons['Save'].addClass('btn-primary'); + this.buttons['Save'].addClass('btn-info'); } // Submit if(docstatus==0 && p[SUBMIT] && (!cur_frm.doc.__islocal)) @@ -120,7 +120,7 @@ _f.FrmHeader = Class.extend({ this.buttons[label] = $(repl('', args)) .click(click) - .appendTo(this.$w.find('.form-header-toolbar')); + .appendTo(this.$w.find('.page-app-toolbar')); }, show: function() { }, diff --git a/js/wn/views/doclistview.js b/js/wn/views/doclistview.js index 7e4752c1e4..d64d9ae4f2 100644 --- a/js/wn/views/doclistview.js +++ b/js/wn/views/doclistview.js @@ -54,9 +54,11 @@ wn.views.DocListView = wn.ui.Listing.extend({ make_page: function() { var me = this; this.$page.html(repl('
\ -
\ +
\ + \ ×\ - \ +
\ +
\

%(label)s

\
\
Loading...
\ From ea145aa4b84ed5108148af921ec1086f1006a1fe Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Wed, 11 Apr 2012 15:30:42 +0530 Subject: [PATCH 3/5] form header refactor --- js/legacy/widgets/form/form_fields.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/legacy/widgets/form/form_fields.js b/js/legacy/widgets/form/form_fields.js index 1c647d28be..160d729847 100644 --- a/js/legacy/widgets/form/form_fields.js +++ b/js/legacy/widgets/form/form_fields.js @@ -104,8 +104,8 @@ _f.SectionBreak.prototype.make_body = function() { // expand section this.section_expand = function(no_animation) { $(me.row.main_head).find('.head') - .html('

' - + me.df.label + '

'); + .html('

' + + me.df.label + '

'); if(no_animation) $(me.row.main_body).toggle(true); else From 9f63e72ff83bb3a2adab8a2b93c8097be7178a3b Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Wed, 11 Apr 2012 17:25:49 +0530 Subject: [PATCH 4/5] added app frame --- css/legacy/body.css | 2 +- css/legacy/forms.css | 9 +++- js/core.min.js | 7 +-- js/legacy/report.compressed.js | 11 ++--- js/legacy/widgets/form/form.js | 13 ++--- js/legacy/widgets/form/form_fields.js | 6 +-- js/legacy/widgets/form/form_header.js | 47 ++++++------------- js/legacy/widgets/report_builder/datatable.js | 18 ------- .../widgets/report_builder/report_builder.js | 34 ++++++++------ js/legacy/wn/page_layout.js | 2 +- js/wn/views/doclistview.js | 8 ++-- 11 files changed, 64 insertions(+), 93 deletions(-) diff --git a/css/legacy/body.css b/css/legacy/body.css index c53547c7d5..fcfc582b48 100644 --- a/css/legacy/body.css +++ b/css/legacy/body.css @@ -165,7 +165,7 @@ div.loading_div { } div.std-footer { - margin: 13px 0px; + margin: 13px -15px; border-top: 1px solid #AAA; padding: 13px; } diff --git a/css/legacy/forms.css b/css/legacy/forms.css index 5c90cebf93..f2fb8ea7a8 100644 --- a/css/legacy/forms.css +++ b/css/legacy/forms.css @@ -1,5 +1,12 @@ /* FORMS */ +div.form-title { + /*background-color: #e0eeff;*/ + padding: 5px 11px 15px 11px; + margin: -15px -15px 0px -15px; + border-bottom: 1px solid #eee; +} + div.form-section-head { margin: 11px -15px 3px -15px; border-top: 1px solid #ccc; @@ -9,7 +16,7 @@ div.form-section-head { div.form-layout-row:first-child .form-section-head { border-top: 0px solid #ccc !important; margin-top: 0px; - padding-top: 0px; + padding-top: 15px; } div.form-section-head h3 { diff --git a/js/core.min.js b/js/core.min.js index 67dc804ad3..f175fc7e83 100644 --- a/js/core.min.js +++ b/js/core.min.js @@ -222,10 +222,7 @@ wn.views.add_list_btn=function(parent,doctype){$(parent).append(repl('\ -
\ - \ - ×\ -
\ +
\
\

%(label)s

\
\ @@ -240,7 +237,7 @@ wn.views.DocListView=wn.ui.Listing.extend({init:function(doctype,page){this.doct
\
\
\ -
',{label:this.label}));wn.views.breadcrumbs(this.$page.find('.breadcrumbs-area').get(0),locals.DocType[this.doctype].module);},setup:function(){var me=this;me.can_delete=wn.model.can_delete(me.doctype);me.meta=locals.DocType[me.doctype];me.$page.find('.wnlist-area').empty(),me.setup_docstatus_filter();me.setup_listview();me.init_list();me.init_stats();me.add_delete_option();},setup_docstatus_filter:function(){var me=this;this.can_submit=$.map(locals.DocPerm,function(d){if(d.parent==me.meta.name&&d.submit)return 1 +
',{label:this.label}));this.appframe=new wn.views.AppFrame(this.$page.find('.appframe-area'));wn.views.breadcrumbs($('').appendTo(this.appframe.$titlebar),locals.DocType[this.doctype].module);},setup:function(){var me=this;me.can_delete=wn.model.can_delete(me.doctype);me.meta=locals.DocType[me.doctype];me.$page.find('.wnlist-area').empty(),me.setup_docstatus_filter();me.setup_listview();me.init_list();me.init_stats();me.add_delete_option();},setup_docstatus_filter:function(){var me=this;this.can_submit=$.map(locals.DocPerm,function(d){if(d.parent==me.meta.name&&d.submit)return 1 else return null;}).length;if(this.can_submit){this.$page.find('.show-docstatus').removeClass('hide');this.$page.find('.show-docstatus input').click(function(){me.run();})}},setup_listview:function(){if(this.meta.__listjs){eval(this.meta.__listjs);this.listview=new wn.doclistviews[this.doctype](this);}else{this.listview=new wn.views.ListView(this);} this.listview.parent=this;},init_list:function(){this.make({method:'webnotes.widgets.doclistview.get',get_args:this.get_args,parent:this.$page.find('.wnlist-area'),start:0,page_length:20,show_filters:true,show_grid:true,new_doctype:this.doctype,allow_delete:true,no_result_message:this.make_no_result(),columns:this.listview.fields});this.run();},make_no_result:function(){return repl('

No %(doctype_label)s found

\ %(description)s\ diff --git a/js/legacy/report.compressed.js b/js/legacy/report.compressed.js index 3f007880b5..d5c4255b73 100644 --- a/js/legacy/report.compressed.js +++ b/js/legacy/report.compressed.js @@ -3,9 +3,9 @@ * lib/js/legacy/widgets/report_builder/report_builder.js */ _r.ReportContainer=function(){if(user=='Guest'){msgprint("Not Allowed");return;} -this.wrapper=$a(wn.container.add_page("Report Builder"),'div','layout-wrapper');var head_div=$a(this.wrapper,'div');this.rb_area=$a(this.wrapper,'div');var me=this;this.rb_dict={};this.page_head=new PageHeader(head_div);$y(this.page_head.wrapper,{marginBottom:'0px'});var run_fn=function(){if(me.cur_rb){me.cur_rb.dt.start_rec=1;me.cur_rb.dt.run();}} -var runbtn=this.page_head.add_button('Run',run_fn,1,'ui-icon-circle-triangle-e',1);if(has_common(['Administrator','System Manager'],user_roles)){var savebtn=this.page_head.add_button('Save',function(){if(me.cur_rb)me.cur_rb.save_criteria();},0,'ui-icon-disk');var fn=function(){if(me.cur_rb){if(!me.cur_rb.current_loaded){msgprint("error:You must save the report before you can set Advanced features");return;} -loaddoc('Search Criteria',me.cur_rb.sc_dict[me.cur_rb.current_loaded]);}};var advancedbtn=this.page_head.add_button('Advanced Settings',fn);} +var page=wn.container.add_page("Report Builder");this.wrapper=$a(page,'div','layout-wrapper',{padding:'0px'});this.appframe=new wn.views.AppFrame(this.wrapper);this.appframe.$titlebar.append('');this.rb_area=$a(this.wrapper,'div','',{padding:'15px'});var me=this;this.rb_dict={};var run_fn=function(){if(me.cur_rb){me.cur_rb.dt.start_rec=1;me.cur_rb.dt.run();}} +var runbtn=this.appframe.add_button('Run',run_fn,'icon-refresh');this.appframe.add_button('Export',function(){me.cur_rb&&me.cur_rb.dt.do_export();},'icon-download-alt');this.appframe.add_button('Print',function(){me.cur_rb&&me.cur_rb.dt.do_print();},'icon-print');this.appframe.add_button('Calc',function(){me.cur_rb&&me.cur_rb.dt.do_calc();},'icon-plus');if(has_common(['Administrator','System Manager'],user_roles)){var savebtn=this.appframe.add_button('Save',function(){if(me.cur_rb)me.cur_rb.save_criteria();});var fn=function(){if(me.cur_rb){if(!me.cur_rb.current_loaded){msgprint("error:You must save the report before you can set Advanced features");return;} +loaddoc('Search Criteria',me.cur_rb.sc_dict[me.cur_rb.current_loaded]);}};var advancedbtn=this.appframe.add_button('Advanced Settings',fn,'icon-cog');} this.set_dt=function(dt,onload){my_onload=function(f){if(!f.forbidden){me.cur_rb=f;me.cur_rb.mytabs.items['Result'].expand();if(onload)onload(f);}} if(me.cur_rb) me.cur_rb.hide();if(me.rb_dict[dt]){me.rb_dict[dt].show(my_onload);}else{me.rb_dict[dt]=new _r.ReportBuilder(me.rb_area,dt,my_onload);}}} @@ -28,7 +28,7 @@ _r.ReportBuilder.prototype.run=function(){this.dt.run();} _r.ReportBuilder.prototype.clear_criteria=function(){this.column_picker.clear();this.column_picker.set_defaults();for(var i=0;i'; // show / hide buttons if(this.frm_head)this.frm_head.refresh(); // add to recent - if(wn.ui.toolbar.recent) wn.ui.toolbar.recent.add(this.doctype, this.docname, 1); + if(wn.ui.toolbar.recent) + wn.ui.toolbar.recent.add(this.doctype, this.docname, 1); } // -------------------------------------------------------------------------------------- diff --git a/js/legacy/widgets/form/form_fields.js b/js/legacy/widgets/form/form_fields.js index 160d729847..f3a912cb10 100644 --- a/js/legacy/widgets/form/form_fields.js +++ b/js/legacy/widgets/form/form_fields.js @@ -83,7 +83,7 @@ _f.SectionBreak.prototype.make_body = function() { if(!this.df.description) this.df.description = ''; $(this.row.main_head).html(repl('
\ -

%(label)s

\ +

%(label)s

\
%(description)s
\
', this.df)); @@ -104,8 +104,8 @@ _f.SectionBreak.prototype.make_body = function() { // expand section this.section_expand = function(no_animation) { $(me.row.main_head).find('.head') - .html('

' - + me.df.label + '

'); + .html('

' + + me.df.label + '

'); if(no_animation) $(me.row.main_body).toggle(true); else diff --git a/js/legacy/widgets/form/form_header.js b/js/legacy/widgets/form/form_header.js index 486e5f4ba3..c84ff9090d 100644 --- a/js/legacy/widgets/form/form_header.js +++ b/js/legacy/widgets/form/form_header.js @@ -30,19 +30,10 @@ _f.FrmHeader = Class.extend({ init: function(parent, frm) { - this.buttons = {}; - this.$w = $('
\ -
\ - \ - \ - ×\ -
\ -
\ -
\ -
').appendTo(parent); - this.$w.find('.close').click(function() { - window.history.back(); - }) + this.appframe = new wn.views.AppFrame(parent) + this.appframe.$titlebar.append('\ + '); + this.$w = this.appframe.$w; }, refresh: function() { // refresh breadcrumbs @@ -72,17 +63,17 @@ _f.FrmHeader = Class.extend({ }, refresh_toolbar: function() { // clear - this.$w.find('.page-app-toolbar').empty(); + this.appframe.clear_buttons(); var p = cur_frm.get_doc_perms(); // Edit if(cur_frm.meta.read_only_onload && !cur_frm.doc.__islocal) { if(!cur_frm.editable) - this.add_button('Edit', function() { + this.appframe.add_button('Edit', function() { cur_frm.edit_doc(); },'icon-pencil'); else - this.add_button('Print View', function() { + this.appframe.add_button('Print View', function() { cur_frm.is_editable[cur_frm.docname] = 0; cur_frm.refresh(); }, 'icon-print' ); } @@ -90,38 +81,28 @@ _f.FrmHeader = Class.extend({ var docstatus = cint(cur_frm.doc.docstatus); // Save if(docstatus==0 && p[WRITE]) { - this.add_button('Save', function() { cur_frm.save('Save');}, ''); - this.buttons['Save'].addClass('btn-info'); + this.appframe.add_button('Save', function() { cur_frm.save('Save');}, ''); + this.appframe.buttons['Save'].addClass('btn-info'); } // Submit if(docstatus==0 && p[SUBMIT] && (!cur_frm.doc.__islocal)) - this.add_button('Submit', function() { cur_frm.savesubmit();}, 'icon-lock'); + this.appframe.add_button('Submit', function() { cur_frm.savesubmit();}, 'icon-lock'); // Update after sumit if(docstatus==1 && p[SUBMIT]) { - this.add_button('Update', function() { cur_frm.savesubmit();}, ''); - if(!cur_frm.doc.__unsaved) this.buttons['Update'].toggle(false); + this.appframe.add_button('Update', function() { cur_frm.savesubmit();}, ''); + if(!cur_frm.doc.__unsaved) this.appframe.buttons['Update'].toggle(false); } // Cancel if(docstatus==1 && p[CANCEL]) - this.add_button('Cancel', function() { cur_frm.savecancel() }, 'icon-remove'); + this.appframe.add_button('Cancel', function() { cur_frm.savecancel() }, 'icon-remove'); // Amend if(docstatus==2 && p[AMEND]) - this.add_button('Amend', function() { cur_frm.amend_doc() }, 'icon-pencil'); + this.appframe.add_button('Amend', function() { cur_frm.amend_doc() }, 'icon-pencil'); }, - add_button: function(label, click, icon) { - args = { label: label, icon:'' }; - if(icon) { - args.icon = ''; - } - this.buttons[label] = $(repl('', args)) - .click(click) - .appendTo(this.$w.find('.page-app-toolbar')); - }, show: function() { }, hide: function() { diff --git a/js/legacy/widgets/report_builder/datatable.js b/js/legacy/widgets/report_builder/datatable.js index a9e6ae560e..f1ba7a8186 100644 --- a/js/legacy/widgets/report_builder/datatable.js +++ b/js/legacy/widgets/report_builder/datatable.js @@ -119,24 +119,6 @@ _r.DataTable.prototype.make_toolbar = function(parent) { var ht = make_table(this.hbar,1,3,'100%',['40%','40%','20%'],{verticalAlign:'middle'}); var div = $a($td(ht,0,0), 'div'); - var make_btn = function(label,icon,onclick,bold) { - var btn = $btn(div,label,onclick); - if(bold)$y(btn,{fontWeight: 'bold'}); - } - - - // refresh btn - make_btn('Refresh','ui-icon-refresh',function() { me.start_rec = 1; me.run();},1); - - // export - make_btn('Export','ui-icon-circle-arrow-e',function() {me.do_export();}); - - // print - make_btn('Print','ui-icon-print',function() {me.do_print();}); - - // print - make_btn('Calc','ui-icon-calculator',function() {me.do_calc();}); - // sort select var t = make_table($td(ht,0,1),1,6,null,[null,null,null,'20px',null,null],{verticalAlign:'middle'}); diff --git a/js/legacy/widgets/report_builder/report_builder.js b/js/legacy/widgets/report_builder/report_builder.js index 4a8b1e47fc..b50b996940 100644 --- a/js/legacy/widgets/report_builder/report_builder.js +++ b/js/legacy/widgets/report_builder/report_builder.js @@ -30,18 +30,15 @@ _r.ReportContainer = function() { msgprint("Not Allowed"); return; } - this.wrapper = $a(wn.container.add_page("Report Builder"), 'div', 'layout-wrapper'); - var head_div = $a(this.wrapper, 'div'); - this.rb_area = $a(this.wrapper, 'div'); + var page = wn.container.add_page("Report Builder"); + this.wrapper = $a(page, 'div', 'layout-wrapper', {padding: '0px'}); + this.appframe = new wn.views.AppFrame(this.wrapper); + this.appframe.$titlebar.append(''); + this.rb_area = $a(this.wrapper, 'div', '', {padding: '15px'}); var me = this; this.rb_dict = {}; - // tool bar - this.page_head = new PageHeader(head_div); - $y(this.page_head.wrapper, {marginBottom:'0px'}); - - // buttons var run_fn = function() { if(me.cur_rb){ @@ -50,13 +47,22 @@ _r.ReportContainer = function() { } } - var runbtn = this.page_head.add_button('Run', run_fn, 1, 'ui-icon-circle-triangle-e', 1); + var runbtn = this.appframe.add_button('Run', run_fn, 'icon-refresh'); + // refresh btn + this.appframe.add_button('Export', function() { me.cur_rb && me.cur_rb.dt.do_export(); }, + 'icon-download-alt'); + this.appframe.add_button('Print', function() { me.cur_rb && me.cur_rb.dt.do_print(); }, + 'icon-print'); + this.appframe.add_button('Calc', function() { me.cur_rb && me.cur_rb.dt.do_calc(); }, + 'icon-plus'); + // new if(has_common(['Administrator', 'System Manager'], user_roles)) { // save - var savebtn = this.page_head.add_button('Save', function() {if(me.cur_rb) me.cur_rb.save_criteria(); }, 0, 'ui-icon-disk'); + var savebtn = this.appframe.add_button('Save', + function() {if(me.cur_rb) me.cur_rb.save_criteria(); }); // advanced var fn = function() { @@ -68,7 +74,7 @@ _r.ReportContainer = function() { loaddoc('Search Criteria', me.cur_rb.sc_dict[me.cur_rb.current_loaded]); } }; - var advancedbtn = this.page_head.add_button('Advanced Settings', fn); + var advancedbtn = this.appframe.add_button('Advanced Settings', fn, 'icon-cog'); } // set a type @@ -300,9 +306,9 @@ _r.ReportBuilder.prototype.clear_criteria = function() { // ------------------------------------------------------------------------------------- _r.ReportBuilder.prototype.set_main_title = function(t, t1) { - _r.rb_con.page_head.main_head.innerHTML = t; - _r.rb_con.page_head.sub_head.innerHTML = (t1 ? t1 : ''); - set_title(t); + var title = t + (t1 ? t1 : ''); + _r.rb_con.appframe.$titlebar.find('.report-title').html(title); + set_title(title); } _r.ReportBuilder.prototype.select_column = function(dt, label, value) { diff --git a/js/legacy/wn/page_layout.js b/js/legacy/wn/page_layout.js index c480fd6b8e..7e99d88506 100644 --- a/js/legacy/wn/page_layout.js +++ b/js/legacy/wn/page_layout.js @@ -39,7 +39,7 @@ wn.PageLayout = function(args) { this.main = $a(this.wrapper, 'div', 'layout-main-section'); this.sidebar_area = $a(this.wrapper, 'div', 'layout-side-section'); $a(this.wrapper, 'div', '', {clear:'both'}); - this.toolbar_area = $a(this.main, 'div'); + this.main_head = $a(this.main, 'div', 'form-title'); this.body = $a(this.main, 'div'); this.footer = $a(this.main, 'div'); if(this.heading) { diff --git a/js/wn/views/doclistview.js b/js/wn/views/doclistview.js index d64d9ae4f2..f659927e6a 100644 --- a/js/wn/views/doclistview.js +++ b/js/wn/views/doclistview.js @@ -54,10 +54,7 @@ wn.views.DocListView = wn.ui.Listing.extend({ make_page: function() { var me = this; this.$page.html(repl('
\ -
\ - \ - ×\ -
\ +
\
\

%(label)s

\
\ @@ -74,7 +71,8 @@ wn.views.DocListView = wn.ui.Listing.extend({
\
', {label: this.label})); - wn.views.breadcrumbs(this.$page.find('.breadcrumbs-area').get(0), locals.DocType[this.doctype].module); + this.appframe = new wn.views.AppFrame(this.$page.find('.appframe-area')); + wn.views.breadcrumbs($('').appendTo(this.appframe.$titlebar), locals.DocType[this.doctype].module); }, setup: function() { From b3faa6e059e693fb3683afcbb411cda3bdebd3e7 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Wed, 11 Apr 2012 17:26:09 +0530 Subject: [PATCH 5/5] added app frame --- css/ui/views.css | 27 +++++++++++++++++++++++++++ js/wn/views/appframe.js | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 css/ui/views.css create mode 100644 js/wn/views/appframe.js diff --git a/css/ui/views.css b/css/ui/views.css new file mode 100644 index 0000000000..949ec0b44c --- /dev/null +++ b/css/ui/views.css @@ -0,0 +1,27 @@ +.breadcrumbs { + color: #000000; +} + +.breadcrumbs a { + color: #000000; +} + +div.appframe-titlebar { + padding: 6px; + background: #eeeeee; /* Old browsers */ + background: -moz-linear-gradient(top, #eeeeee 0%, #cccccc 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eeeeee), color-stop(100%,#cccccc)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #eeeeee 0%,#cccccc 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #eeeeee 0%,#cccccc 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #eeeeee 0%,#cccccc 100%); /* IE10+ */ + background: linear-gradient(top, #eeeeee 0%,#cccccc 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#cccccc',GradientType=0 ); /* IE6-9 */ + border-bottom: 1px solid #ccc; +} + +div.appframe-toolbar { + padding: 4px; + background: #eeeeee; + border-top: 1px solid #f8f8f8; + border-bottom: 1px solid #ccc; +} \ No newline at end of file diff --git a/js/wn/views/appframe.js b/js/wn/views/appframe.js new file mode 100644 index 0000000000..19b1375a3e --- /dev/null +++ b/js/wn/views/appframe.js @@ -0,0 +1,32 @@ +wn.views.AppFrame = Class.extend({ + init: function(parent) { + this.buttons = {}; + this.$w = $('
').appendTo(parent); + + this.$titlebar = $('
\ + ×\ +
').appendTo(this.$w); + + this.$w.find('.close').click(function() { + window.history.back(); + }) + + }, + add_button: function(label, click, icon) { + if(!this.$w.find('.appframe-toolbar').length) + this.$w.append('
'); + + args = { label: label, icon:'' }; + if(icon) { + args.icon = ''; + } + this.buttons[label] = $(repl('', args)) + .click(click) + .appendTo(this.$w.find('.appframe-toolbar')); + + }, + clear_buttons: function() { + this.$w.find('.appframe-toolbar').empty(); + } +}) \ No newline at end of file