Ignore:
Timestamp:
Sep 9, 2014 4:14:10 PM (11 years ago)
Author:
dungnv
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • pro-bachkim-filespace/sourcecode/assets/js/grid.js

    r66 r70  
    88                       
    99                        var oContainer = this;
     10                        var documentBoundEvent = false;
     11                        var posTopArray = [];
     12                        var posLeftArray = [];
     13                        var self = this;
    1014                       
    1115                        var createNode = function (node) {
     
    2125                                var inputID = $('<input />',{'class':'id', type:'hidden',value:node.item.id});
    2226                                var inputName = $('<input />',{'class':'name',type:'hidden',value:node.item.name});
    23                                 var inputType = $('<input />',{'class':'type',type:'hidden',value:type});
     27                                var inputParent = $('<input />',{'class':'parentID',type:'hidden',value:node.item.parentID});
     28                                var inputType = $('<input />',{'class':'type',type:'hidden',value:type});                               
    2429                               
    2530                                var a = $('<a></a>',{id: node.item.id,href: '#',rel: node.item.name,text: node.item.name});
    26                                 var divLink = $('<div></div>',{'class':'file-name'}).append(a,inputID,inputName,inputType);
    27                                 var li = $('<li></li>',{'class':'vscell'}).append(div, divLink);
     31                                var divLink = $('<div></div>',{'class':'file-name'}).append(a,inputID,inputName,inputParent,inputType);
     32                                var li = $('<li></li>',{'class':'vscell',id:type+node.item.id}).append(div, divLink);
    2833                               
    2934                                bindNodeEvents(li);
     
    3338                       
    3439                        var bindNodeEvents = function (node) {
    35                                 $(node).bind("click", function (e){
    36                                         if(e.button == 0)nodeClick(this,e);return false;});
     40                                var disabledItemsList = null;
     41                                var menuName = '';
     42                               
     43                                var type = $(node).find('> DIV[class^="file-name"] > INPUT[type="hidden"][class^="type"]').val();
     44                               
     45                                $(node)
     46                                        .bind("click", function (e){nodeClick(this,e);return false;})
     47                                        .bind("dblclick", function (e){nodeDblClick(this,e);return false;})
    3748                        }
    3849                       
     
    4556                                }
    4657                                else if (event.shiftKey) {
    47                                         var firstItem = $(oContainer).find('> UL > LI > DIV[class^="icon-"][class$="selected"]:first-child').parent();
    48                                         var aryNode = $(oContainer).find('> UL > LI > DIV[class^="icon-"]').parent();
     58                                        var firstItem = $(oContainer).find('LI.selected');
     59                                        var aryNode = $(oContainer).find('> UL > LI');
    4960                                        var start = aryNode.index(firstItem);
    5061                                        var finish = aryNode.index(node);
     
    5869                       
    5970                        var nodeDblClick = function (node) {
    60                                
     71                                var nodeObj = {id:$(node).find('> DIV[class^="file-name"] > INPUT[type="hidden"][class^="id"]').val(),
     72                                                        name: $(node).find('> DIV[class^="file-name"] > INPUT[type="hidden"][class^="name"]').val(),
     73                                                        parentID: $(node).find('> DIV[class^="file-name"] > INPUT[type="hidden"][class^="parentID"]').val(),
     74                                                        minetype: $(node).find('> DIV[class^="file-name"] > INPUT[type="hidden"][class^="type"]').val()};
     75                               
     76                                o.manager.gridNodeDblClick(nodeObj);                           
    6177                        }
    6278                       
    6379                        var hightlightNode = function (node) {
    64                                 $(node).find('> DIV').addClass('selected');
     80                                $(node).addClass('selected');
    6581                        }
    6682                       
    6783                        var isHightLight = function (node) {
    68                                 return $(node).find('> DIV').hasClass('selected');
     84                                return $(node).hasClass('selected');
    6985                        }
    7086                       
    7187                        var clearAllHightLightNode = function () {
    72                                 $(oContainer).find('> UL > LI > DIV').removeClass('selected');
     88                                $(oContainer).find('> UL > LI').removeClass('selected');
    7389                        }
    7490                       
    7591                        var clearHightLightNode = function (node) {
    76                                 $(node).find('> DIV').removeClass('selected');
     92                                $(node).removeClass('selected');
     93                        }
     94                       
     95                        var hightLightAllNode = function () {
     96                                clearAllHightLightNode();
     97                                $(oContainer).find('> UL > LI').addClass('selected');
     98                        }
     99                       
     100                        var getAllHightLightNode = function () {
     101                                return $(oContainer).find('> UL > LI.selected');
    77102                        }
    78103                       
    79104                        var initGrid = function () {
     105                                $(oContainer).attr('unselectable','on')
     106                                     .css({'-moz-user-select':'-moz-none',
     107                                           '-moz-user-select':'none',
     108                                           '-o-user-select':'none',
     109                                           '-khtml-user-select':'none',
     110                                           '-webkit-user-select':'none',
     111                                           '-ms-user-select':'none',
     112                                           'user-select':'none'
     113                                     }).bind('selectstart', function(){ return false;
     114                                     }).bind('click', function(e){clearAllHightLightNode(); return false; });
     115
    80116                                var ul = $('<ul></ul>',{'class':'vsgrid'});
     117                               
    81118                                var parentDirID = o.manager.getTreeCurrentNode();
    82119                                if (o.data.DIRECTORIES.length > 0) {
     
    100137                                $(oContainer).find ('UL').remove();
    101138                                $(oContainer).append(ul);
    102                                
    103                                 $(oContainer).attr('unselectable','on')
    104                              .css({'-moz-user-select':'-moz-none',
    105                                    '-moz-user-select':'none',
    106                                    '-o-user-select':'none',
    107                                    '-khtml-user-select':'none',
    108                                    '-webkit-user-select':'none',
    109                                    '-ms-user-select':'none',
    110                                    'user-select':'none'
    111                              }).bind('selectstart', function(){ return false;
    112                              }).bind('click', function(){ clearAllHightLightNode(); return false; });
    113                         }
     139                        }
     140
     141                        var destroyNode = function (node) {
     142                                var nodeID = $(node).find('> DIV[class^="file-name"] > INPUT[type="hidden"][class^="id"]').val();
     143                                var nodeType = $(node).find('> DIV[class^="file-name"] > INPUT[type="hidden"][class^="type"]').val();
     144                                $(node).remove();                               
     145                        }
     146
     147                        /******************
     148                         * RENAME - START *
     149                         ******************/
     150                        var renameInit = function (node) {                             
     151                                var editor = $('<input />',{'class':'rename', type: 'text', value:$(node).text()});
     152                                $(editor).bind('focusout', function(e){renameCancel(node)});
     153                                $(editor).bind('keydown', function(e){
     154                                                var keycode = (e.keyCode ? e.keyCode : e.which);
     155                                                if (keycode == '27') {
     156                                                        renameCancel(node);
     157                                                }else if(keycode == '13') renameComplete(node);
     158                                                e.stopPropagation();
     159                                        });
     160                               
     161                                $(node).text('');
     162                                $(node).append(editor);
     163                                $(editor).focus();
     164                                $(editor).select();
     165                        }
     166                       
     167                        var renameCancel = function (node) {
     168                                var nodeID = $(node).parent().find('> INPUT[type="hidden"][class^="id"]').val();
     169                                var nodeType = $(node).parent().find('> INPUT[type="hidden"][class^="type"]').val();
     170                                var nodeName = $(node).parent().find('> INPUT[type="hidden"][class^="name"]').val();
     171                                var nodeParent = $(node).parent().find('> INPUT[type="hidden"][class^="parentID"]').val();
     172                                var itemIndex =  o.manager.searchItemByID(nodeID, nodeType == 'directory' ? nodeType:'file');
     173
     174                                $(node).find('>INPUT').remove();
     175                                $(node).text(nodeName);
     176                                $(node).select();
     177                        }
     178                       
     179                        var renameComplete = function (node) {
     180                                var editor = $(node).find('>INPUT');
     181                                var dirID = $(node).attr('id');
     182                                var newName = $(editor).val();
     183                                $(node).attr('rel', newName);
     184                                $(node).text(newName);
     185                                $(node).find('>INPUT').remove();
     186
     187                                /*treeNodes[dirID].name = newName;
     188                                updateData(dirID, 'rename');*/
     189                        }
     190                        /******************
     191                         * RENAME - END *
     192                         ******************/
    114193                       
    115194                        this.reloadGrid = function (nodeID) {
     
    122201                       
    123202                        this.rename = function (item) {
    124                                 console.log('rename');
    125                                 console.log(item);
    126                         }
    127                        
    128                         this.deletion = function (id) {
    129                                
     203                                /*console.log('rename');
     204                                console.log(item);*/
     205                        }
     206                       
     207                        this.createNode = function (node) {
     208                                var node = createNode ({item: node});
     209                                $(oContainer).find ('UL').append(node);
     210                        }
     211                       
     212                        this.deletion = function (id, type) {
     213                                destroyNode($(oContainer).find('LI#'+type+id));
     214                        }
     215
     216                        this.rename = function (key) {
     217                                var hightlightedNodes = self.getHightLightItem();
     218                                if ($(hightlightedNodes).length == 0 || $(hightlightedNodes).length > 1) return false;
     219
     220                                var nodeID = $(hightlightedNodes).get(0).id;
     221                                var nodeType = $(hightlightedNodes).get(0).type;
     222
     223                                var selectedNode = $(oContainer).find('LI#' + nodeType + nodeID + '.vscell > DIV.file-name > A#' + nodeID);
     224                                if (key == 113) {
     225                                        renameInit(selectedNode);
     226                                }
     227                                else if (key == 27) {
     228                                        renameCancel(selectedNode);
     229                                }
     230
     231                                return true;
     232                        }                       
     233                       
     234                        this.getHightLightItem = function () {
     235                                var nodeSelected = $(oContainer).find('LI.vscell.selected');                           
     236                                var items = [];
     237                               
     238                                if ($(nodeSelected).length > 0) {
     239                                        $(nodeSelected).each (function(i,o) {
     240                                                        var item = {
     241                                                                id: $(this).find('> DIV.file-name > INPUT[type="hidden"][class^="id"]').val(),
     242                                                                name: $(this).find('> DIV.file-name > INPUT[type="hidden"][class^="name"]').val(),
     243                                                                parentID: $(this).find('> DIV.file-name > INPUT[type="hidden"][class^="parentID"]').val(),
     244                                                                type: $(this).find('> DIV.file-name > INPUT[type="hidden"][class^="type"]').val()
     245                                                        };
     246                                                        items.push(item);
     247                                                });
     248                                }
     249                               
     250                                return items;
     251                        }
     252
     253                        this.selectAllNode = function () {
     254                                hightLightAllNode();
    130255                        }
    131256                       
Note: See TracChangeset for help on using the changeset viewer.