You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
372 lines
8.2 KiB
JavaScript
372 lines
8.2 KiB
JavaScript
//Copyright (c) 2001-2016 Aspose Pty Ltd. All Rights Reserved.
|
|
|
|
/*****************************************************
|
|
* Aspose.Cells.GridWeb Component Script File
|
|
* Copyright 2003-2011, All Rights Reserverd.
|
|
* V2.4.0
|
|
*****************************************************/
|
|
function onselectchange(o)
|
|
{
|
|
o.parentNode.firstChild.value=o.options[o.selectedIndex].value;
|
|
}
|
|
|
|
function oncheckboxclick(o)
|
|
{
|
|
o.parentNode.firstChild.value = o.checked? "TRUE":"FALSE";
|
|
}
|
|
|
|
function savePos(gform)
|
|
{
|
|
var pos = document.getElementById(gform.id + "_POS");
|
|
pos.value = document.body.scrollLeft + "|" + document.body.scrollTop;
|
|
}
|
|
|
|
function initPos(gform)
|
|
{
|
|
if (getattr(gform, "bodyleft") != null)
|
|
document.body.scrollLeft = getattr(gform, "bodyleft");
|
|
if (getattr(gform, "bodytop") != null)
|
|
document.body.scrollTop = getattr(gform, "bodytop");
|
|
}
|
|
|
|
function formValidateAll(gform)
|
|
{
|
|
var vresult = true;
|
|
var ftab = document.getElementById(gform.id + "_ETAB");
|
|
var decimalpoint = getattr(gform, "decimalpoint");
|
|
for (var r=0; r<ftab.rows.length; r++)
|
|
{
|
|
var row = ftab.rows[r];
|
|
var cell = row.cells[1];
|
|
if (cell.hasChildNodes() && cell.firstChild.hasChildNodes() && cell.firstChild.firstChild.type == "text")
|
|
{
|
|
if (!validateInput(cell, decimalpoint))
|
|
vresult = false;
|
|
}
|
|
}
|
|
return vresult;
|
|
}
|
|
|
|
function getattr(o, name)
|
|
{
|
|
if (o.attributes[name] != null)
|
|
return o.attributes[name].nodeValue;
|
|
return null;
|
|
}
|
|
|
|
function validateInput(o, decimalpoint)
|
|
{
|
|
var vtype = getattr(o, "vtype");
|
|
var value = o.firstChild.firstChild.value;
|
|
if (value == null || value == "")
|
|
{
|
|
if (getattr(o, "isrequired") == "1")
|
|
{
|
|
setInvalid(o);
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
setValid(o);
|
|
return true;
|
|
}
|
|
}
|
|
var formula = getattr(o, "formula");
|
|
var ufv = getattr(o, "ufv");
|
|
var nv;
|
|
|
|
if (vtype == "regex" || getattr(o, "regex") != null)
|
|
{
|
|
var rx = new RegExp(getattr(o, "regex"));
|
|
var matches = rx.exec(value);
|
|
if (matches == null || value != matches[0])
|
|
{
|
|
if (formula != null)
|
|
{
|
|
matches = rx.exec(formula);
|
|
if (matches == null || formula != matches[0])
|
|
{
|
|
setInvalid(o);
|
|
return false;
|
|
}
|
|
}
|
|
else if (ufv != null)
|
|
{
|
|
matches = rx.exec(ufv);
|
|
if (matches == null || ufv != matches[0])
|
|
{
|
|
setInvalid(o);
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
setInvalid(o);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
switch (vtype)
|
|
{
|
|
case "regex":
|
|
setValid(o);
|
|
return true;
|
|
break;
|
|
|
|
case "bool":
|
|
var bv = value.toUpperCase();
|
|
if (bv == "TRUE" || bv == "FALSE")
|
|
{
|
|
setValid(o);
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
setInvalid(o);
|
|
return false;
|
|
}
|
|
break;
|
|
|
|
case "number":
|
|
nv = validatorConvert(value, "Double", decimalpoint);
|
|
if (nv == null && ufv != null)
|
|
nv = validatorConvert(ufv, "Double", decimalpoint);
|
|
if (nv != null)
|
|
{
|
|
setValid(o);
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
setInvalid(o);
|
|
return false;
|
|
}
|
|
break;
|
|
|
|
case "int":
|
|
nv = validatorConvert(value, "Integer", decimalpoint);
|
|
if (nv == null && ufv != null)
|
|
nv = validatorConvert(ufv, "Integer", decimalpoint);
|
|
if (nv != null)
|
|
{
|
|
setValid(o);
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
setInvalid(o);
|
|
return false;
|
|
}
|
|
break;
|
|
|
|
case "date":
|
|
nv = validatorConvert(value, "Date", decimalpoint);
|
|
if (nv == null && ufv != null)
|
|
nv = validatorConvert(ufv, "Date", decimalpoint);
|
|
if (nv != null)
|
|
{
|
|
setValid(o);
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
setInvalid(o);
|
|
return false;
|
|
}
|
|
break;
|
|
|
|
case "datetime":
|
|
nv = validatorConvert(value, "Date", decimalpoint);
|
|
if (nv == null)
|
|
nv = validatorConvert(value, "DateTime", decimalpoint);
|
|
if (nv == null && ufv != null)
|
|
{
|
|
nv = validatorConvert(ufv, "Date", decimalpoint);
|
|
if (nv == null)
|
|
nv = validatorConvert(ufv, "DateTime", decimalpoint);
|
|
}
|
|
if (nv != null)
|
|
{
|
|
setValid(o);
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
setInvalid(o);
|
|
return false;
|
|
}
|
|
break;
|
|
|
|
case "customfunction":
|
|
var cvf = eval(getattr(o, "cvfn"));
|
|
var cvfResult = cvf(o, value);
|
|
if (!cvfResult)
|
|
{
|
|
if (formula != null)
|
|
cvfResult = cvf(o, formula);
|
|
else if (ufv != null)
|
|
cvfResult = cvf(o, ufv);
|
|
}
|
|
if (cvfResult)
|
|
{
|
|
setValid(o);
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
setInvalid(o);
|
|
return false;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
setValid(o);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
function validatorConvert(op, dataType, decimalpoint) {
|
|
var num, cleanInput, m, exp;
|
|
if (dataType == "Integer") {
|
|
exp = /^\s*[-\+]?\d+\s*$/;
|
|
if (op.match(exp) == null)
|
|
return null;
|
|
num = parseInt(op, 10);
|
|
return (isNaN(num) ? null : num);
|
|
}
|
|
else if(dataType == "Double") {
|
|
if (decimalpoint == null)
|
|
decimalpoint = ".";
|
|
exp = new RegExp("^\\s*([-\\+])?(\\d+)?(\\" + decimalpoint + "(\\d+))?\\s*$");
|
|
m = op.match(exp);
|
|
if (m == null)
|
|
return null;
|
|
cleanInput = (m[1]!=null?m[1]:"") + (m[2].length>0 ? m[2] : "0") + "." + m[4];
|
|
num = parseFloat(cleanInput);
|
|
return (isNaN(num) ? null : num);
|
|
}
|
|
else if (dataType == "Date") {
|
|
var yearFirstExp = /^(\d{4})-(\d{2})-(\d{2})$/;
|
|
m = op.match(yearFirstExp);
|
|
var day, month, year;
|
|
if (m != null) {
|
|
year = m[1];
|
|
month = m[2];
|
|
day = m[3];
|
|
}
|
|
else {
|
|
return null;
|
|
}
|
|
month-=1;
|
|
var date = new Date(year, month, day);
|
|
return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate()) ? date.valueOf() : null;
|
|
}
|
|
else if (dataType == "DateTime") {
|
|
var yearFirstExp = /^(\d{4})-(\d{2})-(\d{2}) (\d+)\:(\d+)\:(\d+)$/;
|
|
m = op.match(yearFirstExp);
|
|
var day, month, year, hour, minu, sec;
|
|
if (m != null) {
|
|
year = m[1];
|
|
month = m[2];
|
|
day = m[3];
|
|
hour = m[4];
|
|
minu = m[5];
|
|
sec = m[6];
|
|
}
|
|
else {
|
|
return null;
|
|
}
|
|
month-=1;
|
|
var date = new Date(year, month, day, hour, minu, sec);
|
|
return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate() && hour == date.getHours() && minu == date.getMinutes() && sec == date.getSeconds()) ? date.valueOf() : null;
|
|
}
|
|
else {
|
|
return op.toString();
|
|
}
|
|
}
|
|
|
|
function setValid(o)
|
|
{
|
|
o.style.border = "";
|
|
}
|
|
|
|
function setInvalid(o)
|
|
{
|
|
o.style.border = "1px dotted red";
|
|
}
|
|
|
|
function dateBtnClick(gform, o)
|
|
{
|
|
var Calendar = o.calendar;
|
|
if (Calendar != null)
|
|
{
|
|
o.calendar = null;
|
|
Calendar.removeNode(true);
|
|
}
|
|
else
|
|
{
|
|
Calendar = document.createElement("SPAN");
|
|
document.body.appendChild(Calendar);
|
|
Calendar.dateBtn = o;
|
|
Calendar.style.position = "absolute";
|
|
Calendar.style.display = "block";
|
|
Calendar.style.width = 280;
|
|
Calendar.style.height = 150;
|
|
Calendar.style.zIndex = 99999999;
|
|
o.calendar = Calendar;
|
|
|
|
Calendar.style.posLeft = document.body.scrollLeft + event.clientX;
|
|
Calendar.style.posTop = document.body.scrollTop + event.clientY;
|
|
var left = Calendar.offsetLeft - event.offsetX - 1;
|
|
if (left < 0)
|
|
left = 0;
|
|
var top = Calendar.offsetTop + o.offsetHeight - event.offsetY - 1;
|
|
if (top < 0)
|
|
top = 0;
|
|
Calendar.style.posLeft = left;
|
|
Calendar.style.posTop = top;
|
|
|
|
Calendar.addBehavior(gform.acw_client_path+"calendar.htc");
|
|
if (Calendar.readyState == "complete")
|
|
Calendar.attachEvent("onpropertychange", onCalendarChange);
|
|
else
|
|
Calendar.onreadystatechange = onCalendarReady;
|
|
}
|
|
}
|
|
|
|
function onCalendarReady()
|
|
{
|
|
var Calendar = event.srcElement;
|
|
if (Calendar.readyState == "complete")
|
|
Calendar.attachEvent("onpropertychange", onCalendarChange);
|
|
}
|
|
|
|
function onCalendarChange()
|
|
{
|
|
var Calendar = event.srcElement;
|
|
var ActiveCell = Calendar.dateBtn.parentElement.firstChild;
|
|
if (event.propertyName == "day")
|
|
{
|
|
var day = Calendar.day.toString();
|
|
if (day.length == 1)
|
|
day = '0' + day;
|
|
var month = Calendar.month.toString();
|
|
if (month.length == 1)
|
|
month = '0' + month;
|
|
var datestr = Calendar.year.toString() + '-' + month + '-' + day;
|
|
ActiveCell.value = datestr;
|
|
Calendar.dateBtn.calendar = null;
|
|
Calendar.removeNode(true);
|
|
}
|
|
}
|
|
|
|
function enableAll(gform)
|
|
{
|
|
var eles = gform.getElementsByTagName("INPUT");
|
|
for (var i=0; i<eles.length; i++)
|
|
{
|
|
eles[i].disabled = false;
|
|
}
|
|
}
|