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) |
|---|
-
turbogears/toolbox/catwalk/static/javascript/catwalk.js
old new 2 2 catwalk.MAX_HISTORY_LENGTH = 20; 3 3 catwalk.currentPanel = 'structure'; 4 4 catwalk.multipleJoinContext = {}; 5 catwalk.join_page_info = {}; 5 6 catwalk.history = []; 6 7 catwalk.disclosedRelations = {}; 7 8 catwalk.addHistory = function(entry) … … 288 289 catwalk.error_result = function(result) 289 290 { 290 291 if(!Widget.exists(result.error)) return false; 291 alert(result.error);292 292 return true; 293 293 } 294 294 catwalk.paging_footer = function(result) … … 336 336 next_page 337 337 ); 338 338 } 339 catwalk.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 } 339 384 catwalk.page_size = function(size,object_name) 340 385 { 341 386 var page_size = createDOM('SELECT',{'style':'font-size:10px', … … 361 406 } 362 407 return page_selector; 363 408 } 409 catwalk.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 } 364 421 catwalk.update_page_size = function(list,object_name) 365 422 { 366 423 return; … … 370 427 var page = list.options[list.selectedIndex].value; 371 428 catwalk.retrieveValues(object_name,page); 372 429 } 373 catwalk. go_to_page = function(page)430 catwalk.update_join_page = function( list, object_name, id, joinName, joinType, joinObjectName ) 374 431 { 375 alert('og to page '+ page); 432 var page = list.options[list.selectedIndex].value; 433 catwalk.retrieveJoins(object_name, id, joinName, joinType, joinObjectName, page ) 376 434 } 377 435 catwalk.renderValues = function(result) 378 436 { … … 681 739 ); 682 740 replaceChildNodes('content',formEdit); 683 741 catwalk.menuSelect('browse'); 742 catwalk.checkDisclosedRelations(objectName,result['id']); 684 743 catwalk.addHistory({'view':'display','objectName':objectName,'id':result['id']}); 685 744 catwalk.hightlightObject(objectName); 686 catwalk.checkDisclosedRelations(objectName,result['id']);687 745 } 688 746 catwalk.checkDisclosedRelations = function(objectName,id) 689 747 { … … 699 757 ctx['id'], 700 758 ctx['joinName'], 701 759 ctx['joinType'], 702 ctx['joinObjectName']); 760 ctx['joinObjectName'], 761 ctx['start']); 703 762 } 704 763 } 705 764 catwalk.retrieveManageRelatedJoins = function(objectName,id,joinName,relatedObjectName) … … 734 793 var allJoins = createDOM('SELECT',{'id':'select_add_'+ results['join'],'size':'10','style':'width:225px','multiple':'multiple'}, 735 794 map(catwalk.renderOptions, catwalk.optionsForJoins(results['allJoins']['rows']) ) 736 795 ); 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]; 738 797 var joinsTable = TABLE(null, 739 798 TBODY(null, 740 799 TR(null, … … 787 846 { 788 847 catwalk.disclosedRelations[joinName]['visible'] = !catwalk.disclosedRelations[joinName]['visible']; 789 848 } 790 catwalk.retrieveJoins= function(objectName,id,joinName,joinType,joinObjectName )849 catwalk.retrieveJoins= function(objectName,id,joinName,joinType,joinObjectName, page) 791 850 { 792 851 var u = 'joins?objectName='+ objectName +'&id='+ id; 793 852 u+='&join='+ joinName +'&joinType='+ joinType +'&joinObjectName='+ joinObjectName; 853 u += '&start=' + page; 794 854 catwalk.addDisclosedRelation(joinName,{'objectName':objectName, 795 855 'visible':true, 796 856 'id':id, 797 857 'joinName':joinName, 798 858 'joinType':joinType, 799 'joinObjectName':joinObjectName}); 859 'joinObjectName':joinObjectName, 860 'start':page}); 800 861 var e = loadJSONDoc(u); 801 862 e.addCallback(catwalk.renderJoins); 802 863 } … … 821 882 if(catwalk.error_result(results)) return; 822 883 var params = [results['hostObject'], results['id'], 823 884 results['join'],results['joinType'], 824 results['joinObjectName'] 885 results['joinObjectName'],results['start'] 825 886 ]; 826 887 827 888 … … 831 892 'actions':{ 832 893 'sort':'', 833 894 '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']]} 837 898 } 838 899 }; 839 900 if(results['joinType']=='SORelatedJoin') data['actions']['remove']=''; 840 901 var grid = (results['rows'].length >0)? Widget.grid.render(results['join'],data):''; 841 902 var r = results; 903 catwalk.join_page_info = { 'start':r['start'], 'page_size':r['page_size'], 'total':r['total'] }; 842 904 if(results['joinType']=='SORelatedJoin') 843 905 { 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'])); 845 907 } 846 908 else 847 909 { 848 910 //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'])); 850 913 } 851 914 replaceChildNodes('grid_'+ results['join'],grid); 852 915 … … 866 929 var e = loadJSONDoc(u); 867 930 e.addCallback(catwalk.renderValues); 868 931 } 869 catwalk.updateColumnsJoinView= function(objectName,id,join,joinType,joinObjectName, column)932 catwalk.updateColumnsJoinView= function(objectName,id,join,joinType,joinObjectName,start,column ) 870 933 { 871 934 var u = 'updateColumnsJoinView?objectName='+ objectName +'&id='+ id; 872 935 u+='&join='+ join +'&joinType='+ joinType +'&joinObjectName='+ joinObjectName; 873 u+='&column='+ column ;936 u+='&column='+ column + '&start=' + start; 874 937 var e = loadJSONDoc(u); 875 938 e.addCallback(catwalk.renderJoins); 876 939 } 877 catwalk.addMultipleJoin = function( hostObject,id,otherClassName)940 catwalk.addMultipleJoin = function( hostObject, id, joinName, joinType, otherClassName ) 878 941 { 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 }; 880 952 catwalk.retrieveFormAdd(otherClassName); 881 953 } 882 catwalk.renderAddMultipleJoinsControl = function( hostObject,id,otherClassName)954 catwalk.renderAddMultipleJoinsControl = function( hostObject, id, joinName, joinType, otherClassName) 883 955 { 884 956 return Widget.iconLabel.render('add','Add Multiple Join', 885 'javascript:catwalk.addMultipleJoin',[hostObject, id,otherClassName]);957 'javascript:catwalk.addMultipleJoin',[hostObject, id, joinName, joinType, otherClassName]); 886 958 } 887 catwalk.renderManageRelatedControl = function(objectName,id,joinMethodName, otherClassName)959 catwalk.renderManageRelatedControl = function(objectName,id,joinMethodName,joinType,otherClassName) 888 960 { 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}); 889 970 return Widget.iconLabel.render('edit','Manage Relations', 890 971 'javascript:catwalk.retrieveManageRelatedJoins', 891 972 [objectName,id,joinMethodName,otherClassName]); … … 897 978 { 898 979 var edit = ''; 899 980 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] 901 982 ); 902 983 return TR(null, TD({'colspan':'2'}, 903 984 SPAN({'id':'disclose_'+ column.columnName},