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

org.devocative.wickomp.wrcs.easyui.ext.columns-ext-rtl.js Maven / Gradle / Ivy

/**
 * The extending functionalities on datagrid columns.
 */
(function ($) {
	$.extend($.fn.datagrid.defaults, {
		onBeforeDragColumn: function (field) {
		},
		onStartDragColumn: function (field) {
		},
		onStopDragColumn: function (field) {
		},
		onBeforeDropColumn: function (toField, fromField, point) {
		},
		onDropColumn: function (toField, fromField, point) {
		}	// point: 'before','after'
	});
	$.extend($.fn.treegrid.defaults, {
		onBeforeDragColumn: function (field) {
		},
		onStartDragColumn: function (field) {
		},
		onStopDragColumn: function (field) {
		},
		onBeforeDropColumn: function (toField, fromField, point) {
		},
		onDropColumn: function (toField, fromField, point) {
		}	// point: 'before','after'
	});
	$.extend($.fn.datagrid.methods, {
		_getPluginName: function (jq) {
			if (jq.data('treegrid')) {
				return 'treegrid';
			} else {
				return 'datagrid';
			}
		},
		freezeColumn: function (jq, field) {
			return jq.each(function () {
				var dg = $(this);
				var plugin = dg.datagrid('_getPluginName');
				var fields = dg[plugin]('getColumnFields');
				var index = $.inArray(field, fields);
				if (index >= 0) {
					var col = dg[plugin]('getColumnOption', field);
					col.originalIndex = $.inArray(field, fields);
					dg[plugin]('moveColumn', {
						field: field
					});
				}
			})
		},
		unfreezeColumn: function (jq, field) {
			return jq.each(function () {
				var dg = $(this);
				var plugin = dg.datagrid('_getPluginName');
				var fields = dg[plugin]('getColumnFields', true);
				var index = $.inArray(field, fields);
				if (index >= 0) {
					var col = dg[plugin]('getColumnOption', field);
					var toFields = dg[plugin]('getColumnFields', false);
					dg[plugin]('moveColumn', {
						field: field,
						before: toFields[col.originalIndex]
					});
				}
			})
		},
		/**
		 * move the column
		 * $('#dg').datagrid('moveColumn', {
		 *		field: 'itemid',
		 *		before: 'listprice'
		 *		// after: 'listprice'
		 * })
		 */
		moveColumn: function (jq, param) {
			return jq.each(function () {
				var dg = $(this);
				var plugin = dg.datagrid('_getPluginName');
				var opts = dg[plugin]('options');
				var toField = param.before || param.after;
				var col = dg[plugin]('getColumnOption', param.field);
				if (col) {
					var index = getIndex(param.field, true);
					if (index >= 0) {
						opts.frozenColumns[0].splice(index, 1);
						if (!toField) {
							opts.columns[0].push(col);
							recreate();
							return;
						}
					} else {
						index = getIndex(param.field, false);
						opts.columns[0].splice(index, 1);
						if (!toField) {
							if (opts.frozenColumns[0]) {
								opts.frozenColumns[0].push(col);
							} else {
								opts.frozenColumns[0] = [col];
							}
							recreate();
							return;
						}
					}
					var toIndex = getIndex(toField, true);
					if (toIndex >= 0) {
						opts.frozenColumns[0].splice(toIndex + (param.before ? 0 : 1), 0, col);
					} else {
						toIndex = getIndex(toField, false);
						opts.columns[0].splice(toIndex + (param.before ? 0 : 1), 0, col);
					}
					recreate();
				}
				function getIndex(field, frozen) {
					var fields = dg[plugin]('getColumnFields', frozen);
					return $.inArray(field, fields);
				}

				function recreate() {
					var url = opts.url;
					opts.url = null;
					var data = dg[plugin]('getData');
					dg[plugin]({
						data: null
					});
					dg[plugin]('loadData', data);
					opts.url = url;
				}
			})
		},
		reorderColumns: function (jq, fields) {
			return jq.each(function () {
				var dg = $(this);
				var plugin = dg.datagrid('_getPluginName');
				var opts = dg[plugin]('options');
				var f1 = dg[plugin]('getColumnFields', true);
				var f2 = dg[plugin]('getColumnFields', false);
				var ff = f1.concat(f2);
				var cols = [];
				for (var i = 0; i < fields.length; i++) {
					cols.push(dg[plugin]('getColumnOption', fields[i]));
				}
				for (var i = 0; i < ff.length; i++) {
					if ($.inArray(ff[i], fields) == -1) {
						cols.push(dg[plugin]('getColumnOption', ff[i]));
					}
				}
				var frozenCols = cols.splice(0, f1.length);

				var url = opts.url;
				opts.url = null;
				var data = dg[plugin]('getData');
				dg[plugin]({
					data: null,
					frozenColumns: [frozenCols],
					columns: [cols]
				});
				dg[plugin]('loadData', data);
				opts.url = url;
			});
		}
	})
})(jQuery);

