new Files

This commit is contained in:
2025-04-23 13:27:25 +08:00
parent f21d8ef2c4
commit 1a86b9bfc1
107 changed files with 72655 additions and 258 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,66 @@
<html>
<head>
<meta http-equiv="content-type" content="text/xml; charset=gb2312" />
<title>My97DatePicker</title>
<script type="text/javascript" src="config.js" charset=gb2312></script>
<script>
//var l = location;
if(parent==window)
location.href = 'http://www.my97.net';
/*
else{
var start=l.href.indexOf('#')+1;
if(start>0){
document.domain = l.href.substr(start);
}
}
*/
var $d, $dp, $pdp = parent.$dp, $dt, $tdt, $sdt, $lastInput, $IE=$pdp.ie, $FF = $pdp.ff,$OPERA=$pdp.opera, $ny, $cMark = false;
//˵<><CBB5><EFBFBD><EFBFBD>flat<61><74>ʱ,<2C><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>$dp
if ($pdp.eCont) {
$dp = {};
for (var p in $pdp) {
$dp[p] = $pdp[p];
}
}
else{
$dp = $pdp;
}
$dp.getLangIndex = function(name){
var arr = langList;
for (var i = 0; i < arr.length; i++) {
if (arr[i].name == name) {
return i;
}
}
return -1;
}
$dp.getLang = function(name){
var index = $dp.getLangIndex(name);
if (index == -1) {
index = 0;
}
return langList[index];
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
$dp.realLang = $dp.getLang($dp.lang);
document.write("<script src='lang/" + $dp.realLang.name + ".js' charset='" + $dp.realLang.charset + "'><\/script>");
//<2F><><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD>б<EFBFBD><D0B1>ļ<EFBFBD>
for (var i = 0; i < skinList.length; i++) {
document.write('<link rel="stylesheet" type="text/css" href="skin/' + skinList[i].name + '/datepicker.css" title="' + skinList[i].name + '" charset="' + skinList[i].charset + '" disabled="true"/>');
}
</script>
<script type="text/javascript" src="calendar.js" charset="gb2312"></script>
</head>
<body leftmargin="0" topmargin="0" onLoad="$c.autoSize()" tabindex=0>
</body>
</html>
<script>
new My97DP();
</script>

View File

@ -0,0 +1,678 @@
/*
* My97 DatePicker 4.8.5
* License: http://www.my97.net/license.asp
*/
var $dp, WdatePicker;
(function () {
var Config = {
$langList: [{
name: 'en',
charset: 'UTF-8'
},
{
name: 'zh-cn',
charset: 'gb2312'
},
{
name: 'zh-tw',
charset: 'GBK'
}
],
$skinList: [{
name: 'default',
charset: 'gb2312'
},
{
name: 'whyGreen',
charset: 'gb2312'
},
{
name: 'blue',
charset: 'gb2312'
},
{
name: 'green',
charset: 'gb2312'
},
{
name: 'simple',
charset: 'gb2312'
},
{
name: 'ext',
charset: 'gb2312'
},
{
name: 'blueFresh',
charset: 'gb2312'
},
{
name: 'twoer',
charset: 'gb2312'
},
{
name: 'YcloudRed',
charset: 'gb2312'
},
{
name: 'thinkpap',
charset: 'gb2312'
}
],
$wdate: false,
$crossFrame: false,
$preLoad: false,
$dpPath: '',
doubleCalendar: false,
enableKeyboard: true,
enableInputMask: true,
autoUpdateOnChanged: null,
weekMethod: 'MSExcel',
position: {},
lang: 'auto',
skin: 'default',
dateFmt: 'yyyy年MM月dd日 HH时mm分',
realDateFmt: 'yyyy-MM-dd',
realTimeFmt: 'HH:mm:ss',
realFullFmt: '%Date %Time',
minDate: '0001-01-01 00:00:00',
maxDate: '9999-12-31 23:59:59',
minTime: '00:00:00',
maxTime: '23:59:59',
startDate: '',
alwaysUseStartDate: false,
yearOffset: 1911,
firstDayOfWeek: 0,
isShowWeek: false,
highLineWeekDay: true,
isShowClear: true,
isShowToday: true,
isShowOK: true,
isShowOthers: true,
readOnly: false,
errDealMode: 0,
autoPickDate: null,
qsEnabled: true,
autoShowQS: false,
hmsMenuCfg: {
H: [1, 6],
m: [5, 6],
s: [15, 4]
},
opposite: false,
specialDates: null,
specialDays: null,
disabledDates: null,
disabledDays: null,
onpicking: null,
onpicked: null,
onclearing: null,
oncleared: null,
ychanging: null,
ychanged: null,
Mchanging: null,
Mchanged: null,
dchanging: null,
dchanged: null,
Hchanging: null,
Hchanged: null,
mchanging: null,
mchanged: null,
schanging: null,
schanged: null,
eCont: null,
vel: null,
elProp: '',
errMsg: '',
quickSel: [],
has: {},
getRealLang: function () {
var arr = Config.$langList;
for (var i = 0; i < arr.length; i++) {
if (arr[i].name == this.lang) {
return arr[i]
}
}
return arr[0]
}
};
WdatePicker = main;
var w = window,
emptyEl = {
innerHTML: ''
},
d = 'document',
de = 'documentElement',
tag = 'getElementsByTagName',
dptop, jsPath, $IE, $FF, $OPERA;
var ua = navigator.userAgent,
isTablet = /(?:iPad|PlayBook)/.test(ua) || (/(?:Android)/.test(ua) && !/(?:Mobile)/.test(ua)),
isPhone = /(?:iPhone)/.test(ua) || /(?:Android)/.test(ua) && /(?:Mobile)/.test(ua);
var appName = navigator.appName;
if (appName == 'Microsoft Internet Explorer') $IE = true;
else if (appName == 'Opera') $OPERA = true;
else $FF = true;
jsPath = Config.$dpPath || getJsPath();
if (Config.$wdate) {
loadCSS(jsPath + 'skin/WdatePicker.css')
}
dptop = w;
if (Config.$crossFrame) {
try {
while (dptop.parent != dptop && dptop.parent[d][tag]('frameset').length == 0) {
dptop = dptop.parent
}
} catch (e) {}
}
if (!dptop.$dp) {
dptop.$dp = {
ff: $FF,
ie: $IE,
opera: $OPERA,
status: 0,
defMinDate: Config.minDate,
defMaxDate: Config.maxDate,
isTablet: isTablet,
isPhone: isPhone,
isTouch: isTablet || isPhone
}
}
initTopDP();
if (Config.$preLoad && $dp.status == 0) {
dpAttachEvent(w, 'onload', function () {
main(null, true)
})
}
var docEventName = $dp.isTouch ? 'ontouchstart' : 'onmousedown';
if (!w[d].docMD) {
dpAttachEvent(w[d], docEventName, disposeDP, true);
w[d].docMD = true
}
if (!dptop[d].docMD) {
dpAttachEvent(dptop[d], docEventName, disposeDP, true);
dptop[d].docMD = true
}
dpAttachEvent(w, 'onunload', function () {
if ($dp.dd) {
display($dp.dd, "none")
}
});
function initTopDP() {
try {
dptop[d], dptop.$dp = dptop.$dp || {}
} catch (e) {
dptop = w;
$dp = $dp || {}
}
var obj = {
win: w,
$: function (el) {
return (typeof el == 'string') ? w[d].getElementById(el) : el
},
$D: function (id, arg) {
return this.$DV(this.$(id).value, arg)
},
$DV: function (v, arg) {
if (v != '') {
this.dt = $dp.cal.splitDate(v, $dp.cal.dateFmt);
if (arg) {
for (var p in arg) {
if (this.dt[p] === undefined) {
this.errMsg = 'invalid property:' + p
} else {
this.dt[p] += arg[p];
if (p == 'M') {
var offset = arg['M'] > 0 ? 1 : 0;
var tmpday = new Date(this.dt['y'], this.dt['M'], 0).getDate();
this.dt['d'] = Math.min(tmpday + offset, this.dt['d'])
}
}
}
}
if (this.dt.refresh()) {
return this.dt
}
}
return ''
},
show: function () {
var divs = dptop[d].getElementsByTagName('div'),
maxZIndex = 1e5;
for (var i = 0; i < divs.length; i++) {
var curZ = parseInt(divs[i].style.zIndex);
if (curZ > maxZIndex) {
maxZIndex = curZ
}
}
this.dd.style.zIndex = maxZIndex + 2;
display(this.dd, "block");
display(this.dd.firstChild, "")
},
unbind: function (el) {
el = this.$(el);
if (el.initcfg) {
dpDetachEvent(el, 'onclick', function () {
main(el.initcfg)
});
dpDetachEvent(el, 'onfocus', function () {
main(el.initcfg)
})
}
},
hide: function () {
display(this.dd, "none")
},
attachEvent: dpAttachEvent
};
for (var p in obj) {
dptop.$dp[p] = obj[p];
}
$dp = dptop.$dp
}
function dpAttachEvent(o, sType, fHandler, useCapture) {
if (o.addEventListener) {
var shortTypeName = sType.replace(/on/, "");
fHandler._ieEmuEventHandler = function (e) {
return fHandler(e)
};
o.addEventListener(shortTypeName, fHandler._ieEmuEventHandler, useCapture)
} else {
o.attachEvent(sType, fHandler)
}
}
function dpDetachEvent(o, sType, fHandler) {
if (o.removeEventListener) {
var shortTypeName = sType.replace(/on/, "");
fHandler._ieEmuEventHandler = function (e) {
return fHandler(e)
};
o.removeEventListener(shortTypeName, fHandler._ieEmuEventHandler, false)
} else {
o.detachEvent(sType, fHandler)
}
}
function compareCfg(o1, o2, issub) {
if (typeof o1 != typeof o2) return false;
if (typeof o1 == 'object') {
if (!issub) {
for (var o in o1) {
if (typeof o2[o] == 'undefined') return false;
if (!compareCfg(o1[o], o2[o], true)) return false
}
}
return true
} else if (typeof o1 == 'function' && typeof o2 == 'function') {
return o1.toString() == o2.toString()
} else {
return o1 == o2
}
}
function getJsPath() {
var path, tmp, scripts = w[d][tag]("script");
for (var i = 0; i < scripts.length; i++) {
path = scripts[i].getAttribute('src') || '';
path = path.substr(0, path.toLowerCase().indexOf('wdatepicker.js'));
var tmp = path.lastIndexOf("/");
if (tmp > 0) path = path.substring(0, tmp + 1);
if (path) break
}
return path
}
function loadCSS(path, title, charset) {
var head = w[d][tag]('HEAD').item(0),
style = w[d].createElement('link');
if (head) {
style.href = path;
style.rel = 'stylesheet';
style.type = 'text/css';
if (title) style.title = title;
if (charset) style.charset = charset;
head.appendChild(style)
}
}
function getAbsM(w) {
w = w || dptop;
var lm = 0,
tm = 0;
while (w != dptop) {
var ifs = w.parent[d][tag]('iframe');
for (var i = 0; i < ifs.length; i++) {
try {
if (ifs[i].contentWindow == w) {
var rc = getBound(ifs[i]);
lm += rc.left;
tm += rc.top;
break
}
} catch (e) {}
}
w = w.parent
}
return {
'leftM': lm,
'topM': tm
}
}
function getBound(o, ignoreScr) {
if (o.getBoundingClientRect) {
return o.getBoundingClientRect()
} else {
var patterns = {
ROOT_TAG: /^body|html$/i,
OP_SCROLL: /^(?:inline|table-row)$/i
};
var hssFixed = false,
win = null,
t = o.offsetTop,
l = o.offsetLeft,
r = o.offsetWidth,
b = o.offsetHeight;
var parentNode = o.offsetParent;
if (parentNode != o) {
while (parentNode) {
l += parentNode.offsetLeft;
t += parentNode.offsetTop;
if (getStyle(parentNode, 'position').toLowerCase() == 'fixed') hssFixed = true;
else if (parentNode.tagName.toLowerCase() == "body") win = parentNode.ownerDocument.defaultView;
parentNode = parentNode.offsetParent
}
}
parentNode = o.parentNode;
while (parentNode.tagName && !patterns.ROOT_TAG.test(parentNode.tagName)) {
if (parentNode.scrollTop || parentNode.scrollLeft) {
if (!patterns.OP_SCROLL.test(display(parentNode))) {
if (!$OPERA || parentNode.style.overflow !== 'visible') {
l -= parentNode.scrollLeft;
t -= parentNode.scrollTop
}
}
}
parentNode = parentNode.parentNode
}
if (!hssFixed) {
var scr = getScroll(win);
l -= scr.left;
t -= scr.top
}
r += l;
b += t;
return {
'left': l,
'top': t,
'right': r,
'bottom': b
}
}
}
function getWH(w) {
w = w || dptop;
var doc = w[d],
width = (w.innerWidth) ? w.innerWidth : (doc[de] && doc[de].clientWidth) ? doc[de].clientWidth : doc.body.offsetWidth,
height = (w.innerHeight) ? w.innerHeight : (doc[de] && doc[de].clientHeight) ? doc[de].clientHeight : doc.body.offsetHeight;
return {
'width': width,
'height': height
}
}
function getScroll(w) {
w = w || dptop;
var doc = w[d],
doce = doc[de],
db = doc.body;
doc = (doce && doce.scrollTop != null && (doce.scrollTop > db.scrollTop || doce.scrollLeft > db.scrollLeft)) ? doce : db;
return {
'top': doc.scrollTop,
'left': doc.scrollLeft
}
}
function disposeDP(e) {
try {
var src = e ? (e.srcElement || e.target) : null;
if ($dp.cal && !$dp.eCont && $dp.dd && src != $dp.el && $dp.dd.style.display == 'block') {
$dp.cal.close()
}
} catch (e) {}
}
function dpLoaded() {
$dp.status = 2
}
var isDptopReady, dptopInterval;
function main(initcfg, preLoad) {
if (!$dp) return;
initcfg.el = initcfg.el || w[d].activeElement;
if ($dp.isTouch) {
try {
initcfg.el.readOnly = true;
initcfg.el.blur()
} catch (e) {}
}
initTopDP();
var cfg = {};
for (var p in initcfg) {
cfg[p] = initcfg[p]
}
for (var p in Config) {
if (p.substring(0, 1) != '$' && cfg[p] === undefined) {
cfg[p] = Config[p]
}
}
if (preLoad) {
if (!dptopReady()) {
dptopInterval = dptopInterval || setInterval(function () {
if (dptop[d].readyState == 'complete') {
clearInterval(dptopInterval);
}
main(null, true)
}, 50);
return
}
if ($dp.status == 0) {
$dp.status = 1;
cfg.el = emptyEl;
showPicker(cfg, true)
} else {
return
}
} else if (cfg.eCont) {
cfg.eCont = $dp.$(cfg.eCont);
cfg.el = emptyEl;
cfg.autoPickDate = true;
cfg.qsEnabled = false;
showPicker(cfg)
} else {
if (Config.$preLoad && $dp.status != 2) return;
if (!cfg.el) {
var evt = SearchEvent();
if (w.event === evt || evt) {
cfg.srcEl = evt.srcElement || evt.target;
evt.cancelBubble = true
}
}
cfg.el = cfg.el = $dp.$(cfg.el || cfg.srcEl);
if (cfg.el == null) {
alert('WdatePicker:el is null!\nexample:onclick="WdatePicker({el:this})"');
return
}
try {
if (!cfg.el || cfg.el['My97Mark'] === true || cfg.el.disabled || ($dp.dd && display($dp.dd) != 'none' && $dp.dd.style.left != '-970px')) {
if (cfg.el['My97Mark']) cfg.el['My97Mark'] = false;
return
}
} catch (e) {}
if (evt && cfg.el.nodeType == 1 && !compareCfg(cfg.el.initcfg, initcfg)) {
$dp.unbind(cfg.el);
dpAttachEvent(cfg.el, evt.type == 'focus' ? 'onclick' : 'onfocus', function () {
main(initcfg)
});
cfg.el.initcfg = initcfg;
}
showPicker(cfg)
}
function dptopReady() {
if ($IE && dptop != w && dptop[d].readyState != 'complete') return false;
return true
}
function SearchEvent() {
if ($FF) {
try {
var count = 0;
func = SearchEvent.caller;
while (func != null) {
var arg0 = func.arguments[0];
if (arg0 && (arg0 + '').indexOf('Event') >= 0 || (count++) > 97) {
return arg0
}
func = func.caller
}
} catch (e) {}
return null
}
return event
}
}
function getStyle(obj, attribute) {
return obj.currentStyle ? obj.currentStyle[attribute] : document.defaultView.getComputedStyle(obj, false)[attribute]
}
function display(obj, value) {
if (obj) {
if (value != null) obj.style.display = value;
else return getStyle(obj, 'display')
}
}
function showPicker(cfg, preLoad) {
var nodeName = cfg.el ? cfg.el.nodeName : 'INPUT';
if (preLoad || cfg.eCont || new RegExp(/input|textarea|div|field|span|p|a/ig).test(nodeName)) {
cfg.elProp = cfg.elProp || nodeName == 'INPUT' ? 'value' : 'innerHTML'
} else {
return
}
if (cfg.lang == 'auto') {
cfg.lang = $IE ? navigator.browserLanguage.toLowerCase() : navigator.language.toLowerCase()
}
if (!cfg.eCont) {
for (var p in cfg) {
$dp[p] = cfg[p]
}
}
if (!$dp.dd || cfg.eCont || ($dp.dd && (cfg.getRealLang().name != $dp.dd.lang || cfg.skin != $dp.dd.skin))) {
if (cfg.eCont) {
ddInit(cfg.eCont, cfg)
} else {
$dp.dd = dptop[d].createElement("DIV");
$dp.dd.style.cssText = 'position:absolute';
dptop[d].body.appendChild($dp.dd);
ddInit($dp.dd, cfg);
if (preLoad) {
$dp.dd.style.left = $dp.dd.style.top = '-970px'
} else {
$dp.show();
setPos($dp)
}
}
} else if ($dp.cal) {
$dp.show();
$dp.cal.init();
if (!$dp.eCont) setPos($dp)
}
function ddInit(cont, cfg) {
var dm = dptop[d].domain,
isCross = false,
defHtml = '<iframe hideFocus=true width=9 height=7 frameborder=0 border=0 scrolling=no src="about:blank"></iframe>';
cont.innerHTML = defHtml;
var langList = Config.$langList,
skinList = Config.$skinList,
doc;
try {
doc = cont.lastChild.contentWindow[d]
} catch (e) {
isCross = true;
cont.removeChild(cont.lastChild);
var ifr = dptop[d].createElement("iframe");
ifr.hideFocus = true;
ifr.frameBorder = 0;
ifr.scrolling = 'no';
ifr.src = "javascript:(function(){var d=document;d.open();d.domain='" + dm + "';})()";
cont.appendChild(ifr);
setTimeout(function () {
doc = cont.lastChild.contentWindow[d];
ddWrite()
}, 97);
return
}
ddWrite();
function ddWrite() {
var realLang = cfg.getRealLang(),
ver = '4.9.0b3';
cont.lang = realLang.name;
cont.skin = cfg.skin;
var h = ['<head><script>', '', 'var doc=document, $d, $dp, $cfg=doc.cfg, $pdp = parent.$dp, $dt, $tdt, $sdt, $lastInput, $IE=$pdp.ie, $FF = $pdp.ff,$OPERA=$pdp.opera, $ny, $cMark = false;', 'if($cfg.eCont){$dp = {};for(var p in $pdp)$dp[p]=$pdp[p];}else{$dp=$pdp;};for(var p in $cfg){$dp[p]=$cfg[p];}', 'if(!$dp.isTouch)doc.oncontextmenu=function(){try{$c._fillQS(!$dp.has.d,1);showB($d.qsDivSel);}catch(e){};return false;};', '</script><script src=', jsPath, 'lang/', realLang.name, '.js?' + ver + ' charset=', realLang.charset, '></script>'];
if (isCross) h[1] = 'document.domain="' + dm + '";';
for (var i = 0; i < skinList.length; i++) {
if (skinList[i].name == cfg.skin) {
h.push('<link rel="stylesheet" type="text/css" href="' + jsPath + 'skin/' + skinList[i].name + '/datepicker.css?');
h.push(ver);
h.push('" charset="' + skinList[i].charset + '"/>')
}
}
h.push('<script src="' + jsPath + 'calendar.js?');
h.push(ver);
h.push('"></script>');
h.push('</head><body leftmargin="0" topmargin="0" tabindex=0></body></html>');
h.push('<script>var t;t=t||setInterval(function(){if((typeof(doc.ready)=="boolean"&&doc.ready)||doc.readyState=="complete"){new My97DP();$cfg.onload();$c.autoSize();$cfg.setPos($dp);clearInterval(t);}},20);</script>');
cfg.setPos = setPos;
cfg.onload = dpLoaded;
doc.write('<html>');
doc.cfg = cfg;
doc.write(h.join(''));
doc.close()
}
}
function setPos(dp) {
var l = dp.position.left,
t = dp.position.top,
el = dp.el;
if (el == emptyEl) return;
if (el != dp.srcEl && (display(el) == 'none' || el.type == 'hidden')) el = dp.srcEl;
var objxy = getBound(el),
mm = getAbsM(w),
currWH = getWH(dptop),
scr = getScroll(dptop),
ddHeight = $dp.dd.offsetHeight,
ddWidth = $dp.dd.offsetWidth;
if (isNaN(t)) t = 0;
if ((mm.topM + objxy.bottom + ddHeight > currWH.height) && (mm.topM + objxy.top - ddHeight > 0)) {
t += scr.top + mm.topM + objxy.top - ddHeight - 2
} else {
t += scr.top + mm.topM + objxy.bottom;
var offsetT = t - scr.top + ddHeight - currWH.height;
if (offsetT > 0) t -= offsetT
}
if (isNaN(l)) l = 0;
l += scr.left + Math.min(mm.leftM + objxy.left, currWH.width - ddWidth - 5) - ($IE ? 2 : 0);
dp.dd.style.top = (t + 2) + 'px';
dp.dd.style.left = l + 'px'
}
}
})();

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,14 @@
var $lang={
errAlertMsg: "Invalid date or the date out of range,redo or not?",
aWeekStr: ["wk", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
aLongWeekStr:["wk","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
aMonStr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
aLongMonStr: ["January","February","March","April","May","June","July","August","September","October","November","December"],
clearStr: "Clear",
todayStr: "Today",
okStr: "OK",
updateStr: "OK",
timeStr: "Time",
quickStr: "Quick Selection",
err_1: 'MinDate Cannot be bigger than MaxDate!'
}

View File

@ -0,0 +1,14 @@
var $lang={
errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u8303\u56F4,\u9700\u8981\u64A4\u9500\u5417?",
aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],
aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],
aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"],
aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],
clearStr: "\u6E05\u7A7A",
todayStr: "\u4ECA\u5929",
okStr: "\u786E\u5B9A",
updateStr: "\u786E\u5B9A",
timeStr: "\u65F6\u95F4",
quickStr: "\u5FEB\u901F\u9009\u62E9",
err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u65E5\u671F!'
}

