亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ext.lingo.jsoncheckboxtree.js

?? anewssystem新聞發(fā)布系統(tǒng)集成使用了spring hibernate freemarker EXTJS等開源框架 可以作為學(xué)習參考
?? JS
?? 第 1 頁 / 共 2 頁
字號:
/* Extending/depending on:
~ = modified function (when updating from SVN be sure to check these for changes, especially to Ext.tree.TreeNodeUI.render() )
+ = added function

TreeSelectionModel.js
    Ext.tree.CheckNodeMultiSelectionModel : ~init(), ~onNodeClick(), +extendSelection(), ~onKeyDown()

TreeNodeUI.js
    Ext.tree.CheckboxNodeUI : ~render(), +checked(), +check(), +toggleCheck()

TreePanel.js
    Ext.tree.TreePanel : +getChecked()

TreeLoader.js
    Ext.tree.TreeLoader : ~createNode()

*/

/**
 * 原始功能只能實現(xiàn)選中或不選兩種狀態(tài)
 * 但我們現(xiàn)在需要非葉子節(jié)點可以實現(xiàn)三種狀態(tài),既:
 *   節(jié)點的子節(jié)點都被選中時,顯示都被選中的圖標
 *   節(jié)點的子節(jié)點都沒選中時,顯示都沒選中的圖標
 *   節(jié)點的子節(jié)點部分選中時,顯示部分選中的圖標
 *
 *   顯示都被選中,和部分選中時,當前節(jié)點的狀態(tài)是被選中
 *   顯示都沒選中時,當前節(jié)點的狀態(tài)是沒選中
 *
 *   顯示都被選中時,單擊當前節(jié)點,觸發(fā)的事件是,當前節(jié)點變成未選中狀態(tài),所有子節(jié)點變成未選中狀態(tài)
 *   顯示都沒選中時,單擊當前節(jié)點,觸發(fā)的事件是,當前節(jié)點變成都選中狀態(tài),所有子節(jié)點變成選中狀態(tài)
 *   顯示部分選中時,單擊當前節(jié)點,觸發(fā)的事件是,當前節(jié)點變成都選中狀態(tài),所有子節(jié)點變成選中狀態(tài)
 *
 *   子節(jié)點變成未選中狀態(tài)時,對應(yīng)父節(jié)點判斷所有子節(jié)點是否未選中,如果都未選中,變成未選中狀態(tài),否則變成部分選中狀態(tài)
 *   子節(jié)點變成選中狀態(tài)時,對應(yīng)父節(jié)點判斷所有子節(jié)點是否都選中,如果都選中,變成都選中狀態(tài),否則變成部分選中狀態(tài)
 *
 * @return {Array} 選中節(jié)點的id數(shù)組
 */
Ext.tree.TreePanel.prototype.getChecked = function(node){
    var checked = [], i;
    if( typeof node == 'undefined' ) {
        node = this.rootVisible ? this.getRootNode() : this.getRootNode().firstChild;
    }

    if( node.attributes.checked ) {
        checked.push(node.id);
        if( !node.isLeaf() ) {
            for( i = 0; i < node.childNodes.length; i++ ) {
                checked = checked.concat( this.getChecked(node.childNodes[i]) );
            }
        }
    }
    return checked;
};

/**
 * @class Ext.tree.CustomUITreeLoader
 * @extends Ext.tree.TreeLoader
 * 重寫createNode(),強制uiProvider是任意的TreeNodeUI來保存廣度
 */
Ext.tree.CustomUITreeLoader = function() {
    Ext.tree.CustomUITreeLoader.superclass.constructor.apply(this, arguments);
};

Ext.extend(Ext.tree.CustomUITreeLoader, Ext.tree.TreeLoader, {
    createNode : function(attr){
        Ext.apply(attr, this.baseAttr || {});

        if(this.applyLoader !== false){
            attr.loader = this;
        }

        // 如果uiProvider是字符串,那么要么從uiProviders數(shù)組里取一個對應(yīng)的,要么解析字符串獲得uiProvider
        if(typeof attr.uiProvider == 'string'){
            attr.uiProvider = this.uiProviders[attr.uiProvider] || eval(attr.uiProvider);
        }

        // 返回的時候,如果是葉子,就返回普通TreeNode,如果不是葉子,就返回異步讀取樹
        return(attr.leaf ? new Ext.tree.TreeNode(attr) : new Ext.tree.AsyncTreeNode(attr));
    }
});