(function ($) {
	function initCss() {
		var css = $('#datagrid-columnmoving');
		if (!css.length) {
			$('head').append(
				''
			);
		}
	}

	function moving(target) {
		var plugin = $(target).datagrid('_getPluginName');
		var opts = $(target)[plugin]('options');
		var cells = $(target).datagrid('getPanel').find('div.datagrid-header td[field]:not(:has(.datagrid-filter-c))');
		cells.draggable({
			revert: true,
			cursor: 'pointer',
			edge: 5,
			proxy: function (source) {
				var p = $('
').appendTo('body'); p.html($(source).text()); p.hide(); return p; }, onBeforeDrag: function (e) { var field = $(this).attr('field'); if (opts.onBeforeDragColumn.call(target, field) == false) { return false; } if (e.which != 1) { return false; } e.data.startLeft = $(this).offset().left; e.data.startTop = $(this).offset().top; }, onStartDrag: function (e) { opts.onStartDragColumn.call(target, $(this).attr('field')); $(this).draggable('proxy').css({ left: -10000, top: -10000 }); }, onStopDrag: function () { opts.onStopDragColumn.call(target, $(this).attr('field')); }, onDrag: function (e) { var x1 = e.pageX, y1 = e.pageY, x2 = e.data.startX, y2 = e.data.startY; var d = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); if (d > 3) { // when drag a little distance, show the proxy object $(this).draggable('proxy').show().css({ left: e.pageX + 15, top: e.pageY + 15 }); this.x = e.pageX; this.y = e.pageY; } return false; } }).droppable({ accept: 'td[field]:not(:has(.datagrid-filter-c))', onDragOver: function (e, source) { $(source).draggable('proxy').removeClass('tree-dnd-no').addClass('tree-dnd-yes'); var width = $(this).outerWidth(); var x = $(this).offset().left; var y = $(this).offset().top; $(this).removeClass('datagrid-moving-left datagrid-moving-right'); //NOTE: direction if (source.x > x + width / 2) { $(this).addClass('datagrid-moving-right'); } else { $(this).addClass('datagrid-moving-left'); } }, onDragLeave: function (e, source) { $(source).draggable('proxy').removeClass('tree-dnd-yes').addClass('tree-dnd-no'); $(this).removeClass('datagrid-moving-left datagrid-moving-right'); }, onDrop: function (e, source) { var fromField = $(source).attr('field'); var toField = $(this).attr('field'); var inserted = $(this).hasClass('datagrid-moving-right'); //NOTE: direction $(this).removeClass('datagrid-moving-left datagrid-moving-right'); var point = inserted ? 'before' : 'after'; if (opts.onBeforeDropColumn.call(target, toField, fromField, point) == false) { return; } var param = {field: fromField}; param[point] = toField; $(target)[plugin]('moveColumn', param); $(target)[plugin]('columnMoving'); opts.onDropColumn.call(target, toField, fromField, point); } }) } $.extend($.fn.datagrid.methods, { columnMoving: function (jq) { initCss(); return jq.each(function () { moving(this); }); } }); })(jQuery); /** * The data group functionality on treegrid * $('#tg').treegrid('groupData', { * data: data, * fields: ['country','city'], * groupHeader: '#fc' * }); */ (function ($) { function initCss() { var css = $('#treegrid-groupcolumns'); if (!css.length) { $('head').append( '' ); } } function groupData(target, param) { var data = param.data; var fields = param.fields; var opts = $(target).treegrid('options'); opts.groupFields = fields || []; opts.groupData = data; opts.groupHeader = param.groupHeader; var sindex = 1; var ids = []; if (fields && fields.length) { $(target).treegrid('loadData', _convert(data, fields[0])); } else { $(target).treegrid('loadData', data); } if (param.groupHeader) { dnd(target); showGroupHeader(target); } function _convert(rows, field) { var srows = []; var keys = _keys(rows, field); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var rr = _filter(rows, field, key); var srow = {}; var id = 'tg_groupid_' + sindex++; ids.push(id); srow[opts.idField] = id; srow[opts.treeField] = key; srow.children = rr; srows.push(srow); var f = _nextField(field); if (f) { srow.children = _convert(rr, f); } } return srows; } function _nextField(field) { for (var i = 0; i < fields.length; i++) { if (fields[i] == field) { return fields[i + 1]; } } } function _filter(rows, field, value) { return $.grep(rows, function (row) { return row[field] == value; }); } function _keys(rows, field) { var keys = []; for (var i = 0; i < rows.length; i++) { var key = String(rows[i][field]); if ($.inArray(key, keys) == -1) { keys.push(key); } } return keys; } } function dnd(target) { var opts = $(target).treegrid('options'); var cells = $(target).treegrid('getPanel').find('.datagrid-header td[field]:not(:has(.datagrid-filter-c))'); cells.draggable({ revert: true, cursor: 'pointer', edge: 5, proxy: function (source) { var p = $('
').appendTo('body'); p.html($(source).text()); p.hide(); return p; }, onBeforeDrag: function (e) { var field = $(this).attr('field'); if (e.which != 1) { return false; } e.data.startLeft = $(this).offset().left; e.data.startTop = $(this).offset().top; }, onStartDrag: function (e) { $(this).draggable('proxy').css({ left: -10000, top: -10000 }); }, onDrag: function (e) { var x1 = e.pageX, y1 = e.pageY, x2 = e.data.startX, y2 = e.data.startY; var d = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); if (d > 3) { // when drag a little distance, show the proxy object $(this).draggable('proxy').show().css({ left: e.pageX + 15, top: e.pageY + 15 }); this.x = e.pageX; this.y = e.pageY; } return false; } }); var cc = $(opts.groupHeader); cc.droppable({ accept: 'td[field]:not(:has(.datagrid-filter-c))', onDragOver: function (e, source) { $(source).draggable('proxy').removeClass('tree-dnd-no').addClass('tree-dnd-yes'); }, onDragLeave: function (e, source) { $(source).draggable('proxy').removeClass('tree-dnd-yes').addClass('tree-dnd-no'); }, onDrop: function (e, source) { var field = $(source).attr('field'); if ($.inArray(field, opts.groupFields) == -1) { opts.groupFields.push(field); } $(target).treegrid('groupData', { data: opts.groupData, fields: opts.groupFields, groupHeader: opts.groupHeader }); } }); } function showGroupHeader(target) { var dd = []; var opts = $(target).treegrid('options'); var fields = $(target).treegrid('options').groupFields; for (var i = 0; i < fields.length; i++) { dd.push(''); dd.push('' + fields[i] + ''); dd.push('x'); dd.push(''); } var cc = $(opts.groupHeader); cc.addClass('tg-group-header').html(dd.join('')); cc.find('.tg-group-close').click(function () { var field = $(this).prev().text(); var index = $.inArray(field, fields); if (index >= 0) { fields.splice(index, 1); $(target).treegrid('groupData', { data: opts.groupData, fields: fields, groupHeader: opts.groupHeader }); } }); } $.extend($.fn.treegrid.methods, { groupData: function (jq, param) { initCss(); return jq.each(function () { groupData(this, param); }); } }); })(jQuery);




© 2015 - 2025 Weber Informatics LLC | Privacy Policy