mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
246 lines
4.9 KiB
246 lines
4.9 KiB
<% ' General depository for frequently used javascript functions for our "list control" ******* %>
|
|
|
|
<!--#include file="iijsls.str"-->
|
|
|
|
<%
|
|
' Main listFunction object, to allow other frames to access global functions,
|
|
' and to serve as a data cache. This will be instantiated in the list script.
|
|
%>
|
|
function listFuncs(sortby, specSort, mainframe){
|
|
//general
|
|
this.sel = -1;
|
|
this.lastSel = 0;
|
|
this.bHasList = true;
|
|
this.noupdate = false;
|
|
this.sortAsc = true;
|
|
|
|
//functions
|
|
this.addItem=addItem;
|
|
this.delItem=delItem;
|
|
this.moveItem=moveItem;
|
|
this.sortList = sortList;
|
|
this.reSort = reSort;
|
|
this.writeList=buildListForm;
|
|
this.SetListVals=SetListVals;
|
|
this.writeCol = writeCol;
|
|
this.loadList = loadList;
|
|
|
|
//specifics
|
|
this.sortby = sortby;
|
|
this.specSort =specSort;
|
|
this.mainframe = mainframe;
|
|
}
|
|
|
|
<% ' ******* Sets the current selection ******* %>
|
|
|
|
function setLastSel(id)
|
|
{
|
|
for (var i=0; i < cachedList.length; i++)
|
|
{
|
|
if (cachedList[i].id == id)
|
|
{
|
|
listFunc.sel = i;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
<% ' ******* Used throughout the list "controls" to write out a table cell. ******* %>
|
|
<% ' ******* a, the align parameter, is optional ******* %>
|
|
|
|
function writeCol(colspan,w,str,a)
|
|
{
|
|
var writestr = "<TD";
|
|
if (colspan != "")
|
|
{
|
|
writestr += " COLSPAN = " + colspan
|
|
}
|
|
if (w != "")
|
|
{
|
|
writestr += " WIDTH = " + w;
|
|
}
|
|
if (a != "")
|
|
{
|
|
writestr += " ALIGN = " + a;
|
|
}
|
|
writestr += "><%= sFont("","","",True) %>" + str + "</FONT></TD>";
|
|
|
|
return writestr;
|
|
}
|
|
|
|
<% '***** This is the sortOrder function that allows heading to be sorted by string values, rather than numerically... **** %>
|
|
function sortOrder(a,b)
|
|
{
|
|
<%
|
|
' a and b are automatically passed in by the JScript array sort function
|
|
' In this case, they are array items which contain custom objects. The
|
|
' listFunc.sortby is set in the call to sortList, which is executed when
|
|
' the user clicks a heading. The entry points are in the files labled ii*hd.asp
|
|
' (ie, iiacsshd.asp, etc.) The sortby property will contain the name of the
|
|
' property on the object to sort by, for example filename or date...
|
|
|
|
'listFunc is required in order for this to work properly...
|
|
%>
|
|
|
|
if (listFunc != null)
|
|
{
|
|
if (listFunc.specSort != "")
|
|
{
|
|
astr = a[listFunc.specSort] + a[listFunc.sortby];
|
|
bstr = b[listFunc.specSort] + b[listFunc.sortby];
|
|
}
|
|
else
|
|
{
|
|
astr = a[listFunc.sortby];
|
|
bstr = b[listFunc.sortby];
|
|
}
|
|
|
|
if (!isNaN(astr))
|
|
{
|
|
astr = astr.toString();
|
|
bstr = bstr.toString();
|
|
|
|
}
|
|
|
|
lcastr = astr.toLowerCase();
|
|
lcbstr = bstr.toLowerCase();
|
|
|
|
if (lcastr < lcbstr)
|
|
{
|
|
retval = -1;
|
|
}
|
|
else
|
|
{
|
|
if (lcastr > lcbstr)
|
|
{
|
|
retval = 1;
|
|
}
|
|
else
|
|
{
|
|
retval = 0;
|
|
}
|
|
}
|
|
if (!listFunc.sortAsc)
|
|
{
|
|
retval = retval * -1;
|
|
}
|
|
return retval;
|
|
}
|
|
}
|
|
|
|
<% '***** Sort routine called by headings ***** %>
|
|
<% '***** This requires the sortOrder function ***** %>
|
|
function sortList(sortby)
|
|
{
|
|
if (listFunc != null)
|
|
{
|
|
i= listFunc.sel;
|
|
if (i != -1)
|
|
{
|
|
lastsel = cachedList[i].id
|
|
}
|
|
|
|
if (sortby != listFunc.sortby)
|
|
{
|
|
listFunc.sortby = sortby;
|
|
listFunc.sortAsc = true;
|
|
}
|
|
else
|
|
{
|
|
listFunc.sortAsc = !listFunc.sortAsc;
|
|
}
|
|
|
|
var num = parseFloat(cachedList[sortby]);
|
|
if (isNaN(num))
|
|
{
|
|
cachedList.sort(sortOrder);
|
|
}
|
|
else
|
|
{
|
|
cachedList.sort(numOrder);
|
|
}
|
|
|
|
if (i != -1)
|
|
{
|
|
setLastSel(lastsel);
|
|
}
|
|
loadList();
|
|
}
|
|
}
|
|
|
|
|
|
<% '**** List Resorting function *** %>
|
|
function reSort()
|
|
{
|
|
//set our sortAsc so we aren't just reversing the list...
|
|
listFunc.sortAsc = !listFunc.sortAsc;
|
|
sortList(listFunc.sortby);
|
|
}
|
|
|
|
<% '**** List Delete function *** %>
|
|
function delItem(){
|
|
|
|
if (listFunc.sel >= 0)
|
|
{
|
|
listFunc.noupdate = true;
|
|
i=eval(listFunc.sel);
|
|
|
|
cachedList[i].deleted=true;
|
|
cachedList[i].updated=true;
|
|
i=i-1;
|
|
|
|
<% 'run through the list to find the Next non-deleted item %>
|
|
for (var j=i; j >=0; j--) {
|
|
if (cachedList[j].deleted){
|
|
}
|
|
else{
|
|
break
|
|
}
|
|
}
|
|
listFunc.sel=j;
|
|
loadList();
|
|
}
|
|
else{
|
|
alert("<%= L_SELECTITEM_TEXT %>");
|
|
}
|
|
}
|
|
|
|
<% '**** List Delete function *** %>
|
|
|
|
function initParam(paramVal,defaultVal)
|
|
{
|
|
if (paramVal == null)
|
|
{
|
|
return defaultVal;
|
|
}
|
|
return paramVal;
|
|
}
|
|
|
|
function addItem()
|
|
{
|
|
var i=cachedList.length;
|
|
listFunc.noupdate = true;
|
|
cachedList[i]=new listObj(i);
|
|
cachedList[i].newitem=true;
|
|
cachedList[i].updated=true;
|
|
listFunc.sel=i;
|
|
loadList();
|
|
}
|
|
|
|
function moveItem(dir){
|
|
sel = eval(listFunc.sel);
|
|
if (sel > -1){
|
|
if (!cachedList[sel].deleted){
|
|
if ((sel + dir >= 0) && (sel + dir < (cachedList.length))){
|
|
cachedList[sel].id += dir;
|
|
cachedList[sel].updated = true;
|
|
sel += dir;
|
|
cachedList[sel].id -= dir;
|
|
|
|
listFunc.sel = sel;
|
|
cachedList.sort(sortOrder);
|
|
loadList();
|
|
}
|
|
}
|
|
}
|
|
}
|