您的位置:首页 > Web前端 > JavaScript

javascript笔记——jqGrid再次封装

2016-01-13 11:58 676 查看
xingrunzhao js插件再次封装 demo

'use strict';

/**
* commerce grid框架
* 依赖jqgrid
*/

(function ($_self, jQuery) {

//jQuery.ajaxSetup({cache: false});

var _this = $_self;

/**
* 底层核心列表
* @param grid_selector gird选择器
* @param pager_selector 分页器选择器
* @param loadUrl 数据加载url
* @param editUrl 数据操作url
* @param colNames 列名数组
* @param colModel 列模型数组
* @param gridComplete 数据完成后函数
* @param subGrid 是否开启子grid
* @param subGridOptions 子grid配置
* @param subGridRowExpanded zigrid Row展开
* @param caption 标题
*
*
* var colModel = [{
*    name: 'name',
*    //是否可编辑
*   editable: true,
*    //编辑的一系列选项
*    //edittype:'select', editoptions:{value:{1:'One',2:'Two'}}
*    //editoptions: {multiple:true, size:3... }
*    //editoptions: {size:10, maxlength: 8}
*    //editoptions: { size: 10, readonly: 'readonly'},
*    editoptions: {
*       //readonly: 'readonly',
*       disabled: true
*    },
*   //编辑规则
*   // edithidden:true只在Form Editing模式下有效,设置为true,就可以让隐藏字段也可以修改
*   // required:true,number:true,integer:true,minValue:10,maxValue:100,email:true,url:true,date:true,time:true,custom:true,custom_func:function(){}}
*    editrules: {},
*    //编辑类型 text, textarea, select, checkbox, password, button, image and file.
*    edittype: 'text',
*    //列宽度是否要固定不可变
*    fixed: false,
*    hidedlg: true,
*    //在初始化表格时是否要隐藏此列
*    hidden: false,
*    //是否可以被resizable
*    //resizable: true,
*    //在搜索模式下,定义此列是否可以作为搜索列
*    search: false,
*    //是否可排序
*    sortable: false,
*   width: 150,
*    datefmt: 'yyyy-MM-dd',
*    //left,center,right
*    align: 'left'
*    }
* ];
*
*
*
*
*/
var _coreGrid = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, gridComplete, subGrid, subGridOptions, subGridRowExpanded, caption, treeGrid, expandColumn, multiselect, onSelectRow) {
jQuery(grid_selector).jqGrid({
url: loadUrl,
//ajaxGridOptions: {contentType: 'application/x-www-form-urlencoded; charset=utf-8'},
//ajaxSelectOptions: {contentType: 'application/json; charset=utf-8'},
//editoptions: {contentType: 'application/json; charset=utf-8'},
datatype: "json",
height: '100%',
autowidth: true,
colNames: colNames,
colModel: colModel,
viewrecords: true,
rowNum: 10,
rowList: [10, 20, 30],
pager: pager_selector,
altRows: true,
//toppager: true,

multiselect: multiselect || false,
multiboxonly: multiselect || false,
beforeSelectRow: function (rowid, e) {
if (multiselect) {
var $myGrid = jQuery(this),
i = jQuery.jgrid.getCellIndex(jQuery(e.target).closest('td')[0]),
cm = $myGrid.jqGrid('getGridParam', 'colModel');
return (cm[i].name === 'cb');
}
return true;
},

jsonReader: {
root: "body.records",
page: "body.pageNo",
total: "body.pages",
records: "body.total",
repeatitems: false
},

emptyrecords: '没有记录显示',
loadComplete: function () {
var table = this;
setTimeout(function () {
styleCheckbox(table);
updateActionIcons(table);
updatePagerIcons(table);
enableTooltips(table);
}, 0);
},
gridComplete: gridComplete || function () {
},
editurl: editUrl,
onSelectRow: onSelectRow || function () {
},

//subGrid
subGrid: subGrid || false,
subGridOptions: subGridOptions || {},
subGridRowExpanded: subGridRowExpanded || function () {
},
caption: caption || '',

//treeGrid
treeGrid: treeGrid || false,
treeGridModel: 'adjacency',
ExpandColClick: true,
ExpandColumn: expandColumn || 'id',
treeIcons: {
plus: 'ace-icon fa fa-caret-right bigger-160 blue',
minus: 'ace-icon fa fa-caret-down bigger-160 blue',
leaf: 'ace-icon fa fa-tags   orange'
}//树图标
});

//自适应
_this.resize(grid_selector);
//_this.addFun(grid_selector);

};

/**
* 选中数据
* @param grid
* @param id
*/
_this.setSelectData = function (grid_selector, ids) {
var _ids = ids || [];
var grid = jQuery(grid_selector);
for (var i = 0; i < _ids.length; i++) {
grid.jqGrid("setSelection", _ids[i]);
}
};

_this.reloadGrid = function (grid_selector) {
$(grid_selector).trigger('reloadGrid');
};

/**
* 简单crud列表
*/
_this.crudGrid = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel) {
_coreGrid(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel);
_this.navButtons(grid_selector, pager_selector, colModel);
};