View File

@ -0,0 +1,14 @@
var $lang={
errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u7BC4\u570D,\u9700\u8981\u64A4\u92B7\u55CE?",
aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],
aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],
aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"],
aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],
clearStr: "\u6E05\u7A7A",
todayStr: "\u4ECA\u5929",
okStr: "\u78BA\u5B9A",
updateStr: "\u78BA\u5B9A",
timeStr: "\u6642\u9593",
quickStr: "\u5FEB\u901F\u9078\u64C7",
err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u65BC\u6700\u5927\u65E5\u671F!'
}

View File

@ -0,0 +1,11 @@
.Wdate{
border:#999 1px solid;
height:20px;
background:#fff url(datePicker.gif) no-repeat right;
}
.Wdate::-ms-clear{display:none;}
.WdateFmtErr{
font-weight:bold;
color:red;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,328 @@
/**
* yyh & kimi from mb518.com
* 2019-3-25
**/
.WdateDiv {
width: 216px;
background-color: #FFF;
border-radius: 5px;
border: 1px solid #cecece;
}
.WdateDiv2 {
width: 432px;
}
.WdateDiv > div:nth-child(3) {
padding: 0px 0.375em;
}
.WdateDiv .NavImg a {
cursor: pointer;
display: block;
width: 1em;
height: 1em;
margin-top: 0.5em;
}
.WdateDiv .NavImgll a {
float: left;
background: url(img.gif) no-repeat;
background-size: 400%;
}
.WdateDiv .NavImgl a {
float: left;
background: url(img.gif) no-repeat -1em 0;
background-size: 400%;
}
.WdateDiv .NavImgr a {
float: right;
background: url(img.gif) no-repeat -2em 0;
background-size: 400%;
}
.WdateDiv .NavImgrr a {
float: right;
background: url(img.gif) no-repeat -3em 0;
background-size: 400%;
}
.WdateDiv #dpTitle {
height: 1.875em;
padding: 0.1875em 0.3125em;
}
.WdateDiv #dpTitle > div:nth-child(3),
.WdateDiv #dpTitle > div:nth-child(4) {
margin: 0px 0.8125em;
}
.WdateDiv .yminput {
margin-top: 0.375em;
text-align: center;
border: 0px;
height: 1.75em;
width: 3.125em;
color: #333;
background-color: #eefaff;
outline: none;
cursor: pointer;
font-size: 0.8125em;
border-radius: 0;
}
.WdateDiv .yminputfocus {
font-size: 0.8125em;
margin-top: 0.375em;
text-align: center;
border: 0;
color: #333;
height: 1.25em;
width: 3.125em;
outline: none;
background-color: #eefaff;
}
.WdateDiv .menuSel {
z-index: 1;
position: absolute;
background-color: #FFFFFF;
display: none;
padding: 0.3125em;
border-radius: 3px;
box-shadow: rgb(204, 204, 204) 0px 0px 2px 2px;
}
.WdateDiv .menu {
cursor: pointer;
background-color: #fff;
color: #333;
text-align: center;
}
.WdateDiv .menuOn {
cursor: pointer;
text-align: center;
background-color: #d6f2ff;
border-radius: 3px;
}
.WdateDiv .invalidMenu {
color: #aaa;
}
.WdateDiv .YMenu {
margin-top: 1.875em;
}
.WdateDiv .MMenu {
margin-top: 1.875em;
box-shadow: rgb(204, 204, 204) 0px 0px 2px 2px;
padding: 0.3125em;
border-radius: 3px;
*width: 3.875em;
}
.WdateDiv .hhMenu {
margin-top: -5.625em;
margin-left: 1.625em;
}
.WdateDiv .mmMenu {
margin-top: -2.875em;
margin-left: 1.625em;
}
.WdateDiv .ssMenu {
margin-top: -1.5em;
margin-left: 1.625em;
}
.WdateDiv .Wweek {
text-align: center;
background: #DAF3F5;
border-right: #BDEBEE 1px solid;
}
.WdateDiv .MTitle {
background-color: #f3f3f3;
border-radius: 5px;
color: #666;
}
.WdateDiv .WdayTable2 {
border-collapse: collapse;
}
.WdateDiv .WdayTable2 table {
border: 0;
}
.WdateDiv .WdayTable {
font-size: 0.75em;
line-height: 1.5em;
color: #333;
}
.WdateDiv .WdayTable td {
text-align: center;
border-bottom: 1px solid #f3f3f3;
padding: 0.1875em 0;
}
.WdateDiv .Wday {
cursor: pointer;
}
.WdateDiv .WdayOn {
cursor: pointer;
border-radius: 3px;
background-color: #C0EBEF;
}
.WdateDiv .Wwday {
cursor: pointer;
color: #ab1e1e;
}
.WdateDiv .WwdayOn {
cursor: pointer;
border-radius: 3px;
background-color: #C0EBEF;
}
.WdateDiv .Wtoday {
cursor: pointer;
color: blue;
}
.WdateDiv .Wselday {
background-color: #35baf6;
border-radius: 3px;
color: #fff;
}
.WdateDiv .WspecialDay {
background-color: #66F4DF;
}
.WdateDiv .WotherDay {
cursor: pointer;
color: #8585e1;
}
.WdateDiv .WotherDayOn {
cursor: pointer;
background-color: #d6f2ff;
border-radius: 3px;
}
.WdateDiv .WinvalidDay {
color: #aaa;
}
.WdateDiv #dpTime {
margin: 0.1875em 0 0.1875em 0.625em;
}
.WdateDiv #dpTime #dpTimeStr {
margin-left: 0.0625em;
color: #333;
font-size: 0.75em;
}
.WdateDiv #dpTime table:nth-child(4) {
font-size: 100%;
}
.WdateDiv #dpTime table:nth-child(-n+3) {
font-size: 0.75em;
}
.WdateDiv #dpTime input {
-webkit-appearance: none;
font-size: 0.75em;
height: 1.25em;
width: 1.875em;
text-align: center;
color: #333;
border: 0;
background-color: #eefaff;
border-radius: 0;
padding: 0;
}
.WdateDiv #dpTime input:disabled {
background-color: #e7e7e7;
}
.WdateDiv #dpTime .tB {
border-right: 0px;
}
.WdateDiv #dpTime .tE {
border-left: 0;
border-right: 0;
}
.WdateDiv #dpTime .tm {
width: 0.9375em;
border-left: 0;
border-right: 0;
}
/*.WdateDiv #dpTime button {
font-size: 0.75em;
}*/
.WdateDiv #dpTime #dpTimeUp {
height: 0.625em;
width: 0.8125em;
border: 0px;
background: url(img.gif) no-repeat -2em -1em;
background-size: 450%;
overflow: hidden;
}
.WdateDiv #dpTime #dpTimeDown {
height: 0.625em;
width: 0.8125em;
border: 0px;
background: url(img.gif) no-repeat -2em -1.625em;
background-size: 450%;
}
.WdateDiv #dpQS {
float: left;
margin-right: 0.1875em;
margin-top: 0.3125em;
background: url(img.gif) no-repeat 0px -1em;
background-size: 320%;
width: 1.25em;
height: 1.25em;
cursor: pointer;
margin-left: 0.375em;
}
.WdateDiv #dpControl {
text-align: right;
margin-top: 0.1875em;
padding: 0 0.3125em;
padding-bottom: 0.1875em;
}
.WdateDiv .dpButton {
font-size: 0.75em;
-webkit-appearance: none;
padding-top: 0;
height: 1.75em;
width: 2.8125em;
border: 0;
margin-top: 0.1875em;
margin-right: 0.1875em;
background: #35baf6;
color: #fff;
border-radius: 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,309 @@
/*
* My97 DatePicker 4.7
* Ƥ<><C6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:ext
* Ƥ<><C6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:CssRain
* <20><><EFBFBD><EFBFBD>blog:http://www.CssRain.cn
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:cssrain@gmail.com
*/
/* <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DIV */
.WdateDiv{
width:180px;
background-color:#fff;
border:1px solid #718BB7;
}
/* ˫<><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD> */
.WdateDiv2{
width:360px;
}
.WdateDiv *{font-size:9pt;}
/****************************
* <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> ȫ<><C8AB><EFBFBD><EFBFBD>A<EFBFBD><41>ǩ
***************************/
.WdateDiv .NavImg a{
margin-top:3px;
cursor:pointer;
display:block;
width:15px;
height:15px;
}
.WdateDiv .NavImgll a{
background:url(left-btn2.gif) no-repeat center center;
float:left;
margin-left:2px;
}
.WdateDiv .NavImgl a{
background:url(left-btn.gif) no-repeat center center;
float:left;
margin-left:2px;
}
.WdateDiv .NavImgr a{
background:url(right-btn.gif) no-repeat center center;
float:right;
margin-right:2px;
}
.WdateDiv .NavImgrr a{
background:url(right-btn2.gif) no-repeat center center;
float:right;
margin-right:2px;
}
/****************************
* <20><><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>
***************************/
/* <20><><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD> DIV */
.WdateDiv #dpTitle{
height:22px;
background:transparent url(hd-sprite.gif) repeat-x scroll 0 -83px;
color:#FFFFFF;
font-family:"sans serif",tahoma,verdana,helvetica;
font-size:12px;
font-size-adjust:none;
font-stretch:normal;
font-style:normal;
font-variant:normal;
font-weight:bold;
padding-top:2px;
}
/* <20><><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> INPUT */
.WdateDiv .yminput{
margin-top:2px;
text-align:center;
border:0px;
height:20px;
width:50px;
color:#FFF;
background-color:transparent;
cursor:pointer;
}
/* <20><><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʽ INPUT */
.WdateDiv .yminputfocus{
margin-top:2px;
text-align:center;
border:#939393 1px solid;
font-weight:bold;
color:#034c50;
height:16px;
width:50px;
}
/* <20>˵<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD> DIV */
.WdateDiv .menuSel{
z-index:1;
position:absolute;
background-color:#FFFFFF;
border:1px solid #718BB7;
display:none;
}
/* <20>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD>ʽ TD */
.WdateDiv .menu{
cursor:pointer;
background-color:#fff;
color:#11777C;
}
/* <20>˵<EFBFBD><CBB5><EFBFBD>mouseover<65><72>ʽ TD */
.WdateDiv .menuOn{
cursor:pointer;
background-color: #B3CEEF;
}
/* <20>˵<EFBFBD><CBB5><EFBFBD>Чʱ<D0A7><CAB1><EFBFBD><EFBFBD>ʽ TD */
.WdateDiv .invalidMenu{
color:#aaa;
}
/* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB> DIV */
.WdateDiv .YMenu{
margin-top:16px;
}
/* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB> DIV */
.WdateDiv .MMenu{
margin-top:16px;
*width:62px;
}
/* ʱѡ<CAB1><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> DIV */
.WdateDiv .hhMenu{
margin-top:-90px;
margin-left:26px;
}
/* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> DIV */
.WdateDiv .mmMenu{
margin-top:-46px;
margin-left:26px;
}
/* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> DIV */
.WdateDiv .ssMenu{
margin-top:-24px;
margin-left:26px;
}
/****************************
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
***************************/
.WdateDiv .Wweek {
text-align:center;
background:#DAF3F5;
border-right:#BDEBEE 1px solid;
}
/****************************
* <20><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
***************************/
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TR */
.WdateDiv .MTitle{
color:#233D6D;
background:#DFECFB url(glass-bg.gif) repeat-x scroll left top;
color:#233D6D;
cursor:default;
font-size:10px;
padding-top:2px;
}
.WdateDiv .MTitle td{
border-bottom:1px solid #A3BAD9;
}
.WdateDiv .WdayTable2{
border-collapse:collapse;
border:black 1px solid;
}
.WdateDiv .WdayTable2 table{
border:0;
}
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TABLE */
.WdateDiv .WdayTable{
line-height:20px;
color:black;
}
.WdateDiv .WdayTable td{
text-align:center;
}
/* <20><><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD>ʽ TD */
.WdateDiv .Wday{
cursor:pointer;
}
/* <20><><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD>mouseover<65><72>ʽ TD */
.WdateDiv .WdayOn{
cursor:pointer;
background-color:#B3CEEF;
}
/* <20><>ĩ<EFBFBD><C4A9><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD>ʽ TD */
.WdateDiv .Wwday{
cursor:pointer;
color:#ab1e1e;
}
/* <20><>ĩ<EFBFBD><C4A9><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD>mouseover<65><72>ʽ TD */
.WdateDiv .WwdayOn{
cursor:pointer;
background-color:#B3CEEF;
}
.WdateDiv .Wtoday{
cursor:pointer;
color:red;
}
.WdateDiv .Wselday{
background-color:#B3CEEF;
}
.WdateDiv .WspecialDay{
background-color:#66F4DF;
}
/* <20><><EFBFBD><EFBFBD><EFBFBD>·ݵ<C2B7><DDB5><EFBFBD><EFBFBD><EFBFBD> */
.WdateDiv .WotherDay{
cursor:pointer;
color:#AAAAAA;
}
/* <20><><EFBFBD><EFBFBD><EFBFBD>·ݵ<C2B7><DDB5><EFBFBD><EFBFBD><EFBFBD>mouseover<65><72>ʽ */
.WdateDiv .WotherDayOn{
cursor:pointer;
background-color:#B3CEEF;
}
/* <20><>Ч<EFBFBD><D0A7><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>ʽ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD>ʽ,<2C><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
.WdateDiv .WinvalidDay{
color:#aaa;
}
/****************************
* ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
***************************/
/* ʱ<><CAB1><EFBFBD><EFBFBD> DIV */
.WdateDiv #dpTime{
width:120px;
text-align:left;
margin-left:32px;
height:20px;
line-height:20px;
padding-top:1px;
}
/* ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPAN */
.WdateDiv #dpTime #dpTimeStr{
margin-left:1px;
color:#233D6D;
}
/* ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> INPUT */
.WdateDiv #dpTime input{
height:16px;
width:18px;
text-align:center;
color:#333;
border:#A3BAD9 1px solid;
}
/* ʱ<><CAB1> ʱ INPUT */
.WdateDiv #dpTime .tB{
border-right:0px;
}
/* ʱ<><CAB1> <20>ֺͼ<D6BA><CDBC><EFBFBD><EFBFBD><EFBFBD> ':' INPUT */
.WdateDiv #dpTime .tE{
border-left:0;
border-right:0;
}
/* ʱ<><CAB1> <20><> INPUT */
.WdateDiv #dpTime .tm{
width:7px;
border-left:0;
border-right:0;
}
/* ʱ<><CAB1><EFBFBD>ұߵ<D2B1><DFB5><EFBFBD><EFBFBD>ϰ<EFBFBD>ť BUTTON */
.WdateDiv #dpTime #dpTimeUp{
height:8px;
width:13px;
border:0px;
background:url(img.gif) no-repeat -32px -16px;
cursor:pointer;
margin-bottom:0;
padding-bottom:0;
}
/* ʱ<><CAB1><EFBFBD>ұߵ<D2B1><DFB5><EFBFBD><EFBFBD>°<EFBFBD>ť BUTTON */
.WdateDiv #dpTime #dpTimeDown{
height:8px;
width:13px;
border:0px;
background:url(img.gif) no-repeat -48px -16px;
cursor:pointer;
margin-top:0;
padding-top:0;
}
/****************************
* <20><><EFBFBD><EFBFBD>
***************************/
.WdateDiv #dpQS {
float:left;
margin-left:3px;
margin-top:9px;
background:url(dateselect.gif) no-repeat;
width:20px;
height:20px;
cursor:pointer;
}
.WdateDiv #dpControl {
text-align:right;
margin-top:3px;
background:#DFECFB url(glass-bg.gif) repeat-x scroll left top;
border-top:1px solid #A3BAD9;
padding:4px;
}
.WdateDiv .dpButton{
width:44px;
height:22px;
background:#083772 none repeat scroll 0 0;
border-color:#3366CC #000055 #000055 #3366CC;
border-style:solid;
border-width:1px;
color:white;
cursor:pointer;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 873 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 870 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 871 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

View File

@ -0,0 +1,256 @@
/*
* My97 DatePicker 4.8 Skin:whyGreen
*/
.WdateDiv{
width:180px;
background-color:#fff;
border:#C5E1E4 1px solid;
padding:2px;
}
.WdateDiv2{
width:360px;
}
.WdateDiv *{font-size:9pt;}
.WdateDiv .NavImg a{
cursor:pointer;
display:block;
width:16px;
height:16px;
margin-top:1px;
}
.WdateDiv .NavImgll a{
float:left;
background:url(img.gif) no-repeat;
}
.WdateDiv .NavImgl a{
float:left;
background:url(img.gif) no-repeat -16px 0px;
}
.WdateDiv .NavImgr a{
float:right;
background:url(img.gif) no-repeat -32px 0px;
}
.WdateDiv .NavImgrr a{
float:right;
background:url(img.gif) no-repeat -48px 0px;
}
.WdateDiv #dpTitle{
height:24px;
padding:1px;
border:#c5d9e8 1px solid;
background:url(bg.jpg);
margin-bottom:2px;
}
.WdateDiv .yminput{
margin-top:2px;
text-align:center;
border:0px;
height:20px;
width:50px;
color:#034c50;
background-color:transparent;
cursor:pointer;
}
.WdateDiv .yminputfocus{
margin-top:2px;
text-align:center;
border:#939393 1px solid;
font-weight:bold;
color:#034c50;
height:20px;
width:50px;
}
.WdateDiv .menuSel{
z-index:1;
position:absolute;
background-color:#FFFFFF;
border:#A3C6C8 1px solid;
display:none;
}
.WdateDiv .menu{
cursor:pointer;
background-color:#fff;
color:#11777C;
}
.WdateDiv .menuOn{
cursor:pointer;
background-color:#BEEBEE;
}
.WdateDiv .invalidMenu{
color:#aaa;
}
.WdateDiv .YMenu{
margin-top:20px;
}
.WdateDiv .MMenu{
margin-top:20px;
*width:62px;
}
.WdateDiv .hhMenu{
margin-top:-90px;
margin-left:26px;
}
.WdateDiv .mmMenu{
margin-top:-46px;
margin-left:26px;
}
.WdateDiv .ssMenu{
margin-top:-24px;
margin-left:26px;
}
.WdateDiv .Wweek {
text-align:center;
background:#DAF3F5;
border-right:#BDEBEE 1px solid;
}
.WdateDiv .MTitle{
color:#13777e;
background-color:#bdebee;
}
.WdateDiv .WdayTable2{
border-collapse:collapse;
border:#BEE9F0 1px solid;
}
.WdateDiv .WdayTable2 table{
border:0;
}
.WdateDiv .WdayTable{
line-height:20px;
color:#13777e;
background-color:#edfbfb;
border:#BEE9F0 1px solid;
}
.WdateDiv .WdayTable td{
text-align:center;
}
.WdateDiv .Wday{
cursor:pointer;
}
.WdateDiv .WdayOn{
cursor:pointer;
background-color:#74d2d9 ;
}
.WdateDiv .Wwday{
cursor:pointer;
color:#ab1e1e;
}
.WdateDiv .WwdayOn{
cursor:pointer;
background-color:#74d2d9;
}
.WdateDiv .Wtoday{
cursor:pointer;
color:blue;
}
.WdateDiv .Wselday{
background-color:#A7E2E7;
}
.WdateDiv .WspecialDay{
background-color:#66F4DF;
}
.WdateDiv .WotherDay{
cursor:pointer;
color:#0099CC;
}
.WdateDiv .WotherDayOn{
cursor:pointer;
background-color:#C0EBEF;
}
.WdateDiv .WinvalidDay{
color:#aaa;
}
.WdateDiv #dpTime{
float:left;
margin-top:3px;
margin-right:30px;
}
.WdateDiv #dpTime #dpTimeStr{
margin-left:1px;
color:#497F7F;
}
.WdateDiv #dpTime input{
height:20px;
width:18px;
text-align:center;
color:#333;
border:#61CAD0 1px solid;
}
.WdateDiv #dpTime .tB{
border-right:0px;
}
.WdateDiv #dpTime .tE{
border-left:0;
border-right:0;
}
.WdateDiv #dpTime .tm{
width:7px;
border-left:0;
border-right:0;
}
.WdateDiv #dpTime #dpTimeUp{
height:10px;
width:13px;
border:0px;
background:url(img.gif) no-repeat -32px -16px;
}
.WdateDiv #dpTime #dpTimeDown{
height:10px;
width:13px;
border:0px;
background:url(img.gif) no-repeat -48px -16px;
}
.WdateDiv #dpQS {
float:left;
margin-right:3px;
margin-top:3px;
background:url(img.gif) no-repeat 0px -16px;
width:20px;
height:20px;
cursor:pointer;
}
.WdateDiv #dpControl {
text-align:right;
margin-top:3px;
}
.WdateDiv .dpButton{
height:20px;
width:45px;
margin-top:2px;
border:#38B1B9 1px solid;
background-color:#CFEBEE;
color:#08575B;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

1627
front/public/vender/diff.js Normal file

File diff suppressed because it is too large Load Diff

31187
front/public/vender/fabric.js Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,190 @@
/*jslint adsafe: false, bitwise: true, browser: true, cap: false, css: false,
debug: false, devel: true, eqeqeq: true, es5: false, evil: false,
forin: false, fragment: false, immed: true, laxbreak: false, newcap: true,
nomen: false, on: false, onevar: true, passfail: false, plusplus: true,
regexp: false, rhino: true, safe: false, strict: false, sub: false,
undef: true, white: false, widget: false, windows: false */
/*global jQuery: false, window: false */
"use strict";
/*
* Original code (c) 2010 Nick Galbreath
* http://code.google.com/p/stringencoders/source/browse/#svn/trunk/javascript
*
* jQuery port (c) 2010 Carlo Zottmann
* http://github.com/carlo/jquery-base64
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
/* base64 encode/decode compatible with window.btoa/atob
*
* window.atob/btoa is a Firefox extension to convert binary data (the "b")
* to base64 (ascii, the "a").
*
* It is also found in Safari and Chrome. It is not available in IE.
*
* if (!window.btoa) window.btoa = $.base64.encode
* if (!window.atob) window.atob = $.base64.decode
*
* The original spec's for atob/btoa are a bit lacking
* https://developer.mozilla.org/en/DOM/window.atob
* https://developer.mozilla.org/en/DOM/window.btoa
*
* window.btoa and $.base64.encode takes a string where charCodeAt is [0,255]
* If any character is not [0,255], then an exception is thrown.
*
* window.atob and $.base64.decode take a base64-encoded string
* If the input length is not a multiple of 4, or contains invalid characters
* then an exception is thrown.
*/
jQuery.base64 = ( function( $ ) {
var _PADCHAR = "=",
_ALPHA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
_VERSION = "1.0";
function _getbyte64( s, i ) {
// This is oddly fast, except on Chrome/V8.
// Minimal or no improvement in performance by using a
// object with properties mapping chars to value (eg. 'A': 0)
var idx = _ALPHA.indexOf( s.charAt( i ) );
if ( idx === -1 ) {
throw "Cannot decode base64";
}
return idx;
}
function _decode( s ) {
var pads = 0,
i,
b10,
imax = s.length,
x = [];
s = String( s );
if ( imax === 0 ) {
return s;
}
if ( imax % 4 !== 0 ) {
throw "Cannot decode base64";
}
if ( s.charAt( imax - 1 ) === _PADCHAR ) {
pads = 1;
if ( s.charAt( imax - 2 ) === _PADCHAR ) {
pads = 2;
}
// either way, we want to ignore this last block
imax -= 4;
}
for ( i = 0; i < imax; i += 4 ) {
b10 = ( _getbyte64( s, i ) << 18 ) | ( _getbyte64( s, i + 1 ) << 12 ) | ( _getbyte64( s, i + 2 ) << 6 ) | _getbyte64( s, i + 3 );
x.push( String.fromCharCode( b10 >> 16, ( b10 >> 8 ) & 0xff, b10 & 0xff ) );
}
switch ( pads ) {
case 1:
b10 = ( _getbyte64( s, i ) << 18 ) | ( _getbyte64( s, i + 1 ) << 12 ) | ( _getbyte64( s, i + 2 ) << 6 );
x.push( String.fromCharCode( b10 >> 16, ( b10 >> 8 ) & 0xff ) );
break;
case 2:
b10 = ( _getbyte64( s, i ) << 18) | ( _getbyte64( s, i + 1 ) << 12 );
x.push( String.fromCharCode( b10 >> 16 ) );
break;
}
return x.join( "" );
}
function _getbyte( s, i ) {
var x = s.charCodeAt( i );
if ( x > 255 ) {
throw "INVALID_CHARACTER_ERR: DOM Exception 5";
}
return x;
}
function _encode( s ) {
if ( arguments.length !== 1 ) {
throw "SyntaxError: exactly one argument required";
}
s = String( s );
var i,
b10,
x = [],
imax = s.length - s.length % 3;
if ( s.length === 0 ) {
return s;
}
for ( i = 0; i < imax; i += 3 ) {
b10 = ( _getbyte( s, i ) << 16 ) | ( _getbyte( s, i + 1 ) << 8 ) | _getbyte( s, i + 2 );
x.push( _ALPHA.charAt( b10 >> 18 ) );
x.push( _ALPHA.charAt( ( b10 >> 12 ) & 0x3F ) );
x.push( _ALPHA.charAt( ( b10 >> 6 ) & 0x3f ) );
x.push( _ALPHA.charAt( b10 & 0x3f ) );
}
switch ( s.length - imax ) {
case 1:
b10 = _getbyte( s, i ) << 16;
x.push( _ALPHA.charAt( b10 >> 18 ) + _ALPHA.charAt( ( b10 >> 12 ) & 0x3F ) + _PADCHAR + _PADCHAR );
break;
case 2:
b10 = ( _getbyte( s, i ) << 16 ) | ( _getbyte( s, i + 1 ) << 8 );
x.push( _ALPHA.charAt( b10 >> 18 ) + _ALPHA.charAt( ( b10 >> 12 ) & 0x3F ) + _ALPHA.charAt( ( b10 >> 6 ) & 0x3f ) + _PADCHAR );
break;
}
return x.join( "" );
}
return {
decode: _decode,
encode: _encode,
VERSION: _VERSION
};
}( jQuery ) );

10872
front/public/vender/jquery/jquery.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,255 @@
/* @license
* jQuery.print, version 1.5.1
* (c) Sathvik Ponangi, Doers' Guild
* Licence: CC-By (http://creativecommons.org/licenses/by/3.0/)
*--------------------------------------------------------------------------*/
(function ($) {
"use strict";
// A nice closure for our definitions
function getjQueryObject(string) {
// Make string a vaild jQuery thing
var jqObj = $("");
try {
jqObj = $(string)
.clone();
} catch (e) {
jqObj = $("<span />")
.html(string);
}
return jqObj;
}
function printFrame(frameWindow, content, options) {
// Print the selected window/iframe
var def = $.Deferred();
try {
frameWindow = frameWindow.contentWindow || frameWindow.contentDocument || frameWindow;
var wdoc = frameWindow.document || frameWindow.contentDocument || frameWindow;
if(options.doctype) {
wdoc.write(options.doctype);
}
wdoc.write(content);
wdoc.close();
var printed = false;
var callPrint = function () {
if(printed) {
return;
}
// Fix for IE : Allow it to render the iframe
frameWindow.focus();
try {
// Fix for IE11 - printng the whole page instead of the iframe content
if (!frameWindow.document.execCommand('print', false, null)) {
// document.execCommand returns false if it failed -http://stackoverflow.com/a/21336448/937891
frameWindow.print();
}
// focus body as it is losing focus in iPad and content not getting printed
$('body').focus();
} catch (e) {
frameWindow.print();
}
frameWindow.close();
printed = true;
def.resolve();
}
// Print once the frame window loads - seems to work for the new-window option but unreliable for the iframe
$(frameWindow).on("load", callPrint);
// Fallback to printing directly if the frame doesn't fire the load event for whatever reason
setTimeout(callPrint, options.timeout);
} catch (err) {
def.reject(err);
}
return def;
}
function printContentInIFrame(content, options) {
var $iframe = $(options.iframe + "");
var iframeCount = $iframe.length;
if (iframeCount === 0) {
// Create a new iFrame if none is given
$iframe = $('<iframe height="0" width="0" border="0" wmode="Opaque"/>')
.prependTo('body')
.css({
"position": "absolute",
"top": -999,
"left": -999
});
}
var frameWindow = $iframe.get(0);
return printFrame(frameWindow, content, options)
.done(function () {
// Success
setTimeout(function () {
// Wait for IE
if (iframeCount === 0) {
// Destroy the iframe if created here
$iframe.remove();
}
}, 1000);
})
.fail(function (err) {
// Use the pop-up method if iframe fails for some reason
console.error("Failed to print from iframe", err);
printContentInNewWindow(content, options);
})
.always(function () {
try {
options.deferred.resolve();
} catch (err) {
console.warn('Error notifying deferred', err);
}
});
}
function printContentInNewWindow(content, options) {
// Open a new window and print selected content
var frameWindow = window.open();
return printFrame(frameWindow, content, options)
.always(function () {
try {
options.deferred.resolve();
} catch (err) {
console.warn('Error notifying deferred', err);
}
});
}
function isNode(o) {
/* http://stackoverflow.com/a/384380/937891 */
return !!(typeof Node === "object" ? o instanceof Node : o && typeof o === "object" && typeof o.nodeType === "number" && typeof o.nodeName === "string");
}
$.print = $.fn.print = function () {
// Print a given set of elements
var options, $this, self = this;
// console.log("Printing", this, arguments);
if (self instanceof $) {
// Get the node if it is a jQuery object
self = self.get(0);
}
if (isNode(self)) {
// If `this` is a HTML element, i.e. for
// $(selector).print()
$this = $(self);
if (arguments.length > 0) {
options = arguments[0];
}
} else {
if (arguments.length > 0) {
// $.print(selector,options)
$this = $(arguments[0]);
if (isNode($this[0])) {
if (arguments.length > 1) {
options = arguments[1];
}
} else {
// $.print(options)
options = arguments[0];
$this = $("html");
}
} else {
// $.print()
$this = $("html");
}
}
// Default options
var defaults = {
globalStyles: true,
mediaPrint: false,
stylesheet: null,
noPrintSelector: ".no-print",
iframe: true,
append: null,
prepend: null,
manuallyCopyFormValues: true,
deferred: $.Deferred(),
timeout: 750,
title: null,
doctype: '<!doctype html>'
};
// Merge with user-options
options = $.extend({}, defaults, (options || {}));
var $styles = $("");
if (options.globalStyles) {
// Apply the stlyes from the current sheet to the printed page
$styles = $("style, link, meta, base, title");
} else if (options.mediaPrint) {
// Apply the media-print stylesheet
$styles = $("link[media=print]");
}
if (options.stylesheet) {
// Add a custom stylesheet if given
$styles = $.merge($styles, $('<link rel="stylesheet" href="' + options.stylesheet + '">'));
}
// Create a copy of the element to print
var copy = $this.clone();
// Wrap it in a span to get the HTML markup string
copy = $("<span/>")
.append(copy);
// Remove unwanted elements
copy.find(options.noPrintSelector)
.remove();
// Add in the styles
copy.append($styles.clone());
// Update title
if (options.title) {
var title = $("title", copy);
if (title.length === 0) {
title = $("<title />");
copy.append(title);
}
title.text(options.title);
}
// Appedned content
copy.append(getjQueryObject(options.append));
// Prepended content
copy.prepend(getjQueryObject(options.prepend));
if (options.manuallyCopyFormValues) {
// Manually copy form values into the HTML for printing user-modified input fields
// http://stackoverflow.com/a/26707753
copy.find("input")
.each(function () {
var $field = $(this);
if ($field.is("[type='radio']") || $field.is("[type='checkbox']")) {
if ($field.prop("checked")) {
$field.attr("checked", "checked");
}
} else {
$field.attr("value", $field.val());
}
});
copy.find("select").each(function () {
var $field = $(this);
$field.find(":selected").attr("selected", "selected");
});
copy.find("textarea").each(function () {
// Fix for https://github.com/DoersGuild/jQuery.print/issues/18#issuecomment-96451589
var $field = $(this);
$field.text($field.val());
});
}
// Get the HTML markup string
var content = copy.html();
// Notify with generated markup & cloned elements - useful for logging, etc
try {
options.deferred.notify('generated_markup', content, copy);
} catch (err) {
console.warn('Error notifying deferred', err);
}
// Destroy the copy
copy.remove();
if (options.iframe) {
// Use an iframe for printing
try {
printContentInIFrame(content, options);
} catch (e) {
// Use the pop-up method if iframe fails for some reason
console.error("Failed to print from iframe", e.stack, e.message);
printContentInNewWindow(content, options);
}
} else {
// Use a new window for printing
printContentInNewWindow(content, options);
}
return this;
};
})(jQuery);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 710 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,97 @@
/*-------------------------------------
zTree Style
version: 3.5.19
author: Hunter.z
email: hunter.z@263.net
website: http://code.google.com/p/jquerytree/
-------------------------------------*/
.ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
.ztree {margin:0; padding:5px; color:#333}
.ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0}
.ztree li ul{ margin:0; padding:0 0 0 18px}
.ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;}
.ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:17px; color:#333; background-color: transparent;
text-decoration:none; vertical-align:top; display: inline-block}
.ztree li a:hover {text-decoration:underline}
.ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
.ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid;
opacity:0.8; filter:alpha(opacity=80)}
.ztree li a.tmpTargetNode_prev {}
.ztree li a.tmpTargetNode_next {}
.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
font-size:12px; border:1px #7EC4CC solid; *border:0px}
.ztree li span {line-height:16px; margin-right:2px}
.ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle;
border:0 none; cursor: pointer;outline:none;
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
.ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto}
.ztree li span.button.chk.checkbox_false_full {background-position:0 0}
.ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px}
.ztree li span.button.chk.checkbox_false_part {background-position:0 -28px}
.ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px}
.ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px}
.ztree li span.button.chk.checkbox_true_full {background-position:-14px 0}
.ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px}
.ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px}
.ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px}
.ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px}
.ztree li span.button.chk.radio_false_full {background-position:-28px 0}
.ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px}
.ztree li span.button.chk.radio_false_part {background-position:-28px -28px}
.ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px}
.ztree li span.button.chk.radio_false_disable {background-position:-28px -56px}
.ztree li span.button.chk.radio_true_full {background-position:-42px 0}
.ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px}
.ztree li span.button.chk.radio_true_part {background-position:-42px -28px}
.ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px}
.ztree li span.button.chk.radio_true_disable {background-position:-42px -56px}
.ztree li span.button.switch {width:18px; height:18px}
.ztree li span.button.root_open{background-position:-92px -54px}
.ztree li span.button.root_close{background-position:-74px -54px}
.ztree li span.button.roots_open{background-position:-92px 0}
.ztree li span.button.roots_close{background-position:-74px 0}
.ztree li span.button.center_open{background-position:-92px -18px}
.ztree li span.button.center_close{background-position:-74px -18px}
.ztree li span.button.bottom_open{background-position:-92px -36px}
.ztree li span.button.bottom_close{background-position:-74px -36px}
.ztree li span.button.noline_open{background-position:-92px -72px}
.ztree li span.button.noline_close{background-position:-74px -72px}
.ztree li span.button.root_docu{ background:none;}
.ztree li span.button.roots_docu{background-position:-56px 0}
.ztree li span.button.center_docu{background-position:-56px -18px}
.ztree li span.button.bottom_docu{background-position:-56px -36px}
.ztree li span.button.noline_docu{ background:none;}
.ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle}
.ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
background-position:-110px -80px; background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
.zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
/* level style*/
/*.ztree li span.button.level0 {
display:none;
}
.ztree li ul.level0 {
padding:0;
background:none;
}*/

