All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.resources.org.richfaces.datatable.js Maven / Gradle / Ivy

There is a newer version: 4.3.7.Final
Show newest version
(function ($, richfaces) {
    
        richfaces.ui = richfaces.ui || {};
        
        richfaces.ui.DataTable =  function(id, options) {
            $super.constructor.call(this,id);
            this.options = $.extend(this.options, options || {});
       	    this.attachToDom();
        	
        };
        
        richfaces.BaseComponent.extend(richfaces.ui.DataTable);
    	var $super = richfaces.ui.DataTable.$super;
    	
    	$.extend(richfaces.ui.DataTable, {
    		SORTING: "rich:sorting",
    		FILTERING: "rich:filtering",
    		SUBTABLE_SELECTOR:".rf-cst"
    	});
    	
    	$.extend(richfaces.ui.DataTable.prototype, ( function () {

    		var invoke = function(event, attributes) {
        		richfaces.ajax(this.id, event, {"parameters" : attributes});
        	};
        	
        	var createParameters = function(type, id, arg1, arg2) {
        		var parameters = {}; 
        		var key = this.id + type;
        		parameters[key] = (id + ":" + (arg1 || "") + ":" + arg2);
        		
        		var eventOptions = this.options.ajaxEventOption;
        		for (key in eventOptions) {
    				if(!parameters[key]) {
    					parameters[key] = eventOptions[key];
    				}
    			}
        		return parameters;
        	};
        	
        	        	
           	return {
           		
           		name : "RichFaces.ui.DataTable",
            	
            	sort: function(columnId, direction, isClear) {
           			invoke.call(this,null,createParameters.call(this,richfaces.ui.DataTable.SORTING, columnId, direction, isClear));
            	},
           	
				clearSorting: function() {
					this.sort("", "", true);
				},
				
            	filter: function(columnId, filterValue, isClear) {
            		invoke.call(this,null,createParameters.call(this,richfaces.ui.DataTable.FILTERING, columnId, filterValue, isClear));
            	},
            	
        		clearFiltering: function() {
        			this.filter("", "", true);
        		},
        		
            	expandAllSubTables: function() {
           			this.invokeOnSubTables('expand');
            	}, 
            	
            	collapseAllSubTables: function() {
            		this.invokeOnSubTables('collapse');
            	},
            	
            	switchSubTable: function(id) {
            		this.getSubTable(id).switchState();
            	}, 
            	
            	getSubTable: function(id) {
            		return richfaces.$(id);
            	}, 
            	
            	invokeOnSubTables: function(funcName) {
            		var elements = $(document.getElementById(this.id)).children(richfaces.ui.DataTable.SUBTABLE_SELECTOR);
            		var invokeOnComponent = this.invokeOnComponent;
            		elements.each(
            				function(){
            					if(this.firstChild && this.firstChild[richfaces.RICH_CONTAINER] && this.firstChild[richfaces.RICH_CONTAINER].component) {
            						var component = this.firstChild[richfaces.RICH_CONTAINER].component;
            						if(component instanceof RichFaces.ui.CollapsibleSubTable) {
                	        			invokeOnComponent(component, funcName);
                					}
            					}
            				}
            		);
            	}, 
            	
            	invokeOnSubTable: function(id, funcName) {
            		var subtable = this.getSubTable(id);
            		this.invokeOnComponent(subtable, funcName);
            	}, 
            	
            	invokeOnComponent: function(component, funcName) {
            		if(component) {
            			var func = component[funcName];
            			if(typeof func == 'function') {
            				func.call(component);
            			}
            		}
            	},
		destroy: function() {
			$super.destroy.call(this);
		}
            }
           	
        })());

})(jQuery, window.RichFaces);





© 2015 - 2025 Weber Informatics LLC | Privacy Policy