|
- // Copyright (c) 2012 Web Notes Technologies Pvt Ltd (http://erpnext.com)
- //
- // MIT License (MIT)
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the "Software"),
- // to deal in the Software without restriction, including without limitation
- // the rights to use, copy, modify, merge, publish, distribute, sublicense,
- // and/or sell copies of the Software, and to permit persons to whom the
- // Software is furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in
- // all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
- // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
- // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- //
-
- // Tabbed Page
-
- function TabbedPage(parent, only_labels) {
- this.tabs = {};
- this.items = this.tabs // bc
- this.cur_tab = null;
-
- this.label_wrapper = $a(parent, 'div','box_label_wrapper', {marginTop:'16px'}); // for border
- this.label_body = $a(this.label_wrapper, 'div', 'box_label_body'); // for height
- this.label_area = $a(this.label_body, 'ul', 'box_tabs');
- if(!only_labels)this.body_area = $a(parent, 'div', '', {backgroundColor:'#FFF'});
- else this.body_area = null;
-
- this.add_item = function(label, onclick, no_body, with_heading) {
- this.add_tab(label, onclick, no_body, with_heading);
- return this.items[label];
- }
- }
-
- TabbedPage.prototype.add_tab = function(n, onshow, no_body, with_heading) {
-
- var tab = $a(this.label_area, 'li');
- tab.label = $a(tab,'a');
- tab.label.innerHTML = n;
-
- if(this.body_area && !no_body){
- tab.tab_body = $a(this.body_area, 'div');
- $dh(tab.tab_body);
- tab.body = tab.tab_body; // bc
- } else {
- tab.tab_body = null;
- }
- tab.onshow = onshow;
- var me = this;
-
- tab.collapse = function() {
- if(this.tab_body)$dh(this.tab_body); this.className = '';
- }
- tab.set_selected = function() {
- if(me.cur_tab) me.cur_tab.collapse();
- this.className = 'box_tab_selected';
- $(this).css('opacity', 1);
- me.cur_tab = this;
- }
- tab.expand = function(arg) {
- this.set_selected();
- if(this.tab_body) $ds(this.tab_body);
- if(this.onshow)this.onshow(arg);
- }
- tab.onmouseover = function() {
- if(me.cur_tab!=this) this.className = 'box_tab_mouseover';
- }
- tab.onmouseout = function() {
- if(me.cur_tab!=this) this.className = ''
- }
- tab.hide = function() {
- this.collapse();
- $dh(this);
- }
- tab.show = function() {
- $ds(this);
- }
- tab.onclick = function() { this.expand(); }
- this.tabs[n] = tab;
- return tab;
- }
-
-
-
-
- // =================================================================================
-
- function TrayPage(parent, height, width, width_body) {
- var me = this;
- if(!width) width=(100/8)+'%';
-
- this.body_style = {margin: '4px 8px'}
-
- this.cur_item = null;
-
- this.items = {};
- this.tabs = this.items // for tabs
- this.tab = make_table($a(parent, 'div'), 1, 2, '100%', [width, width_body]);
-
- // tray style
- $y($td(this.tab, 0, 0),{
- backgroundColor: this.tray_bg
- //,borderRight:'1px solid ' + this.tray_fg
- ,width: width
- });
-
- // body style
- this.body = $a($td(this.tab, 0, 1), 'div');
- if(height) {
- $y(this.body, {height: height, overflow: 'auto'});
- }
-
- this.add_item = function(label, onclick, no_body, with_heading) {
- this.items[label] = new TrayItem(me, label, onclick, no_body, with_heading);
- return this.items[label];
- }
- }
-
- function TrayItem(tray, label, onclick, no_body, with_heading) {
- this.label = label;
- this.onclick = onclick;
- var me = this;
-
- this.ldiv = $a($td(tray.tab, 0, 0), 'div');
- $item_normal(this.ldiv);
-
- if(!no_body) {
- this.wrapper = $a(tray.body, 'div', '', tray.body_style);
- if(with_heading) {
- this.header = $a(this.wrapper, 'div', 'sectionHeading', {marginBottom:'16px', paddingBottom:'0px'});
- this.header.innerHTML = label;
- }
- this.body = $a(this.wrapper, 'div');
- this.tab_body = this.body; // for sync with tabs
-
- $dh(this.wrapper);
- }
-
- $(this.ldiv).html(label)
- .hover(
- function() { if(tray.cur_item.label != this.label) $item_active(this); },
- function() { if(tray.cur_item.label != this.label) $item_normal(this); }
- )
- .click(
- function() { me.expand(); }
- )
-
- this.ldiv.label = label;
- this.ldiv.setAttribute('title',label);
- this.ldiv.onmousedown = function() { $item_pressed(this); }
- this.ldiv.onmouseup = function() { $item_selected(this); }
-
- this.expand = function() {
- if(tray.cur_item) tray.cur_item.collapse();
- if(me.wrapper) $ds(me.wrapper);
- if(me.onclick) me.onclick(me.label);
- me.show_as_expanded();
- }
-
- this.show_as_expanded = function() {
- $item_selected(me.ldiv);
- tray.cur_item = me;
- }
-
- this.collapse = function() {
- if(me.wrapper)$dh(me.wrapper);
- $item_normal(me.ldiv);
- }
- this.hide = function() {
- me.collapse();
- $dh(me.ldiv);
- }
- this.show = function() {
- $ds(me.ldiv);
- }
- }
|