5
front/public/vender/mui/mui.min.css vendored Normal file

File diff suppressed because one or more lines are too long

6
front/public/vender/mui/mui.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,7 @@
/**
* 选择列表插件
* varstion 2.0.0
* by Houfeng
* Houfeng@DCloud.io
**/
.mui-pciker-list li,.mui-picker,.mui-picker-inner{box-sizing:border-box;overflow:hidden}.mui-picker{background-color:#ddd;position:relative;height:200px;border:1px solid rgba(0,0,0,.1);-webkit-user-select:none;user-select:none}.mui-dtpicker,.mui-poppicker{left:0;background-color:#eee;box-shadow:0 -5px 7px 0 rgba(0,0,0,.1);-webkit-transition:.3s;width:100%}.mui-picker-inner{position:relative;width:100%;height:100%;-webkit-mask-box-image:-webkit-linear-gradient(bottom,transparent,transparent 5%,#fff 20%,#fff 80%,transparent 95%,transparent);-webkit-mask-box-image:linear-gradient(top,transparent,transparent 5%,#fff 20%,#fff 80%,transparent 95%,transparent)}.mui-pciker-list,.mui-pciker-rule{box-sizing:border-box;padding:0;margin:-18px 0 0;width:100%;height:36px;line-height:36px;position:absolute;left:0;top:50%}.mui-pciker-rule-bg{z-index:0}.mui-pciker-rule-ft{z-index:2;border-top:solid 1px rgba(0,0,0,.1);border-bottom:solid 1px rgba(0,0,0,.1)}.mui-pciker-list{z-index:1;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:perspective(750pt) rotateY(0) rotateX(0);transform:perspective(750pt) rotateY(0) rotateX(0)}.mui-pciker-list li{width:100%;height:100%;position:absolute;text-align:center;vertical-align:middle;-webkit-backface-visibility:hidden;backface-visibility:hidden;font-size:1pc;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;color:#888;padding:0 8px;white-space:nowrap;-webkit-text-overflow:ellipsis;text-overflow:ellipsis;cursor:default;visibility:hidden}.mui-pciker-list li.highlight,.mui-pciker-list li.visible{visibility:visible}.mui-pciker-list li.highlight{color:#222}.mui-poppicker{position:fixed;z-index:999;border-top:solid 1px #ccc;bottom:0;-webkit-transform:translateY(300px)}.mui-poppicker.mui-active{-webkit-transform:translateY(0)}.mui-android-5-1 .mui-poppicker{bottom:-300px;-webkit-transition-property:bottom;-webkit-transform:none}.mui-android-5-1 .mui-poppicker.mui-active{bottom:0;-webkit-transition-property:bottom;-webkit-transform:none}.mui-poppicker-header{padding:6px;font-size:14px;color:#888}.mui-poppicker-header .mui-btn{font-size:9pt;padding:5px 10px}.mui-poppicker-btn-cancel{float:left}.mui-poppicker-btn-ok{float:right}.mui-poppicker-clear{clear:both;height:0;line-height:0;font-size:0;overflow:hidden}.mui-poppicker-body{position:relative;width:100%;height:200px;border-top:solid 1px #ddd}.mui-poppicker-body .mui-picker{width:100%;height:100%;margin:0;border:none;float:left}.mui-dtpicker{position:fixed;z-index:999999;border-top:solid 1px #ccc;bottom:0;-webkit-transform:translateY(300px)}.mui-dtpicker.mui-active{-webkit-transform:translateY(0)}.mui-dtpicker-active-for-page{overflow:hidden!important}.mui-android-5-1 .mui-dtpicker{bottom:-300px;-webkit-transition-property:bottom;-webkit-transform:none}.mui-android-5-1 .mui-dtpicker.mui-active{bottom:0;-webkit-transition-property:bottom;-webkit-transform:none}.mui-dtpicker-header{padding:6px;font-size:14px;color:#888}.mui-dtpicker-header button{font-size:9pt;padding:5px 10px}.mui-dtpicker-header button:last-child{float:right}.mui-dtpicker-body{position:relative;width:100%;height:200px}.mui-ios .mui-dtpicker-body{-webkit-perspective:75pc;perspective:75pc;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.mui-dtpicker-title h5{display:inline-block;width:20%;margin:0;padding:8px;text-align:center;border-top:solid 1px #ddd;background-color:#f0f0f0;border-bottom:solid 1px #ccc}[data-type=hour] [data-id=title-i],[data-type=hour] [data-id=picker-i],[data-type=month] [data-id=title-i],[data-type=month] [data-id=picker-d],[data-type=month] [data-id=title-d],[data-type=month] [data-id=picker-h],[data-type=month] [data-id=title-h],[data-type=month] [data-id=picker-i],[data-type=time] [data-id=picker-y],[data-type=time] [data-id=picker-m],[data-type=time] [data-id=picker-d],[data-type=time] [data-id=title-y],[data-type=time] [data-id=title-m],[data-type=time] [data-id=title-d],[data-type=date] [data-id=title-i],[data-type=date] [data-id=picker-h],[data-type=date] [data-id=title-h],[data-type=date] [data-id=picker-i]{display:none}.mui-dtpicker .mui-picker{width:20%;height:100%;margin:0;float:left;border:none}[data-type=hour] [data-id=picker-h],[data-type=hour] [data-id=title-h],[data-type=datetime] [data-id=picker-h],[data-type=datetime] [data-id=title-h]{border-left:dotted 1px #ccc}[data-type=datetime] .mui-picker,[data-type=time] .mui-dtpicker-title h5{width:20%}[data-type=date] .mui-dtpicker-title h5,[data-type=date] .mui-picker{width:33.3%}[data-type=hour] .mui-dtpicker-title h5,[data-type=hour] .mui-picker{width:25%}[data-type=month] .mui-dtpicker-title h5,[data-type=month] .mui-picker,[data-type=time] .mui-dtpicker-title h5,[data-type=time] .mui-picker{width:50%}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,519 @@
/** @license
jSignature v2 SVG export plugin.
*/
/**
Copyright (c) 2012 Willow Systems Corp http://willow-systems.com
MIT License <http://www.opensource.org/licenses/mit-license.php>
*/
;(function(){
'use strict'
/** @preserve
Simplify.js BSD
(c) 2012, Vladimir Agafonkin
mourner.github.com/simplify-js
*/
;(function(a,b){function c(a,b){var c=a.x-b.x,d=a.y-b.y;return c*c+d*d}function d(a,b,c){var d=b.x,e=b.y,f=c.x-d,g=c.y-e,h;if(f!==0||g!==0)h=((a.x-d)*f+(a.y-e)*g)/(f*f+g*g),h>1?(d=c.x,e=c.y):h>0&&(d+=f*h,e+=g*h);return f=a.x-d,g=a.y-e,f*f+g*g}function e(a,b){var d,e=a.length,f,g=a[0],h=[g];for(d=1;d<e;d++)f=a[d],c(f,g)>b&&(h.push(f),g=f);return g!==f&&h.push(f),h}function f(a,c){var e=a.length,f=typeof Uint8Array!=b+""?Uint8Array:Array,g=new f(e),h=0,i=e-1,j,k,l,m,n=[],o=[],p=[];g[h]=g[i]=1;while(i){k=0;for(j=h+1;j<i;j++)l=d(a[j],a[h],a[i]),l>k&&(m=j,k=l);k>c&&(g[m]=1,n.push(h),o.push(m),n.push(m),o.push(i)),h=n.pop(),i=o.pop()}for(j=0;j<e;j++)g[j]&&p.push(a[j]);return p}"use strict";var g=a;g.simplify=function(a,c,d){var g=c!==b?c*c:1;return d||(a=e(a,g)),a=f(a,g),a}})(window);
/**
Vector class. Allows us to simplify representation and manipulation of coordinate-pair
representing shift against (0, 0)
@public
@class
@param
@returns {Type}
*/
function Vector(x,y){
this.x = x
this.y = y
this.reverse = function(){
return new this.constructor(
this.x * -1
, this.y * -1
)
}
this._length = null
this.getLength = function(){
if (!this._length){
this._length = Math.sqrt( Math.pow(this.x, 2) + Math.pow(this.y, 2) )
}
return this._length
}
var polarity = function (e){
return Math.round(e / Math.abs(e))
}
this.resizeTo = function(length){
// proportionally changes x,y such that the hypotenuse (vector length) is = new length
if (this.x === 0 && this.y === 0){
this._length = 0
} else if (this.x === 0){
this._length = length
this.y = length * polarity(this.y)
} else if(this.y === 0){
this._length = length
this.x = length * polarity(this.x)
} else {
var proportion = Math.abs(this.y / this.x)
, x = Math.sqrt(Math.pow(length, 2) / (1 + Math.pow(proportion, 2)))
, y = proportion * x
this._length = length
this.x = x * polarity(this.x)
this.y = y * polarity(this.y)
}
return this
}
/**
* Calculates the angle between 'this' vector and another.
* @public
* @function
* @returns {Number} The angle between the two vectors as measured in PI.
*/
this.angleTo = function(vectorB) {
var divisor = this.getLength() * vectorB.getLength()
if (divisor === 0) {
return 0
} else {
// JavaScript floating point math is screwed up.
// because of it, the core of the formula can, on occasion, have values
// over 1.0 and below -1.0.
return Math.acos(
Math.min(
Math.max(
( this.x * vectorB.x + this.y * vectorB.y ) / divisor
, -1.0
)
, 1.0
)
) / Math.PI
}
}
}
function Point(x,y){
this.x = x
this.y = y
this.getVectorToCoordinates = function (x, y) {
return new Vector(x - this.x, y - this.y)
}
this.getVectorFromCoordinates = function (x, y) {
return this.getVectorToCoordinates(x, y).reverse()
}
this.getVectorToPoint = function (point) {
return new Vector(point.x - this.x, point.y - this.y)
}
this.getVectorFromPoint = function (point) {
return this.getVectorToPoint(point).reverse()
}
}
/**
Allows one to round a number to arbitrary precision.
Math.round() rounds to whole only.
Number.toFixed(precision) returns a string.
I need float to float, but with arbitrary precision, hence:
@public
@function
@param number {Number}
@param position {Number} number of digits right of decimal point to keep. If negative, rounding to the left of decimal.
@returns {Type}
*/
function round (number, position){
var tmp = Math.pow(10, position)
return Math.round( number * tmp ) / tmp
}
// /**
// * This is a simple, points-to-lines (not curves) renderer.
// * Keeping it around so we can activate it from time to time and see
// * if smoothing logic is off much.
// * @public
// * @function
// * @returns {String} Like so "l 1 2 3 5' with stroke as long line chain.
// */
// function compressstroke(stroke, shiftx, shifty){
// // we combine strokes data into string like this:
// // 'M 53 7 l 1 2 3 4 -5 -6 5 -6'
// // see SVG documentation for Path element's 'd' argument.
// var lastx = stroke.x[0]
// , lasty = stroke.y[0]
// , i
// , l = stroke.x.length
// , answer = ['M', lastx - shiftx, lasty - shifty, 'l']
//
// if (l === 1){
// // meaning this was just a DOT, not a stroke.
// // instead of creating a circle, we just create a short line
// answer.concat(1, -1)
// } else {
// for(i = 1; i < l; i++){
// answer = answer.concat(stroke.x[i] - lastx, stroke.y[i] - lasty)
// lastx = stroke.x[i]
// lasty = stroke.y[i]
// }
// }
// return answer.join(' ')
// }
function segmentToCurve(stroke, positionInStroke, lineCurveThreshold){
'use strict'
// long lines (ones with many pixels between them) do not look good when they are part of a large curvy stroke.
// You know, the jaggedy crocodile spine instead of a pretty, smooth curve. Yuck!
// We want to approximate pretty curves in-place of those ugly lines.
// To approximate a very nice curve we need to know the direction of line before and after.
// Hence, on long lines we actually wait for another point beyond it to come back from
// mousemoved before we draw this curve.
// So for "prior curve" to be calc'ed we need 4 points
// A, B, C, D (we are on D now, A is 3 points in the past.)
// and 3 lines:
// pre-line (from points A to B),
// this line (from points B to C), (we call it "this" because if it was not yet, it's the only one we can draw for sure.)
// post-line (from points C to D) (even through D point is 'current' we don't know how we can draw it yet)
//
// Well, actually, we don't need to *know* the point A, just the vector A->B
// Again, we can only derive curve between points positionInStroke-1 and positionInStroke
// Thus, since we can only draw a line if we know one point ahead of it, we need to shift our focus one point ahead.
positionInStroke += 1
// Let's hope the code that calls us knows we do that and does not call us with positionInStroke = index of last point.
var Cpoint = new Point(stroke.x[positionInStroke-1], stroke.y[positionInStroke-1])
, Dpoint = new Point(stroke.x[positionInStroke], stroke.y[positionInStroke])
, CDvector = Cpoint.getVectorToPoint(Dpoint)
// Again, we have a chance here to draw only PREVIOUS line segment - BC
// So, let's start with BC curve.
// if there is only 2 points in stroke array (C, D), we don't have "history" long enough to have point B, let alone point A.
// so positionInStroke should start with 2, ie
// we are here when there are at least 3 points in stroke array.
var Bpoint = new Point(stroke.x[positionInStroke-2], stroke.y[positionInStroke-2])
, BCvector = Bpoint.getVectorToPoint(Cpoint)
, ABvector
, rounding = 2
if ( BCvector.getLength() > lineCurveThreshold ){
// Yey! Pretty curves, here we come!
if(positionInStroke > 2) {
ABvector = (new Point(stroke.x[positionInStroke-3], stroke.y[positionInStroke-3])).getVectorToPoint(Bpoint)
} else {
ABvector = new Vector(0,0)
}
var minlenfraction = 0.05
, maxlen = BCvector.getLength() * 0.35
, ABCangle = BCvector.angleTo(ABvector.reverse())
, BCDangle = CDvector.angleTo(BCvector.reverse())
, BtoCP1vector = new Vector(ABvector.x + BCvector.x, ABvector.y + BCvector.y).resizeTo(
Math.max(minlenfraction, ABCangle) * maxlen
)
, CtoCP2vector = (new Vector(BCvector.x + CDvector.x, BCvector.y + CDvector.y)).reverse().resizeTo(
Math.max(minlenfraction, BCDangle) * maxlen
)
, BtoCP2vector = new Vector(BCvector.x + CtoCP2vector.x, BCvector.y + CtoCP2vector.y)
// returing curve for BC segment
// all coords are vectors against Bpoint
return [
'c' // bezier curve
, round( BtoCP1vector.x, rounding )
, round( BtoCP1vector.y, rounding )
, round( BtoCP2vector.x, rounding )
, round( BtoCP2vector.y, rounding )
, round( BCvector.x, rounding )
, round( BCvector.y, rounding )
]
} else {
return [
'l' // line
, round( BCvector.x, rounding )
, round( BCvector.y, rounding )
]
}
}
function lastSegmentToCurve(stroke, lineCurveThreshold){
'use strict'
// Here we tidy up things left unfinished
// What's left unfinished there is the curve between the last points
// in the stroke
// We can also be called when there is only one point in the stroke (meaning, the
// stroke was just a dot), in which case there is nothing for us to do.
// So for "this curve" to be calc'ed we need 3 points
// A, B, C
// and 2 lines:
// pre-line (from points A to B),
// this line (from points B to C)
// Well, actually, we don't need to *know* the point A, just the vector A->B
// so, we really need points B, C and AB vector.
var positionInStroke = stroke.x.length - 1
// there must be at least 2 points in the stroke.for us to work. Hope calling code checks for that.
var Cpoint = new Point(stroke.x[positionInStroke], stroke.y[positionInStroke])
, Bpoint = new Point(stroke.x[positionInStroke-1], stroke.y[positionInStroke-1])
, BCvector = Bpoint.getVectorToPoint(Cpoint)
, rounding = 2
if (positionInStroke > 1 && BCvector.getLength() > lineCurveThreshold){
// we have at least 3 elems in stroke
var ABvector = (new Point(stroke.x[positionInStroke-2], stroke.y[positionInStroke-2])).getVectorToPoint(Bpoint)
, ABCangle = BCvector.angleTo(ABvector.reverse())
, minlenfraction = 0.05
, maxlen = BCvector.getLength() * 0.35
, BtoCP1vector = new Vector(ABvector.x + BCvector.x, ABvector.y + BCvector.y).resizeTo(
Math.max(minlenfraction, ABCangle) * maxlen
)
return [
'c' // bezier curve
, round( BtoCP1vector.x, rounding )
, round( BtoCP1vector.y, rounding )
, round( BCvector.x, rounding ) // CP2 is same as Cpoint
, round( BCvector.y, rounding ) // CP2 is same as Cpoint
, round( BCvector.x, rounding )
, round( BCvector.y, rounding )
]
} else {
// Since there is no AB leg, there is no curve to draw. This is just line
return [
'l' // simple line
, round( BCvector.x, rounding )
, round( BCvector.y, rounding )
]
}
}
function addstroke(stroke, shiftx, shifty){
'use strict'
// we combine strokes data into string like this:
// 'M 53 7 l 1 2 c 3 4 -5 -6 5 -6'
// see SVG documentation for Path element's 'd' argument.
var lines = [
'M' // move to
, round( (stroke.x[0] - shiftx), 2)
, round( (stroke.y[0] - shifty), 2)
]
// processing all points but first and last.
, i = 1 // index zero item in there is STARTING point. we already extracted it.
, l = stroke.x.length - 1 // this is a trick. We are leaving last point coordinates for separate processing.
, lineCurveThreshold = 1
for(; i < l; i++){
lines.push.apply(lines, segmentToCurve(stroke, i, lineCurveThreshold))
}
if (l > 0 /* effectively more than 1, since we "-1" above */){
lines.push.apply(lines, lastSegmentToCurve(stroke, i, lineCurveThreshold))
} else if (l === 0){
// meaning we only have ONE point in the stroke (and otherwise refer to the stroke as "dot")
lines.push.apply(lines, ['l' , 1, 1])
}
return lines.join(' ')
}
function simplifystroke(stroke){
var d = []
, newstroke = {'x':[], 'y':[]}
, i, l
for (i = 0, l = stroke.x.length; i < l; i++){
d.push({'x':stroke.x[i], 'y':stroke.y[i]})
}
d = simplify(d, 0.7, true)
for (i = 0, l = d.length; i < l; i++){
newstroke.x.push(d[i].x)
newstroke.y.push(d[i].y)
}
return newstroke
}
// generate SVG style from settings
function styleFromSettings(settings){
var styles = [];
var meta = [
// ["style attr", "key in settings", "default value"]
["fill", undefined, "none"],
["stroke", "color", "#000000"],
["stroke-width", "lineWidth", 2],
["stroke-linecap", undefined, "round"],
["stroke-linejoin", undefined, "round"]
];
for (var i = meta.length - 1; i >= 0; i--){
var attr = meta[i][0]
, key = meta[i][1]
, defaultVal = meta[i][2];
styles.push(attr + '="' + (key in settings && settings[key] ? settings[key] : defaultVal) + '"');
}
return styles.join(' ');
}
function compressstrokes(data, settings){
'use strict'
var answer = [
'<?xml version="1.0" encoding="UTF-8" standalone="no"?>'
, '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'
]
, i , l = data.length
, stroke
, xlimits = []
, ylimits = []
, sizex = 0
, sizey = 0
, shiftx = 0
, shifty = 0
, minx, maxx, miny, maxy, padding = 1
, simplifieddata = []
if(l !== 0){
for(i = 0; i < l; i++){
stroke = simplifystroke( data[i] )
simplifieddata.push(stroke)
xlimits = xlimits.concat(stroke.x)
ylimits = ylimits.concat(stroke.y)
}
minx = Math.min.apply(null, xlimits) - padding
maxx = Math.max.apply(null, xlimits) + padding
miny = Math.min.apply(null, ylimits) - padding
maxy = Math.max.apply(null, ylimits) + padding
shiftx = minx < 0? 0 : minx
shifty = miny < 0? 0 : miny
sizex = maxx - minx
sizey = maxy - miny
}
answer.push(
'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="'+
sizex.toString() +
'" height="'+
sizey.toString() +
'">'
)
// // This is a nice idea: use style declaration on top, and mark the lines with 'class="f"'
// // thus saving space in svg...
// // alas, many SVG renderers don't understand "class" and render the strokes in default "fill = black, no stroke" style. Ugh!!!
// // TODO: Rewrite ImageMagic / GraphicsMagic, InkScape, http://svg.codeplex.com/ to support style + class. until then, we hardcode the stroke style within the path.
// answer.push(
// '<style type="text/css"><![CDATA[.f {fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}]]></style>'
// )
// // This set is accompaniment to "simple line renderer" - compressstroke
// answer.push(
// '<style type="text/css"><![CDATA[.t {fill:none;stroke:#FF0000;stroke-width:2}]]></style>'
// )
// for(i = 0; i < l; i++){
// stroke = data[i]
// // This one is accompaniment to "simple line renderer"
// answer.push('<path class="t" d="'+ compressstroke(stroke, shiftx, shifty) +'"/>')
// }
for(i = 0, l = simplifieddata.length; i < l; i++){
stroke = simplifieddata[i]
answer.push('<path ' + styleFromSettings(settings) + ' d="'+ addstroke(stroke, shiftx, shifty) + '"/>')
}
answer.push('</svg>')
return answer.join('')
}
if (typeof btoa !== 'function')
{
var btoa = function(data) {
/** @preserve
base64 encoder
MIT, GPL
http://phpjs.org/functions/base64_encode
+ original by: Tyler Akins (http://rumkin.com)
+ improved by: Bayron Guevara
+ improved by: Thunder.m
+ improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+ bugfixed by: Pellentesque Malesuada
+ improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+ improved by: Rafal Kukawski (http://kukawski.pl)
*/
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
, b64a = b64.split('')
, o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
ac = 0,
enc = "",
tmp_arr = [];
do { // pack three octets into four hexets
o1 = data.charCodeAt(i++);
o2 = data.charCodeAt(i++);
o3 = data.charCodeAt(i++);
bits = o1 << 16 | o2 << 8 | o3;
h1 = bits >> 18 & 0x3f;
h2 = bits >> 12 & 0x3f;
h3 = bits >> 6 & 0x3f;
h4 = bits & 0x3f;
// use hexets to index into b64, and append result to encoded string
tmp_arr[ac++] = b64a[h1] + b64a[h2] + b64a[h3] + b64a[h4];
} while (i < data.length);
enc = tmp_arr.join('');
var r = data.length % 3;
return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);
// end of base64 encoder MIT, GPL
}
}
var unencodedmime = 'image/svg+xml'
function getUnencodedSVG(data, settings){
return [unencodedmime , compressstrokes(data, settings)];
}
var base64encodedmime = 'image/svg+xml;base64'
function getBase64encodedSVG(data, settings){
return [base64encodedmime , btoa( compressstrokes(data, settings) )];
}
function Initializer($){
var mothership = $.fn['jSignature']
mothership(
'addPlugin'
,'export'
,'svg' // alias
,getUnencodedSVG
)
mothership(
'addPlugin'
,'export'
,unencodedmime // full name
,getUnencodedSVG
)
mothership(
'addPlugin'
,'export'
,'svgbase64' // alias
,getBase64encodedSVG
)
mothership(
'addPlugin'
,'export'
,base64encodedmime // full name
,getBase64encodedSVG
)
}
// //Because plugins are minified together with jSignature, multiple defines per (minified) file blow up and dont make sense
// //Need to revisit this later.
if(typeof $ === 'undefined') {throw new Error("We need jQuery for some of the functionality. jQuery is not detected. Failing to initialize...")}
Initializer($)
})();