/**
* 树列表
*/
_this.treeGrid = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, expandColumn) {
_coreGrid(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, '', false, '', '', '', true, expandColumn);
_this.navButtons(grid_selector, pager_selector, colModel);
};

/**
* 定制操作列表
* navButtons : {add: true, del: true, edit: true, view: true, search: true};
*/
_this.treeNavGrid = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, navButtons, expandColumn) {
_coreGrid(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, '', false, '', '', '', true, expandColumn);
_this.navButtons(grid_selector, pager_selector, colModel, navButtons);
};

/**
* 定制操作tree列表
* navButtons : {add: true, del: true, edit: true, view: true, search: true};
*/
_this.operTreeNavGrid = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, navButtons, expandColumn, opers) {
var gridComplete = function () {
var grid = jQuery(grid_selector);
var ids = grid.jqGrid('getDataIDs');
for (var i = 0, j = ids.length; i < j; i++) {
var cl = ids[i];
var opers_button = '';
for (var m = 0, n = opers.length; m < n; m++) {
opers_button += "<input type='button' value='" + opers[m].oper + "' onclick=\"(" + opers[m].action + ")(" + cl + ")\">";
}
grid.jqGrid('setRowData', cl, {operation: opers_button});
}
};
_coreGrid(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, gridComplete, false, '', '', '', true, expandColumn);
_this.navButtons(grid_selector, pager_selector, colModel, navButtons);
};

/**
* 数据行带操作按钮的列表
* {
name: 'operation',
width: 80,
fixed: true,
sortable: false,
resize: false
}
* opers : [{oper:'发布',action:function}]
*/
_this.operGrid = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, opers) {
var gridComplete = function () {
var grid = jQuery(grid_selector);
var ids = grid.jqGrid('getDataIDs');
for (var i = 0, j = ids.length; i < j; i++) {
var cl = ids[i];
var opers_button = '';
for (var m = 0, n = opers.length; m < n; m++) {
opers_button += "<input type='button' value='" + opers[m].oper + "' onclick=\"(" + opers[m].action + ")(" + cl + ")\">";
}
grid.jqGrid('setRowData', cl, {operation: opers_button});
}
};
_coreGrid(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, gridComplete);
_this.navButtons(grid_selector, pager_selector, colModel);
};

/**
* 数据行带操作按钮的列表并定制操作
*/
_this.operNavGrid = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, opers, navButtons) {
var gridComplete = function () {
var grid = jQuery(grid_selector);
var ids = grid.jqGrid('getDataIDs');
for (var i = 0, j = ids.length; i < j; i++) {
var cl = ids[i];
var opers_button = '';
for (var m = 0, n = opers.length; m < n; m++) {
opers_button += "<input type='button' value='" + opers[m].oper + "' onclick=\"(" + opers[m].action + ")(" + cl + ")\">";
}
grid.jqGrid('setRowData', cl, {operation: opers_button});
}
};
_coreGrid(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, gridComplete);
_this.navButtons(grid_selector, pager_selector, colModel, navButtons);
};

