/// ', checked, checked ? "checkmark.gif" : "checknomark.gif");
};
//弹messagee
com.message = function (type, message, callback) {
switch (type) {
case "success":
if (parent == window) return alert(message);
parent.$('#notity').jnotifyAddMessage({ text: message, permanent: false });
break;
case "error":
if (parent == window) return alert(message);
parent.$.messager.alert('错误', message);
break;
case "warning":
if (parent == window) return alert(message);
parent.$('#notity').jnotifyAddMessage({ text: message, permanent: false, type: 'warning' });
break;
case "information":
parent.$.messager.show({
title: '消息',
msg: message
//,showType: 'show'
});
break;
case "confirm":
return parent.$.messager.confirm('确认', message, callback);
}
if (callback) callback();
return null;
};
com.messageif = function (condition, type, message, callback) {
if (condition)
com.message(type, message, callback);
};
com.openTab = function () {
parent.wrapper.addTab.apply(this,arguments);
}
com.setLocationHashId = function (id) {
var hash = parent.location.hash.split('/');
hash[hash.length-1] = id;
parent.location.hash = hash.join('/');
};
com.ajax = function (options) {
options = $.extend({
showLoading:true
}, options);
var ajaxDefaults = {
type: 'POST',
dataType: 'json',
contentType: 'application/json',
error: function (e) {
var msg = e.responseText;
var ret = msg.match(/^{\"Message\":\"(.*)\",\"ExceptionMessage\":\"(.*)\",\"ExceptionType\":.*/);
if (ret != null) {
msg = (ret[1] + ret[2]).replace(/\\"/g, '"').replace(/\\r\\n/g, '
').replace(/dbo\./g, '');
}
else {
try{msg = $(msg).text()||msg;}
catch(ex){}
}
com.message('error', msg);
}
};
if (options.showLoading) {
ajaxDefaults.beforeSend = $.showLoading;
ajaxDefaults.complete = $.hideLoading;
}
$.ajax($.extend(ajaxDefaults, options));
};
com.query = function (element) {
var query = $;
if ($(document).find(element).length == 0 && element!=document) {
if ($(parent.document).find(element)) {
query = parent.$;
}
}
return query;
};
com.formValidate = function (context) {
context = context || document;
var query = com.query(context);
if (query.fn.validatebox) {
var box = query(".validatebox-text", context);
if (box.length) {
box.validatebox("validate");
box.trigger("focus");
box.trigger("blur");
var valid = $(".validatebox-invalid:first", context).focus();
return valid.length == 0;
}
}
return true;
};
com.formChanges = function (obj1,obj2,reserve) {
obj1 = ko.toJS(obj1) || {};
obj2 = ko.toJS(obj2) || {};
reserve = reserve || [];
var result = utils.diffrence(obj1, obj2, reserve, ['__ko_mapping__']);
var length = 0;
for (var k in result) length++;
result._changed = length > reserve.length;
return result;
};
com.editGridViewModel = function (grid) {
var self = this;
this.begin = function (index, row) {
if (index== undefined || typeof index === 'object') {
row = grid.datagrid('getSelected');
index = grid.datagrid('getRowIndex', row);
}
self.editIndex = self.ended() ? index : self.editIndex;
grid.datagrid('selectRow', self.editIndex).datagrid('beginEdit', self.editIndex);
};
this.ended = function () {
if (self.editIndex == undefined) return true;
if (grid.datagrid('validateRow', self.editIndex)) {
grid.datagrid('endEdit', self.editIndex);
self.editIndex = undefined;
return true;
}
grid.datagrid('selectRow', self.editIndex);
return false;
};
this.addnew = function (rowData) {
if (self.ended()) {
if (Object.prototype.toString.call(rowData) != '[object Object]') rowData = {};
rowData = $.extend({_isnew:true},rowData);
grid.datagrid('appendRow', rowData);
self.editIndex = grid.datagrid('getRows').length - 1;
grid.datagrid('selectRow', self.editIndex);
self.begin(self.editIndex, rowData);
}
};
this.deleterow = function () {
var selectRow = grid.datagrid('getSelected');
if (selectRow) {
var selectIndex = grid.datagrid('getRowIndex', selectRow);
if (selectIndex == self.editIndex) {
grid.datagrid('cancelEdit', self.editIndex);
self.editIndex = undefined;
}
grid.datagrid('deleteRow', selectIndex);
}
};
this.reject = function () {
grid.datagrid('rejectChanges');
};
this.accept = function () {
grid.datagrid('acceptChanges');
var rows = grid.datagrid('getRows');
for (var i in rows) delete rows[i]._isnew;
};
this.getChanges = function (include, ignore) {
if (!include) include = [], ignore = true;
var deleted = utils.filterProperties(grid.datagrid('getChanges', "deleted"), include, ignore),
updated = utils.filterProperties(grid.datagrid('getChanges', "updated"), include, ignore),
inserted = utils.filterProperties(grid.datagrid('getChanges', "inserted"), include, ignore);
var changes = { deleted: deleted, inserted: utils.minusArray(inserted, deleted), updated: utils.minusArray(updated, deleted) };
changes._changed = (changes.deleted.length + changes.updated.length + changes.inserted.length)>0;
return changes;
};
this.isChangedAndValid = function () {
return self.ended() && self.getChanges()._changed;
};
};
com.editTreeGridViewModel = function (grid) {
var self = this, idField = grid.idField;
this.begin = function (row) {
var row = row || grid.treegrid('getSelected');
if (row) {
self.editIndex = self.ended() ? row[idField] : self.editIndex;
grid.treegrid('beginEdit', self.editIndex);
}
};
this.ended = function () {
if (self.editIndex == undefined) return true;
if (grid.treegrid('validateRow', self.editIndex)) {
grid.treegrid('endEdit', self.editIndex);
self.editIndex = undefined;
return true;
}
grid.treegrid('select', self.editIndex);
return false;
};
this.addnew = function (rowData, parentId) {
if (self.ended()) {
if (Object.prototype.toString.call(rowData) != '[object Object]') rowData = {};
rowData = $.extend({ _isnew: true }, rowData), parentId = parentId || '';
if (!rowData[idField]) rowData[idField] = utils.uuid();
grid.treegrid('append', { parent: parentId, data: [rowData] });
grid.$element().data("datagrid").insertedRows.push(rowData);
grid.treegrid('select', rowData[idField]);
self.begin(rowData);
}
};
this.deleterow = function () {
var row = grid.treegrid('getSelected');
if (row) {
if (row[idField] == self.editIndex) {
grid.treegrid('cancelEdit', self.editIndex);
self.editIndex = undefined;
}
grid.treegrid('remove', row[idField]);
grid.$element().data("datagrid").deletedRows.push(row);
}
};
this.reject = function () {
throw "未实现此方法!";
};
this.accept = function () {
grid.treegrid('acceptChanges');
var rows = grid.$element().datagrid('getRows');
for (var i in rows) delete rows[i]._isnew;
};
this.getChanges = function (include, ignore) {
if (!include) include = [], ignore = true;
var deleted = utils.filterProperties(grid.$element().datagrid('getChanges', "deleted"), include, ignore),
updated = utils.filterProperties(grid.$element().datagrid('getChanges', "updated"), include, ignore),
inserted = utils.filterProperties(grid.$element().datagrid('getChanges', "inserted"), include, ignore);
var changes = { deleted: deleted, inserted: utils.minusArray(inserted, deleted), updated: utils.minusArray(updated, deleted) };
changes._changed = (changes.deleted.length + changes.updated.length + changes.inserted.length) > 0;
return changes;
};
this.isChangedAndValid = function () {
return self.ended() && self.getChanges()._changed;
};
};
com.dialog = function (opts) {
var query = parent.$, fnClose = opts.onClose;
opts = query.extend({
title: 'My Dialog',
width: 400,
height: 220,
closed: false,
cache: false,
modal: true,
html: '',
url: '',
viewModel: query.noop
}, opts);
opts.onClose = function () {
if (query.isFunction(fnClose)) fnClose();
query(this).dialog('destroy');
};
if (query.isFunction(opts.html))
opts.html = utils.functionComment(opts.html);
else if (/^\#.*\-template$/.test(opts.html))
opts.html = $(opts.html).html();
var win = query('