View File

@ -0,0 +1,165 @@
/** @license
jSignature v2 jSignature's Undo Button and undo functionality plugin
*/
/**
Copyright (c) 2011 Willow Systems Corp http://willow-systems.com
MIT License <http://www.opensource.org/licenses/mit-license.php>
*/
;(function(){
var apinamespace = 'jSignature'
function attachHandlers(buttonRenderer, apinamespace, extensionName) {
var $undoButton = buttonRenderer.call(this)
;(function(jSignatureInstance, $undoButton, apinamespace) {
jSignatureInstance.events.subscribe(
apinamespace + '.change'
, function(){
if (jSignatureInstance.dataEngine.data.length) {
$undoButton.show()
} else {
$undoButton.hide()
}
}
)
})( this, $undoButton, apinamespace )
;(function(jSignatureInstance, $undoButton, apinamespace) {
var eventName = apinamespace + '.undo'
$undoButton.bind('click', function(){
jSignatureInstance.events.publish(eventName)
})
// This one creates new "undo" event listener to jSignature instance
// It handles the actual undo-ing.
jSignatureInstance.events.subscribe(
eventName
, function(){
var data = jSignatureInstance.dataEngine.data
if (data.length) {
data.pop()
jSignatureInstance.resetCanvas(data)
}
}
)
})(
this
, $undoButton
, this.events.topics.hasOwnProperty( apinamespace + '.undo' ) ?
// oops, seems some other plugin or code has already claimed "jSignature.undo" event
// we will use this extension's name for event name prefix
extensionName :
// Great! we will use 'jSignature' for event name prefix.
apinamespace
)
}
function ExtensionInitializer(extensionName){
// we are called very early in instance's life.
// right after the settings are resolved and
// jSignatureInstance.events is created
// and right before first ("jSignature.initializing") event is called.
// You don't really need to manupilate
// jSignatureInstance directly, just attach
// a bunch of events to jSignatureInstance.events
// (look at the source of jSignatureClass to see when these fire)
// and your special pieces of code will attach by themselves.
// this function runs every time a new instance is set up.
// this means every var you create will live only for one instance
// unless you attach it to something outside, like "window."
// and pick it up later from there.
// when globalEvents' events fire, 'this' is globalEvents object
// when jSignatureInstance's events fire, 'this' is jSignatureInstance
// Here,
// this = is new jSignatureClass's instance.
// The way you COULD approch setting this up is:
// if you have multistep set up, attach event to "jSignature.initializing"
// that attaches other events to be fired further lower the init stream.
// Or, if you know for sure you rely on only one jSignatureInstance's event,
// just attach to it directly
var apinamespace = 'jSignature'
this.events.subscribe(
// name of the event
apinamespace + '.attachingEventHandlers'
// event handlers, can pass args too, but in majority of cases,
// 'this' which is jSignatureClass object instance pointer is enough to get by.
, function(){
// hooking up "undo" button to lower edge of Canvas.
// but only when options passed to jSignature('init', options)
// contain "undoButton":renderingFunction pair.
// or "undoButton":true (in which case default, internal rendering fn is used)
if (this.settings[extensionName]) {
var oursettings = this.settings[extensionName]
if (typeof oursettings !== 'function') {
// we make it a function.
// we allow people to override the button rendering code,
// but when developler is OK with default look (and just passes "truthy" value)
// this defines default look for the button:
// centered against canvas, hanging on its lower side.
oursettings = function(){
// this === jSignatureInstance
var undoButtonSytle = 'position:absolute;display:none;margin:0 !important;top:auto'
, $undoButton = $('<input type="button" value="撤销" style="'+undoButtonSytle+'" />')
.appendTo(this.$controlbarLower)
// this centers the button against the canvas.
var buttonWidth = $undoButton.width()
$undoButton.css(
'left'
, Math.round(( this.canvas.width - buttonWidth ) / 2)
)
// IE 7 grows the button. Correcting for that.
if ( buttonWidth !== $undoButton.width() ) {
$undoButton.width(buttonWidth)
}
return $undoButton
}
}
attachHandlers.call(
this
, oursettings
, apinamespace
, extensionName
)
}
}
)
}
var ExtensionAttacher = function(){
$.fn[apinamespace](
'addPlugin'
,'instance' // type of plugin
,'UndoButton' // extension name
,ExtensionInitializer
)
}
// //Because plugins are minified together with jSignature, multiple defines per (minified) file blow up and dont make sense
// //Need to revisit this later.
// if ( typeof define === "function" && define.amd != null) {
// // AMD-loader compatible resource declaration
// // you need to call this one with jQuery as argument.
// define(function(){return Initializer} )
// } else {
ExtensionAttacher()
// }
})();

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

5
front/public/vender/weui/weui.min.css vendored Normal file

File diff suppressed because one or more lines are too long

12
front/public/vender/weui/weui.min.js vendored Normal file

File diff suppressed because one or more lines are too long