/**
* 定制操作列表
* navButtons : {add: true, del: true, edit: true, view: true, search: true};
*/
_this.navGrid = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, navButtons, gridComplete) {
_coreGrid(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, gridComplete);
_this.navButtons(grid_selector, pager_selector, colModel, navButtons);
};

/**
* 定制多选操作列表
* navButtons : {add: true, del: true, edit: true, view: true, search: true};
*/
_this.navSelectGrid = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, navButtons, gridComplete, onSelectRow) {
_coreGrid(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, gridComplete, '', '', '', '', '', '', true, onSelectRow);
_this.navButtons(grid_selector, pager_selector, colModel, navButtons);
};

/**
* 定制多选操作父子列表
* navButtons : {add: true, del: true, edit: true, view: true, search: true};
*/
_this.navSelectHasSubGrid = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, navButtons, subLoadUrl, subEditUrl, subColNames, subColModel, subNavButtons, isShowSubHeader, gridComplete, onSelectRow) {
_this.hasNavSubGrid(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, navButtons, subLoadUrl, subEditUrl, subColNames, subColModel, subNavButtons, gridComplete, isShowSubHeader, true, onSelectRow);
_this.navButtons(grid_selector, pager_selector, colModel, navButtons);
};

/**
* 父数据行带操作按钮的列表
* {
name: 'operation',
width: 80,
fixed: true,
sortable: false,
resize: false
}
* opers : [{oper:'发布',action:function}]
*/
_this.operHasSubGrid = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, subLoadUrl, subEditUrl, subColNames, subColModel, opers, isShowSubHeader) {
_this.operHasNavSubGrid(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, '', subLoadUrl, subEditUrl, subColNames, subColModel, '', opers, isShowSubHeader);
};

/**
* 定制操作列表[父数据行带操作按钮的列表]
* navButtons : {add: true, del: true, edit: true, view: true, search: true};
* subNavButtons : {add: true, del: true, edit: true, view: true, search: true};
*/
_this.operHasNavSubGrid = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, navButtons, subLoadUrl, subEditUrl, subColNames, subColModel, subNavButtons, opers, isShowSubHeader) {
var gridComplete = function () {
var grid = jQuery(grid_selector);
var ids = grid.jqGrid('getDataIDs');
for (var i = 0, j = ids.length; i < j; i++) {
var cl = ids[i];
var opers_button = '';
for (var m = 0, n = opers.length; m < n; m++) {
opers_button += "<input type='button' value='" + opers[m].oper + "' onclick=\"(" + opers[m].action + ")(" + cl + ")\">";
}
grid.jqGrid('setRowData', cl, {operation: opers_button});
}
};
_this.hasNavSubGrid(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, navButtons, subLoadUrl, subEditUrl, subColNames, subColModel, subNavButtons, gridComplete, isShowSubHeader);
};

/**
* 含有子列表的列表
*/
_this.hasSubGrid = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, subLoadUrl, subEditUrl, subColNames, subColModel) {
_this.hasNavSubGrid(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, '', subLoadUrl, subEditUrl, subColNames, subColModel);
};

