Example #1
0
 /**
  * 通过缓存配置成功后, 重置宽度调整事件源dom 用于禁用最后一列调整宽度事件
  * @param gridManagerName
  * @returns {boolean}
  */
 resetAdjust(gridManagerName) {
     let _thList = jTool(`thead[${FAKE_TABLE_HEAD_KEY}="${gridManagerName}"] [th-visible="visible"]`);
     let	_adjustAction = jTool('.adjust-action', _thList);
     if (!_adjustAction || _adjustAction.length === 0) {
         return false;
     }
     _adjustAction.show();
     _adjustAction.eq(_adjustAction.length - 1).hide();
 }
Example #2
0
    /**
     * init
     * 绑定宽度调整事件
     * @param: gridManagerName
     */
    init(gridManagerName) {
        const _this = this;

        // 监听鼠标调整列宽度
        this.$body = jTool('body');
        this.eventMap[gridManagerName] = getAdjustEvent(gridManagerName, base.getQuerySelector(gridManagerName));

        const { events, selector } = this.eventMap[gridManagerName].adjustStart;
        this.$body.on(events, selector, function (event) {
            const _dragAction = jTool(this);
            // 事件源所在的th
            let $th = _dragAction.closest('th');

            // 事件源所在的table
            let	$table = base.getTable(gridManagerName);

            // 当前存储属性
            const { adjustBefore, adjustAfter, isIconFollowText } = cache.getSettings(gridManagerName);

            // 事件源同层级下的所有th
            let	$allTh = base.getFakeVisibleTh(gridManagerName);

            // 事件源下一个可视th
            let	$nextTh = $allTh.eq($th.index($allTh) + 1);

            // 存储与事件源同列的所有td
            let	$td = base.getColTd($th);

            // 宽度调整触发回调事件
            adjustBefore(event);

            // 增加宽度调整中样式
            $th.addClass(_this.selectedClassName);
            $td.addClass(_this.selectedClassName);

            // 禁用文本选中
            $table.addClass(NO_SELECT_CLASS_NAME);

            // 执行移动事件
            _this.__runMoveEvent(gridManagerName, $th, $nextTh, isIconFollowText);

            // 绑定停止事件
            _this.__runStopEvent(gridManagerName, $table, $th, $td, adjustAfter);
            return false;
        });

        this.resetAdjust(gridManagerName);
    }
Example #3
0
	/**
	 * [对外公开方法]
	 * @param table
	 * @param arg: 参数
	 * @param callback: 回调
	 * @returns {*}
	 */
    async init(table, arg, callback) {
		const $table = jTool(table);
		arg = jTool.extend({}, GridManager.defaultOption, arg);

		// 校验: 初始参
		if (!arg || jTool.isEmptyObject(arg)) {
			base.outError('init method params error');
			return;
		}

		// 校验: columnData
		if (!arg.columnData || arg.columnData.length === 0) {
			base.outError('columnData invalid');
			return;
		}

		// 参数变更提醒
		if (arg.ajax_url) {
			base.outWarn('ajax_url will be deprecated later, please use ajax_data instead');
			arg.ajax_data = arg.ajax_url;
		}

		// 相互冲突的参数项处理 TODO 这个功能为试点功能,现在与被禁用项冲突,后期还是想把这些冲突点解决掉
        if (arg.topFullColumn && arg.topFullColumn.template) {
            // 不使用配置功能
            arg.supportConfig = false;

            // 不使用自动序号
            arg.supportAutoOrder = false;

            // 不使用全选功能
            arg.supportCheckbox = false;

            // 不使用拖拽功能
            arg.supportDrag = false;

            // 不使用宽度调整功能
            arg.supportAdjust = false;
        }

		// 通过版本较验 清理缓存
		cache.verifyVersion();

		// 初始化设置相关: 合并, 存储
		let settings = cache.initSettings(arg, checkbox.getColumn.bind(checkbox), order.getColumn.bind(order));
		const gridManagerName = settings.gridManagerName;

		// 校验: gridManagerName
		if (gridManagerName.trim() === '') {
			base.outError('gridManagerName undefined');
			return;
		}

		// 根据参数增加禁用单元格分割线标识
        if (settings.disableLine) {
            $table.addClass('disable-line');
        }

        // 初始化表格
        await this.initTable($table, settings);

        // 如果初始获取缓存失败,在渲染完成后首先存储一次数据
        if (typeof $table.attr(CACHE_ERROR_KEY) !== 'undefined') {
            window.setTimeout(() => {
                cache.saveUserMemory(settings);
                $table.removeAttr(CACHE_ERROR_KEY);
            }, 1000);
        }

        settings = cache.getSettings(gridManagerName);

        // 设置渲染完成标识
        settings.rendered = true;
        cache.setSettings(settings);

        // 渲染tbodyDOM
        settings.firstLoading ? core.refresh(gridManagerName, () => {
            // 启用回调
            typeof (callback) === 'function' ? callback(settings.query) : '';
        }) : core.insertEmptyTemplate(settings, true);
	}
Example #4
0
 filter.enable && jTool.each(settings.columnMap, (index, column) => {
     if (typeof query[column.key] === 'string' && column.filter) {
         column.filter.selected = query[column.key];
         filter.update(jTool(`${base.getQuerySelector(gridManagerName)} th[th-name=${column.key}]`), column.filter);
     }
 });