Показать сообщение отдельно
  #11 (permalink)  
Старый 31.08.2011, 17:02
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Сообщение от kadabrik Посмотреть сообщение
ksa дело говорит, храни все не в иерархическом, а в релиационном виде, алгоритмы будут проще, а скорость в разы выше.
Ребят нечего против не имею. В процессе реализации я получаю стабильно бесконечную рекурсию, которая должна идеально работать на C++ но на javascript отказывается, и очевидно что проблема в коттексте. Так что я не против уже отказатся от рекурсии, можно по подробнее как вы предлагаете это реализовать.
если делать дерево при помощи циклов, мне всё равно придётся прибегать к стекам и имулировать рекурсию.
Так что реаляционная модель этом плане интереснее так как сводится к двум таблицам.

Надо полагать что нужно составить два массива, один с колумнами с указанием родительских portlet.
другой с портлетами с указанием родительских column.

Как вы предлагаете реализовать решение ?

вот код на данный момент, но его результат бесконечная рекурсия.
function trackman (obj,type){      
    this.link=obj;    //ссылка на обьект для дальнейших мманипуляций
    this.name=$(obj).attr("id");   //id анализируемого обьекта           
    this.subject=[];                  //вложенные субьекты 
    if (type==1){ // если изучаем column, тоесть ищем портлеты                
        var finder=$(obj).find(">.portlet"); //ссылка на выборку портлетов
        var length=finder.length;             //Количество вложенных портлетов
                
        for (i=0;i<length;i++){                // перебор портлетов
            var thisobj= finder[i];                                                                     
            this.subject.push(new trackman(thisobj,-1)); //вызываем рекурсию
            
       }                                                  
       console.log(this);
                              
    } else {      //если изучаем portlet, тоесть ищем column                          
        
      var finder2=$(obj).find(".column:not(.column .column)");      
        var length2=finder2.length;
        
        for(var i2=0;i2<length2;i2++){     
            thisobj2= finder2[i];
            this.subject.push(new trackman(thisobj2,1));                                                                                   
        };                   
    }                          
}

function arrangerRefrash(){
var i=0;
jQuery.each($(".wrpage> .column"),function(){ // перебираем все column    
   //arrObj.push( new trackman (this,1));   
   arrObj[i]=new trackman (this,1)                                
   i=i+1;            
});
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 31.08.2011 в 17:34.
Ответить с цитированием