/**
* 定制操作列表
* navButtons : {add: true, del: true, edit: true, view: true, search: true};
* subNavButtons : {add: true, del: true, edit: true, view: true, search: true};
*/
_this.hasNavSubGrid = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, navButtons, subLoadUrl, subEditUrl, subColNames, subColModel, subNavButtons, gridComplete, isShowSubHeader, multiselect, onSelectRow) {
var subGridOptions = {
plusicon: "ace-icon fa fa-plus center bigger-110 blue",
minusicon: "ace-icon fa fa-minus center bigger-110 blue",
openicon: "ace-icon fa fa-chevron-right center orange"
};
var subGridRowExpanded = function (subgrid_id, row_id) {
var subgrid_table_id = subgrid_id + "_t";
var subgrid_pager_id = subgrid_id + '_pgr';
jQuery("#" + subgrid_id).html("<table id='" + subgrid_table_id + "' class='scroll'></table><div id='" + subgrid_pager_id + "' class='scroll'></div>");

var _subLoadUrl = subLoadUrl.indexOf('?') == -1 ? (subLoadUrl + '?rid=' + row_id) : (subLoadUrl + '&rid=' + row_id);
var _subEditUrl = subEditUrl.indexOf('?') == -1 ? (subEditUrl + '?rid=' + row_id) : (subEditUrl + '&rid=' + row_id);
_coreGrid('#' + subgrid_table_id, '#' + subgrid_pager_id, _subLoadUrl, _subEditUrl, subColNames, subColModel);

if (!isShowSubHeader) {
jQuery(".ui-subgrid").find(".ui-jqgrid-htable").hide();

}

_this.navButtons('#' + subgrid_table_id, '#' + subgrid_pager_id, subColModel, subNavButtons);
};
_coreGrid(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, gridComplete, true, subGridOptions, subGridRowExpanded, '', '', '', multiselect, onSelectRow);

_this.navButtons(grid_selector, pager_selector, colModel, navButtons);
};

/**
* 含有子列表
*/
_this.hasSubList = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, subLoadUrl, subColModel, subColNames, isShowSubHeader) {
_this.hasNavSubList(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, '', subLoadUrl, subColModel, subColNames, isShowSubHeader);
};

/**
* 父数据行带操作按钮的列表
* {
name: 'operation',
width: 80,
fixed: true,
sortable: false,
resize: false
}
* opers : [{oper:'发布',action:function}]
*/
_this.operHasNavSubList = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, navButtons, subLoadUrl, subColModel, subColNames, opers, isShowSubHeader) {
var gridComplete = function () {
var grid = jQuery(grid_selector);
var ids = grid.jqGrid('getDataIDs');
for (var i = 0, j = ids.length; i < j; i++) {
var cl = ids[i];
var opers_button = '';
for (var m = 0, n = opers.length; m < n; m++) {
opers_button += "<input type='button' value='" + opers[m].oper + "' onclick=\"(" + opers[m].action + ")(" + cl + ")\">";
}
grid.jqGrid('setRowData', cl, {operation: opers_button});
}
};
_this.hasNavSubList(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, navButtons, subLoadUrl, subColModel, subColNames, gridComplete, isShowSubHeader);
};

/**
* 定制操作列表
* navButtons : {add: true, del: true, edit: true, view: true, search: true};
*/
_this.hasNavSubList = function (grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, navButtons, subLoadUrl, subColModel, subColNames, gridComplete, isShowSubHeader,multiselect,onSelectRow) {
var subGridOptions = {
plusicon: "ace-icon fa fa-plus center bigger-110 blue",
minusicon: "ace-icon fa fa-minus center bigger-110 blue",
openicon: "ace-icon fa fa-chevron-right center orange"
};
var subGridRowExpanded = function (subgrid_id, row_id) {
var subgrid_table_id = subgrid_id + "_t";
jQuery("#" + subgrid_id).html("<table id='" + subgrid_table_id + "' class='scroll'></table>");
var _subLoadUrl = subLoadUrl.indexOf('?') == -1 ? (subLoadUrl + '?rid=' + row_id) : (subLoadUrl + '&rid=' + row_id);

_coreGrid('#' + subgrid_table_id, '', _subLoadUrl, '', subColNames, subColModel);

if (!isShowSubHeader) {
jQuery(".ui-subgrid").find(".ui-jqgrid-htable").hide();

}
};
_coreGrid(grid_selector, pager_selector, loadUrl, editUrl, colNames, colModel, gridComplete, true, subGridOptions, subGridRowExpanded,'','','',multiselect,onSelectRow);
_this.navButtons(grid_selector, pager_selector, colModel, navButtons);
};

