Ticket #349: catwalk-js-multiple-joins-pages.2.diff

File catwalk-js-multiple-joins-pages.2.diff, 12.4 kB (added by bbockelm@math.unl.edu, 3 years ago)

Updated patch

  • turbogears/toolbox/catwalk/static/javascript/catwalk.js

    old new  
    22catwalk.MAX_HISTORY_LENGTH = 20; 
    33catwalk.currentPanel = 'structure'; 
    44catwalk.multipleJoinContext = {}; 
     5catwalk.join_page_info = {}; 
    56catwalk.history = []; 
    67catwalk.disclosedRelations = {}; 
    78catwalk.addHistory = function(entry) 
     
    288289catwalk.error_result = function(result) 
    289290{ 
    290291  if(!Widget.exists(result.error)) return false; 
    291   alert(result.error); 
    292292  return true; 
    293293} 
    294294catwalk.paging_footer = function(result) 
     
    336336               next_page 
    337337              ); 
    338338} 
     339catwalk.paging_join_footer = function(result) 
     340{ 
     341    var total = parseInt(result['total']); 
     342    var start = parseInt(result['start']); 
     343    var size = parseInt(result['page_size']); 
     344    if(total <= size ) return ''; 
     345    var page_number = parseInt( start / size + 1 ); 
     346    var total_pages =  parseInt( total/size +1); 
     347    var previous_page = IMG({'border':'0','style':'margin-right:5px','align':'absbottom', 
     348                                'src':'/tg_static/images/transp.png'} ); 
     349    var next_page = previous_page; 
     350    var next_start = start + size; 
     351    var previous_start = start - size; 
     352    if(page_number > 1) 
     353    { 
     354        previous_page = A({ 
     355                           'href':"javascript:catwalk.retrieveJoins('"+ result['objectName'] +"','" + result['id'] + "','" + result['joinName'] + "','" + result['joinType'] + "','" + result['joinObjectName'] + "','" + previous_start +"')", 
     356                           'title':'Previous page', 
     357                           'class':'discloser' 
     358                           }, 
     359                           IMG({'border':'0','width':'15','style':'margin-right:5px','align':'absbottom', 
     360                                'src':'/tg_static/images/arrow_left.png'} ) 
     361                          ); 
     362    } 
     363    if(page_number < total_pages) 
     364    { 
     365        next_page = A({ 
     366                           'href':"javascript:catwalk.retrieveJoins('"+ result['objectName'] +"','" + result['id'] + "','" + result['joinName'] + "','" + result['joinType'] + "','" + result['joinObjectName'] + "','" + next_start +"')", 
     367                           'title':'Next page', 
     368                           'class':'discloser' 
     369                           }, 
     370                           IMG({'border':'0','style':'margin-right:5px','align':'absbottom', 
     371                                'src':'/tg_static/images/arrow_up.png'} ) 
     372                          ); 
     373    } 
     374    return DIV({'style':'font-size:10px;margin:6px;'}, 
     375               previous_page, 
     376               ' ', 
     377               'Page ', 
     378               catwalk.join_page_selector(page_number,total_pages,size,result['objectName'], result['id'], result['joinName'], result['joinType'], result['joinObjectName']) , 
     379               '  of '+ total_pages, 
     380               ' ', 
     381               next_page 
     382              ); 
     383} 
    339384catwalk.page_size = function(size,object_name) 
    340385{ 
    341386    var page_size =  createDOM('SELECT',{'style':'font-size:10px', 
     
    361406    } 
    362407    return page_selector; 
    363408} 
     409catwalk.join_page_selector = function(page_number,total_pages,size,object_name, id, joinName, joinType, joinObjectName) 
     410{ 
     411    var page_selector =  createDOM('SELECT',{'style':'font-size:10px', 
     412                                             'onchange':'catwalk.update_join_page(this,"'+ object_name + '","' + id + '","' + joinName + '","' + joinType + '","' + joinObjectName+ '")'}); 
     413    for(var i=0;i < total_pages;i++) 
     414    { 
     415        var props ={'value':(i*size)}; 
     416        if((i+1) == page_number) props['selected'] ='selected'; 
     417        page_selector.appendChild(createDOM('OPTION',props,(i+1))); 
     418    } 
     419    return page_selector; 
     420} 
    364421catwalk.update_page_size = function(list,object_name) 
    365422{ 
    366423    return; 
     
    370427    var page = list.options[list.selectedIndex].value; 
    371428    catwalk.retrieveValues(object_name,page); 
    372429} 
    373 catwalk.go_to_page = function(page
     430catwalk.update_join_page = function( list, object_name, id, joinName, joinType, joinObjectName
    374431{ 
    375     alert('og to page '+ page); 
     432    var page = list.options[list.selectedIndex].value; 
     433    catwalk.retrieveJoins(object_name, id, joinName, joinType, joinObjectName, page ) 
    376434} 
    377435catwalk.renderValues = function(result) 
    378436{ 
     
    681739                          ); 
    682740  replaceChildNodes('content',formEdit); 
    683741  catwalk.menuSelect('browse'); 
     742  catwalk.checkDisclosedRelations(objectName,result['id']); 
    684743  catwalk.addHistory({'view':'display','objectName':objectName,'id':result['id']}); 
    685744  catwalk.hightlightObject(objectName); 
    686   catwalk.checkDisclosedRelations(objectName,result['id']); 
    687745} 
    688746catwalk.checkDisclosedRelations = function(objectName,id) 
    689747{ 
     
    699757                              ctx['id'], 
    700758                              ctx['joinName'], 
    701759                              ctx['joinType'], 
    702                               ctx['joinObjectName']);  
     760                              ctx['joinObjectName'], 
     761                              ctx['start']);  
    703762    } 
    704763} 
    705764catwalk.retrieveManageRelatedJoins = function(objectName,id,joinName,relatedObjectName) 
     
    734793  var allJoins = createDOM('SELECT',{'id':'select_add_'+ results['join'],'size':'10','style':'width:225px','multiple':'multiple'}, 
    735794                                map(catwalk.renderOptions, catwalk.optionsForJoins(results['allJoins']['rows']) )  
    736795                           ); 
    737   var params = [results['hostObject'],results['id'],results['join'],results['joinType'],results['joinObjectName']]; 
     796  var params = [results['hostObject'],results['id'],results['join'],results['joinType'],results['joinObjectName'],0]; 
    738797  var joinsTable = TABLE(null, 
    739798                         TBODY(null, 
    740799                               TR(null, 
     
    787846{ 
    788847    catwalk.disclosedRelations[joinName]['visible'] = !catwalk.disclosedRelations[joinName]['visible']; 
    789848} 
    790 catwalk.retrieveJoins= function(objectName,id,joinName,joinType,joinObjectName
     849catwalk.retrieveJoins= function(objectName,id,joinName,joinType,joinObjectName, page
    791850{ 
    792851  var u = 'joins?objectName='+ objectName +'&id='+ id; 
    793852  u+='&join='+ joinName +'&joinType='+ joinType +'&joinObjectName='+ joinObjectName; 
     853  u += '&start=' + page; 
    794854  catwalk.addDisclosedRelation(joinName,{'objectName':objectName, 
    795855                                         'visible':true, 
    796856                                         'id':id, 
    797857                                         'joinName':joinName, 
    798858                                         'joinType':joinType, 
    799                                          'joinObjectName':joinObjectName}); 
     859                                         'joinObjectName':joinObjectName, 
     860                                         'start':page}); 
    800861  var e = loadJSONDoc(u); 
    801862  e.addCallback(catwalk.renderJoins); 
    802863} 
     
    821882  if(catwalk.error_result(results)) return; 
    822883  var params = [results['hostObject'], results['id'], 
    823884                results['join'],results['joinType'], 
    824                 results['joinObjectName'] 
     885                results['joinObjectName'],results['start'] 
    825886               ]; 
    826887 
    827888  
     
    831892               'actions':{ 
    832893                          'sort':'', 
    833894                          'column_management':{'function':'catwalk.updateColumnsJoinView','params':params}, 
    834                           'select':{'function':'catwalk.retrieveDisplayObject','params':[results['objectName']]}, 
    835                           'edit':{'function':'catwalk.retrieveFormEdit','params':[results['objectName']]}, 
    836                           'remove':{'function':'catwalk.retrieveRemove','params':[results['objectName']]} 
     895                          'select':{'function':'catwalk.retrieveDisplayObject','params':[results['joinObjectName']]}, 
     896                          'edit':{'function':'catwalk.retrieveFormEdit','params':[results['joinObjectName']]}, 
     897                          'remove':{'function':'catwalk.retrieveRemove','params':[results['joinObjectName']]} 
    837898                          } 
    838899             }; 
    839900  if(results['joinType']=='SORelatedJoin') data['actions']['remove']=''; 
    840901  var grid = (results['rows'].length >0)? Widget.grid.render(results['join'],data):''; 
    841902  var r = results; 
     903  catwalk.join_page_info = { 'start':r['start'], 'page_size':r['page_size'], 'total':r['total'] }; 
    842904  if(results['joinType']=='SORelatedJoin') 
    843905  { 
    844     grid = DIV(null,grid,catwalk.renderManageRelatedControl(r['hostObject'],r['id'],r['join'],r['joinObjectName'])); 
     906    grid = DIV(null,grid,catwalk.renderManageRelatedControl(r['hostObject'],r['id'],r['join'], r['joinType'], r['joinObjectName'])); 
    845907  } 
    846908  else 
    847909  { 
    848910    //grid = DIV(null,grid,catwalk.renderAddMultipleJoinsControl(r['joinObjectName'])); 
    849     grid = DIV(null,grid,catwalk.renderAddMultipleJoinsControl(r['hostObject'],r['id'],r['joinObjectName'])); 
     911    var footer = catwalk.paging_join_footer( results ); 
     912    grid = DIV(null,grid,footer,catwalk.renderAddMultipleJoinsControl(r['hostObject'],r['id'], r['joinName'], r['joinType'], r['joinObjectName'])); 
    850913  } 
    851914  replaceChildNodes('grid_'+ results['join'],grid); 
    852915 
     
    866929  var e = loadJSONDoc(u); 
    867930  e.addCallback(catwalk.renderValues); 
    868931} 
    869 catwalk.updateColumnsJoinView= function(objectName,id,join,joinType,joinObjectName,column
     932catwalk.updateColumnsJoinView= function(objectName,id,join,joinType,joinObjectName,start,column
    870933{ 
    871934  var u = 'updateColumnsJoinView?objectName='+ objectName +'&id='+ id; 
    872935  u+='&join='+ join +'&joinType='+ joinType +'&joinObjectName='+ joinObjectName; 
    873   u+='&column='+ column
     936  u+='&column='+ column + '&start=' + start
    874937  var e = loadJSONDoc(u); 
    875938  e.addCallback(catwalk.renderJoins); 
    876939} 
    877 catwalk.addMultipleJoin = function(hostObject,id,otherClassName
     940catwalk.addMultipleJoin = function( hostObject, id, joinName, joinType, otherClassName
    878941{ 
    879     catwalk.multipleJoinContext = {'hostObject':hostObject,'id':id}; 
     942    var total = catwalk.join_page_info['total']; 
     943    var last_page = total - (total % catwalk.join_page_info['page_size']); 
     944    catwalk.addDisclosedRelation(joinName,{'objectName':hostObject, 
     945                                         'visible':true, 
     946                                         'id':id, 
     947                                         'joinName':joinName, 
     948                                         'joinType':joinType, 
     949                                         'joinObjectName':otherClassName, 
     950                                         'start':last_page}); 
     951    catwalk.multipleJoinContext = {'hostObject':hostObject,'id':id }; 
    880952    catwalk.retrieveFormAdd(otherClassName); 
    881953} 
    882 catwalk.renderAddMultipleJoinsControl = function(hostObject,id,otherClassName) 
     954catwalk.renderAddMultipleJoinsControl = function( hostObject, id, joinName, joinType, otherClassName) 
    883955{ 
    884956  return Widget.iconLabel.render('add','Add Multiple Join', 
    885                                  'javascript:catwalk.addMultipleJoin',[hostObject,id,otherClassName]); 
     957                                 'javascript:catwalk.addMultipleJoin',[hostObject, id, joinName, joinType, otherClassName]); 
    886958} 
    887 catwalk.renderManageRelatedControl = function(objectName,id,joinMethodName,otherClassName) 
     959catwalk.renderManageRelatedControl = function(objectName,id,joinMethodName,joinType,otherClassName) 
    888960{ 
     961  var total = catwalk.join_page_info['total']; 
     962  var last_page = total - (total % catwalk.join_page_info['page_size']); 
     963  catwalk.addDisclosedRelation(joinName,{'joinObjectName':objectName, 
     964                                         'visible':true, 
     965                                         'id':id, 
     966                                         'joinName':joinMethodName, 
     967                                         'joinType':joinType, 
     968                                         'objectName':otherClassName, 
     969                                         'start':last_page}); 
    889970  return Widget.iconLabel.render('edit','Manage Relations', 
    890971                                 'javascript:catwalk.retrieveManageRelatedJoins', 
    891972                                 [objectName,id,joinMethodName,otherClassName]); 
     
    897978  { 
    898979    var edit = ''; 
    899980    var action = Widget.renderHandler('javascript:catwalk.retrieveJoins', 
    900                                       [column.objectName,column.id,column.columnName,column.type,column.join
     981                                      [column.objectName,column.id,column.columnName,column.type,column.join,0
    901982                                     ); 
    902983    return TR(null, TD({'colspan':'2'}, 
    903984                        SPAN({'id':'disclose_'+ column.columnName},