392 lines
8.7 KiB
JavaScript
Executable File
392 lines
8.7 KiB
JavaScript
Executable File
/* $Id: listtable.js 14980 2008-10-22 05:01:19Z testyang $ */
|
|
if (typeof Ajax != 'object')
|
|
{
|
|
alert('Ajax object doesn\'t exists.');
|
|
}
|
|
|
|
if (typeof Utils != 'object')
|
|
{
|
|
alert('Utils object doesn\'t exists.');
|
|
}
|
|
|
|
var listTable = new Object;
|
|
|
|
listTable.query = "query";
|
|
listTable.filter = new Object;
|
|
listTable.url = location.href.lastIndexOf("?") == -1 ? location.href.substring((location.href.lastIndexOf("/")) + 1) : location.href.substring((location.href.lastIndexOf("/")) + 1, location.href.lastIndexOf("?"));
|
|
listTable.url += "?is_ajax=1";
|
|
|
|
/**
|
|
* 创建一个可编辑区
|
|
*/
|
|
listTable.edit = function(obj, act, id)
|
|
{
|
|
var tag = obj.firstChild.tagName;
|
|
|
|
if (typeof(tag) != "undefined" && tag.toLowerCase() == "input")
|
|
{
|
|
return;
|
|
}
|
|
|
|
/* 保存原始的内容 */
|
|
var org = obj.innerHTML;
|
|
var val = Browser.isIE ? obj.innerText : obj.textContent;
|
|
|
|
/* 创建一个输入框 */
|
|
var txt = document.createElement("INPUT");
|
|
txt.value = (val == 'N/A') ? '' : val;
|
|
txt.style.width = (obj.offsetWidth + 12) + "px" ;
|
|
|
|
/* 隐藏对象中的内容,并将输入框加入到对象中 */
|
|
obj.innerHTML = "";
|
|
obj.appendChild(txt);
|
|
txt.focus();
|
|
|
|
/* 编辑区输入事件处理函数 */
|
|
txt.onkeypress = function(e)
|
|
{
|
|
var evt = Utils.fixEvent(e);
|
|
var obj = Utils.srcElement(e);
|
|
|
|
if (evt.keyCode == 13)
|
|
{
|
|
obj.blur();
|
|
|
|
return false;
|
|
}
|
|
|
|
if (evt.keyCode == 27)
|
|
{
|
|
obj.parentNode.innerHTML = org;
|
|
}
|
|
}
|
|
|
|
/* 编辑区失去焦点的处理函数 */
|
|
txt.onblur = function(e)
|
|
{
|
|
if (Utils.trim(txt.value).length > 0)
|
|
{
|
|
res = Ajax.call(listTable.url, "act="+act+"&val=" + encodeURIComponent(Utils.trim(txt.value)) + "&id=" +id, null, "POST", "JSON", false);
|
|
|
|
if (res.message)
|
|
{
|
|
alert(res.message);
|
|
}
|
|
|
|
if(res.id && (res.act == 'goods_auto' || res.act == 'article_auto'))
|
|
{
|
|
document.getElementById('del'+res.id).innerHTML = "<a href=\""+ thisfile +"?goods_id="+ res.id +"&act=del\" onclick=\"return confirm('"+deleteck+"');\">"+deleteid+"</a>";
|
|
}
|
|
|
|
obj.innerHTML = (res.error == 0) ? res.content : org;
|
|
}
|
|
else
|
|
{
|
|
obj.innerHTML = org;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 切换状态 yes no
|
|
*/
|
|
listTable.toggle = function(obj, act, id)
|
|
{
|
|
var val = (obj.src.match(/yes.gif/i)) ? 0 : 1;
|
|
var res = Ajax.call(this.url, "act="+act+"&val=" + val + "&id=" +id, null, "POST", "JSON", false);
|
|
|
|
if (res.message)
|
|
{
|
|
alert(res.message);
|
|
}
|
|
|
|
if (res.error == 0)
|
|
{
|
|
obj.src = (res.content > 0) ? 'images/yes.gif' : 'images/no.gif';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 切换状态 no yes
|
|
*/
|
|
listTable.toggleip = function(obj, act, id)
|
|
{
|
|
var val = (obj.src.match(/yes.gif/i)) ? 1 : 0;
|
|
var res = Ajax.call(this.url, "act="+act+"&val=" + val + "&id=" +id, null, "POST", "JSON", false);
|
|
|
|
if (res.message)
|
|
{
|
|
alert(res.message);
|
|
}
|
|
|
|
if (res.error == 0)
|
|
{
|
|
obj.src = (res.content > 0) ? 'images/no.gif' : 'images/yes.gif';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 切换排序方式
|
|
*/
|
|
listTable.sort = function(sort_by, sort_order)
|
|
{
|
|
var args = "act="+this.query+"&sort_by="+sort_by+"&sort_order=";
|
|
|
|
if (this.filter.sort_by == sort_by)
|
|
{
|
|
args += this.filter.sort_order == "DESC" ? "ASC" : "DESC";
|
|
}
|
|
else
|
|
{
|
|
args += "DESC";
|
|
}
|
|
|
|
for (var i in this.filter)
|
|
{
|
|
if (typeof(this.filter[i]) != "function" &&
|
|
i != "sort_order" && i != "sort_by" && !Utils.isEmpty(this.filter[i]))
|
|
{
|
|
args += "&" + i + "=" + this.filter[i];
|
|
}
|
|
}
|
|
|
|
this.filter['page_size'] = this.getPageSize();
|
|
|
|
Ajax.call(this.url, args, this.listCallback, "POST", "JSON");
|
|
}
|
|
|
|
/**
|
|
* 翻页
|
|
*/
|
|
listTable.gotoPage = function(page)
|
|
{
|
|
if (page != null) this.filter['page'] = page;
|
|
|
|
if (this.filter['page'] > this.pageCount) this.filter['page'] = 1;
|
|
|
|
this.filter['page_size'] = this.getPageSize();
|
|
|
|
this.loadList();
|
|
}
|
|
|
|
/**
|
|
* 载入列表
|
|
*/
|
|
listTable.loadList = function()
|
|
{
|
|
var args = "act="+this.query+"" + this.compileFilter();
|
|
Ajax.call(this.url, args, this.listCallback, "POST", "JSON");
|
|
}
|
|
|
|
/**
|
|
* 删除列表中的一个记录
|
|
*/
|
|
listTable.remove = function(id, cfm, opt)
|
|
{
|
|
if (opt == null)
|
|
{
|
|
opt = "remove";
|
|
}
|
|
|
|
if (confirm(cfm))
|
|
{
|
|
var args = "act=" + opt + "&id=" + id + this.compileFilter();
|
|
Ajax.call(this.url, args, this.listCallback, "GET", "JSON");
|
|
}
|
|
}
|
|
|
|
listTable.gotoPageFirst = function()
|
|
{
|
|
if (this.filter.page > 1)
|
|
{
|
|
listTable.gotoPage(1);
|
|
}
|
|
}
|
|
|
|
listTable.gotoPagePrev = function()
|
|
{
|
|
if (this.filter.page > 1)
|
|
{
|
|
listTable.gotoPage(this.filter.page - 1);
|
|
}
|
|
}
|
|
|
|
listTable.gotoPageNext = function()
|
|
{
|
|
if (this.filter.page < listTable.pageCount)
|
|
{
|
|
listTable.gotoPage(parseInt(this.filter.page) + 1);
|
|
}
|
|
}
|
|
|
|
listTable.gotoPageLast = function()
|
|
{
|
|
if (this.filter.page < listTable.pageCount)
|
|
{
|
|
listTable.gotoPage(listTable.pageCount);
|
|
}
|
|
}
|
|
|
|
listTable.changePageSize = function(e)
|
|
{
|
|
var evt = Utils.fixEvent(e);
|
|
if (evt.keyCode == 13)
|
|
{
|
|
listTable.gotoPage();
|
|
return false;
|
|
};
|
|
}
|
|
|
|
listTable.listCallback = function(result, txt)
|
|
{
|
|
if (result.error > 0)
|
|
{
|
|
alert(result.message);
|
|
}
|
|
else
|
|
{
|
|
try
|
|
{
|
|
document.getElementById('listDiv').innerHTML = result.content;
|
|
|
|
if (typeof result.filter == "object")
|
|
{
|
|
listTable.filter = result.filter;
|
|
}
|
|
|
|
listTable.pageCount = result.page_count;
|
|
}
|
|
catch (e)
|
|
{
|
|
alert(e.message);
|
|
}
|
|
}
|
|
}
|
|
|
|
listTable.selectAll = function(obj, chk)
|
|
{
|
|
if (chk == null)
|
|
{
|
|
chk = 'checkboxes';
|
|
}
|
|
|
|
var elems = obj.form.getElementsByTagName("INPUT");
|
|
|
|
for (var i=0; i < elems.length; i++)
|
|
{
|
|
if (elems[i].name == chk || elems[i].name == chk + "[]")
|
|
{
|
|
elems[i].checked = obj.checked;
|
|
}
|
|
}
|
|
}
|
|
|
|
listTable.compileFilter = function()
|
|
{
|
|
var args = '';
|
|
for (var i in this.filter)
|
|
{
|
|
if (typeof(this.filter[i]) != "function" && typeof(this.filter[i]) != "undefined")
|
|
{
|
|
args += "&" + i + "=" + encodeURIComponent(this.filter[i]);
|
|
}
|
|
}
|
|
|
|
return args;
|
|
}
|
|
|
|
listTable.getPageSize = function()
|
|
{
|
|
var ps = 15;
|
|
|
|
pageSize = document.getElementById("pageSize");
|
|
|
|
if (pageSize)
|
|
{
|
|
ps = Utils.isInt(pageSize.value) ? pageSize.value : 15;
|
|
document.cookie = "ECSCP[page_size]=" + ps + ";";
|
|
}
|
|
}
|
|
|
|
listTable.addRow = function(checkFunc)
|
|
{
|
|
cleanWhitespace(document.getElementById("listDiv"));
|
|
var table = document.getElementById("listDiv").childNodes[0];
|
|
var firstRow = table.rows[0];
|
|
var newRow = table.insertRow(-1);
|
|
newRow.align = "center";
|
|
var items = new Object();
|
|
for(var i=0; i < firstRow.cells.length;i++) {
|
|
var cel = firstRow.cells[i];
|
|
var celName = cel.getAttribute("name");
|
|
var newCel = newRow.insertCell(-1);
|
|
if (!cel.getAttribute("ReadOnly") && cel.getAttribute("Type")=="TextBox")
|
|
{
|
|
items[celName] = document.createElement("input");
|
|
items[celName].type = "text";
|
|
items[celName].style.width = "50px";
|
|
items[celName].onkeypress = function(e)
|
|
{
|
|
var evt = Utils.fixEvent(e);
|
|
var obj = Utils.srcElement(e);
|
|
|
|
if (evt.keyCode == 13)
|
|
{
|
|
listTable.saveFunc();
|
|
}
|
|
}
|
|
newCel.appendChild(items[celName]);
|
|
}
|
|
if (cel.getAttribute("Type") == "Button")
|
|
{
|
|
var saveBtn = document.createElement("input");
|
|
saveBtn.type = "image";
|
|
saveBtn.src = "./images/icon_add.gif";
|
|
saveBtn.value = save;
|
|
newCel.appendChild(saveBtn);
|
|
this.saveFunc = function()
|
|
{
|
|
if (checkFunc)
|
|
{
|
|
if (!checkFunc(items))
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
var str = "act=add";
|
|
for(var key in items)
|
|
{
|
|
if (typeof(items[key]) != "function")
|
|
{
|
|
str += "&" + key + "=" + items[key].value;
|
|
}
|
|
}
|
|
res = Ajax.call(listTable.url, str, null, "POST", "JSON", false);
|
|
if (res.error)
|
|
{
|
|
alert(res.message);
|
|
table.deleteRow(table.rows.length-1);
|
|
items = null;
|
|
}
|
|
else
|
|
{
|
|
document.getElementById("listDiv").innerHTML = res.content;
|
|
if (document.getElementById("listDiv").childNodes[0].rows.length < 6)
|
|
{
|
|
listTable.addRow(checkFunc);
|
|
}
|
|
items = null;
|
|
}
|
|
}
|
|
saveBtn.onclick = this.saveFunc;
|
|
|
|
//var delBtn = document.createElement("input");
|
|
//delBtn.type = "image";
|
|
//delBtn.src = "./images/no.gif";
|
|
//delBtn.value = cancel;
|
|
//newCel.appendChild(delBtn);
|
|
}
|
|
}
|
|
|
|
}
|