//操作按钮组函数
_this.navButtons = function (grid_selector, pager_selector, colModel, navButtons) {
//navButtons
var _navButtons = navButtons || {add: true, del: true, edit: true, view: true, search: false};
jQuery(grid_selector).jqGrid('navGrid', pager_selector,
{  //navbar options
edit: _navButtons.edit,
editicon: 'ace-icon fa fa-pencil blue',
add: _navButtons.add,
addicon: 'ace-icon fa fa-plus-circle purple',
del: _navButtons.del,
delicon: 'ace-icon fa fa-trash-o red',
search: _navButtons.search,
searchicon: 'ace-icon fa fa-search orange',
refresh: true,
refreshicon: 'ace-icon fa fa-refresh green',
view: _navButtons.view,
viewicon: 'ace-icon fa fa-search-plus grey'
},
{
//编辑记录 表单
//closeAfterEdit: true,
//width: 700,
recreateForm: true,
beforeShowForm: function (e) {
var form = $(e[0]);
form.closest('.ui-jqdialog').find('.ui-jqdialog-titlebar').wrapInner('<div class="widget-header" />')
style_edit_form(form);
},
afterSubmit: function (data, postdata, oper) {
var response = data.responseJSON;
if (response.hasOwnProperty("error")) {
if (response.error.length) {
return [false, response.error];
}
}
return [true, "", ""];
},
errorTextFormat: function (data) {
return 'Error: ' + data.responseText
}
},
{
//新建记录 表单
//width: 700,
closeAfterAdd: true,
recreateForm: true,
viewPagerButtons: false,
beforeShowForm: function (e) {
//设置tree parent
//var parent = jQuery('#parent');
//if (parent && parent.length) {
//    var id = jQuery(grid_selector).jqGrid('getGridParam', 'selrow');
//    if (id) {
//        jQuery('#parent').val(id);
//    }
//}

for (var i = 0, j = colModel.length; i < j; i++) {
e.find('#' + colModel[i].name).attr('disabled', false);
}
var form = $(e[0]);
form.closest('.ui-jqdialog').find('.ui-jqdialog-titlebar')
.wrapInner('<div class="widget-header" />');
style_edit_form(form);
},
afterSubmit: function (data, postdata, oper) {
var response = data.responseJSON;
if (response.hasOwnProperty("error")) {
if (response.error.length) {
return [false, response.error];
}
}
return [true, "", ""];
},
errorTextFormat: function (data) {
var response = jQuery.parseJSON(data.responseText);
return '错误: ' + response.body;
}
},
{
//删除记录 表单
recreateForm: true,
beforeShowForm: function (e) {
var form = $(e[0]);
if (form.data('styled')) return false;

form.closest('.ui-jqdialog').find('.ui-jqdialog-titlebar').wrapInner('<div class="widget-header" />')
style_delete_form(form);

form.data('styled', true);
},
afterSubmit: function (data, postdata, oper) {
var response = data.responseJSON;
if (response.hasOwnProperty("error")) {
if (response.error.length) {
return [false, response.error];
}
}
return [true, "", ""];
},
errorTextFormat: function (data) {
return 'Error: ' + data.responseText
}
},
{
//搜索 表单
recreateForm: true,
afterShowSearch: function (e) {
var form = $(e[0]);
form.closest('.ui-jqdialog').find('.ui-jqdialog-title').wrap('<div class="widget-header" />')
style_search_form(form);
},
afterRedraw: function () {
style_search_filters($(this));
}
,
multipleSearch: true
/**
multipleGroup:true,
showQuery: true
*/
},
{
//查看记录 表单
recreateForm: true,
beforeShowForm: function (e) {
var form = $(e[0]);
form.closest('.ui-jqdialog').find('.ui-jqdialog-title').wrap('<div class="widget-header" />')
},
afterSubmit: function (data, postdata, oper) {
var response = data.responseJSON;
if (response.hasOwnProperty("error")) {
if (response.error.length) {
return [false, response.error];
}
}
return [true, "", ""];
},
errorTextFormat: function (data) {
return 'Error: ' + data.responseText
}
}
);
};

