var Selector = function (guid, title, colums, dataUrl, qparams, multipleChoice, handlers, getselectRows, IsAsyncPage, customQuery) {
var win;
var tree;
var pitchOnDataGrid;
var leftQuery;
var rightTopQuey;
var waitTable;
getselectRows = getselectRows || function () { return undefined; }
customQuery = customQuery || function () { }
var hasEasyUI = function (elementTypeName) {
if (window.top.$(elementTypeName).length > 0) {
return true;
} else {
return false;
}
}
//private 创建Html元素
var createElement = function (elementTypeName, elements, parentElments) {
if (typeof parentElments != "undefined" && typeof elements == "string") {
parentElments.append(elements);
return parentElments.find(elementTypeName);
}
else {
if (typeof elements == "string")
return $(elements);
}
};
var createLinkButton = function (elements) {
var links = elements.find("a");
for (var i = 0; i < links.length; i++) {
$(links[i]).linkbutton();
}
};
var createTableString = function (name) {
var table = "
", "
");
};
var registEvent = function (target, eventType, handler) {
target.unbind(eventType, handler);
target.bind(eventType, handler);
}
//private 选择
var selectWait = function (node) {
var selectItem = waitTable.datagrid("getChecked");
var exitRows = pitchOnDataGrid.datagrid("getRows");
if (!multipleChoice) {
if (exitRows.length > 0 || selectItem.length > 1) {
window.top.$.messager.alert("系统消息", "一次只能选择一个" + title);
return;
}
}
for (var i = 0; i < selectItem.length; i++) {
if (!hasContainer(exitRows, selectItem[i]))
pitchOnDataGrid.datagrid("appendRow", selectItem[i]);
}
if (!multipleChoice)
closeWin();
};
function hasContainer(container, item) {
var key = getKey();
for (i = 0; i < container.length; i++) {
if (container[i][key] == item[key])
return true;
}
return false;
}
function getKey() {
var key;
$(colums.split(",")).each(function (i, column) {
var keyValue = column.split(":");
if (keyValue[0] == "Key") {
key = keyValue[1];
return;
}
});
return key;
}
function getQueryColumns() {
var queryColumns = new Array();
$(colums.split(",")).each(function (i, column) {
var keyValue = column.split(":");
if (keyValue.length == 4 && keyValue[3] == "query") {
queryColumns.push({
text: keyValue[0], feild: keyValue[1]
});
}
});
return queryColumns;
}
function pagerFilter(data) {
if (typeof data.length == 'number' && typeof data.splice == 'function') { // is array
data = {
total: data.length,
rows: data
};
}
var dg = waitTable;
var opts = dg.datagrid('options');
var pager = dg.datagrid('getPager');
// pager.pagination({
// onSelectPage: function (pageNum, pageSize) {
// opts.pageNumber = pageNum;
// opts.pageSize = pageSize;
// pager.pagination('refresh', {
// pageNumber: pageNum,
// pageSize: pageSize
// });
// dg.datagrid('loadData', data);
// }
// });
if (!data.originalRows) {
data.originalRows = (data.rows);
}
var start = (opts.pageNumber - 1) * parseInt(opts.pageSize);
var end = start + parseInt(opts.pageSize);
data.rows = (data.originalRows.slice(start, end));
return data;
}
var InitGridFile = function (dataGrid, pagination, url, title) {
var columnsStr = getColumnsJson();
return dataGrid.datagrid({
url: pagination ? url : "",
queryParams: pagination ? getParamsJson() : "",
pagination: pagination,
loadFilter: (pagination == false || IsAsyncPage == true) ? function (d) { if (d.rows == undefined) d.rows = d; return d; } : pagerFilter,
pageSize: 50,
pageList: [5, 25, 50],
title: title,
height: pagination == false ? 200 : 230,
width: 750,
loadMsg: "请稍等....",
singleSelect: !multipleChoice,
columns: [$.parseJSON(columnsStr)],
onLoadSuccess: (pagination && multipleChoice) ? loadSelectRows : function (data) { return data; }
});
}
function loadSelectRows(data) {
//已选择的值和选择的列名
var selectParams = getselectRows();
if (selectParams == undefined)
return;
if (selectParams.selectRows != undefined && selectParams.selectRows != "") {
var selectValues = selectParams.selectRows.split(";");
var valueField = selectParams.valueField;
var rows = data.originalRows;
var selectRows = new Array();
$(rows).each(function (i, j) {
if ($.inArray(j[valueField].toString(), selectValues) >= 0)
selectRows.push(j);
})
pitchOnDataGrid.datagrid("loadData", selectRows);
} else {
pitchOnDataGrid.datagrid("loadData", []);
}
getselectRows = function () { return undefined; }
return data;
}
var getColumnsJson = function () {
var columnsStr = "["
$(colums.split(",")).each(function (i, column) {
var keyValue = column.split(":");
columnsStr = columnsStr.concat('{"field":', "\"", keyValue[1], "\",", '"title":', "\"", keyValue[0], "\"");
if (keyValue[0] == "Key") {
columnsStr = columnsStr.concat(', "checkbox": "true"');
}
if (keyValue[2] != undefined) {
columnsStr = columnsStr.concat(', "width":', "\"", keyValue[2], "\"");
}
if (keyValue[3] == "hidden") {
columnsStr = columnsStr.concat(', "hidden":', "true");
}
columnsStr = columnsStr.concat(', "align":', "\"center\"");
columnsStr = columnsStr.concat("},");
});
columnsStr = columnsStr.substring(0, columnsStr.length - 1);
columnsStr = columnsStr.concat("]");
return columnsStr;
}
var getParamsJson = function () {
var columnsStr = "{";
$(qparams.split(",")).each(function (i, item) {
var keyValue = item.split(":");
columnsStr = columnsStr.concat("\"", keyValue[0], "\":");
columnsStr = columnsStr.concat("\"", keyValue[1], "\",");
});
columnsStr = columnsStr.substring(0, columnsStr.length - 1);
columnsStr = columnsStr.concat("}");
return $.parseJSON(columnsStr);
}
var deleteSelectUser = function () {
var deleteSource = pitchOnDataGrid.datagrid("getChecked");
if (deleteSource.length > 0) {
for (var i = 0; i < deleteSource.length; i++) {
var rowIndex = pitchOnDataGrid.datagrid("getRowIndex", deleteSource[i]);
pitchOnDataGrid.datagrid("deleteRow", rowIndex);
}
} else {
window.top.$.messager.alert("系统消息", "未选中任何行!");
}
};
var close = function () {
var btnSelectOk = $((rightTopQuey.find("a"))[2]);
btnSelectOk.unbind();
btnSelectOk.bind("click", function () {
var selectUser = pitchOnDataGrid.datagrid("getData");
var rcount = pitchOnDataGrid.datagrid("getRows").length;
if (rcount > 0) {
if (handlers instanceof Array) {
for (var i = 0; i < handlers.length; i++) {
handlers[i](selectUser);
}
} else if (typeof handlers != "undefined") {
handlers(selectUser);
}
}
if (!multipleChoice && rcount > 0) {
pitchOnDataGrid.datagrid("deleteRow", 0);
}
win.window("close");
});
};
var queryInfo = function () {
var queryStr = new Array();
var columns = getQueryColumns();
columns.push({ feild: "keyword" });
$.each(columns, function (i, column) {
var value = leftQuery.find("input[name='" + column.feild + "']").val();
queryStr.push("\"" + column.feild + "\":\"" + value + "\"");
});
var params = $.parseJSON("{" + queryStr.join(",") + "}");
waitTable.datagrid('load', params);
}
var createQueryString = function () {
var columns = getQueryColumns();
leftQuery = '