156 lines
No EOL
4.8 KiB
JavaScript
156 lines
No EOL
4.8 KiB
JavaScript
wn.ui.AppFrame = Class.extend({
|
|
init: function(parent, title, module) {
|
|
this.set_document_title = true;
|
|
this.buttons = {};
|
|
this.$w = $('<div></div>').prependTo(parent);
|
|
|
|
this.$titlebar = $('<div class="appframe-titlebar">\
|
|
<span class="appframe-breadcrumb">\
|
|
</span>\
|
|
<span class="appframe-center">\
|
|
<span class="appframe-title"></span>\
|
|
<span class="appframe-subject"></span>\
|
|
</span>\
|
|
<span class="close" style="margin-top: 5px; margin-right: 7px;">×</span>\
|
|
</div>').appendTo(this.$w);
|
|
|
|
this.$w.find('.close').click(function() {
|
|
window.history.back();
|
|
})
|
|
|
|
if(title)
|
|
this.set_title(title);
|
|
|
|
},
|
|
title: function(txt) {
|
|
this.set_title(txt);
|
|
},
|
|
set_title: function(txt, full_text) {
|
|
if(this.set_document_title)
|
|
document.title = txt;
|
|
this.$titlebar.find(".appframe-title").html(txt)
|
|
.attr("title", full_text || txt);
|
|
},
|
|
clear_breadcrumbs: function() {
|
|
this.$w.find(".appframe-breadcrumb").empty();
|
|
},
|
|
add_breadcrumb: function(icon, link, title) {
|
|
if(link) {
|
|
$(repl("<span><a href='#%(link)s' title='%(title)s'><i class='%(icon)s'></i>\
|
|
</a></span>", {
|
|
icon: icon,
|
|
link: link,
|
|
title: title
|
|
})).appendTo(this.$w.find(".appframe-breadcrumb"));
|
|
} else {
|
|
$(repl("<span><i class='%(icon)s'></i></span>", {
|
|
icon: icon,
|
|
})).appendTo(this.$w.find(".appframe-breadcrumb"));
|
|
}
|
|
},
|
|
add_home_breadcrumb: function() {
|
|
this.add_breadcrumb("icon-home", wn.home_page, "Home");
|
|
},
|
|
add_list_breadcrumb: function(doctype) {
|
|
this.add_breadcrumb("icon-list", "List/" + encodeURIComponent(doctype), doctype + " List");
|
|
},
|
|
add_module_breadcrumb: function(module) {
|
|
var module_info = wn.modules[module];
|
|
if(module_info) {
|
|
this.add_breadcrumb(module_info.icon, module_info.link,
|
|
module_info.label || module);
|
|
}
|
|
},
|
|
add_button: function(label, click, icon) {
|
|
this.add_toolbar();
|
|
args = { label: label, icon:'' };
|
|
if(icon) {
|
|
args.icon = '<i class="'+icon+'"></i>';
|
|
}
|
|
this.buttons[label] = $(repl('<button class="btn">\
|
|
%(icon)s %(label)s</button>', args))
|
|
.click(click)
|
|
.appendTo(this.toolbar);
|
|
return this.buttons[label];
|
|
},
|
|
|
|
add_help_button: function(txt) {
|
|
this.add_toolbar();
|
|
$('<button class="btn" button-type="help">\
|
|
<b>?</b></button>')
|
|
.data('help-text', txt)
|
|
.click(function() { msgprint($(this).data('help-text'), 'Help'); })
|
|
.appendTo(this.toolbar);
|
|
},
|
|
|
|
clear_buttons: function() {
|
|
this.toolbar && this.toolbar.empty();
|
|
},
|
|
|
|
add_toolbar: function() {
|
|
if(!this.toolbar)
|
|
this.$w.append('<div class="appframe-toolbar"><div class="btn-group"></div></div>');
|
|
this.toolbar = this.$w.find('.appframe-toolbar .btn-group');
|
|
},
|
|
add_label: function(label) {
|
|
return $("<span class='label'>"+label+" </span>").appendTo(this.toolbar.parent());
|
|
},
|
|
add_select: function(label, options) {
|
|
this.add_toolbar();
|
|
return $("<select style='width: 100px;'>")
|
|
.add_options(options).appendTo(this.toolbar.parent());
|
|
},
|
|
add_data: function(label) {
|
|
this.add_toolbar();
|
|
return $("<input style='width: 100px;' type='text' placeholder='"+ label +"'>")
|
|
.appendTo(this.toolbar.parent());
|
|
},
|
|
add_date: function(label, date) {
|
|
this.add_toolbar();
|
|
return $("<input style='width: 80px;' type='text'>").datepicker({
|
|
dateFormat: sys_defaults.date_format.replace("yyyy", "yy"),
|
|
changeYear: true,
|
|
}).val(dateutil.str_to_user(date) || "").appendTo(this.toolbar.parent());
|
|
},
|
|
add_check: function(label) {
|
|
this.add_toolbar();
|
|
return $("<label style='display: inline;'><input type='checkbox' \
|
|
style='margin-top: -2px;'/> " + label + "</label>")
|
|
.appendTo(this.toolbar.parent())
|
|
.find("input");
|
|
},
|
|
add_ripped_paper_effect: function(wrapper) {
|
|
if(!wrapper) var wrapper = wn.container.page;
|
|
var layout_main = $(wrapper).find('.layout-main');
|
|
if(!layout_main.length) {
|
|
layout_main = $(wrapper).find('.layout-main-section');
|
|
}
|
|
layout_main.css({"padding-top":"25px"});
|
|
$('<div class="ripped-paper-border"></div>')
|
|
.prependTo(layout_main)
|
|
.css({"width": $(layout_main).width()});
|
|
}
|
|
});
|
|
|
|
// parent, title, single_column
|
|
// standard page with appframe
|
|
|
|
wn.ui.make_app_page = function(opts) {
|
|
if(opts.single_column) {
|
|
$(opts.parent).html('<div class="layout-wrapper layout-wrapper-appframe">\
|
|
<div class="layout-appframe"></div>\
|
|
<div class="layout-main"></div>\
|
|
</div>');
|
|
} else {
|
|
$(opts.parent).html('<div class="layout-wrapper layout-wrapper-background">\
|
|
<div class="layout-appframe"></div>\
|
|
<div class="layout-main-section"></div>\
|
|
<div class="layout-side-section"></div>\
|
|
<div class="clear"></div>\
|
|
</div>');
|
|
}
|
|
opts.parent.appframe = new wn.ui.AppFrame($(opts.parent).find('.layout-appframe'));
|
|
if(opts.set_document_title!==undefined)
|
|
opts.parent.appframe.set_document_title = opts.set_document_title;
|
|
if(opts.title) opts.parent.appframe.title(opts.title);
|
|
} |