/**
 * @class Ext.tree.CheckboxNodeUI
 * @extends Ext.tree.TreeNodeUI
 * 給所有節(jié)點添加checkbox
 */
Ext.tree.CheckboxNodeUI = function() {
    Ext.tree.CheckboxNodeUI.superclass.constructor.apply(this, arguments);
};

Ext.extend(Ext.tree.CheckboxNodeUI, Ext.tree.TreeNodeUI, {
    /**
     * 重寫render()
     */
    render : function(bulkRender) {

        var n = this.node;
        /* 在未來的svn里,這個變成了n.ownerTree.innerCt.dom */
        var targetNode = n.parentNode ? n.parentNode.ui.getContainer() : n.ownerTree.container.dom;
        if (!this.rendered) {
            this.rendered = true;
            var a = n.attributes;

            // 為縮進添加緩存,在顯示非常大的樹的時候有幫助
            this.indentMarkup = "";
            if (n.parentNode) {
                // 根據(jù)父節(jié)點,計算子節(jié)點縮進
                this.indentMarkup = n.parentNode.ui.getChildIndent();
            }

            // modification,添加checkbox
            var buf = ['<li class="x-tree-node"><div class="x-tree-node-el ', n.attributes.cls,'">',
                '<span class="x-tree-node-indent">',this.indentMarkup,"</span>",
                '<img src="', this.emptyIcon, '" class="x-tree-ec-icon">',
                '<img src="', a.icon || this.emptyIcon, '" class="x-tree-node-icon',(a.icon ? " x-tree-node-inline-icon" : ""),(a.iconCls ? " "+a.iconCls : ""),'" unselectable="on">',
/*
                '<input class="l-tcb" type="checkbox" ', (a.checked ? "checked>" : '>'),
*/
                '<img src="',this.emptyIcon,'" class="',this.isAllChildrenChecked(),'">',

                '<a hidefocus="on" href="',a.href ? a.href : "#",'" ',
                 a.hrefTarget ? ' target="'+a.hrefTarget+'"' : "", '>',
                 '<span unselectable="on">',n.text,"</span></a></div>",
                '<ul class="x-tree-node-ct" style="display:none;"></ul>',
                "</li>"];

            if (bulkRender !== true && n.nextSibling && n.nextSibling.ui.getEl()) {
                this.wrap = Ext.DomHelper.insertHtml("beforeBegin", n.nextSibling.ui.getEl(), buf.join(""));
            } else {
                this.wrap = Ext.DomHelper.insertHtml("beforeEnd", targetNode, buf.join(""));
            }
            this.elNode = this.wrap.childNodes[0];
            this.ctNode = this.wrap.childNodes[1];
            var cs = this.elNode.childNodes;
            this.indentNode = cs[0];
            this.ecNode = cs[1];
            this.iconNode = cs[2];
            this.checkbox = cs[3]; // modification,添加checkbox
            this.checkboxImg = cs[3]; // 修改,添加仿造checkbox的圖片
            this.anchor = cs[4];
            this.textNode = cs[4].firstChild;
            if (a.qtip) {
                if (this.textNode.setAttributeNS) {
                    this.textNode.setAttributeNS("ext", "qtip", a.qtip);
                    if (a.qtipTitle) {
                        this.textNode.setAttributeNS("ext", "qtitle", a.qtipTitle);
                    }
                } else {
                    this.textNode.setAttribute("ext:qtip", a.qtip);
                    if (a.qtipTitle) {
                        this.textNode.setAttribute("ext:qtitle", a.qtipTitle);
                    }
                }
            } else if(a.qtipCfg) {
                a.qtipCfg.target = Ext.id(this.textNode);
                Ext.QuickTips.register(a.qtipCfg);
            }

            this.initEvents();

            // modification: 添加handlers,避免修改Ext.tree.TreeNodeUI
            Ext.fly(this.checkbox).on('click', this.check.createDelegate(this, [null]));
            n.on('dblclick', function(e) {
                if (this.isLeaf()) {
                    this.getUI().toggleCheck();
                }
            });

            if (!this.node.expanded) {
                this.updateExpandIcon();
            }
        } else {
            if (bulkRender === true) {
                targetNode.appendChild(this.wrap);
            }
        }
    }

    // 這個節(jié)點是否被選中了
    , checked : function() {
        // return this.checkbox.checked;
        return this.checkboxImg.className != "x-tree-node-checkbox-none";
    },

    // flag可能是:(NULL)以當前節(jié)點狀態(tài)為準判斷,ALL -> NONE -> SOME -> ALL
    // 否則按照設(shè)置的flag為準:SOME,ALL,NONE
    check : function(forParent, forChildren) {
        var flag = null;

        if (this.node.isLeaf) {
            flag = (this.checkboxImg.className == "x-tree-node-checkbox-all") ? "x-tree-node-checkbox-none" : "x-tree-node-checkbox-all";
        } else {
            if (this.checkboxImg.className == "x-tree-node-checkbox-all") {
                // 全部反選
                flag = "x-tree-node-checkbox-none";
            } else if (this.checkboxImg.className == "x-tree-node-checkbox-none") {
                // 全部選中
                flag = "x-tree-node-checkbox-some";
            } else {
                // 全部選中
                flag = "x-tree-node-checkbox-all";
            }
        }

        if (typeof forParent == "undefined" || forParent == null) {
            forParent = typeof this.node.parentNode != "undefined" && this.node.parentNode != null;
        }
        if (typeof forChildren == "undefined" || forChildren == null) {
            forChildren = !this.node.ifLeaf;
        }
        console.error(this);
        console.error(flag + "," + forParent + "," + forChildren);

        var n = this.node;
        var tree = n.getOwnerTree();
        var parentNode = n.parentNode;
        // 如果下級節(jié)點都尚未渲染過,就展開當前節(jié)點,并渲染下面的所有節(jié)點
        if (!n.isLeaf && !n.expanded && !n.childrenRendered) {
            n.expand(false, false, this.check.createDelegate(this, [forParent, forChildren]));
            return;
        }

        // 如果包含子節(jié)點
        if (forChildren && !n.isLeaf) {
            var cs = n.childNodes;
            for(var i = 0; i < cs.length; i++) {
                cs[i].getUI().checkChild(flag == "x-tree-node-checkbox-all");
            }
        }

        this.checkboxImg.className = "x-tree-node-checkbox-" + this.isAllChildrenChecked();
        if (this.checkboxImg.className == "x-tree-node-checkbox-none") {
            this.node.attributes.checked = false;
        } else {
            this.node.attributes.checked = true;
        }

        if (parentNode.getUI().checkParent) {
            parentNode.getUI().checkParent();

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜视频在线| 91精品国产综合久久久久久漫画| 成人sese在线| 日韩欧美成人激情| 午夜精彩视频在线观看不卡| 97久久超碰精品国产| 亚洲国产高清不卡| 美国一区二区三区在线播放| 欧美日韩成人综合在线一区二区| 国产精品久久久久久户外露出| 精一区二区三区| 欧美一区二区三区免费视频| 日韩成人av影视| 欧美人狂配大交3d怪物一区| 高清国产一区二区| 亚洲欧美精品午睡沙发| 91美女片黄在线观看91美女| 亚洲免费观看视频| 久久综合久久99| 国产乱人伦精品一区二区在线观看 | 欧美激情一区二区三区不卡| 欧美精品黑人性xxxx| 男人的天堂亚洲一区| 欧美成va人片在线观看| 成人精品视频一区二区三区| 久久国产精品第一页| 欧美国产成人精品| 欧美大片一区二区| 欧美一区二区三区四区久久| 在线精品观看国产| 青青草成人在线观看| 亚洲最大色网站| 91精品在线麻豆| 欧美怡红院视频| 狠狠色狠狠色合久久伊人| 综合网在线视频| 欧美猛男男办公室激情| 91久久精品一区二区三区| 日本不卡中文字幕| 日韩电影一区二区三区四区| 亚洲成a天堂v人片| 日本一区二区免费在线观看视频| 97精品国产露脸对白| 丰满少妇久久久久久久| 大尺度一区二区| 成人精品在线视频观看| 成人av网址在线观看| 99麻豆久久久国产精品免费 | 国产一区二区三区久久悠悠色av | 亚洲综合区在线| 精品国免费一区二区三区| 99re免费视频精品全部| av日韩在线网站| 色综合久久88色综合天天6| 久久成人羞羞网站| 美女精品自拍一二三四| 寂寞少妇一区二区三区| 国产精品一品二品| 成人黄色777网| 日本久久精品电影| 在线播放91灌醉迷j高跟美女| 欧美丰满美乳xxx高潮www| 日韩欧美你懂的| 2023国产精华国产精品| 国产精品丝袜久久久久久app| 日韩一区二区三区在线观看 | 在线国产亚洲欧美| 欧美日韩精品一区二区三区蜜桃| 欧美一区二区在线免费观看| 精品国产伦一区二区三区观看方式 | 欧美一级片免费看| 精品久久久久久最新网址| 日本一区二区免费在线| 亚洲一区视频在线| 久久66热偷产精品| 成人午夜av影视| 在线观看视频一区| 精品久久久久久久久久久久包黑料 | 国产精品影音先锋| 色综合色狠狠综合色| 欧美丰满高潮xxxx喷水动漫| 国产网红主播福利一区二区| 中文字幕亚洲区| 亚洲精品在线观| 成人欧美一区二区三区白人| 午夜精品久久久久久| 国产在线精品一区二区夜色| 91首页免费视频| 91精品欧美福利在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美久久高跟鞋激| 国产三级精品在线| 性久久久久久久久久久久| 国产传媒久久文化传媒| 国产aⅴ综合色| 欧美日韩视频一区二区| 91精品婷婷国产综合久久竹菊| 久久久蜜桃精品| 国产午夜精品理论片a级大结局| 亚洲免费在线视频一区 二区| 日av在线不卡| 91片黄在线观看| 2020国产精品| 天天av天天翘天天综合网色鬼国产 | 精品国产麻豆免费人成网站| 亚洲一区成人在线| 成人免费视频app| 日韩网站在线看片你懂的| 亚洲精品久久7777| 午夜精品久久久久久不卡8050| 成人av电影免费观看| 欧美大尺度电影在线| 亚洲不卡在线观看| 91视频你懂的| 中文子幕无线码一区tr| 久久av中文字幕片| 欧美一区午夜精品| 婷婷六月综合亚洲| 在线亚洲人成电影网站色www| 欧美激情中文不卡| 国产一区二区三区蝌蚪| 日韩欧美国产综合一区| 视频在线在亚洲| 国产乱码精品1区2区3区| 欧美一区二区三区的| 亚洲h精品动漫在线观看| 欧美中文字幕亚洲一区二区va在线| 中文字幕欧美国产| 国产99久久久久| 久久久久久一级片| 国产乱人伦偷精品视频不卡| 精品精品欲导航| 久久99精品久久久久| 日韩欧美卡一卡二| 紧缚捆绑精品一区二区| 久久久影院官网| 国产一区二区三区免费播放| 久久精品一区蜜桃臀影院| 国产精品一二三在| 国产亚洲精品久| 成人综合激情网| 国产精品视频一二| 99精品视频在线播放观看| 亚洲天堂久久久久久久| 色狠狠综合天天综合综合| 亚洲综合图片区| 欧美视频一区二区三区在线观看| 亚洲国产三级在线| 欧美精品乱码久久久久久| 日韩av电影免费观看高清完整版 | 精品久久久影院| 激情综合网av| 国产欧美精品区一区二区三区| 成人在线视频一区| 亚洲少妇最新在线视频| 欧美在线|欧美| 日韩不卡一区二区三区| 久久亚洲一级片| jizzjizzjizz欧美| 亚洲一区二区三区中文字幕在线| 欧美欧美欧美欧美首页| 精品一区二区国语对白| 国产欧美精品一区二区三区四区| 99久久精品免费精品国产| 亚洲一区二区三区爽爽爽爽爽| 91精品国产色综合久久| 国产麻豆日韩欧美久久| 亚洲天堂av一区| 8v天堂国产在线一区二区| 精品一区二区三区视频在线观看| 国产亚洲自拍一区| 在线视频中文字幕一区二区| 日本不卡视频在线观看| 国产欧美日韩在线看| 色噜噜狠狠色综合欧洲selulu| 日本欧美在线看| 国产精品日韩精品欧美在线| 在线观看免费一区| 国产麻豆精品视频| 亚洲在线视频免费观看| 精品99久久久久久| 在线观看视频一区| 国产精品资源在线观看| 亚洲午夜免费电影| 国产午夜久久久久| 欧美日韩在线播放一区| 国产高清亚洲一区| 天天综合色天天综合色h| 中文字幕国产一区| 欧美久久久久久久久久| 99r精品视频| 激情小说亚洲一区| 亚洲国产成人tv| 欧美激情一区二区在线| 在线成人午夜影院| 91久久一区二区| 国产白丝网站精品污在线入口| 午夜精品久久久久久久久久久| 亚洲欧洲美洲综合色网|