83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| Product Name: dhtmlxSuite 
 | |
| Version: 5.2.0 
 | |
| Edition: Professional 
 | |
| License: content of this file is covered by DHTMLX Commercial or Enterprise license. Usage without proper license is prohibited. To obtain it contact sales@dhtmlx.com
 | |
| Copyright UAB Dinamenta http://www.dhtmlx.com
 | |
| */
 | |
| 
 | |
| /**
 | |
| *	@desc: enable pop up menu which allows hidding/showing columns
 | |
| *	@edition: Professional
 | |
| *	@type: public
 | |
| */
 | |
| dhtmlXGridObject.prototype.enableHeaderMenu=function(columns)
 | |
| {
 | |
| 	if (!window.dhtmlXMenuObject)
 | |
| 		return dhtmlx.message("You need to include DHTMLX Menu");
 | |
| 
 | |
| 	if (!this._header_menu){
 | |
| 		var menu = this._header_menu = new dhtmlXMenuObject();
 | |
| 		menu.renderAsContextMenu();
 | |
| 
 | |
| 		var that=this;
 | |
| 		menu.attachEvent("onBeforeContextMenu", function(){
 | |
| 			that._showHContext(columns);
 | |
| 			return true;
 | |
| 		});
 | |
| 		menu.attachEvent("onClick", function(id){
 | |
| 			var checked = this.getCheckboxState(id);
 | |
| 
 | |
| 			var row = that.hdr.rows[1];
 | |
| 			for (var j=0; j<row.cells.length; j++){
 | |
| 				var c = row.cells[j];
 | |
| 				if (c._cellIndexS == id){
 | |
| 					var len = c.colSpan || 1;
 | |
| 					for (var i=0; i<len; i++)
 | |
| 						that.setColumnHidden(id*1+i,!checked);
 | |
| 				}
 | |
| 			}
 | |
| 		});
 | |
| 
 | |
| 		this.attachEvent("onInit",function(){
 | |
| 			menu.addContextZone(this.hdr);
 | |
| 		});
 | |
| 		if (this.hdr.rows.length) this.callEvent("onInit",[]);
 | |
| 	}
 | |
| };
 | |
| 
 | |
| dhtmlXGridObject.prototype.getHeaderMenu=function(columns)
 | |
| {
 | |
| 	return this._header_menu;
 | |
| };
 | |
| 
 | |
| dhtmlXGridObject.prototype._hideHContext=function(){
 | |
| 	if (this._header_menu)
 | |
| 		this._header_menu.hide();
 | |
| };
 | |
| 
 | |
| dhtmlXGridObject.prototype._showHContext=function(columns)
 | |
| {
 | |
| 	if (typeof columns == "string")
 | |
| 		columns = columns.split(this.delim);
 | |
| 	
 | |
| 	var true_ind = 0;
 | |
| 	var j = 0;
 | |
| 	this._header_menu.clearAll();
 | |
| 
 | |
| 	for (var i=0; i<this.hdr.rows[1].cells.length; i++){
 | |
| 		var c = this.hdr.rows[1].cells[i];
 | |
| 		if (!columns || (columns[true_ind] &&  columns[true_ind] != "false")){
 | |
| 			if (c.firstChild && c.firstChild.tagName=="DIV") var val=c.firstChild.innerHTML;
 | |
| 			else var val = c.innerHTML;
 | |
| 			val = val.replace(/<[^>]*>/gi,"");
 | |
| 			var visible = !(this.isColumnHidden(true_ind) || (this.getColWidth(true_ind)==0));
 | |
| 			this._header_menu.addCheckbox("child", this._header_menu.topId, j, true_ind, val, visible);
 | |
| 			j++;
 | |
| 		}
 | |
| 		true_ind+=(c.colSpan||1);
 | |
| 	}	
 | |
| }
 | |
| //(c)dhtmlx ltd. www.dhtmlx.com
 | |
| 
 |