//自适应
_this.resize = function (grid_selector) {
//拉伸缩小时适应当前页面
$(window).on('resize.jqGrid', function () {
$(grid_selector).jqGrid('setGridWidth', $(".page-content").width());
})
//当前侧边栏隐藏显示/缩小时拉伸/缩小jqgrid
var parent_column = $(grid_selector).closest('[class*="col-"]');
$(document).on('settings.ace.jqGrid', function (ev, event_name, collapsed) {
if (event_name === 'sidebar_collapsed' || event_name === 'main_container_fixed') {
//setTimeout is for webkit only to give time for DOM changes and then redraw!!!
setTimeout(function () {
$(grid_selector).jqGrid('setGridWidth', parent_column.width());
}, 0);
}
})

//if your grid is inside another element, for example a tab pane, you should use its parent's width:
/**
$(window).on('resize.jqGrid', function () {
var parent_width = $(grid_selector).closest('.tab-pane').width();
$(grid_selector).jqGrid( 'setGridWidth', parent_width );
})
//and also set width when tab pane becomes visible
$('#myTab a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
if($(e.target).attr('href') == '#mygrid') {
var parent_width = $(grid_selector).closest('.tab-pane').width();
$(grid_selector).jqGrid( 'setGridWidth', parent_width );
}
})
*/

$(window).triggerHandler('resize.jqGrid');//trigger window resize to make the grid get the correct size

};

//添加辅助函数
_this.addFun = function (grid_selector) {
//enable search/filter toolbar
//jQuery(grid_selector).jqGrid('filterToolbar',{defaultSearch:true,stringResult:true})
//jQuery(grid_selector).filterToolbar({});

//var selr = jQuery(grid_selector).jqGrid('getGridParam','selrow');

$(document).one('ajaxloadstart.page', function (e) {
$(grid_selector).jqGrid('GridUnload');
$('.ui-jqdialog').remove();
});
};

