Files
luos/gulliver/js/form/core/pagedTable.js
2011-09-05 12:47:25 -04:00

244 lines
6.5 KiB
JavaScript
Executable File

/* PACKAGE : GULLIVER FORMS
*/
function G_PagedTable( )
{
this.id='';
this.name='';
this.event='';
this.element = null;
this.field='';
this.ajaxUri='';
this.currentOrder='';
this.currentFilter='';
this.currentPage=1;
this.totalRows=0;
this.rowsPerPage=25;
this.onInsertField='';
this.onDeleteField='';
this.afterDeleteField='';
this.onUpdateField='';
this.form;
var me = this;
function loadTable( func, uri ) {
var div = document.getElementById('table[' + me.id + ']');
var newContent=ajax_function(me.ajaxUri,func,uri);
if (div.outerHTML) {
div.outerHTML=div.outerHTML.split(div.innerHTML).join(newContent);
} else {
div.innerHTML=newContent;
}
var myScripts = div.getElementsByTagName('SCRIPT');
for(var rr=0; rr<myScripts.length ; rr++){
try {
if (myScripts[rr].innerHTML!=='')
if (window.execScript)
window.execScript( myScripts[rr].innerHTML, 'javascript' );
else
window.setTimeout( myScripts[rr].innerHTML, 0 );
} catch (e) {
alert(e.description);
}
}
eval("if (loadPopupMenu_"+me.id+")loadPopupMenu_"+me.id+"();");
delete div;
delete myScripts;
}
this.showHideField=function(field)
{
uri='field='+encodeURIComponent(field);
var ns=[],showIt=true;
for(var i=0,j=me.shownFields.length;i<j;i++){
if (me.shownFields[i]!==field) ns.push(me.shownFields[i]);
else showIt=false;
}
if (showIt) ns.push(field);
me.shownFields=ns;
loadTable('showHideField',uri);
}
this.updateField=function(field, title, width, height)
{
width = width || 500;
height= height || 200;
popupWindow(title,this.popupPage + '&field='+ encodeURIComponent(field), width, height);
//this.form=document.getElementById('xmlPopup');
}
this.deleteField=function(field)
{
}
this.doFilter = function ( searchForm )
{
var inputs,r,uri;
inputs=searchForm.elements;
me.currentFilter='';
for(r=0;r<inputs.length;r++)
if(inputs[r].value!='')
{
if (me.currentFilter!='') me.currentFilter+='&';
me.currentFilter+=inputs[r].id+'='+encodeURIComponent(inputs[r].value);
}
uri='order='+encodeURIComponent(me.currentOrder)
+'&page='+me.currentPage;
if(me.currentFilter!='')
uri=uri +'&filter='+encodeURIComponent(me.currentFilter);
loadTable('paint',uri);
/*var ee = document.getElementById('table[' + me.id + ']');
var newContent=ajax_function(me.ajaxUri,'paint',uri);
if (ee.outerHTML) {
ee.outerHTML=ee.outerHTML.split(ee.innerHTML).join(newContent);
} else {
ee.innerHTML=newContent;
}
delete ee;
delete newContent;*/
}
this.doFastSearch = function( criteria )
{
uri='fastSearch='+encodeURIComponent(criteria);
/*var ee = document.getElementById('table[' + me.id + ']');
var newContent=ajax_function(me.ajaxUri,'paint',uri);
if (ee.outerHTML) {
ee.outerHTML=ee.outerHTML.split(ee.innerHTML).join(newContent);
} else {
ee.innerHTML=newContent;
}
delete ee;
delete newContent;*/
loadTable('paint',uri);
}
this.doSort = function ( fieldName , orderDirection)
{
var inputs,r,uri;
if (orderDirection)
me.currentOrder = fieldName + '=' + orderDirection;
else
me.currentOrder = '';
uri='order='+encodeURIComponent(me.currentOrder)
+'&page='+me.currentPage;
if(me.currentFilter!='')
uri=uri +'&filter='+encodeURIComponent(me.currentFilter);
loadTable('paint',uri);
/*var ee = document.getElementById('table[' + me.id + ']');
var newContent=ajax_function(me.ajaxUri,'paint',uri);
if (ee.outerHTML)
ee.outerHTML=ee.outerHTML.split(ee.innerHTML).join(newContent);
else
ee.innerHTML=newContent;
delete ee;
delete newContent;*/
}
this.refresh = function()
{
loadTable('paint','');
/*var ee = document.getElementById('table[' + me.id + ']');
var newContent=ajax_function(me.ajaxUri,'paint','');
if (ee.outerHTML)
ee.outerHTML=ee.outerHTML.split(ee.innerHTML).join(newContent);
else
ee.innerHTML=newContent;
delete ee;
delete newContent;*/
}
this.doGoToPage = function( nextCurrentPage )
{
var inputs,r,uri;
me.currentPage = nextCurrentPage;
uri='order='+encodeURIComponent(me.currentOrder)
+'&page='+me.currentPage;
if(me.currentFilter!='')
uri=uri +'&filter='+encodeURIComponent(me.currentFilter);
var ee = document.getElementById('table[' + me.id + ']');
var newContent=ajax_function(me.ajaxUri,'paint',uri);
if (ee.outerHTML)
ee.outerHTML=ee.outerHTML.split(ee.innerHTML).join(newContent);
else
ee.innerHTML=newContent;
delete ee;
delete newContent;
}
function encodeData(data)
{
var enc;
enc='';
if (typeof(data)=='object')
for (u in data)
enc+='&'+u+'='+encodeURIComponent(data[u]);
return encodeURIComponent(enc);
}
}
function popup(url)
{
var h;
lleft=((document.body.clientWidth/2)+document.body.scrollLeft);
ltop=((document.body.clientHeight/2)+document.body.scrollTop);
panelPopup=leimnud.panel.create({w:popupWidth,h:popupHeight},{x:lleft,y:ltop,center:true},"popup",9,false,{
botones:{cerrar:true},
style:{
panel:{
border:"1px solid #000000",
color:"#000000",
backgroundColor:"#FEFEFE"
},
html:{
textAlign:"left",
padding:"5px",
paddingTop:"12px"
}
}
});
leimnud.panel.loader.begin(panelPopup);
uyh=new leimnud.rpc.xmlhttp({
method :"GET",
url : url,
callback :{
_function :function($)
{
leimnud.panel.loader.end($.arguments.obj);
dc=$dce("div");
leimnud.style.set(dc,{textAlign:"justify"});
dc.innerHTML=$.request.responseText;
leimnud.panel.html($.arguments.obj,dc);
leimnud.panel.sombra($.arguments.obj,{sombra:{color:"#000000",opacity:30}});
},
arguments:{obj:panelPopup}
}
});
}
//global function for paged table
function setRowClass (theRow, thePointerClass)
{
if (thePointerClass == '' || typeof(theRow.className) == 'undefined') {
return false;
}
if(globalRowSelected == null || globalRowSelected.id != theRow.id){
globalRowSelectedClass = theRow.className;
theRow.className = thePointerClass;
}
return true;
}
var globalRowSelected = null;
var globalRowSelectedClass;
function focusRow(o, className){
if (className == '' || typeof(o.className) == 'undefined') {
return false;
}
/* restore its previous class at the other object*/
if( globalRowSelected != null ){
globalRowSelected.className = globalRowSelectedClass;
}
globalRowSelected = o;
//globalRowSelectedClass = o.className;
o.className = className;
return true;
}