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

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

There is a newer version: 4.3.7.Final
Show newest version
(function ($, richfaces) {

	richfaces.ui = richfaces.ui || {};
  
	richfaces.ui.CollapsibleSubTable =  function(id, f, options) {
		this.id = id;
		this.stateInput = options.stateInput;
		this.optionsInput = options.optionsInput;
		this.expandMode = options.expandMode || richfaces.ui.CollapsibleSubTable.MODE_CLNT;
		this.eventOptions = options.eventOptions;
		this.formId = f;
		
		this.attachToDom();
    };
	
	$.extend(richfaces.ui.CollapsibleSubTable, {
		MODE_AJAX: "ajax",
		MODE_SRV: "server", 
		MODE_CLNT: "client",
		collapse: 0,
		expand: 1
	});

    	richfaces.BaseComponent.extend(richfaces.ui.CollapsibleSubTable);
    	var $super = richfaces.ui.CollapsibleSubTable.$super;

    $.extend(richfaces.ui.CollapsibleSubTable.prototype, (function () {
    	
    	var element = function() { 
    		//use parent tbody as parent dom elem
    		return $(document.getElementById(this.id)).parent();
    	};
    	
    	var stateInputElem = function() {
    		return $(document.getElementById(this.stateInput));
    	};
    	
    	var optionsInputElem = function() {
    		return $(document.getElementById(this.optionsInput));
    	};
    	
    	var ajax = function(e, options) {
			this.__switchState();
			richfaces.ajax(this.id, e, options);
		};
		
		var server = function(options) {
			this.__switchState();
			$(document.getElementById(this.formId)).submit();
		};
		
		var client = function(options) {
			if(this.isExpanded()) {
				this.collapse(options);
			} else {
				this.expand(options);
			}
		};		
				
     	  
    	return {
    		
    		name: "CollapsibleSubTable",

    		switchState: function(e, options) {
    			if(this.expandMode == richfaces.ui.CollapsibleSubTable.MODE_AJAX) {
           			ajax.call(this, e, this.eventOptions, options);
           		}else if(this.expandMode == richfaces.ui.CollapsibleSubTable.MODE_SRV) {
           			server.call(this, options);
           		}else if(this.expandMode == richfaces.ui.CollapsibleSubTable.MODE_CLNT) {
           			client.call(this, options);
           		}
    		}, 
    		
    		collapse: function(options) {
    			this.setState(richfaces.ui.CollapsibleSubTable.collapse);
    			element.call(this).hide();
    		}, 
    		
    		expand: function(options) {
    			this.setState(richfaces.ui.CollapsibleSubTable.expand);
    			element.call(this).show();
    		},
    		    		    		
    		isExpanded: function() {
    			return (parseInt(this.getState()) == richfaces.ui.CollapsibleSubTable.expand);
           	},
           
    		__switchState: function(options) {
    			var state = this.isExpanded() ? richfaces.ui.CollapsibleSubTable.collapse : richfaces.ui.CollapsibleSubTable.expand;
    			this.setState(state);
    		}, 
    		
    		getState: function() {
    			return stateInputElem.call(this).val();
    		},
    		
    		setState: function(state) {
    			stateInputElem.call(this).val(state)
    		},
    		
    		setOption: function(option) {
    			optionsInputElem.call(this).val(option);
    		}, 
    		
    		getMode: function() {
    			return this.expandMode;
    		},
		destroy: function() {
			$super.destroy.call(this);
		}
    	};

    })());

})(jQuery, window.RichFaces);




© 2015 - 2025 Weber Informatics LLC | Privacy Policy