diff --git a/SMMS/.classpath b/SMMS/.classpath new file mode 100644 index 0000000..4b19bac --- /dev/null +++ b/SMMS/.classpath @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SMMS/.project b/SMMS/.project new file mode 100644 index 0000000..d722a0b --- /dev/null +++ b/SMMS/.project @@ -0,0 +1,42 @@ + + + SMMS + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.jdt.core.javanature + org.eclipse.wst.jsdt.core.jsNature + + + + 1746154942843 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + + diff --git a/SMMS/.settings/.jsdtscope b/SMMS/.settings/.jsdtscope new file mode 100644 index 0000000..92e666d --- /dev/null +++ b/SMMS/.settings/.jsdtscope @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/SMMS/.settings/org.eclipse.jdt.core.prefs b/SMMS/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..0c68a61 --- /dev/null +++ b/SMMS/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/SMMS/.settings/org.eclipse.wst.common.component b/SMMS/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..74fb9d3 --- /dev/null +++ b/SMMS/.settings/org.eclipse.wst.common.component @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/SMMS/.settings/org.eclipse.wst.common.project.facet.core.xml b/SMMS/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..24124f7 --- /dev/null +++ b/SMMS/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/SMMS/.settings/org.eclipse.wst.jsdt.ui.superType.container b/SMMS/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ b/SMMS/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/SMMS/.settings/org.eclipse.wst.jsdt.ui.superType.name b/SMMS/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..05bd71b --- /dev/null +++ b/SMMS/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/SMMS/WebContent/404.jsp b/SMMS/WebContent/404.jsp new file mode 100644 index 0000000..579bae2 --- /dev/null +++ b/SMMS/WebContent/404.jsp @@ -0,0 +1,17 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" isErrorPage="true" + pageEncoding="UTF-8"%> + + + + +不好意思您访问的页面不存在 + + + + +
+

404

+

不好意思,您访问的页面不存在~

+
+ + \ No newline at end of file diff --git a/SMMS/WebContent/500.jsp b/SMMS/WebContent/500.jsp new file mode 100644 index 0000000..9400884 --- /dev/null +++ b/SMMS/WebContent/500.jsp @@ -0,0 +1,17 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" isErrorPage="true" + pageEncoding="UTF-8"%> + + + + +服务端错误 + + + + +
+

500

+

不好意思,服务端错误啦~

+
+ + \ No newline at end of file diff --git a/SMMS/WebContent/META-INF/MANIFEST.MF b/SMMS/WebContent/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/SMMS/WebContent/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/SMMS/WebContent/WEB-INF/lib/FilelLoad.jar b/SMMS/WebContent/WEB-INF/lib/FilelLoad.jar new file mode 100644 index 0000000..24b4e5a Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/FilelLoad.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/bcprov-jdk15on-1.70.jar b/SMMS/WebContent/WEB-INF/lib/bcprov-jdk15on-1.70.jar new file mode 100644 index 0000000..0e4198e Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/bcprov-jdk15on-1.70.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/commons-beanutils-1.8.0.jar b/SMMS/WebContent/WEB-INF/lib/commons-beanutils-1.8.0.jar new file mode 100644 index 0000000..caf7ae3 Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/commons-beanutils-1.8.0.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/commons-beanutils-1.8.3.jar b/SMMS/WebContent/WEB-INF/lib/commons-beanutils-1.8.3.jar new file mode 100644 index 0000000..218510b Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/commons-beanutils-1.8.3.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/commons-collections-3.2.1.jar b/SMMS/WebContent/WEB-INF/lib/commons-collections-3.2.1.jar new file mode 100644 index 0000000..c35fa1f Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/commons-collections-3.2.1.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/commons-dbutils-1.8.1.jar b/SMMS/WebContent/WEB-INF/lib/commons-dbutils-1.8.1.jar new file mode 100644 index 0000000..96e2ca9 Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/commons-dbutils-1.8.1.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/commons-fileupload-1.2.1.jar b/SMMS/WebContent/WEB-INF/lib/commons-fileupload-1.2.1.jar new file mode 100644 index 0000000..aa209b3 Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/commons-fileupload-1.2.1.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/commons-io-1.4.jar b/SMMS/WebContent/WEB-INF/lib/commons-io-1.4.jar new file mode 100644 index 0000000..133dc6c Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/commons-io-1.4.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/commons-lang-2.5.jar b/SMMS/WebContent/WEB-INF/lib/commons-lang-2.5.jar new file mode 100644 index 0000000..ae491da Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/commons-lang-2.5.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/commons-logging-1.1.1.jar b/SMMS/WebContent/WEB-INF/lib/commons-logging-1.1.1.jar new file mode 100644 index 0000000..8758a96 Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/commons-logging-1.1.1.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/commons-logging.jar b/SMMS/WebContent/WEB-INF/lib/commons-logging.jar new file mode 100644 index 0000000..8758a96 Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/commons-logging.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/druid-1.2.24.jar b/SMMS/WebContent/WEB-INF/lib/druid-1.2.24.jar new file mode 100644 index 0000000..d26c219 Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/druid-1.2.24.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/ezmorph-1.0.6.jar b/SMMS/WebContent/WEB-INF/lib/ezmorph-1.0.6.jar new file mode 100644 index 0000000..30fad12 Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/ezmorph-1.0.6.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/json-lib-2.3-jdk15.jar b/SMMS/WebContent/WEB-INF/lib/json-lib-2.3-jdk15.jar new file mode 100644 index 0000000..29d59b9 Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/json-lib-2.3-jdk15.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/jsonplugin-0.34.jar b/SMMS/WebContent/WEB-INF/lib/jsonplugin-0.34.jar new file mode 100644 index 0000000..7edffda Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/jsonplugin-0.34.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/jstl-1.2.jar b/SMMS/WebContent/WEB-INF/lib/jstl-1.2.jar new file mode 100644 index 0000000..0fd275e Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/jstl-1.2.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/mysql-connector-j-8.3.0.jar b/SMMS/WebContent/WEB-INF/lib/mysql-connector-j-8.3.0.jar new file mode 100644 index 0000000..5c720ab Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/mysql-connector-j-8.3.0.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/mysql-connector-java-8.0.30.jar b/SMMS/WebContent/WEB-INF/lib/mysql-connector-java-8.0.30.jar new file mode 100644 index 0000000..92ebe1b Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/mysql-connector-java-8.0.30.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/pinyin4j-2.5.1.jar b/SMMS/WebContent/WEB-INF/lib/pinyin4j-2.5.1.jar new file mode 100644 index 0000000..8446c53 Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/pinyin4j-2.5.1.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/poi-3.9.jar b/SMMS/WebContent/WEB-INF/lib/poi-3.9.jar new file mode 100644 index 0000000..0f46288 Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/poi-3.9.jar differ diff --git a/SMMS/WebContent/WEB-INF/lib/standard.jar b/SMMS/WebContent/WEB-INF/lib/standard.jar new file mode 100644 index 0000000..bc528ac Binary files /dev/null and b/SMMS/WebContent/WEB-INF/lib/standard.jar differ diff --git a/SMMS/WebContent/WEB-INF/web.xml b/SMMS/WebContent/WEB-INF/web.xml new file mode 100644 index 0000000..9c9807b --- /dev/null +++ b/SMMS/WebContent/WEB-INF/web.xml @@ -0,0 +1,15 @@ + + + SMMS + + index.jsp + + + 404 + /404.jsp + + + 500 + /500.jsp + + \ No newline at end of file diff --git a/SMMS/WebContent/index.jsp b/SMMS/WebContent/index.jsp new file mode 100644 index 0000000..5372ce8 --- /dev/null +++ b/SMMS/WebContent/index.jsp @@ -0,0 +1,3 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> + + \ No newline at end of file diff --git a/SMMS/WebContent/static/css/login.css b/SMMS/WebContent/static/css/login.css new file mode 100644 index 0000000..0f4ce50 --- /dev/null +++ b/SMMS/WebContent/static/css/login.css @@ -0,0 +1,191 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Microsoft YaHei', sans-serif; + background: url('../img/login-bg.jpg') no-repeat center center; + background-size: cover; + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + overflow: hidden; + position: relative; +} + +body::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(255, 255, 255, 0.1); + backdrop-filter: blur(3px); +} + +.login-container { + background: rgba(255, 255, 255, 0.9); + padding: 40px; + border-radius: 15px; + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); + width: 400px; + position: relative; + z-index: 1; + overflow: hidden; + backdrop-filter: blur(10px); + border: 1px solid rgba(255, 255, 255, 0.3); +} + +.login-container::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: linear-gradient(45deg, rgba(255,255,255,0.1), rgba(255,255,255,0)); + z-index: -1; +} + +.login-title { + text-align: center; + color: #2c3e50; + margin-bottom: 30px; + font-size: 28px; + font-weight: 600; + position: relative; + letter-spacing: 1px; +} + +.login-title::after { + content: ''; + position: absolute; + bottom: -10px; + left: 50%; + transform: translateX(-50%); + width: 100px; + height: 3px; + background: linear-gradient(90deg, #3498db, #2ecc71); +} + +.form-group { + margin-bottom: 25px; + position: relative; +} + +.form-group label { + display: block; + margin-bottom: 8px; + color: #2c3e50; + font-size: 14px; + font-weight: 500; +} + +.form-group input { + width: 100%; + padding: 12px 15px; + background: rgba(255, 255, 255, 0.8); + border: 1px solid #e0e0e0; + border-radius: 8px; + font-size: 16px; + color: #2c3e50; + transition: all 0.3s ease; + font-family: 'Microsoft YaHei', sans-serif; +} + +.form-group input:focus { + outline: none; + border-color: #3498db; + box-shadow: 0 0 10px rgba(52, 152, 219, 0.2); + background: #fff; +} + +.form-group input::placeholder { + color: #95a5a6; + font-family: 'Microsoft YaHei', sans-serif; +} + +.remember-me { + display: flex; + align-items: center; + margin-bottom: 20px; + color: #2c3e50; + font-size: 14px; + cursor: pointer; +} + +.remember-me input[type="checkbox"] { + appearance: none; + -webkit-appearance: none; + width: 18px; + height: 18px; + border: 1px solid #e0e0e0; + border-radius: 4px; + margin-right: 10px; + position: relative; + cursor: pointer; + background: #fff; +} + +.remember-me input[type="checkbox"]:checked { + background: #3498db; + border-color: #3498db; +} + +.remember-me input[type="checkbox"]:checked::after { + content: '✓'; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: #fff; + font-size: 12px; +} + +.login-btn { + width: 100%; + padding: 14px; + background: linear-gradient(45deg, #3498db, #2ecc71); + color: #fff; + border: none; + border-radius: 8px; + font-size: 16px; + font-weight: 500; + cursor: pointer; + transition: all 0.3s ease; + font-family: 'Microsoft YaHei', sans-serif; + position: relative; + overflow: hidden; +} + +.login-btn:hover { + transform: translateY(-2px); + box-shadow: 0 5px 15px rgba(46, 204, 113, 0.3); +} + +.login-btn::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); + transition: 0.5s; +} + +.login-btn:hover::before { + left: 100%; +} + +.error-message { + color: #e74c3c; + font-size: 14px; + margin-top: 5px; + display: none; + font-family: 'Microsoft YaHei', sans-serif; +} \ No newline at end of file diff --git a/SMMS/WebContent/static/easyui/css/default.css b/SMMS/WebContent/static/easyui/css/default.css new file mode 100644 index 0000000..4a9fcb5 --- /dev/null +++ b/SMMS/WebContent/static/easyui/css/default.css @@ -0,0 +1,40 @@ +*{font-size:12px; font-family:Tahoma,Verdana,微软雅黑,新宋体} +body{background:#D2E0F2; } +a{ color:Black; text-decoration:none;} +a:hover{ color:Red; text-decoration:underline;} +.textbox03 {border: #878787 1px solid;padding: 4px 3px;font:Verdana, Geneva, sans-serif,宋体;line-height: 14px; background-color: #fff; height: auto; font-size: 14px; font-weight: bold; width: 190px; } + +.txt01{font:Verdana, Geneva, sans-serif,宋体;padding:3px 2px 2px 2px; border-width:1px; border-color:#ddd; color:#000;} +.txt {border: #878787 1px solid;padding: 4px 3px;font:Verdana, Geneva, sans-serif,宋体;line-height: 14px; background-color: #fff; height: auto; font-size: 14px;} +.footer{text-align:center;color:#15428B; margin:0px; padding:0px;line-height:23px; font-weight:bold;} + +.head a{color:White;text-decoration:underline;} + +.easyui-accordion ul{list-style-type:none;margin:0px; padding:10px;} +.easyui-accordion ul li{ padding:0px;} +.easyui-accordion ul li a{line-height:24px;} +.easyui-accordion ul li div{margin:2px 0px;padding-left:10px;padding-top:2px;} +.easyui-accordion ul li div.hover{border:1px dashed #99BBE8; background:#E0ECFF;cursor:pointer;} +.easyui-accordion ul li div.hover a{color:#416AA3;} +.easyui-accordion ul li div.selected{border:1px solid #99BBE8; background:#E0ECFF;cursor:default;} +.easyui-accordion ul li div.selected a{color:#416AA3; font-weight:bold;} + + + +.icon{ background:url(../images/tabicons.png) no-repeat;width:18px; line-height:18px; display:inline-block;} +.icon-sys{ background-position:0px -200px;} +.icon-set{ background-position:-380px -200px;} +.icon-add{background-position: -20px 0px;} +.icon-add1{background:url('icon/edit_add.png') no-repeat;} +.icon-nav{background-position: -100px -20px; } +.icon-users{background-position: -100px -480px;} +.icon-role{background-position: -360px -200px;} +.icon-set{background-position: -380px -200px;} +.icon-log{background-position: -380px -80px;} +.icon-delete16{background:url('icon/delete.gif') no-repeat;width:18px; line-height:18px; display:inline-block;} +.icon-delete{ background-position:-140px -120px;} +.icon-edit{ background-position:-380px -320px;} +.icon-magic{ background-position:0px -500px;} +.icon-database{ background-position:-20px -140px;} +.icon-expand{ background:url('/images/coll2.gif') no-repeat;} +.icon-collapse{ background:url('/images/coll3.gif') no-repeat;} diff --git a/SMMS/WebContent/static/easyui/css/demo.css b/SMMS/WebContent/static/easyui/css/demo.css new file mode 100644 index 0000000..5c01467 --- /dev/null +++ b/SMMS/WebContent/static/easyui/css/demo.css @@ -0,0 +1,21 @@ +*{ + font-size:12px; +} +body { + font-family:verdana,helvetica,arial,sans-serif; + padding:20px; + font-size:12px; + margin:0; +} +h2 { + font-size:18px; + font-weight:bold; + margin:0; + margin-bottom:15px; +} +.demo-info{ + padding:0 0 12px 0; +} +.demo-tip{ + display:none; +} diff --git a/SMMS/WebContent/static/easyui/jquery.easyui.min.js b/SMMS/WebContent/static/easyui/jquery.easyui.min.js new file mode 100644 index 0000000..b65353a --- /dev/null +++ b/SMMS/WebContent/static/easyui/jquery.easyui.min.js @@ -0,0 +1,13911 @@ +/** + * jQuery EasyUI 1.4.2 + * + * Copyright (c) 2009-2015 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +$.parser={auto:true,onComplete:function(_1){ +},plugins:["draggable","droppable","resizable","pagination","tooltip","linkbutton","menu","menubutton","splitbutton","progressbar","tree","textbox","filebox","combo","combobox","combotree","combogrid","numberbox","validatebox","searchbox","spinner","numberspinner","timespinner","datetimespinner","calendar","datebox","datetimebox","slider","layout","panel","datagrid","propertygrid","treegrid","datalist","tabs","accordion","window","dialog","form"],parse:function(_2){ +var aa=[]; +for(var i=0;i<$.parser.plugins.length;i++){ +var _3=$.parser.plugins[i]; +var r=$(".easyui-"+_3,_2); +if(r.length){ +if(r[_3]){ +r[_3](); +}else{ +aa.push({name:_3,jq:r}); +} +} +} +if(aa.length&&window.easyloader){ +var _4=[]; +for(var i=0;i=0){ +v=Math.floor((_8.width()-_9)*v/100); +}else{ +v=Math.floor((_8.height()-_9)*v/100); +} +}else{ +v=parseInt(v)||undefined; +} +return v; +},parseOptions:function(_b,_c){ +var t=$(_b); +var _d={}; +var s=$.trim(t.attr("data-options")); +if(s){ +if(s.substring(0,1)!="{"){ +s="{"+s+"}"; +} +_d=(new Function("return "+s))(); +} +$.map(["width","height","left","top","minWidth","maxWidth","minHeight","maxHeight"],function(p){ +var pv=$.trim(_b.style[p]||""); +if(pv){ +if(pv.indexOf("%")==-1){ +pv=parseInt(pv)||undefined; +} +_d[p]=pv; +} +}); +if(_c){ +var _e={}; +for(var i=0;i<_c.length;i++){ +var pp=_c[i]; +if(typeof pp=="string"){ +_e[pp]=t.attr(pp); +}else{ +for(var _f in pp){ +var _10=pp[_f]; +if(_10=="boolean"){ +_e[_f]=t.attr(_f)?(t.attr(_f)=="true"):undefined; +}else{ +if(_10=="number"){ +_e[_f]=t.attr(_f)=="0"?0:parseFloat(t.attr(_f))||undefined; +} +} +} +} +} +$.extend(_d,_e); +} +return _d; +}}; +$(function(){ +var d=$("
").appendTo("body"); +$._boxModel=d.outerWidth()!=100; +d.remove(); +if(!window.easyloader&&$.parser.auto){ +$.parser.parse(); +} +}); +$.fn._outerWidth=function(_11){ +if(_11==undefined){ +if(this[0]==window){ +return this.width()||document.body.clientWidth; +} +return this.outerWidth()||0; +} +return this._size("width",_11); +}; +$.fn._outerHeight=function(_12){ +if(_12==undefined){ +if(this[0]==window){ +return this.height()||document.body.clientHeight; +} +return this.outerHeight()||0; +} +return this._size("height",_12); +}; +$.fn._scrollLeft=function(_13){ +if(_13==undefined){ +return this.scrollLeft(); +}else{ +return this.each(function(){ +$(this).scrollLeft(_13); +}); +} +}; +$.fn._propAttr=$.fn.prop||$.fn.attr; +$.fn._size=function(_14,_15){ +if(typeof _14=="string"){ +if(_14=="clear"){ +return this.each(function(){ +$(this).css({width:"",minWidth:"",maxWidth:"",height:"",minHeight:"",maxHeight:""}); +}); +}else{ +if(_14=="fit"){ +return this.each(function(){ +_16(this,this.tagName=="BODY"?$("body"):$(this).parent(),true); +}); +}else{ +if(_14=="unfit"){ +return this.each(function(){ +_16(this,$(this).parent(),false); +}); +}else{ +if(_15==undefined){ +return _17(this[0],_14); +}else{ +return this.each(function(){ +_17(this,_14,_15); +}); +} +} +} +} +}else{ +return this.each(function(){ +_15=_15||$(this).parent(); +$.extend(_14,_16(this,_15,_14.fit)||{}); +var r1=_18(this,"width",_15,_14); +var r2=_18(this,"height",_15,_14); +if(r1||r2){ +$(this).addClass("easyui-fluid"); +}else{ +$(this).removeClass("easyui-fluid"); +} +}); +} +function _16(_19,_1a,fit){ +if(!_1a.length){ +return false; +} +var t=$(_19)[0]; +var p=_1a[0]; +var _1b=p.fcount||0; +if(fit){ +if(!t.fitted){ +t.fitted=true; +p.fcount=_1b+1; +$(p).addClass("panel-noscroll"); +if(p.tagName=="BODY"){ +$("html").addClass("panel-fit"); +} +} +return {width:($(p).width()||1),height:($(p).height()||1)}; +}else{ +if(t.fitted){ +t.fitted=false; +p.fcount=_1b-1; +if(p.fcount==0){ +$(p).removeClass("panel-noscroll"); +if(p.tagName=="BODY"){ +$("html").removeClass("panel-fit"); +} +} +} +return false; +} +}; +function _18(_1c,_1d,_1e,_1f){ +var t=$(_1c); +var p=_1d; +var p1=p.substr(0,1).toUpperCase()+p.substr(1); +var min=$.parser.parseValue("min"+p1,_1f["min"+p1],_1e); +var max=$.parser.parseValue("max"+p1,_1f["max"+p1],_1e); +var val=$.parser.parseValue(p,_1f[p],_1e); +var _20=(String(_1f[p]||"").indexOf("%")>=0?true:false); +if(!isNaN(val)){ +var v=Math.min(Math.max(val,min||0),max||99999); +if(!_20){ +_1f[p]=v; +} +t._size("min"+p1,""); +t._size("max"+p1,""); +t._size(p,v); +}else{ +t._size(p,""); +t._size("min"+p1,min); +t._size("max"+p1,max); +} +return _20||_1f.fit; +}; +function _17(_21,_22,_23){ +var t=$(_21); +if(_23==undefined){ +_23=parseInt(_21.style[_22]); +if(isNaN(_23)){ +return undefined; +} +if($._boxModel){ +_23+=_24(); +} +return _23; +}else{ +if(_23===""){ +t.css(_22,""); +}else{ +if($._boxModel){ +_23-=_24(); +if(_23<0){ +_23=0; +} +} +t.css(_22,_23+"px"); +} +} +function _24(){ +if(_22.toLowerCase().indexOf("width")>=0){ +return t.outerWidth()-t.width(); +}else{ +return t.outerHeight()-t.height(); +} +}; +}; +}; +})(jQuery); +(function($){ +var _25=null; +var _26=null; +var _27=false; +function _28(e){ +if(e.touches.length!=1){ +return; +} +if(!_27){ +_27=true; +dblClickTimer=setTimeout(function(){ +_27=false; +},500); +}else{ +clearTimeout(dblClickTimer); +_27=false; +_29(e,"dblclick"); +} +_25=setTimeout(function(){ +_29(e,"contextmenu",3); +},1000); +_29(e,"mousedown"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _2a(e){ +if(e.touches.length!=1){ +return; +} +if(_25){ +clearTimeout(_25); +} +_29(e,"mousemove"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _2b(e){ +if(_25){ +clearTimeout(_25); +} +_29(e,"mouseup"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _29(e,_2c,_2d){ +var _2e=new $.Event(_2c); +_2e.pageX=e.changedTouches[0].pageX; +_2e.pageY=e.changedTouches[0].pageY; +_2e.which=_2d||1; +$(e.target).trigger(_2e); +}; +if(document.addEventListener){ +document.addEventListener("touchstart",_28,true); +document.addEventListener("touchmove",_2a,true); +document.addEventListener("touchend",_2b,true); +} +})(jQuery); +(function($){ +function _2f(e){ +var _30=$.data(e.data.target,"draggable"); +var _31=_30.options; +var _32=_30.proxy; +var _33=e.data; +var _34=_33.startLeft+e.pageX-_33.startX; +var top=_33.startTop+e.pageY-_33.startY; +if(_32){ +if(_32.parent()[0]==document.body){ +if(_31.deltaX!=null&&_31.deltaX!=undefined){ +_34=e.pageX+_31.deltaX; +}else{ +_34=e.pageX-e.data.offsetWidth; +} +if(_31.deltaY!=null&&_31.deltaY!=undefined){ +top=e.pageY+_31.deltaY; +}else{ +top=e.pageY-e.data.offsetHeight; +} +}else{ +if(_31.deltaX!=null&&_31.deltaX!=undefined){ +_34+=e.data.offsetWidth+_31.deltaX; +} +if(_31.deltaY!=null&&_31.deltaY!=undefined){ +top+=e.data.offsetHeight+_31.deltaY; +} +} +} +if(e.data.parent!=document.body){ +_34+=$(e.data.parent).scrollLeft(); +top+=$(e.data.parent).scrollTop(); +} +if(_31.axis=="h"){ +_33.left=_34; +}else{ +if(_31.axis=="v"){ +_33.top=top; +}else{ +_33.left=_34; +_33.top=top; +} +} +}; +function _35(e){ +var _36=$.data(e.data.target,"draggable"); +var _37=_36.options; +var _38=_36.proxy; +if(!_38){ +_38=$(e.data.target); +} +_38.css({left:e.data.left,top:e.data.top}); +$("body").css("cursor",_37.cursor); +}; +function _39(e){ +if(!$.fn.draggable.isDragging){ +return false; +} +var _3a=$.data(e.data.target,"draggable"); +var _3b=_3a.options; +var _3c=$(".droppable").filter(function(){ +return e.data.target!=this; +}).filter(function(){ +var _3d=$.data(this,"droppable").options.accept; +if(_3d){ +return $(_3d).filter(function(){ +return this==e.data.target; +}).length>0; +}else{ +return true; +} +}); +_3a.droppables=_3c; +var _3e=_3a.proxy; +if(!_3e){ +if(_3b.proxy){ +if(_3b.proxy=="clone"){ +_3e=$(e.data.target).clone().insertAfter(e.data.target); +}else{ +_3e=_3b.proxy.call(e.data.target,e.data.target); +} +_3a.proxy=_3e; +}else{ +_3e=$(e.data.target); +} +} +_3e.css("position","absolute"); +_2f(e); +_35(e); +_3b.onStartDrag.call(e.data.target,e); +return false; +}; +function _3f(e){ +if(!$.fn.draggable.isDragging){ +return false; +} +var _40=$.data(e.data.target,"draggable"); +_2f(e); +if(_40.options.onDrag.call(e.data.target,e)!=false){ +_35(e); +} +var _41=e.data.target; +_40.droppables.each(function(){ +var _42=$(this); +if(_42.droppable("options").disabled){ +return; +} +var p2=_42.offset(); +if(e.pageX>p2.left&&e.pageXp2.top&&e.pageYp2.left&&e.pageXp2.top&&e.pageY_58.options.edge; +}; +}); +}; +$.fn.draggable.methods={options:function(jq){ +return $.data(jq[0],"draggable").options; +},proxy:function(jq){ +return $.data(jq[0],"draggable").proxy; +},enable:function(jq){ +return jq.each(function(){ +$(this).draggable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).draggable({disabled:true}); +}); +}}; +$.fn.draggable.parseOptions=function(_5d){ +var t=$(_5d); +return $.extend({},$.parser.parseOptions(_5d,["cursor","handle","axis",{"revert":"boolean","deltaX":"number","deltaY":"number","edge":"number","delay":"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.draggable.defaults={proxy:null,revert:false,cursor:"move",deltaX:null,deltaY:null,handle:null,disabled:false,edge:0,axis:null,delay:100,onBeforeDrag:function(e){ +},onStartDrag:function(e){ +},onDrag:function(e){ +},onStopDrag:function(e){ +}}; +$.fn.draggable.isDragging=false; +})(jQuery); +(function($){ +function _5e(_5f){ +$(_5f).addClass("droppable"); +$(_5f).bind("_dragenter",function(e,_60){ +$.data(_5f,"droppable").options.onDragEnter.apply(_5f,[e,_60]); +}); +$(_5f).bind("_dragleave",function(e,_61){ +$.data(_5f,"droppable").options.onDragLeave.apply(_5f,[e,_61]); +}); +$(_5f).bind("_dragover",function(e,_62){ +$.data(_5f,"droppable").options.onDragOver.apply(_5f,[e,_62]); +}); +$(_5f).bind("_drop",function(e,_63){ +$.data(_5f,"droppable").options.onDrop.apply(_5f,[e,_63]); +}); +}; +$.fn.droppable=function(_64,_65){ +if(typeof _64=="string"){ +return $.fn.droppable.methods[_64](this,_65); +} +_64=_64||{}; +return this.each(function(){ +var _66=$.data(this,"droppable"); +if(_66){ +$.extend(_66.options,_64); +}else{ +_5e(this); +$.data(this,"droppable",{options:$.extend({},$.fn.droppable.defaults,$.fn.droppable.parseOptions(this),_64)}); +} +}); +}; +$.fn.droppable.methods={options:function(jq){ +return $.data(jq[0],"droppable").options; +},enable:function(jq){ +return jq.each(function(){ +$(this).droppable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).droppable({disabled:true}); +}); +}}; +$.fn.droppable.parseOptions=function(_67){ +var t=$(_67); +return $.extend({},$.parser.parseOptions(_67,["accept"]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.droppable.defaults={accept:null,disabled:false,onDragEnter:function(e,_68){ +},onDragOver:function(e,_69){ +},onDragLeave:function(e,_6a){ +},onDrop:function(e,_6b){ +}}; +})(jQuery); +(function($){ +$.fn.resizable=function(_6c,_6d){ +if(typeof _6c=="string"){ +return $.fn.resizable.methods[_6c](this,_6d); +} +function _6e(e){ +var _6f=e.data; +var _70=$.data(_6f.target,"resizable").options; +if(_6f.dir.indexOf("e")!=-1){ +var _71=_6f.startWidth+e.pageX-_6f.startX; +_71=Math.min(Math.max(_71,_70.minWidth),_70.maxWidth); +_6f.width=_71; +} +if(_6f.dir.indexOf("s")!=-1){ +var _72=_6f.startHeight+e.pageY-_6f.startY; +_72=Math.min(Math.max(_72,_70.minHeight),_70.maxHeight); +_6f.height=_72; +} +if(_6f.dir.indexOf("w")!=-1){ +var _71=_6f.startWidth-e.pageX+_6f.startX; +_71=Math.min(Math.max(_71,_70.minWidth),_70.maxWidth); +_6f.width=_71; +_6f.left=_6f.startLeft+_6f.startWidth-_6f.width; +} +if(_6f.dir.indexOf("n")!=-1){ +var _72=_6f.startHeight-e.pageY+_6f.startY; +_72=Math.min(Math.max(_72,_70.minHeight),_70.maxHeight); +_6f.height=_72; +_6f.top=_6f.startTop+_6f.startHeight-_6f.height; +} +}; +function _73(e){ +var _74=e.data; +var t=$(_74.target); +t.css({left:_74.left,top:_74.top}); +if(t.outerWidth()!=_74.width){ +t._outerWidth(_74.width); +} +if(t.outerHeight()!=_74.height){ +t._outerHeight(_74.height); +} +}; +function _75(e){ +$.fn.resizable.isResizing=true; +$.data(e.data.target,"resizable").options.onStartResize.call(e.data.target,e); +return false; +}; +function _76(e){ +_6e(e); +if($.data(e.data.target,"resizable").options.onResize.call(e.data.target,e)!=false){ +_73(e); +} +return false; +}; +function _77(e){ +$.fn.resizable.isResizing=false; +_6e(e,true); +_73(e); +$.data(e.data.target,"resizable").options.onStopResize.call(e.data.target,e); +$(document).unbind(".resizable"); +$("body").css("cursor",""); +return false; +}; +return this.each(function(){ +var _78=null; +var _79=$.data(this,"resizable"); +if(_79){ +$(this).unbind(".resizable"); +_78=$.extend(_79.options,_6c||{}); +}else{ +_78=$.extend({},$.fn.resizable.defaults,$.fn.resizable.parseOptions(this),_6c||{}); +$.data(this,"resizable",{options:_78}); +} +if(_78.disabled==true){ +return; +} +$(this).bind("mousemove.resizable",{target:this},function(e){ +if($.fn.resizable.isResizing){ +return; +} +var dir=_7a(e); +if(dir==""){ +$(e.data.target).css("cursor",""); +}else{ +$(e.data.target).css("cursor",dir+"-resize"); +} +}).bind("mouseleave.resizable",{target:this},function(e){ +$(e.data.target).css("cursor",""); +}).bind("mousedown.resizable",{target:this},function(e){ +var dir=_7a(e); +if(dir==""){ +return; +} +function _7b(css){ +var val=parseInt($(e.data.target).css(css)); +if(isNaN(val)){ +return 0; +}else{ +return val; +} +}; +var _7c={target:e.data.target,dir:dir,startLeft:_7b("left"),startTop:_7b("top"),left:_7b("left"),top:_7b("top"),startX:e.pageX,startY:e.pageY,startWidth:$(e.data.target).outerWidth(),startHeight:$(e.data.target).outerHeight(),width:$(e.data.target).outerWidth(),height:$(e.data.target).outerHeight(),deltaWidth:$(e.data.target).outerWidth()-$(e.data.target).width(),deltaHeight:$(e.data.target).outerHeight()-$(e.data.target).height()}; +$(document).bind("mousedown.resizable",_7c,_75); +$(document).bind("mousemove.resizable",_7c,_76); +$(document).bind("mouseup.resizable",_7c,_77); +$("body").css("cursor",dir+"-resize"); +}); +function _7a(e){ +var tt=$(e.data.target); +var dir=""; +var _7d=tt.offset(); +var _7e=tt.outerWidth(); +var _7f=tt.outerHeight(); +var _80=_78.edge; +if(e.pageY>_7d.top&&e.pageY<_7d.top+_80){ +dir+="n"; +}else{ +if(e.pageY<_7d.top+_7f&&e.pageY>_7d.top+_7f-_80){ +dir+="s"; +} +} +if(e.pageX>_7d.left&&e.pageX<_7d.left+_80){ +dir+="w"; +}else{ +if(e.pageX<_7d.left+_7e&&e.pageX>_7d.left+_7e-_80){ +dir+="e"; +} +} +var _81=_78.handles.split(","); +for(var i=0;i<_81.length;i++){ +var _82=_81[i].replace(/(^\s*)|(\s*$)/g,""); +if(_82=="all"||_82==dir){ +return dir; +} +} +return ""; +}; +}); +}; +$.fn.resizable.methods={options:function(jq){ +return $.data(jq[0],"resizable").options; +},enable:function(jq){ +return jq.each(function(){ +$(this).resizable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).resizable({disabled:true}); +}); +}}; +$.fn.resizable.parseOptions=function(_83){ +var t=$(_83); +return $.extend({},$.parser.parseOptions(_83,["handles",{minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number",edge:"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.resizable.defaults={disabled:false,handles:"n, e, s, w, ne, se, sw, nw, all",minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000,edge:5,onStartResize:function(e){ +},onResize:function(e){ +},onStopResize:function(e){ +}}; +$.fn.resizable.isResizing=false; +})(jQuery); +(function($){ +function _84(_85,_86){ +var _87=$.data(_85,"linkbutton").options; +if(_86){ +$.extend(_87,_86); +} +if(_87.width||_87.height||_87.fit){ +var btn=$(_85); +var _88=btn.parent(); +var _89=btn.is(":visible"); +if(!_89){ +var _8a=$("
").insertBefore(_85); +var _8b={position:btn.css("position"),display:btn.css("display"),left:btn.css("left")}; +btn.appendTo("body"); +btn.css({position:"absolute",display:"inline-block",left:-20000}); +} +btn._size(_87,_88); +var _8c=btn.find(".l-btn-left"); +_8c.css("margin-top",0); +_8c.css("margin-top",parseInt((btn.height()-_8c.height())/2)+"px"); +if(!_89){ +btn.insertAfter(_8a); +btn.css(_8b); +_8a.remove(); +} +} +}; +function _8d(_8e){ +var _8f=$.data(_8e,"linkbutton").options; +var t=$(_8e).empty(); +t.addClass("l-btn").removeClass("l-btn-plain l-btn-selected l-btn-plain-selected l-btn-outline"); +t.removeClass("l-btn-small l-btn-medium l-btn-large").addClass("l-btn-"+_8f.size); +if(_8f.plain){ +t.addClass("l-btn-plain"); +} +if(_8f.outline){ +t.addClass("l-btn-outline"); +} +if(_8f.selected){ +t.addClass(_8f.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); +} +t.attr("group",_8f.group||""); +t.attr("id",_8f.id||""); +var _90=$("").appendTo(t); +if(_8f.text){ +$("").html(_8f.text).appendTo(_90); +}else{ +$(" ").appendTo(_90); +} +if(_8f.iconCls){ +$(" ").addClass(_8f.iconCls).appendTo(_90); +_90.addClass("l-btn-icon-"+_8f.iconAlign); +} +t.unbind(".linkbutton").bind("focus.linkbutton",function(){ +if(!_8f.disabled){ +$(this).addClass("l-btn-focus"); +} +}).bind("blur.linkbutton",function(){ +$(this).removeClass("l-btn-focus"); +}).bind("click.linkbutton",function(){ +if(!_8f.disabled){ +if(_8f.toggle){ +if(_8f.selected){ +$(this).linkbutton("unselect"); +}else{ +$(this).linkbutton("select"); +} +} +_8f.onClick.call(this); +} +}); +_91(_8e,_8f.selected); +_92(_8e,_8f.disabled); +}; +function _91(_93,_94){ +var _95=$.data(_93,"linkbutton").options; +if(_94){ +if(_95.group){ +$("a.l-btn[group=\""+_95.group+"\"]").each(function(){ +var o=$(this).linkbutton("options"); +if(o.toggle){ +$(this).removeClass("l-btn-selected l-btn-plain-selected"); +o.selected=false; +} +}); +} +$(_93).addClass(_95.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); +_95.selected=true; +}else{ +if(!_95.group){ +$(_93).removeClass("l-btn-selected l-btn-plain-selected"); +_95.selected=false; +} +} +}; +function _92(_96,_97){ +var _98=$.data(_96,"linkbutton"); +var _99=_98.options; +$(_96).removeClass("l-btn-disabled l-btn-plain-disabled"); +if(_97){ +_99.disabled=true; +var _9a=$(_96).attr("href"); +if(_9a){ +_98.href=_9a; +$(_96).attr("href","javascript:void(0)"); +} +if(_96.onclick){ +_98.onclick=_96.onclick; +_96.onclick=null; +} +_99.plain?$(_96).addClass("l-btn-disabled l-btn-plain-disabled"):$(_96).addClass("l-btn-disabled"); +}else{ +_99.disabled=false; +if(_98.href){ +$(_96).attr("href",_98.href); +} +if(_98.onclick){ +_96.onclick=_98.onclick; +} +} +}; +$.fn.linkbutton=function(_9b,_9c){ +if(typeof _9b=="string"){ +return $.fn.linkbutton.methods[_9b](this,_9c); +} +_9b=_9b||{}; +return this.each(function(){ +var _9d=$.data(this,"linkbutton"); +if(_9d){ +$.extend(_9d.options,_9b); +}else{ +$.data(this,"linkbutton",{options:$.extend({},$.fn.linkbutton.defaults,$.fn.linkbutton.parseOptions(this),_9b)}); +$(this).removeAttr("disabled"); +$(this).bind("_resize",function(e,_9e){ +if($(this).hasClass("easyui-fluid")||_9e){ +_84(this); +} +return false; +}); +} +_8d(this); +_84(this); +}); +}; +$.fn.linkbutton.methods={options:function(jq){ +return $.data(jq[0],"linkbutton").options; +},resize:function(jq,_9f){ +return jq.each(function(){ +_84(this,_9f); +}); +},enable:function(jq){ +return jq.each(function(){ +_92(this,false); +}); +},disable:function(jq){ +return jq.each(function(){ +_92(this,true); +}); +},select:function(jq){ +return jq.each(function(){ +_91(this,true); +}); +},unselect:function(jq){ +return jq.each(function(){ +_91(this,false); +}); +}}; +$.fn.linkbutton.parseOptions=function(_a0){ +var t=$(_a0); +return $.extend({},$.parser.parseOptions(_a0,["id","iconCls","iconAlign","group","size",{plain:"boolean",toggle:"boolean",selected:"boolean",outline:"boolean"}]),{disabled:(t.attr("disabled")?true:undefined),text:$.trim(t.html()),iconCls:(t.attr("icon")||t.attr("iconCls"))}); +}; +$.fn.linkbutton.defaults={id:null,disabled:false,toggle:false,selected:false,outline:false,group:null,plain:false,text:"",iconCls:null,iconAlign:"left",size:"small",onClick:function(){ +}}; +})(jQuery); +(function($){ +function _a1(_a2){ +var _a3=$.data(_a2,"pagination"); +var _a4=_a3.options; +var bb=_a3.bb={}; +var _a5=$(_a2).addClass("pagination").html("
"); +var tr=_a5.find("tr"); +var aa=$.extend([],_a4.layout); +if(!_a4.showPageList){ +_a6(aa,"list"); +} +if(!_a4.showRefresh){ +_a6(aa,"refresh"); +} +if(aa[0]=="sep"){ +aa.shift(); +} +if(aa[aa.length-1]=="sep"){ +aa.pop(); +} +for(var _a7=0;_a7"); +ps.bind("change",function(){ +_a4.pageSize=parseInt($(this).val()); +_a4.onChangePageSize.call(_a2,_a4.pageSize); +_ae(_a2,_a4.pageNumber); +}); +for(var i=0;i<_a4.pageList.length;i++){ +$("").text(_a4.pageList[i]).appendTo(ps); +} +$("").append(ps).appendTo(tr); +}else{ +if(_a8=="sep"){ +$("
").appendTo(tr); +}else{ +if(_a8=="first"){ +bb.first=_a9("first"); +}else{ +if(_a8=="prev"){ +bb.prev=_a9("prev"); +}else{ +if(_a8=="next"){ +bb.next=_a9("next"); +}else{ +if(_a8=="last"){ +bb.last=_a9("last"); +}else{ +if(_a8=="manual"){ +$("").html(_a4.beforePageText).appendTo(tr).wrap(""); +bb.num=$("").appendTo(tr).wrap(""); +bb.num.unbind(".pagination").bind("keydown.pagination",function(e){ +if(e.keyCode==13){ +var _aa=parseInt($(this).val())||1; +_ae(_a2,_aa); +return false; +} +}); +bb.after=$("").appendTo(tr).wrap(""); +}else{ +if(_a8=="refresh"){ +bb.refresh=_a9("refresh"); +}else{ +if(_a8=="links"){ +$("").appendTo(tr); +} +} +} +} +} +} +} +} +} +} +if(_a4.buttons){ +$("
").appendTo(tr); +if($.isArray(_a4.buttons)){ +for(var i=0;i<_a4.buttons.length;i++){ +var btn=_a4.buttons[i]; +if(btn=="-"){ +$("
").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var a=$("").appendTo(td); +a[0].onclick=eval(btn.handler||function(){ +}); +a.linkbutton($.extend({},btn,{plain:true})); +} +} +}else{ +var td=$("").appendTo(tr); +$(_a4.buttons).appendTo(td).show(); +} +} +$("
").appendTo(_a5); +$("
").appendTo(_a5); +function _a9(_ab){ +var btn=_a4.nav[_ab]; +var a=$("").appendTo(tr); +a.wrap(""); +a.linkbutton({iconCls:btn.iconCls,plain:true}).unbind(".pagination").bind("click.pagination",function(){ +btn.handler.call(_a2); +}); +return a; +}; +function _a6(aa,_ac){ +var _ad=$.inArray(_ac,aa); +if(_ad>=0){ +aa.splice(_ad,1); +} +return aa; +}; +}; +function _ae(_af,_b0){ +var _b1=$.data(_af,"pagination").options; +_b2(_af,{pageNumber:_b0}); +_b1.onSelectPage.call(_af,_b1.pageNumber,_b1.pageSize); +}; +function _b2(_b3,_b4){ +var _b5=$.data(_b3,"pagination"); +var _b6=_b5.options; +var bb=_b5.bb; +$.extend(_b6,_b4||{}); +var ps=$(_b3).find("select.pagination-page-list"); +if(ps.length){ +ps.val(_b6.pageSize+""); +_b6.pageSize=parseInt(ps.val()); +} +var _b7=Math.ceil(_b6.total/_b6.pageSize)||1; +if(_b6.pageNumber<1){ +_b6.pageNumber=1; +} +if(_b6.pageNumber>_b7){ +_b6.pageNumber=_b7; +} +if(_b6.total==0){ +_b6.pageNumber=0; +_b7=0; +} +if(bb.num){ +bb.num.val(_b6.pageNumber); +} +if(bb.after){ +bb.after.html(_b6.afterPageText.replace(/{pages}/,_b7)); +} +var td=$(_b3).find("td.pagination-links"); +if(td.length){ +td.empty(); +var _b8=_b6.pageNumber-Math.floor(_b6.links/2); +if(_b8<1){ +_b8=1; +} +var _b9=_b8+_b6.links-1; +if(_b9>_b7){ +_b9=_b7; +} +_b8=_b9-_b6.links+1; +if(_b8<1){ +_b8=1; +} +for(var i=_b8;i<=_b9;i++){ +var a=$("").appendTo(td); +a.linkbutton({plain:true,text:i}); +if(i==_b6.pageNumber){ +a.linkbutton("select"); +}else{ +a.unbind(".pagination").bind("click.pagination",{pageNumber:i},function(e){ +_ae(_b3,e.data.pageNumber); +}); +} +} +} +var _ba=_b6.displayMsg; +_ba=_ba.replace(/{from}/,_b6.total==0?0:_b6.pageSize*(_b6.pageNumber-1)+1); +_ba=_ba.replace(/{to}/,Math.min(_b6.pageSize*(_b6.pageNumber),_b6.total)); +_ba=_ba.replace(/{total}/,_b6.total); +$(_b3).find("div.pagination-info").html(_ba); +if(bb.first){ +bb.first.linkbutton({disabled:((!_b6.total)||_b6.pageNumber==1)}); +} +if(bb.prev){ +bb.prev.linkbutton({disabled:((!_b6.total)||_b6.pageNumber==1)}); +} +if(bb.next){ +bb.next.linkbutton({disabled:(_b6.pageNumber==_b7)}); +} +if(bb.last){ +bb.last.linkbutton({disabled:(_b6.pageNumber==_b7)}); +} +_bb(_b3,_b6.loading); +}; +function _bb(_bc,_bd){ +var _be=$.data(_bc,"pagination"); +var _bf=_be.options; +_bf.loading=_bd; +if(_bf.showRefresh&&_be.bb.refresh){ +_be.bb.refresh.linkbutton({iconCls:(_bf.loading?"pagination-loading":"pagination-load")}); +} +}; +$.fn.pagination=function(_c0,_c1){ +if(typeof _c0=="string"){ +return $.fn.pagination.methods[_c0](this,_c1); +} +_c0=_c0||{}; +return this.each(function(){ +var _c2; +var _c3=$.data(this,"pagination"); +if(_c3){ +_c2=$.extend(_c3.options,_c0); +}else{ +_c2=$.extend({},$.fn.pagination.defaults,$.fn.pagination.parseOptions(this),_c0); +$.data(this,"pagination",{options:_c2}); +} +_a1(this); +_b2(this); +}); +}; +$.fn.pagination.methods={options:function(jq){ +return $.data(jq[0],"pagination").options; +},loading:function(jq){ +return jq.each(function(){ +_bb(this,true); +}); +},loaded:function(jq){ +return jq.each(function(){ +_bb(this,false); +}); +},refresh:function(jq,_c4){ +return jq.each(function(){ +_b2(this,_c4); +}); +},select:function(jq,_c5){ +return jq.each(function(){ +_ae(this,_c5); +}); +}}; +$.fn.pagination.parseOptions=function(_c6){ +var t=$(_c6); +return $.extend({},$.parser.parseOptions(_c6,[{total:"number",pageSize:"number",pageNumber:"number",links:"number"},{loading:"boolean",showPageList:"boolean",showRefresh:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined)}); +}; +$.fn.pagination.defaults={total:1,pageSize:10,pageNumber:1,pageList:[10,20,30,50],loading:false,buttons:null,showPageList:true,showRefresh:true,links:10,layout:["list","sep","first","prev","sep","manual","sep","next","last","sep","refresh"],onSelectPage:function(_c7,_c8){ +},onBeforeRefresh:function(_c9,_ca){ +},onRefresh:function(_cb,_cc){ +},onChangePageSize:function(_cd){ +},beforePageText:"Page",afterPageText:"of {pages}",displayMsg:"Displaying {from} to {to} of {total} items",nav:{first:{iconCls:"pagination-first",handler:function(){ +var _ce=$(this).pagination("options"); +if(_ce.pageNumber>1){ +$(this).pagination("select",1); +} +}},prev:{iconCls:"pagination-prev",handler:function(){ +var _cf=$(this).pagination("options"); +if(_cf.pageNumber>1){ +$(this).pagination("select",_cf.pageNumber-1); +} +}},next:{iconCls:"pagination-next",handler:function(){ +var _d0=$(this).pagination("options"); +var _d1=Math.ceil(_d0.total/_d0.pageSize); +if(_d0.pageNumber<_d1){ +$(this).pagination("select",_d0.pageNumber+1); +} +}},last:{iconCls:"pagination-last",handler:function(){ +var _d2=$(this).pagination("options"); +var _d3=Math.ceil(_d2.total/_d2.pageSize); +if(_d2.pageNumber<_d3){ +$(this).pagination("select",_d3); +} +}},refresh:{iconCls:"pagination-refresh",handler:function(){ +var _d4=$(this).pagination("options"); +if(_d4.onBeforeRefresh.call(this,_d4.pageNumber,_d4.pageSize)!=false){ +$(this).pagination("select",_d4.pageNumber); +_d4.onRefresh.call(this,_d4.pageNumber,_d4.pageSize); +} +}}}}; +})(jQuery); +(function($){ +function _d5(_d6){ +var _d7=$(_d6); +_d7.addClass("tree"); +return _d7; +}; +function _d8(_d9){ +var _da=$.data(_d9,"tree").options; +$(_d9).unbind().bind("mouseover",function(e){ +var tt=$(e.target); +var _db=tt.closest("div.tree-node"); +if(!_db.length){ +return; +} +_db.addClass("tree-node-hover"); +if(tt.hasClass("tree-hit")){ +if(tt.hasClass("tree-expanded")){ +tt.addClass("tree-expanded-hover"); +}else{ +tt.addClass("tree-collapsed-hover"); +} +} +e.stopPropagation(); +}).bind("mouseout",function(e){ +var tt=$(e.target); +var _dc=tt.closest("div.tree-node"); +if(!_dc.length){ +return; +} +_dc.removeClass("tree-node-hover"); +if(tt.hasClass("tree-hit")){ +if(tt.hasClass("tree-expanded")){ +tt.removeClass("tree-expanded-hover"); +}else{ +tt.removeClass("tree-collapsed-hover"); +} +} +e.stopPropagation(); +}).bind("click",function(e){ +var tt=$(e.target); +var _dd=tt.closest("div.tree-node"); +if(!_dd.length){ +return; +} +if(tt.hasClass("tree-hit")){ +_144(_d9,_dd[0]); +return false; +}else{ +if(tt.hasClass("tree-checkbox")){ +_104(_d9,_dd[0]); +return false; +}else{ +_18a(_d9,_dd[0]); +_da.onClick.call(_d9,_e0(_d9,_dd[0])); +} +} +e.stopPropagation(); +}).bind("dblclick",function(e){ +var _de=$(e.target).closest("div.tree-node"); +if(!_de.length){ +return; +} +_18a(_d9,_de[0]); +_da.onDblClick.call(_d9,_e0(_d9,_de[0])); +e.stopPropagation(); +}).bind("contextmenu",function(e){ +var _df=$(e.target).closest("div.tree-node"); +if(!_df.length){ +return; +} +_da.onContextMenu.call(_d9,e,_e0(_d9,_df[0])); +e.stopPropagation(); +}); +}; +function _e1(_e2){ +var _e3=$.data(_e2,"tree").options; +_e3.dnd=false; +var _e4=$(_e2).find("div.tree-node"); +_e4.draggable("disable"); +_e4.css("cursor","pointer"); +}; +function _e5(_e6){ +var _e7=$.data(_e6,"tree"); +var _e8=_e7.options; +var _e9=_e7.tree; +_e7.disabledNodes=[]; +_e8.dnd=true; +_e9.find("div.tree-node").draggable({disabled:false,revert:true,cursor:"pointer",proxy:function(_ea){ +var p=$("
").appendTo("body"); +p.html(" "+$(_ea).find(".tree-title").html()); +p.hide(); +return p; +},deltaX:15,deltaY:15,onBeforeDrag:function(e){ +if(_e8.onBeforeDrag.call(_e6,_e0(_e6,this))==false){ +return false; +} +if($(e.target).hasClass("tree-hit")||$(e.target).hasClass("tree-checkbox")){ +return false; +} +if(e.which!=1){ +return false; +} +$(this).next("ul").find("div.tree-node").droppable({accept:"no-accept"}); +var _eb=$(this).find("span.tree-indent"); +if(_eb.length){ +e.data.offsetWidth-=_eb.length*_eb.width(); +} +},onStartDrag:function(){ +$(this).draggable("proxy").css({left:-10000,top:-10000}); +_e8.onStartDrag.call(_e6,_e0(_e6,this)); +var _ec=_e0(_e6,this); +if(_ec.id==undefined){ +_ec.id="easyui_tree_node_id_temp"; +_127(_e6,_ec); +} +_e7.draggingNodeId=_ec.id; +},onDrag:function(e){ +var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY; +var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); +if(d>3){ +$(this).draggable("proxy").show(); +} +this.pageY=e.pageY; +},onStopDrag:function(){ +$(this).next("ul").find("div.tree-node").droppable({accept:"div.tree-node"}); +for(var i=0;i<_e7.disabledNodes.length;i++){ +$(_e7.disabledNodes[i]).droppable("enable"); +} +_e7.disabledNodes=[]; +var _ed=_182(_e6,_e7.draggingNodeId); +if(_ed&&_ed.id=="easyui_tree_node_id_temp"){ +_ed.id=""; +_127(_e6,_ed); +} +_e8.onStopDrag.call(_e6,_ed); +}}).droppable({accept:"div.tree-node",onDragEnter:function(e,_ee){ +if(_e8.onDragEnter.call(_e6,this,_ef(_ee))==false){ +_f0(_ee,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +$(this).droppable("disable"); +_e7.disabledNodes.push(this); +} +},onDragOver:function(e,_f1){ +if($(this).droppable("options").disabled){ +return; +} +var _f2=_f1.pageY; +var top=$(this).offset().top; +var _f3=top+$(this).outerHeight(); +_f0(_f1,true); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +if(_f2>top+(_f3-top)/2){ +if(_f3-_f2<5){ +$(this).addClass("tree-node-bottom"); +}else{ +$(this).addClass("tree-node-append"); +} +}else{ +if(_f2-top<5){ +$(this).addClass("tree-node-top"); +}else{ +$(this).addClass("tree-node-append"); +} +} +if(_e8.onDragOver.call(_e6,this,_ef(_f1))==false){ +_f0(_f1,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +$(this).droppable("disable"); +_e7.disabledNodes.push(this); +} +},onDragLeave:function(e,_f4){ +_f0(_f4,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +_e8.onDragLeave.call(_e6,this,_ef(_f4)); +},onDrop:function(e,_f5){ +var _f6=this; +var _f7,_f8; +if($(this).hasClass("tree-node-append")){ +_f7=_f9; +_f8="append"; +}else{ +_f7=_fa; +_f8=$(this).hasClass("tree-node-top")?"top":"bottom"; +} +if(_e8.onBeforeDrop.call(_e6,_f6,_ef(_f5),_f8)==false){ +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +return; +} +_f7(_f5,_f6,_f8); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +}}); +function _ef(_fb,pop){ +return $(_fb).closest("ul.tree").tree(pop?"pop":"getData",_fb); +}; +function _f0(_fc,_fd){ +var _fe=$(_fc).draggable("proxy").find("span.tree-dnd-icon"); +_fe.removeClass("tree-dnd-yes tree-dnd-no").addClass(_fd?"tree-dnd-yes":"tree-dnd-no"); +}; +function _f9(_ff,dest){ +if(_e0(_e6,dest).state=="closed"){ +_13c(_e6,dest,function(){ +_100(); +}); +}else{ +_100(); +} +function _100(){ +var node=_ef(_ff,true); +$(_e6).tree("append",{parent:dest,data:[node]}); +_e8.onDrop.call(_e6,dest,node,"append"); +}; +}; +function _fa(_101,dest,_102){ +var _103={}; +if(_102=="top"){ +_103.before=dest; +}else{ +_103.after=dest; +} +var node=_ef(_101,true); +_103.data=node; +$(_e6).tree("insert",_103); +_e8.onDrop.call(_e6,dest,node,_102); +}; +}; +function _104(_105,_106,_107){ +var _108=$.data(_105,"tree"); +var opts=_108.options; +if(!opts.checkbox){ +return; +} +var _109=_e0(_105,_106); +if(_107==undefined){ +var ck=$(_106).find(".tree-checkbox"); +if(ck.hasClass("tree-checkbox1")){ +_107=false; +}else{ +if(ck.hasClass("tree-checkbox0")){ +_107=true; +}else{ +if(_109._checked==undefined){ +_109._checked=$(_106).find(".tree-checkbox").hasClass("tree-checkbox1"); +} +_107=!_109._checked; +} +} +} +_109._checked=_107; +if(opts.onBeforeCheck.call(_105,_109,_107)==false){ +return; +} +if(opts.cascadeCheck){ +_10a(_109,_107); +_10b(_109,_107); +}else{ +_10c($(_109.target),_107?"1":"0"); +} +opts.onCheck.call(_105,_109,_107); +function _10c(node,flag){ +var ck=node.find(".tree-checkbox"); +ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); +ck.addClass("tree-checkbox"+flag); +}; +function _10a(_10d,_10e){ +if(opts.deepCheck){ +var node=$("#"+_10d.domId); +var flag=_10e?"1":"0"; +_10c(node,flag); +_10c(node.next(),flag); +}else{ +_10f(_10d,_10e); +_12a(_10d.children||[],function(n){ +_10f(n,_10e); +}); +} +}; +function _10f(_110,_111){ +if(_110.hidden){ +return; +} +var cls="tree-checkbox"+(_111?"1":"0"); +var node=$("#"+_110.domId); +_10c(node,_111?"1":"0"); +if(_110.children){ +for(var i=0;i<_110.children.length;i++){ +if(_110.children[i].hidden){ +if(!$("#"+_110.children[i].domId).find("."+cls).length){ +_10c(node,"2"); +var _112=_14f(_105,node[0]); +while(_112){ +_10c($(_112.target),"2"); +_112=_14f(_105,_112[0]); +} +return; +} +} +} +} +}; +function _10b(_113,_114){ +var node=$("#"+_113.domId); +var _115=_14f(_105,node[0]); +if(_115){ +var flag=""; +if(_116(node,true)){ +flag="1"; +}else{ +if(_116(node,false)){ +flag="0"; +}else{ +flag="2"; +} +} +_10c($(_115.target),flag); +_10b(_115,_114); +} +}; +function _116(node,_117){ +var cls="tree-checkbox"+(_117?"1":"0"); +var ck=node.find(".tree-checkbox"); +if(!ck.hasClass(cls)){ +return false; +} +var b=true; +node.parent().siblings().each(function(){ +var ck=$(this).children("div.tree-node").children(".tree-checkbox"); +if(ck.length&&!ck.hasClass(cls)){ +b=false; +return false; +} +}); +return b; +}; +}; +function _118(_119,_11a){ +var opts=$.data(_119,"tree").options; +if(!opts.checkbox){ +return; +} +var node=$(_11a); +if(_11b(_119,_11a)){ +var ck=node.find(".tree-checkbox"); +if(ck.length){ +if(ck.hasClass("tree-checkbox1")){ +_104(_119,_11a,true); +}else{ +_104(_119,_11a,false); +} +}else{ +if(opts.onlyLeafCheck){ +$("").insertBefore(node.find(".tree-title")); +} +} +}else{ +var ck=node.find(".tree-checkbox"); +if(opts.onlyLeafCheck){ +ck.remove(); +}else{ +if(ck.hasClass("tree-checkbox1")){ +_104(_119,_11a,true); +}else{ +if(ck.hasClass("tree-checkbox2")){ +var _11c=true; +var _11d=true; +var _11e=_11f(_119,_11a); +for(var i=0;i<_11e.length;i++){ +if(_11e[i].checked){ +_11d=false; +}else{ +_11c=false; +} +} +if(_11c){ +_104(_119,_11a,true); +} +if(_11d){ +_104(_119,_11a,false); +} +} +} +} +} +}; +function _120(_121,ul,data,_122){ +var _123=$.data(_121,"tree"); +var opts=_123.options; +var _124=$(ul).prevAll("div.tree-node:first"); +data=opts.loadFilter.call(_121,data,_124[0]); +var _125=_126(_121,"domId",_124.attr("id")); +if(!_122){ +_125?_125.children=data:_123.data=data; +$(ul).empty(); +}else{ +if(_125){ +_125.children?_125.children=_125.children.concat(data):_125.children=data; +}else{ +_123.data=_123.data.concat(data); +} +} +opts.view.render.call(opts.view,_121,ul,data); +if(opts.dnd){ +_e5(_121); +} +if(_125){ +_127(_121,_125); +} +var _128=[]; +var _129=[]; +for(var i=0;i1){ +$(_12f[0].target).addClass("tree-root-first"); +}else{ +if(_12f.length==1){ +$(_12f[0].target).addClass("tree-root-one"); +} +} +} +$(ul).children("li").each(function(){ +var node=$(this).children("div.tree-node"); +var ul=node.next("ul"); +if(ul.length){ +if($(this).next().length){ +_130(node); +} +_12c(_12d,ul,_12e); +}else{ +_131(node); +} +}); +var _132=$(ul).children("li:last").children("div.tree-node").addClass("tree-node-last"); +_132.children("span.tree-join").removeClass("tree-join").addClass("tree-joinbottom"); +function _131(node,_133){ +var icon=node.find("span.tree-icon"); +icon.prev("span.tree-indent").addClass("tree-join"); +}; +function _130(node){ +var _134=node.find("span.tree-indent, span.tree-hit").length; +node.next().find("div.tree-node").each(function(){ +$(this).children("span:eq("+(_134-1)+")").addClass("tree-line"); +}); +}; +}; +function _135(_136,ul,_137,_138){ +var opts=$.data(_136,"tree").options; +_137=$.extend({},opts.queryParams,_137||{}); +var _139=null; +if(_136!=ul){ +var node=$(ul).prev(); +_139=_e0(_136,node[0]); +} +if(opts.onBeforeLoad.call(_136,_139,_137)==false){ +return; +} +var _13a=$(ul).prev().children("span.tree-folder"); +_13a.addClass("tree-loading"); +var _13b=opts.loader.call(_136,_137,function(data){ +_13a.removeClass("tree-loading"); +_120(_136,ul,data); +if(_138){ +_138(); +} +},function(){ +_13a.removeClass("tree-loading"); +opts.onLoadError.apply(_136,arguments); +if(_138){ +_138(); +} +}); +if(_13b==false){ +_13a.removeClass("tree-loading"); +} +}; +function _13c(_13d,_13e,_13f){ +var opts=$.data(_13d,"tree").options; +var hit=$(_13e).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-expanded")){ +return; +} +var node=_e0(_13d,_13e); +if(opts.onBeforeExpand.call(_13d,node)==false){ +return; +} +hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); +hit.next().addClass("tree-folder-open"); +var ul=$(_13e).next(); +if(ul.length){ +if(opts.animate){ +ul.slideDown("normal",function(){ +node.state="open"; +opts.onExpand.call(_13d,node); +if(_13f){ +_13f(); +} +}); +}else{ +ul.css("display","block"); +node.state="open"; +opts.onExpand.call(_13d,node); +if(_13f){ +_13f(); +} +} +}else{ +var _140=$("
    ").insertAfter(_13e); +_135(_13d,_140[0],{id:node.id},function(){ +if(_140.is(":empty")){ +_140.remove(); +} +if(opts.animate){ +_140.slideDown("normal",function(){ +node.state="open"; +opts.onExpand.call(_13d,node); +if(_13f){ +_13f(); +} +}); +}else{ +_140.css("display","block"); +node.state="open"; +opts.onExpand.call(_13d,node); +if(_13f){ +_13f(); +} +} +}); +} +}; +function _141(_142,_143){ +var opts=$.data(_142,"tree").options; +var hit=$(_143).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-collapsed")){ +return; +} +var node=_e0(_142,_143); +if(opts.onBeforeCollapse.call(_142,node)==false){ +return; +} +hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +hit.next().removeClass("tree-folder-open"); +var ul=$(_143).next(); +if(opts.animate){ +ul.slideUp("normal",function(){ +node.state="closed"; +opts.onCollapse.call(_142,node); +}); +}else{ +ul.css("display","none"); +node.state="closed"; +opts.onCollapse.call(_142,node); +} +}; +function _144(_145,_146){ +var hit=$(_146).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-expanded")){ +_141(_145,_146); +}else{ +_13c(_145,_146); +} +}; +function _147(_148,_149){ +var _14a=_11f(_148,_149); +if(_149){ +_14a.unshift(_e0(_148,_149)); +} +for(var i=0;i<_14a.length;i++){ +_13c(_148,_14a[i].target); +} +}; +function _14b(_14c,_14d){ +var _14e=[]; +var p=_14f(_14c,_14d); +while(p){ +_14e.unshift(p); +p=_14f(_14c,p.target); +} +for(var i=0;i<_14e.length;i++){ +_13c(_14c,_14e[i].target); +} +}; +function _150(_151,_152){ +var c=$(_151).parent(); +while(c[0].tagName!="BODY"&&c.css("overflow-y")!="auto"){ +c=c.parent(); +} +var n=$(_152); +var ntop=n.offset().top; +if(c[0].tagName!="BODY"){ +var ctop=c.offset().top; +if(ntopctop+c.outerHeight()-18){ +c.scrollTop(c.scrollTop()+ntop+n.outerHeight()-ctop-c.outerHeight()+18); +} +} +}else{ +c.scrollTop(ntop); +} +}; +function _153(_154,_155){ +var _156=_11f(_154,_155); +if(_155){ +_156.unshift(_e0(_154,_155)); +} +for(var i=0;i<_156.length;i++){ +_141(_154,_156[i].target); +} +}; +function _157(_158,_159){ +var node=$(_159.parent); +var data=_159.data; +if(!data){ +return; +} +data=$.isArray(data)?data:[data]; +if(!data.length){ +return; +} +var ul; +if(node.length==0){ +ul=$(_158); +}else{ +if(_11b(_158,node[0])){ +var _15a=node.find("span.tree-icon"); +_15a.removeClass("tree-file").addClass("tree-folder tree-folder-open"); +var hit=$("").insertBefore(_15a); +if(hit.prev().length){ +hit.prev().remove(); +} +} +ul=node.next(); +if(!ul.length){ +ul=$("
      ").insertAfter(node); +} +} +_120(_158,ul[0],data,true); +_118(_158,ul.prev()); +}; +function _15b(_15c,_15d){ +var ref=_15d.before||_15d.after; +var _15e=_14f(_15c,ref); +var data=_15d.data; +if(!data){ +return; +} +data=$.isArray(data)?data:[data]; +if(!data.length){ +return; +} +_157(_15c,{parent:(_15e?_15e.target:null),data:data}); +var _15f=_15e?_15e.children:$(_15c).tree("getRoots"); +for(var i=0;i<_15f.length;i++){ +if(_15f[i].domId==$(ref).attr("id")){ +for(var j=data.length-1;j>=0;j--){ +_15f.splice((_15d.before?i:(i+1)),0,data[j]); +} +_15f.splice(_15f.length-data.length,data.length); +break; +} +} +var li=$(); +for(var i=0;i").prependTo(node); +node.next().remove(); +} +_127(_161,_163); +_118(_161,_163.target); +} +_12c(_161,_161); +function del(_164){ +var id=$(_164).attr("id"); +var _165=_14f(_161,_164); +var cc=_165?_165.children:$.data(_161,"tree").data; +for(var i=0;i=0;i--){ +_189.unshift(node.children[i]); +} +} +} +}; +function _18a(_18b,_18c){ +var opts=$.data(_18b,"tree").options; +var node=_e0(_18b,_18c); +if(opts.onBeforeSelect.call(_18b,node)==false){ +return; +} +$(_18b).find("div.tree-node-selected").removeClass("tree-node-selected"); +$(_18c).addClass("tree-node-selected"); +opts.onSelect.call(_18b,node); +}; +function _11b(_18d,_18e){ +return $(_18e).children("span.tree-hit").length==0; +}; +function _18f(_190,_191){ +var opts=$.data(_190,"tree").options; +var node=_e0(_190,_191); +if(opts.onBeforeEdit.call(_190,node)==false){ +return; +} +$(_191).css("position","relative"); +var nt=$(_191).find(".tree-title"); +var _192=nt.outerWidth(); +nt.empty(); +var _193=$("").appendTo(nt); +_193.val(node.text).focus(); +_193.width(_192+20); +_193.height(document.compatMode=="CSS1Compat"?(18-(_193.outerHeight()-_193.height())):18); +_193.bind("click",function(e){ +return false; +}).bind("mousedown",function(e){ +e.stopPropagation(); +}).bind("mousemove",function(e){ +e.stopPropagation(); +}).bind("keydown",function(e){ +if(e.keyCode==13){ +_194(_190,_191); +return false; +}else{ +if(e.keyCode==27){ +_198(_190,_191); +return false; +} +} +}).bind("blur",function(e){ +e.stopPropagation(); +_194(_190,_191); +}); +}; +function _194(_195,_196){ +var opts=$.data(_195,"tree").options; +$(_196).css("position",""); +var _197=$(_196).find("input.tree-editor"); +var val=_197.val(); +_197.remove(); +var node=_e0(_195,_196); +node.text=val; +_127(_195,node); +opts.onAfterEdit.call(_195,node); +}; +function _198(_199,_19a){ +var opts=$.data(_199,"tree").options; +$(_19a).css("position",""); +$(_19a).find("input.tree-editor").remove(); +var node=_e0(_199,_19a); +_127(_199,node); +opts.onCancelEdit.call(_199,node); +}; +function _19b(_19c,q){ +var _19d=$.data(_19c,"tree"); +var opts=_19d.options; +var ids={}; +_12a(_19d.data,function(node){ +if(opts.filter.call(_19c,q,node)){ +$("#"+node.domId).removeClass("tree-node-hidden"); +ids[node.domId]=1; +node.hidden=false; +}else{ +$("#"+node.domId).addClass("tree-node-hidden"); +node.hidden=true; +} +}); +for(var id in ids){ +_19e(id); +} +function _19e(_19f){ +var p=$(_19c).tree("getParent",$("#"+_19f)[0]); +while(p){ +$(p.target).removeClass("tree-node-hidden"); +p.hidden=false; +p=$(_19c).tree("getParent",p.target); +} +}; +}; +$.fn.tree=function(_1a0,_1a1){ +if(typeof _1a0=="string"){ +return $.fn.tree.methods[_1a0](this,_1a1); +} +var _1a0=_1a0||{}; +return this.each(function(){ +var _1a2=$.data(this,"tree"); +var opts; +if(_1a2){ +opts=$.extend(_1a2.options,_1a0); +_1a2.options=opts; +}else{ +opts=$.extend({},$.fn.tree.defaults,$.fn.tree.parseOptions(this),_1a0); +$.data(this,"tree",{options:opts,tree:_d5(this),data:[]}); +var data=$.fn.tree.parseData(this); +if(data.length){ +_120(this,this,data); +} +} +_d8(this); +if(opts.data){ +_120(this,this,$.extend(true,[],opts.data)); +} +_135(this,this); +}); +}; +$.fn.tree.methods={options:function(jq){ +return $.data(jq[0],"tree").options; +},loadData:function(jq,data){ +return jq.each(function(){ +_120(this,this,data); +}); +},getNode:function(jq,_1a3){ +return _e0(jq[0],_1a3); +},getData:function(jq,_1a4){ +return _17d(jq[0],_1a4); +},reload:function(jq,_1a5){ +return jq.each(function(){ +if(_1a5){ +var node=$(_1a5); +var hit=node.children("span.tree-hit"); +hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +node.next().remove(); +_13c(this,_1a5); +}else{ +$(this).empty(); +_135(this,this); +} +}); +},getRoot:function(jq,_1a6){ +return _169(jq[0],_1a6); +},getRoots:function(jq){ +return _16d(jq[0]); +},getParent:function(jq,_1a7){ +return _14f(jq[0],_1a7); +},getChildren:function(jq,_1a8){ +return _11f(jq[0],_1a8); +},getChecked:function(jq,_1a9){ +return _176(jq[0],_1a9); +},getSelected:function(jq){ +return _17b(jq[0]); +},isLeaf:function(jq,_1aa){ +return _11b(jq[0],_1aa); +},find:function(jq,id){ +return _182(jq[0],id); +},select:function(jq,_1ab){ +return jq.each(function(){ +_18a(this,_1ab); +}); +},check:function(jq,_1ac){ +return jq.each(function(){ +_104(this,_1ac,true); +}); +},uncheck:function(jq,_1ad){ +return jq.each(function(){ +_104(this,_1ad,false); +}); +},collapse:function(jq,_1ae){ +return jq.each(function(){ +_141(this,_1ae); +}); +},expand:function(jq,_1af){ +return jq.each(function(){ +_13c(this,_1af); +}); +},collapseAll:function(jq,_1b0){ +return jq.each(function(){ +_153(this,_1b0); +}); +},expandAll:function(jq,_1b1){ +return jq.each(function(){ +_147(this,_1b1); +}); +},expandTo:function(jq,_1b2){ +return jq.each(function(){ +_14b(this,_1b2); +}); +},scrollTo:function(jq,_1b3){ +return jq.each(function(){ +_150(this,_1b3); +}); +},toggle:function(jq,_1b4){ +return jq.each(function(){ +_144(this,_1b4); +}); +},append:function(jq,_1b5){ +return jq.each(function(){ +_157(this,_1b5); +}); +},insert:function(jq,_1b6){ +return jq.each(function(){ +_15b(this,_1b6); +}); +},remove:function(jq,_1b7){ +return jq.each(function(){ +_160(this,_1b7); +}); +},pop:function(jq,_1b8){ +var node=jq.tree("getData",_1b8); +jq.tree("remove",_1b8); +return node; +},update:function(jq,_1b9){ +return jq.each(function(){ +_127(this,_1b9); +}); +},enableDnd:function(jq){ +return jq.each(function(){ +_e5(this); +}); +},disableDnd:function(jq){ +return jq.each(function(){ +_e1(this); +}); +},beginEdit:function(jq,_1ba){ +return jq.each(function(){ +_18f(this,_1ba); +}); +},endEdit:function(jq,_1bb){ +return jq.each(function(){ +_194(this,_1bb); +}); +},cancelEdit:function(jq,_1bc){ +return jq.each(function(){ +_198(this,_1bc); +}); +},doFilter:function(jq,q){ +return jq.each(function(){ +_19b(this,q); +}); +}}; +$.fn.tree.parseOptions=function(_1bd){ +var t=$(_1bd); +return $.extend({},$.parser.parseOptions(_1bd,["url","method",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean",lines:"boolean",dnd:"boolean"}])); +}; +$.fn.tree.parseData=function(_1be){ +var data=[]; +_1bf(data,$(_1be)); +return data; +function _1bf(aa,tree){ +tree.children("li").each(function(){ +var node=$(this); +var item=$.extend({},$.parser.parseOptions(this,["id","iconCls","state"]),{checked:(node.attr("checked")?true:undefined)}); +item.text=node.children("span").html(); +if(!item.text){ +item.text=node.html(); +} +var _1c0=node.children("ul"); +if(_1c0.length){ +item.children=[]; +_1bf(item.children,_1c0); +} +aa.push(item); +}); +}; +}; +var _1c1=1; +var _1c2={render:function(_1c3,ul,data){ +var opts=$.data(_1c3,"tree").options; +var _1c4=$(ul).prev("div.tree-node").find("span.tree-indent, span.tree-hit").length; +var cc=_1c5(_1c4,data); +$(ul).append(cc.join("")); +function _1c5(_1c6,_1c7){ +var cc=[]; +for(var i=0;i<_1c7.length;i++){ +var item=_1c7[i]; +if(item.state!="open"&&item.state!="closed"){ +item.state="open"; +} +item.domId="_easyui_tree_"+_1c1++; +cc.push("
    • "); +cc.push("
      "); +for(var j=0;j<_1c6;j++){ +cc.push(""); +} +var _1c8=false; +if(item.state=="closed"){ +cc.push(""); +cc.push(""); +}else{ +if(item.children&&item.children.length){ +cc.push(""); +cc.push(""); +}else{ +cc.push(""); +cc.push(""); +_1c8=true; +} +} +if(opts.checkbox){ +if((!opts.onlyLeafCheck)||_1c8){ +cc.push(""); +} +} +cc.push(""+opts.formatter.call(_1c3,item)+""); +cc.push("
      "); +if(item.children&&item.children.length){ +var tmp=_1c5(_1c6+1,item.children); +cc.push("
        "); +cc=cc.concat(tmp); +cc.push("
      "); +} +cc.push("
    • "); +} +return cc; +}; +}}; +$.fn.tree.defaults={url:null,method:"post",animate:false,checkbox:false,cascadeCheck:true,onlyLeafCheck:false,lines:false,dnd:false,data:null,queryParams:{},formatter:function(node){ +return node.text; +},filter:function(q,node){ +return node.text.toLowerCase().indexOf(q.toLowerCase())>=0; +},loader:function(_1c9,_1ca,_1cb){ +var opts=$(this).tree("options"); +if(!opts.url){ +return false; +} +$.ajax({type:opts.method,url:opts.url,data:_1c9,dataType:"json",success:function(data){ +_1ca(data); +},error:function(){ +_1cb.apply(this,arguments); +}}); +},loadFilter:function(data,_1cc){ +return data; +},view:_1c2,onBeforeLoad:function(node,_1cd){ +},onLoadSuccess:function(node,data){ +},onLoadError:function(){ +},onClick:function(node){ +},onDblClick:function(node){ +},onBeforeExpand:function(node){ +},onExpand:function(node){ +},onBeforeCollapse:function(node){ +},onCollapse:function(node){ +},onBeforeCheck:function(node,_1ce){ +},onCheck:function(node,_1cf){ +},onBeforeSelect:function(node){ +},onSelect:function(node){ +},onContextMenu:function(e,node){ +},onBeforeDrag:function(node){ +},onStartDrag:function(node){ +},onStopDrag:function(node){ +},onDragEnter:function(_1d0,_1d1){ +},onDragOver:function(_1d2,_1d3){ +},onDragLeave:function(_1d4,_1d5){ +},onBeforeDrop:function(_1d6,_1d7,_1d8){ +},onDrop:function(_1d9,_1da,_1db){ +},onBeforeEdit:function(node){ +},onAfterEdit:function(node){ +},onCancelEdit:function(node){ +}}; +})(jQuery); +(function($){ +function init(_1dc){ +$(_1dc).addClass("progressbar"); +$(_1dc).html("
      "); +$(_1dc).bind("_resize",function(e,_1dd){ +if($(this).hasClass("easyui-fluid")||_1dd){ +_1de(_1dc); +} +return false; +}); +return $(_1dc); +}; +function _1de(_1df,_1e0){ +var opts=$.data(_1df,"progressbar").options; +var bar=$.data(_1df,"progressbar").bar; +if(_1e0){ +opts.width=_1e0; +} +bar._size(opts); +bar.find("div.progressbar-text").css("width",bar.width()); +bar.find("div.progressbar-text,div.progressbar-value").css({height:bar.height()+"px",lineHeight:bar.height()+"px"}); +}; +$.fn.progressbar=function(_1e1,_1e2){ +if(typeof _1e1=="string"){ +var _1e3=$.fn.progressbar.methods[_1e1]; +if(_1e3){ +return _1e3(this,_1e2); +} +} +_1e1=_1e1||{}; +return this.each(function(){ +var _1e4=$.data(this,"progressbar"); +if(_1e4){ +$.extend(_1e4.options,_1e1); +}else{ +_1e4=$.data(this,"progressbar",{options:$.extend({},$.fn.progressbar.defaults,$.fn.progressbar.parseOptions(this),_1e1),bar:init(this)}); +} +$(this).progressbar("setValue",_1e4.options.value); +_1de(this); +}); +}; +$.fn.progressbar.methods={options:function(jq){ +return $.data(jq[0],"progressbar").options; +},resize:function(jq,_1e5){ +return jq.each(function(){ +_1de(this,_1e5); +}); +},getValue:function(jq){ +return $.data(jq[0],"progressbar").options.value; +},setValue:function(jq,_1e6){ +if(_1e6<0){ +_1e6=0; +} +if(_1e6>100){ +_1e6=100; +} +return jq.each(function(){ +var opts=$.data(this,"progressbar").options; +var text=opts.text.replace(/{value}/,_1e6); +var _1e7=opts.value; +opts.value=_1e6; +$(this).find("div.progressbar-value").width(_1e6+"%"); +$(this).find("div.progressbar-text").html(text); +if(_1e7!=_1e6){ +opts.onChange.call(this,_1e6,_1e7); +} +}); +}}; +$.fn.progressbar.parseOptions=function(_1e8){ +return $.extend({},$.parser.parseOptions(_1e8,["width","height","text",{value:"number"}])); +}; +$.fn.progressbar.defaults={width:"auto",height:22,value:0,text:"{value}%",onChange:function(_1e9,_1ea){ +}}; +})(jQuery); +(function($){ +function init(_1eb){ +$(_1eb).addClass("tooltip-f"); +}; +function _1ec(_1ed){ +var opts=$.data(_1ed,"tooltip").options; +$(_1ed).unbind(".tooltip").bind(opts.showEvent+".tooltip",function(e){ +$(_1ed).tooltip("show",e); +}).bind(opts.hideEvent+".tooltip",function(e){ +$(_1ed).tooltip("hide",e); +}).bind("mousemove.tooltip",function(e){ +if(opts.trackMouse){ +opts.trackMouseX=e.pageX; +opts.trackMouseY=e.pageY; +$(_1ed).tooltip("reposition"); +} +}); +}; +function _1ee(_1ef){ +var _1f0=$.data(_1ef,"tooltip"); +if(_1f0.showTimer){ +clearTimeout(_1f0.showTimer); +_1f0.showTimer=null; +} +if(_1f0.hideTimer){ +clearTimeout(_1f0.hideTimer); +_1f0.hideTimer=null; +} +}; +function _1f1(_1f2){ +var _1f3=$.data(_1f2,"tooltip"); +if(!_1f3||!_1f3.tip){ +return; +} +var opts=_1f3.options; +var tip=_1f3.tip; +var pos={left:-100000,top:-100000}; +if($(_1f2).is(":visible")){ +pos=_1f4(opts.position); +if(opts.position=="top"&&pos.top<0){ +pos=_1f4("bottom"); +}else{ +if((opts.position=="bottom")&&(pos.top+tip._outerHeight()>$(window)._outerHeight()+$(document).scrollTop())){ +pos=_1f4("top"); +} +} +if(pos.left<0){ +if(opts.position=="left"){ +pos=_1f4("right"); +}else{ +$(_1f2).tooltip("arrow").css("left",tip._outerWidth()/2+pos.left); +pos.left=0; +} +}else{ +if(pos.left+tip._outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ +if(opts.position=="right"){ +pos=_1f4("left"); +}else{ +var left=pos.left; +pos.left=$(window)._outerWidth()+$(document)._scrollLeft()-tip._outerWidth(); +$(_1f2).tooltip("arrow").css("left",tip._outerWidth()/2-(pos.left-left)); +} +} +} +} +tip.css({left:pos.left,top:pos.top,zIndex:(opts.zIndex!=undefined?opts.zIndex:($.fn.window?$.fn.window.defaults.zIndex++:""))}); +opts.onPosition.call(_1f2,pos.left,pos.top); +function _1f4(_1f5){ +opts.position=_1f5||"bottom"; +tip.removeClass("tooltip-top tooltip-bottom tooltip-left tooltip-right").addClass("tooltip-"+opts.position); +var left,top; +if(opts.trackMouse){ +t=$(); +left=opts.trackMouseX+opts.deltaX; +top=opts.trackMouseY+opts.deltaY; +}else{ +var t=$(_1f2); +left=t.offset().left+opts.deltaX; +top=t.offset().top+opts.deltaY; +} +switch(opts.position){ +case "right": +left+=t._outerWidth()+12+(opts.trackMouse?12:0); +top-=(tip._outerHeight()-t._outerHeight())/2; +break; +case "left": +left-=tip._outerWidth()+12+(opts.trackMouse?12:0); +top-=(tip._outerHeight()-t._outerHeight())/2; +break; +case "top": +left-=(tip._outerWidth()-t._outerWidth())/2; +top-=tip._outerHeight()+12+(opts.trackMouse?12:0); +break; +case "bottom": +left-=(tip._outerWidth()-t._outerWidth())/2; +top+=t._outerHeight()+12+(opts.trackMouse?12:0); +break; +} +return {left:left,top:top}; +}; +}; +function _1f6(_1f7,e){ +var _1f8=$.data(_1f7,"tooltip"); +var opts=_1f8.options; +var tip=_1f8.tip; +if(!tip){ +tip=$("
      "+"
      "+"
      "+"
      "+"
      ").appendTo("body"); +_1f8.tip=tip; +_1f9(_1f7); +} +_1ee(_1f7); +_1f8.showTimer=setTimeout(function(){ +$(_1f7).tooltip("reposition"); +tip.show(); +opts.onShow.call(_1f7,e); +var _1fa=tip.children(".tooltip-arrow-outer"); +var _1fb=tip.children(".tooltip-arrow"); +var bc="border-"+opts.position+"-color"; +_1fa.add(_1fb).css({borderTopColor:"",borderBottomColor:"",borderLeftColor:"",borderRightColor:""}); +_1fa.css(bc,tip.css(bc)); +_1fb.css(bc,tip.css("backgroundColor")); +},opts.showDelay); +}; +function _1fc(_1fd,e){ +var _1fe=$.data(_1fd,"tooltip"); +if(_1fe&&_1fe.tip){ +_1ee(_1fd); +_1fe.hideTimer=setTimeout(function(){ +_1fe.tip.hide(); +_1fe.options.onHide.call(_1fd,e); +},_1fe.options.hideDelay); +} +}; +function _1f9(_1ff,_200){ +var _201=$.data(_1ff,"tooltip"); +var opts=_201.options; +if(_200){ +opts.content=_200; +} +if(!_201.tip){ +return; +} +var cc=typeof opts.content=="function"?opts.content.call(_1ff):opts.content; +_201.tip.children(".tooltip-content").html(cc); +opts.onUpdate.call(_1ff,cc); +}; +function _202(_203){ +var _204=$.data(_203,"tooltip"); +if(_204){ +_1ee(_203); +var opts=_204.options; +if(_204.tip){ +_204.tip.remove(); +} +if(opts._title){ +$(_203).attr("title",opts._title); +} +$.removeData(_203,"tooltip"); +$(_203).unbind(".tooltip").removeClass("tooltip-f"); +opts.onDestroy.call(_203); +} +}; +$.fn.tooltip=function(_205,_206){ +if(typeof _205=="string"){ +return $.fn.tooltip.methods[_205](this,_206); +} +_205=_205||{}; +return this.each(function(){ +var _207=$.data(this,"tooltip"); +if(_207){ +$.extend(_207.options,_205); +}else{ +$.data(this,"tooltip",{options:$.extend({},$.fn.tooltip.defaults,$.fn.tooltip.parseOptions(this),_205)}); +init(this); +} +_1ec(this); +_1f9(this); +}); +}; +$.fn.tooltip.methods={options:function(jq){ +return $.data(jq[0],"tooltip").options; +},tip:function(jq){ +return $.data(jq[0],"tooltip").tip; +},arrow:function(jq){ +return jq.tooltip("tip").children(".tooltip-arrow-outer,.tooltip-arrow"); +},show:function(jq,e){ +return jq.each(function(){ +_1f6(this,e); +}); +},hide:function(jq,e){ +return jq.each(function(){ +_1fc(this,e); +}); +},update:function(jq,_208){ +return jq.each(function(){ +_1f9(this,_208); +}); +},reposition:function(jq){ +return jq.each(function(){ +_1f1(this); +}); +},destroy:function(jq){ +return jq.each(function(){ +_202(this); +}); +}}; +$.fn.tooltip.parseOptions=function(_209){ +var t=$(_209); +var opts=$.extend({},$.parser.parseOptions(_209,["position","showEvent","hideEvent","content",{trackMouse:"boolean",deltaX:"number",deltaY:"number",showDelay:"number",hideDelay:"number"}]),{_title:t.attr("title")}); +t.attr("title",""); +if(!opts.content){ +opts.content=opts._title; +} +return opts; +}; +$.fn.tooltip.defaults={position:"bottom",content:null,trackMouse:false,deltaX:0,deltaY:0,showEvent:"mouseenter",hideEvent:"mouseleave",showDelay:200,hideDelay:100,onShow:function(e){ +},onHide:function(e){ +},onUpdate:function(_20a){ +},onPosition:function(left,top){ +},onDestroy:function(){ +}}; +})(jQuery); +(function($){ +$.fn._remove=function(){ +return this.each(function(){ +$(this).remove(); +try{ +this.outerHTML=""; +} +catch(err){ +} +}); +}; +function _20b(node){ +node._remove(); +}; +function _20c(_20d,_20e){ +var _20f=$.data(_20d,"panel"); +var opts=_20f.options; +var _210=_20f.panel; +var _211=_210.children(".panel-header"); +var _212=_210.children(".panel-body"); +var _213=_210.children(".panel-footer"); +if(_20e){ +$.extend(opts,{width:_20e.width,height:_20e.height,minWidth:_20e.minWidth,maxWidth:_20e.maxWidth,minHeight:_20e.minHeight,maxHeight:_20e.maxHeight,left:_20e.left,top:_20e.top}); +} +_210._size(opts); +_211.add(_212)._outerWidth(_210.width()); +if(!isNaN(parseInt(opts.height))){ +_212._outerHeight(_210.height()-_211._outerHeight()-_213._outerHeight()); +}else{ +_212.css("height",""); +var min=$.parser.parseValue("minHeight",opts.minHeight,_210.parent()); +var max=$.parser.parseValue("maxHeight",opts.maxHeight,_210.parent()); +var _214=_211._outerHeight()+_213._outerHeight()+_210._outerHeight()-_210.height(); +_212._size("minHeight",min?(min-_214):""); +_212._size("maxHeight",max?(max-_214):""); +} +_210.css({height:"",minHeight:"",maxHeight:"",left:opts.left,top:opts.top}); +opts.onResize.apply(_20d,[opts.width,opts.height]); +$(_20d).panel("doLayout"); +}; +function _215(_216,_217){ +var opts=$.data(_216,"panel").options; +var _218=$.data(_216,"panel").panel; +if(_217){ +if(_217.left!=null){ +opts.left=_217.left; +} +if(_217.top!=null){ +opts.top=_217.top; +} +} +_218.css({left:opts.left,top:opts.top}); +opts.onMove.apply(_216,[opts.left,opts.top]); +}; +function _219(_21a){ +$(_21a).addClass("panel-body")._size("clear"); +var _21b=$("
      ").insertBefore(_21a); +_21b[0].appendChild(_21a); +_21b.bind("_resize",function(e,_21c){ +if($(this).hasClass("easyui-fluid")||_21c){ +_20c(_21a); +} +return false; +}); +return _21b; +}; +function _21d(_21e){ +var _21f=$.data(_21e,"panel"); +var opts=_21f.options; +var _220=_21f.panel; +_220.css(opts.style); +_220.addClass(opts.cls); +_221(); +_222(); +var _223=$(_21e).panel("header"); +var body=$(_21e).panel("body"); +var _224=$(_21e).siblings(".panel-footer"); +if(opts.border){ +_223.removeClass("panel-header-noborder"); +body.removeClass("panel-body-noborder"); +_224.removeClass("panel-footer-noborder"); +}else{ +_223.addClass("panel-header-noborder"); +body.addClass("panel-body-noborder"); +_224.addClass("panel-footer-noborder"); +} +_223.addClass(opts.headerCls); +body.addClass(opts.bodyCls); +$(_21e).attr("id",opts.id||""); +if(opts.content){ +$(_21e).panel("clear"); +$(_21e).html(opts.content); +$.parser.parse($(_21e)); +} +function _221(){ +if(opts.noheader||(!opts.title&&!opts.header)){ +_20b(_220.children(".panel-header")); +_220.children(".panel-body").addClass("panel-body-noheader"); +}else{ +if(opts.header){ +$(opts.header).addClass("panel-header").prependTo(_220); +}else{ +var _225=_220.children(".panel-header"); +if(!_225.length){ +_225=$("
      ").prependTo(_220); +} +if(!$.isArray(opts.tools)){ +_225.find("div.panel-tool .panel-tool-a").appendTo(opts.tools); +} +_225.empty(); +var _226=$("
      ").html(opts.title).appendTo(_225); +if(opts.iconCls){ +_226.addClass("panel-with-icon"); +$("
      ").addClass(opts.iconCls).appendTo(_225); +} +var tool=$("
      ").appendTo(_225); +tool.bind("click",function(e){ +e.stopPropagation(); +}); +if(opts.tools){ +if($.isArray(opts.tools)){ +$.map(opts.tools,function(t){ +_227(tool,t.iconCls,eval(t.handler)); +}); +}else{ +$(opts.tools).children().each(function(){ +$(this).addClass($(this).attr("iconCls")).addClass("panel-tool-a").appendTo(tool); +}); +} +} +if(opts.collapsible){ +_227(tool,"panel-tool-collapse",function(){ +if(opts.collapsed==true){ +_245(_21e,true); +}else{ +_238(_21e,true); +} +}); +} +if(opts.minimizable){ +_227(tool,"panel-tool-min",function(){ +_24b(_21e); +}); +} +if(opts.maximizable){ +_227(tool,"panel-tool-max",function(){ +if(opts.maximized==true){ +_24e(_21e); +}else{ +_237(_21e); +} +}); +} +if(opts.closable){ +_227(tool,"panel-tool-close",function(){ +_239(_21e); +}); +} +} +_220.children("div.panel-body").removeClass("panel-body-noheader"); +} +}; +function _227(c,icon,_228){ +var a=$("").addClass(icon).appendTo(c); +a.bind("click",_228); +}; +function _222(){ +if(opts.footer){ +$(opts.footer).addClass("panel-footer").appendTo(_220); +$(_21e).addClass("panel-body-nobottom"); +}else{ +_220.children(".panel-footer").remove(); +$(_21e).removeClass("panel-body-nobottom"); +} +}; +}; +function _229(_22a,_22b){ +var _22c=$.data(_22a,"panel"); +var opts=_22c.options; +if(_22d){ +opts.queryParams=_22b; +} +if(!opts.href){ +return; +} +if(!_22c.isLoaded||!opts.cache){ +var _22d=$.extend({},opts.queryParams); +if(opts.onBeforeLoad.call(_22a,_22d)==false){ +return; +} +_22c.isLoaded=false; +$(_22a).panel("clear"); +if(opts.loadingMessage){ +$(_22a).html($("
      ").html(opts.loadingMessage)); +} +opts.loader.call(_22a,_22d,function(data){ +var _22e=opts.extractor.call(_22a,data); +$(_22a).html(_22e); +$.parser.parse($(_22a)); +opts.onLoad.apply(_22a,arguments); +_22c.isLoaded=true; +},function(){ +opts.onLoadError.apply(_22a,arguments); +}); +} +}; +function _22f(_230){ +var t=$(_230); +t.find(".combo-f").each(function(){ +$(this).combo("destroy"); +}); +t.find(".m-btn").each(function(){ +$(this).menubutton("destroy"); +}); +t.find(".s-btn").each(function(){ +$(this).splitbutton("destroy"); +}); +t.find(".tooltip-f").each(function(){ +$(this).tooltip("destroy"); +}); +t.children("div").each(function(){ +$(this)._size("unfit"); +}); +t.empty(); +}; +function _231(_232){ +$(_232).panel("doLayout",true); +}; +function _233(_234,_235){ +var opts=$.data(_234,"panel").options; +var _236=$.data(_234,"panel").panel; +if(_235!=true){ +if(opts.onBeforeOpen.call(_234)==false){ +return; +} +} +_236.stop(true,true); +if($.isFunction(opts.openAnimation)){ +opts.openAnimation.call(_234,cb); +}else{ +switch(opts.openAnimation){ +case "slide": +_236.slideDown(opts.openDuration,cb); +break; +case "fade": +_236.fadeIn(opts.openDuration,cb); +break; +case "show": +_236.show(opts.openDuration,cb); +break; +default: +_236.show(); +cb(); +} +} +function cb(){ +opts.closed=false; +opts.minimized=false; +var tool=_236.children(".panel-header").find("a.panel-tool-restore"); +if(tool.length){ +opts.maximized=true; +} +opts.onOpen.call(_234); +if(opts.maximized==true){ +opts.maximized=false; +_237(_234); +} +if(opts.collapsed==true){ +opts.collapsed=false; +_238(_234); +} +if(!opts.collapsed){ +_229(_234); +_231(_234); +} +}; +}; +function _239(_23a,_23b){ +var opts=$.data(_23a,"panel").options; +var _23c=$.data(_23a,"panel").panel; +if(_23b!=true){ +if(opts.onBeforeClose.call(_23a)==false){ +return; +} +} +_23c.stop(true,true); +_23c._size("unfit"); +if($.isFunction(opts.closeAnimation)){ +opts.closeAnimation.call(_23a,cb); +}else{ +switch(opts.closeAnimation){ +case "slide": +_23c.slideUp(opts.closeDuration,cb); +break; +case "fade": +_23c.fadeOut(opts.closeDuration,cb); +break; +case "hide": +_23c.hide(opts.closeDuration,cb); +break; +default: +_23c.hide(); +cb(); +} +} +function cb(){ +opts.closed=true; +opts.onClose.call(_23a); +}; +}; +function _23d(_23e,_23f){ +var _240=$.data(_23e,"panel"); +var opts=_240.options; +var _241=_240.panel; +if(_23f!=true){ +if(opts.onBeforeDestroy.call(_23e)==false){ +return; +} +} +$(_23e).panel("clear").panel("clear","footer"); +_20b(_241); +opts.onDestroy.call(_23e); +}; +function _238(_242,_243){ +var opts=$.data(_242,"panel").options; +var _244=$.data(_242,"panel").panel; +var body=_244.children(".panel-body"); +var tool=_244.children(".panel-header").find("a.panel-tool-collapse"); +if(opts.collapsed==true){ +return; +} +body.stop(true,true); +if(opts.onBeforeCollapse.call(_242)==false){ +return; +} +tool.addClass("panel-tool-expand"); +if(_243==true){ +body.slideUp("normal",function(){ +opts.collapsed=true; +opts.onCollapse.call(_242); +}); +}else{ +body.hide(); +opts.collapsed=true; +opts.onCollapse.call(_242); +} +}; +function _245(_246,_247){ +var opts=$.data(_246,"panel").options; +var _248=$.data(_246,"panel").panel; +var body=_248.children(".panel-body"); +var tool=_248.children(".panel-header").find("a.panel-tool-collapse"); +if(opts.collapsed==false){ +return; +} +body.stop(true,true); +if(opts.onBeforeExpand.call(_246)==false){ +return; +} +tool.removeClass("panel-tool-expand"); +if(_247==true){ +body.slideDown("normal",function(){ +opts.collapsed=false; +opts.onExpand.call(_246); +_229(_246); +_231(_246); +}); +}else{ +body.show(); +opts.collapsed=false; +opts.onExpand.call(_246); +_229(_246); +_231(_246); +} +}; +function _237(_249){ +var opts=$.data(_249,"panel").options; +var _24a=$.data(_249,"panel").panel; +var tool=_24a.children(".panel-header").find("a.panel-tool-max"); +if(opts.maximized==true){ +return; +} +tool.addClass("panel-tool-restore"); +if(!$.data(_249,"panel").original){ +$.data(_249,"panel").original={width:opts.width,height:opts.height,left:opts.left,top:opts.top,fit:opts.fit}; +} +opts.left=0; +opts.top=0; +opts.fit=true; +_20c(_249); +opts.minimized=false; +opts.maximized=true; +opts.onMaximize.call(_249); +}; +function _24b(_24c){ +var opts=$.data(_24c,"panel").options; +var _24d=$.data(_24c,"panel").panel; +_24d._size("unfit"); +_24d.hide(); +opts.minimized=true; +opts.maximized=false; +opts.onMinimize.call(_24c); +}; +function _24e(_24f){ +var opts=$.data(_24f,"panel").options; +var _250=$.data(_24f,"panel").panel; +var tool=_250.children(".panel-header").find("a.panel-tool-max"); +if(opts.maximized==false){ +return; +} +_250.show(); +tool.removeClass("panel-tool-restore"); +$.extend(opts,$.data(_24f,"panel").original); +_20c(_24f); +opts.minimized=false; +opts.maximized=false; +$.data(_24f,"panel").original=null; +opts.onRestore.call(_24f); +}; +function _251(_252,_253){ +$.data(_252,"panel").options.title=_253; +$(_252).panel("header").find("div.panel-title").html(_253); +}; +var _254=null; +$(window).unbind(".panel").bind("resize.panel",function(){ +if(_254){ +clearTimeout(_254); +} +_254=setTimeout(function(){ +var _255=$("body.layout"); +if(_255.length){ +_255.layout("resize"); +$("body").children(".easyui-fluid:visible").each(function(){ +$(this).triggerHandler("_resize"); +}); +}else{ +$("body").panel("doLayout"); +} +_254=null; +},100); +}); +$.fn.panel=function(_256,_257){ +if(typeof _256=="string"){ +return $.fn.panel.methods[_256](this,_257); +} +_256=_256||{}; +return this.each(function(){ +var _258=$.data(this,"panel"); +var opts; +if(_258){ +opts=$.extend(_258.options,_256); +_258.isLoaded=false; +}else{ +opts=$.extend({},$.fn.panel.defaults,$.fn.panel.parseOptions(this),_256); +$(this).attr("title",""); +_258=$.data(this,"panel",{options:opts,panel:_219(this),isLoaded:false}); +} +_21d(this); +if(opts.doSize==true){ +_258.panel.css("display","block"); +_20c(this); +} +if(opts.closed==true||opts.minimized==true){ +_258.panel.hide(); +}else{ +_233(this); +} +}); +}; +$.fn.panel.methods={options:function(jq){ +return $.data(jq[0],"panel").options; +},panel:function(jq){ +return $.data(jq[0],"panel").panel; +},header:function(jq){ +return $.data(jq[0],"panel").panel.children(".panel-header"); +},footer:function(jq){ +return jq.panel("panel").children(".panel-footer"); +},body:function(jq){ +return $.data(jq[0],"panel").panel.children(".panel-body"); +},setTitle:function(jq,_259){ +return jq.each(function(){ +_251(this,_259); +}); +},open:function(jq,_25a){ +return jq.each(function(){ +_233(this,_25a); +}); +},close:function(jq,_25b){ +return jq.each(function(){ +_239(this,_25b); +}); +},destroy:function(jq,_25c){ +return jq.each(function(){ +_23d(this,_25c); +}); +},clear:function(jq,type){ +return jq.each(function(){ +_22f(type=="footer"?$(this).panel("footer"):this); +}); +},refresh:function(jq,href){ +return jq.each(function(){ +var _25d=$.data(this,"panel"); +_25d.isLoaded=false; +if(href){ +if(typeof href=="string"){ +_25d.options.href=href; +}else{ +_25d.options.queryParams=href; +} +} +_229(this); +}); +},resize:function(jq,_25e){ +return jq.each(function(){ +_20c(this,_25e); +}); +},doLayout:function(jq,all){ +return jq.each(function(){ +_25f(this,"body"); +_25f($(this).siblings(".panel-footer")[0],"footer"); +function _25f(_260,type){ +if(!_260){ +return; +} +var _261=_260==$("body")[0]; +var s=$(_260).find("div.panel:visible,div.accordion:visible,div.tabs-container:visible,div.layout:visible,.easyui-fluid:visible").filter(function(_262,el){ +var p=$(el).parents(".panel-"+type+":first"); +return _261?p.length==0:p[0]==_260; +}); +s.each(function(){ +$(this).triggerHandler("_resize",[all||false]); +}); +}; +}); +},move:function(jq,_263){ +return jq.each(function(){ +_215(this,_263); +}); +},maximize:function(jq){ +return jq.each(function(){ +_237(this); +}); +},minimize:function(jq){ +return jq.each(function(){ +_24b(this); +}); +},restore:function(jq){ +return jq.each(function(){ +_24e(this); +}); +},collapse:function(jq,_264){ +return jq.each(function(){ +_238(this,_264); +}); +},expand:function(jq,_265){ +return jq.each(function(){ +_245(this,_265); +}); +}}; +$.fn.panel.parseOptions=function(_266){ +var t=$(_266); +var hh=t.children(".panel-header,header"); +var ff=t.children(".panel-footer,footer"); +return $.extend({},$.parser.parseOptions(_266,["id","width","height","left","top","title","iconCls","cls","headerCls","bodyCls","tools","href","method","header","footer",{cache:"boolean",fit:"boolean",border:"boolean",noheader:"boolean"},{collapsible:"boolean",minimizable:"boolean",maximizable:"boolean"},{closable:"boolean",collapsed:"boolean",minimized:"boolean",maximized:"boolean",closed:"boolean"},"openAnimation","closeAnimation",{openDuration:"number",closeDuration:"number"},]),{loadingMessage:(t.attr("loadingMessage")!=undefined?t.attr("loadingMessage"):undefined),header:(hh.length?hh.removeClass("panel-header"):undefined),footer:(ff.length?ff.removeClass("panel-footer"):undefined)}); +}; +$.fn.panel.defaults={id:null,title:null,iconCls:null,width:"auto",height:"auto",left:null,top:null,cls:null,headerCls:null,bodyCls:null,style:{},href:null,cache:true,fit:false,border:true,doSize:true,noheader:false,content:null,collapsible:false,minimizable:false,maximizable:false,closable:false,collapsed:false,minimized:false,maximized:false,closed:false,openAnimation:false,openDuration:400,closeAnimation:false,closeDuration:400,tools:null,footer:null,header:null,queryParams:{},method:"get",href:null,loadingMessage:"Loading...",loader:function(_267,_268,_269){ +var opts=$(this).panel("options"); +if(!opts.href){ +return false; +} +$.ajax({type:opts.method,url:opts.href,cache:false,data:_267,dataType:"html",success:function(data){ +_268(data); +},error:function(){ +_269.apply(this,arguments); +}}); +},extractor:function(data){ +var _26a=/]*>((.|[\n\r])*)<\/body>/im; +var _26b=_26a.exec(data); +if(_26b){ +return _26b[1]; +}else{ +return data; +} +},onBeforeLoad:function(_26c){ +},onLoad:function(){ +},onLoadError:function(){ +},onBeforeOpen:function(){ +},onOpen:function(){ +},onBeforeClose:function(){ +},onClose:function(){ +},onBeforeDestroy:function(){ +},onDestroy:function(){ +},onResize:function(_26d,_26e){ +},onMove:function(left,top){ +},onMaximize:function(){ +},onRestore:function(){ +},onMinimize:function(){ +},onBeforeCollapse:function(){ +},onBeforeExpand:function(){ +},onCollapse:function(){ +},onExpand:function(){ +}}; +})(jQuery); +(function($){ +function _26f(_270,_271){ +var _272=$.data(_270,"window"); +if(_271){ +if(_271.left!=null){ +_272.options.left=_271.left; +} +if(_271.top!=null){ +_272.options.top=_271.top; +} +} +$(_270).panel("move",_272.options); +if(_272.shadow){ +_272.shadow.css({left:_272.options.left,top:_272.options.top}); +} +}; +function _273(_274,_275){ +var opts=$.data(_274,"window").options; +var pp=$(_274).window("panel"); +var _276=pp._outerWidth(); +if(opts.inline){ +var _277=pp.parent(); +opts.left=Math.ceil((_277.width()-_276)/2+_277.scrollLeft()); +}else{ +opts.left=Math.ceil(($(window)._outerWidth()-_276)/2+$(document).scrollLeft()); +} +if(_275){ +_26f(_274); +} +}; +function _278(_279,_27a){ +var opts=$.data(_279,"window").options; +var pp=$(_279).window("panel"); +var _27b=pp._outerHeight(); +if(opts.inline){ +var _27c=pp.parent(); +opts.top=Math.ceil((_27c.height()-_27b)/2+_27c.scrollTop()); +}else{ +opts.top=Math.ceil(($(window)._outerHeight()-_27b)/2+$(document).scrollTop()); +} +if(_27a){ +_26f(_279); +} +}; +function _27d(_27e){ +var _27f=$.data(_27e,"window"); +var opts=_27f.options; +var win=$(_27e).panel($.extend({},_27f.options,{border:false,doSize:true,closed:true,cls:"window",headerCls:"window-header",bodyCls:"window-body "+(opts.noheader?"window-body-noheader":""),onBeforeDestroy:function(){ +if(opts.onBeforeDestroy.call(_27e)==false){ +return false; +} +if(_27f.shadow){ +_27f.shadow.remove(); +} +if(_27f.mask){ +_27f.mask.remove(); +} +},onClose:function(){ +if(_27f.shadow){ +_27f.shadow.hide(); +} +if(_27f.mask){ +_27f.mask.hide(); +} +opts.onClose.call(_27e); +},onOpen:function(){ +if(_27f.mask){ +_27f.mask.css({display:"block",zIndex:$.fn.window.defaults.zIndex++}); +} +if(_27f.shadow){ +_27f.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:opts.left,top:opts.top,width:_27f.window._outerWidth(),height:_27f.window._outerHeight()}); +} +_27f.window.css("z-index",$.fn.window.defaults.zIndex++); +opts.onOpen.call(_27e); +},onResize:function(_280,_281){ +var _282=$(this).panel("options"); +$.extend(opts,{width:_282.width,height:_282.height,left:_282.left,top:_282.top}); +if(_27f.shadow){ +_27f.shadow.css({left:opts.left,top:opts.top,width:_27f.window._outerWidth(),height:_27f.window._outerHeight()}); +} +opts.onResize.call(_27e,_280,_281); +},onMinimize:function(){ +if(_27f.shadow){ +_27f.shadow.hide(); +} +if(_27f.mask){ +_27f.mask.hide(); +} +_27f.options.onMinimize.call(_27e); +},onBeforeCollapse:function(){ +if(opts.onBeforeCollapse.call(_27e)==false){ +return false; +} +if(_27f.shadow){ +_27f.shadow.hide(); +} +},onExpand:function(){ +if(_27f.shadow){ +_27f.shadow.show(); +} +opts.onExpand.call(_27e); +}})); +_27f.window=win.panel("panel"); +if(_27f.mask){ +_27f.mask.remove(); +} +if(opts.modal==true){ +_27f.mask=$("
      ").insertAfter(_27f.window); +_27f.mask.css({width:(opts.inline?_27f.mask.parent().width():_283().width),height:(opts.inline?_27f.mask.parent().height():_283().height),display:"none"}); +} +if(_27f.shadow){ +_27f.shadow.remove(); +} +if(opts.shadow==true){ +_27f.shadow=$("
      ").insertAfter(_27f.window); +_27f.shadow.css({display:"none"}); +} +if(opts.left==null){ +_273(_27e); +} +if(opts.top==null){ +_278(_27e); +} +_26f(_27e); +if(!opts.closed){ +win.window("open"); +} +}; +function _284(_285){ +var _286=$.data(_285,"window"); +_286.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_286.options.draggable==false,onStartDrag:function(e){ +if(_286.mask){ +_286.mask.css("z-index",$.fn.window.defaults.zIndex++); +} +if(_286.shadow){ +_286.shadow.css("z-index",$.fn.window.defaults.zIndex++); +} +_286.window.css("z-index",$.fn.window.defaults.zIndex++); +if(!_286.proxy){ +_286.proxy=$("
      ").insertAfter(_286.window); +} +_286.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); +_286.proxy._outerWidth(_286.window._outerWidth()); +_286.proxy._outerHeight(_286.window._outerHeight()); +setTimeout(function(){ +if(_286.proxy){ +_286.proxy.show(); +} +},500); +},onDrag:function(e){ +_286.proxy.css({display:"block",left:e.data.left,top:e.data.top}); +return false; +},onStopDrag:function(e){ +_286.options.left=e.data.left; +_286.options.top=e.data.top; +$(_285).window("move"); +_286.proxy.remove(); +_286.proxy=null; +}}); +_286.window.resizable({disabled:_286.options.resizable==false,onStartResize:function(e){ +if(_286.pmask){ +_286.pmask.remove(); +} +_286.pmask=$("
      ").insertAfter(_286.window); +_286.pmask.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_286.window._outerWidth(),height:_286.window._outerHeight()}); +if(_286.proxy){ +_286.proxy.remove(); +} +_286.proxy=$("
      ").insertAfter(_286.window); +_286.proxy.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); +_286.proxy._outerWidth(e.data.width)._outerHeight(e.data.height); +},onResize:function(e){ +_286.proxy.css({left:e.data.left,top:e.data.top}); +_286.proxy._outerWidth(e.data.width); +_286.proxy._outerHeight(e.data.height); +return false; +},onStopResize:function(e){ +$(_285).window("resize",e.data); +_286.pmask.remove(); +_286.pmask=null; +_286.proxy.remove(); +_286.proxy=null; +}}); +}; +function _283(){ +if(document.compatMode=="BackCompat"){ +return {width:Math.max(document.body.scrollWidth,document.body.clientWidth),height:Math.max(document.body.scrollHeight,document.body.clientHeight)}; +}else{ +return {width:Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth),height:Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight)}; +} +}; +$(window).resize(function(){ +$("body>div.window-mask").css({width:$(window)._outerWidth(),height:$(window)._outerHeight()}); +setTimeout(function(){ +$("body>div.window-mask").css({width:_283().width,height:_283().height}); +},50); +}); +$.fn.window=function(_287,_288){ +if(typeof _287=="string"){ +var _289=$.fn.window.methods[_287]; +if(_289){ +return _289(this,_288); +}else{ +return this.panel(_287,_288); +} +} +_287=_287||{}; +return this.each(function(){ +var _28a=$.data(this,"window"); +if(_28a){ +$.extend(_28a.options,_287); +}else{ +_28a=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_287)}); +if(!_28a.options.inline){ +document.body.appendChild(this); +} +} +_27d(this); +_284(this); +}); +}; +$.fn.window.methods={options:function(jq){ +var _28b=jq.panel("options"); +var _28c=$.data(jq[0],"window").options; +return $.extend(_28c,{closed:_28b.closed,collapsed:_28b.collapsed,minimized:_28b.minimized,maximized:_28b.maximized}); +},window:function(jq){ +return $.data(jq[0],"window").window; +},move:function(jq,_28d){ +return jq.each(function(){ +_26f(this,_28d); +}); +},hcenter:function(jq){ +return jq.each(function(){ +_273(this,true); +}); +},vcenter:function(jq){ +return jq.each(function(){ +_278(this,true); +}); +},center:function(jq){ +return jq.each(function(){ +_273(this); +_278(this); +_26f(this); +}); +}}; +$.fn.window.parseOptions=function(_28e){ +return $.extend({},$.fn.panel.parseOptions(_28e),$.parser.parseOptions(_28e,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}])); +}; +$.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false}); +})(jQuery); +(function($){ +function _28f(_290){ +var opts=$.data(_290,"dialog").options; +opts.inited=false; +$(_290).window($.extend({},opts,{onResize:function(w,h){ +if(opts.inited){ +_295(this); +opts.onResize.call(this,w,h); +} +}})); +var win=$(_290).window("window"); +if(opts.toolbar){ +if($.isArray(opts.toolbar)){ +$(_290).siblings("div.dialog-toolbar").remove(); +var _291=$("
      ").appendTo(win); +var tr=_291.find("tr"); +for(var i=0;i
      ").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var tool=$("").appendTo(td); +tool[0].onclick=eval(btn.handler||function(){ +}); +tool.linkbutton($.extend({},btn,{plain:true})); +} +} +}else{ +$(opts.toolbar).addClass("dialog-toolbar").appendTo(win); +$(opts.toolbar).show(); +} +}else{ +$(_290).siblings("div.dialog-toolbar").remove(); +} +if(opts.buttons){ +if($.isArray(opts.buttons)){ +$(_290).siblings("div.dialog-button").remove(); +var _292=$("
      ").appendTo(win); +for(var i=0;i").appendTo(_292); +if(p.handler){ +_293[0].onclick=p.handler; +} +_293.linkbutton(p); +} +}else{ +$(opts.buttons).addClass("dialog-button").appendTo(win); +$(opts.buttons).show(); +} +}else{ +$(_290).siblings("div.dialog-button").remove(); +} +opts.inited=true; +var _294=opts.closed; +win.show(); +$(_290).window("resize"); +if(_294){ +win.hide(); +} +}; +function _295(_296,_297){ +var t=$(_296); +var opts=t.dialog("options"); +var _298=opts.noheader; +var tb=t.siblings(".dialog-toolbar"); +var bb=t.siblings(".dialog-button"); +tb.insertBefore(_296).css({position:"relative",borderTopWidth:(_298?1:0),top:(_298?tb.length:0)}); +bb.insertAfter(_296).css({position:"relative",top:-1}); +tb.add(bb)._outerWidth(t._outerWidth()).find(".easyui-fluid:visible").each(function(){ +$(this).triggerHandler("_resize"); +}); +if(!isNaN(parseInt(opts.height))){ +t._outerHeight(t._outerHeight()-tb._outerHeight()-bb._outerHeight()); +} +var _299=$.data(_296,"window").shadow; +if(_299){ +var cc=t.panel("panel"); +_299.css({width:cc._outerWidth(),height:cc._outerHeight()}); +} +}; +$.fn.dialog=function(_29a,_29b){ +if(typeof _29a=="string"){ +var _29c=$.fn.dialog.methods[_29a]; +if(_29c){ +return _29c(this,_29b); +}else{ +return this.window(_29a,_29b); +} +} +_29a=_29a||{}; +return this.each(function(){ +var _29d=$.data(this,"dialog"); +if(_29d){ +$.extend(_29d.options,_29a); +}else{ +$.data(this,"dialog",{options:$.extend({},$.fn.dialog.defaults,$.fn.dialog.parseOptions(this),_29a)}); +} +_28f(this); +}); +}; +$.fn.dialog.methods={options:function(jq){ +var _29e=$.data(jq[0],"dialog").options; +var _29f=jq.panel("options"); +$.extend(_29e,{width:_29f.width,height:_29f.height,left:_29f.left,top:_29f.top,closed:_29f.closed,collapsed:_29f.collapsed,minimized:_29f.minimized,maximized:_29f.maximized}); +return _29e; +},dialog:function(jq){ +return jq.window("window"); +}}; +$.fn.dialog.parseOptions=function(_2a0){ +var t=$(_2a0); +return $.extend({},$.fn.window.parseOptions(_2a0),$.parser.parseOptions(_2a0,["toolbar","buttons"]),{toolbar:(t.children(".dialog-toolbar").length?t.children(".dialog-toolbar").removeClass("dialog-toolbar"):undefined),buttons:(t.children(".dialog-button").length?t.children(".dialog-button").removeClass("dialog-button"):undefined)}); +}; +$.fn.dialog.defaults=$.extend({},$.fn.window.defaults,{title:"New Dialog",collapsible:false,minimizable:false,maximizable:false,resizable:false,toolbar:null,buttons:null}); +})(jQuery); +(function($){ +function _2a1(){ +$(document).unbind(".messager").bind("keydown.messager",function(e){ +if(e.keyCode==27){ +$("body").children("div.messager-window").children("div.messager-body").each(function(){ +$(this).window("close"); +}); +}else{ +if(e.keyCode==9){ +var win=$("body").children("div.messager-window").children("div.messager-body"); +if(!win.length){ +return; +} +var _2a2=win.find(".messager-input,.messager-button .l-btn"); +for(var i=0;i<_2a2.length;i++){ +if($(_2a2[i]).is(":focus")){ +$(_2a2[i>=_2a2.length-1?0:i+1]).focus(); +return false; +} +} +} +} +}); +}; +function _2a3(){ +$(document).unbind(".messager"); +}; +function _2a4(_2a5){ +var opts=$.extend({},$.messager.defaults,{modal:false,shadow:false,draggable:false,resizable:false,closed:true,style:{left:"",top:"",right:0,zIndex:$.fn.window.defaults.zIndex++,bottom:-document.body.scrollTop-document.documentElement.scrollTop},title:"",width:250,height:100,showType:"slide",showSpeed:600,msg:"",timeout:4000},_2a5); +var win=$("
      ").html(opts.msg).appendTo("body"); +win.window($.extend({},opts,{openAnimation:(opts.showType),closeAnimation:(opts.showType=="show"?"hide":opts.showType),openDuration:opts.showSpeed,closeDuration:opts.showSpeed,onOpen:function(){ +win.window("window").hover(function(){ +if(opts.timer){ +clearTimeout(opts.timer); +} +},function(){ +_2a6(); +}); +_2a6(); +function _2a6(){ +if(opts.timeout>0){ +opts.timer=setTimeout(function(){ +if(win.length&&win.data("window")){ +win.window("close"); +} +},opts.timeout); +} +}; +if(_2a5.onOpen){ +_2a5.onOpen.call(this); +}else{ +opts.onOpen.call(this); +} +},onClose:function(){ +if(opts.timer){ +clearTimeout(opts.timer); +} +if(_2a5.onClose){ +_2a5.onClose.call(this); +}else{ +opts.onClose.call(this); +} +win.window("destroy"); +}})); +win.window("window").css(opts.style); +win.window("open"); +return win; +}; +function _2a7(_2a8){ +_2a1(); +var win=$("
      ").appendTo("body"); +win.window($.extend({},_2a8,{doSize:false,noheader:(_2a8.title?false:true),onClose:function(){ +_2a3(); +if(_2a8.onClose){ +_2a8.onClose.call(this); +} +setTimeout(function(){ +win.window("destroy"); +},100); +}})); +if(_2a8.buttons&&_2a8.buttons.length){ +var tb=$("
      ").appendTo(win); +$.map(_2a8.buttons,function(btn){ +$("").appendTo(tb).linkbutton(btn); +}); +} +win.window("window").addClass("messager-window"); +win.window("resize"); +win.children("div.messager-button").children("a:first").focus(); +return win; +}; +$.messager={show:function(_2a9){ +return _2a4(_2a9); +},alert:function(_2aa,msg,icon,fn){ +var opts=typeof _2aa=="object"?_2aa:{title:_2aa,msg:msg,icon:icon,fn:fn}; +var cls=opts.icon?"messager-icon messager-"+opts.icon:""; +opts=$.extend({},$.messager.defaults,{content:"
      "+"
      "+opts.msg+"
      "+"
      ",buttons:[{text:$.messager.defaults.ok,onClick:function(){ +win.window("close"); +opts.fn(); +}}]},opts); +var win=_2a7(opts); +return win; +},confirm:function(_2ab,msg,fn){ +var opts=typeof _2ab=="object"?_2ab:{title:_2ab,msg:msg,fn:fn}; +opts=$.extend({},$.messager.defaults,{content:"
      "+"
      "+opts.msg+"
      "+"
      ",buttons:[{text:$.messager.defaults.ok,onClick:function(){ +win.window("close"); +opts.fn(true); +}},{text:$.messager.defaults.cancel,onClick:function(){ +win.window("close"); +opts.fn(false); +}}]},opts); +var win=_2a7(opts); +return win; +},prompt:function(_2ac,msg,fn){ +var opts=typeof _2ac=="object"?_2ac:{title:_2ac,msg:msg,fn:fn}; +opts=$.extend({},$.messager.defaults,{content:"
      "+"
      "+opts.msg+"
      "+"
      "+"
      "+"
      ",buttons:[{text:$.messager.defaults.ok,onClick:function(){ +win.window("close"); +opts.fn(win.find(".messager-input").val()); +}},{text:$.messager.defaults.cancel,onClick:function(){ +win.window("close"); +opts.fn(); +}}]},opts); +var win=_2a7(opts); +win.find("input.messager-input").focus(); +return win; +},progress:function(_2ad){ +var _2ae={bar:function(){ +return $("body>div.messager-window").find("div.messager-p-bar"); +},close:function(){ +var win=$("body>div.messager-window>div.messager-body:has(div.messager-progress)"); +if(win.length){ +win.window("close"); +} +}}; +if(typeof _2ad=="string"){ +var _2af=_2ae[_2ad]; +return _2af(); +} +var opts=$.extend({},{title:"",content:undefined,msg:"",text:undefined,interval:300},_2ad||{}); +var win=_2a7($.extend({},$.messager.defaults,{content:"
      "+opts.msg+"
      ",closable:false,doSize:false},opts,{onClose:function(){ +if(this.timer){ +clearInterval(this.timer); +} +if(_2ad.onClose){ +_2ad.onClose.call(this); +}else{ +$.messager.defaults.onClose.call(this); +} +}})); +var bar=win.find("div.messager-p-bar"); +bar.progressbar({text:opts.text}); +win.window("resize"); +if(opts.interval){ +win[0].timer=setInterval(function(){ +var v=bar.progressbar("getValue"); +v+=10; +if(v>100){ +v=0; +} +bar.progressbar("setValue",v); +},opts.interval); +} +return win; +}}; +$.messager.defaults=$.extend({},$.fn.window.defaults,{ok:"Ok",cancel:"Cancel",width:300,height:"auto",modal:true,collapsible:false,minimizable:false,maximizable:false,resizable:false,fn:function(){ +}}); +})(jQuery); +(function($){ +function _2b0(_2b1,_2b2){ +var _2b3=$.data(_2b1,"accordion"); +var opts=_2b3.options; +var _2b4=_2b3.panels; +var cc=$(_2b1); +if(_2b2){ +$.extend(opts,{width:_2b2.width,height:_2b2.height}); +} +cc._size(opts); +var _2b5=0; +var _2b6="auto"; +var _2b7=cc.find(">.panel>.accordion-header"); +if(_2b7.length){ +_2b5=$(_2b7[0]).css("height","")._outerHeight(); +} +if(!isNaN(parseInt(opts.height))){ +_2b6=cc.height()-_2b5*_2b7.length; +} +_2b8(true,_2b6-_2b8(false)+1); +function _2b8(_2b9,_2ba){ +var _2bb=0; +for(var i=0;i<_2b4.length;i++){ +var p=_2b4[i]; +var h=p.panel("header")._outerHeight(_2b5); +if(p.panel("options").collapsible==_2b9){ +var _2bc=isNaN(_2ba)?undefined:(_2ba+_2b5*h.length); +p.panel("resize",{width:cc.width(),height:(_2b9?_2bc:undefined)}); +_2bb+=p.panel("panel").outerHeight()-_2b5*h.length; +} +} +return _2bb; +}; +}; +function _2bd(_2be,_2bf,_2c0,all){ +var _2c1=$.data(_2be,"accordion").panels; +var pp=[]; +for(var i=0;i<_2c1.length;i++){ +var p=_2c1[i]; +if(_2bf){ +if(p.panel("options")[_2bf]==_2c0){ +pp.push(p); +} +}else{ +if(p[0]==$(_2c0)[0]){ +return i; +} +} +} +if(_2bf){ +return all?pp:(pp.length?pp[0]:null); +}else{ +return -1; +} +}; +function _2c2(_2c3){ +return _2bd(_2c3,"collapsed",false,true); +}; +function _2c4(_2c5){ +var pp=_2c2(_2c5); +return pp.length?pp[0]:null; +}; +function _2c6(_2c7,_2c8){ +return _2bd(_2c7,null,_2c8); +}; +function _2c9(_2ca,_2cb){ +var _2cc=$.data(_2ca,"accordion").panels; +if(typeof _2cb=="number"){ +if(_2cb<0||_2cb>=_2cc.length){ +return null; +}else{ +return _2cc[_2cb]; +} +} +return _2bd(_2ca,"title",_2cb); +}; +function _2cd(_2ce){ +var opts=$.data(_2ce,"accordion").options; +var cc=$(_2ce); +if(opts.border){ +cc.removeClass("accordion-noborder"); +}else{ +cc.addClass("accordion-noborder"); +} +}; +function init(_2cf){ +var _2d0=$.data(_2cf,"accordion"); +var cc=$(_2cf); +cc.addClass("accordion"); +_2d0.panels=[]; +cc.children("div").each(function(){ +var opts=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +var pp=$(this); +_2d0.panels.push(pp); +_2d2(_2cf,pp,opts); +}); +cc.bind("_resize",function(e,_2d1){ +if($(this).hasClass("easyui-fluid")||_2d1){ +_2b0(_2cf); +} +return false; +}); +}; +function _2d2(_2d3,pp,_2d4){ +var opts=$.data(_2d3,"accordion").options; +pp.panel($.extend({},{collapsible:true,minimizable:false,maximizable:false,closable:false,doSize:false,collapsed:true,headerCls:"accordion-header",bodyCls:"accordion-body"},_2d4,{onBeforeExpand:function(){ +if(_2d4.onBeforeExpand){ +if(_2d4.onBeforeExpand.call(this)==false){ +return false; +} +} +if(!opts.multiple){ +var all=$.grep(_2c2(_2d3),function(p){ +return p.panel("options").collapsible; +}); +for(var i=0;i").addClass("accordion-collapse accordion-expand").appendTo(tool); +t.bind("click",function(){ +_2d8(pp); +return false; +}); +pp.panel("options").collapsible?t.show():t.hide(); +_2d7.click(function(){ +_2d8(pp); +return false; +}); +function _2d8(p){ +var _2d9=p.panel("options"); +if(_2d9.collapsible){ +var _2da=_2c6(_2d3,p); +if(_2d9.collapsed){ +_2db(_2d3,_2da); +}else{ +_2dc(_2d3,_2da); +} +} +}; +}; +function _2db(_2dd,_2de){ +var p=_2c9(_2dd,_2de); +if(!p){ +return; +} +_2df(_2dd); +var opts=$.data(_2dd,"accordion").options; +p.panel("expand",opts.animate); +}; +function _2dc(_2e0,_2e1){ +var p=_2c9(_2e0,_2e1); +if(!p){ +return; +} +_2df(_2e0); +var opts=$.data(_2e0,"accordion").options; +p.panel("collapse",opts.animate); +}; +function _2e2(_2e3){ +var opts=$.data(_2e3,"accordion").options; +var p=_2bd(_2e3,"selected",true); +if(p){ +_2e4(_2c6(_2e3,p)); +}else{ +_2e4(opts.selected); +} +function _2e4(_2e5){ +var _2e6=opts.animate; +opts.animate=false; +_2db(_2e3,_2e5); +opts.animate=_2e6; +}; +}; +function _2df(_2e7){ +var _2e8=$.data(_2e7,"accordion").panels; +for(var i=0;i<_2e8.length;i++){ +_2e8[i].stop(true,true); +} +}; +function add(_2e9,_2ea){ +var _2eb=$.data(_2e9,"accordion"); +var opts=_2eb.options; +var _2ec=_2eb.panels; +if(_2ea.selected==undefined){ +_2ea.selected=true; +} +_2df(_2e9); +var pp=$("
      ").appendTo(_2e9); +_2ec.push(pp); +_2d2(_2e9,pp,_2ea); +_2b0(_2e9); +opts.onAdd.call(_2e9,_2ea.title,_2ec.length-1); +if(_2ea.selected){ +_2db(_2e9,_2ec.length-1); +} +}; +function _2ed(_2ee,_2ef){ +var _2f0=$.data(_2ee,"accordion"); +var opts=_2f0.options; +var _2f1=_2f0.panels; +_2df(_2ee); +var _2f2=_2c9(_2ee,_2ef); +var _2f3=_2f2.panel("options").title; +var _2f4=_2c6(_2ee,_2f2); +if(!_2f2){ +return; +} +if(opts.onBeforeRemove.call(_2ee,_2f3,_2f4)==false){ +return; +} +_2f1.splice(_2f4,1); +_2f2.panel("destroy"); +if(_2f1.length){ +_2b0(_2ee); +var curr=_2c4(_2ee); +if(!curr){ +_2db(_2ee,0); +} +} +opts.onRemove.call(_2ee,_2f3,_2f4); +}; +$.fn.accordion=function(_2f5,_2f6){ +if(typeof _2f5=="string"){ +return $.fn.accordion.methods[_2f5](this,_2f6); +} +_2f5=_2f5||{}; +return this.each(function(){ +var _2f7=$.data(this,"accordion"); +if(_2f7){ +$.extend(_2f7.options,_2f5); +}else{ +$.data(this,"accordion",{options:$.extend({},$.fn.accordion.defaults,$.fn.accordion.parseOptions(this),_2f5),accordion:$(this).addClass("accordion"),panels:[]}); +init(this); +} +_2cd(this); +_2b0(this); +_2e2(this); +}); +}; +$.fn.accordion.methods={options:function(jq){ +return $.data(jq[0],"accordion").options; +},panels:function(jq){ +return $.data(jq[0],"accordion").panels; +},resize:function(jq,_2f8){ +return jq.each(function(){ +_2b0(this,_2f8); +}); +},getSelections:function(jq){ +return _2c2(jq[0]); +},getSelected:function(jq){ +return _2c4(jq[0]); +},getPanel:function(jq,_2f9){ +return _2c9(jq[0],_2f9); +},getPanelIndex:function(jq,_2fa){ +return _2c6(jq[0],_2fa); +},select:function(jq,_2fb){ +return jq.each(function(){ +_2db(this,_2fb); +}); +},unselect:function(jq,_2fc){ +return jq.each(function(){ +_2dc(this,_2fc); +}); +},add:function(jq,_2fd){ +return jq.each(function(){ +add(this,_2fd); +}); +},remove:function(jq,_2fe){ +return jq.each(function(){ +_2ed(this,_2fe); +}); +}}; +$.fn.accordion.parseOptions=function(_2ff){ +var t=$(_2ff); +return $.extend({},$.parser.parseOptions(_2ff,["width","height",{fit:"boolean",border:"boolean",animate:"boolean",multiple:"boolean",selected:"number"}])); +}; +$.fn.accordion.defaults={width:"auto",height:"auto",fit:false,border:true,animate:true,multiple:false,selected:0,onSelect:function(_300,_301){ +},onUnselect:function(_302,_303){ +},onAdd:function(_304,_305){ +},onBeforeRemove:function(_306,_307){ +},onRemove:function(_308,_309){ +}}; +})(jQuery); +(function($){ +function _30a(c){ +var w=0; +$(c).children().each(function(){ +w+=$(this).outerWidth(true); +}); +return w; +}; +function _30b(_30c){ +var opts=$.data(_30c,"tabs").options; +if(opts.tabPosition=="left"||opts.tabPosition=="right"||!opts.showHeader){ +return; +} +var _30d=$(_30c).children("div.tabs-header"); +var tool=_30d.children("div.tabs-tool"); +var _30e=_30d.children("div.tabs-scroller-left"); +var _30f=_30d.children("div.tabs-scroller-right"); +var wrap=_30d.children("div.tabs-wrap"); +var _310=_30d.outerHeight(); +if(opts.plain){ +_310-=_310-_30d.height(); +} +tool._outerHeight(_310); +var _311=_30a(_30d.find("ul.tabs")); +var _312=_30d.width()-tool._outerWidth(); +if(_311>_312){ +_30e.add(_30f).show()._outerHeight(_310); +if(opts.toolPosition=="left"){ +tool.css({left:_30e.outerWidth(),right:""}); +wrap.css({marginLeft:_30e.outerWidth()+tool._outerWidth(),marginRight:_30f._outerWidth(),width:_312-_30e.outerWidth()-_30f.outerWidth()}); +}else{ +tool.css({left:"",right:_30f.outerWidth()}); +wrap.css({marginLeft:_30e.outerWidth(),marginRight:_30f.outerWidth()+tool._outerWidth(),width:_312-_30e.outerWidth()-_30f.outerWidth()}); +} +}else{ +_30e.add(_30f).hide(); +if(opts.toolPosition=="left"){ +tool.css({left:0,right:""}); +wrap.css({marginLeft:tool._outerWidth(),marginRight:0,width:_312}); +}else{ +tool.css({left:"",right:0}); +wrap.css({marginLeft:0,marginRight:tool._outerWidth(),width:_312}); +} +} +}; +function _313(_314){ +var opts=$.data(_314,"tabs").options; +var _315=$(_314).children("div.tabs-header"); +if(opts.tools){ +if(typeof opts.tools=="string"){ +$(opts.tools).addClass("tabs-tool").appendTo(_315); +$(opts.tools).show(); +}else{ +_315.children("div.tabs-tool").remove(); +var _316=$("
      ").appendTo(_315); +var tr=_316.find("tr"); +for(var i=0;i").appendTo(tr); +var tool=$("").appendTo(td); +tool[0].onclick=eval(opts.tools[i].handler||function(){ +}); +tool.linkbutton($.extend({},opts.tools[i],{plain:true})); +} +} +}else{ +_315.children("div.tabs-tool").remove(); +} +}; +function _317(_318,_319){ +var _31a=$.data(_318,"tabs"); +var opts=_31a.options; +var cc=$(_318); +if(!opts.doSize){ +return; +} +if(_319){ +$.extend(opts,{width:_319.width,height:_319.height}); +} +cc._size(opts); +var _31b=cc.children("div.tabs-header"); +var _31c=cc.children("div.tabs-panels"); +var wrap=_31b.find("div.tabs-wrap"); +var ul=wrap.find(".tabs"); +ul.children("li").removeClass("tabs-first tabs-last"); +ul.children("li:first").addClass("tabs-first"); +ul.children("li:last").addClass("tabs-last"); +if(opts.tabPosition=="left"||opts.tabPosition=="right"){ +_31b._outerWidth(opts.showHeader?opts.headerWidth:0); +_31c._outerWidth(cc.width()-_31b.outerWidth()); +_31b.add(_31c)._outerHeight(opts.height); +wrap._outerWidth(_31b.width()); +ul._outerWidth(wrap.width()).css("height",""); +}else{ +_31b.children("div.tabs-scroller-left,div.tabs-scroller-right,div.tabs-tool").css("display",opts.showHeader?"block":"none"); +_31b._outerWidth(cc.width()).css("height",""); +if(opts.showHeader){ +_31b.css("background-color",""); +wrap.css("height",""); +}else{ +_31b.css("background-color","transparent"); +_31b._outerHeight(0); +wrap._outerHeight(0); +} +ul._outerHeight(opts.tabHeight).css("width",""); +ul._outerHeight(ul.outerHeight()-ul.height()-1+opts.tabHeight).css("width",""); +_31c._size("height",isNaN(opts.height)?"":(opts.height-_31b.outerHeight())); +_31c._size("width",isNaN(opts.width)?"":opts.width); +} +if(_31a.tabs.length){ +var d1=ul.outerWidth(true)-ul.width(); +var li=ul.children("li:first"); +var d2=li.outerWidth(true)-li.width(); +var _31d=_31b.width()-_31b.children(".tabs-tool")._outerWidth(); +var _31e=Math.floor((_31d-d1-d2*_31a.tabs.length)/_31a.tabs.length); +$.map(_31a.tabs,function(p){ +_31f(p,(opts.justified&&$.inArray(opts.tabPosition,["top","bottom"])>=0)?_31e:undefined); +}); +if(opts.justified&&$.inArray(opts.tabPosition,["top","bottom"])>=0){ +var _320=_31d-d1-_30a(ul); +_31f(_31a.tabs[_31a.tabs.length-1],_31e+_320); +} +} +_30b(_318); +function _31f(p,_321){ +var _322=p.panel("options"); +var p_t=_322.tab.find("a.tabs-inner"); +var _321=_321?_321:(parseInt(_322.tabWidth||opts.tabWidth||undefined)); +if(_321){ +p_t._outerWidth(_321); +}else{ +p_t.css("width",""); +} +p_t._outerHeight(opts.tabHeight); +p_t.css("lineHeight",p_t.height()+"px"); +p_t.find(".easyui-fluid:visible").triggerHandler("_resize"); +}; +}; +function _323(_324){ +var opts=$.data(_324,"tabs").options; +var tab=_325(_324); +if(tab){ +var _326=$(_324).children("div.tabs-panels"); +var _327=opts.width=="auto"?"auto":_326.width(); +var _328=opts.height=="auto"?"auto":_326.height(); +tab.panel("resize",{width:_327,height:_328}); +} +}; +function _329(_32a){ +var tabs=$.data(_32a,"tabs").tabs; +var cc=$(_32a).addClass("tabs-container"); +var _32b=$("
      ").insertBefore(cc); +cc.children("div").each(function(){ +_32b[0].appendChild(this); +}); +cc[0].appendChild(_32b[0]); +$("
      "+"
      "+"
      "+"
      "+"
        "+"
        "+"
        ").prependTo(_32a); +cc.children("div.tabs-panels").children("div").each(function(i){ +var opts=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +_338(_32a,opts,$(this)); +}); +cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function(){ +$(this).addClass("tabs-scroller-over"); +},function(){ +$(this).removeClass("tabs-scroller-over"); +}); +cc.bind("_resize",function(e,_32c){ +if($(this).hasClass("easyui-fluid")||_32c){ +_317(_32a); +_323(_32a); +} +return false; +}); +}; +function _32d(_32e){ +var _32f=$.data(_32e,"tabs"); +var opts=_32f.options; +$(_32e).children("div.tabs-header").unbind().bind("click",function(e){ +if($(e.target).hasClass("tabs-scroller-left")){ +$(_32e).tabs("scrollBy",-opts.scrollIncrement); +}else{ +if($(e.target).hasClass("tabs-scroller-right")){ +$(_32e).tabs("scrollBy",opts.scrollIncrement); +}else{ +var li=$(e.target).closest("li"); +if(li.hasClass("tabs-disabled")){ +return false; +} +var a=$(e.target).closest("a.tabs-close"); +if(a.length){ +_351(_32e,_330(li)); +}else{ +if(li.length){ +var _331=_330(li); +var _332=_32f.tabs[_331].panel("options"); +if(_332.collapsible){ +_332.closed?_348(_32e,_331):_365(_32e,_331); +}else{ +_348(_32e,_331); +} +} +} +return false; +} +} +}).bind("contextmenu",function(e){ +var li=$(e.target).closest("li"); +if(li.hasClass("tabs-disabled")){ +return; +} +if(li.length){ +opts.onContextMenu.call(_32e,e,li.find("span.tabs-title").html(),_330(li)); +} +}); +function _330(li){ +var _333=0; +li.parent().children("li").each(function(i){ +if(li[0]==this){ +_333=i; +return false; +} +}); +return _333; +}; +}; +function _334(_335){ +var opts=$.data(_335,"tabs").options; +var _336=$(_335).children("div.tabs-header"); +var _337=$(_335).children("div.tabs-panels"); +_336.removeClass("tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right"); +_337.removeClass("tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right"); +if(opts.tabPosition=="top"){ +_336.insertBefore(_337); +}else{ +if(opts.tabPosition=="bottom"){ +_336.insertAfter(_337); +_336.addClass("tabs-header-bottom"); +_337.addClass("tabs-panels-top"); +}else{ +if(opts.tabPosition=="left"){ +_336.addClass("tabs-header-left"); +_337.addClass("tabs-panels-right"); +}else{ +if(opts.tabPosition=="right"){ +_336.addClass("tabs-header-right"); +_337.addClass("tabs-panels-left"); +} +} +} +} +if(opts.plain==true){ +_336.addClass("tabs-header-plain"); +}else{ +_336.removeClass("tabs-header-plain"); +} +_336.removeClass("tabs-header-narrow").addClass(opts.narrow?"tabs-header-narrow":""); +var tabs=_336.find(".tabs"); +tabs.removeClass("tabs-pill").addClass(opts.pill?"tabs-pill":""); +tabs.removeClass("tabs-narrow").addClass(opts.narrow?"tabs-narrow":""); +tabs.removeClass("tabs-justified").addClass(opts.justified?"tabs-justified":""); +if(opts.border==true){ +_336.removeClass("tabs-header-noborder"); +_337.removeClass("tabs-panels-noborder"); +}else{ +_336.addClass("tabs-header-noborder"); +_337.addClass("tabs-panels-noborder"); +} +opts.doSize=true; +}; +function _338(_339,_33a,pp){ +_33a=_33a||{}; +var _33b=$.data(_339,"tabs"); +var tabs=_33b.tabs; +if(_33a.index==undefined||_33a.index>tabs.length){ +_33a.index=tabs.length; +} +if(_33a.index<0){ +_33a.index=0; +} +var ul=$(_339).children("div.tabs-header").find("ul.tabs"); +var _33c=$(_339).children("div.tabs-panels"); +var tab=$("
      • "+""+""+""+""+"
      • "); +if(!pp){ +pp=$("
        "); +} +if(_33a.index>=tabs.length){ +tab.appendTo(ul); +pp.appendTo(_33c); +tabs.push(pp); +}else{ +tab.insertBefore(ul.children("li:eq("+_33a.index+")")); +pp.insertBefore(_33c.children("div.panel:eq("+_33a.index+")")); +tabs.splice(_33a.index,0,pp); +} +pp.panel($.extend({},_33a,{tab:tab,border:false,noheader:true,closed:true,doSize:false,iconCls:(_33a.icon?_33a.icon:undefined),onLoad:function(){ +if(_33a.onLoad){ +_33a.onLoad.call(this,arguments); +} +_33b.options.onLoad.call(_339,$(this)); +},onBeforeOpen:function(){ +if(_33a.onBeforeOpen){ +if(_33a.onBeforeOpen.call(this)==false){ +return false; +} +} +var p=$(_339).tabs("getSelected"); +if(p){ +if(p[0]!=this){ +$(_339).tabs("unselect",_343(_339,p)); +p=$(_339).tabs("getSelected"); +if(p){ +return false; +} +}else{ +_323(_339); +return false; +} +} +var _33d=$(this).panel("options"); +_33d.tab.addClass("tabs-selected"); +var wrap=$(_339).find(">div.tabs-header>div.tabs-wrap"); +var left=_33d.tab.position().left; +var _33e=left+_33d.tab.outerWidth(); +if(left<0||_33e>wrap.width()){ +var _33f=left-(wrap.width()-_33d.tab.width())/2; +$(_339).tabs("scrollBy",_33f); +}else{ +$(_339).tabs("scrollBy",0); +} +var _340=$(this).panel("panel"); +_340.css("display","block"); +_323(_339); +_340.css("display","none"); +},onOpen:function(){ +if(_33a.onOpen){ +_33a.onOpen.call(this); +} +var _341=$(this).panel("options"); +_33b.selectHis.push(_341.title); +_33b.options.onSelect.call(_339,_341.title,_343(_339,this)); +},onBeforeClose:function(){ +if(_33a.onBeforeClose){ +if(_33a.onBeforeClose.call(this)==false){ +return false; +} +} +$(this).panel("options").tab.removeClass("tabs-selected"); +},onClose:function(){ +if(_33a.onClose){ +_33a.onClose.call(this); +} +var _342=$(this).panel("options"); +_33b.options.onUnselect.call(_339,_342.title,_343(_339,this)); +}})); +$(_339).tabs("update",{tab:pp,options:pp.panel("options"),type:"header"}); +}; +function _344(_345,_346){ +var _347=$.data(_345,"tabs"); +var opts=_347.options; +if(_346.selected==undefined){ +_346.selected=true; +} +_338(_345,_346); +opts.onAdd.call(_345,_346.title,_346.index); +if(_346.selected){ +_348(_345,_346.index); +} +}; +function _349(_34a,_34b){ +_34b.type=_34b.type||"all"; +var _34c=$.data(_34a,"tabs").selectHis; +var pp=_34b.tab; +var _34d=pp.panel("options").title; +if(_34b.type=="all"||_34b=="body"){ +pp.panel($.extend({},_34b.options,{iconCls:(_34b.options.icon?_34b.options.icon:undefined)})); +} +if(_34b.type=="all"||_34b.type=="header"){ +var opts=pp.panel("options"); +var tab=opts.tab; +if(opts.header){ +tab.find(".tabs-inner").html($(opts.header)); +}else{ +var _34e=tab.find("span.tabs-title"); +var _34f=tab.find("span.tabs-icon"); +_34e.html(opts.title); +_34f.attr("class","tabs-icon"); +tab.find("a.tabs-close").remove(); +if(opts.closable){ +_34e.addClass("tabs-closable"); +$("").appendTo(tab); +}else{ +_34e.removeClass("tabs-closable"); +} +if(opts.iconCls){ +_34e.addClass("tabs-with-icon"); +_34f.addClass(opts.iconCls); +}else{ +_34e.removeClass("tabs-with-icon"); +} +if(opts.tools){ +var _350=tab.find("span.tabs-p-tool"); +if(!_350.length){ +var _350=$("").insertAfter(tab.find("a.tabs-inner")); +} +if($.isArray(opts.tools)){ +for(var i=0;i").appendTo(_350); +t.addClass(opts.tools[i].iconCls); +if(opts.tools[i].handler){ +t.bind("click",{handler:opts.tools[i].handler},function(e){ +if($(this).parents("li").hasClass("tabs-disabled")){ +return; +} +e.data.handler.call(this); +}); +} +} +}else{ +$(opts.tools).children().appendTo(_350); +} +var pr=_350.children().length*12; +if(opts.closable){ +pr+=8; +}else{ +pr-=3; +_350.css("right","5px"); +} +_34e.css("padding-right",pr+"px"); +}else{ +tab.find("span.tabs-p-tool").remove(); +_34e.css("padding-right",""); +} +} +if(_34d!=opts.title){ +for(var i=0;i<_34c.length;i++){ +if(_34c[i]==_34d){ +_34c[i]=opts.title; +} +} +} +} +_317(_34a); +$.data(_34a,"tabs").options.onUpdate.call(_34a,opts.title,_343(_34a,pp)); +}; +function _351(_352,_353){ +var opts=$.data(_352,"tabs").options; +var tabs=$.data(_352,"tabs").tabs; +var _354=$.data(_352,"tabs").selectHis; +if(!_355(_352,_353)){ +return; +} +var tab=_356(_352,_353); +var _357=tab.panel("options").title; +var _358=_343(_352,tab); +if(opts.onBeforeClose.call(_352,_357,_358)==false){ +return; +} +var tab=_356(_352,_353,true); +tab.panel("options").tab.remove(); +tab.panel("destroy"); +opts.onClose.call(_352,_357,_358); +_317(_352); +for(var i=0;i<_354.length;i++){ +if(_354[i]==_357){ +_354.splice(i,1); +i--; +} +} +var _359=_354.pop(); +if(_359){ +_348(_352,_359); +}else{ +if(tabs.length){ +_348(_352,0); +} +} +}; +function _356(_35a,_35b,_35c){ +var tabs=$.data(_35a,"tabs").tabs; +if(typeof _35b=="number"){ +if(_35b<0||_35b>=tabs.length){ +return null; +}else{ +var tab=tabs[_35b]; +if(_35c){ +tabs.splice(_35b,1); +} +return tab; +} +} +for(var i=0;idiv.tabs-header>div.tabs-wrap"); +var pos=Math.min(wrap._scrollLeft()+_37b,_37c()); +wrap.animate({scrollLeft:pos},opts.scrollDuration); +function _37c(){ +var w=0; +var ul=wrap.children("ul"); +ul.children("li").each(function(){ +w+=$(this).outerWidth(true); +}); +return w-wrap.width()+(ul.outerWidth()-ul.width()); +}; +}); +}}; +$.fn.tabs.parseOptions=function(_37d){ +return $.extend({},$.parser.parseOptions(_37d,["tools","toolPosition","tabPosition",{fit:"boolean",border:"boolean",plain:"boolean"},{headerWidth:"number",tabWidth:"number",tabHeight:"number",selected:"number"},{showHeader:"boolean",justified:"boolean",narrow:"boolean",pill:"boolean"}])); +}; +$.fn.tabs.defaults={width:"auto",height:"auto",headerWidth:150,tabWidth:"auto",tabHeight:27,selected:0,showHeader:true,plain:false,fit:false,border:true,justified:false,narrow:false,pill:false,tools:null,toolPosition:"right",tabPosition:"top",scrollIncrement:100,scrollDuration:400,onLoad:function(_37e){ +},onSelect:function(_37f,_380){ +},onUnselect:function(_381,_382){ +},onBeforeClose:function(_383,_384){ +},onClose:function(_385,_386){ +},onAdd:function(_387,_388){ +},onUpdate:function(_389,_38a){ +},onContextMenu:function(e,_38b,_38c){ +}}; +})(jQuery); +(function($){ +var _38d=false; +function _38e(_38f,_390){ +var _391=$.data(_38f,"layout"); +var opts=_391.options; +var _392=_391.panels; +var cc=$(_38f); +if(_390){ +$.extend(opts,{width:_390.width,height:_390.height}); +} +if(_38f.tagName.toLowerCase()=="body"){ +cc._size("fit"); +}else{ +cc._size(opts); +} +var cpos={top:0,left:0,width:cc.width(),height:cc.height()}; +_393(_394(_392.expandNorth)?_392.expandNorth:_392.north,"n"); +_393(_394(_392.expandSouth)?_392.expandSouth:_392.south,"s"); +_395(_394(_392.expandEast)?_392.expandEast:_392.east,"e"); +_395(_394(_392.expandWest)?_392.expandWest:_392.west,"w"); +_392.center.panel("resize",cpos); +function _393(pp,type){ +if(!pp.length||!_394(pp)){ +return; +} +var opts=pp.panel("options"); +pp.panel("resize",{width:cc.width(),height:opts.height}); +var _396=pp.panel("panel").outerHeight(); +pp.panel("move",{left:0,top:(type=="n"?0:cc.height()-_396)}); +cpos.height-=_396; +if(type=="n"){ +cpos.top+=_396; +if(!opts.split&&opts.border){ +cpos.top--; +} +} +if(!opts.split&&opts.border){ +cpos.height++; +} +}; +function _395(pp,type){ +if(!pp.length||!_394(pp)){ +return; +} +var opts=pp.panel("options"); +pp.panel("resize",{width:opts.width,height:cpos.height}); +var _397=pp.panel("panel").outerWidth(); +pp.panel("move",{left:(type=="e"?cc.width()-_397:0),top:cpos.top}); +cpos.width-=_397; +if(type=="w"){ +cpos.left+=_397; +if(!opts.split&&opts.border){ +cpos.left--; +} +} +if(!opts.split&&opts.border){ +cpos.width++; +} +}; +}; +function init(_398){ +var cc=$(_398); +cc.addClass("layout"); +function _399(cc){ +cc.children("div").each(function(){ +var opts=$.fn.layout.parsePanelOptions(this); +if("north,south,east,west,center".indexOf(opts.region)>=0){ +_39b(_398,opts,this); +} +}); +}; +cc.children("form").length?_399(cc.children("form")):_399(cc); +cc.append("
        "); +cc.bind("_resize",function(e,_39a){ +if($(this).hasClass("easyui-fluid")||_39a){ +_38e(_398); +} +return false; +}); +}; +function _39b(_39c,_39d,el){ +_39d.region=_39d.region||"center"; +var _39e=$.data(_39c,"layout").panels; +var cc=$(_39c); +var dir=_39d.region; +if(_39e[dir].length){ +return; +} +var pp=$(el); +if(!pp.length){ +pp=$("
        ").appendTo(cc); +} +var _39f=$.extend({},$.fn.layout.paneldefaults,{width:(pp.length?parseInt(pp[0].style.width)||pp.outerWidth():"auto"),height:(pp.length?parseInt(pp[0].style.height)||pp.outerHeight():"auto"),doSize:false,collapsible:true,cls:("layout-panel layout-panel-"+dir),bodyCls:"layout-body",onOpen:function(){ +var tool=$(this).panel("header").children("div.panel-tool"); +tool.children("a.panel-tool-collapse").hide(); +var _3a0={north:"up",south:"down",east:"right",west:"left"}; +if(!_3a0[dir]){ +return; +} +var _3a1="layout-button-"+_3a0[dir]; +var t=tool.children("a."+_3a1); +if(!t.length){ +t=$("").addClass(_3a1).appendTo(tool); +t.bind("click",{dir:dir},function(e){ +_3ad(_39c,e.data.dir); +return false; +}); +} +$(this).panel("options").collapsible?t.show():t.hide(); +}},_39d); +pp.panel(_39f); +_39e[dir]=pp; +var _3a2={north:"s",south:"n",east:"w",west:"e"}; +var _3a3=pp.panel("panel"); +if(pp.panel("options").split){ +_3a3.addClass("layout-split-"+dir); +} +_3a3.resizable($.extend({},{handles:(_3a2[dir]||""),disabled:(!pp.panel("options").split),onStartResize:function(e){ +_38d=true; +if(dir=="north"||dir=="south"){ +var _3a4=$(">div.layout-split-proxy-v",_39c); +}else{ +var _3a4=$(">div.layout-split-proxy-h",_39c); +} +var top=0,left=0,_3a5=0,_3a6=0; +var pos={display:"block"}; +if(dir=="north"){ +pos.top=parseInt(_3a3.css("top"))+_3a3.outerHeight()-_3a4.height(); +pos.left=parseInt(_3a3.css("left")); +pos.width=_3a3.outerWidth(); +pos.height=_3a4.height(); +}else{ +if(dir=="south"){ +pos.top=parseInt(_3a3.css("top")); +pos.left=parseInt(_3a3.css("left")); +pos.width=_3a3.outerWidth(); +pos.height=_3a4.height(); +}else{ +if(dir=="east"){ +pos.top=parseInt(_3a3.css("top"))||0; +pos.left=parseInt(_3a3.css("left"))||0; +pos.width=_3a4.width(); +pos.height=_3a3.outerHeight(); +}else{ +if(dir=="west"){ +pos.top=parseInt(_3a3.css("top"))||0; +pos.left=_3a3.outerWidth()-_3a4.width(); +pos.width=_3a4.width(); +pos.height=_3a3.outerHeight(); +} +} +} +} +_3a4.css(pos); +$("
        ").css({left:0,top:0,width:cc.width(),height:cc.height()}).appendTo(cc); +},onResize:function(e){ +if(dir=="north"||dir=="south"){ +var _3a7=$(">div.layout-split-proxy-v",_39c); +_3a7.css("top",e.pageY-$(_39c).offset().top-_3a7.height()/2); +}else{ +var _3a7=$(">div.layout-split-proxy-h",_39c); +_3a7.css("left",e.pageX-$(_39c).offset().left-_3a7.width()/2); +} +return false; +},onStopResize:function(e){ +cc.children("div.layout-split-proxy-v,div.layout-split-proxy-h").hide(); +pp.panel("resize",e.data); +_38e(_39c); +_38d=false; +cc.find(">div.layout-mask").remove(); +}},_39d)); +}; +function _3a8(_3a9,_3aa){ +var _3ab=$.data(_3a9,"layout").panels; +if(_3ab[_3aa].length){ +_3ab[_3aa].panel("destroy"); +_3ab[_3aa]=$(); +var _3ac="expand"+_3aa.substring(0,1).toUpperCase()+_3aa.substring(1); +if(_3ab[_3ac]){ +_3ab[_3ac].panel("destroy"); +_3ab[_3ac]=undefined; +} +} +}; +function _3ad(_3ae,_3af,_3b0){ +if(_3b0==undefined){ +_3b0="normal"; +} +var _3b1=$.data(_3ae,"layout").panels; +var p=_3b1[_3af]; +var _3b2=p.panel("options"); +if(_3b2.onBeforeCollapse.call(p)==false){ +return; +} +var _3b3="expand"+_3af.substring(0,1).toUpperCase()+_3af.substring(1); +if(!_3b1[_3b3]){ +_3b1[_3b3]=_3b4(_3af); +_3b1[_3b3].panel("panel").bind("click",function(){ +p.panel("expand",false).panel("open"); +var _3b5=_3b6(); +p.panel("resize",_3b5.collapse); +p.panel("panel").animate(_3b5.expand,function(){ +$(this).unbind(".layout").bind("mouseleave.layout",{region:_3af},function(e){ +if(_38d==true){ +return; +} +if($("body>div.combo-p>div.combo-panel:visible").length){ +return; +} +_3ad(_3ae,e.data.region); +}); +}); +return false; +}); +} +var _3b7=_3b6(); +if(!_394(_3b1[_3b3])){ +_3b1.center.panel("resize",_3b7.resizeC); +} +p.panel("panel").animate(_3b7.collapse,_3b0,function(){ +p.panel("collapse",false).panel("close"); +_3b1[_3b3].panel("open").panel("resize",_3b7.expandP); +$(this).unbind(".layout"); +}); +function _3b4(dir){ +var icon; +if(dir=="east"){ +icon="layout-button-left"; +}else{ +if(dir=="west"){ +icon="layout-button-right"; +}else{ +if(dir=="north"){ +icon="layout-button-down"; +}else{ +if(dir=="south"){ +icon="layout-button-up"; +} +} +} +} +var p=$("
        ").appendTo(_3ae); +p.panel($.extend({},$.fn.layout.paneldefaults,{cls:("layout-expand layout-expand-"+dir),title:" ",closed:true,minWidth:0,minHeight:0,doSize:false,tools:[{iconCls:icon,handler:function(){ +_3bd(_3ae,_3af); +return false; +}}]})); +p.panel("panel").hover(function(){ +$(this).addClass("layout-expand-over"); +},function(){ +$(this).removeClass("layout-expand-over"); +}); +return p; +}; +function _3b6(){ +var cc=$(_3ae); +var _3b8=_3b1.center.panel("options"); +var _3b9=_3b2.collapsedSize; +if(_3af=="east"){ +var _3ba=p.panel("panel")._outerWidth(); +var _3bb=_3b8.width+_3ba-_3b9; +if(_3b2.split||!_3b2.border){ +_3bb++; +} +return {resizeC:{width:_3bb},expand:{left:cc.width()-_3ba},expandP:{top:_3b8.top,left:cc.width()-_3b9,width:_3b9,height:_3b8.height},collapse:{left:cc.width(),top:_3b8.top,height:_3b8.height}}; +}else{ +if(_3af=="west"){ +var _3ba=p.panel("panel")._outerWidth(); +var _3bb=_3b8.width+_3ba-_3b9; +if(_3b2.split||!_3b2.border){ +_3bb++; +} +return {resizeC:{width:_3bb,left:_3b9-1},expand:{left:0},expandP:{left:0,top:_3b8.top,width:_3b9,height:_3b8.height},collapse:{left:-_3ba,top:_3b8.top,height:_3b8.height}}; +}else{ +if(_3af=="north"){ +var _3bc=p.panel("panel")._outerHeight(); +var hh=_3b8.height; +if(!_394(_3b1.expandNorth)){ +hh+=_3bc-_3b9+((_3b2.split||!_3b2.border)?1:0); +} +_3b1.east.add(_3b1.west).add(_3b1.expandEast).add(_3b1.expandWest).panel("resize",{top:_3b9-1,height:hh}); +return {resizeC:{top:_3b9-1,height:hh},expand:{top:0},expandP:{top:0,left:0,width:cc.width(),height:_3b9},collapse:{top:-_3bc,width:cc.width()}}; +}else{ +if(_3af=="south"){ +var _3bc=p.panel("panel")._outerHeight(); +var hh=_3b8.height; +if(!_394(_3b1.expandSouth)){ +hh+=_3bc-_3b9+((_3b2.split||!_3b2.border)?1:0); +} +_3b1.east.add(_3b1.west).add(_3b1.expandEast).add(_3b1.expandWest).panel("resize",{height:hh}); +return {resizeC:{height:hh},expand:{top:cc.height()-_3bc},expandP:{top:cc.height()-_3b9,left:0,width:cc.width(),height:_3b9},collapse:{top:cc.height(),width:cc.width()}}; +} +} +} +} +}; +}; +function _3bd(_3be,_3bf){ +var _3c0=$.data(_3be,"layout").panels; +var p=_3c0[_3bf]; +var _3c1=p.panel("options"); +if(_3c1.onBeforeExpand.call(p)==false){ +return; +} +var _3c2="expand"+_3bf.substring(0,1).toUpperCase()+_3bf.substring(1); +if(_3c0[_3c2]){ +_3c0[_3c2].panel("close"); +p.panel("panel").stop(true,true); +p.panel("expand",false).panel("open"); +var _3c3=_3c4(); +p.panel("resize",_3c3.collapse); +p.panel("panel").animate(_3c3.expand,function(){ +_38e(_3be); +}); +} +function _3c4(){ +var cc=$(_3be); +var _3c5=_3c0.center.panel("options"); +if(_3bf=="east"&&_3c0.expandEast){ +return {collapse:{left:cc.width(),top:_3c5.top,height:_3c5.height},expand:{left:cc.width()-p.panel("panel")._outerWidth()}}; +}else{ +if(_3bf=="west"&&_3c0.expandWest){ +return {collapse:{left:-p.panel("panel")._outerWidth(),top:_3c5.top,height:_3c5.height},expand:{left:0}}; +}else{ +if(_3bf=="north"&&_3c0.expandNorth){ +return {collapse:{top:-p.panel("panel")._outerHeight(),width:cc.width()},expand:{top:0}}; +}else{ +if(_3bf=="south"&&_3c0.expandSouth){ +return {collapse:{top:cc.height(),width:cc.width()},expand:{top:cc.height()-p.panel("panel")._outerHeight()}}; +} +} +} +} +}; +}; +function _394(pp){ +if(!pp){ +return false; +} +if(pp.length){ +return pp.panel("panel").is(":visible"); +}else{ +return false; +} +}; +function _3c6(_3c7){ +var _3c8=$.data(_3c7,"layout").panels; +_3c9("east"); +_3c9("west"); +_3c9("north"); +_3c9("south"); +function _3c9(_3ca){ +var p=_3c8[_3ca]; +if(p.length&&p.panel("options").collapsed){ +_3ad(_3c7,_3ca,0); +} +}; +}; +function _3cb(_3cc,_3cd,_3ce){ +var p=$(_3cc).layout("panel",_3cd); +p.panel("options").split=_3ce; +var cls="layout-split-"+_3cd; +var _3cf=p.panel("panel").removeClass(cls); +if(_3ce){ +_3cf.addClass(cls); +} +_3cf.resizable({disabled:(!_3ce)}); +_38e(_3cc); +}; +$.fn.layout=function(_3d0,_3d1){ +if(typeof _3d0=="string"){ +return $.fn.layout.methods[_3d0](this,_3d1); +} +_3d0=_3d0||{}; +return this.each(function(){ +var _3d2=$.data(this,"layout"); +if(_3d2){ +$.extend(_3d2.options,_3d0); +}else{ +var opts=$.extend({},$.fn.layout.defaults,$.fn.layout.parseOptions(this),_3d0); +$.data(this,"layout",{options:opts,panels:{center:$(),north:$(),south:$(),east:$(),west:$()}}); +init(this); +} +_38e(this); +_3c6(this); +}); +}; +$.fn.layout.methods={options:function(jq){ +return $.data(jq[0],"layout").options; +},resize:function(jq,_3d3){ +return jq.each(function(){ +_38e(this,_3d3); +}); +},panel:function(jq,_3d4){ +return $.data(jq[0],"layout").panels[_3d4]; +},collapse:function(jq,_3d5){ +return jq.each(function(){ +_3ad(this,_3d5); +}); +},expand:function(jq,_3d6){ +return jq.each(function(){ +_3bd(this,_3d6); +}); +},add:function(jq,_3d7){ +return jq.each(function(){ +_39b(this,_3d7); +_38e(this); +if($(this).layout("panel",_3d7.region).panel("options").collapsed){ +_3ad(this,_3d7.region,0); +} +}); +},remove:function(jq,_3d8){ +return jq.each(function(){ +_3a8(this,_3d8); +_38e(this); +}); +},split:function(jq,_3d9){ +return jq.each(function(){ +_3cb(this,_3d9,true); +}); +},unsplit:function(jq,_3da){ +return jq.each(function(){ +_3cb(this,_3da,false); +}); +}}; +$.fn.layout.parseOptions=function(_3db){ +return $.extend({},$.parser.parseOptions(_3db,[{fit:"boolean"}])); +}; +$.fn.layout.defaults={fit:false}; +$.fn.layout.parsePanelOptions=function(_3dc){ +var t=$(_3dc); +return $.extend({},$.fn.panel.parseOptions(_3dc),$.parser.parseOptions(_3dc,["region",{split:"boolean",collpasedSize:"number",minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number"}])); +}; +$.fn.layout.paneldefaults=$.extend({},$.fn.panel.defaults,{region:null,split:false,collapsedSize:28,minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000}); +})(jQuery); +(function($){ +$(function(){ +$(document).unbind(".menu").bind("mousedown.menu",function(e){ +var m=$(e.target).closest("div.menu,div.combo-p"); +if(m.length){ +return; +} +$("body>div.menu-top:visible").not(".menu-inline").menu("hide"); +_3dd($("body>div.menu:visible").not(".menu-inline")); +}); +}); +function init(_3de){ +var opts=$.data(_3de,"menu").options; +$(_3de).addClass("menu-top"); +opts.inline?$(_3de).addClass("menu-inline"):$(_3de).appendTo("body"); +$(_3de).bind("_resize",function(e,_3df){ +if($(this).hasClass("easyui-fluid")||_3df){ +$(_3de).menu("resize",_3de); +} +return false; +}); +var _3e0=_3e1($(_3de)); +for(var i=0;i<_3e0.length;i++){ +_3e2(_3e0[i]); +} +function _3e1(menu){ +var _3e3=[]; +menu.addClass("menu"); +_3e3.push(menu); +if(!menu.hasClass("menu-content")){ +menu.children("div").each(function(){ +var _3e4=$(this).children("div"); +if(_3e4.length){ +_3e4.appendTo("body"); +this.submenu=_3e4; +var mm=_3e1(_3e4); +_3e3=_3e3.concat(mm); +} +}); +} +return _3e3; +}; +function _3e2(menu){ +var wh=$.parser.parseOptions(menu[0],["width","height"]); +menu[0].originalHeight=wh.height||0; +if(menu.hasClass("menu-content")){ +menu[0].originalWidth=wh.width||menu._outerWidth(); +}else{ +menu[0].originalWidth=wh.width||0; +menu.children("div").each(function(){ +var item=$(this); +var _3e5=$.extend({},$.parser.parseOptions(this,["name","iconCls","href",{separator:"boolean"}]),{disabled:(item.attr("disabled")?true:undefined)}); +if(_3e5.separator){ +item.addClass("menu-sep"); +} +if(!item.hasClass("menu-sep")){ +item[0].itemName=_3e5.name||""; +item[0].itemHref=_3e5.href||""; +var text=item.addClass("menu-item").html(); +item.empty().append($("
        ").html(text)); +if(_3e5.iconCls){ +$("
        ").addClass(_3e5.iconCls).appendTo(item); +} +if(_3e5.disabled){ +_3e6(_3de,item[0],true); +} +if(item[0].submenu){ +$("
        ").appendTo(item); +} +_3e7(_3de,item); +} +}); +$("
        ").prependTo(menu); +} +_3e8(_3de,menu); +if(!menu.hasClass("menu-inline")){ +menu.hide(); +} +_3e9(_3de,menu); +}; +}; +function _3e8(_3ea,menu){ +var opts=$.data(_3ea,"menu").options; +var _3eb=menu.attr("style")||""; +menu.css({display:"block",left:-10000,height:"auto",overflow:"hidden"}); +menu.find(".menu-item").each(function(){ +$(this)._outerHeight(opts.itemHeight); +$(this).find(".menu-text").css({height:(opts.itemHeight-2)+"px",lineHeight:(opts.itemHeight-2)+"px"}); +}); +menu.removeClass("menu-noline").addClass(opts.noline?"menu-noline":""); +var _3ec=menu[0].originalWidth||"auto"; +if(isNaN(parseInt(_3ec))){ +_3ec=0; +menu.find("div.menu-text").each(function(){ +if(_3ec<$(this)._outerWidth()){ +_3ec=$(this)._outerWidth(); +} +}); +_3ec+=40; +} +var _3ed=menu.outerHeight(); +var _3ee=menu[0].originalHeight||"auto"; +if(isNaN(parseInt(_3ee))){ +_3ee=_3ed; +if(menu.hasClass("menu-top")&&opts.alignTo){ +var at=$(opts.alignTo); +var h1=at.offset().top-$(document).scrollTop(); +var h2=$(window)._outerHeight()+$(document).scrollTop()-at.offset().top-at._outerHeight(); +_3ee=Math.min(_3ee,Math.max(h1,h2)); +}else{ +if(_3ee>$(window)._outerHeight()){ +_3ee=$(window).height(); +} +} +} +menu.attr("style",_3eb); +menu._size({fit:(menu[0]==_3ea?opts.fit:false),width:_3ec,minWidth:opts.minWidth,height:_3ee}); +menu.css("overflow",menu.outerHeight()<_3ed?"auto":"hidden"); +menu.children("div.menu-line")._outerHeight(_3ed-2); +}; +function _3e9(_3ef,menu){ +if(menu.hasClass("menu-inline")){ +return; +} +var _3f0=$.data(_3ef,"menu"); +menu.unbind(".menu").bind("mouseenter.menu",function(){ +if(_3f0.timer){ +clearTimeout(_3f0.timer); +_3f0.timer=null; +} +}).bind("mouseleave.menu",function(){ +if(_3f0.options.hideOnUnhover){ +_3f0.timer=setTimeout(function(){ +_3f1(_3ef,$(_3ef).hasClass("menu-inline")); +},_3f0.options.duration); +} +}); +}; +function _3e7(_3f2,item){ +if(!item.hasClass("menu-item")){ +return; +} +item.unbind(".menu"); +item.bind("click.menu",function(){ +if($(this).hasClass("menu-item-disabled")){ +return; +} +if(!this.submenu){ +_3f1(_3f2,$(_3f2).hasClass("menu-inline")); +var href=this.itemHref; +if(href){ +location.href=href; +} +} +$(this).trigger("mouseenter"); +var item=$(_3f2).menu("getItem",this); +$.data(_3f2,"menu").options.onClick.call(_3f2,item); +}).bind("mouseenter.menu",function(e){ +item.siblings().each(function(){ +if(this.submenu){ +_3dd(this.submenu); +} +$(this).removeClass("menu-active"); +}); +item.addClass("menu-active"); +if($(this).hasClass("menu-item-disabled")){ +item.addClass("menu-active-disabled"); +return; +} +var _3f3=item[0].submenu; +if(_3f3){ +$(_3f2).menu("show",{menu:_3f3,parent:item}); +} +}).bind("mouseleave.menu",function(e){ +item.removeClass("menu-active menu-active-disabled"); +var _3f4=item[0].submenu; +if(_3f4){ +if(e.pageX>=parseInt(_3f4.css("left"))){ +item.addClass("menu-active"); +}else{ +_3dd(_3f4); +} +}else{ +item.removeClass("menu-active"); +} +}); +}; +function _3f1(_3f5,_3f6){ +var _3f7=$.data(_3f5,"menu"); +if(_3f7){ +if($(_3f5).is(":visible")){ +_3dd($(_3f5)); +if(_3f6){ +$(_3f5).show(); +}else{ +_3f7.options.onHide.call(_3f5); +} +} +} +return false; +}; +function _3f8(_3f9,_3fa){ +var left,top; +_3fa=_3fa||{}; +var menu=$(_3fa.menu||_3f9); +$(_3f9).menu("resize",menu[0]); +if(menu.hasClass("menu-top")){ +var opts=$.data(_3f9,"menu").options; +$.extend(opts,_3fa); +left=opts.left; +top=opts.top; +if(opts.alignTo){ +var at=$(opts.alignTo); +left=at.offset().left; +top=at.offset().top+at._outerHeight(); +if(opts.align=="right"){ +left+=at.outerWidth()-menu.outerWidth(); +} +} +if(left+menu.outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ +left=$(window)._outerWidth()+$(document).scrollLeft()-menu.outerWidth()-5; +} +if(left<0){ +left=0; +} +top=_3fb(top,opts.alignTo); +}else{ +var _3fc=_3fa.parent; +left=_3fc.offset().left+_3fc.outerWidth()-2; +if(left+menu.outerWidth()+5>$(window)._outerWidth()+$(document).scrollLeft()){ +left=_3fc.offset().left-menu.outerWidth()+2; +} +top=_3fb(_3fc.offset().top-3); +} +function _3fb(top,_3fd){ +if(top+menu.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ +if(_3fd){ +top=$(_3fd).offset().top-menu._outerHeight(); +}else{ +top=$(window)._outerHeight()+$(document).scrollTop()-menu.outerHeight(); +} +} +if(top<0){ +top=0; +} +return top; +}; +menu.css({left:left,top:top}); +menu.show(0,function(){ +if(!menu[0].shadow){ +menu[0].shadow=$("
        ").insertAfter(menu); +} +menu[0].shadow.css({display:(menu.hasClass("menu-inline")?"none":"block"),zIndex:$.fn.menu.defaults.zIndex++,left:menu.css("left"),top:menu.css("top"),width:menu.outerWidth(),height:menu.outerHeight()}); +menu.css("z-index",$.fn.menu.defaults.zIndex++); +if(menu.hasClass("menu-top")){ +$.data(menu[0],"menu").options.onShow.call(menu[0]); +} +}); +}; +function _3dd(menu){ +if(menu&&menu.length){ +_3fe(menu); +menu.find("div.menu-item").each(function(){ +if(this.submenu){ +_3dd(this.submenu); +} +$(this).removeClass("menu-active"); +}); +} +function _3fe(m){ +m.stop(true,true); +if(m[0].shadow){ +m[0].shadow.hide(); +} +m.hide(); +}; +}; +function _3ff(_400,text){ +var _401=null; +var tmp=$("
        "); +function find(menu){ +menu.children("div.menu-item").each(function(){ +var item=$(_400).menu("getItem",this); +var s=tmp.empty().html(item.text).text(); +if(text==$.trim(s)){ +_401=item; +}else{ +if(this.submenu&&!_401){ +find(this.submenu); +} +} +}); +}; +find($(_400)); +tmp.remove(); +return _401; +}; +function _3e6(_402,_403,_404){ +var t=$(_403); +if(!t.hasClass("menu-item")){ +return; +} +if(_404){ +t.addClass("menu-item-disabled"); +if(_403.onclick){ +_403.onclick1=_403.onclick; +_403.onclick=null; +} +}else{ +t.removeClass("menu-item-disabled"); +if(_403.onclick1){ +_403.onclick=_403.onclick1; +_403.onclick1=null; +} +} +}; +function _405(_406,_407){ +var opts=$.data(_406,"menu").options; +var menu=$(_406); +if(_407.parent){ +if(!_407.parent.submenu){ +var _408=$("
        ").appendTo("body"); +_408.hide(); +_407.parent.submenu=_408; +$("
        ").appendTo(_407.parent); +} +menu=_407.parent.submenu; +} +if(_407.separator){ +var item=$("
        ").appendTo(menu); +}else{ +var item=$("
        ").appendTo(menu); +$("
        ").html(_407.text).appendTo(item); +} +if(_407.iconCls){ +$("
        ").addClass(_407.iconCls).appendTo(item); +} +if(_407.id){ +item.attr("id",_407.id); +} +if(_407.name){ +item[0].itemName=_407.name; +} +if(_407.href){ +item[0].itemHref=_407.href; +} +if(_407.onclick){ +if(typeof _407.onclick=="string"){ +item.attr("onclick",_407.onclick); +}else{ +item[0].onclick=eval(_407.onclick); +} +} +if(_407.handler){ +item[0].onclick=eval(_407.handler); +} +if(_407.disabled){ +_3e6(_406,item[0],true); +} +_3e7(_406,item); +_3e9(_406,menu); +_3e8(_406,menu); +}; +function _409(_40a,_40b){ +function _40c(el){ +if(el.submenu){ +el.submenu.children("div.menu-item").each(function(){ +_40c(this); +}); +var _40d=el.submenu[0].shadow; +if(_40d){ +_40d.remove(); +} +el.submenu.remove(); +} +$(el).remove(); +}; +var menu=$(_40b).parent(); +_40c(_40b); +_3e8(_40a,menu); +}; +function _40e(_40f,_410,_411){ +var menu=$(_410).parent(); +if(_411){ +$(_410).show(); +}else{ +$(_410).hide(); +} +_3e8(_40f,menu); +}; +function _412(_413){ +$(_413).children("div.menu-item").each(function(){ +_409(_413,this); +}); +if(_413.shadow){ +_413.shadow.remove(); +} +$(_413).remove(); +}; +$.fn.menu=function(_414,_415){ +if(typeof _414=="string"){ +return $.fn.menu.methods[_414](this,_415); +} +_414=_414||{}; +return this.each(function(){ +var _416=$.data(this,"menu"); +if(_416){ +$.extend(_416.options,_414); +}else{ +_416=$.data(this,"menu",{options:$.extend({},$.fn.menu.defaults,$.fn.menu.parseOptions(this),_414)}); +init(this); +} +$(this).css({left:_416.options.left,top:_416.options.top}); +}); +}; +$.fn.menu.methods={options:function(jq){ +return $.data(jq[0],"menu").options; +},show:function(jq,pos){ +return jq.each(function(){ +_3f8(this,pos); +}); +},hide:function(jq){ +return jq.each(function(){ +_3f1(this); +}); +},destroy:function(jq){ +return jq.each(function(){ +_412(this); +}); +},setText:function(jq,_417){ +return jq.each(function(){ +$(_417.target).children("div.menu-text").html(_417.text); +}); +},setIcon:function(jq,_418){ +return jq.each(function(){ +$(_418.target).children("div.menu-icon").remove(); +if(_418.iconCls){ +$("
        ").addClass(_418.iconCls).appendTo(_418.target); +} +}); +},getItem:function(jq,_419){ +var t=$(_419); +var item={target:_419,id:t.attr("id"),text:$.trim(t.children("div.menu-text").html()),disabled:t.hasClass("menu-item-disabled"),name:_419.itemName,href:_419.itemHref,onclick:_419.onclick}; +var icon=t.children("div.menu-icon"); +if(icon.length){ +var cc=[]; +var aa=icon.attr("class").split(" "); +for(var i=0;i").addClass(opts.cls.arrow).appendTo(_423); +$("").addClass("m-btn-line").appendTo(_423); +} +$(_422).menubutton("resize"); +if(opts.menu){ +$(opts.menu).menu({duration:opts.duration}); +var _424=$(opts.menu).menu("options"); +var _425=_424.onShow; +var _426=_424.onHide; +$.extend(_424,{onShow:function(){ +var _427=$(this).menu("options"); +var btn=$(_427.alignTo); +var opts=btn.menubutton("options"); +btn.addClass((opts.plain==true)?opts.cls.btn2:opts.cls.btn1); +_425.call(this); +},onHide:function(){ +var _428=$(this).menu("options"); +var btn=$(_428.alignTo); +var opts=btn.menubutton("options"); +btn.removeClass((opts.plain==true)?opts.cls.btn2:opts.cls.btn1); +_426.call(this); +}}); +} +}; +function _429(_42a){ +var opts=$.data(_42a,"menubutton").options; +var btn=$(_42a); +var t=btn.find("."+opts.cls.trigger); +if(!t.length){ +t=btn; +} +t.unbind(".menubutton"); +var _42b=null; +t.bind("click.menubutton",function(){ +if(!_42c()){ +_42d(_42a); +return false; +} +}).bind("mouseenter.menubutton",function(){ +if(!_42c()){ +_42b=setTimeout(function(){ +_42d(_42a); +},opts.duration); +return false; +} +}).bind("mouseleave.menubutton",function(){ +if(_42b){ +clearTimeout(_42b); +} +$(opts.menu).triggerHandler("mouseleave"); +}); +function _42c(){ +return $(_42a).linkbutton("options").disabled; +}; +}; +function _42d(_42e){ +var opts=$(_42e).menubutton("options"); +if(opts.disabled||!opts.menu){ +return; +} +$("body>div.menu-top").menu("hide"); +var btn=$(_42e); +var mm=$(opts.menu); +if(mm.length){ +mm.menu("options").alignTo=btn; +mm.menu("show",{alignTo:btn,align:opts.menuAlign}); +} +btn.blur(); +}; +$.fn.menubutton=function(_42f,_430){ +if(typeof _42f=="string"){ +var _431=$.fn.menubutton.methods[_42f]; +if(_431){ +return _431(this,_430); +}else{ +return this.linkbutton(_42f,_430); +} +} +_42f=_42f||{}; +return this.each(function(){ +var _432=$.data(this,"menubutton"); +if(_432){ +$.extend(_432.options,_42f); +}else{ +$.data(this,"menubutton",{options:$.extend({},$.fn.menubutton.defaults,$.fn.menubutton.parseOptions(this),_42f)}); +$(this).removeAttr("disabled"); +} +init(this); +_429(this); +}); +}; +$.fn.menubutton.methods={options:function(jq){ +var _433=jq.linkbutton("options"); +return $.extend($.data(jq[0],"menubutton").options,{toggle:_433.toggle,selected:_433.selected,disabled:_433.disabled}); +},destroy:function(jq){ +return jq.each(function(){ +var opts=$(this).menubutton("options"); +if(opts.menu){ +$(opts.menu).menu("destroy"); +} +$(this).remove(); +}); +}}; +$.fn.menubutton.parseOptions=function(_434){ +var t=$(_434); +return $.extend({},$.fn.linkbutton.parseOptions(_434),$.parser.parseOptions(_434,["menu",{plain:"boolean",hasDownArrow:"boolean",duration:"number"}])); +}; +$.fn.menubutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,hasDownArrow:true,menu:null,menuAlign:"left",duration:100,cls:{btn1:"m-btn-active",btn2:"m-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn"}}); +})(jQuery); +(function($){ +function init(_435){ +var opts=$.data(_435,"splitbutton").options; +$(_435).menubutton(opts); +$(_435).addClass("s-btn"); +}; +$.fn.splitbutton=function(_436,_437){ +if(typeof _436=="string"){ +var _438=$.fn.splitbutton.methods[_436]; +if(_438){ +return _438(this,_437); +}else{ +return this.menubutton(_436,_437); +} +} +_436=_436||{}; +return this.each(function(){ +var _439=$.data(this,"splitbutton"); +if(_439){ +$.extend(_439.options,_436); +}else{ +$.data(this,"splitbutton",{options:$.extend({},$.fn.splitbutton.defaults,$.fn.splitbutton.parseOptions(this),_436)}); +$(this).removeAttr("disabled"); +} +init(this); +}); +}; +$.fn.splitbutton.methods={options:function(jq){ +var _43a=jq.menubutton("options"); +var _43b=$.data(jq[0],"splitbutton").options; +$.extend(_43b,{disabled:_43a.disabled,toggle:_43a.toggle,selected:_43a.selected}); +return _43b; +}}; +$.fn.splitbutton.parseOptions=function(_43c){ +var t=$(_43c); +return $.extend({},$.fn.linkbutton.parseOptions(_43c),$.parser.parseOptions(_43c,["menu",{plain:"boolean",duration:"number"}])); +}; +$.fn.splitbutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"m-btn-active s-btn-active",btn2:"m-btn-plain-active s-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn-line"}}); +})(jQuery); +(function($){ +function init(_43d){ +$(_43d).addClass("validatebox-text"); +}; +function _43e(_43f){ +var _440=$.data(_43f,"validatebox"); +_440.validating=false; +if(_440.timer){ +clearTimeout(_440.timer); +} +$(_43f).tooltip("destroy"); +$(_43f).unbind(); +$(_43f).remove(); +}; +function _441(_442){ +var opts=$.data(_442,"validatebox").options; +var box=$(_442); +box.unbind(".validatebox"); +if(opts.novalidate||box.is(":disabled")){ +return; +} +for(var _443 in opts.events){ +$(_442).bind(_443+".validatebox",{target:_442},opts.events[_443]); +} +}; +function _444(e){ +var _445=e.data.target; +var _446=$.data(_445,"validatebox"); +var box=$(_445); +if($(_445).attr("readonly")){ +return; +} +_446.validating=true; +_446.value=undefined; +(function(){ +if(_446.validating){ +if(_446.value!=box.val()){ +_446.value=box.val(); +if(_446.timer){ +clearTimeout(_446.timer); +} +_446.timer=setTimeout(function(){ +$(_445).validatebox("validate"); +},_446.options.delay); +}else{ +_447(_445); +} +setTimeout(arguments.callee,200); +} +})(); +}; +function _448(e){ +var _449=e.data.target; +var _44a=$.data(_449,"validatebox"); +if(_44a.timer){ +clearTimeout(_44a.timer); +_44a.timer=undefined; +} +_44a.validating=false; +_44b(_449); +}; +function _44c(e){ +var _44d=e.data.target; +if($(_44d).hasClass("validatebox-invalid")){ +_44e(_44d); +} +}; +function _44f(e){ +var _450=e.data.target; +var _451=$.data(_450,"validatebox"); +if(!_451.validating){ +_44b(_450); +} +}; +function _44e(_452){ +var _453=$.data(_452,"validatebox"); +var opts=_453.options; +$(_452).tooltip($.extend({},opts.tipOptions,{content:_453.message,position:opts.tipPosition,deltaX:opts.deltaX})).tooltip("show"); +_453.tip=true; +}; +function _447(_454){ +var _455=$.data(_454,"validatebox"); +if(_455&&_455.tip){ +$(_454).tooltip("reposition"); +} +}; +function _44b(_456){ +var _457=$.data(_456,"validatebox"); +_457.tip=false; +$(_456).tooltip("hide"); +}; +function _458(_459){ +var _45a=$.data(_459,"validatebox"); +var opts=_45a.options; +var box=$(_459); +opts.onBeforeValidate.call(_459); +var _45b=_45c(); +opts.onValidate.call(_459,_45b); +return _45b; +function _45d(msg){ +_45a.message=msg; +}; +function _45e(_45f,_460){ +var _461=box.val(); +var _462=/([a-zA-Z_]+)(.*)/.exec(_45f); +var rule=opts.rules[_462[1]]; +if(rule&&_461){ +var _463=_460||opts.validParams||eval(_462[2]); +if(!rule["validator"].call(_459,_461,_463)){ +box.addClass("validatebox-invalid"); +var _464=rule["message"]; +if(_463){ +for(var i=0;i<_463.length;i++){ +_464=_464.replace(new RegExp("\\{"+i+"\\}","g"),_463[i]); +} +} +_45d(opts.invalidMessage||_464); +if(_45a.validating){ +_44e(_459); +} +return false; +} +} +return true; +}; +function _45c(){ +box.removeClass("validatebox-invalid"); +_44b(_459); +if(opts.novalidate||box.is(":disabled")){ +return true; +} +if(opts.required){ +if(box.val()==""){ +box.addClass("validatebox-invalid"); +_45d(opts.missingMessage); +if(_45a.validating){ +_44e(_459); +} +return false; +} +} +if(opts.validType){ +if($.isArray(opts.validType)){ +for(var i=0;i=_471[0]&&len<=_471[1]; +},message:"Please enter a value between {0} and {1}."},remote:{validator:function(_472,_473){ +var data={}; +data[_473[1]]=_472; +var _474=$.ajax({url:_473[0],dataType:"json",data:data,async:true,cache:false,type:"post"}).responseText; +return _474=="true"; +},message:"Please fix this field."}},onBeforeValidate:function(){ +},onValidate:function(_475){ +}}; +})(jQuery); +(function($){ +function init(_476){ +$(_476).addClass("textbox-f").hide(); +var span=$(""+""+""+"").insertAfter(_476); +var name=$(_476).attr("name"); +if(name){ +span.find("input.textbox-value").attr("name",name); +$(_476).removeAttr("name").attr("textboxName",name); +} +return span; +}; +function _477(_478){ +var _479=$.data(_478,"textbox"); +var opts=_479.options; +var tb=_479.textbox; +tb.find(".textbox-text").remove(); +if(opts.multiline){ +$("").prependTo(tb); +}else{ +$("").prependTo(tb); +} +tb.find(".textbox-addon").remove(); +var bb=opts.icons?$.extend(true,[],opts.icons):[]; +if(opts.iconCls){ +bb.push({iconCls:opts.iconCls,disabled:true}); +} +if(bb.length){ +var bc=$("").prependTo(tb); +bc.addClass("textbox-addon-"+opts.iconAlign); +for(var i=0;i"); +} +} +tb.find(".textbox-button").remove(); +if(opts.buttonText||opts.buttonIcon){ +var btn=$("").prependTo(tb); +btn.addClass("textbox-button-"+opts.buttonAlign).linkbutton({text:opts.buttonText,iconCls:opts.buttonIcon}); +} +_47a(_478,opts.disabled); +_47b(_478,opts.readonly); +}; +function _47c(_47d){ +var tb=$.data(_47d,"textbox").textbox; +tb.find(".textbox-text").validatebox("destroy"); +tb.remove(); +$(_47d).remove(); +}; +function _47e(_47f,_480){ +var _481=$.data(_47f,"textbox"); +var opts=_481.options; +var tb=_481.textbox; +var _482=tb.parent(); +if(_480){ +opts.width=_480; +} +if(isNaN(parseInt(opts.width))){ +var c=$(_47f).clone(); +c.css("visibility","hidden"); +c.insertAfter(_47f); +opts.width=c.outerWidth(); +c.remove(); +} +var _483=tb.is(":visible"); +if(!_483){ +tb.appendTo("body"); +} +var _484=tb.find(".textbox-text"); +var btn=tb.find(".textbox-button"); +var _485=tb.find(".textbox-addon"); +var _486=_485.find(".textbox-icon"); +tb._size(opts,_482); +btn.linkbutton("resize",{height:tb.height()}); +btn.css({left:(opts.buttonAlign=="left"?0:""),right:(opts.buttonAlign=="right"?0:"")}); +_485.css({left:(opts.iconAlign=="left"?(opts.buttonAlign=="left"?btn._outerWidth():0):""),right:(opts.iconAlign=="right"?(opts.buttonAlign=="right"?btn._outerWidth():0):"")}); +_486.css({width:opts.iconWidth+"px",height:tb.height()+"px"}); +_484.css({paddingLeft:(_47f.style.paddingLeft||""),paddingRight:(_47f.style.paddingRight||""),marginLeft:_487("left"),marginRight:_487("right")}); +if(opts.multiline){ +_484.css({paddingTop:(_47f.style.paddingTop||""),paddingBottom:(_47f.style.paddingBottom||"")}); +_484._outerHeight(tb.height()); +}else{ +var _488=Math.floor((tb.height()-_484.height())/2); +_484.css({paddingTop:_488+"px",paddingBottom:_488+"px"}); +} +_484._outerWidth(tb.width()-_486.length*opts.iconWidth-btn._outerWidth()); +if(!_483){ +tb.insertAfter(_47f); +} +opts.onResize.call(_47f,opts.width,opts.height); +function _487(_489){ +return (opts.iconAlign==_489?_485._outerWidth():0)+(opts.buttonAlign==_489?btn._outerWidth():0); +}; +}; +function _48a(_48b){ +var opts=$(_48b).textbox("options"); +var _48c=$(_48b).textbox("textbox"); +_48c.validatebox($.extend({},opts,{deltaX:$(_48b).textbox("getTipX"),onBeforeValidate:function(){ +var box=$(this); +if(!box.is(":focus")){ +opts.oldInputValue=box.val(); +box.val(opts.value); +} +},onValidate:function(_48d){ +var box=$(this); +if(opts.oldInputValue!=undefined){ +box.val(opts.oldInputValue); +opts.oldInputValue=undefined; +} +var tb=box.parent(); +if(_48d){ +tb.removeClass("textbox-invalid"); +}else{ +tb.addClass("textbox-invalid"); +} +}})); +}; +function _48e(_48f){ +var _490=$.data(_48f,"textbox"); +var opts=_490.options; +var tb=_490.textbox; +var _491=tb.find(".textbox-text"); +_491.attr("placeholder",opts.prompt); +_491.unbind(".textbox"); +if(!opts.disabled&&!opts.readonly){ +_491.bind("blur.textbox",function(e){ +if(!tb.hasClass("textbox-focused")){ +return; +} +opts.value=$(this).val(); +if(opts.value==""){ +$(this).val(opts.prompt).addClass("textbox-prompt"); +}else{ +$(this).removeClass("textbox-prompt"); +} +tb.removeClass("textbox-focused"); +}).bind("focus.textbox",function(e){ +if(tb.hasClass("textbox-focused")){ +return; +} +if($(this).val()!=opts.value){ +$(this).val(opts.value); +} +$(this).removeClass("textbox-prompt"); +tb.addClass("textbox-focused"); +}); +for(var _492 in opts.inputEvents){ +_491.bind(_492+".textbox",{target:_48f},opts.inputEvents[_492]); +} +} +var _493=tb.find(".textbox-addon"); +_493.unbind().bind("click",{target:_48f},function(e){ +var icon=$(e.target).closest("a.textbox-icon:not(.textbox-icon-disabled)"); +if(icon.length){ +var _494=parseInt(icon.attr("icon-index")); +var conf=opts.icons[_494]; +if(conf&&conf.handler){ +conf.handler.call(icon[0],e); +opts.onClickIcon.call(_48f,_494); +} +} +}); +_493.find(".textbox-icon").each(function(_495){ +var conf=opts.icons[_495]; +var icon=$(this); +if(!conf||conf.disabled||opts.disabled||opts.readonly){ +icon.addClass("textbox-icon-disabled"); +}else{ +icon.removeClass("textbox-icon-disabled"); +} +}); +var btn=tb.find(".textbox-button"); +btn.unbind(".textbox").bind("click.textbox",function(){ +if(!btn.linkbutton("options").disabled){ +opts.onClickButton.call(_48f); +} +}); +btn.linkbutton((opts.disabled||opts.readonly)?"disable":"enable"); +tb.unbind(".textbox").bind("_resize.textbox",function(e,_496){ +if($(this).hasClass("easyui-fluid")||_496){ +_47e(_48f); +} +return false; +}); +}; +function _47a(_497,_498){ +var _499=$.data(_497,"textbox"); +var opts=_499.options; +var tb=_499.textbox; +if(_498){ +opts.disabled=true; +$(_497).attr("disabled","disabled"); +tb.addClass("textbox-disabled"); +tb.find(".textbox-text,.textbox-value").attr("disabled","disabled"); +}else{ +opts.disabled=false; +tb.removeClass("textbox-disabled"); +$(_497).removeAttr("disabled"); +tb.find(".textbox-text,.textbox-value").removeAttr("disabled"); +} +}; +function _47b(_49a,mode){ +var _49b=$.data(_49a,"textbox"); +var opts=_49b.options; +opts.readonly=mode==undefined?true:mode; +_49b.textbox.removeClass("textbox-readonly").addClass(opts.readonly?"textbox-readonly":""); +var _49c=_49b.textbox.find(".textbox-text"); +_49c.removeAttr("readonly"); +if(opts.readonly||!opts.editable){ +_49c.attr("readonly","readonly"); +} +}; +$.fn.textbox=function(_49d,_49e){ +if(typeof _49d=="string"){ +var _49f=$.fn.textbox.methods[_49d]; +if(_49f){ +return _49f(this,_49e); +}else{ +return this.each(function(){ +var _4a0=$(this).textbox("textbox"); +_4a0.validatebox(_49d,_49e); +}); +} +} +_49d=_49d||{}; +return this.each(function(){ +var _4a1=$.data(this,"textbox"); +if(_4a1){ +$.extend(_4a1.options,_49d); +if(_49d.value!=undefined){ +_4a1.options.originalValue=_49d.value; +} +}else{ +_4a1=$.data(this,"textbox",{options:$.extend({},$.fn.textbox.defaults,$.fn.textbox.parseOptions(this),_49d),textbox:init(this)}); +_4a1.options.originalValue=_4a1.options.value; +} +_477(this); +_48e(this); +_47e(this); +_48a(this); +$(this).textbox("initValue",_4a1.options.value); +}); +}; +$.fn.textbox.methods={options:function(jq){ +return $.data(jq[0],"textbox").options; +},cloneFrom:function(jq,from){ +return jq.each(function(){ +var t=$(this); +if(t.data("textbox")){ +return; +} +if(!$(from).data("textbox")){ +$(from).textbox(); +} +var name=t.attr("name")||""; +t.addClass("textbox-f").hide(); +t.removeAttr("name").attr("textboxName",name); +var span=$(from).next().clone().insertAfter(t); +span.find("input.textbox-value").attr("name",name); +$.data(this,"textbox",{options:$.extend(true,{},$(from).textbox("options")),textbox:span}); +var _4a2=$(from).textbox("button"); +if(_4a2.length){ +t.textbox("button").linkbutton($.extend(true,{},_4a2.linkbutton("options"))); +} +_48e(this); +_48a(this); +}); +},textbox:function(jq){ +return $.data(jq[0],"textbox").textbox.find(".textbox-text"); +},button:function(jq){ +return $.data(jq[0],"textbox").textbox.find(".textbox-button"); +},destroy:function(jq){ +return jq.each(function(){ +_47c(this); +}); +},resize:function(jq,_4a3){ +return jq.each(function(){ +_47e(this,_4a3); +}); +},disable:function(jq){ +return jq.each(function(){ +_47a(this,true); +_48e(this); +}); +},enable:function(jq){ +return jq.each(function(){ +_47a(this,false); +_48e(this); +}); +},readonly:function(jq,mode){ +return jq.each(function(){ +_47b(this,mode); +_48e(this); +}); +},isValid:function(jq){ +return jq.textbox("textbox").validatebox("isValid"); +},clear:function(jq){ +return jq.each(function(){ +$(this).textbox("setValue",""); +}); +},setText:function(jq,_4a4){ +return jq.each(function(){ +var opts=$(this).textbox("options"); +var _4a5=$(this).textbox("textbox"); +if($(this).textbox("getText")!=_4a4){ +opts.value=_4a4; +_4a5.val(_4a4); +} +if(!_4a5.is(":focus")){ +if(_4a4){ +_4a5.removeClass("textbox-prompt"); +}else{ +_4a5.val(opts.prompt).addClass("textbox-prompt"); +} +} +$(this).textbox("validate"); +}); +},initValue:function(jq,_4a6){ +return jq.each(function(){ +var _4a7=$.data(this,"textbox"); +_4a7.options.value=""; +$(this).textbox("setText",_4a6); +_4a7.textbox.find(".textbox-value").val(_4a6); +$(this).val(_4a6); +}); +},setValue:function(jq,_4a8){ +return jq.each(function(){ +var opts=$.data(this,"textbox").options; +var _4a9=$(this).textbox("getValue"); +$(this).textbox("initValue",_4a8); +if(_4a9!=_4a8){ +opts.onChange.call(this,_4a8,_4a9); +$(this).closest("form").trigger("_change",[this]); +} +}); +},getText:function(jq){ +var _4aa=jq.textbox("textbox"); +if(_4aa.is(":focus")){ +return _4aa.val(); +}else{ +return jq.textbox("options").value; +} +},getValue:function(jq){ +return jq.data("textbox").textbox.find(".textbox-value").val(); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).textbox("options"); +$(this).textbox("setValue",opts.originalValue); +}); +},getIcon:function(jq,_4ab){ +return jq.data("textbox").textbox.find(".textbox-icon:eq("+_4ab+")"); +},getTipX:function(jq){ +var _4ac=jq.data("textbox"); +var opts=_4ac.options; +var tb=_4ac.textbox; +var _4ad=tb.find(".textbox-text"); +var _4ae=tb.find(".textbox-addon")._outerWidth(); +var _4af=tb.find(".textbox-button")._outerWidth(); +if(opts.tipPosition=="right"){ +return (opts.iconAlign=="right"?_4ae:0)+(opts.buttonAlign=="right"?_4af:0)+1; +}else{ +if(opts.tipPosition=="left"){ +return (opts.iconAlign=="left"?-_4ae:0)+(opts.buttonAlign=="left"?-_4af:0)-1; +}else{ +return _4ae/2*(opts.iconAlign=="right"?1:-1); +} +} +}}; +$.fn.textbox.parseOptions=function(_4b0){ +var t=$(_4b0); +return $.extend({},$.fn.validatebox.parseOptions(_4b0),$.parser.parseOptions(_4b0,["prompt","iconCls","iconAlign","buttonText","buttonIcon","buttonAlign",{multiline:"boolean",editable:"boolean",iconWidth:"number"}]),{value:(t.val()||undefined),type:(t.attr("type")?t.attr("type"):undefined),disabled:(t.attr("disabled")?true:undefined),readonly:(t.attr("readonly")?true:undefined)}); +}; +$.fn.textbox.defaults=$.extend({},$.fn.validatebox.defaults,{width:"auto",height:22,prompt:"",value:"",type:"text",multiline:false,editable:true,disabled:false,readonly:false,icons:[],iconCls:null,iconAlign:"right",iconWidth:18,buttonText:"",buttonIcon:null,buttonAlign:"right",inputEvents:{blur:function(e){ +var t=$(e.data.target); +var opts=t.textbox("options"); +t.textbox("setValue",opts.value); +},keydown:function(e){ +if(e.keyCode==13){ +var t=$(e.data.target); +t.textbox("setValue",t.textbox("getText")); +} +}},onChange:function(_4b1,_4b2){ +},onResize:function(_4b3,_4b4){ +},onClickButton:function(){ +},onClickIcon:function(_4b5){ +}}); +})(jQuery); +(function($){ +var _4b6=0; +function _4b7(_4b8){ +var _4b9=$.data(_4b8,"filebox"); +var opts=_4b9.options; +var id="filebox_file_id_"+(++_4b6); +$(_4b8).addClass("filebox-f").textbox(opts); +$(_4b8).textbox("textbox").attr("readonly","readonly"); +_4b9.filebox=$(_4b8).next().addClass("filebox"); +_4b9.filebox.find(".textbox-value").remove(); +opts.oldValue=""; +var file=$("").appendTo(_4b9.filebox); +file.attr("id",id).attr("name",$(_4b8).attr("textboxName")||""); +file.change(function(){ +$(_4b8).filebox("setText",this.value); +opts.onChange.call(_4b8,this.value,opts.oldValue); +opts.oldValue=this.value; +}); +var btn=$(_4b8).filebox("button"); +if(btn.length){ +$("").appendTo(btn); +if(btn.linkbutton("options").disabled){ +file.attr("disabled","disabled"); +}else{ +file.removeAttr("disabled"); +} +} +}; +$.fn.filebox=function(_4ba,_4bb){ +if(typeof _4ba=="string"){ +var _4bc=$.fn.filebox.methods[_4ba]; +if(_4bc){ +return _4bc(this,_4bb); +}else{ +return this.textbox(_4ba,_4bb); +} +} +_4ba=_4ba||{}; +return this.each(function(){ +var _4bd=$.data(this,"filebox"); +if(_4bd){ +$.extend(_4bd.options,_4ba); +}else{ +$.data(this,"filebox",{options:$.extend({},$.fn.filebox.defaults,$.fn.filebox.parseOptions(this),_4ba)}); +} +_4b7(this); +}); +}; +$.fn.filebox.methods={options:function(jq){ +var opts=jq.textbox("options"); +return $.extend($.data(jq[0],"filebox").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +}}; +$.fn.filebox.parseOptions=function(_4be){ +return $.extend({},$.fn.textbox.parseOptions(_4be),{}); +}; +$.fn.filebox.defaults=$.extend({},$.fn.textbox.defaults,{buttonIcon:null,buttonText:"Choose File",buttonAlign:"right",inputEvents:{}}); +})(jQuery); +(function($){ +function _4bf(_4c0){ +var _4c1=$.data(_4c0,"searchbox"); +var opts=_4c1.options; +var _4c2=$.extend(true,[],opts.icons); +_4c2.push({iconCls:"searchbox-button",handler:function(e){ +var t=$(e.data.target); +var opts=t.searchbox("options"); +opts.searcher.call(e.data.target,t.searchbox("getValue"),t.searchbox("getName")); +}}); +_4c3(); +var _4c4=_4c5(); +$(_4c0).addClass("searchbox-f").textbox($.extend({},opts,{icons:_4c2,buttonText:(_4c4?_4c4.text:"")})); +$(_4c0).attr("searchboxName",$(_4c0).attr("textboxName")); +_4c1.searchbox=$(_4c0).next(); +_4c1.searchbox.addClass("searchbox"); +_4c6(_4c4); +function _4c3(){ +if(opts.menu){ +_4c1.menu=$(opts.menu).menu(); +var _4c7=_4c1.menu.menu("options"); +var _4c8=_4c7.onClick; +_4c7.onClick=function(item){ +_4c6(item); +_4c8.call(this,item); +}; +}else{ +if(_4c1.menu){ +_4c1.menu.menu("destroy"); +} +_4c1.menu=null; +} +}; +function _4c5(){ +if(_4c1.menu){ +var item=_4c1.menu.children("div.menu-item:first"); +_4c1.menu.children("div.menu-item").each(function(){ +var _4c9=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +if(_4c9.selected){ +item=$(this); +return false; +} +}); +return _4c1.menu.menu("getItem",item[0]); +}else{ +return null; +} +}; +function _4c6(item){ +if(!item){ +return; +} +$(_4c0).textbox("button").menubutton({text:item.text,iconCls:(item.iconCls||null),menu:_4c1.menu,menuAlign:opts.buttonAlign,plain:false}); +_4c1.searchbox.find("input.textbox-value").attr("name",item.name||item.text); +$(_4c0).searchbox("resize"); +}; +}; +$.fn.searchbox=function(_4ca,_4cb){ +if(typeof _4ca=="string"){ +var _4cc=$.fn.searchbox.methods[_4ca]; +if(_4cc){ +return _4cc(this,_4cb); +}else{ +return this.textbox(_4ca,_4cb); +} +} +_4ca=_4ca||{}; +return this.each(function(){ +var _4cd=$.data(this,"searchbox"); +if(_4cd){ +$.extend(_4cd.options,_4ca); +}else{ +$.data(this,"searchbox",{options:$.extend({},$.fn.searchbox.defaults,$.fn.searchbox.parseOptions(this),_4ca)}); +} +_4bf(this); +}); +}; +$.fn.searchbox.methods={options:function(jq){ +var opts=jq.textbox("options"); +return $.extend($.data(jq[0],"searchbox").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +},menu:function(jq){ +return $.data(jq[0],"searchbox").menu; +},getName:function(jq){ +return $.data(jq[0],"searchbox").searchbox.find("input.textbox-value").attr("name"); +},selectName:function(jq,name){ +return jq.each(function(){ +var menu=$.data(this,"searchbox").menu; +if(menu){ +menu.children("div.menu-item").each(function(){ +var item=menu.menu("getItem",this); +if(item.name==name){ +$(this).triggerHandler("click"); +return false; +} +}); +} +}); +},destroy:function(jq){ +return jq.each(function(){ +var menu=$(this).searchbox("menu"); +if(menu){ +menu.menu("destroy"); +} +$(this).textbox("destroy"); +}); +}}; +$.fn.searchbox.parseOptions=function(_4ce){ +var t=$(_4ce); +return $.extend({},$.fn.textbox.parseOptions(_4ce),$.parser.parseOptions(_4ce,["menu"]),{searcher:(t.attr("searcher")?eval(t.attr("searcher")):undefined)}); +}; +$.fn.searchbox.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:$.extend({},$.fn.textbox.defaults.inputEvents,{keydown:function(e){ +if(e.keyCode==13){ +e.preventDefault(); +var t=$(e.data.target); +var opts=t.searchbox("options"); +t.searchbox("setValue",$(this).val()); +opts.searcher.call(e.data.target,t.searchbox("getValue"),t.searchbox("getName")); +return false; +} +}}),buttonAlign:"left",menu:null,searcher:function(_4cf,name){ +}}); +})(jQuery); +(function($){ +function _4d0(_4d1,_4d2){ +var opts=$.data(_4d1,"form").options; +$.extend(opts,_4d2||{}); +var _4d3=$.extend({},opts.queryParams); +if(opts.onSubmit.call(_4d1,_4d3)==false){ +return; +} +$(_4d1).find(".textbox-text:focus").blur(); +var _4d4="easyui_frame_"+(new Date().getTime()); +var _4d5=$("").appendTo("body"); +_4d5.attr("src",window.ActiveXObject?"javascript:false":"about:blank"); +_4d5.css({position:"absolute",top:-1000,left:-1000}); +_4d5.bind("load",cb); +_4d6(_4d3); +function _4d6(_4d7){ +var form=$(_4d1); +if(opts.url){ +form.attr("action",opts.url); +} +var t=form.attr("target"),a=form.attr("action"); +form.attr("target",_4d4); +var _4d8=$(); +try{ +for(var n in _4d7){ +var _4d9=$("").val(_4d7[n]).appendTo(form); +_4d8=_4d8.add(_4d9); +} +_4da(); +form[0].submit(); +} +finally{ +form.attr("action",a); +t?form.attr("target",t):form.removeAttr("target"); +_4d8.remove(); +} +}; +function _4da(){ +var f=$("#"+_4d4); +if(!f.length){ +return; +} +try{ +var s=f.contents()[0].readyState; +if(s&&s.toLowerCase()=="uninitialized"){ +setTimeout(_4da,100); +} +} +catch(e){ +cb(); +} +}; +var _4db=10; +function cb(){ +var f=$("#"+_4d4); +if(!f.length){ +return; +} +f.unbind(); +var data=""; +try{ +var body=f.contents().find("body"); +data=body.html(); +if(data==""){ +if(--_4db){ +setTimeout(cb,100); +return; +} +} +var ta=body.find(">textarea"); +if(ta.length){ +data=ta.val(); +}else{ +var pre=body.find(">pre"); +if(pre.length){ +data=pre.html(); +} +} +} +catch(e){ +} +opts.success(data); +setTimeout(function(){ +f.unbind(); +f.remove(); +},100); +}; +}; +function load(_4dc,data){ +var opts=$.data(_4dc,"form").options; +if(typeof data=="string"){ +var _4dd={}; +if(opts.onBeforeLoad.call(_4dc,_4dd)==false){ +return; +} +$.ajax({url:data,data:_4dd,dataType:"json",success:function(data){ +_4de(data); +},error:function(){ +opts.onLoadError.apply(_4dc,arguments); +}}); +}else{ +_4de(data); +} +function _4de(data){ +var form=$(_4dc); +for(var name in data){ +var val=data[name]; +if(!_4df(name,val)){ +if(!_4e0(name,val)){ +form.find("input[name=\""+name+"\"]").val(val); +form.find("textarea[name=\""+name+"\"]").val(val); +form.find("select[name=\""+name+"\"]").val(val); +} +} +} +opts.onLoadSuccess.call(_4dc,data); +form.form("validate"); +}; +function _4df(name,val){ +var cc=$(_4dc).find("input[name=\""+name+"\"][type=radio], input[name=\""+name+"\"][type=checkbox]"); +if(cc.length){ +cc._propAttr("checked",false); +cc.each(function(){ +var f=$(this); +if(f.val()==String(val)||$.inArray(f.val(),$.isArray(val)?val:[val])>=0){ +f._propAttr("checked",true); +} +}); +return true; +} +return false; +}; +function _4e0(name,val){ +var _4e1=$(_4dc).find("[textboxName=\""+name+"\"],[sliderName=\""+name+"\"]"); +if(_4e1.length){ +for(var i=0;i=0;i--){ +var type=opts.fieldTypes[i]; +var _4e6=form.find("."+type+"-f"); +if(_4e6.length&&_4e6[type]){ +_4e6[type]("clear"); +} +} +form.form("validate"); +}; +function _4e7(_4e8){ +_4e8.reset(); +var form=$(_4e8); +var opts=$.data(_4e8,"form").options; +for(var i=opts.fieldTypes.length-1;i>=0;i--){ +var type=opts.fieldTypes[i]; +var _4e9=form.find("."+type+"-f"); +if(_4e9.length&&_4e9[type]){ +_4e9[type]("reset"); +} +} +form.form("validate"); +}; +function _4ea(_4eb){ +var _4ec=$.data(_4eb,"form").options; +$(_4eb).unbind(".form"); +if(_4ec.ajax){ +$(_4eb).bind("submit.form",function(){ +setTimeout(function(){ +_4d0(_4eb,_4ec); +},0); +return false; +}); +} +$(_4eb).bind("_change.form",function(e,t){ +_4ec.onChange.call(this,t); +}).bind("change.form",function(e){ +var t=e.target; +if(!$(t).hasClass("textbox-text")){ +_4ec.onChange.call(this,t); +} +}); +_4ed(_4eb,_4ec.novalidate); +}; +function _4ee(_4ef,_4f0){ +_4f0=_4f0||{}; +var _4f1=$.data(_4ef,"form"); +if(_4f1){ +$.extend(_4f1.options,_4f0); +}else{ +$.data(_4ef,"form",{options:$.extend({},$.fn.form.defaults,$.fn.form.parseOptions(_4ef),_4f0)}); +} +}; +function _4f2(_4f3){ +if($.fn.validatebox){ +var t=$(_4f3); +t.find(".validatebox-text:not(:disabled)").validatebox("validate"); +var _4f4=t.find(".validatebox-invalid"); +_4f4.filter(":not(:disabled):first").focus(); +return _4f4.length==0; +} +return true; +}; +function _4ed(_4f5,_4f6){ +var opts=$.data(_4f5,"form").options; +opts.novalidate=_4f6; +$(_4f5).find(".validatebox-text:not(:disabled)").validatebox(_4f6?"disableValidation":"enableValidation"); +}; +$.fn.form=function(_4f7,_4f8){ +if(typeof _4f7=="string"){ +this.each(function(){ +_4ee(this); +}); +return $.fn.form.methods[_4f7](this,_4f8); +} +return this.each(function(){ +_4ee(this,_4f7); +_4ea(this); +}); +}; +$.fn.form.methods={options:function(jq){ +return $.data(jq[0],"form").options; +},submit:function(jq,_4f9){ +return jq.each(function(){ +_4d0(this,_4f9); +}); +},load:function(jq,data){ +return jq.each(function(){ +load(this,data); +}); +},clear:function(jq){ +return jq.each(function(){ +_4e3(this); +}); +},reset:function(jq){ +return jq.each(function(){ +_4e7(this); +}); +},validate:function(jq){ +return _4f2(jq[0]); +},disableValidation:function(jq){ +return jq.each(function(){ +_4ed(this,true); +}); +},enableValidation:function(jq){ +return jq.each(function(){ +_4ed(this,false); +}); +}}; +$.fn.form.parseOptions=function(_4fa){ +var t=$(_4fa); +return $.extend({},$.parser.parseOptions(_4fa,[{ajax:"boolean"}]),{url:(t.attr("action")?t.attr("action"):undefined)}); +}; +$.fn.form.defaults={fieldTypes:["combobox","combotree","combogrid","datetimebox","datebox","combo","datetimespinner","timespinner","numberspinner","spinner","slider","searchbox","numberbox","textbox"],novalidate:false,ajax:true,url:null,queryParams:{},onSubmit:function(_4fb){ +return $(this).form("validate"); +},success:function(data){ +},onBeforeLoad:function(_4fc){ +},onLoadSuccess:function(data){ +},onLoadError:function(){ +},onChange:function(_4fd){ +}}; +})(jQuery); +(function($){ +function _4fe(_4ff){ +var _500=$.data(_4ff,"numberbox"); +var opts=_500.options; +$(_4ff).addClass("numberbox-f").textbox(opts); +$(_4ff).textbox("textbox").css({imeMode:"disabled"}); +$(_4ff).attr("numberboxName",$(_4ff).attr("textboxName")); +_500.numberbox=$(_4ff).next(); +_500.numberbox.addClass("numberbox"); +var _501=opts.parser.call(_4ff,opts.value); +var _502=opts.formatter.call(_4ff,_501); +$(_4ff).numberbox("initValue",_501).numberbox("setText",_502); +}; +function _503(_504,_505){ +var _506=$.data(_504,"numberbox"); +var opts=_506.options; +var _505=opts.parser.call(_504,_505); +var text=opts.formatter.call(_504,_505); +opts.value=_505; +$(_504).textbox("setText",text).textbox("setValue",_505); +text=opts.formatter.call(_504,$(_504).textbox("getValue")); +$(_504).textbox("setText",text); +}; +$.fn.numberbox=function(_507,_508){ +if(typeof _507=="string"){ +var _509=$.fn.numberbox.methods[_507]; +if(_509){ +return _509(this,_508); +}else{ +return this.textbox(_507,_508); +} +} +_507=_507||{}; +return this.each(function(){ +var _50a=$.data(this,"numberbox"); +if(_50a){ +$.extend(_50a.options,_507); +}else{ +_50a=$.data(this,"numberbox",{options:$.extend({},$.fn.numberbox.defaults,$.fn.numberbox.parseOptions(this),_507)}); +} +_4fe(this); +}); +}; +$.fn.numberbox.methods={options:function(jq){ +var opts=jq.data("textbox")?jq.textbox("options"):{}; +return $.extend($.data(jq[0],"numberbox").options,{width:opts.width,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +},fix:function(jq){ +return jq.each(function(){ +$(this).numberbox("setValue",$(this).numberbox("getText")); +}); +},setValue:function(jq,_50b){ +return jq.each(function(){ +_503(this,_50b); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).textbox("clear"); +$(this).numberbox("options").value=""; +}); +},reset:function(jq){ +return jq.each(function(){ +$(this).textbox("reset"); +$(this).numberbox("setValue",$(this).numberbox("getValue")); +}); +}}; +$.fn.numberbox.parseOptions=function(_50c){ +var t=$(_50c); +return $.extend({},$.fn.textbox.parseOptions(_50c),$.parser.parseOptions(_50c,["decimalSeparator","groupSeparator","suffix",{min:"number",max:"number",precision:"number"}]),{prefix:(t.attr("prefix")?t.attr("prefix"):undefined)}); +}; +$.fn.numberbox.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:{keypress:function(e){ +var _50d=e.data.target; +var opts=$(_50d).numberbox("options"); +return opts.filter.call(_50d,e); +},blur:function(e){ +var _50e=e.data.target; +$(_50e).numberbox("setValue",$(_50e).numberbox("getText")); +},keydown:function(e){ +if(e.keyCode==13){ +var _50f=e.data.target; +$(_50f).numberbox("setValue",$(_50f).numberbox("getText")); +} +}},min:null,max:null,precision:0,decimalSeparator:".",groupSeparator:"",prefix:"",suffix:"",filter:function(e){ +var opts=$(this).numberbox("options"); +var s=$(this).numberbox("getText"); +if(e.which==13){ +return true; +} +if(e.which==45){ +return (s.indexOf("-")==-1?true:false); +} +var c=String.fromCharCode(e.which); +if(c==opts.decimalSeparator){ +return (s.indexOf(c)==-1?true:false); +}else{ +if(c==opts.groupSeparator){ +return true; +}else{ +if((e.which>=48&&e.which<=57&&e.ctrlKey==false&&e.shiftKey==false)||e.which==0||e.which==8){ +return true; +}else{ +if(e.ctrlKey==true&&(e.which==99||e.which==118)){ +return true; +}else{ +return false; +} +} +} +} +},formatter:function(_510){ +if(!_510){ +return _510; +} +_510=_510+""; +var opts=$(this).numberbox("options"); +var s1=_510,s2=""; +var dpos=_510.indexOf("."); +if(dpos>=0){ +s1=_510.substring(0,dpos); +s2=_510.substring(dpos+1,_510.length); +} +if(opts.groupSeparator){ +var p=/(\d+)(\d{3})/; +while(p.test(s1)){ +s1=s1.replace(p,"$1"+opts.groupSeparator+"$2"); +} +} +if(s2){ +return opts.prefix+s1+opts.decimalSeparator+s2+opts.suffix; +}else{ +return opts.prefix+s1+opts.suffix; +} +},parser:function(s){ +s=s+""; +var opts=$(this).numberbox("options"); +if(parseFloat(s)!=s){ +if(opts.prefix){ +s=$.trim(s.replace(new RegExp("\\"+$.trim(opts.prefix),"g"),"")); +} +if(opts.suffix){ +s=$.trim(s.replace(new RegExp("\\"+$.trim(opts.suffix),"g"),"")); +} +if(opts.groupSeparator){ +s=$.trim(s.replace(new RegExp("\\"+opts.groupSeparator,"g"),"")); +} +if(opts.decimalSeparator){ +s=$.trim(s.replace(new RegExp("\\"+opts.decimalSeparator,"g"),".")); +} +s=s.replace(/\s/g,""); +} +var val=parseFloat(s).toFixed(opts.precision); +if(isNaN(val)){ +val=""; +}else{ +if(typeof (opts.min)=="number"&&valopts.max){ +val=opts.max.toFixed(opts.precision); +} +} +} +return val; +}}); +})(jQuery); +(function($){ +function _511(_512,_513){ +var opts=$.data(_512,"calendar").options; +var t=$(_512); +if(_513){ +$.extend(opts,{width:_513.width,height:_513.height}); +} +t._size(opts,t.parent()); +t.find(".calendar-body")._outerHeight(t.height()-t.find(".calendar-header")._outerHeight()); +if(t.find(".calendar-menu").is(":visible")){ +_514(_512); +} +}; +function init(_515){ +$(_515).addClass("calendar").html("
        "+"
        "+"
        "+"
        "+"
        "+"
        "+""+"
        "+"
        "+"
        "+"
        "+"
        "+""+""+""+"
        "+"
        "+"
        "+"
        "+"
        "); +$(_515).bind("_resize",function(e,_516){ +if($(this).hasClass("easyui-fluid")||_516){ +_511(_515); +} +return false; +}); +}; +function _517(_518){ +var opts=$.data(_518,"calendar").options; +var menu=$(_518).find(".calendar-menu"); +menu.find(".calendar-menu-year").unbind(".calendar").bind("keypress.calendar",function(e){ +if(e.keyCode==13){ +_519(true); +} +}); +$(_518).unbind(".calendar").bind("mouseover.calendar",function(e){ +var t=_51a(e.target); +if(t.hasClass("calendar-nav")||t.hasClass("calendar-text")||(t.hasClass("calendar-day")&&!t.hasClass("calendar-disabled"))){ +t.addClass("calendar-nav-hover"); +} +}).bind("mouseout.calendar",function(e){ +var t=_51a(e.target); +if(t.hasClass("calendar-nav")||t.hasClass("calendar-text")||(t.hasClass("calendar-day")&&!t.hasClass("calendar-disabled"))){ +t.removeClass("calendar-nav-hover"); +} +}).bind("click.calendar",function(e){ +var t=_51a(e.target); +if(t.hasClass("calendar-menu-next")||t.hasClass("calendar-nextyear")){ +_51b(1); +}else{ +if(t.hasClass("calendar-menu-prev")||t.hasClass("calendar-prevyear")){ +_51b(-1); +}else{ +if(t.hasClass("calendar-menu-month")){ +menu.find(".calendar-selected").removeClass("calendar-selected"); +t.addClass("calendar-selected"); +_519(true); +}else{ +if(t.hasClass("calendar-prevmonth")){ +_51c(-1); +}else{ +if(t.hasClass("calendar-nextmonth")){ +_51c(1); +}else{ +if(t.hasClass("calendar-text")){ +if(menu.is(":visible")){ +menu.hide(); +}else{ +_514(_518); +} +}else{ +if(t.hasClass("calendar-day")){ +if(t.hasClass("calendar-disabled")){ +return; +} +var _51d=opts.current; +t.closest("div.calendar-body").find(".calendar-selected").removeClass("calendar-selected"); +t.addClass("calendar-selected"); +var _51e=t.attr("abbr").split(","); +var y=parseInt(_51e[0]); +var m=parseInt(_51e[1]); +var d=parseInt(_51e[2]); +opts.current=new Date(y,m-1,d); +opts.onSelect.call(_518,opts.current); +if(!_51d||_51d.getTime()!=opts.current.getTime()){ +opts.onChange.call(_518,opts.current,_51d); +} +if(opts.year!=y||opts.month!=m){ +opts.year=y; +opts.month=m; +show(_518); +} +} +} +} +} +} +} +} +}); +function _51a(t){ +var day=$(t).closest(".calendar-day"); +if(day.length){ +return day; +}else{ +return $(t); +} +}; +function _519(_51f){ +var menu=$(_518).find(".calendar-menu"); +var year=menu.find(".calendar-menu-year").val(); +var _520=menu.find(".calendar-selected").attr("abbr"); +if(!isNaN(year)){ +opts.year=parseInt(year); +opts.month=parseInt(_520); +show(_518); +} +if(_51f){ +menu.hide(); +} +}; +function _51b(_521){ +opts.year+=_521; +show(_518); +menu.find(".calendar-menu-year").val(opts.year); +}; +function _51c(_522){ +opts.month+=_522; +if(opts.month>12){ +opts.year++; +opts.month=1; +}else{ +if(opts.month<1){ +opts.year--; +opts.month=12; +} +} +show(_518); +menu.find("td.calendar-selected").removeClass("calendar-selected"); +menu.find("td:eq("+(opts.month-1)+")").addClass("calendar-selected"); +}; +}; +function _514(_523){ +var opts=$.data(_523,"calendar").options; +$(_523).find(".calendar-menu").show(); +if($(_523).find(".calendar-menu-month-inner").is(":empty")){ +$(_523).find(".calendar-menu-month-inner").empty(); +var t=$("
        ").appendTo($(_523).find(".calendar-menu-month-inner")); +var idx=0; +for(var i=0;i<3;i++){ +var tr=$("").appendTo(t); +for(var j=0;j<4;j++){ +$("").html(opts.months[idx++]).attr("abbr",idx).appendTo(tr); +} +} +} +var body=$(_523).find(".calendar-body"); +var sele=$(_523).find(".calendar-menu"); +var _524=sele.find(".calendar-menu-year-inner"); +var _525=sele.find(".calendar-menu-month-inner"); +_524.find("input").val(opts.year).focus(); +_525.find("td.calendar-selected").removeClass("calendar-selected"); +_525.find("td:eq("+(opts.month-1)+")").addClass("calendar-selected"); +sele._outerWidth(body._outerWidth()); +sele._outerHeight(body._outerHeight()); +_525._outerHeight(sele.height()-_524._outerHeight()); +}; +function _526(_527,year,_528){ +var opts=$.data(_527,"calendar").options; +var _529=[]; +var _52a=new Date(year,_528,0).getDate(); +for(var i=1;i<=_52a;i++){ +_529.push([year,_528,i]); +} +var _52b=[],week=[]; +var _52c=-1; +while(_529.length>0){ +var date=_529.shift(); +week.push(date); +var day=new Date(date[0],date[1]-1,date[2]).getDay(); +if(_52c==day){ +day=0; +}else{ +if(day==(opts.firstDay==0?7:opts.firstDay)-1){ +_52b.push(week); +week=[]; +} +} +_52c=day; +} +if(week.length){ +_52b.push(week); +} +var _52d=_52b[0]; +if(_52d.length<7){ +while(_52d.length<7){ +var _52e=_52d[0]; +var date=new Date(_52e[0],_52e[1]-1,_52e[2]-1); +_52d.unshift([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +}else{ +var _52e=_52d[0]; +var week=[]; +for(var i=1;i<=7;i++){ +var date=new Date(_52e[0],_52e[1]-1,_52e[2]-i); +week.unshift([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +_52b.unshift(week); +} +var _52f=_52b[_52b.length-1]; +while(_52f.length<7){ +var _530=_52f[_52f.length-1]; +var date=new Date(_530[0],_530[1]-1,_530[2]+1); +_52f.push([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +if(_52b.length<6){ +var _530=_52f[_52f.length-1]; +var week=[]; +for(var i=1;i<=7;i++){ +var date=new Date(_530[0],_530[1]-1,_530[2]+i); +week.push([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +_52b.push(week); +} +return _52b; +}; +function show(_531){ +var opts=$.data(_531,"calendar").options; +if(opts.current&&!opts.validator.call(_531,opts.current)){ +opts.current=null; +} +var now=new Date(); +var _532=now.getFullYear()+","+(now.getMonth()+1)+","+now.getDate(); +var _533=opts.current?(opts.current.getFullYear()+","+(opts.current.getMonth()+1)+","+opts.current.getDate()):""; +var _534=6-opts.firstDay; +var _535=_534+1; +if(_534>=7){ +_534-=7; +} +if(_535>=7){ +_535-=7; +} +$(_531).find(".calendar-title span").html(opts.months[opts.month-1]+" "+opts.year); +var body=$(_531).find("div.calendar-body"); +body.children("table").remove(); +var data=[""]; +data.push(""); +for(var i=opts.firstDay;i"+opts.weeks[i]+""); +} +for(var i=0;i"+opts.weeks[i]+""); +} +data.push(""); +data.push(""); +var _536=_526(_531,opts.year,opts.month); +for(var i=0;i<_536.length;i++){ +var week=_536[i]; +var cls=""; +if(i==0){ +cls="calendar-first"; +}else{ +if(i==_536.length-1){ +cls="calendar-last"; +} +} +data.push(""); +for(var j=0;j"+d+""); +} +data.push(""); +} +data.push(""); +data.push("
        "); +body.append(data.join("")); +body.children("table.calendar-dtable").prependTo(body); +opts.onNavigate.call(_531,opts.year,opts.month); +}; +$.fn.calendar=function(_53a,_53b){ +if(typeof _53a=="string"){ +return $.fn.calendar.methods[_53a](this,_53b); +} +_53a=_53a||{}; +return this.each(function(){ +var _53c=$.data(this,"calendar"); +if(_53c){ +$.extend(_53c.options,_53a); +}else{ +_53c=$.data(this,"calendar",{options:$.extend({},$.fn.calendar.defaults,$.fn.calendar.parseOptions(this),_53a)}); +init(this); +} +if(_53c.options.border==false){ +$(this).addClass("calendar-noborder"); +} +_511(this); +_517(this); +show(this); +$(this).find("div.calendar-menu").hide(); +}); +}; +$.fn.calendar.methods={options:function(jq){ +return $.data(jq[0],"calendar").options; +},resize:function(jq,_53d){ +return jq.each(function(){ +_511(this,_53d); +}); +},moveTo:function(jq,date){ +return jq.each(function(){ +if(!date){ +var now=new Date(); +$(this).calendar({year:now.getFullYear(),month:now.getMonth()+1,current:date}); +return; +} +var opts=$(this).calendar("options"); +if(opts.validator.call(this,date)){ +var _53e=opts.current; +$(this).calendar({year:date.getFullYear(),month:date.getMonth()+1,current:date}); +if(!_53e||_53e.getTime()!=date.getTime()){ +opts.onChange.call(this,opts.current,_53e); +} +} +}); +}}; +$.fn.calendar.parseOptions=function(_53f){ +var t=$(_53f); +return $.extend({},$.parser.parseOptions(_53f,[{firstDay:"number",fit:"boolean",border:"boolean"}])); +}; +$.fn.calendar.defaults={width:180,height:180,fit:false,border:true,firstDay:0,weeks:["S","M","T","W","T","F","S"],months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],year:new Date().getFullYear(),month:new Date().getMonth()+1,current:(function(){ +var d=new Date(); +return new Date(d.getFullYear(),d.getMonth(),d.getDate()); +})(),formatter:function(date){ +return date.getDate(); +},styler:function(date){ +return ""; +},validator:function(date){ +return true; +},onSelect:function(date){ +},onChange:function(_540,_541){ +},onNavigate:function(year,_542){ +}}; +})(jQuery); +(function($){ +function _543(_544){ +var _545=$.data(_544,"spinner"); +var opts=_545.options; +var _546=$.extend(true,[],opts.icons); +_546.push({iconCls:"spinner-arrow",handler:function(e){ +_547(e); +}}); +$(_544).addClass("spinner-f").textbox($.extend({},opts,{icons:_546})); +var _548=$(_544).textbox("getIcon",_546.length-1); +_548.append(""); +_548.append(""); +$(_544).attr("spinnerName",$(_544).attr("textboxName")); +_545.spinner=$(_544).next(); +_545.spinner.addClass("spinner"); +}; +function _547(e){ +var _549=e.data.target; +var opts=$(_549).spinner("options"); +var up=$(e.target).closest("a.spinner-arrow-up"); +if(up.length){ +opts.spin.call(_549,false); +opts.onSpinUp.call(_549); +$(_549).spinner("validate"); +} +var down=$(e.target).closest("a.spinner-arrow-down"); +if(down.length){ +opts.spin.call(_549,true); +opts.onSpinDown.call(_549); +$(_549).spinner("validate"); +} +}; +$.fn.spinner=function(_54a,_54b){ +if(typeof _54a=="string"){ +var _54c=$.fn.spinner.methods[_54a]; +if(_54c){ +return _54c(this,_54b); +}else{ +return this.textbox(_54a,_54b); +} +} +_54a=_54a||{}; +return this.each(function(){ +var _54d=$.data(this,"spinner"); +if(_54d){ +$.extend(_54d.options,_54a); +}else{ +_54d=$.data(this,"spinner",{options:$.extend({},$.fn.spinner.defaults,$.fn.spinner.parseOptions(this),_54a)}); +} +_543(this); +}); +}; +$.fn.spinner.methods={options:function(jq){ +var opts=jq.textbox("options"); +return $.extend($.data(jq[0],"spinner").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +}}; +$.fn.spinner.parseOptions=function(_54e){ +return $.extend({},$.fn.textbox.parseOptions(_54e),$.parser.parseOptions(_54e,["min","max",{increment:"number"}])); +}; +$.fn.spinner.defaults=$.extend({},$.fn.textbox.defaults,{min:null,max:null,increment:1,spin:function(down){ +},onSpinUp:function(){ +},onSpinDown:function(){ +}}); +})(jQuery); +(function($){ +function _54f(_550){ +$(_550).addClass("numberspinner-f"); +var opts=$.data(_550,"numberspinner").options; +$(_550).numberbox(opts).spinner(opts); +$(_550).numberbox("setValue",opts.value); +}; +function _551(_552,down){ +var opts=$.data(_552,"numberspinner").options; +var v=parseFloat($(_552).numberbox("getValue")||opts.value)||0; +if(down){ +v-=opts.increment; +}else{ +v+=opts.increment; +} +$(_552).numberbox("setValue",v); +}; +$.fn.numberspinner=function(_553,_554){ +if(typeof _553=="string"){ +var _555=$.fn.numberspinner.methods[_553]; +if(_555){ +return _555(this,_554); +}else{ +return this.numberbox(_553,_554); +} +} +_553=_553||{}; +return this.each(function(){ +var _556=$.data(this,"numberspinner"); +if(_556){ +$.extend(_556.options,_553); +}else{ +$.data(this,"numberspinner",{options:$.extend({},$.fn.numberspinner.defaults,$.fn.numberspinner.parseOptions(this),_553)}); +} +_54f(this); +}); +}; +$.fn.numberspinner.methods={options:function(jq){ +var opts=jq.numberbox("options"); +return $.extend($.data(jq[0],"numberspinner").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +}}; +$.fn.numberspinner.parseOptions=function(_557){ +return $.extend({},$.fn.spinner.parseOptions(_557),$.fn.numberbox.parseOptions(_557),{}); +}; +$.fn.numberspinner.defaults=$.extend({},$.fn.spinner.defaults,$.fn.numberbox.defaults,{spin:function(down){ +_551(this,down); +}}); +})(jQuery); +(function($){ +function _558(_559){ +var _55a=0; +if(_559.selectionStart){ +_55a=_559.selectionStart; +}else{ +if(_559.createTextRange){ +var _55b=_559.createTextRange(); +var s=document.selection.createRange(); +s.setEndPoint("StartToStart",_55b); +_55a=s.text.length; +} +} +return _55a; +}; +function _55c(_55d,_55e,end){ +if(_55d.selectionStart){ +_55d.setSelectionRange(_55e,end); +}else{ +if(_55d.createTextRange){ +var _55f=_55d.createTextRange(); +_55f.collapse(); +_55f.moveEnd("character",end); +_55f.moveStart("character",_55e); +_55f.select(); +} +} +}; +function _560(_561){ +var opts=$.data(_561,"timespinner").options; +$(_561).addClass("timespinner-f").spinner(opts); +var _562=opts.formatter.call(_561,opts.parser.call(_561,opts.value)); +$(_561).timespinner("initValue",_562); +}; +function _563(e){ +var _564=e.data.target; +var opts=$.data(_564,"timespinner").options; +var _565=_558(this); +for(var i=0;i=_566[0]&&_565<=_566[1]){ +_567(_564,i); +return; +} +} +}; +function _567(_568,_569){ +var opts=$.data(_568,"timespinner").options; +if(_569!=undefined){ +opts.highlight=_569; +} +var _56a=opts.selections[opts.highlight]; +if(_56a){ +var tb=$(_568).timespinner("textbox"); +_55c(tb[0],_56a[0],_56a[1]); +tb.focus(); +} +}; +function _56b(_56c,_56d){ +var opts=$.data(_56c,"timespinner").options; +var _56d=opts.parser.call(_56c,_56d); +var text=opts.formatter.call(_56c,_56d); +$(_56c).spinner("setValue",text); +}; +function _56e(_56f,down){ +var opts=$.data(_56f,"timespinner").options; +var s=$(_56f).timespinner("getValue"); +var _570=opts.selections[opts.highlight]; +var s1=s.substring(0,_570[0]); +var s2=s.substring(_570[0],_570[1]); +var s3=s.substring(_570[1]); +var v=s1+((parseInt(s2)||0)+opts.increment*(down?-1:1))+s3; +$(_56f).timespinner("setValue",v); +_567(_56f); +}; +$.fn.timespinner=function(_571,_572){ +if(typeof _571=="string"){ +var _573=$.fn.timespinner.methods[_571]; +if(_573){ +return _573(this,_572); +}else{ +return this.spinner(_571,_572); +} +} +_571=_571||{}; +return this.each(function(){ +var _574=$.data(this,"timespinner"); +if(_574){ +$.extend(_574.options,_571); +}else{ +$.data(this,"timespinner",{options:$.extend({},$.fn.timespinner.defaults,$.fn.timespinner.parseOptions(this),_571)}); +} +_560(this); +}); +}; +$.fn.timespinner.methods={options:function(jq){ +var opts=jq.data("spinner")?jq.spinner("options"):{}; +return $.extend($.data(jq[0],"timespinner").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +},setValue:function(jq,_575){ +return jq.each(function(){ +_56b(this,_575); +}); +},getHours:function(jq){ +var opts=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(opts.separator); +return parseInt(vv[0],10); +},getMinutes:function(jq){ +var opts=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(opts.separator); +return parseInt(vv[1],10); +},getSeconds:function(jq){ +var opts=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(opts.separator); +return parseInt(vv[2],10)||0; +}}; +$.fn.timespinner.parseOptions=function(_576){ +return $.extend({},$.fn.spinner.parseOptions(_576),$.parser.parseOptions(_576,["separator",{showSeconds:"boolean",highlight:"number"}])); +}; +$.fn.timespinner.defaults=$.extend({},$.fn.spinner.defaults,{inputEvents:$.extend({},$.fn.spinner.defaults.inputEvents,{click:function(e){ +_563.call(this,e); +},blur:function(e){ +var t=$(e.data.target); +t.timespinner("setValue",t.timespinner("getText")); +},keydown:function(e){ +if(e.keyCode==13){ +var t=$(e.data.target); +t.timespinner("setValue",t.timespinner("getText")); +} +}}),formatter:function(date){ +if(!date){ +return ""; +} +var opts=$(this).timespinner("options"); +var tt=[_577(date.getHours()),_577(date.getMinutes())]; +if(opts.showSeconds){ +tt.push(_577(date.getSeconds())); +} +return tt.join(opts.separator); +function _577(_578){ +return (_578<10?"0":"")+_578; +}; +},parser:function(s){ +var opts=$(this).timespinner("options"); +var date=_579(s); +if(date){ +var min=_579(opts.min); +var max=_579(opts.max); +if(min&&min>date){ +date=min; +} +if(max&&max"]; +for(var i=0;i<_58f.length;i++){ +_58e.cache[_58f[i][0]]={width:_58f[i][1]}; +} +var _590=0; +for(var s in _58e.cache){ +var item=_58e.cache[s]; +item.index=_590++; +ss.push(s+"{width:"+item.width+"}"); +} +ss.push(""); +$(ss.join("\n")).appendTo(cc); +cc.children("style[easyui]:not(:last)").remove(); +},getRule:function(_591){ +var _592=cc.children("style[easyui]:last")[0]; +var _593=_592.styleSheet?_592.styleSheet:(_592.sheet||document.styleSheets[document.styleSheets.length-1]); +var _594=_593.cssRules||_593.rules; +return _594[_591]; +},set:function(_595,_596){ +var item=_58e.cache[_595]; +if(item){ +item.width=_596; +var rule=this.getRule(item.index); +if(rule){ +rule.style["width"]=_596; +} +} +},remove:function(_597){ +var tmp=[]; +for(var s in _58e.cache){ +if(s.indexOf(_597)==-1){ +tmp.push([s,_58e.cache[s].width]); +} +} +_58e.cache={}; +this.add(tmp); +},dirty:function(_598){ +if(_598){ +_58e.dirty.push(_598); +} +},clean:function(){ +for(var i=0;i<_58e.dirty.length;i++){ +this.remove(_58e.dirty[i]); +} +_58e.dirty=[]; +}}; +}; +function _599(_59a,_59b){ +var _59c=$.data(_59a,"datagrid"); +var opts=_59c.options; +var _59d=_59c.panel; +if(_59b){ +$.extend(opts,_59b); +} +if(opts.fit==true){ +var p=_59d.panel("panel").parent(); +opts.width=p.width(); +opts.height=p.height(); +} +_59d.panel("resize",opts); +}; +function _59e(_59f){ +var _5a0=$.data(_59f,"datagrid"); +var opts=_5a0.options; +var dc=_5a0.dc; +var wrap=_5a0.panel; +var _5a1=wrap.width(); +var _5a2=wrap.height(); +var view=dc.view; +var _5a3=dc.view1; +var _5a4=dc.view2; +var _5a5=_5a3.children("div.datagrid-header"); +var _5a6=_5a4.children("div.datagrid-header"); +var _5a7=_5a5.find("table"); +var _5a8=_5a6.find("table"); +view.width(_5a1); +var _5a9=_5a5.children("div.datagrid-header-inner").show(); +_5a3.width(_5a9.find("table").width()); +if(!opts.showHeader){ +_5a9.hide(); +} +_5a4.width(_5a1-_5a3._outerWidth()); +_5a3.children()._outerWidth(_5a3.width()); +_5a4.children()._outerWidth(_5a4.width()); +var all=_5a5.add(_5a6).add(_5a7).add(_5a8); +all.css("height",""); +var hh=Math.max(_5a7.height(),_5a8.height()); +all._outerHeight(hh); +dc.body1.add(dc.body2).children("table.datagrid-btable-frozen").css({position:"absolute",top:dc.header2._outerHeight()}); +var _5aa=dc.body2.children("table.datagrid-btable-frozen")._outerHeight(); +var _5ab=_5aa+_5a6._outerHeight()+_5a4.children(".datagrid-footer")._outerHeight(); +wrap.children(":not(.datagrid-view)").each(function(){ +_5ab+=$(this)._outerHeight(); +}); +var _5ac=wrap.outerHeight()-wrap.height(); +var _5ad=wrap._size("minHeight")||""; +var _5ae=wrap._size("maxHeight")||""; +_5a3.add(_5a4).children("div.datagrid-body").css({marginTop:_5aa,height:(isNaN(parseInt(opts.height))?"":(_5a2-_5ab)),minHeight:(_5ad?_5ad-_5ac-_5ab:""),maxHeight:(_5ae?_5ae-_5ac-_5ab:"")}); +view.height(_5a4.height()); +}; +function _5af(_5b0,_5b1,_5b2){ +var rows=$.data(_5b0,"datagrid").data.rows; +var opts=$.data(_5b0,"datagrid").options; +var dc=$.data(_5b0,"datagrid").dc; +if(!dc.body1.is(":empty")&&(!opts.nowrap||opts.autoRowHeight||_5b2)){ +if(_5b1!=undefined){ +var tr1=opts.finder.getTr(_5b0,_5b1,"body",1); +var tr2=opts.finder.getTr(_5b0,_5b1,"body",2); +_5b3(tr1,tr2); +}else{ +var tr1=opts.finder.getTr(_5b0,0,"allbody",1); +var tr2=opts.finder.getTr(_5b0,0,"allbody",2); +_5b3(tr1,tr2); +if(opts.showFooter){ +var tr1=opts.finder.getTr(_5b0,0,"allfooter",1); +var tr2=opts.finder.getTr(_5b0,0,"allfooter",2); +_5b3(tr1,tr2); +} +} +} +_59e(_5b0); +if(opts.height=="auto"){ +var _5b4=dc.body1.parent(); +var _5b5=dc.body2; +var _5b6=_5b7(_5b5); +var _5b8=_5b6.height; +if(_5b6.width>_5b5.width()){ +_5b8+=18; +} +_5b8-=parseInt(_5b5.css("marginTop"))||0; +_5b4.height(_5b8); +_5b5.height(_5b8); +dc.view.height(dc.view2.height()); +} +dc.body2.triggerHandler("scroll"); +function _5b3(trs1,trs2){ +for(var i=0;i"); +} +_5c0(true); +_5c0(false); +_59e(_5bd); +function _5c0(_5c1){ +var _5c2=_5c1?1:2; +var tr=opts.finder.getTr(_5bd,_5be,"body",_5c2); +(_5c1?dc.body1:dc.body2).children("table.datagrid-btable-frozen").append(tr); +}; +}; +function _5c3(_5c4,_5c5){ +function _5c6(){ +var _5c7=[]; +var _5c8=[]; +$(_5c4).children("thead").each(function(){ +var opt=$.parser.parseOptions(this,[{frozen:"boolean"}]); +$(this).find("tr").each(function(){ +var cols=[]; +$(this).find("th").each(function(){ +var th=$(this); +var col=$.extend({},$.parser.parseOptions(this,["field","align","halign","order","width",{sortable:"boolean",checkbox:"boolean",resizable:"boolean",fixed:"boolean"},{rowspan:"number",colspan:"number"}]),{title:(th.html()||undefined),hidden:(th.attr("hidden")?true:undefined),formatter:(th.attr("formatter")?eval(th.attr("formatter")):undefined),styler:(th.attr("styler")?eval(th.attr("styler")):undefined),sorter:(th.attr("sorter")?eval(th.attr("sorter")):undefined)}); +if(col.width&&String(col.width).indexOf("%")==-1){ +col.width=parseInt(col.width); +} +if(th.attr("editor")){ +var s=$.trim(th.attr("editor")); +if(s.substr(0,1)=="{"){ +col.editor=eval("("+s+")"); +}else{ +col.editor=s; +} +} +cols.push(col); +}); +opt.frozen?_5c7.push(cols):_5c8.push(cols); +}); +}); +return [_5c7,_5c8]; +}; +var _5c9=$("
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+""+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+""+"
        "+"
        "+"
        "+"
        ").insertAfter(_5c4); +_5c9.panel({doSize:false,cls:"datagrid"}); +$(_5c4).addClass("datagrid-f").hide().appendTo(_5c9.children("div.datagrid-view")); +var cc=_5c6(); +var view=_5c9.children("div.datagrid-view"); +var _5ca=view.children("div.datagrid-view1"); +var _5cb=view.children("div.datagrid-view2"); +return {panel:_5c9,frozenColumns:cc[0],columns:cc[1],dc:{view:view,view1:_5ca,view2:_5cb,header1:_5ca.children("div.datagrid-header").children("div.datagrid-header-inner"),header2:_5cb.children("div.datagrid-header").children("div.datagrid-header-inner"),body1:_5ca.children("div.datagrid-body").children("div.datagrid-body-inner"),body2:_5cb.children("div.datagrid-body"),footer1:_5ca.children("div.datagrid-footer").children("div.datagrid-footer-inner"),footer2:_5cb.children("div.datagrid-footer").children("div.datagrid-footer-inner")}}; +}; +function _5cc(_5cd){ +var _5ce=$.data(_5cd,"datagrid"); +var opts=_5ce.options; +var dc=_5ce.dc; +var _5cf=_5ce.panel; +_5ce.ss=$(_5cd).datagrid("createStyleSheet"); +_5cf.panel($.extend({},opts,{id:null,doSize:false,onResize:function(_5d0,_5d1){ +if($.data(_5cd,"datagrid")){ +_59e(_5cd); +$(_5cd).datagrid("fitColumns"); +opts.onResize.call(_5cf,_5d0,_5d1); +} +},onExpand:function(){ +_5af(_5cd); +opts.onExpand.call(_5cf); +}})); +_5ce.rowIdPrefix="datagrid-row-r"+(++_583); +_5ce.cellClassPrefix="datagrid-cell-c"+_583; +_5d2(dc.header1,opts.frozenColumns,true); +_5d2(dc.header2,opts.columns,false); +_5d3(); +dc.header1.add(dc.header2).css("display",opts.showHeader?"block":"none"); +dc.footer1.add(dc.footer2).css("display",opts.showFooter?"block":"none"); +if(opts.toolbar){ +if($.isArray(opts.toolbar)){ +$("div.datagrid-toolbar",_5cf).remove(); +var tb=$("
        ").prependTo(_5cf); +var tr=tb.find("tr"); +for(var i=0;i
        ").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var tool=$("").appendTo(td); +tool[0].onclick=eval(btn.handler||function(){ +}); +tool.linkbutton($.extend({},btn,{plain:true})); +} +} +}else{ +$(opts.toolbar).addClass("datagrid-toolbar").prependTo(_5cf); +$(opts.toolbar).show(); +} +}else{ +$("div.datagrid-toolbar",_5cf).remove(); +} +$("div.datagrid-pager",_5cf).remove(); +if(opts.pagination){ +var _5d4=$("
        "); +if(opts.pagePosition=="bottom"){ +_5d4.appendTo(_5cf); +}else{ +if(opts.pagePosition=="top"){ +_5d4.addClass("datagrid-pager-top").prependTo(_5cf); +}else{ +var ptop=$("
        ").prependTo(_5cf); +_5d4.appendTo(_5cf); +_5d4=_5d4.add(ptop); +} +} +_5d4.pagination({total:(opts.pageNumber*opts.pageSize),pageNumber:opts.pageNumber,pageSize:opts.pageSize,pageList:opts.pageList,onSelectPage:function(_5d5,_5d6){ +opts.pageNumber=_5d5||1; +opts.pageSize=_5d6; +_5d4.pagination("refresh",{pageNumber:_5d5,pageSize:_5d6}); +_611(_5cd); +}}); +opts.pageSize=_5d4.pagination("options").pageSize; +} +function _5d2(_5d7,_5d8,_5d9){ +if(!_5d8){ +return; +} +$(_5d7).show(); +$(_5d7).empty(); +var _5da=[]; +var _5db=[]; +if(opts.sortName){ +_5da=opts.sortName.split(","); +_5db=opts.sortOrder.split(","); +} +var t=$("
        ").appendTo(_5d7); +for(var i=0;i<_5d8.length;i++){ +var tr=$("").appendTo($("tbody",t)); +var cols=_5d8[i]; +for(var j=0;j").appendTo(tr); +if(col.checkbox){ +td.attr("field",col.field); +$("
        ").html("").appendTo(td); +}else{ +if(col.field){ +td.attr("field",col.field); +td.append("
        "); +$("span",td).html(col.title); +$("span.datagrid-sort-icon",td).html(" "); +var cell=td.find("div.datagrid-cell"); +var pos=_584(_5da,col.field); +if(pos>=0){ +cell.addClass("datagrid-sort-"+_5db[pos]); +} +if(col.resizable==false){ +cell.attr("resizable","false"); +} +if(col.width){ +var _5dc=$.parser.parseValue("width",col.width,dc.view,opts.scrollbarSize); +cell._outerWidth(_5dc-1); +col.boxWidth=parseInt(cell[0].style.width); +col.deltaWidth=_5dc-col.boxWidth; +}else{ +col.auto=true; +} +cell.css("text-align",(col.halign||col.align||"")); +col.cellClass=_5ce.cellClassPrefix+"-"+col.field.replace(/[\.|\s]/g,"-"); +cell.addClass(col.cellClass).css("width",""); +}else{ +$("
        ").html(col.title).appendTo(td); +} +} +if(col.hidden){ +td.hide(); +} +} +} +if(_5d9&&opts.rownumbers){ +var td=$("
        "); +if($("tr",t).length==0){ +td.wrap("").parent().appendTo($("tbody",t)); +}else{ +td.prependTo($("tr:first",t)); +} +} +}; +function _5d3(){ +var _5dd=[]; +var _5de=_5df(_5cd,true).concat(_5df(_5cd)); +for(var i=0;i<_5de.length;i++){ +var col=_5e0(_5cd,_5de[i]); +if(col&&!col.checkbox){ +_5dd.push(["."+col.cellClass,col.boxWidth?col.boxWidth+"px":"auto"]); +} +} +_5ce.ss.add(_5dd); +_5ce.ss.dirty(_5ce.cellSelectorPrefix); +_5ce.cellSelectorPrefix="."+_5ce.cellClassPrefix; +}; +}; +function _5e1(_5e2){ +var _5e3=$.data(_5e2,"datagrid"); +var _5e4=_5e3.panel; +var opts=_5e3.options; +var dc=_5e3.dc; +var _5e5=dc.header1.add(dc.header2); +_5e5.find("input[type=checkbox]").unbind(".datagrid").bind("click.datagrid",function(e){ +if(opts.singleSelect&&opts.selectOnCheck){ +return false; +} +if($(this).is(":checked")){ +_67b(_5e2); +}else{ +_681(_5e2); +} +e.stopPropagation(); +}); +var _5e6=_5e5.find("div.datagrid-cell"); +_5e6.closest("td").unbind(".datagrid").bind("mouseenter.datagrid",function(){ +if(_5e3.resizing){ +return; +} +$(this).addClass("datagrid-header-over"); +}).bind("mouseleave.datagrid",function(){ +$(this).removeClass("datagrid-header-over"); +}).bind("contextmenu.datagrid",function(e){ +var _5e7=$(this).attr("field"); +opts.onHeaderContextMenu.call(_5e2,e,_5e7); +}); +_5e6.unbind(".datagrid").bind("click.datagrid",function(e){ +var p1=$(this).offset().left+5; +var p2=$(this).offset().left+$(this)._outerWidth()-5; +if(e.pageXp1){ +_606(_5e2,$(this).parent().attr("field")); +} +}).bind("dblclick.datagrid",function(e){ +var p1=$(this).offset().left+5; +var p2=$(this).offset().left+$(this)._outerWidth()-5; +var cond=opts.resizeHandle=="right"?(e.pageX>p2):(opts.resizeHandle=="left"?(e.pageXp2)); +if(cond){ +var _5e8=$(this).parent().attr("field"); +var col=_5e0(_5e2,_5e8); +if(col.resizable==false){ +return; +} +$(_5e2).datagrid("autoSizeColumn",_5e8); +col.auto=false; +} +}); +var _5e9=opts.resizeHandle=="right"?"e":(opts.resizeHandle=="left"?"w":"e,w"); +_5e6.each(function(){ +$(this).resizable({handles:_5e9,disabled:($(this).attr("resizable")?$(this).attr("resizable")=="false":false),minWidth:25,onStartResize:function(e){ +_5e3.resizing=true; +_5e5.css("cursor",$("body").css("cursor")); +if(!_5e3.proxy){ +_5e3.proxy=$("
        ").appendTo(dc.view); +} +_5e3.proxy.css({left:e.pageX-$(_5e4).offset().left-1,display:"none"}); +setTimeout(function(){ +if(_5e3.proxy){ +_5e3.proxy.show(); +} +},500); +},onResize:function(e){ +_5e3.proxy.css({left:e.pageX-$(_5e4).offset().left-1,display:"block"}); +return false; +},onStopResize:function(e){ +_5e5.css("cursor",""); +$(this).css("height",""); +var _5ea=$(this).parent().attr("field"); +var col=_5e0(_5e2,_5ea); +col.width=$(this)._outerWidth(); +col.boxWidth=col.width-col.deltaWidth; +col.auto=undefined; +$(this).css("width",""); +$(_5e2).datagrid("fixColumnSize",_5ea); +_5e3.proxy.remove(); +_5e3.proxy=null; +if($(this).parents("div:first.datagrid-header").parent().hasClass("datagrid-view1")){ +_59e(_5e2); +} +$(_5e2).datagrid("fitColumns"); +opts.onResizeColumn.call(_5e2,_5ea,col.width); +setTimeout(function(){ +_5e3.resizing=false; +},0); +}}); +}); +var bb=dc.body1.add(dc.body2); +bb.unbind(); +for(var _5eb in opts.rowEvents){ +bb.bind(_5eb,opts.rowEvents[_5eb]); +} +dc.body1.bind("mousewheel DOMMouseScroll",function(e){ +var e1=e.originalEvent||window.event; +var _5ec=e1.wheelDelta||e1.detail*(-1); +var dg=$(e.target).closest("div.datagrid-view").children(".datagrid-f"); +var dc=dg.data("datagrid").dc; +dc.body2.scrollTop(dc.body2.scrollTop()-_5ec); +}); +dc.body2.bind("scroll",function(){ +var b1=dc.view1.children("div.datagrid-body"); +b1.scrollTop($(this).scrollTop()); +var c1=dc.body1.children(":first"); +var c2=dc.body2.children(":first"); +if(c1.length&&c2.length){ +var top1=c1.offset().top; +var top2=c2.offset().top; +if(top1!=top2){ +b1.scrollTop(b1.scrollTop()+top1-top2); +} +} +dc.view2.children("div.datagrid-header,div.datagrid-footer")._scrollLeft($(this)._scrollLeft()); +dc.body2.children("table.datagrid-btable-frozen").css("left",-$(this)._scrollLeft()); +}); +}; +function _5ed(_5ee){ +return function(e){ +var tr=_5ef(e.target); +if(!tr){ +return; +} +var _5f0=_5f1(tr); +if($.data(_5f0,"datagrid").resizing){ +return; +} +var _5f2=_5f3(tr); +if(_5ee){ +_5f4(_5f0,_5f2); +}else{ +var opts=$.data(_5f0,"datagrid").options; +opts.finder.getTr(_5f0,_5f2).removeClass("datagrid-row-over"); +} +}; +}; +function _5f5(e){ +var tr=_5ef(e.target); +if(!tr){ +return; +} +var _5f6=_5f1(tr); +var opts=$.data(_5f6,"datagrid").options; +var _5f7=_5f3(tr); +var tt=$(e.target); +if(tt.parent().hasClass("datagrid-cell-check")){ +if(opts.singleSelect&&opts.selectOnCheck){ +tt._propAttr("checked",!tt.is(":checked")); +_5f8(_5f6,_5f7); +}else{ +if(tt.is(":checked")){ +tt._propAttr("checked",false); +_5f8(_5f6,_5f7); +}else{ +tt._propAttr("checked",true); +_5f9(_5f6,_5f7); +} +} +}else{ +var row=opts.finder.getRow(_5f6,_5f7); +var td=tt.closest("td[field]",tr); +if(td.length){ +var _5fa=td.attr("field"); +opts.onClickCell.call(_5f6,_5f7,_5fa,row[_5fa]); +} +if(opts.singleSelect==true){ +_5fb(_5f6,_5f7); +}else{ +if(opts.ctrlSelect){ +if(e.ctrlKey){ +if(tr.hasClass("datagrid-row-selected")){ +_5fc(_5f6,_5f7); +}else{ +_5fb(_5f6,_5f7); +} +}else{ +if(e.shiftKey){ +$(_5f6).datagrid("clearSelections"); +var _5fd=Math.min(opts.lastSelectedIndex||0,_5f7); +var _5fe=Math.max(opts.lastSelectedIndex||0,_5f7); +for(var i=_5fd;i<=_5fe;i++){ +_5fb(_5f6,i); +} +}else{ +$(_5f6).datagrid("clearSelections"); +_5fb(_5f6,_5f7); +opts.lastSelectedIndex=_5f7; +} +} +}else{ +if(tr.hasClass("datagrid-row-selected")){ +_5fc(_5f6,_5f7); +}else{ +_5fb(_5f6,_5f7); +} +} +} +opts.onClickRow.apply(_5f6,_588(_5f6,[_5f7,row])); +} +}; +function _5ff(e){ +var tr=_5ef(e.target); +if(!tr){ +return; +} +var _600=_5f1(tr); +var opts=$.data(_600,"datagrid").options; +var _601=_5f3(tr); +var row=opts.finder.getRow(_600,_601); +var td=$(e.target).closest("td[field]",tr); +if(td.length){ +var _602=td.attr("field"); +opts.onDblClickCell.call(_600,_601,_602,row[_602]); +} +opts.onDblClickRow.apply(_600,_588(_600,[_601,row])); +}; +function _603(e){ +var tr=_5ef(e.target); +if(!tr){ +return; +} +var _604=_5f1(tr); +var opts=$.data(_604,"datagrid").options; +var _605=_5f3(tr); +var row=opts.finder.getRow(_604,_605); +opts.onRowContextMenu.call(_604,e,_605,row); +}; +function _5f1(t){ +return $(t).closest("div.datagrid-view").children(".datagrid-f")[0]; +}; +function _5ef(t){ +var tr=$(t).closest("tr.datagrid-row"); +if(tr.length&&tr.parent().length){ +return tr; +}else{ +return undefined; +} +}; +function _5f3(tr){ +if(tr.attr("datagrid-row-index")){ +return parseInt(tr.attr("datagrid-row-index")); +}else{ +return tr.attr("node-id"); +} +}; +function _606(_607,_608){ +var _609=$.data(_607,"datagrid"); +var opts=_609.options; +_608=_608||{}; +var _60a={sortName:opts.sortName,sortOrder:opts.sortOrder}; +if(typeof _608=="object"){ +$.extend(_60a,_608); +} +var _60b=[]; +var _60c=[]; +if(_60a.sortName){ +_60b=_60a.sortName.split(","); +_60c=_60a.sortOrder.split(","); +} +if(typeof _608=="string"){ +var _60d=_608; +var col=_5e0(_607,_60d); +if(!col.sortable||_609.resizing){ +return; +} +var _60e=col.order||"asc"; +var pos=_584(_60b,_60d); +if(pos>=0){ +var _60f=_60c[pos]=="asc"?"desc":"asc"; +if(opts.multiSort&&_60f==_60e){ +_60b.splice(pos,1); +_60c.splice(pos,1); +}else{ +_60c[pos]=_60f; +} +}else{ +if(opts.multiSort){ +_60b.push(_60d); +_60c.push(_60e); +}else{ +_60b=[_60d]; +_60c=[_60e]; +} +} +_60a.sortName=_60b.join(","); +_60a.sortOrder=_60c.join(","); +} +if(opts.onBeforeSortColumn.call(_607,_60a.sortName,_60a.sortOrder)==false){ +return; +} +$.extend(opts,_60a); +var dc=_609.dc; +var _610=dc.header1.add(dc.header2); +_610.find("div.datagrid-cell").removeClass("datagrid-sort-asc datagrid-sort-desc"); +for(var i=0;i<_60b.length;i++){ +var col=_5e0(_607,_60b[i]); +_610.find("div."+col.cellClass).addClass("datagrid-sort-"+_60c[i]); +} +if(opts.remoteSort){ +_611(_607); +}else{ +_612(_607,$(_607).datagrid("getData")); +} +opts.onSortColumn.call(_607,opts.sortName,opts.sortOrder); +}; +function _613(_614){ +var _615=$.data(_614,"datagrid"); +var opts=_615.options; +var dc=_615.dc; +var _616=dc.view2.children("div.datagrid-header"); +dc.body2.css("overflow-x",""); +_617(); +_618(); +_619(); +_617(true); +if(_616.width()>=_616.find("table").width()){ +dc.body2.css("overflow-x","hidden"); +} +function _619(){ +if(!opts.fitColumns){ +return; +} +if(!_615.leftWidth){ +_615.leftWidth=0; +} +var _61a=0; +var cc=[]; +var _61b=_5df(_614,false); +for(var i=0;i<_61b.length;i++){ +var col=_5e0(_614,_61b[i]); +if(_61c(col)){ +_61a+=col.width; +cc.push({field:col.field,col:col,addingWidth:0}); +} +} +if(!_61a){ +return; +} +cc[cc.length-1].addingWidth-=_615.leftWidth; +var _61d=_616.children("div.datagrid-header-inner").show(); +var _61e=_616.width()-_616.find("table").width()-opts.scrollbarSize+_615.leftWidth; +var rate=_61e/_61a; +if(!opts.showHeader){ +_61d.hide(); +} +for(var i=0;i0){ +c.col.boxWidth+=c.addingWidth; +c.col.width+=c.addingWidth; +} +} +_615.leftWidth=_61e; +$(_614).datagrid("fixColumnSize"); +}; +function _618(){ +var _620=false; +var _621=_5df(_614,true).concat(_5df(_614,false)); +$.map(_621,function(_622){ +var col=_5e0(_614,_622); +if(String(col.width||"").indexOf("%")>=0){ +var _623=$.parser.parseValue("width",col.width,dc.view,opts.scrollbarSize)-col.deltaWidth; +if(_623>0){ +col.boxWidth=_623; +_620=true; +} +} +}); +if(_620){ +$(_614).datagrid("fixColumnSize"); +} +}; +function _617(fit){ +var _624=dc.header1.add(dc.header2).find(".datagrid-cell-group"); +if(_624.length){ +_624.each(function(){ +$(this)._outerWidth(fit?$(this).parent().width():10); +}); +if(fit){ +_59e(_614); +} +} +}; +function _61c(col){ +if(String(col.width||"").indexOf("%")>=0){ +return false; +} +if(!col.hidden&&!col.checkbox&&!col.auto&&!col.fixed){ +return true; +} +}; +}; +function _625(_626,_627){ +var _628=$.data(_626,"datagrid"); +var opts=_628.options; +var dc=_628.dc; +var tmp=$("
        ").appendTo("body"); +if(_627){ +_599(_627); +if(opts.fitColumns){ +_59e(_626); +$(_626).datagrid("fitColumns"); +} +}else{ +var _629=false; +var _62a=_5df(_626,true).concat(_5df(_626,false)); +for(var i=0;i<_62a.length;i++){ +var _627=_62a[i]; +var col=_5e0(_626,_627); +if(col.auto){ +_599(_627); +_629=true; +} +} +if(_629&&opts.fitColumns){ +_59e(_626); +$(_626).datagrid("fitColumns"); +} +} +tmp.remove(); +function _599(_62b){ +var _62c=dc.view.find("div.datagrid-header td[field=\""+_62b+"\"] div.datagrid-cell"); +_62c.css("width",""); +var col=$(_626).datagrid("getColumnOption",_62b); +col.width=undefined; +col.boxWidth=undefined; +col.auto=true; +$(_626).datagrid("fixColumnSize",_62b); +var _62d=Math.max(_62e("header"),_62e("allbody"),_62e("allfooter"))+1; +_62c._outerWidth(_62d-1); +col.width=_62d; +col.boxWidth=parseInt(_62c[0].style.width); +col.deltaWidth=_62d-col.boxWidth; +_62c.css("width",""); +$(_626).datagrid("fixColumnSize",_62b); +opts.onResizeColumn.call(_626,_62b,col.width); +function _62e(type){ +var _62f=0; +if(type=="header"){ +_62f=_630(_62c); +}else{ +opts.finder.getTr(_626,0,type).find("td[field=\""+_62b+"\"] div.datagrid-cell").each(function(){ +var w=_630($(this)); +if(_62f=0){ +var _649=col.field||""; +for(var c=0;c<(col.colspan||1);c++){ +for(var r=0;r<(col.rowspan||1);r++){ +aa[_646+r][_647]=_649; +} +_647++; +} +} +}); +} +return aa[aa.length-1]; +function _645(){ +var _64a=0; +$.map(_643[0],function(col){ +_64a+=col.colspan||1; +}); +return _64a; +}; +function _648(a){ +for(var i=0;ib?1:-1); +}; +r=_64f(r1[sn],r2[sn])*(so=="asc"?1:-1); +if(r!=0){ +return r; +} +} +return r; +}); +} +if(opts.view.onBeforeRender){ +opts.view.onBeforeRender.call(opts.view,_64b,data.rows); +} +opts.view.render.call(opts.view,_64b,dc.body2,false); +opts.view.render.call(opts.view,_64b,dc.body1,true); +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,_64b,dc.footer2,false); +opts.view.renderFooter.call(opts.view,_64b,dc.footer1,true); +} +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,_64b); +} +_64c.ss.clean(); +var _650=$(_64b).datagrid("getPager"); +if(_650.length){ +var _651=_650.pagination("options"); +if(_651.total!=data.total){ +_650.pagination("refresh",{total:data.total}); +if(opts.pageNumber!=_651.pageNumber&&_651.pageNumber>0){ +opts.pageNumber=_651.pageNumber; +_611(_64b); +} +} +} +_5af(_64b); +dc.body2.triggerHandler("scroll"); +$(_64b).datagrid("setSelectionState"); +$(_64b).datagrid("autoSizeColumn"); +opts.onLoadSuccess.call(_64b,data); +}; +function _652(_653){ +var _654=$.data(_653,"datagrid"); +var opts=_654.options; +var dc=_654.dc; +dc.header1.add(dc.header2).find("input[type=checkbox]")._propAttr("checked",false); +if(opts.idField){ +var _655=$.data(_653,"treegrid")?true:false; +var _656=opts.onSelect; +var _657=opts.onCheck; +opts.onSelect=opts.onCheck=function(){ +}; +var rows=opts.finder.getRows(_653); +for(var i=0;i_668.height()-18){ +_668.scrollTop(_668.scrollTop()+top+tr._outerHeight()-_668.height()+18); +} +} +} +}; +function _5f4(_66a,_66b){ +var _66c=$.data(_66a,"datagrid"); +var opts=_66c.options; +opts.finder.getTr(_66a,_66c.highlightIndex).removeClass("datagrid-row-over"); +opts.finder.getTr(_66a,_66b).addClass("datagrid-row-over"); +_66c.highlightIndex=_66b; +}; +function _5fb(_66d,_66e,_66f){ +var _670=$.data(_66d,"datagrid"); +var opts=_670.options; +var row=opts.finder.getRow(_66d,_66e); +if(opts.onBeforeSelect.apply(_66d,_588(_66d,[_66e,row]))==false){ +return; +} +if(opts.singleSelect){ +_671(_66d,true); +_670.selectedRows=[]; +} +if(!_66f&&opts.checkOnSelect){ +_5f8(_66d,_66e,true); +} +if(opts.idField){ +_587(_670.selectedRows,opts.idField,row); +} +opts.finder.getTr(_66d,_66e).addClass("datagrid-row-selected"); +opts.onSelect.apply(_66d,_588(_66d,[_66e,row])); +_663(_66d,_66e); +}; +function _5fc(_672,_673,_674){ +var _675=$.data(_672,"datagrid"); +var dc=_675.dc; +var opts=_675.options; +var row=opts.finder.getRow(_672,_673); +if(opts.onBeforeUnselect.apply(_672,_588(_672,[_673,row]))==false){ +return; +} +if(!_674&&opts.checkOnSelect){ +_5f9(_672,_673,true); +} +opts.finder.getTr(_672,_673).removeClass("datagrid-row-selected"); +if(opts.idField){ +_585(_675.selectedRows,opts.idField,row[opts.idField]); +} +opts.onUnselect.apply(_672,_588(_672,[_673,row])); +}; +function _676(_677,_678){ +var _679=$.data(_677,"datagrid"); +var opts=_679.options; +var rows=opts.finder.getRows(_677); +var _67a=$.data(_677,"datagrid").selectedRows; +if(!_678&&opts.checkOnSelect){ +_67b(_677,true); +} +opts.finder.getTr(_677,"","allbody").addClass("datagrid-row-selected"); +if(opts.idField){ +for(var _67c=0;_67c"); +cell.children("table").bind("click dblclick contextmenu",function(e){ +e.stopPropagation(); +}); +$.data(cell[0],"datagrid.editor",{actions:_6b2,target:_6b2.init(cell.find("td"),_6b1),field:_6af,type:_6b0,oldHtml:_6b3}); +} +} +}); +_5af(_6ad,_6ae,true); +}; +function _6a4(_6b5,_6b6){ +var opts=$.data(_6b5,"datagrid").options; +var tr=opts.finder.getTr(_6b5,_6b6); +tr.children("td").each(function(){ +var cell=$(this).find("div.datagrid-editable"); +if(cell.length){ +var ed=$.data(cell[0],"datagrid.editor"); +if(ed.actions.destroy){ +ed.actions.destroy(ed.target); +} +cell.html(ed.oldHtml); +$.removeData(cell[0],"datagrid.editor"); +cell.removeClass("datagrid-editable"); +cell.css("width",""); +} +}); +}; +function _697(_6b7,_6b8){ +var tr=$.data(_6b7,"datagrid").options.finder.getTr(_6b7,_6b8); +if(!tr.hasClass("datagrid-row-editing")){ +return true; +} +var vbox=tr.find(".validatebox-text"); +vbox.validatebox("validate"); +vbox.trigger("mouseleave"); +var _6b9=tr.find(".validatebox-invalid"); +return _6b9.length==0; +}; +function _6ba(_6bb,_6bc){ +var _6bd=$.data(_6bb,"datagrid").insertedRows; +var _6be=$.data(_6bb,"datagrid").deletedRows; +var _6bf=$.data(_6bb,"datagrid").updatedRows; +if(!_6bc){ +var rows=[]; +rows=rows.concat(_6bd); +rows=rows.concat(_6be); +rows=rows.concat(_6bf); +return rows; +}else{ +if(_6bc=="inserted"){ +return _6bd; +}else{ +if(_6bc=="deleted"){ +return _6be; +}else{ +if(_6bc=="updated"){ +return _6bf; +} +} +} +} +return []; +}; +function _6c0(_6c1,_6c2){ +var _6c3=$.data(_6c1,"datagrid"); +var opts=_6c3.options; +var data=_6c3.data; +var _6c4=_6c3.insertedRows; +var _6c5=_6c3.deletedRows; +$(_6c1).datagrid("cancelEdit",_6c2); +var row=opts.finder.getRow(_6c1,_6c2); +if(_584(_6c4,row)>=0){ +_585(_6c4,row); +}else{ +_6c5.push(row); +} +_585(_6c3.selectedRows,opts.idField,row[opts.idField]); +_585(_6c3.checkedRows,opts.idField,row[opts.idField]); +opts.view.deleteRow.call(opts.view,_6c1,_6c2); +if(opts.height=="auto"){ +_5af(_6c1); +} +$(_6c1).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _6c6(_6c7,_6c8){ +var data=$.data(_6c7,"datagrid").data; +var view=$.data(_6c7,"datagrid").options.view; +var _6c9=$.data(_6c7,"datagrid").insertedRows; +view.insertRow.call(view,_6c7,_6c8.index,_6c8.row); +_6c9.push(_6c8.row); +$(_6c7).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _6ca(_6cb,row){ +var data=$.data(_6cb,"datagrid").data; +var view=$.data(_6cb,"datagrid").options.view; +var _6cc=$.data(_6cb,"datagrid").insertedRows; +view.insertRow.call(view,_6cb,null,row); +_6cc.push(row); +$(_6cb).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _6cd(_6ce){ +var _6cf=$.data(_6ce,"datagrid"); +var data=_6cf.data; +var rows=data.rows; +var _6d0=[]; +for(var i=0;i=0){ +(_6dd=="s"?_5fb:_5f8)(_6d4,_6de,true); +} +} +}; +for(var i=0;i0){ +_612(this,data); +_6cd(this); +}else{ +opts.view.renderEmptyRow(this); +} +} +_611(this); +}); +}; +function _6ee(_6ef){ +var _6f0={}; +$.map(_6ef,function(name){ +_6f0[name]=_6f1(name); +}); +return _6f0; +function _6f1(name){ +function isA(_6f2){ +return $.data($(_6f2)[0],name)!=undefined; +}; +return {init:function(_6f3,_6f4){ +var _6f5=$("").appendTo(_6f3); +if(_6f5[name]&&name!="text"){ +return _6f5[name](_6f4); +}else{ +return _6f5; +} +},destroy:function(_6f6){ +if(isA(_6f6,name)){ +$(_6f6)[name]("destroy"); +} +},getValue:function(_6f7){ +if(isA(_6f7,name)){ +var opts=$(_6f7)[name]("options"); +if(opts.multiple){ +return $(_6f7)[name]("getValues").join(opts.separator); +}else{ +return $(_6f7)[name]("getValue"); +} +}else{ +return $(_6f7).val(); +} +},setValue:function(_6f8,_6f9){ +if(isA(_6f8,name)){ +var opts=$(_6f8)[name]("options"); +if(opts.multiple){ +if(_6f9){ +$(_6f8)[name]("setValues",_6f9.split(opts.separator)); +}else{ +$(_6f8)[name]("clear"); +} +}else{ +$(_6f8)[name]("setValue",_6f9); +} +}else{ +$(_6f8).val(_6f9); +} +},resize:function(_6fa,_6fb){ +if(isA(_6fa,name)){ +$(_6fa)[name]("resize",_6fb); +}else{ +$(_6fa)._outerWidth(_6fb)._outerHeight(22); +} +}}; +}; +}; +var _6fc=$.extend({},_6ee(["text","textbox","numberbox","numberspinner","combobox","combotree","combogrid","datebox","datetimebox","timespinner","datetimespinner"]),{textarea:{init:function(_6fd,_6fe){ +var _6ff=$("").appendTo(_6fd); +return _6ff; +},getValue:function(_700){ +return $(_700).val(); +},setValue:function(_701,_702){ +$(_701).val(_702); +},resize:function(_703,_704){ +$(_703)._outerWidth(_704); +}},checkbox:{init:function(_705,_706){ +var _707=$("").appendTo(_705); +_707.val(_706.on); +_707.attr("offval",_706.off); +return _707; +},getValue:function(_708){ +if($(_708).is(":checked")){ +return $(_708).val(); +}else{ +return $(_708).attr("offval"); +} +},setValue:function(_709,_70a){ +var _70b=false; +if($(_709).val()==_70a){ +_70b=true; +} +$(_709)._propAttr("checked",_70b); +}},validatebox:{init:function(_70c,_70d){ +var _70e=$("").appendTo(_70c); +_70e.validatebox(_70d); +return _70e; +},destroy:function(_70f){ +$(_70f).validatebox("destroy"); +},getValue:function(_710){ +return $(_710).val(); +},setValue:function(_711,_712){ +$(_711).val(_712); +},resize:function(_713,_714){ +$(_713)._outerWidth(_714)._outerHeight(22); +}}}); +$.fn.datagrid.methods={options:function(jq){ +var _715=$.data(jq[0],"datagrid").options; +var _716=$.data(jq[0],"datagrid").panel.panel("options"); +var opts=$.extend(_715,{width:_716.width,height:_716.height,closed:_716.closed,collapsed:_716.collapsed,minimized:_716.minimized,maximized:_716.maximized}); +return opts; +},setSelectionState:function(jq){ +return jq.each(function(){ +_652(this); +}); +},createStyleSheet:function(jq){ +return _58a(jq[0]); +},getPanel:function(jq){ +return $.data(jq[0],"datagrid").panel; +},getPager:function(jq){ +return $.data(jq[0],"datagrid").panel.children("div.datagrid-pager"); +},getColumnFields:function(jq,_717){ +return _5df(jq[0],_717); +},getColumnOption:function(jq,_718){ +return _5e0(jq[0],_718); +},resize:function(jq,_719){ +return jq.each(function(){ +_599(this,_719); +}); +},load:function(jq,_71a){ +return jq.each(function(){ +var opts=$(this).datagrid("options"); +if(typeof _71a=="string"){ +opts.url=_71a; +_71a=null; +} +opts.pageNumber=1; +var _71b=$(this).datagrid("getPager"); +_71b.pagination("refresh",{pageNumber:1}); +_611(this,_71a); +}); +},reload:function(jq,_71c){ +return jq.each(function(){ +var opts=$(this).datagrid("options"); +if(typeof _71c=="string"){ +opts.url=_71c; +_71c=null; +} +_611(this,_71c); +}); +},reloadFooter:function(jq,_71d){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +var dc=$.data(this,"datagrid").dc; +if(_71d){ +$.data(this,"datagrid").footer=_71d; +} +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,this,dc.footer2,false); +opts.view.renderFooter.call(opts.view,this,dc.footer1,true); +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,this); +} +$(this).datagrid("fixRowHeight"); +} +}); +},loading:function(jq){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +$(this).datagrid("getPager").pagination("loading"); +if(opts.loadMsg){ +var _71e=$(this).datagrid("getPanel"); +if(!_71e.children("div.datagrid-mask").length){ +$("
        ").appendTo(_71e); +var msg=$("
        ").html(opts.loadMsg).appendTo(_71e); +msg._outerHeight(40); +msg.css({marginLeft:(-msg.outerWidth()/2),lineHeight:(msg.height()+"px")}); +} +} +}); +},loaded:function(jq){ +return jq.each(function(){ +$(this).datagrid("getPager").pagination("loaded"); +var _71f=$(this).datagrid("getPanel"); +_71f.children("div.datagrid-mask-msg").remove(); +_71f.children("div.datagrid-mask").remove(); +}); +},fitColumns:function(jq){ +return jq.each(function(){ +_613(this); +}); +},fixColumnSize:function(jq,_720){ +return jq.each(function(){ +_631(this,_720); +}); +},fixRowHeight:function(jq,_721){ +return jq.each(function(){ +_5af(this,_721); +}); +},freezeRow:function(jq,_722){ +return jq.each(function(){ +_5bc(this,_722); +}); +},autoSizeColumn:function(jq,_723){ +return jq.each(function(){ +_625(this,_723); +}); +},loadData:function(jq,data){ +return jq.each(function(){ +_612(this,data); +_6cd(this); +}); +},getData:function(jq){ +return $.data(jq[0],"datagrid").data; +},getRows:function(jq){ +return $.data(jq[0],"datagrid").data.rows; +},getFooterRows:function(jq){ +return $.data(jq[0],"datagrid").footer; +},getRowIndex:function(jq,id){ +return _65a(jq[0],id); +},getChecked:function(jq){ +return _660(jq[0]); +},getSelected:function(jq){ +var rows=_65d(jq[0]); +return rows.length>0?rows[0]:null; +},getSelections:function(jq){ +return _65d(jq[0]); +},clearSelections:function(jq){ +return jq.each(function(){ +var _724=$.data(this,"datagrid"); +var _725=_724.selectedRows; +var _726=_724.checkedRows; +_725.splice(0,_725.length); +_671(this); +if(_724.options.checkOnSelect){ +_726.splice(0,_726.length); +} +}); +},clearChecked:function(jq){ +return jq.each(function(){ +var _727=$.data(this,"datagrid"); +var _728=_727.selectedRows; +var _729=_727.checkedRows; +_729.splice(0,_729.length); +_681(this); +if(_727.options.selectOnCheck){ +_728.splice(0,_728.length); +} +}); +},scrollTo:function(jq,_72a){ +return jq.each(function(){ +_663(this,_72a); +}); +},highlightRow:function(jq,_72b){ +return jq.each(function(){ +_5f4(this,_72b); +_663(this,_72b); +}); +},selectAll:function(jq){ +return jq.each(function(){ +_676(this); +}); +},unselectAll:function(jq){ +return jq.each(function(){ +_671(this); +}); +},selectRow:function(jq,_72c){ +return jq.each(function(){ +_5fb(this,_72c); +}); +},selectRecord:function(jq,id){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +if(opts.idField){ +var _72d=_65a(this,id); +if(_72d>=0){ +$(this).datagrid("selectRow",_72d); +} +} +}); +},unselectRow:function(jq,_72e){ +return jq.each(function(){ +_5fc(this,_72e); +}); +},checkRow:function(jq,_72f){ +return jq.each(function(){ +_5f8(this,_72f); +}); +},uncheckRow:function(jq,_730){ +return jq.each(function(){ +_5f9(this,_730); +}); +},checkAll:function(jq){ +return jq.each(function(){ +_67b(this); +}); +},uncheckAll:function(jq){ +return jq.each(function(){ +_681(this); +}); +},beginEdit:function(jq,_731){ +return jq.each(function(){ +_692(this,_731); +}); +},endEdit:function(jq,_732){ +return jq.each(function(){ +_698(this,_732,false); +}); +},cancelEdit:function(jq,_733){ +return jq.each(function(){ +_698(this,_733,true); +}); +},getEditors:function(jq,_734){ +return _6a5(jq[0],_734); +},getEditor:function(jq,_735){ +return _6a9(jq[0],_735); +},refreshRow:function(jq,_736){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +opts.view.refreshRow.call(opts.view,this,_736); +}); +},validateRow:function(jq,_737){ +return _697(jq[0],_737); +},updateRow:function(jq,_738){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +opts.view.updateRow.call(opts.view,this,_738.index,_738.row); +}); +},appendRow:function(jq,row){ +return jq.each(function(){ +_6ca(this,row); +}); +},insertRow:function(jq,_739){ +return jq.each(function(){ +_6c6(this,_739); +}); +},deleteRow:function(jq,_73a){ +return jq.each(function(){ +_6c0(this,_73a); +}); +},getChanges:function(jq,_73b){ +return _6ba(jq[0],_73b); +},acceptChanges:function(jq){ +return jq.each(function(){ +_6d1(this); +}); +},rejectChanges:function(jq){ +return jq.each(function(){ +_6d3(this); +}); +},mergeCells:function(jq,_73c){ +return jq.each(function(){ +_6e5(this,_73c); +}); +},showColumn:function(jq,_73d){ +return jq.each(function(){ +var _73e=$(this).datagrid("getPanel"); +_73e.find("td[field=\""+_73d+"\"]").show(); +$(this).datagrid("getColumnOption",_73d).hidden=false; +$(this).datagrid("fitColumns"); +}); +},hideColumn:function(jq,_73f){ +return jq.each(function(){ +var _740=$(this).datagrid("getPanel"); +_740.find("td[field=\""+_73f+"\"]").hide(); +$(this).datagrid("getColumnOption",_73f).hidden=true; +$(this).datagrid("fitColumns"); +}); +},sort:function(jq,_741){ +return jq.each(function(){ +_606(this,_741); +}); +}}; +$.fn.datagrid.parseOptions=function(_742){ +var t=$(_742); +return $.extend({},$.fn.panel.parseOptions(_742),$.parser.parseOptions(_742,["url","toolbar","idField","sortName","sortOrder","pagePosition","resizeHandle",{sharedStyleSheet:"boolean",fitColumns:"boolean",autoRowHeight:"boolean",striped:"boolean",nowrap:"boolean"},{rownumbers:"boolean",singleSelect:"boolean",ctrlSelect:"boolean",checkOnSelect:"boolean",selectOnCheck:"boolean"},{pagination:"boolean",pageSize:"number",pageNumber:"number"},{multiSort:"boolean",remoteSort:"boolean",showHeader:"boolean",showFooter:"boolean"},{scrollbarSize:"number"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined),loadMsg:(t.attr("loadMsg")!=undefined?t.attr("loadMsg"):undefined),rowStyler:(t.attr("rowStyler")?eval(t.attr("rowStyler")):undefined)}); +}; +$.fn.datagrid.parseData=function(_743){ +var t=$(_743); +var data={total:0,rows:[]}; +var _744=t.datagrid("getColumnFields",true).concat(t.datagrid("getColumnFields",false)); +t.find("tbody tr").each(function(){ +data.total++; +var row={}; +$.extend(row,$.parser.parseOptions(this,["iconCls","state"])); +for(var i=0;i<_744.length;i++){ +row[_744[i]]=$(this).find("td:eq("+i+")").html(); +} +data.rows.push(row); +}); +return data; +}; +var _745={render:function(_746,_747,_748){ +var rows=$(_746).datagrid("getRows"); +$(_747).html(this.renderTable(_746,0,rows,_748)); +},renderFooter:function(_749,_74a,_74b){ +var opts=$.data(_749,"datagrid").options; +var rows=$.data(_749,"datagrid").footer||[]; +var _74c=$(_749).datagrid("getColumnFields",_74b); +var _74d=[""]; +for(var i=0;i"); +_74d.push(this.renderRow.call(this,_749,_74c,_74b,i,rows[i])); +_74d.push(""); +} +_74d.push("
        "); +$(_74a).html(_74d.join("")); +},renderTable:function(_74e,_74f,rows,_750){ +var _751=$.data(_74e,"datagrid"); +var opts=_751.options; +if(_750){ +if(!(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length))){ +return ""; +} +} +var _752=$(_74e).datagrid("getColumnFields",_750); +var _753=[""]; +for(var i=0;i"); +_753.push(this.renderRow.call(this,_74e,_752,_750,_74f,row)); +_753.push(""); +_74f++; +} +_753.push("
        "); +return _753.join(""); +},renderRow:function(_758,_759,_75a,_75b,_75c){ +var opts=$.data(_758,"datagrid").options; +var cc=[]; +if(_75a&&opts.rownumbers){ +var _75d=_75b+1; +if(opts.pagination){ +_75d+=(opts.pageNumber-1)*opts.pageSize; +} +cc.push("
        "+_75d+"
        "); +} +for(var i=0;i<_759.length;i++){ +var _75e=_759[i]; +var col=$(_758).datagrid("getColumnOption",_75e); +if(col){ +var _75f=_75c[_75e]; +var css=col.styler?(col.styler(_75f,_75c,_75b)||""):""; +var _760=""; +var _761=""; +if(typeof css=="string"){ +_761=css; +}else{ +if(css){ +_760=css["class"]||""; +_761=css["style"]||""; +} +} +var cls=_760?"class=\""+_760+"\"":""; +var _762=col.hidden?"style=\"display:none;"+_761+"\"":(_761?"style=\""+_761+"\"":""); +cc.push(""); +var _762=""; +if(!col.checkbox){ +if(col.align){ +_762+="text-align:"+col.align+";"; +} +if(!opts.nowrap){ +_762+="white-space:normal;height:auto;"; +}else{ +if(opts.autoRowHeight){ +_762+="height:auto;"; +} +} +} +cc.push("
        "); +if(col.checkbox){ +cc.push(""); +}else{ +if(col.formatter){ +cc.push(col.formatter(_75f,_75c,_75b)); +}else{ +cc.push(_75f); +} +} +cc.push("
        "); +cc.push(""); +} +} +return cc.join(""); +},refreshRow:function(_763,_764){ +this.updateRow.call(this,_763,_764,{}); +},updateRow:function(_765,_766,row){ +var opts=$.data(_765,"datagrid").options; +var rows=$(_765).datagrid("getRows"); +var _767=_768(_766); +$.extend(rows[_766],row); +var _769=_768(_766); +var _76a=_767.c; +var _76b=_769.s; +var _76c="datagrid-row "+(_766%2&&opts.striped?"datagrid-row-alt ":" ")+_769.c; +function _768(_76d){ +var css=opts.rowStyler?opts.rowStyler.call(_765,_76d,rows[_76d]):""; +var _76e=""; +var _76f=""; +if(typeof css=="string"){ +_76f=css; +}else{ +if(css){ +_76e=css["class"]||""; +_76f=css["style"]||""; +} +} +return {c:_76e,s:_76f}; +}; +function _770(_771){ +var _772=$(_765).datagrid("getColumnFields",_771); +var tr=opts.finder.getTr(_765,_766,"body",(_771?1:2)); +var _773=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); +tr.html(this.renderRow.call(this,_765,_772,_771,_766,rows[_766])); +tr.attr("style",_76b).removeClass(_76a).addClass(_76c); +if(_773){ +tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); +} +}; +_770.call(this,true); +_770.call(this,false); +$(_765).datagrid("fixRowHeight",_766); +},insertRow:function(_774,_775,row){ +var _776=$.data(_774,"datagrid"); +var opts=_776.options; +var dc=_776.dc; +var data=_776.data; +if(_775==undefined||_775==null){ +_775=data.rows.length; +} +if(_775>data.rows.length){ +_775=data.rows.length; +} +function _777(_778){ +var _779=_778?1:2; +for(var i=data.rows.length-1;i>=_775;i--){ +var tr=opts.finder.getTr(_774,i,"body",_779); +tr.attr("datagrid-row-index",i+1); +tr.attr("id",_776.rowIdPrefix+"-"+_779+"-"+(i+1)); +if(_778&&opts.rownumbers){ +var _77a=i+2; +if(opts.pagination){ +_77a+=(opts.pageNumber-1)*opts.pageSize; +} +tr.find("div.datagrid-cell-rownumber").html(_77a); +} +if(opts.striped){ +tr.removeClass("datagrid-row-alt").addClass((i+1)%2?"datagrid-row-alt":""); +} +} +}; +function _77b(_77c){ +var _77d=_77c?1:2; +var _77e=$(_774).datagrid("getColumnFields",_77c); +var _77f=_776.rowIdPrefix+"-"+_77d+"-"+_775; +var tr=""; +if(_775>=data.rows.length){ +if(data.rows.length){ +opts.finder.getTr(_774,"","last",_77d).after(tr); +}else{ +var cc=_77c?dc.body1:dc.body2; +cc.html(""+tr+"
        "); +} +}else{ +opts.finder.getTr(_774,_775+1,"body",_77d).before(tr); +} +}; +_777.call(this,true); +_777.call(this,false); +_77b.call(this,true); +_77b.call(this,false); +data.total+=1; +data.rows.splice(_775,0,row); +this.refreshRow.call(this,_774,_775); +},deleteRow:function(_780,_781){ +var _782=$.data(_780,"datagrid"); +var opts=_782.options; +var data=_782.data; +function _783(_784){ +var _785=_784?1:2; +for(var i=_781+1;itable>tbody>tr[datagrid-row-index="+_792+"]"); +} +return tr; +}else{ +if(type=="footer"){ +return (_793==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index="+_792+"]"); +}else{ +if(type=="selected"){ +return (_793==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-selected"); +}else{ +if(type=="highlight"){ +return (_793==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-over"); +}else{ +if(type=="checked"){ +return (_793==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-checked"); +}else{ +if(type=="editing"){ +return (_793==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-editing"); +}else{ +if(type=="last"){ +return (_793==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]:last"); +}else{ +if(type=="allbody"){ +return (_793==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]"); +}else{ +if(type=="allfooter"){ +return (_793==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index]"); +} +} +} +} +} +} +} +} +} +} +},getRow:function(_795,p){ +var _796=(typeof p=="object")?p.attr("datagrid-row-index"):p; +return $.data(_795,"datagrid").data.rows[parseInt(_796)]; +},getRows:function(_797){ +return $(_797).datagrid("getRows"); +}},view:_745,onBeforeLoad:function(_798){ +},onLoadSuccess:function(){ +},onLoadError:function(){ +},onClickRow:function(_799,_79a){ +},onDblClickRow:function(_79b,_79c){ +},onClickCell:function(_79d,_79e,_79f){ +},onDblClickCell:function(_7a0,_7a1,_7a2){ +},onBeforeSortColumn:function(sort,_7a3){ +},onSortColumn:function(sort,_7a4){ +},onResizeColumn:function(_7a5,_7a6){ +},onBeforeSelect:function(_7a7,_7a8){ +},onSelect:function(_7a9,_7aa){ +},onBeforeUnselect:function(_7ab,_7ac){ +},onUnselect:function(_7ad,_7ae){ +},onSelectAll:function(rows){ +},onUnselectAll:function(rows){ +},onBeforeCheck:function(_7af,_7b0){ +},onCheck:function(_7b1,_7b2){ +},onBeforeUncheck:function(_7b3,_7b4){ +},onUncheck:function(_7b5,_7b6){ +},onCheckAll:function(rows){ +},onUncheckAll:function(rows){ +},onBeforeEdit:function(_7b7,_7b8){ +},onBeginEdit:function(_7b9,_7ba){ +},onEndEdit:function(_7bb,_7bc,_7bd){ +},onAfterEdit:function(_7be,_7bf,_7c0){ +},onCancelEdit:function(_7c1,_7c2){ +},onHeaderContextMenu:function(e,_7c3){ +},onRowContextMenu:function(e,_7c4,_7c5){ +}}); +})(jQuery); +(function($){ +var _7c6; +$(document).unbind(".propertygrid").bind("mousedown.propertygrid",function(e){ +var p=$(e.target).closest("div.datagrid-view,div.combo-panel"); +if(p.length){ +return; +} +_7c7(_7c6); +_7c6=undefined; +}); +function _7c8(_7c9){ +var _7ca=$.data(_7c9,"propertygrid"); +var opts=$.data(_7c9,"propertygrid").options; +$(_7c9).datagrid($.extend({},opts,{cls:"propertygrid",view:(opts.showGroup?opts.groupView:opts.view),onBeforeEdit:function(_7cb,row){ +if(opts.onBeforeEdit.call(_7c9,_7cb,row)==false){ +return false; +} +var dg=$(this); +var row=dg.datagrid("getRows")[_7cb]; +var col=dg.datagrid("getColumnOption","value"); +col.editor=row.editor; +},onClickCell:function(_7cc,_7cd,_7ce){ +if(_7c6!=this){ +_7c7(_7c6); +_7c6=this; +} +if(opts.editIndex!=_7cc){ +_7c7(_7c6); +$(this).datagrid("beginEdit",_7cc); +var ed=$(this).datagrid("getEditor",{index:_7cc,field:_7cd}); +if(!ed){ +ed=$(this).datagrid("getEditor",{index:_7cc,field:"value"}); +} +if(ed){ +var t=$(ed.target); +var _7cf=t.data("textbox")?t.textbox("textbox"):t; +_7cf.focus(); +opts.editIndex=_7cc; +} +} +opts.onClickCell.call(_7c9,_7cc,_7cd,_7ce); +},loadFilter:function(data){ +_7c7(this); +return opts.loadFilter.call(this,data); +}})); +}; +function _7c7(_7d0){ +var t=$(_7d0); +if(!t.length){ +return; +} +var opts=$.data(_7d0,"propertygrid").options; +opts.finder.getTr(_7d0,null,"editing").each(function(){ +var _7d1=parseInt($(this).attr("datagrid-row-index")); +if(t.datagrid("validateRow",_7d1)){ +t.datagrid("endEdit",_7d1); +}else{ +t.datagrid("cancelEdit",_7d1); +} +}); +opts.editIndex=undefined; +}; +$.fn.propertygrid=function(_7d2,_7d3){ +if(typeof _7d2=="string"){ +var _7d4=$.fn.propertygrid.methods[_7d2]; +if(_7d4){ +return _7d4(this,_7d3); +}else{ +return this.datagrid(_7d2,_7d3); +} +} +_7d2=_7d2||{}; +return this.each(function(){ +var _7d5=$.data(this,"propertygrid"); +if(_7d5){ +$.extend(_7d5.options,_7d2); +}else{ +var opts=$.extend({},$.fn.propertygrid.defaults,$.fn.propertygrid.parseOptions(this),_7d2); +opts.frozenColumns=$.extend(true,[],opts.frozenColumns); +opts.columns=$.extend(true,[],opts.columns); +$.data(this,"propertygrid",{options:opts}); +} +_7c8(this); +}); +}; +$.fn.propertygrid.methods={options:function(jq){ +return $.data(jq[0],"propertygrid").options; +}}; +$.fn.propertygrid.parseOptions=function(_7d6){ +return $.extend({},$.fn.datagrid.parseOptions(_7d6),$.parser.parseOptions(_7d6,[{showGroup:"boolean"}])); +}; +var _7d7=$.extend({},$.fn.datagrid.defaults.view,{render:function(_7d8,_7d9,_7da){ +var _7db=[]; +var _7dc=this.groups; +for(var i=0;i<_7dc.length;i++){ +_7db.push(this.renderGroup.call(this,_7d8,i,_7dc[i],_7da)); +} +$(_7d9).html(_7db.join("")); +},renderGroup:function(_7dd,_7de,_7df,_7e0){ +var _7e1=$.data(_7dd,"datagrid"); +var opts=_7e1.options; +var _7e2=$(_7dd).datagrid("getColumnFields",_7e0); +var _7e3=[]; +_7e3.push("
        "); +_7e3.push(""); +_7e3.push(""); +if((_7e0&&(opts.rownumbers||opts.frozenColumns.length))||(!_7e0&&!(opts.rownumbers||opts.frozenColumns.length))){ +_7e3.push(""); +} +_7e3.push(""); +_7e3.push(""); +_7e3.push("
         "); +if(!_7e0){ +_7e3.push(""); +_7e3.push(opts.groupFormatter.call(_7dd,_7df.value,_7df.rows)); +_7e3.push(""); +} +_7e3.push("
        "); +_7e3.push("
        "); +_7e3.push(""); +var _7e4=_7df.startIndex; +for(var j=0;j<_7df.rows.length;j++){ +var css=opts.rowStyler?opts.rowStyler.call(_7dd,_7e4,_7df.rows[j]):""; +var _7e5=""; +var _7e6=""; +if(typeof css=="string"){ +_7e6=css; +}else{ +if(css){ +_7e5=css["class"]||""; +_7e6=css["style"]||""; +} +} +var cls="class=\"datagrid-row "+(_7e4%2&&opts.striped?"datagrid-row-alt ":" ")+_7e5+"\""; +var _7e7=_7e6?"style=\""+_7e6+"\"":""; +var _7e8=_7e1.rowIdPrefix+"-"+(_7e0?1:2)+"-"+_7e4; +_7e3.push(""); +_7e3.push(this.renderRow.call(this,_7dd,_7e2,_7e0,_7e4,_7df.rows[j])); +_7e3.push(""); +_7e4++; +} +_7e3.push("
        "); +return _7e3.join(""); +},bindEvents:function(_7e9){ +var _7ea=$.data(_7e9,"datagrid"); +var dc=_7ea.dc; +var body=dc.body1.add(dc.body2); +var _7eb=($.data(body[0],"events")||$._data(body[0],"events")).click[0].handler; +body.unbind("click").bind("click",function(e){ +var tt=$(e.target); +var _7ec=tt.closest("span.datagrid-row-expander"); +if(_7ec.length){ +var _7ed=_7ec.closest("div.datagrid-group").attr("group-index"); +if(_7ec.hasClass("datagrid-row-collapse")){ +$(_7e9).datagrid("collapseGroup",_7ed); +}else{ +$(_7e9).datagrid("expandGroup",_7ed); +} +}else{ +_7eb(e); +} +e.stopPropagation(); +}); +},onBeforeRender:function(_7ee,rows){ +var _7ef=$.data(_7ee,"datagrid"); +var opts=_7ef.options; +_7f0(); +var _7f1=[]; +for(var i=0;i"+".datagrid-group{height:25px;overflow:hidden;font-weight:bold;border-bottom:1px solid #ccc;}"+""); +} +}; +}}); +$.extend($.fn.datagrid.methods,{expandGroup:function(jq,_7f8){ +return jq.each(function(){ +var view=$.data(this,"datagrid").dc.view; +var _7f9=view.find(_7f8!=undefined?"div.datagrid-group[group-index=\""+_7f8+"\"]":"div.datagrid-group"); +var _7fa=_7f9.find("span.datagrid-row-expander"); +if(_7fa.hasClass("datagrid-row-expand")){ +_7fa.removeClass("datagrid-row-expand").addClass("datagrid-row-collapse"); +_7f9.next("table").show(); +} +$(this).datagrid("fixRowHeight"); +}); +},collapseGroup:function(jq,_7fb){ +return jq.each(function(){ +var view=$.data(this,"datagrid").dc.view; +var _7fc=view.find(_7fb!=undefined?"div.datagrid-group[group-index=\""+_7fb+"\"]":"div.datagrid-group"); +var _7fd=_7fc.find("span.datagrid-row-expander"); +if(_7fd.hasClass("datagrid-row-collapse")){ +_7fd.removeClass("datagrid-row-collapse").addClass("datagrid-row-expand"); +_7fc.next("table").hide(); +} +$(this).datagrid("fixRowHeight"); +}); +}}); +$.extend(_7d7,{refreshGroupTitle:function(_7fe,_7ff){ +var _800=$.data(_7fe,"datagrid"); +var opts=_800.options; +var dc=_800.dc; +var _801=this.groups[_7ff]; +var span=dc.body2.children("div.datagrid-group[group-index="+_7ff+"]").find("span.datagrid-group-title"); +span.html(opts.groupFormatter.call(_7fe,_801.value,_801.rows)); +},insertRow:function(_802,_803,row){ +var _804=$.data(_802,"datagrid"); +var opts=_804.options; +var dc=_804.dc; +var _805=null; +var _806; +for(var i=0;i_805.startIndex+_805.rows.length){ +_803=_805.startIndex+_805.rows.length; +} +} +$.fn.datagrid.defaults.view.insertRow.call(this,_802,_803,row); +if(_803>=_805.startIndex+_805.rows.length){ +_807(_803,true); +_807(_803,false); +} +_805.rows.splice(_803-_805.startIndex,0,row); +}else{ +_805={value:row[opts.groupField],rows:[row],startIndex:_804.data.rows.length}; +_806=this.groups.length; +dc.body1.append(this.renderGroup.call(this,_802,_806,_805,true)); +dc.body2.append(this.renderGroup.call(this,_802,_806,_805,false)); +this.groups.push(_805); +_804.data.rows.push(row); +} +this.refreshGroupTitle(_802,_806); +function _807(_808,_809){ +var _80a=_809?1:2; +var _80b=opts.finder.getTr(_802,_808-1,"body",_80a); +var tr=opts.finder.getTr(_802,_808,"body",_80a); +tr.insertAfter(_80b); +}; +},updateRow:function(_80c,_80d,row){ +var opts=$.data(_80c,"datagrid").options; +$.fn.datagrid.defaults.view.updateRow.call(this,_80c,_80d,row); +var tb=opts.finder.getTr(_80c,_80d,"body",2).closest("table.datagrid-btable"); +var _80e=parseInt(tb.prev().attr("group-index")); +this.refreshGroupTitle(_80c,_80e); +},deleteRow:function(_80f,_810){ +var _811=$.data(_80f,"datagrid"); +var opts=_811.options; +var dc=_811.dc; +var body=dc.body1.add(dc.body2); +var tb=opts.finder.getTr(_80f,_810,"body",2).closest("table.datagrid-btable"); +var _812=parseInt(tb.prev().attr("group-index")); +$.fn.datagrid.defaults.view.deleteRow.call(this,_80f,_810); +var _813=this.groups[_812]; +if(_813.rows.length>1){ +_813.rows.splice(_810-_813.startIndex,1); +this.refreshGroupTitle(_80f,_812); +}else{ +body.children("div.datagrid-group[group-index="+_812+"]").remove(); +for(var i=_812+1;i"+""+"
        "+""+"").insertAfter(tr); +}; +}; +function _83c(_83d,_83e,data,_83f){ +var _840=$.data(_83d,"treegrid"); +var opts=_840.options; +var dc=_840.dc; +data=opts.loadFilter.call(_83d,data,_83e); +var node=find(_83d,_83e); +if(node){ +var _841=opts.finder.getTr(_83d,_83e,"body",1); +var _842=opts.finder.getTr(_83d,_83e,"body",2); +var cc1=_841.next("tr.treegrid-tr-tree").children("td").children("div"); +var cc2=_842.next("tr.treegrid-tr-tree").children("td").children("div"); +if(!_83f){ +node.children=[]; +} +}else{ +var cc1=dc.body1; +var cc2=dc.body2; +if(!_83f){ +_840.data=[]; +} +} +if(!_83f){ +cc1.empty(); +cc2.empty(); +} +if(opts.view.onBeforeRender){ +opts.view.onBeforeRender.call(opts.view,_83d,_83e,data); +} +opts.view.render.call(opts.view,_83d,cc1,true); +opts.view.render.call(opts.view,_83d,cc2,false); +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,_83d,dc.footer1,true); +opts.view.renderFooter.call(opts.view,_83d,dc.footer2,false); +} +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,_83d); +} +if(!_83e&&opts.pagination){ +var _843=$.data(_83d,"treegrid").total; +var _844=$(_83d).datagrid("getPager"); +if(_844.pagination("options").total!=_843){ +_844.pagination({total:_843}); +} +} +_826(_83d); +_82e(_83d); +$(_83d).treegrid("showLines"); +$(_83d).treegrid("setSelectionState"); +$(_83d).treegrid("autoSizeColumn"); +opts.onLoadSuccess.call(_83d,node,data); +}; +function _825(_845,_846,_847,_848,_849){ +var opts=$.data(_845,"treegrid").options; +var body=$(_845).datagrid("getPanel").find("div.datagrid-body"); +if(_847){ +opts.queryParams=_847; +} +var _84a=$.extend({},opts.queryParams); +if(opts.pagination){ +$.extend(_84a,{page:opts.pageNumber,rows:opts.pageSize}); +} +if(opts.sortName){ +$.extend(_84a,{sort:opts.sortName,order:opts.sortOrder}); +} +var row=find(_845,_846); +if(opts.onBeforeLoad.call(_845,row,_84a)==false){ +return; +} +var _84b=body.find("tr[node-id=\""+_846+"\"] span.tree-folder"); +_84b.addClass("tree-loading"); +$(_845).treegrid("loading"); +var _84c=opts.loader.call(_845,_84a,function(data){ +_84b.removeClass("tree-loading"); +$(_845).treegrid("loaded"); +_83c(_845,_846,data,_848); +if(_849){ +_849(); +} +},function(){ +_84b.removeClass("tree-loading"); +$(_845).treegrid("loaded"); +opts.onLoadError.apply(_845,arguments); +if(_849){ +_849(); +} +}); +if(_84c==false){ +_84b.removeClass("tree-loading"); +$(_845).treegrid("loaded"); +} +}; +function _84d(_84e){ +var rows=_84f(_84e); +if(rows.length){ +return rows[0]; +}else{ +return null; +} +}; +function _84f(_850){ +return $.data(_850,"treegrid").data; +}; +function _851(_852,_853){ +var row=find(_852,_853); +if(row._parentId){ +return find(_852,row._parentId); +}else{ +return null; +} +}; +function _82a(_854,_855){ +var opts=$.data(_854,"treegrid").options; +var body=$(_854).datagrid("getPanel").find("div.datagrid-view2 div.datagrid-body"); +var _856=[]; +if(_855){ +_857(_855); +}else{ +var _858=_84f(_854); +for(var i=0;i<_858.length;i++){ +_856.push(_858[i]); +_857(_858[i][opts.idField]); +} +} +function _857(_859){ +var _85a=find(_854,_859); +if(_85a&&_85a.children){ +for(var i=0,len=_85a.children.length;i").insertBefore(_87a); +if(hit.prev().length){ +hit.prev().remove(); +} +} +} +_83c(_878,_879.parent,_879.data,true); +}; +function _87b(_87c,_87d){ +var ref=_87d.before||_87d.after; +var opts=$.data(_87c,"treegrid").options; +var _87e=_851(_87c,ref); +_877(_87c,{parent:(_87e?_87e[opts.idField]:null),data:[_87d.data]}); +var _87f=_87e?_87e.children:$(_87c).treegrid("getRoots"); +for(var i=0;i<_87f.length;i++){ +if(_87f[i][opts.idField]==ref){ +var _880=_87f[_87f.length-1]; +_87f.splice(_87d.before?i:(i+1),0,_880); +_87f.splice(_87f.length-1,1); +break; +} +} +_881(true); +_881(false); +_82e(_87c); +$(_87c).treegrid("showLines"); +function _881(_882){ +var _883=_882?1:2; +var tr=opts.finder.getTr(_87c,_87d.data[opts.idField],"body",_883); +var _884=tr.closest("table.datagrid-btable"); +tr=tr.parent().children(); +var dest=opts.finder.getTr(_87c,ref,"body",_883); +if(_87d.before){ +tr.insertBefore(dest); +}else{ +var sub=dest.next("tr.treegrid-tr-tree"); +tr.insertAfter(sub.length?sub:dest); +} +_884.remove(); +}; +}; +function _885(_886,_887){ +var _888=$.data(_886,"treegrid"); +$(_886).datagrid("deleteRow",_887); +_82e(_886); +_888.total-=1; +$(_886).datagrid("getPager").pagination("refresh",{total:_888.total}); +$(_886).treegrid("showLines"); +}; +function _889(_88a){ +var t=$(_88a); +var opts=t.treegrid("options"); +if(opts.lines){ +t.treegrid("getPanel").addClass("tree-lines"); +}else{ +t.treegrid("getPanel").removeClass("tree-lines"); +return; +} +t.treegrid("getPanel").find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); +t.treegrid("getPanel").find("div.datagrid-cell").removeClass("tree-node-last tree-root-first tree-root-one"); +var _88b=t.treegrid("getRoots"); +if(_88b.length>1){ +_88c(_88b[0]).addClass("tree-root-first"); +}else{ +if(_88b.length==1){ +_88c(_88b[0]).addClass("tree-root-one"); +} +} +_88d(_88b); +_88e(_88b); +function _88d(_88f){ +$.map(_88f,function(node){ +if(node.children&&node.children.length){ +_88d(node.children); +}else{ +var cell=_88c(node); +cell.find(".tree-icon").prev().addClass("tree-join"); +} +}); +if(_88f.length){ +var cell=_88c(_88f[_88f.length-1]); +cell.addClass("tree-node-last"); +cell.find(".tree-join").removeClass("tree-join").addClass("tree-joinbottom"); +} +}; +function _88e(_890){ +$.map(_890,function(node){ +if(node.children&&node.children.length){ +_88e(node.children); +} +}); +for(var i=0;i<_890.length-1;i++){ +var node=_890[i]; +var _891=t.treegrid("getLevel",node[opts.idField]); +var tr=opts.finder.getTr(_88a,node[opts.idField]); +var cc=tr.next().find("tr.datagrid-row td[field=\""+opts.treeField+"\"] div.datagrid-cell"); +cc.find("span:eq("+(_891-1)+")").addClass("tree-line"); +} +}; +function _88c(node){ +var tr=opts.finder.getTr(_88a,node[opts.idField]); +var cell=tr.find("td[field=\""+opts.treeField+"\"] div.datagrid-cell"); +return cell; +}; +}; +$.fn.treegrid=function(_892,_893){ +if(typeof _892=="string"){ +var _894=$.fn.treegrid.methods[_892]; +if(_894){ +return _894(this,_893); +}else{ +return this.datagrid(_892,_893); +} +} +_892=_892||{}; +return this.each(function(){ +var _895=$.data(this,"treegrid"); +if(_895){ +$.extend(_895.options,_892); +}else{ +_895=$.data(this,"treegrid",{options:$.extend({},$.fn.treegrid.defaults,$.fn.treegrid.parseOptions(this),_892),data:[]}); +} +_815(this); +if(_895.options.data){ +$(this).treegrid("loadData",_895.options.data); +} +_825(this); +}); +}; +$.fn.treegrid.methods={options:function(jq){ +return $.data(jq[0],"treegrid").options; +},resize:function(jq,_896){ +return jq.each(function(){ +$(this).datagrid("resize",_896); +}); +},fixRowHeight:function(jq,_897){ +return jq.each(function(){ +_826(this,_897); +}); +},loadData:function(jq,data){ +return jq.each(function(){ +_83c(this,data.parent,data); +}); +},load:function(jq,_898){ +return jq.each(function(){ +$(this).treegrid("options").pageNumber=1; +$(this).treegrid("getPager").pagination({pageNumber:1}); +$(this).treegrid("reload",_898); +}); +},reload:function(jq,id){ +return jq.each(function(){ +var opts=$(this).treegrid("options"); +var _899={}; +if(typeof id=="object"){ +_899=id; +}else{ +_899=$.extend({},opts.queryParams); +_899.id=id; +} +if(_899.id){ +var node=$(this).treegrid("find",_899.id); +if(node.children){ +node.children.splice(0,node.children.length); +} +opts.queryParams=_899; +var tr=opts.finder.getTr(this,_899.id); +tr.next("tr.treegrid-tr-tree").remove(); +tr.find("span.tree-hit").removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +_864(this,_899.id); +}else{ +_825(this,null,_899); +} +}); +},reloadFooter:function(jq,_89a){ +return jq.each(function(){ +var opts=$.data(this,"treegrid").options; +var dc=$.data(this,"datagrid").dc; +if(_89a){ +$.data(this,"treegrid").footer=_89a; +} +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,this,dc.footer1,true); +opts.view.renderFooter.call(opts.view,this,dc.footer2,false); +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,this); +} +$(this).treegrid("fixRowHeight"); +} +}); +},getData:function(jq){ +return $.data(jq[0],"treegrid").data; +},getFooterRows:function(jq){ +return $.data(jq[0],"treegrid").footer; +},getRoot:function(jq){ +return _84d(jq[0]); +},getRoots:function(jq){ +return _84f(jq[0]); +},getParent:function(jq,id){ +return _851(jq[0],id); +},getChildren:function(jq,id){ +return _82a(jq[0],id); +},getLevel:function(jq,id){ +return _85c(jq[0],id); +},find:function(jq,id){ +return find(jq[0],id); +},isLeaf:function(jq,id){ +var opts=$.data(jq[0],"treegrid").options; +var tr=opts.finder.getTr(jq[0],id); +var hit=tr.find("span.tree-hit"); +return hit.length==0; +},select:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("selectRow",id); +}); +},unselect:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("unselectRow",id); +}); +},collapse:function(jq,id){ +return jq.each(function(){ +_861(this,id); +}); +},expand:function(jq,id){ +return jq.each(function(){ +_864(this,id); +}); +},toggle:function(jq,id){ +return jq.each(function(){ +_834(this,id); +}); +},collapseAll:function(jq,id){ +return jq.each(function(){ +_86c(this,id); +}); +},expandAll:function(jq,id){ +return jq.each(function(){ +_870(this,id); +}); +},expandTo:function(jq,id){ +return jq.each(function(){ +_874(this,id); +}); +},append:function(jq,_89b){ +return jq.each(function(){ +_877(this,_89b); +}); +},insert:function(jq,_89c){ +return jq.each(function(){ +_87b(this,_89c); +}); +},remove:function(jq,id){ +return jq.each(function(){ +_885(this,id); +}); +},pop:function(jq,id){ +var row=jq.treegrid("find",id); +jq.treegrid("remove",id); +return row; +},refresh:function(jq,id){ +return jq.each(function(){ +var opts=$.data(this,"treegrid").options; +opts.view.refreshRow.call(opts.view,this,id); +}); +},update:function(jq,_89d){ +return jq.each(function(){ +var opts=$.data(this,"treegrid").options; +opts.view.updateRow.call(opts.view,this,_89d.id,_89d.row); +}); +},beginEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("beginEdit",id); +$(this).treegrid("fixRowHeight",id); +}); +},endEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("endEdit",id); +}); +},cancelEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("cancelEdit",id); +}); +},showLines:function(jq){ +return jq.each(function(){ +_889(this); +}); +}}; +$.fn.treegrid.parseOptions=function(_89e){ +return $.extend({},$.fn.datagrid.parseOptions(_89e),$.parser.parseOptions(_89e,["treeField",{animate:"boolean"}])); +}; +var _89f=$.extend({},$.fn.datagrid.defaults.view,{render:function(_8a0,_8a1,_8a2){ +var opts=$.data(_8a0,"treegrid").options; +var _8a3=$(_8a0).datagrid("getColumnFields",_8a2); +var _8a4=$.data(_8a0,"datagrid").rowIdPrefix; +if(_8a2){ +if(!(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length))){ +return; +} +} +var view=this; +if(this.treeNodes&&this.treeNodes.length){ +var _8a5=_8a6(_8a2,this.treeLevel,this.treeNodes); +$(_8a1).append(_8a5.join("")); +} +function _8a6(_8a7,_8a8,_8a9){ +var _8aa=$(_8a0).treegrid("getParent",_8a9[0][opts.idField]); +var _8ab=(_8aa?_8aa.children.length:$(_8a0).treegrid("getRoots").length)-_8a9.length; +var _8ac=[""]; +for(var i=0;i<_8a9.length;i++){ +var row=_8a9[i]; +if(row.state!="open"&&row.state!="closed"){ +row.state="open"; +} +var css=opts.rowStyler?opts.rowStyler.call(_8a0,row):""; +var _8ad=""; +var _8ae=""; +if(typeof css=="string"){ +_8ae=css; +}else{ +if(css){ +_8ad=css["class"]||""; +_8ae=css["style"]||""; +} +} +var cls="class=\"datagrid-row "+(_8ab++%2&&opts.striped?"datagrid-row-alt ":" ")+_8ad+"\""; +var _8af=_8ae?"style=\""+_8ae+"\"":""; +var _8b0=_8a4+"-"+(_8a7?1:2)+"-"+row[opts.idField]; +_8ac.push(""); +_8ac=_8ac.concat(view.renderRow.call(view,_8a0,_8a3,_8a7,_8a8,row)); +_8ac.push(""); +if(row.children&&row.children.length){ +var tt=_8a6(_8a7,_8a8+1,row.children); +var v=row.state=="closed"?"none":"block"; +_8ac.push(""); +} +} +_8ac.push("
        "); +_8ac=_8ac.concat(tt); +_8ac.push("
        "); +return _8ac; +}; +},renderFooter:function(_8b1,_8b2,_8b3){ +var opts=$.data(_8b1,"treegrid").options; +var rows=$.data(_8b1,"treegrid").footer||[]; +var _8b4=$(_8b1).datagrid("getColumnFields",_8b3); +var _8b5=[""]; +for(var i=0;i"); +_8b5.push(this.renderRow.call(this,_8b1,_8b4,_8b3,0,row)); +_8b5.push(""); +} +_8b5.push("
        "); +$(_8b2).html(_8b5.join("")); +},renderRow:function(_8b6,_8b7,_8b8,_8b9,row){ +var opts=$.data(_8b6,"treegrid").options; +var cc=[]; +if(_8b8&&opts.rownumbers){ +cc.push("
        0
        "); +} +for(var i=0;i<_8b7.length;i++){ +var _8ba=_8b7[i]; +var col=$(_8b6).datagrid("getColumnOption",_8ba); +if(col){ +var css=col.styler?(col.styler(row[_8ba],row)||""):""; +var _8bb=""; +var _8bc=""; +if(typeof css=="string"){ +_8bc=css; +}else{ +if(cc){ +_8bb=css["class"]||""; +_8bc=css["style"]||""; +} +} +var cls=_8bb?"class=\""+_8bb+"\"":""; +var _8bd=col.hidden?"style=\"display:none;"+_8bc+"\"":(_8bc?"style=\""+_8bc+"\"":""); +cc.push(""); +var _8bd=""; +if(!col.checkbox){ +if(col.align){ +_8bd+="text-align:"+col.align+";"; +} +if(!opts.nowrap){ +_8bd+="white-space:normal;height:auto;"; +}else{ +if(opts.autoRowHeight){ +_8bd+="height:auto;"; +} +} +} +cc.push("
        "); +if(col.checkbox){ +if(row.checked){ +cc.push(""); +}else{ +var val=null; +if(col.formatter){ +val=col.formatter(row[_8ba],row); +}else{ +val=row[_8ba]; +} +if(_8ba==opts.treeField){ +for(var j=0;j<_8b9;j++){ +cc.push(""); +} +if(row.state=="closed"){ +cc.push(""); +cc.push(""); +}else{ +if(row.children&&row.children.length){ +cc.push(""); +cc.push(""); +}else{ +cc.push(""); +cc.push(""); +} +} +cc.push(""+val+""); +}else{ +cc.push(val); +} +} +cc.push("
        "); +cc.push(""); +} +} +return cc.join(""); +},refreshRow:function(_8be,id){ +this.updateRow.call(this,_8be,id,{}); +},updateRow:function(_8bf,id,row){ +var opts=$.data(_8bf,"treegrid").options; +var _8c0=$(_8bf).treegrid("find",id); +$.extend(_8c0,row); +var _8c1=$(_8bf).treegrid("getLevel",id)-1; +var _8c2=opts.rowStyler?opts.rowStyler.call(_8bf,_8c0):""; +var _8c3=$.data(_8bf,"datagrid").rowIdPrefix; +var _8c4=_8c0[opts.idField]; +function _8c5(_8c6){ +var _8c7=$(_8bf).treegrid("getColumnFields",_8c6); +var tr=opts.finder.getTr(_8bf,id,"body",(_8c6?1:2)); +var _8c8=tr.find("div.datagrid-cell-rownumber").html(); +var _8c9=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); +tr.html(this.renderRow(_8bf,_8c7,_8c6,_8c1,_8c0)); +tr.attr("style",_8c2||""); +tr.find("div.datagrid-cell-rownumber").html(_8c8); +if(_8c9){ +tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); +} +if(_8c4!=id){ +tr.attr("id",_8c3+"-"+(_8c6?1:2)+"-"+_8c4); +tr.attr("node-id",_8c4); +} +}; +_8c5.call(this,true); +_8c5.call(this,false); +$(_8bf).treegrid("fixRowHeight",id); +},deleteRow:function(_8ca,id){ +var opts=$.data(_8ca,"treegrid").options; +var tr=opts.finder.getTr(_8ca,id); +tr.next("tr.treegrid-tr-tree").remove(); +tr.remove(); +var _8cb=del(id); +if(_8cb){ +if(_8cb.children.length==0){ +tr=opts.finder.getTr(_8ca,_8cb[opts.idField]); +tr.next("tr.treegrid-tr-tree").remove(); +var cell=tr.children("td[field=\""+opts.treeField+"\"]").children("div.datagrid-cell"); +cell.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); +cell.find(".tree-hit").remove(); +$("").prependTo(cell); +} +} +function del(id){ +var cc; +var _8cc=$(_8ca).treegrid("getParent",id); +if(_8cc){ +cc=_8cc.children; +}else{ +cc=$(_8ca).treegrid("getData"); +} +for(var i=0;ib?1:-1); +}; +r=_8d7(r1[sn],r2[sn])*(so=="asc"?1:-1); +if(r!=0){ +return r; +} +} +return r; +}); +for(var i=0;i"); +if(!_8f5){ +_8f8.push(""); +_8f8.push(opts.groupFormatter.call(_8f2,_8f4.value,_8f4.rows)); +_8f8.push(""); +} +_8f8.push("
        "); +_8f8.push(this.renderTable(_8f2,_8f4.startIndex,_8f4.rows,_8f5)); +return _8f8.join(""); +},groupRows:function(_8f9,rows){ +var _8fa=$.data(_8f9,"datagrid"); +var opts=_8fa.options; +var _8fb=[]; +for(var i=0;idiv.combo-p>div.combo-panel:visible").panel("close"); +}); +}); +function _90b(_90c){ +var _90d=$.data(_90c,"combo"); +var opts=_90d.options; +if(!_90d.panel){ +_90d.panel=$("
        ").appendTo("body"); +_90d.panel.panel({minWidth:opts.panelMinWidth,maxWidth:opts.panelMaxWidth,minHeight:opts.panelMinHeight,maxHeight:opts.panelMaxHeight,doSize:false,closed:true,cls:"combo-p",style:{position:"absolute",zIndex:10},onOpen:function(){ +var _90e=$(this).panel("options").comboTarget; +var _90f=$.data(_90e,"combo"); +if(_90f){ +_90f.options.onShowPanel.call(_90e); +} +},onBeforeClose:function(){ +_90a(this); +},onClose:function(){ +var _910=$(this).panel("options").comboTarget; +var _911=$(_910).data("combo"); +if(_911){ +_911.options.onHidePanel.call(_910); +} +}}); +} +var _912=$.extend(true,[],opts.icons); +if(opts.hasDownArrow){ +_912.push({iconCls:"combo-arrow",handler:function(e){ +_916(e.data.target); +}}); +} +$(_90c).addClass("combo-f").textbox($.extend({},opts,{icons:_912,onChange:function(){ +}})); +$(_90c).attr("comboName",$(_90c).attr("textboxName")); +_90d.combo=$(_90c).next(); +_90d.combo.addClass("combo"); +}; +function _913(_914){ +var _915=$.data(_914,"combo"); +var opts=_915.options; +var p=_915.panel; +if(p.is(":visible")){ +p.panel("close"); +} +if(!opts.cloned){ +p.panel("destroy"); +} +$(_914).textbox("destroy"); +}; +function _916(_917){ +var _918=$.data(_917,"combo").panel; +if(_918.is(":visible")){ +_919(_917); +}else{ +var p=$(_917).closest("div.combo-panel"); +$("div.combo-panel:visible").not(_918).not(p).panel("close"); +$(_917).combo("showPanel"); +} +$(_917).combo("textbox").focus(); +}; +function _90a(_91a){ +$(_91a).find(".combo-f").each(function(){ +var p=$(this).combo("panel"); +if(p.is(":visible")){ +p.panel("close"); +} +}); +}; +function _91b(e){ +var _91c=e.data.target; +var _91d=$.data(_91c,"combo"); +var opts=_91d.options; +var _91e=_91d.panel; +if(!opts.editable){ +_916(_91c); +}else{ +var p=$(_91c).closest("div.combo-panel"); +$("div.combo-panel:visible").not(_91e).not(p).panel("close"); +} +}; +function _91f(e){ +var _920=e.data.target; +var t=$(_920); +var _921=t.data("combo"); +var opts=t.combo("options"); +switch(e.keyCode){ +case 38: +opts.keyHandler.up.call(_920,e); +break; +case 40: +opts.keyHandler.down.call(_920,e); +break; +case 37: +opts.keyHandler.left.call(_920,e); +break; +case 39: +opts.keyHandler.right.call(_920,e); +break; +case 13: +e.preventDefault(); +opts.keyHandler.enter.call(_920,e); +return false; +case 9: +case 27: +_919(_920); +break; +default: +if(opts.editable){ +if(_921.timer){ +clearTimeout(_921.timer); +} +_921.timer=setTimeout(function(){ +var q=t.combo("getText"); +if(_921.previousText!=q){ +_921.previousText=q; +t.combo("showPanel"); +opts.keyHandler.query.call(_920,q,e); +t.combo("validate"); +} +},opts.delay); +} +} +}; +function _922(_923){ +var _924=$.data(_923,"combo"); +var _925=_924.combo; +var _926=_924.panel; +var opts=$(_923).combo("options"); +var _927=_926.panel("options"); +_927.comboTarget=_923; +if(_927.closed){ +_926.panel("panel").show().css({zIndex:($.fn.menu?$.fn.menu.defaults.zIndex++:$.fn.window.defaults.zIndex++),left:-999999}); +_926.panel("resize",{width:(opts.panelWidth?opts.panelWidth:_925._outerWidth()),height:opts.panelHeight}); +_926.panel("panel").hide(); +_926.panel("open"); +} +(function(){ +if(_926.is(":visible")){ +_926.panel("move",{left:_928(),top:_929()}); +setTimeout(arguments.callee,200); +} +})(); +function _928(){ +var left=_925.offset().left; +if(opts.panelAlign=="right"){ +left+=_925._outerWidth()-_926._outerWidth(); +} +if(left+_926._outerWidth()>$(window)._outerWidth()+$(document).scrollLeft()){ +left=$(window)._outerWidth()+$(document).scrollLeft()-_926._outerWidth(); +} +if(left<0){ +left=0; +} +return left; +}; +function _929(){ +var top=_925.offset().top+_925._outerHeight(); +if(top+_926._outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ +top=_925.offset().top-_926._outerHeight(); +} +if(top<$(document).scrollTop()){ +top=_925.offset().top+_925._outerHeight(); +} +return top; +}; +}; +function _919(_92a){ +var _92b=$.data(_92a,"combo").panel; +_92b.panel("close"); +}; +function _92c(_92d,text){ +var _92e=$.data(_92d,"combo"); +var _92f=$(_92d).textbox("getText"); +if(_92f!=text){ +$(_92d).textbox("setText",text); +_92e.previousText=text; +} +}; +function _930(_931){ +var _932=[]; +var _933=$.data(_931,"combo").combo; +_933.find(".textbox-value").each(function(){ +_932.push($(this).val()); +}); +return _932; +}; +function _934(_935,_936){ +var _937=$.data(_935,"combo"); +var opts=_937.options; +var _938=_937.combo; +if(!$.isArray(_936)){ +_936=_936.split(opts.separator); +} +var _939=_930(_935); +_938.find(".textbox-value").remove(); +var name=$(_935).attr("textboxName")||""; +for(var i=0;i<_936.length;i++){ +var _93a=$("").appendTo(_938); +_93a.attr("name",name); +if(opts.disabled){ +_93a.attr("disabled","disabled"); +} +_93a.val(_936[i]); +} +var _93b=(function(){ +if(_939.length!=_936.length){ +return true; +} +var a1=$.extend(true,[],_939); +var a2=$.extend(true,[],_936); +a1.sort(); +a2.sort(); +for(var i=0;i_956.height()){ +var h=_956.scrollTop()+item.position().top+item.outerHeight()-_956.height(); +_956.scrollTop(h); +} +} +} +}; +function nav(_957,dir){ +var opts=$.data(_957,"combobox").options; +var _958=$(_957).combobox("panel"); +var item=_958.children("div.combobox-item-hover"); +if(!item.length){ +item=_958.children("div.combobox-item-selected"); +} +item.removeClass("combobox-item-hover"); +var _959="div.combobox-item:visible:not(.combobox-item-disabled):first"; +var _95a="div.combobox-item:visible:not(.combobox-item-disabled):last"; +if(!item.length){ +item=_958.children(dir=="next"?_959:_95a); +}else{ +if(dir=="next"){ +item=item.nextAll(_959); +if(!item.length){ +item=_958.children(_959); +} +}else{ +item=item.prevAll(_959); +if(!item.length){ +item=_958.children(_95a); +} +} +} +if(item.length){ +item.addClass("combobox-item-hover"); +var row=opts.finder.getRow(_957,item); +if(row){ +_953(_957,row[opts.valueField]); +if(opts.selectOnNavigation){ +_95b(_957,row[opts.valueField]); +} +} +} +}; +function _95b(_95c,_95d){ +var opts=$.data(_95c,"combobox").options; +var _95e=$(_95c).combo("getValues"); +if($.inArray(_95d+"",_95e)==-1){ +if(opts.multiple){ +_95e.push(_95d); +}else{ +_95e=[_95d]; +} +_95f(_95c,_95e); +opts.onSelect.call(_95c,opts.finder.getRow(_95c,_95d)); +} +}; +function _960(_961,_962){ +var opts=$.data(_961,"combobox").options; +var _963=$(_961).combo("getValues"); +var _964=$.inArray(_962+"",_963); +if(_964>=0){ +_963.splice(_964,1); +_95f(_961,_963); +opts.onUnselect.call(_961,opts.finder.getRow(_961,_962)); +} +}; +function _95f(_965,_966,_967){ +var opts=$.data(_965,"combobox").options; +var _968=$(_965).combo("panel"); +if(!$.isArray(_966)){ +_966=_966.split(opts.separator); +} +_968.find("div.combobox-item-selected").removeClass("combobox-item-selected"); +var vv=[],ss=[]; +for(var i=0;i<_966.length;i++){ +var v=_966[i]; +var s=v; +opts.finder.getEl(_965,v).addClass("combobox-item-selected"); +var row=opts.finder.getRow(_965,v); +if(row){ +s=row[opts.textField]; +} +vv.push(v); +ss.push(s); +} +if(!_967){ +$(_965).combo("setText",ss.join(opts.separator)); +} +$(_965).combo("setValues",vv); +}; +function _969(_96a,data,_96b){ +var _96c=$.data(_96a,"combobox"); +var opts=_96c.options; +_96c.data=opts.loadFilter.call(_96a,data); +_96c.groups=[]; +data=_96c.data; +var _96d=$(_96a).combobox("getValues"); +var dd=[]; +var _96e=undefined; +for(var i=0;i"); +dd.push(opts.groupFormatter?opts.groupFormatter.call(_96a,g):g); +dd.push("
        "); +} +}else{ +_96e=undefined; +} +var cls="combobox-item"+(row.disabled?" combobox-item-disabled":"")+(g?" combobox-gitem":""); +dd.push("
        "); +dd.push(opts.formatter?opts.formatter.call(_96a,row):s); +dd.push("
        "); +if(row["selected"]&&$.inArray(v,_96d)==-1){ +_96d.push(v); +} +} +$(_96a).combo("panel").html(dd.join("")); +if(opts.multiple){ +_95f(_96a,_96d,_96b); +}else{ +_95f(_96a,_96d.length?[_96d[_96d.length-1]]:[],_96b); +} +opts.onLoadSuccess.call(_96a,data); +}; +function _96f(_970,url,_971,_972){ +var opts=$.data(_970,"combobox").options; +if(url){ +opts.url=url; +} +_971=$.extend({},opts.queryParams,_971||{}); +if(opts.onBeforeLoad.call(_970,_971)==false){ +return; +} +opts.loader.call(_970,_971,function(data){ +_969(_970,data,_972); +},function(){ +opts.onLoadError.apply(this,arguments); +}); +}; +function _973(_974,q){ +var _975=$.data(_974,"combobox"); +var opts=_975.options; +var qq=opts.multiple?q.split(opts.separator):[q]; +if(opts.mode=="remote"){ +_976(qq); +_96f(_974,null,{q:q},true); +}else{ +var _977=$(_974).combo("panel"); +_977.find("div.combobox-item-selected,div.combobox-item-hover").removeClass("combobox-item-selected combobox-item-hover"); +_977.find("div.combobox-item,div.combobox-group").hide(); +var data=_975.data; +var vv=[]; +$.map(qq,function(q){ +q=$.trim(q); +var _978=q; +var _979=undefined; +for(var i=0;i=0){ +vv.push(v); +} +}); +t.combobox("setValues",vv); +if(!opts.multiple){ +t.combobox("hidePanel"); +} +}; +function _97e(_97f){ +var _980=$.data(_97f,"combobox"); +var opts=_980.options; +_94e++; +_980.itemIdPrefix="_easyui_combobox_i"+_94e; +_980.groupIdPrefix="_easyui_combobox_g"+_94e; +$(_97f).addClass("combobox-f"); +$(_97f).combo($.extend({},opts,{onShowPanel:function(){ +$(_97f).combo("panel").find("div.combobox-item,div.combobox-group").show(); +_953(_97f,$(_97f).combobox("getValue")); +opts.onShowPanel.call(_97f); +}})); +$(_97f).combo("panel").unbind().bind("mouseover",function(e){ +$(this).children("div.combobox-item-hover").removeClass("combobox-item-hover"); +var item=$(e.target).closest("div.combobox-item"); +if(!item.hasClass("combobox-item-disabled")){ +item.addClass("combobox-item-hover"); +} +e.stopPropagation(); +}).bind("mouseout",function(e){ +$(e.target).closest("div.combobox-item").removeClass("combobox-item-hover"); +e.stopPropagation(); +}).bind("click",function(e){ +var item=$(e.target).closest("div.combobox-item"); +if(!item.length||item.hasClass("combobox-item-disabled")){ +return; +} +var row=opts.finder.getRow(_97f,item); +if(!row){ +return; +} +var _981=row[opts.valueField]; +if(opts.multiple){ +if(item.hasClass("combobox-item-selected")){ +_960(_97f,_981); +}else{ +_95b(_97f,_981); +} +}else{ +_95b(_97f,_981); +$(_97f).combo("hidePanel"); +} +e.stopPropagation(); +}); +}; +$.fn.combobox=function(_982,_983){ +if(typeof _982=="string"){ +var _984=$.fn.combobox.methods[_982]; +if(_984){ +return _984(this,_983); +}else{ +return this.combo(_982,_983); +} +} +_982=_982||{}; +return this.each(function(){ +var _985=$.data(this,"combobox"); +if(_985){ +$.extend(_985.options,_982); +_97e(this); +}else{ +_985=$.data(this,"combobox",{options:$.extend({},$.fn.combobox.defaults,$.fn.combobox.parseOptions(this),_982),data:[]}); +_97e(this); +var data=$.fn.combobox.parseData(this); +if(data.length){ +_969(this,data); +} +} +if(_985.options.data){ +_969(this,_985.options.data); +} +_96f(this); +}); +}; +$.fn.combobox.methods={options:function(jq){ +var _986=jq.combo("options"); +return $.extend($.data(jq[0],"combobox").options,{width:_986.width,height:_986.height,originalValue:_986.originalValue,disabled:_986.disabled,readonly:_986.readonly}); +},getData:function(jq){ +return $.data(jq[0],"combobox").data; +},setValues:function(jq,_987){ +return jq.each(function(){ +_95f(this,_987); +}); +},setValue:function(jq,_988){ +return jq.each(function(){ +_95f(this,[_988]); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).combo("clear"); +var _989=$(this).combo("panel"); +_989.find("div.combobox-item-selected").removeClass("combobox-item-selected"); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).combobox("options"); +if(opts.multiple){ +$(this).combobox("setValues",opts.originalValue); +}else{ +$(this).combobox("setValue",opts.originalValue); +} +}); +},loadData:function(jq,data){ +return jq.each(function(){ +_969(this,data); +}); +},reload:function(jq,url){ +return jq.each(function(){ +if(typeof url=="string"){ +_96f(this,url); +}else{ +if(url){ +var opts=$(this).combobox("options"); +opts.queryParams=url; +} +_96f(this); +} +}); +},select:function(jq,_98a){ +return jq.each(function(){ +_95b(this,_98a); +}); +},unselect:function(jq,_98b){ +return jq.each(function(){ +_960(this,_98b); +}); +}}; +$.fn.combobox.parseOptions=function(_98c){ +var t=$(_98c); +return $.extend({},$.fn.combo.parseOptions(_98c),$.parser.parseOptions(_98c,["valueField","textField","groupField","mode","method","url"])); +}; +$.fn.combobox.parseData=function(_98d){ +var data=[]; +var opts=$(_98d).combobox("options"); +$(_98d).children().each(function(){ +if(this.tagName.toLowerCase()=="optgroup"){ +var _98e=$(this).attr("label"); +$(this).children().each(function(){ +_98f(this,_98e); +}); +}else{ +_98f(this); +} +}); +return data; +function _98f(el,_990){ +var t=$(el); +var row={}; +row[opts.valueField]=t.attr("value")!=undefined?t.attr("value"):t.text(); +row[opts.textField]=t.text(); +row["selected"]=t.is(":selected"); +row["disabled"]=t.is(":disabled"); +if(_990){ +opts.groupField=opts.groupField||"group"; +row[opts.groupField]=_990; +} +data.push(row); +}; +}; +$.fn.combobox.defaults=$.extend({},$.fn.combo.defaults,{valueField:"value",textField:"text",groupField:null,groupFormatter:function(_991){ +return _991; +},mode:"local",method:"post",url:null,data:null,queryParams:{},keyHandler:{up:function(e){ +nav(this,"prev"); +e.preventDefault(); +},down:function(e){ +nav(this,"next"); +e.preventDefault(); +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_97a(this); +},query:function(q,e){ +_973(this,q); +}},filter:function(q,row){ +var opts=$(this).combobox("options"); +return row[opts.textField].toLowerCase().indexOf(q.toLowerCase())==0; +},formatter:function(row){ +var opts=$(this).combobox("options"); +return row[opts.textField]; +},loader:function(_992,_993,_994){ +var opts=$(this).combobox("options"); +if(!opts.url){ +return false; +} +$.ajax({type:opts.method,url:opts.url,data:_992,dataType:"json",success:function(data){ +_993(data); +},error:function(){ +_994.apply(this,arguments); +}}); +},loadFilter:function(data){ +return data; +},finder:{getEl:function(_995,_996){ +var _997=_94f(_995,_996); +var id=$.data(_995,"combobox").itemIdPrefix+"_"+_997; +return $("#"+id); +},getRow:function(_998,p){ +var _999=$.data(_998,"combobox"); +var _99a=(p instanceof jQuery)?p.attr("id").substr(_999.itemIdPrefix.length+1):_94f(_998,p); +return _999.data[parseInt(_99a)]; +}},onBeforeLoad:function(_99b){ +},onLoadSuccess:function(){ +},onLoadError:function(){ +},onSelect:function(_99c){ +},onUnselect:function(_99d){ +}}); +})(jQuery); +(function($){ +function _99e(_99f){ +var _9a0=$.data(_99f,"combotree"); +var opts=_9a0.options; +var tree=_9a0.tree; +$(_99f).addClass("combotree-f"); +$(_99f).combo(opts); +var _9a1=$(_99f).combo("panel"); +if(!tree){ +tree=$("
          ").appendTo(_9a1); +$.data(_99f,"combotree").tree=tree; +} +tree.tree($.extend({},opts,{checkbox:opts.multiple,onLoadSuccess:function(node,data){ +var _9a2=$(_99f).combotree("getValues"); +if(opts.multiple){ +var _9a3=tree.tree("getChecked"); +for(var i=0;i<_9a3.length;i++){ +var id=_9a3[i].id; +(function(){ +for(var i=0;i<_9a2.length;i++){ +if(id==_9a2[i]){ +return; +} +} +_9a2.push(id); +})(); +} +} +$(_99f).combotree("setValues",_9a2); +opts.onLoadSuccess.call(this,node,data); +},onClick:function(node){ +if(opts.multiple){ +$(this).tree(node.checked?"uncheck":"check",node.target); +}else{ +$(_99f).combo("hidePanel"); +} +_9a5(_99f); +opts.onClick.call(this,node); +},onCheck:function(node,_9a4){ +_9a5(_99f); +opts.onCheck.call(this,node,_9a4); +}})); +}; +function _9a5(_9a6){ +var _9a7=$.data(_9a6,"combotree"); +var opts=_9a7.options; +var tree=_9a7.tree; +var vv=[],ss=[]; +if(opts.multiple){ +var _9a8=tree.tree("getChecked"); +for(var i=0;i<_9a8.length;i++){ +vv.push(_9a8[i].id); +ss.push(_9a8[i].text); +} +}else{ +var node=tree.tree("getSelected"); +if(node){ +vv.push(node.id); +ss.push(node.text); +} +} +$(_9a6).combo("setText",ss.join(opts.separator)).combo("setValues",opts.multiple?vv:(vv.length?vv:[""])); +}; +function _9a9(_9aa,_9ab){ +var _9ac=$.data(_9aa,"combotree"); +var opts=_9ac.options; +var tree=_9ac.tree; +var _9ad=tree.tree("options"); +var _9ae=_9ad.onCheck; +var _9af=_9ad.onSelect; +_9ad.onCheck=_9ad.onSelect=function(){ +}; +tree.find("span.tree-checkbox").addClass("tree-checkbox0").removeClass("tree-checkbox1 tree-checkbox2"); +if(!$.isArray(_9ab)){ +_9ab=_9ab.split(opts.separator); +} +var vv=$.map(_9ab,function(_9b0){ +return String(_9b0); +}); +var ss=[]; +$.map(vv,function(v){ +var node=tree.tree("find",v); +if(node){ +tree.tree("check",node.target).tree("select",node.target); +ss.push(node.text); +}else{ +ss.push(v); +} +}); +if(opts.multiple){ +var _9b1=tree.tree("getChecked"); +$.map(_9b1,function(node){ +var id=String(node.id); +if($.inArray(id,vv)==-1){ +vv.push(id); +ss.push(node.text); +} +}); +} +_9ad.onCheck=_9ae; +_9ad.onSelect=_9af; +$(_9aa).combo("setText",ss.join(opts.separator)).combo("setValues",opts.multiple?vv:(vv.length?vv:[""])); +}; +$.fn.combotree=function(_9b2,_9b3){ +if(typeof _9b2=="string"){ +var _9b4=$.fn.combotree.methods[_9b2]; +if(_9b4){ +return _9b4(this,_9b3); +}else{ +return this.combo(_9b2,_9b3); +} +} +_9b2=_9b2||{}; +return this.each(function(){ +var _9b5=$.data(this,"combotree"); +if(_9b5){ +$.extend(_9b5.options,_9b2); +}else{ +$.data(this,"combotree",{options:$.extend({},$.fn.combotree.defaults,$.fn.combotree.parseOptions(this),_9b2)}); +} +_99e(this); +}); +}; +$.fn.combotree.methods={options:function(jq){ +var _9b6=jq.combo("options"); +return $.extend($.data(jq[0],"combotree").options,{width:_9b6.width,height:_9b6.height,originalValue:_9b6.originalValue,disabled:_9b6.disabled,readonly:_9b6.readonly}); +},clone:function(jq,_9b7){ +var t=jq.combo("clone",_9b7); +t.data("combotree",{options:$.extend(true,{},jq.combotree("options")),tree:jq.combotree("tree")}); +return t; +},tree:function(jq){ +return $.data(jq[0],"combotree").tree; +},loadData:function(jq,data){ +return jq.each(function(){ +var opts=$.data(this,"combotree").options; +opts.data=data; +var tree=$.data(this,"combotree").tree; +tree.tree("loadData",data); +}); +},reload:function(jq,url){ +return jq.each(function(){ +var opts=$.data(this,"combotree").options; +var tree=$.data(this,"combotree").tree; +if(url){ +opts.url=url; +} +tree.tree({url:opts.url}); +}); +},setValues:function(jq,_9b8){ +return jq.each(function(){ +_9a9(this,_9b8); +}); +},setValue:function(jq,_9b9){ +return jq.each(function(){ +_9a9(this,[_9b9]); +}); +},clear:function(jq){ +return jq.each(function(){ +var tree=$.data(this,"combotree").tree; +tree.find("div.tree-node-selected").removeClass("tree-node-selected"); +var cc=tree.tree("getChecked"); +for(var i=0;i").appendTo(_9c1); +_9bd.grid=grid; +} +grid.datagrid($.extend({},opts,{border:false,singleSelect:(!opts.multiple),onLoadSuccess:function(data){ +var _9c2=$(_9bc).combo("getValues"); +var _9c3=opts.onSelect; +opts.onSelect=function(){ +}; +_9cd(_9bc,_9c2,_9bd.remainText); +opts.onSelect=_9c3; +opts.onLoadSuccess.apply(_9bc,arguments); +},onClickRow:_9c4,onSelect:function(_9c5,row){ +_9c6(); +opts.onSelect.call(this,_9c5,row); +},onUnselect:function(_9c7,row){ +_9c6(); +opts.onUnselect.call(this,_9c7,row); +},onSelectAll:function(rows){ +_9c6(); +opts.onSelectAll.call(this,rows); +},onUnselectAll:function(rows){ +if(opts.multiple){ +_9c6(); +} +opts.onUnselectAll.call(this,rows); +}})); +function _9c4(_9c8,row){ +_9bd.remainText=false; +_9c6(); +if(!opts.multiple){ +$(_9bc).combo("hidePanel"); +} +opts.onClickRow.call(this,_9c8,row); +}; +function _9c6(){ +var rows=grid.datagrid("getSelections"); +var vv=[],ss=[]; +for(var i=0;i=_9cb){ +_9cc=0; +} +} +grid.datagrid("highlightRow",_9cc); +if(opts.selectOnNavigation){ +_9ca.remainText=false; +grid.datagrid("selectRow",_9cc); +} +}; +function _9cd(_9ce,_9cf,_9d0){ +var _9d1=$.data(_9ce,"combogrid"); +var opts=_9d1.options; +var grid=_9d1.grid; +var rows=grid.datagrid("getRows"); +var ss=[]; +var _9d2=$(_9ce).combo("getValues"); +var _9d3=$(_9ce).combo("options"); +var _9d4=_9d3.onChange; +_9d3.onChange=function(){ +}; +grid.datagrid("clearSelections"); +if(!$.isArray(_9cf)){ +_9cf=_9cf.split(opts.separator); +} +for(var i=0;i<_9cf.length;i++){ +var _9d5=grid.datagrid("getRowIndex",_9cf[i]); +if(_9d5>=0){ +grid.datagrid("selectRow",_9d5); +ss.push(rows[_9d5][opts.textField]); +}else{ +ss.push(_9cf[i]); +} +} +$(_9ce).combo("setValues",_9d2); +_9d3.onChange=_9d4; +if(!_9d0){ +var s=ss.join(opts.separator); +if($(_9ce).combo("getText")!=s){ +$(_9ce).combo("setText",s); +} +} +$(_9ce).combo("setValues",_9cf); +}; +function _9d6(_9d7,q){ +var _9d8=$.data(_9d7,"combogrid"); +var opts=_9d8.options; +var grid=_9d8.grid; +_9d8.remainText=true; +if(opts.multiple&&!q){ +_9cd(_9d7,[],true); +}else{ +_9cd(_9d7,[q],true); +} +if(opts.mode=="remote"){ +grid.datagrid("clearSelections"); +grid.datagrid("load",$.extend({},opts.queryParams,{q:q})); +}else{ +if(!q){ +return; +} +grid.datagrid("clearSelections").datagrid("highlightRow",-1); +var rows=grid.datagrid("getRows"); +var qq=opts.multiple?q.split(opts.separator):[q]; +$.map(qq,function(q){ +q=$.trim(q); +if(q){ +$.map(rows,function(row,i){ +if(q==row[opts.textField]){ +grid.datagrid("selectRow",i); +}else{ +if(opts.filter.call(_9d7,q,row)){ +grid.datagrid("highlightRow",i); +} +} +}); +} +}); +} +}; +function _9d9(_9da){ +var _9db=$.data(_9da,"combogrid"); +var opts=_9db.options; +var grid=_9db.grid; +var tr=opts.finder.getTr(grid[0],null,"highlight"); +_9db.remainText=false; +if(tr.length){ +var _9dc=parseInt(tr.attr("datagrid-row-index")); +if(opts.multiple){ +if(tr.hasClass("datagrid-row-selected")){ +grid.datagrid("unselectRow",_9dc); +}else{ +grid.datagrid("selectRow",_9dc); +} +}else{ +grid.datagrid("selectRow",_9dc); +} +} +var vv=[]; +$.map(grid.datagrid("getSelections"),function(row){ +vv.push(row[opts.idField]); +}); +$(_9da).combogrid("setValues",vv); +if(!opts.multiple){ +$(_9da).combogrid("hidePanel"); +} +}; +$.fn.combogrid=function(_9dd,_9de){ +if(typeof _9dd=="string"){ +var _9df=$.fn.combogrid.methods[_9dd]; +if(_9df){ +return _9df(this,_9de); +}else{ +return this.combo(_9dd,_9de); +} +} +_9dd=_9dd||{}; +return this.each(function(){ +var _9e0=$.data(this,"combogrid"); +if(_9e0){ +$.extend(_9e0.options,_9dd); +}else{ +_9e0=$.data(this,"combogrid",{options:$.extend({},$.fn.combogrid.defaults,$.fn.combogrid.parseOptions(this),_9dd)}); +} +_9bb(this); +}); +}; +$.fn.combogrid.methods={options:function(jq){ +var _9e1=jq.combo("options"); +return $.extend($.data(jq[0],"combogrid").options,{width:_9e1.width,height:_9e1.height,originalValue:_9e1.originalValue,disabled:_9e1.disabled,readonly:_9e1.readonly}); +},grid:function(jq){ +return $.data(jq[0],"combogrid").grid; +},setValues:function(jq,_9e2){ +return jq.each(function(){ +_9cd(this,_9e2); +}); +},setValue:function(jq,_9e3){ +return jq.each(function(){ +_9cd(this,[_9e3]); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).combogrid("grid").datagrid("clearSelections"); +$(this).combo("clear"); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).combogrid("options"); +if(opts.multiple){ +$(this).combogrid("setValues",opts.originalValue); +}else{ +$(this).combogrid("setValue",opts.originalValue); +} +}); +}}; +$.fn.combogrid.parseOptions=function(_9e4){ +var t=$(_9e4); +return $.extend({},$.fn.combo.parseOptions(_9e4),$.fn.datagrid.parseOptions(_9e4),$.parser.parseOptions(_9e4,["idField","textField","mode"])); +}; +$.fn.combogrid.defaults=$.extend({},$.fn.combo.defaults,$.fn.datagrid.defaults,{height:22,loadMsg:null,idField:null,textField:null,mode:"local",keyHandler:{up:function(e){ +nav(this,"prev"); +e.preventDefault(); +},down:function(e){ +nav(this,"next"); +e.preventDefault(); +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_9d9(this); +},query:function(q,e){ +_9d6(this,q); +}},filter:function(q,row){ +var opts=$(this).combogrid("options"); +return row[opts.textField].toLowerCase().indexOf(q.toLowerCase())==0; +}}); +})(jQuery); +(function($){ +function _9e5(_9e6){ +var _9e7=$.data(_9e6,"datebox"); +var opts=_9e7.options; +$(_9e6).addClass("datebox-f").combo($.extend({},opts,{onShowPanel:function(){ +_9e8(this); +_9e9(this); +_9ea(this); +_9f8(this,$(this).datebox("getText"),true); +opts.onShowPanel.call(this); +}})); +if(!_9e7.calendar){ +var _9eb=$(_9e6).combo("panel").css("overflow","hidden"); +_9eb.panel("options").onBeforeDestroy=function(){ +var c=$(this).find(".calendar-shared"); +if(c.length){ +c.insertBefore(c[0].pholder); +} +}; +var cc=$("
          ").prependTo(_9eb); +if(opts.sharedCalendar){ +var c=$(opts.sharedCalendar); +if(!c[0].pholder){ +c[0].pholder=$("
          ").insertAfter(c); +} +c.addClass("calendar-shared").appendTo(cc); +if(!c.hasClass("calendar")){ +c.calendar(); +} +_9e7.calendar=c; +}else{ +_9e7.calendar=$("
          ").appendTo(cc).calendar(); +} +$.extend(_9e7.calendar.calendar("options"),{fit:true,border:false,onSelect:function(date){ +var _9ec=this.target; +var opts=$(_9ec).datebox("options"); +_9f8(_9ec,opts.formatter.call(_9ec,date)); +$(_9ec).combo("hidePanel"); +opts.onSelect.call(_9ec,date); +}}); +} +$(_9e6).combo("textbox").parent().addClass("datebox"); +$(_9e6).datebox("initValue",opts.value); +function _9e8(_9ed){ +var opts=$(_9ed).datebox("options"); +var _9ee=$(_9ed).combo("panel"); +_9ee.unbind(".datebox").bind("click.datebox",function(e){ +if($(e.target).hasClass("datebox-button-a")){ +var _9ef=parseInt($(e.target).attr("datebox-button-index")); +opts.buttons[_9ef].handler.call(e.target,_9ed); +} +}); +}; +function _9e9(_9f0){ +var _9f1=$(_9f0).combo("panel"); +if(_9f1.children("div.datebox-button").length){ +return; +} +var _9f2=$("
          ").appendTo(_9f1); +var tr=_9f2.find("tr"); +for(var i=0;i").appendTo(tr); +var btn=opts.buttons[i]; +var t=$("").html($.isFunction(btn.text)?btn.text(_9f0):btn.text).appendTo(td); +t.attr("datebox-button-index",i); +} +tr.find("td").css("width",(100/opts.buttons.length)+"%"); +}; +function _9ea(_9f3){ +var _9f4=$(_9f3).combo("panel"); +var cc=_9f4.children("div.datebox-calendar-inner"); +_9f4.children()._outerWidth(_9f4.width()); +_9e7.calendar.appendTo(cc); +_9e7.calendar[0].target=_9f3; +if(opts.panelHeight!="auto"){ +var _9f5=_9f4.height(); +_9f4.children().not(cc).each(function(){ +_9f5-=$(this).outerHeight(); +}); +cc._outerHeight(_9f5); +} +_9e7.calendar.calendar("resize"); +}; +}; +function _9f6(_9f7,q){ +_9f8(_9f7,q,true); +}; +function _9f9(_9fa){ +var _9fb=$.data(_9fa,"datebox"); +var opts=_9fb.options; +var _9fc=_9fb.calendar.calendar("options").current; +if(_9fc){ +_9f8(_9fa,opts.formatter.call(_9fa,_9fc)); +$(_9fa).combo("hidePanel"); +} +}; +function _9f8(_9fd,_9fe,_9ff){ +var _a00=$.data(_9fd,"datebox"); +var opts=_a00.options; +var _a01=_a00.calendar; +_a01.calendar("moveTo",opts.parser.call(_9fd,_9fe)); +if(_9ff){ +$(_9fd).combo("setValue",_9fe); +}else{ +if(_9fe){ +_9fe=opts.formatter.call(_9fd,_a01.calendar("options").current); +} +$(_9fd).combo("setText",_9fe).combo("setValue",_9fe); +} +}; +$.fn.datebox=function(_a02,_a03){ +if(typeof _a02=="string"){ +var _a04=$.fn.datebox.methods[_a02]; +if(_a04){ +return _a04(this,_a03); +}else{ +return this.combo(_a02,_a03); +} +} +_a02=_a02||{}; +return this.each(function(){ +var _a05=$.data(this,"datebox"); +if(_a05){ +$.extend(_a05.options,_a02); +}else{ +$.data(this,"datebox",{options:$.extend({},$.fn.datebox.defaults,$.fn.datebox.parseOptions(this),_a02)}); +} +_9e5(this); +}); +}; +$.fn.datebox.methods={options:function(jq){ +var _a06=jq.combo("options"); +return $.extend($.data(jq[0],"datebox").options,{width:_a06.width,height:_a06.height,originalValue:_a06.originalValue,disabled:_a06.disabled,readonly:_a06.readonly}); +},cloneFrom:function(jq,from){ +return jq.each(function(){ +$(this).combo("cloneFrom",from); +$.data(this,"datebox",{options:$.extend(true,{},$(from).datebox("options")),calendar:$(from).datebox("calendar")}); +$(this).addClass("datebox-f"); +}); +},calendar:function(jq){ +return $.data(jq[0],"datebox").calendar; +},initValue:function(jq,_a07){ +return jq.each(function(){ +var opts=$(this).datebox("options"); +var _a08=opts.value; +if(_a08){ +_a08=opts.formatter.call(this,opts.parser.call(this,_a08)); +} +$(this).combo("initValue",_a08).combo("setText",_a08); +}); +},setValue:function(jq,_a09){ +return jq.each(function(){ +_9f8(this,_a09); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).datebox("options"); +$(this).datebox("setValue",opts.originalValue); +}); +}}; +$.fn.datebox.parseOptions=function(_a0a){ +return $.extend({},$.fn.combo.parseOptions(_a0a),$.parser.parseOptions(_a0a,["sharedCalendar"])); +}; +$.fn.datebox.defaults=$.extend({},$.fn.combo.defaults,{panelWidth:180,panelHeight:"auto",sharedCalendar:null,keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_9f9(this); +},query:function(q,e){ +_9f6(this,q); +}},currentText:"Today",closeText:"Close",okText:"Ok",buttons:[{text:function(_a0b){ +return $(_a0b).datebox("options").currentText; +},handler:function(_a0c){ +var now=new Date(); +$(_a0c).datebox("calendar").calendar({year:now.getFullYear(),month:now.getMonth()+1,current:new Date(now.getFullYear(),now.getMonth(),now.getDate())}); +_9f9(_a0c); +}},{text:function(_a0d){ +return $(_a0d).datebox("options").closeText; +},handler:function(_a0e){ +$(this).closest("div.combo-panel").panel("close"); +}}],formatter:function(date){ +var y=date.getFullYear(); +var m=date.getMonth()+1; +var d=date.getDate(); +return (m<10?("0"+m):m)+"/"+(d<10?("0"+d):d)+"/"+y; +},parser:function(s){ +if(!s){ +return new Date(); +} +var ss=s.split("/"); +var m=parseInt(ss[0],10); +var d=parseInt(ss[1],10); +var y=parseInt(ss[2],10); +if(!isNaN(y)&&!isNaN(m)&&!isNaN(d)){ +return new Date(y,m-1,d); +}else{ +return new Date(); +} +},onSelect:function(date){ +}}); +})(jQuery); +(function($){ +function _a0f(_a10){ +var _a11=$.data(_a10,"datetimebox"); +var opts=_a11.options; +$(_a10).datebox($.extend({},opts,{onShowPanel:function(){ +var _a12=$(this).datetimebox("getValue"); +_a18(this,_a12,true); +opts.onShowPanel.call(this); +},formatter:$.fn.datebox.defaults.formatter,parser:$.fn.datebox.defaults.parser})); +$(_a10).removeClass("datebox-f").addClass("datetimebox-f"); +$(_a10).datebox("calendar").calendar({onSelect:function(date){ +opts.onSelect.call(this.target,date); +}}); +if(!_a11.spinner){ +var _a13=$(_a10).datebox("panel"); +var p=$("
          ").insertAfter(_a13.children("div.datebox-calendar-inner")); +_a11.spinner=p.children("input"); +} +_a11.spinner.timespinner({width:opts.spinnerWidth,showSeconds:opts.showSeconds,separator:opts.timeSeparator}); +$(_a10).datetimebox("initValue",opts.value); +}; +function _a14(_a15){ +var c=$(_a15).datetimebox("calendar"); +var t=$(_a15).datetimebox("spinner"); +var date=c.calendar("options").current; +return new Date(date.getFullYear(),date.getMonth(),date.getDate(),t.timespinner("getHours"),t.timespinner("getMinutes"),t.timespinner("getSeconds")); +}; +function _a16(_a17,q){ +_a18(_a17,q,true); +}; +function _a19(_a1a){ +var opts=$.data(_a1a,"datetimebox").options; +var date=_a14(_a1a); +_a18(_a1a,opts.formatter.call(_a1a,date)); +$(_a1a).combo("hidePanel"); +}; +function _a18(_a1b,_a1c,_a1d){ +var opts=$.data(_a1b,"datetimebox").options; +$(_a1b).combo("setValue",_a1c); +if(!_a1d){ +if(_a1c){ +var date=opts.parser.call(_a1b,_a1c); +$(_a1b).combo("setText",opts.formatter.call(_a1b,date)); +$(_a1b).combo("setValue",opts.formatter.call(_a1b,date)); +}else{ +$(_a1b).combo("setText",_a1c); +} +} +var date=opts.parser.call(_a1b,_a1c); +$(_a1b).datetimebox("calendar").calendar("moveTo",date); +$(_a1b).datetimebox("spinner").timespinner("setValue",_a1e(date)); +function _a1e(date){ +function _a1f(_a20){ +return (_a20<10?"0":"")+_a20; +}; +var tt=[_a1f(date.getHours()),_a1f(date.getMinutes())]; +if(opts.showSeconds){ +tt.push(_a1f(date.getSeconds())); +} +return tt.join($(_a1b).datetimebox("spinner").timespinner("options").separator); +}; +}; +$.fn.datetimebox=function(_a21,_a22){ +if(typeof _a21=="string"){ +var _a23=$.fn.datetimebox.methods[_a21]; +if(_a23){ +return _a23(this,_a22); +}else{ +return this.datebox(_a21,_a22); +} +} +_a21=_a21||{}; +return this.each(function(){ +var _a24=$.data(this,"datetimebox"); +if(_a24){ +$.extend(_a24.options,_a21); +}else{ +$.data(this,"datetimebox",{options:$.extend({},$.fn.datetimebox.defaults,$.fn.datetimebox.parseOptions(this),_a21)}); +} +_a0f(this); +}); +}; +$.fn.datetimebox.methods={options:function(jq){ +var _a25=jq.datebox("options"); +return $.extend($.data(jq[0],"datetimebox").options,{originalValue:_a25.originalValue,disabled:_a25.disabled,readonly:_a25.readonly}); +},cloneFrom:function(jq,from){ +return jq.each(function(){ +$(this).datebox("cloneFrom",from); +$.data(this,"datetimebox",{options:$.extend(true,{},$(from).datetimebox("options")),spinner:$(from).datetimebox("spinner")}); +$(this).removeClass("datebox-f").addClass("datetimebox-f"); +}); +},spinner:function(jq){ +return $.data(jq[0],"datetimebox").spinner; +},initValue:function(jq,_a26){ +return jq.each(function(){ +var opts=$(this).datetimebox("options"); +var _a27=opts.value; +if(_a27){ +_a27=opts.formatter.call(this,opts.parser.call(this,_a27)); +} +$(this).combo("initValue",_a27).combo("setText",_a27); +}); +},setValue:function(jq,_a28){ +return jq.each(function(){ +_a18(this,_a28); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).datetimebox("options"); +$(this).datetimebox("setValue",opts.originalValue); +}); +}}; +$.fn.datetimebox.parseOptions=function(_a29){ +var t=$(_a29); +return $.extend({},$.fn.datebox.parseOptions(_a29),$.parser.parseOptions(_a29,["timeSeparator","spinnerWidth",{showSeconds:"boolean"}])); +}; +$.fn.datetimebox.defaults=$.extend({},$.fn.datebox.defaults,{spinnerWidth:"100%",showSeconds:true,timeSeparator:":",keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_a19(this); +},query:function(q,e){ +_a16(this,q); +}},buttons:[{text:function(_a2a){ +return $(_a2a).datetimebox("options").currentText; +},handler:function(_a2b){ +var opts=$(_a2b).datetimebox("options"); +_a18(_a2b,opts.formatter.call(_a2b,new Date())); +$(_a2b).datetimebox("hidePanel"); +}},{text:function(_a2c){ +return $(_a2c).datetimebox("options").okText; +},handler:function(_a2d){ +_a19(_a2d); +}},{text:function(_a2e){ +return $(_a2e).datetimebox("options").closeText; +},handler:function(_a2f){ +$(_a2f).datetimebox("hidePanel"); +}}],formatter:function(date){ +var h=date.getHours(); +var M=date.getMinutes(); +var s=date.getSeconds(); +function _a30(_a31){ +return (_a31<10?"0":"")+_a31; +}; +var _a32=$(this).datetimebox("spinner").timespinner("options").separator; +var r=$.fn.datebox.defaults.formatter(date)+" "+_a30(h)+_a32+_a30(M); +if($(this).datetimebox("options").showSeconds){ +r+=_a32+_a30(s); +} +return r; +},parser:function(s){ +if($.trim(s)==""){ +return new Date(); +} +var dt=s.split(" "); +var d=$.fn.datebox.defaults.parser(dt[0]); +if(dt.length<2){ +return d; +} +var _a33=$(this).datetimebox("spinner").timespinner("options").separator; +var tt=dt[1].split(_a33); +var hour=parseInt(tt[0],10)||0; +var _a34=parseInt(tt[1],10)||0; +var _a35=parseInt(tt[2],10)||0; +return new Date(d.getFullYear(),d.getMonth(),d.getDate(),hour,_a34,_a35); +}}); +})(jQuery); +(function($){ +function init(_a36){ +var _a37=$("
          "+"
          "+""+""+"
          "+"
          "+"
          "+"
          "+""+"
          ").insertAfter(_a36); +var t=$(_a36); +t.addClass("slider-f").hide(); +var name=t.attr("name"); +if(name){ +_a37.find("input.slider-value").attr("name",name); +t.removeAttr("name").attr("sliderName",name); +} +_a37.bind("_resize",function(e,_a38){ +if($(this).hasClass("easyui-fluid")||_a38){ +_a39(_a36); +} +return false; +}); +return _a37; +}; +function _a39(_a3a,_a3b){ +var _a3c=$.data(_a3a,"slider"); +var opts=_a3c.options; +var _a3d=_a3c.slider; +if(_a3b){ +if(_a3b.width){ +opts.width=_a3b.width; +} +if(_a3b.height){ +opts.height=_a3b.height; +} +} +_a3d._size(opts); +if(opts.mode=="h"){ +_a3d.css("height",""); +_a3d.children("div").css("height",""); +}else{ +_a3d.css("width",""); +_a3d.children("div").css("width",""); +_a3d.children("div.slider-rule,div.slider-rulelabel,div.slider-inner")._outerHeight(_a3d._outerHeight()); +} +_a3e(_a3a); +}; +function _a3f(_a40){ +var _a41=$.data(_a40,"slider"); +var opts=_a41.options; +var _a42=_a41.slider; +var aa=opts.mode=="h"?opts.rule:opts.rule.slice(0).reverse(); +if(opts.reversed){ +aa=aa.slice(0).reverse(); +} +_a43(aa); +function _a43(aa){ +var rule=_a42.find("div.slider-rule"); +var _a44=_a42.find("div.slider-rulelabel"); +rule.empty(); +_a44.empty(); +for(var i=0;i").appendTo(rule); +span.css((opts.mode=="h"?"left":"top"),_a45); +if(aa[i]!="|"){ +span=$("").appendTo(_a44); +span.html(aa[i]); +if(opts.mode=="h"){ +span.css({left:_a45,marginLeft:-Math.round(span.outerWidth()/2)}); +}else{ +span.css({top:_a45,marginTop:-Math.round(span.outerHeight()/2)}); +} +} +} +}; +}; +function _a46(_a47){ +var _a48=$.data(_a47,"slider"); +var opts=_a48.options; +var _a49=_a48.slider; +_a49.removeClass("slider-h slider-v slider-disabled"); +_a49.addClass(opts.mode=="h"?"slider-h":"slider-v"); +_a49.addClass(opts.disabled?"slider-disabled":""); +var _a4a=_a49.find(".slider-inner"); +_a4a.html(""+""); +if(opts.range){ +_a4a.append(""+""); +} +_a49.find("a.slider-handle").draggable({axis:opts.mode,cursor:"pointer",disabled:opts.disabled,onDrag:function(e){ +var left=e.data.left; +var _a4b=_a49.width(); +if(opts.mode!="h"){ +left=e.data.top; +_a4b=_a49.height(); +} +if(left<0||left>_a4b){ +return false; +}else{ +_a4c(left); +return false; +} +},onBeforeDrag:function(){ +_a48.isDragging=true; +},onStartDrag:function(){ +opts.onSlideStart.call(_a47,opts.value); +},onStopDrag:function(e){ +_a4c(opts.mode=="h"?e.data.left:e.data.top); +opts.onSlideEnd.call(_a47,opts.value); +opts.onComplete.call(_a47,opts.value); +_a48.isDragging=false; +}}); +_a49.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){ +if(_a48.isDragging||opts.disabled){ +return; +} +var pos=$(this).offset(); +_a4c(opts.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top)); +opts.onComplete.call(_a47,opts.value); +}); +function _a4c(pos){ +var _a4d=_a4e(_a47,pos); +var s=Math.abs(_a4d%opts.step); +if(sv2){ +v2=_a4d; +}else{ +_a4dopts.max){ +_a56=opts.max; +} +var _a57=$("").appendTo(_a53); +_a57.attr("name",name); +_a57.val(_a56); +_a55.push(_a56); +var _a58=_a53.find(".slider-handle:eq("+i+")"); +var tip=_a58.next(); +var pos=_a59(_a50,_a56); +if(opts.showTip){ +tip.show(); +tip.html(opts.tipFormatter.call(_a50,_a56)); +}else{ +tip.hide(); +} +if(opts.mode=="h"){ +var _a5a="left:"+pos+"px;"; +_a58.attr("style",_a5a); +tip.attr("style",_a5a+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px"); +}else{ +var _a5a="top:"+pos+"px;"; +_a58.attr("style",_a5a); +tip.attr("style",_a5a+"margin-left:"+(-Math.round(tip.outerWidth()))+"px"); +} +} +opts.value=opts.range?_a55:_a55[0]; +$(_a50).val(opts.range?_a55.join(opts.separator):_a55[0]); +if(_a54.join(",")!=_a55.join(",")){ +opts.onChange.call(_a50,opts.value,(opts.range?_a54:_a54[0])); +} +}; +function _a3e(_a5b){ +var opts=$.data(_a5b,"slider").options; +var fn=opts.onChange; +opts.onChange=function(){ +}; +_a4f(_a5b,opts.value); +opts.onChange=fn; +}; +function _a59(_a5c,_a5d){ +var _a5e=$.data(_a5c,"slider"); +var opts=_a5e.options; +var _a5f=_a5e.slider; +var size=opts.mode=="h"?_a5f.width():_a5f.height(); +var pos=opts.converter.toPosition.call(_a5c,_a5d,size); +if(opts.mode=="v"){ +pos=_a5f.height()-pos; +} +if(opts.reversed){ +pos=size-pos; +} +return pos.toFixed(0); +}; +function _a4e(_a60,pos){ +var _a61=$.data(_a60,"slider"); +var opts=_a61.options; +var _a62=_a61.slider; +var size=opts.mode=="h"?_a62.width():_a62.height(); +var _a63=opts.converter.toValue.call(_a60,opts.mode=="h"?(opts.reversed?(size-pos):pos):(size-pos),size); +return _a63.toFixed(0); +}; +$.fn.slider=function(_a64,_a65){ +if(typeof _a64=="string"){ +return $.fn.slider.methods[_a64](this,_a65); +} +_a64=_a64||{}; +return this.each(function(){ +var _a66=$.data(this,"slider"); +if(_a66){ +$.extend(_a66.options,_a64); +}else{ +_a66=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_a64),slider:init(this)}); +$(this).removeAttr("disabled"); +} +var opts=_a66.options; +opts.min=parseFloat(opts.min); +opts.max=parseFloat(opts.max); +if(opts.range){ +if(!$.isArray(opts.value)){ +opts.value=$.map(String(opts.value).split(opts.separator),function(v){ +return parseFloat(v); +}); +} +if(opts.value.length<2){ +opts.value.push(opts.max); +} +}else{ +opts.value=parseFloat(opts.value); +} +opts.step=parseFloat(opts.step); +opts.originalValue=opts.value; +_a46(this); +_a3f(this); +_a39(this); +}); +}; +$.fn.slider.methods={options:function(jq){ +return $.data(jq[0],"slider").options; +},destroy:function(jq){ +return jq.each(function(){ +$.data(this,"slider").slider.remove(); +$(this).remove(); +}); +},resize:function(jq,_a67){ +return jq.each(function(){ +_a39(this,_a67); +}); +},getValue:function(jq){ +return jq.slider("options").value; +},getValues:function(jq){ +return jq.slider("options").value; +},setValue:function(jq,_a68){ +return jq.each(function(){ +_a4f(this,[_a68]); +}); +},setValues:function(jq,_a69){ +return jq.each(function(){ +_a4f(this,_a69); +}); +},clear:function(jq){ +return jq.each(function(){ +var opts=$(this).slider("options"); +_a4f(this,opts.range?[opts.min,opts.max]:[opts.min]); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).slider("options"); +$(this).slider(opts.range?"setValues":"setValue",opts.originalValue); +}); +},enable:function(jq){ +return jq.each(function(){ +$.data(this,"slider").options.disabled=false; +_a46(this); +}); +},disable:function(jq){ +return jq.each(function(){ +$.data(this,"slider").options.disabled=true; +_a46(this); +}); +}}; +$.fn.slider.parseOptions=function(_a6a){ +var t=$(_a6a); +return $.extend({},$.parser.parseOptions(_a6a,["width","height","mode",{reversed:"boolean",showTip:"boolean",range:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)}); +}; +$.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,range:false,value:0,separator:",",min:0,max:100,step:1,rule:[],tipFormatter:function(_a6b){ +return _a6b; +},converter:{toPosition:function(_a6c,size){ +var opts=$(this).slider("options"); +return (_a6c-opts.min)/(opts.max-opts.min)*size; +},toValue:function(pos,size){ +var opts=$(this).slider("options"); +return opts.min+(opts.max-opts.min)*(pos/size); +}},onChange:function(_a6d,_a6e){ +},onSlideStart:function(_a6f){ +},onSlideEnd:function(_a70){ +},onComplete:function(_a71){ +}}; +})(jQuery); + diff --git a/SMMS/WebContent/static/easyui/jquery.min.js b/SMMS/WebContent/static/easyui/jquery.min.js new file mode 100644 index 0000000..3883779 --- /dev/null +++ b/SMMS/WebContent/static/easyui/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v1.8.3 jquery.com | jquery.org/license */ +(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write(""),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t
          a",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="
          t
          ",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="
          ",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;ti.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="
          ",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="

          ",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t0)for(i=r;i=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*\s*$/g,Nt={option:[1,""],legend:[1,"
          ","
          "],thead:[1,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],col:[2,"","
          "],area:[1,"",""],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X
          ","
          "]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1>");try{for(;r1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]===""&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("
          ").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window); \ No newline at end of file diff --git a/SMMS/WebContent/static/easyui/js/echarts.common.min.js b/SMMS/WebContent/static/easyui/js/echarts.common.min.js new file mode 100644 index 0000000..733accf --- /dev/null +++ b/SMMS/WebContent/static/easyui/js/echarts.common.min.js @@ -0,0 +1,22 @@ + +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.echarts={})}(this,function(t){"use strict";function e(t,e){"createCanvas"===t&&(zp=null),Lp[t]=e}function n(t){if(null==t||"object"!=typeof t)return t;var e=t,i=Ip.call(t);if("[object Array]"===i){if(!z(t)){e=[];for(var r=0,o=t.length;rKp||t<-Kp}function ft(t){this._target=t.target,this._life=t.life||1e3,this._delay=t.delay||0,this._initialized=!1,this.loop=null!=t.loop&&t.loop,this.gap=t.gap||0,this.easing=t.easing||"Linear",this.onframe=t.onframe,this.ondestroy=t.ondestroy,this.onrestart=t.onrestart,this._pausedTime=0,this._paused=!1}function pt(t){return(t=Math.round(t))<0?0:t>255?255:t}function gt(t){return(t=Math.round(t))<0?0:t>360?360:t}function mt(t){return t<0?0:t>1?1:t}function vt(t){return pt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function yt(t){return mt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function xt(t,e,n){return n<0?n+=1:n>1&&(n-=1),6*n<1?t+(e-t)*n*6:2*n<1?e:3*n<2?t+(e-t)*(2/3-n)*6:t}function _t(t,e,n){return t+(e-t)*n}function wt(t,e,n,i,r){return t[0]=e,t[1]=n,t[2]=i,t[3]=r,t}function bt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function Mt(t,e){ug&&bt(ug,e),ug=lg.put(t,ug||e.slice())}function St(t,e){if(t){e=e||[];var n=lg.get(t);if(n)return bt(e,n);var i=(t+="").replace(/ /g,"").toLowerCase();if(i in sg)return bt(e,sg[i]),Mt(t,e),e;if("#"!==i.charAt(0)){var r=i.indexOf("("),o=i.indexOf(")");if(-1!==r&&o+1===i.length){var a=i.substr(0,r),s=i.substr(r+1,o-(r+1)).split(","),l=1;switch(a){case"rgba":if(4!==s.length)return void wt(e,0,0,0,1);l=yt(s.pop());case"rgb":return 3!==s.length?void wt(e,0,0,0,1):(wt(e,vt(s[0]),vt(s[1]),vt(s[2]),l),Mt(t,e),e);case"hsla":return 4!==s.length?void wt(e,0,0,0,1):(s[3]=yt(s[3]),It(s,e),Mt(t,e),e);case"hsl":return 3!==s.length?void wt(e,0,0,0,1):(It(s,e),Mt(t,e),e);default:return}}wt(e,0,0,0,1)}else{if(4===i.length)return(u=parseInt(i.substr(1),16))>=0&&u<=4095?(wt(e,(3840&u)>>4|(3840&u)>>8,240&u|(240&u)>>4,15&u|(15&u)<<4,1),Mt(t,e),e):void wt(e,0,0,0,1);if(7===i.length){var u=parseInt(i.substr(1),16);return u>=0&&u<=16777215?(wt(e,(16711680&u)>>16,(65280&u)>>8,255&u,1),Mt(t,e),e):void wt(e,0,0,0,1)}}}}function It(t,e){var n=(parseFloat(t[0])%360+360)%360/360,i=yt(t[1]),r=yt(t[2]),o=r<=.5?r*(i+1):r+i-r*i,a=2*r-o;return e=e||[],wt(e,pt(255*xt(a,o,n+1/3)),pt(255*xt(a,o,n)),pt(255*xt(a,o,n-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Ct(t){if(t){var e,n,i=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(i,r,o),s=Math.max(i,r,o),l=s-a,u=(s+a)/2;if(0===l)e=0,n=0;else{n=u<.5?l/(s+a):l/(2-s-a);var h=((s-i)/6+l/2)/l,c=((s-r)/6+l/2)/l,d=((s-o)/6+l/2)/l;i===s?e=d-c:r===s?e=1/3+h-d:o===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,n,u];return null!=t[3]&&f.push(t[3]),f}}function Tt(t,e){var n=St(t);if(n){for(var i=0;i<3;i++)n[i]=e<0?n[i]*(1-e)|0:(255-n[i])*e+n[i]|0,n[i]>255?n[i]=255:t[i]<0&&(n[i]=0);return Lt(n,4===n.length?"rgba":"rgb")}}function Dt(t){var e=St(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)}function At(t,e,n){if(e&&e.length&&t>=0&&t<=1){n=n||[];var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=e[r],s=e[o],l=i-r;return n[0]=pt(_t(a[0],s[0],l)),n[1]=pt(_t(a[1],s[1],l)),n[2]=pt(_t(a[2],s[2],l)),n[3]=mt(_t(a[3],s[3],l)),n}}function kt(t,e,n){if(e&&e.length&&t>=0&&t<=1){var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=St(e[r]),s=St(e[o]),l=i-r,u=Lt([pt(_t(a[0],s[0],l)),pt(_t(a[1],s[1],l)),pt(_t(a[2],s[2],l)),mt(_t(a[3],s[3],l))],"rgba");return n?{color:u,leftIndex:r,rightIndex:o,value:i}:u}}function Pt(t,e){if((t=St(t))&&null!=e)return t[3]=mt(e),Lt(t,"rgba")}function Lt(t,e){if(t&&t.length){var n=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(n+=","+t[3]),e+"("+n+")"}}function Ot(t,e){return t[e]}function zt(t,e,n){t[e]=n}function Et(t,e,n){return(e-t)*n+t}function Nt(t,e,n){return n>.5?e:t}function Rt(t,e,n,i,r){var o=t.length;if(1==r)for(s=0;sr)t.length=r;else for(a=i;a=0&&!(m[n]<=e);n--);n=Math.min(n,u-2)}else{for(n=k;ne);n++);n=Math.min(n-1,u-2)}k=n,P=e;var i=m[n+1]-m[n];if(0!==i)if(I=(e-m[n])/i,l)if(T=v[n],C=v[0===n?n:n-1],D=v[n>u-2?u-1:n+1],A=v[n>u-3?u-1:n+2],d)Ft(C,T,D,A,I,I*I,I*I*I,a(t,r),g);else{if(f)o=Ft(C,T,D,A,I,I*I,I*I*I,L,1),o=Wt(L);else{if(p)return Nt(T,D,I);o=Ht(C,T,D,A,I,I*I,I*I*I)}s(t,r,o)}else if(d)Rt(v[n],v[n+1],I,a(t,r),g);else{var o;if(f)Rt(v[n],v[n+1],I,L,1),o=Wt(L);else{if(p)return Nt(v[n],v[n+1],I);o=Et(v[n],v[n+1],I)}s(t,r,o)}},ondestroy:n});return e&&"spline"!==e&&(O.easing=e),O}}}function Xt(t,e,n,i){n<0&&(t+=n,n=-n),i<0&&(e+=i,i=-i),this.x=t,this.y=e,this.width=n,this.height=i}function jt(t){for(var e=0;t>=Ig;)e|=1&t,t>>=1;return t+e}function Yt(t,e,n,i){var r=e+1;if(r===n)return 1;if(i(t[r++],t[e])<0){for(;r=0;)r++;return r-e}function qt(t,e,n){for(n--;e>>1])<0?l=o:s=o+1;var u=i-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=a}}function Kt(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])>0){for(s=i-r;l0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}else{for(s=r+1;ls&&(l=s);var u=a;a=r-l,l=r-u}for(a++;a>>1);o(t,e[n+h])>0?a=h+1:l=h}return l}function Qt(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])<0){for(s=r+1;ls&&(l=s);var u=a;a=r-l,l=r-u}else{for(s=i-r;l=0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}for(a++;a>>1);o(t,e[n+h])<0?l=h:a=h+1}return l}function Jt(t,e){function n(n){var s=o[n],u=a[n],h=o[n+1],c=a[n+1];a[n]=u+c,n===l-3&&(o[n+1]=o[n+2],a[n+1]=a[n+2]),l--;var d=Qt(t[h],t,s,u,0,e);s+=d,0!==(u-=d)&&0!==(c=Kt(t[s+u-1],t,h,c,c-1,e))&&(u<=c?i(s,u,h,c):r(s,u,h,c))}function i(n,i,r,o){var a=0;for(a=0;a=Cg||f>=Cg);if(p)break;g<0&&(g=0),g+=2}if((s=g)<1&&(s=1),1===i){for(a=0;a=0;a--)t[f+a]=t[d+a];if(0===i){v=!0;break}}if(t[c--]=u[h--],1==--o){v=!0;break}if(0!=(m=o-Kt(t[l],u,0,o,o-1,e))){for(o-=m,f=(c-=m)+1,d=(h-=m)+1,a=0;a=Cg||m>=Cg);if(v)break;p<0&&(p=0),p+=2}if((s=p)<1&&(s=1),1===o){for(f=(c-=i)+1,d=(l-=i)+1,a=i-1;a>=0;a--)t[f+a]=t[d+a];t[c]=u[h]}else{if(0===o)throw new Error;for(d=c-(o-1),a=0;a=0;a--)t[f+a]=t[d+a];t[c]=u[h]}else for(d=c-(o-1),a=0;a1;){var t=l-2;if(t>=1&&a[t-1]<=a[t]+a[t+1]||t>=2&&a[t-2]<=a[t]+a[t-1])a[t-1]a[t+1])break;n(t)}},this.forceMergeRuns=function(){for(;l>1;){var t=l-2;t>0&&a[t-1]s&&(l=s),$t(t,n,n+l,n+o,e),o=l}a.pushRun(n,o),a.mergeRuns(),r-=o,n+=o}while(0!==r);a.forceMergeRuns()}}function ee(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}function ne(t,e,n){var i=null==e.x?0:e.x,r=null==e.x2?1:e.x2,o=null==e.y?0:e.y,a=null==e.y2?0:e.y2;return e.global||(i=i*n.width+n.x,r=r*n.width+n.x,o=o*n.height+n.y,a=a*n.height+n.y),i=isNaN(i)?0:i,r=isNaN(r)?1:r,o=isNaN(o)?0:o,a=isNaN(a)?0:a,t.createLinearGradient(i,o,r,a)}function ie(t,e,n){var i=n.width,r=n.height,o=Math.min(i,r),a=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;return e.global||(a=a*i+n.x,s=s*r+n.y,l*=o),t.createRadialGradient(a,s,0,a,s,l)}function re(){return!1}function oe(t,e,n){var i=Op(),r=e.getWidth(),o=e.getHeight(),a=i.style;return a&&(a.position="absolute",a.left=0,a.top=0,a.width=r+"px",a.height=o+"px",i.setAttribute("data-zr-dom-id",t)),i.width=r*n,i.height=o*n,i}function ae(t){if("string"==typeof t){var e=Bg.get(t);return e&&e.image}return t}function se(t,e,n,i,r){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!n)return e;var o=Bg.get(t),a={hostEl:n,cb:i,cbPayload:r};return o?!ue(e=o.image)&&o.pending.push(a):(!e&&(e=new Image),e.onload=le,Bg.put(t,e.__cachedImgObj={image:e,pending:[a]}),e.src=e.__zrImageSrc=t),e}return t}return e}function le(){var t=this.__cachedImgObj;this.onload=this.__cachedImgObj=null;for(var e=0;eHg&&(Fg=0,Vg={}),Fg++,Vg[n]=r,r}function ce(t,e,n,i,r,o,a){return o?fe(t,e,n,i,r,o,a):de(t,e,n,i,r,a)}function de(t,e,n,i,r,o){var a=Me(t,e,r,o),s=he(t,e);r&&(s+=r[1]+r[3]);var l=a.outerHeight,u=new Xt(pe(0,s,n),ge(0,l,i),s,l);return u.lineHeight=a.lineHeight,u}function fe(t,e,n,i,r,o,a){var s=Se(t,{rich:o,truncate:a,font:e,textAlign:n,textPadding:r}),l=s.outerWidth,u=s.outerHeight;return new Xt(pe(0,l,n),ge(0,u,i),l,u)}function pe(t,e,n){return"right"===n?t-=e:"center"===n&&(t-=e/2),t}function ge(t,e,n){return"middle"===n?t-=e/2:"bottom"===n&&(t-=e),t}function me(t,e,n){var i=e.x,r=e.y,o=e.height,a=e.width,s=o/2,l="left",u="top";switch(t){case"left":i-=n,r+=s,l="right",u="middle";break;case"right":i+=n+a,r+=s,u="middle";break;case"top":i+=a/2,r-=n,l="center",u="bottom";break;case"bottom":i+=a/2,r+=o+n,l="center";break;case"inside":i+=a/2,r+=s,l="center",u="middle";break;case"insideLeft":i+=n,r+=s,u="middle";break;case"insideRight":i+=a-n,r+=s,l="right",u="middle";break;case"insideTop":i+=a/2,r+=n,l="center";break;case"insideBottom":i+=a/2,r+=o-n,l="center",u="bottom";break;case"insideTopLeft":i+=n,r+=n;break;case"insideTopRight":i+=a-n,r+=n,l="right";break;case"insideBottomLeft":i+=n,r+=o-n,u="bottom";break;case"insideBottomRight":i+=a-n,r+=o-n,l="right",u="bottom"}return{x:i,y:r,textAlign:l,textVerticalAlign:u}}function ve(t,e,n,i,r){if(!e)return"";var o=(t+"").split("\n");r=ye(e,n,i,r);for(var a=0,s=o.length;a=a;l++)s-=a;var u=he(n);return u>s&&(n="",u=0),s=t-u,i.ellipsis=n,i.ellipsisWidth=u,i.contentWidth=s,i.containerWidth=t,i}function xe(t,e){var n=e.containerWidth,i=e.font,r=e.contentWidth;if(!n)return"";var o=he(t,i);if(o<=n)return t;for(var a=0;;a++){if(o<=r||a>=e.maxIterations){t+=e.ellipsis;break}var s=0===a?_e(t,r,e.ascCharWidth,e.cnCharWidth):o>0?Math.floor(t.length*r/o):0;o=he(t=t.substr(0,s),i)}return""===t&&(t=e.placeholder),t}function _e(t,e,n,i){for(var r=0,o=0,a=t.length;ol)t="",o=[];else if(null!=u)for(var h=ye(u-(n?n[1]+n[3]:0),e,i.ellipsis,{minChar:i.minChar,placeholder:i.placeholder}),c=0,d=o.length;cr&&Ie(n,t.substring(r,o)),Ie(n,i[2],i[1]),r=Gg.lastIndex}rf)return{lines:[],width:0,height:0};P.textWidth=he(P.text,_);var b=y.textWidth,M=null==b||"auto"===b;if("string"==typeof b&&"%"===b.charAt(b.length-1))P.percentWidth=b,u.push(P),b=0;else{if(M){b=P.textWidth;var S=y.textBackgroundColor,I=S&&S.image;I&&ue(I=ae(I))&&(b=Math.max(b,I.width*w/I.height))}var C=x?x[1]+x[3]:0;b+=C;var A=null!=d?d-m:null;null!=A&&Al&&(n*=l/(c=n+i),i*=l/c),r+o>l&&(r*=l/(c=r+o),o*=l/c),i+r>u&&(i*=u/(c=i+r),r*=u/c),n+o>u&&(n*=u/(c=n+o),o*=u/c),t.moveTo(a+n,s),t.lineTo(a+l-i,s),0!==i&&t.arc(a+l-i,s+i,i,-Math.PI/2,0),t.lineTo(a+l,s+u-r),0!==r&&t.arc(a+l-r,s+u-r,r,0,Math.PI/2),t.lineTo(a+o,s+u),0!==o&&t.arc(a+o,s+u-o,o,Math.PI/2,Math.PI),t.lineTo(a,s+n),0!==n&&t.arc(a+n,s+n,n,Math.PI,1.5*Math.PI)}function De(t){return Ae(t),d(t.rich,Ae),t}function Ae(t){if(t){t.font=Ce(t);var e=t.textAlign;"middle"===e&&(e="center"),t.textAlign=null==e||Ug[e]?e:"left";var n=t.textVerticalAlign||t.textBaseline;"center"===n&&(n="middle"),t.textVerticalAlign=null==n||Xg[n]?n:"top",t.textPadding&&(t.textPadding=k(t.textPadding))}}function ke(t,e,n,i,r){i.rich?Le(t,e,n,i,r):Pe(t,e,n,i,r)}function Pe(t,e,n,i,r){var o=Fe(e,"font",i.font||Wg),a=i.textPadding,s=t.__textCotentBlock;s&&!t.__dirty||(s=t.__textCotentBlock=Me(n,o,a,i.truncate));var l=s.outerHeight,u=s.lines,h=s.lineHeight,c=Ve(l,i,r),d=c.baseX,f=c.baseY,p=c.textAlign,g=c.textVerticalAlign;ze(e,i,r,d,f);var m=ge(f,l,g),v=d,y=m,x=Ne(i);if(x||a){var _=he(n,o);a&&(_+=a[1]+a[3]);var w=pe(d,_,p);x&&Re(t,e,i,w,m,_,l),a&&(v=Ze(d,p,a),y+=a[0])}Fe(e,"textAlign",p||"left"),Fe(e,"textBaseline","middle"),Fe(e,"shadowBlur",i.textShadowBlur||0),Fe(e,"shadowColor",i.textShadowColor||"transparent"),Fe(e,"shadowOffsetX",i.textShadowOffsetX||0),Fe(e,"shadowOffsetY",i.textShadowOffsetY||0),y+=h/2;var b=i.textStrokeWidth,M=He(i.textStroke,b),S=Ge(i.textFill);M&&(Fe(e,"lineWidth",b),Fe(e,"strokeStyle",M)),S&&Fe(e,"fillStyle",S);for(var I=0;I=0&&"right"===(_=b[A]).textAlign;)Ee(t,e,_,i,S,v,D,"right"),I-=_.width,D-=_.width,A--;for(T+=(o-(T-m)-(y-D)-I)/2;C<=A;)Ee(t,e,_=b[C],i,S,v,T+_.width/2,"center"),T+=_.width,C++;v+=S}}function ze(t,e,n,i,r){if(n&&e.textRotation){var o=e.textOrigin;"center"===o?(i=n.width/2+n.x,r=n.height/2+n.y):o&&(i=o[0]+n.x,r=o[1]+n.y),t.translate(i,r),t.rotate(-e.textRotation),t.translate(-i,-r)}}function Ee(t,e,n,i,r,o,a,s){var l=i.rich[n.styleName]||{},u=n.textVerticalAlign,h=o+r/2;"top"===u?h=o+n.height/2:"bottom"===u&&(h=o+r-n.height/2),!n.isLineHolder&&Ne(l)&&Re(t,e,l,"right"===s?a-n.width:"center"===s?a-n.width/2:a,h-n.height/2,n.width,n.height);var c=n.textPadding;c&&(a=Ze(a,s,c),h-=n.height/2-c[2]-n.textHeight/2),Fe(e,"shadowBlur",D(l.textShadowBlur,i.textShadowBlur,0)),Fe(e,"shadowColor",l.textShadowColor||i.textShadowColor||"transparent"),Fe(e,"shadowOffsetX",D(l.textShadowOffsetX,i.textShadowOffsetX,0)),Fe(e,"shadowOffsetY",D(l.textShadowOffsetY,i.textShadowOffsetY,0)),Fe(e,"textAlign",s),Fe(e,"textBaseline","middle"),Fe(e,"font",n.font||Wg);var d=He(l.textStroke||i.textStroke,p),f=Ge(l.textFill||i.textFill),p=T(l.textStrokeWidth,i.textStrokeWidth);d&&(Fe(e,"lineWidth",p),Fe(e,"strokeStyle",d),e.strokeText(n.text,a,h)),f&&(Fe(e,"fillStyle",f),e.fillText(n.text,a,h))}function Ne(t){return t.textBackgroundColor||t.textBorderWidth&&t.textBorderColor}function Re(t,e,n,i,r,o,a){var s=n.textBackgroundColor,l=n.textBorderWidth,u=n.textBorderColor,h=_(s);if(Fe(e,"shadowBlur",n.textBoxShadowBlur||0),Fe(e,"shadowColor",n.textBoxShadowColor||"transparent"),Fe(e,"shadowOffsetX",n.textBoxShadowOffsetX||0),Fe(e,"shadowOffsetY",n.textBoxShadowOffsetY||0),h||l&&u){e.beginPath();var c=n.textBorderRadius;c?Te(e,{x:i,y:r,width:o,height:a,r:c}):e.rect(i,r,o,a),e.closePath()}if(h)Fe(e,"fillStyle",s),e.fill();else if(w(s)){var d=s.image;(d=se(d,null,t,Be,s))&&ue(d)&&e.drawImage(d,i,r,o,a)}l&&u&&(Fe(e,"lineWidth",l),Fe(e,"strokeStyle",u),e.stroke())}function Be(t,e){e.image=t}function Ve(t,e,n){var i=e.x||0,r=e.y||0,o=e.textAlign,a=e.textVerticalAlign;if(n){var s=e.textPosition;if(s instanceof Array)i=n.x+We(s[0],n.width),r=n.y+We(s[1],n.height);else{var l=me(s,n,e.textDistance);i=l.x,r=l.y,o=o||l.textAlign,a=a||l.textVerticalAlign}var u=e.textOffset;u&&(i+=u[0],r+=u[1])}return{baseX:i,baseY:r,textAlign:o,textVerticalAlign:a}}function Fe(t,e,n){return t[e]=Ag(t,e,n),t[e]}function He(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function Ge(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function We(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}function Ze(t,e,n){return"right"===e?t-n[1]:"center"===e?t+n[3]/2-n[1]/2:t+n[3]}function Ue(t,e){return null!=t&&(t||e.textBackgroundColor||e.textBorderWidth&&e.textBorderColor||e.textPadding)}function Xe(t){t=t||{},_g.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new Pg(t.style,this),this._rect=null,this.__clipPaths=[]}function je(t){Xe.call(this,t)}function Ye(t){return parseInt(t,10)}function qe(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}function $e(t,e,n){return qg.copy(t.getBoundingRect()),t.transform&&qg.applyTransform(t.transform),$g.width=e,$g.height=n,!qg.intersect($g)}function Ke(t,e){if(t==e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var n=0;n=0){var r="touchend"!=i?e.targetTouches[0]:e.changedTouches[0];r&&en(t,r,e,n)}else en(t,e,e,n),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var o=e.button;return null==e.which&&void 0!==o&&Jg.test(e.type)&&(e.which=1&o?1:2&o?3:4&o?2:0),e}function on(t,e,n){Qg?t.addEventListener(e,n):t.attachEvent("on"+e,n)}function an(t,e,n){Qg?t.removeEventListener(e,n):t.detachEvent("on"+e,n)}function sn(t){return t.which>1}function ln(t){var e=t[1][0]-t[0][0],n=t[1][1]-t[0][1];return Math.sqrt(e*e+n*n)}function un(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}function hn(t){return"mousewheel"===t&&bp.browser.firefox?"DOMMouseScroll":t}function cn(t,e,n){var i=t._gestureMgr;"start"===n&&i.clear();var r=i.recognize(e,t.handler.findHover(e.zrX,e.zrY,null).target,t.dom);if("end"===n&&i.clear(),r){var o=r.type;e.gestureEvent=o,t.handler.dispatchToElement({target:r.target},o,r.event)}}function dn(t){t._touching=!0,clearTimeout(t._touchTimer),t._touchTimer=setTimeout(function(){t._touching=!1},700)}function fn(t){var e=t.pointerType;return"pen"===e||"touch"===e}function pn(t){function e(t,e){return function(){if(!e._touching)return t.apply(e,arguments)}}d(om,function(e){t._handlers[e]=m(lm[e],t)}),d(sm,function(e){t._handlers[e]=m(lm[e],t)}),d(rm,function(n){t._handlers[n]=e(lm[n],t)})}function gn(t){function e(e,n){d(e,function(e){on(t,hn(e),n._handlers[e])},n)}Zp.call(this),this.dom=t,this._touching=!1,this._touchTimer,this._gestureMgr=new nm,this._handlers={},pn(this),bp.pointerEventsSupported?e(sm,this):(bp.touchEventsSupported&&e(om,this),e(rm,this))}function mn(t,e){var n=new fm(_p(),t,e);return dm[n.id]=n,n}function vn(t,e){cm[t]=e}function yn(t){delete dm[t]}function xn(t){return t instanceof Array?t:null==t?[]:[t]}function _n(t,e,n){if(t){t[e]=t[e]||{},t.emphasis=t.emphasis||{},t.emphasis[e]=t.emphasis[e]||{};for(var i=0,r=n.length;i=n.length&&n.push({option:t})}}),n}function Sn(t){var e=N();gm(t,function(t,n){var i=t.exist;i&&e.set(i.id,t)}),gm(t,function(t,n){var i=t.option;P(!i||null==i.id||!e.get(i.id)||e.get(i.id)===t,"id duplicates: "+(i&&i.id)),i&&null!=i.id&&e.set(i.id,t),!t.keyInfo&&(t.keyInfo={})}),gm(t,function(t,n){var i=t.exist,r=t.option,o=t.keyInfo;if(mm(r)){if(o.name=null!=r.name?r.name+"":i?i.name:ym+n,i)o.id=i.id;else if(null!=r.id)o.id=r.id+"";else{var a=0;do{o.id="\0"+o.name+"\0"+a++}while(e.get(o.id))}e.set(o.id,t)}})}function In(t){var e=t.name;return!(!e||!e.indexOf(ym))}function Cn(t){return mm(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")}function Tn(t,e){return null!=e.dataIndexInside?e.dataIndexInside:null!=e.dataIndex?y(e.dataIndex)?f(e.dataIndex,function(e){return t.indexOfRawIndex(e)}):t.indexOfRawIndex(e.dataIndex):null!=e.name?y(e.name)?f(e.name,function(e){return t.indexOfName(e)}):t.indexOfName(e.name):void 0}function Dn(){var t="__\0ec_inner_"+_m+++"_"+Math.random().toFixed(5);return function(e){return e[t]||(e[t]={})}}function An(t,e,n){if(_(e)){var i={};i[e+"Index"]=0,e=i}var r=n&&n.defaultMainType;!r||kn(e,r+"Index")||kn(e,r+"Id")||kn(e,r+"Name")||(e[r+"Index"]=0);var o={};return gm(e,function(i,r){var i=e[r];if("dataIndex"!==r&&"dataIndexInside"!==r){var a=r.match(/^(\w+)(Index|Id|Name)$/)||[],s=a[1],u=(a[2]||"").toLowerCase();if(!(!s||!u||null==i||"index"===u&&"none"===i||n&&n.includeMainTypes&&l(n.includeMainTypes,s)<0)){var h={mainType:s};"index"===u&&"all"===i||(h[u]=i);var c=t.queryComponents(h);o[s+"Models"]=c,o[s+"Model"]=c[0]}}else o[r]=i}),o}function kn(t,e){return t&&t.hasOwnProperty(e)}function Pn(t,e,n){t.setAttribute?t.setAttribute(e,n):t[e]=n}function Ln(t,e){return t.getAttribute?t.getAttribute(e):t[e]}function On(t){var e={main:"",sub:""};return t&&(t=t.split(wm),e.main=t[0]||"",e.sub=t[1]||""),e}function zn(t){P(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}function En(t,e){t.$constructor=t,t.extend=function(t){var e=this,n=function(){t.$constructor?t.$constructor.apply(this,arguments):e.apply(this,arguments)};return o(n.prototype,t),n.extend=this.extend,n.superCall=Rn,n.superApply=Bn,u(n,this),n.superClass=e,n}}function Nn(t){var e=["__\0is_clz",Mm++,Math.random().toFixed(3)].join("_");t.prototype[e]=!0,t.isInstance=function(t){return!(!t||!t[e])}}function Rn(t,e){var n=A(arguments,2);return this.superClass.prototype[e].apply(t,n)}function Bn(t,e,n){return this.superClass.prototype[e].apply(t,n)}function Vn(t,e){function n(t){var e=i[t.main];return e&&e[bm]||((e=i[t.main]={})[bm]=!0),e}e=e||{};var i={};if(t.registerClass=function(t,e){return e&&(zn(e),(e=On(e)).sub?e.sub!==bm&&(n(e)[e.sub]=t):i[e.main]=t),t},t.getClass=function(t,e,n){var r=i[t];if(r&&r[bm]&&(r=e?r[e]:null),n&&!r)throw new Error(e?"Component "+t+"."+(e||"")+" not exists. Load it first.":t+".type should be specified.");return r},t.getClassesByMainType=function(t){t=On(t);var e=[],n=i[t.main];return n&&n[bm]?d(n,function(t,n){n!==bm&&e.push(t)}):e.push(n),e},t.hasClass=function(t){return t=On(t),!!i[t.main]},t.getAllClassMainTypes=function(){var t=[];return d(i,function(e,n){t.push(n)}),t},t.hasSubTypes=function(t){t=On(t);var e=i[t.main];return e&&e[bm]},t.parseClassType=On,e.registerWhenExtend){var r=t.extend;r&&(t.extend=function(e){var n=r.call(this,e);return t.registerClass(n,e.type)})}return t}function Fn(t){return t>-Pm&&tPm||t<-Pm}function Gn(t,e,n,i,r){var o=1-r;return o*o*(o*t+3*r*e)+r*r*(r*i+3*o*n)}function Wn(t,e,n,i,r){var o=1-r;return 3*(((e-t)*o+2*(n-e)*r)*o+(i-n)*r*r)}function Zn(t,e,n,i,r,o){var a=i+3*(e-n)-t,s=3*(n-2*e+t),l=3*(e-t),u=t-r,h=s*s-3*a*l,c=s*l-9*a*u,d=l*l-3*s*u,f=0;if(Fn(h)&&Fn(c))Fn(s)?o[0]=0:(S=-l/s)>=0&&S<=1&&(o[f++]=S);else{var p=c*c-4*h*d;if(Fn(p)){var g=c/h,m=-g/2;(S=-s/a+g)>=0&&S<=1&&(o[f++]=S),m>=0&&m<=1&&(o[f++]=m)}else if(p>0){var v=km(p),y=h*s+1.5*a*(-c+v),x=h*s+1.5*a*(-c-v);(S=(-s-((y=y<0?-Am(-y,zm):Am(y,zm))+(x=x<0?-Am(-x,zm):Am(x,zm))))/(3*a))>=0&&S<=1&&(o[f++]=S)}else{var _=(2*h*s-3*a*c)/(2*km(h*h*h)),w=Math.acos(_)/3,b=km(h),M=Math.cos(w),S=(-s-2*b*M)/(3*a),m=(-s+b*(M+Om*Math.sin(w)))/(3*a),I=(-s+b*(M-Om*Math.sin(w)))/(3*a);S>=0&&S<=1&&(o[f++]=S),m>=0&&m<=1&&(o[f++]=m),I>=0&&I<=1&&(o[f++]=I)}}return f}function Un(t,e,n,i,r){var o=6*n-12*e+6*t,a=9*e+3*i-3*t-9*n,s=3*e-3*t,l=0;if(Fn(a))Hn(o)&&(c=-s/o)>=0&&c<=1&&(r[l++]=c);else{var u=o*o-4*a*s;if(Fn(u))r[0]=-o/(2*a);else if(u>0){var h=km(u),c=(-o+h)/(2*a),d=(-o-h)/(2*a);c>=0&&c<=1&&(r[l++]=c),d>=0&&d<=1&&(r[l++]=d)}}return l}function Xn(t,e,n,i,r,o){var a=(e-t)*r+t,s=(n-e)*r+e,l=(i-n)*r+n,u=(s-a)*r+a,h=(l-s)*r+s,c=(h-u)*r+u;o[0]=t,o[1]=a,o[2]=u,o[3]=c,o[4]=c,o[5]=h,o[6]=l,o[7]=i}function jn(t,e,n,i,r,o,a,s,l,u,h){var c,d,f,p,g,m=.005,v=1/0;Em[0]=l,Em[1]=u;for(var y=0;y<1;y+=.05)Nm[0]=Gn(t,n,r,a,y),Nm[1]=Gn(e,i,o,s,y),(p=Hp(Em,Nm))=0&&p=0&&c<=1&&(r[l++]=c);else{var u=a*a-4*o*s;if(Fn(u))(c=-a/(2*o))>=0&&c<=1&&(r[l++]=c);else if(u>0){var h=km(u),c=(-a+h)/(2*o),d=(-a-h)/(2*o);c>=0&&c<=1&&(r[l++]=c),d>=0&&d<=1&&(r[l++]=d)}}return l}function Kn(t,e,n){var i=t+n-2*e;return 0===i?.5:(t-e)/i}function Qn(t,e,n,i,r){var o=(e-t)*i+t,a=(n-e)*i+e,s=(a-o)*i+o;r[0]=t,r[1]=o,r[2]=s,r[3]=s,r[4]=a,r[5]=n}function Jn(t,e,n,i,r,o,a,s,l){var u,h=.005,c=1/0;Em[0]=a,Em[1]=s;for(var d=0;d<1;d+=.05)Nm[0]=Yn(t,n,r,d),Nm[1]=Yn(e,i,o,d),(m=Hp(Em,Nm))=0&&m1e-4)return s[0]=t-n,s[1]=e-i,l[0]=t+n,void(l[1]=e+i);if(Wm[0]=Hm(r)*n+t,Wm[1]=Fm(r)*i+e,Zm[0]=Hm(o)*n+t,Zm[1]=Fm(o)*i+e,u(s,Wm,Zm),h(l,Wm,Zm),(r%=Gm)<0&&(r+=Gm),(o%=Gm)<0&&(o+=Gm),r>o&&!a?o+=Gm:rr&&(Um[0]=Hm(f)*n+t,Um[1]=Fm(f)*i+e,u(s,Um,s),h(l,Um,l))}function oi(t,e,n,i,r,o,a){if(0===r)return!1;var s=r,l=0,u=t;if(a>e+s&&a>i+s||at+s&&o>n+s||oe+c&&h>i+c&&h>o+c&&h>s+c||ht+c&&u>n+c&&u>r+c&&u>a+c||ue+u&&l>i+u&&l>o+u||lt+u&&s>n+u&&s>r+u||sn||h+ur&&(r+=lv);var d=Math.atan2(l,s);return d<0&&(d+=lv),d>=i&&d<=r||d+lv>=i&&d+lv<=r}function hi(t,e,n,i,r,o){if(o>e&&o>i||or?a:0}function ci(t,e){return Math.abs(t-e)e&&u>i&&u>o&&u>s||u1&&di(),c=Gn(e,i,o,s,fv[0]),p>1&&(d=Gn(e,i,o,s,fv[1]))),2==p?me&&s>i&&s>o||s=0&&u<=1){for(var h=0,c=Yn(e,i,o,u),d=0;dn||s<-n)return 0;u=Math.sqrt(n*n-s*s);dv[0]=-u,dv[1]=u;var l=Math.abs(i-r);if(l<1e-4)return 0;if(l%hv<1e-4){i=0,r=hv;p=o?1:-1;return a>=dv[0]+t&&a<=dv[1]+t?p:0}if(o){var u=i;i=li(r),r=li(u)}else i=li(i),r=li(r);i>r&&(r+=hv);for(var h=0,c=0;c<2;c++){var d=dv[c];if(d+t>a){var f=Math.atan2(s,d),p=o?1:-1;f<0&&(f=hv+f),(f>=i&&f<=r||f+hv>=i&&f+hv<=r)&&(f>Math.PI/2&&f<1.5*Math.PI&&(p=-p),h+=p)}}return h}function mi(t,e,n,i,r){for(var o=0,a=0,s=0,l=0,u=0,h=0;h1&&(n||(o+=hi(a,s,l,u,i,r))),1==h&&(l=a=t[h],u=s=t[h+1]),c){case uv.M:a=l=t[h++],s=u=t[h++];break;case uv.L:if(n){if(oi(a,s,t[h],t[h+1],e,i,r))return!0}else o+=hi(a,s,t[h],t[h+1],i,r)||0;a=t[h++],s=t[h++];break;case uv.C:if(n){if(ai(a,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],e,i,r))return!0}else o+=fi(a,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],i,r)||0;a=t[h++],s=t[h++];break;case uv.Q:if(n){if(si(a,s,t[h++],t[h++],t[h],t[h+1],e,i,r))return!0}else o+=pi(a,s,t[h++],t[h++],t[h],t[h+1],i,r)||0;a=t[h++],s=t[h++];break;case uv.A:var d=t[h++],f=t[h++],p=t[h++],g=t[h++],m=t[h++],v=t[h++],y=(t[h++],1-t[h++]),x=Math.cos(m)*p+d,_=Math.sin(m)*g+f;h>1?o+=hi(a,s,x,_,i,r):(l=x,u=_);var w=(i-d)*g/p+d;if(n){if(ui(d,f,g,m,m+v,y,e,w,r))return!0}else o+=gi(d,f,g,m,m+v,y,w,r);a=Math.cos(m+v)*p+d,s=Math.sin(m+v)*g+f;break;case uv.R:l=a=t[h++],u=s=t[h++];var x=l+t[h++],_=u+t[h++];if(n){if(oi(l,u,x,u,e,i,r)||oi(x,u,x,_,e,i,r)||oi(x,_,l,_,e,i,r)||oi(l,_,l,u,e,i,r))return!0}else o+=hi(x,u,x,_,i,r),o+=hi(l,_,l,u,i,r);break;case uv.Z:if(n){if(oi(a,s,l,u,e,i,r))return!0}else o+=hi(a,s,l,u,i,r);a=l,s=u}}return n||ci(s,u)||(o+=hi(a,s,l,u,i,r)||0),0!==o}function vi(t,e,n){return mi(t,0,!1,e,n)}function yi(t,e,n,i){return mi(t,e,!0,n,i)}function xi(t){Xe.call(this,t),this.path=null}function _i(t,e,n,i,r,o,a,s,l,u,h){var c=l*(Cv/180),d=Iv(c)*(t-n)/2+Sv(c)*(e-i)/2,f=-1*Sv(c)*(t-n)/2+Iv(c)*(e-i)/2,p=d*d/(a*a)+f*f/(s*s);p>1&&(a*=Mv(p),s*=Mv(p));var g=(r===o?-1:1)*Mv((a*a*(s*s)-a*a*(f*f)-s*s*(d*d))/(a*a*(f*f)+s*s*(d*d)))||0,m=g*a*f/s,v=g*-s*d/a,y=(t+n)/2+Iv(c)*m-Sv(c)*v,x=(e+i)/2+Sv(c)*m+Iv(c)*v,_=Av([1,0],[(d-m)/a,(f-v)/s]),w=[(d-m)/a,(f-v)/s],b=[(-1*d-m)/a,(-1*f-v)/s],M=Av(w,b);Dv(w,b)<=-1&&(M=Cv),Dv(w,b)>=1&&(M=0),0===o&&M>0&&(M-=2*Cv),1===o&&M<0&&(M+=2*Cv),h.addData(u,y,x,a,s,_,M,c,o)}function wi(t){if(!t)return[];var e,n=t.replace(/-/g," -").replace(/ /g," ").replace(/ /g,",").replace(/,,/g,",");for(e=0;e0&&""===f[0]&&f.shift();for(var p=0;p=2){if(r&&"spline"!==r){var o=Rv(i,r,n,e.smoothConstraint);t.moveTo(i[0][0],i[0][1]);for(var a=i.length,s=0;s<(n?a:a-1);s++){var l=o[2*s],u=o[2*s+1],h=i[(s+1)%a];t.bezierCurveTo(l[0],l[1],u[0],u[1],h[0],h[1])}}else{"spline"===r&&(i=Nv(i,n)),t.moveTo(i[0][0],i[0][1]);for(var s=1,c=i.length;s=0)&&(i={textFill:null,textStroke:t.textStroke,textStrokeWidth:t.textStrokeWidth},t.textFill="#fff",null==t.textStroke&&(t.textStroke=n.autoColor,null==t.textStrokeWidth&&(t.textStrokeWidth=2))),i}function ir(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth)}function rr(t,e){var n=e||e.getModel("textStyle");return L([t.fontStyle||n&&n.getShallow("fontStyle")||"",t.fontWeight||n&&n.getShallow("fontWeight")||"",(t.fontSize||n&&n.getShallow("fontSize")||12)+"px",t.fontFamily||n&&n.getShallow("fontFamily")||"sans-serif"].join(" "))}function or(t,e,n,i,r,o){if("function"==typeof r&&(o=r,r=null),i&&i.isAnimationEnabled()){var a=t?"Update":"",s=i.getShallow("animationDuration"+a),l=i.getShallow("animationEasing"+a),u=i.getShallow("animationDelay"+a);"function"==typeof u&&(u=u(r,i.getAnimationDelayParams?i.getAnimationDelayParams(e,r):null)),"function"==typeof s&&(s=s(r)),s>0?e.animateTo(n,s,u||0,l,o,!!o):(e.stopAnimation(),e.attr(n),o&&o())}else e.stopAnimation(),e.attr(n),o&&o()}function ar(t,e,n,i,r){or(!0,t,e,n,i,r)}function sr(t,e,n,i,r){or(!1,t,e,n,i,r)}function lr(t,e){for(var n=ot([]);t&&t!==e;)st(n,t.getLocalTransform(),n),t=t.parent;return n}function ur(t,e,n){return e&&!c(e)&&(e=Qp.getLocalTransform(e)),n&&(e=ct([],e)),$([],t,e)}function hr(t,e,n){var i=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),r=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),o=["left"===t?-i:"right"===t?i:0,"top"===t?-r:"bottom"===t?r:0];return o=ur(o,e,n),Math.abs(o[0])>Math.abs(o[1])?o[0]>0?"right":"left":o[1]>0?"bottom":"top"}function cr(t,e,n,i){function r(t){var e={position:F(t.position),rotation:t.rotation};return t.shape&&(e.shape=o({},t.shape)),e}if(t&&e){var a=function(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=a[t.anid];if(e){var i=r(t);t.attr(r(e)),ar(t,i,n,t.dataIndex)}}})}}function dr(t,e){return f(t,function(t){var n=t[0];n=Kv(n,e.x),n=Qv(n,e.x+e.width);var i=t[1];return i=Kv(i,e.y),i=Qv(i,e.y+e.height),[n,i]})}function fr(t,e,n){var i=(e=o({rectHover:!0},e)).style={strokeNoScale:!0};if(n=n||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(i.image=t.slice(8),a(i,n),new je(e)):ki(t.replace("path://",""),e,n,"center")}function pr(t,e,n){this.parentModel=e,this.ecModel=n,this.option=t}function gr(t,e,n){for(var i=0;i0){if(t<=e[0])return n[0];if(t>=e[1])return n[1]}else{if(t>=e[0])return n[0];if(t<=e[1])return n[1]}else{if(t===e[0])return n[0];if(t===e[1])return n[1]}return(t-e[0])/r*o+n[0]}function _r(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return"string"==typeof t?yr(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function wr(t,e,n){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),n?t:+t}function br(t){return t.sort(function(t,e){return t-e}),t}function Mr(t){if(t=+t,isNaN(t))return 0;for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}function Sr(t){var e=t.toString(),n=e.indexOf("e");if(n>0){var i=+e.slice(n+1);return i<0?-i:0}var r=e.indexOf(".");return r<0?0:e.length-1-r}function Ir(t,e){var n=Math.log,i=Math.LN10,r=Math.floor(n(t[1]-t[0])/i),o=Math.round(n(Math.abs(e[1]-e[0]))/i),a=Math.min(Math.max(-r+o,0),20);return isFinite(a)?a:20}function Cr(t,e,n){if(!t[e])return 0;var i=p(t,function(t,e){return t+(isNaN(e)?0:e)},0);if(0===i)return 0;for(var r=Math.pow(10,n),o=f(t,function(t){return(isNaN(t)?0:t)/i*r*100}),a=100*r,s=f(o,function(t){return Math.floor(t)}),l=p(s,function(t,e){return t+e},0),u=f(o,function(t,e){return t-s[e]});lh&&(h=u[d],c=d);++s[c],u[c]=0,++l}return s[e]/r}function Tr(t){var e=2*Math.PI;return(t%e+e)%e}function Dr(t){return t>-ly&&t=-20?+t.toFixed(i<0?-i:0):t}function Or(t){return isNaN(t)?"-":(t=(t+"").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:"")}function zr(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,function(t,e){return e.toUpperCase()}),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}function Er(t){return null==t?"":(t+"").replace(dy,function(t,e){return fy[e]})}function Nr(t,e,n){y(e)||(e=[e]);var i=e.length;if(!i)return"";for(var r=e[0].$vars||[],o=0;o':'':""}function Br(t,e){return t+="","0000".substr(0,e-t.length)+t}function Vr(t,e,n){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var i=Ar(e),r=n?"UTC":"",o=i["get"+r+"FullYear"](),a=i["get"+r+"Month"]()+1,s=i["get"+r+"Date"](),l=i["get"+r+"Hours"](),u=i["get"+r+"Minutes"](),h=i["get"+r+"Seconds"](),c=i["get"+r+"Milliseconds"]();return t=t.replace("MM",Br(a,2)).replace("M",a).replace("yyyy",o).replace("yy",o%100).replace("dd",Br(s,2)).replace("d",s).replace("hh",Br(l,2)).replace("h",l).replace("mm",Br(u,2)).replace("m",u).replace("ss",Br(h,2)).replace("s",h).replace("SSS",Br(c,3))}function Fr(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}function Hr(t,e,n,i,r){var o=0,a=0;null==i&&(i=1/0),null==r&&(r=1/0);var s=0;e.eachChild(function(l,u){var h,c,d=l.position,f=l.getBoundingRect(),p=e.childAt(u+1),g=p&&p.getBoundingRect();if("horizontal"===t){var m=f.width+(g?-g.x+f.x:0);(h=o+m)>i||l.newline?(o=0,h=m,a+=s+n,s=f.height):s=Math.max(s,f.height)}else{var v=f.height+(g?-g.y+f.y:0);(c=a+v)>r||l.newline?(o+=s+n,a=0,c=v,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=o,d[1]=a,"horizontal"===t?o=h+n:a=c+n)})}function Gr(t,e,n){n=cy(n||0);var i=e.width,r=e.height,o=_r(t.left,i),a=_r(t.top,r),s=_r(t.right,i),l=_r(t.bottom,r),u=_r(t.width,i),h=_r(t.height,r),c=n[2]+n[0],d=n[1]+n[3],f=t.aspect;switch(isNaN(u)&&(u=i-s-d-o),isNaN(h)&&(h=r-l-c-a),null!=f&&(isNaN(u)&&isNaN(h)&&(f>i/r?u=.8*i:h=.8*r),isNaN(u)&&(u=f*h),isNaN(h)&&(h=u/f)),isNaN(o)&&(o=i-s-u-d),isNaN(a)&&(a=r-l-h-c),t.left||t.right){case"center":o=i/2-u/2-n[3];break;case"right":o=i-u-d}switch(t.top||t.bottom){case"middle":case"center":a=r/2-h/2-n[0];break;case"bottom":a=r-h-c}o=o||0,a=a||0,isNaN(u)&&(u=i-d-o-(s||0)),isNaN(h)&&(h=r-c-a-(l||0));var p=new Xt(o+n[3],a+n[0],u,h);return p.margin=n,p}function Wr(t,e,n,i,r){var o=!r||!r.hv||r.hv[0],s=!r||!r.hv||r.hv[1],l=r&&r.boundingMode||"all";if(o||s){var u;if("raw"===l)u="group"===t.type?new Xt(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(u=t.getBoundingRect(),t.needLocalTransform()){var h=t.getLocalTransform();(u=u.clone()).applyTransform(h)}e=Gr(a({width:u.width,height:u.height},e),n,i);var c=t.position,d=o?e.x-u.x:0,f=s?e.y-u.y:0;t.attr("position","raw"===l?[d,f]:[c[0]+d,c[1]+f])}}function Zr(t,e,n){function i(n,i){var a={},l=0,u={},h=0;if(xy(n,function(e){u[e]=t[e]}),xy(n,function(t){r(e,t)&&(a[t]=u[t]=e[t]),o(a,t)&&l++,o(u,t)&&h++}),s[i])return o(e,n[1])?u[n[2]]=null:o(e,n[2])&&(u[n[1]]=null),u;if(2!==h&&l){if(l>=2)return a;for(var c=0;ce)return t[i];return t[n-1]}function Yr(t){var e=t.get("coordinateSystem"),n={coordSysName:e,coordSysDims:[],axisMap:N(),categoryAxisMap:N()},i=ky[e];if(i)return i(t,n,n.axisMap,n.categoryAxisMap),n}function qr(t){return"category"===t.get("type")}function $r(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===zy?{}:[]),this.sourceFormat=t.sourceFormat||Ey,this.seriesLayoutBy=t.seriesLayoutBy||Ry,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&N(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}function Kr(t){var e=t.option.source,n=Ey;if(M(e))n=Ny;else if(y(e))for(var i=0,r=e.length;i=e:"max"===n?t<=e:t===e}function Mo(t,e){return t.join(",")===e.join(",")}function So(t,e){Zy(e=e||{},function(e,n){if(null!=e){var i=t[n];if(Iy.hasClass(n)){e=xn(e);var r=Mn(i=xn(i),e);t[n]=Xy(r,function(t){return t.option&&t.exist?jy(t.exist,t.option,!0):t.exist||t.option})}else t[n]=jy(i,e,!0)}})}function Io(t){var e=t&&t.itemStyle;if(e)for(var n=0,r=Ky.length;n=0;p--){var g=t[p];if(s||(d=g.data.rawIndexOf(g.stackedByDimension,c)),d>=0){var m=g.data.getByRawIndex(g.stackResultDimension,d);if(h>=0&&m>0||h<=0&&m<0){h+=m,f=m;break}}}return i[0]=h,i[1]=f,i});a.hostModel.setData(l),e.data=l})}function Ro(t,e){$r.isInstance(t)||(t=$r.seriesDataToSource(t)),this._source=t;var n=this._data=t.data,i=t.sourceFormat;i===Ny&&(this._offset=0,this._dimSize=e,this._data=n),o(this,ix[i===Ly?i+"_"+t.seriesLayoutBy:i])}function Bo(){return this._data.length}function Vo(t){return this._data[t]}function Fo(t){for(var e=0;ee.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function ea(t,e){d(t.CHANGABLE_METHODS,function(n){t.wrapMethod(n,v(na,e))})}function na(t){var e=ia(t);e&&e.setOutputEnd(this.count())}function ia(t){var e=(t.ecModel||{}).scheduler,n=e&&e.getPipeline(t.uid);if(n){var i=n.currentTask;if(i){var r=i.agentStubMap;r&&(i=r.get(t.uid))}return i}}function ra(){this.group=new Sg,this.uid=vr("viewChart"),this.renderTask=Xo({plan:sa,reset:la}),this.renderTask.context={view:this}}function oa(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var n=0;n=0?i():c=setTimeout(i,-o),u=r};return d.clear=function(){c&&(clearTimeout(c),c=null)},d.debounceNextCall=function(t){l=t},d}function ha(t,e,n,i){var r=t[e];if(r){var o=r[xx]||r,a=r[bx];if(r[_x]!==n||a!==i){if(null==n||!i)return t[e]=o;(r=t[e]=ua(o,n,"debounce"===i))[xx]=o,r[bx]=i,r[_x]=n}return r}}function ca(t,e){var n=t[e];n&&n[xx]&&(t[e]=n[xx])}function da(t,e,n,i){this.ecInstance=t,this.api=e,this.unfinished;var n=this._dataProcessorHandlers=n.slice(),i=this._visualHandlers=i.slice();this._allHandlers=n.concat(i),this._stageTaskMap=N()}function fa(t,e,n,i,r){function o(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}r=r||{};var a;d(e,function(e,s){if(!r.visualType||r.visualType===e.visualType){var l=t._stageTaskMap.get(e.uid),u=l.seriesTaskMap,h=l.overallTask;if(h){var c,d=h.agentStubMap;d.each(function(t){o(r,t)&&(t.dirty(),c=!0)}),c&&h.dirty(),Dx(h,i);var f=t.getPerformArgs(h,r.block);d.each(function(t){t.perform(f)}),a|=h.perform(f)}else u&&u.each(function(s,l){o(r,s)&&s.dirty();var u=t.getPerformArgs(s,r.block);u.skip=!e.performRawSeries&&n.isSeriesFiltered(s.context.model),Dx(s,i),a|=s.perform(u)})}}),t.unfinished|=a}function pa(t,e,n,i,r){function o(n){var o=n.uid,s=a.get(o)||a.set(o,Xo({plan:_a,reset:wa,count:Ma}));s.context={model:n,ecModel:i,api:r,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:t},Sa(t,n,s)}var a=n.seriesTaskMap||(n.seriesTaskMap=N()),s=e.seriesType,l=e.getTargetSeries;e.createOnAllSeries?i.eachRawSeries(o):s?i.eachRawSeriesByType(s,o):l&&l(i,r).each(o);var u=t._pipelineMap;a.each(function(t,e){u.get(e)||(t.dispose(),a.removeKey(e))})}function ga(t,e,n,i,r){function o(e){var n=e.uid,i=s.get(n);i||(i=s.set(n,Xo({reset:va,onDirty:xa})),a.dirty()),i.context={model:e,overallProgress:h,modifyOutputEnd:c},i.agent=a,i.__block=h,Sa(t,e,i)}var a=n.overallTask=n.overallTask||Xo({reset:ma});a.context={ecModel:i,api:r,overallReset:e.overallReset,scheduler:t};var s=a.agentStubMap=a.agentStubMap||N(),l=e.seriesType,u=e.getTargetSeries,h=!0,c=e.modifyOutputEnd;l?i.eachRawSeriesByType(l,o):u?u(i,r).each(o):(h=!1,d(i.getSeries(),o));var f=t._pipelineMap;s.each(function(t,e){f.get(e)||(t.dispose(),a.dirty(),s.removeKey(e))})}function ma(t){t.overallReset(t.ecModel,t.api,t.payload)}function va(t,e){return t.overallProgress&&ya}function ya(){this.agent.dirty(),this.getDownstream().dirty()}function xa(){this.agent&&this.agent.dirty()}function _a(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function wa(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=xn(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?f(e,function(t,e){return ba(e)}):Ax}function ba(t){return function(e,n){var i=n.data,r=n.resetDefines[t];if(r&&r.dataEach)for(var o=e.start;oe.get("hoverLayerThreshold")&&!bp.node&&n.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function Ua(t,e){var n=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.style.blend!==n&&t.setStyle("blend",n),t.eachPendingDisplayable&&t.eachPendingDisplayable(function(t){t.setStyle("blend",n)})})}function Xa(t,e){var n=t.get("z"),i=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=i&&(t.zlevel=i))})}function ja(t){var e=t._coordSysMgr;return o(new vo(t),{getCoordinateSystems:m(e.getCoordinateSystems,e),getComponentByElement:function(e){for(;e;){var n=e.__ecComponentInfo;if(null!=n)return t._model.getComponent(n.mainType,n.index);e=e.parent}}})}function Ya(t){function e(t,e){for(var i=0;i65535?x_:__}function ms(t){var e=t.constructor;return e===Array?t.slice():new e(t)}function vs(t,e){d(w_.concat(e.__wrappedMethods||[]),function(n){e.hasOwnProperty(n)&&(t[n]=e[n])}),t.__wrappedMethods=e.__wrappedMethods,d(b_,function(i){t[i]=n(e[i])}),t._calculationInfo=o(e._calculationInfo)}function ys(t){var e=t._invertedIndicesMap;d(e,function(n,i){var r=t._dimensionInfos[i].ordinalMeta;if(r){n=e[i]=new x_(r.categories.length);for(o=0;o=0?this._indices[t]:-1}function bs(t,e){var n=t._idList[e];return null==n&&(n=xs(t,t._idDimIdx,e)),null==n&&(n=v_+e),n}function Ms(t){return y(t)||(t=[t]),t}function Ss(t,e){var n=t.dimensions,i=new M_(f(n,t.getDimensionInfo,t),t.hostModel);vs(i,t);for(var r=i._storage={},o=t._storage,a=0;a=0?(r[s]=Is(o[s]),i._rawExtent[s]=Cs(),i._extent[s]=null):r[s]=o[s])}return i}function Is(t){for(var e=new Array(t.length),n=0;ni&&(a=r.interval=i);var s=r.intervalPrecision=Hs(a);return Ws(r.niceTickExtent=[k_(Math.ceil(t[0]/a)*a,s),k_(Math.floor(t[1]/a)*a,s)],t),r}function Hs(t){return Sr(t)+2}function Gs(t,e,n){t[e]=Math.max(Math.min(t[e],n[1]),n[0])}function Ws(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),Gs(t,0,e),Gs(t,1,e),t[0]>t[1]&&(t[0]=t[1])}function Zs(t,e,n,i){var r=[];if(!t)return r;e[0]1e4)return[];return e[1]>(r.length?r[r.length-1]:n[1])&&r.push(e[1]),r}function Us(t){return t.get("stack")||O_+t.seriesIndex}function Xs(t){return t.dim+t.index}function js(t,e){var n=[];return e.eachSeriesByType(t,function(t){Ks(t)&&!Qs(t)&&n.push(t)}),n}function Ys(t){var e=[];return d(t,function(t){var n=t.getData(),i=t.coordinateSystem.getBaseAxis(),r=i.getExtent(),o="category"===i.type?i.getBandWidth():Math.abs(r[1]-r[0])/n.count(),a=_r(t.get("barWidth"),o),s=_r(t.get("barMaxWidth"),o),l=t.get("barGap"),u=t.get("barCategoryGap");e.push({bandWidth:o,barWidth:a,barMaxWidth:s,barGap:l,barCategoryGap:u,axisKey:Xs(i),stackId:Us(t)})}),qs(e)}function qs(t){var e={};d(t,function(t,n){var i=t.axisKey,r=t.bandWidth,o=e[i]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},a=o.stacks;e[i]=o;var s=t.stackId;a[s]||o.autoWidthCount++,a[s]=a[s]||{width:0,maxWidth:0};var l=t.barWidth;l&&!a[s].width&&(a[s].width=l,l=Math.min(o.remainedWidth,l),o.remainedWidth-=l);var u=t.barMaxWidth;u&&(a[s].maxWidth=u);var h=t.barGap;null!=h&&(o.gap=h);var c=t.barCategoryGap;null!=c&&(o.categoryGap=c)});var n={};return d(e,function(t,e){n[e]={};var i=t.stacks,r=t.bandWidth,o=_r(t.categoryGap,r),a=_r(t.gap,1),s=t.remainedWidth,l=t.autoWidthCount,u=(s-o)/(l+(l-1)*a);u=Math.max(u,0),d(i,function(t,e){var n=t.maxWidth;n&&n=0||n?e.toGlobalCoord(e.dataToCoord(0)):e.getGlobalExtent()[0]}function tl(t,e){return U_(t,Z_(e))}function el(t,e){var n,i,r,o=t.type,a=e.getMin(),s=e.getMax(),l=null!=a,u=null!=s,h=t.getExtent();"ordinal"===o?n=e.getCategories().length:(y(i=e.get("boundaryGap"))||(i=[i||0,i||0]),"boolean"==typeof i[0]&&(i=[0,0]),i[0]=_r(i[0],1),i[1]=_r(i[1],1),r=h[1]-h[0]||Math.abs(h[0])),null==a&&(a="ordinal"===o?n?0:NaN:h[0]-i[0]*r),null==s&&(s="ordinal"===o?n?n-1:NaN:h[1]+i[1]*r),"dataMin"===a?a=h[0]:"function"==typeof a&&(a=a({min:h[0],max:h[1]})),"dataMax"===s?s=h[1]:"function"==typeof s&&(s=s({min:h[0],max:h[1]})),(null==a||!isFinite(a))&&(a=NaN),(null==s||!isFinite(s))&&(s=NaN),t.setBlank(I(a)||I(s)||"ordinal"===o&&!t.getOrdinalMeta().categories.length),e.getNeedCrossZero()&&(a>0&&s>0&&!l&&(a=0),a<0&&s<0&&!u&&(s=0));var c=e.ecModel;if(c&&"time"===o){var f,p=js("bar",c);if(d(p,function(t){f|=t.getBaseAxis()===e.axis}),f){var g=Ys(p),m=nl(a,s,e,g);a=m.min,s=m.max}}return[a,s]}function nl(t,e,n,i){var r=n.axis.getExtent(),o=r[1]-r[0],a=$s(i,n.axis);if(void 0===a)return{min:t,max:e};var s=1/0;d(a,function(t){s=Math.min(t.offset,s)});var l=-1/0;d(a,function(t){l=Math.max(t.offset+t.width,l)}),s=Math.abs(s),l=Math.abs(l);var u=s+l,h=e-t,c=h/(1-(s+l)/o)-h;return e+=c*(l/u),t-=c*(s/u),{min:t,max:e}}function il(t,e){var n=el(t,e),i=null!=e.getMin(),r=null!=e.getMax(),o=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase"));var a=t.type;t.setExtent(n[0],n[1]),t.niceExtent({splitNumber:o,fixMin:i,fixMax:r,minInterval:"interval"===a||"time"===a?e.get("minInterval"):null,maxInterval:"interval"===a||"time"===a?e.get("maxInterval"):null});var s=e.get("interval");null!=s&&t.setInterval&&t.setInterval(s)}function rl(t,e){if(e=e||t.get("type"))switch(e){case"category":return new A_(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new L_;default:return(Ns.getClass(e)||L_).create(t)}}function ol(t){var e=t.scale.getExtent(),n=e[0],i=e[1];return!(n>0&&i>0||n<0&&i<0)}function al(t){var e=t.getLabelModel().get("formatter"),n="category"===t.type?t.scale.getExtent()[0]:null;return"string"==typeof e?e=function(t){return function(e){return t.replace("{value}",null!=e?e:"")}}(e):"function"==typeof e?function(i,r){return null!=n&&(r=i-n),e(sl(t,i),r)}:function(e){return t.scale.getLabel(e)}}function sl(t,e){return"category"===t.type?t.scale.getLabel(e):e}function ll(t){var e=t.model,n=t.scale;if(e.get("axisLabel.show")&&!n.isBlank()){var i,r,o="category"===t.type,a=n.getExtent();r=o?n.count():(i=n.getTicks()).length;var s,l=t.getLabelModel(),u=al(t),h=1;r>40&&(h=Math.ceil(r/40));for(var c=0;c>1^-(1&s),l=l>>1^-(1&l),r=s+=r,o=l+=o,i.push([s/n,l/n])}return i}function vl(t){return"category"===t.type?xl(t):bl(t)}function yl(t,e){return"category"===t.type?wl(t,e):{ticks:t.scale.getTicks()}}function xl(t){var e=t.getLabelModel(),n=_l(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:n.labelCategoryInterval}:n}function _l(t,e){var n=Ml(t,"labels"),i=Pl(e),r=Sl(n,i);if(r)return r;var o,a;return o=x(i)?kl(t,i):Al(t,a="auto"===i?Cl(t):i),Il(n,i,{labels:o,labelCategoryInterval:a})}function wl(t,e){var n=Ml(t,"ticks"),i=Pl(e),r=Sl(n,i);if(r)return r;var o,a;if(e.get("show")&&!t.scale.isBlank()||(o=[]),x(i))o=kl(t,i,!0);else if("auto"===i){var s=_l(t,t.getLabelModel());a=s.labelCategoryInterval,o=f(s.labels,function(t){return t.tickValue})}else o=Al(t,a=i,!0);return Il(n,i,{ticks:o,tickCategoryInterval:a})}function bl(t){var e=t.scale.getTicks(),n=al(t);return{labels:f(e,function(e,i){return{formattedLabel:n(e,i),rawLabel:t.scale.getLabel(e),tickValue:e}})}}function Ml(t,e){return uw(t)[e]||(uw(t)[e]=[])}function Sl(t,e){for(var n=0;n40&&(s=Math.max(1,Math.floor(a/40)));for(var l=o[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(i)),c=Math.abs(u*Math.sin(i)),d=0,f=0;l<=o[1];l+=s){var p=0,g=0,m=ce(n(l),e.font,"center","top");p=1.3*m.width,g=1.3*m.height,d=Math.max(d,p,7),f=Math.max(f,g,7)}var v=d/h,y=f/c;isNaN(v)&&(v=1/0),isNaN(y)&&(y=1/0);var x=Math.max(0,Math.floor(Math.min(v,y))),_=uw(t.model),w=_.lastAutoInterval,b=_.lastTickCount;return null!=w&&null!=b&&Math.abs(w-x)<=1&&Math.abs(b-a)<=1&&w>x?x=w:(_.lastTickCount=a,_.lastAutoInterval=x),x}function Dl(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}function Al(t,e,n){function i(t){l.push(n?t:{formattedLabel:r(t),rawLabel:o.getLabel(t),tickValue:t})}var r=al(t),o=t.scale,a=o.getExtent(),s=t.getLabelModel(),l=[],u=Math.max((e||0)+1,1),h=a[0],c=o.count();0!==h&&u>1&&c/u>2&&(h=Math.round(Math.ceil(h/u)*u));var d={min:s.get("showMinLabel"),max:s.get("showMaxLabel")};d.min&&h!==a[0]&&i(a[0]);for(var f=h;f<=a[1];f+=u)i(f);return d.max&&f!==a[1]&&i(a[1]),l}function kl(t,e,n){var i=t.scale,r=al(t),o=[];return d(i.getTicks(),function(t){var a=i.getLabel(t);e(t,a)&&o.push(n?t:{formattedLabel:r(t),rawLabel:a,tickValue:t})}),o}function Pl(t){var e=t.get("interval");return null==e?"auto":e}function Ll(t,e){var n=(t[1]-t[0])/e/2;t[0]+=n,t[1]-=n}function Ol(t,e,n,i,r){function o(t,e){return h?t>e:t0&&(t.coord-=u/(2*(e+1)))}),s={coord:e[a-1].coord+u},e.push(s)}var h=l[0]>l[1];o(e[0].coord,l[0])&&(r?e[0].coord=l[0]:e.shift()),r&&o(l[0],e[0].coord)&&e.unshift({coord:l[0]}),o(l[1],s.coord)&&(r?s.coord=l[1]:e.pop()),r&&o(s.coord,l[1])&&e.push({coord:l[1]})}}function zl(t,e){var n=t.mapDimension("defaultedLabel",!0),i=n.length;if(1===i)return Zo(t,e,n[0]);if(i){for(var r=[],o=0;o0?n=i[0]:i[1]<0&&(n=i[1]),n}function Zl(t,e,n,i){var r=NaN;t.stacked&&(r=n.get(n.getCalculationInfo("stackedOverDimension"),i)),isNaN(r)&&(r=t.valueStart);var o=t.baseDataOffset,a=[];return a[o]=n.get(t.baseDim,i),a[1-o]=r,e.dataToPoint(a)}function Ul(t,e){var n=[];return e.diff(t).add(function(t){n.push({cmd:"+",idx:t})}).update(function(t,e){n.push({cmd:"=",idx:e,idx1:t})}).remove(function(t){n.push({cmd:"-",idx:t})}).execute(),n}function Xl(t){return isNaN(t[0])||isNaN(t[1])}function jl(t,e,n,i,r,o,a,s,l,u,h){return"none"!==u&&u?Yl.apply(this,arguments):ql.apply(this,arguments)}function Yl(t,e,n,i,r,o,a,s,l,u,h){for(var c=0,d=n,f=0;f=r||d<0)break;if(Xl(p)){if(h){d+=o;continue}break}if(d===n)t[o>0?"moveTo":"lineTo"](p[0],p[1]);else if(l>0){var g=e[c],m="y"===u?1:0,v=(p[m]-g[m])*l;Iw(Tw,g),Tw[m]=g[m]+v,Iw(Dw,p),Dw[m]=p[m]-v,t.bezierCurveTo(Tw[0],Tw[1],Dw[0],Dw[1],p[0],p[1])}else t.lineTo(p[0],p[1]);c=d,d+=o}return f}function ql(t,e,n,i,r,o,a,s,l,u,h){for(var c=0,d=n,f=0;f=r||d<0)break;if(Xl(p)){if(h){d+=o;continue}break}if(d===n)t[o>0?"moveTo":"lineTo"](p[0],p[1]),Iw(Tw,p);else if(l>0){var g=d+o,m=e[g];if(h)for(;m&&Xl(e[g]);)m=e[g+=o];var v=.5,y=e[c];if(!(m=e[g])||Xl(m))Iw(Dw,p);else{Xl(m)&&!h&&(m=p),W(Cw,m,y);var x,_;if("x"===u||"y"===u){var w="x"===u?0:1;x=Math.abs(p[w]-y[w]),_=Math.abs(p[w]-m[w])}else x=Fp(p,y),_=Fp(p,m);Sw(Dw,p,Cw,-l*(1-(v=_/(_+x))))}bw(Tw,Tw,s),Mw(Tw,Tw,a),bw(Dw,Dw,s),Mw(Dw,Dw,a),t.bezierCurveTo(Tw[0],Tw[1],Dw[0],Dw[1],p[0],p[1]),Sw(Tw,p,Cw,l*v)}else t.lineTo(p[0],p[1]);c=d,d+=o}return f}function $l(t,e){var n=[1/0,1/0],i=[-1/0,-1/0];if(e)for(var r=0;ri[0]&&(i[0]=o[0]),o[1]>i[1]&&(i[1]=o[1])}return{min:e?n:i,max:e?i:n}}function Kl(t,e){if(t.length===e.length){for(var n=0;ne[0]?1:-1;e[0]+=i*n,e[1]-=i*n}return e}function tu(t,e,n){if(!n.valueDim)return[];for(var i=[],r=0,o=e.count();ro[1]&&o.reverse();var a=r.getExtent(),s=Math.PI/180;n&&(o[0]-=.5,o[1]+=.5);var l=new zv({shape:{cx:wr(t.cx,1),cy:wr(t.cy,1),r0:wr(o[0],1),r:wr(o[1],1),startAngle:-a[0]*s,endAngle:-a[1]*s,clockwise:r.inverse}});return e&&(l.shape.endAngle=-a[0]*s,sr(l,{shape:{endAngle:-a[1]*s}},i)),l}function iu(t,e,n,i){return"polar"===t.type?nu(t,e,n,i):eu(t,e,n,i)}function ru(t,e,n){for(var i=e.getBaseAxis(),r="x"===i.dim||"radius"===i.dim?0:1,o=[],a=0;a=0;o--){var a=n[o].dimension,s=t.dimensions[a],l=t.getDimensionInfo(s);if("x"===(i=l&&l.coordDim)||"y"===i){r=n[o];break}}if(r){var u=e.getAxis(i),h=f(r.stops,function(t){return{coord:u.toGlobalCoord(u.dataToCoord(t.value)),color:t.color}}),c=h.length,p=r.outerColors.slice();c&&h[0].coord>h[c-1].coord&&(h.reverse(),p.reverse());var g=h[0].coord-10,m=h[c-1].coord+10,v=m-g;if(v<.001)return"transparent";d(h,function(t){t.offset=(t.coord-g)/v}),h.push({offset:c?h[c-1].offset:.5,color:p[1]||"transparent"}),h.unshift({offset:c?h[0].offset:.5,color:p[0]||"transparent"});var y=new jv(0,0,0,0,h,!0);return y[i]=g,y[i+"2"]=m,y}}}function au(t,e,n){var i=t.get("showAllSymbol"),r="auto"===i;if(!i||r){var o=n.getAxesByScale("ordinal")[0];if(o&&(!r||!su(o,e))){var a=e.mapDimension(o.dim),s={};return d(o.getViewLabels(),function(t){s[t.tickValue]=1}),function(t){return!s.hasOwnProperty(e.get(a,t))}}}}function su(t,e){var n=t.getExtent(),i=Math.abs(n[1]-n[0])/t.scale.count();isNaN(i)&&(i=0);for(var r=e.count(),o=Math.max(1,Math.round(r/5)),a=0;ai)return!1;return!0}function lu(t){return this._axes[t]}function uu(t){Ew.call(this,t)}function hu(t,e){return e.type||(e.data?"category":"value")}function cu(t,e,n){return t.getCoordSysModel()===e}function du(t,e,n){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,n),this.model=t}function fu(t,e,n){n.getAxesOnZeroOf=function(){return i?[i]:[]};var i,r=t[e],o=n.model,a=o.get("axisLine.onZero"),s=o.get("axisLine.onZeroAxisIndex");if(a)if(null==s){for(var l in r)if(r.hasOwnProperty(l)&&pu(r[l])){i=r[l];break}}else pu(r[s])&&(i=r[s])}function pu(t){return t&&"category"!==t.type&&"time"!==t.type&&ol(t)}function gu(t,e){var n=t.getExtent(),i=n[0]+n[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return i-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return i-t+e}}function mu(t,e){return f(Zw,function(e){return t.getReferringComponents(e)[0]})}function vu(t){return"cartesian2d"===t.get("coordinateSystem")}function yu(t){var e={componentType:t.mainType};return e[t.mainType+"Index"]=t.componentIndex,e}function xu(t,e,n,i){var r,o,a=Tr(n-t.rotation),s=i[0]>i[1],l="start"===e&&!s||"start"!==e&&s;return Dr(a-Uw/2)?(o=l?"bottom":"top",r="center"):Dr(a-1.5*Uw)?(o=l?"top":"bottom",r="center"):(o="middle",r=a<1.5*Uw&&a>Uw/2?l?"left":"right":l?"right":"left"),{rotation:a,textAlign:r,textVerticalAlign:o}}function _u(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}function wu(t,e,n){var i=t.get("axisLabel.showMinLabel"),r=t.get("axisLabel.showMaxLabel");e=e||[],n=n||[];var o=e[0],a=e[1],s=e[e.length-1],l=e[e.length-2],u=n[0],h=n[1],c=n[n.length-1],d=n[n.length-2];!1===i?(bu(o),bu(u)):Mu(o,a)&&(i?(bu(a),bu(h)):(bu(o),bu(u))),!1===r?(bu(s),bu(c)):Mu(l,s)&&(r?(bu(l),bu(d)):(bu(s),bu(c)))}function bu(t){t&&(t.ignore=!0)}function Mu(t,e,n){var i=t&&t.getBoundingRect().clone(),r=e&&e.getBoundingRect().clone();if(i&&r){var o=ot([]);return ut(o,o,-t.rotation),i.applyTransform(st([],o,t.getLocalTransform())),r.applyTransform(st([],o,e.getLocalTransform())),i.intersect(r)}}function Su(t){return"middle"===t||"center"===t}function Iu(t,e,n){var i=e.axis;if(e.get("axisTick.show")&&!i.scale.isBlank()){for(var r=e.getModel("axisTick"),o=r.getModel("lineStyle"),s=r.get("length"),l=i.getTicksCoords(),u=[],h=[],c=t._transform,d=[],f=0;f=0||t===e}function Ou(t){var e=zu(t);if(e){var n=e.axisPointerModel,i=e.axis.scale,r=n.option,o=n.get("status"),a=n.get("value");null!=a&&(a=i.parse(a));var s=Nu(n);null==o&&(r.status=s?"show":"hide");var l=i.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==a||a>l[1])&&(a=l[1]),a0?"bottom":"top":r.width>0?"left":"right";l||Hu(t.style,d,i,u,o,n,p),qi(t,d)}function Xu(t,e){var n=t.get(rb)||0;return Math.min(n,Math.abs(e.width),Math.abs(e.height))}function ju(t,e,n){var i=t.getData(),r=[],o=i.getLayout("valueAxisHorizontal")?1:0;r[1-o]=i.getLayout("valueAxisStart");var a=new sb({shape:{points:i.getLayout("largePoints")},incremental:!!n,__startPoint:r,__valueIdx:o});e.add(a),Yu(a,t,i)}function Yu(t,e,n){var i=n.getVisual("borderColor")||n.getVisual("color"),r=e.getModel("itemStyle").getItemStyle(["color","borderColor"]);t.useStyle(r),t.style.fill=null,t.style.stroke=i,t.style.lineWidth=n.getLayout("barWidth")}function qu(t,e,n,i){var r=e.getData(),o=this.dataIndex,a=r.getName(o),s=e.get("selectedOffset");i.dispatchAction({type:"pieToggleSelect",from:t,name:a,seriesId:e.id}),r.each(function(t){$u(r.getItemGraphicEl(t),r.getItemLayout(t),e.isSelected(r.getName(t)),s,n)})}function $u(t,e,n,i,r){var o=(e.startAngle+e.endAngle)/2,a=Math.cos(o),s=Math.sin(o),l=n?i:0,u=[a*l,s*l];r?t.animate().when(200,{position:u}).start("bounceOut"):t.attr("position",u)}function Ku(t,e){function n(){o.ignore=o.hoverIgnore,a.ignore=a.hoverIgnore}function i(){o.ignore=o.normalIgnore,a.ignore=a.normalIgnore}Sg.call(this);var r=new zv({z2:2}),o=new Vv,a=new kv;this.add(r),this.add(o),this.add(a),this.updateData(t,e,!0),this.on("emphasis",n).on("normal",i).on("mouseover",n).on("mouseout",i)}function Qu(t,e,n,i,r,o,a){function s(e,n){for(var i=e;i>=0&&(t[i].y-=n,!(i>0&&t[i].y>t[i-1].y+t[i-1].height));i--);}function l(t,e,n,i,r,o){for(var a=e?Number.MAX_VALUE:0,s=0,l=t.length;s=a&&(d=a-10),!e&&d<=a&&(d=a+10),t[s].x=n+d*o,a=d}}t.sort(function(t,e){return t.y-e.y});for(var u,h=0,c=t.length,d=[],f=[],p=0;pe&&o+1t[o].y+t[o].height)return void s(o,i/2);s(n-1,i/2)}(p,c,-u),h=t[p].y+t[p].height;a-h<0&&s(c-1,h-a);for(p=0;p=n?f.push(t[p]):d.push(t[p]);l(d,!1,e,n,i,r),l(f,!0,e,n,i,r)}function Ju(t,e,n,i,r,o){for(var a=[],s=[],l=0;l=0&&s<0)&&(a=p,s=f,r=u,o.length=0),xb(h,function(t){o.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:o,snapToValue:r}}function hh(t,e,n,i){t[e.key]={value:n,payloadBatch:i}}function ch(t,e,n,i){var r=n.payloadBatch,o=e.axis,a=o.model,s=e.axisPointerModel;if(e.triggerTooltip&&r.length){var l=e.coordSys.model,u=Ru(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:o.dim,axisIndex:a.componentIndex,axisType:a.type,axisId:a.id,value:i,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:r.slice()})}}function dh(t,e,n){var i=n.axesInfo=[];xb(e,function(e,n){var r=e.axisPointerModel.option,o=t[n];o?(!e.useHandle&&(r.status="show"),r.value=o.value,r.seriesDataIndices=(o.payloadBatch||[]).slice()):!e.useHandle&&(r.status="hide"),"show"===r.status&&i.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:r.value})})}function fh(t,e,n,i){if(!vh(e)&&t.list.length){var r=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};i({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:n.tooltipOption,position:n.position,dataIndexInside:r.dataIndexInside,dataIndex:r.dataIndex,seriesIndex:r.seriesIndex,dataByCoordSys:t.list})}else i({type:"hideTip"})}function ph(t,e,n){var i=n.getZr(),r=wb(i).axisPointerLastHighlights||{},o=wb(i).axisPointerLastHighlights={};xb(t,function(t,e){var n=t.axisPointerModel.option;"show"===n.status&&xb(n.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;o[e]=t})});var a=[],s=[];d(r,function(t,e){!o[e]&&s.push(t)}),d(o,function(t,e){!r[e]&&a.push(t)}),s.length&&n.dispatchAction({type:"downplay",escapeConnect:!0,batch:s}),a.length&&n.dispatchAction({type:"highlight",escapeConnect:!0,batch:a})}function gh(t,e){for(var n=0;n<(t||[]).length;n++){var i=t[n];if(e.axis.dim===i.axisDim&&e.axis.model.componentIndex===i.axisIndex)return i}}function mh(t){var e=t.axis.model,n={},i=n.axisDim=t.axis.dim;return n.axisIndex=n[i+"AxisIndex"]=e.componentIndex,n.axisName=n[i+"AxisName"]=e.name,n.axisId=n[i+"AxisId"]=e.id,n}function vh(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function yh(t,e,n){if(!bp.node){var i=e.getZr();bb(i).records||(bb(i).records={}),xh(i,e),(bb(i).records[t]||(bb(i).records[t]={})).handler=n}}function xh(t,e){function n(n,i){t.on(n,function(n){var r=Mh(e);Mb(bb(t).records,function(t){t&&i(t,n,r.dispatchAction)}),_h(r.pendings,e)})}bb(t).initialized||(bb(t).initialized=!0,n("click",v(bh,"click")),n("mousemove",v(bh,"mousemove")),n("globalout",wh))}function _h(t,e){var n,i=t.showTip.length,r=t.hideTip.length;i?n=t.showTip[i-1]:r&&(n=t.hideTip[r-1]),n&&(n.dispatchAction=null,e.dispatchAction(n))}function wh(t,e,n){t.handler("leave",null,n)}function bh(t,e,n,i){e.handler(t,n,i)}function Mh(t){var e={showTip:[],hideTip:[]},n=function(i){var r=e[i.type];r?r.push(i):(i.dispatchAction=n,t.dispatchAction(i))};return{dispatchAction:n,pendings:e}}function Sh(t,e){if(!bp.node){var n=e.getZr();(bb(n).records||{})[t]&&(bb(n).records[t]=null)}}function Ih(){}function Ch(t,e,n,i){Th(Ib(n).lastProp,i)||(Ib(n).lastProp=i,e?ar(n,i,t):(n.stopAnimation(),n.attr(i)))}function Th(t,e){if(w(t)&&w(e)){var n=!0;return d(e,function(e,i){n=n&&Th(t[i],e)}),!!n}return t===e}function Dh(t,e){t[e.get("label.show")?"show":"hide"]()}function Ah(t){return{position:t.position.slice(),rotation:t.rotation||0}}function kh(t,e,n){var i=e.get("z"),r=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=r&&(t.zlevel=r),t.silent=n)})}function Ph(t){var e,n=t.get("type"),i=t.getModel(n+"Style");return"line"===n?(e=i.getLineStyle()).fill=null:"shadow"===n&&((e=i.getAreaStyle()).stroke=null),e}function Lh(t,e,n,i,r){var o=zh(n.get("value"),e.axis,e.ecModel,n.get("seriesDataIndices"),{precision:n.get("label.precision"),formatter:n.get("label.formatter")}),a=n.getModel("label"),s=cy(a.get("padding")||0),l=a.getFont(),u=ce(o,l),h=r.position,c=u.width+s[1]+s[3],d=u.height+s[0]+s[2],f=r.align;"right"===f&&(h[0]-=c),"center"===f&&(h[0]-=c/2);var p=r.verticalAlign;"bottom"===p&&(h[1]-=d),"middle"===p&&(h[1]-=d/2),Oh(h,c,d,i);var g=a.get("backgroundColor");g&&"auto"!==g||(g=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:c,height:d,r:a.get("borderRadius")},position:h.slice(),style:{text:o,textFont:l,textFill:a.getTextColor(),textPosition:"inside",fill:g,stroke:a.get("borderColor")||"transparent",lineWidth:a.get("borderWidth")||0,shadowBlur:a.get("shadowBlur"),shadowColor:a.get("shadowColor"),shadowOffsetX:a.get("shadowOffsetX"),shadowOffsetY:a.get("shadowOffsetY")},z2:10}}function Oh(t,e,n,i){var r=i.getWidth(),o=i.getHeight();t[0]=Math.min(t[0]+e,r)-e,t[1]=Math.min(t[1]+n,o)-n,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}function zh(t,e,n,i,r){t=e.scale.parse(t);var o=e.scale.getLabel(t,{precision:r.precision}),a=r.formatter;if(a){var s={value:sl(e,t),seriesData:[]};d(i,function(t){var e=n.getSeriesByIndex(t.seriesIndex),i=t.dataIndexInside,r=e&&e.getDataParams(i);r&&s.seriesData.push(r)}),_(a)?o=a.replace("{value}",o):x(a)&&(o=a(s))}return o}function Eh(t,e,n){var i=rt();return ut(i,i,n.rotation),lt(i,i,n.position),ur([t.dataToCoord(e),(n.labelOffset||0)+(n.labelDirection||1)*(n.labelMargin||0)],i)}function Nh(t,e,n,i,r,o){var a=Xw.innerTextLayout(n.rotation,0,n.labelDirection);n.labelMargin=r.get("label.margin"),Lh(e,i,r,o,{position:Eh(i.axis,t,n),align:a.textAlign,verticalAlign:a.textVerticalAlign})}function Rh(t,e,n){return n=n||0,{x1:t[n],y1:t[1-n],x2:e[n],y2:e[1-n]}}function Bh(t,e,n){return n=n||0,{x:t[n],y:t[1-n],width:e[n],height:e[1-n]}}function Vh(t,e){var n={};return n[e.dim+"AxisIndex"]=e.index,t.getCartesian(n)}function Fh(t){return"x"===t.dim?0:1}function Hh(t){var e="left "+t+"s cubic-bezier(0.23, 1, 0.32, 1),top "+t+"s cubic-bezier(0.23, 1, 0.32, 1)";return f(Lb,function(t){return t+"transition:"+e}).join(";")}function Gh(t){var e=[],n=t.get("fontSize"),i=t.getTextColor();return i&&e.push("color:"+i),e.push("font:"+t.getFont()),n&&e.push("line-height:"+Math.round(3*n/2)+"px"),kb(["decoration","align"],function(n){var i=t.get(n);i&&e.push("text-"+n+":"+i)}),e.join(";")}function Wh(t){var e=[],n=t.get("transitionDuration"),i=t.get("backgroundColor"),r=t.getModel("textStyle"),o=t.get("padding");return n&&e.push(Hh(n)),i&&(bp.canvasSupported?e.push("background-Color:"+i):(e.push("background-Color:#"+Dt(i)),e.push("filter:alpha(opacity=70)"))),kb(["width","color","radius"],function(n){var i="border-"+n,r=Pb(i),o=t.get(r);null!=o&&e.push(i+":"+o+("color"===n?"":"px"))}),e.push(Gh(r)),null!=o&&e.push("padding:"+cy(o).join("px ")+"px"),e.join(";")+";"}function Zh(t,e){if(bp.wxa)return null;var n=document.createElement("div"),i=this._zr=e.getZr();this.el=n,this._x=e.getWidth()/2,this._y=e.getHeight()/2,t.appendChild(n),this._container=t,this._show=!1,this._hideTimeout;var r=this;n.onmouseenter=function(){r._enterable&&(clearTimeout(r._hideTimeout),r._show=!0),r._inContent=!0},n.onmousemove=function(e){if(e=e||window.event,!r._enterable){var n=i.handler;rn(t,e,!0),n.dispatch("mousemove",e)}},n.onmouseleave=function(){r._enterable&&r._show&&r.hideLater(r._hideDelay),r._inContent=!1}}function Uh(t){for(var e=t.pop();t.length;){var n=t.pop();n&&(pr.isInstance(n)&&(n=n.get("tooltip",!0)),"string"==typeof n&&(n={formatter:n}),e=new pr(n,e,e.ecModel))}return e}function Xh(t,e){return t.dispatchAction||m(e.dispatchAction,e)}function jh(t,e,n,i,r,o,a){var s=qh(n),l=s.width,u=s.height;return null!=o&&(t+l+o>i?t-=l+o:t+=o),null!=a&&(e+u+a>r?e-=u+a:e+=a),[t,e]}function Yh(t,e,n,i,r){var o=qh(n),a=o.width,s=o.height;return t=Math.min(t+a,i)-a,e=Math.min(e+s,r)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function qh(t){var e=t.clientWidth,n=t.clientHeight;if(document.defaultView&&document.defaultView.getComputedStyle){var i=document.defaultView.getComputedStyle(t);i&&(e+=parseInt(i.paddingLeft,10)+parseInt(i.paddingRight,10)+parseInt(i.borderLeftWidth,10)+parseInt(i.borderRightWidth,10),n+=parseInt(i.paddingTop,10)+parseInt(i.paddingBottom,10)+parseInt(i.borderTopWidth,10)+parseInt(i.borderBottomWidth,10))}return{width:e,height:n}}function $h(t,e,n){var i=n[0],r=n[1],o=0,a=0,s=e.width,l=e.height;switch(t){case"inside":o=e.x+s/2-i/2,a=e.y+l/2-r/2;break;case"top":o=e.x+s/2-i/2,a=e.y-r-5;break;case"bottom":o=e.x+s/2-i/2,a=e.y+l+5;break;case"left":o=e.x-i-5,a=e.y+l/2-r/2;break;case"right":o=e.x+s+5,a=e.y+l/2-r/2}return[o,a]}function Kh(t){return"center"===t||"middle"===t}function Qh(t,e,n){var i,r={},o="toggleSelected"===t;return n.eachComponent("legend",function(n){o&&null!=i?n[i?"select":"unSelect"](e.name):(n[t](e.name),i=n.isSelected(e.name)),d(n.getData(),function(t){var e=t.get("name");if("\n"!==e&&""!==e){var i=n.isSelected(e);r.hasOwnProperty(e)?r[e]=r[e]&&i:r[e]=i}})}),{name:e.name,selected:r}}function Jh(t,e,n){var i=e.getBoxLayoutParams(),r=e.get("padding"),o={width:n.getWidth(),height:n.getHeight()},a=Gr(i,o,r);by(e.get("orient"),t,e.get("itemGap"),a.width,a.height),Wr(t,i,o,r)}function tc(t,e){var n=cy(e.get("padding")),i=e.getItemStyle(["color","opacity"]);return i.fill=e.get("backgroundColor"),t=new Fv({shape:{x:t.x-n[3],y:t.y-n[0],width:t.width+n[1]+n[3],height:t.height+n[0]+n[2],r:e.get("borderRadius")},style:i,silent:!0,z2:-1})}function ec(t,e){e.dispatchAction({type:"legendToggleSelect",name:t})}function nc(t,e,n,i){var r=n.getZr().storage.getDisplayList()[0];r&&r.useHoverLayer||n.dispatchAction({type:"highlight",seriesName:t.name,name:e,excludeSeriesId:i})}function ic(t,e,n,i){var r=n.getZr().storage.getDisplayList()[0];r&&r.useHoverLayer||n.dispatchAction({type:"downplay",seriesName:t.name,name:e,excludeSeriesId:i})}function rc(t,e,n){var i=[1,1];i[t.getOrient().index]=0,Zr(e,n,{type:"box",ignoreSize:i})}function oc(t){_n(t,"label",["show"])}function ac(t){return!(isNaN(parseFloat(t.x))&&isNaN(parseFloat(t.y)))}function sc(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}function lc(t,e,n,i,r,o){var a=[],s=Ps(e,i)?e.getCalculationInfo("stackResultDimension"):i,l=pc(e,s,t),u=e.indicesOfNearest(s,l)[0];a[r]=e.get(n,u),a[o]=e.get(i,u);var h=Mr(e.get(i,u));return(h=Math.min(h,20))>=0&&(a[o]=+a[o].toFixed(h)),a}function uc(t,e){var i=t.getData(),r=t.coordinateSystem;if(e&&!sc(e)&&!y(e.coord)&&r){var o=r.dimensions,a=hc(e,i,r,t);if((e=n(e)).type&&Qb[e.type]&&a.baseAxis&&a.valueAxis){var s=$b(o,a.baseAxis.dim),l=$b(o,a.valueAxis.dim);e.coord=Qb[e.type](i,a.baseDataDim,a.valueDataDim,s,l),e.value=e.coord[l]}else{for(var u=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],h=0;h<2;h++)Qb[u[h]]&&(u[h]=pc(i,i.mapDimension(o[h]),u[h]));e.coord=u}}return e}function hc(t,e,n,i){var r={};return null!=t.valueIndex||null!=t.valueDim?(r.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,r.valueAxis=n.getAxis(cc(i,r.valueDataDim)),r.baseAxis=n.getOtherAxis(r.valueAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim)):(r.baseAxis=i.getBaseAxis(),r.valueAxis=n.getOtherAxis(r.baseAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim),r.valueDataDim=e.mapDimension(r.valueAxis.dim)),r}function cc(t,e){var n=t.getData(),i=n.dimensions;e=n.getDimension(e);for(var r=0;r=0}function Fc(t,e,n){function i(t,e){return l(e.nodes,t)>=0}function r(t,i){var r=!1;return e(function(e){d(n(t,e)||[],function(t){i.records[e.name][t]&&(r=!0)})}),r}function o(t,i){i.nodes.push(t),e(function(e){d(n(t,e)||[],function(t){i.records[e.name][t]=!0})})}return function(n){var a={nodes:[],records:{}};if(e(function(t){a.records[t.name]={}}),!n)return a;o(n,a);var s;do{s=!1,t(function(t){!i(t,a)&&r(t,a)&&(o(t,a),s=!0)})}while(s);return a}}function Hc(t,e,n){var i=[1/0,-1/0];return cM(n,function(t){var n=t.getData();n&&cM(n.mapDimension(e,!0),function(t){var e=n.getApproximateExtent(t);e[0]i[1]&&(i[1]=e[1])})}),i[1]0?0:NaN);var a=n.getMax(!0);return null!=a&&"dataMax"!==a&&"function"!=typeof a?e[1]=a:r&&(e[1]=o>0?o-1:NaN),n.get("scale",!0)||(e[0]>0&&(e[0]=0),e[1]<0&&(e[1]=0)),e}function Wc(t,e){var n=t.getAxisModel(),i=t._percentWindow,r=t._valueWindow;if(i){var o=Ir(r,[0,500]);o=Math.min(o,20);var a=e||0===i[0]&&100===i[1];n.setRange(a?null:+r[0].toFixed(o),a?null:+r[1].toFixed(o))}}function Zc(t){var e=t._minMaxSpan={},n=t._dataZoomModel;cM(["min","max"],function(i){e[i+"Span"]=n.get(i+"Span");var r=n.get(i+"ValueSpan");if(null!=r&&(e[i+"ValueSpan"]=r,null!=(r=t.getAxisModel().axis.scale.parse(r)))){var o=t._dataExtent;e[i+"Span"]=xr(o[0]+r,o,[0,100],!0)}})}function Uc(t){var e={};return pM(["start","end","startValue","endValue","throttle"],function(n){t.hasOwnProperty(n)&&(e[n]=t[n])}),e}function Xc(t,e){var n=t._rangePropMode,i=t.get("rangeMode");pM([["start","startValue"],["end","endValue"]],function(t,r){var o=null!=e[t[0]],a=null!=e[t[1]];o&&!a?n[r]="percent":!o&&a?n[r]="value":i?n[r]=i[r]:o&&(n[r]="percent")})}function jc(t,e){var n=t[e]-t[1-e];return{span:Math.abs(n),sign:n>0?-1:n<0?1:e?-1:1}}function Yc(t,e){return Math.min(e[1],Math.max(e[0],t))}function qc(t){return{x:"y",y:"x",radius:"angle",angle:"radius"}[t]}function $c(t){return"vertical"===t?"ns-resize":"ew-resize"}function Kc(t,e,n){td(t)[e]=n}function Qc(t,e,n){var i=td(t);i[e]===n&&(i[e]=null)}function Jc(t,e){return!!td(t)[e]}function td(t){return t[DM]||(t[DM]={})}function ed(t){this.pointerChecker,this._zr=t,this._opt={};var e=m,i=e(nd,this),r=e(id,this),o=e(rd,this),s=e(od,this),l=e(ad,this);Zp.call(this),this.setPointerChecker=function(t){this.pointerChecker=t},this.enable=function(e,u){this.disable(),this._opt=a(n(u)||{},{zoomOnMouseWheel:!0,moveOnMouseMove:!0,preventDefaultMouseMove:!0}),null==e&&(e=!0),!0!==e&&"move"!==e&&"pan"!==e||(t.on("mousedown",i),t.on("mousemove",r),t.on("mouseup",o)),!0!==e&&"scale"!==e&&"zoom"!==e||(t.on("mousewheel",s),t.on("pinch",l))},this.disable=function(){t.off("mousedown",i),t.off("mousemove",r),t.off("mouseup",o),t.off("mousewheel",s),t.off("pinch",l)},this.dispose=this.disable,this.isDragging=function(){return this._dragging},this.isPinching=function(){return this._pinching}}function nd(t){if(!(sn(t)||t.target&&t.target.draggable)){var e=t.offsetX,n=t.offsetY;this.pointerChecker&&this.pointerChecker(t,e,n)&&(this._x=e,this._y=n,this._dragging=!0)}}function id(t){if(!sn(t)&&ld(this,"moveOnMouseMove",t)&&this._dragging&&"pinch"!==t.gestureEvent&&!Jc(this._zr,"globalPan")){var e=t.offsetX,n=t.offsetY,i=this._x,r=this._y,o=e-i,a=n-r;this._x=e,this._y=n,this._opt.preventDefaultMouseMove&&tm(t.event),this.trigger("pan",o,a,i,r,e,n)}}function rd(t){sn(t)||(this._dragging=!1)}function od(t){if(ld(this,"zoomOnMouseWheel",t)&&0!==t.wheelDelta){var e=t.wheelDelta>0?1.1:1/1.1;sd.call(this,t,e,t.offsetX,t.offsetY)}}function ad(t){if(!Jc(this._zr,"globalPan")){var e=t.pinchScale>1?1.1:1/1.1;sd.call(this,t,e,t.pinchX,t.pinchY)}}function sd(t,e,n,i){this.pointerChecker&&this.pointerChecker(t,n,i)&&(tm(t.event),this.trigger("zoom",e,n,i))}function ld(t,e,n){var i=t._opt[e];return i&&(!_(i)||n.event[i+"Key"])}function ud(t,e){var n=dd(t),i=e.dataZoomId,r=e.coordId;d(n,function(t,n){var o=t.dataZoomInfos;o[i]&&l(e.allCoordIds,r)<0&&(delete o[i],t.count--)}),pd(n);var o=n[r];o||((o=n[r]={coordId:r,dataZoomInfos:{},count:0}).controller=fd(t,o),o.dispatchAction=v(yd,t)),!o.dataZoomInfos[i]&&o.count++,o.dataZoomInfos[i]=e;var a=xd(o.dataZoomInfos);o.controller.enable(a.controlType,a.opt),o.controller.setPointerChecker(e.containsPoint),ha(o,"dispatchAction",e.throttleRate,"fixRate")}function hd(t,e){var n=dd(t);d(n,function(t){t.controller.dispose();var n=t.dataZoomInfos;n[e]&&(delete n[e],t.count--)}),pd(n)}function cd(t){return t.type+"\0_"+t.id}function dd(t){var e=t.getZr();return e[kM]||(e[kM]={})}function fd(t,e){var n=new ed(t.getZr());return n.on("pan",AM(gd,e)),n.on("zoom",AM(md,e)),n}function pd(t){d(t,function(e,n){e.count||(e.controller.dispose(),delete t[n])})}function gd(t,e,n,i,r,o,a){vd(t,function(s){return s.panGetRange(t.controller,e,n,i,r,o,a)})}function md(t,e,n,i){vd(t,function(r){return r.zoomGetRange(t.controller,e,n,i)})}function vd(t,e){var n=[];d(t.dataZoomInfos,function(t){var i=e(t);!t.disabled&&i&&n.push({dataZoomId:t.dataZoomId,start:i[0],end:i[1]})}),n.length&&t.dispatchAction(n)}function yd(t,e){t.dispatchAction({type:"dataZoom",batch:e})}function xd(t){var e,n={},i={type_true:2,type_move:1,type_false:0,type_undefined:-1};return d(t,function(t){var r=!t.disabled&&(!t.zoomLock||"move");i["type_"+r]>i["type_"+e]&&(e=r),o(n,t.roamControllerOpt)}),{controlType:e,opt:n}}function _d(t,e){zM[t]=e}function wd(t){return zM[t]}function bd(t){return 0===t.indexOf("my")}function Md(t){this.model=t}function Sd(t){this.model=t}function Id(t){var e={},n=[],i=[];return t.eachRawSeries(function(t){var r=t.coordinateSystem;if(!r||"cartesian2d"!==r.type&&"polar"!==r.type)n.push(t);else{var o=r.getBaseAxis();if("category"===o.type){var a=o.dim+"_"+o.index;e[a]||(e[a]={categoryAxis:o,valueAxis:r.getOtherAxis(o),series:[]},i.push({axisDim:o.dim,axisIndex:o.index})),e[a].series.push(t)}else n.push(t)}}),{seriesGroupByCategoryAxis:e,other:n,meta:i}}function Cd(t){var e=[];return d(t,function(t,n){var i=t.categoryAxis,r=t.valueAxis.dim,o=[" "].concat(f(t.series,function(t){return t.name})),a=[i.model.getCategories()];d(t.series,function(t){a.push(t.getRawData().mapArray(r,function(t){return t}))});for(var s=[o.join(WM)],l=0;l=0)return!0}function Pd(t){for(var e=t.split(/\n+/g),n=[],i=f(Ad(e.shift()).split(ZM),function(t){return{name:t,data:[]}}),r=0;rQM}function $d(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function Kd(t,e,n,i){var r=new Sg;return r.add(new Fv({name:"main",style:ef(n),silent:!0,draggable:!0,cursor:"move",drift:UM(t,e,r,"nswe"),ondragend:UM(Yd,e,{isEnd:!0})})),XM(i,function(n){r.add(new Fv({name:n,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:UM(t,e,r,n),ondragend:UM(Yd,e,{isEnd:!0})}))}),r}function Qd(t,e,n,i){var r=i.brushStyle.lineWidth||0,o=qM(r,JM),a=n[0][0],s=n[1][0],l=a-r/2,u=s-r/2,h=n[0][1],c=n[1][1],d=h-o+r/2,f=c-o+r/2,p=h-a,g=c-s,m=p+r,v=g+r;tf(t,e,"main",a,s,p,g),i.transformable&&(tf(t,e,"w",l,u,o,v),tf(t,e,"e",d,u,o,v),tf(t,e,"n",l,u,m,o),tf(t,e,"s",l,f,m,o),tf(t,e,"nw",l,u,o,o),tf(t,e,"ne",d,u,o,o),tf(t,e,"sw",l,f,o,o),tf(t,e,"se",d,f,o,o))}function Jd(t,e){var n=e.__brushOption,i=n.transformable,r=e.childAt(0);r.useStyle(ef(n)),r.attr({silent:!i,cursor:i?"move":"default"}),XM(["w","e","n","s","se","sw","ne","nw"],function(n){var r=e.childOfName(n),o=of(t,n);r&&r.attr({silent:!i,invisible:!i,cursor:i?nS[o]+"-resize":null})})}function tf(t,e,n,i,r,o,a){var s=e.childOfName(n);s&&s.setShape(hf(uf(t,e,[[i,r],[i+o,r+a]])))}function ef(t){return a({strokeNoScale:!0},t.brushStyle)}function nf(t,e,n,i){var r=[YM(t,n),YM(e,i)],o=[qM(t,n),qM(e,i)];return[[r[0],o[0]],[r[1],o[1]]]}function rf(t){return lr(t.group)}function of(t,e){if(e.length>1)return("e"===(i=[of(t,(e=e.split(""))[0]),of(t,e[1])])[0]||"w"===i[0])&&i.reverse(),i.join("");var n={left:"w",right:"e",top:"n",bottom:"s"},i=hr({w:"left",e:"right",n:"top",s:"bottom"}[e],rf(t));return n[i]}function af(t,e,n,i,r,o,a,s){var l=i.__brushOption,u=t(l.range),h=lf(n,o,a);XM(r.split(""),function(t){var e=eS[t];u[e[0]][e[1]]+=h[e[0]]}),l.range=e(nf(u[0][0],u[1][0],u[0][1],u[1][1])),Wd(n,i),Yd(n,{isEnd:!1})}function sf(t,e,n,i,r){var o=e.__brushOption.range,a=lf(t,n,i);XM(o,function(t){t[0]+=a[0],t[1]+=a[1]}),Wd(t,e),Yd(t,{isEnd:!1})}function lf(t,e,n){var i=t.group,r=i.transformCoordToLocal(e,n),o=i.transformCoordToLocal(0,0);return[r[0]-o[0],r[1]-o[1]]}function uf(t,e,i){var r=Xd(t,e);return r&&!0!==r?r.clipPath(i,t._transform):n(i)}function hf(t){var e=YM(t[0][0],t[1][0]),n=YM(t[0][1],t[1][1]);return{x:e,y:n,width:qM(t[0][0],t[1][0])-e,height:qM(t[0][1],t[1][1])-n}}function cf(t,e,n){if(t._brushType){var i=t._zr,r=t._covers,o=Ud(t,e,n);if(!t._dragging)for(var a=0;a=0)&&t(o,i,r)})}function Sf(t){return t[0]>t[1]&&t.reverse(),t}function If(t,e){return An(t,e,{includeMainTypes:dS})}function Cf(t,e,n,i){var r=n.getAxis(["x","y"][t]),o=Sf(f([0,1],function(t){return e?r.coordToData(r.toLocalCoord(i[t])):r.toGlobalCoord(r.dataToCoord(i[t]))})),a=[];return a[t]=o,a[1-t]=[NaN,NaN],{values:o,xyMinMax:a}}function Tf(t,e,n,i){return[e[0]-i[t]*n[0],e[1]-i[t]*n[1]]}function Df(t,e){var n=Af(t),i=Af(e),r=[n[0]/i[0],n[1]/i[1]];return isNaN(r[0])&&(r[0]=1),isNaN(r[1])&&(r[1]=1),r}function Af(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}function kf(t,e){var n=zf(t);xS(e,function(e,i){for(var r=n.length-1;r>=0&&!n[r][i];r--);if(r<0){var o=t.queryComponents({mainType:"dataZoom",subType:"select",id:i})[0];if(o){var a=o.getPercentRange();n[0][i]={dataZoomId:i,start:a[0],end:a[1]}}}}),n.push(e)}function Pf(t){var e=zf(t),n=e[e.length-1];e.length>1&&e.pop();var i={};return xS(n,function(t,n){for(var r=e.length-1;r>=0;r--)if(t=e[r][n]){i[n]=t;break}}),i}function Lf(t){t[_S]=null}function Of(t){return zf(t).length}function zf(t){var e=t[_S];return e||(e=t[_S]=[{}]),e}function Ef(t,e,n){(this._brushController=new Nd(n.getZr())).on("brush",m(this._onBrush,this)).mount(),this._isZoomActive}function Nf(t){var e={};return d(["xAxisIndex","yAxisIndex"],function(n){e[n]=t[n],null==e[n]&&(e[n]="all"),(!1===e[n]||"none"===e[n])&&(e[n]=[])}),e}function Rf(t,e){t.setIconStatus("back",Of(e)>1?"emphasis":"normal")}function Bf(t,e,n,i,r){var o=n._isZoomActive;i&&"takeGlobalCursor"===i.type&&(o="dataZoomSelect"===i.key&&i.dataZoomSelectActive),n._isZoomActive=o,t.setIconStatus("zoom",o?"emphasis":"normal");var a=new Mf(Nf(t.option),e,{include:["grid"]});n._brushController.setPanels(a.makePanelOpts(r,function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"})).enableBrush(!!o&&{brushType:"auto",brushStyle:{lineWidth:0,fill:"rgba(0,0,0,0.2)"}})}function Vf(t){this.model=t}function Ff(t){return TS(t)}function Hf(){if(!kS&&PS){kS=!0;var t=PS.styleSheets;t.length<31?PS.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}}function Gf(t){return parseInt(t,10)}function Wf(t,e){Hf(),this.root=t,this.storage=e;var n=document.createElement("div"),i=document.createElement("div");n.style.cssText="display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;",i.style.cssText="position:absolute;left:0;top:0;",t.appendChild(n),this._vmlRoot=i,this._vmlViewport=n,this.resize();var r=e.delFromStorage,o=e.addToStorage;e.delFromStorage=function(t){r.call(e,t),t&&t.onRemove&&t.onRemove(i)},e.addToStorage=function(t){t.onAdd&&t.onAdd(i),o.call(e,t)},this._firstPaint=!0}function Zf(t){return function(){yg('In IE8.0 VML mode painter not support method "'+t+'"')}}function Uf(t){return document.createElementNS(cI,t)}function Xf(t){return gI(1e4*t)/1e4}function jf(t){return t-wI}function Yf(t,e){var n=e?t.textFill:t.fill;return null!=n&&n!==pI}function qf(t,e){var n=e?t.textStroke:t.stroke;return null!=n&&n!==pI}function $f(t,e){e&&Kf(t,"transform","matrix("+fI.call(e,",")+")")}function Kf(t,e,n){(!n||"linear"!==n.type&&"radial"!==n.type)&&("string"==typeof n&&n.indexOf("NaN")>-1&&console.log(n),t.setAttribute(e,n))}function Qf(t,e,n){t.setAttributeNS("http://www.w3.org/1999/xlink",e,n)}function Jf(t,e,n){if(Yf(e,n)){var i=n?e.textFill:e.fill;i="transparent"===i?pI:i,"none"!==t.getAttribute("clip-path")&&i===pI&&(i="rgba(0, 0, 0, 0.002)"),Kf(t,"fill",i),Kf(t,"fill-opacity",e.opacity)}else Kf(t,"fill",pI);if(qf(e,n)){var r=n?e.textStroke:e.stroke;Kf(t,"stroke",r="transparent"===r?pI:r),Kf(t,"stroke-width",(n?e.textStrokeWidth:e.lineWidth)/(!n&&e.strokeNoScale?e.host.getLineScale():1)),Kf(t,"paint-order",n?"stroke":"fill"),Kf(t,"stroke-opacity",e.opacity),e.lineDash?(Kf(t,"stroke-dasharray",e.lineDash.join(",")),Kf(t,"stroke-dashoffset",gI(e.lineDashOffset||0))):Kf(t,"stroke-dasharray",""),e.lineCap&&Kf(t,"stroke-linecap",e.lineCap),e.lineJoin&&Kf(t,"stroke-linejoin",e.lineJoin),e.miterLimit&&Kf(t,"stroke-miterlimit",e.miterLimit)}else Kf(t,"stroke",pI)}function tp(t){for(var e=[],n=t.data,i=t.len(),r=0;r=xI||!jf(g)&&(d>-yI&&d<0||d>yI)==!!p;var y=Xf(s+u*vI(c)),x=Xf(l+h*mI(c));m&&(d=p?xI-1e-4:1e-4-xI,v=!0,9===r&&e.push("M",y,x));var _=Xf(s+u*vI(c+d)),w=Xf(l+h*mI(c+d));e.push("A",Xf(u),Xf(h),gI(f*_I),+v,+p,_,w);break;case dI.Z:o="Z";break;case dI.R:var _=Xf(n[r++]),w=Xf(n[r++]),b=Xf(n[r++]),M=Xf(n[r++]);e.push("M",_,w,"L",_+b,w,"L",_+b,w+M,"L",_,w+M,"L",_,w)}o&&e.push(o);for(var S=0;S=11)}}(navigator.userAgent),Mp={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},Sp={"[object Int8Array]":1,"[object Uint8Array]":1,"[object Uint8ClampedArray]":1,"[object Int16Array]":1,"[object Uint16Array]":1,"[object Int32Array]":1,"[object Uint32Array]":1,"[object Float32Array]":1,"[object Float64Array]":1},Ip=Object.prototype.toString,Cp=Array.prototype,Tp=Cp.forEach,Dp=Cp.filter,Ap=Cp.slice,kp=Cp.map,Pp=Cp.reduce,Lp={},Op=function(){return Lp.createCanvas()};Lp.createCanvas=function(){return document.createElement("canvas")};var zp,Ep="__ec_primitive__";E.prototype={constructor:E,get:function(t){return this.hasOwnProperty(t)?this[t]:null},set:function(t,e){return this[t]=e},each:function(t,e){void 0!==e&&(t=m(t,e));for(var n in this)this.hasOwnProperty(n)&&t(this[n],n)},removeKey:function(t){delete this[t]}};var Np=(Object.freeze||Object)({$override:e,clone:n,merge:i,mergeAll:r,extend:o,defaults:a,createCanvas:Op,getContext:s,indexOf:l,inherits:u,mixin:h,isArrayLike:c,each:d,map:f,reduce:p,filter:g,find:function(t,e,n){if(t&&e)for(var i=0,r=t.length;i3&&(e=Wp.call(e,1));for(var i=this._$handlers[t],r=i.length,o=0;o4&&(e=Wp.call(e,1,e.length-1));for(var i=e[e.length-1],r=this._$handlers[t],o=r.length,a=0;a=0;o--){var a;if(i[o]!==n&&!i[o].ignore&&(a=it(i[o],t,e))&&(!r.topTarget&&(r.topTarget=i[o]),a!==Up)){r.target=i[o];break}}return r}},d(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){jp.prototype[t]=function(e){var n=this.findHover(e.zrX,e.zrY),i=n.target;if("mousedown"===t)this._downEl=i,this._downPoint=[e.zrX,e.zrY],this._upEl=i;else if("mouseup"===t)this._upEl=i;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||Fp(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(n,t,e)}}),h(jp,Zp),h(jp,J);var Yp="undefined"==typeof Float32Array?Array:Float32Array,qp=(Object.freeze||Object)({create:rt,identity:ot,copy:at,mul:st,translate:lt,rotate:ut,scale:ht,invert:ct,clone:function(t){var e=rt();return at(e,t),e}}),$p=ot,Kp=5e-5,Qp=function(t){(t=t||{}).position||(this.position=[0,0]),null==t.rotation&&(this.rotation=0),t.scale||(this.scale=[1,1]),this.origin=this.origin||null},Jp=Qp.prototype;Jp.transform=null,Jp.needLocalTransform=function(){return dt(this.rotation)||dt(this.position[0])||dt(this.position[1])||dt(this.scale[0]-1)||dt(this.scale[1]-1)},Jp.updateTransform=function(){var t=this.parent,e=t&&t.transform,n=this.needLocalTransform(),i=this.transform;n||e?(i=i||rt(),n?this.getLocalTransform(i):$p(i),e&&(n?st(i,t.transform,i):at(i,t.transform)),this.transform=i,this.invTransform=this.invTransform||rt(),ct(this.invTransform,i)):i&&$p(i)},Jp.getLocalTransform=function(t){return Qp.getLocalTransform(this,t)},Jp.setTransform=function(t){var e=this.transform,n=t.dpr||1;e?t.setTransform(n*e[0],n*e[1],n*e[2],n*e[3],n*e[4],n*e[5]):t.setTransform(n,0,0,n,0,0)},Jp.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var tg=[];Jp.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(st(tg,t.invTransform,e),e=tg);var n=e[0]*e[0]+e[1]*e[1],i=e[2]*e[2]+e[3]*e[3],r=this.position,o=this.scale;dt(n-1)&&(n=Math.sqrt(n)),dt(i-1)&&(i=Math.sqrt(i)),e[0]<0&&(n=-n),e[3]<0&&(i=-i),r[0]=e[4],r[1]=e[5],o[0]=n,o[1]=i,this.rotation=Math.atan2(-e[1]/i,e[0]/n)}},Jp.getGlobalScale=function(){var t=this.transform;if(!t)return[1,1];var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]),n=Math.sqrt(t[2]*t[2]+t[3]*t[3]);return t[0]<0&&(e=-e),t[3]<0&&(n=-n),[e,n]},Jp.transformCoordToLocal=function(t,e){var n=[t,e],i=this.invTransform;return i&&$(n,n,i),n},Jp.transformCoordToGlobal=function(t,e){var n=[t,e],i=this.transform;return i&&$(n,n,i),n},Qp.getLocalTransform=function(t,e){$p(e=e||[]);var n=t.origin,i=t.scale||[1,1],r=t.rotation||0,o=t.position||[0,0];return n&&(e[4]-=n[0],e[5]-=n[1]),ht(e,e,i),r&&ut(e,e,r),n&&(e[4]+=n[0],e[5]+=n[1]),e[4]+=o[0],e[5]+=o[1],e};var eg={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4))},elasticOut:function(t){var e,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/.4)+1)},elasticInOut:function(t){var e,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),(t*=2)<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*.5+1)},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-eg.bounceOut(1-t)},bounceOut:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return t<.5?.5*eg.bounceIn(2*t):.5*eg.bounceOut(2*t-1)+.5}};ft.prototype={constructor:ft,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)this._pausedTime+=e;else{var n=(t-this._startTime-this._pausedTime)/this._life;if(!(n<0)){n=Math.min(n,1);var i=this.easing,r="string"==typeof i?eg[i]:i,o="function"==typeof r?r(n):n;return this.fire("frame",o),1==n?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}}},restart:function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0,this._needsRemove=!1},fire:function(t,e){this[t="on"+t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}};var ng=function(){this.head=null,this.tail=null,this._len=0},ig=ng.prototype;ig.insert=function(t){var e=new rg(t);return this.insertEntry(e),e},ig.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},ig.remove=function(t){var e=t.prev,n=t.next;e?e.next=n:this.head=n,n?n.prev=e:this.tail=e,t.next=t.prev=null,this._len--},ig.len=function(){return this._len},ig.clear=function(){this.head=this.tail=null,this._len=0};var rg=function(t){this.value=t,this.next,this.prev},og=function(t){this._list=new ng,this._map={},this._maxSize=t||10,this._lastRemovedEntry=null},ag=og.prototype;ag.put=function(t,e){var n=this._list,i=this._map,r=null;if(null==i[t]){var o=n.len(),a=this._lastRemovedEntry;if(o>=this._maxSize&&o>0){var s=n.head;n.remove(s),delete i[s.key],r=s.value,this._lastRemovedEntry=s}a?a.value=e:a=new rg(e),a.key=t,n.insertEntry(a),i[t]=a}return r},ag.get=function(t){var e=this._map[t],n=this._list;if(null!=e)return e!==n.tail&&(n.remove(e),n.insertEntry(e)),e.value},ag.clear=function(){this._list.clear(),this._map={}};var sg={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]},lg=new og(20),ug=null,hg=At,cg=kt,dg=(Object.freeze||Object)({parse:St,lift:Tt,toHex:Dt,fastLerp:At,fastMapToColor:hg,lerp:kt,mapToColor:cg,modifyHSL:function(t,e,n,i){if(t=St(t))return t=Ct(t),null!=e&&(t[0]=gt(e)),null!=n&&(t[1]=yt(n)),null!=i&&(t[2]=yt(i)),Lt(It(t),"rgba")},modifyAlpha:Pt,stringify:Lt}),fg=Array.prototype.slice,pg=function(t,e,n,i){this._tracks={},this._target=t,this._loop=e||!1,this._getter=n||Ot,this._setter=i||zt,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};pg.prototype={when:function(t,e){var n=this._tracks;for(var i in e)if(e.hasOwnProperty(i)){if(!n[i]){n[i]=[];var r=this._getter(this._target,i);if(null==r)continue;0!==t&&n[i].push({time:0,value:Gt(r)})}n[i].push({time:t,value:e[i]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;t0&&this.animate(t,!1).when(null==i?500:i,o).delay(r||0),this}};var _g=function(t){Qp.call(this,t),Zp.call(this,t),xg.call(this,t),this.id=t.id||_p()};_g.prototype={type:"element",name:"",__zr:null,ignore:!1,clipPath:null,isGroup:!1,drift:function(t,e){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0}var n=this.transform;n||(n=this.transform=[1,0,0,1,0,0]),n[4]+=t,n[5]+=e,this.decomposeTransform(),this.dirty(!1)},beforeUpdate:function(){},afterUpdate:function(){},update:function(){this.updateTransform()},traverse:function(t,e){},attrKV:function(t,e){if("position"===t||"scale"===t||"origin"===t){if(e){var n=this[t];n||(n=this[t]=[]),n[0]=e[0],n[1]=e[1]}}else this[t]=e},hide:function(){this.ignore=!0,this.__zr&&this.__zr.refresh()},show:function(){this.ignore=!1,this.__zr&&this.__zr.refresh()},attr:function(t,e){if("string"==typeof t)this.attrKV(t,e);else if(w(t))for(var n in t)t.hasOwnProperty(n)&&this.attrKV(n,t[n]);return this.dirty(!1),this},setClipPath:function(t){var e=this.__zr;e&&t.addSelfToZr(e),this.clipPath&&this.clipPath!==t&&this.removeClipPath(),this.clipPath=t,t.__zr=e,t.__clipTarget=this,this.dirty(!1)},removeClipPath:function(){var t=this.clipPath;t&&(t.__zr&&t.removeSelfFromZr(t.__zr),t.__zr=null,t.__clipTarget=null,this.clipPath=null,this.dirty(!1))},addSelfToZr:function(t){this.__zr=t;var e=this.animators;if(e)for(var n=0;n=n.x&&t<=n.x+n.width&&e>=n.y&&e<=n.y+n.height},clone:function(){return new Xt(this.x,this.y,this.width,this.height)},copy:function(t){this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},Xt.create=function(t){return new Xt(t.x,t.y,t.width,t.height)};var Sg=function(t){t=t||{},_g.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};Sg.prototype={constructor:Sg,isGroup:!0,type:"group",silent:!1,children:function(){return this._children.slice()},childAt:function(t){return this._children[t]},childOfName:function(t){for(var e=this._children,n=0;n=0&&(n.splice(i,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,n=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof Sg&&t.addChildrenToStorage(e)),n&&n.refresh()},remove:function(t){var e=this.__zr,n=this.__storage,i=this._children,r=l(i,t);return r<0?this:(i.splice(r,1),t.parent=null,n&&(n.delFromStorage(t),t instanceof Sg&&t.delChildrenFromStorage(n)),e&&e.refresh(),this)},removeAll:function(){var t,e,n=this._children,i=this.__storage;for(e=0;e=0&&(this.delFromStorage(t),this._roots.splice(r,1),t instanceof Sg&&t.delChildrenFromStorage(this))}},addToStorage:function(t){return t&&(t.__storage=this,t.dirty(!1)),this},delFromStorage:function(t){return t&&(t.__storage=null),this},dispose:function(){this._renderList=this._roots=null},displayableSortFunc:ee};var Dg={shadowBlur:1,shadowOffsetX:1,shadowOffsetY:1,textShadowBlur:1,textShadowOffsetX:1,textShadowOffsetY:1,textBoxShadowBlur:1,textBoxShadowOffsetX:1,textBoxShadowOffsetY:1},Ag=function(t,e,n){return Dg.hasOwnProperty(e)?n*=t.dpr:n},kg=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],Pg=function(t,e){this.extendFrom(t,!1),this.host=e};Pg.prototype={constructor:Pg,host:null,fill:"#000",stroke:null,opacity:1,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,font:null,textFont:null,fontStyle:null,fontWeight:null,fontSize:null,fontFamily:null,textTag:null,textFill:"#000",textStroke:null,textWidth:null,textHeight:null,textStrokeWidth:0,textLineHeight:null,textPosition:"inside",textRect:null,textOffset:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowColor:"transparent",textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textBoxShadowColor:"transparent",textBoxShadowBlur:0,textBoxShadowOffsetX:0,textBoxShadowOffsetY:0,transformText:!1,textRotation:0,textOrigin:null,textBackgroundColor:null,textBorderColor:null,textBorderWidth:0,textBorderRadius:0,textPadding:null,rich:null,truncate:null,blend:null,bind:function(t,e,n){for(var i=this,r=n&&n.style,o=!r,a=0;a0},extendFrom:function(t,e){if(t)for(var n in t)!t.hasOwnProperty(n)||!0!==e&&(!1===e?this.hasOwnProperty(n):null==t[n])||(this[n]=t[n])},set:function(t,e){"string"==typeof t?this[t]=e:this.extendFrom(t,!0)},clone:function(){var t=new this.constructor;return t.extendFrom(this,!0),t},getGradient:function(t,e,n){for(var i=("radial"===e.type?ie:ne)(t,e,n),r=e.colorStops,o=0;o=0&&n.splice(i,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,n=0;n15)break}s.__drawIndex=m,s.__drawIndex0&&t>i[0]){for(a=0;at);a++);o=n[i[a]]}if(i.splice(a+1,0,t),n[t]=e,!e.virtual)if(o){var l=o.dom;l.nextSibling?s.insertBefore(e.dom,l.nextSibling):s.appendChild(e.dom)}else s.firstChild?s.insertBefore(e.dom,s.firstChild):s.appendChild(e.dom)}else yg("Layer of zlevel "+t+" is not valid")},eachLayer:function(t,e){var n,i,r=this._zlevelList;for(i=0;i0?.01:0),this._needsManuallyCompositing),o.__builtin__||yg("ZLevel "+s+" has been used by unkown layer "+o.id),o!==n&&(o.__used=!0,o.__startIndex!==r&&(o.__dirty=!0),o.__startIndex=r,o.incremental?o.__drawIndex=-1:o.__drawIndex=r,e(r),n=o),a.__dirty&&(o.__dirty=!0,o.incremental&&o.__drawIndex<0&&(o.__drawIndex=r))}e(r),this.eachBuiltinLayer(function(t,e){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},setBackgroundColor:function(t){this._backgroundColor=t},configLayer:function(t,e){if(e){var n=this._layerConfig;n[t]?i(n[t],e,!0):n[t]=e;for(var r=0;r=0&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),n=0;n1&&i&&i.length>1){var o=ln(i)/ln(r);!isFinite(o)&&(o=1),e.pinchScale=o;var a=un(i);return e.pinchX=a[0],e.pinchY=a[1],{type:"pinch",target:t[0].target,event:e}}}}},rm=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],om=["touchstart","touchend","touchmove"],am={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},sm=f(rm,function(t){var e=t.replace("mouse","pointer");return am[e]?e:t}),lm={mousemove:function(t){t=rn(this.dom,t),this.trigger("mousemove",t)},mouseout:function(t){var e=(t=rn(this.dom,t)).toElement||t.relatedTarget;if(e!=this.dom)for(;e&&9!=e.nodeType;){if(e===this.dom)return;e=e.parentNode}this.trigger("mouseout",t)},touchstart:function(t){(t=rn(this.dom,t)).zrByTouch=!0,this._lastTouchMoment=new Date,cn(this,t,"start"),lm.mousemove.call(this,t),lm.mousedown.call(this,t),dn(this)},touchmove:function(t){(t=rn(this.dom,t)).zrByTouch=!0,cn(this,t,"change"),lm.mousemove.call(this,t),dn(this)},touchend:function(t){(t=rn(this.dom,t)).zrByTouch=!0,cn(this,t,"end"),lm.mouseup.call(this,t),+new Date-this._lastTouchMoment<300&&lm.click.call(this,t),dn(this)},pointerdown:function(t){lm.mousedown.call(this,t)},pointermove:function(t){fn(t)||lm.mousemove.call(this,t)},pointerup:function(t){lm.mouseup.call(this,t)},pointerout:function(t){fn(t)||lm.mouseout.call(this,t)}};d(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){lm[t]=function(e){e=rn(this.dom,e),this.trigger(t,e)}});var um=gn.prototype;um.dispose=function(){for(var t=rm.concat(om),e=0;e=0||i&&l(i,a)<0)){var s=e.getShallow(a);null!=s&&(r[t[o][0]]=s)}}return r}},Im=Sm([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),Cm={getLineStyle:function(t){var e=Im(this,t),n=this.getLineDash(e.lineWidth);return n&&(e.lineDash=n),e},getLineDash:function(t){null==t&&(t=1);var e=this.get("type"),n=Math.max(t,2),i=4*t;return"solid"===e||null==e?null:"dashed"===e?[i,i]:[n,n]}},Tm=Sm([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),Dm={getAreaStyle:function(t,e){return Tm(this,t,e)}},Am=Math.pow,km=Math.sqrt,Pm=1e-8,Lm=1e-4,Om=km(3),zm=1/3,Em=B(),Nm=B(),Rm=B(),Bm=Math.min,Vm=Math.max,Fm=Math.sin,Hm=Math.cos,Gm=2*Math.PI,Wm=B(),Zm=B(),Um=B(),Xm=[],jm=[],Ym={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},qm=[],$m=[],Km=[],Qm=[],Jm=Math.min,tv=Math.max,ev=Math.cos,nv=Math.sin,iv=Math.sqrt,rv=Math.abs,ov="undefined"!=typeof Float32Array,av=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};av.prototype={constructor:av,_xi:0,_yi:0,_x0:0,_y0:0,_ux:0,_uy:0,_len:0,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e){this._ux=rv(1/mg/t)||0,this._uy=rv(1/mg/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(Ym.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},lineTo:function(t,e){var n=rv(t-this._xi)>this._ux||rv(e-this._yi)>this._uy||this._len<5;return this.addData(Ym.L,t,e),this._ctx&&n&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),n&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,n,i,r,o){return this.addData(Ym.C,t,e,n,i,r,o),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,n,i,r,o):this._ctx.bezierCurveTo(t,e,n,i,r,o)),this._xi=r,this._yi=o,this},quadraticCurveTo:function(t,e,n,i){return this.addData(Ym.Q,t,e,n,i),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,n,i):this._ctx.quadraticCurveTo(t,e,n,i)),this._xi=n,this._yi=i,this},arc:function(t,e,n,i,r,o){return this.addData(Ym.A,t,e,n,n,i,r-i,0,o?0:1),this._ctx&&this._ctx.arc(t,e,n,i,r,o),this._xi=ev(r)*n+t,this._yi=nv(r)*n+t,this},arcTo:function(t,e,n,i,r){return this._ctx&&this._ctx.arcTo(t,e,n,i,r),this},rect:function(t,e,n,i){return this._ctx&&this._ctx.rect(t,e,n,i),this.addData(Ym.R,t,e,n,i),this},closePath:function(){this.addData(Ym.Z);var t=this._ctx,e=this._x0,n=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,n),t.closePath()),this._xi=e,this._yi=n,this},fill:function(t){t&&t.fill(),this.toStatic()},stroke:function(t){t&&t.stroke(),this.toStatic()},setLineDash:function(t){if(t instanceof Array){this._lineDash=t,this._dashIdx=0;for(var e=0,n=0;ne.length&&(this._expandData(),e=this.data);for(var n=0;n0&&f<=t||h<0&&f>=t||0==h&&(c>0&&p<=e||c<0&&p>=e);)f+=h*(n=a[i=this._dashIdx]),p+=c*n,this._dashIdx=(i+1)%g,h>0&&fl||c>0&&pu||s[i%2?"moveTo":"lineTo"](h>=0?Jm(f,t):tv(f,t),c>=0?Jm(p,e):tv(p,e));h=f-t,c=p-e,this._dashOffset=-iv(h*h+c*c)},_dashedBezierTo:function(t,e,n,i,r,o){var a,s,l,u,h,c=this._dashSum,d=this._dashOffset,f=this._lineDash,p=this._ctx,g=this._xi,m=this._yi,v=Gn,y=0,x=this._dashIdx,_=f.length,w=0;for(d<0&&(d=c+d),d%=c,a=0;a<1;a+=.1)s=v(g,t,n,r,a+.1)-v(g,t,n,r,a),l=v(m,e,i,o,a+.1)-v(m,e,i,o,a),y+=iv(s*s+l*l);for(;x<_&&!((w+=f[x])>d);x++);for(a=(w-d)/y;a<=1;)u=v(g,t,n,r,a),h=v(m,e,i,o,a),x%2?p.moveTo(u,h):p.lineTo(u,h),a+=f[x]/y,x=(x+1)%_;x%2!=0&&p.lineTo(r,o),s=r-u,l=o-h,this._dashOffset=-iv(s*s+l*l)},_dashedQuadraticTo:function(t,e,n,i){var r=n,o=i;n=(n+2*t)/3,i=(i+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,n,i,r,o)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,ov&&(this.data=new Float32Array(t)))},getBoundingRect:function(){qm[0]=qm[1]=Km[0]=Km[1]=Number.MAX_VALUE,$m[0]=$m[1]=Qm[0]=Qm[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,n=0,i=0,r=0,o=0;ol||rv(a-r)>u||c===h-1)&&(t.lineTo(o,a),i=o,r=a);break;case Ym.C:t.bezierCurveTo(s[c++],s[c++],s[c++],s[c++],s[c++],s[c++]),i=s[c-2],r=s[c-1];break;case Ym.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),i=s[c-2],r=s[c-1];break;case Ym.A:var f=s[c++],p=s[c++],g=s[c++],m=s[c++],v=s[c++],y=s[c++],x=s[c++],_=s[c++],w=g>m?g:m,b=g>m?1:g/m,M=g>m?m/g:1,S=v+y;Math.abs(g-m)>.001?(t.translate(f,p),t.rotate(x),t.scale(b,M),t.arc(0,0,w,v,S,1-_),t.scale(1/b,1/M),t.rotate(-x),t.translate(-f,-p)):t.arc(f,p,w,v,S,1-_),1==c&&(e=ev(v)*g+f,n=nv(v)*m+p),i=ev(S)*g+f,r=nv(S)*m+p;break;case Ym.R:e=i=s[c],n=r=s[c+1],t.rect(s[c++],s[c++],s[c++],s[c++]);break;case Ym.Z:t.closePath(),i=e,r=n}}}},av.CMD=Ym;var sv=2*Math.PI,lv=2*Math.PI,uv=av.CMD,hv=2*Math.PI,cv=1e-4,dv=[-1,-1,-1],fv=[-1,-1],pv=Eg.prototype.getCanvasPattern,gv=Math.abs,mv=new av(!0);xi.prototype={constructor:xi,type:"path",__dirtyPath:!0,strokeContainThreshold:5,brush:function(t,e){var n=this.style,i=this.path||mv,r=n.hasStroke(),o=n.hasFill(),a=n.fill,s=n.stroke,l=o&&!!a.colorStops,u=r&&!!s.colorStops,h=o&&!!a.image,c=r&&!!s.image;if(n.bind(t,this,e),this.setTransform(t),this.__dirty){var d;l&&(d=d||this.getBoundingRect(),this._fillGradient=n.getGradient(t,a,d)),u&&(d=d||this.getBoundingRect(),this._strokeGradient=n.getGradient(t,s,d))}l?t.fillStyle=this._fillGradient:h&&(t.fillStyle=pv.call(a,t)),u?t.strokeStyle=this._strokeGradient:c&&(t.strokeStyle=pv.call(s,t));var f=n.lineDash,p=n.lineDashOffset,g=!!t.setLineDash,m=this.getGlobalScale();i.setScale(m[0],m[1]),this.__dirtyPath||f&&!g&&r?(i.beginPath(t),f&&!g&&(i.setLineDash(f),i.setLineDashOffset(p)),this.buildPath(i,this.shape,!1),this.path&&(this.__dirtyPath=!1)):(t.beginPath(),this.path.rebuildPath(t)),o&&i.fill(t),f&&g&&(t.setLineDash(f),t.lineDashOffset=p),r&&i.stroke(t),f&&g&&t.setLineDash([]),null!=n.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))},buildPath:function(t,e,n){},createPathProxy:function(){this.path=new av},getBoundingRect:function(){var t=this._rect,e=this.style,n=!t;if(n){var i=this.path;i||(i=this.path=new av),this.__dirtyPath&&(i.beginPath(),this.buildPath(i,this.shape,!1)),t=i.getBoundingRect()}if(this._rect=t,e.hasStroke()){var r=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||n){r.copy(t);var o=e.lineWidth,a=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(o=Math.max(o,this.strokeContainThreshold||4)),a>1e-10&&(r.width+=o/a,r.height+=o/a,r.x-=o/a/2,r.y-=o/a/2)}return r}return t},contain:function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect(),r=this.style;if(t=n[0],e=n[1],i.contain(t,e)){var o=this.path.data;if(r.hasStroke()){var a=r.lineWidth,s=r.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(r.hasFill()||(a=Math.max(a,this.strokeContainThreshold)),yi(o,a/s,t,e)))return!0}if(r.hasFill())return vi(o,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this.setShape(e),this.__dirtyPath=!0,this._rect=null):Xe.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var n=this.shape;if(n){if(w(t))for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i]);else n[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this.transform;return t&&gv(t[0]-1)>1e-10&&gv(t[3]-1)>1e-10?Math.sqrt(gv(t[0]*t[3]-t[2]*t[1])):1}},xi.extend=function(t){var e=function(e){xi.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var n=t.shape;if(n){this.shape=this.shape||{};var i=this.shape;for(var r in n)!i.hasOwnProperty(r)&&n.hasOwnProperty(r)&&(i[r]=n[r])}t.init&&t.init.call(this,e)};u(e,xi);for(var n in t)"style"!==n&&"shape"!==n&&(e.prototype[n]=t[n]);return e},u(xi,Xe);var vv=av.CMD,yv=[[],[],[]],xv=Math.sqrt,_v=Math.atan2,wv=function(t,e){var n,i,r,o,a,s,l=t.data,u=vv.M,h=vv.C,c=vv.L,d=vv.R,f=vv.A,p=vv.Q;for(r=0,o=0;r=11?function(){var e,n=this.__clipPaths,i=this.style;if(n)for(var r=0;rn-2?n-1:c+1],u=t[c>n-3?n-1:c+2]);var p=d*d,g=d*p;i.push([Ii(s[0],f[0],l[0],u[0],d,p,g),Ii(s[1],f[1],l[1],u[1],d,p,g)])}return i},Rv=function(t,e,n,i){var r,o,a,s,l=[],u=[],h=[],c=[];if(i){a=[1/0,1/0],s=[-1/0,-1/0];for(var d=0,f=t.length;d=n&&o>=r)return{x:n,y:r,width:i-n,height:o-r}},createIcon:fr,Group:Sg,Image:je,Text:kv,Circle:Pv,Sector:zv,Ring:Ev,Polygon:Bv,Polyline:Vv,Rect:Fv,Line:Hv,BezierCurve:Wv,Arc:Zv,IncrementalDisplayable:Di,CompoundPath:Uv,LinearGradient:jv,RadialGradient:Yv,BoundingRect:Xt}),ey=["textStyle","color"],ny={getTextColor:function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(ey):null)},getFont:function(){return rr({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},getTextRect:function(t){return ce(t,this.getFont(),this.getShallow("align"),this.getShallow("verticalAlign")||this.getShallow("baseline"),this.getShallow("padding"),this.getShallow("rich"),this.getShallow("truncateText"))}},iy=Sm([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]),ry={getItemStyle:function(t,e){var n=iy(this,t,e),i=this.getBorderLineDash();return i&&(n.lineDash=i),n},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}},oy=h,ay=Dn();pr.prototype={constructor:pr,init:null,mergeOption:function(t){i(this.option,t,!0)},get:function(t,e){return null==t?this.option:gr(this.option,this.parsePath(t),!e&&mr(this,t))},getShallow:function(t,e){var n=this.option,i=null==n?n:n[t],r=!e&&mr(this,t);return null==i&&r&&(i=r.getShallow(t)),i},getModel:function(t,e){var n,i=null==t?this.option:gr(this.option,t=this.parsePath(t));return e=e||(n=mr(this,t))&&n.getModel(t),new pr(i,e,this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){return new(0,this.constructor)(n(this.option))},setReadOnly:function(t){},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){ay(this).getParent=t},isAnimationEnabled:function(){if(!bp.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},En(pr),Nn(pr),oy(pr,Cm),oy(pr,Dm),oy(pr,ny),oy(pr,ry);var sy=0,ly=1e-4,uy=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/,hy=(Object.freeze||Object)({linearMap:xr,parsePercent:_r,round:wr,asc:br,getPrecision:Mr,getPrecisionSafe:Sr,getPixelPrecision:Ir,getPercentWithPrecision:Cr,MAX_SAFE_INTEGER:9007199254740991,remRadian:Tr,isRadianAroundZero:Dr,parseDate:Ar,quantity:kr,nice:Lr,quantile:function(t,e){var n=(t.length-1)*e+1,i=Math.floor(n),r=+t[i-1],o=n-i;return o?r+o*(t[i]-r):r},reformIntervals:function(t){function e(t,n,i){return t.interval[i]=0}}),cy=k,dy=/([&<>"'])/g,fy={"&":"&","<":"<",">":">",'"':""","'":"'"},py=["a","b","c","d","e","f","g"],gy=function(t,e){return"{"+t+(null==e?"":e)+"}"},my=ve,vy=ce,yy=(Object.freeze||Object)({addCommas:Or,toCamelCase:zr,normalizeCssArray:cy,encodeHTML:Er,formatTpl:Nr,formatTplSimple:function(t,e,n){return d(e,function(e,i){t=t.replace("{"+i+"}",n?Er(e):e)}),t},getTooltipMarker:Rr,formatTime:Vr,capitalFirst:Fr,truncateText:my,getTextRect:vy}),xy=d,_y=["left","right","top","bottom","width","height"],wy=[["width","left","right"],["height","top","bottom"]],by=Hr,My=(v(Hr,"vertical"),v(Hr,"horizontal"),{getBoxLayoutParams:function(){return{left:this.get("left"),top:this.get("top"),right:this.get("right"),bottom:this.get("bottom"),width:this.get("width"),height:this.get("height")}}}),Sy=Dn(),Iy=pr.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,n,i){pr.call(this,t,e,n,i),this.uid=vr("ec_cpt_model")},init:function(t,e,n,i){this.mergeDefaultAndTheme(t,n)},mergeDefaultAndTheme:function(t,e){var n=this.layoutMode,r=n?Ur(t):{};i(t,e.getTheme().get(this.mainType)),i(t,this.getDefaultOption()),n&&Zr(t,r,n)},mergeOption:function(t,e){i(this.option,t,!0);var n=this.layoutMode;n&&Zr(this.option,t,n)},optionUpdated:function(t,e){},getDefaultOption:function(){var t=Sy(this);if(!t.defaultOption){for(var e=[],n=this.constructor;n;){var r=n.prototype.defaultOption;r&&e.push(r),n=n.superClass}for(var o={},a=e.length-1;a>=0;a--)o=i(o,e[a],!0);t.defaultOption=o}return t.defaultOption},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});Vn(Iy,{registerWhenExtend:!0}),function(t){var e={};t.registerSubTypeDefaulter=function(t,n){t=On(t),e[t.main]=n},t.determineSubType=function(n,i){var r=i.type;if(!r){var o=On(n).main;t.hasSubTypes(n)&&e[o]&&(r=e[o](i))}return r}}(Iy),function(t,e){function n(t){var n={},o=[];return d(t,function(a){var s=i(n,a),u=r(s.originalDeps=e(a),t);s.entryCount=u.length,0===s.entryCount&&o.push(a),d(u,function(t){l(s.predecessor,t)<0&&s.predecessor.push(t);var e=i(n,t);l(e.successor,t)<0&&e.successor.push(a)})}),{graph:n,noEntryList:o}}function i(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function r(t,e){var n=[];return d(t,function(t){l(e,t)>=0&&n.push(t)}),n}t.topologicalTravel=function(t,e,i,r){function o(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}if(t.length){var a=n(e),s=a.graph,l=a.noEntryList,u={};for(d(t,function(t){u[t]=!0});l.length;){var h=l.pop(),c=s[h],f=!!u[h];f&&(i.call(r,h,c.originalDeps.slice()),delete u[h]),d(c.successor,f?function(t){u[t]=!0,o(t)}:o)}d(u,function(){throw new Error("Circle dependency may exists")})}}}(Iy,function(t){var e=[];return d(Iy.getClassesByMainType(t),function(t){e=e.concat(t.prototype.dependencies||[])}),e=f(e,function(t){return On(t).main}),"dataset"!==t&&l(e,"dataset")<=0&&e.unshift("dataset"),e}),h(Iy,My);var Cy="";"undefined"!=typeof navigator&&(Cy=navigator.platform||"");var Ty={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:Cy.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:"auto",animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},Dy=Dn(),Ay={clearColorPalette:function(){Dy(this).colorIdx=0,Dy(this).colorNameMap={}},getColorFromPalette:function(t,e,n){var i=Dy(e=e||this),r=i.colorIdx||0,o=i.colorNameMap=i.colorNameMap||{};if(o.hasOwnProperty(t))return o[t];var a=xn(this.get("color",!0)),s=this.get("colorLayer",!0),l=null!=n&&s?jr(s,n):a;if((l=l||a)&&l.length){var u=l[r];return t&&(o[t]=u),i.colorIdx=(r+1)%l.length,u}}},ky={cartesian2d:function(t,e,n,i){var r=t.getReferringComponents("xAxis")[0],o=t.getReferringComponents("yAxis")[0];e.coordSysDims=["x","y"],n.set("x",r),n.set("y",o),qr(r)&&(i.set("x",r),e.firstCategoryDimIndex=0),qr(o)&&(i.set("y",o),e.firstCategoryDimIndex=1)},singleAxis:function(t,e,n,i){var r=t.getReferringComponents("singleAxis")[0];e.coordSysDims=["single"],n.set("single",r),qr(r)&&(i.set("single",r),e.firstCategoryDimIndex=0)},polar:function(t,e,n,i){var r=t.getReferringComponents("polar")[0],o=r.findAxisModel("radiusAxis"),a=r.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],n.set("radius",o),n.set("angle",a),qr(o)&&(i.set("radius",o),e.firstCategoryDimIndex=0),qr(a)&&(i.set("angle",a),e.firstCategoryDimIndex=1)},geo:function(t,e,n,i){e.coordSysDims=["lng","lat"]},parallel:function(t,e,n,i){var r=t.ecModel,o=r.getComponent("parallel",t.get("parallelIndex")),a=e.coordSysDims=o.dimensions.slice();d(o.parallelAxisIndex,function(t,o){var s=r.getComponent("parallelAxis",t),l=a[o];n.set(l,s),qr(s)&&null==e.firstCategoryDimIndex&&(i.set(l,s),e.firstCategoryDimIndex=o)})}},Py="original",Ly="arrayRows",Oy="objectRows",zy="keyedColumns",Ey="unknown",Ny="typedArray",Ry="column",By="row";$r.seriesDataToSource=function(t){return new $r({data:t,sourceFormat:M(t)?Ny:Py,fromDataset:!1})},Nn($r);var Vy=Dn(),Fy="\0_ec_inner",Hy=pr.extend({init:function(t,e,n,i){n=n||{},this.option=null,this._theme=new pr(n),this._optionManager=i},setOption:function(t,e){P(!(Fy in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption(null)},resetOption:function(t){var e=!1,n=this._optionManager;if(!t||"recreate"===t){var i=n.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this.mergeOption(i)):co.call(this,i),e=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var r=n.getTimelineOption(this);r&&(this.mergeOption(r),e=!0)}if(!t||"recreate"===t||"media"===t){var o=n.getMediaOption(this,this._api);o.length&&d(o,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(t){var e=this.option,r=this._componentsMap,a=[];Jr(this),d(t,function(t,r){null!=t&&(Iy.hasClass(r)?r&&a.push(r):e[r]=null==e[r]?n(t):i(e[r],t,!0))}),Iy.topologicalTravel(a,Iy.getAllClassMainTypes(),function(n,i){var a=xn(t[n]),s=Mn(r.get(n),a);Sn(s),d(s,function(t,e){var i=t.option;w(i)&&(t.keyInfo.mainType=n,t.keyInfo.subType=po(n,i,t.exist))});var l=fo(r,i);e[n]=[],r.set(n,[]),d(s,function(t,i){var a=t.exist,s=t.option;if(P(w(s)||a,"Empty component definition"),s){var u=Iy.getClass(n,t.keyInfo.subType,!0);if(a&&a instanceof u)a.name=t.keyInfo.name,a.mergeOption(s,this),a.optionUpdated(s,!1);else{var h=o({dependentModels:l,componentIndex:i},t.keyInfo);o(a=new u(s,this,this,h),h),a.init(s,this,this,h),a.optionUpdated(null,!0)}}else a.mergeOption({},this),a.optionUpdated({},!1);r.get(n)[i]=a,e[n][i]=a.option},this),"series"===n&&go(this,r.get("series"))},this),this._seriesIndicesMap=N(this._seriesIndices=this._seriesIndices||[])},getOption:function(){var t=n(this.option);return d(t,function(e,n){if(Iy.hasClass(n)){for(var i=(e=xn(e)).length-1;i>=0;i--)Cn(e[i])&&e.splice(i,1);t[n]=e}}),delete t[Fy],t},getTheme:function(){return this._theme},getComponent:function(t,e){var n=this._componentsMap.get(t);if(n)return n[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var n=t.index,i=t.id,r=t.name,o=this._componentsMap.get(e);if(!o||!o.length)return[];var a;if(null!=n)y(n)||(n=[n]),a=g(f(n,function(t){return o[t]}),function(t){return!!t});else if(null!=i){var s=y(i);a=g(o,function(t){return s&&l(i,t.id)>=0||!s&&t.id===i})}else if(null!=r){var u=y(r);a=g(o,function(t){return u&&l(r,t.name)>=0||!u&&t.name===r})}else a=o.slice();return mo(a,t)},findComponents:function(t){var e=t.query,n=t.mainType,i=function(t){var e=n+"Index",i=n+"Id",r=n+"Name";return!t||null==t[e]&&null==t[i]&&null==t[r]?null:{mainType:n,index:t[e],id:t[i],name:t[r]}}(e);return function(e){return t.filter?g(e,t.filter):e}(mo(i?this.queryComponents(i):this._componentsMap.get(n),t))},eachComponent:function(t,e,n){var i=this._componentsMap;"function"==typeof t?(n=e,e=t,i.each(function(t,i){d(t,function(t,r){e.call(n,i,t,r)})})):_(t)?d(i.get(t),e,n):w(t)&&d(this.findComponents(t),e,n)},getSeriesByName:function(t){return g(this._componentsMap.get("series"),function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.get("series")[t]},getSeriesByType:function(t){return g(this._componentsMap.get("series"),function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.get("series").slice()},getSeriesCount:function(){return this._componentsMap.get("series").length},eachSeries:function(t,e){d(this._seriesIndices,function(n){var i=this._componentsMap.get("series")[n];t.call(e,i,n)},this)},eachRawSeries:function(t,e){d(this._componentsMap.get("series"),t,e)},eachSeriesByType:function(t,e,n){d(this._seriesIndices,function(i){var r=this._componentsMap.get("series")[i];r.subType===t&&e.call(n,r,i)},this)},eachRawSeriesByType:function(t,e,n){return d(this.getSeriesByType(t),e,n)},isSeriesFiltered:function(t){return null==this._seriesIndicesMap.get(t.componentIndex)},getCurrentSeriesIndices:function(){return(this._seriesIndices||[]).slice()},filterSeries:function(t,e){go(this,g(this._componentsMap.get("series"),t,e))},restoreData:function(t){var e=this._componentsMap;go(this,e.get("series"));var n=[];e.each(function(t,e){n.push(e)}),Iy.topologicalTravel(n,Iy.getAllClassMainTypes(),function(n,i){d(e.get(n),function(e){("series"!==n||!uo(e,t))&&e.restoreData()})})}});h(Hy,Ay);var Gy=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"],Wy={};yo.prototype={constructor:yo,create:function(t,e){var n=[];d(Wy,function(i,r){var o=i.create(t,e);n=n.concat(o||[])}),this._coordinateSystems=n},update:function(t,e){d(this._coordinateSystems,function(n){n.update&&n.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},yo.register=function(t,e){Wy[t]=e},yo.get=function(t){return Wy[t]};var Zy=d,Uy=n,Xy=f,jy=i,Yy=/^(min|max)?(.+)$/;xo.prototype={constructor:xo,setOption:function(t,e){t&&d(xn(t.series),function(t){t&&t.data&&M(t.data)&&O(t.data)}),t=Uy(t,!0);var n=this._optionBackup,i=_o.call(this,t,e,!n);this._newBaseOption=i.baseOption,n?(So(n.baseOption,i.baseOption),i.timelineOptions.length&&(n.timelineOptions=i.timelineOptions),i.mediaList.length&&(n.mediaList=i.mediaList),i.mediaDefault&&(n.mediaDefault=i.mediaDefault)):this._optionBackup=i},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=Xy(e.timelineOptions,Uy),this._mediaList=Xy(e.mediaList,Uy),this._mediaDefault=Uy(e.mediaDefault),this._currentMediaIndices=[],Uy(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,n=this._timelineOptions;if(n.length){var i=t.getComponent("timeline");i&&(e=Uy(n[i.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),n=this._api.getHeight(),i=this._mediaList,r=this._mediaDefault,o=[],a=[];if(!i.length&&!r)return a;for(var s=0,l=i.length;s=1)&&(t=1),t}var n=this._upstream,i=t&&t.skip;if(this._dirty&&n){var r=this.context;r.data=r.outputData=n.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var o;this._plan&&!i&&(o=this._plan(this.context));var a=e(this._modBy),s=this._modDataCount||0,l=e(t&&t.modBy),u=t&&t.modDataCount||0;a===l&&s===u||(o="reset");var h;(this._dirty||"reset"===o)&&(this._dirty=!1,h=qo(this,i)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=n?n._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var d=this._dueIndex,f=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!i&&(h||d=n?null:t1&&o>0?e:t}};return s}();lx.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},lx.unfinished=function(){return this._progress&&this._dueIndex1||l&&!a?function(n){function i(t,n){var i=r.getDimensionInfo(n);if(i&&!1!==i.otherDims.tooltip){var o=i.type,l=Rr({color:u,type:"subItem"}),h=(a?l+Er(i.displayName||"-")+": ":"")+Er("ordinal"===o?t+"":"time"===o?e?"":Vr("yyyy/MM/dd hh:mm:ss",t):Or(t));h&&s.push(h)}}var a=p(n,function(t,e,n){var i=r.getDimensionInfo(n);return t|=i&&!1!==i.tooltip&&null!=i.displayName},0),s=[];return o.length?d(o,function(e){i(Zo(r,t,e),e)}):d(n,i),(a?"
          ":"")+s.join(a?"
          ":", ")}(s):i(a?Zo(r,t,o[0]):l?s[0]:s),c=Rr(u),f=r.getName(t),g=this.name;return In(this)||(g=""),g=g?Er(g)+(e?": ":"
          "):"",e?c+g+h:g+c+(f?Er(f)+": "+h:h)},isAnimationEnabled:function(){if(bp.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,n){var i=this.ecModel,r=Ay.getColorFromPalette.call(this,t,e,n);return r||(r=i.getColorFromPalette(t,e,n)),r},coordDimToDataDim:function(t){return this.getRawData().mapDimension(t,!0)},getProgressive:function(){return this.get("progressive")},getProgressiveThreshold:function(){return this.get("progressiveThreshold")},getAxisTooltipData:null,getTooltipPosition:null,pipeTask:null,preventIncremental:null,pipelineContext:null});h(cx,sx),h(cx,Ay);var dx=function(){this.group=new Sg,this.uid=vr("viewComponent")};dx.prototype={constructor:dx,init:function(t,e){},render:function(t,e,n,i){},dispose:function(){}};var fx=dx.prototype;fx.updateView=fx.updateLayout=fx.updateVisual=function(t,e,n,i){},En(dx),Vn(dx,{registerWhenExtend:!0});var px=function(){var t=Dn();return function(e){var n=t(e),i=e.pipelineContext,r=n.large,o=n.progressiveRender,a=n.large=i.large,s=n.progressiveRender=i.progressiveRender;return!!(r^a||o^s)&&"reset"}},gx=Dn(),mx=px();ra.prototype={type:"chart",init:function(t,e){},render:function(t,e,n,i){},highlight:function(t,e,n,i){aa(t.getData(),i,"emphasis")},downplay:function(t,e,n,i){aa(t.getData(),i,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null};var vx=ra.prototype;vx.updateView=vx.updateLayout=vx.updateVisual=function(t,e,n,i){this.render(t,e,n,i)},En(ra),Vn(ra,{registerWhenExtend:!0}),ra.markUpdateMethod=function(t,e){gx(t).updateMethod=e};var yx={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},xx="\0__throttleOriginMethod",_x="\0__throttleRate",bx="\0__throttleType",Mx={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData(),i=(t.visualColorAccessPath||"itemStyle.color").split("."),r=t.get(i)||t.getColorFromPalette(t.name,null,e.getSeriesCount());if(n.setVisual("color",r),!e.isSeriesFiltered(t)){"function"!=typeof r||r instanceof Xv||n.each(function(e){n.setItemVisual(e,"color",r(t.getDataParams(e)))});return{dataEach:n.hasItemOption?function(t,e){var n=t.getItemModel(e).get(i,!0);null!=n&&t.setItemVisual(e,"color",n)}:null}}}},Sx={toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}},Ix=function(t,e){function n(t,e){if("string"!=typeof t)return t;var n=t;return d(e,function(t,e){n=n.replace(new RegExp("\\{\\s*"+e+"\\s*\\}","g"),t)}),n}function i(t){var e=o.get(t);if(null==e){for(var n=t.split("."),i=Sx.aria,r=0;r1?"series.multiple.prefix":"series.single.prefix"),{seriesCount:a}),e.eachSeries(function(t,e){if(e1?"multiple":"single")+".";o=n(o=i(s?u+"withName":u+"withoutName"),{seriesId:t.seriesIndex,seriesName:t.get("name"),seriesType:r(t.subType)});var c=t.getData();window.data=c,c.count()>l?o+=n(i("data.partialData"),{displayCnt:l}):o+=i("data.allData");for(var d=[],p=0;pn.blockIndex?n.step:null,o=i&&i.modDataCount;return{step:r,modBy:null!=o?Math.ceil(o/r):null,modDataCount:o}}},Tx.getPipeline=function(t){return this._pipelineMap.get(t)},Tx.updateStreamModes=function(t,e){var n=this._pipelineMap.get(t.uid),i=t.getData().count(),r=n.progressiveEnabled&&e.incrementalPrepareRender&&i>=n.threshold,o=t.get("large")&&i>=t.get("largeThreshold"),a="mod"===t.get("progressiveChunkMode")?i:null;t.pipelineContext=n.context={progressiveRender:r,modDataCount:a,large:o}},Tx.restorePipelines=function(t){var e=this,n=e._pipelineMap=N();t.eachSeries(function(t){var i=t.getProgressive(),r=t.uid;n.set(r,{id:r,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:i&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(i||700),count:0}),Sa(e,t,t.dataTask)})},Tx.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.ecInstance.getModel(),n=this.api;d(this._allHandlers,function(i){var r=t.get(i.uid)||t.set(i.uid,[]);i.reset&&pa(this,i,r,e,n),i.overallReset&&ga(this,i,r,e,n)},this)},Tx.prepareView=function(t,e,n,i){var r=t.renderTask,o=r.context;o.model=e,o.ecModel=n,o.api=i,r.__block=!t.incrementalPrepareRender,Sa(this,e,r)},Tx.performDataProcessorTasks=function(t,e){fa(this,this._dataProcessorHandlers,t,e,{block:!0})},Tx.performVisualTasks=function(t,e,n){fa(this,this._visualHandlers,t,e,n)},Tx.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},Tx.plan=function(){this._pipelineMap.each(function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)})};var Dx=Tx.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},Ax=ba(0);da.wrapStageHandler=function(t,e){return x(t)&&(t={overallReset:t,seriesType:Ia(t)}),t.uid=vr("stageHandler"),e&&(t.visualType=e),t};var kx,Px={},Lx={};Ca(Px,Hy),Ca(Lx,vo),Px.eachSeriesByType=Px.eachRawSeriesByType=function(t){kx=t},Px.eachComponent=function(t){"series"===t.mainType&&t.subType&&(kx=t.subType)};var Ox=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],zx={color:Ox,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],Ox]},Ex=["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78","#73a373","#73b9bc","#7289ab","#91ca8c","#f49f42"],Nx={color:Ex,backgroundColor:"#333",tooltip:{axisPointer:{lineStyle:{color:"#eee"},crossStyle:{color:"#eee"}}},legend:{textStyle:{color:"#eee"}},textStyle:{color:"#eee"},title:{textStyle:{color:"#eee"}},toolbox:{iconStyle:{normal:{borderColor:"#eee"}}},dataZoom:{textStyle:{color:"#eee"}},visualMap:{textStyle:{color:"#eee"}},timeline:{lineStyle:{color:"#eee"},itemStyle:{normal:{color:Ex[1]}},label:{normal:{textStyle:{color:"#eee"}}},controlStyle:{normal:{color:"#eee",borderColor:"#eee"}}},timeAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},logAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},valueAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},categoryAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},line:{symbol:"circle"},graph:{color:Ex},gauge:{title:{textStyle:{color:"#eee"}}},candlestick:{itemStyle:{normal:{color:"#FD1050",color0:"#0CF49B",borderColor:"#FD1050",borderColor0:"#0CF49B"}}}};Nx.categoryAxis.splitLine.show=!1,Iy.extend({type:"dataset",defaultOption:{seriesLayoutBy:Ry,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){Kr(this)}}),dx.extend({type:"dataset"});var Rx=P,Bx=d,Vx=x,Fx=w,Hx=Iy.parseClassType,Gx={zrender:"4.0.4"},Wx=1e3,Zx=1e3,Ux=3e3,Xx={PROCESSOR:{FILTER:Wx,STATISTIC:5e3},VISUAL:{LAYOUT:Zx,GLOBAL:2e3,CHART:Ux,COMPONENT:4e3,BRUSH:5e3}},jx="__flagInMainProcess",Yx="__optionUpdated",qx=/^[a-zA-Z0-9_]+$/;Da.prototype.on=Ta("on"),Da.prototype.off=Ta("off"),Da.prototype.one=Ta("one"),h(Da,Zp);var $x=Aa.prototype;$x._onframe=function(){if(!this._disposed){var t=this._scheduler;if(this[Yx]){var e=this[Yx].silent;this[jx]=!0,Pa(this),Kx.update.call(this),this[jx]=!1,this[Yx]=!1,Ea.call(this,e),Na.call(this,e)}else if(t.unfinished){var n=1,i=this._model;this._api;t.unfinished=!1;do{var r=+new Date;t.performSeriesTasks(i),t.performDataProcessorTasks(i),Oa(this,i),t.performVisualTasks(i),Ga(this,this._model,0,"remain"),n-=+new Date-r}while(n>0&&t.unfinished);t.unfinished||this._zr.flush()}}},$x.getDom=function(){return this._dom},$x.getZr=function(){return this._zr},$x.setOption=function(t,e,n){var i;if(Fx(e)&&(n=e.lazyUpdate,i=e.silent,e=e.notMerge),this[jx]=!0,!this._model||e){var r=new xo(this._api),o=this._theme,a=this._model=new Hy(null,null,o,r);a.scheduler=this._scheduler,a.init(null,null,o,r)}this._model.setOption(t,n_),n?(this[Yx]={silent:i},this[jx]=!1):(Pa(this),Kx.update.call(this),this._zr.flush(),this[Yx]=!1,this[jx]=!1,Ea.call(this,i),Na.call(this,i))},$x.setTheme=function(){console.log("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},$x.getModel=function(){return this._model},$x.getOption=function(){return this._model&&this._model.getOption()},$x.getWidth=function(){return this._zr.getWidth()},$x.getHeight=function(){return this._zr.getHeight()},$x.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},$x.getRenderedCanvas=function(t){if(bp.canvasSupported)return(t=t||{}).pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor"),this._zr.painter.getRenderedCanvas(t)},$x.getSvgDataUrl=function(){if(bp.svgSupported){var t=this._zr;return d(t.storage.getDisplayList(),function(t){t.stopAnimation(!0)}),t.painter.pathToDataUrl()}},$x.getDataURL=function(t){var e=(t=t||{}).excludeComponents,n=this._model,i=[],r=this;Bx(e,function(t){n.eachComponent({mainType:t},function(t){var e=r._componentsMap[t.__viewId];e.group.ignore||(i.push(e),e.group.ignore=!0)})});var o="svg"===this._zr.painter.getType()?this.getSvgDataUrl():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return Bx(i,function(t){t.group.ignore=!1}),o},$x.getConnectedDataURL=function(t){if(bp.canvasSupported){var e=this.group,i=Math.min,r=Math.max;if(l_[e]){var o=1/0,a=1/0,s=-1/0,l=-1/0,u=[],h=t&&t.pixelRatio||1;d(s_,function(h,c){if(h.group===e){var d=h.getRenderedCanvas(n(t)),f=h.getDom().getBoundingClientRect();o=i(f.left,o),a=i(f.top,a),s=r(f.right,s),l=r(f.bottom,l),u.push({dom:d,left:f.left,top:f.top})}});var c=(s*=h)-(o*=h),f=(l*=h)-(a*=h),p=Op();p.width=c,p.height=f;var g=mn(p);return Bx(u,function(t){var e=new je({style:{x:t.left*h-o,y:t.top*h-a,image:t.dom}});g.add(e)}),g.refreshImmediately(),p.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},$x.convertToPixel=v(ka,"convertToPixel"),$x.convertFromPixel=v(ka,"convertFromPixel"),$x.containPixel=function(t,e){var n;return t=An(this._model,t),d(t,function(t,i){i.indexOf("Models")>=0&&d(t,function(t){var r=t.coordinateSystem;if(r&&r.containPoint)n|=!!r.containPoint(e);else if("seriesModels"===i){var o=this._chartsMap[t.__viewId];o&&o.containPoint&&(n|=o.containPoint(e,t))}},this)},this),!!n},$x.getVisual=function(t,e){var n=(t=An(this._model,t,{defaultMainType:"series"})).seriesModel.getData(),i=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?n.indexOfRawIndex(t.dataIndex):null;return null!=i?n.getItemVisual(i,e):n.getVisual(e)},$x.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},$x.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var Kx={prepareAndUpdate:function(t){Pa(this),Kx.update.call(this,t)},update:function(t){var e=this._model,n=this._api,i=this._zr,r=this._coordSysMgr,o=this._scheduler;if(e){o.restoreData(e,t),o.performSeriesTasks(e),r.create(e,n),o.performDataProcessorTasks(e,t),Oa(this,e),r.update(e,n),Va(e),o.performVisualTasks(e,t),Fa(this,e,n,t);var a=e.get("backgroundColor")||"transparent";if(bp.canvasSupported)i.setBackgroundColor(a);else{var s=St(a);a=Lt(s,"rgb"),0===s[3]&&(a="transparent")}Wa(e,n)}},updateTransform:function(t){var e=this._model,n=this,i=this._api;if(e){var r=[];e.eachComponent(function(o,a){var s=n.getViewOfComponentModel(a);if(s&&s.__alive)if(s.updateTransform){var l=s.updateTransform(a,e,i,t);l&&l.update&&r.push(s)}else r.push(s)});var o=N();e.eachSeries(function(r){var a=n._chartsMap[r.__viewId];if(a.updateTransform){var s=a.updateTransform(r,e,i,t);s&&s.update&&o.set(r.uid,1)}else o.set(r.uid,1)}),Va(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0,dirtyMap:o}),Ga(n,e,0,t,o),Wa(e,this._api)}},updateView:function(t){var e=this._model;e&&(ra.markUpdateMethod(t,"updateView"),Va(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),Fa(this,this._model,this._api,t),Wa(e,this._api))},updateVisual:function(t){Kx.update.call(this,t)},updateLayout:function(t){Kx.update.call(this,t)}};$x.resize=function(t){this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var n=e.resetOption("media"),i=t&&t.silent;this[jx]=!0,n&&Pa(this),Kx.update.call(this),this[jx]=!1,Ea.call(this,i),Na.call(this,i)}},$x.showLoading=function(t,e){if(Fx(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),a_[t]){var n=a_[t](this._api,e),i=this._zr;this._loadingFX=n,i.add(n)}},$x.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},$x.makeActionFromEvent=function(t){var e=o({},t);return e.type=t_[t.type],e},$x.dispatchAction=function(t,e){Fx(e)||(e={silent:!!e}),Jx[t.type]&&this._model&&(this[jx]?this._pendingActions.push(t):(za.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&bp.browser.weChat&&this._throttledZrFlush(),Ea.call(this,e.silent),Na.call(this,e.silent)))},$x.appendData=function(t){var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0},$x.on=Ta("on"),$x.off=Ta("off"),$x.one=Ta("one");var Qx=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];$x._initEvents=function(){Bx(Qx,function(t){this._zr.on(t,function(e){var n,i=this.getModel(),r=e.target;if("globalout"===t)n={};else if(r&&null!=r.dataIndex){var a=r.dataModel||i.getSeriesByIndex(r.seriesIndex);n=a&&a.getDataParams(r.dataIndex,r.dataType)||{}}else r&&r.eventData&&(n=o({},r.eventData));n&&(n.event=e,n.type=t,this.trigger(t,n))},this)},this),Bx(t_,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},$x.isDisposed=function(){return this._disposed},$x.clear=function(){this.setOption({series:[]},!0)},$x.dispose=function(){if(!this._disposed){this._disposed=!0,Pn(this.getDom(),c_,"");var t=this._api,e=this._model;Bx(this._componentsViews,function(n){n.dispose(e,t)}),Bx(this._chartsViews,function(n){n.dispose(e,t)}),this._zr.dispose(),delete s_[this.id]}},h(Aa,Zp);var Jx={},t_={},e_=[],n_=[],i_=[],r_=[],o_={},a_={},s_={},l_={},u_=new Date-0,h_=new Date-0,c_="_echarts_instance_",d_={},f_=qa;ns(2e3,Mx),Qa(ex),Ja(5e3,function(t){var e=N();t.eachSeries(function(t){var n=t.get("stack");if(n){var i=e.get(n)||e.set(n,[]),r=t.getData(),o={stackResultDimension:r.getCalculationInfo("stackResultDimension"),stackedOverDimension:r.getCalculationInfo("stackedOverDimension"),stackedDimension:r.getCalculationInfo("stackedDimension"),stackedByDimension:r.getCalculationInfo("stackedByDimension"),isStackedByIndex:r.getCalculationInfo("isStackedByIndex"),data:r,seriesModel:t};if(!o.stackedDimension||!o.isStackedByIndex&&!o.stackedByDimension)return;i.length&&r.setCalculationInfo("stackedOnSeries",i[i.length-1].seriesModel),i.push(o)}}),e.each(No)}),rs("default",function(t,e){a(e=e||{},{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var n=new Fv({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),i=new Zv({shape:{startAngle:-Cx/2,endAngle:-Cx/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),r=new Fv({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});i.animateShape(!0).when(1e3,{endAngle:3*Cx/2}).start("circularInOut"),i.animateShape(!0).when(1e3,{startAngle:3*Cx/2}).delay(300).start("circularInOut");var o=new Sg;return o.add(i),o.add(r),o.add(n),o.resize=function(){var e=t.getWidth()/2,o=t.getHeight()/2;i.setShape({cx:e,cy:o});var a=i.shape.r;r.setShape({x:e-a,y:o-a,width:2*a,height:2*a}),n.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},o.resize(),o}),ts({type:"highlight",event:"highlight",update:"highlight"},R),ts({type:"downplay",event:"downplay",update:"downplay"},R),Ka("light",zx),Ka("dark",Nx);var p_={};hs.prototype={constructor:hs,add:function(t){return this._add=t,this},update:function(t){return this._update=t,this},remove:function(t){return this._remove=t,this},execute:function(){var t=this._old,e=this._new,n={},i=[],r=[];for(cs(t,{},i,"_oldKeyGetter",this),cs(e,n,r,"_newKeyGetter",this),o=0;o=e)){for(var n,i=this._chunkSize,r=this._rawData,o=this._storage,a=this.dimensions,s=a.length,l=this._dimensionInfos,u=this._nameList,h=this._idList,c=this._rawExtent,d=this._nameRepeatCount={},f=this._chunkCount,p=f-1,g=0;gA[1]&&(A[1]=D)}if(!r.pure){var k=u[b];if(w&&null==k)if(null!=w.name)u[b]=k=w.name;else if(null!=n){var P=a[n],L=o[P][M];if(L){k=L[S];var O=l[P].ordinalMeta;O&&O.categories.length&&(k=O.categories[k])}}var z=null==w?null:w.id;null==z&&null!=k&&(d[k]=d[k]||0,z=k,d[k]>0&&(z+="__ec__"+d[k]),d[k]++),null!=z&&(h[b]=z)}}!r.persistent&&r.clean&&r.clean(),this._rawCount=this._count=e,this._extent={},ys(this)}},S_.count=function(){return this._count},S_.getIndices=function(){var t=this._indices;if(t){var e=t.constructor,n=this._count;if(e===Array){i=new e(n);for(r=0;r=0&&e=0&&eo&&(o=s)}return n=[r,o],this._extent[t]=n,n},S_.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},S_.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},S_.getCalculationInfo=function(t){return this._calculationInfo[t]},S_.setCalculationInfo=function(t,e){m_(t)?o(this._calculationInfo,t):this._calculationInfo[t]=e},S_.getSum=function(t){var e=0;if(this._storage[t])for(var n=0,i=this.count();n=this._rawCount||t<0)return-1;var e=this._indices,n=e[t];if(null!=n&&nt))return o;r=o-1}}return-1},S_.indicesOfNearest=function(t,e,n){var i=[];if(!this._storage[t])return i;null==n&&(n=1/0);for(var r=Number.MAX_VALUE,o=-1,a=0,s=this.count();a=0&&o<0)&&(r=u,o=l,i.length=0),i.push(a))}return i},S_.getRawIndex=_s,S_.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],n=0;n=l&&w<=u||isNaN(w))&&(o[a++]=c),c++;h=!0}else if(2===i){for(var d=this._storage[s],v=this._storage[e[1]],y=t[e[1]][0],x=t[e[1]][1],f=0;f=l&&w<=u||isNaN(w))&&(b>=y&&b<=x||isNaN(b))&&(o[a++]=c),c++}h=!0}}if(!h)if(1===i)for(m=0;m=l&&w<=u||isNaN(w))&&(o[a++]=S)}else for(m=0;mt[I][1])&&(M=!1)}M&&(o[a++]=this.getRawIndex(m))}return ab[1]&&(b[1]=w)}}}return r},S_.downSample=function(t,e,n,i){for(var r=Ss(this,[t]),o=r._storage,a=[],s=Math.floor(1/e),l=o[t],u=this.count(),h=this._chunkSize,c=r._rawExtent[t],d=new(gs(this))(u),f=0,p=0;pu-p&&(s=u-p,a.length=s);for(var g=0;gc[1]&&(c[1]=x),d[f++]=_}return r._count=f,r._indices=d,r.getRawIndex=ws,r},S_.getItemModel=function(t){var e=this.hostModel;return new pr(this.getRawDataItem(t),e,e&&e.ecModel)},S_.diff=function(t){var e=this;return new hs(t?t.getIndices():[],this.getIndices(),function(e){return bs(t,e)},function(t){return bs(e,t)})},S_.getVisual=function(t){var e=this._visual;return e&&e[t]},S_.setVisual=function(t,e){if(m_(t))for(var n in t)t.hasOwnProperty(n)&&this.setVisual(n,t[n]);else this._visual=this._visual||{},this._visual[t]=e},S_.setLayout=function(t,e){if(m_(t))for(var n in t)t.hasOwnProperty(n)&&this.setLayout(n,t[n]);else this._layout[t]=e},S_.getLayout=function(t){return this._layout[t]},S_.getItemLayout=function(t){return this._itemLayouts[t]},S_.setItemLayout=function(t,e,n){this._itemLayouts[t]=n?o(this._itemLayouts[t]||{},e):e},S_.clearItemLayouts=function(){this._itemLayouts.length=0},S_.getItemVisual=function(t,e,n){var i=this._itemVisuals[t],r=i&&i[e];return null!=r||n?r:this.getVisual(e)},S_.setItemVisual=function(t,e,n){var i=this._itemVisuals[t]||{},r=this.hasItemVisual;if(this._itemVisuals[t]=i,m_(e))for(var o in e)e.hasOwnProperty(o)&&(i[o]=e[o],r[o]=!0);else i[e]=n,r[e]=!0},S_.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var I_=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};S_.setItemGraphicEl=function(t,e){var n=this.hostModel;e&&(e.dataIndex=t,e.dataType=this.dataType,e.seriesIndex=n&&n.seriesIndex,"group"===e.type&&e.traverse(I_,e)),this._graphicEls[t]=e},S_.getItemGraphicEl=function(t){return this._graphicEls[t]},S_.eachItemGraphicEl=function(t,e){d(this._graphicEls,function(n,i){n&&t&&t.call(e,n,i)})},S_.cloneShallow=function(t){if(!t){var e=f(this.dimensions,this.getDimensionInfo,this);t=new M_(e,this.hostModel)}if(t._storage=this._storage,vs(t,this),this._indices){var n=this._indices.constructor;t._indices=new n(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?ws:_s,t},S_.wrapMethod=function(t,e){var n=this[t];"function"==typeof n&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=n.apply(this,arguments);return e.apply(this,[t].concat(A(arguments)))})},S_.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],S_.CHANGABLE_METHODS=["filterSelf","selectRange"];var C_=function(t,e){return e=e||{},Ts(e.coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})};Ns.prototype.parse=function(t){return t},Ns.prototype.getSetting=function(t){return this._setting[t]},Ns.prototype.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},Ns.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},Ns.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},Ns.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},Ns.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},Ns.prototype.getExtent=function(){return this._extent.slice()},Ns.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=t),isNaN(e)||(n[1]=e)},Ns.prototype.isBlank=function(){return this._isBlank},Ns.prototype.setBlank=function(t){this._isBlank=t},Ns.prototype.getLabel=null,En(Ns),Vn(Ns,{registerWhenExtend:!0}),Rs.createByAxisModel=function(t){var e=t.option,n=e.data,i=n&&f(n,Vs);return new Rs({categories:i,needCollect:!i,deduplication:!1!==e.dedplication})};var T_=Rs.prototype;T_.getOrdinal=function(t){return Bs(this).get(t)},T_.parseAndCollect=function(t){var e,n=this._needCollect;if("string"!=typeof t&&!n)return t;if(n&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var i=Bs(this);return null==(e=i.get(t))&&(n?(e=this.categories.length,this.categories[e]=t,i.set(t,e)):e=NaN),e};var D_=Ns.prototype,A_=Ns.extend({type:"ordinal",init:function(t,e){t&&!y(t)||(t=new Rs({categories:t})),this._ordinalMeta=t,this._extent=e||[0,t.categories.length-1]},parse:function(t){return"string"==typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},contain:function(t){return t=this.parse(t),D_.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return D_.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(D_.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,n=e[0];n<=e[1];)t.push(n),n++;return t},getLabel:function(t){if(!this.isBlank())return this._ordinalMeta.categories[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},getOrdinalMeta:function(){return this._ordinalMeta},niceTicks:R,niceExtent:R});A_.create=function(){return new A_};var k_=wr,P_=wr,L_=Ns.extend({type:"interval",_interval:0,_intervalPrecision:2,setExtent:function(t,e){var n=this._extent;isNaN(t)||(n[0]=parseFloat(t)),isNaN(e)||(n[1]=parseFloat(e))},unionExtent:function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),L_.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=Hs(t)},getTicks:function(){return Zs(this._interval,this._extent,this._niceExtent,this._intervalPrecision)},getLabel:function(t,e){if(null==t)return"";var n=e&&e.precision;return null==n?n=Sr(t)||0:"auto"===n&&(n=this._intervalPrecision),t=P_(t,n,!0),Or(t)},niceTicks:function(t,e,n){t=t||5;var i=this._extent,r=i[1]-i[0];if(isFinite(r)){r<0&&(r=-r,i.reverse());var o=Fs(i,t,e,n);this._intervalPrecision=o.intervalPrecision,this._interval=o.interval,this._niceExtent=o.niceTickExtent}},niceExtent:function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var n=e[0];t.fixMax?e[0]-=n/2:(e[1]+=n/2,e[0]-=n/2)}else e[1]=1;var i=e[1]-e[0];isFinite(i)||(e[0]=0,e[1]=1),this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval);var r=this._interval;t.fixMin||(e[0]=P_(Math.floor(e[0]/r)*r)),t.fixMax||(e[1]=P_(Math.ceil(e[1]/r)*r))}});L_.create=function(){return new L_};var O_="__ec_stack_",z_="undefined"!=typeof Float32Array?Float32Array:Array,E_={seriesType:"bar",plan:px(),reset:function(t){if(Ks(t)&&Qs(t)){var e=t.getData(),n=t.coordinateSystem,i=n.getBaseAxis(),r=n.getOtherAxis(i),o=e.mapDimension(r.dim),a=e.mapDimension(i.dim),s=r.isHorizontal(),l=s?0:1,u=$s(Ys([t]),i,t).width;return u>.5||(u=.5),{progress:function(t,e){for(var h,c=new z_(2*t.count),d=[],f=[],p=0;null!=(h=t.next());)f[l]=e.get(o,h),f[1-l]=e.get(a,h),d=n.dataToPoint(f,null,d),c[p++]=d[0],c[p++]=d[1];e.setLayout({largePoints:c,barWidth:u,valueAxisStart:Js(i,r,!1),valueAxisHorizontal:s})}}}}},N_=L_.prototype,R_=Math.ceil,B_=Math.floor,V_=function(t,e,n,i){for(;n>>1;t[r][1]n&&(o=n);var a=H_.length,s=V_(H_,o,0,a),l=H_[Math.min(s,a-1)],u=l[1];"year"===l[0]&&(u*=Lr(r/u/t,!0));var h=this.getSetting("useUTC")?0:60*new Date(+i[0]||+i[1]).getTimezoneOffset()*1e3,c=[Math.round(R_((i[0]-h)/u)*u+h),Math.round(B_((i[1]-h)/u)*u+h)];Ws(c,i),this._stepLvl=l,this._interval=u,this._niceExtent=c},parse:function(t){return+Ar(t)}});d(["contain","normalize"],function(t){F_.prototype[t]=function(e){return N_[t].call(this,this.parse(e))}});var H_=[["hh:mm:ss",1e3],["hh:mm:ss",5e3],["hh:mm:ss",1e4],["hh:mm:ss",15e3],["hh:mm:ss",3e4],["hh:mm\nMM-dd",6e4],["hh:mm\nMM-dd",3e5],["hh:mm\nMM-dd",6e5],["hh:mm\nMM-dd",9e5],["hh:mm\nMM-dd",18e5],["hh:mm\nMM-dd",36e5],["hh:mm\nMM-dd",72e5],["hh:mm\nMM-dd",216e5],["hh:mm\nMM-dd",432e5],["MM-dd\nyyyy",864e5],["MM-dd\nyyyy",1728e5],["MM-dd\nyyyy",2592e5],["MM-dd\nyyyy",3456e5],["MM-dd\nyyyy",432e6],["MM-dd\nyyyy",5184e5],["week",6048e5],["MM-dd\nyyyy",864e6],["week",12096e5],["week",18144e5],["month",26784e5],["week",36288e5],["month",53568e5],["week",36288e5],["quarter",8208e6],["month",107136e5],["month",13392e6],["half-year",16416e6],["month",214272e5],["month",26784e6],["year",32832e6]];F_.create=function(t){return new F_({useUTC:t.ecModel.get("useUTC")})};var G_=Ns.prototype,W_=L_.prototype,Z_=Sr,U_=wr,X_=Math.floor,j_=Math.ceil,Y_=Math.pow,q_=Math.log,$_=Ns.extend({type:"log",base:10,$constructor:function(){Ns.apply(this,arguments),this._originalScale=new L_},getTicks:function(){var t=this._originalScale,e=this._extent,n=t.getExtent();return f(W_.getTicks.call(this),function(i){var r=wr(Y_(this.base,i));return r=i===e[0]&&t.__fixMin?tl(r,n[0]):r,r=i===e[1]&&t.__fixMax?tl(r,n[1]):r},this)},getLabel:W_.getLabel,scale:function(t){return t=G_.scale.call(this,t),Y_(this.base,t)},setExtent:function(t,e){var n=this.base;t=q_(t)/q_(n),e=q_(e)/q_(n),W_.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=G_.getExtent.call(this);e[0]=Y_(t,e[0]),e[1]=Y_(t,e[1]);var n=this._originalScale,i=n.getExtent();return n.__fixMin&&(e[0]=tl(e[0],i[0])),n.__fixMax&&(e[1]=tl(e[1],i[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=q_(t[0])/q_(e),t[1]=q_(t[1])/q_(e),G_.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},niceTicks:function(t){t=t||10;var e=this._extent,n=e[1]-e[0];if(!(n===1/0||n<=0)){var i=kr(n);for(t/n*i<=.5&&(i*=10);!isNaN(i)&&Math.abs(i)<1&&Math.abs(i)>0;)i*=10;var r=[wr(j_(e[0]/i)*i),wr(X_(e[1]/i)*i)];this._interval=i,this._niceExtent=r}},niceExtent:function(t){W_.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});d(["contain","normalize"],function(t){$_.prototype[t]=function(e){return e=q_(e)/q_(this.base),G_[t].call(this,e)}}),$_.create=function(){return new $_};var K_={getMin:function(t){var e=this.option,n=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=n&&"dataMin"!==n&&"function"!=typeof n&&!I(n)&&(n=this.axis.scale.parse(n)),n},getMax:function(t){var e=this.option,n=t||null==e.rangeEnd?e.max:e.rangeEnd;return this.axis&&null!=n&&"dataMax"!==n&&"function"!=typeof n&&!I(n)&&(n=this.axis.scale.parse(n)),n},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:R,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}},Q_=Ai({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var n=e.cx,i=e.cy,r=e.width/2,o=e.height/2;t.moveTo(n,i-o),t.lineTo(n+r,i+o),t.lineTo(n-r,i+o),t.closePath()}}),J_=Ai({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var n=e.cx,i=e.cy,r=e.width/2,o=e.height/2;t.moveTo(n,i-o),t.lineTo(n+r,i),t.lineTo(n,i+o),t.lineTo(n-r,i),t.closePath()}}),tw=Ai({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var n=e.x,i=e.y,r=e.width/5*3,o=Math.max(r,e.height),a=r/2,s=a*a/(o-a),l=i-o+a+s,u=Math.asin(s/a),h=Math.cos(u)*a,c=Math.sin(u),d=Math.cos(u),f=.6*a,p=.7*a;t.moveTo(n-h,l+s),t.arc(n,l,a,Math.PI-u,2*Math.PI+u),t.bezierCurveTo(n+h-c*f,l+s+d*f,n,i-p,n,i),t.bezierCurveTo(n,i-p,n-h+c*f,l+s+d*f,n-h,l+s),t.closePath()}}),ew=Ai({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var n=e.height,i=e.width,r=e.x,o=e.y,a=i/3*2;t.moveTo(r,o),t.lineTo(r+a,o+n),t.lineTo(r,o+n/4*3),t.lineTo(r-a,o+n),t.lineTo(r,o),t.closePath()}}),nw={line:function(t,e,n,i,r){r.x1=t,r.y1=e+i/2,r.x2=t+n,r.y2=e+i/2},rect:function(t,e,n,i,r){r.x=t,r.y=e,r.width=n,r.height=i},roundRect:function(t,e,n,i,r){r.x=t,r.y=e,r.width=n,r.height=i,r.r=Math.min(n,i)/4},square:function(t,e,n,i,r){var o=Math.min(n,i);r.x=t,r.y=e,r.width=o,r.height=o},circle:function(t,e,n,i,r){r.cx=t+n/2,r.cy=e+i/2,r.r=Math.min(n,i)/2},diamond:function(t,e,n,i,r){r.cx=t+n/2,r.cy=e+i/2,r.width=n,r.height=i},pin:function(t,e,n,i,r){r.x=t+n/2,r.y=e+i/2,r.width=n,r.height=i},arrow:function(t,e,n,i,r){r.x=t+n/2,r.y=e+i/2,r.width=n,r.height=i},triangle:function(t,e,n,i,r){r.cx=t+n/2,r.cy=e+i/2,r.width=n,r.height=i}},iw={};d({line:Hv,rect:Fv,roundRect:Fv,square:Fv,circle:Pv,diamond:J_,pin:tw,arrow:ew,triangle:Q_},function(t,e){iw[e]=new t});var rw=Ai({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style;"pin"===this.shape.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,n){var i=e.symbolType,r=iw[i];"none"!==e.symbolType&&(r||(r=iw[i="rect"]),nw[i](e.x,e.y,e.width,e.height,r.shape),r.buildPath(t,r.shape,n))}}),ow={isDimensionStacked:Ps,enableDataStack:ks,getStackedDimension:Ls},aw=(Object.freeze||Object)({createList:function(t){return Os(t.getSource(),t)},getLayoutRect:Gr,dataStack:ow,createScale:function(t,e){var n=e;pr.isInstance(e)||h(n=new pr(e),K_);var i=rl(n);return i.setExtent(t[0],t[1]),il(i,n),i},mixinAxisModelCommonMethods:function(t){h(t,K_)},completeDimensions:Ts,createDimensions:C_,createSymbol:cl}),sw=1e-8;pl.prototype={constructor:pl,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,n=[e,e],i=[-e,-e],r=[],o=[],a=this.geometries,s=0;s0}),function(t){var e=t.properties,n=t.geometry,i=n.coordinates,r=[];"Polygon"===n.type&&r.push({type:"polygon",exterior:i[0],interiors:i.slice(1)}),"MultiPolygon"===n.type&&d(i,function(t){t[0]&&r.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})});var o=new pl(e.name,r,e.cp);return o.properties=e,o})},uw=Dn(),hw=[0,1],cw=function(t,e,n){this.dim=t,this.scale=e,this._extent=n||[0,0],this.inverse=!1,this.onBand=!1};cw.prototype={constructor:cw,contain:function(t){var e=this._extent,n=Math.min(e[0],e[1]),i=Math.max(e[0],e[1]);return t>=n&&t<=i},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(t){return Ir(t||this.scale.getExtent(),this._extent)},setExtent:function(t,e){var n=this._extent;n[0]=t,n[1]=e},dataToCoord:function(t,e){var n=this._extent,i=this.scale;return t=i.normalize(t),this.onBand&&"ordinal"===i.type&&Ll(n=n.slice(),i.count()),xr(t,hw,n,e)},coordToData:function(t,e){var n=this._extent,i=this.scale;this.onBand&&"ordinal"===i.type&&Ll(n=n.slice(),i.count());var r=xr(t,n,hw,e);return this.scale.scale(r)},pointToData:function(t,e){},getTicksCoords:function(t){var e=(t=t||{}).tickModel||this.getTickModel(),n=yl(this,e),i=f(n.ticks,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this),r=e.get("alignWithLabel");return Ol(this,i,n.tickCategoryInterval,r,t.clamp),i},getViewLabels:function(){return vl(this).labels},getLabelModel:function(){return this.model.getModel("axisLabel")},getTickModel:function(){return this.model.getModel("axisTick")},getBandWidth:function(){var t=this._extent,e=this.scale.getExtent(),n=e[1]-e[0]+(this.onBand?1:0);0===n&&(n=1);var i=Math.abs(t[1]-t[0]);return Math.abs(i)/n},isHorizontal:null,getRotate:null,calculateCategoryInterval:function(){return Tl(this)}};var dw=lw,fw={};d(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){fw[t]=Np[t]}),cx.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return Os(this.getSource(),this)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!0,label:{position:"top"},lineStyle:{width:2,type:"solid"},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}});var pw=El.prototype,gw=El.getSymbolSize=function(t,e){var n=t.getItemVisual(e,"symbolSize");return n instanceof Array?n.slice():[+n,+n]};pw._createSymbol=function(t,e,n,i,r){this.removeAll();var o=cl(t,-1,-1,2,2,e.getItemVisual(n,"color"),r);o.attr({z2:100,culling:!0,scale:Nl(i)}),o.drift=Rl,this._symbolType=t,this.add(o)},pw.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},pw.getSymbolPath=function(){return this.childAt(0)},pw.getScale=function(){return this.childAt(0).scale},pw.highlight=function(){this.childAt(0).trigger("emphasis")},pw.downplay=function(){this.childAt(0).trigger("normal")},pw.setZ=function(t,e){var n=this.childAt(0);n.zlevel=t,n.z=e},pw.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},pw.updateData=function(t,e,n){this.silent=!1;var i=t.getItemVisual(e,"symbol")||"circle",r=t.hostModel,o=gw(t,e),a=i!==this._symbolType;if(a){var s=t.getItemVisual(e,"symbolKeepAspect");this._createSymbol(i,t,e,o,s)}else(l=this.childAt(0)).silent=!1,ar(l,{scale:Nl(o)},r,e);if(this._updateCommon(t,e,o,n),a){var l=this.childAt(0),u=n&&n.fadeIn,h={scale:l.scale.slice()};u&&(h.style={opacity:l.style.opacity}),l.scale=[0,0],u&&(l.style.opacity=0),sr(l,h,r,e)}this._seriesModel=r};var mw=["itemStyle"],vw=["emphasis","itemStyle"],yw=["label"],xw=["emphasis","label"];pw._updateCommon=function(t,e,n,i){var r=this.childAt(0),a=t.hostModel,s=t.getItemVisual(e,"color");"image"!==r.type&&r.useStyle({strokeNoScale:!0});var l=i&&i.itemStyle,u=i&&i.hoverItemStyle,h=i&&i.symbolRotate,c=i&&i.symbolOffset,d=i&&i.labelModel,f=i&&i.hoverLabelModel,p=i&&i.hoverAnimation,g=i&&i.cursorStyle;if(!i||t.hasItemOption){var m=i&&i.itemModel?i.itemModel:t.getItemModel(e);l=m.getModel(mw).getItemStyle(["color"]),u=m.getModel(vw).getItemStyle(),h=m.getShallow("symbolRotate"),c=m.getShallow("symbolOffset"),d=m.getModel(yw),f=m.getModel(xw),p=m.getShallow("hoverAnimation"),g=m.getShallow("cursor")}else u=o({},u);var v=r.style;r.attr("rotation",(h||0)*Math.PI/180||0),c&&r.attr("position",[_r(c[0],n[0]),_r(c[1],n[1])]),g&&r.attr("cursor",g),r.setColor(s,i&&i.symbolInnerColor),r.setStyle(l);var y=t.getItemVisual(e,"opacity");null!=y&&(v.opacity=y);var x=t.getItemVisual(e,"liftZ"),_=r.__z2Origin;null!=x?null==_&&(r.__z2Origin=r.z2,r.z2+=x):null!=_&&(r.z2=_,r.__z2Origin=null);var w=i&&i.useNameLabel;$i(v,u,d,f,{labelFetcher:a,labelDataIndex:e,defaultText:function(e,n){return w?t.getName(e):zl(t,e)},isRectText:!0,autoColor:s}),r.off("mouseover").off("mouseout").off("emphasis").off("normal"),r.hoverStyle=u,qi(r);var b=Nl(n);if(p&&a.isAnimationEnabled()){var M=function(){if(!this.incremental){var t=b[1]/b[0];this.animateTo({scale:[Math.max(1.1*b[0],b[0]+3),Math.max(1.1*b[1],b[1]+3*t)]},400,"elasticOut")}},S=function(){this.incremental||this.animateTo({scale:b},400,"elasticOut")};r.on("mouseover",M).on("mouseout",S).on("emphasis",M).on("normal",S)}},pw.fadeOut=function(t,e){var n=this.childAt(0);this.silent=n.silent=!0,!(e&&e.keepLabel)&&(n.style.text=null),ar(n,{style:{opacity:0},scale:[0,0]},this._seriesModel,this.dataIndex,t)},u(El,Sg);var _w=Bl.prototype;_w.updateData=function(t,e){e=Fl(e);var n=this.group,i=t.hostModel,r=this._data,o=this._symbolCtor,a=Hl(t);r||n.removeAll(),t.diff(r).add(function(i){var r=t.getItemLayout(i);if(Vl(t,r,i,e)){var s=new o(t,i,a);s.attr("position",r),t.setItemGraphicEl(i,s),n.add(s)}}).update(function(s,l){var u=r.getItemGraphicEl(l),h=t.getItemLayout(s);Vl(t,h,s,e)?(u?(u.updateData(t,s,a),ar(u,{position:h},i)):(u=new o(t,s)).attr("position",h),n.add(u),t.setItemGraphicEl(s,u)):n.remove(u)}).remove(function(t){var e=r.getItemGraphicEl(t);e&&e.fadeOut(function(){n.remove(e)})}).execute(),this._data=t},_w.isPersistent=function(){return!0},_w.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,n){var i=t.getItemLayout(n);e.attr("position",i)})},_w.incrementalPrepareUpdate=function(t){this._seriesScope=Hl(t),this._data=null,this.group.removeAll()},_w.incrementalUpdate=function(t,e,n){n=Fl(n);for(var i=t.start;i0&&Xl(n[r-1]);r--);for(;i0&&Xl(n[o-1]);o--);for(;r=0){var a=r.getItemGraphicEl(o);if(!a){var s=r.getItemLayout(o);if(!s)return;(a=new El(r,o)).position=s,a.setZ(t.get("zlevel"),t.get("z")),a.ignore=isNaN(s[0])||isNaN(s[1]),a.__temp=!0,r.setItemGraphicEl(o,a),a.stopSymbolAnimation(!0),this.group.add(a)}a.highlight()}else ra.prototype.highlight.call(this,t,e,n,i)},downplay:function(t,e,n,i){var r=t.getData(),o=Tn(r,i);if(null!=o&&o>=0){var a=r.getItemGraphicEl(o);a&&(a.__temp?(r.setItemGraphicEl(o,null),this.group.remove(a)):a.downplay())}else ra.prototype.downplay.call(this,t,e,n,i)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new Aw({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new kw({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(n),this._polygon=n,n},_updateAnimation:function(t,e,n,i,r,o){var a=this._polyline,s=this._polygon,l=t.hostModel,u=ww(this._data,t,this._stackedOnPoints,e,this._coordSys,n,this._valueOrigin,o),h=u.current,c=u.stackedOnCurrent,d=u.next,f=u.stackedOnNext;r&&(h=ru(u.current,n,r),c=ru(u.stackedOnCurrent,n,r),d=ru(u.next,n,r),f=ru(u.stackedOnNext,n,r)),a.shape.__points=u.current,a.shape.points=h,ar(a,{shape:{points:d}},l),s&&(s.setShape({points:h,stackedOnPoints:c}),ar(s,{shape:{points:d,stackedOnPoints:f}},l));for(var p=[],g=u.status,m=0;me&&(e=t[n]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,n=0;ne[1]&&e.reverse(),e},getOtherAxis:function(){this.grid.getOtherAxis()},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},u(Nw,cw);var Rw={show:!0,zlevel:0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#333",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}}},Bw={};Bw.categoryAxis=i({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},Rw),Bw.valueAxis=i({boundaryGap:[0,0],splitNumber:5},Rw),Bw.timeAxis=a({scale:!0,min:"dataMin",max:"dataMax"},Bw.valueAxis),Bw.logAxis=a({scale:!0,logBase:10},Bw.valueAxis);var Vw=["value","category","time","log"],Fw=function(t,e,n,o){d(Vw,function(a){e.extend({type:t+"Axis."+a,mergeDefaultAndTheme:function(e,r){var o=this.layoutMode,s=o?Ur(e):{};i(e,r.getTheme().get(a+"Axis")),i(e,this.getDefaultOption()),e.type=n(t,e),o&&Zr(e,s,o)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=Rs.createByAxisModel(this))},getCategories:function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},getOrdinalMeta:function(){return this.__ordinalMeta},defaultOption:r([{},Bw[a+"Axis"],o],!0)})}),Iy.registerSubTypeDefaulter(t+"Axis",v(n,t))},Hw=Iy.extend({type:"cartesian2dAxis",axis:null,init:function(){Hw.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){Hw.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){Hw.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});i(Hw.prototype,K_);var Gw={offset:0};Fw("x",Hw,hu,Gw),Fw("y",Hw,hu,Gw),Iy.extend({type:"grid",dependencies:["xAxis","yAxis"],layoutMode:"box",coordinateSystem:null,defaultOption:{show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:60,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"}});var Ww=du.prototype;Ww.type="grid",Ww.axisPointerEnabled=!0,Ww.getRect=function(){return this._rect},Ww.update=function(t,e){var n=this._axesMap;this._updateScale(t,this.model),d(n.x,function(t){il(t.scale,t.model)}),d(n.y,function(t){il(t.scale,t.model)}),d(n.x,function(t){fu(n,"y",t)}),d(n.y,function(t){fu(n,"x",t)}),this.resize(this.model,e)},Ww.resize=function(t,e,n){function i(){d(o,function(t){var e=t.isHorizontal(),n=e?[0,r.width]:[0,r.height],i=t.inverse?1:0;t.setExtent(n[i],n[1-i]),gu(t,e?r.x:r.y)})}var r=Gr(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=r;var o=this._axesList;i(),!n&&t.get("containLabel")&&(d(o,function(t){if(!t.model.get("axisLabel.inside")){var e=ll(t);if(e){var n=t.isHorizontal()?"height":"width",i=t.model.get("axisLabel.margin");r[n]-=e[n]+i,"top"===t.position?r.y+=e.height+i:"left"===t.position&&(r.x+=e.width+i)}}}),i())},Ww.getAxis=function(t,e){var n=this._axesMap[t];if(null!=n){if(null==e)for(var i in n)if(n.hasOwnProperty(i))return n[i];return n[e]}},Ww.getAxes=function(){return this._axesList.slice()},Ww.getCartesian=function(t,e){if(null!=t&&null!=e){var n="x"+t+"y"+e;return this._coordsMap[n]}w(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var i=0,r=this._coordsList;iu[1]?-1:1,c=["start"===r?u[0]-h*l:"end"===r?u[1]+h*l:(u[0]+u[1])/2,Su(r)?t.labelOffset+a*l:0],d=e.get("nameRotate");null!=d&&(d=d*Uw/180);var f;Su(r)?i=Yw(t.rotation,null!=d?d:t.rotation,a):(i=xu(t,r,d||0,u),null!=(f=t.axisNameAvailableWidth)&&(f=Math.abs(f/Math.sin(i.rotation)),!isFinite(f)&&(f=null)));var p=s.getFont(),g=e.get("nameTruncate",!0)||{},m=g.ellipsis,v=C(t.nameTruncateMaxWidth,g.maxWidth,f),y=null!=m&&null!=v?my(n,v,p,m,{minChar:2,placeholder:g.placeholder}):n,x=e.get("tooltip",!0),_=e.mainType,w={componentType:_,name:n,$vars:["name"]};w[_+"Index"]=e.componentIndex;var b=new kv({anid:"name",__fullText:n,__truncatedText:y,position:c,rotation:i.rotation,silent:_u(e),z2:1,tooltip:x&&x.show?o({content:n,formatter:function(){return n},formatterParams:w},x):null});Ki(b.style,s,{text:y,textFont:p,textFill:s.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:i.textAlign,textVerticalAlign:i.textVerticalAlign}),e.get("triggerEvent")&&(b.eventData=yu(e),b.eventData.targetType="axisName",b.eventData.name=n),this._dumbGroup.add(b),b.updateTransform(),this.group.add(b),b.decomposeTransform()}}},Yw=Xw.innerTextLayout=function(t,e,n){var i,r,o=Tr(e-t);return Dr(o)?(r=n>0?"top":"bottom",i="center"):Dr(o-Uw)?(r=n>0?"bottom":"top",i="center"):(r="middle",i=o>0&&o0?"right":"left":n>0?"left":"right"),{rotation:o,textAlign:i,textVerticalAlign:r}},qw=d,$w=v,Kw=as({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,n,i){this.axisPointerClass&&Ou(t),Kw.superApply(this,"render",arguments),Bu(this,t,0,n,0,!0)},updateAxisPointer:function(t,e,n,i,r){Bu(this,t,0,n,0,!1)},remove:function(t,e){var n=this._axisPointer;n&&n.remove(e),Kw.superApply(this,"remove",arguments)},dispose:function(t,e){Vu(this,e),Kw.superApply(this,"dispose",arguments)}}),Qw=[];Kw.registerAxisPointerClass=function(t,e){Qw[t]=e},Kw.getAxisPointerClass=function(t){return t&&Qw[t]};var Jw=["axisLine","axisTickLabel","axisName"],tb=["splitArea","splitLine"],eb=Kw.extend({type:"cartesianAxis",axisPointerClass:"CartesianAxisPointer",render:function(t,e,n,i){this.group.removeAll();var r=this._axisGroup;if(this._axisGroup=new Sg,this.group.add(this._axisGroup),t.get("show")){var o=t.getCoordSysModel(),a=Fu(o,t),s=new Xw(t,a);d(Jw,s.add,s),this._axisGroup.add(s.getGroup()),d(tb,function(e){t.get(e+".show")&&this["_"+e](t,o)},this),cr(r,this._axisGroup,t),eb.superCall(this,"render",t,e,n,i)}},remove:function(){this._splitAreaColors=null},_splitLine:function(t,e){var n=t.axis;if(!n.scale.isBlank()){var i=t.getModel("splitLine"),r=i.getModel("lineStyle"),o=r.get("color");o=y(o)?o:[o];for(var s=e.coordinateSystem.getRect(),l=n.isHorizontal(),u=0,h=n.getTicksCoords({tickModel:i}),c=[],d=[],f=r.getLineStyle(),p=0;p1){var c;"string"==typeof r?c=Ow[r]:"function"==typeof r&&(c=r),c&&t.setData(i.downSample(i.mapDimension(s.dim),1/h,c,zw))}}}}}("line")),cx.extend({type:"series.__base_bar__",getInitialData:function(t,e){return Os(this.getSource(),this)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var n=e.dataToPoint(e.clampData(t)),i=this.getData(),r=i.getLayout("offset"),o=i.getLayout("size");return n[e.getBaseAxis().isHorizontal()?0:1]+=r+o/2,n}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod",itemStyle:{},emphasis:{}}}).extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect",getProgressive:function(){return!!this.get("large")&&this.get("progressive")},getProgressiveThreshold:function(){var t=this.get("progressiveThreshold"),e=this.get("largeThreshold");return e>t&&(t=e),t}});var nb=Sm([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),ib={getBarItemStyle:function(t){var e=nb(this,t);if(this.getBorderLineDash){var n=this.getBorderLineDash();n&&(e.lineDash=n)}return e}},rb=["itemStyle","barBorderWidth"];o(pr.prototype,ib),ls({type:"bar",render:function(t,e,n){this._updateDrawMode(t);var i=t.get("coordinateSystem");return"cartesian2d"!==i&&"polar"!==i||(this._isLargeDraw?this._renderLarge(t,e,n):this._renderNormal(t,e,n)),this.group},incrementalPrepareRender:function(t,e,n){this._clear(),this._updateDrawMode(t)},incrementalRender:function(t,e,n,i){this._incrementalRenderLarge(t,e)},_updateDrawMode:function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e^this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},_renderNormal:function(t,e,n){var i,r=this.group,o=t.getData(),a=this._data,s=t.coordinateSystem,l=s.getBaseAxis();"cartesian2d"===s.type?i=l.isHorizontal():"polar"===s.type&&(i="angle"===l.dim);var u=t.isAnimationEnabled()?t:null;o.diff(a).add(function(e){if(o.hasValue(e)){var n=o.getItemModel(e),a=ab[s.type](o,e,n),l=ob[s.type](o,e,n,a,i,u);o.setItemGraphicEl(e,l),r.add(l),Uu(l,o,e,n,a,t,i,"polar"===s.type)}}).update(function(e,n){var l=a.getItemGraphicEl(n);if(o.hasValue(e)){var h=o.getItemModel(e),c=ab[s.type](o,e,h);l?ar(l,{shape:c},u,e):l=ob[s.type](o,e,h,c,i,u,!0),o.setItemGraphicEl(e,l),r.add(l),Uu(l,o,e,h,c,t,i,"polar"===s.type)}else r.remove(l)}).remove(function(t){var e=a.getItemGraphicEl(t);"cartesian2d"===s.type?e&&Wu(t,u,e):e&&Zu(t,u,e)}).execute(),this._data=o},_renderLarge:function(t,e,n){this._clear(),ju(t,this.group)},_incrementalRenderLarge:function(t,e){ju(e,this.group,!0)},dispose:R,remove:function(t){this._clear(t)},_clear:function(t){var e=this.group,n=this._data;t&&t.get("animation")&&n&&!this._isLargeDraw?n.eachItemGraphicEl(function(e){"sector"===e.type?Zu(e.dataIndex,t,e):Wu(e.dataIndex,t,e)}):e.removeAll(),this._data=null}});var ob={cartesian2d:function(t,e,n,i,r,a,s){var l=new Fv({shape:o({},i)});if(a){var u=l.shape,h=r?"height":"width",c={};u[h]=0,c[h]=i[h],ty[s?"updateProps":"initProps"](l,{shape:c},a,e)}return l},polar:function(t,e,n,i,r,o,s){var l=i.startAngle0?1:-1,a=i.height>0?1:-1;return{x:i.x+o*r/2,y:i.y+a*r/2,width:i.width-o*r,height:i.height-a*r}},polar:function(t,e,n){var i=t.getItemLayout(e);return{cx:i.cx,cy:i.cy,r0:i.r0,r:i.r,startAngle:i.startAngle,endAngle:i.endAngle}}},sb=xi.extend({type:"largeBar",shape:{points:[]},buildPath:function(t,e){for(var n=e.points,i=this.__startPoint,r=this.__valueIdx,o=0;o=0?"p":"n",b=m;p&&(r[a][_]||(r[a][_]={p:m,n:m}),b=r[a][_][w]);var M,S,I,C;if(g)M=b,S=(T=n.dataToPoint([x,_]))[1]+l,I=T[0]-m,C=u,Math.abs(I)0&&"scale"!==u){var d=r.getItemLayout(0),f=Math.max(n.getWidth(),n.getHeight())/2,p=m(a.removeClipPath,a);a.setClipPath(this._createClipPath(d.cx,d.cy,f,d.startAngle,d.clockwise,p,t))}this._data=r}},dispose:function(){},_createClipPath:function(t,e,n,i,r,o,a){var s=new zv({shape:{cx:t,cy:e,r0:0,r:n,startAngle:i,endAngle:i,clockwise:r}});return sr(s,{shape:{endAngle:i+(r?1:-1)*Math.PI*2}},a,o),s},containPoint:function(t,e){var n=e.getData().getItemLayout(0);if(n){var i=t[0]-n.cx,r=t[1]-n.cy,o=Math.sqrt(i*i+r*r);return o<=n.r&&o>=n.r0}}});var db=function(t,e,n,i){var r,o,a=t.getData(),s=[],l=!1;a.each(function(n){var i,u,h,c,d=a.getItemLayout(n),f=a.getItemModel(n),p=f.getModel("label"),g=p.get("position")||f.get("emphasis.label.position"),m=f.getModel("labelLine"),v=m.get("length"),y=m.get("length2"),x=(d.startAngle+d.endAngle)/2,_=Math.cos(x),w=Math.sin(x);r=d.cx,o=d.cy;var b="inside"===g||"inner"===g;if("center"===g)i=d.cx,u=d.cy,c="center";else{var M=(b?(d.r+d.r0)/2*_:d.r*_)+r,S=(b?(d.r+d.r0)/2*w:d.r*w)+o;if(i=M+3*_,u=S+3*w,!b){var I=M+_*(v+e-d.r),C=S+w*(v+e-d.r),T=I+(_<0?-1:1)*y,D=C;i=T+(_<0?-5:5),u=D,h=[[M,S],[I,C],[T,D]]}c=b?"center":_>0?"left":"right"}var A=p.getFont(),k=p.get("rotate")?_<0?-x+Math.PI:-x:0,P=ce(t.getFormattedLabel(n,"normal")||a.getName(n),A,c,"top");l=!!k,d.label={x:i,y:u,position:g,height:P.height,len:v,len2:y,linePoints:h,textAlign:c,verticalAlign:"middle",rotation:k,inside:b},b||s.push(d.label)}),!l&&t.get("avoidLabelOverlap")&&Ju(s,r,o,e,n,i)},fb=2*Math.PI,pb=Math.PI/180;!function(t,e){d(e,function(e){e.update="updateView",ts(e,function(n,i){var r={};return i.eachComponent({mainType:"series",subType:t,query:n},function(t){t[e.method]&&t[e.method](n.name,n.dataIndex);var i=t.getData();i.each(function(e){var n=i.getName(e);r[n]=t.isSelected(n)||!1})}),{name:n.name,selected:r}})})}("pie",[{type:"pieToggleSelect",event:"pieselectchanged",method:"toggleSelected"},{type:"pieSelect",event:"pieselected",method:"select"},{type:"pieUnSelect",event:"pieunselected",method:"unSelect"}]),ns(function(t){return{getTargetSeries:function(e){var n={},i=N();return e.eachSeriesByType(t,function(t){t.__paletteScope=n,i.set(t.uid,t)}),i},reset:function(t,e){var n=t.getRawData(),i={},r=t.getData();r.each(function(t){var e=r.getRawIndex(t);i[e]=t}),n.each(function(e){var o=i[e],a=null!=o&&r.getItemVisual(o,"color",!0);if(a)n.setItemVisual(e,"color",a);else{var s=n.getItemModel(e).get("itemStyle.color")||t.getColorFromPalette(n.getName(e)||e+"",t.__paletteScope,n.count());n.setItemVisual(e,"color",s),null!=o&&r.setItemVisual(o,"color",s)}})}}}("pie")),es(v(function(t,e,n,i){e.eachSeriesByType(t,function(t){var e=t.getData(),i=e.mapDimension("value"),r=t.get("center"),o=t.get("radius");y(o)||(o=[0,o]),y(r)||(r=[r,r]);var a=n.getWidth(),s=n.getHeight(),l=Math.min(a,s),u=_r(r[0],a),h=_r(r[1],s),c=_r(o[0],l/2),d=_r(o[1],l/2),f=-t.get("startAngle")*pb,p=t.get("minAngle")*pb,g=0;e.each(i,function(t){!isNaN(t)&&g++});var m=e.getSum(i),v=Math.PI/(m||g)*2,x=t.get("clockwise"),_=t.get("roseType"),w=t.get("stillShowZeroSum"),b=e.getDataExtent(i);b[0]=0;var M=fb,S=0,I=f,C=x?1:-1;if(e.each(i,function(t,n){var i;if(isNaN(t))e.setItemLayout(n,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:x,cx:u,cy:h,r0:c,r:_?NaN:d});else{(i="area"!==_?0===m&&w?v:t*v:fb/g)=0;s--){var l=2*s,u=i[l]-o/2,h=i[l+1]-a/2;if(t>=u&&e>=h&&t<=u+o&&e<=h+a)return s}return-1}}),mb=th.prototype;mb.isPersistent=function(){return!this._incremental},mb.updateData=function(t){this.group.removeAll();var e=new gb({rectHover:!0,cursor:"default"});e.setShape({points:t.getLayout("symbolPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},mb.updateLayout=function(t){if(!this._incremental){var e=t.getLayout("symbolPoints");this.group.eachChild(function(t){if(null!=t.startIndex){var n=2*(t.endIndex-t.startIndex),i=4*t.startIndex*2;e=new Float32Array(e.buffer,i,n)}t.setShape("points",e)})}},mb.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>2e6?(this._incremental||(this._incremental=new Di({silent:!0})),this.group.add(this._incremental)):this._incremental=null},mb.incrementalUpdate=function(t,e){var n;this._incremental?(n=new gb,this._incremental.addDisplayable(n,!0)):((n=new gb({rectHover:!0,cursor:"default",startIndex:t.start,endIndex:t.end})).incremental=!0,this.group.add(n)),n.setShape({points:e.getLayout("symbolPoints")}),this._setCommon(n,e,!!this._incremental)},mb._setCommon=function(t,e,n){var i=e.hostModel,r=e.getVisual("symbolSize");t.setShape("size",r instanceof Array?r:[r,r]),t.symbolProxy=cl(e.getVisual("symbol"),0,0,0,0),t.setColor=t.symbolProxy.setColor;var o=t.shape.size[0]<4;t.useStyle(i.getModel("itemStyle").getItemStyle(o?["color","shadowBlur","shadowColor"]:["color"]));var a=e.getVisual("color");a&&t.setColor(a),n||(t.seriesIndex=i.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var n=t.findDataIndex(e.offsetX,e.offsetY);n>=0&&(t.dataIndex=n+(t.startIndex||0))}))},mb.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},mb._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},ls({type:"scatter",render:function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).updateData(i),this._finished=!0},incrementalPrepareRender:function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).incrementalPrepareUpdate(i),this._finished=!1},incrementalRender:function(t,e,n){this._symbolDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,n){var i=t.getData();if(this.group.dirty(),!this._finished||i.count()>1e4||!this._symbolDraw.isPersistent())return{update:!0};var r=Lw().reset(t);r.progress&&r.progress({start:0,end:i.count()},i),this._symbolDraw.updateLayout(i)},_updateSymbolDraw:function(t,e){var n=this._symbolDraw,i=e.pipelineContext.large;return n&&i===this._isLargeDraw||(n&&n.remove(),n=this._symbolDraw=i?new th:new Bl,this._isLargeDraw=i,this.group.removeAll()),this.group.add(n.group),n},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},dispose:function(){}}),ns(Pw("scatter","circle")),es(Lw("scatter")),Qa(function(t){var e=t.graphic;y(e)?e[0]&&e[0].elements?t.graphic=[t.graphic[0]]:t.graphic=[{elements:e}]:e&&!e.elements&&(t.graphic=[{elements:[e]}])});var vb=os({type:"graphic",defaultOption:{elements:[],parentId:null},_elOptionsToUpdate:null,mergeOption:function(t){var e=this.option.elements;this.option.elements=null,vb.superApply(this,"mergeOption",arguments),this.option.elements=e},optionUpdated:function(t,e){var n=this.option,i=(e?n:t).elements,r=n.elements=e?[]:n.elements,o=[];this._flatten(i,o);var a=Mn(r,o);Sn(a);var s=this._elOptionsToUpdate=[];d(a,function(t,e){var n=t.option;n&&(s.push(n),oh(t,n),ah(r,e,n),sh(r[e],n))},this);for(var l=r.length-1;l>=0;l--)null==r[l]?r.splice(l,1):delete r[l].$action},_flatten:function(t,e,n){d(t,function(t){if(t){n&&(t.parentOption=n),e.push(t);var i=t.children;"group"===t.type&&i&&this._flatten(i,e,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});as({type:"graphic",init:function(t,e){this._elMap=N(),this._lastGraphicModel},render:function(t,e,n){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t,n),this._relocate(t,n)},_updateElements:function(t,e){var n=t.useElOptionsToUpdate();if(n){var i=this._elMap,r=this.group;d(n,function(t){var e=t.$action,n=t.id,o=i.get(n),a=t.parentId,s=null!=a?i.get(a):r;if("text"===t.type){var l=t.style;t.hv&&t.hv[1]&&(l.textVerticalAlign=l.textBaseline=null),!l.hasOwnProperty("textFill")&&l.fill&&(l.textFill=l.fill),!l.hasOwnProperty("textStroke")&&l.stroke&&(l.textStroke=l.stroke)}var u=ih(t);e&&"merge"!==e?"replace"===e?(nh(o,i),eh(n,s,u,i)):"remove"===e&&nh(o,i):o?o.attr(u):eh(n,s,u,i);var h=i.get(n);h&&(h.__ecGraphicWidth=t.width,h.__ecGraphicHeight=t.height)})}},_relocate:function(t,e){for(var n=t.option.elements,i=this.group,r=this._elMap,o=n.length-1;o>=0;o--){var a=n[o],s=r.get(a.id);if(s){var l=s.parent;Wr(s,a,l===i?{width:e.getWidth(),height:e.getHeight()}:{width:l.__ecGraphicWidth||0,height:l.__ecGraphicHeight||0},null,{hv:a.hv,boundingMode:a.bounding})}}},_clear:function(){var t=this._elMap;t.each(function(e){nh(e,t)}),this._elMap=N()},dispose:function(){this._clear()}});var yb=function(t,e){var n,i=[],r=t.seriesIndex;if(null==r||!(n=e.getSeriesByIndex(r)))return{point:[]};var o=n.getData(),a=Tn(o,t);if(null==a||a<0||y(a))return{point:[]};var s=o.getItemGraphicEl(a),l=n.coordinateSystem;if(n.getTooltipPosition)i=n.getTooltipPosition(a)||[];else if(l&&l.dataToPoint)i=l.dataToPoint(o.getValues(f(l.dimensions,function(t){return o.mapDimension(t)}),a,!0))||[];else if(s){var u=s.getBoundingRect().clone();u.applyTransform(s.transform),i=[u.x+u.width/2,u.y+u.height/2]}return{point:i,el:s}},xb=d,_b=v,wb=Dn(),bb=(os({type:"axisPointer",coordSysAxesInfo:null,defaultOption:{show:"auto",triggerOn:null,zlevel:0,z:50,type:"line",snap:!1,triggerTooltip:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#aaa",width:1,type:"solid"},shadowStyle:{color:"rgba(150,150,150,0.3)"},label:{show:!0,formatter:null,precision:"auto",margin:3,color:"#fff",padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,shadowBlur:3,shadowColor:"#aaa"},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}}}),Dn()),Mb=d,Sb=as({type:"axisPointer",render:function(t,e,n){var i=e.getComponent("tooltip"),r=t.get("triggerOn")||i&&i.get("triggerOn")||"mousemove|click";yh("axisPointer",n,function(t,e,n){"none"!==r&&("leave"===t||r.indexOf(t)>=0)&&n({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){Sh(e.getZr(),"axisPointer"),Sb.superApply(this._model,"remove",arguments)},dispose:function(t,e){Sh("axisPointer",e),Sb.superApply(this._model,"dispose",arguments)}}),Ib=Dn(),Cb=n,Tb=m;(Ih.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,n,i){var r=e.get("value"),o=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=n,i||this._lastValue!==r||this._lastStatus!==o){this._lastValue=r,this._lastStatus=o;var a=this._group,s=this._handle;if(!o||"hide"===o)return a&&a.hide(),void(s&&s.hide());a&&a.show(),s&&s.show();var l={};this.makeElOption(l,r,t,e,n);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(n),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(a){var c=v(Ch,e,h);this.updatePointerEl(a,l,c,e),this.updateLabelEl(a,l,c,e)}else a=this._group=new Sg,this.createPointerEl(a,l,t,e),this.createLabelEl(a,l,t,e),n.getZr().add(a);kh(a,e,!0),this._renderHandle(r)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var n=e.get("animation"),i=t.axis,r="category"===i.type,o=e.get("snap");if(!o&&!r)return!1;if("auto"===n||null==n){var a=this.animationThreshold;if(r&&i.getBandWidth()>a)return!0;if(o){var s=zu(t).seriesDataCount,l=i.getExtent();return Math.abs(l[0]-l[1])/s>a}return!1}return!0===n},makeElOption:function(t,e,n,i,r){},createPointerEl:function(t,e,n,i){var r=e.pointer;if(r){var o=Ib(t).pointerEl=new ty[r.type](Cb(e.pointer));t.add(o)}},createLabelEl:function(t,e,n,i){if(e.label){var r=Ib(t).labelEl=new Fv(Cb(e.label));t.add(r),Dh(r,i)}},updatePointerEl:function(t,e,n){var i=Ib(t).pointerEl;i&&(i.setStyle(e.pointer.style),n(i,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,n,i){var r=Ib(t).labelEl;r&&(r.setStyle(e.label.style),n(r,{shape:e.label.shape,position:e.label.position}),Dh(r,i))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e=this._axisPointerModel,n=this._api.getZr(),i=this._handle,r=e.getModel("handle"),o=e.get("status");if(!r.get("show")||!o||"hide"===o)return i&&n.remove(i),void(this._handle=null);var a;this._handle||(a=!0,i=this._handle=fr(r.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){tm(t.event)},onmousedown:Tb(this._onHandleDragMove,this,0,0),drift:Tb(this._onHandleDragMove,this),ondragend:Tb(this._onHandleDragEnd,this)}),n.add(i)),kh(i,e,!1);var s=["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];i.setStyle(r.getItemStyle(null,s));var l=r.get("size");y(l)||(l=[l,l]),i.attr("scale",[l[0]/2,l[1]/2]),ha(this,"_doDispatchAxisPointer",r.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,a)}},_moveHandleToValue:function(t,e){Ch(this._axisPointerModel,!e&&this._moveAnimation,this._handle,Ah(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var n=this._handle;if(n){this._dragging=!0;var i=this.updateHandleTransform(Ah(n),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=i,n.stopAnimation(),n.attr(Ah(i)),Ib(n).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},_onHandleDragEnd:function(t){if(this._dragging=!1,this._handle){var e=this._axisPointerModel.get("value");this._moveHandleToValue(e),this._api.dispatchAction({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),n=this._group,i=this._handle;e&&n&&(this._lastGraphicKey=null,n&&e.remove(n),i&&e.remove(i),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,n){return n=n||0,{x:t[n],y:t[1-n],width:e[n],height:e[1-n]}}}).constructor=Ih,En(Ih);var Db=Ih.extend({makeElOption:function(t,e,n,i,r){var o=n.axis,a=o.grid,s=i.get("type"),l=Vh(a,o).getOtherAxis(o).getGlobalExtent(),u=o.toGlobalCoord(o.dataToCoord(e,!0));if(s&&"none"!==s){var h=Ph(i),c=Ab[s](o,u,l,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Nh(e,t,Fu(a.model,n),n,i,r)},getHandleTransform:function(t,e,n){var i=Fu(e.axis.grid.model,e,{labelInside:!1});return i.labelMargin=n.get("handle.margin"),{position:Eh(e.axis,t,i),rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,n,i){var r=n.axis,o=r.grid,a=r.getGlobalExtent(!0),s=Vh(o,r).getOtherAxis(r).getGlobalExtent(),l="x"===r.dim?0:1,u=t.position;u[l]+=e[l],u[l]=Math.min(a[1],u[l]),u[l]=Math.max(a[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];var d=[{verticalAlign:"middle"},{align:"center"}];return{position:u,rotation:t.rotation,cursorPoint:c,tooltipOption:d[l]}}}),Ab={line:function(t,e,n,i){var r=Rh([e,n[0]],[e,n[1]],Fh(t));return zi({shape:r,style:i}),{type:"Line",shape:r}},shadow:function(t,e,n,i){var r=Math.max(1,t.getBandWidth()),o=n[1]-n[0];return{type:"Rect",shape:Bh([e-r/2,n[0]],[r,o],Fh(t))}}};Kw.registerAxisPointerClass("CartesianAxisPointer",Db),Qa(function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!y(e)&&(t.axisPointer.link=[e])}}),Ja(Xx.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=Tu(t,e)}),ts({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,n){var i=t.currTrigger,r=[t.x,t.y],o=t,a=t.dispatchAction||m(n.dispatchAction,n),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){vh(r)&&(r=yb({seriesIndex:o.seriesIndex,dataIndex:o.dataIndex},e).point);var l=vh(r),u=o.axesInfo,h=s.axesInfo,c="leave"===i||vh(r),d={},f={},p={list:[],map:{}},g={showPointer:_b(hh,f),showTooltip:_b(ch,p)};xb(s.coordSysMap,function(t,e){var n=l||t.containPoint(r);xb(s.coordSysAxesInfo[e],function(t,e){var i=t.axis,o=gh(u,t);if(!c&&n&&(!u||o)){var a=o&&o.value;null!=a||l||(a=i.pointToData(r)),null!=a&&lh(t,a,g,!1,d)}})});var v={};return xb(h,function(t,e){var n=t.linkGroup;n&&!f[e]&&xb(n.axesInfo,function(e,i){var r=f[i];if(e!==t&&r){var o=r.value;n.mapper&&(o=t.axis.scale.parse(n.mapper(o,mh(e),mh(t)))),v[t.key]=o}})}),xb(v,function(t,e){lh(h[e],t,g,!0,d)}),dh(f,h,d),fh(p,r,t,a),ph(h,0,n),d}}),os({type:"tooltip",dependencies:["axisPointer"],defaultOption:{zlevel:0,z:8,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",confine:!1,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"rgba(50,50,50,0.7)",borderColor:"#333",borderRadius:4,borderWidth:0,padding:5,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#fff",fontSize:14}}});var kb=d,Pb=zr,Lb=["","-webkit-","-moz-","-o-"];Zh.prototype={constructor:Zh,_enterable:!0,update:function(){var t=this._container,e=t.currentStyle||document.defaultView.getComputedStyle(t),n=t.style;"absolute"!==n.position&&"absolute"!==e.position&&(n.position="relative")},show:function(t){clearTimeout(this._hideTimeout);var e=this.el;e.style.cssText="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;"+Wh(t)+";left:"+this._x+"px;top:"+this._y+"px;"+(t.get("extraCssText")||""),e.style.display=e.innerHTML?"block":"none",this._show=!0},setContent:function(t){this.el.innerHTML=null==t?"":t},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el;return[t.clientWidth,t.clientHeight]},moveTo:function(t,e){var n,i=this._zr;i&&i.painter&&(n=i.painter.getViewportRootOffset())&&(t+=n.offsetLeft,e+=n.offsetTop);var r=this.el.style;r.left=t+"px",r.top=e+"px",this._x=t,this._y=e},hide:function(){this.el.style.display="none",this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(m(this.hide,this),t)):this.hide())},isShow:function(){return this._show}};var Ob=m,zb=d,Eb=_r,Nb=new Fv({shape:{x:-1,y:-1,width:2,height:2}});as({type:"tooltip",init:function(t,e){if(!bp.node){var n=new Zh(e.getDom(),e);this._tooltipContent=n}},render:function(t,e,n){if(!bp.node&&!bp.wxa){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=n,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var i=this._tooltipContent;i.update(),i.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel.get("triggerOn");yh("itemTooltip",this._api,Ob(function(e,n,i){"none"!==t&&(t.indexOf(e)>=0?this._tryShow(n,i):"leave"===e&&this._hide(i))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,n=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var i=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){i.manuallyShowTip(t,e,n,{x:i._lastX,y:i._lastY})})}},manuallyShowTip:function(t,e,n,i){if(i.from!==this.uid&&!bp.node){var r=Xh(i,n);this._ticket="";var o=i.dataByCoordSys;if(i.tooltip&&null!=i.x&&null!=i.y){var a=Nb;a.position=[i.x,i.y],a.update(),a.tooltip=i.tooltip,this._tryShow({offsetX:i.x,offsetY:i.y,target:a},r)}else if(o)this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,event:{},dataByCoordSys:i.dataByCoordSys,tooltipOption:i.tooltipOption},r);else if(null!=i.seriesIndex){if(this._manuallyAxisShowTip(t,e,n,i))return;var s=yb(i,e),l=s.point[0],u=s.point[1];null!=l&&null!=u&&this._tryShow({offsetX:l,offsetY:u,position:i.position,target:s.el,event:{}},r)}else null!=i.x&&null!=i.y&&(n.dispatchAction({type:"updateAxisPointer",x:i.x,y:i.y}),this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,target:n.getZr().findHover(i.x,i.y).target,event:{}},r))}},manuallyHideTip:function(t,e,n,i){var r=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&r.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,i.from!==this.uid&&this._hide(Xh(i,n))},_manuallyAxisShowTip:function(t,e,n,i){var r=i.seriesIndex,o=i.dataIndex,a=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=r&&null!=o&&null!=a){var s=e.getSeriesByIndex(r);if(s&&"axis"===(t=Uh([s.getData().getItemModel(o),s,(s.coordinateSystem||{}).model,t])).get("trigger"))return n.dispatchAction({type:"updateAxisPointer",seriesIndex:r,dataIndex:o,position:i.position}),!0}},_tryShow:function(t,e){var n=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var i=t.dataByCoordSys;i&&i.length?this._showAxisTooltip(i,t):n&&null!=n.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,n,e)):n&&n.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,n,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,e){var n=t.get("showDelay");e=m(e,this),clearTimeout(this._showTimout),n>0?this._showTimout=setTimeout(e,n):e()},_showAxisTooltip:function(t,e){var n=this._ecModel,i=this._tooltipModel,r=[e.offsetX,e.offsetY],o=[],a=[],s=Uh([e.tooltipOption,i]);zb(t,function(t){zb(t.dataByAxis,function(t){var e=n.getComponent(t.axisDim+"Axis",t.axisIndex),i=t.value,r=[];if(e&&null!=i){var s=zh(i,e.axis,n,t.seriesDataIndices,t.valueLabelOpt);d(t.seriesDataIndices,function(o){var l=n.getSeriesByIndex(o.seriesIndex),u=o.dataIndexInside,h=l&&l.getDataParams(u);h.axisDim=t.axisDim,h.axisIndex=t.axisIndex,h.axisType=t.axisType,h.axisId=t.axisId,h.axisValue=sl(e.axis,i),h.axisValueLabel=s,h&&(a.push(h),r.push(l.formatTooltip(u,!0)))});var l=s;o.push((l?Er(l)+"
          ":"")+r.join("
          "))}})},this),o.reverse(),o=o.join("

          ");var l=e.position;this._showOrMove(s,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(s,l,r[0],r[1],this._tooltipContent,a):this._showTooltipContent(s,o,a,Math.random(),r[0],r[1],l)})},_showSeriesItemTooltip:function(t,e,n){var i=this._ecModel,r=e.seriesIndex,o=i.getSeriesByIndex(r),a=e.dataModel||o,s=e.dataIndex,l=e.dataType,u=a.getData(),h=Uh([u.getItemModel(s),a,o&&(o.coordinateSystem||{}).model,this._tooltipModel]),c=h.get("trigger");if(null==c||"item"===c){var d=a.getDataParams(s,l),f=a.formatTooltip(s,!1,l),p="item_"+a.name+"_"+s;this._showOrMove(h,function(){this._showTooltipContent(h,f,d,p,t.offsetX,t.offsetY,t.position,t.target)}),n({type:"showTip",dataIndexInside:s,dataIndex:u.getRawIndex(s),seriesIndex:r,from:this.uid})}},_showComponentItemTooltip:function(t,e,n){var i=e.tooltip;if("string"==typeof i){var r=i;i={content:r,formatter:r}}var o=new pr(i,this._tooltipModel,this._ecModel),a=o.get("content"),s=Math.random();this._showOrMove(o,function(){this._showTooltipContent(o,a,o.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)}),n({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,n,i,r,o,a,s){if(this._ticket="",t.get("showContent")&&t.get("show")){var l=this._tooltipContent,u=t.get("formatter");a=a||t.get("position");var h=e;if(u&&"string"==typeof u)h=Nr(u,n,!0);else if("function"==typeof u){var c=Ob(function(e,i){e===this._ticket&&(l.setContent(i),this._updatePosition(t,a,r,o,l,n,s))},this);this._ticket=i,h=u(n,i,c)}l.setContent(h),l.show(t),this._updatePosition(t,a,r,o,l,n,s)}},_updatePosition:function(t,e,n,i,r,o,a){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=r.getSize(),h=t.get("align"),c=t.get("verticalAlign"),d=a&&a.getBoundingRect().clone();if(a&&d.applyTransform(a.transform),"function"==typeof e&&(e=e([n,i],o,r.el,d,{viewSize:[s,l],contentSize:u.slice()})),y(e))n=Eb(e[0],s),i=Eb(e[1],l);else if(w(e)){e.width=u[0],e.height=u[1];var f=Gr(e,{width:s,height:l});n=f.x,i=f.y,h=null,c=null}else"string"==typeof e&&a?(n=(p=$h(e,d,u))[0],i=p[1]):(n=(p=jh(n,i,r.el,s,l,h?null:20,c?null:20))[0],i=p[1]);if(h&&(n-=Kh(h)?u[0]/2:"right"===h?u[0]:0),c&&(i-=Kh(c)?u[1]/2:"bottom"===c?u[1]:0),t.get("confine")){var p=Yh(n,i,r.el,s,l);n=p[0],i=p[1]}r.moveTo(n,i)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,n=!!e&&e.length===t.length;return n&&zb(e,function(e,i){var r=e.dataByAxis||{},o=(t[i]||{}).dataByAxis||[];(n&=r.length===o.length)&&zb(r,function(t,e){var i=o[e]||{},r=t.seriesDataIndices||[],a=i.seriesDataIndices||[];(n&=t.value===i.value&&t.axisType===i.axisType&&t.axisId===i.axisId&&r.length===a.length)&&zb(r,function(t,e){var i=a[e];n&=t.seriesIndex===i.seriesIndex&&t.dataIndex===i.dataIndex})})}),this._lastDataByCoordSys=t,!!n},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){bp.node||bp.wxa||(this._tooltipContent.hide(),Sh("itemTooltip",e))}}),ts({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),ts({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){});var Rb=os({type:"legend.plain",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,n){this.mergeDefaultAndTheme(t,n),t.selected=t.selected||{}},mergeOption:function(t){Rb.superCall(this,"mergeOption",t)},optionUpdated:function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,n=0;n=0},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});ts("legendToggleSelect","legendselectchanged",v(Qh,"toggleSelected")),ts("legendSelect","legendselected",v(Qh,"select")),ts("legendUnSelect","legendunselected",v(Qh,"unSelect"));var Bb=v,Vb=d,Fb=Sg,Hb=as({type:"legend.plain",newlineDisabled:!1,init:function(){this.group.add(this._contentGroup=new Fb),this._backgroundEl},getContentGroup:function(){return this._contentGroup},render:function(t,e,n){if(this.resetInner(),t.get("show",!0)){var i=t.get("align");i&&"auto"!==i||(i="right"===t.get("left")&&"vertical"===t.get("orient")?"right":"left"),this.renderInner(i,t,e,n);var r=t.getBoxLayoutParams(),o={width:n.getWidth(),height:n.getHeight()},s=t.get("padding"),l=Gr(r,o,s),u=this.layoutInner(t,i,l),h=Gr(a({width:u.width,height:u.height},r),o,s);this.group.attr("position",[h.x-u.x,h.y-u.y]),this.group.add(this._backgroundEl=tc(u,t))}},resetInner:function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl)},renderInner:function(t,e,n,i){var r=this.getContentGroup(),o=N(),a=e.get("selectedMode"),s=[];n.eachRawSeries(function(t){!t.get("legendHoverLink")&&s.push(t.id)}),Vb(e.getData(),function(l,u){var h=l.get("name");if(this.newlineDisabled||""!==h&&"\n"!==h){var c=n.getSeriesByName(h)[0];if(!o.get(h))if(c){var d=c.getData(),f=d.getVisual("color");"function"==typeof f&&(f=f(c.getDataParams(0)));var p=d.getVisual("legendSymbol")||"roundRect",g=d.getVisual("symbol");this._createItem(h,u,l,e,p,g,t,f,a).on("click",Bb(ec,h,i)).on("mouseover",Bb(nc,c,null,i,s)).on("mouseout",Bb(ic,c,null,i,s)),o.set(h,!0)}else n.eachRawSeries(function(n){if(!o.get(h)&&n.legendDataProvider){var r=n.legendDataProvider(),c=r.indexOfName(h);if(c<0)return;var d=r.getItemVisual(c,"color");this._createItem(h,u,l,e,"roundRect",null,t,d,a).on("click",Bb(ec,h,i)).on("mouseover",Bb(nc,n,h,i,s)).on("mouseout",Bb(ic,n,h,i,s)),o.set(h,!0)}},this)}else r.add(new Fb({newline:!0}))},this)},_createItem:function(t,e,n,i,r,a,s,l,u){var h=i.get("itemWidth"),c=i.get("itemHeight"),d=i.get("inactiveColor"),f=i.get("symbolKeepAspect"),p=i.isSelected(t),g=new Fb,m=n.getModel("textStyle"),v=n.get("icon"),y=n.getModel("tooltip"),x=y.parentModel;if(r=v||r,g.add(cl(r,0,0,h,c,p?l:d,null==f||f)),!v&&a&&(a!==r||"none"==a)){var _=.8*c;"none"===a&&(a="circle"),g.add(cl(a,(h-_)/2,(c-_)/2,_,_,p?l:d,null==f||f))}var w="left"===s?h+5:-5,b=s,M=i.get("formatter"),S=t;"string"==typeof M&&M?S=M.replace("{name}",null!=t?t:""):"function"==typeof M&&(S=M(t)),g.add(new kv({style:Ki({},m,{text:S,x:w,y:c/2,textFill:p?m.getTextColor():d,textAlign:b,textVerticalAlign:"middle"})}));var I=new Fv({shape:g.getBoundingRect(),invisible:!0,tooltip:y.get("show")?o({content:t,formatter:x.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:i.componentIndex,name:t,$vars:["name"]}},y.option):null});return g.add(I),g.eachChild(function(t){t.silent=!0}),I.silent=!u,this.getContentGroup().add(g),qi(g),g.__legendDataIndex=e,g},layoutInner:function(t,e,n){var i=this.getContentGroup();by(t.get("orient"),i,t.get("itemGap"),n.width,n.height);var r=i.getBoundingRect();return i.attr("position",[-r.x,-r.y]),this.group.getBoundingRect()}});Ja(function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var n=0;nn[s],f=[-h.x,-h.y];f[a]=i.position[a];var p=[0,0],g=[-c.x,-c.y],m=T(t.get("pageButtonGap",!0),t.get("itemGap",!0));d&&("end"===t.get("pageButtonPosition",!0)?g[a]+=n[s]-c[s]:p[a]+=c[s]+m),g[1-a]+=h[l]/2-c[l]/2,i.attr("position",f),r.attr("position",p),o.attr("position",g);var v=this.group.getBoundingRect();if((v={x:0,y:0})[s]=d?n[s]:h[s],v[l]=Math.max(h[l],c[l]),v[u]=Math.min(0,c[u]+g[1-a]),r.__rectSize=n[s],d){var y={x:0,y:0};y[s]=Math.max(n[s]-c[s]-m,0),y[l]=v[l],r.setClipPath(new Fv({shape:y})),r.__rectSize=y[s]}else o.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var x=this._getPageInfo(t);return null!=x.pageIndex&&ar(i,{position:x.contentPosition},!!d&&t),this._updatePageInfoView(t,x),v},_pageGo:function(t,e,n){var i=this._getPageInfo(e)[t];null!=i&&n.dispatchAction({type:"legendScroll",scrollDataIndex:i,legendId:e.id})},_updatePageInfoView:function(t,e){var n=this._controllerGroup;d(["pagePrev","pageNext"],function(i){var r=null!=e[i+"DataIndex"],o=n.childOfName(i);o&&(o.setStyle("fill",r?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),o.cursor=r?"pointer":"default")});var i=n.childOfName("pageText"),r=t.get("pageFormatter"),o=e.pageIndex,a=null!=o?o+1:0,s=e.pageCount;i&&r&&i.setStyle("text",_(r)?r.replace("{current}",a).replace("{total}",s):r({current:a,total:s}))},_getPageInfo:function(t){function e(t){var e=t.getBoundingRect().clone();return e[f]+=t.position[h],e}var n,i,r,o,a=t.get("scrollDataIndex",!0),s=this.getContentGroup(),l=s.getBoundingRect(),u=this._containerGroup.__rectSize,h=t.getOrient().index,c=Zb[h],d=Zb[1-h],f=Ub[h],p=s.position.slice();this._showController?s.eachChild(function(t){t.__legendDataIndex===a&&(o=t)}):o=s.childAt(0);var g=u?Math.ceil(l[c]/u):0;if(o){var m=o.getBoundingRect(),v=o.position[h]+m[f];p[h]=-v-l[f],n=Math.floor(g*(v+m[f]+u/2)/l[c]),n=l[c]&&g?Math.max(0,Math.min(g-1,n)):-1;var y={x:0,y:0};y[c]=u,y[d]=l[d],y[f]=-p[h]-l[f];var x,_=s.children();if(s.eachChild(function(t,n){var i=e(t);i.intersect(y)&&(null==x&&(x=n),r=t.__legendDataIndex),n===_.length-1&&i[f]+i[c]<=y[f]+y[c]&&(r=null)}),null!=x){var w=e(_[x]);if(y[f]=w[f]+w[c]-y[c],x<=0&&w[f]>=y[f])i=null;else{for(;x>0&&e(_[x-1]).intersect(y);)x--;i=_[x].__legendDataIndex}}}return{contentPosition:p,pageIndex:n,pageCount:g,pagePrevDataIndex:i,pageNextDataIndex:r}}});ts("legendScroll","legendscroll",function(t,e){var n=t.scrollDataIndex;null!=n&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},function(t){t.setScrollDataIndex(n)})}),os({type:"title",layoutMode:{type:"box",ignoreSize:!0},defaultOption:{zlevel:0,z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bolder",color:"#333"},subtextStyle:{color:"#aaa"}}}),as({type:"title",render:function(t,e,n){if(this.group.removeAll(),t.get("show")){var i=this.group,r=t.getModel("textStyle"),o=t.getModel("subtextStyle"),a=t.get("textAlign"),s=t.get("textBaseline"),l=new kv({style:Ki({},r,{text:t.get("text"),textFill:r.getTextColor()},{disableBox:!0}),z2:10}),u=l.getBoundingRect(),h=t.get("subtext"),c=new kv({style:Ki({},o,{text:h,textFill:o.getTextColor(),y:u.height+t.get("itemGap"),textVerticalAlign:"top"},{disableBox:!0}),z2:10}),d=t.get("link"),f=t.get("sublink");l.silent=!d,c.silent=!f,d&&l.on("click",function(){window.open(d,"_"+t.get("target"))}),f&&c.on("click",function(){window.open(f,"_"+t.get("subtarget"))}),i.add(l),h&&i.add(c);var p=i.getBoundingRect(),g=t.getBoxLayoutParams();g.width=p.width,g.height=p.height;var m=Gr(g,{width:n.getWidth(),height:n.getHeight()},t.get("padding"));a||("middle"===(a=t.get("left")||t.get("right"))&&(a="center"),"right"===a?m.x+=m.width:"center"===a&&(m.x+=m.width/2)),s||("center"===(s=t.get("top")||t.get("bottom"))&&(s="middle"),"bottom"===s?m.y+=m.height:"middle"===s&&(m.y+=m.height/2),s=s||"top"),i.attr("position",[m.x,m.y]);var v={textAlign:a,textVerticalAlign:s};l.setStyle(v),c.setStyle(v),p=i.getBoundingRect();var y=m.margin,x=t.getItemStyle(["color","opacity"]);x.fill=t.get("backgroundColor");var _=new Fv({shape:{x:p.x-y[3],y:p.y-y[0],width:p.width+y[1]+y[3],height:p.height+y[0]+y[2],r:t.get("borderRadius")},style:x,silent:!0});Ei(_),i.add(_)}}});var jb=Or,Yb=Er,qb=os({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,n,i){this.mergeDefaultAndTheme(t,n),this.mergeOption(t,n,i.createdBySelf,!0)},isAnimationEnabled:function(){if(bp.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,n,i){var r=this.constructor,a=this.mainType+"Model";n||e.eachSeries(function(t){var n=t.get(this.mainType,!0),s=t[a];n&&n.data?(s?s.mergeOption(n,e,!0):(i&&oc(n),d(n.data,function(t){t instanceof Array?(oc(t[0]),oc(t[1])):oc(t)}),o(s=new r(n,this,e),{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),s.__hostSeries=t),t[a]=s):t[a]=null},this)},formatTooltip:function(t){var e=this.getData(),n=this.getRawValue(t),i=y(n)?f(n,jb).join(", "):jb(n),r=e.getName(t),o=Yb(this.name);return(null!=n||r)&&(o+="
          "),r&&(o+=Yb(r),null!=n&&(o+=" : ")),null!=n&&(o+=Yb(i)),o},getData:function(){return this._data},setData:function(t){this._data=t}});h(qb,sx),qb.extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{show:!0,position:"inside"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}}});var $b=l,Kb=v,Qb={min:Kb(lc,"min"),max:Kb(lc,"max"),average:Kb(lc,"average")},Jb=as({type:"marker",init:function(){this.markerGroupMap=N()},render:function(t,e,n){var i=this.markerGroupMap;i.each(function(t){t.__keep=!1});var r=this.type+"Model";e.eachSeries(function(t){var i=t[r];i&&this.renderSeries(t,i,e,n)},this),i.each(function(t){!t.__keep&&this.group.remove(t.group)},this)},renderSeries:function(){}});Jb.extend({type:"markPoint",updateTransform:function(t,e,n){e.eachSeries(function(t){var e=t.markPointModel;e&&(gc(e.getData(),t,n),this.markerGroupMap.get(t.id).updateLayout(e))},this)},renderSeries:function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,new Bl),u=mc(r,t,e);e.setData(u),gc(e.getData(),t,i),u.each(function(t){var n=u.getItemModel(t),i=n.getShallow("symbolSize");"function"==typeof i&&(i=i(e.getRawValue(t),e.getDataParams(t))),u.setItemVisual(t,{symbolSize:i,color:n.get("itemStyle.color")||a.getVisual("color"),symbol:n.getShallow("symbol")})}),l.updateData(u),this.group.add(l.group),u.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),l.__keep=!0,l.group.silent=e.get("silent")||t.get("silent")}}),Qa(function(t){t.markPoint=t.markPoint||{}}),qb.extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end"},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"}});var tM=Hv.prototype,eM=Wv.prototype,nM=Ai({type:"ec-line",style:{stroke:"#000",fill:null},shape:{x1:0,y1:0,x2:0,y2:0,percent:1,cpx1:null,cpy1:null},buildPath:function(t,e){(vc(e)?tM:eM).buildPath(t,e)},pointAt:function(t){return vc(this.shape)?tM.pointAt.call(this,t):eM.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,n=vc(e)?[e.x2-e.x1,e.y2-e.y1]:eM.tangentAt.call(this,t);return j(n,n)}}),iM=["fromSymbol","toSymbol"],rM=bc.prototype;rM.beforeUpdate=function(){var t=this,e=t.childOfName("fromSymbol"),n=t.childOfName("toSymbol"),i=t.childOfName("label");if(e||n||!i.ignore){for(var r=1,o=this.parent;o;)o.scale&&(r/=o.scale[0]),o=o.parent;var a=t.childOfName("line");if(this.__dirty||a.__dirty){var s=a.shape.percent,l=a.pointAt(0),u=a.pointAt(s),h=W([],u,l);if(j(h,h),e&&(e.attr("position",l),c=a.tangentAt(0),e.attr("rotation",Math.PI/2-Math.atan2(c[1],c[0])),e.attr("scale",[r*s,r*s])),n){n.attr("position",u);var c=a.tangentAt(1);n.attr("rotation",-Math.PI/2-Math.atan2(c[1],c[0])),n.attr("scale",[r*s,r*s])}if(!i.ignore){i.attr("position",u);var d,f,p,g=5*r;if("end"===i.__position)d=[h[0]*g+u[0],h[1]*g+u[1]],f=h[0]>.8?"left":h[0]<-.8?"right":"center",p=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";else if("middle"===i.__position){var m=s/2,v=[(c=a.tangentAt(m))[1],-c[0]],y=a.pointAt(m);v[1]>0&&(v[0]=-v[0],v[1]=-v[1]),d=[y[0]+v[0]*g,y[1]+v[1]*g],f="center",p="bottom";var x=-Math.atan2(c[1],c[0]);u[0].8?"right":h[0]<-.8?"left":"center",p=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";i.attr({style:{textVerticalAlign:i.__verticalAlign||p,textAlign:i.__textAlign||f},position:d,scale:[r,r]})}}}},rM._createLine=function(t,e,n){var i=t.hostModel,r=_c(t.getItemLayout(e));r.shape.percent=0,sr(r,{shape:{percent:1}},i,e),this.add(r);var o=new kv({name:"label"});this.add(o),d(iM,function(n){var i=xc(n,t,e);this.add(i),this[yc(n)]=t.getItemVisual(e,n)},this),this._updateCommonStl(t,e,n)},rM.updateData=function(t,e,n){var i=t.hostModel,r=this.childOfName("line"),o=t.getItemLayout(e),a={shape:{}};wc(a.shape,o),ar(r,a,i,e),d(iM,function(n){var i=t.getItemVisual(e,n),r=yc(n);if(this[r]!==i){this.remove(this.childOfName(n));var o=xc(n,t,e);this.add(o)}this[r]=i},this),this._updateCommonStl(t,e,n)},rM._updateCommonStl=function(t,e,n){var i=t.hostModel,r=this.childOfName("line"),o=n&&n.lineStyle,s=n&&n.hoverLineStyle,l=n&&n.labelModel,u=n&&n.hoverLabelModel;if(!n||t.hasItemOption){var h=t.getItemModel(e);o=h.getModel("lineStyle").getLineStyle(),s=h.getModel("emphasis.lineStyle").getLineStyle(),l=h.getModel("label"),u=h.getModel("emphasis.label")}var c=t.getItemVisual(e,"color"),f=D(t.getItemVisual(e,"opacity"),o.opacity,1);r.useStyle(a({strokeNoScale:!0,fill:"none",stroke:c,opacity:f},o)),r.hoverStyle=s,d(iM,function(t){var e=this.childOfName(t);e&&(e.setColor(c),e.setStyle({opacity:f}))},this);var p,g,m=l.getShallow("show"),v=u.getShallow("show"),y=this.childOfName("label");if((m||v)&&(p=c||"#000",null==(g=i.getFormattedLabel(e,"normal",t.dataType)))){var x=i.getRawValue(e);g=null==x?t.getName(e):isFinite(x)?wr(x):x}var _=m?g:null,w=v?T(i.getFormattedLabel(e,"emphasis",t.dataType),g):null,b=y.style;null==_&&null==w||(Ki(y.style,l,{text:_},{autoColor:p}),y.__textAlign=b.textAlign,y.__verticalAlign=b.textVerticalAlign,y.__position=l.get("position")||"middle"),y.hoverStyle=null!=w?{text:w,textFill:u.getTextColor(!0),fontStyle:u.getShallow("fontStyle"),fontWeight:u.getShallow("fontWeight"),fontSize:u.getShallow("fontSize"),fontFamily:u.getShallow("fontFamily")}:{text:null},y.ignore=!m&&!v,qi(this)},rM.highlight=function(){this.trigger("emphasis")},rM.downplay=function(){this.trigger("normal")},rM.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},rM.setLinePoints=function(t){var e=this.childOfName("line");wc(e.shape,t),e.dirty()},u(bc,Sg);var oM=Mc.prototype;oM.isPersistent=function(){return!0},oM.updateData=function(t){var e=this,n=e.group,i=e._lineData;e._lineData=t,i||n.removeAll();var r=Cc(t);t.diff(i).add(function(n){Sc(e,t,n,r)}).update(function(n,o){Ic(e,i,t,o,n,r)}).remove(function(t){n.remove(i.getItemGraphicEl(t))}).execute()},oM.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl(function(e,n){e.updateLayout(t,n)},this)},oM.incrementalPrepareUpdate=function(t){this._seriesScope=Cc(t),this._lineData=null,this.group.removeAll()},oM.incrementalUpdate=function(t,e){for(var n=t.start;n=0&&"number"==typeof h&&(h=+h.toFixed(Math.min(m,20))),p.coord[d]=g.coord[d]=h,a=[p,g,{type:l,valueIndex:a.valueIndex,value:h}]}return a=[uc(t,a[0]),uc(t,a[1]),o({},a[2])],a[2].type=a[2].type||"",i(a[2],a[0]),i(a[2],a[1]),a};Jb.extend({type:"markLine",updateTransform:function(t,e,n){e.eachSeries(function(t){var e=t.markLineModel;if(e){var i=e.getData(),r=e.__from,o=e.__to;r.each(function(e){Lc(r,e,!0,t,n),Lc(o,e,!1,t,n)}),i.each(function(t){i.setItemLayout(t,[r.getItemLayout(t),o.getItemLayout(t)])}),this.markerGroupMap.get(t.id).updateLayout()}},this)},renderSeries:function(t,e,n,i){function r(e,n,r){var o=e.getItemModel(n);Lc(e,n,r,t,i),e.setItemVisual(n,{symbolSize:o.get("symbolSize")||g[r?0:1],symbol:o.get("symbol",!0)||p[r?0:1],color:o.get("itemStyle.color")||s.getVisual("color")})}var o=t.coordinateSystem,a=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(a)||l.set(a,new Mc);this.group.add(u.group);var h=Oc(o,t,e),c=h.from,d=h.to,f=h.line;e.__from=c,e.__to=d,e.setData(f);var p=e.get("symbol"),g=e.get("symbolSize");y(p)||(p=[p,p]),"number"==typeof g&&(g=[g,g]),h.from.each(function(t){r(c,t,!0),r(d,t,!1)}),f.each(function(t){var e=f.getItemModel(t).get("lineStyle.color");f.setItemVisual(t,{color:e||c.getItemVisual(t,"color")}),f.setItemLayout(t,[c.getItemLayout(t),d.getItemLayout(t)]),f.setItemVisual(t,{fromSymbolSize:c.getItemVisual(t,"symbolSize"),fromSymbol:c.getItemVisual(t,"symbol"),toSymbolSize:d.getItemVisual(t,"symbolSize"),toSymbol:d.getItemVisual(t,"symbol")})}),u.updateData(f),h.line.eachItemGraphicEl(function(t,n){t.traverse(function(t){t.dataModel=e})}),u.__keep=!0,u.group.silent=e.get("silent")||t.get("silent")}}),Qa(function(t){t.markLine=t.markLine||{}}),qb.extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}}});var sM=function(t,e,n,i){var o=uc(t,i[0]),a=uc(t,i[1]),s=C,l=o.coord,u=a.coord;l[0]=s(l[0],-1/0),l[1]=s(l[1],-1/0),u[0]=s(u[0],1/0),u[1]=s(u[1],1/0);var h=r([{},o,a]);return h.coord=[o.coord,a.coord],h.x0=o.x,h.y0=o.y,h.x1=a.x,h.y1=a.y,h},lM=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];Jb.extend({type:"markArea",updateTransform:function(t,e,n){e.eachSeries(function(t){var e=t.markAreaModel;if(e){var i=e.getData();i.each(function(e){var r=f(lM,function(r){return Rc(i,e,r,t,n)});i.setItemLayout(e,r),i.getItemGraphicEl(e).setShape("points",r)})}},this)},renderSeries:function(t,e,n,i){var r=t.coordinateSystem,o=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(o)||l.set(o,{group:new Sg});this.group.add(u.group),u.__keep=!0;var h=Bc(r,t,e);e.setData(h),h.each(function(e){h.setItemLayout(e,f(lM,function(n){return Rc(h,e,n,t,i)})),h.setItemVisual(e,{color:s.getVisual("color")})}),h.diff(u.__data).add(function(t){var e=new Bv({shape:{points:h.getItemLayout(t)}});h.setItemGraphicEl(t,e),u.group.add(e)}).update(function(t,n){var i=u.__data.getItemGraphicEl(n);ar(i,{shape:{points:h.getItemLayout(t)}},e,t),u.group.add(i),h.setItemGraphicEl(t,i)}).remove(function(t){var e=u.__data.getItemGraphicEl(t);u.group.remove(e)}).execute(),h.eachItemGraphicEl(function(t,n){var i=h.getItemModel(n),r=i.getModel("label"),o=i.getModel("emphasis.label"),s=h.getItemVisual(n,"color");t.useStyle(a(i.getModel("itemStyle").getItemStyle(),{fill:Pt(s,.4),stroke:s})),t.hoverStyle=i.getModel("emphasis.itemStyle").getItemStyle(),$i(t.style,t.hoverStyle,r,o,{labelFetcher:e,labelDataIndex:n,defaultText:h.getName(n)||"",isRectText:!0,autoColor:s}),qi(t,{}),t.dataModel=e}),u.__data=h,u.group.silent=e.get("silent")||t.get("silent")}}),Qa(function(t){t.markArea=t.markArea||{}}),Iy.registerSubTypeDefaulter("dataZoom",function(){return"slider"});var uM=["cartesian2d","polar","singleAxis"],hM=function(t,e){var n=f(t=t.slice(),Fr),i=f(e=(e||[]).slice(),Fr);return function(r,o){d(t,function(t,a){for(var s={name:t,capital:n[a]},l=0;l=a[0]&&t<=a[1]}if(t===this._dataZoomModel){var i=this._dimName,r=this.getTargetSeriesModels(),o=t.get("filterMode"),a=this._valueWindow;"none"!==o&&cM(r,function(t){var e=t.getData(),r=e.mapDimension(i,!0);"weakFilter"===o?e.filterSelf(function(t){for(var n,i,o,s=0;sa[1];if(u&&!h&&!c)return!0;u&&(o=!0),h&&(n=!0),c&&(i=!0)}return o&&n&&i}):cM(r,function(i){if("empty"===o)t.setData(e.map(i,function(t){return n(t)?t:NaN}));else{var r={};r[i]=a,e.selectRange(r)}}),cM(r,function(t){e.setApproximateExtent(a,t)})})}}};var pM=d,gM=hM,mM=os({type:"dataZoom",dependencies:["xAxis","yAxis","zAxis","radiusAxis","angleAxis","singleAxis","series"],defaultOption:{zlevel:0,z:4,orient:null,xAxisIndex:null,yAxisIndex:null,filterMode:"filter",throttle:null,start:0,end:100,startValue:null,endValue:null,minSpan:null,maxSpan:null,minValueSpan:null,maxValueSpan:null,rangeMode:null},init:function(t,e,n){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var i=Uc(t);this.mergeDefaultAndTheme(t,n),this.doInit(i)},mergeOption:function(t){var e=Uc(t);i(this.option,t,!0),this.doInit(e)},doInit:function(t){var e=this.option;bp.canvasSupported||(e.realtime=!1),this._setDefaultThrottle(t),Xc(this,t),pM([["start","startValue"],["end","endValue"]],function(t,n){"value"===this._rangePropMode[n]&&(e[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis(function(e,n,i,r){var o=this.dependentModels[e.axis][n],a=o.__dzAxisProxy||(o.__dzAxisProxy=new fM(e.name,n,this,r));t[e.name+"_"+n]=a},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();gM(function(e){var n=e.axisIndex;t[n]=xn(t[n])},this),"axisIndex"===e?this._autoSetAxisIndex():"orient"===e&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this.option,e=!1;gM(function(n){null!=t[n.axisIndex]&&(e=!0)},this);var n=t.orient;return null==n&&e?"orient":e?void 0:(null==n&&(t.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get("orient",!0),n=this.option,i=this.dependentModels;if(t){var r="vertical"===e?"y":"x";i[r+"Axis"].length?(n[r+"AxisIndex"]=[0],t=!1):pM(i.singleAxis,function(i){t&&i.get("orient",!0)===e&&(n.singleAxisIndex=[i.componentIndex],t=!1)})}t&&gM(function(e){if(t){var i=[],r=this.dependentModels[e.axis];if(r.length&&!i.length)for(var o=0,a=r.length;o0?100:20}},getFirstTargetAxisModel:function(){var t;return gM(function(e){if(null==t){var n=this.get(e.axisIndex);n.length&&(t=this.dependentModels[e.axis][n[0]])}},this),t},eachTargetAxis:function(t,e){var n=this.ecModel;gM(function(i){pM(this.get(i.axisIndex),function(r){t.call(e,i,r,this,n)},this)},this)},getAxisProxy:function(t,e){return this._axisProxies[t+"_"+e]},getAxisModel:function(t,e){var n=this.getAxisProxy(t,e);return n&&n.getAxisModel()},setRawRange:function(t,e){var n=this.option;pM([["start","startValue"],["end","endValue"]],function(e){null==t[e[0]]&&null==t[e[1]]||(n[e[0]]=t[e[0]],n[e[1]]=t[e[1]])},this),!e&&Xc(this,t)},getPercentRange:function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},getValueRange:function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var n=this.findRepresentativeAxisProxy();return n?n.getDataValueWindow():void 0},findRepresentativeAxisProxy:function(t){if(t)return t.__dzAxisProxy;var e=this._axisProxies;for(var n in e)if(e.hasOwnProperty(n)&&e[n].hostedBy(this))return e[n];for(var n in e)if(e.hasOwnProperty(n)&&!e[n].hostedBy(this))return e[n]},getRangePropMode:function(){return this._rangePropMode.slice()}}),vM=dx.extend({type:"dataZoom",render:function(t,e,n,i){this.dataZoomModel=t,this.ecModel=e,this.api=n},getTargetCoordInfo:function(){function t(t,e,n,i){for(var r,o=0;oo&&(e[1-i]=e[i]+h.sign*o),e}),xM=Fv,_M=xr,wM=br,bM=m,MM=d,SM="horizontal",IM=5,CM=["line","bar","candlestick","scatter"],TM=vM.extend({type:"dataZoom.slider",init:function(t,e){this._displayables={},this._orient,this._range,this._handleEnds,this._size,this._handleWidth,this._handleHeight,this._location,this._dragging,this._dataShadowInfo,this.api=e},render:function(t,e,n,i){TM.superApply(this,"render",arguments),ha(this,"_dispatchZoomAction",this.dataZoomModel.get("throttle"),"fixRate"),this._orient=t.get("orient"),!1!==this.dataZoomModel.get("show")?(i&&"dataZoom"===i.type&&i.from===this.uid||this._buildView(),this._updateView()):this.group.removeAll()},remove:function(){TM.superApply(this,"remove",arguments),ca(this,"_dispatchZoomAction")},dispose:function(){TM.superApply(this,"dispose",arguments),ca(this,"_dispatchZoomAction")},_buildView:function(){var t=this.group;t.removeAll(),this._resetLocation(),this._resetInterval();var e=this._displayables.barGroup=new Sg;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(e),this._positionGroup()},_resetLocation:function(){var t=this.dataZoomModel,e=this.api,n=this._findCoordRect(),i={width:e.getWidth(),height:e.getHeight()},r=this._orient===SM?{right:i.width-n.x-n.width,top:i.height-30-7,width:n.width,height:30}:{right:7,top:n.y,width:30,height:n.height},o=Ur(t.option);d(["right","top","width","height"],function(t){"ph"===o[t]&&(o[t]=r[t])});var a=Gr(o,i,t.padding);this._location={x:a.x,y:a.y},this._size=[a.width,a.height],"vertical"===this._orient&&this._size.reverse()},_positionGroup:function(){var t=this.group,e=this._location,n=this._orient,i=this.dataZoomModel.getFirstTargetAxisModel(),r=i&&i.get("inverse"),o=this._displayables.barGroup,a=(this._dataShadowInfo||{}).otherAxisInverse;o.attr(n!==SM||r?n===SM&&r?{scale:a?[-1,1]:[-1,-1]}:"vertical"!==n||r?{scale:a?[-1,-1]:[-1,1],rotation:Math.PI/2}:{scale:a?[1,-1]:[1,1],rotation:Math.PI/2}:{scale:a?[1,1]:[1,-1]});var s=t.getBoundingRect([o]);t.attr("position",[e.x-s.x,e.y-s.y])},_getViewExtent:function(){return[0,this._size[0]]},_renderBackground:function(){var t=this.dataZoomModel,e=this._size,n=this._displayables.barGroup;n.add(new xM({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40})),n.add(new xM({shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:"transparent"},z2:0,onclick:m(this._onClickPanelClick,this)}))},_renderDataShadow:function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(t){var e=this._size,n=t.series,i=n.getRawData(),r=n.getShadowDim?n.getShadowDim():t.otherDim;if(null!=r){var o=i.getDataExtent(r),s=.3*(o[1]-o[0]);o=[o[0]-s,o[1]+s];var l,u=[0,e[1]],h=[0,e[0]],c=[[e[0],0],[0,0]],d=[],f=h[1]/(i.count()-1),p=0,g=Math.round(i.count()/e[0]);i.each([r],function(t,e){if(g>0&&e%g)p+=f;else{var n=null==t||isNaN(t)||""===t,i=n?0:_M(t,o,u,!0);n&&!l&&e?(c.push([c[c.length-1][0],0]),d.push([d[d.length-1][0],0])):!n&&l&&(c.push([p,0]),d.push([p,0])),c.push([p,i]),d.push([p,i]),p+=f,l=n}});var m=this.dataZoomModel;this._displayables.barGroup.add(new Bv({shape:{points:c},style:a({fill:m.get("dataBackgroundColor")},m.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new Vv({shape:{points:d},style:m.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var n,i=this.ecModel;return t.eachTargetAxis(function(r,o){d(t.getAxisProxy(r.name,o).getTargetSeriesModels(),function(t){if(!(n||!0!==e&&l(CM,t.get("type"))<0)){var a,s=i.getComponent(r.axis,o).axis,u=qc(r.name),h=t.coordinateSystem;null!=u&&h.getOtherAxis&&(a=h.getOtherAxis(s).inverse),u=t.getData().mapDimension(u),n={thisAxis:s,series:t,thisDim:r.name,otherDim:u,otherAxisInverse:a}}},this)},this),n}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],n=t.handleLabels=[],i=this._displayables.barGroup,r=this._size,o=this.dataZoomModel;i.add(t.filler=new xM({draggable:!0,cursor:$c(this._orient),drift:bM(this._onDragMove,this,"all"),onmousemove:function(t){tm(t.event)},ondragstart:bM(this._showDataInfo,this,!0),ondragend:bM(this._onDragEnd,this),onmouseover:bM(this._showDataInfo,this,!0),onmouseout:bM(this._showDataInfo,this,!1),style:{fill:o.get("fillerColor"),textPosition:"inside"}})),i.add(new xM(Ei({silent:!0,shape:{x:0,y:0,width:r[0],height:r[1]},style:{stroke:o.get("dataBackgroundColor")||o.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}}))),MM([0,1],function(t){var r=fr(o.get("handleIcon"),{cursor:$c(this._orient),draggable:!0,drift:bM(this._onDragMove,this,t),onmousemove:function(t){tm(t.event)},ondragend:bM(this._onDragEnd,this),onmouseover:bM(this._showDataInfo,this,!0),onmouseout:bM(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),a=r.getBoundingRect();this._handleHeight=_r(o.get("handleSize"),this._size[1]),this._handleWidth=a.width/a.height*this._handleHeight,r.setStyle(o.getModel("handleStyle").getItemStyle());var s=o.get("handleColor");null!=s&&(r.style.fill=s),i.add(e[t]=r);var l=o.textStyleModel;this.group.add(n[t]=new kv({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",textFill:l.getTextColor(),textFont:l.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[_M(t[0],[0,100],e,!0),_M(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var n=this.dataZoomModel,i=this._handleEnds,r=this._getViewExtent(),o=n.findRepresentativeAxisProxy().getMinMaxSpan(),a=[0,100];yM(e,i,r,n.get("zoomLock")?"all":t,null!=o.minSpan?_M(o.minSpan,a,r,!0):null,null!=o.maxSpan?_M(o.maxSpan,a,r,!0):null);var s=this._range,l=this._range=wM([_M(i[0],r,a,!0),_M(i[1],r,a,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},_updateView:function(t){var e=this._displayables,n=this._handleEnds,i=wM(n.slice()),r=this._size;MM([0,1],function(t){var i=e.handles[t],o=this._handleHeight;i.attr({scale:[o/2,o/2],position:[n[t],r[1]/2-o/2]})},this),e.filler.setShape({x:i[0],y:0,width:i[1]-i[0],height:r[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=lr(i.handles[t].parent,this.group),n=hr(0===t?"right":"left",e),s=this._handleWidth/2+IM,l=ur([c[t]+(0===t?-s:s),this._size[1]/2],e);r[t].setStyle({x:l[0],y:l[1],textVerticalAlign:o===SM?"middle":n,textAlign:o===SM?n:"center",text:a[t]})}var n=this.dataZoomModel,i=this._displayables,r=i.handleLabels,o=this._orient,a=["",""];if(n.get("showDetail")){var s=n.findRepresentativeAxisProxy();if(s){var l=s.getAxisModel().axis,u=this._range,h=t?s.calculateDataWindow({start:u[0],end:u[1]}).valueWindow:s.getDataValueWindow();a=[this._formatLabel(h[0],l),this._formatLabel(h[1],l)]}}var c=wM(this._handleEnds.slice());e.call(this,0),e.call(this,1)},_formatLabel:function(t,e){var n=this.dataZoomModel,i=n.get("labelFormatter"),r=n.get("labelPrecision");null!=r&&"auto"!==r||(r=e.getPixelPrecision());var o=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(r,20));return x(i)?i(t,o):_(i)?i.replace("{value}",o):o},_showDataInfo:function(t){t=this._dragging||t;var e=this._displayables.handleLabels;e[0].attr("invisible",!t),e[1].attr("invisible",!t)},_onDragMove:function(t,e,n){this._dragging=!0;var i=ur([e,n],this._displayables.barGroup.getLocalTransform(),!0),r=this._updateInterval(t,i[0]),o=this.dataZoomModel.get("realtime");this._updateView(!o),r&&o&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),!this.dataZoomModel.get("realtime")&&this._dispatchZoomAction()},_onClickPanelClick:function(t){var e=this._size,n=this._displayables.barGroup.transformCoordToLocal(t.offsetX,t.offsetY);if(!(n[0]<0||n[0]>e[0]||n[1]<0||n[1]>e[1])){var i=this._handleEnds,r=(i[0]+i[1])/2,o=this._updateInterval("all",n[0]-r);this._updateView(),o&&this._dispatchZoomAction()}},_dispatchZoomAction:function(){var t=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,start:t[0],end:t[1]})},_findCoordRect:function(){var t;if(MM(this.getTargetCoordInfo(),function(e){if(!t&&e.length){var n=e[0].model.coordinateSystem;t=n.getRect&&n.getRect()}}),!t){var e=this.api.getWidth(),n=this.api.getHeight();t={x:.2*e,y:.2*n,width:.6*e,height:.6*n}}return t}});mM.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,preventDefaultMouseMove:!0}});var DM="\0_ec_interaction_mutex";ts({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),h(ed,Zp);var AM=v,kM="\0_ec_dataZoom_roams",PM=m,LM=vM.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,n,i){LM.superApply(this,"render",arguments),this._range=t.getPercentRange(),d(this.getTargetCoordInfo(),function(e,i){var r=f(e,function(t){return cd(t.model)});d(e,function(e){var o=e.model,a=t.option;ud(n,{coordId:cd(o),allCoordIds:r,containsPoint:function(t,e,n){return o.coordinateSystem.containPoint([e,n])},dataZoomId:t.id,throttleRate:t.get("throttle",!0),panGetRange:PM(this._onPan,this,e,i),zoomGetRange:PM(this._onZoom,this,e,i),zoomLock:a.zoomLock,disabled:a.disabled,roamControllerOpt:{zoomOnMouseWheel:a.zoomOnMouseWheel,moveOnMouseMove:a.moveOnMouseMove,preventDefaultMouseMove:a.preventDefaultMouseMove}})},this)},this)},dispose:function(){hd(this.api,this.dataZoomModel.id),LM.superApply(this,"dispose",arguments),this._range=null},_onPan:function(t,e,n,i,r,o,a,s,l){var u=this._range,h=u.slice(),c=t.axisModels[0];if(c){var d=OM[e]([o,a],[s,l],c,n,t),f=d.signal*(h[1]-h[0])*d.pixel/d.pixelLength;return yM(f,h,[0,100],"all"),this._range=h,u[0]!==h[0]||u[1]!==h[1]?h:void 0}},_onZoom:function(t,e,n,i,r,o){var a=this._range,s=a.slice(),l=t.axisModels[0];if(l){var u=OM[e](null,[r,o],l,n,t),h=(u.signal>0?u.pixelStart+u.pixelLength-u.pixel:u.pixel-u.pixelStart)/u.pixelLength*(s[1]-s[0])+s[0];i=Math.max(1/i,0),s[0]=(s[0]-h)*i+h,s[1]=(s[1]-h)*i+h;var c=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return yM(0,s,[0,100],0,c.minSpan,c.maxSpan),this._range=s,a[0]!==s[0]||a[1]!==s[1]?s:void 0}}}),OM={grid:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem.getRect();return t=t||[0,0],"x"===o.dim?(a.pixel=e[0]-t[0],a.pixelLength=s.width,a.pixelStart=s.x,a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=s.height,a.pixelStart=s.y,a.signal=o.inverse?-1:1),a},polar:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===n.mainType?(a.pixel=e[0]-t[0],a.pixelLength=l[1]-l[0],a.pixelStart=l[0],a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=u[1]-u[0],a.pixelStart=u[0],a.signal=o.inverse?-1:1),a},singleAxis:function(t,e,n,i,r){var o=n.axis,a=r.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===o.orient?(s.pixel=e[0]-t[0],s.pixelLength=a.width,s.pixelStart=a.x,s.signal=o.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=a.height,s.pixelStart=a.y,s.signal=o.inverse?-1:1),s}};Ja({getTargetSeries:function(t){var e=N();return t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,n,i){d(i.getAxisProxy(t.name,n).getTargetSeriesModels(),function(t){e.set(t.uid,t)})})}),e},modifyOutputEnd:!0,overallReset:function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,n,i){i.getAxisProxy(t.name,n).reset(i,e)}),t.eachTargetAxis(function(t,n,i){i.getAxisProxy(t.name,n).filterData(i,e)})}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),n=e.getDataPercentWindow(),i=e.getDataValueWindow();t.setRawRange({start:n[0],end:n[1],startValue:i[0],endValue:i[1]},!0)})}}),ts("dataZoom",function(t,e){var n=Fc(m(e.eachComponent,e,"dataZoom"),hM,function(t,e){return t.get(e.axisIndex)}),i=[];e.eachComponent({mainType:"dataZoom",query:t},function(t,e){i.push.apply(i,n(t).nodes)}),d(i,function(e,n){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})});var zM={},EM=os({type:"toolbox",layoutMode:{type:"box",ignoreSize:!0},optionUpdated:function(){EM.superApply(this,"optionUpdated",arguments),d(this.option.feature,function(t,e){var n=wd(e);n&&i(t,n.defaultOption)})},defaultOption:{show:!0,z:6,zlevel:0,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}}}});as({type:"toolbox",render:function(t,e,n,i){function r(r,a){var s,c=h[r],d=h[a],f=new pr(l[c],t,t.ecModel);if(c&&!d){if(bd(c))s={model:f,onclick:f.option.onclick,featureName:c};else{var p=wd(c);if(!p)return;s=new p(f,e,n)}u[c]=s}else{if(!(s=u[d]))return;s.model=f,s.ecModel=e,s.api=n}c||!d?f.get("show")&&!s.unusable?(o(f,s,c),f.setIconStatus=function(t,e){var n=this.option,i=this.iconPaths;n.iconStatus=n.iconStatus||{},n.iconStatus[t]=e,i[t]&&i[t].trigger(e)},s.render&&s.render(f,e,n,i)):s.remove&&s.remove(e,n):s.dispose&&s.dispose(e,n)}function o(i,r,o){var l=i.getModel("iconStyle"),u=i.getModel("emphasis.iconStyle"),h=r.getIcons?r.getIcons():i.get("icon"),c=i.get("title")||{};if("string"==typeof h){var f=h,p=c;c={},(h={})[o]=f,c[o]=p}var g=i.iconPaths={};d(h,function(o,h){var d=fr(o,{},{x:-s/2,y:-s/2,width:s,height:s});d.setStyle(l.getItemStyle()),d.hoverStyle=u.getItemStyle(),qi(d),t.get("showTitle")&&(d.__title=c[h],d.on("mouseover",function(){var t=u.getItemStyle();d.setStyle({text:c[h],textPosition:t.textPosition||"bottom",textFill:t.fill||t.stroke||"#000",textAlign:t.textAlign||"center"})}).on("mouseout",function(){d.setStyle({textFill:null})})),d.trigger(i.get("iconStatus."+h)||"normal"),a.add(d),d.on("click",m(r.onclick,r,e,n,h)),g[h]=d})}var a=this.group;if(a.removeAll(),t.get("show")){var s=+t.get("itemSize"),l=t.get("feature")||{},u=this._features||(this._features={}),h=[];d(l,function(t,e){h.push(e)}),new hs(this._featureNames||[],h).add(r).update(r).remove(v(r,null)).execute(),this._featureNames=h,Jh(a,t,n),a.add(tc(a.getBoundingRect(),t)),a.eachChild(function(t){var e=t.__title,i=t.hoverStyle;if(i&&e){var r=ce(e,Ce(i)),o=t.position[0]+a.position[0],l=!1;t.position[1]+a.position[1]+s+r.height>n.getHeight()&&(i.textPosition="top",l=!0);var u=l?-5-r.height:s+8;o+r.width/2>n.getWidth()?(i.textPosition=["100%",u],i.textAlign="right"):o-r.width/2<0&&(i.textPosition=[0,u],i.textAlign="left")}})}},updateView:function(t,e,n,i){d(this._features,function(t){t.updateView&&t.updateView(t.model,e,n,i)})},remove:function(t,e){d(this._features,function(n){n.remove&&n.remove(t,e)}),this.group.removeAll()},dispose:function(t,e){d(this._features,function(n){n.dispose&&n.dispose(t,e)})}});var NM=Sx.toolbox.saveAsImage;Md.defaultOption={show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:NM.title,type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:NM.lang.slice()},Md.prototype.unusable=!bp.canvasSupported,Md.prototype.onclick=function(t,e){var n=this.model,i=n.get("name")||t.get("title.0.text")||"echarts",r=document.createElement("a"),o=n.get("type",!0)||"png";r.download=i+"."+o,r.target="_blank";var a=e.getConnectedDataURL({type:o,backgroundColor:n.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",excludeComponents:n.get("excludeComponents"),pixelRatio:n.get("pixelRatio")});if(r.href=a,"function"!=typeof MouseEvent||bp.browser.ie||bp.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var s=atob(a.split(",")[1]),l=s.length,u=new Uint8Array(l);l--;)u[l]=s.charCodeAt(l);var h=new Blob([u]);window.navigator.msSaveOrOpenBlob(h,i+"."+o)}else{var c=n.get("lang"),d='';window.open().document.write(d)}else{var f=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});r.dispatchEvent(f)}},_d("saveAsImage",Md);var RM=Sx.toolbox.magicType;Sd.defaultOption={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z",tiled:"M2.3,2.2h22.8V25H2.3V2.2z M35,2.2h22.8V25H35V2.2zM2.3,35h22.8v22.8H2.3V35z M35,35h22.8v22.8H35V35z"},title:n(RM.title),option:{},seriesIndex:{}};var BM=Sd.prototype;BM.getIcons=function(){var t=this.model,e=t.get("icon"),n={};return d(t.get("type"),function(t){e[t]&&(n[t]=e[t])}),n};var VM={line:function(t,e,n,r){if("bar"===t)return i({id:e,type:"line",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},r.get("option.line")||{},!0)},bar:function(t,e,n,r){if("line"===t)return i({id:e,type:"bar",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},r.get("option.bar")||{},!0)},stack:function(t,e,n,r){if("line"===t||"bar"===t)return i({id:e,stack:"__ec_magicType_stack__"},r.get("option.stack")||{},!0)},tiled:function(t,e,n,r){if("line"===t||"bar"===t)return i({id:e,stack:""},r.get("option.tiled")||{},!0)}},FM=[["line","bar"],["stack","tiled"]];BM.onclick=function(t,e,n){var i=this.model,r=i.get("seriesIndex."+n);if(VM[n]){var o={series:[]};d(FM,function(t){l(t,n)>=0&&d(t,function(t){i.setIconStatus(t,"normal")})}),i.setIconStatus(n,"emphasis"),t.eachComponent({mainType:"series",query:null==r?null:{seriesIndex:r}},function(e){var r=e.subType,s=e.id,l=VM[n](r,s,e,i);l&&(a(l,e.option),o.series.push(l));var u=e.coordinateSystem;if(u&&"cartesian2d"===u.type&&("line"===n||"bar"===n)){var h=u.getAxesByScale("ordinal")[0];if(h){var c=h.dim+"Axis",d=t.queryComponents({mainType:c,index:e.get(name+"Index"),id:e.get(name+"Id")})[0].componentIndex;o[c]=o[c]||[];for(var f=0;f<=d;f++)o[c][d]=o[c][d]||{};o[c][d].boundaryGap="bar"===n}}}),e.dispatchAction({type:"changeMagicType",currentType:n,newOption:o})}},ts({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),_d("magicType",Sd);var HM=Sx.toolbox.dataView,GM=new Array(60).join("-"),WM="\t",ZM=new RegExp("["+WM+"]+","g");zd.defaultOption={show:!0,readOnly:!1,optionToContent:null,contentToOption:null,icon:"M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",title:n(HM.title),lang:n(HM.lang),backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},zd.prototype.onclick=function(t,e){function n(){i.removeChild(o),x._dom=null}var i=e.getDom(),r=this.model;this._dom&&i.removeChild(this._dom);var o=document.createElement("div");o.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",o.style.backgroundColor=r.get("backgroundColor")||"#fff";var a=document.createElement("h4"),s=r.get("lang")||[];a.innerHTML=s[0]||r.get("title"),a.style.cssText="margin: 10px 20px;",a.style.color=r.get("textColor");var l=document.createElement("div"),u=document.createElement("textarea");l.style.cssText="display:block;width:100%;overflow:auto;";var h=r.get("optionToContent"),c=r.get("contentToOption"),d=Dd(t);if("function"==typeof h){var f=h(e.getOption());"string"==typeof f?l.innerHTML=f:S(f)&&l.appendChild(f)}else l.appendChild(u),u.readOnly=r.get("readOnly"),u.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",u.style.color=r.get("textColor"),u.style.borderColor=r.get("textareaBorderColor"),u.style.backgroundColor=r.get("textareaColor"),u.value=d.value;var p=d.meta,g=document.createElement("div");g.style.cssText="position:absolute;bottom:0;left:0;right:0;";var m="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",v=document.createElement("div"),y=document.createElement("div");m+=";background-color:"+r.get("buttonColor"),m+=";color:"+r.get("buttonTextColor");var x=this;on(v,"click",n),on(y,"click",function(){var t;try{t="function"==typeof c?c(l,e.getOption()):Od(u.value,p)}catch(t){throw n(),new Error("Data view format error "+t)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),n()}),v.innerHTML=s[1],y.innerHTML=s[2],y.style.cssText=m,v.style.cssText=m,!r.get("readOnly")&&g.appendChild(y),g.appendChild(v),on(u,"keydown",function(t){if(9===(t.keyCode||t.which)){var e=this.value,n=this.selectionStart,i=this.selectionEnd;this.value=e.substring(0,n)+WM+e.substring(i),this.selectionStart=this.selectionEnd=n+1,tm(t)}}),o.appendChild(a),o.appendChild(l),o.appendChild(g),l.style.height=i.clientHeight-80+"px",i.appendChild(o),this._dom=o},zd.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},zd.prototype.dispose=function(t,e){this.remove(t,e)},_d("dataView",zd),ts({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,e){var n=[];d(t.newOption.series,function(t){var i=e.getSeriesByName(t.name)[0];if(i){var r=i.get("data");n.push({name:t.name,data:Ed(t.data,r)})}else n.push(o({type:"scatter"},t))}),e.mergeOption(a({series:n},t.newOption))});var UM=v,XM=d,jM=f,YM=Math.min,qM=Math.max,$M=Math.pow,KM=1e4,QM=6,JM=6,tS="globalPan",eS={w:[0,0],e:[0,1],n:[1,0],s:[1,1]},nS={w:"ew",e:"ew",n:"ns",s:"ns",ne:"nesw",sw:"nesw",nw:"nwse",se:"nwse"},iS={brushStyle:{lineWidth:2,stroke:"rgba(0,0,0,0.3)",fill:"rgba(0,0,0,0.1)"},transformable:!0,brushMode:"single",removeOnClick:!1},rS=0;Nd.prototype={constructor:Nd,enableBrush:function(t){return this._brushType&&Bd(this),t.brushType&&Rd(this,t),this},setPanels:function(t){if(t&&t.length){var e=this._panels={};d(t,function(t){e[t.panelId]=n(t)})}else this._panels=null;return this},mount:function(t){t=t||{},this._enableGlobalPan=t.enableGlobalPan;var e=this.group;return this._zr.add(e),e.attr({position:t.position||[0,0],rotation:t.rotation||0,scale:t.scale||[1,1]}),this._transform=e.getLocalTransform(),this},eachCover:function(t,e){XM(this._covers,t,e)},updateCovers:function(t){function e(t,e){return(null!=t.id?t.id:o+e)+"-"+t.brushType}function r(e,n){var i=t[e];if(null!=n&&a[n]===u)s[e]=a[n];else{var r=s[e]=null!=n?(a[n].__brushOption=i,a[n]):Fd(l,Vd(l,i));Wd(l,r)}}t=f(t,function(t){return i(n(iS),t,!0)});var o="\0-brush-index-",a=this._covers,s=this._covers=[],l=this,u=this._creatingCover;return new hs(a,t,function(t,n){return e(t.__brushOption,n)},e).add(r).update(r).remove(function(t){a[t]!==u&&l.group.remove(a[t])}).execute(),this},unmount:function(){return this.enableBrush(!1),jd(this),this._zr.remove(this.group),this},dispose:function(){this.unmount(),this.off()}},h(Nd,Zp);var oS={mousedown:function(t){if(this._dragging)mf.call(this,t);else if(!t.target||!t.target.draggable){df(t);var e=this.group.transformCoordToLocal(t.offsetX,t.offsetY);this._creatingCover=null,(this._creatingPanel=Ud(this,t,e))&&(this._dragging=!0,this._track=[e.slice()])}},mousemove:function(t){var e=this.group.transformCoordToLocal(t.offsetX,t.offsetY);if(cf(this,t,e),this._dragging){df(t);var n=pf(this,t,e,!1);n&&Yd(this,n)}},mouseup:mf},aS={lineX:vf(0),lineY:vf(1),rect:{createCover:function(t,e){return Kd(UM(af,function(t){return t},function(t){return t}),t,e,["w","e","n","s","se","sw","ne","nw"])},getCreatingRange:function(t){var e=$d(t);return nf(e[1][0],e[1][1],e[0][0],e[0][1])},updateCoverShape:function(t,e,n,i){Qd(t,e,n,i)},updateCommon:Jd,contain:ff},polygon:{createCover:function(t,e){var n=new Sg;return n.add(new Vv({name:"main",style:ef(e),silent:!0})),n},getCreatingRange:function(t){return t},endCreating:function(t,e){e.remove(e.childAt(0)),e.add(new Bv({name:"main",draggable:!0,drift:UM(sf,t,e),ondragend:UM(Yd,t,{isEnd:!0})}))},updateCoverShape:function(t,e,n,i){e.childAt(0).setShape({points:uf(t,e,n)})},updateCommon:Jd,contain:ff}},sS={axisPointer:1,tooltip:1,brush:1},lS=d,uS=l,hS=v,cS=["dataToPoint","pointToData"],dS=["grid","xAxis","yAxis","geo","graph","polar","radiusAxis","angleAxis","bmap"],fS=Mf.prototype;fS.setOutputRanges=function(t,e){this.matchOutputRanges(t,e,function(t,e,n){if((t.coordRanges||(t.coordRanges=[])).push(e),!t.coordRange){t.coordRange=e;var i=vS[t.brushType](0,n,e);t.__rangeOffset={offset:yS[t.brushType](i.values,t.range,[1,1]),xyMinMax:i.xyMinMax}}})},fS.matchOutputRanges=function(t,e,n){lS(t,function(t){var i=this.findTargetInfo(t,e);i&&!0!==i&&d(i.coordSyses,function(i){var r=vS[t.brushType](1,i,t.range);n(t,r.values,i,e)})},this)},fS.setInputRanges=function(t,e){lS(t,function(t){var n=this.findTargetInfo(t,e);if(t.range=t.range||[],n&&!0!==n){t.panelId=n.panelId;var i=vS[t.brushType](0,n.coordSys,t.coordRange),r=t.__rangeOffset;t.range=r?yS[t.brushType](i.values,r.offset,Df(i.xyMinMax,r.xyMinMax)):i.values}},this)},fS.makePanelOpts=function(t,e){return f(this._targetInfoList,function(n){var i=n.getPanelRect();return{panelId:n.panelId,defaultBrushType:e&&e(n),clipPath:xf(i),isTargetByCursor:wf(i,t,n.coordSysModel),getLinearBrushOtherExtent:_f(i)}})},fS.controlSeries=function(t,e,n){var i=this.findTargetInfo(t,n);return!0===i||i&&uS(i.coordSyses,e.coordinateSystem)>=0},fS.findTargetInfo=function(t,e){for(var n=this._targetInfoList,i=If(e,t),r=0;r=0||uS(i,t.getAxis("y").model)>=0)&&o.push(t)}),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:o[0],coordSyses:o,getPanelRect:mS.grid,xAxisDeclared:a[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,e){lS(t.geoModels,function(t){var n=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:n,coordSyses:[n],getPanelRect:mS.geo})})}},gS=[function(t,e){var n=t.xAxisModel,i=t.yAxisModel,r=t.gridModel;return!r&&n&&(r=n.axis.grid.model),!r&&i&&(r=i.axis.grid.model),r&&r===e.gridModel},function(t,e){var n=t.geoModel;return n&&n===e.geoModel}],mS={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(lr(t)),e}},vS={lineX:hS(Cf,0),lineY:hS(Cf,1),rect:function(t,e,n){var i=e[cS[t]]([n[0][0],n[1][0]]),r=e[cS[t]]([n[0][1],n[1][1]]),o=[Sf([i[0],r[0]]),Sf([i[1],r[1]])];return{values:o,xyMinMax:o}},polygon:function(t,e,n){var i=[[1/0,-1/0],[1/0,-1/0]];return{values:f(n,function(n){var r=e[cS[t]](n);return i[0][0]=Math.min(i[0][0],r[0]),i[1][0]=Math.min(i[1][0],r[1]),i[0][1]=Math.max(i[0][1],r[0]),i[1][1]=Math.max(i[1][1],r[1]),r}),xyMinMax:i}}},yS={lineX:hS(Tf,0),lineY:hS(Tf,1),rect:function(t,e,n){return[[t[0][0]-n[0]*e[0][0],t[0][1]-n[0]*e[0][1]],[t[1][0]-n[1]*e[1][0],t[1][1]-n[1]*e[1][1]]]},polygon:function(t,e,n){return f(t,function(t,i){return[t[0]-n[0]*e[i][0],t[1]-n[1]*e[i][1]]})}},xS=d,_S="\0_ec_hist_store";mM.extend({type:"dataZoom.select"}),vM.extend({type:"dataZoom.select"});var wS=Sx.toolbox.dataZoom,bS=d,MS="\0_ec_\0toolbox-dataZoom_";Ef.defaultOption={show:!0,icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:n(wS.title)};var SS=Ef.prototype;SS.render=function(t,e,n,i){this.model=t,this.ecModel=e,this.api=n,Bf(t,e,this,i,n),Rf(t,e)},SS.onclick=function(t,e,n){IS[n].call(this)},SS.remove=function(t,e){this._brushController.unmount()},SS.dispose=function(t,e){this._brushController.dispose()};var IS={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(Pf(this.ecModel))}};SS._onBrush=function(t,e){function n(t,e,n){var a=e.getAxis(t),s=a.model,l=i(t,s,o),u=l.findRepresentativeAxisProxy(s).getMinMaxSpan();null==u.minValueSpan&&null==u.maxValueSpan||(n=yM(0,n.slice(),a.scale.getExtent(),0,u.minValueSpan,u.maxValueSpan)),l&&(r[l.id]={dataZoomId:l.id,startValue:n[0],endValue:n[1]})}function i(t,e,n){var i;return n.eachComponent({mainType:"dataZoom",subType:"select"},function(n){n.getAxisModel(t,e.componentIndex)&&(i=n)}),i}if(e.isEnd&&t.length){var r={},o=this.ecModel;this._brushController.updateCovers([]),new Mf(Nf(this.model.option),o,{include:["grid"]}).matchOutputRanges(t,o,function(t,e,i){if("cartesian2d"===i.type){var r=t.brushType;"rect"===r?(n("x",i,e[0]),n("y",i,e[1])):n({lineX:"x",lineY:"y"}[r],i,e)}}),kf(o,r),this._dispatchZoomAction(r)}},SS._dispatchZoomAction=function(t){var e=[];bS(t,function(t,i){e.push(n(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},_d("dataZoom",Ef),Qa(function(t){function e(t,e){if(e){var r=t+"Index",o=e[r];null==o||"all"==o||y(o)||(o=!1===o||"none"===o?[]:[o]),n(t,function(e,n){if(null==o||"all"==o||-1!==l(o,n)){var a={type:"select",$fromToolbox:!0,id:MS+t+n};a[r]=n,i.push(a)}})}}function n(e,n){var i=t[e];y(i)||(i=i?[i]:[]),bS(i,n)}if(t){var i=t.dataZoom||(t.dataZoom=[]);y(i)||(t.dataZoom=i=[i]);var r=t.toolbox;if(r&&(y(r)&&(r=r[0]),r&&r.feature)){var o=r.feature.dataZoom;e("xAxis",o),e("yAxis",o)}}});var CS=Sx.toolbox.restore;Vf.defaultOption={show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:CS.title},Vf.prototype.onclick=function(t,e,n){Lf(t),e.dispatchAction({type:"restore",from:this.uid})},_d("restore",Vf),ts({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")});var TS,DS="urn:schemas-microsoft-com:vml",AS="undefined"==typeof window?null:window,kS=!1,PS=AS&&AS.document;if(PS&&!bp.canvasSupported)try{!PS.namespaces.zrvml&&PS.namespaces.add("zrvml",DS),TS=function(t){return PS.createElement("')}}catch(t){TS=function(t){return PS.createElement("<"+t+' xmlns="'+DS+'" class="zrvml">')}}var LS=av.CMD,OS=Math.round,zS=Math.sqrt,ES=Math.abs,NS=Math.cos,RS=Math.sin,BS=Math.max;if(!bp.canvasSupported){var VS=21600,FS=VS/2,HS=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=VS+","+VS,t.coordorigin="0,0"},GS=function(t){return String(t).replace(/&/g,"&").replace(/"/g,""")},WS=function(t,e,n){return"rgb("+[t,e,n].join(",")+")"},ZS=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},US=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},XS=function(t,e,n){return 1e5*(parseFloat(t)||0)+1e3*(parseFloat(e)||0)+n},jS=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},YS=function(t,e,n){var i=St(e);n=+n,isNaN(n)&&(n=1),i&&(t.color=WS(i[0],i[1],i[2]),t.opacity=n*i[3])},qS=function(t){var e=St(t);return[WS(e[0],e[1],e[2]),e[3]]},$S=function(t,e,n){var i=e.fill;if(null!=i)if(i instanceof Xv){var r,o=0,a=[0,0],s=0,l=1,u=n.getBoundingRect(),h=u.width,c=u.height;if("linear"===i.type){r="gradient";var d=n.transform,f=[i.x*h,i.y*c],p=[i.x2*h,i.y2*c];d&&($(f,f,d),$(p,p,d));var g=p[0]-f[0],m=p[1]-f[1];(o=180*Math.atan2(g,m)/Math.PI)<0&&(o+=360),o<1e-6&&(o=0)}else{r="gradientradial";var f=[i.x*h,i.y*c],d=n.transform,v=n.scale,y=h,x=c;a=[(f[0]-u.x)/y,(f[1]-u.y)/x],d&&$(f,f,d),y/=v[0]*VS,x/=v[1]*VS;var _=BS(y,x);s=0/_,l=2*i.r/_-s}var w=i.colorStops.slice();w.sort(function(t,e){return t.offset-e.offset});for(var b=w.length,M=[],S=[],I=0;I=2){var D=M[0][0],A=M[1][0],k=M[0][1]*e.opacity,P=M[1][1]*e.opacity;t.type=r,t.method="none",t.focus="100%",t.angle=o,t.color=D,t.color2=A,t.colors=S.join(","),t.opacity=P,t.opacity2=k}"radial"===r&&(t.focusposition=a.join(","))}else YS(t,i,e.opacity)},KS=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof Xv||YS(t,e.stroke,e.opacity)},QS=function(t,e,n,i){var r="fill"==e,o=t.getElementsByTagName(e)[0];null!=n[e]&&"none"!==n[e]&&(r||!r&&n.lineWidth)?(t[r?"filled":"stroked"]="true",n[e]instanceof Xv&&US(t,o),o||(o=Ff(e)),r?$S(o,n,i):KS(o,n),ZS(t,o)):(t[r?"filled":"stroked"]="false",US(t,o))},JS=[[],[],[]],tI=function(t,e){var n,i,r,o,a,s,l=LS.M,u=LS.C,h=LS.L,c=LS.A,d=LS.Q,f=[],p=t.data,g=t.len();for(o=0;o.01?O&&(z+=.0125):Math.abs(E-D)<1e-4?O&&zT?x-=.0125:x+=.0125:O&&ED?y+=.0125:y-=.0125),f.push(N,OS(((T-A)*S+b)*VS-FS),",",OS(((D-k)*I+M)*VS-FS),",",OS(((T+A)*S+b)*VS-FS),",",OS(((D+k)*I+M)*VS-FS),",",OS((z*S+b)*VS-FS),",",OS((E*I+M)*VS-FS),",",OS((y*S+b)*VS-FS),",",OS((x*I+M)*VS-FS)),a=y,s=x;break;case LS.R:var R=JS[0],B=JS[1];R[0]=p[o++],R[1]=p[o++],B[0]=R[0]+p[o++],B[1]=R[1]+p[o++],e&&($(R,R,e),$(B,B,e)),R[0]=OS(R[0]*VS-FS),B[0]=OS(B[0]*VS-FS),R[1]=OS(R[1]*VS-FS),B[1]=OS(B[1]*VS-FS),f.push(" m ",R[0],",",R[1]," l ",B[0],",",R[1]," l ",B[0],",",B[1]," l ",R[0],",",B[1]);break;case LS.Z:f.push(" x ")}if(n>0){f.push(i);for(var V=0;V100&&(rI=0,iI={});var n,i=oI.style;try{i.font=t,n=i.fontFamily.split(",")[0]}catch(t){}e={style:i.fontStyle||"normal",variant:i.fontVariant||"normal",weight:i.fontWeight||"normal",size:0|parseFloat(i.fontSize||12),family:n||"Microsoft YaHei"},iI[t]=e,rI++}return e};!function(t,e){Zg[t]=e}("measureText",function(t,e){var n=PS;nI||((nI=n.createElement("div")).style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",PS.body.appendChild(nI));try{nI.style.font=e}catch(t){}return nI.innerHTML="",nI.appendChild(n.createTextNode(t)),{width:nI.offsetWidth}});for(var sI=new Xt,lI=[Yg,Xe,je,xi,kv],uI=0;uI=r&&u+1>=o){for(var h=[],c=0;c=r&&c+1>=o)return ip(0,s.components);l[n]=s}else l[n]=void 0}a++}();if(d)return d}},pushComponent:function(t,e,n){var i=t[t.length-1];i&&i.added===e&&i.removed===n?t[t.length-1]={count:i.count+1,added:e,removed:n}:t.push({count:1,added:e,removed:n})},extractCommon:function(t,e,n,i){for(var r=e.length,o=n.length,a=t.newPos,s=a-i,l=0;a+1=0;--i)if(e[i]===t)return!0;return!1}),n):null:n[0]},op.prototype.update=function(t,e){if(t){var n=this.getDefs(!1);if(t[this._domName]&&n.contains(t[this._domName]))"function"==typeof e&&e(t);else{var i=this.add(t);i&&(t[this._domName]=i)}}},op.prototype.addDom=function(t){this.getDefs(!0).appendChild(t)},op.prototype.removeDom=function(t){var e=this.getDefs(!1);e&&t[this._domName]&&(e.removeChild(t[this._domName]),t[this._domName]=null)},op.prototype.getDoms=function(){var t=this.getDefs(!1);if(!t)return[];var e=[];return d(this._tagNames,function(n){var i=t.getElementsByTagName(n);e=e.concat([].slice.call(i))}),e},op.prototype.markAllUnused=function(){var t=this;d(this.getDoms(),function(e){e[t._markLabel]="0"})},op.prototype.markUsed=function(t){t&&(t[this._markLabel]="1")},op.prototype.removeUnused=function(){var t=this.getDefs(!1);if(t){var e=this;d(this.getDoms(),function(n){"1"!==n[e._markLabel]&&t.removeChild(n)})}},op.prototype.getSvgProxy=function(t){return t instanceof xi?bI:t instanceof je?MI:t instanceof kv?SI:bI},op.prototype.getTextSvgElement=function(t){return t.__textSvgEl},op.prototype.getSvgElement=function(t){return t.__svgEl},u(ap,op),ap.prototype.addWithoutUpdate=function(t,e){if(e&&e.style){var n=this;d(["fill","stroke"],function(i){if(e.style[i]&&("linear"===e.style[i].type||"radial"===e.style[i].type)){var r,o=e.style[i],a=n.getDefs(!0);o._dom?(r=o._dom,a.contains(o._dom)||n.addDom(r)):r=n.add(o),n.markUsed(e);var s=r.getAttribute("id");t.setAttribute(i,"url(#"+s+")")}})}},ap.prototype.add=function(t){var e;if("linear"===t.type)e=this.createElement("linearGradient");else{if("radial"!==t.type)return yg("Illegal gradient type."),null;e=this.createElement("radialGradient")}return t.id=t.id||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-gradient-"+t.id),this.updateDom(t,e),this.addDom(e),e},ap.prototype.update=function(t){var e=this;op.prototype.update.call(this,t,function(){var n=t.type,i=t._dom.tagName;"linear"===n&&"linearGradient"===i||"radial"===n&&"radialGradient"===i?e.updateDom(t,t._dom):(e.removeDom(t),e.add(t))})},ap.prototype.updateDom=function(t,e){if("linear"===t.type)e.setAttribute("x1",t.x),e.setAttribute("y1",t.y),e.setAttribute("x2",t.x2),e.setAttribute("y2",t.y2);else{if("radial"!==t.type)return void yg("Illegal gradient type.");e.setAttribute("cx",t.x),e.setAttribute("cy",t.y),e.setAttribute("r",t.r)}t.global?e.setAttribute("gradientUnits","userSpaceOnUse"):e.setAttribute("gradientUnits","objectBoundingBox"),e.innerHTML="";for(var n=t.colorStops,i=0,r=n.length;i0){var i,r,o=this.getDefs(!0),a=e[0],s=n?"_textDom":"_dom";a[s]?(r=a[s].getAttribute("id"),i=a[s],o.contains(i)||o.appendChild(i)):(r="zr"+this._zrId+"-clip-"+this.nextId,++this.nextId,(i=this.createElement("clipPath")).setAttribute("id",r),o.appendChild(i),a[s]=i);var l=this.getSvgProxy(a);if(a.transform&&a.parent.invTransform&&!n){var u=Array.prototype.slice.call(a.transform);st(a.transform,a.parent.invTransform,a.transform),l.brush(a),a.transform=u}else l.brush(a);var h=this.getSvgElement(a);i.innerHTML="",i.appendChild(h.cloneNode()),t.setAttribute("clip-path","url(#"+r+")"),e.length>1&&this.updateDom(i,e.slice(1),n)}else t&&t.setAttribute("clip-path","none")},sp.prototype.markUsed=function(t){var e=this;t.__clipPaths&&t.__clipPaths.length>0&&d(t.__clipPaths,function(t){t._dom&&op.prototype.markUsed.call(e,t._dom),t._textDom&&op.prototype.markUsed.call(e,t._textDom)})},u(lp,op),lp.prototype.addWithoutUpdate=function(t,e){if(e&&up(e.style)){var n,i=e.style;i._shadowDom?(n=i._shadowDom,this.getDefs(!0).contains(i._shadowDom)||this.addDom(n)):n=this.add(e),this.markUsed(e);var r=n.getAttribute("id");t.style.filter="url(#"+r+")"}},lp.prototype.add=function(t){var e=this.createElement("filter"),n=t.style;return n._shadowDomId=n._shadowDomId||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-shadow-"+n._shadowDomId),this.updateDom(t,e),this.addDom(e),e},lp.prototype.update=function(t,e){var n=e.style;if(up(n)){var i=this;op.prototype.update.call(this,e,function(t){i.updateDom(e,t._shadowDom)})}else this.remove(t,n)},lp.prototype.remove=function(t,e){null!=e._shadowDomId&&(this.removeDom(e),t.style.filter="")},lp.prototype.updateDom=function(t,e){var n=e.getElementsByTagName("feDropShadow");n=0===n.length?this.createElement("feDropShadow"):n[0];var i,r,o,a,s=t.style,l=t.scale?t.scale[0]||1:1,u=t.scale?t.scale[1]||1:1;if(s.shadowBlur||s.shadowOffsetX||s.shadowOffsetY)i=s.shadowOffsetX||0,r=s.shadowOffsetY||0,o=s.shadowBlur,a=s.shadowColor;else{if(!s.textShadowBlur)return void this.removeDom(e,s);i=s.textShadowOffsetX||0,r=s.textShadowOffsetY||0,o=s.textShadowBlur,a=s.textShadowColor}n.setAttribute("dx",i/l),n.setAttribute("dy",r/u),n.setAttribute("flood-color",a);var h=o/2/l+" "+o/2/u;n.setAttribute("stdDeviation",h),e.setAttribute("x","-100%"),e.setAttribute("y","-100%"),e.setAttribute("width",Math.ceil(o/2*200)+"%"),e.setAttribute("height",Math.ceil(o/2*200)+"%"),e.appendChild(n),s._shadowDom=e},lp.prototype.markUsed=function(t){var e=t.style;e&&e._shadowDom&&op.prototype.markUsed.call(this,e._shadowDom)};var AI=function(t,e,n,i){this.root=t,this.storage=e,this._opts=n=o({},n||{});var r=Uf("svg");r.setAttribute("xmlns","http://www.w3.org/2000/svg"),r.setAttribute("version","1.1"),r.setAttribute("baseProfile","full"),r.style.cssText="user-select:none;position:absolute;left:0;top:0;",this.gradientManager=new ap(i,r),this.clipPathManager=new sp(i,r),this.shadowManager=new lp(i,r);var a=document.createElement("div");a.style.cssText="overflow:hidden;position:relative",this._svgRoot=r,this._viewport=a,t.appendChild(a),a.appendChild(r),this.resize(n.width,n.height),this._visibleList=[]};AI.prototype={constructor:AI,getType:function(){return"svg"},getViewportRoot:function(){return this._viewport},getViewportRootOffset:function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},refresh:function(){var t=this.storage.getDisplayList(!0);this._paintList(t)},setBackgroundColor:function(t){this._viewport.style.background=t},_paintList:function(t){this.gradientManager.markAllUnused(),this.clipPathManager.markAllUnused(),this.shadowManager.markAllUnused();var e,n=this._svgRoot,i=this._visibleList,r=t.length,o=[];for(e=0;e=0;--i)if(e[i]===t)return!0;return!1}),n):null:n[0]},resize:function(t,e){var n=this._viewport;n.style.display="none";var i=this._opts;if(null!=t&&(i.width=t),null!=e&&(i.height=e),t=this._getSize(0),e=this._getSize(1),n.style.display="",this._width!==t||this._height!==e){this._width=t,this._height=e;var r=n.style;r.width=t+"px",r.height=e+"px";var o=this._svgRoot;o.setAttribute("width",t),o.setAttribute("height",e)}},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,n=["width","height"][t],i=["clientWidth","clientHeight"][t],r=["paddingLeft","paddingTop"][t],o=["paddingRight","paddingBottom"][t];if(null!=e[n]&&"auto"!==e[n])return parseFloat(e[n]);var a=this.root,s=document.defaultView.getComputedStyle(a);return(a[i]||hp(s[n])||hp(a.style[n]))-(hp(s[r])||0)-(hp(s[o])||0)|0},dispose:function(){this.root.innerHTML="",this._svgRoot=this._viewport=this.storage=null},clear:function(){this._viewport&&this.root.removeChild(this._viewport)},pathToDataUrl:function(){return this.refresh(),"data:image/svg+xml;charset=UTF-8,"+this._svgRoot.outerHTML}},d(["getLayer","insertLayer","eachLayer","eachBuiltinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],function(t){AI.prototype[t]=yp(t)}),vn("svg",AI),t.version="4.1.0",t.dependencies=Gx,t.PRIORITY=Xx,t.init=function(t,e,n){var i=$a(t);if(i)return i;var r=new Aa(t,e,n);return r.id="ec_"+u_++,s_[r.id]=r,Pn(t,c_,r.id),Ya(r),r},t.connect=function(t){if(y(t)){var e=t;t=null,Bx(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+h_++,Bx(e,function(e){e.group=t})}return l_[t]=!0,t},t.disConnect=qa,t.disconnect=f_,t.dispose=function(t){"string"==typeof t?t=s_[t]:t instanceof Aa||(t=$a(t)),t instanceof Aa&&!t.isDisposed()&&t.dispose()},t.getInstanceByDom=$a,t.getInstanceById=function(t){return s_[t]},t.registerTheme=Ka,t.registerPreprocessor=Qa,t.registerProcessor=Ja,t.registerPostUpdate=function(t){i_.push(t)},t.registerAction=ts,t.registerCoordinateSystem=function(t,e){yo.register(t,e)},t.getCoordinateSystemDimensions=function(t){var e=yo.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},t.registerLayout=es,t.registerVisual=ns,t.registerLoading=rs,t.extendComponentModel=os,t.extendComponentView=as,t.extendSeriesModel=ss,t.extendChartView=ls,t.setCanvasCreator=function(t){e("createCanvas",t)},t.registerMap=function(t,e,n){e.geoJson&&!e.features&&(n=e.specialAreas,e=e.geoJson),"string"==typeof e&&(e="undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")()),d_[t]={geoJson:e,specialAreas:n}},t.getMap=function(t){return d_[t]},t.dataTool=p_,t.zrender=pm,t.graphic=ty,t.number=hy,t.format=yy,t.throttle=ua,t.helper=aw,t.matrix=qp,t.vector=Gp,t.color=dg,t.parseGeoJSON=lw,t.parseGeoJson=dw,t.util=fw,t.List=M_,t.Model=pr,t.Axis=cw,t.env=bp}); diff --git a/SMMS/WebContent/static/easyui/js/outlook2.js b/SMMS/WebContent/static/easyui/js/outlook2.js new file mode 100644 index 0000000..3dcf135 --- /dev/null +++ b/SMMS/WebContent/static/easyui/js/outlook2.js @@ -0,0 +1,175 @@ + +$(function(){ + InitLeftMenu(); + tabClose(); + tabCloseEven(); + + +}) + +//初始化左侧 +function InitLeftMenu() { + $("#nav").accordion({animate:false}); + + $.each(_menus.menus, function(i, n) { + var menulist =''; + menulist +=''; + + $('#nav').accordion('add', { + title: n.menuname, + content: menulist, + iconCls: 'icon ' + n.icon + }); + + }); + + $('.easyui-accordion li a').click(function(){ + var tabTitle = $(this).children('.nav').text(); + + var url = $(this).attr("rel"); + var menuid = $(this).attr("ref"); + var icon = getIcon(menuid,icon); + + addTab(tabTitle,url,icon); + $('.easyui-accordion li div').removeClass("selected"); + $(this).parent().addClass("selected"); + }).hover(function(){ + $(this).parent().addClass("hover"); + },function(){ + $(this).parent().removeClass("hover"); + }); + + //选中第一个 + var panels = $('#nav').accordion('panels'); + var t = panels[0].panel('options').title; + $('#nav').accordion('select', t); +} +//获取左侧导航的图标 +function getIcon(menuid){ + var icon = 'icon '; + $.each(_menus.menus, function(i, n) { + $.each(n.menus, function(j, o) { + if(o.menuid==menuid){ + icon += o.icon; + } + }) + }) + + return icon; +} + +function addTab(subtitle,url,icon){ + if(!$('#tabs').tabs('exists',subtitle)){ + $('#tabs').tabs('add',{ + title:subtitle, + content:createFrame(url), + closable:true, + icon:icon + }); + }else{ + $('#tabs').tabs('select',subtitle); + $('#mm-tabupdate').click(); + } + tabClose(); +} + +function createFrame(url) +{ + var s = ''; + return s; +} + +function tabClose() +{ + /*双击关闭TAB选项卡*/ + $(".tabs-inner").dblclick(function(){ + var subtitle = $(this).children(".tabs-closable").text(); + $('#tabs').tabs('close',subtitle); + }) + /*为选项卡绑定右键*/ + $(".tabs-inner").bind('contextmenu',function(e){ + $('#mm').menu('show', { + left: e.pageX, + top: e.pageY + }); + + var subtitle =$(this).children(".tabs-closable").text(); + + $('#mm').data("currtab",subtitle); + $('#tabs').tabs('select',subtitle); + return false; + }); +} +//绑定右键菜单事件 +function tabCloseEven() +{ + //刷新 + $('#mm-tabupdate').click(function(){ + var currTab = $('#tabs').tabs('getSelected'); + var url = $(currTab.panel('options').content).attr('src'); + $('#tabs').tabs('update',{ + tab:currTab, + options:{ + content:createFrame(url) + } + }) + }) + //关闭当前 + $('#mm-tabclose').click(function(){ + var currtab_title = $('#mm').data("currtab"); + $('#tabs').tabs('close',currtab_title); + }) + //全部关闭 + $('#mm-tabcloseall').click(function(){ + $('.tabs-inner span').each(function(i,n){ + var t = $(n).text(); + $('#tabs').tabs('close',t); + }); + }); + //关闭除当前之外的TAB + $('#mm-tabcloseother').click(function(){ + $('#mm-tabcloseright').click(); + $('#mm-tabcloseleft').click(); + }); + //关闭当前右侧的TAB + $('#mm-tabcloseright').click(function(){ + var nextall = $('.tabs-selected').nextAll(); + if(nextall.length==0){ + //msgShow('系统提示','后边没有啦~~','error'); + alert('后边没有啦~~'); + return false; + } + nextall.each(function(i,n){ + var t=$('a:eq(0) span',$(n)).text(); + $('#tabs').tabs('close',t); + }); + return false; + }); + //关闭当前左侧的TAB + $('#mm-tabcloseleft').click(function(){ + var prevall = $('.tabs-selected').prevAll(); + if(prevall.length==0){ + alert('到头了,前边没有啦~~'); + return false; + } + prevall.each(function(i,n){ + var t=$('a:eq(0) span',$(n)).text(); + $('#tabs').tabs('close',t); + }); + return false; + }); + + //退出 + $("#mm-exit").click(function(){ + $('#mm').menu('hide'); + }) +} + +//弹出信息窗口 title:标题 msgString:提示信息 msgType:信息类型 [error,info,question,warning] +function msgShow(title, msgString, msgType) { + $.messager.alert(title, msgString, msgType); +} diff --git a/SMMS/WebContent/static/easyui/js/validateExtends.js b/SMMS/WebContent/static/easyui/js/validateExtends.js new file mode 100644 index 0000000..b8e782a --- /dev/null +++ b/SMMS/WebContent/static/easyui/js/validateExtends.js @@ -0,0 +1,180 @@ +/** + * 扩展easyui表单的验证 + */ + +$.extend($.fn.validatebox.defaults.rules, { + //验证汉字 + CHS: { + validator: function (value) { + return /^[\u0391-\uFFE5]+$/.test(value); + }, + message: '只能输入汉字' + }, + //移动手机号码验证 + mobile: {//value值为文本框中的值 + validator: function (value) { + var reg = /^1[3|4|5|8|9]\d{9}$/; + return reg.test(value); + }, + message: '13/14/15/18/19开头,且11位的手机号' + }, + //只能为数字 + number: {//value值为文本框中的值 + validator: function (value) { + var reg = /^[0-9]*$/; + return reg.test(value); + }, + message: '只能为数字格式' + }, + //验证账号不能重复 + repeat: { + validator: function (value) { + var flag = true; + $.ajax({ + type: "post", + async: false, + url: "SystemServlet?method=AllAccount&t="+new Date().getTime(), + success: function(data){//在验证函数里加载数据,加载过来后判断输入的值 + var account = $.parseJSON(data); + for(var i=0;i < account.length;i++){ + if(value == account[i]){ + flag = false; + break; + } + } + } + }); + return flag; + }, + message: '用户已存在' + }, + + //验证课程不能重复 + repeat_course: { + validator: function (value) { + var flag = true; + $.ajax({ + type: "post", + async: false, + url: "CourseServlet?method=CourseList&t="+new Date().getTime(), + success: function(data){//在验证函数里加载数据,加载过来后判断输入的值 + var course = $.parseJSON(data); + for(var i=0;i < course.length;i++){ + if(value == course[i].name){ + flag = false; + break; + } + } + } + }); + return flag; + }, + message: '课程名称已存在' + }, + + //验证年级不能重复 + repeat_grade: { + validator: function (value) { + var flag = true; + $.ajax({ + type: "post", + async: false, + url: "GradeServlet?method=GradeList&t="+new Date().getTime(), + success: function(data){//在验证函数里加载数据,加载过来后判断输入的值 + var grade = $.parseJSON(data); + for(var i=0;i < grade.length;i++){ + if(value == grade[i].name){ + flag = false; + break; + } + } + } + }); + return flag; + }, + message: '年级名称已存在' + }, + + //验证班级不能重复 + repeat_clazz: { + validator: function (value, param) { + var gradeid = $(param[0]).combobox("getValue"); + var flag = true; + $.ajax({ + type: "post", + async: false, + data: {gradeid: gradeid}, + url: "ClazzServlet?method=ClazzList&t="+new Date().getTime(), + success: function(data){//在验证函数里加载数据,加载过来后判断输入的值 + var clazz = $.parseJSON(data); + for(var i=0;i < clazz.length;i++){ + if(value == clazz[i].name){ + flag = false; + break; + } + } + } + }); + return flag; + }, + message: '该年级下已存在同名班级' + }, + + //验证两个值是否相同 + equals: {//param的值为[]中值 + validator: function (value, param) { + if($(param[0]).val() != value){ + return false; + } else{ + return true; + } + + }, message: '两次密码不同.' + }, + + //密码规则 + password: { + validator: function (value) { + var reg = /^[a-zA-Z0-9]{6,16}$/; + return reg.test(value); + + }, message: '密码6-16位,且只能为英文、数字' + }, + + //验证输入密码是否正确 + oldPassword: { + validator: function (value, param) { + if(param != value){ + return false; + } else{ + return true; + } + + }, message: '密码不正确' + }, + + //国内邮编验证 + zipcode: { + validator: function (value) { + var reg = /^[1-9]\d{5}$/; + return reg.test(value); + }, + message: '邮编必须是非0开始的6位数字.' + }, + //用户账号验证(只能包括 _ 数字 字母) + account: {//param的值为[]中值 + validator: function (value, param) { + if (value.length < param[0] || value.length > param[1]) { + $.fn.validatebox.defaults.rules.account.message = '用户名长度必须在' + param[0] + '至' + param[1] + '范围'; + return false; + } else { + if (!/^[\w]+$/.test(value)) { + $.fn.validatebox.defaults.rules.account.message = '用户名只能数字、字母、下划线组成.'; + return false; + } else { + return true; + } + } + }, message: '' + } +}) diff --git a/SMMS/WebContent/static/easyui/themes/color.css b/SMMS/WebContent/static/easyui/themes/color.css new file mode 100644 index 0000000..9f81159 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/color.css @@ -0,0 +1,112 @@ +.c1,.c1:hover{ + color: #fff; + border-color: #3c8b3c; + background: #4cae4c; + background: -webkit-linear-gradient(top,#4cae4c 0,#449d44 100%); + background: -moz-linear-gradient(top,#4cae4c 0,#449d44 100%); + background: -o-linear-gradient(top,#4cae4c 0,#449d44 100%); + background: linear-gradient(to bottom,#4cae4c 0,#449d44 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4cae4c,endColorstr=#449d44,GradientType=0); +} +a.c1:hover{ + background: #449d44; + filter: none; +} +.c2,.c2:hover{ + color: #fff; + border-color: #5f5f5f; + background: #747474; + background: -webkit-linear-gradient(top,#747474 0,#676767 100%); + background: -moz-linear-gradient(top,#747474 0,#676767 100%); + background: -o-linear-gradient(top,#747474 0,#676767 100%); + background: linear-gradient(to bottom,#747474 0,#676767 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#747474,endColorstr=#676767,GradientType=0); +} +a.c2:hover{ + background: #676767; + filter: none; +} +.c3,.c3:hover{ + color: #333; + border-color: #ff8080; + background: #ffb3b3; + background: -webkit-linear-gradient(top,#ffb3b3 0,#ff9999 100%); + background: -moz-linear-gradient(top,#ffb3b3 0,#ff9999 100%); + background: -o-linear-gradient(top,#ffb3b3 0,#ff9999 100%); + background: linear-gradient(to bottom,#ffb3b3 0,#ff9999 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffb3b3,endColorstr=#ff9999,GradientType=0); +} +a.c3:hover{ + background: #ff9999; + filter: none; +} +.c4,.c4:hover{ + color: #333; + border-color: #52d689; + background: #b8eecf; + background: -webkit-linear-gradient(top,#b8eecf 0,#a4e9c1 100%); + background: -moz-linear-gradient(top,#b8eecf 0,#a4e9c1 100%); + background: -o-linear-gradient(top,#b8eecf 0,#a4e9c1 100%); + background: linear-gradient(to bottom,#b8eecf 0,#a4e9c1 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#b8eecf,endColorstr=#a4e9c1,GradientType=0); +} +a.c4:hover{ + background: #a4e9c1; + filter: none; +} +.c5,.c5:hover{ + color: #fff; + border-color: #b52b27; + background: #d84f4b; + background: -webkit-linear-gradient(top,#d84f4b 0,#c9302c 100%); + background: -moz-linear-gradient(top,#d84f4b 0,#c9302c 100%); + background: -o-linear-gradient(top,#d84f4b 0,#c9302c 100%); + background: linear-gradient(to bottom,#d84f4b 0,#c9302c 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#d84f4b,endColorstr=#c9302c,GradientType=0); +} +a.c5:hover{ + background: #c9302c; + filter: none; +} +.c6,.c6:hover{ + color: #fff; + border-color: #1f637b; + background: #2984a4; + background: -webkit-linear-gradient(top,#2984a4 0,#24748f 100%); + background: -moz-linear-gradient(top,#2984a4 0,#24748f 100%); + background: -o-linear-gradient(top,#2984a4 0,#24748f 100%); + background: linear-gradient(to bottom,#2984a4 0,#24748f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#2984a4,endColorstr=#24748f,GradientType=0); +} +a.c6:hover{ + background: #24748f; + filter: none; +} +.c7,.c7:hover{ + color: #333; + border-color: #e68900; + background: #ffab2e; + background: -webkit-linear-gradient(top,#ffab2e 0,#ff9900 100%); + background: -moz-linear-gradient(top,#ffab2e 0,#ff9900 100%); + background: -o-linear-gradient(top,#ffab2e 0,#ff9900 100%); + background: linear-gradient(to bottom,#ffab2e 0,#ff9900 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffab2e,endColorstr=#ff9900,GradientType=0); +} +a.c7:hover{ + background: #ff9900; + filter: none; +} +.c8,.c8:hover{ + color: #fff; + border-color: #4b72a4; + background: #698cba; + background: -webkit-linear-gradient(top,#698cba 0,#577eb2 100%); + background: -moz-linear-gradient(top,#698cba 0,#577eb2 100%); + background: -o-linear-gradient(top,#698cba 0,#577eb2 100%); + background: linear-gradient(to bottom,#698cba 0,#577eb2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#698cba,endColorstr=#577eb2,GradientType=0); +} +a.c8:hover{ + background: #577eb2; + filter: none; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/accordion.css b/SMMS/WebContent/static/easyui/themes/default/accordion.css new file mode 100644 index 0000000..40696c7 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/accordion.css @@ -0,0 +1,41 @@ +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #95B8E7; +} +.accordion .accordion-header { + background: #E0ECFF; + filter: none; +} +.accordion .accordion-header-selected { + background: #ffe48d; +} +.accordion .accordion-header-selected .panel-title { + color: #000000; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/calendar.css b/SMMS/WebContent/static/easyui/themes/default/calendar.css new file mode 100644 index 0000000..6334627 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/calendar.css @@ -0,0 +1,197 @@ +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #4d4d4d; +} +.calendar-day { + color: #000000; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #95B8E7; +} +.calendar { + border-color: #95B8E7; +} +.calendar-header { + background: #E0ECFF; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #F4F4F4; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #eaf2ff; + color: #000000; +} +.calendar-hover { + border: 1px solid #b7d2ff; + padding: 0; +} +.calendar-selected { + background-color: #ffe48d; + color: #000000; + border: 1px solid #ffab3f; + padding: 0; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/combo.css b/SMMS/WebContent/static/easyui/themes/default/combo.css new file mode 100644 index 0000000..a4937aa --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/combo.css @@ -0,0 +1,60 @@ +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo { + border-color: #95B8E7; + background-color: #fff; +} +.combo-arrow { + background-color: #E0ECFF; +} +.combo-arrow-hover { + background-color: #eaf2ff; +} +.combo-arrow:hover { + background-color: #eaf2ff; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/combobox.css b/SMMS/WebContent/static/easyui/themes/default/combobox.css new file mode 100644 index 0000000..72eb423 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/combobox.css @@ -0,0 +1,24 @@ +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #eaf2ff; + color: #000000; +} +.combobox-item-selected { + background-color: #ffe48d; + color: #000000; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/datagrid.css b/SMMS/WebContent/static/easyui/themes/default/datagrid.css new file mode 100644 index 0000000..b167a21 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/datagrid.css @@ -0,0 +1,267 @@ +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #95B8E7; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #efefef; + background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0); +} +.datagrid-cell-rownumber { + color: #000000; +} +.datagrid-resize-proxy { + background: #aac5e7; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #95B8E7; +} +.datagrid-toolbar, +.datagrid-pager { + background: #F4F4F4; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #dddddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #000000; + border-collapse: separate; +} +.datagrid-row-alt { + background: #fafafa; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #eaf2ff; + color: #000000; + cursor: default; +} +.datagrid-row-selected { + background: #ffe48d; + color: #000000; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/datalist.css b/SMMS/WebContent/static/easyui/themes/default/datalist.css new file mode 100644 index 0000000..eedd25b --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/datalist.css @@ -0,0 +1,95 @@ +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #efefef; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #000000; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.m-list li>a:hover { + background: #eaf2ff; + color: #000000; +} +.m-list .m-list-group { + padding: 0 4px; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/datebox.css b/SMMS/WebContent/static/easyui/themes/default/datebox.css new file mode 100644 index 0000000..6225a0d --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/datebox.css @@ -0,0 +1,36 @@ +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #F4F4F4; +} +.datebox-button a { + color: #444; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/dialog.css b/SMMS/WebContent/static/easyui/themes/default/dialog.css new file mode 100644 index 0000000..c3510e6 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/dialog.css @@ -0,0 +1,32 @@ +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #F4F4F4; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #95B8E7 #95B8E7 #dddddd #95B8E7; +} +.dialog-button { + border-color: #dddddd #95B8E7 #95B8E7 #95B8E7; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/easyui.css b/SMMS/WebContent/static/easyui/themes/default/easyui.css new file mode 100644 index 0000000..52ee5b9 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/easyui.css @@ -0,0 +1,2734 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #eaf2ff; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #95B8E7; +} +.panel-header { + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #000000; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #0E2D5F; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #95B8E7; + overflow: hidden; + background: #F4F4F4; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #95B8E7; +} +.accordion .accordion-header { + background: #E0ECFF; + filter: none; +} +.accordion .accordion-header-selected { + background: #ffe48d; +} +.accordion .accordion-header-selected .panel-title { + color: #000000; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #95B8E7; +} +.window { + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.window-proxy { + border: 1px dashed #95B8E7; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #95B8E7; + position: relative; + top: -1px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #F4F4F4; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #95B8E7 #95B8E7 #dddddd #95B8E7; +} +.dialog-button { + border-color: #dddddd #95B8E7 #95B8E7 #95B8E7; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #fafafa; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #b7d2ff; + padding: 0; +} +.l-btn-plain:hover { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #fafafa; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} +.textbox { + position: relative; + border: 1px solid #95B8E7; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #95B8E7; + -webkit-box-shadow: 0 0 3px 0 #95B8E7; + box-shadow: 0 0 3px 0 #95B8E7; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; +} +.l-btn-disabled .filebox-label { + cursor: default; +} +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo { + border-color: #95B8E7; + background-color: #fff; +} +.combo-arrow { + background-color: #E0ECFF; +} +.combo-arrow-hover { + background-color: #eaf2ff; +} +.combo-arrow:hover { + background-color: #eaf2ff; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #eaf2ff; + color: #000000; +} +.combobox-item-selected { + background-color: #ffe48d; + color: #000000; +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #aac5e7; +} +.layout-split-north { + border-bottom: 5px solid #E6EEF8; +} +.layout-split-south { + border-top: 5px solid #E6EEF8; +} +.layout-split-east { + border-left: 5px solid #E6EEF8; +} +.layout-split-west { + border-right: 5px solid #E6EEF8; +} +.layout-expand { + background-color: #E0ECFF; +} +.layout-expand-over { + background-color: #E0ECFF; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #eaf2ff; + color: #000000; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #0E2D5F; + background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); +} +.tabs li a.tabs-inner { + color: #0E2D5F; + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #E0ECFF; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #95B8E7; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #eaf2ff; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #ffe48d; + color: #000000; + filter: none; + border-color: #95B8E7; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #95B8E7; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #efefef; + background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0); +} +.datagrid-cell-rownumber { + color: #000000; +} +.datagrid-resize-proxy { + background: #aac5e7; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #95B8E7; +} +.datagrid-toolbar, +.datagrid-pager { + background: #F4F4F4; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #dddddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #000000; + border-collapse: separate; +} +.datagrid-row-alt { + background: #fafafa; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #eaf2ff; + color: #000000; + cursor: default; +} +.datagrid-row-selected { + background: #ffe48d; + color: #000000; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #dddddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #E0ECFF; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #dddddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #E0ECFF; +} +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #efefef; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #000000; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.m-list li>a:hover { + background: #eaf2ff; + color: #000000; +} +.m-list .m-list-group { + padding: 0 4px; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #95B8E7; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #4d4d4d; +} +.calendar-day { + color: #000000; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #95B8E7; +} +.calendar { + border-color: #95B8E7; +} +.calendar-header { + background: #E0ECFF; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #F4F4F4; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #eaf2ff; + color: #000000; +} +.calendar-hover { + border: 1px solid #b7d2ff; + padding: 0; +} +.calendar-selected { + background-color: #ffe48d; + color: #000000; + border: 1px solid #ffab3f; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #F4F4F4; +} +.datebox-button a { + color: #444; +} +.numberbox { + border: 1px solid #95B8E7; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #E0ECFF; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #444; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #eaf2ff; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #eaf2ff; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #E0ECFF; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #95B8E7; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #95B8E7; +} +.progressbar-text { + color: #000000; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #ffe48d; + color: #000000; +} +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #95B8E7; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #E0ECFF; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #95B8E7; + background: #E0ECFF; +} +.slider-rule span { + border-color: #95B8E7; +} +.slider-rulelabel span { + color: #000000; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #fafafa; + border-color: #ddd; + color: #444; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #fafafa; +} +.menu-active { + border-color: #b7d2ff; + color: #000000; + background: #eaf2ff; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #aac5e7; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #b7d2ff; + background-color: #eaf2ff; + color: #000000; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #aac5e7; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #95B8E7; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #000000; + border-color: #95B8E7; +} +.tree-node-hover { + background: #eaf2ff; + color: #000000; +} +.tree-node-selected { + background: #ffe48d; + color: #000000; +} +.tree-node-hidden { + display: none; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #95B8E7; + color: #000000; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #95B8E7; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #95B8E7; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #95B8E7; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #95B8E7; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/filebox.css b/SMMS/WebContent/static/easyui/themes/default/filebox.css new file mode 100644 index 0000000..8954a19 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/filebox.css @@ -0,0 +1,19 @@ +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; +} +.l-btn-disabled .filebox-label { + cursor: default; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/images/accordion_arrows.png b/SMMS/WebContent/static/easyui/themes/default/images/accordion_arrows.png new file mode 100644 index 0000000..720835f Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/accordion_arrows.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/blank.gif b/SMMS/WebContent/static/easyui/themes/default/images/blank.gif new file mode 100644 index 0000000..1d11fa9 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/blank.gif differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/calendar_arrows.png b/SMMS/WebContent/static/easyui/themes/default/images/calendar_arrows.png new file mode 100644 index 0000000..430c4ad Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/calendar_arrows.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/combo_arrow.png b/SMMS/WebContent/static/easyui/themes/default/images/combo_arrow.png new file mode 100644 index 0000000..2e59fb9 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/combo_arrow.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/datagrid_icons.png b/SMMS/WebContent/static/easyui/themes/default/images/datagrid_icons.png new file mode 100644 index 0000000..747ac4d Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/datagrid_icons.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/datebox_arrow.png b/SMMS/WebContent/static/easyui/themes/default/images/datebox_arrow.png new file mode 100644 index 0000000..783c833 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/datebox_arrow.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/layout_arrows.png b/SMMS/WebContent/static/easyui/themes/default/images/layout_arrows.png new file mode 100644 index 0000000..6f41654 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/layout_arrows.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/linkbutton_bg.png b/SMMS/WebContent/static/easyui/themes/default/images/linkbutton_bg.png new file mode 100644 index 0000000..fc66bd2 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/linkbutton_bg.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/loading.gif b/SMMS/WebContent/static/easyui/themes/default/images/loading.gif new file mode 100644 index 0000000..68f01d0 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/loading.gif differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/menu_arrows.png b/SMMS/WebContent/static/easyui/themes/default/images/menu_arrows.png new file mode 100644 index 0000000..b986842 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/menu_arrows.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/messager_icons.png b/SMMS/WebContent/static/easyui/themes/default/images/messager_icons.png new file mode 100644 index 0000000..62c18c1 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/messager_icons.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/pagination_icons.png b/SMMS/WebContent/static/easyui/themes/default/images/pagination_icons.png new file mode 100644 index 0000000..616f0bd Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/pagination_icons.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/panel_tools.png b/SMMS/WebContent/static/easyui/themes/default/images/panel_tools.png new file mode 100644 index 0000000..19ecc94 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/panel_tools.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/searchbox_button.png b/SMMS/WebContent/static/easyui/themes/default/images/searchbox_button.png new file mode 100644 index 0000000..6dd1931 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/searchbox_button.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/slider_handle.png b/SMMS/WebContent/static/easyui/themes/default/images/slider_handle.png new file mode 100644 index 0000000..b9802ba Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/slider_handle.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/spinner_arrows.png b/SMMS/WebContent/static/easyui/themes/default/images/spinner_arrows.png new file mode 100644 index 0000000..b68592d Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/spinner_arrows.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/tabs_icons.png b/SMMS/WebContent/static/easyui/themes/default/images/tabs_icons.png new file mode 100644 index 0000000..4d29966 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/tabs_icons.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/tree_icons.png b/SMMS/WebContent/static/easyui/themes/default/images/tree_icons.png new file mode 100644 index 0000000..e9be4f3 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/tree_icons.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/images/validatebox_warning.png b/SMMS/WebContent/static/easyui/themes/default/images/validatebox_warning.png new file mode 100644 index 0000000..2b3d4f0 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/default/images/validatebox_warning.png differ diff --git a/SMMS/WebContent/static/easyui/themes/default/layout.css b/SMMS/WebContent/static/easyui/themes/default/layout.css new file mode 100644 index 0000000..0292cf5 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/layout.css @@ -0,0 +1,91 @@ +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #aac5e7; +} +.layout-split-north { + border-bottom: 5px solid #E6EEF8; +} +.layout-split-south { + border-top: 5px solid #E6EEF8; +} +.layout-split-east { + border-left: 5px solid #E6EEF8; +} +.layout-split-west { + border-right: 5px solid #E6EEF8; +} +.layout-expand { + background-color: #E0ECFF; +} +.layout-expand-over { + background-color: #E0ECFF; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/linkbutton.css b/SMMS/WebContent/static/easyui/themes/default/linkbutton.css new file mode 100644 index 0000000..a3e2122 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/linkbutton.css @@ -0,0 +1,203 @@ +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #fafafa; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #b7d2ff; + padding: 0; +} +.l-btn-plain:hover { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #fafafa; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/menu.css b/SMMS/WebContent/static/easyui/themes/default/menu.css new file mode 100644 index 0000000..552e25c --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/menu.css @@ -0,0 +1,119 @@ +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #fafafa; + border-color: #ddd; + color: #444; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #fafafa; +} +.menu-active { + border-color: #b7d2ff; + color: #000000; + background: #eaf2ff; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/menubutton.css b/SMMS/WebContent/static/easyui/themes/default/menubutton.css new file mode 100644 index 0000000..3445bd5 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/menubutton.css @@ -0,0 +1,94 @@ +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #aac5e7; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #b7d2ff; + background-color: #eaf2ff; + color: #000000; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/messager.css b/SMMS/WebContent/static/easyui/themes/default/messager.css new file mode 100644 index 0000000..f719581 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/messager.css @@ -0,0 +1,40 @@ +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #95B8E7; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/numberbox.css b/SMMS/WebContent/static/easyui/themes/default/numberbox.css new file mode 100644 index 0000000..03c7ea2 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/numberbox.css @@ -0,0 +1,9 @@ +.numberbox { + border: 1px solid #95B8E7; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/pagination.css b/SMMS/WebContent/static/easyui/themes/default/pagination.css new file mode 100644 index 0000000..1f8783c --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/pagination.css @@ -0,0 +1,71 @@ +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #95B8E7; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/panel.css b/SMMS/WebContent/static/easyui/themes/default/panel.css new file mode 100644 index 0000000..c32f3a0 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/panel.css @@ -0,0 +1,142 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #eaf2ff; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #95B8E7; +} +.panel-header { + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #000000; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #0E2D5F; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #95B8E7; + overflow: hidden; + background: #F4F4F4; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/progressbar.css b/SMMS/WebContent/static/easyui/themes/default/progressbar.css new file mode 100644 index 0000000..e4d3003 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/progressbar.css @@ -0,0 +1,32 @@ +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #95B8E7; +} +.progressbar-text { + color: #000000; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #ffe48d; + color: #000000; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/propertygrid.css b/SMMS/WebContent/static/easyui/themes/default/propertygrid.css new file mode 100644 index 0000000..5f5fbb3 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/propertygrid.css @@ -0,0 +1,28 @@ +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #dddddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #E0ECFF; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #dddddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #E0ECFF; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/searchbox.css b/SMMS/WebContent/static/easyui/themes/default/searchbox.css new file mode 100644 index 0000000..5f5e011 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/searchbox.css @@ -0,0 +1,90 @@ +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #95B8E7; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #E0ECFF; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/slider.css b/SMMS/WebContent/static/easyui/themes/default/slider.css new file mode 100644 index 0000000..f51f986 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/slider.css @@ -0,0 +1,101 @@ +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #95B8E7; + background: #E0ECFF; +} +.slider-rule span { + border-color: #95B8E7; +} +.slider-rulelabel span { + color: #000000; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/spinner.css b/SMMS/WebContent/static/easyui/themes/default/spinner.css new file mode 100644 index 0000000..757e017 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/spinner.css @@ -0,0 +1,72 @@ +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #E0ECFF; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #444; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #eaf2ff; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #eaf2ff; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #E0ECFF; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #95B8E7; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/splitbutton.css b/SMMS/WebContent/static/easyui/themes/default/splitbutton.css new file mode 100644 index 0000000..86d6da5 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/splitbutton.css @@ -0,0 +1,12 @@ +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #aac5e7; + border-width: 0 0 0 1px; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/tabs.css b/SMMS/WebContent/static/easyui/themes/default/tabs.css new file mode 100644 index 0000000..d5d84e8 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/tabs.css @@ -0,0 +1,413 @@ +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #eaf2ff; + color: #000000; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #0E2D5F; + background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); +} +.tabs li a.tabs-inner { + color: #0E2D5F; + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #E0ECFF; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #95B8E7; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #eaf2ff; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #ffe48d; + color: #000000; + filter: none; + border-color: #95B8E7; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/textbox.css b/SMMS/WebContent/static/easyui/themes/default/textbox.css new file mode 100644 index 0000000..a0c685d --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/textbox.css @@ -0,0 +1,87 @@ +.textbox { + position: relative; + border: 1px solid #95B8E7; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #95B8E7; + -webkit-box-shadow: 0 0 3px 0 #95B8E7; + box-shadow: 0 0 3px 0 #95B8E7; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/tooltip.css b/SMMS/WebContent/static/easyui/themes/default/tooltip.css new file mode 100644 index 0000000..2881b70 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/tooltip.css @@ -0,0 +1,100 @@ +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #95B8E7; + color: #000000; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #95B8E7; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #95B8E7; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #95B8E7; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #95B8E7; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/tree.css b/SMMS/WebContent/static/easyui/themes/default/tree.css new file mode 100644 index 0000000..a22075b --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/tree.css @@ -0,0 +1,160 @@ +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #000000; + border-color: #95B8E7; +} +.tree-node-hover { + background: #eaf2ff; + color: #000000; +} +.tree-node-selected { + background: #ffe48d; + color: #000000; +} +.tree-node-hidden { + display: none; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/validatebox.css b/SMMS/WebContent/static/easyui/themes/default/validatebox.css new file mode 100644 index 0000000..1fc3ad6 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/validatebox.css @@ -0,0 +1,5 @@ +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} diff --git a/SMMS/WebContent/static/easyui/themes/default/window.css b/SMMS/WebContent/static/easyui/themes/default/window.css new file mode 100644 index 0000000..06f77db --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/default/window.css @@ -0,0 +1,94 @@ +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #95B8E7; +} +.window { + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.window-proxy { + border: 1px dashed #95B8E7; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #95B8E7; + position: relative; + top: -1px; +} diff --git a/SMMS/WebContent/static/easyui/themes/icon.css b/SMMS/WebContent/static/easyui/themes/icon.css new file mode 100644 index 0000000..141de4d --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/icon.css @@ -0,0 +1,166 @@ +.icon-blank{ + background:url('icons/blank.gif') no-repeat center center; +} +.icon-add{ + background:url('icons/edit_add.png') no-repeat center center; +} +.icon-edit{ + background:url('icons/pencil.png') no-repeat center center; +} +.icon-clear{ + background:url('icons/clear.png') no-repeat center center; +} +.icon-remove{ + background:url('icons/edit_remove.png') no-repeat center center; +} +.icon-save{ + background:url('icons/filesave.png') no-repeat center center; +} +.icon-cut{ + background:url('icons/cut.png') no-repeat center center; +} +.icon-ok{ + background:url('icons/ok.png') no-repeat center center; +} +.icon-no{ + background:url('icons/no.png') no-repeat center center; +} +.icon-cancel{ + background:url('icons/cancel.png') no-repeat center center; +} +.icon-reload{ + background:url('icons/reload.png') no-repeat center center; +} +.icon-search{ + background:url('icons/search.png') no-repeat center center; +} +.icon-print{ + background:url('icons/print.png') no-repeat center center; +} +.icon-help{ + background:url('icons/help.png') no-repeat center center; +} +.icon-undo{ + background:url('icons/undo.png') no-repeat center center; +} +.icon-redo{ + background:url('icons/redo.png') no-repeat center center; +} +.icon-back{ + background:url('icons/back.png') no-repeat center center; +} +.icon-sum{ + background:url('icons/sum.png') no-repeat center center; +} +.icon-tip{ + background:url('icons/tip.png') no-repeat center center; +} +.icon-filter{ + background:url('icons/filter.png') no-repeat center center; +} +.icon-man{ + background:url('icons/man.png') no-repeat center center; +} +.icon-lock{ + background:url('icons/lock.png') no-repeat center center; +} +.icon-more{ + background:url('icons/more.png') no-repeat center center; +} +.icon-mini-add{ + background:url('icons/mini_add.png') no-repeat center center; +} +.icon-mini-edit{ + background:url('icons/mini_edit.png') no-repeat center center; +} +.icon-mini-refresh{ + background:url('icons/mini_refresh.png') no-repeat center center; +} +.icon-large-picture{ + background:url('icons/large_picture.png') no-repeat center center; +} +.icon-large-clipart{ + background:url('icons/large_clipart.png') no-repeat center center; +} +.icon-large-shapes{ + background:url('icons/large_shapes.png') no-repeat center center; +} +.icon-large-smartart{ + background:url('icons/large_smartart.png') no-repeat center center; +} +.icon-large-chart{ + background:url('icons/large_chart.png') no-repeat center center; +} +.icon-some-delete{ + background:url('icons/basket_remove.png') no-repeat center center; +} +.icon-book-open{ + background:url('icons/book_open_mark.png') no-repeat center center; +} +.icon-number{ + background:url('icons/text_list_numbers.png') no-repeat center center; +} +.icon-set{ + background:url('icons/set.png') no-repeat center center; +} +.icon-chart_bar{ + background:url('icons/chart_bar.png') no-repeat center center; +} +.icon-user_add{ + background:url('icons/user_add.png') no-repeat center center; +} +.icon-user-student{ + background:url('icons/user_gray.png') no-repeat center center; +} +.icon-user-teacher{ + background:url('icons/user_red.png') no-repeat center center; +} +.icon-house{ + background:url('icons/house.png') no-repeat center center; +} +.icon-world{ + background:url('icons/world.png') no-repeat center center; +} +.icon-exam{ + background:url('icons/text_list_bullets.png') no-repeat center center; +} +.icon-password{ + background:url('icons/2012080412263.png') no-repeat center center; +} +.icon-logout{ + background:url('icons/door_out.png') no-repeat center center; +} +.icon-note{ + background:url('icons/note.png') no-repeat center center; +} +.icon-pencil-add{ + background:url('icons/pencil_add.png') no-repeat center center; +} +.icon-find{ + background:url('icons/find.png') no-repeat center center; +} +.icon-book-add{ + background:url('icons/book_add.png') no-repeat center center; +} +.icon-book-reset{ + background:url('icons/book_previous.png') no-repeat center center; +} +.icon-world-add{ + background:url('icons/world_add.png') no-repeat center center; +} +.icon-world-reset{ + background:url('icons/world_night.png') no-repeat center center; +} +.icon-zoom-in{ + background:url('icons/zoom_in.png') no-repeat center center; +} +.icon-vcard-edit{ + background:url('icons/vcard_edit.png') no-repeat center center; +} +.icon-folder-up{ + background:url('icons/folder_up.png') no-repeat center center; +} +.icon-password{ + background:url('icons/asterisk_orange.png') no-repeat center center; +} + diff --git a/SMMS/WebContent/static/easyui/themes/icons/2012080412263.png b/SMMS/WebContent/static/easyui/themes/icons/2012080412263.png new file mode 100644 index 0000000..85e31a4 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/2012080412263.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/asterisk_orange.png b/SMMS/WebContent/static/easyui/themes/icons/asterisk_orange.png new file mode 100644 index 0000000..1ebebde Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/asterisk_orange.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/back.png b/SMMS/WebContent/static/easyui/themes/icons/back.png new file mode 100644 index 0000000..3fe8b17 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/back.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/basket_remove.png b/SMMS/WebContent/static/easyui/themes/icons/basket_remove.png new file mode 100644 index 0000000..04dd7fd Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/basket_remove.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/blank.gif b/SMMS/WebContent/static/easyui/themes/icons/blank.gif new file mode 100644 index 0000000..1d11fa9 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/blank.gif differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/book_add.png b/SMMS/WebContent/static/easyui/themes/icons/book_add.png new file mode 100644 index 0000000..e2f0847 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/book_add.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/book_open_mark.png b/SMMS/WebContent/static/easyui/themes/icons/book_open_mark.png new file mode 100644 index 0000000..d4d33e6 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/book_open_mark.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/book_previous.png b/SMMS/WebContent/static/easyui/themes/icons/book_previous.png new file mode 100644 index 0000000..2e53c69 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/book_previous.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/cancel.png b/SMMS/WebContent/static/easyui/themes/icons/cancel.png new file mode 100644 index 0000000..a432b49 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/cancel.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/chart_bar.png b/SMMS/WebContent/static/easyui/themes/icons/chart_bar.png new file mode 100644 index 0000000..2cec9fd Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/chart_bar.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/clear.png b/SMMS/WebContent/static/easyui/themes/icons/clear.png new file mode 100644 index 0000000..74b9af9 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/clear.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/cut.png b/SMMS/WebContent/static/easyui/themes/icons/cut.png new file mode 100644 index 0000000..21fdb4d Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/cut.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/door_out.png b/SMMS/WebContent/static/easyui/themes/icons/door_out.png new file mode 100644 index 0000000..2541d2b Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/door_out.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/edit_add.png b/SMMS/WebContent/static/easyui/themes/icons/edit_add.png new file mode 100644 index 0000000..e948508 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/edit_add.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/edit_remove.png b/SMMS/WebContent/static/easyui/themes/icons/edit_remove.png new file mode 100644 index 0000000..d555d92 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/edit_remove.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/filesave.png b/SMMS/WebContent/static/easyui/themes/icons/filesave.png new file mode 100644 index 0000000..fd0048d Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/filesave.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/filter.png b/SMMS/WebContent/static/easyui/themes/icons/filter.png new file mode 100644 index 0000000..1fedf7a Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/filter.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/find.png b/SMMS/WebContent/static/easyui/themes/icons/find.png new file mode 100644 index 0000000..1547479 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/find.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/folder_up.png b/SMMS/WebContent/static/easyui/themes/icons/folder_up.png new file mode 100644 index 0000000..61c8704 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/folder_up.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/help.png b/SMMS/WebContent/static/easyui/themes/icons/help.png new file mode 100644 index 0000000..28a0f9e Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/help.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/house.png b/SMMS/WebContent/static/easyui/themes/icons/house.png new file mode 100644 index 0000000..fed6221 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/house.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/large_chart.png b/SMMS/WebContent/static/easyui/themes/icons/large_chart.png new file mode 100644 index 0000000..527608e Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/large_chart.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/large_clipart.png b/SMMS/WebContent/static/easyui/themes/icons/large_clipart.png new file mode 100644 index 0000000..9c9c440 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/large_clipart.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/large_picture.png b/SMMS/WebContent/static/easyui/themes/icons/large_picture.png new file mode 100644 index 0000000..a005b0c Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/large_picture.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/large_shapes.png b/SMMS/WebContent/static/easyui/themes/icons/large_shapes.png new file mode 100644 index 0000000..90a0dca Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/large_shapes.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/large_smartart.png b/SMMS/WebContent/static/easyui/themes/icons/large_smartart.png new file mode 100644 index 0000000..b47da08 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/large_smartart.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/lock.png b/SMMS/WebContent/static/easyui/themes/icons/lock.png new file mode 100644 index 0000000..15bd643 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/lock.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/man.png b/SMMS/WebContent/static/easyui/themes/icons/man.png new file mode 100644 index 0000000..a8cafcb Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/man.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/mini_add.png b/SMMS/WebContent/static/easyui/themes/icons/mini_add.png new file mode 100644 index 0000000..fd82b92 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/mini_add.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/mini_edit.png b/SMMS/WebContent/static/easyui/themes/icons/mini_edit.png new file mode 100644 index 0000000..db9221a Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/mini_edit.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/mini_refresh.png b/SMMS/WebContent/static/easyui/themes/icons/mini_refresh.png new file mode 100644 index 0000000..6cdd016 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/mini_refresh.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/more.png b/SMMS/WebContent/static/easyui/themes/icons/more.png new file mode 100644 index 0000000..94922a2 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/more.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/no.png b/SMMS/WebContent/static/easyui/themes/icons/no.png new file mode 100644 index 0000000..37a7c74 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/no.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/note.png b/SMMS/WebContent/static/easyui/themes/icons/note.png new file mode 100644 index 0000000..244e6ca Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/note.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/ok.png b/SMMS/WebContent/static/easyui/themes/icons/ok.png new file mode 100644 index 0000000..5b0f6a6 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/ok.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/pencil.png b/SMMS/WebContent/static/easyui/themes/icons/pencil.png new file mode 100644 index 0000000..5b8cc89 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/pencil.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/pencil_add.png b/SMMS/WebContent/static/easyui/themes/icons/pencil_add.png new file mode 100644 index 0000000..902bbe6 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/pencil_add.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/print.png b/SMMS/WebContent/static/easyui/themes/icons/print.png new file mode 100644 index 0000000..fdf67a1 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/print.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/redo.png b/SMMS/WebContent/static/easyui/themes/icons/redo.png new file mode 100644 index 0000000..f1e45cf Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/redo.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/reload.png b/SMMS/WebContent/static/easyui/themes/icons/reload.png new file mode 100644 index 0000000..f51cab8 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/reload.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/search.png b/SMMS/WebContent/static/easyui/themes/icons/search.png new file mode 100644 index 0000000..6dd1931 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/search.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/set.png b/SMMS/WebContent/static/easyui/themes/icons/set.png new file mode 100644 index 0000000..d584957 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/set.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/sum.png b/SMMS/WebContent/static/easyui/themes/icons/sum.png new file mode 100644 index 0000000..fd7b32e Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/sum.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/text_list_bullets.png b/SMMS/WebContent/static/easyui/themes/icons/text_list_bullets.png new file mode 100644 index 0000000..4a8672b Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/text_list_bullets.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/text_list_numbers.png b/SMMS/WebContent/static/easyui/themes/icons/text_list_numbers.png new file mode 100644 index 0000000..33b0b8d Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/text_list_numbers.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/tip.png b/SMMS/WebContent/static/easyui/themes/icons/tip.png new file mode 100644 index 0000000..845e110 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/tip.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/undo.png b/SMMS/WebContent/static/easyui/themes/icons/undo.png new file mode 100644 index 0000000..6129fa0 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/undo.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/user_add.png b/SMMS/WebContent/static/easyui/themes/icons/user_add.png new file mode 100644 index 0000000..deae99b Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/user_add.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/user_gray.png b/SMMS/WebContent/static/easyui/themes/icons/user_gray.png new file mode 100644 index 0000000..8fd539e Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/user_gray.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/user_red.png b/SMMS/WebContent/static/easyui/themes/icons/user_red.png new file mode 100644 index 0000000..c6f66e8 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/user_red.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/vcard_edit.png b/SMMS/WebContent/static/easyui/themes/icons/vcard_edit.png new file mode 100644 index 0000000..ab0f6e7 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/vcard_edit.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/world.png b/SMMS/WebContent/static/easyui/themes/icons/world.png new file mode 100644 index 0000000..68f21d3 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/world.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/world_add.png b/SMMS/WebContent/static/easyui/themes/icons/world_add.png new file mode 100644 index 0000000..6d0d7f7 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/world_add.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/world_night.png b/SMMS/WebContent/static/easyui/themes/icons/world_night.png new file mode 100644 index 0000000..5b745ed Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/world_night.png differ diff --git a/SMMS/WebContent/static/easyui/themes/icons/zoom_in.png b/SMMS/WebContent/static/easyui/themes/icons/zoom_in.png new file mode 100644 index 0000000..cdf0a52 Binary files /dev/null and b/SMMS/WebContent/static/easyui/themes/icons/zoom_in.png differ diff --git a/SMMS/WebContent/static/easyui/themes/locale/easyui-lang-zh_CN.js b/SMMS/WebContent/static/easyui/themes/locale/easyui-lang-zh_CN.js new file mode 100644 index 0000000..7cf6044 --- /dev/null +++ b/SMMS/WebContent/static/easyui/themes/locale/easyui-lang-zh_CN.js @@ -0,0 +1,66 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = '第'; + $.fn.pagination.defaults.afterPageText = '共{pages}页'; + $.fn.pagination.defaults.displayMsg = '显示{from}到{to},共{total}记录'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = '正在处理,请稍待。。。'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = '确定'; + $.messager.defaults.cancel = '取消'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = '该输入项为必输项'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = '请输入有效的电子邮件地址'; + $.fn.validatebox.defaults.rules.url.message = '请输入有效的URL地址'; + $.fn.validatebox.defaults.rules.length.message = '输入内容长度必须介于{0}和{1}之间'; + $.fn.validatebox.defaults.rules.remote.message = '请修正该字段'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['日','一','二','三','四','五','六']; + $.fn.calendar.defaults.months = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = '今天'; + $.fn.datebox.defaults.closeText = '关闭'; + $.fn.datebox.defaults.okText = '确定'; + $.fn.datebox.defaults.formatter = function(date){ + var y = date.getFullYear(); + var m = date.getMonth()+1; + var d = date.getDate(); + return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d); + }; + $.fn.datebox.defaults.parser = function(s){ + if (!s) return new Date(); + var ss = s.split('-'); + var y = parseInt(ss[0],10); + var m = parseInt(ss[1],10); + var d = parseInt(ss[2],10); + if (!isNaN(y) && !isNaN(m) && !isNaN(d)){ + return new Date(y,m-1,d); + } else { + return new Date(); + } + }; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +if ($.fn.datetimespinner){ + $.fn.datetimespinner.defaults.selections = [[0,4],[5,7],[8,10],[11,13],[14,16],[17,19]] +} diff --git a/SMMS/WebContent/static/file/logo.jpg b/SMMS/WebContent/static/file/logo.jpg new file mode 100644 index 0000000..6bfb05c Binary files /dev/null and b/SMMS/WebContent/static/file/logo.jpg differ diff --git a/SMMS/WebContent/static/file/学生导入模板.xls b/SMMS/WebContent/static/file/学生导入模板.xls new file mode 100644 index 0000000..de3fe77 Binary files /dev/null and b/SMMS/WebContent/static/file/学生导入模板.xls differ diff --git a/SMMS/WebContent/static/h-ui/css/H-ui.css b/SMMS/WebContent/static/h-ui/css/H-ui.css new file mode 100644 index 0000000..0e4a134 --- /dev/null +++ b/SMMS/WebContent/static/h-ui/css/H-ui.css @@ -0,0 +1,3075 @@ +@charset "utf-8"; +/* -----------H-ui前端框架----------------------- +H-ui.css v2.1.23 +date: 2015-08-19 +Created & Modified by guojunhui. +完全免费,简单灵活,兼容性,满足大多数中国网站。 +不断完善中,诚邀更多前端开发者加入,开发更多优秀的代码,服务于更多的中国网站。 +H-ui CSS file for H-ui +Copyright 北京颖杰联创科技有限公司 All rights reserved. +http://www.H-ui.net/ +Hui-iconfont取自 alibaba Iconfont,授权依照 CC BY 3.0。 +----------------------------------------------*/ +/*------------------------------------ +结构目录: + 1. css reset重定义浏览器默认样式 + 2. 框架 + 2.1 响应式栅格系统 + 2.2 布局 + 3. 基础CSS + 3.1 排版 + 3.1.1 标题 + 3.1.2 强调 + 3.1.3 对齐 + 3.1.4 定位 + 3.1.5 浮动 + 3.1.6 文字单行溢出省略号 + 3.1.7 线条 + 3.1.8 外边距 + 3.1.9 内填充 + 3.1.10 边框,css3圆角 + 3.1.11 css3阴影 + 3.1.12 行内分割竖线 + 3.1.13 文字尺寸 + 3.1.14 文字行距 + 3.1.15 文字颜色 + 3.1.16 文字颜色强调 + 3.1.17 缩略语 + 3.1.18 地址 + 3.1.19 引用 + 3.1.20 上标 下标 + 3.1.21 内容样式 + 3.1.22 列表 + 3.1.23 描述 + 3.1.24 隐藏 显示 + 3.1.25 尺寸 + 3.2 代码 + 3.3 表格 + 3.4 表单 + 3.4.1 input,textarea 文本域 文本区域 + 3.4.2 radio,checkbox 单选 多选 + 3.4.3 select 下拉框 + 3.4.4 input-file 文件上传 + 3.4.5 表单布局 + 3.4.6 表单验证 + 3.5 按钮 + 3.6 图片 + 3.7 图标 + 3.8 动画 + 4. 组件 + 4.1 按钮组 + 4.2 导航 + 4.2.1 导航条 + 4.2.2 面包屑导航 + 4.2.3 翻页导航 + 4.2.4 顶部导航 + 4.2.5 向导 + 4.2.6 竖向导向tab导航 + 4.2.7 横向tab + 4.3 菜单 + 4.3.1 下拉菜单 + 4.3.2 横向菜单(暂无) + 4.3.3 树状菜单(暂无) + 4.4 幻灯片 + 4.5 选项卡 + 4.6 便签与标号 + 4.7 缩略图 + 4.8 警告 + 4.9 进度条 loading + 4.10 对话框 弹出层 + 4.11 客服 + 4.12 返回顶部 + 4.13 分享 + 4.14 面板 + 4.15 案例 + 4.16 滚动 + 4.17 搜索 + 4.18 广告 + 4.19 标签 + 4.19.1 标签输入效果 + 4.19.2 标签混排效果 + 4.19.3 tag云标签 + 4.20 折叠 + 4.21 遮罩条 + 4.22 评论列表 + 5. 页面 + 5.1 404页面 + 5.2 博客列表页(暂无) + 5.3 博客详情页(暂无) + 5.4 关于我们页(暂无) + 5.5 帮助列表页(暂无) + 5.6 帮助详情页(暂无) + +---------------------------------- +CSS写作注意事项: + 1. 页面编码规范 + 1.1. 统一使用 UTF-8 编码,用@charset "utf-8"指定页面编码。 + 1.2. 全局字体设置: + windows 7系统:微软雅黑 Arial; + windows XP及以下:新宋体,宋体,Arial + MAC默认字体:Helvetica Neue和Helvetica Hiragino Sans GB。 + 1.3. 中文字体使用编码转换,请参阅下节“中文字体css编码转换” + 1.4. 推荐使用216web安全色 + 2. 属性写在一行内,属性之间、属性名和值之间以及属性与“{}”之间应减少空格,去掉最后一个“;”,例如:.class{width:200px;height:100px} + 3. 属性的书写顺序: + 3.1. 按照元素模型由外及内,由整体到细节书写,大致分为五组: + 位置:position,left,right,float + 盒模型属性:display,margin,padding,width,height + 边框与背景:border,background + 段落与文本:line-height,text-indent,font,color,text-decoration,... + 其他属性:overflow,cursor,visibility,... + 3.2. 针对特殊浏览器的属性,应写在标准属性之前,例如:-webkit-box-shadow:;-moz-box-shadow:;box-shaow:; + 4. 带有前缀的属性,单独一行,通过缩进,让每个属性的值垂直对齐,方便编辑维护。 + 5. 谨慎添加新的选择符规则,尤其不可滥用 id,尽可能继承和复用已有样式 + 6. 选择符、属性、值均用小写(格式的颜色值除外),缩写的选择符名称须说明缩写前的全称,例如 .cl -> Clearfix + 7. 避免使用各种 CSS Hack,如需对 IE 进行特殊定义,请参阅下节“关于 CSS Hack 的说明” + 8. 勿使用冗余低效的 CSS 写法,例如:ul li a span{... } + 9. 慎用 !important + 10. 建议使用具有语义化的classname或id,请参阅下节“css 命名规范及对应的缩写” + 11.避免使用兼容性不好的使用滤镜 + 12.开发过程中的未定事项,须用 [!] 标出,以便于后续讨论整理。 + 13.注释格式,统一使用双斜杠加*。 + 14.上下模块之间的间距统一使用下一个模块的margin-top来实现,好处是:如果没有下一个模块也不会多出一段空隙。 + 15.hover,selected,disabled,current等具有特定意义的请勿直接占用。 + 16.:link :visited :hover :active书写顺序 L-V-H-A,速记:LoVe(喜欢)HAte(讨厌)。 + 17.不要使用 @import +---------------------------------- +中文字体css编码转换 + 微软雅黑 \5FAE\8F6F\96C5\9ED1 或 Microsoft YaHei + 黑体 \9ED1\4F53 + 新宋体 \65b0\5b8b\4f53 + 宋体 \5b8b\4f53 +---------------------------------- +关于 CSS Hack 的说明: + 1. _ IE6 + 2. * IE6/7 + 3. !important IE7/Firefox + 4. *+ IE7 + 5. \9 IE6/7/8 + 6. \0 IE8 + 7. 条件hack + IE7以下版本 + IE7 + IE8 + IE8以上 +---------------------------------- +css 命名规范 + 1. 内容优先,表现为辅 + 2. css命名中英文对照 + current 当前 hover 悬停 selected 挑选 disabled 禁用 focus 得到焦点 blur 失去焦点 checked 勾选 success 成功 error 出错 + + header(hd) 头部 content(cnt) 内容 title(tit) 标题 item 项目(条) cell 单元 image/pic(img) 图片 text(txt) 文字 top 顶部 scrubber 时序菜单 + + nav 导航 mainbav 主导航 subnav 子导航 topnav 顶部导航 breadcrumb 面包屑导航 + + flink 友情链接 footer 尾 copyright 版权 + + menu 菜单 submenu 子菜单 dropdown 下拉菜单 + + searchBar 搜索条 search 搜索条 searchTxt 搜索框 searchBtn 搜索按钮 search_key 搜索词 + + member 会员 ucenter 用户中心 loginBar 登陆条 login 登录 loginBtn 登录按钮 regsiter 注册按钮 btn-regsiter注册按钮 name 用户名 password 密码 nickname 昵称 mobilephone/mobile 手机 telephone/tel 电话 defaultavatar 默认头像 + + hot 热点 news 新闻 banner/AD 广告 download 下载 + + content 内容 title 标题 summary 摘要 time 时间 + + share 分享 digg 顶 like 喜欢 + + list 列表 pList 图片列表 tList 文字列表 tpList 图文列表 + + table 表格 row 行 column 列 gutter 间隔 viewport 视口 + + tab 标签 tags 标签 scroll 滚动 + + sidebar 侧边栏 column 栏目 section 区块 msg 提示信息 status 状态 vote 投票 tips 小技巧 guild 指南 note 注释 + + icon- 图标 btn- 按钮 + + goods 商品 goodsList 商品列表 goodsDetail 商品详情 goodsInfo 商品信息 + + tuan 团购 tuanList 团购列表 tuanDetail 团购详情 tuanInfo 团购信息 + + transition 动画 shadow 阴影 fade 淡入淡出 flip 翻页效 slide 滑动 slideup 上滑动 slidedown 下滑动 turn 翻页 horizontal 水平 vertical 垂直 collapsible 折叠 corners 拐角 flow 流 reverse 反向 pop 弹窗 + + count 总数/计数 plus 加号/正 minus 减号/负 controlgroup 控制组 +---------------------------------- +html命名规范: + default/index.html 首页 + 404.html 404错误页 + print.html 打印页 + header.html 页头 + footer.html 页脚 + sitemap.html 网站地图 + passport.html 通行证 + rank.html 排行榜 + roll.html 滚动新闻 + + solution.html 解决方案 + joinus.html 加入我们 + partner.html 合作伙伴 + service.html 服务 + aboutus.html 关于我们 + contact.html 联系我们 + company.html 公司介绍 + organization.html 组织结构 + culture.html 企业文化 + strategy.html 发展策略 + honor.html 公司荣誉 + aptitudes.html 企业资质 + events.html 大事记 + business.html 商务合作 + contract.html 服务条款 + privacy.html 隐私声明 + CSR.html 企业社会责任 + + news-开头.html 新闻相关 + article-开头.html 资讯相关 + picture-开头.html 图片相关 + photo-开头.html 相册相关 + product-开头.html 产品相关 + goods-开头.html 商品相关 + system-开头.html 系统相关 + tag-开头.html tag相关 + brand-开头.html 品牌相关 + help-开头.html 帮助相关 + member-开头.html 会员相关 + search-开头.html 搜索相关 +---------------------------------- */ +/*1 重定义浏览器默认样式 + Name: style_reset + Explain: 重定义浏览器默认样式 +*/ +*{word-wrap:break-word} +html,body,h1,h2,h3,h4,h5,h6,hr,p,iframe,dl,dt,dd,ul,ol,li,pre,form,button,input,textarea,th,td,fieldset{margin:0;padding:0} +ul,ol,dl{list-style-type:none} +html,body{*position:static} +html{font-family: sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%} +address,caption,cite,code,dfn,em,th,var{font-style:normal;font-weight:400} +input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit} +input,button{overflow: visible;vertical-align:middle;outline:none} +input[type="submit"],input[type="reset"],input[type="button"],input[type="text"],input[type="password"]{-webkit-appearance:none;outline:none} +body,th,td,button,input,select,textarea{font-family:"Microsoft Yahei","Hiragino Sans GB","Helvetica Neue",Helvetica,tahoma,arial,"WenQuanYi Micro Hei",Verdana,sans-serif,"\5B8B\4F53";font-size:12px;color: #333;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing:grayscale} +body{line-height:1.6} +h1,h2,h3,h4,h5,h6{font-size:100%} +a,area{outline:none;blr:expression(this.onFocus=this.blur())} +a{text-decoration:none;cursor: pointer} +a:hover{text-decoration:underline;outline:none} +a.ie6:hover{zoom:1} +a:focus{outline:none} +a:hover,a:active{outline:none}:focus{outline:none} +sub,sup{vertical-align:baseline} +button,input[type="button"], input[type="submit"] {line-height:normal !important} +/*img*/ +img{border:0;vertical-align:middle} +a img,img{-ms-interpolation-mode:bicubic} +@media (max-width:767px){ + .img-responsive{max-width:100%!important;height: auto!important} +} + +/*IE下a:hover 背景闪烁*/ +*html{overflow:-moz-scrollbars-vertical;zoom:expression(function(ele){ele.style.zoom = "1";document.execCommand("BackgroundImageCache",false,true)}(this))} + +/*HTML5 reset*/ +header,footer,section,aside,details,menu,article,section,nav,address,hgroup,figure,figcaption,legend{display:block;margin:0;padding:0}time{display:inline} +audio,canvas,video{display:inline-block;*display:inline;*zoom:1} +audio:not([controls]){display:none} +legend{width:100%;margin-bottom:20px;font-size:21px;line-height:40px;border:0;border-bottom:1px solid #e5e5e5} +legend small{font-size:15px;color:#999} +svg:not(:root) {overflow: hidden} +fieldset {border-width:0;padding: 0.35em 0.625em 0.75em;margin: 0 2px;border: 1px solid #c0c0c0} +input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button {height: auto} +input[type="search"] {-webkit-appearance: textfield; /* 1 */} +input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration {-webkit-appearance: none} +/*清楚浮动 + Name: style_clearfix + Example: class="clearfix|cl" + Explain: clearfix(简写cl)避免因子元素浮动而导致的父元素高度缺失能问题 +*/ +.cl:after,.clearfix:after{content:"\20";display:block;height:0;clear:both;visibility:hidden}.cl,.clearfix{zoom:1} + +/*2.1 栅格系统 + Name: style_span + Example: +
          +
          +
          ……
          + …… +
          +
          + Explain: 栅格系统 +*/ +/*2.1 响应式栅格系统*/ +.row.cl{} +.row{ box-sizing:border-box} +[class^="col-"],[class*=" col-"]{box-sizing:border-box; float:left;min-height: 1px;position: relative} +.col-1{width:8.33333%} +.col-2{width:16.66667%} +.col-3{width:25%} +.col-4{width:33.33333%} +.col-5{width:41.66667%} +.col-6{width:50%} +.col-7{width:58.33333%} +.col-8{width:66.66667%} +.col-9{width:75%} +.col-10{width:83.33333%} +.col-11{width:91.66667%} +.col-12{width:100%} + +.col-offset-0{margin-left:0} +.col-offset-1{margin-left:8.33333%} +.col-offset-2{margin-left:16.66667%} +.col-offset-3{margin-left:25%} +.col-offset-4{margin-left:33.33333%} +.col-offset-5{margin-left:41.66667%} +.col-offset-6{margin-left:50%} +.col-offset-7{margin-left:58.33333%} +.col-offset-8{margin-left:66.66667%} +.col-offset-9{margin-left:75%} +.col-offset-10{margin-left:83.33333%} +.col-offset-11{margin-left:91.66667%} + +.col-push-0{position:relative;left:0;right:auto} +.col-pull-0{right:0;left:auto} +.col-push-1{left:8.33333%;right:auto} +.col-pull-1{right:8.33333%;left:auto} +.col-push-2{left:16.66667%;right:auto} +.col-pull-2{right:16.66667%;left:auto} +.col-push-3{left:25%;right:auto} +.col-pull-3{right:25%;left:auto} +.col-push-4{left:33.33333%;right:auto} +.col-pull-4{right:33.33333%;left:auto} +.col-push-5{left:41.66667%;right:auto} +.col-pull-5{right:41.66667%;left:auto} +.col-push-6{left:50%;right:auto} +.col-pull-6{right:50%;left:auto} +.col-push-7{left:58.33333%;right:auto} +.col-pull-7{right:58.33333%;left:auto} +.col-push-8{left:66.66667%;right:auto} +.col-pull-8{right:66.66667%;left:auto} +.col-push-9{left:75%;right:auto} +.col-pull-9{right:75%;left:auto} +.col-push-10{left:83.33333%;right:auto} +.col-pull-10{right:83.33333%;left:auto} +.col-push-11{left:91.66667%;right:auto} +.col-pull-11{right:91.66667%;left:auto} +/*局部模块平分*/ +.col-1-1{ width:100%} +.col-2-1{ width:50%} +.col-3-1{ width:33.333333%} +.col-3-2{ width:66.666667%} +.col-4-1{ width:25%} +.col-4-3{ width:75%} +.col-5-1{ width:20%} +.col-5-2{ width:40%} +.col-5-3{ width:60%} +.col-5-4{ width:80%} +.col-6-1{ width:16.666667%} +.col-6-5{ width:83.333333%} + +@media (max-width:767px){ + .responsive [class^="col-"],.responsive [class*=" col-"]{float:none!important;width:auto!important} + .responsive [class^="col-offset-"],.responsive [class*=" col-offset-"]{ margin-left:0px!important} +} +@media(min-width:768px){ + .col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left;} + .col-sm-12{width:100%;} + .col-sm-11{width:91.66666666666666%;} + .col-sm-10{width:83.33333333333334%;} + .col-sm-9{width:75%;} + .col-sm-8{width:66.66666666666666%;} + .col-sm-7{width:58.333333333333336%;} + .col-sm-6{width:50%;} + .col-sm-5{width:41.66666666666667%;} + .col-sm-4{width:33.33333333333333%;} + .col-sm-3{width:25%;} + .col-sm-2{width:16.666666666666664%;} + .col-sm-1{width:8.333333333333332%;} + .col-sm-pull-12{right:100%;} + .col-sm-pull-11{right:91.66666666666666%;} + .col-sm-pull-10{right:83.33333333333334%;} + .col-sm-pull-9{right:75%;} + .col-sm-pull-8{right:66.66666666666666%;} + .col-sm-pull-7{right:58.333333333333336%;} + .col-sm-pull-6{right:50%;} + .col-sm-pull-5{right:41.66666666666667%;} + .col-sm-pull-4{right:33.33333333333333%;} + .col-sm-pull-3{right:25%;} + .col-sm-pull-2{right:16.666666666666664%;} + .col-sm-pull-1{right:8.333333333333332%;} + .col-sm-pull-0{right:0;} + .col-sm-push-12{left:100%;} + .col-sm-push-11{left:91.66666666666666%;} + .col-sm-push-10{left:83.33333333333334%;} + .col-sm-push-9{left:75%;} + .col-sm-push-8{left:66.66666666666666%;} + .col-sm-push-7{left:58.333333333333336%;} + .col-sm-push-6{left:50%;} + .col-sm-push-5{left:41.66666666666667%;} + .col-sm-push-4{left:33.33333333333333%;} + .col-sm-push-3{left:25%;} + .col-sm-push-2{left:16.666666666666664%;} + .col-sm-push-1{left:8.333333333333332%;} + .col-sm-push-0{left:0;} + .col-sm-offset-12{margin-left:100%;} + .col-sm-offset-11{margin-left:91.66666666666666%;} + .col-sm-offset-10{margin-left:83.33333333333334%;} + .col-sm-offset-9{margin-left:75%;} + .col-sm-offset-8{margin-left:66.66666666666666%;} + .col-sm-offset-7{margin-left:58.333333333333336%;} + .col-sm-offset-6{margin-left:50%;} + .col-sm-offset-5{margin-left:41.66666666666667%;} + .col-sm-offset-4{margin-left:33.33333333333333%;} + .col-sm-offset-3{margin-left:25%;} + .col-sm-offset-2{margin-left:16.666666666666664%;} + .col-sm-offset-1{margin-left:8.333333333333332%;} + .col-sm-offset-0{margin-left:0;} +} +@media(min-width:992px){ + .col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left;} + .col-md-12{width:100%;} + .col-md-11{width:91.66666666666666%;} + .col-md-10{width:83.33333333333334%;} + .col-md-9{width:75%;} + .col-md-8{width:66.66666666666666%;} + .col-md-7{width:58.333333333333336%;} + .col-md-6{width:50%;} + .col-md-5{width:41.66666666666667%;} + .col-md-4{width:33.33333333333333%;} + .col-md-3{width:25%;} + .col-md-2{width:16.666666666666664%;} + .col-md-1{width:8.333333333333332%;} + .col-md-pull-12{right:100%;} + .col-md-pull-11{right:91.66666666666666%;} + .col-md-pull-10{right:83.33333333333334%;} + .col-md-pull-9{right:75%;} + .col-md-pull-8{right:66.66666666666666%;} + .col-md-pull-7{right:58.333333333333336%;} + .col-md-pull-6{right:50%;} + .col-md-pull-5{right:41.66666666666667%;} + .col-md-pull-4{right:33.33333333333333%;} + .col-md-pull-3{right:25%;} + .col-md-pull-2{right:16.666666666666664%;} + .col-md-pull-1{right:8.333333333333332%;} + .col-md-pull-0{right:0;} + .col-md-push-12{left:100%;} + .col-md-push-11{left:91.66666666666666%;} + .col-md-push-10{left:83.33333333333334%;} + .col-md-push-9{left:75%;} + .col-md-push-8{left:66.66666666666666%;} + .col-md-push-7{left:58.333333333333336%;} + .col-md-push-6{left:50%;} + .col-md-push-5{left:41.66666666666667%;} + .col-md-push-4{left:33.33333333333333%;} + .col-md-push-3{left:25%;} + .col-md-push-2{left:16.666666666666664%;} + .col-md-push-1{left:8.333333333333332%;} + .col-md-push-0{left:0;} + .col-md-offset-12{margin-left:100%;} + .col-md-offset-11{margin-left:91.66666666666666%;} + .col-md-offset-10{margin-left:83.33333333333334%;} + .col-md-offset-9{margin-left:75%;} + .col-md-offset-8{margin-left:66.66666666666666%;} + .col-md-offset-7{margin-left:58.333333333333336%;} + .col-md-offset-6{margin-left:50%;} + .col-md-offset-5{margin-left:41.66666666666667%;} + .col-md-offset-4{margin-left:33.33333333333333%;} + .col-md-offset-3{margin-left:25%;} + .col-md-offset-2{margin-left:16.666666666666664%;} + .col-md-offset-1{margin-left:8.333333333333332%;} + .col-md-offset-0{margin-left:0;} +} +@media(min-width:1200px){ + .col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left;} + .col-lg-12{width:100%;} + .col-lg-11{width:91.66666666666666%;} + .col-lg-10{width:83.33333333333334%;} + .col-lg-9{width:75%;} + .col-lg-8{width:66.66666666666666%;} + .col-lg-7{width:58.333333333333336%;} + .col-lg-6{width:50%;} + .col-lg-5{width:41.66666666666667%;} + .col-lg-4{width:33.33333333333333%;} + .col-lg-3{width:25%;} + .col-lg-2{width:16.666666666666664%;} + .col-lg-1{width:8.333333333333332%;} + .col-lg-pull-12{right:100%;} + .col-lg-pull-11{right:91.66666666666666%;} + .col-lg-pull-10{right:83.33333333333334%;} + .col-lg-pull-9{right:75%;} + .col-lg-pull-8{right:66.66666666666666%;} + .col-lg-pull-7{right:58.333333333333336%;} + .col-lg-pull-6{right:50%;} + .col-lg-pull-5{right:41.66666666666667%;} + .col-lg-pull-4{right:33.33333333333333%;} + .col-lg-pull-3{right:25%;} + .col-lg-pull-2{right:16.666666666666664%;} + .col-lg-pull-1{right:8.333333333333332%;} + .col-lg-pull-0{right:0;} + .col-lg-push-12{left:100%;} + .col-lg-push-11{left:91.66666666666666%;} + .col-lg-push-10{left:83.33333333333334%;} + .col-lg-push-9{left:75%;} + .col-lg-push-8{left:66.66666666666666%;} + .col-lg-push-7{left:58.333333333333336%;} + .col-lg-push-6{left:50%;} + .col-lg-push-5{left:41.66666666666667%;} + .col-lg-push-4{left:33.33333333333333%;} + .col-lg-push-3{left:25%;} + .col-lg-push-2{left:16.666666666666664%;} + .col-lg-push-1{left:8.333333333333332%;} + .col-lg-push-0{left:0;} + .col-lg-offset-12{margin-left:100%;} + .col-lg-offset-11{margin-left:91.66666666666666%;} + .col-lg-offset-10{margin-left:83.33333333333334%;} + .col-lg-offset-9{margin-left:75%;} + .col-lg-offset-8{margin-left:66.66666666666666%;} + .col-lg-offset-7{margin-left:58.333333333333336%;} + .col-lg-offset-6{margin-left:50%;} + .col-lg-offset-5{margin-left:41.66666666666667%;} + .col-lg-offset-4{margin-left:33.33333333333333%;} + .col-lg-offset-3{margin-left:25%;} + .col-lg-offset-2{margin-left:16.666666666666664%;} + .col-lg-offset-1{margin-left:8.333333333333332%;} + .col-lg-offset-0{margin-left:0;} +} +/*2.2 布局 + Name: style_Layout + Explain: 左右两栏|左中右三栏|上中下 + Last Modify: guojunhui +*/ +.Hui-wraper,.wp,.container{margin-left:auto;margin-right:auto;text-align:left} +.container-fluid{ width:100%} +.minWP{} +.sd{float:right} +.ct2 .mn{float:left} +.ct2 .sd{float:right} +.ct2_r .leftmenu{float:left} +.ct2_r .mn{float:right} +.ct3 .app{float:left;margin-right:20px} +.ct3 .mn{float:left;border-left:solid 1px #ddd} +.ct3 .sd{float:right} +.w-1000{width:1000px} +.w-980{width:980px} +.w-300{width:300px} +.w-200{width:200px} +@media (max-width: 1000px) { + .Hui-wraper,.wp,.container{ width:auto!important;padding:0 10px!important} +} + +@media print{ + .Hui-wraper,.container{width:auto} +} + + +/*3.0 基础样式*/ +/*3.1 排版*/ +/*3.1.1 标题 + Example: +

          h1. 大标题小标题

          +

          h2. 大标题小标题

          +

          h3. 大标题小标题

          +

          h4. 大标题小标题

          +
          h5. 大标题小标题
          +
          h6. 大标题小标题
          +*/ +h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.1;color:inherit} +h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small{font-weight:400;line-height:1;color:#999} +h1,h2,h3{padding-top:20px;padding-bottom:10px} +h1 small,h2 small,h3 small,h1 .small,h2 .small,h3 .small{font-size:65%} +h4,h5,h6{margin-top:10px;margin-bottom:10px} +h4 small,h5 small,h6 small,h4 .small,h5 .small,h6 .small{font-size:75%} +h1{font-size:36px} +h2{font-size:30px} +h3{font-size:24px} +h4{font-size:18px} +h5{font-size:14px} +h6{font-size:12px} + +/*3.1.2 强调 + Example: +

          这是段落,向下10像素间距

          + 小型文本,是父容器字体大小的85% + 重要文本,加粗显示 + 被强调的文本,斜体显示 + 带下划线的文本 + 引用 + 突出显示文本 + 带删除线的文本 +
          预格式化的文本
          +*/ +p{margin-bottom:10px} /*段落*/ +small{font-size:85%} /*小型文本*/ +b,strong {font-weight: bold} /*重要的文本,加粗*/ +em{font-style:italic} /*被强调的文本*/ +i{} /*斜体*/ +u{} /*加下划线*/ +cite{font-style:normal} /*引用*/ +mark{color:#000;background:#ff0}/*突出显示文本*/ +var{} /*变量*/ +kbd{} /*键盘文本*/ +code{} /*计算机代码文本*/ +dfn{font-style: italic} /*一个定义项目*/ +del{font-family:Simsun} /*删除线*/ +code,kbd,pre,samp {font-family: monospace, serif;font-size: 1em} +pre{white-space: pre-wrap} /*预格式化的文本*/ +.uppercase{text-transform:uppercase} /*文字大写*/ +.lowercase{text-transform:lowercase} /*文字小写*/ +.capitalize{text-transform:capitalize} /*首字母大写*/ +.en{font-family:Arial!important} +/*3.1.3 对齐 + Name: style_text-align + Example: class="text-l|text-r|text-c|va-t|va-m|va-b" + Explain: .text-水平对齐 (.text-l左对齐|.text-r右对齐|.text-c居中对齐) + .va-上下对齐 (.va-t 居上对齐|.va-m 居中对齐|.va-b 居下对齐) +*/ +.text-l{text-align:left}.text-r{text-align:right}.text-c{text-align:center} +.va *{vertical-align:sub!important;*vertical-align:middle!important;_vertical-align:middle!important} +.va-t{vertical-align:top!important}.va-m{vertical-align:middle!important}.va-b{vertical-align:bottom!important} +/*3.1.4 定位 + Name: style_position + Example: class="pos-r|pos-a|pos-f" + Explain: .pos-r 相对定位|.pos-a 绝对定位|.pos-f 固定 +*/ +.pos-r{position:relative}.pos-a{position:absolute}.pos-f{position:fixed} +/*3.1.5 浮动 + Name: style_float + Example: class="l|r" + Explain: .l 左浮动|.r 右浮动 +*/ +.l,.f-l{float:left!important;_display:inline} +.r,.f-r{float:right!important;_display:inline} + +[class*="span"].r, +[class*="span"].f-r{float:right} + +/*控制元素对定位的位置:居左|居右|j居上|居下*/ +.left{ left:0; right:auto} +.right{ right:0; left:auto} +.top{ top:auto; bottom:0} +.bottom{ top:0; bottom:auto} + +/*3.1.6 文字单行溢出省略号 + Name: style_text-overflow + Example: class="text-overflow" +*/ +.text-overflow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap} +/*3.1.7 线条 + Name: style_line + Example: class="line" +*/ +.line{font-size: 0px; line-height: 0px; border-top: solid 1px #eee; float: none} +/*3.1.8 外边距 + Name: style_margin + Example: class="mt-5|mt-10..." + Explain: .mt表示上边距|.mb表示下边距|.ml表示左边距|.mr表示右边距 +*/ +.mt-5{margin-top:5px}.mt-10{margin-top:10px}.mt-15{margin-top:15px}.mt-20{margin-top:20px}.mt-25{margin-top:25px}.mt-30{margin-top:30px}.mt-35{margin-top:35px}.mt-40{margin-top:40px}.mt-50{margin-top:50px} +.mb-5{margin-bottom:5px}.mb-10{margin-bottom:10px}.mb-15{margin-bottom:15px}.mb-20{margin-bottom:20px}.mb-30{margin-bottom:30px}.mb-40{margin-bottom:40px}.mb-50{margin-bottom:50px} +.ml-5{margin-left:5px}.ml-10{margin-left:10px}.ml-15{margin-left:15px}.ml-20{margin-left:20px}.ml-30{margin-left:30px}.ml-40{margin-left:40px}.ml-50{margin-left:50px} +.mr-5{margin-right:5px}.mr-10{margin-right:10px}.mr-15{margin-right:15px}.mr-20{margin-right:20px}.mr-30{margin-right:30px}.mr-40{margin-right:40px}.mr-50{margin-right:50px} +/*3.1.9 内填充 + Name: style_padding + Example: class="pt-5|pt-10|……" + Explain: .pt表示上填充|.pb表示下填充|.pl表示左填充|.pr表示右填充 +*/ +.pt-5{padding-top:5px}.pt-10{padding-top:10px}.pt-20{padding-top:20px} +.pb-5{padding-bottom:5px}.pb-10{padding-bottom:10px}.pb-20{padding-bottom:20px} +.pl-5{padding-left:5px}.pl-10{padding-left:10px}.pl-20{padding-left:20px} +.pr-5{padding-right:5px}.pr-10{padding-right:10px}.pr-20{padding-right:20px} +.pd-5{padding:5px}.pd-10{padding:10px}.pd-15{padding:15px}.pd-20{padding:20px}.pd-30{padding:30px}.pd-40{padding:40px} +/*3.1.10 边框,css3圆角 + Name: style-border + Example: class="bk_gray radius" + Explain: .bk_gray 边框|radius 圆角|round 椭圆 | circle 圆形 +*/ +.bk-gray{border:solid 1px #eee} +.radius{border-radius:4px; overflow:hidden;} +.size-MINI.radius{ border-radius:3px} +.size-L.radius{ border-radius:5px} +.size-XL.radius{ border-radius:6px} +.round{border-radius:1000px; overflow:hidden;} +.circle{ border-radius:50%; overflow:hidden;} +/*3.1.11 css3阴影 + Name: style_shadow + Example: class="box_shadow|text-shadow" + Explain: box_shadow 块级元素阴影,全局样式,可用在表格,文本框,文本域,div等块级元素上。 + text-shadow 文字阴影 +*/ +.box-shadow{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.1);box-shadow:0 1px 2px rgba(0,0,0,0.1);} +.text-shadow{-webkit-text-shadow:0 0 2px rgba(0,0,0,0.2);text-shadow:0 0 2px rgba(0,0,0,0.2);} +/*3.1.12 行内分割竖线 + Name: style_pipe + Example: | +*/ +.pipe{margin:0 5px;color:#CCC;font-size:10px!important} +/*3.1.13 文字尺寸 + Name: style_font-size + Example: class="f-12|f-14|f-16|f-18|f-20|f-24|f-26|f-28|f-30" + Explain: 12px字体|14px字体|16px字体|18px字体|20px字体|24px字体|26px字体|28px字体|30px字体 +*/ +.f-12{font-size:12px}.f-14{font-size:14px}.f-16{font-size:16px}.f-18{font-size:18px}.f-20{font-size:20px}.f-24{font-size:24px}.f-26{font-size:26px}.f-28{font-size:28px}.f-30{font-size:30px} +/*3.1.14 文字行距 + Name: mod_line-height + Example: class="lh-16|lh-18|lh-20|lh-22|lh-24|lh-26|lh-28|lh-30" + Explain: 16px行高|18px行高|20px行高|22px行高|24px行高|26px行高|30px行高 +*/ +.lh-16{line-height:16px}.lh-18{line-height:18px}.lh-20{line-height:20px}.lh-22{line-height:22px}.lh-24{line-height:24px}.lh-26{line-height:26px}.lh-28{line-height:28px}.lh-30{line-height:30px} +/*2.0以前的兼容版本*/ +.l16{line-height:16px}.l18{line-height:18px}.l20{line-height:20px}.l22{line-height:22px}.l-24{line-height:24px}.l-26{line-height:26px}.l-28{line-height:28px}.l-30{line-height:30px} + +/*3.1.15 文字颜色 + Name: style_color + Example: class="c-primary|c-sub|c-success|c-danger|c-warning|c-333|c-666|c-999|c-red|c-green|c-blue|c-white|c-black|c-orange" + Explain: 主要颜色|次主色|强调色—成功|强调色—危险|强调色—警告色|强调色—错误色|次主色—浅黑|辅助色—灰色|标准色—红色|标准色—绿色|标准色—蓝色|标准色—白色|标准色—黑色|标准色—橙色 +*/ +/*全局默认链接颜色*/ +body{ background-color:#fff; color:#333} +.bg-fff{ background-color:#fff} +a{color:#333} +a:hover{color:#06c} + +/*主要颜色*/ +.c-primary,.c-primary a,a.c-primary{color:#5a98de} +.c-primary a:hover,a.c-primary:hover{ color:#5a98de} +/*次主色*/ +.c-secondary,.c-secondary a,a.c-secondary{color:#555} +.c-secondary a:hover,a.c-secondary:hover{ color:#555} + +/*强调色—成功*/ +.c-success,.c-success a,a.c-success{color:#5eb95e} +.c-success a:hover,a.c-success:hover{ color:#5eb95e} + +/*强调色—危险*/ +.c-danger,.c-danger a,a.c-danger{color:#dd514c} +.c-danger a:hover,a.c-danger:hover{ color:#dd514c} + +/*强调色—警告*/ +.c-warning,.c-warning a,a.c-warning{color:#f37b1d} +.c-warning a:hover,a.c-warning:hover{ color:#f37b1d} + +/*强调色—错误*/ +.c-error,.c-error a,a.c-error{color:#c00} +.c-error a:hover,a.c-error:hover{ color:#c00} + +/*辅助色—浅黑*/ +.c-333,.c-333 a,a.c-333{color:#333} +.c-333 a:hover,a.c-333:hover{ color:#333} + +/*辅助色—灰色*/ +.c-666,.c-666 a,a.c-666{color:#666} +.c-666 a:hover,a.c-666:hover{ color:#666} +.c-999,.c-999 a,a.c-999{color:#999} +.c-999 a:hover,a.c-999:hover{color:#999} + +/*标准色—红色*/ +.c-red,.c-red a,a.c-red{color:red} +.c-red a:hover,a.c-red:hover{ color:#red} +/*标准色—绿色*/ +.c-green,.c-green a,a.c-green{color:green} +.c-red a:hover,a.c-red:hover{color:green} +/*标准色—蓝色*/ +.c-blue,.c-blue a,a.c-blue{color:blue} +.c-blue a:hover,a.c-blue:hover{color:blue} +/*标准色—白色*/ +.c-white,.c-white a,a.c-white{color:white} +.c-white a:hover,a.c-white:hover{color:white} +/*标准色—黑色*/ +.c-black,.c-black a{color:black} +.c-black a:hover,a.c-black:hover{color:black} +/*标准色—橙色*/ +.c-orange,.c-orange a,a.c-orange{color:orange} +.c-orange a:hover,a.c-orange:hover{color:orange} + +/*3.1.16 文字颜色强调 从2.0起废弃3.1.16 文字强调,字体颜色全部放入到3.1.15 + Example: class="text-muted|text-primary|text-warning|text-error|text-danger|text-success|text-info" + Explain: 柔和|重要|警告|错误|危险|成功|信息 +*/ + + +/*3.1.17 缩略语 + Example: UI + Explain: +*/ +abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999} +abbr.initialism{font-size:90%;text-transform:uppercase} +/*3.1.18 地址 + Example:
          北京市海淀区上地……
          + Explain: +*/ +address{display:block;margin-bottom:20px;font-style:normal;line-height:20px} +/*3.1.19 引用 + Example:
          这是引用的内容
          + Explain: +*/ +blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee} +blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25} +blockquote small{display:block;line-height:20px;color:#999} +blockquote small:before{content:'\2014 \00A0'} +blockquote.text-r{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0} +blockquote.text-r p,blockquote.text-r small{text-align:right} +blockquote.text-r small:before{content:''} +blockquote.text-r small:after{content:'\00A0 \2014'} +q:before,q:after,blockquote:before,blockquote:after{content:""} +q {/*短的引用*/quotes: "\201C" "\201D" "\2018" "\2019"} +/*3.1.20 上标,下标 + Example: 2 2 + Explain: 上标|下标 +*/ +sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline} +sup{top:-0.5em}sub{bottom:-0.25em} +/*3.1.21 内容样式 + Name: style_content + Example:

          ……

          + Explain: 内容样式 +*/ +.content{position:relative;font-size:14px;line-height:1.6;overflow:hidden;text-align:left} +.content h3{margin-top:20px;font-size:16px} +.content p{margin-top:20px} + .indent{ text-indent:2em} +.content img{max-width:100%} +.content ul{text-indent:2em} +@media (max-width: 480px) { + .content img{max-width:100%!important; height:auto!important;width:expression(this.width > 320 ? "320px" : this.width)!important} + *html .content img{width:expression(this.width>320&&this.width>this.height?320:auto)} +} +/*3.1.22 列表 + Name: style_ulolli + Example:
          • 无序列表
          • 无序列表
          • 无序列表
          +
          1. 有序列表
          2. 有序列表
          3. 有序列表
          + Explain: +*/ +ul.unstyled,ol.unstyled{margin-left:0;list-style:none} +ul.inline,ol.inline{margin-left:0;list-style:none} +ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1} +.tlist li{line-height:22px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}/*禁止换行*/ + .dot-1{padding-left:10px;background:url(../images/dot_1.gif) no-repeat 3px center}/*圆点*/ + .box-1{padding-left:10px;background:url(../images/box_1.gif) no-repeat 3px center}/*小方块*/ + .jt-1{padding-left:18px;background:url(../images/jt_1.gif) no-repeat 3px center}/*箭头1*/ + .jt-2{padding-left:18px;background:url(../images/jt_2.gif) no-repeat 3px center}/*箭头2*/ + .jt-3{padding-left:18px;background:url(../images/jt_3.gif) no-repeat 3px center}/*箭头3*/ +/*排行榜*/ +/*
          1. 1排行榜列表12
          */ +.top-list li{height: 20px;line-height: 20px;margin-bottom: 15px;overflow: hidden;padding-left: 30px;position: relative;text-overflow: ellipsis;vertical-align: bottom;white-space: nowrap} +.top-list em {background-color: #F8F8F8;border: 1px solid #EBEBEB;color: #333;height: 18px;left: 0;line-height: 18px;position: absolute;text-align: center;top: 0;width: 20px; font-style:normal} +.top-list .top em{background-color:#390;border:none;color: #fff;height: 20px;line-height: 20px;width: 22px} +.top-list .date {color: #999;font-size: 12px;position: absolute;right: 0;top: 0} +.tlist .time{font-size:12px; font-family:Arial; color:#999} + +.listview{} +/*横向手机 竖向平板*/ +@media (max-width: 767px) { + .tlist li{position:relative; font-size:18px;border-bottom: 1px solid #eee} + .tlist li a{display:block;padding:0.7em 30px 0.7em 12px} + .dot_1{padding-left:0px} + .night .tlist li{border-bottom: 1px solid #1F1F1F} + .tlist .time{display:none} + .tlist i {background:url(../images/article/arrow.png) no-repeat 0 0; background-size:9px auto; height: 15px;margin-top: -7px;position: absolute;right:10px;top: 50%;width: 9px} + .night .tlist i{background-position:0 -75px} + +} +/*3.1.23 描述 + Name: style_dldtdd + Example:
          H-ui
          基于Bootstrap框架的改进扩展的前端框架
          + Explain: .dl-horizontal 水平描述,默认不加为垂直模式。 +*/ +.dl-horizontal.cl{} +.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap} +.dl-horizontal dd{margin-left:180px} +/*3.1.24 隐藏 显示 + Name: style_display + Example:
          隐藏的内容
          显示的内容
          + Explain: .hide 隐藏 / .show 显示 +*/ +.hide{display:none}[hidden]{display: none} +.hidden{display:none!important;visibility:hidden!important} +.f-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0} +[class*="span"].hide,.row-fluid [class*="span"].hide{display:none} +.show{display:block} +.invisible{visibility:hidden} + +/*3.1.25 尺寸 新增尺寸全局类名,用于表单、按钮、表格、头像、标签等元素上,要与元素一起配合使用,方能看到效果*/ +.size-MINI{}/*迷你*/ +.size-S{}/*小*/ +.size-M{}/*中 缺省默认尺寸,可以不写,可以理解为:均码*/ +.size-L{}/*L*/ +.size-XL{}/*大*/ +.size-XXL{}/*加大*/ +.size-XXXL{}/*超大*/ + +.input-text,.btn,.input-text.size-M,.btn.size-M{ font-size:14px; height:31px;line-height:1.42857;padding:4px}/*默认为M,可以不写,可以理解为:均码*/ +a.btn,a.btn.size-M,span.btn,span.btn.size-M{ line-height:21px} +.btn,.btn.size-M{ padding:4px 12px} + +.input-text.size-MINI,.btn.size-MINI{font-size:12px; height:23px;padding:1px 2px;line-height:1.42857}/*迷你*/ +a.btn.size-MINI,span.btn.size-MINI{ line-height:21px} +.btn.size-MINI{ padding:1px 4px} + +.input-text.size-S,.btn.size-S{font-size:12px; height:27px;padding:3px;line-height:1.42857}/*小*/ +a.btn.size-S,span.btn.size-S{ line-height:19px} +.btn.size-S{ padding:3px 8px} + +.input-text.size-L,.btn.size-L{font-size:16px; height:41px; padding:8px}/*大*/ +a.btn.size-L,span.btn.size-L{ line-height:23px} +.btn.size-L{ padding:8px 16px} + +.input-text.size-XL,.btn.size-XL{font-size:18px; height:48px; padding:10px}/*特大*/ +a.btn.size-XL,span.btn.size-XL{ line-height:26px} +.btn.size-XL{ padding:10px 24px} + +@media (max-width: 767px) { + .responsive .input-text.size-MINI,.responsive .btn.size-MINI{height:24px} + .responsive .input-text.size-S,.responsive .btn.size-S{ font-size:14px; height:30px} + .responsive .input-text,.btn,.responsive .input-text.size-M,.responsive .btn.size-M{ font-size:16px; height:36px} + .responsive .input-text.size-L,.responsive .btn.size-L{ font-size:18px; height:42px} + .responsive .input-text.size-XL,.responsive .btn.size-XL{ font-size:20px; height:48px} +} + +/*3.2 代码 + Name: style_pre + + Example: ,
          转义过的代码
          + Explain: code:行内代码,pre:基本代码块;包装代码片段,.prettyprint颜色增强/.linenums显示行号 +*/ +code{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace} +pre .title,pre .keyword,pre .body,pre .des{color:#333}/*关键词*/ + +pre{display:block;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;padding:9.5px;margin-bottom:10px;font-size:12px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px;color:#333} +.prettyprint{margin-bottom:20px;padding:8px;background-color:#f7f7f9;border:1px solid #e1e1e8} +.prettyprint .com { color: #998;font-style:italic }/*注释*/ +.prettyprint .tag{color:#007}/*标签*/ +.prettyprint .lit { color: #195f91} +.prettyprint .pun,.prettyprint .opn,.prettyprint .clo { color: #93a1a1}/*等于*/ +.prettyprint .fun { color: #dc322f} +.prettyprint .str,.prettyprint .atv { color: #D14}/*值*/ +.prettyprint .kwd,.prettyprint .prettyprint .tag { color: #1e347b} +.prettyprint .typ,.prettyprint .atn,.prettyprint .dec,.prettyprint .var { color: teal}/*文档声明,属性*/ +.prettyprint .pln { color: #48484c} + +.prettyprint.linenums{box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0} +.pre-scrollable{max-height:340px;overflow-y:scroll} +ol.linenums{list-style:decimal outside none; margin-left:20px} +ol.linenums li{ line-height:28px; padding-left:10px} +pre ol.linenums{margin:0 0 0 33px} +pre ol.linenums li{padding-left:12px;color:#bbb;line-height:18px;text-shadow:0 1px 0 #fff} + +@media (max-width: 767px) { + pre ol.linenums{ margin-left:0; list-style:none} +} + +/*3.3 表格 + Name: style_table + Example:
          + Explain: 表格,None无样式,仅仅有列和行|.table行与行之间以水平线相隔|.table-bordered表格外围均有外边框|.table-striped奇数行背景设为浅灰色|.table-condensed竖直方向padding缩减一半,从8px变为4px,所有的 td 和 th 元素都受影响 +*/ +/*默认table*/ +table{width:100%;empty-cells:show;background-color:transparent;border-collapse:collapse;border-spacing:0} +table th{text-align:left; font-weight:400} +/*带水平线*/ +.table th{font-weight:bold} +.table th,.table td{padding:8px;line-height:20px} +.table td{text-align:left} +.table tbody tr.success > td{background-color:#dff0d8} +.table tbody tr.error > td{background-color:#f2dede} +.table tbody tr.warning > td{background-color:#fcf8e3} +.table tbody tr.info > td{background-color:#d9edf7} +.table tbody + tbody{border-top:2px solid #ddd} +.table .table{background-color:#fff} + +/*带横向分割线*/ +.table-border{border-top:1px solid #ddd} +.table-border th,.table-border td{border-bottom:1px solid #ddd} + +/*th带背景*/ +.table-bg thead th{background-color:#F5FAFE} +/*带外边框*/ +.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0} +.table-bordered th,.table-bordered td{border-left:1px solid #ddd} +.table-border.table-bordered{border-bottom:0} + +/*奇数行背景设为浅灰色*/ +.table-striped tbody > tr:nth-child(odd) > td,.table-striped tbody > tr:nth-child(odd) > th{background-color:#f9f9f9} +/*竖直方向padding缩减一半*/ +.table-condensed th,.table-condensed td{padding:4px 5px} +/*鼠标悬停样式*/ +.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color: #f5f5f5} +/*鼠标选择整行样式*/ +.table tbody tr.selected td{background-color:#F3F3F3} +/*定义颜色*/ +/*悬停在行*/ +.table tbody tr.active,.table tbody tr.active>td,.table tbody tr.active>th,.table tbody tr .active{background-color:#F5F5F5!important} +/*成功或积极*/ +.table tbody tr.success,.table tbody tr.success>td,.table tbody tr.success>th,.table tbody tr .success{background-color:#DFF0D8!important} + +/*警告或出错*/ +.table tbody tr.warning,.table tbody tr.warning>td,.table tbody tr.warning>th,.table tbody tr .warning{background-color:#FCF8E3!important} +/*危险*/ +.table tbody tr.danger,.table tbody tr.danger>td,.table tbody tr.danger>th,.table tbody tr .danger{background-color:#F2DEDE!important} + +/*表格文字对齐方式,默认是居左对齐*/ +.table .text-c th,.table .text-c td{text-align:center}/*整行居中*/ +.table .text-r th,.table .text-r td{text-align:right}/*整行居右*/ +.table th.text-l,.table td.text-l{text-align:left!important}/*单独列居左*/ +.table th.text-c,.table td.text-c{text-align:center!important}/*单独列居中*/ +.table th.text-r,.table td.text-r{text-align:right!important}/*单独列居右*/ + +/*datatable*/ +table.dataTable {border-collapse: separate;border-spacing: 0;clear: both} +table.dataTable thead .sorting_asc, table.dataTable thead .sorting_desc, table.dataTable thead .sorting {cursor: pointer; background-repeat:no-repeat;background-position:right center} +table.dataTable thead .sorting{background-image:url(../images/sort_both.png)} +table.dataTable thead .sorting_asc {background-image:url(../images/sort_asc.png)} +table.dataTable thead .sorting_desc {background-image:url(../images/sort_desc.png)} +.dataTable td.sorting_1 {background-color: #f5fafe} +.dataTables_wrapper .dataTables_length {float: left;padding-bottom:20px} +.dataTables_wrapper .dataTables_length .select{ width:50px} +.dataTables_wrapper .dataTables_filter {float: right;text-align: right} +.dataTables_wrapper .dataTables_filter .input-text { width:auto} +.dataTables_wrapper .dataTables_info {clear: both;float: left;padding-top:10px;font-size:14px; color:#666} +.dataTables_wrapper .dataTables_paginate {float: right;padding-top:10px;text-align: right} +.dataTables_wrapper .dataTables_paginate .paginate_button {border: 1px solid #ccc;cursor: pointer;display: inline-block;margin-left: 2px;text-align: center;text-decoration: none;color: #666;height: 26px;line-height: 26px;text-decoration: none;margin: 0 0px 6px 6px;padding: 0 10px;font-size:14px} +.dataTables_wrapper .dataTables_paginate .paginate_button:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {background:#5a98de;color:#fff} + +/*表格尺寸*/ +.table.size-MINI{}/*迷你*/ +.table.size-S{}/*小*/ +.table.size-M{}/*中*/ +.table.size-L{}/*默认为L,可以不写,可以理解为:均码*/ +.table.size-XL{}/*大*/ +.table.size-XXL{}/*加大*/ +.table.size-XXXL{}/*超大*/ + +/*让表格支持响应式*/ +/* +
          + + ... +
          +
          +*/ +@media (max-width: 767px) { + table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-x: scroll; + overflow-y: hidden; + border: 1px solid #dddddd; + -ms-overflow-style: -ms-autohiding-scrollbar; + -webkit-overflow-scrolling: touch} + table-responsive > .table { + margin-bottom: 0} + table-responsive > .table > thead > tr > th, + table-responsive > .table > tbody > tr > th, + table-responsive > .table > tfoot > tr > th, + table-responsive > .table > thead > tr > td, + table-responsive > .table > tbody > tr > td, + table-responsive > .table > tfoot > tr > td { + white-space: nowrap} + table-responsive > .table-bordered { + border: 0} + table-responsive > .table-bordered > thead > tr > th:first-child, + table-responsive > .table-bordered > tbody > tr > th:first-child, + table-responsive > .table-bordered > tfoot > tr > th:first-child, + table-responsive > .table-bordered > thead > tr > td:first-child, + table-responsive > .table-bordered > tbody > tr > td:first-child, + table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0} + table-responsive > .table-bordered > thead > tr > th:last-child, + table-responsive > .table-bordered > tbody > tr > th:last-child, + table-responsive > .table-bordered > tfoot > tr > th:last-child, + table-responsive > .table-bordered > thead > tr > td:last-child, + table-responsive > .table-bordered > tbody > tr > td:last-child, + table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0} + table-responsive > .table-bordered > tbody > tr:last-child > th, + table-responsive > .table-bordered > tfoot > tr:last-child > th, + table-responsive > .table-bordered > tbody > tr:last-child > td, + table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0} +} + +/*3.4 表单 + Name: style_form + Example: + Explain: + +*/ +/*3.4.1 input,textarea 文本域 文本区域*/ +/*默认状态*/ +.input-text,.textarea{box-sizing:border-box;border:solid 1px #ddd;width:100%; + -webkit-transition:all 0.2s linear 0s; + -moz-transition:all 0.2s linear 0s; + -o-transition:all 0.2s linear 0s; + transition:all 0.2s linear 0s} +.textarea{ height:100px; resize:none; font-size:14px; padding:4px} + .textarea-numberbar{ position:absolute; right:20px; bottom:5px; z-index:1; margin-bottom:0} + .textarea-length{ font-style:normal} +.input-text:hover,.textarea:hover{border: solid 1px #3bb4f2} +/*得到焦点后*/ +.input-text.focus,textarea.focus{border:solid 1px #0f9ae0 \9;border-color:rgba(82,168,236,0.8);box-shadow:0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 8px rgba(102, 175, 233, 0.6)} +/*不可点击*/ +.input-text.disabled,.textarea.disabled,.input-text.disabled.focus,.textarea.disabled.focus{background-color:#ededed; cursor:default;border-color: #ddd; + -webkit-box-shadow:inset 0 2px 2px #e8e7e7; + -moz-box-shadow:inset 0 2px 2px #e8e7e7; + box-shadow:inset 0 2px 2px #e8e7e7} +/*只读状态*/ +.input-text.disabled,.textarea.disabled{background-color:#e6e6e6; cursor:default} +/*阴影*/ +.input-text.box-shadow,.textarea.box-shadow{-ms-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)} +/*行内元素*/ +.input-text.inline{ display:inline-block; width:auto} + +/*3.4.2 checkbox radio 单选 多选 + Example: +
          +
          + + +
          +
          + +
          +
          + + +
          +
          + Explain: +*/ +input[type="radio"],input[type="checkbox"] {line-height: normal; margin-top:-4px} +.check-box,.radio-box{ display:inline-block; box-sizing:border-box; cursor:pointer; position:relative; padding-left:30px; padding-right:20px} +.icheckbox, +.icheckbox-red, +.icheckbox-green, +.icheckbox-blue, +.icheckbox-aero, +.icheckbox-grey, +.icheckbox-orange, +.icheckbox-yellow, +.icheckbox-pink, +.icheckbox-purple, +.iradio, +.iradio-red, +.iradio-green, +.iradio-blue, +.iradio-aero, +.iradio-grey, +.iradio-orange, +.iradio-yellow, +.iradio-pink, +.iradio-purple {position: absolute;top:4px;left: 0} +@media (max-width: 767px) { + .responsive .check-box,.responsive .radio-box{ display:block} +} + +/*3.4.3 select 下拉框 + + + + Explain: + select 是表单元素中最难美化的一个,有两种美化方式: + 1、修改源生的,修改有限,只能修改个边框,背景,字体。优点:程序方便操作;缺点:丑,浏览器之间存在很大差异。 + 2、将源生的隐藏掉,用其他元素(如div li)通过js模拟下拉交互,然后再传值给源生的select。优点:好看,兼容好;缺点:代码冗余,依赖JS,不方便操作 +*/ +/*方法一、修改源生*/ +.select-box{border:solid 1px #ddd;box-sizing:border-box;vertical-align:middle; width:100%; display:inline-block} + .select{border:solid 1px #ddd;box-sizing:border-box;cursor: pointer;line-height:normal;font-weight: normal;width:100%} +.select-box .select{ border:none} +.select-box.inline,.select-box.inline .select{ width:auto} + +.select-box, +.select-box.size-M{height:31px;padding:4px 5px} + .select,.size-M .select{font-size: 14px} + +.select-box.size-MINI{height:23px;padding:0px 5px} + .size-MINI .select{font-size: 12px} + +.select-box.size-S{height:27px;padding:3px 5px} + .size-S .select{font-size: 12px} + +.select-box.size-L{height:41px;padding:8px 5px} + .size-L .select{font-size: 16px} + +.select-box.size-XL{height:48px;padding:10px 5px} + .size-XL .select{font-size: 18px} + +@media (max-width: 767px) { + .responsive .select-box{ border:none} + .responsive .select-box .select,.responsive .select{border:solid 1px #ddd; padding:10px;font-size:16px} + .responsive .select-box,.responsive .select-box.size-M,.responsive .select-box.size-MINI,.responsive .select-box.size-S,.responsive .select-box.size-L,.responsive .select-box.size-XL{ height:auto; padding:0} +} + +/*方法二、JS模拟 + +需要引用2个js文件 + + +页面调用方法 + +*/ +.select-wrapper {position:relative; display:inline-block;font-size:14px;cursor:default} +.select-default{zoom: 1;display:block; padding-left:10px; padding-right:30px;background-color:#fff;border:solid 1px #d0d0d0;height:34px;line-height:34px} +.jsselect.radius{ overflow:visible} +.jsselect.radius .select-default{ border-radius:4px} +.jsselect.radius .select-list{border-radius:4px;border-top-left-radius:0;border-top-right-radius:0} +.select-icon {position: absolute;height:8px;width:12px;right:10px;top:50%; margin-top:-4px;background: url(../images/iconpic-arrow-down2.png) no-repeat center} +.select-icon:hover {} +.unselectable {-moz-user-select: none;-khtml-user-select: none;-webkit-user-select: none;-o-user-select: none;user-select: none} +.select-list {position:absolute;left:0; right:0;top:100%;z-index:1;line-height:34px;max-height:320px; overflow:auto;_height:expression(this.scrollHeight > 319 ? "320px" : "auto");background-color:#fff;background-clip: padding-box;-moz-box-shadow:0 1px 2px rgba(0, 1, 1, 0.2);-webkit-box-shadow:0 1px 2px rgba(0, 1, 1, 0.2);box-shadow:0 1px 2px rgba(0, 1, 1, 0.2);box-sizing:border-box;border:solid 1px #d0d0d0;behavior: url(../lib/ie-css3.htc)} +.select-item {margin: 0;padding: 0} +.select-option {background:#fff;line-height:34px;text-align:left;white-space:nowrap; cursor:pointer; border-bottom:1px solid #f2f2f2; padding:0 10px} +.select-item .selected {background-color:#148cf1;color:#fff} + +/*3.4.4 input-file 文件上传 + Example: + + 󰀠 浏览文件 + + Explain:把文件选择域设为透明,通过绝对定位覆盖在长的好看的按钮上面。 +*/ +.btn-upload{position: relative; display:inline-block;height:31px; *display:inline;overflow:hidden;vertical-align:middle;cursor:pointer} + .upload-url{cursor: pointer; width:300px} + .input-file{position:absolute; right:0; top:0; cursor: pointer; z-index:1; font-size:30em;opacity:0;filter: alpha(opacity=0)} +.form-group .upload-btn{ margin-left:-1px} +.btn-upload .icon-add,.btn-upload .icon-minus{cursor: pointer;display: inline-block;font-family: Arial;font-size: 30px;height: 31px;line-height: 31px;text-align: center;vertical-align: middle;width: 36px} +@media (max-width: 767px) { + /*.btn-upload{ position:static} + .input-file{ position:static; opacity:1; font-size:16px}*/ + .upload-btn{ display:none} + .upload-url{ display:none} +} + +/*数字表单*/ +.numberControlBox{display:inline-block;overflow:hidden;vertical-align: middle} +.ncb-up,.ncb-down{font-size:0px;display:block;height:10px;background-color:#f4f4f4;background:-moz-linear-gradient(top,rgb(255,255,255) 0%,rgb(230,230,230) 50%,rgb(255,255,255) 100%);width:24px;border:1px solid #d1d1d1;cursor:pointer} +.ncb-up{margin-bottom:1px} +.numberControlBox .ncb_ico{display:block;height:10px;background-image:url(../img/icon-arrow.png);background-repeat:no-repeat} +.ncb-up .ncb_ico{background-position: -22px center} +.ncb-down .ncb_ico{background-position: 1px center} +.ncb_btn_hover{border:1px solid #9dc7e7;background-color:#dff2fc;background:-moz-linear-gradient(top,rgb(255,255,255) 0%,rgb(210,237,250) 50%,rgb(255,255,255) 100%)} +.ncb_btn_selected{border:1px solid #6198c2;background-color:#aee1fb;background:-moz-linear-gradient(top,rgb(255,255,255) 0%,rgb(174,225,251) 50%,rgb(255,255,255) 100%)} +.input-text[type="number"]{width:80px} + +/*3.4.5 表单布局*/ +label,.placeholder{font-size:14px} +.form legend{font-size:20px}/*表单名称*/ +.form .row{margin-top:15px}/*表单行*/ + .form-label{display:block; color:#555}/*表单标题*/ + .formControls{position:relative}/*表单控制区*/ + .formControls > *{vertical-align:middle} + .placeholder{position:absolute; left:4px; top:4px;color:#c6c6c6; cursor:text}/*表单默认值*/ +.form-horizontal .row{display:table;width:100%} +.form-horizontal .form-label{margin-top:3px;cursor:text;text-align:right;padding-right:10px} +.form-horizontal .formControls{ padding-right:10px} +.form-horizontal .Validform_checktip{ margin-top:5px} +/*设置placeholder颜色*/ +::-webkit-input-placeholder {color:#b3b3b3}/* WebKit browsers */ +:-moz-placeholder {color:#b3b3b3}/* Mozilla Firefox 4 to 18 */ +::-moz-placeholder {color:#b3b3b3}/* Mozilla Firefox 19+ */ +:-ms-input-placeholder {color:#b3b3b3}/* Internet Explorer 10+ */ +.placeholder{color:#adb0be; position:absolute; z-index:9}/*不兼容placeholder属性的浏览器,可使用表单默认值*/ +@media (max-width: 767px) { + .responsive .form-label{ text-align:left;padding-right:0; font-size:16px; float:none} + .responsive .formControls{ padding-right:0; float:none; margin-top:10px} +} +/*3.4.6 表单验证*/ +/*文本框的错误状态*/ +.Validform_error{background-color:#fbe2e2; border-color:#c66161; color:#c00} +.Validform_wrong,.Validform_right,.Validform_warning{display:inline-block;height:20px;font-size:12px;vertical-align:middle; padding-left:25px} +/*错误*/ +.Validform_wrong{background:url(../images/icon_error_s.png) no-repeat 0 center;color:#ef392b} +/*正确*/ +.Validform_right{background:url(../images/icon_right_s.png) no-repeat 0 center} +/*警告*/ +.Validform_warning{background:url(../images/icon_warning_s.png) no-repeat 0 center;color:#777} + +/*密码等级*/ +.passwordStrength b{font-weight:400} +.passwordStrength b,.passwordStrength span{display:inline-block; vertical-align:middle;line-height:16px;line-height:18px\9;height:16px} +.passwordStrength span{width:57px;text-align:center;background-color:#d0d0d0; border-right:1px solid #fff} +.passwordStrength .last{border-right:none} +.passwordStrength .bgStrength{color:#fff;background-color:#fcc900} +/*Validform对话框*/ +#Validform_msg{font-size:14px;width:300px; -webkit-box-shadow:2px 2px 3px #aaa; -moz-box-shadow:2px 2px 3px #aaa; background:#fff; position:absolute; top:0px; right:50px; z-index:99999; display:none;filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color='#999999'); box-shadow: 2px 2px 0 rgba(0, 0, 0, 0.1)} +#Validform_msg .iframe{position:absolute; left:0px; top:-1px; z-index:-1} +#Validform_msg .Validform_title{font-size:20px; padding:10px;text-align:left;color:#fff; position:relative; background-color:#fcc900} +#Validform_msg a.Validform_close:link,#Validform_msg a.Validform_close:visited{position:absolute; right:8px; top:6px; color:#fff; text-decoration:none; font-family:Verdana} +#Validform_msg a.Validform_close:hover{color:#fff} +#Validform_msg .Validform_info{padding:10px;border:1px solid #bbb; border-top:none; text-align:left} +@media (max-width: 767px) { + .responsive .Validform_checktip{margin-top:10px} +} +/*3.5 按钮 + Name: style_button + Example: + Explain: btn-primary:主要|btn-info:信息|btn-success:成功|btn-warning:警告|btn-danger:危险|btn-inverse:反向|btn-link:链接 + +*/ +/*关闭*/ +.close{font-size:20px;color: #000;text-shadow: 0 1px 0 #fff;opacity: 0.2;filter: alpha(opacity=20)} +.close:hover,.close:focus{color: #000;text-decoration: none;cursor: pointer;opacity: 0.4;filter: alpha(opacity=40)} + +button.close{padding:0;cursor:pointer;background:transparent;border: 0;-webkit-appearance: none} +/*按钮*/ +.btn{display:inline-block;box-sizing:border-box;cursor:pointer;text-align:center;font-weight:400;white-space:nowrap;vertical-align: middle;-moz-padding-start:npx; -moz-padding-end:npx;border:solid 1px #ddd; background-color:#fff; width:auto;*zoom:1;*overflow:visible; + -webkit-transition:background-color .1s linear; + -moz-transition:background-color .1s linear; + -o-transition:background-color .1s linear; + transition:background-color .1s linear} +a.btn:hover,a.btn:focus,a.btn:active,a.btn.active,a.btn.disabled,a.btn[disabled]{text-decoration:none} +.btn:active,.btn.active{background-color:#ccc} +.btn:first-child{*margin-left:0} +.btn.active,.btn:active{-moz-box-shadow:0 1px 8px rgba(0, 0, 0, 0.125) inset;-webkit-box-shadow:0 1px 8px rgba(0, 0, 0, 0.125) inset; box-shadow:0 1px 8px rgba(0, 0, 0, 0.125) inset} + +/*默认——灰色 通常用于取消*/ +.btn-default{background-color:#e6e6e6;border-color:#e6e6e6} +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active{color:#333;background-color:#c7c7c7;border-color:#c7c7c7} + +/*主要——主色 通常用于确定、提交、购买、支付等*/ +.btn-primary{color:#fff;background-color:#5a98de; border-color:#5a98de} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active{color:#fff;background-color:#0a6999;border-color:#0a6999} + +/*次要按钮*/ +.btn-secondary{color:#fff;background-color:#3bb4f2; border-color:#3bb4f2} +.btn-secondary:hover, +.btn-secondary:focus, +.btn-secondary:active, +.btn-secondary.active{color:#fff;background-color:#0f9ae0;border-color:#0f9ae0} + +/*成功*/ +.btn-success{color:#fff;background-color:#5eb95e; border-color:#5eb95e} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active{color:#fff;background-color:#429842;border-color:#429842} + +/*警告*/ +.btn-warning{color:#fff;background-color:#f37b1d; border-color:#f37b1d} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active{color:#fff;background-color:#c85e0b;border-color:#c85e0b} + +/*危险*/ +.btn-danger{color:#fff;background-color:#dd514c; border-color:#dd514c} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active{color:#fff;background-color:#c62b26;border-color:#c62b26} + +/*链接*/ +.btn-link{color:#0e90d2;cursor:pointer;border-color:transparent;background-color:transparent} +.btn-link:hover, +.btn-link:focus, +.btn-link:active, +.btn-link.active{color:#095f8a;text-decoration:underline;background-color:transparent} + +/*禁用状态*/ +.btn.disabled{cursor:not-allowed;background-image:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none; pointer-events:none} + +/*块级按钮*/ +.btn-block {-moz-box-sizing: border-box;display: block;padding-left: 0;padding-right: 0;width: 100%} + +/*表单组*/ +.form-group{ display:inline-block;vertical-align:middle} +.form-group .input-text{ position:relative; vertical-align:top} +.form-group.radius .input-text{border-radius:4px 0 0 4px} +.form-group.round .input-text{border-radius:1000px 0 0 1000px} +.form-group .btn{position:relative;margin-left:-1px} +.form-group.radius .btn{ border-radius:0 4px 4px 0} +.form-group.round .btn{ border-radius:0 1000px 1000px 0} + +/*3.6 图片*/ +.duang-opacity img{-webkit-transition:opacity .1s linear;-moz-transition:opacity .1s linear;-o-transition:opacity .1s linear;transition:opacity .1s linear} +.duang-opacity a:hover img,a:hover .opacity img{opacity:0.85;filter: alpha(opacity=85)} +/*3.6.1 图集效果 + Name: modal_album + Example: +
          +
          + +
          +
          《仙剑奇侠传》赵灵儿(20张)
          +
          +
          +
          +
          +
          */ +.album-item{} + .album-img{ border:1px solid #e0e0e0} + .album-img img{ display:block} + .album-title{display:block;text-align:left;padding:7px 5px;line-height:18px;color:#555;text-decoration:none;font-size:12px;border:solid 1px #e0e0e0;border-top:0} + .album-bg-Fir,.album-bg-Sec{border:1px solid #e6e6e6;border-top:1px solid #f5f5f5;height:1px;margin:0 auto;overflow:hidden} + .album-bg-Fir{ margin:0 3px} + .album-bg-Sec{ margin:0 6px} + +/*3.6.2 头像 + Name: mod_avatar + Example: +*/ +.avatar{display:inline-block;position:relative; overflow:hidden} +.avatar img{ display:block} +.avatar.radius,.avatar.radius img{border-radius:50%} +.avatar,.avatar img{width:32px; height:32px} +.avatar.size-MINI{ width:16px;height:16px} +.avatar.size-S,.avatar.size-S img{width:24px; height:24px} +.avatar.size-M,.avatar.size-M img{width:32px; height:32px}/*默认为中,可以不写,可以理解为:均码*/ +.avatar.size-L,.avatar.size-L img{width:40px; height:40px} +.avatar.size-XL,.avatar.size-XL img{width:64px; height:64px} +.avatar.size-XXL,.avatar.size-XXL img{width:100px; height:100px} +.avatar.size-XXXL,.avatar.size-XXXL img{width:128px; height:128px} + +/*3.7 图标 +H-ui采用Font Awesome 3.2.1的整套图标,因为是图标字体,所以可以像控制字体那样随心所欲改变这些图标的颜色、大小、阴影以及任何CSS能控制的属性 +*/ +.iconpic{display:inline-block; vertical-align:sub;*vertical-align:middle;_vertical-align:middle; width:16px; height:16px; background-position:center; background-repeat:no-repeat} +/*3.8 效果 + Name: style_animation + Example: +*/ +/* duang 加特效 */ +.hui-bounce,.hui-flip,.hui-flash,.hui-shake,.hui-swing,.hui-wobble,.hui-ring{-webkit-animation:1s ease;-moz-animation:1s ease;-ms-animation:1s ease;animation:1s ease} +.hui-fadein,.hui-fadeinT,.hui-fadeinR,.hui-fadeinB,.hui-fadeinL,.hui-bouncein,.hui-bounceinT,.hui-bounceinR,.hui-bounceinB,.hui-bounceinL,.hui-rotatein,.hui-rotateinLT,.hui-rotateinLB,.hui-rotateinRT,.hui-rotateinRB,.hui-flipin,.hui-flipinX,.hui-flipinY{-webkit-animation:1s ease-out backwards;-moz-animation:1s ease-out backwards;-ms-animation:1s ease-out backwards;animation:1s ease-out backwards} +.hui-fadeout,.hui-fadeoutT,.hui-fadeoutR,.hui-fadeoutB,.hui-fadeoutL,.hui-bounceout,.hui-bounceoutT,.hui-bounceoutR,.hui-bounceoutB,.hui-bounceoutL,.hui-rotateout,.hui-rotateoutLT,.hui-rotateoutLB,.hui-rotateoutRT,.hui-rotateoutRB,.hui-flipout,.hui-flipoutX,.hui-flipoutY{-webkit-animation:1s ease-in forwards;-moz-animation:1s ease-in forwards;-ms-animation:1s ease-in forwards;animation:1s ease-in forwards} + +/* 淡入 */ +.hui-fadein{-webkit-animation-name:fadein;-moz-animation-name:fadein;-ms-animation-name:fadein;animation-name:fadein} +/* 淡入-从上 */ +.hui-fadeinT{-webkit-animation-name:fadeinT;-moz-animation-name:fadeinT;-ms-animation-name:fadeinT;animation-name:fadeinT} +/* 淡入-从右 */ +.hui-fadeinR{-webkit-animation-name:fadeinR;-moz-animation-name:fadeinR;-ms-animation-name:fadeinR;animation-name:fadeinR} +/* 淡入-从下 */ +.hui-fadeinB{-webkit-animation-name:fadeinB;-moz-animation-name:fadeinB;-ms-animation-name:fadeinB;animation-name:fadeinB} +/* 淡入-从左 */ +.hui-fadeinL{-webkit-animation-name:fadeinL;-moz-animation-name:fadeinL;-ms-animation-name:fadeinL;animation-name:fadeinL} +/* 淡出 */ +.hui-fadeout{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-ms-animation-name:fadeout;animation-name:fadeout} + +/* 淡出-向上 */ +.hui-fadeoutT{-webkit-animation-name:fadeoutT;-moz-animation-name:fadeoutT;-ms-animation-name:fadeoutT;animation-name:fadeoutT} +/* 淡出-向右 */ +.hui-fadeoutR{-webkit-animation-name:fadeoutR;-moz-animation-name:fadeoutR;-ms-animation-name:fadeoutR;animation-name:fadeoutR} +/* 淡出-向下 */ +.hui-fadeoutB{-webkit-animation-name:fadeoutB;-moz-animation-name:fadeoutB;-ms-animation-name:fadeoutB;animation-name:fadeoutB} +/* 淡出-向左 */ +.hui-fadeoutL{-webkit-animation-name:fadeoutL;-moz-animation-name:fadeoutL;-ms-animation-name:fadeoutL;animation-name:fadeoutL} + +/* 弹跳 */ +.hui-bounce{-webkit-animation-name:bounce;-moz-animation-name:bounce;-ms-animation-name:bounce;animation-name:bounce} + +/* 弹入 */ +.hui-bouncein{-webkit-animation-name:bouncein;-moz-animation-name:bouncein;-ms-animation-name:bouncein;animation-name:bouncein} +/* 弹入-从上 */ +.hui-bounceinT{-webkit-animation-name:bounceinT;-moz-animation-name:bounceinT;-ms-animation-name:bounceinT;animation-name:bounceinT} +/* 弹入-从右 */ +.hui-bounceinR{-webkit-animation-name:bounceinR;-moz-animation-name:bounceinR;-ms-animation-name:bounceinR;animation-name:bounceinR} +/* 弹入-从下 */ +.hui-bounceinB{-webkit-animation-name:bounceinB;-moz-animation-name:bounceinB;-ms-animation-name:bounceinB;animation-name:bounceinB} +/* 弹入-从左 */ +.hui-bounceinL{-webkit-animation-name:bounceinL;-moz-animation-name:bounceinL;-ms-animation-name:bounceinL;animation-name:bounceinL} + +/* 弹出 */ +.hui-bounceout{-webkit-animation-name:bounceout;-moz-animation-name:bounceout;-ms-animation-name:bounceout;animation-name:bounceout} +/* 弹出-向上 */ +.hui-bounceoutT{-webkit-animation-name:bounceoutT;-moz-animation-name:bounceoutT;-ms-animation-name:bounceoutT;animation-name:bounceoutT} +/* 弹出-向右 */ +.hui-bounceoutR{-webkit-animation-name:bounceoutR;-moz-animation-name:bounceoutR;-ms-animation-name:bounceoutR;animation-name:bounceoutR} +/* 弹出-向下 */ +.hui-bounceoutB{-webkit-animation-name:bounceoutB;-moz-animation-name:bounceoutB;-ms-animation-name:bounceoutB;animation-name:bounceoutB} +/* 弹出-向左 */ +.hui-bounceoutL{-webkit-animation-name:bounceoutL;-moz-animation-name:bounceoutL;-ms-animation-name:bounceoutL;animation-name:bounceoutL} + +/* 转入 */ +.hui-rotatein{-webkit-animation-name:rotatein;-moz-animation-name:rotatein;-ms-animation-name:rotatein;animation-name:rotatein} +/* 转入-从左上 */ +.hui-rotateinLT{-webkit-animation-name:rotateinLT;-moz-animation-name:rotateinLT;-ms-animation-name:rotateinLT;animation-name:rotateinLT} +/* 转入-从左下 */ +.hui-rotateinLB{-webkit-animation-name:rotateinLB;-moz-animation-name:rotateinLB;-ms-animation-name:rotateinLB;animation-name:rotateinLB} +/* 转入-从右上 */ +.hui-rotateinRT{-webkit-animation-name:rotateinRT;-moz-animation-name:rotateinRT;-ms-animation-name:rotateinRT;animation-name:rotateinRT} +/* 转入-从右下*/ +.hui-rotateinRB{-webkit-animation-name:rotateinRB;-moz-animation-name:rotateinRB;-ms-animation-name:rotateinRB;animation-name:rotateinRB} + +/* 转出 */ +.hui-rotateout{-webkit-animation-name:rotateout;-moz-animation-name:rotateout;-ms-animation-name:rotateout;animation-name:rotateout} +/* 转出-向左上 */ +.hui-rotateoutLT{-webkit-animation-name:rotateoutLT;-moz-animation-name:rotateoutLT;-ms-animation-name:rotateoutLT;animation-name:rotateoutLT} +/* 转出-向左下 */ +.hui-rotateoutLB{-webkit-animation-name:rotateoutLB;-moz-animation-name:rotateoutLB;-ms-animation-name:rotateoutLB;animation-name:rotateoutLB} +/* 转出-向右上 */ +.hui-rotateoutRT{-webkit-animation-name:rotateoutRT;-moz-animation-name:rotateoutRT;-ms-animation-name:rotateoutRT;animation-name:rotateoutRT} +/* 转出-向右下 */ +.hui-rotateoutRB{-webkit-animation-name:rotateoutRB;-moz-animation-name:rotateoutRB;-ms-animation-name:rotateoutRB;animation-name:rotateoutRB} + +/* 翻转 */ +.hui-flip{-webkit-animation-name:flip;-moz-animation-name:flip;-ms-animation-name:flip;animation-name:flip} +/* 翻入-X轴 */ +.hui-flipinX{-webkit-animation-name:flipinX;-moz-animation-name:flipinX;-ms-animation-name:flipinX;animation-name:flipinX} +/* 翻入-Y轴 */ +.hui-flipin,.hui-flipinY{-webkit-animation-name:flipinY;-moz-animation-name:flipinY;-ms-animation-name:flipinY;animation-name:flipinY} +/* 翻出-X轴 */ +.hui-flipoutX{-webkit-animation-name:flipoutX;-moz-animation-name:flipoutX;-ms-animation-name:flipoutX;animation-name:flipoutX} +/* 翻出-Y轴 */ +.hui-flipout,.hui-flipoutY{-webkit-animation-name:flipoutY;-moz-animation-name:flipoutY;-ms-animation-name:flipoutY;animation-name:flipoutY} + +/* 闪烁 */ +.hui-flash{-webkit-animation-name:flash;-moz-animation-name:flash;-ms-animation-name:flash;animation-name:flash} +/* 震颤 */ +.hui-shake{-webkit-animation-name:shake;-moz-animation-name:shake;-ms-animation-name:shake;animation-name:shake} +/* 摇摆 */ +.hui-swing{-webkit-animation-name:swing;-moz-animation-name:swing;-ms-animation-name:swing;animation-name:swing} +/* 摇晃 */ +.hui-wobble{-webkit-animation-name:wobble;-moz-animation-name:wobble;-ms-animation-name:wobble;animation-name:wobble} +/* 震铃 */ +.hui-ring{-webkit-animation-name:ring;-moz-animation-name:ring;-ms-animation-name:ring;animation-name:ring} +/* define */ +/* 淡入 */ +@-webkit-keyframes fadein{ + 0%{opacity:0} + 100%{opacity:1} +} +@-moz-keyframes fadein{ + 0%{opacity:0} + 100%{opacity:1} +} +@-ms-keyframes fadein{ + 0%{opacity:0} + 100%{opacity:1} +} +@keyframes fadein{ + 0%{opacity:0} + 100%{opacity:1} +} +/* 淡入-从上 */ +@-webkit-keyframes fadeinT{ + 0%{opacity:0;-webkit-transform:translateY(-100px)} + 100%{opacity:1;-webkit-transform:translateY(0)} +} +@-moz-keyframes fadeinT{ + 0%{opacity:0;-moz-transform:translateY(-100px)} + 100%{opacity:1;-moz-transform:translateY(0)} +} +@-ms-keyframes fadeinT{ + 0%{opacity:0;-ms-transform:translateY(-100px)} + 100%{opacity:1;-ms-transform:translateY(0)} +} +@keyframes fadeinT{ + 0%{opacity:0;transform:translateY(-100px)} + 100%{opacity:1;transform:translateY(0)} +} +/* 淡入-从右 */ +@-webkit-keyframes fadeinR{ + 0%{opacity:0;-webkit-transform:translateX(100px)} + 100%{opacity:1;-webkit-transform:translateX(0)} +} +@-moz-keyframes fadeinR{ + 0%{opacity:0;-moz-transform:translateX(100px)} + 100%{opacity:1;-moz-transform:translateX(0)} +} +@-ms-keyframes fadeinR{ + 0%{opacity:0;-ms-transform:translateX(100px)} + 100%{opacity:1;-ms-transform:translateX(0)} +} +@keyframes fadeinR{ + 0%{opacity:0;transform:translateX(100px)} + 100%{opacity:1;transform:translateX(0)} +} +/* 淡入-从下 */ +@-webkit-keyframes fadeinB{ + 0%{opacity:0;-webkit-transform:translateY(100px)} + 100%{opacity:1;-webkit-transform:translateY(0)} +} +@-moz-keyframes fadeinB{ + 0%{opacity:0;-moz-transform:translateY(100px)} + 100%{opacity:1;-moz-transform:translateY(0)} +} +@-ms-keyframes fadeinB{ + 0%{opacity:0;-ms-transform:translateY(100px)} + 100%{opacity:1;-ms-transform:translateY(0)} +} +@keyframes fadeinB{ + 0%{opacity:0;transform:translateY(100px)} + 100%{opacity:1;transform:translateY(0)} +} +/* 淡入-从左 */ +@-webkit-keyframes fadeinL{ + 0%{opacity:0;-webkit-transform:translateX(-100px)} + 100%{opacity:1;-webkit-transform:translateX(0)} +} +@-moz-keyframes fadeinL{ + 0%{opacity:0;-moz-transform:translateX(-100px)} + 100%{opacity:1;-moz-transform:translateX(0)} +} +@-ms-keyframes fadeinL{ + 0%{opacity:0;-ms-transform:translateX(-100px)} + 100%{opacity:1;-ms-transform:translateX(0)} +} +@keyframes fadeinL{ + 0%{opacity:0;transform:translateX(-100px)} + 100%{opacity:1;transform:translateX(0)} +} +/* 淡出 */ +@-webkit-keyframes fadeout{ + 0%{opacity:1} + 100%{opacity:0} +} +@-moz-keyframes fadeout{ + 0%{opacity:1} + 100%{opacity:0} +} +@-ms-keyframes fadeout{ + 0%{opacity:1} + 100%{opacity:0} +} +@keyframes fadeout{ + 0%{opacity:1} + 100%{opacity:0} +} +/* 淡出-向上 */ +@-webkit-keyframes fadeoutT{ + 0%{opacity:1;-webkit-transform:translateY(0)} + 100%{opacity:0;-webkit-transform:translateY(-100px)} +} +@-moz-keyframes fadeoutT{ + 0%{opacity:1;-moz-transform:translateY(0)} + 100%{opacity:0;-moz-transform:translateY(-100px)} +} +@-ms-keyframes fadeoutT{ + 0%{opacity:1;-ms-transform:translateY(0)} + 100%{opacity:0;-ms-transform:translateY(-100px)} +} +@keyframes fadeoutT{ + 0%{opacity:1;transform:translateY(0)} + 100%{opacity:0;transform:translateY(-100px)} +} +/* 淡出-向右 */ +@-webkit-keyframes fadeoutR{ + 0%{opacity:1;-webkit-transform:translateX(0)} + 100%{opacity:0;-webkit-transform:translateX(100px)} +} +@-moz-keyframes fadeoutR{ + 0%{opacity:1;-moz-transform:translateX(0)} + 100%{opacity:0;-moz-transform:translateX(100px)} +} +@-ms-keyframes fadeoutR{ + 0%{opacity:1;-ms-transform:translateX(0)} + 100%{opacity:0;-ms-transform:translateX(100px)} +} +@keyframes fadeoutR{ + 0%{opacity:1;transform:translateX(0)} + 100%{opacity:0;transform:translateX(100px)} +} +/* 淡出-向下 */ +@-webkit-keyframes fadeoutB{ + 0%{opacity:1;-webkit-transform:translateY(0)} + 100%{opacity:0;-webkit-transform:translateY(100px)} +} +@-moz-keyframes fadeoutB{ + 0%{opacity:1;-moz-transform:translateY(0)} + 100%{opacity:0;-moz-transform:translateY(100px)} +} +@-ms-keyframes fadeoutB{ + 0%{opacity:1;-ms-transform:translateY(0)} + 100%{opacity:0;-ms-transform:translateY(100px)} +} +@keyframes fadeoutB{ + 0%{opacity:1;transform:translateY(0)} + 100%{opacity:0;transform:translateY(100px)} +} +/* 淡出-向左 */ +@-webkit-keyframes fadeoutL{ + 0%{opacity:1;-webkit-transform:translateX(0)} + 100%{opacity:0;-webkit-transform:translateX(-100px)} +} +@-moz-keyframes fadeoutL{ + 0%{opacity:1;-moz-transform:translateX(0)} + 100%{opacity:0;-moz-transform:translateX(-100px)} +} +@-ms-keyframes fadeoutL{ + 0%{opacity:1;-ms-transform:translateX(0)} + 100%{opacity:0;-ms-transform:translateX(-100px)} +} +@keyframes fadeoutL{ + 0%{opacity:1;transform:translateX(0)} + 100%{opacity:0;transform:translateX(-100px)} +} +/* 弹跳 */ +@-webkit-keyframes bounce{ + 0%,20%,50%,80%,100%{-webkit-transform:translateY(0)} + 40%{-webkit-transform:translateY(-30px)} + 60%{-webkit-transform:translateY(-15px)} +} +@-moz-keyframes bounce{ + 0%,20%,50%,80%,100%{-moz-transform:translateY(0)} + 40%{-moz-transform:translateY(-30px)} + 60%{-moz-transform:translateY(-15px)} +} +@-ms-keyframes bounce{ + 0%,20%,50%,80%,100%{-ms-transform:translateY(0)} + 40%{-ms-transform:translateY(-30px)} + 60%{-ms-transform:translateY(-15px)} +} +@keyframes bounce{ + 0%,20%,50%,80%,100%{transform:translateY(0)} + 40%{transform:translateY(-30px)} + 60%{transform:translateY(-15px)} +} +/* 弹入 */ +@-webkit-keyframes bouncein{ + 0%{opacity:0;-webkit-transform:scale(0.3)} + 50%{opacity:1;-webkit-transform:scale(1.05)} + 70%{-webkit-transform:scale(0.9)} + 100%{-webkit-transform:scale(1)} +} +@-moz-keyframes bouncein{ + 0%{opacity:0;-moz-transform:scale(0.3)} + 50%{opacity:1;-moz-transform:scale(1.05)} + 70%{-moz-transform:scale(0.9)} + 100%{-moz-transform:scale(1)} +} +@-ms-keyframes bouncein{ + 0%{opacity:0;-ms-transform:scale(0.3)} + 50%{opacity:1;-ms-transform:scale(1.05)} + 70%{-ms-transform:scale(0.9)} + 100%{-ms-transform:scale(1)} +} +@keyframes bouncein{ + 0%{opacity:0;transform:scale(0.3)} + 50%{opacity:1;transform:scale(1.05)} + 70%{transform:scale(0.9)} + 100%{transform:scale(1)} +} +/* 弹入-从上 */ +@-webkit-keyframes bounceinT{ + 0%{opacity:0;-webkit-transform:translateY(-100px)} + 60%{opacity:1;-webkit-transform:translateY(30px)} + 80%{-webkit-transform:translateY(-10px)} + 100%{-webkit-transform:translateY(0)} +} +@-moz-keyframes bounceinT{ + 0%{opacity:0;-moz-transform:translateY(-100px)} + 60%{opacity:1;-moz-transform:translateY(30px)} + 80%{-moz-transform:translateY(-10px)} + 100%{-moz-transform:translateY(0)} +} +@-ms-keyframes bounceinT{ + 0%{opacity:0;-ms-transform:translateY(-100px)} + 60%{opacity:1;-ms-transform:translateY(30px)} + 80%{-ms-transform:translateY(-10px)} + 100%{-ms-transform:translateY(0)} +} +@keyframes bounceinT{ + 0%{opacity:0;transform:translateY(-100px)} + 60%{opacity:1;transform:translateY(30px)} + 80%{transform:translateY(-10px)} + 100%{transform:translateY(0)} +} +/* 弹入-从右 */ +@-webkit-keyframes bounceinR{ + 0%{opacity:0;-webkit-transform:translateX(100px)} + 60%{opacity:1;-webkit-transform:translateX(-30px)} + 80%{-webkit-transform:translateX(10px)} + 100%{-webkit-transform:translateX(0)} +} +@-moz-keyframes bounceinR{ + 0%{opacity:0;-moz-transform:translateX(100px)} + 60%{opacity:1;-moz-transform:translateX(-30px)} + 80%{-moz-transform:translateX(10px)} + 100%{-moz-transform:translateX(0)} +} +@-ms-keyframes bounceinR{ + 0%{opacity:0;-ms-transform:translateX(100px)} + 60%{opacity:1;-ms-transform:translateX(-30px)} + 80%{-ms-transform:translateX(10px)} + 100%{-ms-transform:translateX(0)} +} +@keyframes bounceinR{ + 0%{opacity:0;transform:translateX(100px)} + 60%{opacity:1;transform:translateX(-30px)} + 80%{transform:translateX(10px)} + 100%{transform:translateX(0)} +} +/* 弹入-从下 */ +@-webkit-keyframes bounceinB{ + 0%{opacity:0;-webkit-transform:translateY(100px)} + 60%{opacity:1;-webkit-transform:translateY(-30px)} + 80%{-webkit-transform:translateY(10px)} + 100%{-webkit-transform:translateY(0)} +} +@-moz-keyframes bounceinB{ + 0%{opacity:0;-moz-transform:translateY(100px)} + 60%{opacity:1;-moz-transform:translateY(-30px)} + 80%{-moz-transform:translateY(10px)} + 100%{-moz-transform:translateY(0)} +} +@-ms-keyframes bounceinB{ + 0%{opacity:0;-ms-transform:translateY(100px)} + 60%{opacity:1;-ms-transform:translateY(-30px)} + 80%{-ms-transform:translateY(10px)} + 100%{-ms-transform:translateY(0)} +} +@keyframes bounceinB{ + 0%{opacity:0;transform:translateY(100px)} + 60%{opacity:1;transform:translateY(-30px)} + 80%{transform:translateY(10px)} + 100%{transform:translateY(0)} +} +/* 弹入-从左 */ +@-webkit-keyframes bounceinL{ + 0%{opacity:0;-webkit-transform:translateX(-100px)} + 60%{opacity:1;-webkit-transform:translateX(30px)} + 80%{-webkit-transform:translateX(-10px)} + 100%{-webkit-transform:translateX(0)} +} +@-moz-keyframes bounceinL{ + 0%{opacity:0;-moz-transform:translateX(-100px)} + 60%{opacity:1;-moz-transform:translateX(30px)} + 80%{-moz-transform:translateX(-10px)} + 100%{-moz-transform:translateX(0)} +} +@-ms-keyframes bounceinL{ + 0%{opacity:0;-ms-transform:translateX(-100px)} + 60%{opacity:1;-ms-transform:translateX(30px)} + 80%{-ms-transform:translateX(-10px)} + 100%{-ms-transform:translateX(0)} +} +@keyframes bounceinL{ + 0%{opacity:0;transform:translateX(-100px)} + 60%{opacity:1;transform:translateX(30px)} + 80%{transform:translateX(-10px)} + 100%{transform:translateX(0)} +} +/* 弹出 */ +@-webkit-keyframes bounceout{ + 0%{-webkit-transform:scale(1)} + 25%{-webkit-transform:scale(0.95)} + 50%{opacity:1;-webkit-transform:scale(1.1)} + 100%{opacity:0;-webkit-transform:scale(0.3)} +} +@-moz-keyframes bounceout{ + 0%{-moz-transform:scale(1)} + 25%{-moz-transform:scale(0.95)} + 50%{opacity:1;-moz-transform:scale(1.1)} + 100%{opacity:0;-moz-transform:scale(0.3)} +} +@-ms-keyframes bounceout{ + 0%{-ms-transform:scale(1)} + 25%{-ms-transform:scale(0.95)} + 50%{opacity:1;-ms-transform:scale(1.1)} + 100%{opacity:0;-ms-transform:scale(0.3)} +} +@keyframes bounceout{ + 0%{transform:scale(1)} + 25%{transform:scale(0.95)} + 50%{opacity:1;transform:scale(1.1)} + 100%{opacity:0;transform:scale(0.3)} +} +/* 弹出-向上*/ +@-webkit-keyframes bounceoutT{ + 0%{-webkit-transform:translateY(0)} + 20%{opacity:1;-webkit-transform:translateY(20px)} + 100%{opacity:0;-webkit-transform:translateY(-100px)} +} +@-moz-keyframes bounceoutT{ + 0%{-moz-transform:translateY(0)} + 20%{opacity:1;-moz-transform:translateY(20px)} + 100%{opacity:0;-moz-transform:translateY(-100px)} +} +@-ms-keyframes bounceoutT{ + 0%{-ms-transform:translateY(0)} + 20%{opacity:1;-ms-transform:translateY(20px)} + 100%{opacity:0;-ms-transform:translateY(-100px)} +} +@keyframes bounceoutT{ + 0%{transform:translateY(0)} + 20%{opacity:1;transform:translateY(20px)} + 100%{opacity:0;transform:translateY(-100px)} +} +/* 弹出-向右*/ +@-webkit-keyframes bounceoutR{ + 0%{-webkit-transform:translateX(0)} + 20%{opacity:1;-webkit-transform:translateX(-20px)} + 100%{opacity:0;-webkit-transform:translateX(100px)} +} +@-moz-keyframes bounceoutR{ + 0%{-moz-transform:translateX(0)} + 20%{opacity:1;-moz-transform:translateX(-20px)} + 100%{opacity:0;-moz-transform:translateX(100px)} +} +@-ms-keyframes bounceoutR{ + 0%{-ms-transform:translateX(0)} + 20%{opacity:1;-ms-transform:translateX(-20px)} + 100%{opacity:0;-ms-transform:translateX(100px)} +} +@keyframes bounceoutR{ + 0%{transform:translateX(0)} + 20%{opacity:1;transform:translateX(-20px)} + 100%{opacity:0;transform:translateX(100px)} +} +/* 弹出-向下 */ +@-webkit-keyframes bounceoutB{ + 0%{-webkit-transform:translateY(0)} + 20%{opacity:1;-webkit-transform:translateY(-20px)} + 100%{opacity:0;-webkit-transform:translateY(100px)} +} +@-moz-keyframes bounceoutB{ + 0%{-moz-transform:translateY(0)} + 20%{opacity:1;-moz-transform:translateY(-20px)} + 100%{opacity:0;-moz-transform:translateY(100px)} +} +@-ms-keyframes bounceoutB{ + 0%{-ms-transform:translateY(0)} + 20%{opacity:1;-ms-transform:translateY(-20px)} + 100%{opacity:0;-ms-transform:translateY(100px)} +} +@keyframes bounceoutB{ + 0%{transform:translateY(0)} + 20%{opacity:1;transform:translateY(-20px)} + 100%{opacity:0;transform:translateY(100px)} +} +/* 弹出-向左 */ +@-webkit-keyframes bounceoutL{ + 0%{-webkit-transform:translateX(0)} + 20%{opacity:1;-webkit-transform:translateX(20px)} + 100%{opacity:0;-webkit-transform:translateX(-100px)} +} +@-moz-keyframes bounceoutL{ + 0%{-moz-transform:translateX(0)} + 20%{opacity:1;-moz-transform:translateX(20px)} + 100%{opacity:0;-moz-transform:translateX(-100px)} +} +@-ms-keyframes bounceoutL{ + 0%{-ms-transform:translateX(0)} + 20%{opacity:1;-ms-transform:translateX(20px)} + 100%{opacity:0;-ms-transform:translateX(-100px)} +} +@keyframes bounceoutL{ + 0%{transform:translateX(0)} + 20%{opacity:1;transform:translateX(20px)} + 100%{opacity:0;transform:translateX(-200px)} +} +/* 转入 */ +@-webkit-keyframes rotatein{ + 0%{opacity:0;-webkit-transform:rotate(-200deg)} + 100%{opacity:1;-webkit-transform:rotate(0)} +} +@-moz-keyframes rotatein{ + 0%{opacity:0;-moz-transform:rotate(-200deg)} + 100%{opacity:1;-moz-transform:rotate(0)} +} +@-ms-keyframes rotatein{ + 0%{opacity:0;-ms-transform:rotate(-200deg)} + 100%{opacity:1;-ms-transform:rotate(0)} +} +@keyframes rotatein{ + 0%{opacity:0;transform:rotate(-200deg)} + 100%{opacity:1;transform:rotate(0)} +} +/* 转入-从左上 */ +@-webkit-keyframes rotateinLT{ + 0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(-90deg);opacity:0} + 100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1} +} +@-moz-keyframes rotateinLT{ + 0%{-moz-transform-origin:left bottom;-moz-transform:rotate(-90deg);opacity:0} + 100%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1} +} +@-ms-keyframes rotateinLT{ + 0%{-ms-transform-origin:left bottom;-ms-transform:rotate(-90deg);opacity:0} + 100%{-ms-transform-origin:left bottom;-ms-transform:rotate(0);opacity:1} +} +@keyframes rotateinLT{ + 0%{transform-origin:left bottom;transform:rotate(-90deg);opacity:0} + 100%{transform-origin:left bottom;transform:rotate(0);opacity:1} +} +/* 转入-从左下 */ +@-webkit-keyframes rotateineftB{ + 0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(90deg);opacity:0} + 100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1} +} +@-moz-keyframes rotateineftB{ + 0%{-moz-transform-origin:left bottom;-moz-transform:rotate(90deg);opacity:0} + 100%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1} +} +@-ms-keyframes rotateineftB{ + 0%{-ms-transform-origin:left bottom;-ms-transform:rotate(90deg);opacity:0} + 100%{-ms-transform-origin:left bottom;-ms-transform:rotate(0);opacity:1} +} +@keyframes rotateineftB{ + 0%{transform-origin:left bottom;transform:rotate(90deg);opacity:0} + 100%{transform-origin:left bottom;transform:rotate(0);opacity:1} +} +/* 转入-从右上 */ +@-webkit-keyframes rotateinRT{ + 0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(90deg);opacity:0} + 100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1} +} +@-moz-keyframes rotateinRT{ + 0%{-moz-transform-origin:right bottom;-moz-transform:rotate(90deg);opacity:0} + 100%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1} +} +@-ms-keyframes rotateinRT{ + 0%{-ms-transform-origin:right bottom;-ms-transform:rotate(90deg);opacity:0} + 100%{-ms-transform-origin:right bottom;-ms-transform:rotate(0);opacity:1} +} +@keyframes rotateinRT{ + 0%{transform-origin:right bottom;transform:rotate(90deg);opacity:0} + 100%{transform-origin:right bottom;transform:rotate(0);opacity:1} +} +/* 转入-从右下*/ +@-webkit-keyframes rotateinRB{ + 0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(-90deg);opacity:0} + 100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1} +} +@-moz-keyframes rotateinRB{ + 0%{-moz-transform-origin:right bottom;-moz-transform:rotate(-90deg);opacity:0} + 100%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1} +} +@-ms-keyframes rotateinRB{ + 0%{-ms-transform-origin:right bottom;-ms-transform:rotate(-90deg);opacity:0} + 100%{-ms-transform-origin:right bottom;-ms-transform:rotate(0);opacity:1} +} +@keyframes rotateinRB{ + 0%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0} + 100%{transform-origin:right bottom;transform:rotate(0);opacity:1} +} +/* 转出 */ +@-webkit-keyframes rotateout{ + 0%{-webkit-transform-origin:center center;-webkit-transform:rotate(0);opacity:1} + 100%{-webkit-transform-origin:center center;-webkit-transform:rotate(200deg);opacity:0} +} +@-moz-keyframes rotateout{ + 0%{-moz-transform-origin:center center;-moz-transform:rotate(0);opacity:1} + 100%{-moz-transform-origin:center center;-moz-transform:rotate(200deg);opacity:0} +} +@-ms-keyframes rotateout{ + 0%{-ms-transform-origin:center center;-ms-transform:rotate(0);opacity:1} + 100%{-ms-transform-origin:center center;-ms-transform:rotate(200deg);opacity:0} +} +@keyframes rotateout{ + 0%{transform-origin:center center;transform:rotate(0);opacity:1} + 100%{transform-origin:center center;transform:rotate(200deg);opacity:0} +} +/* 转出-向左上 */ +@-webkit-keyframes rotateoutLT{ + 0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1} + 100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(-90deg);opacity:0} +} +@-moz-keyframes rotateoutLT{ + 0%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1} + 100%{-moz-transform-origin:left bottom;-moz-transform:rotate(-90deg);opacity:0} +} +@-ms-keyframes rotateoutLT{ + 0%{-ms-transform-origin:left bottom;-ms-transform:rotate(0);opacity:1} + 100%{-ms-transform-origin:left bottom;-ms-transform:rotate(-90deg);opacity:0} +} +@keyframes rotateoutLT{ + 0%{transform-origin:left bottom;transform:rotate(0);opacity:1} + 100%{transform-origin:left bottom;transform:rotate(-90deg);opacity:0} +} +/* 转出-向左下 */ +@-webkit-keyframes rotateoutLB{ + 0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1} + 100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(90deg);opacity:0} +} +@-moz-keyframes rotateoutLB{ + 0%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1} + 100%{-moz-transform-origin:left bottom;-moz-transform:rotate(90deg);opacity:0} +} +@-ms-keyframes rotateoutLB{ + 0%{-ms-transform-origin:left bottom;-ms-transform:rotate(0);opacity:1} + 100%{-ms-transform-origin:left bottom;-ms-transform:rotate(90deg);opacity:0} +} +@keyframes rotateoutLB{ + 0%{transform-origin:left bottom;transform:rotate(0);opacity:1} + 100%{transform-origin:left bottom;transform:rotate(90deg);opacity:0} +} +/* 转出-向右上 */ +@-webkit-keyframes rotateoutRT{ + 0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1} + 100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(90deg);opacity:0} +} +@-moz-keyframes rotateoutRT{ + 0%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1} + 100%{-moz-transform-origin:right bottom;-moz-transform:rotate(90deg);opacity:0} +} +@-ms-keyframes rotateoutRT{ + 0%{-ms-transform-origin:right bottom;-ms-transform:rotate(0);opacity:1} + 100%{-ms-transform-origin:right bottom;-ms-transform:rotate(90deg);opacity:0} +} +@keyframes rotateoutRT{ + 0%{transform-origin:right bottom;transform:rotate(0);opacity:1} + 100%{transform-origin:right bottom;transform:rotate(90deg);opacity:0} +} +/* 转出-向右下 */ +@-webkit-keyframes rotateoutBR{ + 0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1} + 100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(-90deg);opacity:0} +} +@-moz-keyframes rotateoutBR{ + 0%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1} + 100%{-moz-transform-origin:right bottom;-moz-transform:rotate(-90deg);opacity:0} +} +@-ms-keyframes rotateoutBR{ + 0%{-ms-transform-origin:right bottom;-ms-transform:rotate(0);opacity:1} + 100%{-ms-transform-origin:right bottom;-ms-transform:rotate(-90deg);opacity:0} +} +@keyframes rotateoutBR{ + 0%{transform-origin:right bottom;transform:rotate(0);opacity:1} + 100%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0} +} +/* 翻转 */ +@-webkit-keyframes flip{ + 0%{-webkit-transform:perspective(400px) rotateY(0);-webkit-animation-timing-function:ease-out} + 40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(170deg);-webkit-animation-timing-function:ease-out} + 50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-webkit-animation-timing-function:ease-in} + 80%{-webkit-transform:perspective(400px) rotateY(360deg) scale(0.95);-webkit-animation-timing-function:ease-in} + 100%{-webkit-transform:perspective(400px) scale(1);-webkit-animation-timing-function:ease-in} +} +@-moz-keyframes flip{ + 0%{-moz-transform:perspective(400px) rotateY(0);-moz-animation-timing-function:ease-out} + 40%{-moz-transform:perspective(400px) translateZ(150px) rotateY(170deg);-moz-animation-timing-function:ease-out} + 50%{-moz-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-moz-animation-timing-function:ease-in} + 80%{-moz-transform:perspective(400px) rotateY(360deg) scale(0.95);-moz-animation-timing-function:ease-in} + 100%{-moz-transform:perspective(400px) scale(1);-moz-animation-timing-function:ease-in} +} +@-ms-keyframes flip{ + 0%{-ms-transform:perspective(400px) rotateY(0);-ms-animation-timing-function:ease-out} + 40%{-ms-transform:perspective(400px) translateZ(150px) rotateY(170deg);-ms-animation-timing-function:ease-out} + 50%{-ms-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-ms-animation-timing-function:ease-in} + 80%{-ms-transform:perspective(400px) rotateY(360deg) scale(0.95);-ms-animation-timing-function:ease-in} + 100%{-ms-transform:perspective(400px) scale(1);-ms-animation-timing-function:ease-in} +} +@keyframes flip{ + 0%{transform:perspective(400px) rotateY(0);animation-timing-function:ease-out} + 40%{transform:perspective(400px) translateZ(150px) rotateY(170deg);animation-timing-function:ease-out} + 50%{transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);animation-timing-function:ease-in} + 80%{transform:perspective(400px) rotateY(360deg) scale(0.95);animation-timing-function:ease-in} + 100%{transform:perspective(400px) scale(1);animation-timing-function:ease-in} +} +/* 翻入-X轴 */ +@-webkit-keyframes flipinX{ + 0%{-webkit-transform:perspective(400px) rotateX(90deg);opacity:0} + 40%{-webkit-transform:perspective(400px) rotateX(-10deg)} + 70%{-webkit-transform:perspective(400px) rotateX(10deg)} + 100%{-webkit-transform:perspective(400px) rotateX(0);opacity:1} +} +@-moz-keyframes flipinX{ + 0%{-moz-transform:perspective(400px) rotateX(90deg);opacity:0} + 40%{-moz-transform:perspective(400px) rotateX(-10deg)} + 70%{-moz-transform:perspective(400px) rotateX(10deg)} + 100%{-moz-transform:perspective(400px) rotateX(0);opacity:1} +} +@-ms-keyframes flipinX{ + 0%{-ms-transform:perspective(400px) rotateX(90deg);opacity:0} + 40%{-ms-transform:perspective(400px) rotateX(-10deg)} + 70%{-ms-transform:perspective(400px) rotateX(10deg)} + 100%{-ms-transform:perspective(400px) rotateX(0);opacity:1} +} +@keyframes flipinX{ + 0%{transform:perspective(400px) rotateX(90deg);opacity:0} + 40%{transform:perspective(400px) rotateX(-10deg)} + 70%{transform:perspective(400px) rotateX(10deg)} + 100%{transform:perspective(400px) rotateX(0);opacity:1} +} +/* 翻入-Y轴 */ +@-webkit-keyframes flipinY{ + 0%{-webkit-transform:perspective(400px) rotateY(90deg);opacity:0} + 40%{-webkit-transform:perspective(400px) rotateY(-10deg)} + 70%{-webkit-transform:perspective(400px) rotateY(10deg)} + 100%{-webkit-transform:perspective(400px) rotateY(0);opacity:1} +} +@-moz-keyframes flipinY{ + 0%{-moz-transform:perspective(400px) rotateY(90deg);opacity:0} + 40%{-moz-transform:perspective(400px) rotateY(-10deg)} + 70%{-moz-transform:perspective(400px) rotateY(10deg)} + 100%{-moz-transform:perspective(400px) rotateY(0);opacity:1} +} +@-ms-keyframes flipinY{ + 0%{-ms-transform:perspective(400px) rotateY(90deg);opacity:0} + 40%{-ms-transform:perspective(400px) rotateY(-10deg)} + 70%{-ms-transform:perspective(400px) rotateY(10deg)} + 100%{-ms-transform:perspective(400px) rotateY(0);opacity:1} +} +@keyframes flipinY{ + 0%{transform:perspective(400px) rotateY(90deg);opacity:0} + 40%{transform:perspective(400px) rotateY(-10deg)} + 70%{transform:perspective(400px) rotateY(10deg)} + 100%{transform:perspective(400px) rotateY(0);opacity:1} +} +/* 翻出-X轴 */ +@-webkit-keyframes flipoutX{ + 0%{-webkit-transform:perspective(400px) rotateX(0);opacity:1} + 100%{-webkit-transform:perspective(400px) rotateX(90deg);opacity:0} +} +@-moz-keyframes flipoutX{ + 0%{-moz-transform:perspective(400px) rotateX(0);opacity:1} + 100%{-moz-transform:perspective(400px) rotateX(90deg);opacity:0} +} +@-ms-keyframes flipoutX{ + 0%{-ms-transform:perspective(400px) rotateX(0);opacity:1} + 100%{-ms-transform:perspective(400px) rotateX(90deg);opacity:0} +} +@keyframes flipoutX{ + 0%{transform:perspective(400px) rotateX(0);opacity:1} + 100%{transform:perspective(400px) rotateX(90deg);opacity:0} +} +/* 翻出-Y轴 */ +@-webkit-keyframes flipoutY{ + 0%{-webkit-transform:perspective(400px) rotateY(0);opacity:1} + 100%{-webkit-transform:perspective(400px) rotateY(90deg);opacity:0} +} +@-moz-keyframes flipoutY{ + 0%{-moz-transform:perspective(400px) rotateY(0);opacity:1} + 100%{-moz-transform:perspective(400px) rotateY(90deg);opacity:0} +} +@-ms-keyframes flipoutY{ + 0%{-ms-transform:perspective(400px) rotateY(0);opacity:1} + 100%{-ms-transform:perspective(400px) rotateY(90deg);opacity:0} +} +@keyframes flipoutY{ + 0%{transform:perspective(400px) rotateY(0);opacity:1} + 100%{transform:perspective(400px) rotateY(90deg);opacity:0} +} +/* 闪烁 */ +@-webkit-keyframes flash{ + 0%,50%,100%{opacity:1} + 25%,75%{opacity:0} +} +@-moz-keyframes flash{ + 0%,50%,100%{opacity:1} + 25%,75%{opacity:0} +} +@-ms-keyframes flash{ + 0%,50%,100%{opacity:1} + 25%,75%{opacity:0} +} +@keyframes flash{ + 0%,50%,100%{opacity:1} + 25%,75%{opacity:0} +} +/* 震颤 */ +@-webkit-keyframes shake{ + 0%,100%{-webkit-transform:translateX(0)} + 10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px)} + 20%,40%,60%,80%{-webkit-transform:translateX(10px)} +} +@-moz-keyframes shake{ + 0%,100%{-moz-transform:translateX(0)} + 10%,30%,50%,70%,90%{-moz-transform:translateX(-10px)} + 20%,40%,60%,80%{-moz-transform:translateX(10px)} +} +@-ms-keyframes shake{ + 0%,100%{-ms-transform:translateX(0)} + 10%,30%,50%,70%,90%{-ms-transform:translateX(-10px)} + 20%,40%,60%,80%{-ms-transform:translateX(10px)} +} +@keyframes shake{ + 0%,100%{transform:translateX(0)} + 10%,30%,50%,70%,90%{transform:translateX(-10px)} + 20%,40%,60%,80%{transform:translateX(10px)} +} +/* 摇摆 */ +@-webkit-keyframes swing{ + 20%{-webkit-transform:rotate(15deg)} + 40%{-webkit-transform:rotate(-10deg)} + 60%{-webkit-transform:rotate(5deg)} + 80%{-webkit-transform:rotate(-5deg)} + 100%{-webkit-transform:rotate(0)} +} +@-moz-keyframes swing{ + 20%{-moz-transform:rotate(15deg)} + 40%{-moz-transform:rotate(-10deg)} + 60%{-moz-transform:rotate(5deg)} + 80%{-moz-transform:rotate(-5deg)} + 100%{-moz-transform:rotate(0)} +} +@-ms-keyframes swing{ + 20%{-ms-transform:rotate(15deg)} + 40%{-ms-transform:rotate(-10deg)} + 60%{-ms-transform:rotate(5deg)} + 80%{-ms-transform:rotate(-5deg)} + 100%{-ms-transform:rotate(0)} +} +@keyframes swing{ + 20%{transform:rotate(15deg)} + 40%{transform:rotate(-10deg)} + 60%{transform:rotate(5deg)} + 80%{transform:rotate(-5deg)} + 100%{transform:rotate(0)} +} +/* 摇晃 */ +@-webkit-keyframes wobble{ + 0%{-webkit-transform:translateX(0)} + 15%{-webkit-transform:translateX(-100px) rotate(-5deg)} + 30%{-webkit-transform:translateX(80px) rotate(3deg)} + 45%{-webkit-transform:translateX(-65px) rotate(-3deg)} + 60%{-webkit-transform:translateX(40px) rotate(2deg)} + 75%{-webkit-transform:translateX(-20px) rotate(-1deg)} + 100%{-webkit-transform:translateX(0)} +} +@-moz-keyframes wobble{ + 0%{-moz-transform:translateX(0)} + 15%{-moz-transform:translateX(-100px) rotate(-5deg)} + 30%{-moz-transform:translateX(80px) rotate(3deg)} + 45%{-moz-transform:translateX(-65px) rotate(-3deg)} + 60%{-moz-transform:translateX(40px) rotate(2deg)} + 75%{-moz-transform:translateX(-20px) rotate(-1deg)} + 100%{-moz-transform:translateX(0)} +} +@-ms-keyframes wobble{ + 0%{-ms-transform:translateX(0)} + 15%{-ms-transform:translateX(-100px) rotate(-5deg)} + 30%{-ms-transform:translateX(80px) rotate(3deg)} + 45%{-ms-transform:translateX(-65px) rotate(-3deg)} + 60%{-ms-transform:translateX(40px) rotate(2deg)} + 75%{-ms-transform:translateX(-20px) rotate(-1deg)} + 100%{-ms-transform:translateX(0)} +} +@keyframes wobble{ + 0%{transform:translateX(0)} + 15%{transform:translateX(-100px) rotate(-5deg)} + 30%{transform:translateX(80px) rotate(3deg)} + 45%{transform:translateX(-65px) rotate(-3deg)} + 60%{transform:translateX(40px) rotate(2deg)} + 75%{transform:translateX(-20px) rotate(-1deg)} + 100%{transform:translateX(0)} +} +/* 震铃 */ +@-webkit-keyframes ring{ + 0%{-webkit-transform:scale(1)} + 10%,20%{-webkit-transform:scale(0.9) rotate(-3deg)} + 30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg)} + 40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg)} + 100%{-webkit-transform:scale(1) rotate(0)} +} +@-moz-keyframes ring{ + 0%{-moz-transform:scale(1)} + 10%,20%{-moz-transform:scale(0.9) rotate(-3deg)} + 30%,50%,70%,90%{-moz-transform:scale(1.1) rotate(3deg)} + 40%,60%,80%{-moz-transform:scale(1.1) rotate(-3deg)} + 100%{-moz-transform:scale(1) rotate(0)} +} +@-ms-keyframes ring{ + 0%{-ms-transform:scale(1)} + 10%,20%{-ms-transform:scale(0.9) rotate(-3deg)} + 30%,50%,70%,90%{-ms-transform:scale(1.1) rotate(3deg)} + 40%,60%,80%{-ms-transform:scale(1.1) rotate(-3deg)} + 100%{-ms-transform:scale(1) rotate(0)} +} +@keyframes ring{ + 0%{transform:scale(1)} + 10%,20%{transform:scale(0.9) rotate(-3deg)} + 30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)} + 40%,60%,80%{transform:scale(1.1) rotate(-3deg)} + 100%{transform:scale(1) rotate(0)} +} +/*4.1 按钮组 + Name: mod_btn-group + Example: +
          + 左边按钮 + 中间按钮 + 中间按钮 + 右边按钮 +
          + + Explain: +*/ +.btn-group{ font-size:0} +.btn-group .btn{ margin-left:-1px} +.btn-group .btn:not(:first-child):not(:last-child):not(.dropdown-toggle){ border-radius:0} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius: 0;border-top-right-radius: 0} +.btn-group > .btn:last-child:not(:first-child),.btn-group > .dropdown-toggle:not(:first-child) {border-bottom-left-radius: 0;border-top-left-radius: 0} + +/*4.2.1 导航条 + Name: mod_mainnav + Example: + + Explain: 鼠标经过状态a:hover,当前选中状态li:current。 +*/ +.mainnav{z-index:1;background-color:#222}/*导航条背景*/ +.mainnav > ul > li,.mainnav > ul > li > a{height:40px;line-height:40px}/*导航条高度*/ +.mainnav > ul > li{display:inline-block;color:#fff;font-size:14px;font-weight:bold}/*设置字体*/ +.mainnav > ul > li > a{display:inline-block;padding:0 18px;color:#fff;text-align:center}/*链接颜色*/ +.mainnav > ul > li > a:hover,.mainnav > ul > li.current > a{color:#fff;text-decoration:none; background-color:#000;-webkit-transition: background-color 0.3s ease 0s; -moz-transition: background-color 0.3s ease 0s; -o-transition: background-color 0.3s ease 0s; -ms-transition: background-color 0.3s ease 0s;transition: background-color 0.3s ease 0s}/*交互颜色*/ + +.Hui-nav-toggle{ display:none; position:absolute; top:0px; right:10px; padding:9px 10px; -moz-border-radius:4px;-webkit-border-radius:4px;-ms-border-radius:4px;border-radius:4px; background-color:rgba(0,0,0,0.5)} +@media (max-width: 767px) { + .mainnav > ul > li{font-size:1.125em} + .Hui-nav-toggle{ display:block} +} +@media (max-width: 480px) { + .mainnav > ul > li{text-align:center} + .mainnav > ul > li{width:20%} + .mainnav > ul > li > a{padding:0; width:100%} +} +/*4.2.2 面包屑导航 + Name: mod_breadcrumb + Example: + +*/ +.breadcrumb{border-bottom: 1px solid #E5E5E5;line-height: 39px; height:39px;padding-left:20px;overflow:hidden} +.breadcrumb span{padding:0 5px} +/*4.2.3 翻页导航 + Name: mod_pageNav + Example: + Explain: 需要调用pagenav.cn.js + +*/ +.pageNav{float:none;clear:both;font-size:0px;font-family:Arial,Helvetica,sans-serif;padding:18px 0px;text-align:center} +.pageNav span,.pageNav a,.pageNav b{font-size:14px;margin-right:5px;overflow:hidden;padding:3px 8px} +.pageNav a{border:1px solid #CCDBE4;cursor:pointer} +.pageNav b{color:#000} +.pageNav .mor{padding:3px;font-weight:bold} + +/*4.2.4 顶部导航 + Name: mod_topnav + Sample: +
          您好,欢迎来到Hui!
          + +*/ +.topnav{height:30px;line-height:30px;background:url(../images/bg_topnav.gif) repeat-x 0 0;border-bottom:1px solid #EBEBEB; font-size:12px} +.topbar{background-color: #ECECEC;border-bottom:1px solid #ddd} +.topbar a{margin-right:5px} +.r_nav{display:inline-block; color:#999} + +/*4.2.5 向导 + Name: mod_steps + Sample: +
          + 第一步 + 第二步 + 第三步 + 第四步 +
          +*/ +.steps,.step{display:inline-block;position:relative;padding:1em 2em 1em 3em;vertical-align:top;background-color:#FFF;color:#888;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box} +.step:after,.steps .step:after{position:absolute;z-index:2;content:'';top:0;right:-1.45em;border-bottom:1.5em solid transparent;border-left:1.5em solid #FFF;border-top:1.5em solid transparent;width:0;height:0} +.step,.steps .step,.steps .step:after{-webkit-transition:opacity .1s ease,color .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,box-shadow .1s ease} +.steps{cursor:pointer;display:inline-block;font-size:0;box-shadow:0 0 0 1px rgba(0,0,0,.1);line-height:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border-radius:.3125rem} +.steps .step:first-child{padding-left:1.35em;border-radius:.3125em 0 0 .3125em} +.steps .step:last-child{border-radius:0 .3125em .3125em 0} +.steps .step:only-child{border-radius:.3125em} +.steps .step:last-child{margin-right:0} +.steps .step:last-child:after{display:none} +.step:hover,.step.hover{background-color:#F7F7F7;color:rgba(0,0,0,.8)} +.steps .step.hover:after,.steps .step:hover:after,.step:hover,.step.hover::after{border-left-color:#F7F7F7} +.steps .step.down,.steps .step:active,.step.down,.step:active{background-color:#F0F0F0} +.steps .step.down:after,.steps .step:active:after,.steps.down::after,.steps:active::after{border-left-color:#F0F0F0} +.steps .step.active,.active.step{cursor:auto;background-color:#428BCA;color:#FFF;font-weight:700}.steps .step.active:after,.active.steps:after{border-left-color:#428BCA} +.steps .disabled.step,.disabled.step{cursor:auto;background-color:#FFF;color:#CBCBCB} +.disabled.step:after{border:0;background-color:#FFF;top:.42em;right:-1em;width:2.15em;height:2.15em;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);box-shadow:-1px -1px 0 0 rgba(0,0,0,.1) inset} +.attached.steps{margin:0;border-radius:.3125em .3125em 0 0} +.attached.steps .step:first-child{border-radius:.3125em 0 0} +.attached.steps .step:last-child{border-radius:0 .3125em 0 0} +.bottom.attached.steps{margin-top:-1px;border-radius:0 0 .3125em .3125em} +.bottom.attached.steps .step:first-child{border-radius:0 0 0 .3125em} +.bottom.attached.steps .step:last-child{border-radius:0 0 .3125em} + +/*向导数量*/ +.one.steps,.two.steps,.three.steps,.four.steps,.five.steps,.six.steps,.seven.steps,.eight.steps{display:block} +.one.steps>.step{width:100%} +.two.steps>.step{width:50%} +.three.steps>.step{width:33.333%} +.four.steps>.step{width:25%} +.five.steps>.step{width:20%} +.six.steps>.step{width:16.666%} +.seven.steps>.step{width:14.285%} +.eight.steps>.step{width:12.5%} + +/*向导尺寸*/ +.small.step,.small.steps .step{font-size:.8rem}/*小*/ +.step,.steps .step{font-size:1rem}/*默认*/ +.large.step,.large.steps .step{font-size:1.25rem}/*大*/ + +/*兼容写法 + Sample: + +*/ +.steps-ie,.step-ie,.step-ie .arrow{height:44px; line-height:44px} +.steps-ie{background-color:#eaf4fd; border:solid 1px #afcfcc} +.step-ie{position:relative;display:inline-block; float:left; cursor:pointer; padding:0 20px 0 40px; background:url(../images/step_bg.png) repeat-x 0 center} +.step-ie .arrow{position:absolute;right:-21px; top:0; width:21px; height:44px; display:block; cursor:pointer; background:url(../images/step_arrow.png) no-repeat 0 center;z-index:50} +.step-ie.active{background-image:url(../images/step_bg-active.png); color:#fff; z-index:100} +.step-ie.active .arrow{background-image:url(../images/step_arrow-active.png)} + +/*4.2.6 竖向导向tab导航 + Sample: + +*/ +.verticalTab{background:#fff url(../images/tab_bg.png) repeat-y 0 0; width:38px} +.verticalTab a{position:relative; display:block; width:18px; height:auto; text-align:center; position:relative; padding:26px 10px 6px 10px; background:url(../images/tabNav.png) no-repeat 0 0} +.verticalTab a em{position:absolute; left:0; bottom:-20px; width:38px; height:20px; background:url(../images/tabNav_right.png) no-repeat 0 0; z-index:50} +.verticalTab a.active{background-image:url(../images/tabNav-active.png); color:#fff; z-index:99} +.verticalTab a.active em{background-image:url(../images/tabNav_right-active.png)} + +/*4.2.6 横向导向tab导航 + Sample: +
            +
          • 导航一
          • +
          • 导航二
          • +
          • 导航三
          • +
          +*/ +.acrossTab{height:29px; background:url(../images/acrossTab-bg.png) repeat-x 0 0; padding-top:1px} +.acrossTab li,.acrossTab li em{background:url(../images/acrossTab.png) no-repeat 0 0} +.acrossTab li{position:relative;float:left; display:inline-block; height:29px; line-height:29px; font-size:12px;cursor:pointer;padding:0 30px; white-space:nowrap;color:#282828; background-position:0 0} +.acrossTab li em{position:absolute; width:23px;height:29px;right:-20px; top:0;z-index:50; background-position:right -30px} +.acrossTab li:hover{background-position:0 -60px} +.acrossTab li:hover em{background-position:right -90px} +.acrossTab li.active{background-position:0 -120px; z-index:99} +.acrossTab li.active em{background-position:right -150px} +.acrossTab li i{position:absolute; display:block; width:13px; height:13px; top:50%; margin-top:-6px; right:5px; font-size:0; line-height:0; cursor:pointer; background:url(../images/acrossTab-close.png) no-repeat 0 0} +.acrossTab li i:hover{background-position:0 bottom} + +/*4.3 下拉菜单 + Name: mod_dropDown + Example: 下拉菜单span> + Explain: 如需要在不同的地方显示不同的样式,请在 追加class,采用覆盖的方式重写默认样式。 + +*/ +.dropDown{display:inline-block} +.dropDown_A{display:inline-block} +.dropDown_A i{transition-duration:0.3s ;transition-property:all} +.dropDown-menu{ display:none;transition: all 0.3s ease 0s} +.dropDown:focus,.dropDown-menu:focus {outline:0} +.dropDown-menu li.arrow{ position:absolute;display:block; width:12px; height:8px; margin-top:-13px; margin-left:20%; line-height:0;background:url(../images/icon-jt.png) no-repeat 0 0} +/*鼠标经过*/ +.dropDown.hover .dropDown_A,.dropDown.open .dropDown_A{text-decoration:none;background-color:rgba(255,255,255,0.2)} +.dropDown.hover .dropDown_A i,.dropDown.open .dropDown_A i{transform: rotate(180deg);transition-duration:0.3s ;transition-property:all;_background-position:0 0} +/*打开菜单*/ +.dropDown.open{position:relative;z-index:990} +.dropDown.open .dropDown-menu{position:absolute;z-index:1000;display:inline-block;top:100%;left:-1px;min-width:100%;background-color:#fff;border:solid 1px #f2f2f2}/*默认左对齐*/ +.dropDown.open .dropDown-menu.box-shadow{ border-top-left-radius:0;border-top-right-radius:0} +.dropDown.open .dropDown-menu.radius{ border-top:none} +/*右对齐*/ +.dropDown.open.right .dropDown-menu{right:-1px!important;left:auto!important} +.dropDown.open .dropDown-menu li{float:none;display:inline} +.dropDown-menu li a{display:block;clear: both;border-bottom:solid 1px #f2f2f2;margin-bottom:-1px;padding:0px 20px; height:30px; line-height:30px; font-size:12px;text-align:left;font-weight: normal;white-space:nowrap} +.dropDown-menu li:last-child a{ border-bottom:none} +.dropDown-menu li a:hover,.dropDown-menu li a:focus{background-color:#f0f1f2;text-decoration:none} +/*禁用菜单*/ +.dropDown.open .dropDown-menu .disabled a,.dropDown.open .dropdown-menu .disabled a:hover,.dropDown.open .dropdown-menu .disabled a:focus{color:#999;text-decoration:none; cursor:no-drop; background-color:transparent} +.dropDown.open .dropDown-menu li.divider{ display:block;height:0px; line-height:0px;margin:9px 0;overflow:hidden; border-top:solid 1px #eee} + +/*4.4 幻灯片 + Name: module_slider + Sample: +
          + + +
            +
          • +
          • +
          • +
          +
          + + + Explain: 默认dots为圆点,在slider后面追加numSlider样式就变成带数字的方框,boxSlider为不带数字长方条 +*/ +.slider{position:relative;text-align:center; margin:0 auto} +.slider .tabcon li{float: left;overflow:hidden} +.dots{position:absolute; left:0;right:0px;bottom:10px;text-align:center} +.dots span{display:inline-block;text-align:center;width:8px; height:8px; font-size:0px;line-height:0px;margin-right:8px;cursor:pointer; background-color:#C2C2C2;border-radius:8px} +.dots span.active{background-color:#222} +.numSlider .dots span{width:20px; height:20px; line-height:20px; font-size:13px; margin-right:10px;line-height:20px;background-color:#fff;font-family:Arial;font-weight:bold; text-indent:inherit;border-radius:0px} +.numSlider .dots span.active{background-color:#222;color:#fff} +.boxSlider .dots span{width:40px; height:10px;border-radius:0px} +.boxRadius .dots span{width:40px} + +.unslider-arrow{display:block; position:absolute; top:50%; margin-top:-25px;height: 50px;width: 50px; z-index:3;opacity: 0.7;filter: alpha(opacity=70); background-color:#303030; background-image:url(../images/unslider-arrow.png); background-repeat:no-repeat} +.unslider-arrow:hover{opacity: 1;filter: alpha(opacity=100)} +.prev{left:0px; background-position:0 0} +.next{right:0px;background-position:right 0} +/*4.5 选项卡 + Name: module_slider + Sample: +
          +
          选项卡一选项卡二自适应宽度
          +
          内容一
          +
          内容二
          +
          内容三
          +
          +*/ +.tabBar {border-bottom: 2px solid #222} +.tabBar span {background-color: #e8e8e8;cursor: pointer;display: inline-block;float: left; +font-weight: bold;height: 30px;line-height: 30px;padding: 0 15px} +.tabBar span.current{background-color: #222;color: #fff} +.tabCon {display: none} +/*4.6 标签与标号 + Name: style_label + Example: 默认 + Explain: .label-default 默认|.label-primary 主要|.label-secondary 次要|.label-success 成功|.label-warning 警告|.label-danger 危险 + + Name: style_badge + Example: 默认 + Explain: .badge-default 默认|.badge-primary 主要|.badge-secondary 次要|.badge-success 成功|.badge-warning 警告|.badge-danger 危险 + +*/ +.label, .badge{display: inline-block;padding:2px 4px;font-size: 11.844px;font-weight: bold;line-height:14px;color: #fff;white-space: nowrap;vertical-align:middle;background-color: #999} +/*圆角*/ +.label.radius{border-radius: 3px} +.badge{padding-right:9px;padding-left:9px;border-radius:9px} +.label:empty, .badge:empty{display: none} +a.label:hover, a.label:focus, a.badge:hover, a.badge:focus{color: #fff;text-decoration: none;cursor: pointer} + +/*默认*/ +.label-default, .badge-default{background-color: #e6e6e6; color:#333} +.label-default[href], .badge-default[href]{background-color: #e6e6e6;color:#333} + +/*主要*/ +.label-primary, .badge-primary{background-color: #5a98de} +.label-primary[href], .badge-primary[href]{background-color: #5a98de} + +/*主要*/ +.label-secondary, .badge-secondary{background-color: #3bb4f2} +.label-secondary[href], .badge-secondary[href]{background-color: #3bb4f2} + +/*成功*/ +.label-success, .badge-success{background-color:#5eb95e} +.label-success[href], .badge-success[href]{background-color: #5eb95e} + +/*警告*/ +.label-warning, .badge-warning{background-color: #f37b1d} +.label-warning[href], .badge-warning[href]{background-color: #f37b1d} + +/*危险*/ +.label-danger, .badge-danger{background-color: #dd514c} +.label-danger[href], .badge-danger[href]{background-color: #dd514c} + +/*4.7 缩略图 + Name: style_img + Example: + Explain: 缩略图 +*/ +.imgbox{} +.img{} +.img-circle{border-radius: 50%} +@media (max-width: 480px) { + .responsive img,.thumbImage img{max-width:100%!important; height:auto!important;width:expression(this.width > 320 ? "320px" : this.width)!important} + .thumbImage {margin: auto;width: 320px} + *html .content img,*html .thumbImage img{width:expression(this.width>320&&this.width>this.height?320:auto)} +} + +/*4.8 警告 + Name: mod_Hui-alert + Example: +
          警告内容
          • ……
          + Explain: 警告,使用警告框jQuery插件 +*/ +.Huialert{position:relative;padding:8px 35px 8px 14px;margin-bottom: 20px;text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);background-color: #fcf8e3;border: 1px solid #fbeed5} +.Huialert, .Huialert h4{color: #c09853} +.Huialert h4{margin: 0} +.Huialert .Hui-iconfont{position:absolute;top:9px;right:10px;line-height: 20px;cursor:pointer; color:#000; opacity:0.2;_color:#666} +.Huialert .Hui-iconfont.hover{color:#000;opacity:0.8} +.Huialert-success{color: #468847;background-color: #dff0d8;border-color: #d6e9c6} +.Huialert-success h4{color: #468847} +.Huialert-danger{color: #b94a48;background-color: #f2dede;border-color: #eed3d7} +.Huialert-danger h4{color: #b94a48} +.Huialert-error{color: #fff;background-color: #f37b1d;border-color: #e56c0c} +.Huialert-error h4{color: #fff} +.Huialert-info{color: #31708f;background-color: #d9edf7;border-color: #bce8f1} +.Huialert-info h4{color:#31708f} +.Huialert-block{padding-top: 14px;padding-bottom: 14px} +.Huialert-block > p, .Huialert-block > ul{margin-bottom: 0} +.Huialert-block p + p{margin-top: 5px} + +/*4.9 进度条 loading + Name: mod_progress + Example: +
          + Explain: 警告,使用警告框jQuery插件 +*/ +.progress,.progress-bar,.sr-only{height:10px; font-size:0;line-height:0} +.progress{overflow:hidden; width:400px} +.progress.radius{}/*自定义圆角*/ +.progress-bar{width:100%;background-color:#efefef} +.sr-only{display:inline-block; background-color:#58b957} + +/*4.10 对话框 + Name: mod_modal + Example: +*/ +.loading{height: 50px; background: url(../images/loading_072.gif) no-repeat center} +.mask{position:fixed;top:0;left:0;z-index:999;width:100%;height:100%;background:url(../images/backdrop.png) repeat 0 0;-moz-transition:all 0.3s ease-in;-webkit-transition:all 0.3s ease-in;-o-transition:all 0.3s ease-in;transition:all 0.3s ease-in} + +* html .mask{position:absolute;left:expression(documentElement.scrollLeft + documentElement.clientWidth - this.offsetWidth);top:expression(documentElement.scrollTop + documentElement.clientHeight - this.offsetHeight)} + +/*Huimodal*/ +.modal-open{overflow:hidden}/*当弹出层出现时,隐藏body右侧滚动条*/ +.page-overflow{margin-right:16px}/*隐藏body滚动条时,页面偏移*/ +.modal-scrollable{position:fixed;top:0;right:0;bottom:0;left:0;overflow: auto}/*弹出层的最外层,全屏,用户响应点击和滚动*/ +.modal-overflow .modal-scrollable{overflow-y:scroll}/*弹窗超出屏幕高度时,弹出层替代body右侧滚动条,实现弹出层的整体滚动*/ +.modal-backdrop {position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:1040;background-color:#000}/*默认遮罩层,全屏黑色*/ +* html .modal-backdrop{position:absolute;left:expression(documentElement.scrollLeft + documentElement.clientWidth - this.offsetWidth);top:expression(documentElement.scrollTop + documentElement.clientHeight - this.offsetHeight)}/*解决IE下 遮罩层兼容性*/ +.modal-backdrop.fade {opacity:0;filter: alpha(opacity=0)}/*遮罩层失去时,透明度为0*/ +.modal-backdrop,.modal-backdrop.fade.in {opacity: 0.7;filter: alpha(opacity=70)}/*遮罩层进入 0.7透明度*/ +.modal {position:absolute;top:50%;left:50%; width:500px;margin-left:-250px;z-index:1050;overflow: visible;background-color: #fff;background-clip: padding-box; + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip:padding-box; + -khtml-background-clip:padding-box; + -moz-background-clip:padding-box; + -ms-background-clip:padding-box; + -o-background-clip:padding-box; + background-clip:padding-box; + border-radius:6px; + border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999}/*弹出层,绝对定位,默认【宽度500px,高度自适应,背景白色,6px圆角,带阴影】,自定义宽度可在data-width中设置参数*/ +.fade {opacity: 0;filter: alpha(opacity=0);-webkit-transition: opacity 0.2s linear;-moz-transition: opacity 0.2s linear;-o-transition: opacity 0.2s linear;transition: opacity 0.2s linear} +.fade.in {opacity: 1;filter: alpha(opacity=100)} +.modal.fade {top: -100%}/*弹出层进入动画效果*/ +.modal.fade.in{top:50%}/*弹出层进入后居顶距离,配合margin-top负值,实现上下自动居中*/ +.modal.modal-overflow.fade.in{top:0px}/*如果弹出层高度大于窗口,弹出窗口距顶0像素*/ +.loading-spinner {position: absolute;top: 50%;left: 50%;margin: -12px 0 0 -12px}/*Ajax加载数据时loading*/ + /*弹出层header区*/ + .modal-header {padding: 9px 15px;border-bottom: 1px solid #eee; position:relative}/*弹出层头部*/ + .modal-header .close{position:absolute; right:10px; top:10px}/*关闭按钮,请调用4.1.1 按钮 .close*/ + .modal-header h3{margin:0}/*标题*/ + .modal-body {overflow-y:visible;padding: 15px} /*内容不限高度,内填充15px,不满意可自行修改*/ + .modal-form {margin-bottom: 0} /*弹出层表单*/ + /*弹出层footer区,放按钮*/ + .modal-footer {padding: 14px 15px 15px;margin-bottom: 0;text-align: right;background-color: #f5f5f5;border-top: 1px solid #ddd;*zoom: 1;border-radius: 0 0 6px 6px;box-shadow: inset 0 1px 0 #fff} + .modal-footer:before,.modal-footer:after {display: table;content: ""} + .modal-footer:after {clear: both} + .modal-footer .btn + .btn {margin-left: 5px;margin-bottom: 0} + .modal-footer .btn-group .btn + .btn {margin-left: -1px} +.modal-alert{position:fixed; width:300px;margin-left:-150px; margin-top:-30px; z-index:9999} +.modal-alert-info{padding:30px; text-align:center; font-size:14px; background-color:#fff} + +.mask_box{background-image:none;display:none;z-index:99} +.hover .mask_box{position:absolute;bottom:0px; left:0px;display:block;background:url(../images/backdrop.png) repeat 0 0;text-align:left} +.easyDialog_wrapper{width:320px; color:#444; border:3px solid rgba(0,0,0,0);border-radius:5px;box-shadow:0 0 10px rgba(0,0,0,0.4); display:none} +.easyDialog_wrapper .easyDialog_content{border-radius:4px; background:#fff; border:1px solid #e5e5e5} +.easyDialog_wrapper .easyDialog_title{height:30px; line-height:30px; overflow:hidden; color:#666; padding:0 10px; font-size:14px; border-bottom:1px solid #e5e5e5; background:#f7f7f7; border-radius:4px 4px 0 0; margin:0 } +.easyDialog_wrapper .close_btn{font-family:arial; font-size:18px; _font-size:12px; font-weight:700; color:#999; text-decoration:none; float:right} +.easyDialog_wrapper .close_btn:hover{color:#333} +.easyDialog_wrapper .easyDialog_text{padding:25px 10px; font-size:13px; line-height:22px} +.easyDialog_wrapper .easyDialog_footer{padding:10px; text-align:right; *zoom:1} +.easyDialog_wrapper .easyDialog_footer:after{content:''; display:block; height:0; overflow:hidden; visibility:hidden; clear:both} +.easyDialog_wrapper .btn_highlight,.easyDialog_wrapper .btn_normal{border:1px solid; border-radius:2px; cursor:pointer;float:right; font-size:12px; padding:0 12px; height:24px; line-height:24px; margin-bottom:10px} +.easyDialog_wrapper .btn_highlight{background:#4787ed; background:-webkit-gradient(linear,center bottom,center top,from(#4787ed),to(#4d90fe)); background:-moz-linear-gradient(90deg, #4787ed, #4d90fe); border-color:#3079ed; color:#fff} +.easyDialog_wrapper .btn_normal{margin-left:10px; border-color:#c3c3c3; background:#ececec; color:#333; background:-webkit-gradient(linear,center bottom,center top,from(#ececec),to(#f4f4f4)); background:-moz-linear-gradient(90deg,#ececec,#f4f4f4)} + +.modal-open .dropdown-menu {z-index: 2050} +.modal-open .dropdown.open {*z-index: 2050} +.modal-open .popover {z-index: 2060} +.modal-open .tooltip {z-index: 2070} + +/*4.12 返回顶部 + Name: mod_totop + Level: Global + Example: + Explain: 返回顶部 +*/ +.toTop{position:fixed;bottom:10px;right:20px; z-index:999;display:none; font-size:16px;cursor: pointer;overflow:hidden;visibility:visible; background-color:#fff;border: 1px solid #d9d9d9;color: #9c9c9c;font-size: 16px;width: 38px;height: 38px;line-height: 38px;text-align: center; text-decoration:none;_position:absolute;_top:expression(documentElement.scrollTop + documentElement.clientHeight-this.offsetHeight)} +.toTop:hover{ color:#fff; text-decoration:none; background-color:#999} + +/*4.13 分享到 + Name: mod_share + Example: + + Explain: 分享到 直接调用百度分享,http://share.baidu.com/code + +*/ +/*4.14 Panel 面板 + Name: mod_panel + Sample: +
          +
          默认面板
          +
          +*/ +.panel{ background-color:#fff; border:solid 1px transparent} + .panel-header{ border-bottom:solid 1px transparent; padding:8px 15px; font-size:14px; font-weight:700}/*面板标题*/ + .panel-body{ padding:15px}/*面板内容*/ + .panel-footer{background-color: #f5f5f5;border-top: 1px solid #ddd;padding:5px 20px}/*面板页脚*/ +/*默认面板*/ +.panel-default{border-color:#ddd;} +.panel-default > .panel-header{ border-color:#ddd; background-color:#f5f5f5; color:#444} + +/*主要面板*/ +.panel-primary{border-color:#5a98de;} +.panel-primary > .panel-header{ border-color:#5a98de; background-color:#5a98de; color:#fff} + +/*次要面板*/ +.panel-secondary{border-color:#3bb4f2;} +.panel-secondary > .panel-header{ border-color:#3bb4f2; background-color:#3bb4f2; color:#fff} + +/*成功面板*/ +.panel-success{border-color:#5eb95e;} +.panel-success > .panel-header{ border-color:#5eb95e; background-color:#5eb95e; color:#fff} + +/*警告面板*/ +.panel-warning{border-color:#f37b1d;} +.panel-warning > .panel-header{ border-color:#f37b1d; background-color:#f37b1d; color:#fff} + +/*危险面板*/ +.panel-danger{border-color:#dd514c;} +.panel-danger > .panel-header{ border-color:#dd514c; background-color:#dd514c; color:#fff} + +/*4.15 案例 + Name: mod_docs-example + Example:
          ……
          +*/ +.docs-example{position:relative;*position:static;*padding-top: 19px;margin: 15px 0;padding: 39px 19px 14px;background-color: #fff;border: 1px solid #ddd;border-radius: 4px} +.docs-example:after{content: "Example";position: absolute;top: -1px;left: -1px;*position:static;padding: 3px 7px;font-size: 12px;font-weight: bold;background-color: #f5f5f5;border: 1px solid #ddd;color: #9da0a4;border-radius: 4px 0 4px 0} +/*4.16 滚动 + Name: mod_rolling + Example:
          • ……
          +*/ +.marquee{height:22px;overflow:hidden;line-height:22px} +.rollpic .prev,.rollpic .next{display:block; height:38px; width:38px; cursor:pointer; float:left; background:url(../images/unslider-arrow2.png) no-repeat 0 0; margin-top:70px} +.rollpic .prev{background-position:0 0; margin-right:5px} +.rollpic .prev:hover{background-position:0 -38px} +.rollpic .next{background-position:0 -76px;margin-left:5px} +.rollpic .next:hover{background-position:0 -114px} +.rollpicshow{float:left; border:solid 1px #ddd} +.rollpicshow li{padding:10px} +/*4.17 搜索条 + Name: mod_searchBar + Sample: + +*/ +.searchBar{z-index: 100; width:460px;height: 33px;background:url(../images/search.gif) no-repeat 0 -48px;position:relative} + .form-search{margin-bottom:0px} + .searchTxt{float:left;width:350px;height:23px;line-height:23px;font-size:14px;color:#9a9a9a;margin-left:33px;margin-top:5px;border:none;background-color:#fff} + .searchTxt.focus{color:#333} + .searchBtn{float:right;display:block;border:none;width:73px;height:33px;cursor:pointer;text-indent:-9999px;background:url(../images/search.gif) no-repeat right -81px} + .searchBtn:hover{background-position:right -114px} + /*搜索下拉提示*/ + .ac_results{position:absolute;width:386px; height:auto;border:solid 1px #890800;background-color:#fff;top:32px; left:0px; display:none} + .ac_results ul{width:100%;list-style-position:outside;list-style:none;padding:0;margin:0} + .ac_results li p{float:left;margin:0;padding:0;overflow:hidden} + .ac_results li p tt{color:#666} + .ac_results li span{margin:0;padding:0;display:inline;float:right;color:#f93;width:90px; text-align:right; overflow:hidden} + .ac_results ul li{padding-left:5px;padding-right:5px;display:block;height:22px;line-height:22px;cursor:pointer;color:#000;font:宋体;font-size:12px} + .ac_results ul li.hover{background-color:#fef8ec;color:#000} + .ac_loading{background:#fff url(../images/loading_s.gif) right center no-repeat} + +.AD{text-align:center} +/*4.18.1 对联广告 + Name: mod_AD_dual + Sample: +
          对联的内容
          X关闭
          +
          对联的内容
          X关闭
          +*/ +.dual{top:260px;position:absolute; width:102px; overflow:hidden; display:none; z-index:100} +.dual_l{left:6px} +.dual_r{right:6px} +.dual_con{border:#CCC solid 1px;width:100px; height:300px; overflow:hidden; background-color:#0C9} +.dual_close{width:100%;height:24px; line-height:24px; text-align:center; display:block; font-size:13px; color:#555; text-decoration:none} + +/*4.19 标签*/ +/*4.19.1 标签输入效果 + Name: mod_Hui-tags + Sample: +
          +
          + Hui前端框架 + CSS3 + HTML5 +
          +
          +
          +
          暂无常用标签
          +
          前端框架 前端开发 H-ui
          +
          + +
          +*/ +.Hui-tags{border:solid 1px #dedede; padding:0 10px} + .Hui-tags-editor{position:relative; padding:10px 0 10px 24px} + .Hui-tags-editor .Hui-tags-icon{position:absolute; left:0; top:11px; font-size:14px; color:#666} + .Hui-tags-token{color:#aaa; float:left; font-size:12px; height:20px; line-height:20px; margin-right:8px; padding:0 1px; white-space:nowrap; cursor:pointer} + .Hui-tags-token:before{content:"#"} + .Hui-tags-token:hover{text-decoration:line-through} + .Hui-tags-iptwrap{position:relative; float:left} + .Hui-tags-input{position:relative;height:20px;min-width:60px; border:0 none; vertical-align:top;line-height:20px; color:#333;z-index:2;background: url(../images/empty.png) repeat scroll 0 0; display:inline-block; width:100%} + .Hui-tags-label{position:absolute; top:0; left:2px; width:240px; height:20px; line-height:20px; font-size:14px; overflow:hidden; z-index:1; color:#ccc} + .Hui-tags-list{padding:0 0 10px 0; display:none} + .Hui-notag{font-size:12px} + .Hui-tags-has span{cursor:pointer; font-size:12px; white-space:nowrap; margin-right:10px} + +/*4.19.2 标签混排效果 + Name: mod_tags + Sample: + +*/ +.tags a{height:26px; line-height:26px;padding-right:6px} + .tags0{} + .tags1{color:#C00; font-size:24px} + .tags2{color:#030; font-size:16px} + .tags3{color:#00F} + .tags4{font-size:16px} + .tags5{color:#C00; font-size:20px} + .tags6{color:#F06 font-size:20px} + .tags7{color:#030; font-weight:bold; font-size:18px} + .tags8{color:#F06; font-weight:bold} + .tags9{color:#C00; font-weight:bold;font-size:16px} +.tags a:hover{color:#F00; text-decoration:underline} + +/*4.19.3 tag云标签*/ +#tagyun {position:relative} +#tagyun a {position:absolute;top:0px;left:0px;font-weight:bold;text-decoration:none;padding:3px 6px} + +/*4.20 折叠 + Name: mod_Huifold + Sample: +
            +
          • 标题+

            内容
          • + …… +
          +*/ +.Huifold .item{position:relative} +.Huifold .item h4{margin:0;font-weight:bold;position:relative;border-top: 1px solid #fff;font-size:15px;line-height:22px;padding:7px 10px;background-color:#eee;cursor:pointer;padding-right:30px} +.Huifold .item h4 b{position:absolute;display: block; cursor:pointer;right:10px;top:7px;width:16px;height:16px; text-align:center; color:#666} +.Huifold .item .info{display:none;padding:10px} + +/*4.21 遮罩条 + Name: mod_maskBar +*/ +.maskBar{position:absolute;width:100%; height:auto;left:0; bottom:-60px; right:0;background-color:#000;z-index:2; color:#fff!important;opacity:0.6;filter:alpha(opacity=60)} +.maskWraper{position:relative; overflow:hidden} +.maskWraper.hover .maskBar{bottom:0px; + transition: bottom 200ms; + -moz-transition: bottom 200ms; /* Firefox 4 */ + -webkit-transition: bottom 200ms; /* Safari 和 Chrome */ + -o-transition: bottom 200ms; /* Opera */ +} +.maskBox{position:absolute;width:100%; height:100%;top:0;left:0; bottom:0;right:0;z-index:2;background-color:#000; color:#fff!important;opacity:0;filter:alpha(opacity=0)} +.maskWraper.hover .maskBox{opacity:0.2;filter:alpha(opacity=20); + transition: opacity 500ms; + -moz-transition: opacity 500ms; /* Firefox 4 */ + -webkit-transition: opacity 500ms; /* Safari 和 Chrome */ + -o-transition: opacity 500ms; /* Opera */ +} + +/*4.22 评论列表 + Name: mod_comment + Sample: +
            +
          • + +
            +
            +
            辉哥 评论于
            +
            +

            @某人 你是猴子派来的救兵吗?

            +
          • +
          +*/ +.commentList .item{list-style: none outside none;margin: 1.6rem 0 0} +.commentList .avatar{border: 1px solid transparent;float: left} + .comment-main{position:relative;margin-left:64px;border:1px solid #dedede;border-radius:2px} + .comment-main:before,.comment-main:after{position:absolute;top:11px;left:-16px;right:100%;width:0;height:0;display:block;content:" ";border-color:transparent;border-style:solid solid outset;pointer-events:none} + .comment-main:before{border-right-color:#dedede;border-width:8px} + .comment-main:after{border-width:7px;border-right-color:#f8f8f8;margin-top:1px;margin-left:2px} + .comment-header{padding:10px 15px;background:#f8f8f8;border-bottom:1px solid #eee} + .comment-title{margin:0 0 8px 0;font-size:1.6rem;line-height:1.2} + .comment-meta{font-size:13px;color:#999;line-height:1.2} + .comment-meta a{color:#999} + .comment-author{font-weight:700;color:#999} + .comment-body{padding:15px;overflow:hidden} + .comment-body>:last-child{margin-bottom:0} +.commentList .comment-flip .avatar {float: right} + .comment-flip .comment-main{margin-left: 0; margin-right: 64px} + .comment-flip .comment-main:before {border-left-color: #dedede;border-right-color: transparent} + .comment-flip .comment-main:before, .comment-flip .comment-main:after {left: 100%;position: absolute;right: -16px} + .comment-flip .comment-main:after {border-left-color: #f8f8f8;border-right-color: transparent;margin-left: auto;margin-right: 2px} + +/*4.23 tip效果 + Name: mod_tip +*/ +.tip{} + .tip-header{} + .tit-body{} + .tit-footer{} +.tip.left{} +.tip.right{} +.tip.top{} +.tip.bottom{} + +/*5 页面 + Name: page +*/ + +/*5.1 错误页-404*/ +.page-404{ color:#afb5bf; padding-top:60px} +.page-404 .error-title{font-size:80px} +.page-404 .error-title .iconfont{font-size:80px} +.page-404 .error-description{font-size:24px} +.page-404 .error-info{font-size:14px} +#page-404 .footer{ position:absolute; bottom:0; left:0; right:0} + +/*5.2 博客列表页*/ +.page-blog-list{} +/*5.3 博客详情页*/ +.page-blog-show{} +/*5.4 关于我们页*/ +.page-about-show{} +/*5.5 帮助列表页*/ +.page-help-list{} +/*5.6 帮助详情页*/ +.page-help-show{} +/*5.7 友情链接页*/ +.page-flink{} \ No newline at end of file diff --git a/SMMS/WebContent/static/h-ui/css/H-ui.login.css b/SMMS/WebContent/static/h-ui/css/H-ui.login.css new file mode 100644 index 0000000..e9f420c --- /dev/null +++ b/SMMS/WebContent/static/h-ui/css/H-ui.login.css @@ -0,0 +1,36 @@ +@charset "utf-8"; +/* -----------H-ui前端框架----------------------- +H-ui.login.css v2.2.1 +Copyright H-ui Inc. +http://www.H-ui.net +date:2015.6.5 +Created & Modified by guojunhui. +----------------------------------------------*/ +body{font-size:14px} + +.header,.footer{ position:absolute; left:0; right:0; width:100%; z-index:99} +.header{top:0; height:60px; background:#426374; padding: 0;} + +.loginWraper{ position:absolute;width:100%; left:0; top:0; bottom:0; right:0; z-index:1; background:#3283AC url(../images/admin-login-bg.jpg) no-repeat center} +.loginBox{ position:absolute; width:617px; height:330px; background:url(../images/admin-loginform-bg.png) no-repeat; left:50%; top:50%; margin-left:-309px; margin-top:-184px; padding-top:38px} +@media (max-width:617px) { + .loginbox{ width:100%; position:static; margin-top:0; margin-left:0;} +} +.loginBox .row{margin-top:20px;} +.loginBox .row .form-label .Hui-iconfont{ font-size:24px} +.loginBox .input-text{ width:360px} +@media (max-width:617px) { + .loginBox .input-text{ width:80%} +} + .yzm a{ color:#426374; font-size:12px} + +#span_msg{ font-size:14px; color:Red; line-height:40px; height:40px; margin-left:10px; width:160px;; float:left} + +.hd_msg{font-size:12px; color:#fff; height:30px; z-index:100;position: absolute; padding-left:50px; padding-top:5px} +.hd_msg a{ color:#fff} +.hd_msg a:hover{ color:#fff; text-decoration:underline} + +.footer{ height:46px; line-height:46px; bottom:0; text-align:center; color:#fff; font-size:12px; background-color:#426374} + +#ie6-warning{background:#fff url(/jscss/demoimg/201006/warning.gif) no-repeat 3px center;position:absolute;top:0;left:0;font-size:12px;color:#333;width:97%;padding: 2px 15px 2px 23px;text-align:left} +#ie6-warning a {text-decoration:none} \ No newline at end of file diff --git a/SMMS/WebContent/static/h-ui/css/H-ui.min.css b/SMMS/WebContent/static/h-ui/css/H-ui.min.css new file mode 100644 index 0000000..25b6a06 --- /dev/null +++ b/SMMS/WebContent/static/h-ui/css/H-ui.min.css @@ -0,0 +1,12 @@ +/* -----------H-ui前端框架----------------------- +H-ui.css v2.1.22 +date: 2015-08-07 +Created & Modified by guojunhui. +完全免费,简单灵活,兼容性,满足大多数中国网站。 +不断完善中,诚邀更多前端开发者加入,开发更多优秀的代码,服务于更多的中国网站。 +H-ui CSS file for H-ui +Copyright 北京颖杰联创科技有限公司 All rights reserved. +http://www.H-ui.net/ +Icons取自 alibaba Iconfont,授权依照 CC BY 3.0。 +----------------------------------------------*/ +@charset "utf-8";*{word-wrap:break-word}html,body,h1,h2,h3,h4,h5,h6,hr,p,iframe,dl,dt,dd,ul,ol,li,pre,form,button,input,textarea,th,td,fieldset{margin:0;padding:0}ul,ol,dl{list-style-type:none}html,body{*position:static}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}address,caption,cite,code,dfn,em,th,var{font-style:normal;font-weight:400}input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit}input,button{overflow:visible;vertical-align:middle;outline:0}input[type="submit"],input[type="reset"],input[type="button"],input[type="text"],input[type="password"]{-webkit-appearance:none;outline:0}body,th,td,button,input,select,textarea{font-family:"Microsoft Yahei","Hiragino Sans GB","Helvetica Neue",Helvetica,tahoma,arial,"WenQuanYi Micro Hei",Verdana,sans-serif,"\5B8B\4F53";font-size:12px;color:#333;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{line-height:1.6}h1,h2,h3,h4,h5,h6{font-size:100%}a,area{outline:0;blr:expression(this.onFocus=this.blur())}a{text-decoration:none;cursor:pointer}a:hover{text-decoration:underline;outline:0}a.ie6:hover{zoom:1}a:focus{outline:0}a:hover,a:active{outline:0}:focus{outline:0}sub,sup{vertical-align:baseline}button,input[type="button"],input[type="submit"]{line-height:normal!important}img{border:0;vertical-align:middle}a img,img{-ms-interpolation-mode:bicubic}@media(max-width:767px){.img-responsive{max-width:100%!important;height:auto!important}}*html{overflow:-moz-scrollbars-vertical;zoom:expression(function(ele){ele.style.zoom = "1";document.execCommand("BackgroundImageCache",false,true)}(this))}header,footer,section,aside,details,menu,article,section,nav,address,hgroup,figure,figcaption,legend{display:block;margin:0;padding:0}time{display:inline}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}legend{width:100%;margin-bottom:20px;font-size:21px;line-height:40px;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}svg:not(:root){overflow:hidden}fieldset{border-width:0;padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}.cl:after,.clearfix:after{content:"\20";display:block;height:0;clear:both;visibility:hidden}.cl,.clearfix{zoom:1}.row{box-sizing:border-box}[class^="col-"],[class*=" col-"]{box-sizing:border-box;float:left;min-height:1px;position:relative}.col-1{width:8.33333%}.col-2{width:16.66667%}.col-3{width:25%}.col-4{width:33.33333%}.col-5{width:41.66667%}.col-6{width:50%}.col-7{width:58.33333%}.col-8{width:66.66667%}.col-9{width:75%}.col-10{width:83.33333%}.col-11{width:91.66667%}.col-12{width:100%}.col-offset-0{margin-left:0}.col-offset-1{margin-left:8.33333%}.col-offset-2{margin-left:16.66667%}.col-offset-3{margin-left:25%}.col-offset-4{margin-left:33.33333%}.col-offset-5{margin-left:41.66667%}.col-offset-6{margin-left:50%}.col-offset-7{margin-left:58.33333%}.col-offset-8{margin-left:66.66667%}.col-offset-9{margin-left:75%}.col-offset-10{margin-left:83.33333%}.col-offset-11{margin-left:91.66667%}.col-push-0{position:relative;left:0;right:auto}.col-pull-0{right:0;left:auto}.col-push-1{left:8.33333%;right:auto}.col-pull-1{right:8.33333%;left:auto}.col-push-2{left:16.66667%;right:auto}.col-pull-2{right:16.66667%;left:auto}.col-push-3{left:25%;right:auto}.col-pull-3{right:25%;left:auto}.col-push-4{left:33.33333%;right:auto}.col-pull-4{right:33.33333%;left:auto}.col-push-5{left:41.66667%;right:auto}.col-pull-5{right:41.66667%;left:auto}.col-push-6{left:50%;right:auto}.col-pull-6{right:50%;left:auto}.col-push-7{left:58.33333%;right:auto}.col-pull-7{right:58.33333%;left:auto}.col-push-8{left:66.66667%;right:auto}.col-pull-8{right:66.66667%;left:auto}.col-push-9{left:75%;right:auto}.col-pull-9{right:75%;left:auto}.col-push-10{left:83.33333%;right:auto}.col-pull-10{right:83.33333%;left:auto}.col-push-11{left:91.66667%;right:auto}.col-pull-11{right:91.66667%;left:auto}.col-1-1{width:100%}.col-2-1{width:50%}.col-3-1{width:33.333333%}.col-3-2{width:66.666667%}.col-4-1{width:25%}.col-4-3{width:75%}.col-5-1{width:20%}.col-5-2{width:40%}.col-5-3{width:60%}.col-5-4{width:80%}.col-6-1{width:16.666667%}.col-6-5{width:83.333333%}@media(max-width:767px){.responsive [class^="col-"],.responsive [class*=" col-"]{float:none!important;width:auto!important}.responsive [class^="col-offset-"],.responsive [class*=" col-offset-"]{margin-left:0!important}}@media(min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media(min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media(min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}.Hui-wraper,.wp,.container{margin-left:auto;margin-right:auto;text-align:left}.container-fluid{width:100%}.sd{float:right}.ct2 .mn{float:left}.ct2 .sd{float:right}.ct2_r .leftmenu{float:left}.ct2_r .mn{float:right}.ct3 .app{float:left;margin-right:20px}.ct3 .mn{float:left;border-left:solid 1px #ddd}.ct3 .sd{float:right}.w-1000{width:1000px}.w-980{width:980px}.w-300{width:300px}.w-200{width:200px}@media(max-width:1000px){.Hui-wraper,.wp,.container{width:auto!important;padding:0 10px!important}}@media print{.Hui-wraper,.container{width:auto}}h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small{font-weight:400;line-height:1;color:#999}h1,h2,h3{padding-top:20px;padding-bottom:10px}h1 small,h2 small,h3 small,h1 .small,h2 .small,h3 .small{font-size:65%}h4,h5,h6{margin-top:10px;margin-bottom:10px}h4 small,h5 small,h6 small,h4 .small,h5 .small,h6 .small{font-size:75%}h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:18px}h5{font-size:14px}h6{font-size:12px}p{margin-bottom:10px}small{font-size:85%}b,strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}mark{color:#000;background:#ff0}dfn{font-style:italic}del{font-family:Simsun}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.en{font-family:Arial!important}.text-l{text-align:left}.text-r{text-align:right}.text-c{text-align:center}.va *{vertical-align:sub!important;*vertical-align:middle!important;_vertical-align:middle!important}.va-t{vertical-align:top!important}.va-m{vertical-align:middle!important}.va-b{vertical-align:bottom!important}.pos-r{position:relative}.pos-a{position:absolute}.pos-f{position:fixed}.l,.f-l{float:left!important;_display:inline}.r,.f-r{float:right!important;_display:inline}[class*="span"].r,[class*="span"].f-r{float:right}.left{left:0;right:auto}.right{right:0;left:auto}.top{top:auto;bottom:0}.bottom{top:0;bottom:auto}.text-overflow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.line{font-size:0;line-height:0;border-top:solid 1px #eee;float:none}.mt-5{margin-top:5px}.mt-10{margin-top:10px}.mt-15{margin-top:15px}.mt-20{margin-top:20px}.mt-25{margin-top:25px}.mt-30{margin-top:30px}.mt-35{margin-top:35px}.mt-40{margin-top:40px}.mt-50{margin-top:50px}.mb-5{margin-bottom:5px}.mb-10{margin-bottom:10px}.mb-15{margin-bottom:15px}.mb-20{margin-bottom:20px}.mb-30{margin-bottom:30px}.mb-40{margin-bottom:40px}.mb-50{margin-bottom:50px}.ml-5{margin-left:5px}.ml-10{margin-left:10px}.ml-15{margin-left:15px}.ml-20{margin-left:20px}.ml-30{margin-left:30px}.ml-40{margin-left:40px}.ml-50{margin-left:50px}.mr-5{margin-right:5px}.mr-10{margin-right:10px}.mr-15{margin-right:15px}.mr-20{margin-right:20px}.mr-30{margin-right:30px}.mr-40{margin-right:40px}.mr-50{margin-right:50px}.pt-5{padding-top:5px}.pt-10{padding-top:10px}.pt-20{padding-top:20px}.pb-5{padding-bottom:5px}.pb-10{padding-bottom:10px}.pb-20{padding-bottom:20px}.pl-5{padding-left:5px}.pl-10{padding-left:10px}.pl-20{padding-left:20px}.pr-5{padding-right:5px}.pr-10{padding-right:10px}.pr-20{padding-right:20px}.pd-5{padding:5px}.pd-10{padding:10px}.pd-15{padding:15px}.pd-20{padding:20px}.pd-30{padding:30px}.pd-40{padding:40px}.bk-gray{border:solid 1px #eee}.radius{border-radius:4px;overflow:hidden}.size-MINI.radius{border-radius:3px}.size-L.radius{border-radius:5px}.size-XL.radius{border-radius:6px}.round{border-radius:1000px;overflow:hidden}.circle{border-radius:50%;overflow:hidden}.box-shadow{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.1);box-shadow:0 1px 2px rgba(0,0,0,0.1)}.text-shadow{-webkit-text-shadow:0 0 2px rgba(0,0,0,0.2);text-shadow:0 0 2px rgba(0,0,0,0.2)}.pipe{margin:0 5px;color:#CCC;font-size:10px!important}.f-12{font-size:12px}.f-14{font-size:14px}.f-16{font-size:16px}.f-18{font-size:18px}.f-20{font-size:20px}.f-24{font-size:24px}.f-26{font-size:26px}.f-28{font-size:28px}.f-30{font-size:30px}.lh-16{line-height:16px}.lh-18{line-height:18px}.lh-20{line-height:20px}.lh-22{line-height:22px}.lh-24{line-height:24px}.lh-26{line-height:26px}.lh-28{line-height:28px}.lh-30{line-height:30px}.l16{line-height:16px}.l18{line-height:18px}.l20{line-height:20px}.l22{line-height:22px}.l-24{line-height:24px}.l-26{line-height:26px}.l-28{line-height:28px}.l-30{line-height:30px}body{background-color:#fff;color:#333}.bg-fff{background-color:#fff}a{color:#333}a:hover{color:#06c}.c-primary,.c-primary a,a.c-primary{color:#5a98de}.c-primary a:hover,a.c-primary:hover{color:#5a98de}.c-secondary,.c-secondary a,a.c-secondary{color:#555}.c-secondary a:hover,a.c-secondary:hover{color:#555}.c-success,.c-success a,a.c-success{color:#5eb95e}.c-success a:hover,a.c-success:hover{color:#5eb95e}.c-danger,.c-danger a,a.c-danger{color:#dd514c}.c-danger a:hover,a.c-danger:hover{color:#dd514c}.c-warning,.c-warning a,a.c-warning{color:#f37b1d}.c-warning a:hover,a.c-warning:hover{color:#f37b1d}.c-error,.c-error a,a.c-error{color:#c00}.c-error a:hover,a.c-error:hover{color:#c00}.c-333,.c-333 a,a.c-333{color:#333}.c-333 a:hover,a.c-333:hover{color:#333}.c-666,.c-666 a,a.c-666{color:#666}.c-666 a:hover,a.c-666:hover{color:#666}.c-999,.c-999 a,a.c-999{color:#999}.c-999 a:hover,a.c-999:hover{color:#999}.c-red,.c-red a,a.c-red{color:red}.c-red a:hover,a.c-red:hover{color:#red}.c-green,.c-green a,a.c-green{color:green}.c-red a:hover,a.c-red:hover{color:green}.c-blue,.c-blue a,a.c-blue{color:blue}.c-blue a:hover,a.c-blue:hover{color:blue}.c-white,.c-white a,a.c-white{color:white}.c-white a:hover,a.c-white:hover{color:white}.c-black,.c-black a{color:black}.c-black a:hover,a.c-black:hover{color:black}.c-orange,.c-orange a,a.c-orange{color:orange}.c-orange a:hover,a.c-orange:hover{color:orange}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.text-r{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.text-r p,blockquote.text-r small{text-align:right}blockquote.text-r small:before{content:''}blockquote.text-r small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}q{quotes:"\201C" "\201D" "\2018" "\2019"}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}.content{position:relative;font-size:14px;line-height:1.6;overflow:hidden;text-align:left}.content h3{margin-top:20px;font-size:16px}.content p{margin-top:20px}.indent{text-indent:2em}.content img{max-width:100%}.content ul{text-indent:2em}@media(max-width:480px){.content img{max-width:100%!important;height:auto!important;width:expression(this.width>320 ? "320px":this.width)!important}*html .content img{width:expression(this.width>320&&this.width>this.height?320:auto)}}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}.tlist li{line-height:22px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dot-1{padding-left:10px;background:url(../images/dot_1.gif) no-repeat 3px center}.box-1{padding-left:10px;background:url(../images/box_1.gif) no-repeat 3px center}.jt-1{padding-left:18px;background:url(../images/jt_1.gif) no-repeat 3px center}.jt-2{padding-left:18px;background:url(../images/jt_2.gif) no-repeat 3px center}.jt-3{padding-left:18px;background:url(../images/jt_3.gif) no-repeat 3px center}.top-list li{height:20px;line-height:20px;margin-bottom:15px;overflow:hidden;padding-left:30px;position:relative;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}.top-list em{background-color:#f8f8f8;border:1px solid #ebebeb;color:#333;height:18px;left:0;line-height:18px;position:absolute;text-align:center;top:0;width:20px;font-style:normal}.top-list .top em{background-color:#390;border:0;color:#fff;height:20px;line-height:20px;width:22px}.top-list .date{color:#999;font-size:12px;position:absolute;right:0;top:0}.tlist .time{font-size:12px;font-family:Arial;color:#999}@media(max-width:767px){.tlist li{position:relative;font-size:18px;border-bottom:1px solid #eee}.tlist li a{display:block;padding:.7em 30px .7em 12px}.dot_1{padding-left:0}.night .tlist li{border-bottom:1px solid #1f1f1f}.tlist .time{display:none}.tlist i{background:url(../images/article/arrow.png) no-repeat 0 0;background-size:9px auto;height:15px;margin-top:-7px;position:absolute;right:10px;top:50%;width:9px}.night .tlist i{background-position:0 -75px}}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.hide{display:none}[hidden]{display:none}.hidden{display:none!important;visibility:hidden!important}.f-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}.show{display:block}.invisible{visibility:hidden}.input-text,.btn,.input-text.size-M,.btn.size-M{font-size:14px;height:31px;line-height:1.42857;padding:4px}a.btn,a.btn.size-M,span.btn,span.btn.size-M{line-height:21px}.btn,.btn.size-M{padding:4px 12px}.input-text.size-MINI,.btn.size-MINI{font-size:12px;height:23px;padding:1px 2px;line-height:1.42857}a.btn.size-MINI,span.btn.size-MINI{line-height:21px}.btn.size-MINI{padding:1px 4px}.input-text.size-S,.btn.size-S{font-size:12px;height:27px;padding:3px;line-height:1.42857}a.btn.size-S,span.btn.size-S{line-height:19px}.btn.size-S{padding:3px 8px}.input-text.size-L,.btn.size-L{font-size:16px;height:41px;padding:8px}a.btn.size-L,span.btn.size-L{line-height:23px}.btn.size-L{padding:8px 16px}.input-text.size-XL,.btn.size-XL{font-size:18px;height:48px;padding:10px}a.btn.size-XL,span.btn.size-XL{line-height:26px}.btn.size-XL{padding:10px 24px}@media(max-width:767px){.responsive .input-text.size-MINI,.responsive .btn.size-MINI{height:24px}.responsive .input-text.size-S,.responsive .btn.size-S{font-size:14px;height:30px}.responsive .input-text,.btn,.responsive .input-text.size-M,.responsive .btn.size-M{font-size:16px;height:36px}.responsive .input-text.size-L,.responsive .btn.size-L{font-size:18px;height:42px}.responsive .input-text.size-XL,.responsive .btn.size-XL{font-size:20px;height:48px}}code{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace}pre .title,pre .keyword,pre .body,pre .des{color:#333}pre{display:block;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;padding:9.5px;margin-bottom:10px;font-size:12px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px;color:#333}.prettyprint{margin-bottom:20px;padding:8px;background-color:#f7f7f9;border:1px solid #e1e1e8}.prettyprint .com{color:#998;font-style:italic}.prettyprint .tag{color:#007}.prettyprint .lit{color:#195f91}.prettyprint .pun,.prettyprint .opn,.prettyprint .clo{color:#93a1a1}.prettyprint .fun{color:#dc322f}.prettyprint .str,.prettyprint .atv{color:#D14}.prettyprint .kwd,.prettyprint .prettyprint .tag{color:#1e347b}.prettyprint .typ,.prettyprint .atn,.prettyprint .dec,.prettyprint .var{color:teal}.prettyprint .pln{color:#48484c}.prettyprint.linenums{box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0}.pre-scrollable{max-height:340px;overflow-y:scroll}ol.linenums{list-style:decimal outside none;margin-left:20px}ol.linenums li{line-height:28px;padding-left:10px}pre ol.linenums{margin:0 0 0 33px}pre ol.linenums li{padding-left:12px;color:#bbb;line-height:18px;text-shadow:0 1px 0 #fff}@media(max-width:767px){pre ol.linenums{margin-left:0;list-style:none}}table{width:100%;empty-cells:show;background-color:transparent;border-collapse:collapse;border-spacing:0}table th{text-align:left;font-weight:400}.table th{font-weight:bold}.table th,.table td{padding:8px;line-height:20px}.table td{text-align:left}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-border{border-top:1px solid #ddd}.table-border th,.table-border td{border-bottom:1px solid #ddd}.table-bg thead th{background-color:#f5fafe}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-border.table-bordered{border-bottom:0}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-condensed th,.table-condensed td{padding:4px 5px}.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5}.table tbody tr.selected td{background-color:#f3f3f3}.table tbody tr.active,.table tbody tr.active>td,.table tbody tr.active>th,.table tbody tr .active{background-color:#f5f5f5!important}.table tbody tr.success,.table tbody tr.success>td,.table tbody tr.success>th,.table tbody tr .success{background-color:#dff0d8!important}.table tbody tr.warning,.table tbody tr.warning>td,.table tbody tr.warning>th,.table tbody tr .warning{background-color:#fcf8e3!important}.table tbody tr.danger,.table tbody tr.danger>td,.table tbody tr.danger>th,.table tbody tr .danger{background-color:#f2dede!important}.table .text-c th,.table .text-c td{text-align:center}.table .text-r th,.table .text-r td{text-align:right}.table th.text-l,.table td.text-l{text-align:left!important}.table th.text-c,.table td.text-c{text-align:center!important}.table th.text-r,.table td.text-r{text-align:right!important}table.dataTable{border-collapse:separate;border-spacing:0;clear:both}table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting{cursor:pointer;background-repeat:no-repeat;background-position:right center}table.dataTable thead .sorting{background-image:url(../images/sort_both.png)}table.dataTable thead .sorting_asc{background-image:url(../images/sort_asc.png)}table.dataTable thead .sorting_desc{background-image:url(../images/sort_desc.png)}.dataTable td.sorting_1{background-color:#f5fafe}.dataTables_wrapper .dataTables_length{float:left;padding-bottom:20px}.dataTables_wrapper .dataTables_length .select{width:50px}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter .input-text{width:auto}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:10px;font-size:14px;color:#666}.dataTables_wrapper .dataTables_paginate{float:right;padding-top:10px;text-align:right}.dataTables_wrapper .dataTables_paginate .paginate_button{border:1px solid #ccc;cursor:pointer;display:inline-block;margin-left:2px;text-align:center;text-decoration:none;color:#666;height:26px;line-height:26px;text-decoration:none;margin:0 0 6px 6px;padding:0 10px;font-size:14px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{background:#5a98de;color:#fff}@media(max-width:767px){table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}table-responsive>.table{margin-bottom:0}table-responsive>.table>thead>tr>th,table-responsive>.table>tbody>tr>th,table-responsive>.table>tfoot>tr>th,table-responsive>.table>thead>tr>td,table-responsive>.table>tbody>tr>td,table-responsive>.table>tfoot>tr>td{white-space:nowrap}table-responsive>.table-bordered{border:0}table-responsive>.table-bordered>thead>tr>th:first-child,table-responsive>.table-bordered>tbody>tr>th:first-child,table-responsive>.table-bordered>tfoot>tr>th:first-child,table-responsive>.table-bordered>thead>tr>td:first-child,table-responsive>.table-bordered>tbody>tr>td:first-child,table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}table-responsive>.table-bordered>thead>tr>th:last-child,table-responsive>.table-bordered>tbody>tr>th:last-child,table-responsive>.table-bordered>tfoot>tr>th:last-child,table-responsive>.table-bordered>thead>tr>td:last-child,table-responsive>.table-bordered>tbody>tr>td:last-child,table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}table-responsive>.table-bordered>tbody>tr:last-child>th,table-responsive>.table-bordered>tfoot>tr:last-child>th,table-responsive>.table-bordered>tbody>tr:last-child>td,table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}.input-text,.textarea{box-sizing:border-box;border:solid 1px #ddd;width:100%;-webkit-transition:all .2s linear 0s;-moz-transition:all .2s linear 0s;-o-transition:all .2s linear 0s;transition:all .2s linear 0s}.textarea{height:100px;resize:none;font-size:14px;padding:4px}.textarea-numberbar{position:absolute;right:20px;bottom:5px;z-index:1;margin-bottom:0}.textarea-length{font-style:normal}.input-text:hover,.textarea:hover{border:solid 1px #3bb4f2}.input-text.focus,textarea.focus{border:solid 1px #0f9ae0 \9;border-color:rgba(82,168,236,0.8);box-shadow:0 1px 1px rgba(0,0,0,0.075) inset,0 0 8px rgba(102,175,233,0.6)}.input-text.disabled,.textarea.disabled,.input-text.disabled.focus,.textarea.disabled.focus{background-color:#ededed;cursor:default;border-color:#ddd;-webkit-box-shadow:inset 0 2px 2px #e8e7e7;-moz-box-shadow:inset 0 2px 2px #e8e7e7;box-shadow:inset 0 2px 2px #e8e7e7}.input-text.disabled,.textarea.disabled{background-color:#e6e6e6;cursor:default}.input-text.box-shadow,.textarea.box-shadow{-ms-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.input-text.inline{display:inline-block;width:auto}input[type="radio"],input[type="checkbox"]{line-height:normal;margin-top:-4px}.check-box,.radio-box{display:inline-block;box-sizing:border-box;cursor:pointer;position:relative;padding-left:30px;padding-right:20px}.icheckbox,.icheckbox-red,.icheckbox-green,.icheckbox-blue,.icheckbox-aero,.icheckbox-grey,.icheckbox-orange,.icheckbox-yellow,.icheckbox-pink,.icheckbox-purple,.iradio,.iradio-red,.iradio-green,.iradio-blue,.iradio-aero,.iradio-grey,.iradio-orange,.iradio-yellow,.iradio-pink,.iradio-purple{position:absolute;top:4px;left:0}@media(max-width:767px){.responsive .check-box,.responsive .radio-box{display:block}}.select-box{border:solid 1px #ddd;box-sizing:border-box;vertical-align:middle;width:100%;display:inline-block}.select{border:solid 1px #ddd;box-sizing:border-box;cursor:pointer;line-height:normal;font-weight:normal;width:100%}.select-box .select{border:0}.select-box.inline,.select-box.inline .select{width:auto}.select-box,.select-box.size-M{height:31px;padding:4px 5px}.select,.size-M .select{font-size:14px}.select-box.size-MINI{height:23px;padding:0 5px}.size-MINI .select{font-size:12px}.select-box.size-S{height:27px;padding:3px 5px}.size-S .select{font-size:12px}.select-box.size-L{height:41px;padding:8px 5px}.size-L .select{font-size:16px}.select-box.size-XL{height:48px;padding:10px 5px}.size-XL .select{font-size:18px}@media(max-width:767px){.responsive .select-box{border:0}.responsive .select-box .select,.responsive .select{border:solid 1px #ddd;padding:10px;font-size:16px}.responsive .select-box,.responsive .select-box.size-M,.responsive .select-box.size-MINI,.responsive .select-box.size-S,.responsive .select-box.size-L,.responsive .select-box.size-XL{height:auto;padding:0}}.select-wrapper{position:relative;display:inline-block;font-size:14px;cursor:default}.select-default{zoom:1;display:block;padding-left:10px;padding-right:30px;background-color:#fff;border:solid 1px #d0d0d0;height:34px;line-height:34px}.jsselect.radius{overflow:visible}.jsselect.radius .select-default{border-radius:4px}.jsselect.radius .select-list{border-radius:4px;border-top-left-radius:0;border-top-right-radius:0}.select-icon{position:absolute;height:8px;width:12px;right:10px;top:50%;margin-top:-4px;background:url(../images/iconpic-arrow-down2.png) no-repeat center}.unselectable{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.select-list{position:absolute;left:0;right:0;top:100%;z-index:1;line-height:34px;max-height:320px;overflow:auto;_height:expression(this.scrollHeight>319 ? "320px":"auto");background-color:#fff;background-clip:padding-box;-moz-box-shadow:0 1px 2px rgba(0,1,1,0.2);-webkit-box-shadow:0 1px 2px rgba(0,1,1,0.2);box-shadow:0 1px 2px rgba(0,1,1,0.2);box-sizing:border-box;border:solid 1px #d0d0d0;behavior:url(../lib/ie-css3.htc)}.select-item{margin:0;padding:0}.select-option{background:#fff;line-height:34px;text-align:left;white-space:nowrap;cursor:pointer;border-bottom:1px solid #f2f2f2;padding:0 10px}.select-item .selected{background-color:#148cf1;color:#fff}.btn-upload{position:relative;display:inline-block;height:31px;*display:inline;overflow:hidden;vertical-align:middle;cursor:pointer}.upload-url{cursor:pointer;width:300px}.input-file{position:absolute;right:0;top:0;cursor:pointer;z-index:1;font-size:30em;opacity:0;filter:alpha(opacity=0)}.form-group .upload-btn{margin-left:-1px}.btn-upload .icon-add,.btn-upload .icon-minus{cursor:pointer;display:inline-block;font-family:Arial;font-size:30px;height:31px;line-height:31px;text-align:center;vertical-align:middle;width:36px}@media(max-width:767px){.upload-btn{display:none}.upload-url{display:none}}.numberControlBox{display:inline-block;overflow:hidden;vertical-align:middle}.ncb-up,.ncb-down{font-size:0;display:block;height:10px;background-color:#f4f4f4;background:-moz-linear-gradient(top,#fff 0,#e6e6e6 50%,#fff 100%);width:24px;border:1px solid #d1d1d1;cursor:pointer}.ncb-up{margin-bottom:1px}.numberControlBox .ncb_ico{display:block;height:10px;background-image:url(../img/icon-arrow.png);background-repeat:no-repeat}.ncb-up .ncb_ico{background-position:-22px center}.ncb-down .ncb_ico{background-position:1px center}.ncb_btn_hover{border:1px solid #9dc7e7;background-color:#dff2fc;background:-moz-linear-gradient(top,#fff 0,#d2edfa 50%,#fff 100%)}.ncb_btn_selected{border:1px solid #6198c2;background-color:#aee1fb;background:-moz-linear-gradient(top,#fff 0,#aee1fb 50%,#fff 100%)}.input-text[type="number"]{width:80px}label,.placeholder{font-size:14px}.form legend{font-size:20px}.form .row{margin-top:15px}.form-label{display:block;color:#555}.formControls{position:relative}.formControls>*{vertical-align:middle}.placeholder{position:absolute;left:4px;top:4px;color:#c6c6c6;cursor:text}.form-horizontal .row{display:table;width:100%}.form-horizontal .form-label{margin-top:3px;cursor:text;text-align:right;padding-right:10px}.form-horizontal .formControls{padding-right:10px}.form-horizontal .Validform_checktip{margin-top:5px}::-webkit-input-placeholder{color:#b3b3b3}:-moz-placeholder{color:#b3b3b3}::-moz-placeholder{color:#b3b3b3}:-ms-input-placeholder{color:#b3b3b3}.placeholder{color:#adb0be;position:absolute;z-index:9}@media(max-width:767px){.responsive .form-label{text-align:left;padding-right:0;font-size:16px;float:none}.responsive .formControls{padding-right:0;float:none;margin-top:10px}}.Validform_error{background-color:#fbe2e2;border-color:#c66161;color:#c00}.Validform_wrong,.Validform_right,.Validform_warning{display:inline-block;height:20px;font-size:12px;vertical-align:middle;padding-left:25px}.Validform_wrong{background:url(../images/icon_error_s.png) no-repeat 0 center;color:#ef392b}.Validform_right{background:url(../images/icon_right_s.png) no-repeat 0 center}.Validform_warning{background:url(../images/icon_warning_s.png) no-repeat 0 center;color:#777}.passwordStrength b{font-weight:400}.passwordStrength b,.passwordStrength span{display:inline-block;vertical-align:middle;line-height:16px;line-height:18px\9;height:16px}.passwordStrength span{width:57px;text-align:center;background-color:#d0d0d0;border-right:1px solid #fff}.passwordStrength .last{border-right:0}.passwordStrength .bgStrength{color:#fff;background-color:#fcc900}#Validform_msg{font-size:14px;width:300px;-webkit-box-shadow:2px 2px 3px #aaa;-moz-box-shadow:2px 2px 3px #aaa;background:#fff;position:absolute;top:0;right:50px;z-index:99999;display:none;filter:progid:DXImageTransform.Microsoft.Shadow(Strength=3,Direction=135,Color='#999999');box-shadow:2px 2px 0 rgba(0,0,0,0.1)}#Validform_msg .iframe{position:absolute;left:0;top:-1px;z-index:-1}#Validform_msg .Validform_title{font-size:20px;padding:10px;text-align:left;color:#fff;position:relative;background-color:#fcc900}#Validform_msg a.Validform_close:link,#Validform_msg a.Validform_close:visited{position:absolute;right:8px;top:6px;color:#fff;text-decoration:none;font-family:Verdana}#Validform_msg a.Validform_close:hover{color:#fff}#Validform_msg .Validform_info{padding:10px;border:1px solid #bbb;border-top:0;text-align:left}@media(max-width:767px){.responsive .Validform_checktip{margin-top:10px}}.close{font-size:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;box-sizing:border-box;cursor:pointer;text-align:center;font-weight:400;white-space:nowrap;vertical-align:middle;-moz-padding-start:npx;-moz-padding-end:npx;border:solid 1px #ddd;background-color:#fff;width:auto;*zoom:1;*overflow:visible;-webkit-transition:background-color .1s linear;-moz-transition:background-color .1s linear;-o-transition:background-color .1s linear;transition:background-color .1s linear}a.btn:hover,a.btn:focus,a.btn:active,a.btn.active,a.btn.disabled,a.btn[disabled]{text-decoration:none}.btn:active,.btn.active{background-color:#ccc}.btn:first-child{*margin-left:0}.btn.active,.btn:active{-moz-box-shadow:0 1px 8px rgba(0,0,0,0.125) inset;-webkit-box-shadow:0 1px 8px rgba(0,0,0,0.125) inset;box-shadow:0 1px 8px rgba(0,0,0,0.125) inset}.btn-default{background-color:#e6e6e6;border-color:#e6e6e6}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active{color:#333;background-color:#c7c7c7;border-color:#c7c7c7}.btn-primary{color:#fff;background-color:#5a98de;border-color:#5a98de}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active{color:#fff;background-color:#0a6999;border-color:#0a6999}.btn-secondary{color:#fff;background-color:#3bb4f2;border-color:#3bb4f2}.btn-secondary:hover,.btn-secondary:focus,.btn-secondary:active,.btn-secondary.active{color:#fff;background-color:#0f9ae0;border-color:#0f9ae0}.btn-success{color:#fff;background-color:#5eb95e;border-color:#5eb95e}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active{color:#fff;background-color:#429842;border-color:#429842}.btn-warning{color:#fff;background-color:#f37b1d;border-color:#f37b1d}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active{color:#fff;background-color:#c85e0b;border-color:#c85e0b}.btn-danger{color:#fff;background-color:#dd514c;border-color:#dd514c}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active{color:#fff;background-color:#c62b26;border-color:#c62b26}.btn-link{color:#0e90d2;cursor:pointer;border-color:transparent;background-color:transparent}.btn-link:hover,.btn-link:focus,.btn-link:active,.btn-link.active{color:#095f8a;text-decoration:underline;background-color:transparent}.btn.disabled{cursor:not-allowed;background-image:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none;pointer-events:none}.btn-block{-moz-box-sizing:border-box;display:block;padding-left:0;padding-right:0;width:100%}.form-group{display:inline-block;vertical-align:middle}.form-group .input-text{position:relative;vertical-align:top}.form-group.radius .input-text{border-radius:4px 0 0 4px}.form-group.round .input-text{border-radius:1000px 0 0 1000px}.form-group .btn{position:relative;margin-left:-1px}.form-group.radius .btn{border-radius:0 4px 4px 0}.form-group.round .btn{border-radius:0 1000px 1000px 0}.duang-opacity img{-webkit-transition:opacity .1s linear;-moz-transition:opacity .1s linear;-o-transition:opacity .1s linear;transition:opacity .1s linear}.duang-opacity a:hover img,a:hover .opacity img{opacity:.85;filter:alpha(opacity=85)}.album-img{border:1px solid #e0e0e0}.album-img img{display:block}.album-title{display:block;text-align:left;padding:7px 5px;line-height:18px;color:#555;text-decoration:none;font-size:12px;border:solid 1px #e0e0e0;border-top:0}.album-bg-Fir,.album-bg-Sec{border:1px solid #e6e6e6;border-top:1px solid #f5f5f5;height:1px;margin:0 auto;overflow:hidden}.album-bg-Fir{margin:0 3px}.album-bg-Sec{margin:0 6px}.avatar{display:inline-block;position:relative;overflow:hidden}.avatar img{display:block}.avatar.radius,.avatar.radius img{border-radius:50%}.avatar,.avatar img{width:32px;height:32px}.avatar.size-MINI{width:16px;height:16px}.avatar.size-S,.avatar.size-S img{width:24px;height:24px}.avatar.size-M,.avatar.size-M img{width:32px;height:32px}.avatar.size-L,.avatar.size-L img{width:40px;height:40px}.avatar.size-XL,.avatar.size-XL img{width:64px;height:64px}.avatar.size-XXL,.avatar.size-XXL img{width:100px;height:100px}.avatar.size-XXXL,.avatar.size-XXXL img{width:128px;height:128px}.iconpic{display:inline-block;vertical-align:sub;*vertical-align:middle;_vertical-align:middle;width:16px;height:16px;background-position:center;background-repeat:no-repeat}.hui-bounce,.hui-flip,.hui-flash,.hui-shake,.hui-swing,.hui-wobble,.hui-ring{-webkit-animation:1s ease;-moz-animation:1s ease;-ms-animation:1s ease;animation:1s ease}.hui-fadein,.hui-fadeinT,.hui-fadeinR,.hui-fadeinB,.hui-fadeinL,.hui-bouncein,.hui-bounceinT,.hui-bounceinR,.hui-bounceinB,.hui-bounceinL,.hui-rotatein,.hui-rotateinLT,.hui-rotateinLB,.hui-rotateinRT,.hui-rotateinRB,.hui-flipin,.hui-flipinX,.hui-flipinY{-webkit-animation:1s ease-out backwards;-moz-animation:1s ease-out backwards;-ms-animation:1s ease-out backwards;animation:1s ease-out backwards}.hui-fadeout,.hui-fadeoutT,.hui-fadeoutR,.hui-fadeoutB,.hui-fadeoutL,.hui-bounceout,.hui-bounceoutT,.hui-bounceoutR,.hui-bounceoutB,.hui-bounceoutL,.hui-rotateout,.hui-rotateoutLT,.hui-rotateoutLB,.hui-rotateoutRT,.hui-rotateoutRB,.hui-flipout,.hui-flipoutX,.hui-flipoutY{-webkit-animation:1s ease-in forwards;-moz-animation:1s ease-in forwards;-ms-animation:1s ease-in forwards;animation:1s ease-in forwards}.hui-fadein{-webkit-animation-name:fadein;-moz-animation-name:fadein;-ms-animation-name:fadein;animation-name:fadein}.hui-fadeinT{-webkit-animation-name:fadeinT;-moz-animation-name:fadeinT;-ms-animation-name:fadeinT;animation-name:fadeinT}.hui-fadeinR{-webkit-animation-name:fadeinR;-moz-animation-name:fadeinR;-ms-animation-name:fadeinR;animation-name:fadeinR}.hui-fadeinB{-webkit-animation-name:fadeinB;-moz-animation-name:fadeinB;-ms-animation-name:fadeinB;animation-name:fadeinB}.hui-fadeinL{-webkit-animation-name:fadeinL;-moz-animation-name:fadeinL;-ms-animation-name:fadeinL;animation-name:fadeinL}.hui-fadeout{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-ms-animation-name:fadeout;animation-name:fadeout}.hui-fadeoutT{-webkit-animation-name:fadeoutT;-moz-animation-name:fadeoutT;-ms-animation-name:fadeoutT;animation-name:fadeoutT}.hui-fadeoutR{-webkit-animation-name:fadeoutR;-moz-animation-name:fadeoutR;-ms-animation-name:fadeoutR;animation-name:fadeoutR}.hui-fadeoutB{-webkit-animation-name:fadeoutB;-moz-animation-name:fadeoutB;-ms-animation-name:fadeoutB;animation-name:fadeoutB}.hui-fadeoutL{-webkit-animation-name:fadeoutL;-moz-animation-name:fadeoutL;-ms-animation-name:fadeoutL;animation-name:fadeoutL}.hui-bounce{-webkit-animation-name:bounce;-moz-animation-name:bounce;-ms-animation-name:bounce;animation-name:bounce}.hui-bouncein{-webkit-animation-name:bouncein;-moz-animation-name:bouncein;-ms-animation-name:bouncein;animation-name:bouncein}.hui-bounceinT{-webkit-animation-name:bounceinT;-moz-animation-name:bounceinT;-ms-animation-name:bounceinT;animation-name:bounceinT}.hui-bounceinR{-webkit-animation-name:bounceinR;-moz-animation-name:bounceinR;-ms-animation-name:bounceinR;animation-name:bounceinR}.hui-bounceinB{-webkit-animation-name:bounceinB;-moz-animation-name:bounceinB;-ms-animation-name:bounceinB;animation-name:bounceinB}.hui-bounceinL{-webkit-animation-name:bounceinL;-moz-animation-name:bounceinL;-ms-animation-name:bounceinL;animation-name:bounceinL}.hui-bounceout{-webkit-animation-name:bounceout;-moz-animation-name:bounceout;-ms-animation-name:bounceout;animation-name:bounceout}.hui-bounceoutT{-webkit-animation-name:bounceoutT;-moz-animation-name:bounceoutT;-ms-animation-name:bounceoutT;animation-name:bounceoutT}.hui-bounceoutR{-webkit-animation-name:bounceoutR;-moz-animation-name:bounceoutR;-ms-animation-name:bounceoutR;animation-name:bounceoutR}.hui-bounceoutB{-webkit-animation-name:bounceoutB;-moz-animation-name:bounceoutB;-ms-animation-name:bounceoutB;animation-name:bounceoutB}.hui-bounceoutL{-webkit-animation-name:bounceoutL;-moz-animation-name:bounceoutL;-ms-animation-name:bounceoutL;animation-name:bounceoutL}.hui-rotatein{-webkit-animation-name:rotatein;-moz-animation-name:rotatein;-ms-animation-name:rotatein;animation-name:rotatein}.hui-rotateinLT{-webkit-animation-name:rotateinLT;-moz-animation-name:rotateinLT;-ms-animation-name:rotateinLT;animation-name:rotateinLT}.hui-rotateinLB{-webkit-animation-name:rotateinLB;-moz-animation-name:rotateinLB;-ms-animation-name:rotateinLB;animation-name:rotateinLB}.hui-rotateinRT{-webkit-animation-name:rotateinRT;-moz-animation-name:rotateinRT;-ms-animation-name:rotateinRT;animation-name:rotateinRT}.hui-rotateinRB{-webkit-animation-name:rotateinRB;-moz-animation-name:rotateinRB;-ms-animation-name:rotateinRB;animation-name:rotateinRB}.hui-rotateout{-webkit-animation-name:rotateout;-moz-animation-name:rotateout;-ms-animation-name:rotateout;animation-name:rotateout}.hui-rotateoutLT{-webkit-animation-name:rotateoutLT;-moz-animation-name:rotateoutLT;-ms-animation-name:rotateoutLT;animation-name:rotateoutLT}.hui-rotateoutLB{-webkit-animation-name:rotateoutLB;-moz-animation-name:rotateoutLB;-ms-animation-name:rotateoutLB;animation-name:rotateoutLB}.hui-rotateoutRT{-webkit-animation-name:rotateoutRT;-moz-animation-name:rotateoutRT;-ms-animation-name:rotateoutRT;animation-name:rotateoutRT}.hui-rotateoutRB{-webkit-animation-name:rotateoutRB;-moz-animation-name:rotateoutRB;-ms-animation-name:rotateoutRB;animation-name:rotateoutRB}.hui-flip{-webkit-animation-name:flip;-moz-animation-name:flip;-ms-animation-name:flip;animation-name:flip}.hui-flipinX{-webkit-animation-name:flipinX;-moz-animation-name:flipinX;-ms-animation-name:flipinX;animation-name:flipinX}.hui-flipin,.hui-flipinY{-webkit-animation-name:flipinY;-moz-animation-name:flipinY;-ms-animation-name:flipinY;animation-name:flipinY}.hui-flipoutX{-webkit-animation-name:flipoutX;-moz-animation-name:flipoutX;-ms-animation-name:flipoutX;animation-name:flipoutX}.hui-flipout,.hui-flipoutY{-webkit-animation-name:flipoutY;-moz-animation-name:flipoutY;-ms-animation-name:flipoutY;animation-name:flipoutY}.hui-flash{-webkit-animation-name:flash;-moz-animation-name:flash;-ms-animation-name:flash;animation-name:flash}.hui-shake{-webkit-animation-name:shake;-moz-animation-name:shake;-ms-animation-name:shake;animation-name:shake}.hui-swing{-webkit-animation-name:swing;-moz-animation-name:swing;-ms-animation-name:swing;animation-name:swing}.hui-wobble{-webkit-animation-name:wobble;-moz-animation-name:wobble;-ms-animation-name:wobble;animation-name:wobble}.hui-ring{-webkit-animation-name:ring;-moz-animation-name:ring;-ms-animation-name:ring;animation-name:ring}@-webkit-keyframes fadein{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fadein{0%{opacity:0}100%{opacity:1}}@-ms-keyframes fadein{0%{opacity:0}100%{opacity:1}}@keyframes fadein{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeinT{0%{opacity:0;-webkit-transform:translateY(-100px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeinT{0%{opacity:0;-moz-transform:translateY(-100px)}100%{opacity:1;-moz-transform:translateY(0)}}@-ms-keyframes fadeinT{0%{opacity:0;-ms-transform:translateY(-100px)}100%{opacity:1;-ms-transform:translateY(0)}}@keyframes fadeinT{0%{opacity:0;transform:translateY(-100px)}100%{opacity:1;transform:translateY(0)}}@-webkit-keyframes fadeinR{0%{opacity:0;-webkit-transform:translateX(100px)}100%{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes fadeinR{0%{opacity:0;-moz-transform:translateX(100px)}100%{opacity:1;-moz-transform:translateX(0)}}@-ms-keyframes fadeinR{0%{opacity:0;-ms-transform:translateX(100px)}100%{opacity:1;-ms-transform:translateX(0)}}@keyframes fadeinR{0%{opacity:0;transform:translateX(100px)}100%{opacity:1;transform:translateX(0)}}@-webkit-keyframes fadeinB{0%{opacity:0;-webkit-transform:translateY(100px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeinB{0%{opacity:0;-moz-transform:translateY(100px)}100%{opacity:1;-moz-transform:translateY(0)}}@-ms-keyframes fadeinB{0%{opacity:0;-ms-transform:translateY(100px)}100%{opacity:1;-ms-transform:translateY(0)}}@keyframes fadeinB{0%{opacity:0;transform:translateY(100px)}100%{opacity:1;transform:translateY(0)}}@-webkit-keyframes fadeinL{0%{opacity:0;-webkit-transform:translateX(-100px)}100%{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes fadeinL{0%{opacity:0;-moz-transform:translateX(-100px)}100%{opacity:1;-moz-transform:translateX(0)}}@-ms-keyframes fadeinL{0%{opacity:0;-ms-transform:translateX(-100px)}100%{opacity:1;-ms-transform:translateX(0)}}@keyframes fadeinL{0%{opacity:0;transform:translateX(-100px)}100%{opacity:1;transform:translateX(0)}}@-webkit-keyframes fadeout{0%{opacity:1}100%{opacity:0}}@-moz-keyframes fadeout{0%{opacity:1}100%{opacity:0}}@-ms-keyframes fadeout{0%{opacity:1}100%{opacity:0}}@keyframes fadeout{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes fadeoutT{0%{opacity:1;-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-100px)}}@-moz-keyframes fadeoutT{0%{opacity:1;-moz-transform:translateY(0)}100%{opacity:0;-moz-transform:translateY(-100px)}}@-ms-keyframes fadeoutT{0%{opacity:1;-ms-transform:translateY(0)}100%{opacity:0;-ms-transform:translateY(-100px)}}@keyframes fadeoutT{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-100px)}}@-webkit-keyframes fadeoutR{0%{opacity:1;-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(100px)}}@-moz-keyframes fadeoutR{0%{opacity:1;-moz-transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(100px)}}@-ms-keyframes fadeoutR{0%{opacity:1;-ms-transform:translateX(0)}100%{opacity:0;-ms-transform:translateX(100px)}}@keyframes fadeoutR{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(100px)}}@-webkit-keyframes fadeoutB{0%{opacity:1;-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(100px)}}@-moz-keyframes fadeoutB{0%{opacity:1;-moz-transform:translateY(0)}100%{opacity:0;-moz-transform:translateY(100px)}}@-ms-keyframes fadeoutB{0%{opacity:1;-ms-transform:translateY(0)}100%{opacity:0;-ms-transform:translateY(100px)}}@keyframes fadeoutB{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(100px)}}@-webkit-keyframes fadeoutL{0%{opacity:1;-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-100px)}}@-moz-keyframes fadeoutL{0%{opacity:1;-moz-transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(-100px)}}@-ms-keyframes fadeoutL{0%{opacity:1;-ms-transform:translateX(0)}100%{opacity:0;-ms-transform:translateX(-100px)}}@keyframes fadeoutL{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(-100px)}}@-webkit-keyframes bounce{0%,20%,50%,80%,100%{-webkit-transform:translateY(0)}40%{-webkit-transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px)}}@-moz-keyframes bounce{0%,20%,50%,80%,100%{-moz-transform:translateY(0)}40%{-moz-transform:translateY(-30px)}60%{-moz-transform:translateY(-15px)}}@-ms-keyframes bounce{0%,20%,50%,80%,100%{-ms-transform:translateY(0)}40%{-ms-transform:translateY(-30px)}60%{-ms-transform:translateY(-15px)}}@keyframes bounce{0%,20%,50%,80%,100%{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@-webkit-keyframes bouncein{0%{opacity:0;-webkit-transform:scale(0.3)}50%{opacity:1;-webkit-transform:scale(1.05)}70%{-webkit-transform:scale(0.9)}100%{-webkit-transform:scale(1)}}@-moz-keyframes bouncein{0%{opacity:0;-moz-transform:scale(0.3)}50%{opacity:1;-moz-transform:scale(1.05)}70%{-moz-transform:scale(0.9)}100%{-moz-transform:scale(1)}}@-ms-keyframes bouncein{0%{opacity:0;-ms-transform:scale(0.3)}50%{opacity:1;-ms-transform:scale(1.05)}70%{-ms-transform:scale(0.9)}100%{-ms-transform:scale(1)}}@keyframes bouncein{0%{opacity:0;transform:scale(0.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(0.9)}100%{transform:scale(1)}}@-webkit-keyframes bounceinT{0%{opacity:0;-webkit-transform:translateY(-100px)}60%{opacity:1;-webkit-transform:translateY(30px)}80%{-webkit-transform:translateY(-10px)}100%{-webkit-transform:translateY(0)}}@-moz-keyframes bounceinT{0%{opacity:0;-moz-transform:translateY(-100px)}60%{opacity:1;-moz-transform:translateY(30px)}80%{-moz-transform:translateY(-10px)}100%{-moz-transform:translateY(0)}}@-ms-keyframes bounceinT{0%{opacity:0;-ms-transform:translateY(-100px)}60%{opacity:1;-ms-transform:translateY(30px)}80%{-ms-transform:translateY(-10px)}100%{-ms-transform:translateY(0)}}@keyframes bounceinT{0%{opacity:0;transform:translateY(-100px)}60%{opacity:1;transform:translateY(30px)}80%{transform:translateY(-10px)}100%{transform:translateY(0)}}@-webkit-keyframes bounceinR{0%{opacity:0;-webkit-transform:translateX(100px)}60%{opacity:1;-webkit-transform:translateX(-30px)}80%{-webkit-transform:translateX(10px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes bounceinR{0%{opacity:0;-moz-transform:translateX(100px)}60%{opacity:1;-moz-transform:translateX(-30px)}80%{-moz-transform:translateX(10px)}100%{-moz-transform:translateX(0)}}@-ms-keyframes bounceinR{0%{opacity:0;-ms-transform:translateX(100px)}60%{opacity:1;-ms-transform:translateX(-30px)}80%{-ms-transform:translateX(10px)}100%{-ms-transform:translateX(0)}}@keyframes bounceinR{0%{opacity:0;transform:translateX(100px)}60%{opacity:1;transform:translateX(-30px)}80%{transform:translateX(10px)}100%{transform:translateX(0)}}@-webkit-keyframes bounceinB{0%{opacity:0;-webkit-transform:translateY(100px)}60%{opacity:1;-webkit-transform:translateY(-30px)}80%{-webkit-transform:translateY(10px)}100%{-webkit-transform:translateY(0)}}@-moz-keyframes bounceinB{0%{opacity:0;-moz-transform:translateY(100px)}60%{opacity:1;-moz-transform:translateY(-30px)}80%{-moz-transform:translateY(10px)}100%{-moz-transform:translateY(0)}}@-ms-keyframes bounceinB{0%{opacity:0;-ms-transform:translateY(100px)}60%{opacity:1;-ms-transform:translateY(-30px)}80%{-ms-transform:translateY(10px)}100%{-ms-transform:translateY(0)}}@keyframes bounceinB{0%{opacity:0;transform:translateY(100px)}60%{opacity:1;transform:translateY(-30px)}80%{transform:translateY(10px)}100%{transform:translateY(0)}}@-webkit-keyframes bounceinL{0%{opacity:0;-webkit-transform:translateX(-100px)}60%{opacity:1;-webkit-transform:translateX(30px)}80%{-webkit-transform:translateX(-10px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes bounceinL{0%{opacity:0;-moz-transform:translateX(-100px)}60%{opacity:1;-moz-transform:translateX(30px)}80%{-moz-transform:translateX(-10px)}100%{-moz-transform:translateX(0)}}@-ms-keyframes bounceinL{0%{opacity:0;-ms-transform:translateX(-100px)}60%{opacity:1;-ms-transform:translateX(30px)}80%{-ms-transform:translateX(-10px)}100%{-ms-transform:translateX(0)}}@keyframes bounceinL{0%{opacity:0;transform:translateX(-100px)}60%{opacity:1;transform:translateX(30px)}80%{transform:translateX(-10px)}100%{transform:translateX(0)}}@-webkit-keyframes bounceout{0%{-webkit-transform:scale(1)}25%{-webkit-transform:scale(0.95)}50%{opacity:1;-webkit-transform:scale(1.1)}100%{opacity:0;-webkit-transform:scale(0.3)}}@-moz-keyframes bounceout{0%{-moz-transform:scale(1)}25%{-moz-transform:scale(0.95)}50%{opacity:1;-moz-transform:scale(1.1)}100%{opacity:0;-moz-transform:scale(0.3)}}@-ms-keyframes bounceout{0%{-ms-transform:scale(1)}25%{-ms-transform:scale(0.95)}50%{opacity:1;-ms-transform:scale(1.1)}100%{opacity:0;-ms-transform:scale(0.3)}}@keyframes bounceout{0%{transform:scale(1)}25%{transform:scale(0.95)}50%{opacity:1;transform:scale(1.1)}100%{opacity:0;transform:scale(0.3)}}@-webkit-keyframes bounceoutT{0%{-webkit-transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(20px)}100%{opacity:0;-webkit-transform:translateY(-100px)}}@-moz-keyframes bounceoutT{0%{-moz-transform:translateY(0)}20%{opacity:1;-moz-transform:translateY(20px)}100%{opacity:0;-moz-transform:translateY(-100px)}}@-ms-keyframes bounceoutT{0%{-ms-transform:translateY(0)}20%{opacity:1;-ms-transform:translateY(20px)}100%{opacity:0;-ms-transform:translateY(-100px)}}@keyframes bounceoutT{0%{transform:translateY(0)}20%{opacity:1;transform:translateY(20px)}100%{opacity:0;transform:translateY(-100px)}}@-webkit-keyframes bounceoutR{0%{-webkit-transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(-20px)}100%{opacity:0;-webkit-transform:translateX(100px)}}@-moz-keyframes bounceoutR{0%{-moz-transform:translateX(0)}20%{opacity:1;-moz-transform:translateX(-20px)}100%{opacity:0;-moz-transform:translateX(100px)}}@-ms-keyframes bounceoutR{0%{-ms-transform:translateX(0)}20%{opacity:1;-ms-transform:translateX(-20px)}100%{opacity:0;-ms-transform:translateX(100px)}}@keyframes bounceoutR{0%{transform:translateX(0)}20%{opacity:1;transform:translateX(-20px)}100%{opacity:0;transform:translateX(100px)}}@-webkit-keyframes bounceoutB{0%{-webkit-transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(-20px)}100%{opacity:0;-webkit-transform:translateY(100px)}}@-moz-keyframes bounceoutB{0%{-moz-transform:translateY(0)}20%{opacity:1;-moz-transform:translateY(-20px)}100%{opacity:0;-moz-transform:translateY(100px)}}@-ms-keyframes bounceoutB{0%{-ms-transform:translateY(0)}20%{opacity:1;-ms-transform:translateY(-20px)}100%{opacity:0;-ms-transform:translateY(100px)}}@keyframes bounceoutB{0%{transform:translateY(0)}20%{opacity:1;transform:translateY(-20px)}100%{opacity:0;transform:translateY(100px)}}@-webkit-keyframes bounceoutL{0%{-webkit-transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(20px)}100%{opacity:0;-webkit-transform:translateX(-100px)}}@-moz-keyframes bounceoutL{0%{-moz-transform:translateX(0)}20%{opacity:1;-moz-transform:translateX(20px)}100%{opacity:0;-moz-transform:translateX(-100px)}}@-ms-keyframes bounceoutL{0%{-ms-transform:translateX(0)}20%{opacity:1;-ms-transform:translateX(20px)}100%{opacity:0;-ms-transform:translateX(-100px)}}@keyframes bounceoutL{0%{transform:translateX(0)}20%{opacity:1;transform:translateX(20px)}100%{opacity:0;transform:translateX(-200px)}}@-webkit-keyframes rotatein{0%{opacity:0;-webkit-transform:rotate(-200deg)}100%{opacity:1;-webkit-transform:rotate(0)}}@-moz-keyframes rotatein{0%{opacity:0;-moz-transform:rotate(-200deg)}100%{opacity:1;-moz-transform:rotate(0)}}@-ms-keyframes rotatein{0%{opacity:0;-ms-transform:rotate(-200deg)}100%{opacity:1;-ms-transform:rotate(0)}}@keyframes rotatein{0%{opacity:0;transform:rotate(-200deg)}100%{opacity:1;transform:rotate(0)}}@-webkit-keyframes rotateinLT{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}}@-moz-keyframes rotateinLT{0%{-moz-transform-origin:left bottom;-moz-transform:rotate(-90deg);opacity:0}100%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1}}@-ms-keyframes rotateinLT{0%{-ms-transform-origin:left bottom;-ms-transform:rotate(-90deg);opacity:0}100%{-ms-transform-origin:left bottom;-ms-transform:rotate(0);opacity:1}}@keyframes rotateinLT{0%{transform-origin:left bottom;transform:rotate(-90deg);opacity:0}100%{transform-origin:left bottom;transform:rotate(0);opacity:1}}@-webkit-keyframes rotateineftB{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}}@-moz-keyframes rotateineftB{0%{-moz-transform-origin:left bottom;-moz-transform:rotate(90deg);opacity:0}100%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1}}@-ms-keyframes rotateineftB{0%{-ms-transform-origin:left bottom;-ms-transform:rotate(90deg);opacity:0}100%{-ms-transform-origin:left bottom;-ms-transform:rotate(0);opacity:1}}@keyframes rotateineftB{0%{transform-origin:left bottom;transform:rotate(90deg);opacity:0}100%{transform-origin:left bottom;transform:rotate(0);opacity:1}}@-webkit-keyframes rotateinRT{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}}@-moz-keyframes rotateinRT{0%{-moz-transform-origin:right bottom;-moz-transform:rotate(90deg);opacity:0}100%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1}}@-ms-keyframes rotateinRT{0%{-ms-transform-origin:right bottom;-ms-transform:rotate(90deg);opacity:0}100%{-ms-transform-origin:right bottom;-ms-transform:rotate(0);opacity:1}}@keyframes rotateinRT{0%{transform-origin:right bottom;transform:rotate(90deg);opacity:0}100%{transform-origin:right bottom;transform:rotate(0);opacity:1}}@-webkit-keyframes rotateinRB{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}}@-moz-keyframes rotateinRB{0%{-moz-transform-origin:right bottom;-moz-transform:rotate(-90deg);opacity:0}100%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1}}@-ms-keyframes rotateinRB{0%{-ms-transform-origin:right bottom;-ms-transform:rotate(-90deg);opacity:0}100%{-ms-transform-origin:right bottom;-ms-transform:rotate(0);opacity:1}}@keyframes rotateinRB{0%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0}100%{transform-origin:right bottom;transform:rotate(0);opacity:1}}@-webkit-keyframes rotateout{0%{-webkit-transform-origin:center center;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:center center;-webkit-transform:rotate(200deg);opacity:0}}@-moz-keyframes rotateout{0%{-moz-transform-origin:center center;-moz-transform:rotate(0);opacity:1}100%{-moz-transform-origin:center center;-moz-transform:rotate(200deg);opacity:0}}@-ms-keyframes rotateout{0%{-ms-transform-origin:center center;-ms-transform:rotate(0);opacity:1}100%{-ms-transform-origin:center center;-ms-transform:rotate(200deg);opacity:0}}@keyframes rotateout{0%{transform-origin:center center;transform:rotate(0);opacity:1}100%{transform-origin:center center;transform:rotate(200deg);opacity:0}}@-webkit-keyframes rotateoutLT{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(-90deg);opacity:0}}@-moz-keyframes rotateoutLT{0%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1}100%{-moz-transform-origin:left bottom;-moz-transform:rotate(-90deg);opacity:0}}@-ms-keyframes rotateoutLT{0%{-ms-transform-origin:left bottom;-ms-transform:rotate(0);opacity:1}100%{-ms-transform-origin:left bottom;-ms-transform:rotate(-90deg);opacity:0}}@keyframes rotateoutLT{0%{transform-origin:left bottom;transform:rotate(0);opacity:1}100%{transform-origin:left bottom;transform:rotate(-90deg);opacity:0}}@-webkit-keyframes rotateoutLB{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(90deg);opacity:0}}@-moz-keyframes rotateoutLB{0%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1}100%{-moz-transform-origin:left bottom;-moz-transform:rotate(90deg);opacity:0}}@-ms-keyframes rotateoutLB{0%{-ms-transform-origin:left bottom;-ms-transform:rotate(0);opacity:1}100%{-ms-transform-origin:left bottom;-ms-transform:rotate(90deg);opacity:0}}@keyframes rotateoutLB{0%{transform-origin:left bottom;transform:rotate(0);opacity:1}100%{transform-origin:left bottom;transform:rotate(90deg);opacity:0}}@-webkit-keyframes rotateoutRT{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(90deg);opacity:0}}@-moz-keyframes rotateoutRT{0%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1}100%{-moz-transform-origin:right bottom;-moz-transform:rotate(90deg);opacity:0}}@-ms-keyframes rotateoutRT{0%{-ms-transform-origin:right bottom;-ms-transform:rotate(0);opacity:1}100%{-ms-transform-origin:right bottom;-ms-transform:rotate(90deg);opacity:0}}@keyframes rotateoutRT{0%{transform-origin:right bottom;transform:rotate(0);opacity:1}100%{transform-origin:right bottom;transform:rotate(90deg);opacity:0}}@-webkit-keyframes rotateoutBR{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(-90deg);opacity:0}}@-moz-keyframes rotateoutBR{0%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1}100%{-moz-transform-origin:right bottom;-moz-transform:rotate(-90deg);opacity:0}}@-ms-keyframes rotateoutBR{0%{-ms-transform-origin:right bottom;-ms-transform:rotate(0);opacity:1}100%{-ms-transform-origin:right bottom;-ms-transform:rotate(-90deg);opacity:0}}@keyframes rotateoutBR{0%{transform-origin:right bottom;transform:rotate(0);opacity:1}100%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0}}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotateY(0);-webkit-animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(170deg);-webkit-animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-webkit-animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) rotateY(360deg) scale(0.95);-webkit-animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px) scale(1);-webkit-animation-timing-function:ease-in}}@-moz-keyframes flip{0%{-moz-transform:perspective(400px) rotateY(0);-moz-animation-timing-function:ease-out}40%{-moz-transform:perspective(400px) translateZ(150px) rotateY(170deg);-moz-animation-timing-function:ease-out}50%{-moz-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-moz-animation-timing-function:ease-in}80%{-moz-transform:perspective(400px) rotateY(360deg) scale(0.95);-moz-animation-timing-function:ease-in}100%{-moz-transform:perspective(400px) scale(1);-moz-animation-timing-function:ease-in}}@-ms-keyframes flip{0%{-ms-transform:perspective(400px) rotateY(0);-ms-animation-timing-function:ease-out}40%{-ms-transform:perspective(400px) translateZ(150px) rotateY(170deg);-ms-animation-timing-function:ease-out}50%{-ms-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-ms-animation-timing-function:ease-in}80%{-ms-transform:perspective(400px) rotateY(360deg) scale(0.95);-ms-animation-timing-function:ease-in}100%{-ms-transform:perspective(400px) scale(1);-ms-animation-timing-function:ease-in}}@keyframes flip{0%{transform:perspective(400px) rotateY(0);animation-timing-function:ease-out}40%{transform:perspective(400px) translateZ(150px) rotateY(170deg);animation-timing-function:ease-out}50%{transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);animation-timing-function:ease-in}80%{transform:perspective(400px) rotateY(360deg) scale(0.95);animation-timing-function:ease-in}100%{transform:perspective(400px) scale(1);animation-timing-function:ease-in}}@-webkit-keyframes flipinX{0%{-webkit-transform:perspective(400px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-10deg)}70%{-webkit-transform:perspective(400px) rotateX(10deg)}100%{-webkit-transform:perspective(400px) rotateX(0);opacity:1}}@-moz-keyframes flipinX{0%{-moz-transform:perspective(400px) rotateX(90deg);opacity:0}40%{-moz-transform:perspective(400px) rotateX(-10deg)}70%{-moz-transform:perspective(400px) rotateX(10deg)}100%{-moz-transform:perspective(400px) rotateX(0);opacity:1}}@-ms-keyframes flipinX{0%{-ms-transform:perspective(400px) rotateX(90deg);opacity:0}40%{-ms-transform:perspective(400px) rotateX(-10deg)}70%{-ms-transform:perspective(400px) rotateX(10deg)}100%{-ms-transform:perspective(400px) rotateX(0);opacity:1}}@keyframes flipinX{0%{transform:perspective(400px) rotateX(90deg);opacity:0}40%{transform:perspective(400px) rotateX(-10deg)}70%{transform:perspective(400px) rotateX(10deg)}100%{transform:perspective(400px) rotateX(0);opacity:1}}@-webkit-keyframes flipinY{0%{-webkit-transform:perspective(400px) rotateY(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-10deg)}70%{-webkit-transform:perspective(400px) rotateY(10deg)}100%{-webkit-transform:perspective(400px) rotateY(0);opacity:1}}@-moz-keyframes flipinY{0%{-moz-transform:perspective(400px) rotateY(90deg);opacity:0}40%{-moz-transform:perspective(400px) rotateY(-10deg)}70%{-moz-transform:perspective(400px) rotateY(10deg)}100%{-moz-transform:perspective(400px) rotateY(0);opacity:1}}@-ms-keyframes flipinY{0%{-ms-transform:perspective(400px) rotateY(90deg);opacity:0}40%{-ms-transform:perspective(400px) rotateY(-10deg)}70%{-ms-transform:perspective(400px) rotateY(10deg)}100%{-ms-transform:perspective(400px) rotateY(0);opacity:1}}@keyframes flipinY{0%{transform:perspective(400px) rotateY(90deg);opacity:0}40%{transform:perspective(400px) rotateY(-10deg)}70%{transform:perspective(400px) rotateY(10deg)}100%{transform:perspective(400px) rotateY(0);opacity:1}}@-webkit-keyframes flipoutX{0%{-webkit-transform:perspective(400px) rotateX(0);opacity:1}100%{-webkit-transform:perspective(400px) rotateX(90deg);opacity:0}}@-moz-keyframes flipoutX{0%{-moz-transform:perspective(400px) rotateX(0);opacity:1}100%{-moz-transform:perspective(400px) rotateX(90deg);opacity:0}}@-ms-keyframes flipoutX{0%{-ms-transform:perspective(400px) rotateX(0);opacity:1}100%{-ms-transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipoutX{0%{transform:perspective(400px) rotateX(0);opacity:1}100%{transform:perspective(400px) rotateX(90deg);opacity:0}}@-webkit-keyframes flipoutY{0%{-webkit-transform:perspective(400px) rotateY(0);opacity:1}100%{-webkit-transform:perspective(400px) rotateY(90deg);opacity:0}}@-moz-keyframes flipoutY{0%{-moz-transform:perspective(400px) rotateY(0);opacity:1}100%{-moz-transform:perspective(400px) rotateY(90deg);opacity:0}}@-ms-keyframes flipoutY{0%{-ms-transform:perspective(400px) rotateY(0);opacity:1}100%{-ms-transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipoutY{0%{transform:perspective(400px) rotateY(0);opacity:1}100%{transform:perspective(400px) rotateY(90deg);opacity:0}}@-webkit-keyframes flash{0%,50%,100%{opacity:1}25%,75%{opacity:0}}@-moz-keyframes flash{0%,50%,100%{opacity:1}25%,75%{opacity:0}}@-ms-keyframes flash{0%,50%,100%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,100%{opacity:1}25%,75%{opacity:0}}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px)}}@-moz-keyframes shake{0%,100%{-moz-transform:translateX(0)}10%,30%,50%,70%,90%{-moz-transform:translateX(-10px)}20%,40%,60%,80%{-moz-transform:translateX(10px)}}@-ms-keyframes shake{0%,100%{-ms-transform:translateX(0)}10%,30%,50%,70%,90%{-ms-transform:translateX(-10px)}20%,40%,60%,80%{-ms-transform:translateX(10px)}}@keyframes shake{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg)}100%{-webkit-transform:rotate(0)}}@-moz-keyframes swing{20%{-moz-transform:rotate(15deg)}40%{-moz-transform:rotate(-10deg)}60%{-moz-transform:rotate(5deg)}80%{-moz-transform:rotate(-5deg)}100%{-moz-transform:rotate(0)}}@-ms-keyframes swing{20%{-ms-transform:rotate(15deg)}40%{-ms-transform:rotate(-10deg)}60%{-ms-transform:rotate(5deg)}80%{-ms-transform:rotate(-5deg)}100%{-ms-transform:rotate(0)}}@keyframes swing{20%{transform:rotate(15deg)}40%{transform:rotate(-10deg)}60%{transform:rotate(5deg)}80%{transform:rotate(-5deg)}100%{transform:rotate(0)}}@-webkit-keyframes wobble{0%{-webkit-transform:translateX(0)}15%{-webkit-transform:translateX(-100px) rotate(-5deg)}30%{-webkit-transform:translateX(80px) rotate(3deg)}45%{-webkit-transform:translateX(-65px) rotate(-3deg)}60%{-webkit-transform:translateX(40px) rotate(2deg)}75%{-webkit-transform:translateX(-20px) rotate(-1deg)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes wobble{0%{-moz-transform:translateX(0)}15%{-moz-transform:translateX(-100px) rotate(-5deg)}30%{-moz-transform:translateX(80px) rotate(3deg)}45%{-moz-transform:translateX(-65px) rotate(-3deg)}60%{-moz-transform:translateX(40px) rotate(2deg)}75%{-moz-transform:translateX(-20px) rotate(-1deg)}100%{-moz-transform:translateX(0)}}@-ms-keyframes wobble{0%{-ms-transform:translateX(0)}15%{-ms-transform:translateX(-100px) rotate(-5deg)}30%{-ms-transform:translateX(80px) rotate(3deg)}45%{-ms-transform:translateX(-65px) rotate(-3deg)}60%{-ms-transform:translateX(40px) rotate(2deg)}75%{-ms-transform:translateX(-20px) rotate(-1deg)}100%{-ms-transform:translateX(0)}}@keyframes wobble{0%{transform:translateX(0)}15%{transform:translateX(-100px) rotate(-5deg)}30%{transform:translateX(80px) rotate(3deg)}45%{transform:translateX(-65px) rotate(-3deg)}60%{transform:translateX(40px) rotate(2deg)}75%{transform:translateX(-20px) rotate(-1deg)}100%{transform:translateX(0)}}@-webkit-keyframes ring{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0)}}@-moz-keyframes ring{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.1) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.1) rotate(-3deg)}100%{-moz-transform:scale(1) rotate(0)}}@-ms-keyframes ring{0%{-ms-transform:scale(1)}10%,20%{-ms-transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-ms-transform:scale(1.1) rotate(3deg)}40%,60%,80%{-ms-transform:scale(1.1) rotate(-3deg)}100%{-ms-transform:scale(1) rotate(0)}}@keyframes ring{0%{transform:scale(1)}10%,20%{transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}100%{transform:scale(1) rotate(0)}}.btn-group{font-size:0}.btn-group .btn{margin-left:-1px}.btn-group .btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.mainnav{z-index:1;background-color:#222}.mainnav>ul>li,.mainnav>ul>li>a{height:40px;line-height:40px}.mainnav>ul>li{display:inline-block;color:#fff;font-size:14px;font-weight:bold}.mainnav>ul>li>a{display:inline-block;padding:0 18px;color:#fff;text-align:center}.mainnav>ul>li>a:hover,.mainnav>ul>li.current>a{color:#fff;text-decoration:none;background-color:#000;-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s}.Hui-nav-toggle{display:none;position:absolute;top:0;right:10px;padding:9px 10px;-moz-border-radius:4px;-webkit-border-radius:4px;-ms-border-radius:4px;border-radius:4px;background-color:rgba(0,0,0,0.5)}@media(max-width:767px){.mainnav>ul>li{font-size:1.125em}.Hui-nav-toggle{display:block}}@media(max-width:480px){.mainnav>ul>li{text-align:center}.mainnav>ul>li{width:20%}.mainnav>ul>li>a{padding:0;width:100%}}.breadcrumb{border-bottom:1px solid #e5e5e5;line-height:39px;height:39px;padding-left:20px;overflow:hidden}.breadcrumb span{padding:0 5px}.pageNav{float:none;clear:both;font-size:0;font-family:Arial,Helvetica,sans-serif;padding:18px 0;text-align:center}.pageNav span,.pageNav a,.pageNav b{font-size:14px;margin-right:5px;overflow:hidden;padding:3px 8px}.pageNav a{border:1px solid #ccdbe4;cursor:pointer}.pageNav b{color:#000}.pageNav .mor{padding:3px;font-weight:bold}.topnav{height:30px;line-height:30px;background:url(../images/bg_topnav.gif) repeat-x 0 0;border-bottom:1px solid #ebebeb;font-size:12px}.topbar{background-color:#ececec;border-bottom:1px solid #ddd}.topbar a{margin-right:5px}.r_nav{display:inline-block;color:#999}.steps,.step{display:inline-block;position:relative;padding:1em 2em 1em 3em;vertical-align:top;background-color:#FFF;color:#888;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.step:after,.steps .step:after{position:absolute;z-index:2;content:'';top:0;right:-1.45em;border-bottom:1.5em solid transparent;border-left:1.5em solid #FFF;border-top:1.5em solid transparent;width:0;height:0}.step,.steps .step,.steps .step:after{-webkit-transition:opacity .1s ease,color .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,box-shadow .1s ease}.steps{cursor:pointer;display:inline-block;font-size:0;box-shadow:0 0 0 1px rgba(0,0,0,.1);line-height:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border-radius:.3125rem}.steps .step:first-child{padding-left:1.35em;border-radius:.3125em 0 0 .3125em}.steps .step:last-child{border-radius:0 .3125em .3125em 0}.steps .step:only-child{border-radius:.3125em}.steps .step:last-child{margin-right:0}.steps .step:last-child:after{display:none}.step:hover,.step.hover{background-color:#f7f7f7;color:rgba(0,0,0,.8)}.steps .step.hover:after,.steps .step:hover:after,.step:hover,.step.hover::after{border-left-color:#f7f7f7}.steps .step.down,.steps .step:active,.step.down,.step:active{background-color:#f0f0f0}.steps .step.down:after,.steps .step:active:after,.steps.down::after,.steps:active::after{border-left-color:#f0f0f0}.steps .step.active,.active.step{cursor:auto;background-color:#428bca;color:#FFF;font-weight:700}.steps .step.active:after,.active.steps:after{border-left-color:#428bca}.steps .disabled.step,.disabled.step{cursor:auto;background-color:#FFF;color:#cbcbcb}.disabled.step:after{border:0;background-color:#FFF;top:.42em;right:-1em;width:2.15em;height:2.15em;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);box-shadow:-1px -1px 0 0 rgba(0,0,0,.1) inset}.attached.steps{margin:0;border-radius:.3125em .3125em 0 0}.attached.steps .step:first-child{border-radius:.3125em 0 0}.attached.steps .step:last-child{border-radius:0 .3125em 0 0}.bottom.attached.steps{margin-top:-1px;border-radius:0 0 .3125em .3125em}.bottom.attached.steps .step:first-child{border-radius:0 0 0 .3125em}.bottom.attached.steps .step:last-child{border-radius:0 0 .3125em}.one.steps,.two.steps,.three.steps,.four.steps,.five.steps,.six.steps,.seven.steps,.eight.steps{display:block}.one.steps>.step{width:100%}.two.steps>.step{width:50%}.three.steps>.step{width:33.333%}.four.steps>.step{width:25%}.five.steps>.step{width:20%}.six.steps>.step{width:16.666%}.seven.steps>.step{width:14.285%}.eight.steps>.step{width:12.5%}.small.step,.small.steps .step{font-size:.8rem}.step,.steps .step{font-size:1rem}.large.step,.large.steps .step{font-size:1.25rem}.steps-ie,.step-ie,.step-ie .arrow{height:44px;line-height:44px}.steps-ie{background-color:#eaf4fd;border:solid 1px #afcfcc}.step-ie{position:relative;display:inline-block;float:left;cursor:pointer;padding:0 20px 0 40px;background:url(../images/step_bg.png) repeat-x 0 center}.step-ie .arrow{position:absolute;right:-21px;top:0;width:21px;height:44px;display:block;cursor:pointer;background:url(../images/step_arrow.png) no-repeat 0 center;z-index:50}.step-ie.active{background-image:url(../images/step_bg-active.png);color:#fff;z-index:100}.step-ie.active .arrow{background-image:url(../images/step_arrow-active.png)}.verticalTab{background:#fff url(../images/tab_bg.png) repeat-y 0 0;width:38px}.verticalTab a{position:relative;display:block;width:18px;height:auto;text-align:center;position:relative;padding:26px 10px 6px 10px;background:url(../images/tabNav.png) no-repeat 0 0}.verticalTab a em{position:absolute;left:0;bottom:-20px;width:38px;height:20px;background:url(../images/tabNav_right.png) no-repeat 0 0;z-index:50}.verticalTab a.active{background-image:url(../images/tabNav-active.png);color:#fff;z-index:99}.verticalTab a.active em{background-image:url(../images/tabNav_right-active.png)}.acrossTab{height:29px;background:url(../images/acrossTab-bg.png) repeat-x 0 0;padding-top:1px}.acrossTab li,.acrossTab li em{background:url(../images/acrossTab.png) no-repeat 0 0}.acrossTab li{position:relative;float:left;display:inline-block;height:29px;line-height:29px;font-size:12px;cursor:pointer;padding:0 30px;white-space:nowrap;color:#282828;background-position:0 0}.acrossTab li em{position:absolute;width:23px;height:29px;right:-20px;top:0;z-index:50;background-position:right -30px}.acrossTab li:hover{background-position:0 -60px}.acrossTab li:hover em{background-position:right -90px}.acrossTab li.active{background-position:0 -120px;z-index:99}.acrossTab li.active em{background-position:right -150px}.acrossTab li i{position:absolute;display:block;width:13px;height:13px;top:50%;margin-top:-6px;right:5px;font-size:0;line-height:0;cursor:pointer;background:url(../images/acrossTab-close.png) no-repeat 0 0}.acrossTab li i:hover{background-position:0 bottom}.dropDown{display:inline-block}.dropDown_A{display:inline-block}.dropDown_A i{transition-duration:.3s;transition-property:all}.dropDown-menu{display:none;transition:all .3s ease 0s}.dropDown:focus,.dropDown-menu:focus{outline:0}.dropDown-menu li.arrow{position:absolute;display:block;width:12px;height:8px;margin-top:-13px;margin-left:20%;line-height:0;background:url(../images/icon-jt.png) no-repeat 0 0}.dropDown.hover .dropDown_A,.dropDown.open .dropDown_A{text-decoration:none;background-color:rgba(255,255,255,0.2)}.dropDown.hover .dropDown_A i,.dropDown.open .dropDown_A i{transform:rotate(180deg);transition-duration:.3s;transition-property:all;_background-position:0 0}.dropDown.open{position:relative;z-index:990}.dropDown.open .dropDown-menu{position:absolute;z-index:1000;display:inline-block;top:100%;left:-1px;min-width:100%;background-color:#fff;border:solid 1px #f2f2f2}.dropDown.open .dropDown-menu.box-shadow{border-top-left-radius:0;border-top-right-radius:0}.dropDown.open .dropDown-menu.radius{border-top:0}.dropDown.open.right .dropDown-menu{right:-1px!important;left:auto!important}.dropDown.open .dropDown-menu li{float:none;display:inline}.dropDown-menu li a{display:block;clear:both;border-bottom:solid 1px #f2f2f2;margin-bottom:-1px;padding:0 20px;height:30px;line-height:30px;font-size:12px;text-align:left;font-weight:normal;white-space:nowrap}.dropDown-menu li:last-child a{border-bottom:0}.dropDown-menu li a:hover,.dropDown-menu li a:focus{background-color:#f0f1f2;text-decoration:none}.dropDown.open .dropDown-menu .disabled a,.dropDown.open .dropdown-menu .disabled a:hover,.dropDown.open .dropdown-menu .disabled a:focus{color:#999;text-decoration:none;cursor:no-drop;background-color:transparent}.dropDown.open .dropDown-menu li.divider{display:block;height:0;line-height:0;margin:9px 0;overflow:hidden;border-top:solid 1px #eee}.slider{position:relative;text-align:center;margin:0 auto}.slider .tabcon li{float:left;overflow:hidden}.dots{position:absolute;left:0;right:0;bottom:10px;text-align:center}.dots span{display:inline-block;text-align:center;width:8px;height:8px;font-size:0;line-height:0;margin-right:8px;cursor:pointer;background-color:#c2c2c2;border-radius:8px}.dots span.active{background-color:#222}.numSlider .dots span{width:20px;height:20px;line-height:20px;font-size:13px;margin-right:10px;line-height:20px;background-color:#fff;font-family:Arial;font-weight:bold;text-indent:inherit;border-radius:0}.numSlider .dots span.active{background-color:#222;color:#fff}.boxSlider .dots span{width:40px;height:10px;border-radius:0}.boxRadius .dots span{width:40px}.unslider-arrow{display:block;position:absolute;top:50%;margin-top:-25px;height:50px;width:50px;z-index:3;opacity:.7;filter:alpha(opacity=70);background-color:#303030;background-image:url(../images/unslider-arrow.png);background-repeat:no-repeat}.unslider-arrow:hover{opacity:1;filter:alpha(opacity=100)}.prev{left:0;background-position:0 0}.next{right:0;background-position:right 0}.tabBar{border-bottom:2px solid #222}.tabBar span{background-color:#e8e8e8;cursor:pointer;display:inline-block;float:left;font-weight:bold;height:30px;line-height:30px;padding:0 15px}.tabBar span.current{background-color:#222;color:#fff}.tabCon{display:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;white-space:nowrap;vertical-align:middle;background-color:#999}.label.radius{border-radius:3px}.badge{padding-right:9px;padding-left:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default,.badge-default{background-color:#e6e6e6;color:#333}.label-default[href],.badge-default[href]{background-color:#e6e6e6;color:#333}.label-primary,.badge-primary{background-color:#5a98de}.label-primary[href],.badge-primary[href]{background-color:#5a98de}.label-secondary,.badge-secondary{background-color:#3bb4f2}.label-secondary[href],.badge-secondary[href]{background-color:#3bb4f2}.label-success,.badge-success{background-color:#5eb95e}.label-success[href],.badge-success[href]{background-color:#5eb95e}.label-warning,.badge-warning{background-color:#f37b1d}.label-warning[href],.badge-warning[href]{background-color:#f37b1d}.label-danger,.badge-danger{background-color:#dd514c}.label-danger[href],.badge-danger[href]{background-color:#dd514c}.img-circle{border-radius:50%}@media(max-width:480px){.responsive img,.thumbImage img{max-width:100%!important;height:auto!important;width:expression(this.width>320 ? "320px":this.width)!important}.thumbImage{margin:auto;width:320px}*html .content img,*html .thumbImage img{width:expression(this.width>320&&this.width>this.height?320:auto)}}.Huialert{position:relative;padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5}.Huialert,.Huialert h4{color:#c09853}.Huialert h4{margin:0}.Huialert .Hui-iconfont{position:absolute;top:9px;right:10px;line-height:20px;cursor:pointer;color:#000;opacity:.2;_color:#666}.Huialert .Hui-iconfont.hover{color:#000;opacity:.8}.Huialert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.Huialert-success h4{color:#468847}.Huialert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.Huialert-danger h4{color:#b94a48}.Huialert-error{color:#fff;background-color:#f37b1d;border-color:#e56c0c}.Huialert-error h4{color:#fff}.Huialert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.Huialert-info h4{color:#31708f}.Huialert-block{padding-top:14px;padding-bottom:14px}.Huialert-block>p,.Huialert-block>ul{margin-bottom:0}.Huialert-block p+p{margin-top:5px}.progress,.progress-bar,.sr-only{height:10px;font-size:0;line-height:0}.progress{overflow:hidden;width:400px}.progress-bar{width:100%;background-color:#efefef}.sr-only{display:inline-block;background-color:#58b957}.loading{height:50px;background:url(../images/loading_072.gif) no-repeat center}.mask{position:fixed;top:0;left:0;z-index:999;width:100%;height:100%;background:url(../images/backdrop.png) repeat 0 0;-moz-transition:all .3s ease-in;-webkit-transition:all .3s ease-in;-o-transition:all .3s ease-in;transition:all .3s ease-in}* html .mask{position:absolute;left:expression(documentElement.scrollLeft+documentElement.clientWidth - this.offsetWidth);top:expression(documentElement.scrollTop+documentElement.clientHeight - this.offsetHeight)}.modal-open{overflow:hidden}.page-overflow{margin-right:16px}.modal-scrollable{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto}.modal-overflow .modal-scrollable{overflow-y:scroll}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:1040;background-color:#000}* html .modal-backdrop{position:absolute;left:expression(documentElement.scrollLeft+documentElement.clientWidth - this.offsetWidth);top:expression(documentElement.scrollTop+documentElement.clientHeight - this.offsetHeight)}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop,.modal-backdrop.fade.in{opacity:.7;filter:alpha(opacity=70)}.modal{position:absolute;top:50%;left:50%;width:500px;margin-left:-250px;z-index:1050;overflow:visible;background-color:#fff;background-clip:padding-box;box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-khtml-background-clip:padding-box;-moz-background-clip:padding-box;-ms-background-clip:padding-box;-o-background-clip:padding-box;background-clip:padding-box;border-radius:6px;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999}.fade{opacity:0;filter:alpha(opacity=0);-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear}.fade.in{opacity:1;filter:alpha(opacity=100)}.modal.fade{top:-100%}.modal.fade.in{top:50%}.modal.modal-overflow.fade.in{top:0}.loading-spinner{position:absolute;top:50%;left:50%;margin:-12px 0 0 -12px}.modal-header{padding:9px 15px;border-bottom:1px solid #eee;position:relative}.modal-header .close{position:absolute;right:10px;top:10px}.modal-header h3{margin:0}.modal-body{overflow-y:visible;padding:15px}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;*zoom:1;border-radius:0 0 6px 6px;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-alert{position:fixed;width:300px;margin-left:-150px;margin-top:-30px;z-index:9999}.modal-alert-info{padding:30px;text-align:center;font-size:14px;background-color:#fff}.mask_box{background-image:none;display:none;z-index:99}.hover .mask_box{position:absolute;bottom:0;left:0;display:block;background:url(../images/backdrop.png) repeat 0 0;text-align:left}.easyDialog_wrapper{width:320px;color:#444;border:3px solid rgba(0,0,0,0);border-radius:5px;box-shadow:0 0 10px rgba(0,0,0,0.4);display:none}.easyDialog_wrapper .easyDialog_content{border-radius:4px;background:#fff;border:1px solid #e5e5e5}.easyDialog_wrapper .easyDialog_title{height:30px;line-height:30px;overflow:hidden;color:#666;padding:0 10px;font-size:14px;border-bottom:1px solid #e5e5e5;background:#f7f7f7;border-radius:4px 4px 0 0;margin:0}.easyDialog_wrapper .close_btn{font-family:arial;font-size:18px;_font-size:12px;font-weight:700;color:#999;text-decoration:none;float:right}.easyDialog_wrapper .close_btn:hover{color:#333}.easyDialog_wrapper .easyDialog_text{padding:25px 10px;font-size:13px;line-height:22px}.easyDialog_wrapper .easyDialog_footer{padding:10px;text-align:right;*zoom:1}.easyDialog_wrapper .easyDialog_footer:after{content:'';display:block;height:0;overflow:hidden;visibility:hidden;clear:both}.easyDialog_wrapper .btn_highlight,.easyDialog_wrapper .btn_normal{border:1px solid;border-radius:2px;cursor:pointer;float:right;font-size:12px;padding:0 12px;height:24px;line-height:24px;margin-bottom:10px}.easyDialog_wrapper .btn_highlight{background:#4787ed;background:-webkit-gradient(linear,center bottom,center top,from(#4787ed),to(#4d90fe));background:-moz-linear-gradient(90deg,#4787ed,#4d90fe);border-color:#3079ed;color:#fff}.easyDialog_wrapper .btn_normal{margin-left:10px;border-color:#c3c3c3;background:#ececec;color:#333;background:-webkit-gradient(linear,center bottom,center top,from(#ececec),to(#f4f4f4));background:-moz-linear-gradient(90deg,#ececec,#f4f4f4)}.modal-open .dropdown-menu{z-index:2050}.modal-open .dropdown.open{*z-index:2050}.modal-open .popover{z-index:2060}.modal-open .tooltip{z-index:2070}.toTop{position:fixed;bottom:10px;right:20px;z-index:999;display:none;font-size:16px;cursor:pointer;overflow:hidden;visibility:visible;background-color:#fff;border:1px solid #d9d9d9;color:#9c9c9c;font-size:16px;width:38px;height:38px;line-height:38px;text-align:center;text-decoration:none;_position:absolute;_top:expression(documentElement.scrollTop+documentElement.clientHeight-this.offsetHeight)}.toTop:hover{color:#fff;text-decoration:none;background-color:#999}.panel{background-color:#fff;border:solid 1px transparent}.panel-header{border-bottom:solid 1px transparent;padding:8px 15px;font-size:14px;font-weight:700}.panel-body{padding:15px}.panel-footer{background-color:#f5f5f5;border-top:1px solid #ddd;padding:5px 20px}.panel-default{border-color:#ddd}.panel-default>.panel-header{border-color:#ddd;background-color:#f5f5f5;color:#444}.panel-primary{border-color:#5a98de}.panel-primary>.panel-header{border-color:#5a98de;background-color:#5a98de;color:#fff}.panel-secondary{border-color:#3bb4f2}.panel-secondary>.panel-header{border-color:#3bb4f2;background-color:#3bb4f2;color:#fff}.panel-success{border-color:#5eb95e}.panel-success>.panel-header{border-color:#5eb95e;background-color:#5eb95e;color:#fff}.panel-warning{border-color:#f37b1d}.panel-warning>.panel-header{border-color:#f37b1d;background-color:#f37b1d;color:#fff}.panel-danger{border-color:#dd514c}.panel-danger>.panel-header{border-color:#dd514c;background-color:#dd514c;color:#fff}.docs-example{position:relative;*position:static;*padding-top:19px;margin:15px 0;padding:39px 19px 14px;background-color:#fff;border:1px solid #ddd;border-radius:4px}.docs-example:after{content:"Example";position:absolute;top:-1px;left:-1px;*position:static;padding:3px 7px;font-size:12px;font-weight:bold;background-color:#f5f5f5;border:1px solid #ddd;color:#9da0a4;border-radius:4px 0 4px 0}.marquee{height:22px;overflow:hidden;line-height:22px}.rollpic .prev,.rollpic .next{display:block;height:38px;width:38px;cursor:pointer;float:left;background:url(../images/unslider-arrow2.png) no-repeat 0 0;margin-top:70px}.rollpic .prev{background-position:0 0;margin-right:5px}.rollpic .prev:hover{background-position:0 -38px}.rollpic .next{background-position:0 -76px;margin-left:5px}.rollpic .next:hover{background-position:0 -114px}.rollpicshow{float:left;border:solid 1px #ddd}.rollpicshow li{padding:10px}.searchBar{z-index:100;width:460px;height:33px;background:url(../images/search.gif) no-repeat 0 -48px;position:relative}.form-search{margin-bottom:0}.searchTxt{float:left;width:350px;height:23px;line-height:23px;font-size:14px;color:#9a9a9a;margin-left:33px;margin-top:5px;border:0;background-color:#fff}.searchTxt.focus{color:#333}.searchBtn{float:right;display:block;border:0;width:73px;height:33px;cursor:pointer;text-indent:-9999px;background:url(../images/search.gif) no-repeat right -81px}.searchBtn:hover{background-position:right -114px}.ac_results{position:absolute;width:386px;height:auto;border:solid 1px #890800;background-color:#fff;top:32px;left:0;display:none}.ac_results ul{width:100%;list-style-position:outside;list-style:none;padding:0;margin:0}.ac_results li p{float:left;margin:0;padding:0;overflow:hidden}.ac_results li p tt{color:#666}.ac_results li span{margin:0;padding:0;display:inline;float:right;color:#f93;width:90px;text-align:right;overflow:hidden}.ac_results ul li{padding-left:5px;padding-right:5px;display:block;height:22px;line-height:22px;cursor:pointer;color:#000;font:宋体;font-size:12px}.ac_results ul li.hover{background-color:#fef8ec;color:#000}.ac_loading{background:#fff url(../images/loading_s.gif) right center no-repeat}.AD{text-align:center}.dual{top:260px;position:absolute;width:102px;overflow:hidden;display:none;z-index:100}.dual_l{left:6px}.dual_r{right:6px}.dual_con{border:#CCC solid 1px;width:100px;height:300px;overflow:hidden;background-color:#0C9}.dual_close{width:100%;height:24px;line-height:24px;text-align:center;display:block;font-size:13px;color:#555;text-decoration:none}.Hui-tags{border:solid 1px #dedede;padding:0 10px}.Hui-tags-editor{position:relative;padding:10px 0 10px 24px}.Hui-tags-editor .Hui-tags-icon{position:absolute;left:0;top:11px;font-size:14px;color:#666}.Hui-tags-token{color:#aaa;float:left;font-size:12px;height:20px;line-height:20px;margin-right:8px;padding:0 1px;white-space:nowrap;cursor:pointer}.Hui-tags-token:before{content:"#"}.Hui-tags-token:hover{text-decoration:line-through}.Hui-tags-iptwrap{position:relative;float:left}.Hui-tags-input{position:relative;height:20px;min-width:60px;border:0 none;vertical-align:top;line-height:20px;color:#333;z-index:2;background:url(../images/empty.png) repeat scroll 0 0;display:inline-block;width:100%}.Hui-tags-label{position:absolute;top:0;left:2px;width:240px;height:20px;line-height:20px;font-size:14px;overflow:hidden;z-index:1;color:#ccc}.Hui-tags-list{padding:0 0 10px 0;display:none}.Hui-notag{font-size:12px}.Hui-tags-has span{cursor:pointer;font-size:12px;white-space:nowrap;margin-right:10px}.tags a{height:26px;line-height:26px;padding-right:6px}.tags1{color:#C00;font-size:24px}.tags2{color:#030;font-size:16px}.tags3{color:#00F}.tags4{font-size:16px}.tags5{color:#C00;font-size:20px}.tags6{color:#F06 font-size:20px}.tags7{color:#030;font-weight:bold;font-size:18px}.tags8{color:#F06;font-weight:bold}.tags9{color:#C00;font-weight:bold;font-size:16px}.tags a:hover{color:#F00;text-decoration:underline}#tagyun{position:relative}#tagyun a{position:absolute;top:0;left:0;font-weight:bold;text-decoration:none;padding:3px 6px}.Huifold .item{position:relative}.Huifold .item h4{margin:0;font-weight:bold;position:relative;border-top:1px solid #fff;font-size:15px;line-height:22px;padding:7px 10px;background-color:#eee;cursor:pointer;padding-right:30px}.Huifold .item h4 b{position:absolute;display:block;cursor:pointer;right:10px;top:7px;width:16px;height:16px;text-align:center;color:#666}.Huifold .item .info{display:none;padding:10px}.maskBar{position:absolute;width:100%;height:auto;left:0;bottom:-60px;right:0;background-color:#000;z-index:2;color:#fff!important;opacity:.6;filter:alpha(opacity=60)}.maskWraper{position:relative;overflow:hidden}.maskWraper.hover .maskBar{bottom:0;transition:bottom 200ms;-moz-transition:bottom 200ms;-webkit-transition:bottom 200ms;-o-transition:bottom 200ms}.maskBox{position:absolute;width:100%;height:100%;top:0;left:0;bottom:0;right:0;z-index:2;background-color:#000;color:#fff!important;opacity:0;filter:alpha(opacity=0)}.maskWraper.hover .maskBox{opacity:.2;filter:alpha(opacity=20);transition:opacity 500ms;-moz-transition:opacity 500ms;-webkit-transition:opacity 500ms;-o-transition:opacity 500ms}.commentList .item{list-style:none outside none;margin:1.6rem 0 0}.commentList .avatar{border:1px solid transparent;float:left}.comment-main{position:relative;margin-left:64px;border:1px solid #dedede;border-radius:2px}.comment-main:before,.comment-main:after{position:absolute;top:11px;left:-16px;right:100%;width:0;height:0;display:block;content:" ";border-color:transparent;border-style:solid solid outset;pointer-events:none}.comment-main:before{border-right-color:#dedede;border-width:8px}.comment-main:after{border-width:7px;border-right-color:#f8f8f8;margin-top:1px;margin-left:2px}.comment-header{padding:10px 15px;background:#f8f8f8;border-bottom:1px solid #eee}.comment-title{margin:0 0 8px 0;font-size:1.6rem;line-height:1.2}.comment-meta{font-size:13px;color:#999;line-height:1.2}.comment-meta a{color:#999}.comment-author{font-weight:700;color:#999}.comment-body{padding:15px;overflow:hidden}.comment-body>:last-child{margin-bottom:0}.commentList .comment-flip .avatar{float:right}.comment-flip .comment-main{margin-left:0;margin-right:64px}.comment-flip .comment-main:before{border-left-color:#dedede;border-right-color:transparent}.comment-flip .comment-main:before,.comment-flip .comment-main:after{left:100%;position:absolute;right:-16px}.comment-flip .comment-main:after{border-left-color:#f8f8f8;border-right-color:transparent;margin-left:auto;margin-right:2px}.page-404{color:#afb5bf;padding-top:60px}.page-404 .error-title{font-size:80px}.page-404 .error-title .iconfont{font-size:80px}.page-404 .error-description{font-size:24px}.page-404 .error-info{font-size:14px}#page-404 .footer{position:absolute;bottom:0;left:0;right:0} \ No newline at end of file diff --git a/SMMS/WebContent/static/h-ui/images/acrossTab-2bak.png b/SMMS/WebContent/static/h-ui/images/acrossTab-2bak.png new file mode 100644 index 0000000..2f58bd8 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/acrossTab-2bak.png differ diff --git a/SMMS/WebContent/static/h-ui/images/acrossTab-bg.png b/SMMS/WebContent/static/h-ui/images/acrossTab-bg.png new file mode 100644 index 0000000..69d3eea Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/acrossTab-bg.png differ diff --git a/SMMS/WebContent/static/h-ui/images/acrossTab-close.png b/SMMS/WebContent/static/h-ui/images/acrossTab-close.png new file mode 100644 index 0000000..c7f1a41 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/acrossTab-close.png differ diff --git a/SMMS/WebContent/static/h-ui/images/acrossTab.png b/SMMS/WebContent/static/h-ui/images/acrossTab.png new file mode 100644 index 0000000..f948893 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/acrossTab.png differ diff --git a/SMMS/WebContent/static/h-ui/images/admin-login-bg.jpg b/SMMS/WebContent/static/h-ui/images/admin-login-bg.jpg new file mode 100644 index 0000000..62c5d90 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/admin-login-bg.jpg differ diff --git a/SMMS/WebContent/static/h-ui/images/admin-loginform-bg.png b/SMMS/WebContent/static/h-ui/images/admin-loginform-bg.png new file mode 100644 index 0000000..1bc5dbb Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/admin-loginform-bg.png differ diff --git a/SMMS/WebContent/static/h-ui/images/gq/cn.gif b/SMMS/WebContent/static/h-ui/images/gq/cn.gif new file mode 100644 index 0000000..b052530 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/gq/cn.gif differ diff --git a/SMMS/WebContent/static/h-ui/images/gq/gj.png b/SMMS/WebContent/static/h-ui/images/gq/gj.png new file mode 100644 index 0000000..96fb149 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/gq/gj.png differ diff --git a/SMMS/WebContent/static/h-ui/images/gq/us.gif b/SMMS/WebContent/static/h-ui/images/gq/us.gif new file mode 100644 index 0000000..8f198f7 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/gq/us.gif differ diff --git a/SMMS/WebContent/static/h-ui/images/hamburger-retina.gif b/SMMS/WebContent/static/h-ui/images/hamburger-retina.gif new file mode 100644 index 0000000..44026d0 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/hamburger-retina.gif differ diff --git a/SMMS/WebContent/static/h-ui/images/hamburger.gif b/SMMS/WebContent/static/h-ui/images/hamburger.gif new file mode 100644 index 0000000..28967a0 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/hamburger.gif differ diff --git a/SMMS/WebContent/static/h-ui/images/icon-add.png b/SMMS/WebContent/static/h-ui/images/icon-add.png new file mode 100644 index 0000000..eb7287c Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/icon-add.png differ diff --git a/SMMS/WebContent/static/h-ui/images/icon_error_s.png b/SMMS/WebContent/static/h-ui/images/icon_error_s.png new file mode 100644 index 0000000..3a232e5 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/icon_error_s.png differ diff --git a/SMMS/WebContent/static/h-ui/images/icon_jt2.png b/SMMS/WebContent/static/h-ui/images/icon_jt2.png new file mode 100644 index 0000000..aae252b Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/icon_jt2.png differ diff --git a/SMMS/WebContent/static/h-ui/images/icon_right_s.png b/SMMS/WebContent/static/h-ui/images/icon_right_s.png new file mode 100644 index 0000000..3f548e9 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/icon_right_s.png differ diff --git a/SMMS/WebContent/static/h-ui/images/icon_warning_s.png b/SMMS/WebContent/static/h-ui/images/icon_warning_s.png new file mode 100644 index 0000000..7c32122 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/icon_warning_s.png differ diff --git a/SMMS/WebContent/static/h-ui/images/loading.gif b/SMMS/WebContent/static/h-ui/images/loading.gif new file mode 100644 index 0000000..5087c2a Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/loading.gif differ diff --git a/SMMS/WebContent/static/h-ui/images/loading_072.gif b/SMMS/WebContent/static/h-ui/images/loading_072.gif new file mode 100644 index 0000000..95b02aa Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/loading_072.gif differ diff --git a/SMMS/WebContent/static/h-ui/images/sort_asc.png b/SMMS/WebContent/static/h-ui/images/sort_asc.png new file mode 100644 index 0000000..a88d797 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/sort_asc.png differ diff --git a/SMMS/WebContent/static/h-ui/images/sort_both.png b/SMMS/WebContent/static/h-ui/images/sort_both.png new file mode 100644 index 0000000..1867040 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/sort_both.png differ diff --git a/SMMS/WebContent/static/h-ui/images/sort_desc.png b/SMMS/WebContent/static/h-ui/images/sort_desc.png new file mode 100644 index 0000000..def071e Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/sort_desc.png differ diff --git a/SMMS/WebContent/static/h-ui/images/totop.png b/SMMS/WebContent/static/h-ui/images/totop.png new file mode 100644 index 0000000..cd4a9b1 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/totop.png differ diff --git a/SMMS/WebContent/static/h-ui/images/user.png b/SMMS/WebContent/static/h-ui/images/user.png new file mode 100644 index 0000000..2e7e760 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/images/user.png differ diff --git a/SMMS/WebContent/static/h-ui/js/H-ui.admin.js b/SMMS/WebContent/static/h-ui/js/H-ui.admin.js new file mode 100644 index 0000000..7320425 --- /dev/null +++ b/SMMS/WebContent/static/h-ui/js/H-ui.admin.js @@ -0,0 +1,194 @@ +/*H-ui.admin.js v2.3.1 date:15:42 2015.08.19 by:guojunhui*/ +/*获取顶部选项卡总长度*/ +function tabNavallwidth(){ + var taballwidth=0, + $tabNav = $(".acrossTab"), + $tabNavWp = $(".Hui-tabNav-wp"), + $tabNavitem = $(".acrossTab li"), + $tabNavmore =$(".Hui-tabNav-more"); + if (!$tabNav[0]){return} + $tabNavitem.each(function(index, element) { + taballwidth+=Number(parseFloat($(this).width()+60))}); + $tabNav.width(taballwidth+25); + var w = $tabNavWp.width(); + if(taballwidth+25>w){ + $tabNavmore.show()} + else{ + $tabNavmore.hide(); + $tabNav.css({left:0})} +} + +/*左侧菜单响应式*/ +function Huiasidedisplay(){ + if($(window).width()>=768){ + $(".Hui-aside").show() + } +} +function getskincookie(){ + var v = getCookie("Huiskin"); + if(v==null||v==""){ + v="default"; + } + $("#skin").attr("href","skin/"+v+"/skin.css"); +} +$(function(){ + getskincookie(); + //layer.config({extend: 'extend/layer.ext.js'}); + Huiasidedisplay(); + var resizeID; + $(window).resize(function(){ + clearTimeout(resizeID); + resizeID = setTimeout(function(){ + Huiasidedisplay(); + },500); + }); + + $(".Hui-nav-toggle").click(function(){ + $(".Hui-aside").slideToggle(); + }); + $(".Hui-aside").on("click",".menu_dropdown dd li a",function(){ + if($(window).width()<768){ + $(".Hui-aside").slideToggle(); + } + }); + /*左侧菜单*/ + $.Huifold(".menu_dropdown dl dt",".menu_dropdown dl dd","fast",1,"click"); + /*选项卡导航*/ + + $(".Hui-aside").on("click",".menu_dropdown a",function(){ + if($(this).attr('_href')){ + var bStop=false; + var bStopIndex=0; + var _href=$(this).attr('_href'); + var _titleName=$(this).html(); + var topWindow=$(window.parent.document); + var show_navLi=topWindow.find("#min_title_list li"); + show_navLi.each(function() { + if($(this).find('span').attr("data-href")==_href){ + bStop=true; + bStopIndex=show_navLi.index($(this)); + return false; + } + }); + if(!bStop){ + creatIframe(_href,_titleName); + min_titleList(); + } + else{ + show_navLi.removeClass("active").eq(bStopIndex).addClass("active"); + var iframe_box=topWindow.find("#iframe_box"); + iframe_box.find(".show_iframe").hide().eq(bStopIndex).show().find("iframe").attr("src",_href); + } + } + }); + + function min_titleList(){ + var topWindow=$(window.parent.document); + var show_nav=topWindow.find("#min_title_list"); + var aLi=show_nav.find("li"); + }; + function creatIframe(href,titleName){ + var topWindow=$(window.parent.document); + var show_nav=topWindow.find('#min_title_list'); + show_nav.find('li').removeClass("active"); + var iframe_box=topWindow.find('#iframe_box'); + show_nav.append('
        • '+titleName+'
        • '); + tabNavallwidth(); + var iframeBox=iframe_box.find('.show_iframe'); + iframeBox.hide(); + iframe_box.append('
          '); + var showBox=iframe_box.find('.show_iframe:visible'); + showBox.find('iframe').attr("src",href).load(function(){ + showBox.find('.loading').hide(); + }); + } + + var num=0; + var oUl=$("#min_title_list"); + var hide_nav=$("#Hui-tabNav"); + $(document).on("click","#min_title_list li",function(){ + var bStopIndex=$(this).index(); + var iframe_box=$("#iframe_box"); + $("#min_title_list li").removeClass("active").eq(bStopIndex).addClass("active"); + iframe_box.find(".show_iframe").hide().eq(bStopIndex).show(); + }); + $(document).on("click","#min_title_list li i",function(){ + var aCloseIndex=$(this).parents("li").index(); + $(this).parent().remove(); + $('#iframe_box').find('.show_iframe').eq(aCloseIndex).remove(); + num==0?num=0:num--; + tabNavallwidth(); + }); + $(document).on("dblclick","#min_title_list li",function(){ + var aCloseIndex=$(this).index(); + var iframe_box=$("#iframe_box"); + if(aCloseIndex>0){ + $(this).remove(); + $('#iframe_box').find('.show_iframe').eq(aCloseIndex).remove(); + num==0?num=0:num--; + $("#min_title_list li").removeClass("active").eq(aCloseIndex-1).addClass("active"); + iframe_box.find(".show_iframe").hide().eq(aCloseIndex-1).show(); + tabNavallwidth(); + }else{ + return false; + } + }); + tabNavallwidth(); + + $('#js-tabNav-next').click(function(){ + num==oUl.find('li').length-1?num=oUl.find('li').length-1:num++; + toNavPos(); + }); + $('#js-tabNav-prev').click(function(){ + num==0?num=0:num--; + toNavPos(); + }); + + function toNavPos(){ + oUl.stop().animate({'left':-num*100},100); + } + + /*换肤*/ + $("#Hui-skin .dropDown-menu a").click(function(){ + var v = $(this).attr("data-val"); + setCookie("Huiskin", v); + $("#skin").attr("href","skin/"+v+"/skin.css"); + }); +}); +/*弹出层*/ +/* + 参数解释: + title 标题 + url 请求的url + id 需要操作的数据id + w 弹出层宽度(缺省调默认值) + h 弹出层高度(缺省调默认值) +*/ +function layer_show(title,url,w,h){ + if (title == null || title == '') { + title=false; + }; + if (url == null || url == '') { + url="404.html"; + }; + if (w == null || w == '') { + w=800; + }; + if (h == null || h == '') { + h=($(window).height() - 50); + }; + layer.open({ + type: 2, + area: [w+'px', h +'px'], + fix: false, //不固定 + maxmin: true, + shade:0.4, + title: title, + content: url + }); +} +/*关闭弹出框口*/ +function layer_close(){ + var index = parent.layer.getFrameIndex(window.name); + parent.layer.close(index); +} \ No newline at end of file diff --git a/SMMS/WebContent/static/h-ui/js/H-ui.js b/SMMS/WebContent/static/h-ui/js/H-ui.js new file mode 100644 index 0000000..8d32ed5 --- /dev/null +++ b/SMMS/WebContent/static/h-ui/js/H-ui.js @@ -0,0 +1,664 @@ +/*H-ui.js v2.3 date:9:53 2015-07-17 by:guojunhui*/ +if (navigator.userAgent.match(/IEMobile\/10\.0/)) { + var msViewportStyle = document.createElement("style") + msViewportStyle.appendChild( + document.createTextNode( + "@-ms-viewport{width:auto!important}" + ) + ) + document.getElementsByTagName("head")[0].appendChild(msViewportStyle); +} + + +/*添加收藏 +收藏本站 +*/ +/*收藏主站*/ +function addFavorite(name,site){ + try{window.external.addFavorite(site,name);} + catch(e){ + try{window.sidebar.addPanel(name,site,"");} + catch(e){alert("加入收藏失败,请使用Ctrl+D进行添加");} + } +} +/*收藏页面 +收藏本页 +*/ +function addFavoritepage(){var sURL=window.location.href;var sTitle=document.title;try{window.external.addFavorite(sURL,sTitle);}catch(e){try{window.sidebar.addPanel(sTitle,sURL,"");}catch(e){alert("加入收藏失败,请使用Ctrl+D进行添加");}}} + +/*设为首页*/ +function setHome(obj){ + try{obj.style.behavior="url(#default#homepage)";obj.setHomePage(webSite);} + catch(e){if(window.netscape){ + try {netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");} + catch(e){alert("此操作被浏览器拒绝!\n请在浏览器地址栏输入\"about:config\"并回车\n然后将 [signed.applets.codebase_principal_support]的值设置为'true',双击即可。");} + var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch); + prefs.setCharPref('browser.startup.homepage',url);}} +} +/*滚动*/ +function marquee(height,speed,delay){ + var scrollT; + var pause = false; + var ScrollBox = document.getElementById("marquee"); + if(document.getElementById("holder").offsetHeight <= height) return; + var _tmp = ScrollBox.innerHTML.replace('holder', 'holder2') + ScrollBox.innerHTML += _tmp; + ScrollBox.onmouseover = function(){pause = true} + ScrollBox.onmouseout = function(){pause = false} + ScrollBox.scrollTop = 0; + function start(){ + scrollT = setInterval(scrolling,speed); + if(!pause) ScrollBox.scrollTop += 2; + } + function scrolling(){ + if(ScrollBox.scrollTop % height != 0){ + ScrollBox.scrollTop += 2; + if(ScrollBox.scrollTop >= ScrollBox.scrollHeight/2) ScrollBox.scrollTop = 0; + } + else{ + clearInterval(scrollT); + setTimeout(start,delay); + } + } + setTimeout(start,delay); +} + +/*隐藏显示密码*/ +(function ( $ ) { + $.fn.togglePassword = function( options ) { + var s = $.extend( $.fn.togglePassword.defaults, options ), + input = $( this ); + + $( s.el ).on( s.ev, function() { + "password" == $( input ).attr( "type" ) ? + $( input ).attr( "type", "text" ) : + $( input ).attr( "type", "password" ); + }); + }; + + $.fn.togglePassword.defaults = { + ev: "click" + }; +}( jQuery )); +!function ($) { + "use strict"; + $(function () { + $.support.transition = (function () { + var transitionEnd = (function () { + var el = document.createElement('bootstrap'), + transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd', + 'MozTransition' : 'transitionend', + 'OTransition' : 'oTransitionEnd otransitionend', + 'transition' : 'transitionend' + }, + name + for (name in transEndEventNames){ + if (el.style[name] !== undefined) { + return transEndEventNames[name] + } + } + }()) + return transitionEnd && { + end: transitionEnd + } + })() + }); +}(window.jQuery); + +/*左侧菜单-隐藏显示*/ +function displaynavbar(obj){ + if($(obj).hasClass("open")){ + $(obj).removeClass("open"); + $("body").removeClass("big-page"); + }else{ + $(obj).addClass("open"); + $("body").addClass("big-page"); + + } +} + +/*模拟下拉菜单*/ +jQuery.Huiselect = function(divselectid,inputselectid) { + var inputselect = $(inputselectid); + $(divselectid+" cite").click(function(){ + var ul = $(divselectid+" ul"); + ul.slideToggle(); + }); + $(divselectid+" ul li a").click(function(){ + var txt = $(this).text(); + $(divselectid+" cite").html(txt); + var value = $(this).attr("selectid"); + inputselect.val(value); + $(divselectid+" ul").hide(); + }); + $(document).click(function(){$(divselectid+" ul").hide();}); +}; + +/*hover*/ +jQuery.Huihover =function(obj) { + $(obj).hover(function(){$(this).addClass("hover");},function(){$(this).removeClass("hover");}); +}; +/*得到失去焦点*/ +jQuery.Huifocusblur = function(obj) { + $(obj).focus(function() {$(this).addClass("focus").removeClass("inputError");}); + $(obj).blur(function() {$(this).removeClass("focus");}); +}; +/*tab选项卡*/ +jQuery.Huitab =function(tabBar,tabCon,class_name,tabEvent,i){ + var $tab_menu=$(tabBar); + // 初始化操作 + $tab_menu.removeClass(class_name); + $(tabBar).eq(i).addClass(class_name); + $(tabCon).hide(); + $(tabCon).eq(i).show(); + + $tab_menu.on(tabEvent,function(){ + $tab_menu.removeClass(class_name); + $(this).addClass(class_name); + var index=$tab_menu.index(this); + $(tabCon).hide(); + $(tabCon).eq(index).show(); + }); +} + +/*折叠*/ +jQuery.Huifold = function(obj,obj_c,speed,obj_type,Event){ + if(obj_type == 2){ + $(obj+":first").find("b").html("-"); + $(obj_c+":first").show(); + } + $(obj).on(Event,function(){ + if($(this).next().is(":visible")){ + if(obj_type == 2){ + return false; + }else{ + $(this).next().slideUp(speed).end().removeClass("selected"); + if($(this).find("b")){ + $(this).find("b").html("+"); + } + } + } + else{ + if(obj_type == 3){ + $(this).next().slideDown(speed).end().addClass("selected"); + if($(this).find("b")){ + $(this).find("b").html("-"); + } + }else{ + $(obj_c).slideUp(speed); + $(obj).removeClass("selected"); + if($(this).find("b")){ + $(obj).find("b").html("+"); + } + $(this).next().slideDown(speed).end().addClass("selected"); + if($(this).find("b")){ + $(this).find("b").html("-"); + } + } + } + }); +} +/*返回顶部*/ +var $backToTopEle=$('').appendTo($("body")).click(function(){ + $("html, body").animate({ scrollTop: 0 }, 120); +}); +var $backToTopFun = function() { + var st = $(document).scrollTop(), winh = $(window).height(); + (st > 0)? $backToTopEle.show(): $backToTopEle.hide(); + /*IE6下的定位*/ + if(!window.XMLHttpRequest){ + $backToTopEle.css("top", st + winh - 166); + } +}; +/*textarea 字数限制*/ +function textarealength(obj,maxlength){ + var v = $(obj).val(); + var l = v.length; + if( l > maxlength){ + v = v.substring(0,maxlength); + } + $(obj).parent().find(".textarea-length").text(v.length); +} +/*Huimodalalert*/ +function Huimodal_alert(info,speed){ + $(document.body).append( + '' + ); + $("#modal-alert").fadeIn(); + + setTimeout("Huimodal_alert_hide()",speed); +} +function Huimodal_alert_hide() { + $("#modal-alert").fadeOut("normal",function(){ + $("#modal-alert").remove(); + }); +} +/*设置cookie*/ +function setCookie(name, value, Days){ + if(Days == null || Days == ''){ + Days = 300; + } + var exp = new Date(); + exp.setTime(exp.getTime() + Days*24*60*60*1000); + document.cookie = name + "="+ escape (value) + "; path=/;expires=" + exp.toGMTString(); +} + +/*获取cookie*/ +function getCookie(name) { + var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); + if(arr=document.cookie.match(reg)) + return unescape(arr[2]); + else + return null; +} +$(function(){ + /*****表单*****/ + $.Huifocusblur(".input-text,.textarea"); + /*按钮loading*/ + $('.btn-loading').click(function () { + var $btn = $(this); + var btnval = $btn.val(); + $btn.addClass("disabled").val("loading").attr("disabled","disabled"); + setTimeout(function(){ + $btn.removeClass("disabled").val(btnval).removeAttr("disabled"); + }, 3000); + }); + /**/ + $.Huiselect("#divselect","#inputselect"); + + /*全选*/ + $("table thead th input:checkbox").on("click" , function(){ + $(this).closest("table").find("tr > td:first-child input:checkbox").prop("checked",$("table thead th input:checkbox").prop("checked")); + }); + + /*上传*/ + $(document).on("change",".input-file",function(){ + var uploadVal=$(this).val(); + $(this).parent().find(".upload-url").val(uploadVal).focus().blur(); + }); + + /*下拉菜单*/ + $(document).on("mouseenter",".dropDown",function(){ + $(this).addClass("hover"); + }); + $(document).on("mouseleave",".dropDown",function(){ + $(this).removeClass("hover"); + }); + $(document).on("mouseenter",".dropDown_hover",function(){ + $(this).addClass("open"); + }); + $(document).on("mouseleave",".dropDown_hover",function(){ + $(this).removeClass("open"); + }); + $(document).on("click",".dropDown-menu li a",function(){ + $(".dropDown").removeClass('open'); + }); + $(document).on('click', function(event){ + var e_t = $(event.target).parents('.dropDown_click'); + if($(".dropDown_click").hasClass('open')){ + if(e_t.hasClass('open')){ + e_t.removeClass('open'); + return; + } + $(".dropDown_click").removeClass('open'); + e_t.toggleClass('open'); + }else{ + e_t.toggleClass('open'); + } + }); + + /*搜索框*/ + $.Huifocusblur('.searchTxt'); + $.Huihover('.ac_results li'); + $(".ac_results li").click(function (event){ + $(".searchTxt").addClass("focus").val($(this).find("p").text()); + $(".ac_results").hide(); + //$(".form-search").submit();/*提交表单*/ + b_onclick();/*临时测试*/ + return false; + }); + $(".searchTxt").focus(function(){$(".ac_results").show();return false;}); + $(".ac_results").blur(function(){$(this).hide();}); + $("body").click(function(){$(".ac_results").hide();}); + $(".searchTxt").click(function(){$(".ac_results").show();return false;}); + function BindEnter(obj){ + var searchBtn = $("#searchBtn"); + if(obj.keyCode == 13){searchBtn.click();obj.returnValue = false;} + } + + /*tag标签*/ + var tags_a = $(".tags a"); + tags_a.each(function(){ + var x = 9; + var y = 0; + var rand = parseInt(Math.random() * (x - y + 1) + y); + $(this).addClass("tags"+rand); + }); + + /*对联广告*/ + var dual = $(".dual"); + var dual_close = $("a.dual_close"); + var screen_w = screen.width; + if(screen_w>1024){dual.show();} + $(window).scroll(function(){ + var scrollTop = $(window).scrollTop(); + dual.stop().animate({top:scrollTop+260}); + }); + dual_close.click(function(){ + $(this).parent().hide(); + return false; + }); + + /*顶部展开定时自动关闭广告*/ + $("#banner").slideDown("slow"); + + /*图片预览*/ + $("a.preview").hover( + function(){ + $(this).addClass("active"); + $("#tooltip-preview").remove(); + var winW=$(window).width(); + var winW5=winW/2; + this.myTitle = this.title; + this.title = ""; + var midimg = $(this).attr('data-preview'); + if(midimg ==''){return false;} + else{ + var imgT=$(this).parents(".imgItem").offset().top; + var imgL=$(this).parents(".imgItem").offset().left; + var imgW=$(this).parents(".imgItem").width(); + var imgH=$(this).parents(".imgItem").height(); + var ww=(imgL+imgW/2); + if(ww < winW5){ + var tooltipLeft=(imgW+imgL)+"px"; + } + else{ + var tooltipRight=(winW-imgL)+"px"; + } + var tooltip_keleyi_com = "
          "; + $("body").append(tooltip_keleyi_com); + var midimgW = $(this).attr('data-width'); + var midimgH = $(this).attr('data-height'); + var imgTitle = this.myTitle ? "
          " + this.myTitle + " 产品预览图" : ""; + /*图片预加载*/ + var image = new Image();/*创建一个Image对象*/ + image.onload = function () { + if($('a.preview.active').attr('data-preview') == midimg){ + var midingW2 = this.width; + var midingH2 = this.height; + $("#tooltip-keleyi-div").css({"width":midingW2+"px","height":midingH2+"px"}); + $('#tooltip-keleyi-div').append(this); + } + }; + image.src = midimg; + } + }, + function(){ + $(this).removeClass("active"); + this.title = this.myTitle; + $("#tooltip-preview").remove(); + } + ); + + /*Huialert*/ + $.Huihover('.Huialert i'); + $(".Huialert i").on("click",function(){ + var Huialert = $(this).parents(".Huialert"); + Huialert.fadeOut("normal",function(){ + Huialert.remove(); + }); + }); + + /*tag标签*/ + var time1; + $(".Hui-tags-lable").show(); + $(".Hui-tags-input").val(""); + $(document).on("blur",".Hui-tags-input",function(){ + time1 = setTimeout(function(){ + $(this).parents(".Hui-tags").find(".Hui-tags-list").slideUp(); + }, 400); + }); + $(document).on("focus",".Hui-tags-input",function(){ + clearTimeout(time1); + }); + $(document).on("click",".Hui-tags-input",function(){ + $(this).find(".Hui-tags-input").focus(); + $(this).find(".Hui-tags-list").slideDown(); + }); + function gettagval(obj){ + var str =""; + var token =$(obj).parents(".Hui-tags").find(".Hui-tags-token"); + //alert(token.length) + if(token.length<1){ + $(obj).parents(".Hui-tags").find(".Hui-tags-val").val(""); + return false; + } + for(var i = 0;i< token.length;i++){ + str += token.eq(i).text() + ","; + $(obj).parents(".Hui-tags").find(".Hui-tags-val").val(str); + } + } + $(document).on("keydown",".Hui-tags-input",function(event){ + $(this).next().hide(); + var v = $(this).val().replace(/\s+/g, ""); + var reg=/^,|,$/gi; + v=v.replace(reg,""); + v=$.trim(v); + var token =$(this).parents(".Hui-tags").find(".Hui-tags-token"); + if(v!=''){ + if(event.keyCode==13||event.keyCode==108||event.keyCode==32){ + $(''+v+'').insertBefore($(this).parents(".Hui-tags").find(".Hui-tags-iptwrap")); + $(this).val(""); + gettagval(this); + } + }else{ + if(event.keyCode==8){ + if(token.length>=1){ + $(this).parents(".Hui-tags").find(".Hui-tags-token:last").remove(); + gettagval(this); + } + else{ + $(this).parents(".Hui-tags").find(".Hui-tags-lable").show(); + return false; + } + + } + } + }); + + $(document).on("click",".Hui-tags-has span",function(){ + var taghasV = $(this).text(); + taghasV=taghasV.replace(/(^\s*)|(\s*$)/g,""); + $(''+taghasV+'').insertBefore($(this).parents(".Hui-tags").find(".Hui-tags-iptwrap")); + gettagval(this); + $(this).parents(".Hui-tags").find(".Hui-tags-input").focus(); + }); + $(document).on("click",".Hui-tags-token",function(){ + var token =$(this).parents(".Hui-tags").find(".Hui-tags-token"); + var it = $(this).parents(".Hui-tags"); + $(this).remove(); + switch(token.length){ + case 1 : it.find(".Hui-tags-lable").show(); + break; + } + var str =""; + var token =it.find(".Hui-tags-token"); + //alert(token.length) + if(token.length<1){ + it.find(".Hui-tags-val").val(""); + return false; + } + for(var i = 0;i< token.length;i++){ + str += token.eq(i).text() + ","; + it.find(".Hui-tags-val").val(str); + } + }); +}); + +function displayimg(){ + $("#banner").slideUp(1000,function(){ + $("#top").slideDown(1000); + }); +} +setTimeout("displayimg()",4000); +/*placeholder兼容性处理*/ +(function(window, document, $) { + var isInputSupported = 'placeholder' in document.createElement('input'); + var isTextareaSupported = 'placeholder' in document.createElement('textarea'); + var prototype = $.fn; + var valHooks = $.valHooks; + var propHooks = $.propHooks; + var hooks; + var placeholder; + + if (isInputSupported && isTextareaSupported) { + placeholder = prototype.placeholder = function() { + return this; + }; + placeholder.input = placeholder.textarea = true; + } else { + placeholder = prototype.placeholder = function() { + var $this = this; + $this + .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]') + .not('.placeholder') + .bind({ + 'focus.placeholder': clearPlaceholder, + 'blur.placeholder': setPlaceholder + }) + .data('placeholder-enabled', true) + .trigger('blur.placeholder'); + return $this; + }; + placeholder.input = isInputSupported; + placeholder.textarea = isTextareaSupported; + hooks = { + 'get': function(element) { + var $element = $(element); + var $passwordInput = $element.data('placeholder-password'); + if ($passwordInput) { + return $passwordInput[0].value; + } + return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value; + }, + 'set': function(element, value) { + var $element = $(element); + var $passwordInput = $element.data('placeholder-password'); + if ($passwordInput) { + return $passwordInput[0].value = value; + } + if (!$element.data('placeholder-enabled')) { + return element.value = value; + } + if (value == '') { + element.value = value; + if (element != safeActiveElement()) { + setPlaceholder.call(element); + } + } else if ($element.hasClass('placeholder')) { + clearPlaceholder.call(element, true, value) || (element.value = value); + } else { + element.value = value; + } + return $element; + } + }; + + if (!isInputSupported) { + valHooks.input = hooks; + propHooks.value = hooks; + } + if (!isTextareaSupported) { + valHooks.textarea = hooks; + propHooks.value = hooks; + } + + $(function() { + $(document).delegate('form', 'submit.placeholder', function() { + var $inputs = $('.placeholder', this).each(clearPlaceholder); + setTimeout(function() { + $inputs.each(setPlaceholder); + }, 10); + }); + }); + + $(window).bind('beforeunload.placeholder', function() { + $('.placeholder').each(function() { + this.value = ''; + }); + }); + } + + function args(elem) { + var newAttrs = {}; + var rinlinejQuery = /^jQuery\d+$/; + $.each(elem.attributes, function(i, attr) { + if (attr.specified && !rinlinejQuery.test(attr.name)) { + newAttrs[attr.name] = attr.value; + } + }); + return newAttrs; + } + + function clearPlaceholder(event, value) { + var input = this; + var $input = $(input); + if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) { + if ($input.data('placeholder-password')) { + $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id')); + if (event === true) { + return $input[0].value = value; + } + $input.focus(); + } else { + input.value = ''; + $input.removeClass('placeholder'); + input == safeActiveElement() && input.select(); + } + } + } + + function setPlaceholder() { + var $replacement; + var input = this; + var $input = $(input); + var id = this.id; + if (input.value == '') { + if (input.type == 'password') { + if (!$input.data('placeholder-textinput')) { + try { + $replacement = $input.clone().prop('type','text'); + } catch(e) { + $replacement = $('').prop($.extend(args(this), { 'type': 'text' })); + } + $replacement + .removeAttr('name') + .data({ + 'placeholder-password': $input, + 'placeholder-id': id + }) + .bind('focus.placeholder', clearPlaceholder); + $input + .data({ + 'placeholder-textinput': $replacement, + 'placeholder-id': id + }) + .before($replacement); + } + $input = $input.removeAttr('id').hide().prev().attr('id', id).show(); + } + $input.addClass('placeholder'); + $input[0].value = $input.attr('placeholder'); + } else { + $input.removeClass('placeholder'); + } + } + function safeActiveElement() { + try { + return document.activeElement; + } catch (exception) {} + } +}(this, document, jQuery)); \ No newline at end of file diff --git a/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/demo.html b/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/demo.html new file mode 100644 index 0000000..453acad --- /dev/null +++ b/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/demo.html @@ -0,0 +1,1204 @@ + + + + +IconFont + + + + + +
          +

          H-ui.admin_v2.3 图标字库

          +

          操作相关

          +
            +
          • +
            返回顶部
            +
            &#xe684;
            +
            .Hui-iconfont-gotop
            +
          • +
          • +
            剪切
            +
            &#xe64e;
            +
            .Hui-iconfont-jiandao
            +
          • +
          • +
            搜索
            +
            &#xe665;
            +
            .Hui-iconfont-search2
            +
          • +
          • +
            保存
            +
            &#xe632;
            +
            .save
            +
          • +
          • +
            撤销
            +
            &#xe66b;
            +
            .Hui-iconfont-chexiao
            +
          • +
          • +
            重做
            +
            &#xe66c;
            +
            .Hui-iconfont-zhongzuo
            +
          • +
          • +
            下载
            +
            &#xe640;
            +
            .Hui-iconfont-down
            +
          • +
          • +
            切换器右
            +
            &#xe63d;
            +
            .Hui-iconfont-slider-right
            +
          • +
          • +
            切换器左
            +
            &#xe67d;
            +
            .Hui-iconfont-slider-left
            +
          • +
          • +
            发布
            +
            &#xe603;
            +
            .Hui-iconfont-fabu
            +
          • +
          • +
            添加
            +
            &#xe604;
            +
            .Hui-iconfont-add2
            +
          • +
          • +
            换一批
            +
            &#xe68f;
            +
            .Hui-iconfont-huanyipi
            +
          • +
          • +
            等待
            +
            &#xe606;
            +
            .Hui-iconfont-dengdai
            +
          • +
          • +
            导出
            +
            &#xe644;
            +
            .Hui-iconfont-daochu
            +
          • +
          • +
            导入
            +
            &#xe645;
            +
            .Hui-iconfont-daoru
            +
          • +
          • +
            删除
            +
            &#xe60b;
            +
            .Hui-iconfont-del
            +
          • +
          • +
            删除
            +
            &#xe609;
            +
            .Hui-iconfont-del2
            +
          • +
          • +
            删除
            +
            &#xe6e2;
            +
            .Hui-iconfont-del3
            +
          • +
          • +
            输入
            +
            &#xe647;
            +
            .Hui-iconfont-shuru
            +
          • +
          • +
            添加
            +
            &#xe600;
            +
            .Hui-iconfont-add
            +
          • +
          • +
            减号
            +
            &#xe6a1;
            +
            .Hui-iconfont-jianhao
            +
          • +
          • +
            编辑
            +
            &#xe60c;
            +
            .Hui-iconfont-edit
            +
          • +
          • +
            管理
            +
            &#xe61d;
            +
            .Hui-iconfont-manage
            +
          • +
          • +
            添加
            +
            &#xe610;
            +
            .Hui-iconfont-add3
            +
          • +
          • +
            添加
            +
            &#xe61f;
            +
            .Hui-iconfont-add4
            +
          • +
          • +
            密码
            +
            &#xe63f;
            +
            .Hui-iconfont-key
            +
          • +
          • +
            解锁
            +
            &#xe605;
            +
            .Hui-iconfont-jiesuo
            +
          • +
          • +
            锁定
            +
            &#xe60e;
            +
            .Hui-iconfont-suoding
            +
          • +
          • +
            关闭
            +
            &#xe6a6;
            +
            .Hui-iconfont-close
            +
          • +
          • +
            选择
            +
            &#xe6a7;
            +
            .Hui-iconfont-xuanze
            +
          • +
          • +
            未选
            +
            &#xe608;
            +
            .Hui-iconfont-weigouxuan2
            +
          • +
          • +
            选中
            +
            &#xe6a8;
            +
            .Hui-iconfont-xuanzhong1
            +
          • +
          • +
            选中
            +
            &#xe676;
            +
            .Hui-iconfont-xuanzhong
            +
          • +
          • +
            未选中
            +
            &#xe677;
            +
            .Hui-iconfont-weixuanzhong
            +
          • +
          • +
            启用
            +
            &#xe601;
            +
            .Hui-iconfont-gouxuan2
            +
          • +
          • +
            勾选
            +
            &#xe617;
            +
            .Hui-iconfont-selected
            +
          • +
          • +
            上架
            +
            &#xe6dc;
            +
            .Hui-iconfont-shangjia
            +
          • +
          • +
            下架
            +
            &#xe6de;
            +
            .Hui-iconfont-xiajia
            +
          • +
          • +
            上传
            +
            &#xe642;
            +
            .Hui-iconfont-upload
            +
          • +
          • +
            下载
            +
            &#xe641;
            +
            .Hui-iconfont-yundown
            +
          • +
          • +
            剪裁
            +
            &#xe6bc;
            +
            .Hui-iconfont-caiqie
            +
          • +
          • +
            旋转
            +
            &#xe6bd;
            +
            .Hui-iconfont-xuanzhuan
            +
          • +
          • +
            启用
            +
            &#xe615;
            +
            .Hui-iconfont-gouxuan
            +
          • +
          • +
            未勾选
            +
            &#xe614;
            +
            .Hui-iconfont-weigouxuan
            +
          • +
          • +
            录音
            +
            &#xe619;
            +
            .Hui-iconfont-luyin
            +
          • +
          • +
            编辑
            +
            &#xe6df;
            +
            .Hui-iconfont-edit
            +
          • +
          • +
            预览
            +
            &#xe695;
            +
            .Hui-iconfont-yulan
            +
          • +
          • +
            审核不通过
            +
            &#xe6e0;
            +
            .shenhe-weitongguo
            +
          • +
          • +
            审核不通过
            +
            &#xe6dd;
            +
            .shenhe-butongguo2
            +
          • +
          • +
            审核通过
            +
            &#xe6e1;
            +
            .shenhe-tongguo
            +
          • +
          • +
            停用
            +
            &#xe631;
            +
            .shenhe-tingyong
            +
          • +
          +

          菜单相关

          +
            +
          • +
            home
            +
            &#xe625;
            +
            .Hui-iconfont-home
            +
          • +
          • +
            小箭头
            +
            &#xe67f;
            +
            .Hui-iconfont-home2
            +
          • +
          • +
            cmstop新闻
            +
            &#xe616;
            +
            .Hui-iconfont-news
            +
          • +
          • +
            图片
            +
            &#xe613;
            +
            .Hui-iconfont-tuku
            +
          • +
          • +
            音乐
            +
            &#xe60f;
            +
            .Hui-iconfont-music
            +
          • +
          • +
            标签
            +
            &#xe64b;
            +
            .Hui-iconfont-tags
            +
          • +
          • +
            语音
            +
            &#xe66f;
            +
            .Hui-iconfont-yuyin3
            +
          • +
          • +
            系统
            +
            &#xe62e;
            +
            .Hui-iconfont-system
            +
          • +
          • +
            帮助
            +
            &#xe633;
            +
            .Hui-iconfont-help
            +
          • +
          • +
            出库
            +
            &#xe634;
            +
            .Hui-iconfont-chuku
            +
          • +
          • +
            图片
            +
            &#xe646;
            +
            .Hui-iconfont-picture
            +
          • +
          • +
            分类
            +
            &#xe681;
            +
            .Hui-iconfont-fenlei
            +
          • +
          • +
            合同管理
            +
            &#xe636;
            +
            .Hui-iconfont-hetong
            +
          • +
          • +
            全部订单
            +
            &#xe687;
            +
            .Hui-iconfont-quanbudingdan
            +
          • +
          • +
            任务管理
            +
            &#xe637;
            +
            .Hui-iconfont-renwu
            +
          • +
          • +
            问题反馈
            +
            &#xe691;
            +
            .Hui-iconfont-feedback
            +
          • +
          • +
            意见反馈
            +
            &#xe692;
            +
            .Hui-iconfont-feedback2
            +
          • +
          • +
            合同
            +
            &#xe639;
            +
            .Hui-iconfont-dangan
            +
          • +
          • +
            日志
            +
            &#xe623;
            +
            .Hui-iconfont-log
            +
          • +
          • +
            列表页面
            +
            &#xe626;
            +
            .Hui-iconfont-pages
            +
          • +
          • +
            文件
            +
            &#xe63e;
            +
            .Hui-iconfont-file
            +
          • +
          • +
            管理
            +
            &#xe63c;
            +
            .Hui-iconfont-manage2
            +
          • +
          • +
            订单
            +
            &#xe627;
            +
            .Hui-iconfont-order
            +
          • +
          • +
            语音
            +
            &#xe6a4;
            +
            .Hui-iconfont-yuyin2
            +
          • +
          • +
            语音
            +
            &#xe6a5;
            +
            .Hui-iconfont-yuyin
            +
          • +
          • +
            图片
            +
            &#xe612;
            +
            .Hui-iconfont-picture1
            +
          • +
          • +
            图文详情
            +
            &#xe685;
            +
            .Hui-iconfont-tuwenxiangqing
            +
          • +
          +

          天气相关

          +
            +
          • +
            多云
            +
            &#xe6ac;
            +
            .Hui-iconfont-tianqi-duoyun
            +
          • +
          • +
            +
            &#xe6ad;
            +
            .Hui-iconfont-tianqi-mai
            +
          • +
          • +
            +
            &#xe6ae;
            +
            .Hui-iconfont-tianqi-qing
            +
          • +
          • +
            +
            &#xe6af;
            +
            .Hui-iconfont-tianqi-wu
            +
          • +
          • +
            +
            &#xe6b0;
            +
            .Hui-iconfont-tianqi-xue
            +
          • +
          • +
            +
            &#xe6b1;
            +
            .Hui-iconfont-tianqi-yin
            +
          • +
          • +
            +
            &#xe6b2;
            +
            .Hui-iconfont-tianqi-yu
            +
          • +
          +

          用户相关

          +
            +
          • +
            用户
            +
            &#xe62c;
            +
            .Hui-iconfont-user
            +
          • +
          • +
            用户
            +
            &#xe60d;
            +
            .Hui-iconfont-user2
            +
          • +
          • +
            用户头像
            +
            &#xe60a;
            +
            .Hui-iconfont-avatar
            +
          • +
          • +
            添加用户
            +
            &#xe607;
            +
            .Hui-iconfont-user-add
            +
          • +
          • +
            用户ID
            +
            &#xe602;
            +
            .Hui-iconfont-userid
            +
          • +
          • +
            证照管理
            +
            &#xe638;
            +
            .Hui-iconfont-zhizhao
            +
          • +
          • +
            群组
            +
            &#xe62b;
            +
            .Hui-iconfont-user-group
            +
          • +
          • +
            站长
            +
            &#xe653;
            +
            .Hui-iconfont-user-zhanzhang
            +
          • +
          • +
            管理员
            +
            &#xe62d;
            +
            .Hui-iconfont-root
            +
          • +
          • +
            公司
            +
            &#xe643;
            +
            .Hui-iconfont-gongsi
            +
          • +
          • +
            会员卡
            +
            &#xe6b4;
            +
            .Hui-iconfont-vip-card2
            +
          • +
          • +
            会员
            +
            &#xe6cc;
            +
            .Hui-iconfont-vip
            +
          • +
          • +
            群组
            +
            &#xe611;
            +
            .Hui-iconfont-usergroup2
            +
          • +
          • +
            客服
            +
            &#xe6d0;
            +
            .Hui-iconfont-kefu
            +
          • +
          +

          表情相关

          +
            +
          • +
            表情
            +
            &#xe68e;
            +
            .Hui-iconfont-face2
            +
          • +
          • +
            表情
            +
            &#xe668;
            +
            .Hui-iconfont-face
            +
          • +
          • +
            微笑
            +
            &#xe656;
            +
            .Hui-iconfont-face-weixiao
            +
          • +
          • +
            哭脸
            +
            &#xe688;
            +
            .face-ku
            +
          • +
          • +
            吃惊
            +
            &#xe657;
            +
            .Hui-iconfont-face-chijing
            +
          • +
          • +
            +
            &#xe658;
            +
            .Hui-iconfont-face-dai
            +
          • +
          • +
            耍酷
            +
            &#xe659;
            +
            .Hui-iconfont-face-shuaku
            +
          • +
          • +
            魔鬼
            +
            &#xe65a;
            +
            .Hui-iconfont-face-mogui
            +
          • +
          • +
            尴尬
            +
            &#xe65b;
            +
            .Hui-iconfont-face-ganga
            +
          • +
          • +
            +
            &#xe65c;
            +
            .Hui-iconfont-face-qin
            +
          • +
          • +
            +
            &#xe65d;
            +
            .Hui-iconfont-face-nu
            +
          • +
          • +
            眨眼
            +
            &#xe65e;
            +
            .Hui-iconfont-face-zhayan
            +
          • +
          • +
            生气
            +
            &#xe65f;
            +
            .Hui-iconfont-face-shengqi
            +
          • +
          • +
            +
            &#xe660;
            +
            .Hui-iconfont-face-ma
            +
          • +
          • +
            鄙视
            +
            &#xe661;
            +
            .Hui-iconfont-face-bishi
            +
          • +
          • +
            卖萌
            +
            &#xe662;
            +
            .Hui-iconfont-face-maimeng
            +
          • +
          • +
            惊呆
            +
            &#xe663;
            +
            .Hui-iconfont-face-jingdai
            +
          • +
          • +
            +
            &#xe664;
            +
            .Hui-iconfont-face-yun
            +
          • +
          +

          社区相关

          +
            +
          • +
            分享
            +
            &#xe666;
            +
            .Hui-iconfont-share2
            +
          • +
          • +
            分享
            +
            &#xe6aa;
            +
            .Hui-iconfont-share
            +
          • +
          • +
            人人网
            +
            &#xe6d8;
            +
            .Hui-iconfont-share-renren
            +
          • +
          • +
            腾讯微博
            +
            &#xe6d9;
            +
            .Hui-iconfont-share-tweibo
            +
          • +
          • +
            豆瓣
            +
            &#xe67c;
            +
            .Hui-iconfont-share-douban
            +
          • +
          • +
            朋友圈
            +
            &#xe693;
            +
            .Hui-iconfont-share-pengyouquan
            +
          • +
          • +
            微信
            +
            &#xe694;
            +
            .Hui-iconfont-share-weixin
            +
          • +
          • +
            QQ
            +
            &#xe67b;
            +
            .Hui-iconfont-share-qq
            +
          • +
          • +
            QQ空间
            +
            &#xe6c8;
            +
            .Hui-iconfont-share-qzone
            +
          • +
          • +
            微博
            +
            &#xe6da;
            +
            .Hui-iconfont-share-weibo
            +
          • +
          • +
            知乎
            +
            &#xe689;
            +
            .Hui-iconfont-share-zhihu
            +
          • +
          • +
            喜欢
            +
            &#xe649;
            +
            .Hui-iconfont-like
            +
          • +
          • +
            喜欢
            +
            &#xe648;
            +
            .Hui-iconfont-like2
            +
          • +
          • +
            已关注
            +
            &#xe680;
            +
            .Hui-iconfont-yiguanzhu
            +
          • +
          • +
            评论
            +
            &#xe622;
            +
            .Hui-iconfont-comment
            +
          • +
          • +
            累计评价
            +
            &#xe686;
            +
            .Hui-iconfont-leijipingjia
            +
          • +
          • +
            消息
            +
            &#xe68a;
            +
            .Hui-iconfont-xiaoxi
            +
          • +
          • +
            收藏
            +
            &#xe61b;
            +
            .Hui-iconfont-cang
            +
          • +
          • +
            收藏-选中
            +
            &#xe630;
            +
            .Hui-iconfont-cang-selected
            +
          • +
          • +
            收藏
            +
            &#xe69e;
            +
            .Hui-iconfont-cang2
            +
          • +
          • +
            收藏-选中
            +
            &#xe69d;
            +
            .Hui-iconfont-cang2-selected
            +
          • +
          • +
            关注-更多操作
            +
            &#xe68b;
            +
            .Hui-iconfont-more
            +
          • +
          • +
            赞扬
            +
            &#xe66d;
            +
            .Hui-iconfont-zan
            +
          • +
          • +
            批评
            +
            &#xe66e;
            +
            .Hui-iconfont-cai
            +
          • +
          • +
            点赞
            +
            &#xe697;
            +
            .Hui-iconfont-zan2
            +
          • +
          • +
            通知
            +
            &#xe62f;
            +
            .Hui-iconfont-msg
            +
          • +
          • +
            消息管理
            +
            &#xe63b;
            +
            .Hui-iconfont-email
            +
          • +
          • +
            已关注店铺
            +
            &#xe6a9;
            +
            .Hui-iconfont-yiguanzhu1
            +
          • +
          • +
            转发
            +
            &#xe6ab;
            +
            .Hui-iconfont-zhuanfa
            +
          • +
          • +
            待评价
            +
            &#xe6b3;
            +
            .Hui-iconfont-daipingjia
            +
          • +
          • +
            积分
            +
            &#xe6b5;
            +
            .Hui-iconfont-jifen
            +
          • +
          • +
            消息
            +
            &#xe6c5;
            +
            .Hui-iconfont-xiaoxi1
            +
          • +
          • +
            订阅
            +
            &#xe6ce;
            +
            .Hui-iconfont-dingyue
            +
          • +
          • +
            提示
            +
            &#xe6cd;
            +
            .Hui-iconfont-tishi
            +
          • +
          +

          统计相关

          +
            +
          • +
            数据统计
            +
            &#xe621;
            +
            .Hui-iconfont-tongji-bing
            +
          • +
          • +
            统计管理
            +
            &#xe635;
            +
            .Hui-iconfont-ad
            +
          • +
          • +
            数据统计
            +
            &#xe61e;
            +
            .Hui-iconfont-shujutongji
            +
          • +
          • +
            统计
            +
            &#xe61a;
            +
            .Hui-iconfont-tongji
            +
          • +
          • +
            柱状统计
            +
            &#xe618;
            +
            .Hui-iconfont-tongji-zhu
            +
          • +
          • +
            线状统计
            +
            &#xe61c;
            +
            .Hui-iconfont-tongji-xian
            +
          • +
          • +
            排行榜
            +
            &#xe6cf;
            +
            .Hui-iconfont-paixingbang
            +
          • +
          +

          箭头相关

          +
            +
          • +
            向左
            +
            &#xe678;
            +
            .Hui-iconfont-arrow1-bottom
            +
          • +
          • +
            向下
            +
            &#xe674;
            +
            .Hui-iconfont-arrow1-bottom
            +
          • +
          • +
            向上
            +
            &#xe679;
            +
            .Hui-iconfont-arrow1-top
            +
          • +
          • +
            向右
            +
            &#xe67a;
            +
            .Hui-iconfont-arrow1-right
            +
          • +
          • +
            向左
            +
            &#xe6d4;
            +
            .Hui-iconfont-arrow2-left
            +
          • +
          • +
            向上
            +
            &#xe6d6;
            +
            .Hui-iconfont-arrow2-top
            +
          • +
          • +
            向右
            +
            &#xe6d7;
            +
            .Hui-iconfont-arrow2-right
            +
          • +
          • +
            向下
            +
            &#xe6d5;
            +
            .Hui-iconfont-arrow2-bottom
            +
          • +
          • +
            向左
            +
            &#xe69b;
            +
            .Hui-iconfont-arrow3-left
            +
          • +
          • +
            向上
            +
            &#xe699;
            +
            .Hui-iconfont-arrow3-top
            +
          • +
          • +
            向右
            +
            &#xe69a;
            +
            .Hui-iconfont-arrow3-right
            +
          • +
          • +
            向下
            +
            &#xe698;
            +
            .Hui-iconfont-arrow3-bottom
            +
          • +
          • +
            向右
            +
            &#xe67e;
            +
            .Hui-iconfont-sanjiao
            +
          • +
          +

          电商相关

          +
            +
          • +
            物流
            +
            &#xe669;
            +
            .Hui-iconfont-wuliu
            +
          • +
          • +
            店铺
            +
            &#xe66a;
            +
            .Hui-iconfont-dianpu
            +
          • +
          • +
            购物车
            +
            &#xe670;
            +
            .Hui-iconfont-cart2-selected
            +
          • +
          • +
            购物车满
            +
            &#xe672;
            +
            .Hui-iconfont-cart2-man
            +
          • +
          • +
            购物车空
            +
            &#xe673;
            +
            .Hui-iconfont-card2-kong
            +
          • +
          • +
            购物车-选中
            +
            &#xe6b8;
            +
            .Hui-iconfont-cart-selected
            +
          • +
          • +
            购物车
            +
            &#xe6b9;
            +
            .Hui-iconfont-cart-kong
            +
          • +
          • +
            降价
            +
            &#xe6ba;
            +
            .Hui-iconfont-jiangjia
            +
          • +
          • +
            信用卡还款
            +
            &#xe628;
            +
            .Hui-iconfont-bank
            +
          • +
          • +
            礼物
            +
            &#xe6bb;
            +
            .Hui-iconfont-liwu
            +
          • +
          • +
            优惠券
            +
            &#xe6b6;
            +
            .Hui-iconfont-youhuiquan
            +
          • +
          • +
            红包
            +
            &#xe6b7;
            +
            .Hui-iconfont-hongbao
            +
          • +
          • +
            优惠券
            +
            &#xe6ca;
            +
            .Hui-iconfont-hongbao2
            +
          • +
          • +
            资金
            +
            &#xe63a;
            +
            .Hui-iconfont-money
            +
          • +
          • +
            商品
            +
            &#xe620;
            +
            .Hui-iconfont-goods
            +
          • +
          +

          其他

          +
            +
          • +
            电话
            +
            &#xe6c7;
            +
            .Hui-iconfont-tel
            +
          • +
          • +
            电话
            +
            &#xe6a3;
            +
            .Hui-iconfont-tel2
            +
          • +
          • +
            电话
            +
            &#xe696;
            +
            .Hui-iconfont-phone
            +
          • +
          • +
            平板电脑
            +
            &#xe64c;
            +
            .Hui-iconfont-pad
            +
          • +
          • +
            PC
            +
            &#xe64f;
            +
            .Hui-iconfont-xianshiqi
            +
          • +
          • +
            照相机
            +
            &#xe650;
            +
            .Hui-iconfont-zhaoxiangji
            +
          • +
          • +
            单反相机
            +
            &#xe651;
            +
            .Hui-iconfont-danfanxiangji
            +
          • +
          • +
            打印机
            +
            &#xe652;
            +
            .Hui-iconfont-dayinji
            +
          • +
          • +
            轮胎
            +
            &#xe64d;
            +
            .Hui-iconfont-lunzi
            +
          • +
          • +
            插件
            +
            &#xe654;
            +
            .Hui-iconfont-chajian
            +
          • +
          • +
            节日
            +
            &#xe655;
            +
            .Hui-iconfont-jieri
            +
          • +
          • +
            排序
            +
            &#xe675;
            +
            .Hui-iconfont-paixu
            +
          • +
          • +
            匿名
            +
            &#xe624;
            +
            .Hui-iconfont-niming
            +
          • +
          • +
            换肤
            +
            &#xe62a;
            +
            .Hui-iconfont-pifu
            +
          • +
          • +
            二维码
            +
            &#xe6cb;
            +
            .Hui-iconfont-2code
            +
          • +
          • +
            扫一扫
            +
            &#xe682;
            +
            .Hui-iconfont-saoyisao
            +
          • +
          • +
            搜索
            +
            &#xe683;
            +
            .Hui-iconfont-search
            +
          • +
          • +
            中图模式
            +
            &#xe68c;
            +
            .Hui-iconfont-zhongtumoshi
            +
          • +
          • +
            大图模式
            +
            &#xe68d;
            +
            .Hui-iconfont-datumoshi
            +
          • +
          • +
            大图模式
            +
            &#xe6be;
            +
            .Hui-iconfont-bigpic
            +
          • +
          • +
            中图模式
            +
            &#xe6c0;
            +
            .Hui-iconfont-middle
            +
          • +
          • +
            列表模式
            +
            &#xe6bf;
            +
            .Hui-iconfont-list
            +
          • +
          • +
            时间
            +
            &#xe690;
            +
            .Hui-iconfont-shijian
            +
          • +
          • +
            更多
            +
            &#xe69c;
            +
            .Hui-iconfont-more2
            +
          • +
          • +
            SIM卡
            +
            &#xe629;
            +
            .Hui-iconfont-sim
            +
          • +
          • +
            火热
            +
            &#xe6c1;
            +
            .Hui-iconfont-hot
            +
          • +
          • +
            拍摄
            +
            &#xe6c2;
            +
            .Hui-iconfont-paishe
            +
          • +
          • +
            热销
            +
            &#xe6c3;
            +
            .Hui-iconfont-hot1
            +
          • +
          • +
            上新
            +
            &#xe6c4;
            +
            .Hui-iconfont-new
            +
          • +
          • +
            产品参数
            +
            &#xe6c6;
            +
            .Hui-iconfont-canshu
            +
          • +
          • +
            定位
            +
            &#xe6c9;
            +
            .Hui-iconfont-dingwei
            +
          • +
          • +
            定位
            +
            &#xe671;
            +
            .Hui-iconfont-weizhi
            +
          • +
          • +
            HTML
            +
            &#xe69f;
            +
            .Hui-iconfont-html
            +
          • +
          • +
            CSS
            +
            &#xe6a0;
            +
            .Hui-iconfont-css
            +
          • +
          • +
            苹果
            +
            &#xe64a;
            +
            .Hui-iconfont-apple
            +
          • +
          • +
            android
            +
            &#xe6a2;
            +
            .Hui-iconfont-android
            +
          • +
          • +
            github
            +
            &#xe6d1;
            +
            .Hui-iconfont-github
            +
          • +
          • +
            html5
            +
            &#xe6d2;
            +
            .Hui-iconfont-html5
            +
          • +
          • +
            皇冠
            +
            &#xe6d3;
            +
            .Hui-iconfont-huangguan
            +
          • +
          +
          第一步:使用font-face声明字体 +
          +@font-face {font-family: 'Hui-iconfont';
          +    src: url('iconfont.eot'); /* IE9*/
          +    src: url('iconfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
          +    url('iconfont.woff') format('woff'), /* chrome、firefox */
          +    url('iconfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/
          +    url('iconfont.svg#Hui-iconfont') format('svg'); /* iOS 4.1- */
          +}
          +
          + 第二步:定义使用iconfont的样式 +
          +.Hui-iconfont{
          +    font-family:"Hui-iconfont" !important;
          +    font-size:16px;font-style:normal;
          +    -webkit-font-smoothing: antialiased;
          +    -webkit-text-stroke-width: 0.2px;
          +    -moz-osx-font-smoothing: grayscale;}
          +
          + 第三步:挑选相应图标并获取字体编码,应用于页面 +
          +<i class="Hui-iconfont">&#x33;</i>
          +
          +
          +
          + + diff --git a/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/iconfont.css b/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/iconfont.css new file mode 100644 index 0000000..db0e2c4 --- /dev/null +++ b/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/iconfont.css @@ -0,0 +1,242 @@ + +@font-face {font-family: "Hui-iconfont"; + src: url('iconfont.eot'); /* IE9*/ + src: url('iconfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('iconfont.woff') format('woff'), /* chrome、firefox */ + url('iconfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url('iconfont.svg#Hui-iconfont') format('svg'); /* iOS 4.1- */ +} + +.Hui-iconfont { + font-family:"Hui-iconfont" !important; + + font-style:normal; + -webkit-font-smoothing: antialiased; + -webkit-text-stroke-width: 0.2px; + -moz-osx-font-smoothing: grayscale; +} +.Hui-iconfont-gotop:before { content: "\e684"; } +.Hui-iconfont-music:before { content: "\e60f"; } +.Hui-iconfont-tags:before { content: "\e64b"; } +.Hui-iconfont-pad:before { content: "\e64c"; } +.Hui-iconfont-lunzi:before { content: "\e64d"; } +.Hui-iconfont-jiandao:before { content: "\e64e"; } +.Hui-iconfont-xianshiqi:before { content: "\e64f"; } +.Hui-iconfont-zhaoxiangji:before { content: "\e650"; } +.Hui-iconfont-danfanxiangji:before { content: "\e651"; } +.Hui-iconfont-dayinji:before { content: "\e652"; } +.Hui-iconfont-user-zhanzhang:before { content: "\e653"; } +.Hui-iconfont-chajian:before { content: "\e654"; } +.Hui-iconfont-arrow1-bottom:before { content: "\e674"; } +.Hui-iconfont-arrow1-left:before { content: "\e678"; } +.Hui-iconfont-arrow1-top:before { content: "\e679"; } +.Hui-iconfont-arrow1-right:before { content: "\e67a"; } +.Hui-iconfont-jieri:before { content: "\e655"; } +.Hui-iconfont-face-weixiao:before { content: "\e656"; } +.Hui-iconfont-face-chijing:before { content: "\e657"; } +.Hui-iconfont-face-dai:before { content: "\e658"; } +.Hui-iconfont-face-shuaku:before { content: "\e659"; } +.Hui-iconfont-face-mogui:before { content: "\e65a"; } +.Hui-iconfont-face-ganga:before { content: "\e65b"; } +.Hui-iconfont-face-qin:before { content: "\e65c"; } +.Hui-iconfont-face-nu:before { content: "\e65d"; } +.Hui-iconfont-face-zhayan:before { content: "\e65e"; } +.Hui-iconfont-face-shengqi:before { content: "\e65f"; } +.Hui-iconfont-face-ma:before { content: "\e660"; } +.Hui-iconfont-face-bishi:before { content: "\e661"; } +.Hui-iconfont-face-maimeng:before { content: "\e662"; } +.Hui-iconfont-face-jingdai:before { content: "\e663"; } +.Hui-iconfont-face-yun:before { content: "\e664"; } +.Hui-iconfont-home2:before { content: "\e67f"; } +.Hui-iconfont-search2:before { content: "\e665"; } +.Hui-iconfont-share2:before { content: "\e666"; } +.Hui-iconfont-face:before { content: "\e668"; } +.Hui-iconfont-wuliu:before { content: "\e669"; } +.Hui-iconfont-dianpu:before { content: "\e66a"; } +.Hui-iconfont-chexiao:before { content: "\e66b"; } +.Hui-iconfont-zhongzuo:before { content: "\e66c"; } +.Hui-iconfont-zan:before { content: "\e66d"; } +.Hui-iconfont-cai:before { content: "\e66e"; } +.Hui-iconfont-yuyin3:before { content: "\e66f"; } +.Hui-iconfont-cart2-selected:before { content: "\e670"; } +.Hui-iconfont-weizhi:before { content: "\e671"; } +.Hui-iconfont-face-ku:before { content: "\e688"; } +.Hui-iconfont-down:before { content: "\e640"; } +.Hui-iconfont-cart2-man:before { content: "\e672"; } +.Hui-iconfont-card2-kong:before { content: "\e673"; } +.Hui-iconfont-luyin:before { content: "\e619"; } +.Hui-iconfont-html:before { content: "\e69f"; } +.Hui-iconfont-css:before { content: "\e6a0"; } +.Hui-iconfont-android:before { content: "\e6a2"; } +.Hui-iconfont-github:before { content: "\e6d1"; } +.Hui-iconfont-html5:before { content: "\e6d2"; } +.Hui-iconfont-huangguan:before { content: "\e6d3"; } +.Hui-iconfont-news:before { content: "\e616"; } +.Hui-iconfont-slider-right:before { content: "\e63d"; } +.Hui-iconfont-slider-left:before { content: "\e67d"; } +.Hui-iconfont-tuku:before { content: "\e613"; } +.Hui-iconfont-shuru:before { content: "\e647"; } +.Hui-iconfont-sanjiao:before { content: "\e67e"; } +.Hui-iconfont-share-renren:before { content: "\e6d8"; } +.Hui-iconfont-share-tweibo:before { content: "\e6d9"; } +.Hui-iconfont-arrow2-left:before { content: "\e6d4"; } +.Hui-iconfont-paixu:before { content: "\e675"; } +.Hui-iconfont-niming:before { content: "\e624"; } +.Hui-iconfont-add:before { content: "\e600"; } +.Hui-iconfont-root:before { content: "\e62d"; } +.Hui-iconfont-xuanzhong:before { content: "\e676"; } +.Hui-iconfont-weixuanzhong:before { content: "\e677"; } +.Hui-iconfont-arrow2-bottom:before { content: "\e6d5"; } +.Hui-iconfont-arrow2-top:before { content: "\e6d6"; } +.Hui-iconfont-like2:before { content: "\e648"; } +.Hui-iconfont-arrow2-right:before { content: "\e6d7"; } +.Hui-iconfont-share-weixin:before { content: "\e694"; } +.Hui-iconfont-shenhe-tingyong:before { content: "\e631"; } +.Hui-iconfont-gouxuan2:before { content: "\e601"; } +.Hui-iconfont-selected:before { content: "\e617"; } +.Hui-iconfont-jianhao:before { content: "\e6a1"; } +.Hui-iconfont-user-group:before { content: "\e62b"; } +.Hui-iconfont-yiguanzhu:before { content: "\e680"; } +.Hui-iconfont-comment:before { content: "\e622"; } +.Hui-iconfont-tongji-zhu:before { content: "\e618"; } +.Hui-iconfont-like:before { content: "\e649"; } +.Hui-iconfont-shangjia:before { content: "\e6dc"; } +.Hui-iconfont-save:before { content: "\e632"; } +.Hui-iconfont-gongsi:before { content: "\e643"; } +.Hui-iconfont-system:before { content: "\e62e"; } +.Hui-iconfont-pifu:before { content: "\e62a"; } +.Hui-iconfont-msg:before { content: "\e62f"; } +.Hui-iconfont-userid:before { content: "\e602"; } +.Hui-iconfont-cang-selected:before { content: "\e630"; } +.Hui-iconfont-yundown:before { content: "\e641"; } +.Hui-iconfont-help:before { content: "\e633"; } +.Hui-iconfont-chuku:before { content: "\e634"; } +.Hui-iconfont-picture:before { content: "\e646"; } +.Hui-iconfont-ad:before { content: "\e635"; } +.Hui-iconfont-fenlei:before { content: "\e681"; } +.Hui-iconfont-saoyisao:before { content: "\e682"; } +.Hui-iconfont-search:before { content: "\e683"; } +.Hui-iconfont-tuwenxiangqing:before { content: "\e685"; } +.Hui-iconfont-leijipingjia:before { content: "\e686"; } +.Hui-iconfont-hetong:before { content: "\e636"; } +.Hui-iconfont-tongji:before { content: "\e61a"; } +.Hui-iconfont-quanbudingdan:before { content: "\e687"; } +.Hui-iconfont-cang:before { content: "\e61b"; } +.Hui-iconfont-xiaoxi:before { content: "\e68a"; } +.Hui-iconfont-renwu:before { content: "\e637"; } +.Hui-iconfont-more:before { content: "\e68b"; } +.Hui-iconfont-zhizhao:before { content: "\e638"; } +.Hui-iconfont-fabu:before { content: "\e603"; } +.Hui-iconfont-shenhe-butongguo2:before { content: "\e6dd"; } +.Hui-iconfont-share-qq:before { content: "\e67b"; } +.Hui-iconfont-upload:before { content: "\e642"; } +.Hui-iconfont-add2:before { content: "\e604"; } +.Hui-iconfont-jiesuo:before { content: "\e605"; } +.Hui-iconfont-zhongtumoshi:before { content: "\e68c"; } +.Hui-iconfont-datumoshi:before { content: "\e68d"; } +.Hui-iconfont-face2:before { content: "\e68e"; } +.Hui-iconfont-huanyipi:before { content: "\e68f"; } +.Hui-iconfont-shijian:before { content: "\e690"; } +.Hui-iconfont-feedback:before { content: "\e691"; } +.Hui-iconfont-feedback2:before { content: "\e692"; } +.Hui-iconfont-share-pengyouquan:before { content: "\e693"; } +.Hui-iconfont-zan2:before { content: "\e697"; } +.Hui-iconfont-arrow3-bottom:before { content: "\e698"; } +.Hui-iconfont-arrow3-top:before { content: "\e699"; } +.Hui-iconfont-arrow3-right:before { content: "\e69a"; } +.Hui-iconfont-arrow3-left:before { content: "\e69b"; } +.Hui-iconfont-more2:before { content: "\e69c"; } +.Hui-iconfont-cang2-selected:before { content: "\e69d"; } +.Hui-iconfont-cang2:before { content: "\e69e"; } +.Hui-iconfont-dangan:before { content: "\e639"; } +.Hui-iconfont-money:before { content: "\e63a"; } +.Hui-iconfont-share-weibo:before { content: "\e6da"; } +.Hui-iconfont-email:before { content: "\e63b"; } +.Hui-iconfont-tongji-xian:before { content: "\e61c"; } +.Hui-iconfont-bank:before { content: "\e628"; } +.Hui-iconfont-home:before { content: "\e625"; } +.Hui-iconfont-user:before { content: "\e62c"; } +.Hui-iconfont-log:before { content: "\e623"; } +.Hui-iconfont-pages:before { content: "\e626"; } +.Hui-iconfont-sim:before { content: "\e629"; } +.Hui-iconfont-dengdai:before { content: "\e606"; } +.Hui-iconfont-user-add:before { content: "\e607"; } +.Hui-iconfont-file:before { content: "\e63e"; } +.Hui-iconfont-share-douban:before { content: "\e67c"; } +.Hui-iconfont-share-zhihu:before { content: "\e689"; } +.Hui-iconfont-daochu:before { content: "\e644"; } +.Hui-iconfont-daoru:before { content: "\e645"; } +.Hui-iconfont-weigouxuan2:before { content: "\e608"; } +.Hui-iconfont-phone:before { content: "\e696"; } +.Hui-iconfont-manage2:before { content: "\e63c"; } +.Hui-iconfont-edit:before { content: "\e6df"; } +.Hui-iconfont-del2:before { content: "\e609"; } +.Hui-iconfont-avatar:before { content: "\e60a"; } +.Hui-iconfont-del:before { content: "\e60b"; } +.Hui-iconfont-edit1:before { content: "\e60c"; } +.Hui-iconfont-apple:before { content: "\e64a"; } +.Hui-iconfont-xiajia:before { content: "\e6de"; } +.Hui-iconfont-manage:before { content: "\e61d"; } +.Hui-iconfont-user2:before { content: "\e60d"; } +.Hui-iconfont-share-qzone:before { content: "\e6c8"; } +.Hui-iconfont-suoding:before { content: "\e60e"; } +.Hui-iconfont-tel2:before { content: "\e6a3"; } +.Hui-iconfont-order:before { content: "\e627"; } +.Hui-iconfont-shujutongji:before { content: "\e61e"; } +.Hui-iconfont-del3:before { content: "\e6e2"; } +.Hui-iconfont-add3:before { content: "\e610"; } +.Hui-iconfont-add4:before { content: "\e61f"; } +.Hui-iconfont-key:before { content: "\e63f"; } +.Hui-iconfont-yuyin2:before { content: "\e6a4"; } +.Hui-iconfont-yuyin:before { content: "\e6a5"; } +.Hui-iconfont-close:before { content: "\e6a6"; } +.Hui-iconfont-xuanze:before { content: "\e6a7"; } +.Hui-iconfont-xuanzhong1:before { content: "\e6a8"; } +.Hui-iconfont-yiguanzhu1:before { content: "\e6a9"; } +.Hui-iconfont-share:before { content: "\e6aa"; } +.Hui-iconfont-zhuanfa:before { content: "\e6ab"; } +.Hui-iconfont-tianqi-duoyun:before { content: "\e6ac"; } +.Hui-iconfont-tianqi-mai:before { content: "\e6ad"; } +.Hui-iconfont-tianqi-qing:before { content: "\e6ae"; } +.Hui-iconfont-tianqi-wu:before { content: "\e6af"; } +.Hui-iconfont-tianqi-xue:before { content: "\e6b0"; } +.Hui-iconfont-tianqi-yin:before { content: "\e6b1"; } +.Hui-iconfont-tianqi-yu:before { content: "\e6b2"; } +.Hui-iconfont-daipingjia:before { content: "\e6b3"; } +.Hui-iconfont-vip-card2:before { content: "\e6b4"; } +.Hui-iconfont-jifen:before { content: "\e6b5"; } +.Hui-iconfont-youhuiquan:before { content: "\e6b6"; } +.Hui-iconfont-hongbao:before { content: "\e6b7"; } +.Hui-iconfont-cart-selected:before { content: "\e6b8"; } +.Hui-iconfont-cart-kong:before { content: "\e6b9"; } +.Hui-iconfont-jiangjia:before { content: "\e6ba"; } +.Hui-iconfont-liwu:before { content: "\e6bb"; } +.Hui-iconfont-caiqie:before { content: "\e6bc"; } +.Hui-iconfont-xuanzhuan:before { content: "\e6bd"; } +.Hui-iconfont-bigpic:before { content: "\e6be"; } +.Hui-iconfont-list:before { content: "\e6bf"; } +.Hui-iconfont-middle:before { content: "\e6c0"; } +.Hui-iconfont-hot:before { content: "\e6c1"; } +.Hui-iconfont-paishe:before { content: "\e6c2"; } +.Hui-iconfont-hot1:before { content: "\e6c3"; } +.Hui-iconfont-new:before { content: "\e6c4"; } +.Hui-iconfont-xiaoxi1:before { content: "\e6c5"; } +.Hui-iconfont-canshu:before { content: "\e6c6"; } +.Hui-iconfont-tel:before { content: "\e6c7"; } +.Hui-iconfont-dingwei:before { content: "\e6c9"; } +.Hui-iconfont-hongbao2:before { content: "\e6ca"; } +.Hui-iconfont-2code:before { content: "\e6cb"; } +.Hui-iconfont-vip:before { content: "\e6cc"; } +.Hui-iconfont-tishi:before { content: "\e6cd"; } +.Hui-iconfont-dingyue:before { content: "\e6ce"; } +.Hui-iconfont-yulan:before { content: "\e695"; } +.Hui-iconfont-usergroup2:before { content: "\e611"; } +.Hui-iconfont-goods:before { content: "\e620"; } +.Hui-iconfont-paixingbang:before { content: "\e6cf"; } +.Hui-iconfont-kefu:before { content: "\e6d0"; } +.Hui-iconfont-picture1:before { content: "\e612"; } +.Hui-iconfont-weigouxuan:before { content: "\e614"; } +.Hui-iconfont-shenhe-weitongguo:before { content: "\e6e0"; } +.Hui-iconfont-shenhe-tongguo:before { content: "\e6e1"; } +.Hui-iconfont-tongji-bing:before { content: "\e621"; } +.Hui-iconfont-gouxuan:before { content: "\e615"; } diff --git a/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/iconfont.eot b/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/iconfont.eot new file mode 100644 index 0000000..c0e05e3 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/iconfont.eot differ diff --git a/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/iconfont.svg b/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/iconfont.svg new file mode 100644 index 0000000..9a8a606 --- /dev/null +++ b/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/iconfont.svg @@ -0,0 +1,985 @@ + + + + +Created by FontForge 20120731 at Thu Aug 6 17:16:23 2015 + By Ads + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/iconfont.ttf b/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/iconfont.ttf new file mode 100644 index 0000000..64b7bf0 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/iconfont.ttf differ diff --git a/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/iconfont.woff b/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/iconfont.woff new file mode 100644 index 0000000..e9c8ae9 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/Hui-iconfont/1.0.1/iconfont.woff differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/aero.png b/SMMS/WebContent/static/h-ui/lib/icheck/aero.png new file mode 100644 index 0000000..dccf774 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/aero.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/aero@2x.png b/SMMS/WebContent/static/h-ui/lib/icheck/aero@2x.png new file mode 100644 index 0000000..5537ee3 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/aero@2x.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/blue.png b/SMMS/WebContent/static/h-ui/lib/icheck/blue.png new file mode 100644 index 0000000..af04cee Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/blue.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/blue@2x.png b/SMMS/WebContent/static/h-ui/lib/icheck/blue@2x.png new file mode 100644 index 0000000..f19210a Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/blue@2x.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/green.png b/SMMS/WebContent/static/h-ui/lib/icheck/green.png new file mode 100644 index 0000000..9171ebc Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/green.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/green@2x.png b/SMMS/WebContent/static/h-ui/lib/icheck/green@2x.png new file mode 100644 index 0000000..7f18f96 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/green@2x.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/grey.png b/SMMS/WebContent/static/h-ui/lib/icheck/grey.png new file mode 100644 index 0000000..22dcdbc Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/grey.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/grey@2x.png b/SMMS/WebContent/static/h-ui/lib/icheck/grey@2x.png new file mode 100644 index 0000000..85e82dd Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/grey@2x.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/icheck.css b/SMMS/WebContent/static/h-ui/lib/icheck/icheck.css new file mode 100644 index 0000000..7b22c41 --- /dev/null +++ b/SMMS/WebContent/static/h-ui/lib/icheck/icheck.css @@ -0,0 +1,182 @@ +/* iCheck.js Minimal skin +----------------------------------- */ +.icheckbox,.iradio{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(minimal.png) no-repeat;border: none;cursor: pointer} +.icheckbox,.icheckbox.static:hover{background-position: 0 0} +.icheckbox.hover,.icheckbox:hover{background-position: -20px 0} +.icheckbox.checked{background-position: -40px 0} +.icheckbox.disabled{background-position: -60px 0;cursor: default} +.icheckbox.checked.disabled{background-position: -80px 0} +.iradio,.iradio.static:hover{background-position: -100px 0} +.iradio.hover,.iradio:hover{background-position: -120px 0} +.iradio.checked{background-position: -140px 0} +.iradio.disabled{background-position: -160px 0;cursor: default} +.iradio.checked.disabled{background-position: -180px 0} + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox,.iradio{background-image: url(minimal@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px} +} +/* red */ +.icheckbox-red,.iradio-red{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(red.png) no-repeat;border: none;cursor: pointer} +.icheckbox-red,.icheckbox-red.static:hover{background-position: 0 0} +.icheckbox-red.hover,.icheckbox-red:hover{background-position: -20px 0} +.icheckbox-red.checked{background-position: -40px 0} +.icheckbox-red.disabled{background-position: -60px 0;cursor: default} +.icheckbox-red.checked.disabled{background-position: -80px 0} +.iradio-red,.iradio-red.static:hover{background-position: -100px 0} +.iradio-red.hover,.iradio-red:hover{background-position: -120px 0} +.iradio-red.checked{background-position: -140px 0} +.iradio-red.disabled{background-position: -160px 0;cursor: default} +.iradio-red.checked.disabled{background-position: -180px 0} + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-red,.iradio-red{background-image: url(red@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px} +} +/* green */ +.icheckbox-green,.iradio-green{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(green.png) no-repeat;border: none;cursor: pointer} +.icheckbox-green,.icheckbox-green.static:hover{background-position: 0 0} +.icheckbox-green.hover,.icheckbox-green:hover{background-position: -20px 0} +.icheckbox-green.checked{background-position: -40px 0} +.icheckbox-green.disabled{background-position: -60px 0;cursor: default} +.icheckbox-green.checked.disabled{background-position: -80px 0} +.iradio-green,.iradio-green.static:hover{background-position: -100px 0} +.iradio-green.hover,.iradio-green:hover{background-position: -120px 0} +.iradio-green.checked{background-position: -140px 0} +.iradio-green.disabled{background-position: -160px 0;cursor: default} +.iradio-green.checked.disabled{background-position: -180px 0} + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-green,.iradio-green{background-image: url(green@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px} +} +/* blue */ +.icheckbox-blue,.iradio-blue{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(blue.png) no-repeat;border: none;cursor: pointer} +.icheckbox-blue,.icheckbox-blue.static:hover{background-position: 0 0} +.icheckbox-blue.hover,.icheckbox-blue:hover{background-position: -20px 0} +.icheckbox-blue.checked{background-position: -40px 0} +.icheckbox-blue.disabled{background-position: -60px 0;cursor: default} +.icheckbox-blue.checked.disabled{background-position: -80px 0} +.iradio-blue,.iradio-blue.static:hover{background-position: -100px 0} +.iradio-blue.hover,.iradio-blue:hover{background-position: -120px 0} +.iradio-blue.checked{background-position: -140px 0} +.iradio-blue.disabled{background-position: -160px 0;cursor: default} +.iradio-blue.checked.disabled{background-position: -180px 0} + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-blue,.iradio-blue{background-image: url(blue@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px} +} +/* aero */ +.icheckbox-aero,.iradio-aero{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(aero.png) no-repeat;border: none;cursor: pointer} +.icheckbox-aero,.icheckbox-aero.static:hover{background-position: 0 0} +.icheckbox-aero.hover,.icheckbox-aero:hover{background-position: -20px 0} +.icheckbox-aero.checked{background-position: -40px 0} +.icheckbox-aero.disabled{background-position: -60px 0;cursor: default} +.icheckbox-aero.checked.disabled{background-position: -80px 0} +.iradio-aero,.iradio-aero.static:hover{background-position: -100px 0} +.iradio-aero.hover,.iradio-aero:hover{background-position: -120px 0} +.iradio-aero.checked{background-position: -140px 0} +.iradio-aero.disabled{background-position: -160px 0;cursor: default} +.iradio-aero.checked.disabled{background-position: -180px 0} + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-aero,.iradio-aero{background-image: url(aero@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px} +} +/* grey */ +.icheckbox-grey,.iradio-grey{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(grey.png) no-repeat;border: none;cursor: pointer} +.icheckbox-grey,.icheckbox-grey.static:hover{background-position: 0 0} +.icheckbox-grey.hover,.icheckbox-grey:hover{background-position: -20px 0} +.icheckbox-grey.checked{background-position: -40px 0} +.icheckbox-grey.disabled{background-position: -60px 0;cursor: default} +.icheckbox-grey.checked.disabled{background-position: -80px 0} +.iradio-grey,.iradio-grey.static:hover{background-position: -100px 0} +.iradio-grey.hover,.iradio-grey:hover{background-position: -120px 0} +.iradio-grey.checked{background-position: -140px 0} +.iradio-grey.disabled{background-position: -160px 0;cursor: default} +.iradio-grey.checked.disabled{background-position: -180px 0} + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-grey,.iradio-grey{background-image: url(grey@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px} +} +/* orange */ +.icheckbox-orange,.iradio-orange{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(orange.png) no-repeat;border: none;cursor: pointer} +.icheckbox-orange,.icheckbox-orange.static:hover{background-position: 0 0} +.icheckbox-orange.hover,.icheckbox-orange:hover{background-position: -20px 0} +.icheckbox-orange.checked{background-position: -40px 0} +.icheckbox-orange.disabled{background-position: -60px 0;cursor: default} +.icheckbox-orange.checked.disabled{background-position: -80px 0} +.iradio-orange,.iradio-orange.static:hover{background-position: -100px 0} +.iradio-orange.hover,.iradio-orange:hover{background-position: -120px 0} +.iradio-orange.checked{background-position: -140px 0} +.iradio-orange.disabled{background-position: -160px 0;cursor: default} +.iradio-orange.checked.disabled{background-position: -180px 0} + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-orange,.iradio-orange{background-image: url(orange@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px} +} +/* yellow */ +.icheckbox-yellow,.iradio-yellow{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(yellow.png) no-repeat;border: none;cursor: pointer} +.icheckbox-yellow,.icheckbox-yellow.static:hover{background-position: 0 0} +.icheckbox-yellow.hover,.icheckbox-yellow:hover{background-position: -20px 0} +.icheckbox-yellow.checked{background-position: -40px 0} +.icheckbox-yellow.disabled{background-position: -60px 0;cursor: default} +.icheckbox-yellow.checked.disabled{background-position: -80px 0} +.iradio-yellow,.iradio-yellow.static:hover{background-position: -100px 0} +.iradio-yellow.hover,.iradio-yellow:hover{background-position: -120px 0} +.iradio-yellow.checked{background-position: -140px 0} +.iradio-yellow.disabled{background-position: -160px 0;cursor: default} +.iradio-yellow.checked.disabled{background-position: -180px 0} + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-yellow,.iradio-yellow{background-image: url(yellow@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px} +} +/* pink */ +.icheckbox-pink,.iradio-pink{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(pink.png) no-repeat;border: none;cursor: pointer} +.icheckbox-pink,.icheckbox-pink.static:hover{background-position: 0 0} +.icheckbox-pink.hover,.icheckbox-pink:hover{background-position: -20px 0} +.icheckbox-pink.checked{background-position: -40px 0} +.icheckbox-pink.disabled{background-position: -60px 0;cursor: default} +.icheckbox-pink.checked.disabled{background-position: -80px 0} +.iradio-pink,.iradio-pink.static:hover{background-position: -100px 0} +.iradio-pink.hover,.iradio-pink:hover{background-position: -120px 0} +.iradio-pink.checked{background-position: -140px 0} +.iradio-pink.disabled{background-position: -160px 0;cursor: default} +.iradio-pink.checked.disabled{background-position: -180px 0} + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-pink,.iradio-pink{background-image: url(pink@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px} +} +/* purple */ +.icheckbox-purple,.iradio-purple{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(purple.png) no-repeat;border: none;cursor: pointer} +.icheckbox-purple,.icheckbox-purple.static:hover{background-position: 0 0} +.icheckbox-purple.hover,.icheckbox-purple:hover{background-position: -20px 0} +.icheckbox-purple.checked{background-position: -40px 0} +.icheckbox-purple.disabled{background-position: -60px 0;cursor: default} +.icheckbox-purple.checked.disabled{background-position: -80px 0} +.iradio-purple,.iradio-purple.static:hover{background-position: -100px 0} +.iradio-purple.hover,.iradio-purple:hover{background-position: -120px 0} +.iradio-purple.checked{background-position: -140px 0} +.iradio-purple.disabled{background-position: -160px 0;cursor: default} +.iradio-purple.checked.disabled{background-position: -180px 0} + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5){.icheckbox-purple,.iradio-purple{background-image: url(purple@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px} +} + diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/jquery.icheck.min.js b/SMMS/WebContent/static/h-ui/lib/icheck/jquery.icheck.min.js new file mode 100644 index 0000000..e69610d --- /dev/null +++ b/SMMS/WebContent/static/h-ui/lib/icheck/jquery.icheck.min.js @@ -0,0 +1,9 @@ +// iCheck v0.7, http://git.io/uhUPMA +(function(b){function m(a,b,d,c){var e=a[0],l=a.parent(),j=/disable|enable/.test(d)?"disabled":"checked",f="update"==d?{checked:e.checked,disabled:e.disabled}:e[j];if(/^check|disable/.test(d)&&!f)n(a,!0,l,j);else if(/uncheck|enable/.test(d)&&f)p(a,!0,l,j);else if("update"==d)for(j in f)f[j]?n(a,!1,l,j,c):p(a,!1,l,j,c);else b||(!0==d&&!e.disabled&&a.trigger("is.Clicked"),f?n(a,!0,l,j):p(a,!0,l,j))}function n(a,k,d,c,e){k&&(a[0][c]=!0);!0!==d.data(c)&&("checked"==c&&("radio"==a[0].type&&a[0].name)&& +b("input[name="+a[0].name+"]").each(function(){this!==a[0]&&b(this).data("icheck")&&p(b(this),!0,b(this).parent(),c)}),(k||e)&&a.trigger("is.Changed"),k&&a.trigger("is."+c.replace("di","Di").replace("ch","Ch")),d.data(c,!0).addClass(r(a,c)))}function p(a,b,d,c,e){var l="disabled"==c?"Enabled":"Unchecked";b&&(a[0][c]=!1);!1!==d.data(c)&&((b||e)&&a.trigger("is.Changed"),b&&a.trigger("is."+l),d.data(c,!1).removeClass(r(a,c)))}function u(a,k){if(a.data("icheck")){var d=a[0].id,c=b("label[for="+d+"]"); +a.parent().html(a.attr("style",a.data("icheck").style||"").trigger(k||""));a.removeData("icheck").unbind(".df").unwrap();d&&c.length&&c.unbind(".df")}}function r(a,b){if(a.data("icheck"))return a.data("icheck").options[b+"Class"]}b.fn.iCheck=function(a){if(/^(check|uncheck|disable|enable|update|destroy)$/.test(a))return this.each(function(){/destroy/.test(a)?u(b(this),"is.Destroyed"):m(b(this),!0,a)});if("object"==typeof a||!a){var k=navigator.userAgent,d=b.extend({},{checkboxClass:"icheckbox",radioClass:"iradio", +checkedClass:"checked",disabledClass:"disabled",hoverClass:"hover",focusClass:"focus",activeClass:"active",labelHover:!0,labelHoverClass:"hover"},a),c=/^(checkbox|radio)$/.test(d.handle)?":"+d.handle:":checkbox, :radio",e=(""+d.increaseArea).replace("%","")|0;-50>e&&(e=-50);return this.each(function(){(b(this).is(c)?b(this):b(this).find(c)).each(function(){u(b(this));var a=this,c=a.id,f={position:"absolute",top:-e+"%",left:-e+"%",display:"block",width:100+2*e+"%",height:100+2*e+"%",margin:0,padding:0, +background:"#fff",border:0,opacity:0},r=/ipad|iphone|ipod|android|blackberry|windows phone|opera mini/i.test(k)?{position:"absolute",visibility:"hidden"}:e|0?f:{position:"absolute",opacity:0},w="checkbox"==a.type?d.checkboxClass:d.radioClass,h=b(this).data("icheck",{style:b(this).attr("style"),options:d}).css(r),q=b("label[for="+c+"]"),g=h.wrap('
          ').trigger("is.Created").parent().append(d.insert),f=b("").css(f).appendTo(g).click(function(){h.click();m(h,!1,!0)}),s=d.hoverClass, +t=d.labelHoverClass,v;!0==d.cursor&&f.css("cursor","pointer");!0==d.inheritClass&&g.addClass(a.className);!0==d.inheritID&&c&&g.attr("id","icheck-"+c);"static"==g.css("position")&&g.css("position","relative");m(h,!0,"update");c&&q.length&&q.bind("click.df mouseenter.df mouseleave.df touchbegin.df touchend.df",function(c){var e=c.type,f=b(this);"click"==e?(c.preventDefault(),h.click(),m(h,!1,!0)):!0==d.labelHover&&!a.disabled&&(/mouseenter|touchbegin/.test(e)?(g.addClass(s),f.addClass(t)):(g.removeClass(s), +f.removeClass(t)))});h.bind("focus.df blur.df keyup.df keydown.df keypress.df",function(c){var b=c.type,e=c.keyCode||c.charCode||c.which;c=/MSIE [5-8]/.test(k)?"keyup"==b&&"keypress"!==v:"keyup"==b;e="keypress"==b&&32==e;/focus|blur/.test(b)?"focus"==b?g.addClass(d.focusClass):g.removeClass(d.focusClass):"radio"==a.type?(c?m(h,!0,"update",!0):e&&!a.checked&&n(h,!1,g,"checked",!0),v=b):"checkbox"==a.type&&e&&(a.checked?p(h,!1,g,"checked",!0):n(h,!1,g,"checked",!0))});f.bind("mousedown mouseup mouseout mouseenter mouseleave touchbegin touchend", +function(b){b=b.type;var e=/mousedown|mouseup|mouseout/.test(b)?d.activeClass:s;a.disabled||(/mousedown|mouseenter|touchbegin/.test(b)?g.addClass(e):g.removeClass(e),c&&(q.length&&!0==d.labelHover&&e==s)&&(/mouseleave|touchend/.test(b)?q.removeClass(t):q.addClass(t)))})})})}return this}})(jQuery); \ No newline at end of file diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/minimal.png b/SMMS/WebContent/static/h-ui/lib/icheck/minimal.png new file mode 100644 index 0000000..943be16 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/minimal.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/minimal@2x.png b/SMMS/WebContent/static/h-ui/lib/icheck/minimal@2x.png new file mode 100644 index 0000000..d62291d Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/minimal@2x.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/orange.png b/SMMS/WebContent/static/h-ui/lib/icheck/orange.png new file mode 100644 index 0000000..f2a3149 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/orange.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/orange@2x.png b/SMMS/WebContent/static/h-ui/lib/icheck/orange@2x.png new file mode 100644 index 0000000..68c8359 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/orange@2x.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/pink.png b/SMMS/WebContent/static/h-ui/lib/icheck/pink.png new file mode 100644 index 0000000..660553c Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/pink.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/pink@2x.png b/SMMS/WebContent/static/h-ui/lib/icheck/pink@2x.png new file mode 100644 index 0000000..7d7b385 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/pink@2x.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/purple.png b/SMMS/WebContent/static/h-ui/lib/icheck/purple.png new file mode 100644 index 0000000..48dec79 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/purple.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/purple@2x.png b/SMMS/WebContent/static/h-ui/lib/icheck/purple@2x.png new file mode 100644 index 0000000..3bb7041 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/purple@2x.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/red.png b/SMMS/WebContent/static/h-ui/lib/icheck/red.png new file mode 100644 index 0000000..4443f80 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/red.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/red@2x.png b/SMMS/WebContent/static/h-ui/lib/icheck/red@2x.png new file mode 100644 index 0000000..2eb55a6 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/red@2x.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/yellow.png b/SMMS/WebContent/static/h-ui/lib/icheck/yellow.png new file mode 100644 index 0000000..0999b7e Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/yellow.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/icheck/yellow@2x.png b/SMMS/WebContent/static/h-ui/lib/icheck/yellow@2x.png new file mode 100644 index 0000000..c16f2b7 Binary files /dev/null and b/SMMS/WebContent/static/h-ui/lib/icheck/yellow@2x.png differ diff --git a/SMMS/WebContent/static/h-ui/lib/jquery/1.9.1/jquery.js b/SMMS/WebContent/static/h-ui/lib/jquery/1.9.1/jquery.js new file mode 100644 index 0000000..e2c203f --- /dev/null +++ b/SMMS/WebContent/static/h-ui/lib/jquery/1.9.1/jquery.js @@ -0,0 +1,9597 @@ +/*! + * jQuery JavaScript Library v1.9.1 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-2-4 + */ +(function( window, undefined ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +//"use strict"; +var + // The deferred used on DOM ready + readyList, + + // A central reference to the root jQuery(document) + rootjQuery, + + // Support: IE<9 + // For `typeof node.method` instead of `node.method !== undefined` + core_strundefined = typeof undefined, + + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + location = window.location, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // [[Class]] -> type pairs + class2type = {}, + + // List of deleted data cache ids, so we can reuse them + core_deletedIds = [], + + core_version = "1.9.1", + + // Save a reference to some core methods + core_concat = core_deletedIds.concat, + core_push = core_deletedIds.push, + core_slice = core_deletedIds.slice, + core_indexOf = core_deletedIds.indexOf, + core_toString = class2type.toString, + core_hasOwn = class2type.hasOwnProperty, + core_trim = core_version.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + + // Used for splitting on whitespace + core_rnotwhite = /\S+/g, + + // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // The ready event handler + completed = function( event ) { + + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } + }, + // Clean-up method for dom ready events + detach = function() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: core_version, + + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return core_slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + if ( obj == null ) { + return String( obj ); + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ core_toString.call(obj) ] || "object" : + typeof obj; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // keepScripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, keepScripts ) { + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + context = context || document; + + var parsed = rsingleTag.exec( data ), + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ); + if ( scripts ) { + jQuery( scripts ).remove(); + } + return jQuery.merge( [], parsed.childNodes ); + }, + + parseJSON: function( data ) { + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + if ( data === null ) { + return data; + } + + if ( typeof data === "string" ) { + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + if ( data ) { + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + } + } + } + + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + core_push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return core_concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: function() { + return ( new Date() ).getTime(); + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || type !== "function" && + ( length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj ); +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( list && ( !fired || stack ) ) { + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function() { + + var support, all, a, + input, select, fragment, + opt, eventName, isSupported, i, + div = document.createElement("div"); + + // Setup + div.setAttribute( "className", "t" ); + div.innerHTML = "
          a"; + + // Support tests won't run in some limited or non-browser environments + all = div.getElementsByTagName("*"); + a = div.getElementsByTagName("a")[ 0 ]; + if ( !all || !a || !all.length ) { + return {}; + } + + // First batch of tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + a.style.cssText = "top:1px;float:left;opacity:.5"; + support = { + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: div.firstChild.nodeType === 3, + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: a.getAttribute("href") === "/a", + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.5/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) + checkOn: !!input.value, + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Tests for enctype support on a form (#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode + boxModel: document.compatMode === "CSS1Compat", + + // Will be defined later + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true, + boxSizingReliable: true, + pixelPosition: false + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Support: IE<9 + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + // Check if we can trust getAttribute("value") + input = document.createElement("input"); + input.setAttribute( "value", "" ); + support.input = input.getAttribute( "value" ) === ""; + + // Check if an input maintains its value after becoming a radio + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "checked", "t" ); + input.setAttribute( "name", "t" ); + + fragment = document.createDocumentFragment(); + fragment.appendChild( input ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event) + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP), test/csp.php + for ( i in { submit: true, change: true, focusin: true }) { + div.setAttribute( eventName = "on" + i, "t" ); + + support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false; + } + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, marginDiv, tds, + divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; + + body.appendChild( container ).appendChild( div ); + + // Support: IE8 + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + div.innerHTML = "
          t
          "; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Support: IE8 + // Check if empty table cells still have offsetWidth/Height + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + support.boxSizing = ( div.offsetWidth === 4 ); + support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 ); + + // Use window.getComputedStyle because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. (#3333) + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = div.appendChild( document.createElement("div") ); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + if ( typeof div.style.zoom !== core_strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Support: IE6 + // Check if elements with layout shrink-wrap their children + div.style.display = "block"; + div.innerHTML = "
          "; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + if ( support.inlineBlockNeedsLayout ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); + + // Null elements to avoid leaks in IE + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + all = select = fragment = opt = a = input = null; + + return support; +})(); + +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +function internalData( elem, name, data, pvt /* Internal Use Only */ ){ + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = core_deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var i, l, thisCache, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + // Do not set data on non-element because it will not be cleared (#8335). + if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) { + return false; + } + + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var attrs, name, + elem = this[0], + i = 0, + data = null; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attrs = elem.attributes; + for ( ; i < attrs.length; i++ ) { + name = attrs[i].name; + + if ( !name.indexOf( "data-" ) ) { + name = jQuery.camelCase( name.slice(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return jQuery.access( this, function( value ) { + + if ( value === undefined ) { + // Try to fetch any internally stored data first + return elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null; + } + + this.each(function() { + jQuery.data( this, key, value ); + }); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + hooks.cur = fn; + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, + rclass = /[\t\r\n]/g, + rreturn = /\r/g, + rfocusable = /^(?:input|select|textarea|button|object)$/i, + rclickable = /^(?:a|area)$/i, + rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i, + ruseDefault = /^(?:checked|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + getSetInput = jQuery.support.input; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call( this, j, this.className ) ); + }); + } + + if ( proceed ) { + // The disjunction here is for better compressibility (see removeClass) + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + " " + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + elem.className = jQuery.trim( cur ); + + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = arguments.length === 0 || typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call( this, j, this.className ) ); + }); + } + if ( proceed ) { + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + "" + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + elem.className = value ? jQuery.trim( cur ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.match( core_rnotwhite ) || []; + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + // Toggle whole class name + } else if ( type === core_strundefined || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // If the element has a class name or if we're passed "false", + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var ret, hooks, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val, + self = jQuery(this); + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // oldIE doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + // Don't return options that are disabled or in a disabled optgroup + ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && + ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attr: function( elem, name, value ) { + var hooks, notxml, ret, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === core_strundefined ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + + } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + // In IE9+, Flash objects don't have .getAttribute (#12945) + // Support: IE9+ + if ( typeof elem.getAttribute !== core_strundefined ) { + ret = elem.getAttribute( name ); + } + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var name, propName, + i = 0, + attrNames = value && value.match( core_rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( (name = attrNames[i++]) ) { + propName = jQuery.propFix[ name ] || name; + + // Boolean attributes get special treatment (#10870) + if ( rboolean.test( name ) ) { + // Set corresponding property to false for boolean attributes + // Also clear defaultChecked/defaultSelected (if appropriate) for IE<8 + if ( !getSetAttribute && ruseDefault.test( name ) ) { + elem[ jQuery.camelCase( "default-" + name ) ] = + elem[ propName ] = false; + } else { + elem[ propName ] = false; + } + + // See #9699 for explanation of this approach (setting first, then removal) + } else { + jQuery.attr( elem, name, "" ); + } + + elem.removeAttribute( getSetAttribute ? name : propName ); + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to default in case type is set after value during creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + var + // Use .prop to determine if this attribute is understood as boolean + prop = jQuery.prop( elem, name ), + + // Fetch it accordingly + attr = typeof prop === "boolean" && elem.getAttribute( name ), + detail = typeof prop === "boolean" ? + + getSetInput && getSetAttribute ? + attr != null : + // oldIE fabricates an empty string for missing boolean attributes + // and conflates checked/selected into attroperties + ruseDefault.test( name ) ? + elem[ jQuery.camelCase( "default-" + name ) ] : + !!attr : + + // fetch an attribute node for properties not recognized as boolean + elem.getAttributeNode( name ); + + return detail && detail.value !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + // IE<8 needs the *property* name + elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); + + // Use defaultChecked and defaultSelected for oldIE + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; + } + + return name; + } +}; + +// fix oldIE value attroperty +if ( !getSetInput || !getSetAttribute ) { + jQuery.attrHooks.value = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return jQuery.nodeName( elem, "input" ) ? + + // Ignore the value *property* by using defaultValue + elem.defaultValue : + + ret && ret.specified ? ret.value : undefined; + }, + set: function( elem, value, name ) { + if ( jQuery.nodeName( elem, "input" ) ) { + // Does not return so that setAttribute is also used + elem.defaultValue = value; + } else { + // Use nodeHook if defined (#1954); otherwise setAttribute is fine + return nodeHook && nodeHook.set( elem, value, name ); + } + } + }; +} + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return ret && ( name === "id" || name === "name" || name === "coords" ? ret.value !== "" : ret.specified ) ? + ret.value : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + elem.setAttributeNode( + (ret = elem.ownerDocument.createAttribute( name )) + ); + } + + ret.value = value += ""; + + // Break association with cloned elements by also using setAttribute (#9646) + return name === "value" || value === elem.getAttribute( name ) ? + value : + undefined; + } + }; + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + nodeHook.set( elem, value === "" ? false : value, name ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); +} + + +// Some attributes require a special call on IE +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret == null ? undefined : ret; + } + }); + }); + + // href/src property should get the full normalized URL (#10299/#12915) + jQuery.each([ "href", "src" ], function( i, name ) { + jQuery.propHooks[ name ] = { + get: function( elem ) { + return elem.getAttribute( name, 4 ); + } + }; + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Note: IE uppercases css property names, but if we were to .toLowerCase() + // .cssText, that would destroy case senstitivity in URL's, like in "background" + return elem.style.cssText || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = core_hasOwn.call( event, "type" ) ? event.type : event, + namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + event.isTrigger = true; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = core_slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + for ( ; cur != this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + } + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== document.activeElement && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === document.activeElement && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + + beforeunload: { + postDispatch: function( event ) { + + // Even when returnValue equals to undefined Firefox will still show alert + if ( event.result !== undefined ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === core_strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license + * http://sizzlejs.com/ + */ +(function( window, undefined ) { + +var i, + cachedruns, + Expr, + getText, + isXML, + compile, + hasDuplicate, + outermostContext, + + // Local document vars + setDocument, + document, + docElem, + documentIsXML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + sortOrder, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + support = {}, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Array methods + arr = [], + pop = arr.pop, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + operators = "([*^$|!~]?=)", + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments quoted, + // then not containing pseudos/brackets, + // then attribute selectors/non-parenthetical expressions, + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ), + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rsibling = /[\x20\t\r\n\f]*[+~]/, + + rnative = /^[^{]+\{\s*\[native code/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rescape = /'|\\/g, + rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g, + funescape = function( _, escaped ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + return high !== high ? + escaped : + // BMP codepoint + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Use a stripped-down slice if we can't use a native one +try { + slice.call( preferredDoc.documentElement.childNodes, 0 )[0].nodeType; +} catch ( e ) { + slice = function( i ) { + var elem, + results = []; + while ( (elem = this[i++]) ) { + results.push( elem ); + } + return results; + }; +} + +/** + * For feature detection + * @param {Function} fn The function to test for native support + */ +function isNative( fn ) { + return rnative.test( fn + "" ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var cache, + keys = []; + + return (cache = function( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key += " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key ] = value); + }); +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return fn( div ); + } catch (e) { + return false; + } finally { + // release memory in IE + div = null; + } +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( !documentIsXML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getByClassName && context.getElementsByClassName ) { + push.apply( results, slice.call(context.getElementsByClassName( m ), 0) ); + return results; + } + } + + // QSA path + if ( support.qsa && !rbuggyQSA.test(selector) ) { + old = true; + nid = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, slice.call( newContext.querySelectorAll( + newSelector + ), 0 ) ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Detect xml + * @param {Element|Object} elem An element or a document + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var doc = node ? node.ownerDocument || node : preferredDoc; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsXML = isXML( doc ); + + // Check if getElementsByTagName("*") returns only elements + support.tagNameNoComments = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if attributes should be retrieved by attribute nodes + support.attributes = assert(function( div ) { + div.innerHTML = ""; + var type = typeof div.lastChild.getAttribute("multiple"); + // IE8 returns a string for some attributes even when not present + return type !== "boolean" && type !== "string"; + }); + + // Check if getElementsByClassName can be trusted + support.getByClassName = assert(function( div ) { + // Opera can't find a second classname (in 9.6) + div.innerHTML = ""; + if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) { + return false; + } + + // Safari 3.2 caches class attributes and doesn't catch changes + div.lastChild.className = "e"; + return div.getElementsByClassName("e").length === 2; + }); + + // Check if getElementById returns elements by name + // Check if getElementsByName privileges form controls or returns elements by ID + support.getByName = assert(function( div ) { + // Inject content + div.id = expando + 0; + div.innerHTML = "
          "; + docElem.insertBefore( div, docElem.firstChild ); + + // Test + var pass = doc.getElementsByName && + // buggy browsers will return fewer than the correct 2 + doc.getElementsByName( expando ).length === 2 + + // buggy browsers will return more than the correct 0 + doc.getElementsByName( expando + 0 ).length; + support.getIdNotName = !doc.getElementById( expando ); + + // Cleanup + docElem.removeChild( div ); + + return pass; + }); + + // IE6/7 return modified attributes + Expr.attrHandle = assert(function( div ) { + div.innerHTML = ""; + return div.firstChild && typeof div.firstChild.getAttribute !== strundefined && + div.firstChild.getAttribute("href") === "#"; + }) ? + {} : + { + "href": function( elem ) { + return elem.getAttribute( "href", 2 ); + }, + "type": function( elem ) { + return elem.getAttribute("type"); + } + }; + + // ID find and filter + if ( support.getIdNotName ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && !documentIsXML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && !documentIsXML ) { + var m = context.getElementById( id ); + + return m ? + m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ? + [m] : + undefined : + []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.tagNameNoComments ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Name + Expr.find["NAME"] = support.getByName && function( tag, context ) { + if ( typeof context.getElementsByName !== strundefined ) { + return context.getElementsByName( name ); + } + }; + + // Class + Expr.find["CLASS"] = support.getByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && !documentIsXML ) { + return context.getElementsByClassName( className ); + } + }; + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21), + // no need to also add to buggyMatches since matches checks buggyQSA + // A support test would require too much code (would include document ready) + rbuggyQSA = [ ":focus" ]; + + if ( (support.qsa = isNative(doc.querySelectorAll)) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explictly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // IE8 - Some boolean attributes are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Opera 10-12/IE8 - ^= $= *= and empty values + // Should not select anything + div.innerHTML = ""; + if ( div.querySelectorAll("[i^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = isNative( (matches = docElem.matchesSelector || + docElem.mozMatchesSelector || + docElem.webkitMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = new RegExp( rbuggyMatches.join("|") ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = isNative(docElem.contains) || docElem.compareDocumentPosition ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + // Document order sorting + sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + var compare; + + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( (compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b )) ) { + if ( compare & 1 || a.parentNode && a.parentNode.nodeType === 11 ) { + if ( a === doc || contains( preferredDoc, a ) ) { + return -1; + } + if ( b === doc || contains( preferredDoc, b ) ) { + return 1; + } + return 0; + } + return compare & 4 ? -1 : 1; + } + + return a.compareDocumentPosition ? -1 : 1; + } : + function( a, b ) { + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Parentless nodes are either documents or disconnected + } else if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + // Always assume the presence of duplicates if sort doesn't + // pass them to our comparison function (as in Google Chrome). + hasDuplicate = false; + [0, 0].sort( sortOrder ); + support.detectDuplicates = hasDuplicate; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + // rbuggyQSA always contains :focus, so no need for an existence check + if ( support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr) ) { + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + var val; + + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + if ( !documentIsXML ) { + name = name.toLowerCase(); + } + if ( (val = Expr.attrHandle[ name ]) ) { + return val( elem ); + } + if ( documentIsXML || support.attributes ) { + return elem.getAttribute( name ); + } + return ( (val = elem.getAttributeNode( name )) || elem.getAttribute( name ) ) && elem[ name ] === true ? + name : + val && val.specified ? val.value : null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +// Document sorting and removing duplicates +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + i = 1, + j = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( ; (elem = results[i]); i++ ) { + if ( elem === results[ i - 1 ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +// Returns a function to use in pseudos for input types +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +// Returns a function to use in pseudos for buttons +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +// Returns a function to use in pseudos for positionals +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[4] ) { + match[2] = match[4]; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeName ) { + if ( nodeName === "*" ) { + return function() { return true; }; + } + + nodeName = nodeName.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifider + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsXML ? + elem.getAttribute("xml:lang") || elem.getAttribute("lang") : + elem.lang) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( tokens = [] ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push( { + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var data, cache, outerCache, + dirkey = dirruns + " " + doneName; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { + if ( (data = cache[1]) === true || data === cachedruns ) { + return data === true; + } + } else { + cache = outerCache[ dir ] = [ dirkey ]; + cache[1] = matcher( elem, context, xml ) || cachedruns; + if ( cache[1] === true ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + // A counter to specify which element is currently being matched + var matcherCachedRuns = 0, + bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = matcherCachedRuns; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++matcherCachedRuns; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + match = tokenize( selector ); + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && !documentIsXML && + Expr.relative[ tokens[1].type ] ) { + + context = Expr.find["ID"]( token.matches[0].replace( runescape, funescape ), context )[0]; + if ( !context ) { + return results; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && context.parentNode || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, slice.call( seed, 0 ) ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + documentIsXML, + results, + rsibling.test( selector ) + ); + return results; +} + +// Deprecated +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Easy API for creating new setFilters +function setFilters() {} +Expr.filters = setFilters.prototype = Expr.pseudos; +Expr.setFilters = new setFilters(); + +// Initialize with the default document +setDocument(); + +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +var runtil = /Until$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + isSimple = /^.[^:#\[\.,]*$/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var i, ret, self, + len = this.length; + + if ( typeof selector !== "string" ) { + self = this; + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + ret = []; + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, this[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = ( this.selector ? this.selector + " " : "" ) + selector; + return ret; + }, + + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false) ); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true) ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + rneedsContext.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + cur = this[i]; + + while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + } + cur = cur.parentNode; + } + } + + return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( jQuery.unique(all) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +jQuery.fn.andSelf = jQuery.fn.addBack; + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( this.length > 1 && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
          ", "
          " ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
          " ], + tr: [ 2, "", "
          " ], + col: [ 2, "", "
          " ], + td: [ 3, "", "
          " ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
          ", "
          " ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + wrapAll: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapAll( html.call(this, i) ); + }); + } + + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); + + if ( this[0].parentNode ) { + wrap.insertBefore( this[0] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function(i) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + }, + + append: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.insertBefore( elem, this.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, false, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, false, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + if ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) { + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function( value ) { + var isFunc = jQuery.isFunction( value ); + + // Make sure that the elements are removed from the DOM before they are inserted + // this can help fix replacing a parent with child elements + if ( !isFunc && typeof value !== "string" ) { + value = jQuery( value ).not( this ).detach(); + } + + return this.domManip( [ value ], true, function( elem ) { + var next = this.nextSibling, + parent = this.parentNode; + + if ( parent ) { + jQuery( this ).remove(); + parent.insertBefore( elem, next ); + } + }); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, table, callback ) { + + // Flatten any nested arrays + args = core_concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, table ? self.html() : undefined ); + } + self.domManip( args, table, callback ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + table = table && jQuery.nodeName( first, "tr" ); + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( + table && jQuery.nodeName( this[i], "table" ) ? + findOrAppend( this[i], "tbody" ) : + this[i], + node, + i + ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Hope ajax is available... + jQuery.ajax({ + url: node.src, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +function findOrAppend( elem, tag ) { + return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) ); +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + var attr = elem.getAttributeNode("type"); + elem.type = ( attr && attr.specified ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + core_push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( manipulation_rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
          " && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== core_strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + core_deletedIds.push( id ); + } + } + } + } + } +}); +var iframe, getStyles, curCSS, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity\s*=\s*([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +function showHide( elements, show ) { + var display, elem, hidden, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + values[ index ] = jQuery._data( elem, "olddisplay" ); + display = elem.style.display; + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + + if ( !values[ index ] ) { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); + } + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + var len, styles, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + var bool = typeof state === "boolean"; + + return this.each(function() { + if ( bool ? state : isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Exclude the following css properties to add px + cssNumber: { + "columnCount": true, + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, + // but it would mean to define eight (for every problematic property) identical functions + if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var num, val, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +// NOTE: we've included the "window" in window.getComputedStyle +// because jsdom on node.js will break without it. +if ( window.getComputedStyle ) { + getStyles = function( elem ) { + return window.getComputedStyle( elem, null ); + }; + + curCSS = function( elem, name, _computed ) { + var width, minWidth, maxWidth, + computed = _computed || getStyles( elem ), + + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, + style = elem.style; + + if ( computed ) { + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + getStyles = function( elem ) { + return elem.currentStyle; + }; + + curCSS = function( elem, name, _computed ) { + var left, rs, rsLeft, + computed = _computed || getStyles( elem ), + ret = computed ? computed[ name ] : undefined, + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rs = elem.runtimeStyle; + rsLeft = rs && rs.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + rs.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + rs.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + // at this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var valueIsBorderBox = true, + val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + styles = getStyles( elem ), + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + // Use the already-created iframe if possible + iframe = ( iframe || + jQuery(" + + \ No newline at end of file diff --git a/SMMS/WebContent/view/system.jsp b/SMMS/WebContent/view/system.jsp new file mode 100644 index 0000000..7cf19f5 --- /dev/null +++ b/SMMS/WebContent/view/system.jsp @@ -0,0 +1,79 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> + + + + 学生管理系统 管理员后台 + + + + + + + + + + + + + +
          + ${user.name} 您好   安全退出 + 学生信息管理系统 +
          +
          + +
          +
          + + +
          +
          +
          + +
          +
          + + + \ No newline at end of file diff --git a/SMMS/WebContent/view/teacherList.jsp b/SMMS/WebContent/view/teacherList.jsp new file mode 100644 index 0000000..f5298a7 --- /dev/null +++ b/SMMS/WebContent/view/teacherList.jsp @@ -0,0 +1,486 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> + + + + 教师列表 + + + + + + + + + + +
          + +
          + +
          + + +
          +
          + +
          + + + +
          +   姓名: +
          +
          + 班级: + 搜索 + 清空搜索 +
          +
          + + +
          +
          + + + + + + + + + + + + + + + + + + + +
          姓名:性别:
          用户名: + + 联系方式:
          是否是导员:班级:
          +
          +
          + + +
          +
          + + + + + + + + + + + + + + + + + + + + + +
          姓名:性别:
          用户名: + + 联系方式:
          是否是导员:班级:
          +
          +
          + + \ No newline at end of file diff --git a/SMMS/WebContent/view/welcome.jsp b/SMMS/WebContent/view/welcome.jsp new file mode 100644 index 0000000..448dd01 --- /dev/null +++ b/SMMS/WebContent/view/welcome.jsp @@ -0,0 +1,24 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + +Insert title here + + + +
          +

          欢迎使用学生成绩管理系统

          +

          开发人员:李月恒

          +

          开发周期:2025/05/06 --- 2025/05/16(共计10天)

          +
          +

          系统环境

          +

          系统环境:Windows

          +

          开发工具:Eclipse

          +

          Java版本:JDK 1.8

          +

          服务器:tomcat 9.0

          +

          数据库:MySQL 8.1

          +

          系统采用技术: Servlet+Jsp+Jdbc+dbutils+EasyUI+jQuery+Ajax+面向接口编程

          +
          + + \ No newline at end of file diff --git a/SMMS/build/classes/com/chinasofti/dao/ClazzDao.class b/SMMS/build/classes/com/chinasofti/dao/ClazzDao.class new file mode 100644 index 0000000..702b5ab Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/dao/ClazzDao.class differ diff --git a/SMMS/build/classes/com/chinasofti/dao/CreditRecordsDao.class b/SMMS/build/classes/com/chinasofti/dao/CreditRecordsDao.class new file mode 100644 index 0000000..7cef4c3 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/dao/CreditRecordsDao.class differ diff --git a/SMMS/build/classes/com/chinasofti/dao/LeaveDao.class b/SMMS/build/classes/com/chinasofti/dao/LeaveDao.class new file mode 100644 index 0000000..7165dbe Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/dao/LeaveDao.class differ diff --git a/SMMS/build/classes/com/chinasofti/dao/RoleDao.class b/SMMS/build/classes/com/chinasofti/dao/RoleDao.class new file mode 100644 index 0000000..5034b86 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/dao/RoleDao.class differ diff --git a/SMMS/build/classes/com/chinasofti/dao/StudentDao.class b/SMMS/build/classes/com/chinasofti/dao/StudentDao.class new file mode 100644 index 0000000..153d68a Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/dao/StudentDao.class differ diff --git a/SMMS/build/classes/com/chinasofti/dao/TeacherDao.class b/SMMS/build/classes/com/chinasofti/dao/TeacherDao.class new file mode 100644 index 0000000..b56debf Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/dao/TeacherDao.class differ diff --git a/SMMS/build/classes/com/chinasofti/dao/UserDao.class b/SMMS/build/classes/com/chinasofti/dao/UserDao.class new file mode 100644 index 0000000..70ee67f Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/dao/UserDao.class differ diff --git a/SMMS/build/classes/com/chinasofti/dao/impl/BasicDaoImpl.class b/SMMS/build/classes/com/chinasofti/dao/impl/BasicDaoImpl.class new file mode 100644 index 0000000..4f9ac2b Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/dao/impl/BasicDaoImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/dao/impl/ClazzDaoImpl.class b/SMMS/build/classes/com/chinasofti/dao/impl/ClazzDaoImpl.class new file mode 100644 index 0000000..3d19f2c Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/dao/impl/ClazzDaoImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/dao/impl/CreditRecordsDaoImpl.class b/SMMS/build/classes/com/chinasofti/dao/impl/CreditRecordsDaoImpl.class new file mode 100644 index 0000000..aa049ef Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/dao/impl/CreditRecordsDaoImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/dao/impl/LeaveDaoImpl.class b/SMMS/build/classes/com/chinasofti/dao/impl/LeaveDaoImpl.class new file mode 100644 index 0000000..c4fc750 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/dao/impl/LeaveDaoImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/dao/impl/RoleDaoImpl.class b/SMMS/build/classes/com/chinasofti/dao/impl/RoleDaoImpl.class new file mode 100644 index 0000000..91aabfa Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/dao/impl/RoleDaoImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/dao/impl/StudentDaoImpl.class b/SMMS/build/classes/com/chinasofti/dao/impl/StudentDaoImpl.class new file mode 100644 index 0000000..ca6c392 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/dao/impl/StudentDaoImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/dao/impl/TeacherDaoImpl.class b/SMMS/build/classes/com/chinasofti/dao/impl/TeacherDaoImpl.class new file mode 100644 index 0000000..c2d0973 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/dao/impl/TeacherDaoImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/dao/impl/UserDaoImpl.class b/SMMS/build/classes/com/chinasofti/dao/impl/UserDaoImpl.class new file mode 100644 index 0000000..f7a0e9b Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/dao/impl/UserDaoImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/enums/CreditType.class b/SMMS/build/classes/com/chinasofti/enums/CreditType.class new file mode 100644 index 0000000..5c02093 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/enums/CreditType.class differ diff --git a/SMMS/build/classes/com/chinasofti/enums/DeductCredit.class b/SMMS/build/classes/com/chinasofti/enums/DeductCredit.class new file mode 100644 index 0000000..a593b23 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/enums/DeductCredit.class differ diff --git a/SMMS/build/classes/com/chinasofti/enums/FileName.class b/SMMS/build/classes/com/chinasofti/enums/FileName.class new file mode 100644 index 0000000..918ef86 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/enums/FileName.class differ diff --git a/SMMS/build/classes/com/chinasofti/enums/IsCounselor.class b/SMMS/build/classes/com/chinasofti/enums/IsCounselor.class new file mode 100644 index 0000000..78c3b4d Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/enums/IsCounselor.class differ diff --git a/SMMS/build/classes/com/chinasofti/enums/LeaveStatus.class b/SMMS/build/classes/com/chinasofti/enums/LeaveStatus.class new file mode 100644 index 0000000..0913518 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/enums/LeaveStatus.class differ diff --git a/SMMS/build/classes/com/chinasofti/enums/MathType.class b/SMMS/build/classes/com/chinasofti/enums/MathType.class new file mode 100644 index 0000000..e7b1bb6 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/enums/MathType.class differ diff --git a/SMMS/build/classes/com/chinasofti/enums/OperationResult.class b/SMMS/build/classes/com/chinasofti/enums/OperationResult.class new file mode 100644 index 0000000..4742af2 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/enums/OperationResult.class differ diff --git a/SMMS/build/classes/com/chinasofti/enums/PageScope.class b/SMMS/build/classes/com/chinasofti/enums/PageScope.class new file mode 100644 index 0000000..c6e55ce Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/enums/PageScope.class differ diff --git a/SMMS/build/classes/com/chinasofti/enums/PassWord.class b/SMMS/build/classes/com/chinasofti/enums/PassWord.class new file mode 100644 index 0000000..bb2be4b Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/enums/PassWord.class differ diff --git a/SMMS/build/classes/com/chinasofti/enums/RoleCode.class b/SMMS/build/classes/com/chinasofti/enums/RoleCode.class new file mode 100644 index 0000000..47bd282 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/enums/RoleCode.class differ diff --git a/SMMS/build/classes/com/chinasofti/enums/RoleId.class b/SMMS/build/classes/com/chinasofti/enums/RoleId.class new file mode 100644 index 0000000..b6113c3 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/enums/RoleId.class differ diff --git a/SMMS/build/classes/com/chinasofti/enums/ScoreNow.class b/SMMS/build/classes/com/chinasofti/enums/ScoreNow.class new file mode 100644 index 0000000..95ffe77 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/enums/ScoreNow.class differ diff --git a/SMMS/build/classes/com/chinasofti/enums/Sex.class b/SMMS/build/classes/com/chinasofti/enums/Sex.class new file mode 100644 index 0000000..9256eb6 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/enums/Sex.class differ diff --git a/SMMS/build/classes/com/chinasofti/filter/CharacterFilter.class b/SMMS/build/classes/com/chinasofti/filter/CharacterFilter.class new file mode 100644 index 0000000..0955e27 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/filter/CharacterFilter.class differ diff --git a/SMMS/build/classes/com/chinasofti/filter/LoginFilter.class b/SMMS/build/classes/com/chinasofti/filter/LoginFilter.class new file mode 100644 index 0000000..b8c2551 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/filter/LoginFilter.class differ diff --git a/SMMS/build/classes/com/chinasofti/model/Clazz.class b/SMMS/build/classes/com/chinasofti/model/Clazz.class new file mode 100644 index 0000000..106ee0d Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/model/Clazz.class differ diff --git a/SMMS/build/classes/com/chinasofti/model/CreditRecords.class b/SMMS/build/classes/com/chinasofti/model/CreditRecords.class new file mode 100644 index 0000000..cd3fc57 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/model/CreditRecords.class differ diff --git a/SMMS/build/classes/com/chinasofti/model/Leave.class b/SMMS/build/classes/com/chinasofti/model/Leave.class new file mode 100644 index 0000000..4c42e18 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/model/Leave.class differ diff --git a/SMMS/build/classes/com/chinasofti/model/Role.class b/SMMS/build/classes/com/chinasofti/model/Role.class new file mode 100644 index 0000000..20ccf67 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/model/Role.class differ diff --git a/SMMS/build/classes/com/chinasofti/model/Student.class b/SMMS/build/classes/com/chinasofti/model/Student.class new file mode 100644 index 0000000..eadad41 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/model/Student.class differ diff --git a/SMMS/build/classes/com/chinasofti/model/Teacher.class b/SMMS/build/classes/com/chinasofti/model/Teacher.class new file mode 100644 index 0000000..d005a41 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/model/Teacher.class differ diff --git a/SMMS/build/classes/com/chinasofti/model/TeacherClazz.class b/SMMS/build/classes/com/chinasofti/model/TeacherClazz.class new file mode 100644 index 0000000..47370cf Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/model/TeacherClazz.class differ diff --git a/SMMS/build/classes/com/chinasofti/model/User.class b/SMMS/build/classes/com/chinasofti/model/User.class new file mode 100644 index 0000000..f74db23 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/model/User.class differ diff --git a/SMMS/build/classes/com/chinasofti/model/view/LeaveView.class b/SMMS/build/classes/com/chinasofti/model/view/LeaveView.class new file mode 100644 index 0000000..2b8c943 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/model/view/LeaveView.class differ diff --git a/SMMS/build/classes/com/chinasofti/model/view/Page.class b/SMMS/build/classes/com/chinasofti/model/view/Page.class new file mode 100644 index 0000000..bf4996d Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/model/view/Page.class differ diff --git a/SMMS/build/classes/com/chinasofti/model/view/StudentView.class b/SMMS/build/classes/com/chinasofti/model/view/StudentView.class new file mode 100644 index 0000000..32f93ab Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/model/view/StudentView.class differ diff --git a/SMMS/build/classes/com/chinasofti/model/view/TeacherView.class b/SMMS/build/classes/com/chinasofti/model/view/TeacherView.class new file mode 100644 index 0000000..398327a Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/model/view/TeacherView.class differ diff --git a/SMMS/build/classes/com/chinasofti/pool/JdbcUtils.class b/SMMS/build/classes/com/chinasofti/pool/JdbcUtils.class new file mode 100644 index 0000000..ed9f160 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/pool/JdbcUtils.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/ClazzService.class b/SMMS/build/classes/com/chinasofti/service/ClazzService.class new file mode 100644 index 0000000..a6f2ee9 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/ClazzService.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/CreditRecordsService.class b/SMMS/build/classes/com/chinasofti/service/CreditRecordsService.class new file mode 100644 index 0000000..029c5c0 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/CreditRecordsService.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/LeaveService.class b/SMMS/build/classes/com/chinasofti/service/LeaveService.class new file mode 100644 index 0000000..5be2a36 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/LeaveService.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/LoginService.class b/SMMS/build/classes/com/chinasofti/service/LoginService.class new file mode 100644 index 0000000..1fbd8bd Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/LoginService.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/RoleService.class b/SMMS/build/classes/com/chinasofti/service/RoleService.class new file mode 100644 index 0000000..4cf984c Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/RoleService.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/StudentService.class b/SMMS/build/classes/com/chinasofti/service/StudentService.class new file mode 100644 index 0000000..352b8c2 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/StudentService.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/TeacherService.class b/SMMS/build/classes/com/chinasofti/service/TeacherService.class new file mode 100644 index 0000000..c4dd485 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/TeacherService.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/UserService.class b/SMMS/build/classes/com/chinasofti/service/UserService.class new file mode 100644 index 0000000..8ad598a Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/UserService.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/impl/ClazzServiceImpl.class b/SMMS/build/classes/com/chinasofti/service/impl/ClazzServiceImpl.class new file mode 100644 index 0000000..6bdea82 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/impl/ClazzServiceImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/impl/CreditRecordsServiceImpl.class b/SMMS/build/classes/com/chinasofti/service/impl/CreditRecordsServiceImpl.class new file mode 100644 index 0000000..875a8c0 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/impl/CreditRecordsServiceImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/impl/LeaveServiceImpl.class b/SMMS/build/classes/com/chinasofti/service/impl/LeaveServiceImpl.class new file mode 100644 index 0000000..4981cd3 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/impl/LeaveServiceImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/impl/LoginServiceImpl.class b/SMMS/build/classes/com/chinasofti/service/impl/LoginServiceImpl.class new file mode 100644 index 0000000..ed573fb Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/impl/LoginServiceImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/impl/RoleServiceImpl.class b/SMMS/build/classes/com/chinasofti/service/impl/RoleServiceImpl.class new file mode 100644 index 0000000..33a1412 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/impl/RoleServiceImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/impl/StudentServiceImpl.class b/SMMS/build/classes/com/chinasofti/service/impl/StudentServiceImpl.class new file mode 100644 index 0000000..1443a8c Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/impl/StudentServiceImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/impl/TeacherServiceImpl.class b/SMMS/build/classes/com/chinasofti/service/impl/TeacherServiceImpl.class new file mode 100644 index 0000000..450631a Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/impl/TeacherServiceImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/service/impl/UserServiceImpl.class b/SMMS/build/classes/com/chinasofti/service/impl/UserServiceImpl.class new file mode 100644 index 0000000..ddea990 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/service/impl/UserServiceImpl.class differ diff --git a/SMMS/build/classes/com/chinasofti/servlet/ClazzServlet.class b/SMMS/build/classes/com/chinasofti/servlet/ClazzServlet.class new file mode 100644 index 0000000..4872e41 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/servlet/ClazzServlet.class differ diff --git a/SMMS/build/classes/com/chinasofti/servlet/CreditRecordsServlet.class b/SMMS/build/classes/com/chinasofti/servlet/CreditRecordsServlet.class new file mode 100644 index 0000000..70287af Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/servlet/CreditRecordsServlet.class differ diff --git a/SMMS/build/classes/com/chinasofti/servlet/LeaveServlet.class b/SMMS/build/classes/com/chinasofti/servlet/LeaveServlet.class new file mode 100644 index 0000000..873dda3 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/servlet/LeaveServlet.class differ diff --git a/SMMS/build/classes/com/chinasofti/servlet/LoginServlet.class b/SMMS/build/classes/com/chinasofti/servlet/LoginServlet.class new file mode 100644 index 0000000..f88bb56 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/servlet/LoginServlet.class differ diff --git a/SMMS/build/classes/com/chinasofti/servlet/StudentServlet.class b/SMMS/build/classes/com/chinasofti/servlet/StudentServlet.class new file mode 100644 index 0000000..c7df49c Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/servlet/StudentServlet.class differ diff --git a/SMMS/build/classes/com/chinasofti/servlet/SystemServlet.class b/SMMS/build/classes/com/chinasofti/servlet/SystemServlet.class new file mode 100644 index 0000000..d4ae784 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/servlet/SystemServlet.class differ diff --git a/SMMS/build/classes/com/chinasofti/servlet/TeacherServlet.class b/SMMS/build/classes/com/chinasofti/servlet/TeacherServlet.class new file mode 100644 index 0000000..0c3d158 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/servlet/TeacherServlet.class differ diff --git a/SMMS/build/classes/com/chinasofti/servlet/UserServlet.class b/SMMS/build/classes/com/chinasofti/servlet/UserServlet.class new file mode 100644 index 0000000..6d392a7 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/servlet/UserServlet.class differ diff --git a/SMMS/build/classes/com/chinasofti/utils/ChineseToPinyin.class b/SMMS/build/classes/com/chinasofti/utils/ChineseToPinyin.class new file mode 100644 index 0000000..37350f7 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/utils/ChineseToPinyin.class differ diff --git a/SMMS/build/classes/com/chinasofti/utils/IsDate.class b/SMMS/build/classes/com/chinasofti/utils/IsDate.class new file mode 100644 index 0000000..9859023 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/utils/IsDate.class differ diff --git a/SMMS/build/classes/com/chinasofti/utils/IsNumber.class b/SMMS/build/classes/com/chinasofti/utils/IsNumber.class new file mode 100644 index 0000000..9aac976 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/utils/IsNumber.class differ diff --git a/SMMS/build/classes/com/chinasofti/utils/IsPhoneNumber.class b/SMMS/build/classes/com/chinasofti/utils/IsPhoneNumber.class new file mode 100644 index 0000000..42d8c10 Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/utils/IsPhoneNumber.class differ diff --git a/SMMS/build/classes/com/chinasofti/utils/SM3PasswordEncoder.class b/SMMS/build/classes/com/chinasofti/utils/SM3PasswordEncoder.class new file mode 100644 index 0000000..9a6223d Binary files /dev/null and b/SMMS/build/classes/com/chinasofti/utils/SM3PasswordEncoder.class differ diff --git a/SMMS/build/classes/db.properties b/SMMS/build/classes/db.properties new file mode 100644 index 0000000..6189167 --- /dev/null +++ b/SMMS/build/classes/db.properties @@ -0,0 +1,7 @@ +url=jdbc:mysql://localhost:3306/smms?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true&connectTimeout=5000&socketTimeout=20000 +username=root +password=root +driverClassName=com.mysql.cj.jdbc.Driver +initialSize=10 +maxActive=20 +maxWait=1000 \ No newline at end of file diff --git a/SMMS/sql/smms.sql b/SMMS/sql/smms.sql new file mode 100644 index 0000000..7ed06c4 --- /dev/null +++ b/SMMS/sql/smms.sql @@ -0,0 +1,631 @@ +/* + Navicat Premium Data Transfer + + Source Server : 本机 + Source Server Type : MySQL + Source Server Version : 80040 (8.0.40) + Source Host : localhost:3306 + Source Schema : smms + + Target Server Type : MySQL + Target Server Version : 80040 (8.0.40) + File Encoding : 65001 + + Date: 19/05/2025 10:59:22 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for smms_clazz +-- ---------------------------- +DROP TABLE IF EXISTS `smms_clazz`; +CREATE TABLE `smms_clazz` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `clazz_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '班级名称', + `clazz_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '班级编码', + `clazzs` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '学级', + `clazz_ads` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '学届', + `user_id` bigint NOT NULL COMMENT '责任人', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `user_id_fk_clazz`(`user_id` ASC) USING BTREE, + CONSTRAINT `user_id_fk_clazz` FOREIGN KEY (`user_id`) REFERENCES `smms_user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '班级表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of smms_clazz +-- ---------------------------- +INSERT INTO `smms_clazz` VALUES (1, '大数据23', 'big_date', '2023', '2026', 20, '', NULL, '管理员', '2025-05-16 13:55:32'); +INSERT INTO `smms_clazz` VALUES (2, '人工智能23', 'rgzn', '2023', '2026', 20, '管理员', '2025-05-08 11:04:05', '管理员', '2025-05-16 13:55:24'); +INSERT INTO `smms_clazz` VALUES (4, '计算机2306', 'jsj2306', '2023', '2026', 56, '管理员', '2025-05-16 16:10:40', '', NULL); + +-- ---------------------------- +-- Table structure for smms_credit_records +-- ---------------------------- +DROP TABLE IF EXISTS `smms_credit_records`; +CREATE TABLE `smms_credit_records` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `credit` int NOT NULL COMMENT '增减学分', + `credit_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '学分增减范围,1:本周学分;2:本科学分', + `remark` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '学分增减原因', + `number` bigint NOT NULL COMMENT '学号', + `student_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '学生姓名', + `clazz_id` bigint NOT NULL COMMENT '班级Id', + `clazz_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '班级名称', + `user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '操作人姓名', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 783 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '学分记录信息表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of smms_credit_records +-- ---------------------------- +INSERT INTO `smms_credit_records` VALUES (782, -2, '2', '请假扣分', 1234567890111, '唐凯', 1, '大数据23', '刘老师', '刘老师', '2025-05-16 16:47:30'); + +-- ---------------------------- +-- Table structure for smms_leave +-- ---------------------------- +DROP TABLE IF EXISTS `smms_leave`; +CREATE TABLE `smms_leave` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `student_id` bigint NOT NULL COMMENT '学生id', + `teacher_id` bigint NOT NULL COMMENT '审批教师id', + `info` varchar(512) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '请假申请信息', + `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '审批状态,0:等待审核;1:审核通过;2:审核不通过', + `remark` varchar(512) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '审批回复', + `apply_time` datetime NOT NULL COMMENT '申请时间', + `approve_time` datetime NULL DEFAULT NULL COMMENT '审批时间', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '请假记录表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of smms_leave +-- ---------------------------- +INSERT INTO `smms_leave` VALUES (4, 1, 4, '肚子不舒服', '1', '快去吧', '2025-05-16 16:45:57', '2025-05-18 11:40:45', '唐凯', '2025-05-16 16:45:57', '刘老师', '2025-05-18 11:40:45'); +INSERT INTO `smms_leave` VALUES (5, 1, 4, '...', '2', '审核超时', '2025-05-16 21:03:02', '2025-05-18 11:54:51', '唐凯', '2025-05-16 21:03:02', 'admin', '2025-05-18 11:54:51'); +INSERT INTO `smms_leave` VALUES (6, 8, 4, '家里有事', '2', '审核超时', '2025-05-17 10:19:55', '2025-05-18 11:54:51', '郭东剑', '2025-05-17 10:19:55', 'admin', '2025-05-18 11:54:51'); + +-- ---------------------------- +-- Table structure for smms_role +-- ---------------------------- +DROP TABLE IF EXISTS `smms_role`; +CREATE TABLE `smms_role` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `role_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色名', + `role_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色编码', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of smms_role +-- ---------------------------- +INSERT INTO `smms_role` VALUES (1, '管理员', 'admin', 'admin', '2025-05-02 20:17:08', 'admin', '2025-05-02 20:17:17'); +INSERT INTO `smms_role` VALUES (2, '老师', 'teacher', 'admin', '2025-05-02 20:17:12', 'admin', '2025-05-02 20:17:20'); +INSERT INTO `smms_role` VALUES (3, '学生', 'student', 'admin', '2025-05-02 20:17:14', 'admin', '2025-05-02 20:17:22'); + +-- ---------------------------- +-- Table structure for smms_student +-- ---------------------------- +DROP TABLE IF EXISTS `smms_student`; +CREATE TABLE `smms_student` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `clazz_id` bigint NOT NULL COMMENT '班级', + `user_id` bigint NOT NULL COMMENT '用户', + `number` bigint NOT NULL COMMENT '学号', + `birthday` date NULL DEFAULT NULL COMMENT '生日', + `major` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '专业', + `honor` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '个人荣誉', + `score_now` int NOT NULL COMMENT '本周当前学分', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `number_idx`(`number` ASC) USING BTREE, + INDEX `user_id_idx`(`user_id` ASC) USING BTREE, + INDEX `clazz_id_idx`(`clazz_id` ASC) USING BTREE, + CONSTRAINT `clazz_id_fk_student` FOREIGN KEY (`clazz_id`) REFERENCES `smms_clazz` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `user_id_fk_student` FOREIGN KEY (`user_id`) REFERENCES `smms_user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 87 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '学生信息表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of smms_student +-- ---------------------------- +INSERT INTO `smms_student` VALUES (1, 1, 3, 1234567890111, '2004-01-28', '大数据', 'xxxx,xxxxxx,xxxxxx', 100, 'liyueheng', '2025-05-03 08:35:04', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (8, 1, 22, 2300700001, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (9, 1, 23, 2300700002, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (10, 1, 24, 2300700003, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (11, 1, 25, 2300700004, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (12, 1, 26, 2300700005, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (13, 1, 27, 2300700006, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (14, 1, 28, 2300700007, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (15, 1, 29, 2300700008, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (16, 1, 30, 2300700009, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (17, 1, 31, 2300700010, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (18, 1, 32, 2300700011, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (19, 1, 33, 2300700012, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (20, 1, 34, 2300700013, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (21, 1, 35, 2300700014, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (22, 1, 36, 2300700015, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (23, 1, 37, 2300700016, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (24, 1, 38, 2300700017, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (25, 1, 39, 2300700019, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (26, 1, 40, 2300700020, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (27, 1, 41, 2300700021, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (28, 1, 42, 2300700022, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (29, 1, 43, 2300700023, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (30, 1, 44, 2300700024, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (31, 1, 45, 2300700025, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (32, 1, 46, 2300700026, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (33, 1, 47, 2300700027, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (34, 1, 48, 2300700028, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (35, 1, 49, 2300700029, '2003-12-31', '大数据', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (36, 2, 50, 2300700030, '2003-12-31', '人工智能', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (37, 2, 51, 2300700031, '2003-12-31', '人工智能', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (38, 2, 52, 2300700032, '2003-12-31', '人工智能', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (39, 2, 53, 2300700033, '2003-12-31', '人工智能', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (40, 2, 54, 2300700034, '2003-12-31', '人工智能', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (41, 2, 55, 2300700035, '2003-12-31', '人工智能', '无', 100, 'admin', '2025-05-16 14:04:18', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (42, 4, 57, 2300600001, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (43, 4, 58, 2300600002, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (44, 4, 59, 2300600003, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (45, 4, 60, 2300600004, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (46, 4, 61, 2300600005, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (47, 4, 62, 2300600006, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (48, 4, 63, 2300600007, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (49, 4, 64, 2300600008, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (50, 4, 65, 2300600009, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (51, 4, 66, 2300600010, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (52, 4, 67, 2300600011, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (53, 4, 68, 2300600012, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (54, 4, 69, 2300600013, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (55, 4, 70, 2300600014, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (56, 4, 71, 2300600015, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (57, 4, 72, 2300600016, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (58, 4, 73, 2300600017, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (59, 4, 74, 2300600018, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (60, 4, 75, 2300600019, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (61, 4, 76, 2300600020, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (62, 4, 77, 2300600021, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (63, 4, 78, 2300600022, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (64, 4, 79, 2300600023, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (65, 4, 80, 2300600024, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (66, 4, 81, 2300600025, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (67, 4, 82, 2300600026, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (68, 4, 83, 2300600027, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (69, 4, 84, 2300600028, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (70, 4, 85, 2300600029, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (71, 4, 86, 2300600030, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (72, 4, 87, 2300600031, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (73, 4, 88, 2300600032, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (74, 4, 89, 2300600033, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (75, 4, 90, 2300600034, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (76, 4, 91, 2300600035, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (77, 4, 92, 2300600036, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (78, 4, 93, 2300600037, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (79, 4, 94, 2300600038, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); +INSERT INTO `smms_student` VALUES (80, 4, 95, 2300600039, '2023-12-31', '计算机应用技术', '无', 100, 'admin', '2025-05-16 16:15:58', 'admin', '2025-05-19 10:35:10'); + +-- ---------------------------- +-- Table structure for smms_teacher +-- ---------------------------- +DROP TABLE IF EXISTS `smms_teacher`; +CREATE TABLE `smms_teacher` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `user_id` bigint NOT NULL COMMENT '关联用户', + `is_counselor` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '是否是辅导员,y:是;n:不是', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '教师表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of smms_teacher +-- ---------------------------- +INSERT INTO `smms_teacher` VALUES (2, 16, 'n', 'admin', '2025-05-08 15:13:48', 'admin', '2025-05-16 13:56:17'); +INSERT INTO `smms_teacher` VALUES (4, 20, 'y', 'admin', '2025-05-16 13:53:54', '', NULL); +INSERT INTO `smms_teacher` VALUES (6, 56, 'y', 'admin', '2025-05-16 16:09:40', 'admin', '2025-05-16 16:10:55'); +INSERT INTO `smms_teacher` VALUES (8, 97, 'n', 'admin', '2025-05-16 16:44:14', 'admin', '2025-05-17 19:37:30'); +INSERT INTO `smms_teacher` VALUES (9, 98, 'n', 'admin', '2025-05-16 16:45:17', '', NULL); + +-- ---------------------------- +-- Table structure for smms_teacher_clazz +-- ---------------------------- +DROP TABLE IF EXISTS `smms_teacher_clazz`; +CREATE TABLE `smms_teacher_clazz` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `teacher_id` bigint NOT NULL COMMENT '教师ID', + `clazz_id` bigint NOT NULL COMMENT '班级ID', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 36 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '教师与班级关联表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of smms_teacher_clazz +-- ---------------------------- +INSERT INTO `smms_teacher_clazz` VALUES (15, 4, 1); +INSERT INTO `smms_teacher_clazz` VALUES (16, 4, 2); +INSERT INTO `smms_teacher_clazz` VALUES (20, 6, 4); +INSERT INTO `smms_teacher_clazz` VALUES (25, 9, 4); +INSERT INTO `smms_teacher_clazz` VALUES (34, 8, 1); +INSERT INTO `smms_teacher_clazz` VALUES (35, 8, 2); + +-- ---------------------------- +-- Table structure for smms_user +-- ---------------------------- +DROP TABLE IF EXISTS `smms_user`; +CREATE TABLE `smms_user` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `role_id` bigint NOT NULL COMMENT '角色', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '姓名', + `sex` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '性别,0男,1女', + `user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名', + `pass_word` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '111111' COMMENT '密码', + `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '联系方式', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `user_name`(`user_name` ASC) USING BTREE, + INDEX `role_id`(`role_id` ASC) USING BTREE, + CONSTRAINT `role_id_fk_user` FOREIGN KEY (`role_id`) REFERENCES `smms_role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 107 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户信息表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of smms_user +-- ---------------------------- +INSERT INTO `smms_user` VALUES (1, 1, '管理员', '0', 'admin', 'cfe7b0e818326739bf097484612b4031:9390cbdb19d4a1ebaead4f356681020f9da2be9e0e84950f7d49d4ba2d7d9b91', '15555555555', 'admin', '2025-05-03 08:35:24', 'admin', '2025-05-13 11:22:17'); +INSERT INTO `smms_user` VALUES (3, 3, '唐凯', '0', 'tangkai', '6a1c49045467435049fff1590621a42f:7d110931fd764bad1d8d90a49928651b5a56ae5f4e6ffb135e5fa1dd4a6bb19f', '15555555555', 'admin', '2025-05-03 08:35:59', 'tangkai', '2025-05-13 11:14:43'); +INSERT INTO `smms_user` VALUES (20, 2, '刘老师', '0', 'liuyang', '743a15ad821d2fc0639eb458f61ba8a7:dfd4383f0d5ec281903b568282ec89a3089190640091c135967c563621bd0561', '18888888888', 'admin', '2025-05-16 13:53:54', '', NULL); +INSERT INTO `smms_user` VALUES (22, 3, '郭东剑', '0', 'guodongjian', 'd59f6c929536c5e30fe86be2da317aa8:72df31033f19930c25c56cce0065d5577ff3690e93427abfb654395bbf31955c', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (23, 3, '李禹鑫', '0', 'liyuxin', '8e1f914eb2384fe906a077ee32a7e92b:c71b4875497a38995ed1c535f92f62c505059c078cf233dc854c41e40789b7c1', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (24, 3, '李志杰', '1', 'lizhijie', '39243ffd371bba6ef46a050639f3603c:0abcf0b53892ea41b93f4ebd9f913986857ecc0df4981db6d55cfdf7cdd3eeaa', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (25, 3, '林子雄', '0', 'linzixiong', 'd22a858665ead4d23728d01f09ff32b7:94cca2937b39741a70b64711b35f57c7c8a820e9e8ed7af442ef2732357a744d', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (26, 3, '周子淇', '0', 'zhouziqi', 'fb36f291877003fd175520ee93c87a34:b33c880f3d66436b07c15f2053a32c7d8d24427f132bf562b8bd44a147bab376', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (27, 3, '张翀', '0', 'zhangchong', '14a4deff64a2ccf42340091bf971383e:1156f80ad520c2b67e92ce34c480c468744d0de2e57e500324b2f5944b5b95b1', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (28, 3, '张继文', '0', 'zhangjiwen', '523be8b4ae161a066880e50bc4c6a84d:3444e77c303962e474da1907f714174a922de984672eafa130cdca3aa5a002d5', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (29, 3, '张姊妍', '1', 'zhangziyan', '9fe606b4a749b04424feb2149626450b:97f777f09d89863a0931e2bd644a1ad77abb9e002a1c49f6b4309a162e9eff4c', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (30, 3, '蒋松竹', '1', 'jiangsongzhu', 'b0b38dc1939d20a4f62b8bb0e5e1e0e0:b0d2a7ab69cf8fa5ec370e479e65ca41ead9367623bdc20e83ff4ec1f8b68d62', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (31, 3, '王建达', '0', 'wangjianda', '859f3073d0bd16a25733949cddde3d7e:4d9741e8139895f04995cd00353e288ae1df78d7aef12e0f630ba29c6597bd4e', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (32, 3, '艾君婷', '1', 'aijunting', 'afdaf4005ec756d3083b33cbff8c9df9:3e14e625a4413929d278e8af532f3ac754963323f27fdd3f717e5951beeed9be', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (33, 3, '李福升', '0', 'lifusheng', '4b45fc7d79bdb44486100907ba95ecfe:9539f321cbc1f61fb2cd2f7c688e456d19614b9ccf1a236470d2e21e7f746114', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (34, 3, '田昕', '0', 'tianxin', '1571d44daa98a74c26cca1312321c1e7:ffca75792708dfb8d18ba9ac29ea8dfbaedc59d89b83a408914a6eeee38a7818', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (35, 3, '李士龙', '0', 'lishilong', 'dcf94f48fa0a0f94504a47062f520233:575a88541546354de0e489a65a23dc9eeb1e7e58310ff3a0c435bf4769ef7809', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (36, 3, '尹红博', '0', 'yinhongbo', 'ae6a7c67a1894f952afce38fdda15d1a:7c36ed9aecbd299ef153cdfff5ccc96d1ff05a2ec1602575ddc2f79e3f8d3b04', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (37, 3, '阮诚', '0', 'ruancheng', '6c860af89b84992694c41d695ace3c45:2afaf1ab84a5fc1bf8d7f95d3c9fdf5a11bb3b0c361752d22cd0c066bb3cc4a6', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (38, 3, '马镜博', '0', 'majingbo', 'a74dab4e90009cf988fb4e048f3c494f:9687f1b96f54e932ca6e72799ab3bb9af7d300a58a18ec3247814f4c551cd005', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (39, 3, '刘运达', '0', 'liuyunda', 'eba1a67893fa285f4ddeaa82b9a9b9ef:df0761e0b0f1ab233c501c6532f98e906a236a5bf5cb50b87ab1edc89d39b1f7', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (40, 3, '冯思远', '0', 'fengsiyuan', '57b6871c2951617555becc492b5760e3:203a4a7ae50e311be8b36ff1cdce24b0cbf009b86402adafa25b9ad484ea75fc', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (41, 3, '刘静仪', '1', 'liujingyi', 'ff8a6e861341a96bc8297005cb456267:d10578ba74bd0de4920b0894c0107af0392a25c800aa0cac7cab89b3d9e4c4b6', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (42, 3, '冯小刚', '0', 'fengxiaogang', 'd7ec76db1ad27c5e379a9700ed947a30:3ef8e3723d709577d96f26da6b304e54927118ae241ddf565f465f4f7b57fc5b', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (43, 3, '宿云捷', '1', 'suyunjie', '52831eb8dba526c5cb2fe9d169e3cabd:c3e167d0b9c9f10c73886802a99e190856b89bb8af54700a97b119acb60ee174', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (44, 3, '屈美鑫', '1', 'qumeixin', 'e15354ad82261bef0ca27b3237d30188:cf1522cd1931091e7e4de0b8e55b01de32684e8f46c925f353c3d1932a9f7652', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (45, 3, '姚博原', '1', 'yaoboyuan', '3391b168c838d45264939fdf5e46ce58:00ecfe489ee2af643aaec24db66d3d9cc43f526b116a84e32e0225048ae8958f', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (46, 3, '李名赫', '0', 'liminghe', '5a9f6a0ba5bf217726a22549c9c47a89:afc80d3e0012983508fa23c78f5072c79e30e0caa98c99935f4561308569d6eb', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (47, 3, '刘嘉成', '0', 'liujiacheng', '11abe255d22b905a11a0a429583b23de:a8b5e7cffb0109f740a1af9f9521c82573350b6169915306c308bed17c5e309e', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (48, 3, '池雨桐', '1', 'chiyutong', 'b15f668e72a051bbffc8847b2ec7bb12:9bfeadcf0ffc86d8b733eb63a2bd3aa176745f3476db2c5db3665eb2e4ad539c', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (49, 3, '陈佳怡', '1', 'chenjiayi', 'de0fb97838114e3036b99bff7df98181:948a93199a0c700e5f122104caa0e49c92373190316924027a5c27c359b40eb3', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (50, 3, '孙铭远', '0', 'sunmingyuan', 'ae349bb30cf83a9522ffcbd1d9324ebf:852c59efc42184b42ba6ccde0c51c1219f768d8cb3dfa21fea56a149c8121774', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (51, 3, '王天磊', '0', 'wangtianlei', '4079dcfb23a07ef9f7445b37d60fc911:4099c184b754efb421bdf4480c01e3147e905066b149ea1ccb4b02fce16c2430', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (52, 3, '孙恺', '0', 'sunkai', 'e8a03ba378ef09528b31d747ee707d28:23da071d3956c0d005f1b96b2d87e47c326a3bb6abc1f2b127a2d2ccdd04f34d', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (53, 3, '谭力夫', '0', 'tanlifu', '24bf96cdcfd0d129215aa34337a59fbe:28e26301d0fe4e9d7dc6c8342b968bceb57c19b15a00d5723a1aab5636deabdd', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (54, 3, '杨朔一', '0', 'yangshuoyi', 'd48fb36a8c343de9256cf00a8105e282:c65a93d3a5379e66e0aeb7fd45d7d32227227ef17942338acafdffb457f0be81', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (55, 3, '李金宇', '0', 'lijinyu', '23a590efb3850f70b0da0ccc2d63fa37:7e5c880c8a8174a709002010cf43fdb795847a0d31a5e32d7e8e03aa2a4ebdba', '18888888888', 'admin', '2025-05-16 14:04:18', '', NULL); +INSERT INTO `smms_user` VALUES (56, 2, '宿老师', '1', 'sumingyuan', '5bc337b4df16977a05d3ce619699af2e:ffb1ec00af4a981f5fe544cd44dab1e98939d7d6135f8f19182ad97e1b587117', '18888888888', 'admin', '2025-05-16 16:09:40', 'sumingyuan', '2025-05-16 16:10:55'); +INSERT INTO `smms_user` VALUES (57, 3, '邹佳洋', '0', 'zoujiayang', 'c3ff11e2819faef47c677480f4f0f620:7e376b80165dea42437e3712ab034e018d3f67527be1c000f10e24fbc44242bc', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (58, 3, '周靖沅', '0', 'zhoujingyuan', '604d9274db127aee4aaed1a1ed073c89:8d9eb5ec3d4dacbe99f532fc77a846e51ccf795f64ff30585fab16dd6525c60e', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (59, 3, '郑健', '0', 'zhengjian', '7c209c8e622f46eaa8805ba90be90353:056b8b17d7b4025ce1edb738acadc3fa5b5fb584d47bcbe4295e5769547f5de1', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (60, 3, '赵可鑫', '1', 'zhaokexin', '4f8c1cc9129efaee5d9b1d9b3877699c:7dd52fbd40bc9fec060219e55ebc7b3cd833f3edb4273a61affbe2306c721e49', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (61, 3, '张展鹏', '0', 'zhangzhanpeng', '0b23c37974e78597d498490d6c6a7216:55f4262e1c22eb5326fefa4b0a18769a5d6a154e118f14636fd38ab454dd24aa', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (62, 3, '张馨月', '1', 'zhangxinyue', '95004a8ba87eadbc17a88f230f838538:3c4812731caacd0ea2f5e36a9888c37528693e903e8011eaa1a897839707b006', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (63, 3, '张思宇', '1', 'zhangsiyu', '7fb435bc5a38d9dc54a605c8f8c7d24c:2e0b8793a86d55ae3d67989310858899e57ee68dfaf42f809e5816232dd6d90d', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (64, 3, '张凯强', '0', 'zhangkaiqiang', 'aa22d8692c1aba7d22e71bfb9501c04f:e7a239c03d99f04da490c8232e35bb114fcfd42d62d04aeed9cf3b5c015e8c51', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (65, 3, '张嘉琦', '0', 'zhangjiaqi', '6dab00f31c120e82cfab3e6f3539f655:abeebc6976425821be19d67ac875962ddc6db66a14cc8294b722522c3db15827', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (66, 3, '张浩燃', '0', 'zhanghaoran', '3e2a7eb384a87498624061442cd8c884:2553b1b29dd5bdb959c2310355af892d964410a731df291f8656c512273627ee', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (67, 3, '焉潆丹', '1', 'yanyingdan', 'fd5220913243a69282aa20ba33abef9a:b9b3831f9bf176a0e1c3083837739b7e61c3251389850b1dfc24c1b65fb07120', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (68, 3, '薛博雯', '1', 'xuebowen', 'a16221293bf88dc806d8772a05fe467a:eb26d5610b99908db911382a6ef2dcf5af92fc584caaff6334e6a69d9eeaa461', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (69, 3, '魏洛洋', '0', 'weiluoyang', 'f71a6eb3ff82437595ddf67e320eb237:e574165fa2449f530fe9c496d989c8a18d6ae226ffd3f2c8d6a5a1986ccfbc47', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (70, 3, '王欣宇', '0', 'wangxinyu', 'f1a87acaad56be1cb2243f7543532252:8283bfd17238a6844ba50991a38adccdd2f1985335c93bed0393d72f387efe80', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (71, 3, '王梁玉', '1', 'wangliangyu', '4675460143c6147686b6963e578315d0:391a509655e79afe79a7d6049b1cd83bac7c25cf9abeef23eca15432a8602526', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (72, 3, '王凯', '0', 'wangkai', '11a2c5231d7bd8aa02fcc7bd9c00b360:b976af1f7c2e41b25ea7390f102af196a366f7cf5c1e40c1c7f021f700dc0842', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (73, 3, '王泓博', '0', 'wanghongbo', '31bd911b5c6639436ef8ee9d96bda15e:2e0ab547aad2224b98338a60a2f0a08e44ccd237f3ccc5d024e19f13145f3e27', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (74, 3, '王博', '0', 'wangbo', '73c1178ace89d42d53d6248ddd32d802:1459d8b676e4d58410180f42daccdc3732313ec58b5c6be95d6e3ee54c562b46', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (75, 3, '万玺峻', '0', 'wanxijun', '8f7beaaf9f5f61da88274588c1bfcaaf:3d6b2f68c1d535836e84d1cbd1672d1dd9c9ed882432c8039b0a5d2a7b4018d1', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (76, 3, '孙嘉远', '0', 'sunjiayuan', '47b012561c29c2f8973d0febbba29e32:a2a07feea4bb78e2541acd8a797f3bb69a4141399d1a10f5cbf790335d666b7a', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (77, 3, '孙涵', '0', 'sunhan', '9b4e8480b6fa3a8903fbafde552591d8:72294af66d458a3e49b8aacb026a9ab7c9c8624f8da79436485e5e810b776992', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (78, 3, '沈枫轩', '0', 'shenfengxuan', '889728498a827bedb575741c78f629e1:fa0129c6c66107b895272fd6fb12a28cdef65bc84b719eb83bb08757c97ecdce', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (79, 3, '邱建东', '0', 'qiujiandong', 'f8b3c2d2ce1635e2be0d06816264492a:589b3dec930685dc5fddde7c8c173066a423254c08863a9cf3bdc50b6bb9ac1f', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (80, 3, '罗帅', '0', 'luoshuai', 'c5b0d692f2b73aa997588b07e8342d42:f31bc6ea3e747c72f5eaf0fa6d3066c02b18b9c1f12de7987750c11a9a0ccd1d', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (81, 3, '刘奕萌', '1', 'liuyimeng', '811d09fa34b0af018d09e06e8608b424:27c1210988d66d9ec8a5d7a4117a4cf892f2e33d61734e8269dc1ee53eedafce', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (82, 3, '刘美煊', '1', 'liumeixuan', '869dc56e8c264465e41985bd73836530:f1724ba1623f6b589f8f611c374f2b874dcec3bc04903b131e73a10345ab6766', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (83, 3, '刘珈源', '0', 'liujiayuan', '2f3f3a092073b10a604dbe782329ebe3:f717d58118f5c4845fa98d9aa88a412ec2da63c68e2831ad41c2732863a305ca', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (84, 3, '刘佳铜', '0', 'liujiatong', '688bdfb24ddf477796da8840cfb4f172:7dcc04ac9e9132f5f006f30f09bce98aa010444c066d66d57566a6dc99c796e5', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (85, 3, '李卓睿', '0', 'lizhuorui', 'b5a659f34e13fbeac743e46e194999d5:2ab70e2549cee7ec1287196d07befd6d6b977b5be6f94940630acdf42897fa58', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (86, 3, '李鹏达', '0', 'lipengda', '8f06c168537a93d374f875a38e1ab3b7:dc4c599f0ff83822b52916f1f0cf4d855fe6118a0172c6f7918b5fe25e12b2c2', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (87, 3, '李明', '0', 'liming', '5b62d0609be52d679e707c20a08a0773:91f007652196c2fde8dfc8eee80eeda53a5c95784bb0e0a13dcba1d57e8fc0c8', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (88, 3, '李春浩', '0', 'lichunhao', 'bb9cc818641d65c35c7b138dc00cf7bd:efff0fbe3d520a5e3d607b6ed477a947f35fdbb05000aec3fffca00290ecfa61', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (89, 3, '雷彤', '1', 'leitong', 'c7726cef32678606fc6d33d2cc6f47a8:4e00545e0c92f1826503a59f08c4c761799f0c607c1beaa74582078c4162fa03', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (90, 3, '姜雅玲', '1', 'jiangyaling', '5a8af235644c535fdf89881b5b98e1d7:e6e85aad047f58a1456dc283eb8e47f80dadd2dc355033fe5c0fd5c9b11b0792', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (91, 3, '胡育铭', '0', 'huyuming', '1d82c9461f34df6719429b2a3650ba28:28e3bbce538e701d36b461017a2472b7b8e3e3b090bbf44ba7ad6a87bd0e19c5', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (92, 3, '高誉荧', '1', 'gaoyuying', '00011325798f858e3076cbbe5fca709f:14ab098ac77bfcfec3fd82de5510a554dd1180e72c794fa9a88a7f1363db5fdb', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (93, 3, '陈浩铮', '0', 'chenhaozheng', 'ac7203e5e0e965b711bf7801ad1e19f3:286939a8e7d9cfe62f605729ce8432595fee17ebb131fd2614490fda3dd7dc8b', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (94, 3, '卞胤淇', '0', 'bianyinqi', '1371e1bbc18979d2a21cafdcf4bee0ea:3381ec3fa49e5c4f47fec579c0064f5050c7aaa7ccb468f8f3a30f4ddbb745c3', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (95, 3, '毕洪博', '0', 'bihongbo', '4ae00365c2983b48566b9317e799ca9b:36344f0b49c7741d821b6d138e6af8c8fe7dc4fafc05ab9ed35df8e938997da9', '18888888888', 'admin', '2025-05-16 16:15:58', '', NULL); +INSERT INTO `smms_user` VALUES (97, 2, '李月恒', '0', 'liyueheng', '43def75240375976f0f0174a6e7f47ea:a33f22309f1414fecbb631b66cadcbe87f818c04aba85b78ae3ddad590dbbc6b', '18888888888', 'admin', '2025-05-16 16:44:14', 'liyueheng', '2025-05-17 19:37:30'); +INSERT INTO `smms_user` VALUES (98, 2, '康师傅', '0', 'kang', 'b36e0884cd9875170ddf91782024b069:a4c65f72a0febe8884edc219c42aec58f70a4f3a04e58425f12c579bf409a615', '18888888888', 'admin', '2025-05-16 16:45:17', '', NULL); + +-- ---------------------------- +-- Table structure for smms_week_credit_record +-- ---------------------------- +DROP TABLE IF EXISTS `smms_week_credit_record`; +CREATE TABLE `smms_week_credit_record` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `student_id` bigint NOT NULL COMMENT '学生ID', + `student_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '学生姓名', + `credit` int NOT NULL COMMENT '学分', + `adjust` datetime NOT NULL COMMENT '核算时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 76 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '周学分记录信息表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of smms_week_credit_record +-- ---------------------------- +INSERT INTO `smms_week_credit_record` VALUES (2, 42, '邹佳洋', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (3, 43, '周靖沅', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (4, 44, '郑健', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (5, 45, '赵可鑫', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (6, 46, '张展鹏', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (7, 47, '张馨月', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (8, 48, '张思宇', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (9, 49, '张凯强', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (10, 50, '张嘉琦', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (11, 51, '张浩燃', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (12, 52, '焉潆丹', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (13, 53, '薛博雯', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (14, 54, '魏洛洋', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (15, 55, '王欣宇', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (16, 56, '王梁玉', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (17, 57, '王凯', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (18, 58, '王泓博', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (19, 59, '王博', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (20, 60, '万玺峻', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (21, 61, '孙嘉远', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (22, 62, '孙涵', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (23, 63, '沈枫轩', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (24, 64, '邱建东', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (25, 65, '罗帅', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (26, 66, '刘奕萌', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (27, 67, '刘美煊', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (28, 68, '刘珈源', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (29, 69, '刘佳铜', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (30, 70, '李卓睿', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (31, 71, '李鹏达', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (32, 72, '李明', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (33, 73, '李春浩', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (34, 74, '雷彤', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (35, 75, '姜雅玲', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (36, 76, '胡育铭', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (37, 77, '高誉荧', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (38, 78, '陈浩铮', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (39, 79, '卞胤淇', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (40, 80, '毕洪博', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (41, 8, '郭东剑', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (42, 9, '李禹鑫', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (43, 10, '李志杰', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (44, 11, '林子雄', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (45, 12, '周子淇', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (46, 13, '张翀', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (47, 14, '张继文', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (48, 15, '张姊妍', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (49, 16, '蒋松竹', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (50, 17, '王建达', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (51, 18, '艾君婷', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (52, 19, '李福升', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (53, 20, '田昕', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (54, 21, '李士龙', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (55, 22, '尹红博', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (56, 23, '阮诚', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (57, 24, '马镜博', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (58, 25, '刘运达', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (59, 26, '冯思远', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (60, 27, '刘静仪', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (61, 28, '冯小刚', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (62, 29, '宿云捷', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (63, 30, '屈美鑫', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (64, 31, '姚博原', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (65, 32, '李名赫', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (66, 33, '刘嘉成', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (67, 34, '池雨桐', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (68, 35, '陈佳怡', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (69, 36, '孙铭远', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (70, 37, '王天磊', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (71, 38, '孙恺', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (72, 39, '谭力夫', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (73, 40, '杨朔一', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (74, 41, '李金宇', 100, '2025-05-19 10:35:10'); +INSERT INTO `smms_week_credit_record` VALUES (75, 1, '唐凯', 90, '2025-05-19 10:35:10'); + +-- ---------------------------- +-- Procedure structure for smms_drop +-- ---------------------------- +DROP PROCEDURE IF EXISTS `smms_drop`; +delimiter ;; +CREATE PROCEDURE `smms_drop`() +BEGIN + DECLARE v_cnt INT; + DECLARE v_finished INT DEFAULT FALSE; + DECLARE v_id BIGINT; + + -- 声明游标 + DECLARE myCursor CURSOR FOR + SELECT c.id FROM smms_clazz c WHERE clazz_ads + 2 < YEAR(CURDATE()); + + -- 处理游标读取完毕的情况 + DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_finished = TRUE; + + -- 查询符合条件的数据条数 + SELECT COUNT(1) INTO v_cnt FROM smms_clazz c WHERE clazz_ads + 4 < YEAR(CURDATE()); + + IF v_cnt > 0 THEN + OPEN myCursor; + + read_loop: LOOP + FETCH myCursor INTO v_id; + IF v_finished THEN + LEAVE read_loop; + END IF; + + -- 业务处理逻辑 + DELETE FROM smms_user WHERE id IN (SELECT user_id FROM smms_student WHERE clazz_id = v_id); + DELETE FROM smms_student WHERE clazz_id = v_id; + DELETE FROM smms_teacher_clazz WHERE clazz_id = v_id; + DELETE FROM smms_clazz WHERE id = v_id; + END LOOP; + + CLOSE myCursor; + END IF; +END +;; +delimiter ; + +-- ---------------------------- +-- Procedure structure for smms_leave_status_change +-- ---------------------------- +DROP PROCEDURE IF EXISTS `smms_leave_status_change`; +delimiter ;; +CREATE PROCEDURE `smms_leave_status_change`() +BEGIN + DECLARE v_cnt INT; + DECLARE v_finished INT DEFAULT FALSE; + DECLARE v_id BIGINT; + + -- 声明游标 + DECLARE myCursor CURSOR FOR + SELECT l.id FROM smms_leave l WHERE ADDDATE(l.apply_time, INTERVAL 1 DAY) < SYSDATE(); + + -- 处理游标读取完毕的情况 + DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_finished = TRUE; + + -- 查询符合条件的数据条数 + SELECT COUNT(1) INTO v_cnt FROM smms_leave l WHERE l.apply_time < SYSDATE(); + + IF v_cnt > 0 THEN + OPEN myCursor; + + read_loop: LOOP + FETCH myCursor INTO v_id; + IF v_finished THEN + LEAVE read_loop; + END IF; + + -- 业务处理逻辑 + UPDATE smms_leave + SET status = '2',-- 表示“已过期自动审批” + remark = '审核超时', + approve_time = SYSDATE(), + update_by = 'admin', + update_time = SYSDATE() + WHERE id = v_id AND status = '0'; + END LOOP; + + CLOSE myCursor; + END IF; +END +;; +delimiter ; + +-- ---------------------------- +-- Procedure structure for smms_week_credit_change +-- ---------------------------- +DROP PROCEDURE IF EXISTS `smms_week_credit_change`; +delimiter ;; +CREATE PROCEDURE `smms_week_credit_change`() +BEGIN + DECLARE v_cnt INT; + DECLARE v_finished INT DEFAULT FALSE; + DECLARE v_id BIGINT; + + -- 声明游标 + DECLARE myCursor CURSOR FOR + SELECT s.id FROM smms_student s; + + -- 处理游标读取完毕的情况 + DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_finished = TRUE; + + -- 查询符合条件的数据条数 + SELECT COUNT(1) INTO v_cnt FROM smms_student s; + + IF v_cnt > 0 THEN + OPEN myCursor; + + read_loop: LOOP + FETCH myCursor INTO v_id; + IF v_finished THEN + LEAVE read_loop; + END IF; + + -- 业务处理逻辑 + INSERT INTO smms_week_credit_record (student_id,student_name,credit,adjust) + SELECT s.id,u.name,s.score_now,SYSDATE() FROM smms_student s ,smms_user u WHERE s.user_id = u.id AND s.id = v_id; + UPDATE smms_student SET score_now = 100,update_by = 'admin',update_time = SYSDATE() WHERE id = v_id; + END LOOP; + + CLOSE myCursor; + END IF; +END +;; +delimiter ; + +-- ---------------------------- +-- Event structure for smms_drop +-- ---------------------------- +DROP EVENT IF EXISTS `smms_drop`; +delimiter ;; +CREATE EVENT `smms_drop` +ON SCHEDULE +EVERY '1' YEAR STARTS '2025-01-01 00:00:00' +DO CALL smms_drop +;; +delimiter ; + +-- ---------------------------- +-- Event structure for smms_leave_status_change +-- ---------------------------- +DROP EVENT IF EXISTS `smms_leave_status_change`; +delimiter ;; +CREATE EVENT `smms_leave_status_change` +ON SCHEDULE +EVERY '1' DAY STARTS '2025-05-06 00:00:00' +DO CALL smms_leave_status_change +;; +delimiter ; + +-- ---------------------------- +-- Event structure for smms_week_credit_change +-- ---------------------------- +DROP EVENT IF EXISTS `smms_week_credit_change`; +delimiter ;; +CREATE EVENT `smms_week_credit_change` +ON SCHEDULE +EVERY '1' WEEK STARTS '2025-05-28 00:00:00' +DO CALL smms_week_credit_change +;; +delimiter ; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/SMMS/src/com/chinasofti/dao/ClazzDao.java b/SMMS/src/com/chinasofti/dao/ClazzDao.java new file mode 100644 index 0000000..4c93e67 --- /dev/null +++ b/SMMS/src/com/chinasofti/dao/ClazzDao.java @@ -0,0 +1,212 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.dao + * @author: 李洪涛 + * @date: 2025年5月3日 下午8:09:18 + */ +package com.chinasofti.dao; + +import java.util.List; + +import com.chinasofti.model.Clazz; +import com.chinasofti.model.view.Page; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: ClazzDao.java +* @Description: 班级数据层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月3日 下午8:09:18 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月3日 李洪涛 v1.0.0 新建文件 +*/ +public interface ClazzDao { + + /** + * + * @Function: insertClazz + * @Description: 添加 + * + * @param: 班级实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public Clazz insertClazz(Clazz clazz); + + /** + * + * @Function: updateClazz + * @Description: 修改 + * + * @param: 班级实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void updateClazz(Clazz clazz); + + /** + * + * @Function: removeClazz + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void removeClazz(long id); + + /** + * + * @Function: removeTeacherClazzByClazzId + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void removeTeacherClazzByClazzId(long clazzId); + + /** + * + * @Function: findClazzPage + * @Description: 查询所有记录 + * + * @param: 班级实体 + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findClazzPage(Clazz clazz,Page page); + + /** + * + * @Function: findClazzsByClazzIds + * @Description: 根据班级查询班级实体 + * + * @param: 班级实体 + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findClazzsByClazzIds(String clazzIds,Clazz clazz,Page page); + + /** + * + * @Function: findClazzsByTeacherId + * @Description: 根据教师Id查询班级实体 + * + * @param: 教师Id + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findClazzsByTeacherId(long teacherId); + + /** + * + * @Function: findClazzByClazzName + * @Description: 根据班级名称查询 + * + * @param: 班级名称 + * @return:班级实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public Clazz findClazzByClazzName(String clazzName); + + /** + * + * @Function: findClazzsByUserIds + * @Description: 根据责任人查询班级实体 + * + * @param: 班级实体 + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findClazzsByUserIds(String uderIds); +} diff --git a/SMMS/src/com/chinasofti/dao/CreditRecordsDao.java b/SMMS/src/com/chinasofti/dao/CreditRecordsDao.java new file mode 100644 index 0000000..124a8d8 --- /dev/null +++ b/SMMS/src/com/chinasofti/dao/CreditRecordsDao.java @@ -0,0 +1,73 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.dao + * @author: 李洪涛 + * @date: 2025年5月3日 下午8:09:18 + */ +package com.chinasofti.dao; + +import java.util.List; + +import com.chinasofti.model.CreditRecords; +import com.chinasofti.model.view.Page; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: CreditRecordsDao.java +* @Description: 学分记录信息数据层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月3日 下午8:09:18 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月3日 李洪涛 v1.0.0 新建文件 +*/ +public interface CreditRecordsDao { + + /** + * + * @Function: insertCreditRecords + * @Description: 添加 + * + * @param: 学分实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public CreditRecords insertCreditRecords(Long studentId,CreditRecords creditRecords); + + /** + * + * @Function: findCreditRecordsPages + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findCreditRecordsPages(String startTime,String endTime,CreditRecords creditRecords,String clazzIds,Page page); + +} diff --git a/SMMS/src/com/chinasofti/dao/LeaveDao.java b/SMMS/src/com/chinasofti/dao/LeaveDao.java new file mode 100644 index 0000000..fcd7953 --- /dev/null +++ b/SMMS/src/com/chinasofti/dao/LeaveDao.java @@ -0,0 +1,214 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.dao + * @author: 李洪涛 + * @date: 2025年5月9日 下午1:03:49 + */ +package com.chinasofti.dao; + +import java.util.List; + +import com.chinasofti.model.Leave; +import com.chinasofti.model.view.LeaveView; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.TeacherView; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: LeaveDao.java +* @Description: 请假记录数据层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月9日 下午1:03:49 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月9日 李洪涛 v1.0.0 新建文件 +*/ +public interface LeaveDao { + + /** + * + * @Function: insertLeave + * @Description: 添加 + * + * @param: 角色实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void insertLeave(Leave leave); + + /** + * + * @Function: updateLeave + * @Description: 修改 + * + * @param: 角色实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void updateLeave(Leave leave); + + /** + * + * @Function: removeLeave + * @Description: 删除 + * + * @param: Leave + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void removeLeave(Leave leave); + + /** + * + * @Function: findLeavePages + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findLeavePages(Leave leave,Page page); + + /** + * + * @Function: findLeavePagesByClazzIds + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findLeavePagesByClazzIds(Leave leave,Page page,String clazzIds); + + /** + * + * @Function: findLeaveViews + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findLeaveViews(Leave leave); + + /** + * + * @Function: findLeaveViewsByClazzIds + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findLeaveViewsByClazzIds(Leave leave,String clazzIds); + + /** + * + * @Function: findLeaveByTeacherIdsAndStatus + * @Description: 根据教师id与状态查询 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findLeaveByTeacherIdsAndStatus(String teacherIds); + + /** + * + * @Function: findApproveTeacherViews + * @Description: 获取审批教师信息 + * + * @param: 教师ID + * @return:审批教师实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年5月17日 上午9:12:14 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年5月17日 李洪涛 v1.0.0 新建方法 + */ + public List findApproveTeacherViews(Long teacherId); +} diff --git a/SMMS/src/com/chinasofti/dao/RoleDao.java b/SMMS/src/com/chinasofti/dao/RoleDao.java new file mode 100644 index 0000000..d5d5d51 --- /dev/null +++ b/SMMS/src/com/chinasofti/dao/RoleDao.java @@ -0,0 +1,50 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.dao + * @author: 李洪涛 + * @date: 2025年4月8日 上午9:06:00 + */ +package com.chinasofti.dao; + + +import com.chinasofti.model.Role; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: RoleDao.java +* @Description: 角色类数据层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年4月8日 上午9:06:00 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年4月8日 李洪涛 v1.0.0 新建文件 +*/ +public interface RoleDao { + + /** + * + * @Function: findRoleById + * @Description: 根据id查询 + * + * @param: id值 + * @return:角色实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public Role findRoleById(long id); +} diff --git a/SMMS/src/com/chinasofti/dao/StudentDao.java b/SMMS/src/com/chinasofti/dao/StudentDao.java new file mode 100644 index 0000000..32afb94 --- /dev/null +++ b/SMMS/src/com/chinasofti/dao/StudentDao.java @@ -0,0 +1,174 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.dao + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:45:18 + */ +package com.chinasofti.dao; + +import java.util.List; + +import com.chinasofti.model.Student; +import com.chinasofti.model.User; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.StudentView; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: StudentDao.java +* @Description: 学生类数据层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年4月6日 上午10:45:18 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年4月6日 李洪涛 v1.0.0 新建文件 +*/ +public interface StudentDao { + /** + * + * @Function: insertStudent + * @Description: 添加 + * + * @param: 学生实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public String insertStudent(Student student,User user); + + /** + * + * @Function: updateStudent + * @Description: 修改 + * + * @param: 学生实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public String updateStudent(Student student,User user); + + /** + * + * @Function: removeStudent + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public String removeStudent(String studentIds,String userIds); + + /** + * + * @Function: findStudentByUserId + * @Description: 根据id查询 + * + * @param: userId值 + * @return:学生实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public Student findStudentByUserId(long userId); + + /** + * + * @Function: findStudentViews + * @Description: 查询所有记录 + * + * @param: 学生实体 + * @return:学生实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findStudentViews(StudentView studentView,Page page); + + /** + * + * @Function: findStudentViewsByClazzIds + * @Description: 根据班级查询学生实体 + * + * @param: 学生实体 + * @return:学生实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findStudentViewsByClazzIds(StudentView studentView,String clazzIds,Page page); + + /** + * + * @Function: updateStudentScoreNow + * @Description: 修改 + * + * @param: 本周学分变动 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void updateStudentScoreNow(int score,Student student); + +} diff --git a/SMMS/src/com/chinasofti/dao/TeacherDao.java b/SMMS/src/com/chinasofti/dao/TeacherDao.java new file mode 100644 index 0000000..83a8f32 --- /dev/null +++ b/SMMS/src/com/chinasofti/dao/TeacherDao.java @@ -0,0 +1,214 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.dao + * @author: 李洪涛 + * @date: 2025年5月4日 下午10:53:00 + */ +package com.chinasofti.dao; + +import java.util.List; + +import com.chinasofti.model.Teacher; +import com.chinasofti.model.TeacherClazz; +import com.chinasofti.model.User; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.TeacherView; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: TeacherDao.java +* @Description: 教师数据层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月4日 下午10:53:00 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月4日 李洪涛 v1.0.0 新建文件 +*/ +public interface TeacherDao { + /** + * + * @Function: insertTeacher + * @Description: 添加 + * + * @param: 教师实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public String insertTeacher(Teacher teacher,User user,TeacherClazz teacherClazz,String [] clazzIds); + + /** + * + * @Function: updateTeacher + * @Description: 修改 + * + * @param: 教师实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public String updateTeacher(Teacher teacher,String [] clazzIds,User user); + + /** + * + * @Function: removeTeacher + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void removeTeacher(long id); + + /** + * + * @Function: findTeacher + * @Description: 查询 + * + * @param: 教师实体 + * @return:教师实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public Teacher findTeacher(Teacher teacher); + + /** + * + * @Function: findClazzIdsByTeacherId + * @Description: 查询 + * + * @param: teacherID + * @return:List + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findClazzIdsByTeacherId(Long teacherID); + + /** + * + * @Function: findTeacherViews + * @Description: 查询所有记录 + * + * @param: 教师实体 + * @return:教师实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findTeacherViews(TeacherView teacherView,Page page); + + /** + * + * @Function: insertTeacherClazz + * @Description: 添加 + * + * @param: 教师与班级关联关系实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public TeacherClazz insertTeacherClazz(TeacherClazz teacherClazz); + + /** + * + * @Function: removeTeacherClazz + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void removeTeacherClazz(long teacherId); + + /** + * + * @Function: findTeacherByStudentId + * @Description: 查询 + * + * @param: 教师实体 + * @return:教师实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public Teacher findTeacherByStudentId(Long studentId); +} diff --git a/SMMS/src/com/chinasofti/dao/UserDao.java b/SMMS/src/com/chinasofti/dao/UserDao.java new file mode 100644 index 0000000..89f46f2 --- /dev/null +++ b/SMMS/src/com/chinasofti/dao/UserDao.java @@ -0,0 +1,132 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.dao + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:45:53 + */ +package com.chinasofti.dao; + +import java.util.List; + +import com.chinasofti.model.User; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: UserDao.java +* @Description: 用户类数据层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年4月6日 上午10:45:53 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年4月6日 李洪涛 v1.0.0 新建文件 +*/ +public interface UserDao { + + /** + * + * @Function: insertUser + * @Description: 添加 + * + * @param: 用户实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public User insertUser(User user); + + /** + * + * @Function: updateUser + * @Description: 修改 + * + * @param: 用户实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void updateUser(User user); + + /** + * + * @Function: removeUser + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void removeUser(long id); + + /** + * + * @Function: findUser + * @Description: 查询单个用户 + * + * @param: User + * @return:用户实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public User findUser(User user); + + /** + * + * @Function: findUsers + * @Description: 查询所有记录 + * + * @param: 用户实体 + * @return:用户实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findUsers(User user); + +} diff --git a/SMMS/src/com/chinasofti/dao/impl/BasicDaoImpl.java b/SMMS/src/com/chinasofti/dao/impl/BasicDaoImpl.java new file mode 100644 index 0000000..adbf034 --- /dev/null +++ b/SMMS/src/com/chinasofti/dao/impl/BasicDaoImpl.java @@ -0,0 +1,164 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.dao.impl + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:39:52 + */ +package com.chinasofti.dao.impl; + +import org.apache.commons.dbutils.BasicRowProcessor; +import org.apache.commons.dbutils.GenerousBeanProcessor; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.BeanHandler; +import org.apache.commons.dbutils.handlers.BeanListHandler; +import org.apache.commons.dbutils.handlers.ScalarHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: BasicDaoImpl.java +* @Description: 该类的功能描述 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年4月6日 上午10:39:52 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年4月6日 李洪涛 v1.0.0 新建文件 +*/ +public class BasicDaoImpl { + + /** + * + * @Function: getBean + * @Description: 封装查询返回一条记录 + * + * @param: 连接 + * @param: sql语句 + * @param: where条件 + * @return:实际对象 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:41:11 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public T getBean(Connection conn,String sql,Class type,Object...params) { + QueryRunner runner = new QueryRunner(); + BasicRowProcessor basicRowProcessor = new BasicRowProcessor(new GenerousBeanProcessor()); + BeanHandler beanHandler = new BeanHandler(type,basicRowProcessor); + try { + T t = runner.query(conn, sql, beanHandler,params); + return t; + } catch (SQLException e) { + e.printStackTrace(); + } + return null; + } + + /** + * + * @Function: getListBean + * @Description: 封装查询返回多条记录 + * + * @param: 连接 + * @param: sql语句 + * @param: where条件 + * @return:实际对象集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:43:15 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List getListBean(Connection conn,String sql,Class type,Object...params) { + QueryRunner runner = new QueryRunner(); + BasicRowProcessor basicRowProcessor = new BasicRowProcessor(new GenerousBeanProcessor()); + BeanListHandler beanListHandler = new BeanListHandler(type,basicRowProcessor); + try { + List list = runner.query(conn, sql, beanListHandler,params); + return list; + } catch (SQLException e) { + e.printStackTrace(); + } + return null; + } + + /** + * + * @Function: update + * @Description: 修改 + * + * @param: 连接 + * @param: sql语句 + * @param: where条件 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:43:15 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public int update(Connection conn,String sql,Object...params) { + int res = 0; + QueryRunner runner = new QueryRunner(); + try { + res = runner.update(conn, sql, params); + } catch (SQLException e) { + e.printStackTrace(); + } + return res; + } + + /** + * + * @Function: insert + * @Description: 新增 + * + * @param: 连接 + * @param: sql语句 + * @param: where条件 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:43:15 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public T insert(Connection conn,String sql,Class type,Object...params) { + QueryRunner runner = new QueryRunner(); + try { + T t = runner.insert(conn, sql, new ScalarHandler(),params); + return t; + } catch (SQLException e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/SMMS/src/com/chinasofti/dao/impl/ClazzDaoImpl.java b/SMMS/src/com/chinasofti/dao/impl/ClazzDaoImpl.java new file mode 100644 index 0000000..5ae50ca --- /dev/null +++ b/SMMS/src/com/chinasofti/dao/impl/ClazzDaoImpl.java @@ -0,0 +1,337 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.dao.impl + * @author: 李洪涛 + * @date: 2025年5月3日 下午8:11:53 + */ +package com.chinasofti.dao.impl; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.druid.util.StringUtils; +import com.chinasofti.dao.ClazzDao; +import com.chinasofti.model.Clazz; +import com.chinasofti.model.view.Page; +import com.chinasofti.pool.JdbcUtils; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: ClazzDaoImpl.java +* @Description: 班级数据层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月3日 下午8:09:18 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月3日 李洪涛 v1.0.0 新建文件 +*/ +public class ClazzDaoImpl extends BasicDaoImpl implements ClazzDao { + + /** + * @see com.chinasofti.dao.ClazzDao#insertClazz(com.chinasofti.model.Clazz) + * @Function: insertClazz + * @Description: 添加 + * + * @param: 班级实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public Clazz insertClazz(Clazz clazz) { + String sql = "INSERT INTO smms_clazz (user_id, clazz_name, clazz_code, clazzs, clazz_ads, create_by, create_time) VALUES (?, ?, ?, ?, ?, ?, ?)"; + List paramList = new ArrayList(); + paramList.add(clazz.getUserId()); + paramList.add(clazz.getClazzName()); + paramList.add(clazz.getClazzCode()); + paramList.add(clazz.getClazzs()); + paramList.add(clazz.getClazzAds()); + paramList.add(clazz.getCreateBy()); + paramList.add(clazz.getCreateTime()); + BigInteger primaryKey = insert(JdbcUtils.getConnection(), sql, BigInteger.class,paramList.toArray()); + clazz.setId(primaryKey.longValue()); + JdbcUtils.closeResource(); + return clazz; + } + + /** + * @see com.chinasofti.dao.ClazzDao#updateClazz(com.chinasofti.model.Clazz) + * @Function: updateClazz + * @Description: 修改 + * + * @param: 班级实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void updateClazz(Clazz clazz) { + String updateBy = " update_by = ?,update_time = ?"; + List paramList = new ArrayList(); + paramList.add(clazz.getUpdateBy()); + paramList.add(clazz.getUpdateTime()); + String update = ""; + if (null != clazz.getUserId() && 0 < clazz.getUserId()) { + update += ",user_id = ?"; + paramList.add(clazz.getUserId()); + } + if (!StringUtils.isEmpty(clazz.getClazzName())) { + update += ",clazz_name = ?"; + paramList.add(clazz.getClazzName()); + } + if (!StringUtils.isEmpty(clazz.getClazzCode())) { + update += ",clazz_code = ?"; + paramList.add(clazz.getClazzCode()); + } + if (!StringUtils.isEmpty(clazz.getClazzs())) { + update += ",clazzs = ?"; + paramList.add(clazz.getClazzs()); + } + if (!StringUtils.isEmpty(clazz.getClazzAds())) { + update += ",clazz_ads = ?"; + paramList.add(clazz.getClazzAds()); + } + paramList.add(clazz.getId()); + String sql = "update smms_clazz set"+updateBy+update+" where id = ?"; + update(JdbcUtils.getConnection(), sql,paramList.toArray()); + JdbcUtils.closeResource(); + } + + /** + * @see com.chinasofti.dao.ClazzDao#removeClazz(long) + * @Function: removeClazz + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void removeClazz(long id) { + String sql = "delete from smms_clazz where id = ?"; + update(JdbcUtils.getConnection(), sql,id); + JdbcUtils.closeResource(); + } + + /** + * @see com.chinasofti.dao.ClazzDao#findClazzPage(com.chinasofti.model.Clazz, com.chinasofti.model.view.Page) + * @Function: findClazzPage + * @Description: 查询所有记录 + * + * @param: 班级实体 + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findClazzPage(Clazz clazz, Page page) { + String sql = "select * from smms_clazz where 1 = 1"; + List paramList = new ArrayList(); + if (!StringUtils.isEmpty(clazz.getClazzName())) { + sql += " and clazz_name like ?"; + paramList.add("%"+clazz.getClazzName()+"%"); + } + if (null != clazz.getUserId() && clazz.getUserId() > 0) { + sql += " and user_id = ?"; + paramList.add(clazz.getUserId()); + } + if (!StringUtils.isEmpty(clazz.getClazzAds())) { + sql += " and clazz_ads = ?";; + paramList.add(clazz.getClazzAds()); + } + sql += " limit ?,?"; + paramList.add(page.getStart()); + paramList.add(page.getPageSize()); + List clazzs = getListBean(JdbcUtils.getConnection(), sql, Clazz.class,paramList.toArray()); + JdbcUtils.closeResource(); + return clazzs; + } + + /** + * @see com.chinasofti.dao.ClazzDao#findClazzsByClazzIds(java.lang.String, com.chinasofti.model.view.Page) + * @Function: findClazzsByClazzIds + * @Description: 根据班级查询班级实体 + * + * @param: 班级实体 + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findClazzsByClazzIds(String clazzIds,Clazz clazz, Page page) { + String sql = "select * from smms_clazz where 1 = 1"; + List paramList = new ArrayList(); + if (!StringUtils.isEmpty(clazz.getClazzName())) { + sql += " and clazz_name like ?"; + paramList.add("%"+clazz.getClazzName()+"%"); + } + if (null != clazz.getUserId() && clazz.getUserId() > 0) { + sql += " and user_id = ?"; + paramList.add(clazz.getUserId()); + } + if (!StringUtils.isEmpty(clazz.getClazzAds())) { + sql += " and clazz_ads = ?";; + paramList.add(clazz.getClazzAds()); + } + sql += " and id in ("+clazzIds+") limit ?,?"; + paramList.add(page.getStart()); + paramList.add(page.getPageSize()); + List clazzs = getListBean(JdbcUtils.getConnection(), sql, Clazz.class,paramList.toArray()); + JdbcUtils.closeResource(); + return clazzs; + } + + /** + * @see com.chinasofti.dao.ClazzDao#removeTeacherClazzByClazzId(long) + * @Function: removeTeacherClazzByClazzId + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void removeTeacherClazzByClazzId(long clazzId) { + String sql = "delete from smms_teacher_clazz where clazz_id = ?"; + update(JdbcUtils.getConnection(), sql,clazzId); + JdbcUtils.closeResource(); + } + + /** + * @see com.chinasofti.dao.ClazzDao#findClazzsByTeacherId(long) + * @Function: findClazzsByTeacherId + * @Description: 根据教师Id查询班级实体 + * + * @param: 教师Id + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findClazzsByTeacherId(long teacherId) { + String sql = "select * from smms_clazz c where EXISTS(SELECT 1 FROM smms_teacher_clazz tc where c.id = tc.clazz_id and tc.teacher_id = ?)"; + List clazzs = getListBean(JdbcUtils.getConnection(), sql, Clazz.class,teacherId); + JdbcUtils.closeResource(); + return clazzs; + } + + /** + * @see com.chinasofti.dao.ClazzDao#findClazzByClazzName(java.lang.String) + * @Function: findClazzByClazzName + * @Description: 根据班级名称查询 + * + * @param: 班级名称 + * @return:班级实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public Clazz findClazzByClazzName(String clazzName) { + String sql = "select * from smms_clazz where clazz_name = ?"; + Clazz clazz = getBean(JdbcUtils.getConnection(), sql, Clazz.class,clazzName);; + JdbcUtils.closeResource(); + return clazz; + } + + /** + * @see com.chinasofti.dao.ClazzDao#findClazzsByUserIds(java.lang.String) + * @Function: findClazzsByUserIds + * @Description: 根据责任人查询班级实体 + * + * @param: 班级实体 + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findClazzsByUserIds(String uderIds) { + List paramList = new ArrayList(); + String sql = "select * from smms_clazz where user_id in (" +uderIds+")"; + List clazzs = getListBean(JdbcUtils.getConnection(), sql, Clazz.class,paramList.toArray()); + JdbcUtils.closeResource(); + return clazzs; + } + +} diff --git a/SMMS/src/com/chinasofti/dao/impl/CreditRecordsDaoImpl.java b/SMMS/src/com/chinasofti/dao/impl/CreditRecordsDaoImpl.java new file mode 100644 index 0000000..e55ffe5 --- /dev/null +++ b/SMMS/src/com/chinasofti/dao/impl/CreditRecordsDaoImpl.java @@ -0,0 +1,130 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.dao + * @author: 李洪涛 + * @date: 2025年5月3日 下午8:09:18 + */ +package com.chinasofti.dao.impl; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.druid.util.StringUtils; +import com.chinasofti.dao.CreditRecordsDao; +import com.chinasofti.model.CreditRecords; +import com.chinasofti.model.view.Page; +import com.chinasofti.pool.JdbcUtils; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: CreditRecordsDaoImpl.java +* @Description: 学分记录信息数据层实现类 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月3日 下午8:09:18 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月3日 李洪涛 v1.0.0 新建文件 +*/ +public class CreditRecordsDaoImpl extends BasicDaoImpl implements CreditRecordsDao { + + /** + * @see com.chinasofti.dao.CreditRecordsDao#insertCreditRecords(com.chinasofti.model.CreditRecords) + * @Function: insertCreditRecords + * @Description: 添加 + * + * @param: 学分实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public CreditRecords insertCreditRecords(Long studentId,CreditRecords creditRecords) { + String sql = "INSERT INTO smms_credit_records (credit, credit_type, remark, number, student_name, clazz_id, clazz_name, user_name, create_by, create_time) SELECT ?,?,?,s.number,u.name,c.id,c.clazz_name,?,?,? FROM smms_student s LEFT JOIN smms_clazz c ON s.clazz_id = c.id LEFT JOIN smms_user u ON s.user_id = u.id WHERE s.id = ?;"; + List paramList = new ArrayList(); + paramList.add(creditRecords.getCredit()); + paramList.add(creditRecords.getCreditType()); + paramList.add(creditRecords.getRemark()); + paramList.add(creditRecords.getUserName()); + paramList.add(creditRecords.getCreateBy()); + paramList.add(creditRecords.getCreateTime()); + paramList.add(studentId); + BigInteger primaryKey = insert(JdbcUtils.getConnection(), sql, BigInteger.class,paramList.toArray()); + creditRecords.setId(primaryKey.longValue()); + JdbcUtils.closeResource(); + return creditRecords; + } + + /** + * @see com.chinasofti.dao.CreditRecordsDao#findCreditRecordsPages(com.chinasofti.model.CreditRecords, com.chinasofti.model.view.Page) + * @Function: findCreditRecordsPages + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findCreditRecordsPages(String startTime,String endTime,CreditRecords creditRecords,String clazzIds, Page page) { + String sql = "select * from smms_credit_records where 1 = 1"; + if (!StringUtils.isEmpty(clazzIds)) { + sql = "select * from smms_credit_records where clazz_id in ("+clazzIds+")"; + } + List paramList = new ArrayList(); + if (!StringUtils.isEmpty(startTime)) { + sql += " and create_time >= ?"; + paramList.add(startTime); + } + if (!StringUtils.isEmpty(endTime)) { + sql += " and create_time <= ?"; + paramList.add(endTime); + } + if (!StringUtils.isEmpty(creditRecords.getStudentName())) { + sql += " and student_name like ?"; + paramList.add("%"+creditRecords.getStudentName()+"%"); + } + if (null != creditRecords.getNumber() && creditRecords.getNumber() > 0) { + sql += " and number = ?"; + paramList.add(creditRecords.getNumber()); + } + if (!StringUtils.isEmpty(creditRecords.getClazzName())) { + sql += " and clazz_name like ?"; + paramList.add("%"+creditRecords.getClazzName()+"%"); + } + if (!StringUtils.isEmpty(creditRecords.getCreditType())) { + sql += " and credit_type = ?"; + paramList.add(creditRecords.getCreditType()); + } + sql += " limit ?,?"; + paramList.add(page.getStart()); + paramList.add(page.getPageSize()); + List res = getListBean(JdbcUtils.getConnection(), sql, CreditRecords.class,paramList.toArray()); + JdbcUtils.closeResource(); + return res; + } + +} diff --git a/SMMS/src/com/chinasofti/dao/impl/LeaveDaoImpl.java b/SMMS/src/com/chinasofti/dao/impl/LeaveDaoImpl.java new file mode 100644 index 0000000..78ca8b6 --- /dev/null +++ b/SMMS/src/com/chinasofti/dao/impl/LeaveDaoImpl.java @@ -0,0 +1,370 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.dao.impl + * @author: 李洪涛 + * @date: 2025年5月9日 下午1:07:54 + */ +package com.chinasofti.dao.impl; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.druid.util.StringUtils; +import com.chinasofti.dao.LeaveDao; +import com.chinasofti.enums.LeaveStatus; +import com.chinasofti.model.Leave; +import com.chinasofti.model.view.LeaveView; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.TeacherView; +import com.chinasofti.pool.JdbcUtils; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: LeaveDaoImpl.java +* @Description: 请假记录数据层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月9日 下午1:03:49 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月9日 李洪涛 v1.0.0 新建文件 +*/ +public class LeaveDaoImpl extends BasicDaoImpl implements LeaveDao { + + /** + * @see com.chinasofti.dao.LeaveDao#insertLeave(com.chinasofti.model.Leave) + * @Function: insertLeave + * @Description: 添加 + * + * @param: 角色实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void insertLeave(Leave leave) { + String sql = "INSERT INTO smms_leave (student_id, teacher_id, info, status, apply_time, create_by, create_time) VALUES (?,?,?,?,?,?,?)"; + List paramList = new ArrayList(); + paramList.add(leave.getStudentId()); + paramList.add(leave.getTeacherId()); + paramList.add(leave.getInfo()); + paramList.add(leave.getStatus()); + paramList.add(leave.getApplyTime()); + paramList.add(leave.getCreateBy()); + paramList.add(leave.getCreateTime()); + insert(JdbcUtils.getConnection(), sql, BigInteger.class,paramList.toArray()); + JdbcUtils.closeResource(); + } + + /** + * @see com.chinasofti.dao.LeaveDao#updateLeave(com.chinasofti.model.Leave) + * @Function: updateLeave + * @Description: 修改 + * + * @param: 角色实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void updateLeave(Leave leave) { + String updateBy = " update_by = ?,update_time = ?"; + List paramList = new ArrayList(); + paramList.add(leave.getUpdateBy()); + paramList.add(leave.getUpdateTime()); + String update = ""; + if (!StringUtils.isEmpty(leave.getStatus())) { + update += ",status = ?"; + paramList.add(leave.getStatus()); + } + if (!StringUtils.isEmpty(leave.getRemark())) { + update += ",remark = ?"; + paramList.add(leave.getRemark()); + } + if (null != leave.getApproveTime()) { + update += ",approve_time = ?"; + paramList.add(leave.getApproveTime()); + } + paramList.add(leave.getId()); + String sql = "update smms_leave set"+updateBy+update+" where id = ?"; + update(JdbcUtils.getConnection(), sql,paramList.toArray()); + JdbcUtils.closeResource(); + } + + /** + * @see com.chinasofti.dao.LeaveDao#removeLeave(long) + * @Function: removeLeave + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void removeLeave(Leave leave) { + if (null != leave.getStudentId() && leave.getStudentId() > 0) { + String sql = "delete from smms_leave where student_id = ?"; + update(JdbcUtils.getConnection(), sql,leave.getStudentId()); + JdbcUtils.closeResource(); + } + if (null != leave.getTeacherId() && leave.getTeacherId() > 0) { + String sql = "delete from smms_leave where teacher_id = ?"; + update(JdbcUtils.getConnection(), sql,leave.getTeacherId()); + JdbcUtils.closeResource(); + } + } + + /** + * @see com.chinasofti.dao.LeaveDao#findfindLeavePages(com.chinasofti.model.Leave, com.chinasofti.model.view.Page) + * @Function: findLeavePages + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findLeavePages(Leave leave, Page page) { + String sql = "select * from smms_leave where 1 = 1"; + List paramList = new ArrayList(); + if (null != leave.getStudentId() && leave.getStudentId() > 0) { + sql += " and student_id = ?"; + paramList.add(leave.getStudentId()); + } + if (null != leave.getTeacherId() && leave.getTeacherId() > 0) { + sql += " and teacher_id = ?"; + paramList.add(leave.getTeacherId()); + } + if (!StringUtils.isEmpty(leave.getStatus())) { + sql += " and status = ?"; + paramList.add(leave.getStatus()); + } + sql += " limit ?,?"; + paramList.add(page.getStart()); + paramList.add(page.getPageSize()); + List res = getListBean(JdbcUtils.getConnection(), sql, Leave.class,paramList.toArray()); + JdbcUtils.closeResource(); + return res; + } + + /** + * @see com.chinasofti.dao.LeaveDao#findLeaveViews(com.chinasofti.model.Leave) + * @Function: findLeaveViews + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findLeaveViews(Leave leave) { + String sql = "select (select u1.name from smms_user u1,smms_student s where u1.id = s.user_id and s.id = l.student_id) student_name,(select u2.name from smms_user u2,smms_teacher t where u2.id = t.user_id and t.id = l.teacher_id) teacher_name,l.info,(CASE WHEN l.`status` = '0' THEN '等待审核' WHEN l.`status` = 1 THEN '审核通过' ELSE '审核不通过' END) AS `status`,l.remark,l.apply_time,l.approve_time from smms_leave l where 1 = 1"; + List paramList = new ArrayList(); + if (null != leave.getStudentId() && leave.getStudentId() > 0) { + sql += " and l.student_id = ?"; + paramList.add(leave.getStudentId()); + } + if (null != leave.getTeacherId() && leave.getTeacherId() > 0) { + sql += " and l.teacher_id = ?"; + paramList.add(leave.getTeacherId()); + } + if (!StringUtils.isEmpty(leave.getStatus())) { + sql += " and l.status = ?"; + paramList.add(leave.getStatus()); + } + List res = getListBean(JdbcUtils.getConnection(), sql, LeaveView.class,paramList.toArray()); + JdbcUtils.closeResource(); + return res; + } + + /** + * @see com.chinasofti.dao.LeaveDao#findLeaveByTeacherIdsAndStatus(java.lang.String) + * @Function: findLeaveByTeacherIdsAndStatus + * @Description: 根据教师id与状态查询 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findLeaveByTeacherIdsAndStatus(String teacherIds) { + List paramList = new ArrayList(); + String sql = "select * from smms_leave where status = ? and teacher_id in (" +teacherIds+")"; + paramList.add(LeaveStatus.WAIT.getstatus()); + List res = getListBean(JdbcUtils.getConnection(), sql, Leave.class,paramList.toArray()); + JdbcUtils.closeResource(); + return res; + } + + /** + * @see com.chinasofti.dao.LeaveDao#findLeavePagesByClazzIds(com.chinasofti.model.Leave, com.chinasofti.model.view.Page, java.lang.String) + * @Function: findLeavePagesByClazzIds + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findLeavePagesByClazzIds(Leave leave, Page page, String clazzIds) { + String sql = "select l.* from smms_leave l where EXISTS (select 1 from smms_student s where s.id = l.student_id and s.clazz_id in ("+clazzIds+"))"; + List paramList = new ArrayList(); + if (null != leave.getStudentId() && leave.getStudentId() > 0) { + sql += " and l.student_id = ?"; + paramList.add(leave.getStudentId()); + } + if (null != leave.getTeacherId() && leave.getTeacherId() > 0) { + sql += " and l.teacher_id = ?"; + paramList.add(leave.getTeacherId()); + } + if (!StringUtils.isEmpty(leave.getStatus())) { + sql += " and l.status = ?"; + paramList.add(leave.getStatus()); + } + sql += " limit ?,?"; + paramList.add(page.getStart()); + paramList.add(page.getPageSize()); + List res = getListBean(JdbcUtils.getConnection(), sql, Leave.class,paramList.toArray()); + JdbcUtils.closeResource(); + return res; + } + + /** + * @see com.chinasofti.dao.LeaveDao#findLeaveViewsByClazzIds(com.chinasofti.model.Leave, java.lang.String) + * @Function: findLeaveViewsByClazzIds + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findLeaveViewsByClazzIds(Leave leave, String clazzIds) { + String sql = "select (select u1.name from smms_user u1,smms_student s where u1.id = s.user_id and s.id = l.student_id) student_name,(select u2.name from smms_user u2,smms_teacher t where u2.id = t.user_id and t.id = l.teacher_id) teacher_name,l.info,(CASE WHEN l.`status` = '0' THEN '等待审核' WHEN l.`status` = 1 THEN '审核通过' ELSE '审核不通过' END) AS `status`,l.remark,l.apply_time,l.approve_time from smms_leave l where EXISTS (select 1 from smms_student s where s.id = l.student_id and s.clazz_id in ("+clazzIds+"))"; + List paramList = new ArrayList(); + if (null != leave.getStudentId() && leave.getStudentId() > 0) { + sql += " and l.student_id = ?"; + paramList.add(leave.getStudentId()); + } + if (null != leave.getTeacherId() && leave.getTeacherId() > 0) { + sql += " and l.teacher_id = ?"; + paramList.add(leave.getTeacherId()); + } + if (!StringUtils.isEmpty(leave.getStatus())) { + sql += " and l.status = ?"; + paramList.add(leave.getStatus()); + } + List res = getListBean(JdbcUtils.getConnection(), sql, LeaveView.class,paramList.toArray()); + JdbcUtils.closeResource(); + return res; + } + + /** + * @see com.chinasofti.dao.LeaveDao#findApproveTeacherViews(long) + * @Function: findApproveTeacherViews + * @Description: 获取审批教师信息 + * + * @param: 教师ID + * @return:审批教师实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年5月17日 上午9:12:14 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年5月17日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findApproveTeacherViews(Long teacherId) { + String sql = "select distinct u.id user_id,t.id teacher_id,u.name,u.sex,u.user_name,u.phone,t.is_counselor from smms_teacher t,smms_user u,smms_clazz c where t.user_id = u.id and u.id = c.user_id"; + List paramList = new ArrayList(); + if (null != teacherId && teacherId > 0) { + sql += " and exists(select 1 from smms_teacher_clazz tc where c.id = tc.clazz_id and tc.teacher_id = ?)"; + paramList.add(teacherId); + } + List res = getListBean(JdbcUtils.getConnection(), sql, TeacherView.class,paramList.toArray()); + JdbcUtils.closeResource(); + return res; + } + +} diff --git a/SMMS/src/com/chinasofti/dao/impl/RoleDaoImpl.java b/SMMS/src/com/chinasofti/dao/impl/RoleDaoImpl.java new file mode 100644 index 0000000..ba1a616 --- /dev/null +++ b/SMMS/src/com/chinasofti/dao/impl/RoleDaoImpl.java @@ -0,0 +1,58 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.dao.impl + * @author: 李洪涛 + * @date: 2025年4月8日 上午9:13:06 + */ +package com.chinasofti.dao.impl; + +import com.chinasofti.dao.RoleDao; +import com.chinasofti.model.Role; +import com.chinasofti.pool.JdbcUtils; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: RoleDaoImpl.java +* @Description: 角色类数据层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年4月8日 上午9:13:06 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年4月8日 李洪涛 v1.0.0 新建文件 +*/ +public class RoleDaoImpl extends BasicDaoImpl implements RoleDao { + + /** + * @see com.chinasofti.dao.RoleDao#findRoleById(long) + * @Function: findRoleById + * @Description: 根据id查询 + * + * @param: id值 + * @return:角色实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public Role findRoleById(long id) { + String sql = "select * from smms_role where id = ?"; + Role role = getBean(JdbcUtils.getConnection(), sql, Role.class,id); + JdbcUtils.closeResource(); + return role; + } + +} diff --git a/SMMS/src/com/chinasofti/dao/impl/StudentDaoImpl.java b/SMMS/src/com/chinasofti/dao/impl/StudentDaoImpl.java new file mode 100644 index 0000000..d913ab7 --- /dev/null +++ b/SMMS/src/com/chinasofti/dao/impl/StudentDaoImpl.java @@ -0,0 +1,370 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.dao + * @author: 李洪涛 + * @date: 2025年3月27日 上午10:57:29 + */ +package com.chinasofti.dao.impl; + +import java.math.BigInteger; +import java.sql.Connection; +import java.sql.SQLException; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.druid.util.StringUtils; +import com.chinasofti.dao.StudentDao; +import com.chinasofti.enums.OperationResult; +import com.chinasofti.model.Student; +import com.chinasofti.model.User; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.StudentView; +import com.chinasofti.pool.JdbcUtils; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: StudentDao.java +* @Description: 学生类数据层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年3月27日 上午10:57:29 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年3月27日 李洪涛 v1.0.0 新建文件 +*/ +public class StudentDaoImpl extends BasicDaoImpl implements StudentDao { + + /** + * @see com.chinasofti.dao.StudentDao#insertStudent(com.chinasofti.model.Student) + * @Function: StudentDaoImpl.java + * @Description: 该函数的功能描述 + * + * @param:描述1描述 + * @return:返回结果描述 + * @throws:异常描述 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年5月3日 上午9:03:35 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年5月3日 李洪涛 v1.0.0 新建方法 + */ + @Override + public String insertStudent(Student student,User user) { + + String res = OperationResult.ERROR.getResult(); + try { + Connection connection = JdbcUtils.getAutoConnection(); + + String sql2 = "INSERT INTO smms_user (role_id, name, sex, user_name, pass_word, phone, create_by, create_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"; + List paramList2 = new ArrayList(); + paramList2.add(user.getRoleId()); + paramList2.add(user.getName()); + paramList2.add(user.getSex()); + paramList2.add(user.getUserName()); + paramList2.add(user.getPassWord()); + paramList2.add(user.getPhone()); + paramList2.add(user.getCreateBy()); + paramList2.add(user.getCreateTime()); + BigInteger primaryKey2 = insert(connection, sql2, BigInteger.class,paramList2.toArray()); + user.setId(primaryKey2.longValue()); + + String sql1 = "INSERT INTO smms_student (clazz_id, user_id, number, birthday, major, honor, score_now, create_by, create_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);"; + List paramList1 = new ArrayList(); + paramList1.add(student.getClazzId()); + paramList1.add(user.getId()); + paramList1.add(student.getNumber()); + paramList1.add(student.getBirthday()); + paramList1.add(student.getMajor()); + paramList1.add(student.getHonor()); + paramList1.add(student.getScoreNow()); + paramList1.add(student.getCreateBy()); + paramList1.add(student.getCreateTime()); + BigInteger primaryKey1 = insert(connection, sql1, BigInteger.class,paramList1.toArray()); + student.setId(primaryKey1.longValue()); + + connection.commit(); + res = OperationResult.SUCCESS.getResult(); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + JdbcUtils.closeResource(); + } + return res; + } + + /** + * @see com.chinasofti.dao.StudentDao#updateStudent(com.chinasofti.model.Student) + * @Function: StudentDaoImpl.java + * @Description: 该函数的功能描述 + * + * @param:描述1描述 + * @return:返回结果描述 + * @throws:异常描述 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年5月3日 上午9:03:35 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年5月3日 李洪涛 v1.0.0 新建方法 + */ + @Override + public String updateStudent(Student student,User user) { + String res = OperationResult.ERROR.getResult(); + try { + Connection connection = JdbcUtils.getAutoConnection(); + + String updateBy1 = " update_by = ?,update_time = ?"; + List paramList1 = new ArrayList(); + paramList1.add(student.getUpdateBy()); + paramList1.add(student.getUpdateTime()); + String update1 = ""; + if (null != student.getNumber() && 0 < student.getNumber()) { + update1 += ",number = ?"; + paramList1.add(student.getNumber()); + } + if (!StringUtils.isEmpty(student.getHonor())) { + update1 += ",honor = ?"; + paramList1.add(student.getHonor()); + } + if (null != student.getClazzId() && 0 < student.getClazzId()) { + update1 += ",clazz_id = ?"; + paramList1.add(student.getClazzId()); + } + if (0 < student.getScoreNow()) { + update1 += ",score_now = ?"; + paramList1.add(student.getScoreNow()); + } + paramList1.add(student.getId()); + String sql1 = "update smms_student set"+updateBy1+update1+" where id = ?"; + + String updateBy2 = " update_by = ?,update_time = ?"; + List paramList2 = new ArrayList(); + paramList2.add(user.getUserName()); + paramList2.add(LocalDateTime.now()); + String update2 = ""; + if (!StringUtils.isEmpty(user.getPassWord())) { + update2 += ",pass_word = ?"; + paramList2.add(user.getPassWord()); + } + if (!StringUtils.isEmpty(user.getName())) { + update2 += ",name = ?"; + paramList2.add(user.getName()); + } + if (!StringUtils.isEmpty(user.getSex())) { + update2 += ",sex = ?"; + paramList2.add(user.getSex()); + } + if (!StringUtils.isEmpty(user.getUserName())) { + update2 += ",user_name = ?"; + paramList2.add(user.getUserName()); + } + if (!StringUtils.isEmpty(user.getPhone())) { + update2 += ",phone = ?"; + paramList2.add(user.getPhone()); + } + paramList2.add(user.getId()); + String sql2 = "update smms_user set"+updateBy2+update2+"where id = ?"; + + int res1 = update(connection, sql1,paramList1.toArray()); + int res2 = update(connection, sql2,paramList2.toArray()); + if (res1+res2 > 0) { + res = OperationResult.SUCCESS.getResult(); + } + connection.commit(); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + JdbcUtils.closeResource(); + } + return res; + } + + /** + * @see com.chinasofti.dao.StudentDao#removeStudent(long) + * @Function: StudentDaoImpl.java + * @Description: 该函数的功能描述 + * + * @param:描述1描述 + * @return:返回结果描述 + * @throws:异常描述 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年5月3日 上午9:03:35 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年5月3日 李洪涛 v1.0.0 新建方法 + */ + @Override + public String removeStudent(String studentIds,String userIds) { + String res = OperationResult.ERROR.getResult(); + try { + String sql1 = "delete from smms_student where id in ("+studentIds+")"; + String sql2 = "delete from smms_leave where student_id in ("+studentIds+")"; + String sql3 = "delete from smms_user where id in ("+userIds+")"; + List paramList = new ArrayList(); + Connection connection = JdbcUtils.getAutoConnection(); + update(connection, sql1,paramList.toArray()); + update(connection, sql2,paramList.toArray()); + int updateCount = update(connection, sql3,paramList.toArray()); + if (updateCount > 0) { + res = OperationResult.SUCCESS.getResult(); + } + connection.commit(); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + JdbcUtils.closeResource(); + } + return res; + } + + /** + * @see com.chinasofti.dao.StudentDao#findStudentByUserId(long) + * @Function: findStudentByUserId + * @Description: 根据id查询 + * + * @param: userId值 + * @return:学生实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public Student findStudentByUserId(long userId) { + String sql = "select * from smms_student where user_id = ?"; + Student resStudent = getBean(JdbcUtils.getConnection(), sql, Student.class,userId); + JdbcUtils.closeResource(); + return resStudent; + } + + /** + * @see com.chinasofti.dao.StudentDao#findStudentViews(com.chinasofti.model.Student, com.chinasofti.model.view.Page) + * @Function: findStudentViews + * @Description: 查询所有记录 + * + * @param: 学生实体 + * @return:学生实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findStudentViews(StudentView studentView, Page page) { + String sql = "select u.id user_id ,s.id student_id,u.name,u.phone,u.sex,u.user_name,s.number,s.birthday,s.major,s.honor,s.score_now,s.clazz_id from smms_user u,smms_student s where u.id = s.user_id"; + List paramList = new ArrayList(); + if (!StringUtils.isEmpty(studentView.getName())) { + sql += " and u.name like ?"; + paramList.add("%"+studentView.getName()+"%"); + } + if (null != studentView.getClazzId() && studentView.getClazzId() > 0) { + sql += " and s.clazz_id = ?"; + paramList.add(studentView.getClazzId()); + } + sql += " limit ?,?"; + paramList.add(page.getStart()); + paramList.add(page.getPageSize()); + List res = getListBean(JdbcUtils.getConnection(), sql, StudentView.class,paramList.toArray()); + JdbcUtils.closeResource(); + return res; + } + + /** + * @see com.chinasofti.dao.StudentDao#findStudentViewsByClazzIds(java.lang.String, com.chinasofti.model.view.Page) + * @Function: findStudentViewsByClazzIds + * @Description: 根据班级查询学生实体 + * + * @param: 学生实体 + * @return:学生实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findStudentViewsByClazzIds(StudentView studentView,String clazzIds, Page page) { + String sql = "select u.id user_id ,s.id student_id,u.name,u.phone,u.sex,u.user_name,s.number,s.birthday,s.major,s.honor,s.score_now,s.clazz_id from smms_user u,smms_student s where u.id = s.user_id and s.clazz_id in ("+clazzIds+")"; + List paramList = new ArrayList(); + if (!StringUtils.isEmpty(studentView.getName())) { + sql += " and u.name like ?"; + paramList.add("%"+studentView.getName()+"%"); + } + if (null != studentView.getClazzId() && studentView.getClazzId() > 0) { + sql += " and s.clazz_id = ?"; + paramList.add(studentView.getClazzId()); + } + sql += " limit ?,?"; + paramList.add(page.getStart()); + paramList.add(page.getPageSize()); + List res = getListBean(JdbcUtils.getConnection(), sql, StudentView.class,paramList.toArray()); + JdbcUtils.closeResource(); + return res; + } + + /** + * @see com.chinasofti.dao.StudentDao#updateStudentScoreNow(int) + * @Function: updateStudentScoreNow + * @Description: 修改 + * + * @param: 本周学分变动 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void updateStudentScoreNow(int score,Student student) { + List paramList = new ArrayList(); + paramList.add(score); + paramList.add(student.getUpdateBy()); + paramList.add(student.getUpdateTime()); + paramList.add(student.getId()); + String sql = "update smms_student set score_now = score_now + ?,update_by = ?,update_time = ? where id = ?"; + update(JdbcUtils.getConnection(), sql,paramList.toArray()); + JdbcUtils.closeResource(); + } + +} diff --git a/SMMS/src/com/chinasofti/dao/impl/TeacherDaoImpl.java b/SMMS/src/com/chinasofti/dao/impl/TeacherDaoImpl.java new file mode 100644 index 0000000..30265a8 --- /dev/null +++ b/SMMS/src/com/chinasofti/dao/impl/TeacherDaoImpl.java @@ -0,0 +1,417 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.dao.impl + * @author: 李洪涛 + * @date: 2025年5月4日 下午10:55:15 + */ +package com.chinasofti.dao.impl; + +import java.math.BigInteger; +import java.sql.Connection; +import java.sql.SQLException; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.druid.util.StringUtils; +import com.chinasofti.dao.TeacherDao; +import com.chinasofti.enums.OperationResult; +import com.chinasofti.model.Teacher; +import com.chinasofti.model.TeacherClazz; +import com.chinasofti.model.User; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.TeacherView; +import com.chinasofti.pool.JdbcUtils; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: TeacherDaoImpl.java +* @Description: 教师数据层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月4日 下午10:55:15 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月4日 李洪涛 v1.0.0 新建文件 +*/ +public class TeacherDaoImpl extends BasicDaoImpl implements TeacherDao{ + + /** + * @see com.chinasofti.dao.TeacherDao#insertTeacher(com.chinasofti.model.Teacher) + * @Function: insertTeacher + * @Description: 添加 + * + * @param: 教师实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public String insertTeacher(Teacher teacher,User user,TeacherClazz teacherClazz,String [] clazzIds) { + + String res = OperationResult.ERROR.getResult(); + try { + Connection connection = JdbcUtils.getAutoConnection(); + + String sql1 = "INSERT INTO smms_user (role_id, name, sex, user_name, pass_word, phone, create_by, create_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"; + List paramList1 = new ArrayList(); + paramList1.add(user.getRoleId()); + paramList1.add(user.getName()); + paramList1.add(user.getSex()); + paramList1.add(user.getUserName()); + paramList1.add(user.getPassWord()); + paramList1.add(user.getPhone()); + paramList1.add(user.getCreateBy()); + paramList1.add(user.getCreateTime()); + BigInteger primaryKey1 = insert(connection, sql1, BigInteger.class,paramList1.toArray()); + user.setId(primaryKey1.longValue()); + + String sql2 = "INSERT INTO smms_teacher (user_id, is_counselor, create_by, create_time) VALUES (?, ?, ?, ?);"; + List paramList2 = new ArrayList(); + paramList2.add(user.getId()); + paramList2.add(teacher.getIsCounselor()); + paramList2.add(teacher.getCreateBy()); + paramList2.add(teacher.getCreateTime()); + BigInteger primaryKey2 = insert(connection, sql2, BigInteger.class,paramList2.toArray()); + teacher.setId(primaryKey2.longValue()); + + for (String clazzId : clazzIds) { + teacherClazz.setClazzId(Long.parseLong(clazzId)); + String sql = "INSERT INTO smms_teacher_clazz (teacher_id, clazz_id) VALUES (?, ?);"; + List paramList = new ArrayList(); + paramList.add(teacher.getId()); + paramList.add(teacherClazz.getClazzId()); + insert(JdbcUtils.getConnection(), sql, BigInteger.class,paramList.toArray()); + } + + connection.commit(); + res = OperationResult.SUCCESS.getResult(); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + JdbcUtils.closeResource(); + } + + return res; + } + + /** + * @see com.chinasofti.dao.TeacherDao#updateTeacher(com.chinasofti.model.Teacher) + * @Function: updateTeacher + * @Description: 修改 + * + * @param: 教师实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public String updateTeacher(Teacher teacher,String [] clazzIds,User user) { + + String res = OperationResult.ERROR.getResult(); + try { + Connection connection = JdbcUtils.getAutoConnection(); + + String updateBy1 = " update_by = ?,update_time = ?"; + List paramList1 = new ArrayList(); + paramList1.add(teacher.getUpdateBy()); + paramList1.add(teacher.getUpdateTime()); + String update1 = ""; + if (!StringUtils.isEmpty(teacher.getIsCounselor())) { + update1 += ",is_counselor = ?"; + paramList1.add(teacher.getIsCounselor()); + } + paramList1.add(teacher.getId()); + String sql1 = "update smms_teacher set"+updateBy1+update1+" where id = ?"; + update(connection, sql1,paramList1.toArray()); + + String updateBy2 = " update_by = ?,update_time = ?"; + List paramList2 = new ArrayList(); + paramList2.add(user.getUserName()); + paramList2.add(LocalDateTime.now()); + String update2 = ""; + if (!StringUtils.isEmpty(user.getPassWord())) { + update2 += ",pass_word = ?"; + paramList2.add(user.getPassWord()); + } + if (!StringUtils.isEmpty(user.getName())) { + update2 += ",name = ?"; + paramList2.add(user.getName()); + } + if (!StringUtils.isEmpty(user.getSex())) { + update2 += ",sex = ?"; + paramList2.add(user.getSex()); + } + if (!StringUtils.isEmpty(user.getUserName())) { + update2 += ",user_name = ?"; + paramList2.add(user.getUserName()); + } + if (!StringUtils.isEmpty(user.getPhone())) { + update2 += ",phone = ?"; + paramList2.add(user.getPhone()); + } + paramList2.add(user.getId()); + String sql2 = "update smms_user set"+updateBy2+update2+"where id = ?"; + update(connection, sql2,paramList2.toArray()); + + String sql3 = "delete from smms_teacher_clazz where teacher_id = ?"; + update(connection, sql3,teacher.getId()); + + for (String clazzId : clazzIds) { + TeacherClazz teacherClazz = new TeacherClazz(); + teacherClazz.setTeacherId(teacher.getId()); + teacherClazz.setClazzId(Long.parseLong(clazzId)); + String sql = "INSERT INTO smms_teacher_clazz (teacher_id, clazz_id) VALUES (?, ?);"; + List paramList = new ArrayList(); + paramList.add(teacherClazz.getTeacherId()); + paramList.add(teacherClazz.getClazzId()); + BigInteger primaryKey = insert(JdbcUtils.getConnection(), sql, BigInteger.class,paramList.toArray()); + teacherClazz.setId(primaryKey.longValue()); + } + + connection.commit(); + res = OperationResult.SUCCESS.getResult(); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + JdbcUtils.closeResource(); + } + return res; + } + + /** + * @see com.chinasofti.dao.TeacherDao#removeTeacher(long) + * @Function: removeTeacher + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void removeTeacher(long id) { + String sql = "delete from smms_teacher where id = ?"; + update(JdbcUtils.getConnection(), sql,id); + JdbcUtils.closeResource(); + } + + /** + * @see com.chinasofti.dao.TeacherDao#findTeacher(com.chinasofti.model.Teacher) + * @Function: findTeacher + * @Description: 查询 + * + * @param: 教师实体 + * @return:教师实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public Teacher findTeacher(Teacher teacher) { + List paramList = new ArrayList(); + String where = ""; + if (null != teacher.getUserId() && teacher.getUserId() > 0) { + where += " and user_id = ?"; + paramList.add(teacher.getUserId()); + } + String sql = "select * from smms_teacher where 1=1" + where; + Teacher resTeacher = getBean(JdbcUtils.getConnection(), sql, Teacher.class,paramList.toArray()); + JdbcUtils.closeResource(); + return resTeacher; + } + + /** + * @see com.chinasofti.dao.TeacherDao#findClazzIdsByTeacherId(java.lang.Long) + * @Function: findClazzIdsByTeacherId + * @Description: 查询 + * + * @param: teacherID + * @return:List + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findClazzIdsByTeacherId(Long teacherID) { + String sql = "select * from smms_teacher_clazz where teacher_id = ?"; + List teacherClazzs = getListBean(JdbcUtils.getConnection(), sql, TeacherClazz.class,teacherID); + List clazzIds = new ArrayList(); + for (TeacherClazz teacherClazz : teacherClazzs) { + clazzIds.add(teacherClazz.getClazzId()); + } + JdbcUtils.closeResource(); + return clazzIds; + } + + /** + * @see com.chinasofti.dao.TeacherDao#findTeacherViews(com.chinasofti.model.view.TeacherView, com.chinasofti.model.view.Page) + * @Function: findTeacherViews + * @Description: 查询所有记录 + * + * @param: 教师实体 + * @return:教师实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findTeacherViews(TeacherView teacherView, Page page) { + String sqlExists = ""; + String sqlWhere = ""; + List paramList = new ArrayList(); + if (null != teacherView.getClazzId() && teacherView.getClazzId() > 0) { + sqlExists += " and tc.clazz_id = ?"; + paramList.add(teacherView.getClazzId()); + } + if (!StringUtils.isEmpty(teacherView.getName())) { + sqlWhere += " and u.name like ?"; + paramList.add("%"+teacherView.getName()+"%"); + } + if (null != teacherView.getUserId() && teacherView.getUserId() > 0) { + sqlWhere += " and u.id = ?"; + paramList.add(teacherView.getUserId()); + } + String sql = "select u.id user_id,t.id teacher_id,u.name,u.sex,u.user_name,u.phone,t.is_counselor from smms_teacher t,smms_user u where t.user_id = u.id and EXISTS(SELECT 1 FROM smms_teacher_clazz tc where t.id = tc.teacher_id"+sqlExists+")"; + sql += sqlWhere; + sql += " limit ?,?"; + paramList.add(page.getStart()); + paramList.add(page.getPageSize()); + List res = getListBean(JdbcUtils.getConnection(), sql, TeacherView.class,paramList.toArray()); + JdbcUtils.closeResource(); + return res; + } + + /** + * @see com.chinasofti.dao.TeacherDao#insertTeacherClazz(com.chinasofti.model.TeacherClazz) + * @Function: insertTeacherClazz + * @Description: 添加 + * + * @param: 教师与班级关联关系实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public TeacherClazz insertTeacherClazz(TeacherClazz teacherClazz) { + String sql = "INSERT INTO smms_teacher_clazz (teacher_id, clazz_id) VALUES (?, ?);"; + List paramList = new ArrayList(); + paramList.add(teacherClazz.getTeacherId()); + paramList.add(teacherClazz.getClazzId()); + BigInteger primaryKey = insert(JdbcUtils.getConnection(), sql, BigInteger.class,paramList.toArray()); + teacherClazz.setId(primaryKey.longValue()); + JdbcUtils.closeResource(); + return teacherClazz; + } + + /** + * @see com.chinasofti.dao.TeacherDao#removeTeacherClazz(long) + * @Function: removeTeacherClazz + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void removeTeacherClazz(long teacherId) { + String sql = "delete from smms_teacher_clazz where teacher_id = ?"; + update(JdbcUtils.getConnection(), sql,teacherId); + JdbcUtils.closeResource(); + } + + /** + * @see com.chinasofti.dao.TeacherDao#findTeacherByStudentId(java.lang.Long) + * @Function: findTeacherByStudentId + * @Description: 查询 + * + * @param: 教师实体 + * @return:教师实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public Teacher findTeacherByStudentId(Long studentId) { + String sql = "select * from smms_teacher where user_id = (select c.user_id from smms_student s ,smms_clazz c,smms_user u where s.clazz_id = c.id and c.user_id = u.id and s.id = ?)"; + Teacher resTeacher = getBean(JdbcUtils.getConnection(), sql, Teacher.class,studentId); + JdbcUtils.closeResource(); + return resTeacher; + } + +} diff --git a/SMMS/src/com/chinasofti/dao/impl/UserDaoImpl.java b/SMMS/src/com/chinasofti/dao/impl/UserDaoImpl.java new file mode 100644 index 0000000..78d9edf --- /dev/null +++ b/SMMS/src/com/chinasofti/dao/impl/UserDaoImpl.java @@ -0,0 +1,221 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.dao + * @author: 李洪涛 + * @date: 2025年3月27日 上午10:58:43 + */ +package com.chinasofti.dao.impl; + +import java.math.BigInteger; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.druid.util.StringUtils; +import com.chinasofti.dao.UserDao; +import com.chinasofti.model.User; +import com.chinasofti.pool.JdbcUtils; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: UserDao.java +* @Description: 用户数据层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年3月27日 上午10:58:43 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年3月27日 李洪涛 v1.0.0 新建文件 +*/ +public class UserDaoImpl extends BasicDaoImpl implements UserDao { + + /** + * @see com.chinasofti.dao.UserDao#insertUser(com.chinasofti.model.User) + * @Function: insertUser + * @Description: 添加 + * + * @param: 用户实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public User insertUser(User user) { + String sql = "INSERT INTO smms_user (role_id, name, sex, user_name, pass_word, phone, create_by, create_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"; + List paramList = new ArrayList(); + paramList.add(user.getRoleId()); + paramList.add(user.getName()); + paramList.add(user.getSex()); + paramList.add(user.getUserName()); + paramList.add(user.getPassWord()); + paramList.add(user.getPhone()); + paramList.add(user.getCreateBy()); + paramList.add(user.getCreateTime()); + BigInteger primaryKey = insert(JdbcUtils.getConnection(), sql, BigInteger.class,paramList.toArray()); + user.setId(primaryKey.longValue()); + JdbcUtils.closeResource(); + return user; + } + + /** + * @see com.chinasofti.dao.UserDao#updateUser(com.chinasofti.model.User) + * @Function: updateStudent + * @Description: 修改 + * + * @param: 用户实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void updateUser(User user) { + String updateBy = " update_by = ?,update_time = ?"; + List paramList = new ArrayList(); + paramList.add(user.getUserName()); + paramList.add(LocalDateTime.now()); + String update = ""; + if (!StringUtils.isEmpty(user.getPassWord())) { + update += ",pass_word = ?"; + paramList.add(user.getPassWord()); + } + if (!StringUtils.isEmpty(user.getName())) { + update += ",name = ?"; + paramList.add(user.getName()); + } + if (!StringUtils.isEmpty(user.getSex())) { + update += ",sex = ?"; + paramList.add(user.getSex()); + } + if (!StringUtils.isEmpty(user.getUserName())) { + update += ",user_name = ?"; + paramList.add(user.getUserName()); + } + if (!StringUtils.isEmpty(user.getPhone())) { + update += ",phone = ?"; + paramList.add(user.getPhone()); + } + paramList.add(user.getId()); + String sql = "update smms_user set"+updateBy+update+"where id = ?"; + update(JdbcUtils.getConnection(), sql,paramList.toArray()); + JdbcUtils.closeResource(); + } + + /** + * @see com.chinasofti.dao.UserDao#removeUser(long) + * @Function: removeStudent + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void removeUser(long id) { + String sql = "delete from smms_user where id = ?"; + update(JdbcUtils.getConnection(), sql,id); + JdbcUtils.closeResource(); + } + + /** + * @see com.chinasofti.dao.UserDao#findUserById(long) + * @Function: findUser + * @Description: 查询单个用户 + * + * @param: User + * @return:用户实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public User findUser(User user){ + List paramList = new ArrayList(); + String where = ""; + if (!StringUtils.isEmpty(user.getUserName())) { + where += " and user_name = ?"; + paramList.add(user.getUserName()); + } + if (!StringUtils.isEmpty(user.getPassWord())) { + where += " and pass_word = ?"; + paramList.add(user.getPassWord()); + } + if (null != user.getId() && user.getId() > 0) { + where += " and id = ?"; + paramList.add(user.getId()); + } + String sql = "select * from smms_user where 1=1" + where; + User resUser = getBean(JdbcUtils.getConnection(), sql, User.class,paramList.toArray()); + JdbcUtils.closeResource(); + return resUser; + } + + /** + * @see com.chinasofti.dao.UserDao#findAll(com.chinasofti.model.User) + * @Function: findStudents + * @Description: 查询所有记录 + * + * @param: 用户实体 + * @return:用户实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findUsers(User user) { + String sql = "select * from smms_user where 1=1"; + List paramList = new ArrayList(); + if (null != user.getRoleId() && user.getRoleId() > 0) { + sql += " and role_id = ?"; + paramList.add(user.getRoleId()); + } + List users = getListBean(JdbcUtils.getConnection(), sql, User.class,paramList.toArray()); + JdbcUtils.closeResource(); + return users; + } + +} diff --git a/SMMS/src/com/chinasofti/enums/CreditType.java b/SMMS/src/com/chinasofti/enums/CreditType.java new file mode 100644 index 0000000..810c2ed --- /dev/null +++ b/SMMS/src/com/chinasofti/enums/CreditType.java @@ -0,0 +1,50 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.enums + * @author: mrliy + * @date: 2025年5月16日 上午9:30:06 + */ +package com.chinasofti.enums; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: CreditType.java +* @Description: 学分变动范围 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月16日 上午9:30:06 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月16日 李洪涛 v1.0.0 新建文件 +*/ +public enum CreditType { + + THIS_WEEK("1","本周学分"), + THIS_DISCIPLINE("2","本科学分"); + + private final String type; + private final String info; + + CreditType(String type, String info) + { + this.type = type; + this.info = info; + } + + public String getType() + { + return type; + } + + public String getInfo() + { + return info; + } + +} diff --git a/SMMS/src/com/chinasofti/enums/DeductCredit.java b/SMMS/src/com/chinasofti/enums/DeductCredit.java new file mode 100644 index 0000000..a1dc359 --- /dev/null +++ b/SMMS/src/com/chinasofti/enums/DeductCredit.java @@ -0,0 +1,49 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.enums + * @author: 李洪涛 + * @date: 2025年5月16日 上午10:44:12 + */ +package com.chinasofti.enums; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: DeductPoints.java +* @Description: 扣分项 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月16日 上午10:44:12 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月16日 李洪涛 v1.0.0 新建文件 +*/ +public enum DeductCredit { + + LEAVE(-2,"请假扣分"); + + private final int credit; + private final String info; + + DeductCredit(int credit, String info) + { + this.credit = credit; + this.info = info; + } + + public int getCredit() + { + return credit; + } + + public String getInfo() + { + return info; + } + +} diff --git a/SMMS/src/com/chinasofti/enums/FileName.java b/SMMS/src/com/chinasofti/enums/FileName.java new file mode 100644 index 0000000..06348d6 --- /dev/null +++ b/SMMS/src/com/chinasofti/enums/FileName.java @@ -0,0 +1,50 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.enums + * @author: 李洪涛 + * @date: 2025年5月11日 下午8:26:37 + */ +package com.chinasofti.enums; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: FileName.java +* @Description: 文件名称枚举 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月11日 下午8:26:37 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月11日 李洪涛 v1.0.0 新建文件 +*/ +public enum FileName { + + STUDENT_TEMPLATE_NAME("学生导入模板.xls","学生导入模板名称"), + STUDENT_TEMPLATE_PATCH("D:\\eclipse-jee-2019-09-R-win32-x86_64\\workspace\\SMMS\\WebContent\\static\\file","学生导入模板存放路径"); + + private final String name; + private final String info; + + FileName(String name, String info) + { + this.name = name; + this.info = info; + } + + public String getName() + { + return name; + } + + public String getInfo() + { + return info; + } + +} diff --git a/SMMS/src/com/chinasofti/enums/IsCounselor.java b/SMMS/src/com/chinasofti/enums/IsCounselor.java new file mode 100644 index 0000000..7260713 --- /dev/null +++ b/SMMS/src/com/chinasofti/enums/IsCounselor.java @@ -0,0 +1,50 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.enums + * @author: 李洪涛 + * @date: 2025年5月16日 下午5:53:30 + */ +package com.chinasofti.enums; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: IsCounselor.java +* @Description: 是否是导员 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月16日 下午5:53:30 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月16日 李洪涛 v1.0.0 新建文件 +*/ +public enum IsCounselor { + + YES("y","是"), + NO("n","不是"); + + private final String is; + private final String info; + + IsCounselor(String is, String info) + { + this.is = is; + this.info = info; + } + + public String getIs() + { + return is; + } + + public String getInfo() + { + return info; + } + +} diff --git a/SMMS/src/com/chinasofti/enums/LeaveStatus.java b/SMMS/src/com/chinasofti/enums/LeaveStatus.java new file mode 100644 index 0000000..cf042a0 --- /dev/null +++ b/SMMS/src/com/chinasofti/enums/LeaveStatus.java @@ -0,0 +1,51 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.enums + * @author: 李洪涛 + * @date: 2025年5月11日 上午12:49:38 + */ +package com.chinasofti.enums; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: LeaveStatus.java +* @Description: 该类的功能描述 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月11日 上午12:49:38 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月11日 李洪涛 v1.0.0 新建文件 +*/ +public enum LeaveStatus { + + WAIT("0", "等待审核"), + PASS("1", "审核通过"), + REFUSE("2", "审核不通过"); + + private final String status; + private final String info; + + LeaveStatus(String status, String info) + { + this.status = status; + this.info = info; + } + + public String getstatus() + { + return status; + } + + public String getInfo() + { + return info; + } + +} diff --git a/SMMS/src/com/chinasofti/enums/MathType.java b/SMMS/src/com/chinasofti/enums/MathType.java new file mode 100644 index 0000000..4b8dac9 --- /dev/null +++ b/SMMS/src/com/chinasofti/enums/MathType.java @@ -0,0 +1,50 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.enums + * @author: 李洪涛 + * @date: 2025年5月15日 下午5:14:48 + */ +package com.chinasofti.enums; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: MathType.java +* @Description: 运算类型 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月15日 下午5:14:48 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月15日 李洪涛 v1.0.0 新建文件 +*/ +public enum MathType { + + MINUS_SIGN("1","负号"), + POSITIVE_SIGN("2","正号"); + + private final String sign; + private final String info; + + MathType(String sign, String info) + { + this.sign = sign; + this.info = info; + } + + public String getSign() + { + return sign; + } + + public String getInfo() + { + return info; + } + +} diff --git a/SMMS/src/com/chinasofti/enums/OperationResult.java b/SMMS/src/com/chinasofti/enums/OperationResult.java new file mode 100644 index 0000000..514a695 --- /dev/null +++ b/SMMS/src/com/chinasofti/enums/OperationResult.java @@ -0,0 +1,50 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.enums + * @author: 李洪涛 + * @date: 2025年5月17日 下午4:15:49 + */ +package com.chinasofti.enums; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: OperationResult.java +* @Description: 操作结果 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月17日 下午4:15:49 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月17日 李洪涛 v1.0.0 新建文件 +*/ +public enum OperationResult { + + SUCCESS("success", "成功"), + ERROR("error", "失败"); + + private final String result; + private final String info; + + OperationResult(String result, String info) + { + this.result = result; + this.info = info; + } + + public String getResult() + { + return result; + } + + public String getInfo() + { + return info; + } + +} diff --git a/SMMS/src/com/chinasofti/enums/PageScope.java b/SMMS/src/com/chinasofti/enums/PageScope.java new file mode 100644 index 0000000..60212e7 --- /dev/null +++ b/SMMS/src/com/chinasofti/enums/PageScope.java @@ -0,0 +1,47 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.enums + * @author: mrliy + * @date: 2025年5月16日 下午3:19:03 + */ +package com.chinasofti.enums; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: PageScope.java +* @Description: 分页范围 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月16日 下午3:19:03 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月16日 李洪涛 v1.0.0 新建文件 +*/ +public enum PageScope { + CURRENT_PAGE(1,"起始"),PAGE_SIZE(99999,"结束"); + + private final int num; + private final String info; + + PageScope(int num, String info) + { + this.num = num; + this.info = info; + } + + public int getNum() + { + return num; + } + + public String getInfo() + { + return info; + } +} diff --git a/SMMS/src/com/chinasofti/enums/PassWord.java b/SMMS/src/com/chinasofti/enums/PassWord.java new file mode 100644 index 0000000..ab1b0b7 --- /dev/null +++ b/SMMS/src/com/chinasofti/enums/PassWord.java @@ -0,0 +1,50 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.enums + * @author: 李洪涛 + * @date: 2025年5月3日 下午3:06:28 + */ +package com.chinasofti.enums; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: PassWord.java +* @Description: 默认密码枚举类 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月3日 下午3:06:28 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月3日 李洪涛 v1.0.0 修改原因 +*/ +public enum PassWord { + + TEACHER("Teacher123456", "老师"), + STUDENT("111111", "学生"); + + private final String passWord; + private final String info; + + PassWord(String passWord, String info) + { + this.passWord = passWord; + this.info = info; + } + + public String getPassWord() + { + return passWord; + } + + public String getInfo() + { + return info; + } + +} diff --git a/SMMS/src/com/chinasofti/enums/RoleCode.java b/SMMS/src/com/chinasofti/enums/RoleCode.java new file mode 100644 index 0000000..c6b0fad --- /dev/null +++ b/SMMS/src/com/chinasofti/enums/RoleCode.java @@ -0,0 +1,51 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.enums + * @author: 李洪涛 + * @date: 2025年5月17日 上午10:42:33 + */ +package com.chinasofti.enums; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: RoleCode.java +* @Description: 角色码值 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年4月8日 上午9:02:05 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年4月8日 李洪涛 v1.0.0 新建文件 +*/ +public enum RoleCode { + + ADMIN("admin", "管理员"), + TEACHER("teacher", "老师"), + STUDENT("student", "学生"); + + private final String code; + private final String info; + + RoleCode(String code, String info) + { + this.code = code; + this.info = info; + } + + public String getCode() + { + return code; + } + + public String getInfo() + { + return info; + } + +} diff --git a/SMMS/src/com/chinasofti/enums/RoleId.java b/SMMS/src/com/chinasofti/enums/RoleId.java new file mode 100644 index 0000000..f57da13 --- /dev/null +++ b/SMMS/src/com/chinasofti/enums/RoleId.java @@ -0,0 +1,51 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.enums + * @author: 李洪涛 + * @date: 2025年4月8日 上午9:02:05 + */ +package com.chinasofti.enums; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: RoleId.java +* @Description: 角色ID值 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年4月8日 上午9:02:05 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年4月8日 李洪涛 v1.0.0 新建文件 +*/ +public enum RoleId { + + ADMIN(1l, "管理员"), + TEACHER(2l, "老师"), + STUDENT(3l, "学生"); + + private final long id; + private final String info; + + RoleId(long id, String info) + { + this.id = id; + this.info = info; + } + + public long getId() + { + return id; + } + + public String getInfo() + { + return info; + } + +} diff --git a/SMMS/src/com/chinasofti/enums/ScoreNow.java b/SMMS/src/com/chinasofti/enums/ScoreNow.java new file mode 100644 index 0000000..33eafef --- /dev/null +++ b/SMMS/src/com/chinasofti/enums/ScoreNow.java @@ -0,0 +1,49 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.enums + * @author: 李洪涛 + * @date: 2025年5月11日 下午7:31:04 + */ +package com.chinasofti.enums; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: ScoreNow.java +* @Description: 默认成绩 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月11日 下午7:31:04 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月11日 李洪涛 v1.0.0 新建文件 +*/ +public enum ScoreNow { + + SCORE_WEEK(100,"默认每周学分100"); + + private final int score; + private final String info; + + ScoreNow(int score, String info) + { + this.score = score; + this.info = info; + } + + public int getScore() + { + return score; + } + + public String getInfo() + { + return info; + } + +} diff --git a/SMMS/src/com/chinasofti/enums/Sex.java b/SMMS/src/com/chinasofti/enums/Sex.java new file mode 100644 index 0000000..579c351 --- /dev/null +++ b/SMMS/src/com/chinasofti/enums/Sex.java @@ -0,0 +1,50 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.enums + * @author: 李洪涛 + * @date: 2025年5月11日 下午6:35:54 + */ +package com.chinasofti.enums; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: Sex.java +* @Description: 性别 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月11日 下午6:35:54 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月11日 李洪涛 v1.0.0 新建文件 +*/ +public enum Sex { + + MAN("0", "男"), + WOMAN("1", "女"); + + private final String sex; + private final String info; + + Sex(String sex, String info) + { + this.sex = sex; + this.info = info; + } + + public String getSex() + { + return sex; + } + + public String getInfo() + { + return info; + } + +} diff --git a/SMMS/src/com/chinasofti/filter/CharacterFilter.java b/SMMS/src/com/chinasofti/filter/CharacterFilter.java new file mode 100644 index 0000000..fcaf0f1 --- /dev/null +++ b/SMMS/src/com/chinasofti/filter/CharacterFilter.java @@ -0,0 +1,101 @@ +package com.chinasofti.filter; + +import java.io.IOException; + +import javax.servlet.DispatcherType; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.annotation.WebFilter; +import javax.servlet.annotation.WebInitParam; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: CharacterFilter.java +* @Description: 字符集过滤器 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年3月27日 下午2:59:44 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年3月27日 李洪涛 v1.0.0 新建文件 + */ +@WebFilter( + dispatcherTypes = { + DispatcherType.REQUEST, + DispatcherType.FORWARD, + DispatcherType.INCLUDE, + DispatcherType.ERROR + }, + initParams = { + @WebInitParam(name = "character", value = "UTF-8") + }, + urlPatterns = { "/*" } + ) +public class CharacterFilter implements Filter { + + private String character; + + /** + * + * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) + * @Function: CharacterFilter.java + * @Description: 拦截 + * + * @param: request + * @param: response + * @param: chain + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年3月27日 下午3:01:31 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年3月27日 李洪涛 v1.0.0 新建方法 + */ + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + HttpServletRequest req = (HttpServletRequest) request; + HttpServletResponse res = (HttpServletResponse) response; + req.setCharacterEncoding(character); + res.setContentType("text/html;charset=" + character); + chain.doFilter(request, response); + } + + /** + * + * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) + * @Function: CharacterFilter.java + * @Description: 初始化方法 + * + * @param:fConfig + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年3月27日 下午3:02:48 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年3月27日 李洪涛 v1.0.0 新建方法 + */ + public void init(FilterConfig fConfig) throws ServletException { + character=fConfig.getInitParameter("character"); + } + +} diff --git a/SMMS/src/com/chinasofti/filter/LoginFilter.java b/SMMS/src/com/chinasofti/filter/LoginFilter.java new file mode 100644 index 0000000..6df7f4a --- /dev/null +++ b/SMMS/src/com/chinasofti/filter/LoginFilter.java @@ -0,0 +1,39 @@ +package com.chinasofti.filter; + +import java.io.IOException; + +import javax.servlet.DispatcherType; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.annotation.WebFilter; +import javax.servlet.http.HttpServletRequest; + +@WebFilter(dispatcherTypes = { + DispatcherType.REQUEST, + DispatcherType.FORWARD, + DispatcherType.INCLUDE, + DispatcherType.ERROR + } + , urlPatterns = { "/*" }) +public class LoginFilter implements Filter { + + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + HttpServletRequest httpRequest = (HttpServletRequest) request; + String uri = httpRequest.getRequestURI(); + if (uri.contains("/index.jsp") || uri.contains("/login.jsp") || uri.contains("/LoginServlet") || uri.contains("/static")){ + chain.doFilter(request, response); + }else { + Object user = httpRequest.getSession().getAttribute("user"); + if (user!=null){ + chain.doFilter(request, response); + }else { + httpRequest.setAttribute("msg","*您尚未登录,请登录"); + request.getRequestDispatcher("/index.jsp").forward(httpRequest,response); + } + } + } + +} diff --git a/SMMS/src/com/chinasofti/model/Clazz.java b/SMMS/src/com/chinasofti/model/Clazz.java new file mode 100644 index 0000000..102202e --- /dev/null +++ b/SMMS/src/com/chinasofti/model/Clazz.java @@ -0,0 +1,130 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.model + * @author: 李洪涛 + * @date: 2025年4月8日 上午8:03:22 + */ +package com.chinasofti.model; + +import java.time.LocalDateTime; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: Clazz.java +* @Description: 班级实体 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年4月8日 上午8:03:22 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年4月8日 李洪涛 v1.0.0 新建文件 +*/ +public class Clazz { + + private Long id;//主键 + + private Long userId;//责任人ID + + private String clazzName;//班级名称 + + private String clazzCode;//班级编码 + + private String clazzs;//学级 + + private String clazzAds;//学届 + + private String createBy;//创建者 + + private LocalDateTime createTime;//创建时间 + + private String updateBy;//更新者 + + private LocalDateTime updateTime;//更新时间 + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getClazzName() { + return clazzName; + } + + public void setClazzName(String clazzName) { + this.clazzName = clazzName; + } + + public String getClazzCode() { + return clazzCode; + } + + public void setClazzCode(String clazzCode) { + this.clazzCode = clazzCode; + } + + public String getClazzs() { + return clazzs; + } + + public void setClazzs(String clazzs) { + this.clazzs = clazzs; + } + + public String getClazzAds() { + return clazzAds; + } + + public void setClazzAds(String clazzAds) { + this.clazzAds = clazzAds; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public LocalDateTime getCreateTime() { + return createTime; + } + + public void setCreateTime(LocalDateTime createTime) { + this.createTime = createTime; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } + + public LocalDateTime getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(LocalDateTime updateTime) { + this.updateTime = updateTime; + } + +} diff --git a/SMMS/src/com/chinasofti/model/CreditRecords.java b/SMMS/src/com/chinasofti/model/CreditRecords.java new file mode 100644 index 0000000..3328d27 --- /dev/null +++ b/SMMS/src/com/chinasofti/model/CreditRecords.java @@ -0,0 +1,140 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.model + * @author: 李洪涛 + * @date: 2025年4月8日 上午8:03:22 + */ +package com.chinasofti.model; + +import java.time.LocalDateTime; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: Clazz.java +* @Description: 学分记录信息实体 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年4月8日 上午8:03:22 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年4月8日 李洪涛 v1.0.0 新建文件 +*/ +public class CreditRecords { + + private Long id;//主键 + + private Integer credit;//增减学分 + + private String creditType;//学分增减范围,1:本周学分;2:本科学分 + + private String remark;//学分增减原因 + + private Long number;//学号 + + private String studentName;//学生姓名 + + private Long clazzId;//班级ID + + private String clazzName;//班级名称 + + private String userName;//操作人姓名 + + private String createBy;//创建者 + + private LocalDateTime createTime;//创建时间 + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Integer getCredit() { + return credit; + } + + public void setCredit(Integer credit) { + this.credit = credit; + } + + public String getCreditType() { + return creditType; + } + + public void setCreditType(String creditType) { + this.creditType = creditType; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public Long getNumber() { + return number; + } + + public void setNumber(Long number) { + this.number = number; + } + + public Long getClazzId() { + return clazzId; + } + + public void setClazzId(Long clazzId) { + this.clazzId = clazzId; + } + + public String getStudentName() { + return studentName; + } + + public void setStudentName(String studentName) { + this.studentName = studentName; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public LocalDateTime getCreateTime() { + return createTime; + } + + public void setCreateTime(LocalDateTime createTime) { + this.createTime = createTime; + } + + public String getClazzName() { + return clazzName; + } + + public void setClazzName(String clazzName) { + this.clazzName = clazzName; + } + +} diff --git a/SMMS/src/com/chinasofti/model/Leave.java b/SMMS/src/com/chinasofti/model/Leave.java new file mode 100644 index 0000000..93b68aa --- /dev/null +++ b/SMMS/src/com/chinasofti/model/Leave.java @@ -0,0 +1,150 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.model + * @author: 李洪涛 + * @date: 2025年5月9日 上午11:05:39 + */ +package com.chinasofti.model; + +import java.time.LocalDateTime; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: Leave.java +* @Description: 该类的功能描述 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月9日 上午11:05:39 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月9日 李洪涛 v1.0.0 新建文件 +*/ +public class Leave { + + private Long id;//主键 + + private Long studentId;//学生Id + + private Long teacherId;//审批教师Id + + private String info;//请假申请信息 + + private String status;//审批状态,0:等待审核;1:审核通过;2:审核不通过 + + private String remark;//审批回复 + + private LocalDateTime applyTime;//申请时间 + + private LocalDateTime approveTime;//审批时间 + + private String createBy;//创建者 + + private LocalDateTime createTime;//创建时间 + + private String updateBy;//更新者 + + private LocalDateTime updateTime;//更新时间 + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getStudentId() { + return studentId; + } + + public void setStudentId(Long studentId) { + this.studentId = studentId; + } + + public Long getTeacherId() { + return teacherId; + } + + public void setTeacherId(Long teacherId) { + this.teacherId = teacherId; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public LocalDateTime getApplyTime() { + return applyTime; + } + + public void setApplyTime(LocalDateTime applyTime) { + this.applyTime = applyTime; + } + + public LocalDateTime getApproveTime() { + return approveTime; + } + + public void setApproveTime(LocalDateTime approveTime) { + this.approveTime = approveTime; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public LocalDateTime getCreateTime() { + return createTime; + } + + public void setCreateTime(LocalDateTime createTime) { + this.createTime = createTime; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } + + public LocalDateTime getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(LocalDateTime updateTime) { + this.updateTime = updateTime; + } + +} diff --git a/SMMS/src/com/chinasofti/model/Role.java b/SMMS/src/com/chinasofti/model/Role.java new file mode 100644 index 0000000..713ec72 --- /dev/null +++ b/SMMS/src/com/chinasofti/model/Role.java @@ -0,0 +1,100 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.model + * @author: 李洪涛 + * @date: 2025年4月8日 上午8:00:14 + */ +package com.chinasofti.model; + +import java.time.LocalDateTime; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: Role.java +* @Description: 角色实体 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年4月8日 上午8:00:14 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年4月8日 李洪涛 v1.0.0 新建文件 +*/ +public class Role { + + private Long id;//主键 + + private String roleName;//角色名 + + private String roleCode;//角色编码 + + private String createBy;//创建者 + + private LocalDateTime createTime;//创建时间 + + private String updateBy;//更新者 + + private LocalDateTime updateTime;//更新时间 + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getRoleName() { + return roleName; + } + + public void setRoleName(String roleName) { + this.roleName = roleName; + } + + public String getRoleCode() { + return roleCode; + } + + public void setRoleCode(String roleCode) { + this.roleCode = roleCode; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public LocalDateTime getCreateTime() { + return createTime; + } + + public void setCreateTime(LocalDateTime createTime) { + this.createTime = createTime; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } + + public LocalDateTime getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(LocalDateTime updateTime) { + this.updateTime = updateTime; + } + +} diff --git a/SMMS/src/com/chinasofti/model/Student.java b/SMMS/src/com/chinasofti/model/Student.java new file mode 100644 index 0000000..33b5203 --- /dev/null +++ b/SMMS/src/com/chinasofti/model/Student.java @@ -0,0 +1,159 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.model + * @author: 李洪涛 + * @date: 2025年3月27日 上午9:23:45 + */ +package com.chinasofti.model; + +import java.time.LocalDateTime; +import java.util.Date; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: Student.java +* @Description: 学生实体对象 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年3月27日 上午9:23:45 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年3月27日 李洪涛 v1.0.0 文件新建 +*/ +public class Student { + + private Long id;//主键 + + private Long clazzId;//班级ID + + private Long userId;//用户ID + + private Long number;//学号 + + private Date birthday;//出生日期 + + private String major;//专业 + + private String honor;//个人荣誉 + + private int scoreNow;//本周当前学分 + + private String createBy;//创建者 + + private LocalDateTime createTime;//创建时间 + + private String updateBy;//更新者 + + private LocalDateTime updateTime;//更新时间 + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getClazzId() { + return clazzId; + } + + public void setClazzId(Long clazzId) { + this.clazzId = clazzId; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public Long getNumber() { + return number; + } + + public void setNumber(Long number) { + this.number = number; + } + + public Date getBirthday() { + return birthday; + } + + public void setBirthday(Date birthday) { + this.birthday = birthday; + } + + public String getMajor() { + return major; + } + + public void setMajor(String major) { + this.major = major; + } + + public String getHonor() { + return honor; + } + + public void setHonor(String honor) { + this.honor = honor; + } + + public int getScoreNow() { + return scoreNow; + } + + public void setScoreNow(int scoreNow) { + this.scoreNow = scoreNow; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public LocalDateTime getCreateTime() { + return createTime; + } + + public void setCreateTime(LocalDateTime createTime) { + this.createTime = createTime; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } + + public LocalDateTime getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(LocalDateTime updateTime) { + this.updateTime = updateTime; + } + + @Override + public String toString() { + return "Student [id=" + id + ", clazzId=" + clazzId + ", userId=" + userId + ", number=" + number + + ", birthday=" + birthday + ", major=" + major + ", honor=" + honor + ", scoreNow=" + scoreNow + + ", createBy=" + createBy + ", createTime=" + createTime + ", updateBy=" + updateBy + ", updateTime=" + + updateTime + "]"; + } + +} diff --git a/SMMS/src/com/chinasofti/model/Teacher.java b/SMMS/src/com/chinasofti/model/Teacher.java new file mode 100644 index 0000000..4a798c6 --- /dev/null +++ b/SMMS/src/com/chinasofti/model/Teacher.java @@ -0,0 +1,100 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.model + * @author: 李洪涛 + * @date: 2025年5月4日 下午10:50:48 + */ +package com.chinasofti.model; + +import java.time.LocalDateTime; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: Teacher.java +* @Description: 教师实体 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月4日 下午10:50:48 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月4日 李洪涛 v1.0.0 新建文件 +*/ +public class Teacher { + + private Long id;//主键 + + private Long userId;//用户ID + + private String isCounselor;//是否是辅导员,y:是;n:不是 + + private String createBy;//创建者 + + private LocalDateTime createTime;//创建时间 + + private String updateBy;//更新者 + + private LocalDateTime updateTime;//更新时间 + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public LocalDateTime getCreateTime() { + return createTime; + } + + public void setCreateTime(LocalDateTime createTime) { + this.createTime = createTime; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } + + public LocalDateTime getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(LocalDateTime updateTime) { + this.updateTime = updateTime; + } + + public String getIsCounselor() { + return isCounselor; + } + + public void setIsCounselor(String isCounselor) { + this.isCounselor = isCounselor; + } + +} diff --git a/SMMS/src/com/chinasofti/model/TeacherClazz.java b/SMMS/src/com/chinasofti/model/TeacherClazz.java new file mode 100644 index 0000000..89b38d4 --- /dev/null +++ b/SMMS/src/com/chinasofti/model/TeacherClazz.java @@ -0,0 +1,58 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.model + * @author: 李洪涛 + * @date: 2025年5月5日 上午2:47:10 + */ +package com.chinasofti.model; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: TeacherClazz.java +* @Description: 教师班级关系信息 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月5日 上午2:47:10 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月5日 李洪涛 v1.0.0 新建文件 +*/ +public class TeacherClazz { + + private Long id;//主键 + + private Long clazzId;//班级ID + + private Long teacherId;//教师ID + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getClazzId() { + return clazzId; + } + + public void setClazzId(Long clazzId) { + this.clazzId = clazzId; + } + + public Long getTeacherId() { + return teacherId; + } + + public void setTeacherId(Long teacherId) { + this.teacherId = teacherId; + } + +} diff --git a/SMMS/src/com/chinasofti/model/User.java b/SMMS/src/com/chinasofti/model/User.java new file mode 100644 index 0000000..15971a1 --- /dev/null +++ b/SMMS/src/com/chinasofti/model/User.java @@ -0,0 +1,140 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.model + * @author: 李洪涛 + * @date: 2025年3月27日 上午10:20:21 + */ +package com.chinasofti.model; + +import java.time.LocalDateTime; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: User.java +* @Description: 用户类 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年3月27日 上午10:20:21 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年3月27日 李洪涛 v1.0.0 文件新建 +*/ +public class User { + + private Long id;//主键 + + private Long roleId;//角色 + + private String name;//姓名 + + private String sex;//性别 + + private String userName;//用户名 + + private String passWord;//密码 + + private String phone;//联系方式 + + private String createBy;//创建者 + + private LocalDateTime createTime;//创建时间 + + private String updateBy;//更新者 + + private LocalDateTime updateTime;//更新时间 + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getRoleId() { + return roleId; + } + + public void setRoleId(Long roleId) { + this.roleId = roleId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getPassWord() { + return passWord; + } + + public void setPassWord(String passWord) { + this.passWord = passWord; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public LocalDateTime getCreateTime() { + return createTime; + } + + public void setCreateTime(LocalDateTime createTime) { + this.createTime = createTime; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } + + public LocalDateTime getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(LocalDateTime updateTime) { + this.updateTime = updateTime; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + +} diff --git a/SMMS/src/com/chinasofti/model/view/LeaveView.java b/SMMS/src/com/chinasofti/model/view/LeaveView.java new file mode 100644 index 0000000..596dcf5 --- /dev/null +++ b/SMMS/src/com/chinasofti/model/view/LeaveView.java @@ -0,0 +1,100 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.model.view + * @author: 李洪涛 + * @date: 2025年5月11日 上午11:06:35 + */ +package com.chinasofti.model.view; + +import java.time.LocalDateTime; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: LeaveView.java +* @Description: 请假记录页面数据 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月11日 上午11:06:35 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月11日 李洪涛 v1.0.0 新建文件 +*/ +public class LeaveView { + + private String studentName;//学生姓名 + + private String teacherName;//审批教师姓名 + + private String info;//请假申请信息 + + private String status;//审批状态,0:等待审核;1:审核通过;2:审核不通过 + + private String remark;//审批回复 + + private LocalDateTime applyTime;//申请时间 + + private LocalDateTime approveTime;//审批时间 + + public String getStudentName() { + return studentName; + } + + public void setStudentName(String studentName) { + this.studentName = studentName; + } + + public String getTeacherName() { + return teacherName; + } + + public void setTeacherName(String teacherName) { + this.teacherName = teacherName; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public LocalDateTime getApplyTime() { + return applyTime; + } + + public void setApplyTime(LocalDateTime applyTime) { + this.applyTime = applyTime; + } + + public LocalDateTime getApproveTime() { + return approveTime; + } + + public void setApproveTime(LocalDateTime approveTime) { + this.approveTime = approveTime; + } + +} diff --git a/SMMS/src/com/chinasofti/model/view/Page.java b/SMMS/src/com/chinasofti/model/view/Page.java new file mode 100644 index 0000000..917f39c --- /dev/null +++ b/SMMS/src/com/chinasofti/model/view/Page.java @@ -0,0 +1,46 @@ +package com.chinasofti.model.view; +/** + * +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: Page.java +* @Description: 分页类页码封装 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月3日 上午8:56:45 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月3日 李洪涛 v1.0.0 新建文件 + */ +public class Page { + private int start;//起始页 + private int currentPage;//当前页 + private int pageSize;//每页显示数量 + public Page(int currentPage,int pageSize){ + this.start = (currentPage-1)*pageSize; + this.currentPage = currentPage; + this.pageSize = pageSize; + } + public int getStart() { + return start; + } + public void setStart(int start) { + this.start = start; + } + public int getCurrentPage() { + return currentPage; + } + public void setCurrentPage(int currentPage) { + this.currentPage = currentPage; + } + public int getPageSize() { + return pageSize; + } + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + +} diff --git a/SMMS/src/com/chinasofti/model/view/StudentView.java b/SMMS/src/com/chinasofti/model/view/StudentView.java new file mode 100644 index 0000000..e95d147 --- /dev/null +++ b/SMMS/src/com/chinasofti/model/view/StudentView.java @@ -0,0 +1,149 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.model.view + * @author: 李洪涛 + * @date: 2025年5月3日 上午10:55:40 + */ +package com.chinasofti.model.view; + + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: StudentView.java +* @Description: 学生类页面数据 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月3日 上午10:55:40 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月3日 李洪涛 v1.0.0 修改原因 +*/ +public class StudentView { + + private Long userId;//用户主键 + + private Long studentId;//主键 + + private Long clazzId;//班级主键 + + private String name;//姓名 + + private String sex;//性别 + + private String userName;//用户名 + + private String phone;//联系方式 + + private Long number;//学号 + + private String birthday;//出生日期 + + private String major;//专业 + + private String honor;//个人荣誉 + + private int scoreNow;//当前学分 + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public Long getStudentId() { + return studentId; + } + + public void setStudentId(Long studentId) { + this.studentId = studentId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public Long getNumber() { + return number; + } + + public void setNumber(Long number) { + this.number = number; + } + + public String getBirthday() { + return birthday; + } + + public void setBirthday(String birthday) { + this.birthday = birthday; + } + + public String getMajor() { + return major; + } + + public void setMajor(String major) { + this.major = major; + } + + public String getHonor() { + return honor; + } + + public void setHonor(String honor) { + this.honor = honor; + } + + public int getScoreNow() { + return scoreNow; + } + + public void setScoreNow(int scoreNow) { + this.scoreNow = scoreNow; + } + + public Long getClazzId() { + return clazzId; + } + + public void setClazzId(Long clazzId) { + this.clazzId = clazzId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + +} diff --git a/SMMS/src/com/chinasofti/model/view/TeacherView.java b/SMMS/src/com/chinasofti/model/view/TeacherView.java new file mode 100644 index 0000000..41a8676 --- /dev/null +++ b/SMMS/src/com/chinasofti/model/view/TeacherView.java @@ -0,0 +1,108 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.model.view + * @author: 李洪涛 + * @date: 2025年5月7日 下午1:07:09 + */ +package com.chinasofti.model.view; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: TeacherView.java +* @Description: 该类的功能描述 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月7日 下午1:07:09 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月7日 李洪涛 v1.0.0 新建文件 +*/ +public class TeacherView { + + private Long userId;//用户主键 + + private Long teacherId;//教师主键 + + private Long clazzId;//班级主键 + + private String name;//姓名 + + private String sex;//性别 + + private String userName;//用户名 + + private String phone;//联系方式 + + private String isCounselor;//是否是辅导员,y:是;n:不是 + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public Long getTeacherId() { + return teacherId; + } + + public void setTeacherId(Long teacherId) { + this.teacherId = teacherId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getIsCounselor() { + return isCounselor; + } + + public void setIsCounselor(String isCounselor) { + this.isCounselor = isCounselor; + } + + public Long getClazzId() { + return clazzId; + } + + public void setClazzId(Long clazzId) { + this.clazzId = clazzId; + } + +} diff --git a/SMMS/src/com/chinasofti/pool/JdbcUtils.java b/SMMS/src/com/chinasofti/pool/JdbcUtils.java new file mode 100644 index 0000000..6816f5e --- /dev/null +++ b/SMMS/src/com/chinasofti/pool/JdbcUtils.java @@ -0,0 +1,163 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.pool + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:45:18 + */ +package com.chinasofti.pool; + +import com.alibaba.druid.pool.DruidDataSourceFactory; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Properties; + +/** + * +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: JdbcUtils.java +* @Description: 数据库连接池工具类 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年4月6日 上午11:00:15 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年4月6日 李洪涛 v1.0.0 新建文件 + */ +public class JdbcUtils { + + //定义成员变量 + private static DataSource dataSource; + private static ThreadLocal threadLocal; + + /** + * 静态代码块 + */ + static { + try { + //加载连接池配置文件,创建DataSource + Properties properties = new Properties(); + properties.load(JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties")); + dataSource = DruidDataSourceFactory.createDataSource(properties); + //初始化threadLocal对象 + threadLocal = new ThreadLocal<>(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * + * @Function: getConnection + * @Description: 获取数据库连接池连接 + * + * @return:数据库连接(关闭自动提交) + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:58:38 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public static Connection getAutoConnection() { + //1 ThreadLocal可以把线程和连接绑定在一起 + //从ThreadLocal获取连接 + Connection connection = threadLocal.get(); + //如果获取不到,dataSource取出来,放到ThreadLocal里面 + if(connection == null) { + try { + connection = dataSource.getConnection(); + try { + connection.setAutoCommit(false);//关闭自动提交 + } catch (SQLException e) { + e.printStackTrace(); + } + threadLocal.set(connection); + } catch (SQLException e) { + e.printStackTrace(); + } + } + try { + connection.setAutoCommit(false); + } catch (SQLException e) { + e.printStackTrace(); + } + //如果获取到,直接返回 + return connection; + } + + /** + * + * @Function: getConnection + * @Description: 获取数据库连接池连接 + * + * @return:数据库连接 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:58:38 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public static Connection getConnection() { + //1 ThreadLocal可以把线程和连接绑定在一起 + //从ThreadLocal获取连接 + Connection connection = threadLocal.get(); + //如果获取不到,dataSource取出来,放到ThreadLocal里面 + if(connection == null) { + try { + connection = dataSource.getConnection(); + threadLocal.set(connection); + } catch (SQLException e) { + e.printStackTrace(); + } + } + //如果获取到,直接返回 + return connection; + } + + /** + * + * @Function: closeResource + * @Description: 释放资源 + * + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:58:38 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public static void closeResource() { + Connection connection = threadLocal.get(); + if(connection != null) { + try { + //close() + connection.close(); + threadLocal.remove(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/SMMS/src/com/chinasofti/service/ClazzService.java b/SMMS/src/com/chinasofti/service/ClazzService.java new file mode 100644 index 0000000..6972f9e --- /dev/null +++ b/SMMS/src/com/chinasofti/service/ClazzService.java @@ -0,0 +1,193 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service + * @author: 李洪涛 + * @date: 2025年5月4日 上午8:00:11 + */ +package com.chinasofti.service; + +import java.util.List; + +import com.chinasofti.model.Clazz; +import com.chinasofti.model.view.Page; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: ClazzService.java +* @Description: 班级业务处理 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月4日 上午8:00:11 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月4日 李洪涛 v1.0.0 修改原因 +*/ +public interface ClazzService { + + /** + * + * @Function: findClazzPage + * @Description: 查询所有记录 + * + * @param: 班级实体 + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findClazzPage(Clazz clazz,Page page); + + /** + * + * @Function: findClazzsByClazzIds + * @Description: 根据班级查询班级实体 + * + * @param: 班级实体 + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findClazzsByClazzIds(String clazzIds,Clazz clazz,Page page); + + + /** + * + * @Function: removeClazz + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void removeClazz(List ids); + + /** + * + * @Function: insertClazz + * @Description: 添加 + * + * @param: 班级实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public Clazz insertClazz(Clazz clazz); + + /** + * + * @Function: updateClazz + * @Description: 修改 + * + * @param: 班级实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void updateClazz(Clazz clazz); + + /** + * + * @Function: findClazzsByTeacherId + * @Description: 根据教师Id查询班级实体 + * + * @param: 教师Id + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findClazzsByTeacherId(long teacherId); + + /** + * + * @Function: findClazzByClazzName + * @Description: 根据班级名称查询 + * + * @param: 班级名称 + * @return:班级实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public Clazz findClazzByClazzName(String clazzName); + + /** + * + * @Function: findClazzsByUserIds + * @Description: 根据责任人查询班级实体 + * + * @param: 班级实体 + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findClazzsByUserIds(String uderIds); +} diff --git a/SMMS/src/com/chinasofti/service/CreditRecordsService.java b/SMMS/src/com/chinasofti/service/CreditRecordsService.java new file mode 100644 index 0000000..e165dec --- /dev/null +++ b/SMMS/src/com/chinasofti/service/CreditRecordsService.java @@ -0,0 +1,73 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service + * @author: 李洪涛 + * @date: 2025年5月15日 下午1:37:53 + */ +package com.chinasofti.service; + +import java.util.List; + +import com.chinasofti.model.CreditRecords; +import com.chinasofti.model.view.Page; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: CreditRecordsService.java +* @Description: 学分记录信息业务层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月15日 下午1:37:53 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月15日 李洪涛 v1.0.0 新建文件 +*/ +public interface CreditRecordsService { + + /** + * + * @Function: insertCreditRecords + * @Description: 添加 + * + * @param: 学分实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void insertCreditRecords(Long studentId,CreditRecords creditRecords); + + /** + * + * @Function: findCreditRecordsPages + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findCreditRecordsPages(String startTime,String endTime,CreditRecords creditRecords,String clazzIds,Page page); + +} diff --git a/SMMS/src/com/chinasofti/service/LeaveService.java b/SMMS/src/com/chinasofti/service/LeaveService.java new file mode 100644 index 0000000..d2a173a --- /dev/null +++ b/SMMS/src/com/chinasofti/service/LeaveService.java @@ -0,0 +1,214 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service + * @author: 李洪涛 + * @date: 2025年5月9日 下午1:11:21 + */ +package com.chinasofti.service; + +import java.util.List; + +import com.chinasofti.model.Leave; +import com.chinasofti.model.view.LeaveView; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.TeacherView; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: LeaveService.java +* @Description: 请假记录业务处理层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月9日 下午1:11:21 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月9日 李洪涛 v1.0.0 新建文件 +*/ +public interface LeaveService { + + /** + * + * @Function: findLeavePages + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findLeavePages(Leave leave,Page page); + + /** + * + * @Function: insertLeave + * @Description: 添加 + * + * @param: 角色实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void insertLeave(Leave leave); + + /** + * + * @Function: updateLeave + * @Description: 修改 + * + * @param: 角色实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void updateLeave(Leave leave); + + /** + * + * @Function: findLeaveViews + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findLeaveViews(Leave leave); + + /** + * + * @Function: removeLeave + * @Description: 删除 + * + * @param: Leave + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void removeLeave(Leave leave); + + /** + * + * @Function: findLeaveByTeacherIdsAndStatus + * @Description: 根据教师id与状态查询 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findLeaveByTeacherIdsAndStatus(String teacherIds); + + /** + * + * @Function: findLeavePagesByClazzIds + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findLeavePagesByClazzIds(Leave leave,Page page,String clazzIds); + + /** + * + * @Function: findLeaveViewsByClazzIds + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findLeaveViewsByClazzIds(Leave leave,String clazzIds); + + /** + * + * @Function: findApproveTeacherViews + * @Description: 获取审批教师信息 + * + * @param: 教师ID + * @return:审批教师实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年5月17日 上午9:12:14 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年5月17日 李洪涛 v1.0.0 新建方法 + */ + public List findApproveTeacherViews(Long teacherId); +} diff --git a/SMMS/src/com/chinasofti/service/LoginService.java b/SMMS/src/com/chinasofti/service/LoginService.java new file mode 100644 index 0000000..17408bb --- /dev/null +++ b/SMMS/src/com/chinasofti/service/LoginService.java @@ -0,0 +1,50 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service + * @author: 李洪涛 + * @date: 2025年3月27日 上午10:42:35 + */ +package com.chinasofti.service; + +import com.chinasofti.model.User; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: LoginService.java +* @Description: 登录校验业务层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年3月27日 上午10:42:35 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年3月27日 李洪涛 v1.0.0 新建文件 +*/ +public interface LoginService { + + /** + * + * @Function: LoginService.java + * @Description: 登录校验 + * + * @param:User + * @return:校验结果 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年3月27日 上午11:03:37 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年3月27日 李洪涛 v1.0.0 新建方法 + */ + public User loginCheck(User user); + +} diff --git a/SMMS/src/com/chinasofti/service/RoleService.java b/SMMS/src/com/chinasofti/service/RoleService.java new file mode 100644 index 0000000..20a6845 --- /dev/null +++ b/SMMS/src/com/chinasofti/service/RoleService.java @@ -0,0 +1,50 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service + * @author: 李洪涛 + * @date: 2025年5月2日 下午9:50:01 + */ +package com.chinasofti.service; + +import com.chinasofti.model.Role; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: RoleService.java +* @Description: 角色业务处理层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月2日 下午9:50:01 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月2日 李洪涛 v1.0.0 新建文件 +*/ +public interface RoleService { + + /** + * + * @Function: findRoleById + * @Description: 根据id查询 + * + * @param: id值 + * @return:角色实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public Role findRoleById(long id); + +} diff --git a/SMMS/src/com/chinasofti/service/StudentService.java b/SMMS/src/com/chinasofti/service/StudentService.java new file mode 100644 index 0000000..72891a4 --- /dev/null +++ b/SMMS/src/com/chinasofti/service/StudentService.java @@ -0,0 +1,176 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service + * @author: 李洪涛 + * @date: 2025年4月2日 上午9:21:06 + */ +package com.chinasofti.service; + +import java.util.List; + +import com.chinasofti.model.Student; +import com.chinasofti.model.User; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.StudentView; + + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: StudentService.java +* @Description: 该类的功能描述 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年4月2日 上午9:21:06 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年4月2日 李洪涛 v1.0.0 新建文件 +*/ +public interface StudentService { + + /** + * + * @Function: insertStudent + * @Description: 添加 + * + * @param: 学生实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public String insertStudent(Student student,User user); + + /** + * + * @Function: removeStudents + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public String removeStudents(String studentIds,String userIds); + + /** + * + * @Function: updateStudent + * @Description: 修改 + * + * @param: 学生实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public String updateStudent(Student student,User user); + + /** + * + * @Function: findStudentByUserId + * @Description: 根据id查询 + * + * @param: userId值 + * @return:StudentView + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public StudentView findStudentByUserId(StudentView studentView); + + /** + * + * @Function: findStudentViews + * @Description: 查询所有记录 + * + * @param: 学生实体 + * @return:学生实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findStudentViews(StudentView studentView,Page page); + + /** + * + * @Function: findStudentViewsByClazzIds + * @Description: 根据班级查询学生实体 + * + * @param: 学生实体 + * @return:学生实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findStudentViewsByClazzIds(StudentView studentView,String clazzIds,Page page); + + /** + * + * @Function: updateStudentScoreNow + * @Description: 修改 + * + * @param: 本周学分变动 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void updateStudentScoreNow(int score,Student student); + +} diff --git a/SMMS/src/com/chinasofti/service/TeacherService.java b/SMMS/src/com/chinasofti/service/TeacherService.java new file mode 100644 index 0000000..a5637e5 --- /dev/null +++ b/SMMS/src/com/chinasofti/service/TeacherService.java @@ -0,0 +1,195 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service + * @author: 李洪涛 + * @date: 2025年5月4日 下午11:17:06 + */ +package com.chinasofti.service; + +import java.util.List; + +import com.chinasofti.model.Teacher; +import com.chinasofti.model.TeacherClazz; +import com.chinasofti.model.User; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.TeacherView; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: TeacherService.java +* @Description: 教师业务处理 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月4日 下午11:17:06 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月4日 李洪涛 v1.0.0 新建文件 +*/ +public interface TeacherService { + + /** + * + * @Function: findTeacher + * @Description: 查询 + * + * @param: 教师实体 + * @return:教师实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public Teacher findTeacher(Teacher teacher); + + /** + * + * @Function: findClazzIdsByTeacherId + * @Description: 查询 + * + * @param: teacherID + * @return:List + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findClazzIdsByTeacherId(Long teacherID); + + /** + * + * @Function: findTeacherViews + * @Description: 查询所有记录 + * + * @param: 教师实体 + * @return:教师实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findTeacherViews(TeacherView teacherView,Page page); + + /** + * + * @Function: insertTeacher + * @Description: 添加 + * + * @param: 教师实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public String insertTeacher(Teacher teacher,User user,TeacherClazz teacherClazz,String [] clazzIds); + + /** + * + * @Function: insertTeacherClazz + * @Description: 添加 + * + * @param: 教师与班级关联关系实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public TeacherClazz insertTeacherClazz(TeacherClazz teacherClazz,String [] clazzIds); + + /** + * + * @Function: updateTeacher + * @Description: 修改 + * + * @param: 教师实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public String updateTeacher(Teacher teacher,String [] clazzIds,User user); + + /** + * + * @Function: removeTeachers + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void removeTeachers(List ids); + + /** + * + * @Function: findTeacherByStudentId + * @Description: 查询 + * + * @param: 教师实体 + * @return:教师实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public Teacher findTeacherByStudentId(Long studentId); +} diff --git a/SMMS/src/com/chinasofti/service/UserService.java b/SMMS/src/com/chinasofti/service/UserService.java new file mode 100644 index 0000000..8249ed0 --- /dev/null +++ b/SMMS/src/com/chinasofti/service/UserService.java @@ -0,0 +1,112 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service + * @author: mrliy + * @date: 2025年5月2日 上午2:06:30 + */ +package com.chinasofti.service; + +import java.util.List; + +import com.chinasofti.model.User; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: UserService.java +* @Description: 用户业务处理 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月2日 上午2:06:30 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月2日 李洪涛 v1.0.0 修改原因 +*/ +public interface UserService { + + /** + * + * @Function: insertUser + * @Description: 添加 + * + * @param: 用户实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public User insertUser(User user); + + /** + * + * @Function: removeUser + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void removeUsers(List ids); + + /** + * + * @Function: updateUser + * @Description: 修改 + * + * @param: 用户实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public void updateUser(User user); + + /** + * + * @Function: findUsers + * @Description: 查询所有记录 + * + * @param: 用户实体 + * @return:用户实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + public List findUsers(User user); + +} diff --git a/SMMS/src/com/chinasofti/service/impl/ClazzServiceImpl.java b/SMMS/src/com/chinasofti/service/impl/ClazzServiceImpl.java new file mode 100644 index 0000000..5625402 --- /dev/null +++ b/SMMS/src/com/chinasofti/service/impl/ClazzServiceImpl.java @@ -0,0 +1,227 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service.impl + * @author: 李洪涛 + * @date: 2025年5月4日 上午8:01:01 + */ +package com.chinasofti.service.impl; + +import java.util.List; + +import com.chinasofti.dao.ClazzDao; +import com.chinasofti.dao.impl.ClazzDaoImpl; +import com.chinasofti.model.Clazz; +import com.chinasofti.model.view.Page; +import com.chinasofti.service.ClazzService; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: ClazzServiceImpl.java +* @Description: 该类的功能描述 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月4日 上午8:01:01 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月4日 李洪涛 v1.0.0 修改原因 +*/ +public class ClazzServiceImpl implements ClazzService { + + private ClazzDao clazzDao = new ClazzDaoImpl(); + + /** + * @see com.chinasofti.service.ClazzService#findClazzPage(com.chinasofti.model.Clazz, com.chinasofti.model.view.Page) + * @Function: findClazzPage + * @Description: 查询所有记录 + * + * @param: 班级实体 + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findClazzPage(Clazz clazz, Page page) { + return clazzDao.findClazzPage(clazz, page); + } + + /** + * @see com.chinasofti.service.ClazzService#findClazzsByClazzIds(java.lang.String, com.chinasofti.model.view.Page) + * @Function: findClazzsByClazzIds + * @Description: 根据班级查询班级实体 + * + * @param: 班级实体 + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findClazzsByClazzIds(String clazzIds, Clazz clazz, Page page) { + return clazzDao.findClazzsByClazzIds(clazzIds, clazz, page); + } + + /** + * @see com.chinasofti.service.ClazzService#removeClazz(long) + * @Function: removeClazz + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void removeClazz(List ids) { + if (ids.size() > 0) { + for (Long id : ids) { + clazzDao.removeClazz(id); + clazzDao.removeTeacherClazzByClazzId(id); + } + } + } + + /** + * @see com.chinasofti.service.ClazzService#insertClazz(com.chinasofti.model.Clazz) + * @Function: insertClazz + * @Description: 添加 + * + * @param: 班级实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public Clazz insertClazz(Clazz clazz) { + return clazzDao.insertClazz(clazz); + } + + /** + * @see com.chinasofti.service.ClazzService#updateClazz(com.chinasofti.model.Clazz) + * @Function: updateClazz + * @Description: 修改 + * + * @param: 班级实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void updateClazz(Clazz clazz) { + clazzDao.updateClazz(clazz); + } + + /** + * @see com.chinasofti.service.ClazzService#findClazzsByTeacherId(long) + * @Function: findClazzsByTeacherId + * @Description: 根据教师Id查询班级实体 + * + * @param: 教师Id + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findClazzsByTeacherId(long teacherId) { + return clazzDao.findClazzsByTeacherId(teacherId); + } + + /** + * @see com.chinasofti.service.ClazzService#findClazzByClazzName(java.lang.String) + * @Function: findClazzByClazzName + * @Description: 根据班级名称查询 + * + * @param: 班级名称 + * @return:班级实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public Clazz findClazzByClazzName(String clazzName) { + return clazzDao.findClazzByClazzName(clazzName); + } + + /** + * @see com.chinasofti.service.ClazzService#findClazzsByUserIds(java.lang.String) + * @Function: findClazzsByUserIds + * @Description: 根据责任人查询班级实体 + * + * @param: 班级实体 + * @return:班级实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findClazzsByUserIds(String uderIds) { + return clazzDao.findClazzsByUserIds(uderIds); + } + +} diff --git a/SMMS/src/com/chinasofti/service/impl/CreditRecordsServiceImpl.java b/SMMS/src/com/chinasofti/service/impl/CreditRecordsServiceImpl.java new file mode 100644 index 0000000..62f989c --- /dev/null +++ b/SMMS/src/com/chinasofti/service/impl/CreditRecordsServiceImpl.java @@ -0,0 +1,84 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service + * @author: 李洪涛 + * @date: 2025年5月15日 下午1:37:53 + */ +package com.chinasofti.service.impl; + +import java.util.List; + +import com.chinasofti.dao.CreditRecordsDao; +import com.chinasofti.dao.impl.CreditRecordsDaoImpl; +import com.chinasofti.model.CreditRecords; +import com.chinasofti.model.view.Page; +import com.chinasofti.service.CreditRecordsService; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: CreditRecordsServiceImpl.java +* @Description: 学分记录信息业务层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月15日 下午1:37:53 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月15日 李洪涛 v1.0.0 新建文件 +*/ +public class CreditRecordsServiceImpl implements CreditRecordsService { + + private CreditRecordsDao creditRecordsDao = new CreditRecordsDaoImpl(); + + /** + * @see com.chinasofti.service.CreditRecordsService#insertCreditRecords(com.chinasofti.model.CreditRecords) + * @Function: insertCreditRecords + * @Description: 添加 + * + * @param: 学分实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void insertCreditRecords(Long studentId,CreditRecords creditRecords) { + creditRecordsDao.insertCreditRecords(studentId, creditRecords); + } + + /** + * @see com.chinasofti.service.CreditRecordsService#findCreditRecordsPages(com.chinasofti.model.CreditRecords, com.chinasofti.model.view.Page) + * @Function: findCreditRecordsPages + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findCreditRecordsPages(String startTime,String endTime,CreditRecords creditRecords,String clazzIds, Page page) { + return creditRecordsDao.findCreditRecordsPages(startTime,endTime,creditRecords,clazzIds, page); + } + +} diff --git a/SMMS/src/com/chinasofti/service/impl/LeaveServiceImpl.java b/SMMS/src/com/chinasofti/service/impl/LeaveServiceImpl.java new file mode 100644 index 0000000..bde52fc --- /dev/null +++ b/SMMS/src/com/chinasofti/service/impl/LeaveServiceImpl.java @@ -0,0 +1,247 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service.impl + * @author: 李洪涛 + * @date: 2025年5月9日 下午1:12:36 + */ +package com.chinasofti.service.impl; + +import java.util.List; + +import com.chinasofti.dao.LeaveDao; +import com.chinasofti.dao.impl.LeaveDaoImpl; +import com.chinasofti.model.Leave; +import com.chinasofti.model.view.LeaveView; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.TeacherView; +import com.chinasofti.service.LeaveService; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: LeaveServiceImpl.java +* @Description: 请假记录业务处理层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月9日 下午1:11:21 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月9日 李洪涛 v1.0.0 新建文件 +*/ +public class LeaveServiceImpl implements LeaveService { + + private LeaveDao leaveDao = new LeaveDaoImpl(); + + /** + * @see com.chinasofti.service.LeaveService#findfindLeavePages(com.chinasofti.model.Leave, com.chinasofti.model.view.Page) + * @Function: findfindLeavePages + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findLeavePages(Leave leave, Page page) { + return leaveDao.findLeavePages(leave, page); + } + + /** + * @see com.chinasofti.service.LeaveService#insertLeave(com.chinasofti.model.Leave) + * @Function: insertLeave + * @Description: 添加 + * + * @param: 角色实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void insertLeave(Leave leave) { + leaveDao.insertLeave(leave); + } + + /** + * @see com.chinasofti.service.LeaveService#updateLeave(com.chinasofti.model.Leave) + * @Function: updateLeave + * @Description: 修改 + * + * @param: 角色实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void updateLeave(Leave leave) { + leaveDao.updateLeave(leave); + } + + /** + * @see com.chinasofti.service.LeaveService#findLeaveViews(com.chinasofti.model.Leave) + * @Function: findLeaveViews + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findLeaveViews(Leave leave) { + return leaveDao.findLeaveViews(leave); + } + + /** + * @see com.chinasofti.service.LeaveService#removeLeave(com.chinasofti.model.Leave) + * @Function: removeLeave + * @Description: 删除 + * + * @param: Leave + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void removeLeave(Leave leave) { + leaveDao.removeLeave(leave); + } + + /** + * @see com.chinasofti.service.LeaveService#findLeaveByTeacherIdsAndStatus(java.lang.String) + * @Function: findLeaveByTeacherIdsAndStatus + * @Description: 根据教师id与状态查询 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findLeaveByTeacherIdsAndStatus(String teacherIds) { + return leaveDao.findLeaveByTeacherIdsAndStatus(teacherIds); + } + + /** + * @see com.chinasofti.service.LeaveService#findLeavePagesByClazzIds(com.chinasofti.model.Leave, com.chinasofti.model.view.Page, java.lang.String) + * @Function: findLeavePagesByClazzIds + * @Description: 查询所有记录 + * + * @param: 请假记录实体 + * @return:请假记录实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findLeavePagesByClazzIds(Leave leave, Page page, String clazzIds) { + return leaveDao.findLeavePagesByClazzIds(leave, page, clazzIds); + } + + /** + * @see com.chinasofti.service.LeaveService#findLeaveViewsByClazzIds(com.chinasofti.model.Leave, java.lang.String) + * @Function: LeaveServiceImpl.java + * @Description: 该函数的功能描述 + * + * @param:描述1描述 + * @return:返回结果描述 + * @throws:异常描述 + * + * @version: v1.0.0 + * @author: mrliy + * @date: 2025年5月16日 下午8:23:34 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年5月16日 mrliy v1.0.0 修改原因 + */ + @Override + public List findLeaveViewsByClazzIds(Leave leave, String clazzIds) { + return leaveDao.findLeaveViewsByClazzIds(leave, clazzIds); + } + + /** + * @see com.chinasofti.service.LeaveService#findApproveTeacherViews(java.lang.Long) + * @Function: findApproveTeacherViews + * @Description: 获取审批教师信息 + * + * @param: 教师ID + * @return:审批教师实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年5月17日 上午9:12:14 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年5月17日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findApproveTeacherViews(Long teacherId) { + return leaveDao.findApproveTeacherViews(teacherId); + } + +} diff --git a/SMMS/src/com/chinasofti/service/impl/LoginServiceImpl.java b/SMMS/src/com/chinasofti/service/impl/LoginServiceImpl.java new file mode 100644 index 0000000..fafa5dc --- /dev/null +++ b/SMMS/src/com/chinasofti/service/impl/LoginServiceImpl.java @@ -0,0 +1,74 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service.impl + * @author: 李洪涛 + * @date: 2025年3月27日 上午10:45:31 + */ +package com.chinasofti.service.impl; + + +import com.alibaba.druid.util.StringUtils; +import com.chinasofti.dao.RoleDao; +import com.chinasofti.dao.UserDao; +import com.chinasofti.dao.impl.RoleDaoImpl; +import com.chinasofti.dao.impl.UserDaoImpl; +import com.chinasofti.model.Role; +import com.chinasofti.model.User; +import com.chinasofti.service.LoginService; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: LoginServiceImpl.java +* @Description: 登录校验业务处理层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年3月27日 上午10:45:31 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年3月27日 李洪涛 v1.0.0 新建文件 +*/ +public class LoginServiceImpl implements LoginService { + + private UserDao userDao = new UserDaoImpl(); + private RoleDao roleDao = new RoleDaoImpl(); + + /** + * @see com.chinasofti.service.LoginService#loginCheck(com.chinasofti.model.User) + * @Function: LoginServiceImpl.java + * @Description: 登录校验 + * + * @param:User + * @return:校验结果 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年3月27日 上午11:07:16 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年3月27日 李洪涛 v1.0.0 新建方法 + */ + @Override + public User loginCheck(User user) { + User resUser = userDao.findUser(user); + User res = null; + if (null == resUser) { + return res; + } + user = resUser; + Role role = roleDao.findRoleById(user.getRoleId()); + if (null != role && !StringUtils.isEmpty(role.getRoleCode()) ) { + res = user; + } + return res; + } + +} diff --git a/SMMS/src/com/chinasofti/service/impl/RoleServiceImpl.java b/SMMS/src/com/chinasofti/service/impl/RoleServiceImpl.java new file mode 100644 index 0000000..c7231b0 --- /dev/null +++ b/SMMS/src/com/chinasofti/service/impl/RoleServiceImpl.java @@ -0,0 +1,58 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service.impl + * @author: 李洪涛 + * @date: 2025年5月2日 下午9:51:46 + */ +package com.chinasofti.service.impl; + +import com.chinasofti.dao.RoleDao; +import com.chinasofti.dao.impl.RoleDaoImpl; +import com.chinasofti.model.Role; +import com.chinasofti.service.RoleService; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: RoleService.java +* @Description: 角色业务处理层 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月2日 下午9:50:01 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月2日 李洪涛 v1.0.0 新建文件 +*/ +public class RoleServiceImpl implements RoleService { + + private RoleDao roleDao = new RoleDaoImpl(); + + /** + * @see com.chinasofti.service.RoleService#findRoleById(long) + * @Function: findRoleById + * @Description: 根据id查询 + * + * @param: id值 + * @return:角色实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public Role findRoleById(long id) { + return roleDao.findRoleById(id); + } + +} diff --git a/SMMS/src/com/chinasofti/service/impl/StudentServiceImpl.java b/SMMS/src/com/chinasofti/service/impl/StudentServiceImpl.java new file mode 100644 index 0000000..9e8adde --- /dev/null +++ b/SMMS/src/com/chinasofti/service/impl/StudentServiceImpl.java @@ -0,0 +1,222 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service.impl + * @author: 李洪涛 + * @date: 2025年4月2日 上午9:24:13 + */ +package com.chinasofti.service.impl; + +import java.util.List; + +import com.chinasofti.dao.StudentDao; +import com.chinasofti.dao.UserDao; +import com.chinasofti.dao.impl.StudentDaoImpl; +import com.chinasofti.dao.impl.UserDaoImpl; +import com.chinasofti.model.Student; +import com.chinasofti.model.User; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.StudentView; +import com.chinasofti.service.StudentService; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: StudentServiceImpl.java +* @Description: 该类的功能描述 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年4月2日 上午9:24:13 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年4月2日 李洪涛 v1.0.0 新建文件 +*/ +public class StudentServiceImpl implements StudentService { + + private StudentDao studentDao = new StudentDaoImpl(); + private UserDao userDao = new UserDaoImpl(); + + /** + * @see com.chinasofti.service.StudentService#removeStudent(long) + * @Function: removeStudents + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public String removeStudents(String studentIds,String userIds) { + return studentDao.removeStudent(studentIds, userIds); + } + + /** + * @see com.chinasofti.service.StudentService#updateStudent(com.chinasofti.model.Student) + /** + * + * @Function: updateStudent + * @Description: 修改 + * + * @param: 学生实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public String updateStudent(Student student,User user) { + return studentDao.updateStudent(student,user); + } + + /** + * @see com.chinasofti.service.StudentService#findStudentByUserId(long) + * @Function: findStudentByUserId + * @Description: 根据id查询 + * + * @param: userId值 + * @return:StudentView + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public StudentView findStudentByUserId(StudentView studentView) { + Student student = studentDao.findStudentByUserId(studentView.getUserId()); + User user = new User(); + user.setId(studentView.getUserId()); + user = userDao.findUser(user); + studentView.setStudentId(student.getId()); + studentView.setName(user.getName()); + studentView.setSex(user.getSex()); + studentView.setUserName(user.getUserName()); + studentView.setPhone(user.getPhone()); + studentView.setClazzId(student.getClazzId()); + studentView.setNumber(student.getNumber()); + studentView.setBirthday(student.getBirthday().toString()); + studentView.setMajor(student.getMajor()); + studentView.setHonor(student.getHonor()); + studentView.setScoreNow(student.getScoreNow()); + return studentView; + } + + /** + * @see com.chinasofti.service.StudentService#findStudentViews(com.chinasofti.model.view.StudentView, com.chinasofti.model.view.Page) + * @Function: findStudentViews + * @Description: 查询所有记录 + * + * @param: 学生实体 + * @return:学生实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findStudentViews(StudentView studentView, Page page) { + return studentDao.findStudentViews(studentView, page); + } + + /** + * @see com.chinasofti.service.StudentService#insertStudent(com.chinasofti.model.Student) + * @Function: insertStudent + * @Description: 添加 + * + * @param: 学生实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public String insertStudent(Student student,User user) { + return studentDao.insertStudent(student,user); + } + + /** + * @see com.chinasofti.service.StudentService#findStudentViewsByClazzIds(java.lang.String, com.chinasofti.model.view.Page) + * @Function: findStudentViewsByClazzIds + * @Description: 根据班级查询学生实体 + * + * @param: 学生实体 + * @return:学生实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findStudentViewsByClazzIds(StudentView studentView,String clazzIds, Page page) { + return studentDao.findStudentViewsByClazzIds(studentView,clazzIds, page); + } + + /** + * @see com.chinasofti.service.StudentService#updateStudentScoreNow(int, com.chinasofti.model.Student) + * @Function: updateStudentScoreNow + * @Description: 修改 + * + * @param: 本周学分变动 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void updateStudentScoreNow(int score, Student student) { + studentDao.updateStudentScoreNow(score, student); + } + + +} diff --git a/SMMS/src/com/chinasofti/service/impl/TeacherServiceImpl.java b/SMMS/src/com/chinasofti/service/impl/TeacherServiceImpl.java new file mode 100644 index 0000000..c360b76 --- /dev/null +++ b/SMMS/src/com/chinasofti/service/impl/TeacherServiceImpl.java @@ -0,0 +1,234 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service.impl + * @author: 李洪涛 + * @date: 2025年5月4日 下午11:18:00 + */ +package com.chinasofti.service.impl; + +import java.util.List; + +import com.chinasofti.dao.TeacherDao; +import com.chinasofti.dao.impl.TeacherDaoImpl; +import com.chinasofti.model.Teacher; +import com.chinasofti.model.TeacherClazz; +import com.chinasofti.model.User; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.TeacherView; +import com.chinasofti.service.TeacherService; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: TeacherServiceImpl.java +* @Description: 教师业务处理 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月4日 下午11:18:00 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月4日 李洪涛 v1.0.0 新建文件 +*/ +public class TeacherServiceImpl implements TeacherService { + + private TeacherDao teacherDao = new TeacherDaoImpl(); + + /** + * @see com.chinasofti.service.TeacherService#findTeacher(com.chinasofti.model.Teacher) + * @Function: findTeacher + * @Description: 查询 + * + * @param: 教师实体 + * @return:教师实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public Teacher findTeacher(Teacher teacher) { + return teacherDao.findTeacher(teacher); + } + + /** + * @see com.chinasofti.service.TeacherService#findClazzIdsByTeacherId(java.lang.Long) + * @Function: findClazzIdsByTeacherId + * @Description: 查询 + * + * @param: teacherID + * @return:List + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findClazzIdsByTeacherId(Long teacherID) { + return teacherDao.findClazzIdsByTeacherId(teacherID); + } + + /** + * @see com.chinasofti.service.TeacherService#findTeacherViews(com.chinasofti.model.view.TeacherView, com.chinasofti.model.view.Page) + * @Function: findTeacherViews + * @Description: 查询所有记录 + * + * @param: 教师实体 + * @return:教师实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findTeacherViews(TeacherView teacherView, Page page) { + return teacherDao.findTeacherViews(teacherView, page); + } + + /** + * @see com.chinasofti.service.TeacherService#insertTeacher(com.chinasofti.model.Teacher) + * @Function: findTeacher + * @Description: 查询 + * + * @param: 教师实体 + * @return:教师实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public String insertTeacher(Teacher teacher,User user,TeacherClazz teacherClazz,String [] clazzIds) { + return teacherDao.insertTeacher(teacher,user,teacherClazz,clazzIds); + } + + /** + * @see com.chinasofti.service.TeacherService#insertTeacherClazz(com.chinasofti.model.TeacherClazz) + * @Function: insertTeacherClazz + * @Description: 添加 + * + * @param: 教师与班级关联关系实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public TeacherClazz insertTeacherClazz(TeacherClazz teacherClazz,String [] clazzIds) { + for (String clazzId : clazzIds) { + teacherClazz.setClazzId(Long.parseLong(clazzId)); + teacherDao.insertTeacherClazz(teacherClazz); + } + return teacherClazz; + } + + /** + * @see com.chinasofti.service.TeacherService#updateTeacher(com.chinasofti.model.Teacher) + * @Function: updateTeacher + * @Description: 修改 + * + * @param: 教师实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public String updateTeacher(Teacher teacher,String [] clazzIds,User user) { + return teacherDao.updateTeacher(teacher, clazzIds, user); + } + + /** + * @see com.chinasofti.service.TeacherService#removeTeachers(java.util.List) + * @Function: removeTeachers + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void removeTeachers(List ids) { + if (ids.size() > 0) { + for (Long id : ids) { + teacherDao.removeTeacher(id); + teacherDao.removeTeacherClazz(id); + } + } + } + + /** + * @see com.chinasofti.service.TeacherService#findTeacherByStudentId(java.lang.Long) + * @Function: findTeacherByStudentId + * @Description: 查询 + * + * @param: 教师实体 + * @return:教师实体 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public Teacher findTeacherByStudentId(Long studentId) { + return teacherDao.findTeacherByStudentId(studentId); + } + +} diff --git a/SMMS/src/com/chinasofti/service/impl/UserServiceImpl.java b/SMMS/src/com/chinasofti/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..f06edb2 --- /dev/null +++ b/SMMS/src/com/chinasofti/service/impl/UserServiceImpl.java @@ -0,0 +1,133 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.service.impl + * @author: mrliy + * @date: 2025年5月2日 上午2:07:43 + */ +package com.chinasofti.service.impl; + +import java.util.List; + +import com.chinasofti.dao.UserDao; +import com.chinasofti.dao.impl.UserDaoImpl; +import com.chinasofti.model.User; +import com.chinasofti.service.UserService; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: UserService.java +* @Description: 用户业务处理 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月2日 上午2:06:30 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月2日 李洪涛 v1.0.0 修改原因 +*/ +public class UserServiceImpl implements UserService{ + + private UserDao userDao = new UserDaoImpl(); + + /** + * @see com.chinasofti.service.UserService#updateUser(com.chinasofti.model.User) + * @Function: updateUser + * @Description: 修改 + * + * @param: 用户实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void updateUser(User user) { + userDao.updateUser(user); + } + + /** + * @see com.chinasofti.service.UserService#removeUser(long) + * @Function: removeUser + * @Description: 删除 + * + * @param: id值 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public void removeUsers(List ids) { + if (null != ids && ids.size() > 0) { + for (Long id : ids) { + userDao.removeUser(id); + } + } + } + + /** + * + * @Function: insertUser + * @Description: 添加 + * + * @param: 用户实体 + * @return:无 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public User insertUser(User user) { + return userDao.insertUser(user); + } + + /** + * @see com.chinasofti.service.UserService#findUsers(com.chinasofti.model.User) + * @Function: findUsers + * @Description: 查询所有记录 + * + * @param: 用户实体 + * @return:用户实体集合 + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年4月6日 上午10:50:58 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年4月6日 李洪涛 v1.0.0 新建方法 + */ + @Override + public List findUsers(User user) { + return userDao.findUsers(user); + } + +} diff --git a/SMMS/src/com/chinasofti/servlet/ClazzServlet.java b/SMMS/src/com/chinasofti/servlet/ClazzServlet.java new file mode 100644 index 0000000..91d7808 --- /dev/null +++ b/SMMS/src/com/chinasofti/servlet/ClazzServlet.java @@ -0,0 +1,211 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.servlet + * @author: 李洪涛 + * @date: 2025年3月27日 上午9:21:53 + */ +package com.chinasofti.servlet; + +import java.io.IOException; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.chinasofti.enums.OperationResult; +import com.chinasofti.enums.PageScope; +import com.chinasofti.enums.RoleCode; +import com.chinasofti.model.Clazz; +import com.chinasofti.model.User; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.StudentView; +import com.chinasofti.service.ClazzService; +import com.chinasofti.service.StudentService; +import com.chinasofti.service.impl.ClazzServiceImpl; +import com.chinasofti.service.impl.StudentServiceImpl; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +/** + * +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: StudentServlet.java +* @Description: 学生接口 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年3月27日 上午9:09:40 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年3月27日 李洪涛 v1.0.0 新建文件 + */ +@WebServlet("/ClazzServlet") +public class ClazzServlet extends HttpServlet { + + private static final long serialVersionUID = 1L; + + private ClazzService clazzService = new ClazzServiceImpl(); + private StudentService studentService = new StudentServiceImpl(); + + public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{ + doPost(request, response); + } + + public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{ + String method = request.getParameter("method"); + if("toClazzListView".equals(method)){ + clazzList(request,response); + } else if("getClazzList".equals(method)){ + getClazzList(request, response); + } else if("DeleteClazz".equals(method)){ + deleteClazz(request, response); + } else if("AddClazz".equals(method)){ + addClazz(request, response); + } else if("EditClazz".equals(method)){ + editClazz(request, response); + } + } + + private void clazzList(HttpServletRequest request,HttpServletResponse response) { + try { + request.getRequestDispatcher("view/clazzList.jsp").forward(request, response); + } catch (ServletException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void getClazzList(HttpServletRequest request,HttpServletResponse response){ + Integer currentPage = request.getParameter("page") == null ? PageScope.CURRENT_PAGE.getNum() : Integer.parseInt(request.getParameter("page")); + Integer pageSize = request.getParameter("rows") == null ? PageScope.PAGE_SIZE.getNum() : Integer.parseInt(request.getParameter("rows")); + String clazzName = request.getParameter("clazzName"); + Long userId = request.getParameter("userId") == null ? 0 : Long.parseLong(request.getParameter("userId")); + //获取当前登录用户类型 + String roleCode = request.getSession().getAttribute("roleCode").toString(); + User loginUser = (User)request.getSession().getAttribute("user"); + Clazz clazz = new Clazz(); + clazz.setClazzName(clazzName); + clazz.setUserId(userId); + List clazzList = null; + List clazzListTotal = null; + int total; + if(RoleCode.TEACHER.getCode().equals(roleCode)){ + //如果是老师,只能查看关联或负责的班级信息 + String clazzIdStr = request.getSession().getAttribute("clazzIdStr").toString(); + clazzList = clazzService.findClazzsByClazzIds(clazzIdStr, clazz, new Page(currentPage, pageSize)); + clazzListTotal = clazzService.findClazzsByClazzIds(clazzIdStr, clazz, new Page(PageScope.CURRENT_PAGE.getNum(), PageScope.PAGE_SIZE.getNum())); + } else if(RoleCode.STUDENT.getCode().equals(roleCode)){ + StudentView studentView = new StudentView(); + studentView.setUserId(loginUser.getId()); + studentView = studentService.findStudentByUserId(studentView); + long clazzId = studentView.getClazzId(); + clazzList = clazzService.findClazzsByClazzIds(clazzId + "", clazz, new Page(currentPage, pageSize)); + clazzListTotal = clazzService.findClazzsByClazzIds(clazzId + "", clazz, new Page(PageScope.CURRENT_PAGE.getNum(), PageScope.PAGE_SIZE.getNum())); + } else { + clazzList = clazzService.findClazzPage(clazz, new Page(currentPage, pageSize)); + clazzListTotal = clazzService.findClazzPage(clazz, new Page(PageScope.CURRENT_PAGE.getNum(), PageScope.PAGE_SIZE.getNum())); + } + total = clazzListTotal.size(); + Map ret = new HashMap(); + ret.put("total", total); + ret.put("rows", clazzList); + try { + String from = request.getParameter("from"); + if("combox".equals(from)){ + response.getWriter().write(JSONArray.fromObject(clazzList).toString()); + }else{ + response.getWriter().write(JSONObject.fromObject(ret).toString()); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void deleteClazz(HttpServletRequest request,HttpServletResponse response) { + String[] clazzIdsRes = request.getParameterValues("clazzIds[]"); + List clazzIds = new ArrayList(); + for(String id : clazzIdsRes){ + clazzIds.add(Long.parseLong(id)); + } + String idStr = ""; + for (Long clazzIdParams : clazzIds) { + idStr += clazzIdParams + ","; + } + idStr = idStr.substring(0, idStr.length()-1); + List sv = studentService.findStudentViewsByClazzIds(new StudentView(),idStr, new Page(1,999)); + String res = OperationResult.SUCCESS.getResult(); + if (null != sv && sv.size() > 0) { + res = "isHaveStudent"; + } else { + clazzService.removeClazz(clazzIds); + } + try { + response.getWriter().write(res); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void addClazz(HttpServletRequest request,HttpServletResponse response) { + Long userId = Long.parseLong(request.getParameter("userId")); + String clazzName = request.getParameter("clazzName"); + String clazzCode = request.getParameter("clazzCode"); + String clazzs = request.getParameter("clazzs"); + String clazzAds = request.getParameter("clazzAds"); + Clazz clazz = new Clazz(); + clazz.setUserId(userId); + clazz.setClazzName(clazzName); + clazz.setClazzCode(clazzCode); + clazz.setClazzs(clazzs); + clazz.setClazzAds(clazzAds); + User loginUser = (User)request.getSession().getAttribute("user"); + clazz.setCreateBy(loginUser.getName()); + clazz.setCreateTime(LocalDateTime.now()); + clazzService.insertClazz(clazz); + try { + response.getWriter().write(OperationResult.SUCCESS.getResult()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void editClazz(HttpServletRequest request,HttpServletResponse response) { + User loginUser = (User)request.getSession().getAttribute("user"); + Long id = Long.parseLong(request.getParameter("id")); + Long userId = Long.parseLong(request.getParameter("userId")); + String clazzName = request.getParameter("clazzName"); + String clazzCode = request.getParameter("clazzCode"); + String clazzs = request.getParameter("clazzs"); + String clazzAds = request.getParameter("clazzAds"); + Clazz clazz = new Clazz(); + clazz.setId(id); + clazz.setUserId(userId); + clazz.setClazzName(clazzName); + clazz.setClazzCode(clazzCode); + clazz.setClazzs(clazzs); + clazz.setClazzAds(clazzAds); + clazz.setUpdateBy(loginUser.getName()); + clazz.setUpdateTime(LocalDateTime.now()); + clazzService.updateClazz(clazz); + try { + response.getWriter().write(OperationResult.SUCCESS.getResult()); + } catch (IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/SMMS/src/com/chinasofti/servlet/CreditRecordsServlet.java b/SMMS/src/com/chinasofti/servlet/CreditRecordsServlet.java new file mode 100644 index 0000000..e735062 --- /dev/null +++ b/SMMS/src/com/chinasofti/servlet/CreditRecordsServlet.java @@ -0,0 +1,240 @@ +package com.chinasofti.servlet; + +import java.io.IOException; +import java.net.URLEncoder; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.ServletException; +import javax.servlet.ServletOutputStream; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +import com.alibaba.druid.util.StringUtils; +import com.chinasofti.enums.CreditType; +import com.chinasofti.enums.MathType; +import com.chinasofti.enums.OperationResult; +import com.chinasofti.enums.PageScope; +import com.chinasofti.enums.RoleCode; +import com.chinasofti.model.CreditRecords; +import com.chinasofti.model.Student; +import com.chinasofti.model.User; +import com.chinasofti.model.view.Page; +import com.chinasofti.service.CreditRecordsService; +import com.chinasofti.service.StudentService; +import com.chinasofti.service.impl.CreditRecordsServiceImpl; +import com.chinasofti.service.impl.StudentServiceImpl; +import com.chinasofti.utils.IsNumber; + +import net.sf.json.JSONObject; + + +@WebServlet("/CreditRecordsServlet") +public class CreditRecordsServlet extends HttpServlet { + + private static final long serialVersionUID = 1L; + private CreditRecordsService creditRecordsService = new CreditRecordsServiceImpl(); + private StudentService studentService = new StudentServiceImpl(); + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + doPost(request, response); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String method = request.getParameter("method"); + if("toCreditRecordsServletListView".equals(method)){ + recordsServletList(request, response); + } else if("CreditRecordsList".equals(method)){ + getCreditRecordsList(request,response); + } else if("AddCreditRecords".equals(method)){ + addCreditRecords(request,response); + } else if("ExportCreditRecordsList".equals(method)){ + exportCreditRecords(request,response); + } + } + + private void recordsServletList(HttpServletRequest request,HttpServletResponse response) { + try { + request.getRequestDispatcher("view/creditRecordsList.jsp").forward(request, response); + } catch (ServletException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void getCreditRecordsList(HttpServletRequest request,HttpServletResponse response) { + Integer currentPage = request.getParameter("page") == null ? PageScope.CURRENT_PAGE.getNum() : Integer.parseInt(request.getParameter("page")); + Integer pageSize = request.getParameter("rows") == null ? PageScope.PAGE_SIZE.getNum() : Integer.parseInt(request.getParameter("rows")); + + String studentName = request.getParameter("studentName"); + long number = StringUtils.isEmpty(request.getParameter("number")) ? 0 : Long.parseLong(request.getParameter("number").toString()); + String clazzName = request.getParameter("clazzName"); + String creditType = request.getParameter("creditType"); + String startTime = request.getParameter("startTime"); + String endTime = request.getParameter("endTime"); + + //获取当前登录用户类型 + String roleCode = request.getSession().getAttribute("roleCode").toString(); + + CreditRecords params = new CreditRecords(); + params.setStudentName(studentName); + params.setNumber(number); + params.setClazzName(clazzName); + params.setCreditType(creditType); + String clazzIds = ""; + + List creditRecords = new ArrayList(); + List creditRecordsTotal = new ArrayList(); + int total; + if(RoleCode.TEACHER.getCode().equals(roleCode)){ + clazzIds = request.getSession().getAttribute("clazzIdStr").toString(); + } + creditRecords = creditRecordsService.findCreditRecordsPages(startTime,endTime,params, clazzIds, new Page(currentPage, pageSize)); + creditRecordsTotal = creditRecordsService.findCreditRecordsPages(startTime,endTime,params, clazzIds, new Page(PageScope.CURRENT_PAGE.getNum(), PageScope.PAGE_SIZE.getNum())); + total = creditRecordsTotal.size(); + + Map ret = new HashMap(); + ret.put("total", total); + ret.put("rows", creditRecords); + try { + response.getWriter().write(JSONObject.fromObject(ret).toString()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void addCreditRecords(HttpServletRequest request,HttpServletResponse response) { + String res = OperationResult.SUCCESS.getResult(); + if (IsNumber.isNumber(request.getParameter("studentId").toString())) { + Long studentId = Long.parseLong(request.getParameter("studentId")); + String creditType = request.getParameter("creditType"); + String mathType = request.getParameter("mathType"); + Integer credit = Integer.parseInt(request.getParameter("credit")); + if (MathType.MINUS_SIGN.getSign().equals(mathType)) { + credit *= -1; + } + String remark = request.getParameter("remark"); + + User loginUser = (User)request.getSession().getAttribute("user"); + String loginUserName = loginUser.getName(); + + LocalDateTime now = LocalDateTime.now(); + + CreditRecords creditRecords = new CreditRecords(); + creditRecords.setCredit(credit); + creditRecords.setCreditType(creditType); + creditRecords.setRemark(remark); + creditRecords.setUserName(loginUserName); + creditRecords.setCreateBy(loginUserName); + creditRecords.setCreateTime(now); + + //新增学分变动记录 + creditRecordsService.insertCreditRecords(studentId, creditRecords); + + if (CreditType.THIS_WEEK.getType().equals(creditType)) { + Student student = new Student(); + student.setId(studentId); + student.setUpdateBy(loginUserName); + student.setUpdateTime(now); + //修改学生本周学分 + studentService.updateStudentScoreNow(credit, student); + } + } else { + res = "error"; + } + + try { + response.getWriter().write(res); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void exportCreditRecords(HttpServletRequest request,HttpServletResponse response) { + Integer currentPage = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page")); + Integer pageSize = request.getParameter("rows") == null ? 99999 : Integer.parseInt(request.getParameter("rows")); + + String studentName = request.getParameter("studentName"); + long number = StringUtils.isEmpty(request.getParameter("number")) ? 0 : Long.parseLong(request.getParameter("number").toString()); + String clazzName = request.getParameter("clazzName"); + String creditType = request.getParameter("creditType"); + String startTime = request.getParameter("startTime"); + String endTime = request.getParameter("endTime"); + + //获取当前登录用户类型 + String roleCode = request.getSession().getAttribute("roleCode").toString(); + + CreditRecords params = new CreditRecords(); + params.setStudentName(studentName); + params.setNumber(number); + params.setClazzName(clazzName); + params.setCreditType(creditType); + String clazzIds = ""; + + List creditRecords = new ArrayList(); + if(RoleCode.TEACHER.getCode().equals(roleCode)){ + clazzIds = request.getSession().getAttribute("clazzIdStr").toString(); + } + creditRecords = creditRecordsService.findCreditRecordsPages(startTime,endTime,params, clazzIds, new Page(currentPage, pageSize)); + try { + response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode("学分变动记录.xls", "UTF-8")); + response.setHeader("Connection", "close"); + response.setHeader("Content-Type", "application/octet-stream"); + ServletOutputStream outputStream = response.getOutputStream(); + HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); + HSSFSheet createSheet = hssfWorkbook.createSheet("学分变动列表"); + HSSFRow createRow = createSheet.createRow(0); + createRow.createCell(0).setCellValue("学号"); + createRow.createCell(1).setCellValue("学生"); + createRow.createCell(2).setCellValue("班级"); + createRow.createCell(3).setCellValue("变动分数"); + createRow.createCell(4).setCellValue("变动范围"); + createRow.createCell(5).setCellValue("操作人"); + createRow.createCell(6).setCellValue("操作时间"); + createRow.createCell(7).setCellValue("变动原因"); + //实现将数据装入到excel文件中 + int row = 1; + for(CreditRecords records:creditRecords){ + createRow = createSheet.createRow(row++); + createRow.createCell(0).setCellValue(records.getNumber()+""); + createRow.createCell(1).setCellValue(records.getStudentName()); + createRow.createCell(2).setCellValue(records.getClazzName()); + int credit = records.getCredit(); + if (credit > 0) { + createRow.createCell(3).setCellValue("+" + credit); + } else { + createRow.createCell(3).setCellValue("" + credit); + } + String type = records.getCreditType(); + if (CreditType.THIS_WEEK.getType().equals(type)) { + createRow.createCell(4).setCellValue(CreditType.THIS_WEEK.getInfo()); + } else { + createRow.createCell(4).setCellValue(CreditType.THIS_DISCIPLINE.getInfo()); + } + createRow.createCell(5).setCellValue(records.getUserName()); + createRow.createCell(6).setCellValue(records.getCreateTime().toString()); + createRow.createCell(7).setCellValue(records.getRemark()); + } + createSheet.setColumnWidth(0,20*256); + createSheet.setColumnWidth(2,20*256); + createSheet.setColumnWidth(6,10*256); + createSheet.setColumnWidth(7,200*256); + hssfWorkbook.write(outputStream); + outputStream.flush(); + outputStream.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/SMMS/src/com/chinasofti/servlet/LeaveServlet.java b/SMMS/src/com/chinasofti/servlet/LeaveServlet.java new file mode 100644 index 0000000..fe0b1fb --- /dev/null +++ b/SMMS/src/com/chinasofti/servlet/LeaveServlet.java @@ -0,0 +1,327 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.servlet + * @author: 李洪涛 + * @date: 2025年3月27日 上午9:21:53 + */ +package com.chinasofti.servlet; + +import java.io.IOException; +import java.net.URLEncoder; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.ServletException; +import javax.servlet.ServletOutputStream; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +import com.chinasofti.enums.CreditType; +import com.chinasofti.enums.DeductCredit; +import com.chinasofti.enums.LeaveStatus; +import com.chinasofti.enums.OperationResult; +import com.chinasofti.enums.PageScope; +import com.chinasofti.enums.RoleCode; +import com.chinasofti.model.CreditRecords; +import com.chinasofti.model.Leave; +import com.chinasofti.model.User; +import com.chinasofti.model.view.LeaveView; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.StudentView; +import com.chinasofti.model.view.TeacherView; +import com.chinasofti.service.CreditRecordsService; +import com.chinasofti.service.LeaveService; +import com.chinasofti.service.StudentService; +import com.chinasofti.service.TeacherService; +import com.chinasofti.service.impl.CreditRecordsServiceImpl; +import com.chinasofti.service.impl.LeaveServiceImpl; +import com.chinasofti.service.impl.StudentServiceImpl; +import com.chinasofti.service.impl.TeacherServiceImpl; +import com.chinasofti.utils.IsNumber; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +/** + * +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: LeaveServlet.java +* @Description: 请假接口 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年3月27日 上午9:09:40 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年3月27日 李洪涛 v1.0.0 新建文件 + */ +@WebServlet("/LeaveServlet") +public class LeaveServlet extends HttpServlet { + + private static final long serialVersionUID = 1L; + private LeaveService leaveService = new LeaveServiceImpl(); + private StudentService studentService = new StudentServiceImpl(); + private TeacherService teacherService = new TeacherServiceImpl(); + private CreditRecordsService creditRecordsService = new CreditRecordsServiceImpl(); + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + doPost(request, response); + } + + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String method = request.getParameter("method"); + if("toLeaveServletListView".equals(method)){ + leaveList(request, response); + } else if("LeaveList".equals(method)){ + getLeaveList(request,response); + } else if("AddLeave".equals(method)){ + addLeave(request,response); + } else if("CheckLeave".equals(method)){ + checkLeave(request,response); + } else if("ExportLeaveList".equals(method)){ + exportLeave(request,response); + } else if("ApproveTeacher".equals(method)){ + approveTeacher(request,response); + } + } + + private void leaveList(HttpServletRequest request,HttpServletResponse response) { + try { + request.getRequestDispatcher("view/leaveList.jsp").forward(request, response); + } catch (ServletException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void getLeaveList(HttpServletRequest request,HttpServletResponse response) { + Integer currentPage = request.getParameter("page") == null ? PageScope.CURRENT_PAGE.getNum() : Integer.parseInt(request.getParameter("page")); + Integer pageSize = request.getParameter("rows") == null ? PageScope.PAGE_SIZE.getNum() : Integer.parseInt(request.getParameter("rows")); + + long studentId = request.getParameter("studentId") == null || !IsNumber.isNumber(request.getParameter("studentId").toString()) ? 0 : Long.parseLong(request.getParameter("studentId").toString()); + long teacherId = request.getParameter("teacherId") == null ? 0 : Long.parseLong(request.getParameter("teacherId").toString()); + String status = request.getParameter("status"); + + //获取当前登录用户类型 + String roleCode = request.getSession().getAttribute("roleCode").toString(); + + Leave leave = new Leave(); + leave.setStudentId(studentId); + leave.setTeacherId(teacherId); + leave.setStatus(status); + + List leaves = null; + List leavesTotal = null; + int total = 0; + if(RoleCode.STUDENT.getCode().equals(roleCode)){ + User loginUser = (User)request.getSession().getAttribute("user"); + StudentView studentView = new StudentView(); + studentView.setUserId(loginUser.getId()); + leave.setStudentId(studentService.findStudentByUserId(studentView).getStudentId()); + leaves = leaveService.findLeavePages(leave, new Page(currentPage, pageSize)); + leavesTotal = leaveService.findLeavePages(leave, new Page(PageScope.CURRENT_PAGE.getNum(), PageScope.PAGE_SIZE.getNum())); + } else if(RoleCode.TEACHER.getCode().equals(roleCode)){ + String clazzIdStr = request.getSession().getAttribute("clazzIdStr").toString(); + leaves = leaveService.findLeavePagesByClazzIds(leave, new Page(currentPage, pageSize),clazzIdStr); + leavesTotal = leaveService.findLeavePagesByClazzIds(leave, new Page(PageScope.CURRENT_PAGE.getNum(), PageScope.PAGE_SIZE.getNum()),clazzIdStr); + } else { + leaves = leaveService.findLeavePages(leave, new Page(currentPage, pageSize)); + leavesTotal = leaveService.findLeavePages(leave, new Page(PageScope.CURRENT_PAGE.getNum(), PageScope.PAGE_SIZE.getNum())); + } + if (null != leavesTotal && leavesTotal.size() > 0) { + total = leavesTotal.size(); + } + Map ret = new HashMap(); + ret.put("total", total); + ret.put("rows", leaves); + try { + response.getWriter().write(JSONObject.fromObject(ret).toString()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void addLeave(HttpServletRequest request,HttpServletResponse response) { + String info = request.getParameter("info"); + + User loginUser = (User)request.getSession().getAttribute("user"); + + Leave leave = new Leave(); + StudentView studentView = new StudentView(); + studentView.setUserId(loginUser.getId()); + Long studentId = studentService.findStudentByUserId(studentView).getStudentId(); + Long teacherId = teacherService.findTeacherByStudentId(studentId).getId(); + leave.setStudentId(studentId); + leave.setTeacherId(teacherId); + leave.setStatus(LeaveStatus.WAIT.getstatus()); + leave.setInfo(info); + LocalDateTime now = LocalDateTime.now(); + leave.setApplyTime(now); + leave.setCreateBy(loginUser.getName()); + leave.setCreateTime(now); + + leaveService.insertLeave(leave); + + try { + response.getWriter().write(OperationResult.SUCCESS.getResult()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void checkLeave(HttpServletRequest request,HttpServletResponse response) { + Long id = Long.parseLong(request.getParameter("id")); + String status = request.getParameter("status"); + String remark = request.getParameter("remark"); + long studentId = Long.parseLong(request.getParameter("studentId").toString()); + + User loginUser = (User)request.getSession().getAttribute("user"); + + Leave leave = new Leave(); + leave.setRemark(remark); + leave.setStatus(status); + leave.setId(id); + LocalDateTime now = LocalDateTime.now(); + leave.setApproveTime(now); + leave.setUpdateBy(loginUser.getName()); + leave.setCreateTime(now); + + leaveService.updateLeave(leave); + + if (LeaveStatus.PASS.getstatus().equals(status)) { + String creditType = CreditType.THIS_DISCIPLINE.getType(); + Integer credit = DeductCredit.LEAVE.getCredit(); + String creditRemark = DeductCredit.LEAVE.getInfo(); + + CreditRecords creditRecords = new CreditRecords(); + creditRecords.setCredit(credit); + creditRecords.setCreditType(creditType); + creditRecords.setRemark(creditRemark); + creditRecords.setUserName(loginUser.getName()); + creditRecords.setCreateBy(loginUser.getName()); + creditRecords.setCreateTime(now); + + creditRecordsService.insertCreditRecords(studentId, creditRecords); + } + + try { + response.getWriter().write(OperationResult.SUCCESS.getResult()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void exportLeave(HttpServletRequest request,HttpServletResponse response) { + + long studentId = request.getParameter("studentId") == null ? 0 : Long.parseLong(request.getParameter("studentId").toString()); + long teacherId = request.getParameter("teacherId") == null ? 0 : Long.parseLong(request.getParameter("teacherId").toString()); + String status = request.getParameter("status"); + + //获取当前登录用户类型 + String roleCode = request.getSession().getAttribute("roleCode").toString(); + + Leave leave = new Leave(); + leave.setStudentId(studentId); + leave.setTeacherId(teacherId); + leave.setStatus(status); + + List leaves = null; + if(RoleCode.STUDENT.getCode().equals(roleCode)){ + User loginUser = (User)request.getSession().getAttribute("user"); + StudentView studentView = new StudentView(); + studentView.setUserId(loginUser.getId()); + leave.setStudentId(studentService.findStudentByUserId(studentView).getStudentId()); + leaves = leaveService.findLeaveViews(leave); + } else if(RoleCode.TEACHER.getCode().equals(roleCode)){ + String clazzIdStr = request.getSession().getAttribute("clazzIdStr").toString(); + leaves = leaveService.findLeaveViewsByClazzIds(leave,clazzIdStr); + } else { + leaves = leaveService.findLeaveViews(leave); + } + try { + response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode("请假记录.xls", "UTF-8")); + response.setHeader("Connection", "close"); + response.setHeader("Content-Type", "application/octet-stream"); + ServletOutputStream outputStream = response.getOutputStream(); + HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); + HSSFSheet createSheet = hssfWorkbook.createSheet("成绩列表"); + HSSFRow createRow = createSheet.createRow(0); + createRow.createCell(0).setCellValue("学生"); + createRow.createCell(1).setCellValue("审批教师"); + createRow.createCell(2).setCellValue("申请信息"); + createRow.createCell(3).setCellValue("审批状态"); + createRow.createCell(4).setCellValue("审批回复"); + createRow.createCell(5).setCellValue("申请时间"); + createRow.createCell(6).setCellValue("审批时间"); + //实现将数据装入到excel文件中 + int row = 1; + for(LeaveView leaveView:leaves){ + createRow = createSheet.createRow(row++); + createRow.createCell(0).setCellValue(leaveView.getStudentName()); + createRow.createCell(1).setCellValue(leaveView.getTeacherName()); + createRow.createCell(2).setCellValue(leaveView.getInfo()); + createRow.createCell(3).setCellValue(leaveView.getStatus()); + createRow.createCell(4).setCellValue(leaveView.getRemark()); + createRow.createCell(5).setCellValue(leaveView.getApplyTime().toString()); + String approveTime; + if (null == leaveView.getApproveTime()) { + approveTime = ""; + } else { + approveTime = leaveView.getApproveTime().toString(); + } + createRow.createCell(6).setCellValue(approveTime); + } + createSheet.setColumnWidth(0,10*256); + createSheet.setColumnWidth(1,10*256); + createSheet.setColumnWidth(2,50*256); + createSheet.setColumnWidth(4,50*256); + createSheet.setColumnWidth(5,20*256); + createSheet.setColumnWidth(6,20*256); + hssfWorkbook.write(outputStream); + outputStream.flush(); + outputStream.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void approveTeacher(HttpServletRequest request,HttpServletResponse response) { + //获取当前登录用户的角色 + String roleCode = request.getSession().getAttribute("roleCode").toString(); + Long teacherId = null; + if (RoleCode.TEACHER.getCode().equals(roleCode)) { + //如果是老师,只能查看自己班级责任人的信息 + teacherId = Long.parseLong(request.getSession().getAttribute("teacherId").toString()); + } + if(RoleCode.STUDENT.getCode().equals(roleCode)){ + //如果是学生,只能查看自己班级责任人的信息 + User loginUser = (User)request.getSession().getAttribute("user"); + StudentView studentView = new StudentView(); + studentView.setUserId(loginUser.getId()); + studentView = studentService.findStudentByUserId(studentView); + teacherId = teacherService.findTeacherByStudentId(studentView.getStudentId()).getId(); + } + List teacherViews = leaveService.findApproveTeacherViews(teacherId); + try { + response.getWriter().write(JSONArray.fromObject(teacherViews).toString()); + } catch (IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/SMMS/src/com/chinasofti/servlet/LoginServlet.java b/SMMS/src/com/chinasofti/servlet/LoginServlet.java new file mode 100644 index 0000000..3342a0b --- /dev/null +++ b/SMMS/src/com/chinasofti/servlet/LoginServlet.java @@ -0,0 +1,166 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.servlet + * @author: 李洪涛 + * @date: 2025年3月27日 上午9:21:53 + */ +package com.chinasofti.servlet; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import com.chinasofti.enums.IsCounselor; +import com.chinasofti.enums.RoleId; +import com.chinasofti.model.Clazz; +import com.chinasofti.model.Role; +import com.chinasofti.model.Teacher; +import com.chinasofti.model.User; +import com.chinasofti.service.ClazzService; +import com.chinasofti.service.LoginService; +import com.chinasofti.service.RoleService; +import com.chinasofti.service.TeacherService; +import com.chinasofti.service.impl.ClazzServiceImpl; +import com.chinasofti.service.impl.LoginServiceImpl; +import com.chinasofti.service.impl.RoleServiceImpl; +import com.chinasofti.service.impl.TeacherServiceImpl; +import com.chinasofti.utils.SM3PasswordEncoder; + +/** + * +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: LoginServlet.java +* @Description: 登录校验 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年3月27日 上午9:09:40 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年3月27日 李洪涛 v1.0.0 新建文件 + */ +@WebServlet("/LoginServlet") +public class LoginServlet extends HttpServlet { + + private static final long serialVersionUID = 1L; + + private LoginService loginService = new LoginServiceImpl(); + private RoleService roleService = new RoleServiceImpl(); + private ClazzService clazzService = new ClazzServiceImpl(); + private TeacherService teacherService = new TeacherServiceImpl(); + + public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{ + doPost(request, response); + } + + + /** + * + * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) + * @Function: doPost + * @Description: 登录校验,跳转页面 + * + * @param: request + * @param: response + * @return: void + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年3月27日 上午9:12:20 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年3月27日 李洪涛 v1.0.0 新建方法 + */ + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + String method = request.getParameter("method"); + if("logout".equals(method)){ + logout(request, response); + return; + } + + String username = request.getParameter("username"); + String password = request.getParameter("password"); + + User user = new User(); + user.setUserName(username); + + User res = loginService.loginCheck(user); + + String loginStatus = "loginSuccess"; + if (null != res && SM3PasswordEncoder.matches(password, res.getPassWord())) { + HttpSession session=request.getSession(); + Role role = roleService.findRoleById(res.getRoleId()); + session.setAttribute("user", res); + session.setAttribute("roleCode", role.getRoleCode()); + if (RoleId.TEACHER.getId() == role.getId()) { + long userId = res.getId(); + Teacher teacher = new Teacher(); + teacher.setUserId(userId); + teacher = teacherService.findTeacher(teacher); + List clazzs = new ArrayList(); + long teacherId = teacher.getId(); + clazzs.addAll(clazzService.findClazzsByTeacherId(teacherId)); + if (IsCounselor.YES.getIs().equals(teacher.getIsCounselor())) { + session.setAttribute("isCounselor", IsCounselor.YES.getIs()); + clazzs.addAll(clazzService.findClazzsByUserIds(userId+"")); + } else { + session.setAttribute("isCounselor", IsCounselor.NO.getIs()); + } + String clazzIdStr = ""; + if (clazzs.size() > 0) { + for (Clazz clazz : clazzs) { + clazzIdStr += clazz.getId() + ","; + } + clazzIdStr = clazzIdStr.substring(0, clazzIdStr.length()-1); + } + session.setAttribute("clazzIdStr", clazzIdStr); + session.setAttribute("teacherId", teacherId); + } + } else { + loginStatus = "loginError"; + } + response.getWriter().write(loginStatus); + } + + /** + * + * @Function: logout + * @Description: 退出登录 + * + * @param: request + * @param: response + * @return: void + * @throws:无 + * + * @version: v1.0.0 + * @author: 李洪涛 + * @date: 2025年3月27日 上午9:12:20 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2025年3月27日 李洪涛 v1.0.0 新建方法 + */ + private void logout(HttpServletRequest request,HttpServletResponse response) throws IOException{ + request.getSession().removeAttribute("user"); + request.getSession().removeAttribute("userType"); + response.sendRedirect("index.jsp"); + } + +} diff --git a/SMMS/src/com/chinasofti/servlet/StudentServlet.java b/SMMS/src/com/chinasofti/servlet/StudentServlet.java new file mode 100644 index 0000000..dadca34 --- /dev/null +++ b/SMMS/src/com/chinasofti/servlet/StudentServlet.java @@ -0,0 +1,497 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.servlet + * @author: 李洪涛 + * @date: 2025年3月27日 上午9:21:53 + */ +package com.chinasofti.servlet; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.fileupload.FileUploadException; +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +import com.alibaba.druid.util.StringUtils; +import com.chinasofti.enums.FileName; +import com.chinasofti.enums.OperationResult; +import com.chinasofti.enums.PageScope; +import com.chinasofti.enums.PassWord; +import com.chinasofti.enums.RoleCode; +import com.chinasofti.enums.RoleId; +import com.chinasofti.enums.ScoreNow; +import com.chinasofti.enums.Sex; +import com.chinasofti.model.Clazz; +import com.chinasofti.model.Student; +import com.chinasofti.model.User; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.StudentView; +import com.chinasofti.service.ClazzService; +import com.chinasofti.service.StudentService; +import com.chinasofti.service.impl.ClazzServiceImpl; +import com.chinasofti.service.impl.StudentServiceImpl; +import com.chinasofti.utils.ChineseToPinyin; +import com.chinasofti.utils.IsDate; +import com.chinasofti.utils.IsPhoneNumber; +import com.chinasofti.utils.SM3PasswordEncoder; +import com.lizhou.exception.FileFormatException; +import com.lizhou.exception.NullFileException; +import com.lizhou.exception.ProtocolException; +import com.lizhou.exception.SizeException; +import com.lizhou.fileload.FileUpload; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +/** + * +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: StudentServlet.java +* @Description: 学生接口 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年3月27日 上午9:09:40 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年3月27日 李洪涛 v1.0.0 新建文件 + */ +@WebServlet("/StudentServlet") +public class StudentServlet extends HttpServlet { + + private static final long serialVersionUID = 1L; + + private StudentService studentService = new StudentServiceImpl(); + private ClazzService clazzService = new ClazzServiceImpl(); + + public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{ + doPost(request, response); + } + + public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{ + String method = request.getParameter("method"); + if("toStudentListView".equals(method)){ + studentList(request,response); + }else if("AddStudent".equals(method)){ + addStudent(request,response); + }else if("StudentList".equals(method)){ + getStudentList(request,response); + }else if("EditStudent".equals(method)){ + editStudent(request,response); + }else if("DeleteStudent".equals(method)){ + deleteStudent(request,response); + }else if("ImportStudent".equals(method)){ + importStudent(request,response); + }else if("DownLoad".equals(method)){ + downLoad(request,response); + } + } + + private void deleteStudent(HttpServletRequest request,HttpServletResponse response) { + String[] studentIdsRes = request.getParameterValues("studentIds[]"); + String[] userIdsRes = request.getParameterValues("userIds[]"); + + String studentIdsStr = ""; + for (String studentId : studentIdsRes) { + studentIdsStr += studentId + ","; + } + studentIdsStr = studentIdsStr.substring(0, studentIdsStr.length()-1); + + String userIdsStr = ""; + for (String userId : userIdsRes) { + userIdsStr += userId + ","; + } + userIdsStr = userIdsStr.substring(0, userIdsStr.length()-1); + + try { + response.getWriter().write(studentService.removeStudents(studentIdsStr, userIdsStr)); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void editStudent(HttpServletRequest request,HttpServletResponse response) { + + long userId = Long.parseLong(request.getParameter("userId")); + String name = request.getParameter("name"); + String sex = request.getParameter("sex"); + String userName = request.getParameter("userName"); + String phone = request.getParameter("phone"); + + long studentId = Long.parseLong(request.getParameter("studentId")); + long number = Long.parseLong(request.getParameter("number")); + String honor = request.getParameter("honor"); + long clazzId = Long.parseLong(request.getParameter("clazzId")); + + User loginUser = (User) request.getSession().getAttribute("user"); + + LocalDateTime now = LocalDateTime.now(); + String updateBy = loginUser.getUserName(); + + User user = new User(); + user.setId(userId); + user.setName(name); + user.setSex(sex); + user.setUserName(userName); + user.setPhone(phone); + user.setUpdateBy(updateBy); + user.setUpdateTime(now); + + Student student = new Student(); + student.setId(studentId); + student.setNumber(number); + student.setHonor(honor); + student.setClazzId(clazzId); + if (!StringUtils.isEmpty(request.getParameter("scoreNow"))) { + int scoreNow = Integer.parseInt(request.getParameter("scoreNow")); + student.setScoreNow(scoreNow); + } + student.setUpdateBy(updateBy); + student.setUpdateTime(now); + + try { + response.getWriter().write(studentService.updateStudent(student,user)); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void getStudentList(HttpServletRequest request,HttpServletResponse response) { + Integer currentPage = request.getParameter("page") == null ? PageScope.CURRENT_PAGE.getNum() : Integer.parseInt(request.getParameter("page")); + Integer pageSize = request.getParameter("rows") == null ? PageScope.PAGE_SIZE.getNum() : Integer.parseInt(request.getParameter("rows")); + //获取当前登录用户类型 + String roleCode = request.getSession().getAttribute("roleCode").toString(); + User loginUser = (User)request.getSession().getAttribute("user"); + String name = request.getParameter("studentName"); + Long clazzId = request.getParameter("clazzId") == null ? 0 : Long.parseLong(request.getParameter("clazzId")); + StudentView studentView = new StudentView(); + studentView.setName(name); + studentView.setClazzId(clazzId); + + List studentViews = null; + List studentViewsTotal = null; + int total; + if(RoleCode.STUDENT.getCode().equals(roleCode)){ + //如果是学生,只能查看自己的信息 + studentView.setUserId(loginUser.getId()); + studentViews = new ArrayList(); + studentViews.add(studentService.findStudentByUserId(studentView)); + total = 1; + } else if(RoleCode.TEACHER.getCode().equals(roleCode)){ + //如果是老师,只能查看关联或负责的班级内的学生信息 + String clazzIdStr = request.getSession().getAttribute("clazzIdStr").toString(); + studentViews = studentService.findStudentViewsByClazzIds(studentView, clazzIdStr, new Page(currentPage, pageSize)); + studentViewsTotal = studentService.findStudentViewsByClazzIds(studentView, clazzIdStr, new Page(PageScope.CURRENT_PAGE.getNum(), PageScope.PAGE_SIZE.getNum())); + total = studentViewsTotal.size(); + } else { + studentViews = studentService.findStudentViews(studentView, new Page(currentPage, pageSize)); + studentViewsTotal = studentService.findStudentViews(studentView, new Page(PageScope.CURRENT_PAGE.getNum(), PageScope.PAGE_SIZE.getNum())); + total = studentViewsTotal.size(); + } + Map res = new HashMap(); + res.put("total", total); + res.put("rows", studentViews); + try { + String from = request.getParameter("from"); + if("combox".equals(from)){ + response.getWriter().write(JSONArray.fromObject(studentViews).toString()); + }else{ + response.getWriter().write(JSONObject.fromObject(res).toString()); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void addStudent(HttpServletRequest request,HttpServletResponse response) { + String name = request.getParameter("name"); + String sex = request.getParameter("sex"); + String userName = request.getParameter("userName"); + String phone = request.getParameter("phone"); + + long clazzId = Long.parseLong(request.getParameter("clazzId")); + long number = Long.parseLong(request.getParameter("number")); + Date birthday = null; + if (!StringUtils.isEmpty(request.getParameter("birthday"))) { + try { + birthday = new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("birthday")); + } catch (ParseException e1) { + e1.printStackTrace(); + } + } + String major = request.getParameter("major"); + String honor = request.getParameter("honor"); + int scoreNow = Integer.parseInt(request.getParameter("scoreNow")); + + User loginUser = (User) request.getSession().getAttribute("user"); + + LocalDateTime now = LocalDateTime.now(); + String createBy = loginUser.getUserName(); + + User user = new User(); + user.setRoleId(RoleId.STUDENT.getId()); + user.setName(name); + user.setSex(sex); + user.setUserName(userName); + user.setPhone(phone); + user.setPassWord(SM3PasswordEncoder.encode(PassWord.STUDENT.getPassWord())); + user.setCreateBy(createBy); + user.setCreateTime(now); + + Student student = new Student(); + student.setClazzId(clazzId); + student.setNumber(number); + student.setBirthday(birthday); + student.setMajor(major); + student.setHonor(honor); + student.setScoreNow(scoreNow); + student.setCreateBy(createBy); + student.setCreateTime(now); + + try { + response.getWriter().write(studentService.insertStudent(student,user)); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void studentList(HttpServletRequest request,HttpServletResponse response) throws IOException { + try { + request.getRequestDispatcher("view/studentList.jsp").forward(request, response); + } catch (ServletException e) { + e.printStackTrace(); + } + } + + private void importStudent(HttpServletRequest request,HttpServletResponse response) { + FileUpload fileUpload = new FileUpload(request); + fileUpload.setFileFormat("xls"); + fileUpload.setFileFormat("xlsx"); + fileUpload.setFileSize(2048); + response.setCharacterEncoding("UTF-8"); + User loginUser = (User) request.getSession().getAttribute("user"); + try { + InputStream uploadInputStream = fileUpload.getUploadInputStream(); + HSSFWorkbook hssfWorkbook = new HSSFWorkbook(uploadInputStream); + HSSFSheet sheetAt = hssfWorkbook.getSheetAt(0); + int count = 0; + String errorMsg = ""; + for(int rowNum = 1; rowNum <= sheetAt.getLastRowNum(); rowNum++){ + HSSFRow row = sheetAt.getRow(rowNum); + HSSFCell cell = row.getCell(0); + //获取第0列,学生姓名 + if(cell == null){ + errorMsg += "第" + rowNum + "行学生姓名缺失!\n"; + continue; + } + String name = cell.getStringCellValue(); + String userName = ChineseToPinyin.convertToPinyin(name); + //获取第1列,性别 + cell = row.getCell(1); + if(cell == null){ + errorMsg += "第" + rowNum + "行学生性别缺失!\n"; + continue; + } + String sexInfo = cell.getStringCellValue(); + String sex; + if(sexInfo.equals(Sex.MAN.getInfo())){ + sex = Sex.MAN.getSex(); + } else if(sexInfo.equals(Sex.WOMAN.getInfo())) { + sex = Sex.WOMAN.getSex(); + } else { + errorMsg += "第" + rowNum + "行学生性别错误!\n"; + continue; + } + //获取第2列,联系方式 + cell = row.getCell(2); + if(cell == null){ + errorMsg += "第" + rowNum + "行联系方式缺失!\n"; + continue; + } + String phone = cell.getStringCellValue(); + if(!IsPhoneNumber.isPhoneNumberValid(phone)){ + errorMsg += "第" + rowNum + "行联系方式不合法!\n"; + continue; + } + //获取第3列,学号 + cell = row.getCell(3); + if(cell == null){ + errorMsg += "第" + rowNum + "行学号缺失!\n"; + continue; + } + long number = Long.parseLong(cell.getStringCellValue()); + //获取第4列,班级 + cell = row.getCell(4); + if(cell == null){ + errorMsg += "第" + rowNum + "行班级缺失!\n"; + continue; + } + String clazzName = cell.getStringCellValue(); + Clazz clazz = clazzService.findClazzByClazzName(clazzName); + if(clazz == null){ + errorMsg += "第" + rowNum + "行班级不存在!\n"; + continue; + } + long clazzId = clazz.getId(); + //获取第5列,专业 + cell = row.getCell(5); + if(cell == null){ + errorMsg += "第" + rowNum + "行专业缺失!\n"; + continue; + } + String major = cell.getStringCellValue(); + //获取第6列,个人荣誉 + cell = row.getCell(6); + String honor = cell.getStringCellValue(); + //获取第7列,生日 + cell = row.getCell(7); + Date birthday = null; + String birthdayStr = cell.getStringCellValue(); + if (!StringUtils.isEmpty(birthdayStr) && IsDate.validateDate(birthdayStr)) { + birthday = new SimpleDateFormat("yyyy-MM-dd").parse(birthdayStr); + } + + User user = new User(); + user.setRoleId(RoleId.STUDENT.getId()); + user.setName(name); + user.setSex(sex); + user.setUserName(userName); + user.setPhone(phone); + user.setPassWord(SM3PasswordEncoder.encode(PassWord.STUDENT.getPassWord())); + user.setCreateBy(loginUser.getUserName()); + user.setCreateTime(LocalDateTime.now()); + + Student student = new Student(); + student.setClazzId(clazzId); + student.setNumber(number); + student.setBirthday(birthday); + student.setMajor(major); + student.setHonor(honor); + student.setScoreNow(ScoreNow.SCORE_WEEK.getScore()); + student.setCreateBy(loginUser.getUserName()); + student.setCreateTime(LocalDateTime.now()); + String res = studentService.insertStudent(student,user); + + if(OperationResult.SUCCESS.getResult().equals(res)){ + count++; + } + } + errorMsg += "成功录入" + count + "条成绩信息!"; + try { + response.getWriter().write("
          "+errorMsg+"
          "); + } catch (IOException e1) { + e1.printStackTrace(); + } + + } catch (ProtocolException e) { + try { + response.getWriter().write("
          上传协议错误!
          "); + } catch (IOException e1) { + e1.printStackTrace(); + } + e.printStackTrace(); + }catch (NullFileException e1) { + try { + response.getWriter().write("
          上传的文件为空!
          "); + } catch (IOException e) { + e.printStackTrace(); + } + e1.printStackTrace(); + }catch (SizeException e2) { + try { + response.getWriter().write("
          上传文件大小不能超过"+fileUpload.getFileSize()+"!
          "); + } catch (IOException e) { + e.printStackTrace(); + } + e2.printStackTrace(); + }catch (IOException e3) { + try { + response.getWriter().write("
          读取文件出错!
          "); + } catch (IOException e) { + e.printStackTrace(); + } + e3.printStackTrace(); + }catch (FileFormatException e4) { + try { + response.getWriter().write("
          上传文件格式不正确,请上传 "+fileUpload.getFileFormat()+" 格式的文件!
          "); + } catch (IOException e) { + e.printStackTrace(); + } + e4.printStackTrace(); + }catch (FileUploadException e5) { + try { + response.getWriter().write("
          上传文件失败!
          "); + } catch (IOException e) { + e.printStackTrace(); + } + e5.printStackTrace(); + } catch (ParseException e) { + e.printStackTrace(); + } + } + + //下载模板 + public void downLoad(HttpServletRequest request, HttpServletResponse response) { + String name = FileName.STUDENT_TEMPLATE_NAME.getName(); + String path = FileName.STUDENT_TEMPLATE_PATCH.getName(); + + // 指定要下载的文件路径 + String filePath = path + "\\" + name; + + // 获取文件名 + String fileName = new File(filePath).getName(); + + String encodedFileName = null; + try { + encodedFileName = URLEncoder.encode(fileName, "UTF-8"); + } catch (UnsupportedEncodingException e1) { + e1.printStackTrace(); + } + + // 设置响应头信息 + response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedFileName + "\""); + response.setContentType("application/octet-stream"); + + // 读取文件并将其写入响应输出流 + try (InputStream in = new FileInputStream(filePath); + OutputStream out = response.getOutputStream()) { + byte[] buffer = new byte[4096]; + int bytesRead; + while ((bytesRead = in.read(buffer)) != -1) { + out.write(buffer, 0, bytesRead); + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/SMMS/src/com/chinasofti/servlet/SystemServlet.java b/SMMS/src/com/chinasofti/servlet/SystemServlet.java new file mode 100644 index 0000000..7f02594 --- /dev/null +++ b/SMMS/src/com/chinasofti/servlet/SystemServlet.java @@ -0,0 +1,95 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.servlet + * @author: 李洪涛 + * @date: 2025年3月27日 上午9:21:53 + */ +package com.chinasofti.servlet; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.chinasofti.enums.OperationResult; +import com.chinasofti.model.User; +import com.chinasofti.service.UserService; +import com.chinasofti.service.impl.UserServiceImpl; +import com.chinasofti.utils.SM3PasswordEncoder; + +/** + * +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: SystemServlet.java +* @Description: 系统登录后主界面 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年3月27日 上午9:09:40 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年3月27日 李洪涛 v1.0.0 新建文件 + */ +@WebServlet("/SystemServlet") +public class SystemServlet extends HttpServlet { + + private static final long serialVersionUID = -7258264317769166483L; + + UserService userService = new UserServiceImpl(); + + public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{ + doPost(request, response); + } + public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{ + String method = request.getParameter("method"); + if("toPersonalView".equals(method)){ + personalView(request,response); + return; + }else if("EditPasswod".equals(method)){ + editPassword(request,response); + return; + } + try { + request.getRequestDispatcher("view/system.jsp").forward(request, response); + } catch (ServletException e) { + e.printStackTrace(); + } + } + private void editPassword(HttpServletRequest request,HttpServletResponse response) { + String password = request.getParameter("password"); + String newPassword = request.getParameter("newpassword"); + User user = (User)request.getSession().getAttribute("user"); + if(!SM3PasswordEncoder.matches(password, user.getPassWord())){ + try { + response.getWriter().write("原密码错误!"); + return; + } catch (IOException e) { + e.printStackTrace(); + } + } + user.setPassWord(SM3PasswordEncoder.encode(newPassword)); + userService.updateUser(user); + try { + response.getWriter().write(OperationResult.SUCCESS.getResult()); + } catch (IOException e) { + e.printStackTrace(); + } + } + private void personalView(HttpServletRequest request,HttpServletResponse response) { + try { + request.getRequestDispatcher("view/personalView.jsp").forward(request, response); + } catch (ServletException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/SMMS/src/com/chinasofti/servlet/TeacherServlet.java b/SMMS/src/com/chinasofti/servlet/TeacherServlet.java new file mode 100644 index 0000000..59deb97 --- /dev/null +++ b/SMMS/src/com/chinasofti/servlet/TeacherServlet.java @@ -0,0 +1,281 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.servlet + * @author: 李洪涛 + * @date: 2025年3月27日 上午9:21:53 + */ +package com.chinasofti.servlet; + +import java.io.IOException; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.chinasofti.enums.OperationResult; +import com.chinasofti.enums.PageScope; +import com.chinasofti.enums.PassWord; +import com.chinasofti.enums.RoleCode; +import com.chinasofti.enums.RoleId; +import com.chinasofti.model.Clazz; +import com.chinasofti.model.Leave; +import com.chinasofti.model.Teacher; +import com.chinasofti.model.TeacherClazz; +import com.chinasofti.model.User; +import com.chinasofti.model.view.Page; +import com.chinasofti.model.view.TeacherView; +import com.chinasofti.service.ClazzService; +import com.chinasofti.service.LeaveService; +import com.chinasofti.service.TeacherService; +import com.chinasofti.service.UserService; +import com.chinasofti.service.impl.ClazzServiceImpl; +import com.chinasofti.service.impl.LeaveServiceImpl; +import com.chinasofti.service.impl.TeacherServiceImpl; +import com.chinasofti.service.impl.UserServiceImpl; +import com.chinasofti.utils.SM3PasswordEncoder; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +/** + * +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: TeacherServlet.java +* @Description: 教师接口 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年3月27日 上午9:09:40 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年3月27日 李洪涛 v1.0.0 新建文件 + */ +@WebServlet("/TeacherServlet") +public class TeacherServlet extends HttpServlet { + + private static final long serialVersionUID = 1L; + private TeacherService teacherService = new TeacherServiceImpl(); + private UserService userService = new UserServiceImpl(); + private ClazzService clazzService = new ClazzServiceImpl(); + private LeaveService leaveService = new LeaveServiceImpl(); + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + doPost(request, response); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String method = request.getParameter("method"); + if("toTeacherListView".equals(method)){ + teacherList(request,response); + } else if("TeacherList".equals(method)){ + getTeacherList(request,response); + } else if("AddTeacher".equals(method)){ + addTeacher(request,response); + } else if("GetTeacherClazz".equals(method)){ + getTeacherClazz(request,response); + } else if("EditTeacher".equals(method)){ + editTeacher(request,response); + } else if("DeleteTeacher".equals(method)){ + deleteTeacher(request,response); + } + } + + private void teacherList(HttpServletRequest request,HttpServletResponse response) { + try { + request.getRequestDispatcher("view/teacherList.jsp").forward(request, response); + } catch (ServletException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void getTeacherList(HttpServletRequest request,HttpServletResponse response) { + Integer currentPage = request.getParameter("page") == null ? PageScope.CURRENT_PAGE.getNum() : Integer.parseInt(request.getParameter("page")); + Integer pageSize = request.getParameter("rows") == null ? PageScope.PAGE_SIZE.getNum() : Integer.parseInt(request.getParameter("rows")); + String name = request.getParameter("name"); + Long clazzId = request.getParameter("clazzId") == null ? 0 : Long.parseLong(request.getParameter("clazzId")); + //获取当前登录用户的角色 + String roleCode = request.getSession().getAttribute("roleCode").toString(); + TeacherView params = new TeacherView(); + if (RoleCode.TEACHER.getCode().equals(roleCode)) { + //如果是老师,只能查看自己的信息 + User loginUser = (User)request.getSession().getAttribute("user"); + long userId = loginUser.getId(); + params.setUserId(userId); + } else { + params.setName(name); + params.setClazzId(clazzId); + } + List teacherViews = teacherService.findTeacherViews(params, new Page(currentPage, pageSize)); + List teacherViewsTotal = teacherService.findTeacherViews(params, new Page(PageScope.CURRENT_PAGE.getNum(), PageScope.PAGE_SIZE.getNum())); + Map res = new HashMap(); + res.put("total", teacherViewsTotal.size()); + res.put("rows", teacherViews); + try { + String from = request.getParameter("from"); + if("combox".equals(from)){ + response.getWriter().write(JSONArray.fromObject(teacherViews).toString()); + }else{ + response.getWriter().write(JSONObject.fromObject(res).toString()); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void addTeacher(HttpServletRequest request,HttpServletResponse response) { + String name = request.getParameter("name"); + String sex = request.getParameter("sex"); + String userName = request.getParameter("userName"); + String phone = request.getParameter("phone"); + String isCounselor = request.getParameter("isCounselor"); + String [] clazzIds = request.getParameterValues("clazzIds"); + + User loginUser = (User) request.getSession().getAttribute("user"); + + LocalDateTime now = LocalDateTime.now(); + String createBy = loginUser.getUserName(); + + User user = new User(); + user.setRoleId(RoleId.TEACHER.getId()); + user.setName(name); + user.setSex(sex); + user.setUserName(userName); + user.setPhone(phone); + user.setPassWord(SM3PasswordEncoder.encode(PassWord.TEACHER.getPassWord())); + user.setCreateBy(createBy); + user.setCreateTime(now); + + Teacher teacher = new Teacher(); + teacher.setUserId(user.getId()); + teacher.setIsCounselor(isCounselor); + teacher.setCreateBy(createBy); + teacher.setCreateTime(now); + + try { + response.getWriter().write(teacherService.insertTeacher(teacher,user,new TeacherClazz(), clazzIds)); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void getTeacherClazz(HttpServletRequest request,HttpServletResponse response) { + long teacherId = Long.parseLong(request.getParameter("teacherId")); + List clazzList = clazzService.findClazzsByTeacherId(teacherId); + String res = ""; + for (Clazz clazz : clazzList) { + res += clazz.getId() + ","; + } + res = res.substring(0, res.length()-1); + try { + response.getWriter().write(res); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void editTeacher(HttpServletRequest request,HttpServletResponse response) { + long userId = Long.parseLong(request.getParameter("userId")); + String name = request.getParameter("name"); + String sex = request.getParameter("sex"); + String userName = request.getParameter("userName"); + String phone = request.getParameter("phone"); + + long teacherId = Long.parseLong(request.getParameter("teacherId")); + String isCounselor = request.getParameter("isCounselor"); + + String [] clazzIds = request.getParameterValues("clazzIds"); + + User loginUser = (User) request.getSession().getAttribute("user"); + + String updateBy = loginUser.getUserName(); + LocalDateTime now = LocalDateTime.now(); + + User user = new User(); + user.setId(userId); + user.setName(name); + user.setSex(sex); + user.setUserName(userName); + user.setPhone(phone); + user.setUpdateBy(updateBy); + user.setUpdateTime(now); + + Teacher teacher = new Teacher(); + teacher.setId(teacherId); + teacher.setIsCounselor(isCounselor); + teacher.setUpdateBy(updateBy); + teacher.setUpdateTime(now); + + try { + response.getWriter().write(teacherService.updateTeacher(teacher,clazzIds,user)); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void deleteTeacher(HttpServletRequest request,HttpServletResponse response) { + + String[] userIdsRes = request.getParameterValues("userIds[]"); + List userIds = new ArrayList(); + for(String id : userIdsRes){ + userIds.add(Long.parseLong(id)); + } + + String userIdStr = ""; + for (Long userIdParams : userIds) { + userIdStr += userIdParams + ","; + } + userIdStr = userIdStr.substring(0, userIdStr.length()-1); + List clazzs = clazzService.findClazzsByUserIds(userIdStr); + + String res = OperationResult.SUCCESS.getResult(); + if (null != clazzs && clazzs.size() > 0) { + res = "isHaveClazz"; + } else { + String[] teacherIdsRes = request.getParameterValues("teacherIds[]"); + List teacherIds = new ArrayList(); + for(String id : teacherIdsRes){ + teacherIds.add(Long.parseLong(id)); + } + + String teacherIdStr = ""; + for (Long teacherParams : teacherIds) { + teacherIdStr += teacherParams + ","; + } + teacherIdStr = teacherIdStr.substring(0, teacherIdStr.length()-1); + List leaves = leaveService.findLeaveByTeacherIdsAndStatus(teacherIdStr); + + if (null != leaves && leaves.size() > 0) { + res = "isHaveLeave"; + } else { + teacherService.removeTeachers(teacherIds); + userService.removeUsers(userIds); + for (Long teacherId : teacherIds) { + Leave leave = new Leave(); + leave.setTeacherId(teacherId); + leaveService.removeLeave(leave); + } + } + } + + try { + response.getWriter().write(res); + } catch (IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/SMMS/src/com/chinasofti/servlet/UserServlet.java b/SMMS/src/com/chinasofti/servlet/UserServlet.java new file mode 100644 index 0000000..1af2a10 --- /dev/null +++ b/SMMS/src/com/chinasofti/servlet/UserServlet.java @@ -0,0 +1,47 @@ +package com.chinasofti.servlet; + +import java.io.IOException; +import java.util.List; + +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.chinasofti.enums.RoleId; +import com.chinasofti.model.User; +import com.chinasofti.service.UserService; +import com.chinasofti.service.impl.UserServiceImpl; + +import net.sf.json.JSONArray; + +@WebServlet("/UserServlet") +public class UserServlet extends HttpServlet { + + private static final long serialVersionUID = 1L; + + private UserService userService = new UserServiceImpl(); + + protected void doGet(HttpServletRequest request, HttpServletResponse response){ + doPost(request, response); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response){ + String method = request.getParameter("method"); + if("GetUserForClazz".equals(method)){ + getUserForClazz(request,response); + } + } + + private void getUserForClazz(HttpServletRequest request,HttpServletResponse response){ + User user = new User(); + user.setRoleId(RoleId.TEACHER.getId()); + List users = userService.findUsers(user); + try { + response.getWriter().write(JSONArray.fromObject(users).toString()); + } catch (IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/SMMS/src/com/chinasofti/utils/ChineseToPinyin.java b/SMMS/src/com/chinasofti/utils/ChineseToPinyin.java new file mode 100644 index 0000000..73caf3c --- /dev/null +++ b/SMMS/src/com/chinasofti/utils/ChineseToPinyin.java @@ -0,0 +1,43 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.utils + * @author: 李洪涛 + * @date: 2025年5月11日 下午6:32:30 + */ +package com.chinasofti.utils; + +import net.sourceforge.pinyin4j.PinyinHelper; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: ChineseToPinyin.java +* @Description: 中文转汉语拼音 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月11日 下午6:32:30 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月11日 李洪涛 v1.0.0 新建文件 +*/ +public class ChineseToPinyin { + + public static String convertToPinyin(String chinese) { + StringBuilder pinyin = new StringBuilder(); + for (char c : chinese.toCharArray()) { + String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c); + if (pinyinArray != null) { + pinyin.append(pinyinArray[0].substring(0, pinyinArray[0].length() - 1)); // 取第一个拼音 + } else { + pinyin.append(c); // 非汉字字符直接追加 + } + } + return pinyin.toString(); + } + +} diff --git a/SMMS/src/com/chinasofti/utils/IsDate.java b/SMMS/src/com/chinasofti/utils/IsDate.java new file mode 100644 index 0000000..057f52a --- /dev/null +++ b/SMMS/src/com/chinasofti/utils/IsDate.java @@ -0,0 +1,33 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.utils + * @author: 李洪涛 + * @date: 2025年5月11日 下午7:25:50 + */ +package com.chinasofti.utils; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: IsDate.java +* @Description: 是否日期 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月11日 下午7:25:50 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月11日 李洪涛 v1.0.0 新建文件 +*/ +public class IsDate { + + public static boolean validateDate(String dateStr) { + String pattern = "\\d{4}-\\d{2}-\\d{2}"; // 正则表达式,匹配YYYY-MM-DD格式的日期字符串 + return dateStr.matches(pattern); + } + +} diff --git a/SMMS/src/com/chinasofti/utils/IsNumber.java b/SMMS/src/com/chinasofti/utils/IsNumber.java new file mode 100644 index 0000000..9032056 --- /dev/null +++ b/SMMS/src/com/chinasofti/utils/IsNumber.java @@ -0,0 +1,35 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.utils + * @author: 李洪涛 + * @date: 2025年5月17日 上午10:32:42 + */ +package com.chinasofti.utils; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: IsNumber.java +* @Description: 是否是数字 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月17日 上午10:32:42 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月17日 李洪涛 v1.0.0 新建文件 +*/ +public class IsNumber { + + public static boolean isNumber(String str) { + if (str.matches("\\d+")) { + return true; + } + return false; + } + +} diff --git a/SMMS/src/com/chinasofti/utils/IsPhoneNumber.java b/SMMS/src/com/chinasofti/utils/IsPhoneNumber.java new file mode 100644 index 0000000..d7ac3c9 --- /dev/null +++ b/SMMS/src/com/chinasofti/utils/IsPhoneNumber.java @@ -0,0 +1,33 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.utils + * @author: 李洪涛 + * @date: 2025年5月11日 下午6:48:31 + */ +package com.chinasofti.utils; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: IsPhoneNumber.java +* @Description: 校验手机号 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月11日 下午6:48:31 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月11日 李洪涛 v1.0.0 新建文件 +*/ +public class IsPhoneNumber { + + public static boolean isPhoneNumberValid(String phoneNumber) { + String regex = "1[3|4|5|7|8][0-9]{9}"; + return phoneNumber.matches(regex); + } + +} diff --git a/SMMS/src/com/chinasofti/utils/SM3PasswordEncoder.java b/SMMS/src/com/chinasofti/utils/SM3PasswordEncoder.java new file mode 100644 index 0000000..906271f --- /dev/null +++ b/SMMS/src/com/chinasofti/utils/SM3PasswordEncoder.java @@ -0,0 +1,85 @@ +/** + * Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved. + * + * 功能描述: + * @Package: com.chinasofti.util + * @author: 李洪涛 + * @date: 2025年5月13日 上午11:01:55 + */ +package com.chinasofti.utils; +import java.security.SecureRandom; + +import org.bouncycastle.crypto.digests.SM3Digest; +import org.bouncycastle.util.encoders.Hex; + +/** +* Copyright: Copyright (c) 2025 chiansofti +* +* @ClassName: SM3PasswordEncoder.java +* @Description: 登录密码加解密 +* +* @version: v1.0.0 +* @author: 李洪涛 +* @date: 2025年5月13日 上午11:01:55 +* +* Modification History: +* Date Author Version Description +*---------------------------------------------------------* +* 2025年5月13日 李洪涛 v1.0.0 新建文件 +*/ +public class SM3PasswordEncoder { + + private static final int SALT_LENGTH = 16; // 盐长度16字节 + private static final int ITERATIONS = 10000; // 迭代次数 + + // 生成带盐的加密密码 + public static String encode(String password) { + byte[] salt = generateSalt(); + byte[] hash = calculateHash(password, salt); + return Hex.toHexString(salt) + ":" + Hex.toHexString(hash); + } + + // 验证密码 + public static boolean matches(String password, String encodedPassword) { + String[] parts = encodedPassword.split(":"); + byte[] salt = Hex.decode(parts[0]); + byte[] storedHash = Hex.decode(parts[1]); + byte[] calculatedHash = calculateHash(password, salt); + return slowEquals(storedHash, calculatedHash); + } + + // 生成随机盐 + private static byte[] generateSalt() { + byte[] salt = new byte[SALT_LENGTH]; + new SecureRandom().nextBytes(salt); + return salt; + } + + // 计算哈希(SM3+盐+迭代) + private static byte[] calculateHash(String password, byte[] salt) { + SM3Digest digest = new SM3Digest(); + byte[] pwdBytes = password.getBytes(); + byte[] combined = new byte[pwdBytes.length + salt.length]; + + System.arraycopy(pwdBytes, 0, combined, 0, pwdBytes.length); + System.arraycopy(salt, 0, combined, pwdBytes.length, salt.length); + + byte[] hash = combined; + for (int i = 0; i < ITERATIONS; i++) { + digest.update(hash, 0, hash.length); + hash = new byte[digest.getDigestSize()]; + digest.doFinal(hash, 0); + } + return hash; + } + + // 防时序攻击的哈希比对 + private static boolean slowEquals(byte[] a, byte[] b) { + int diff = a.length ^ b.length; + for (int i = 0; i < a.length && i < b.length; i++) { + diff |= a[i] ^ b[i]; + } + return diff == 0; + } + +} \ No newline at end of file diff --git a/SMMS/src/db.properties b/SMMS/src/db.properties new file mode 100644 index 0000000..6189167 --- /dev/null +++ b/SMMS/src/db.properties @@ -0,0 +1,7 @@ +url=jdbc:mysql://localhost:3306/smms?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true&connectTimeout=5000&socketTimeout=20000 +username=root +password=root +driverClassName=com.mysql.cj.jdbc.Driver +initialSize=10 +maxActive=20 +maxWait=1000 \ No newline at end of file