//datepicker 时间控件
_this.datepicker = function (cellvalue, options, cell) {
setTimeout(function () {

$.fn.datepicker.dates['zh'] = {
days: ["星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
daysShort: ["星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
daysMin: ["天", "一", "二", "三", "四", "五", "六"],
months: ["一月", "二月", "三月", "四月", "五岳", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
monthsShort: ["一月", "二月", "三月", "四月", "五岳", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
today: "今天",
clear: "Clear",
format: "yyyy年mm月dd日",
titleFormat: "yyyy MM",
weekStart: 0
};

$(cell).find('input[type=text]')
.datepicker({
format: 'yyyy-mm-dd',
autoclose: 'true',
startDate: '0d',
disableTouchKeyboard: 'true',
language: 'zh'
});
}, 0);
};

//样式定制函数开始

//switch element when editing inline
function aceSwitch(cellvalue, options, cell) {
setTimeout(function () {
$(cell).find('input[type=checkbox]')
.addClass('ace ace-switch ace-switch-5')
.after('<span class="lbl"></span>');
}, 0);
}

function style_edit_form(form) {
//enable datepicker on "sdate" field and switches for "stock" field
form.find('input[name=sdate]').datepicker({format: 'yyyy-mm-dd', autoclose: true})

form.find('input[name=stock]').addClass('ace ace-switch ace-switch-5').after('<span class="lbl"></span>');
//don't wrap inside a label element, the checkbox value won't be submitted (POST'ed)
//.addClass('ace ace-switch ace-switch-5').wrap('<label class="inline" />').after('<span class="lbl"></span>');

//update buttons classes
var buttons = form.next().find('.EditButton .fm-button');
buttons.addClass('btn btn-sm').find('[class*="-icon"]').hide();//ui-icon, s-icon
buttons.eq(0).addClass('btn-primary').prepend('<i class="ace-icon fa fa-check"></i>');
buttons.eq(1).prepend('<i class="ace-icon fa fa-times"></i>')

buttons = form.next().find('.navButton a');
buttons.find('.ui-icon').hide();
buttons.eq(0).append('<i class="ace-icon fa fa-chevron-left"></i>');
buttons.eq(1).append('<i class="ace-icon fa fa-chevron-right"></i>');
}

function style_delete_form(form) {
var buttons = form.next().find('.EditButton .fm-button');
buttons.addClass('btn btn-sm btn-white btn-round').find('[class*="-icon"]').hide();//ui-icon, s-icon
buttons.eq(0).addClass('btn-danger').prepend('<i class="ace-icon fa fa-trash-o"></i>');
buttons.eq(1).addClass('btn-default').prepend('<i class="ace-icon fa fa-times"></i>')
}

function style_search_filters(form) {
form.find('.delete-rule').val('X');
form.find('.add-rule').addClass('btn btn-xs btn-primary');
form.find('.add-group').addClass('btn btn-xs btn-success');
form.find('.delete-group').addClass('btn btn-xs btn-danger');
}

function style_search_form(form) {
var dialog = form.closest('.ui-jqdialog');
var buttons = dialog.find('.EditTable')
buttons.find('.EditButton a[id*="_reset"]').addClass('btn btn-sm btn-info').find('.ui-icon').attr('class', 'ace-icon fa fa-retweet');
buttons.find('.EditButton a[id*="_query"]').addClass('btn btn-sm btn-inverse').find('.ui-icon').attr('class', 'ace-icon fa fa-comment-o');
buttons.find('.EditButton a[id*="_search"]').addClass('btn btn-sm btn-purple').find('.ui-icon').attr('class', 'ace-icon fa fa-search');
}

function beforeDeleteCallback(e) {
var form = $(e[0]);
if (form.data('styled')) return false;

form.closest('.ui-jqdialog').find('.ui-jqdialog-titlebar').wrapInner('<div class="widget-header" />')
style_delete_form(form);

form.data('styled', true);
}

function beforeEditCallback(e) {
var form = $(e[0]);
form.closest('.ui-jqdialog').find('.ui-jqdialog-titlebar').wrapInner('<div class="widget-header" />')
style_edit_form(form);
}

//it causes some flicker when reloading or navigating grid
//it may be possible to have some custom formatter to do this as the grid is being created to prevent this
//or go back to default browser checkbox styles for the grid
function styleCheckbox(table) {
/**
$(table).find('input:checkbox').addClass('ace')
.wrap('<label />')
.after('<span class="lbl align-top" />')

$('.ui-jqgrid-labels th[id*="_cb"]:first-child')
.find('input.cbox[type=checkbox]').addClass('ace')
.wrap('<label />').after('<span class="lbl align-top" />');
*/
}

//unlike navButtons icons, action icons in rows seem to be hard-coded
//you can change them like this in here if you want
function updateActionIcons(table) {
/**
var replacement =
{
'ui-ace-icon fa fa-pencil' : 'ace-icon fa fa-pencil blue',
'ui-ace-icon fa fa-trash-o' : 'ace-icon fa fa-trash-o red',
'ui-icon-disk' : 'ace-icon fa fa-check green',
'ui-icon-cancel' : 'ace-icon fa fa-times red'
};
$(table).find('.ui-pg-div span.ui-icon').each(function(){
var icon = $(this);
var $class = $.trim(icon.attr('class').replace('ui-icon', ''));
if($class in replacement) icon.attr('class', 'ui-icon '+replacement[$class]);
})
*/
}

//replace icons with FontAwesome icons like above
function updatePagerIcons(table) {
var replacement =
{
'ui-icon-seek-first': 'ace-icon fa fa-angle-double-left bigger-140',
'ui-icon-seek-prev': 'ace-icon fa fa-angle-left bigger-140',
'ui-icon-seek-next': 'ace-icon fa fa-angle-right bigger-140',
'ui-icon-seek-end': 'ace-icon fa fa-angle-double-right bigger-140'
};
$('.ui-pg-table:not(.navtable) > tbody > tr > .ui-pg-button > .ui-icon').each(function () {
var icon = $(this);
var $class = $.trim(icon.attr('class').replace('ui-icon', ''));

if ($class in replacement) icon.attr('class', 'ui-icon ' + replacement[$class]);
})
}

function enableTooltips(table) {
$('.navtable .ui-pg-button').tooltip({container: 'body'});
$(table).find('.ui-pg-div').tooltip({container: 'body'});
}

//样式定制函数结束

})(window.cgrid = {}, jQuery);
  


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: