资讯详情

easyui之panel控件分析

/**  * panel - jQuery EasyUI  *  * Licensed under the GPL:  * http://www.gnu.org/licenses/gpl.txt  *  * Copyright 2010 stworthy [ stworthy@gmail.com ]  *  */ /**  * 首先要了解面板的组成,面板由两部分组成,上面是header下面是body,使用时,我们只指定了body的元素,header元素和父元素都是自动生成的,首先生成父元素(.panel),然后根据设置组装header  */ (($) {     //删除指定节点  removeNode(node) {         node.each(() {             $().remove();             ($..msie) {                 .= ;             }         });     }      //设置面板尺寸,最后会触发"_resize"事件  setSize(target, param) {         opts = $.(target, ).;         panel = $.(target, ).panel;         pheader = panel.find();         pbody = panel.find();          (param) {             (param.) opts.= paam.;
            (param.) opts.= param.;
            (param.!= ) opts.= param.;
            (param.!= ) opts.= param.;
        }

        (opts.== ) {
            p = panel.();
            opts.= p.();
            opts.= p.();
        }
        panel.({
            : opts.,
            : opts.});
        panel.(opts.);
        panel.addClass(opts.);
        pheader.addClass(opts.);
        pbody.addClass(opts.);

        (!isNaN(opts.)) {
            ($.boxModel == ) {
                panel.(opts.- (panel.outerWidth() - panel.()));
                pheader.(panel.() - (pheader.outerWidth() - pheader.()));
                pbody.(panel.() - (pbody.outerWidth() - pbody.()));
            } {
                panel.(opts.);
                pheader.(panel.());
                pbody.(panel.());
            }
        } {
            panel.();
            pbody.();
        }
        (!isNaN(opts.)) {
// var height = opts.height - (panel.outerHeight()-panel.height()) - pheader.outerHeight(); // if ($.boxModel == true){ // height -= pbody.outerHeight() - pbody.height(); // } // pbody.height(height);   ($.boxModel == ) {
                panel.(opts.- (panel.outerHeight() - panel.()));
                pbody.(panel.() - pheader.outerHeight() - (pbody.outerHeight() - pbody.()));
            } {
                panel.(opts.);
                pbody.(panel.() - pheader.outerHeight());
            }
        } {
            pbody.();
        }
        panel.(, );

        opts.onResize.apply(target, [opts., opts.]);

        panel.find().triggerHandler();
    }

    //移动面板  movePanel(target, param) {
        opts = $.(target, ).;
        panel = $.(target, ).panel;
        (param) {
            (param.!= ) opts.= param.;
            (param.!= ) opts.= param.;
        }
        panel.({
            : opts.,
            : opts.});
        opts.onMove.apply(target, [opts., opts.]);
    }

    //包装面板  wrapPanel(target) {
        //首先给用户指定的面板元素加一个父元素(div)  panel = $(target).addClass().wrap().();
        //然后给这个父元素绑定自定义事件("_resize"),从代码上看,这个事件只有在设置了面板自适应的时候才会真正起作用(去重绘尺寸)  panel.bind(, () {
            opts = $.(target, ).;
            (opts.== ) {
                setSize(target);
            }
            ;
        });

        panel;
    }

    addHeader(target) {
        //添加面板的标题栏  opts = $.(target, ).;
        panel = $.(target, ).panel;
        //首先移除掉面板的标题栏  removeNode(panel.find());
        (opts.&& !opts.) {
            //如果设置面板有title并且没用说明不能有标题头就加入面板标题块  header = $(+ opts.+ ).(panel);
            (opts.) {
                header.find().addClass();
                $().addClass(opts.).(header);
            }
            tool = $().(header);
            (opts.) {
                $().(tool).bind(, onClose);
            }
            (opts.) {
                $().(tool).bind(, onMax);
            }
            (opts.) {
                $().(tool).bind(, onMin);
            }
            (opts.) {
                $().(tool).bind(, onToggle);
            }
            (opts.) {
                (i = opts..- 1; i >= 0; i--) {
                    t = $().addClass(opts.[i].).(tool);
                    (opts.[i].handler) {
                        t.bind(, eval(opts.[i].handler));
                    }
                }
            }
            tool.find().(
                () {
                    $().addClass();
                },
                () {
                    $().removeClass();
                }
            );
            panel.find().removeClass();
        } {
            panel.find().addClass();
        }

        onToggle() {
            ($().hasClass()) {
                expandPanel(target, );
            } {
                collapsePanel(target, );
            }
            ;
        }

        onMin() {
            minimizePanel(target);
            ;
        }

        onMax() {
            ($().hasClass()) {
                restorePanel(target);
            } {
                maximizePanel(target);
            }
            ;
        }

        onClose() {
            closePanel(target);
            ;
        }
    }

    /**  * load content from remote site if the href attribute is defined  */  loadData(target) {
        state = $.(target, );
        (state..&& (!state.|| !state..)) {
            state.= ;
            pbody = state..find();
            pbody.($().(state..));
            pbody.load(state.., , () {
                ($.) {
                    $..parse(pbody);
                }
                state..onLoad.apply(target, arguments);
                state.= ;
            });
        }
    }

    openPanel(target, forceOpen) {
        //打开面板,正常打开的话会去调用一个用户的方法,如果返回为false就不打开了,但如果设置了暴力打开参数的话就直接打开,不再去调用用户的方法  opts = $.(target, ).;
        panel = $.(target, ).panel;

        (forceOpen != ) {
            (opts.onBeforeOpen.call(target) == ) ;
        }
        panel.show();
        opts.= ;
        opts.onOpen.call(target);

        (opts.== ) maximizePanel(target);
        (opts.== ) minimizePanel(target);
        (opts.== ) collapsePanel(target);

        (!opts.) {
            loadData(target);
        }
    }

    closePanel(target, forceClose) {
        //关闭面板,同样处理面板的暴力关闭事件  opts = $.(target, ).;
        panel = $.(target, ).panel;

        (forceClose != ) {
            (opts.onBeforeClose.call(target) == ) ;
        }
        panel.hide();
        opts.= ;
        opts.onClose.call(target);
    }

    destroyPanel(target, forceDestroy) {
        //销毁面板,这将面板控件从dom元素中除去  opts = $.(target, ).;
        panel = $.(target, ).panel;

        (forceDestroy != ) {
            (opts.onBeforeDestroy.call(target) == ) ;
        }
        removeNode(panel);
        opts.onDestroy.call(target);
    }

    collapsePanel(target, animate) {
        //折叠面板  opts = $.(target, ).;
        panel = $.(target, ).panel;
        body = panel.find();
        tool = panel.find();

        (tool.hasClass()) ;

        body.stop(, ); // stop animation  (opts.onBeforeCollapse.call(target) == ) ;

        tool.addClass();
        (animate == ) {
            body.(, () {
                opts.= ;
                opts.onCollapse.call(target);
            });
        } {
            body.hide();
            opts.= ;
            opts.onCollapse.call(target);
        }
    }

    expandPanel(target, animate) {
        //展开面板  opts = $.(target, ).;
        panel = $.(target, ).panel;
        body = panel.find();
        tool = panel.find();

        (!tool.hasClass()) ;

        body.stop(, ); // stop animation  (opts.onBeforeExpand.call(target) == ) ;

        tool.removeClass();
        (animate == ) {
            body.(, () {
                opts.= ;
                opts.onExpand.call(target);
                loadData(target);
            });
        } {
            body.show();
            opts.= ;
            opts.onExpand.call(target);
            loadData(target);
        }
    }

    maximizePanel(target) {
        //最大化面板  opts = $.(target, ).;
        panel = $.(target, ).panel;
        tool = panel.find();

        (tool.hasClass()) ;

        tool.addClass();

        //最大化之前先存储现在的尺寸,方面后面的恢复  $.(target, ).= {
            : opts.,
            : opts.,
            : opts.,
            : opts.,
            : opts.};
        opts.= 0;
        opts.= 0;
        opts.= ;
        setSize(target);
        opts.= ;
        opts.= ;
        opts.onMaximize.call(target);
    }

    minimizePanel(target) {
        //最小化面板  opts = $.(target, ).;
        panel = $.(target, ).panel;
        panel.hide();
        opts.= ;
        opts.= ;
        opts.onMinimize.call(target);
    }

    restorePanel(target) {
        opts = $.(target, ).;
        panel = $.(target, ).panel;
        tool = panel.find();

        (!tool.hasClass()) ;

        panel.show();
        tool.removeClass();
        original = $.(target, ).;
        opts.= original.;
        opts.= original.;
        opts.= original.;
        opts.= original.;
        opts.= original.;
        setSize(target);
        opts.= ;
        opts.= ;
        opts.onRestore.call(target);
    }

    setBorder(target) {
        opts = $.(target, ).;
        panel = $.(target, ).panel;
        (opts.== ) {
            panel.find().removeClass();
            panel.find().removeClass();
        } {
            panel.find().addClass();
            panel.find().addClass();
        }
    }

    setTitle(target, title) {
        $.(target, )..= title;
        $(target).panel().find().(title);
    }

    $().unbind().bind(, () {
        //给窗体绑定大小改变事件,先去看body是否有布局,如果有就调用body的布局方法,如果没有就调用body下面的div面板,触发它的"_resize"事件  layout = $();
        (layout.) {
            layout.();
        } {
            $().triggerHandler();
        }
    });

    $..panel = (options, param) {
        (options == ) {
            //如果是字符串就表示是在调用方法  (options) {
                :
                    $.([0], ).;
                :
                    $. 

标签: optex激光位移传感器cd3

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台