同步更新208版本

master
gk 2022-04-20 09:18:31 +08:00
parent b7e831b0e2
commit e16e70e5bb
1596 changed files with 1138740 additions and 1155394 deletions
modules/kdayun-app/src/main/resources

View File

@ -1,4 +1,4 @@
baidu:
appid: 25392062
appkey: 90Y67SAwWtfj0GKqGLtD0LEp
baidu:
appid: 25392062
appkey: 90Y67SAwWtfj0GKqGLtD0LEp
secretkey: o1f5YAQprZMQluTnzacV1iCqsukRhKWm

View File

@ -1,18 +1,18 @@
spring:
cache:
# 指定缓存类型: ehcache ,redis
type: ehcache
# ehcache 的配置
ehcache:
config: "classpath:ehcache.xml"
# redis 的配置
redis:
host: 127.0.0.1
port: 6379
timeout: 5000
jedis:
pool:
max-idle: 8
min-idle: 0
max-active: 8
spring:
cache:
# 指定缓存类型: ehcache ,redis
type: ehcache
# ehcache 的配置
ehcache:
config: "classpath:ehcache.xml"
# redis 的配置
redis:
host: 127.0.0.1
port: 6379
timeout: 5000
jedis:
pool:
max-idle: 8
min-idle: 0
max-active: 8
max-wait: -1

View File

@ -1,32 +1,32 @@
#############云服务配置################################
eureka:
client:
service-url:
defaultZone: http://localhost:9001/eureka
info:
app.name: 快搭科技(上海)有限公司-云应用
company.name: www.kdayun.com
build.artifactId: $project.artifactId$
build.version: $project.version$
###########oauth2#############
#oauth2 服务端端地址 注意格式是带http的哦
#oauth2-server: http://127.0.0.1:8082/kdayun-cloud-sso
#security:
# oauth2:
# sso:
# loginPath: ${oauth2-server}/tologin # 登录路径
# client:
# 在oauth2 服务端注册的client-id
# clientId: 77A8A8CE238B408382F5F8F7D4E90774
# 在oauth2 服务端注册的secret
# clientSecret: 6F28F088A3EF456FB069CF95477A2CAD
# user-authorization-uri: ${oauth2-server}/oauth/authorize
# access-token-uri: ${oauth2-server}/oauth/token
# logout: ${oauth2-server}/oauth/logout
# scope: ALL
# resource:
# 用户信息
# user-info-uri: ${oauth2-server}/user
#############云服务配置################################
eureka:
client:
service-url:
defaultZone: http://localhost:9001/eureka
info:
app.name: 快搭科技(上海)有限公司-云应用
company.name: www.kdayun.com
build.artifactId: $project.artifactId$
build.version: $project.version$
###########oauth2#############
#oauth2 服务端端地址 注意格式是带http的哦
#oauth2-server: http://127.0.0.1:8082/kdayun-cloud-sso
#security:
# oauth2:
# sso:
# loginPath: ${oauth2-server}/tologin # 登录路径
# client:
# 在oauth2 服务端注册的client-id
# clientId: 77A8A8CE238B408382F5F8F7D4E90774
# 在oauth2 服务端注册的secret
# clientSecret: 6F28F088A3EF456FB069CF95477A2CAD
# user-authorization-uri: ${oauth2-server}/oauth/authorize
# access-token-uri: ${oauth2-server}/oauth/token
# logout: ${oauth2-server}/oauth/logout
# scope: ALL
# resource:
# 用户信息
# user-info-uri: ${oauth2-server}/user
# token-info-uri: ${oauth2-server}/oauth/check_token

View File

@ -1,25 +1,25 @@
spring:
datasource:
name: druidDataSource
type: com.alibaba.druid.pool.DruidDataSource
username: zl
password: zl123456zl
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3706/dev?useSSL=true&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
# SqlServer (SqlServer DB)
# driver-class-name: net.sourceforge.jtds.jdbc.Driver
# url: jdbc:jtds:sqlserver://ZL_SERVER_D:1433/qjb
# validationQuery: SELECT 1
# 达梦¦(DM DB)
# driver-class-name: dm.jdbc.driver.DmDriver
# url: jdbc:jdbc:dm://127.0.0.1:5236/DMSERVER
# validationQuery: SELECT 1
# 金仓 (jc DB)
# driver-class-name=com.kingbase8.Driver
# url=jdbc\:kingbase8\://127.0.0.1\:54321/QJB
# validationQuery=SELECT 1
# #Oracle (Devlopment DB)
#username: ZL
#password: zl123456zl
#driver-class-name: oracle.jdbc.OracleDriver
#url: jdbc:oracle:thin:@192.168.1.5:1521:XE
spring:
datasource:
name: druidDataSource
type: com.alibaba.druid.pool.DruidDataSource
username: zl
password: zl123456zl
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3706/dev?useSSL=true&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
# SqlServer (SqlServer DB)
# driver-class-name: net.sourceforge.jtds.jdbc.Driver
# url: jdbc:jtds:sqlserver://ZL_SERVER_D:1433/qjb
# validationQuery: SELECT 1
# 达梦¦(DM DB)
# driver-class-name: dm.jdbc.driver.DmDriver
# url: jdbc:jdbc:dm://127.0.0.1:5236/DMSERVER
# validationQuery: SELECT 1
# 金仓 (jc DB)
# driver-class-name=com.kingbase8.Driver
# url=jdbc\:kingbase8\://127.0.0.1\:54321/QJB
# validationQuery=SELECT 1
# #Oracle (Devlopment DB)
#username: ZL
#password: zl123456zl
#driver-class-name: oracle.jdbc.OracleDriver
#url: jdbc:oracle:thin:@192.168.1.5:1521:XE

View File

@ -1,34 +1,34 @@
spring:
datasource:
druid:
initialSize: 20
minIdle: 20
maxActive: 2000
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,机构是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,机构是毫秒
minEvictableIdleTimeMillis: 300000
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 30
# 配置监控统计拦截的filters去掉后监控界面sql无法统计wall用于防火墙
# filters: stat
# 通过connectProperties属性来打开mergeSql功能慢SQL记录
# connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=3000
#使用非公平锁
useUnfairLock: true
removeAbandoned: true
removeAbandonedTimeoutMillis: 300000
logAbandoned: true
keepAlive: true
filter:
commons-log:
#data-source-log-enabled: true
statement-log-enabled: true
statement-executable-sql-log-enable: true
spring:
datasource:
druid:
initialSize: 20
minIdle: 20
maxActive: 2000
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,机构是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,机构是毫秒
minEvictableIdleTimeMillis: 300000
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 30
# 配置监控统计拦截的filters去掉后监控界面sql无法统计wall用于防火墙
# filters: stat
# 通过connectProperties属性来打开mergeSql功能慢SQL记录
# connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=3000
#使用非公平锁
useUnfairLock: true
removeAbandoned: true
removeAbandonedTimeoutMillis: 300000
logAbandoned: true
keepAlive: true
filter:
commons-log:
#data-source-log-enabled: true
statement-log-enabled: true
statement-executable-sql-log-enable: true

View File

@ -1,22 +1,22 @@
spring:
freemarker:
allow-request-override: false
allow-session-override: false
cache: false
charset: UTF-8
check-template-location: true
content-type: text/html
enabled: true
expose-request-attributes: false
expose-session-attributes: false
expose-spring-macro-helpers: true
prefer-file-system-access: true
suffix: .ftl
template-loader-path: classpath:/view/
settings.template_update_delay: 0
settings.default_encoding: UTF-8
settings.classic_compatible: true
settings.date_format: yyyy-MM-dd
settings.time_format: HH:mm:ss
settings.datetime_format: yyyy-MM-dd HH:mm:ss
spring:
freemarker:
allow-request-override: false
allow-session-override: false
cache: false
charset: UTF-8
check-template-location: true
content-type: text/html
enabled: true
expose-request-attributes: false
expose-session-attributes: false
expose-spring-macro-helpers: true
prefer-file-system-access: true
suffix: .ftl
template-loader-path: classpath:/view/
settings.template_update_delay: 0
settings.default_encoding: UTF-8
settings.classic_compatible: true
settings.date_format: yyyy-MM-dd
settings.time_format: HH:mm:ss
settings.datetime_format: yyyy-MM-dd HH:mm:ss
request-context-attribute : request

View File

@ -1,5 +1,5 @@
logging:
config: "classpath:log4j2.xml"
formatMsgNoLookups: true
level:
org.springframework: info
logging:
config: "classpath:log4j2.xml"
formatMsgNoLookups: true
level:
org.springframework: info

View File

@ -1,5 +1,9 @@
########################## mybatis ##########################
mybatis:
#config-location: "classpath: spring-mybatis.xml"
mapper-locations: "classpath: com/kdayun/**/*Mapper.xml"
type-handlers-package: com.kdayun.z1.core.mybatis.typehandle
########################## mybatis ##########################
mybatis:
#config-location: "classpath: spring-mybatis.xml"
mapper-locations: "classpath: com/kdayun/**/*Mapper.xml"
type-handlers-package: com.kdayun.z1.core.mybatis.typehandle
configuration:
jdbc-type-for-null: 'null'

View File

@ -0,0 +1,8 @@
# url : 安全url 匹配规则.主要分为: 1.精确匹配: /manager/coremodelshow/ , 子目录模糊匹配:/wechat/pay/* , 子孙模糊匹配: /wechat/pay/**
# auth: 验证方式: anon(无需登录), authc(需要登录)
security:
authlist:
- url: /xxx/yyy/
auth: authc
- url: /wecom/event_callback/*
auth: anon

View File

@ -1,10 +1,10 @@
server:
port: 20003
servlet:
context-path: /kdayun
session:
cookie:
name: cloud
tomcat:
basedir: /tmp/tomcat
uri-encoding: utf-8
server:
port: 20003
servlet:
context-path: /kdayun
session:
cookie:
name: cloud
tomcat:
basedir: /tmp/tomcat
uri-encoding: utf-8

View File

@ -1,7 +1,10 @@
#文件的上传地址
upload-path: d:/upload/
spring:
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
#文件的上传地址
upload-path: classpath:/upload/
spring:
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
server:
tomcat:
basedir: /home/temp

View File

@ -0,0 +1,7 @@
wx:
pay:
appId: wxf01190759ab0628a
appSecret: 2ec8b51c532f00a6195edc1c8f3c56d1
mchId: 1622320307
mchKey: 0C4857A6FC5B4597A8350C34794D56C0
keyPath: classpath:wx.p12

View File

@ -1,13 +1,13 @@
spring:
profiles:
#引用多个application-开头的yml文件 多个以逗号隔开
include: db,logger,cache,upload,freemarker,druid,mybatis,baidu,server,cloud
devtools:
restart:
ebabled: false
main:
allow-bean-definition-overriding: true
application:
name: 快搭科技(上海)有限公司-应用
spring:
profiles:
#引用多个application-开头的yml文件 多个以逗号隔开
include: db,logger,cache,upload,freemarker,druid,mybatis,baidu,server,cloud,wechat,security,proxy
devtools:
restart:
ebabled: false
main:
allow-bean-definition-overriding: true
application:
name: 快搭科技(上海)有限公司-应用

View File

@ -1,41 +1,41 @@
/**
*
*/
import groovy.ui.SystemOutputInterceptor;
import com.kdayun.z1.core.base.RetVo;
import com.kdayun.z1.core.base.RetVo.retstate;
/**
* sum
*
* @param args
* @return
* @author qjb
* @date 2019128 1:43:55
*/
public RetVo checkDataIsEqual(Object[] args) {
if (args == null || args.length == 0) {
return RetVo.getNewInstance(retstate.ERROR, "", null);
}
double tempvalue = 0;
for (Integer i = 0; i < args.length - 1; i++) {
Object obj = args[i];
try {
tempvalue += Double.valueOf(obj.toString());
} catch (Exception e) {
return RetVo.getNewInstance(retstate.ERROR, "", null);
}
}
double totalSum;
try {
totalSum = Double.valueOf(args[args.length - 1].toString());
} catch (Exception e) {
return RetVo.getNewInstance(retstate.ERROR, "", null);
}
if (tempvalue == totalSum) {
return RetVo.getNewInstance(retstate.OK, "", null);
}
return RetVo.getNewInstance(retstate.ERROR, "", null);
/**
*
*/
import groovy.ui.SystemOutputInterceptor;
import com.kdayun.z1.core.base.RetVo;
import com.kdayun.z1.core.base.RetVo.retstate;
/**
* sum
*
* @param args
* @return
* @author qjb
* @date 2019128 1:43:55
*/
public RetVo checkDataIsEqual(Object[] args) {
if (args == null || args.length == 0) {
return RetVo.getNewInstance(retstate.ERROR, "", null);
}
double tempvalue = 0;
for (Integer i = 0; i < args.length - 1; i++) {
Object obj = args[i];
try {
tempvalue += Double.valueOf(obj.toString());
} catch (Exception e) {
return RetVo.getNewInstance(retstate.ERROR, "", null);
}
}
double totalSum;
try {
totalSum = Double.valueOf(args[args.length - 1].toString());
} catch (Exception e) {
return RetVo.getNewInstance(retstate.ERROR, "", null);
}
if (tempvalue == totalSum) {
return RetVo.getNewInstance(retstate.OK, "", null);
}
return RetVo.getNewInstance(retstate.ERROR, "", null);
}

View File

@ -1,87 +1,87 @@
/**
*
*/
import groovy.ui.SystemOutputInterceptor;
import com.kdayun.z1.core.context.Context;
/**
* orgid
*
* @param
* @return orgid
* @author qjb
* @date 2019130 5:55:55
*/
public String getOrgid() {
return Context.getInstance().securityService.getCurrentUser().getCurrentOrgId();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurOrgName() {
return Context.getInstance().securityService.getCurrentUser().getCurrentOrgName();
}
/**
* id
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurUserid() {
return Context.getInstance().securityService.getCurrentUser().getId();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurUserName() {
return Context.getInstance().securityService.getCurrentUser().getName();
}
/**
* id
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurDeptid() {
return Context.getInstance().securityService.getCurrentUser().getCurrentDeptId();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurDeptName() {
return Context.getInstance().securityService.getCurrentUser().getCurrentDeptName();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public Date getCurDate() {
return new Date();
/**
*
*/
import groovy.ui.SystemOutputInterceptor;
import com.kdayun.z1.core.context.Context;
/**
* orgid
*
* @param
* @return orgid
* @author qjb
* @date 2019130 5:55:55
*/
public String getOrgid() {
return Context.getInstance().securityService.getCurrentUser().getCurrentOrgId();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurOrgName() {
return Context.getInstance().securityService.getCurrentUser().getCurrentOrgName();
}
/**
* id
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurUserid() {
return Context.getInstance().securityService.getCurrentUser().getId();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurUserName() {
return Context.getInstance().securityService.getCurrentUser().getName();
}
/**
* id
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurDeptid() {
return Context.getInstance().securityService.getCurrentUser().getCurrentDeptId();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurDeptName() {
return Context.getInstance().securityService.getCurrentUser().getCurrentDeptName();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public Date getCurDate() {
return new Date();
}

View File

@ -1,96 +1,96 @@
/**
*
*/
import groovy.ui.SystemOutputInterceptor;
import com.kdayun.z1.core.context.Context;
import com.kdayun.z1.core.base.RetVo;
/**
* orgid
*
* @param
* @return orgid
* @author qjb
* @date 2019130 5:55:55
*/
public String getOrgid() {
return Context.getInstance().securityService.getCurrentUser().getCurrentOrgId();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurOrgName() {
return Context.getInstance().securityService.getCurrentUser().getCurrentOrgName();
}
/**
* id
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurUserid() {
return Context.getInstance().securityService.getCurrentUser().getId();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurUserName() {
return Context.getInstance().securityService.getCurrentUser().getName();
}
/**
* id
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurDeptid() {
return Context.getInstance().securityService.getCurrentUser().getCurrentDeptId();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurDeptName() {
return Context.getInstance().securityService.getCurrentUser().getCurrentDeptName();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public Date getCurDate() {
return new Date();
}
public RetVo checkDataIsEqual(Object[] args) {
System.out.println("11");
}
public RetVo CHECKXX(List<Map<String, Object>> XX,List<String> AA) {
System.out.println("233");
}
/**
*
*/
import groovy.ui.SystemOutputInterceptor;
import com.kdayun.z1.core.context.Context;
import com.kdayun.z1.core.base.RetVo;
/**
* orgid
*
* @param
* @return orgid
* @author qjb
* @date 2019130 5:55:55
*/
public String getOrgid() {
return Context.getInstance().securityService.getCurrentUser().getCurrentOrgId();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurOrgName() {
return Context.getInstance().securityService.getCurrentUser().getCurrentOrgName();
}
/**
* id
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurUserid() {
return Context.getInstance().securityService.getCurrentUser().getId();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurUserName() {
return Context.getInstance().securityService.getCurrentUser().getName();
}
/**
* id
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurDeptid() {
return Context.getInstance().securityService.getCurrentUser().getCurrentDeptId();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public String getCurDeptName() {
return Context.getInstance().securityService.getCurrentUser().getCurrentDeptName();
}
/**
*
*
* @return
* @author qjb
* @date 2019219 9:11:19
*/
public Date getCurDate() {
return new Date();
}
public RetVo checkDataIsEqual(Object[] args) {
System.out.println("11");
}
public RetVo CHECKXX(List<Map<String, Object>> XX,List<String> AA) {
System.out.println("233");
}

View File

@ -1,42 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"
xmlns:b3mn="http://b3mn.org/2007/b3mn"
xmlns:ext="http://b3mn.org/2007/ext"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:atom="http://b3mn.org/2007/atom+xhtml">
<head profile="http://purl.org/NET/erdf/profile">
<title>Activiti BPM suite</title>
<!-- libraries -->
<script src="../static/workflow/libs/prototype-1.5.1.js" type="text/javascript" />
<script src="../static/workflow/libs/path_parser.js" type="text/javascript" />
<script src="../static/workflow/libs/ext-2.0.2/adapter/ext/ext-base.js" type="text/javascript" />
<script src="../static/workflow/libs/ext-2.0.2/ext-all-debug.js" type="text/javascript" />
<script src="../static/workflow/libs/ext-2.0.2/color-field.js" type="text/javascript" />
<style media="screen" type="text/css">
@import url("../static/workflow/libs/ext-2.0.2/resources/css/ext-all.css");
@import url("../static/workflow/libs/ext-2.0.2/resources/css/xtheme-darkgray.css");
</style>
<link rel="Stylesheet" media="screen" href="../static/workflow/editor/css/theme_norm.css" type="text/css" />
<link rel="Stylesheet" media="screen" href="../static/workflow/editor/css/theme_norm_signavio.css" type="text/css" />
<link rel="Stylesheet" media="screen" href="../static/workflow/explorer/src/css/xtheme-smoky.css" type="text/css" />
<link rel="Stylesheet" media="screen" href="../static/workflow/explorer/src/css/custom-style.css" type="text/css" />
<!-- oryx editor -->
<!-- language files -->
<script src="../static/workflow/editor/i18n/translation_ch.js" type="text/javascript" />
<script src="../static/workflow/editor/i18n/translation_signavio_ch.js" type="text/javascript" />
<script src="../static/workflow/libs/utils.js" type="text/javascript" />
<script src="../static/workflow/editor/oryx.debug.js" type="text/javascript" />
<!-- erdf schemas -->
<script src="../static/libs/ace/ace.js" type="text/javascript" />
<script src="../static/libs/ace/ext-language_tools.js"></script>
<link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
<link rel="schema.dcTerms" href="http://purl.org/dc/terms/" />
<link rel="schema.b3mn" href="http://b3mn.org" />
<link rel="schema.oryx" href="http://oryx-editor.org/" />
<link rel="schema.raziel" href="http://raziel.org/" />
</head>
<body style="overflow:hidden;">
</body>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"
xmlns:b3mn="http://b3mn.org/2007/b3mn"
xmlns:ext="http://b3mn.org/2007/ext"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:atom="http://b3mn.org/2007/atom+xhtml">
<head profile="http://purl.org/NET/erdf/profile">
<title>Activiti BPM suite</title>
<!-- libraries -->
<script src="../static/workflow/libs/prototype-1.5.1.js" type="text/javascript" />
<script src="../static/workflow/libs/path_parser.js" type="text/javascript" />
<script src="../static/workflow/libs/ext-2.0.2/adapter/ext/ext-base.js" type="text/javascript" />
<script src="../static/workflow/libs/ext-2.0.2/ext-all-debug.js" type="text/javascript" />
<script src="../static/workflow/libs/ext-2.0.2/color-field.js" type="text/javascript" />
<style media="screen" type="text/css">
@import url("../static/workflow/libs/ext-2.0.2/resources/css/ext-all.css");
@import url("../static/workflow/libs/ext-2.0.2/resources/css/xtheme-darkgray.css");
</style>
<link rel="Stylesheet" media="screen" href="../static/workflow/editor/css/theme_norm.css" type="text/css" />
<link rel="Stylesheet" media="screen" href="../static/workflow/editor/css/theme_norm_signavio.css" type="text/css" />
<link rel="Stylesheet" media="screen" href="../static/workflow/explorer/src/css/xtheme-smoky.css" type="text/css" />
<link rel="Stylesheet" media="screen" href="../static/workflow/explorer/src/css/custom-style.css" type="text/css" />
<!-- oryx editor -->
<!-- language files -->
<script src="../static/workflow/editor/i18n/translation_ch.js" type="text/javascript" />
<script src="../static/workflow/editor/i18n/translation_signavio_ch.js" type="text/javascript" />
<script src="../static/workflow/libs/utils.js" type="text/javascript" />
<script src="../static/workflow/editor/oryx.debug.js" type="text/javascript" />
<!-- erdf schemas -->
<script src="../static/libs/ace/ace.js" type="text/javascript" />
<script src="../static/libs/ace/ext-language_tools.js"></script>
<link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
<link rel="schema.dcTerms" href="http://purl.org/dc/terms/" />
<link rel="schema.b3mn" href="http://b3mn.org" />
<link rel="schema.oryx" href="http://oryx-editor.org/" />
<link rel="schema.raziel" href="http://raziel.org/" />
</head>
<body style="overflow:hidden;">
</body>
</html>

View File

@ -1,39 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<ehcache updateCheck="true" name="MyEhcache-Shiro">
<!--
EHCache 配置文件解释:
name Cache的名称必须是唯一的(ehcache会把这个cache放到HashMap里)
maxElementsInMemory 内存中保持的对象数量
maxElementsOnDisk DiskStore中保持的对象数量默认值为0表示不限制
eternal 是否是永恒数据,如果是,则它的超时设置会被忽略
overflowToDisk 如果内存中数据数量超过maxElementsInMemory限制是否要缓存到磁盘上
timeToIdleSeconds 对象空闲时间指对象在多长时间没有被访问就会失效。只对eternal为false的有效。默认值0表示一直可以访问
timeToLiveSeconds 对象存活时间指对象从创建到失效所需要的时间。只对eternal为false的有效。默认值0表示一直可以访问
diskPersistent 是否在磁盘上持久化。指重启jvm后数据是否有效。默认为false
diskExpiryThreadIntervalSeconds 对象检测线程运行时间间隔。标识对象状态的线程多长时间运行一次
diskSpoolBufferSizeMB DiskStore使用的磁盘大小默认值30MB。每个cache使用各自的DiskStore
memoryStoreEvictionPolicy 如果内存中数据超过内存限制向磁盘缓存时的策略。默认值LRU可选FIFO、LFU
-->
<!-- 默认的缓存设置,如果没有设置缓存的名称就使用这个策略 -->
<defaultCache
maxElementsInMemory="10000"
maxElementsOnDisk="0"
eternal="false"
overflowToDisk="true"
diskPersistent="false"
timeToIdleSeconds="20"
timeToLiveSeconds="0"
diskSpoolBufferSizeMB="50"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LFU"
/>
<cache name="tokenCache"
maxEntriesLocalHeap="2000"
maxElementsInMemory="50000"
eternal="true"
overflowToDisk="true"
statistics="true"
diskPersistent="true"
memoryStoreEvictionPolicy="LFU">
</cache>
<?xml version="1.0" encoding="UTF-8"?>
<ehcache updateCheck="true" name="MyEhcache-Shiro">
<!--
EHCache 配置文件解释:
name Cache的名称必须是唯一的(ehcache会把这个cache放到HashMap里)
maxElementsInMemory 内存中保持的对象数量
maxElementsOnDisk DiskStore中保持的对象数量默认值为0表示不限制
eternal 是否是永恒数据,如果是,则它的超时设置会被忽略
overflowToDisk 如果内存中数据数量超过maxElementsInMemory限制是否要缓存到磁盘上
timeToIdleSeconds 对象空闲时间指对象在多长时间没有被访问就会失效。只对eternal为false的有效。默认值0表示一直可以访问
timeToLiveSeconds 对象存活时间指对象从创建到失效所需要的时间。只对eternal为false的有效。默认值0表示一直可以访问
diskPersistent 是否在磁盘上持久化。指重启jvm后数据是否有效。默认为false
diskExpiryThreadIntervalSeconds 对象检测线程运行时间间隔。标识对象状态的线程多长时间运行一次
diskSpoolBufferSizeMB DiskStore使用的磁盘大小默认值30MB。每个cache使用各自的DiskStore
memoryStoreEvictionPolicy 如果内存中数据超过内存限制向磁盘缓存时的策略。默认值LRU可选FIFO、LFU
-->
<!-- 默认的缓存设置,如果没有设置缓存的名称就使用这个策略 -->
<defaultCache
maxElementsInMemory="10000"
maxElementsOnDisk="0"
eternal="false"
overflowToDisk="true"
diskPersistent="false"
timeToIdleSeconds="20"
timeToLiveSeconds="0"
diskSpoolBufferSizeMB="50"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LFU"
/>
<cache name="tokenCache"
maxEntriesLocalHeap="2000"
maxElementsInMemory="50000"
eternal="true"
overflowToDisk="true"
statistics="true"
diskPersistent="true"
memoryStoreEvictionPolicy="LFU">
</cache>
</ehcache>

View File

@ -1,135 +1,143 @@
<?xml version="1.0" encoding="UTF-8"?>
<ehcache updateCheck="true" name="MyEhcache">
<!--
EHCache 配置文件解释:
name Cache的名称必须是唯一的(ehcache会把这个cache放到HashMap里)
maxElementsInMemory 内存中保持的对象数量
maxElementsOnDisk DiskStore中保持的对象数量默认值为0表示不限制
eternal 是否是永恒数据,如果是,则它的超时设置会被忽略
overflowToDisk 如果内存中数据数量超过maxElementsInMemory限制是否要缓存到磁盘上
timeToIdleSeconds 对象空闲时间指对象在多长时间没有被访问就会失效。只对eternal为false的有效。默认值0表示一直可以访问
timeToLiveSeconds 对象存活时间指对象从创建到失效所需要的时间。只对eternal为false的有效。默认值0表示一直可以访问
diskPersistent 是否在磁盘上持久化。指重启jvm后数据是否有效。默认为false
diskExpiryThreadIntervalSeconds 对象检测线程运行时间间隔。标识对象状态的线程多长时间运行一次
diskSpoolBufferSizeMB DiskStore使用的磁盘大小默认值30MB。每个cache使用各自的DiskStore
memoryStoreEvictionPolicy 如果内存中数据超过内存限制向磁盘缓存时的策略。默认值LRU可选FIFO、LFU
-->
<!-- 默认的缓存设置,如果没有设置缓存的名称就使用这个策略 -->
<defaultCache
maxElementsInMemory="10000"
maxElementsOnDisk="0"
eternal="false"
overflowToDisk="true"
diskPersistent="false"
timeToIdleSeconds="20"
timeToLiveSeconds="0"
diskSpoolBufferSizeMB="50"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LFU"
/>
<!-- 登录记录缓存 过期时间一个小时 -->
<cache name="shiro-activeSessionCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="true"
statistics="true"
diskPersistent="faLse"
memoryStoreEvictionPolicy = "LFU"
>
</cache>
<!-- 表模型的缓存 -->
<cache name="tableCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<!-- 字典的缓存 -->
<cache name="dictionaryCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="RightResCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="RoleCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="TableCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="configCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="userPdataCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="tokenCache"
maxEntriesLocalHeap="2000"
maxElementsInMemory="50000"
eternal="true"
overflowToDisk="true"
statistics="true"
diskPersistent="true"
memoryStoreEvictionPolicy="LFU">
</cache>
<cache name="ModelDesignCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="DCCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="repeatPostIds"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<?xml version="1.0" encoding="UTF-8"?>
<ehcache updateCheck="true" name="MyEhcache">
<!--
EHCache 配置文件解释:
name Cache的名称必须是唯一的(ehcache会把这个cache放到HashMap里)
maxElementsInMemory 内存中保持的对象数量
maxElementsOnDisk DiskStore中保持的对象数量默认值为0表示不限制
eternal 是否是永恒数据,如果是,则它的超时设置会被忽略
overflowToDisk 如果内存中数据数量超过maxElementsInMemory限制是否要缓存到磁盘上
timeToIdleSeconds 对象空闲时间指对象在多长时间没有被访问就会失效。只对eternal为false的有效。默认值0表示一直可以访问
timeToLiveSeconds 对象存活时间指对象从创建到失效所需要的时间。只对eternal为false的有效。默认值0表示一直可以访问
diskPersistent 是否在磁盘上持久化。指重启jvm后数据是否有效。默认为false
diskExpiryThreadIntervalSeconds 对象检测线程运行时间间隔。标识对象状态的线程多长时间运行一次
diskSpoolBufferSizeMB DiskStore使用的磁盘大小默认值30MB。每个cache使用各自的DiskStore
memoryStoreEvictionPolicy 如果内存中数据超过内存限制向磁盘缓存时的策略。默认值LRU可选FIFO、LFU
-->
<!-- 默认的缓存设置,如果没有设置缓存的名称就使用这个策略 -->
<defaultCache
maxElementsInMemory="10000"
maxElementsOnDisk="0"
eternal="false"
overflowToDisk="true"
diskPersistent="false"
timeToIdleSeconds="20"
timeToLiveSeconds="0"
diskSpoolBufferSizeMB="50"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LFU"
/>
<!-- 登录记录缓存 过期时间一个小时 -->
<cache name="shiro-activeSessionCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="true"
statistics="true"
diskPersistent="faLse"
memoryStoreEvictionPolicy = "LFU"
>
</cache>
<!-- 表模型的缓存 -->
<cache name="tableCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<!-- 字典的缓存 -->
<cache name="dictionaryCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="RightResCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="RoleCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="TableCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="configCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="userPdataCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="tokenCache"
maxEntriesLocalHeap="2000"
maxElementsInMemory="50000"
eternal="true"
overflowToDisk="true"
statistics="true"
diskPersistent="true"
memoryStoreEvictionPolicy="LFU">
</cache>
<cache name="ModelDesignCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="DCCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="repeatPostIds"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
<cache name="wechatPayNotifyOrder"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
</ehcache>

View File

@ -1,21 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDbTCCAlWgAwIBAgIEJ/YFQjANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJj
bjEPMA0GA1UECBMGc2hhbmdoMQ8wDQYDVQQHEwZzaGFuZ2gxDzANBgNVBAoTBmtk
YXl1bjETMBEGA1UECxMKa2RheXVuIGx0ZDEPMA0GA1UEAxMGa2RheXVuMCAXDTIx
MTExNjA4MTA0M1oYDzIxMjAwNjEwMDgxMDQzWjBmMQswCQYDVQQGEwJjbjEPMA0G
A1UECBMGc2hhbmdoMQ8wDQYDVQQHEwZzaGFuZ2gxDzANBgNVBAoTBmtkYXl1bjET
MBEGA1UECxMKa2RheXVuIGx0ZDEPMA0GA1UEAxMGa2RheXVuMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0p3ATcmNdqHKkQhxVv+7qOSKT8OOt/ORjyHK
+SWVdb0eoeKOCo0Ij6rmkY+Y1oZdutIo7z5j3CBQBYkzc2tHnEiMNbliojerqr4X
ynzbiEgfLi2NtPLvDklZpBxeL4mcOLQZqjVwG22K1Szqt9WXejV86nEfj8T9plwN
r3ui7i1E6+v7PYPfGQOX7EqCfDEKdxgLxfXlgBtx7P6Kce8TusQvFk3LF2KY9lPE
Di0dR9Tn7Rp1q4U/D0GlWg4HnbItVxNZktkq591X/XbNH5rAke2qgAXZU1i9h4XR
9kaSlme7IQT5dH+Tvdn9JCwY1xDitdRVif+cagMjGVlT/hyIpwIDAQABoyEwHzAd
BgNVHQ4EFgQUdWmlP71NbBuDJtJokS8E3FXmJLUwDQYJKoZIhvcNAQELBQADggEB
ADMLj/YLs13d7Wl18iuICalTqUkY4vNlc4tEfO8jzbvF+7NODCEKIfXMgO+sGwOe
3b4wdfHVQKWnCb19/brDrp3OzpLrk/jRHyn4kpvJe09Pa+yD4qNBjIwmEdNzhhoy
lZV3gq9oBIfUCH6wMuKOOLiKLA2nukRAG8taKXm5TZPgCWAWeIQgJwRo6udyHT6a
aD2LuA2plnoh4WOlDMIoufZiZEM4/7oioitENEf0mXKZqm5vx5+95uU3dMBezTGq
dbM9rhANvgtQHfxEYrjzX//Xm+8oxsmJKjdImZRsEp7uJkxVSzVPVYL1IU0PPiDC
bRqXeXRiyCxi1CNPnk3Wrhk=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDbTCCAlWgAwIBAgIEJ/YFQjANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJj
bjEPMA0GA1UECBMGc2hhbmdoMQ8wDQYDVQQHEwZzaGFuZ2gxDzANBgNVBAoTBmtk
YXl1bjETMBEGA1UECxMKa2RheXVuIGx0ZDEPMA0GA1UEAxMGa2RheXVuMCAXDTIx
MTExNjA4MTA0M1oYDzIxMjAwNjEwMDgxMDQzWjBmMQswCQYDVQQGEwJjbjEPMA0G
A1UECBMGc2hhbmdoMQ8wDQYDVQQHEwZzaGFuZ2gxDzANBgNVBAoTBmtkYXl1bjET
MBEGA1UECxMKa2RheXVuIGx0ZDEPMA0GA1UEAxMGa2RheXVuMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0p3ATcmNdqHKkQhxVv+7qOSKT8OOt/ORjyHK
+SWVdb0eoeKOCo0Ij6rmkY+Y1oZdutIo7z5j3CBQBYkzc2tHnEiMNbliojerqr4X
ynzbiEgfLi2NtPLvDklZpBxeL4mcOLQZqjVwG22K1Szqt9WXejV86nEfj8T9plwN
r3ui7i1E6+v7PYPfGQOX7EqCfDEKdxgLxfXlgBtx7P6Kce8TusQvFk3LF2KY9lPE
Di0dR9Tn7Rp1q4U/D0GlWg4HnbItVxNZktkq591X/XbNH5rAke2qgAXZU1i9h4XR
9kaSlme7IQT5dH+Tvdn9JCwY1xDitdRVif+cagMjGVlT/hyIpwIDAQABoyEwHzAd
BgNVHQ4EFgQUdWmlP71NbBuDJtJokS8E3FXmJLUwDQYJKoZIhvcNAQELBQADggEB
ADMLj/YLs13d7Wl18iuICalTqUkY4vNlc4tEfO8jzbvF+7NODCEKIfXMgO+sGwOe
3b4wdfHVQKWnCb19/brDrp3OzpLrk/jRHyn4kpvJe09Pa+yD4qNBjIwmEdNzhhoy
lZV3gq9oBIfUCH6wMuKOOLiKLA2nukRAG8taKXm5TZPgCWAWeIQgJwRo6udyHT6a
aD2LuA2plnoh4WOlDMIoufZiZEM4/7oioitENEf0mXKZqm5vx5+95uU3dMBezTGq
dbM9rhANvgtQHfxEYrjzX//Xm+8oxsmJKjdImZRsEp7uJkxVSzVPVYL1IU0PPiDC
bRqXeXRiyCxi1CNPnk3Wrhk=
-----END CERTIFICATE-----

View File

@ -1,141 +1,141 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 自动检测配置文件的时间间隔每60检测log4j2.xml配置文件有变化会重新配置自己 -->
<!-- ALL,TRACE, DEBUG, INFO, WARN, ERROR ,FATAL,OFF -->
<configuration monitorInterval="60" packages="com.kdayun.boot.configuration">
<!-- 定义变量 -->
<properties>
<!-- 日志存放目录 本来是可以读取${web:rootDir}-->
<property name="LOG_HOME">./logs</property>
<!-- <property name="LOG_FORMAT">%d{HH:mm:ss.SSS} [%-5level] %msg%xEx%n %C %M</property> -->
<property name="LOG_FORMAT">%d{HH:mm:ss.SSS} [%-5level] %msg%xEx%n</property>
</properties>
<!--先定义所有的appender -->
<appenders>
<!--这个输出控制台的配置 -->
<Console name="console" target="SYSTEM_OUT">
<!-- 输出的日志格式 -->
<PatternLayout pattern="${LOG_FORMAT}"/>
</Console>
<Log4j2ConsoleAppender name="Log4j2ConsoleAppender" cacheLogCount="500">
<PatternLayout pattern="${LOG_FORMAT}"/>
</Log4j2ConsoleAppender>
<Async name="AsyncCONSOLE">
<AppenderRef ref="console"/>
</Async>
<!-- 正常日志文件 -->
<RollingFile name="log" fileName="${LOG_HOME}/log.log" filePattern="${LOG_HOME}/log-%d{yyyy-MM-dd}.zip" immediateFlush="true">
<Filters>
<RegexFilter regex="slow sql[\s\S]*" onMatch="DENY" onMismatch="NEUTRAL"/>
<!-- 只输出level及以上级别的信息onMatch其他的直接拒绝onMismatch可选ACCEPT, DENY, NEUTRAL
接受使用NEUTRAL中立被第一个过滤器接受的日志信息会继续用后面的过滤器进行过滤只有符合所有过滤器条件的日志信息才会被最终写入日志文件
<ThresholdFilter level="DEBUG" onMatch="NEUTRAL" onMismatch="DENY"/>
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="DENY"/>
-->
<ThresholdFilter level="DEBUG" onMatch="NEUTRAL" onMismatch="DENY"/>
</Filters>
<!-- 输出的日志格式 -->
<PatternLayout pattern="${LOG_FORMAT}"/>
<Policies>
<OnStartupTriggeringPolicy/>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!-- 最多备份30天以内的日志此处为策略限制Delete中可以按自己需要用正则表达式编写 -->
<!-- DefaultRolloverStrategy字段中加入max=“30”经测试是配合SizeBasedTriggeringPolicy限制%i的存在数量
并没有发现是网上流传的是最多保存多少个文件的限制,也或许是我写的有问题 -->
<DefaultRolloverStrategy max="30"/>
</RollingFile>
<!-- 输出sql语句到sqllog开头的日志文件 -->
<RollingFile name="sqllog" fileName="${LOG_HOME}/sqllog.log" filePattern="${LOG_HOME}/log-%d{yyyy-MM-dd}.zip" immediateFlush="true">
<Filters>
<!-- 只输出level及以上级别的信息onMatch其他的直接拒绝onMismatch可选ACCEPT, DENY, NEUTRAL
接受使用NEUTRAL中立被第一个过滤器接受的日志信息会继续用后面的过滤器进行过滤只有符合所有过滤器条件的日志信息才会被最终写入日志文件
<ThresholdFilter level="DEBUG" onMatch="NEUTRAL" onMismatch="DENY"/>
-->
<RegexFilter regex="==> Preparing:[\s\S]*|==> Parameters:[\s\S]*" onMatch="NEUTRAL" onMismatch="DENY"/>
</Filters>
<!-- 输出的日志格式 -->
<PatternLayout pattern="${LOG_FORMAT}"/>
<Policies>
<OnStartupTriggeringPolicy/>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!-- 最多备份30天以内的日志此处为策略限制Delete中可以按自己需要用正则表达式编写 -->
<!-- DefaultRolloverStrategy字段中加入max=“30”经测试是配合SizeBasedTriggeringPolicy限制%i的存在数量
并没有发现是网上流传的是最多保存多少个文件的限制,也或许是我写的有问题 -->
<DefaultRolloverStrategy max="30"/>
</RollingFile>
<!-- 错误的日志文件 -->
<RollingFile name="error" fileName="${LOG_HOME}/error.log" filePattern="${LOG_HOME}/error-%d{yyyy-MM-dd}.zip" immediateFlush="true">
<Filters>
<!-- 只输出level及以上级别的信息onMatch其他的直接拒绝onMismatch 可选ACCEPT, DENY, NEUTRAL
接受使用NEUTRAL中立被第一个过滤器接受的日志信息会继续用后面的过滤器进行过滤只有符合所有过滤器条件的日志信息才会被最终写入日志文件
-->
<ThresholdFilter level="ERROR" onMatch="NEUTRAL" onMismatch="DENY"/>
<RegexFilter regex="slow sql[\s\S]*" onMatch="DENY" onMismatch="DENY"/>
</Filters>
<!-- 输出的日志格式 -->
<PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} [%-5level] %msg%xEx%n"/>
<Policies>
<OnStartupTriggeringPolicy/>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!-- DefaultRolloverStrategy字段中加入max=“30”经测试是配合SizeBasedTriggeringPolicy限制%i的存在数量并没有发现是网上流传的是最多保存多少个文件的限制也或许是我写的有问题 -->
<DefaultRolloverStrategy max="30"/>
</RollingFile>
<!--慢sql的日志文件-->
<RollingFile name="slowSql" fileName="${LOG_HOME}/slowsql.log" filePattern="${LOG_HOME}/slowsql-%d{yyyy-MM-dd}.zip" immediateFlush="true">
<!-- 只输出level及以上级别的信息onMatch其他的直接拒绝onMismatch
接受使用NEUTRAL中立被第一个过滤器接受的日志信息会继续用后面的过滤器进行过滤只有符合所有过滤器条件的日志信息才会被最终写入日志文件
-->
<Filters>
<RegexFilter regex="slow sql[\s\S]*" onMatch="NEUTRAL" onMismatch="DENY"/>
</Filters>
<!-- 输出的日志格式 -->
<PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} [%-5level] %msg%xEx%n"/>
<Policies>
<OnStartupTriggeringPolicy/>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!-- DefaultRolloverStrategy字段中加入max=“30”经测试是配合SizeBasedTriggeringPolicy限制%i的存在数量并没有发现是网上流传的是最多保存多少个文件的限制也或许是我写的有问题 -->
<DefaultRolloverStrategy max="30"/>
</RollingFile>
</appenders>
<!--然后定义logger只有定义了logger并引入的appenderappender才会生效 -->
<loggers>
<!--建立一个默认的root的logger -->
<root level="DEBUG">
<appender-ref ref="Log4j2ConsoleAppender"/>
<appender-ref ref="AsyncCONSOLE"/>
<!--<appender-ref ref="console"/>-->
<appender-ref ref="error"/>
<appender-ref ref="log"/>
<!-- <appender-ref ref="sqllog"/> -->
<appender-ref ref="slowSql"/>
</root>
<logger name="org.springframework" level="INFO"/>
<logger name="net.sf.ehcache" level="ERROR"/>
<logger name="com.alibaba.druid" level="ERROR"/>
<logger name="freemarker" level="ERROR"/>
<!-- 只输出错误以上org.quartz调试信息 -->
<logger name="org.quartz" level="ERROR" />
<!-- 只输出错误以上mybatis -->
<logger name="org.mybatis" level="ERROR"/>
<!-- 只输出错误以上的信息 -->
<logger name="org.apache.shiro" level="ERROR"/>
<!-- 显示sql语句-->
<logger name="druid.sql.Statement" level="ERROR" additivity="false">
<appender-ref ref="console"/>
</logger>
<!-- 显示慢sql语句-->
<logger name="druid.sql.Statement" level="ERROR" additivity="false">
<appender-ref ref="slowSql"/>
</logger>
</loggers>
<?xml version="1.0" encoding="UTF-8"?>
<!-- 自动检测配置文件的时间间隔每60检测log4j2.xml配置文件有变化会重新配置自己 -->
<!-- ALL,TRACE, DEBUG, INFO, WARN, ERROR ,FATAL,OFF -->
<configuration monitorInterval="60" packages="com.kdayun.boot.configuration">
<!-- 定义变量 -->
<properties>
<!-- 日志存放目录 本来是可以读取${web:rootDir}-->
<property name="LOG_HOME">./logs</property>
<!-- <property name="LOG_FORMAT">%d{HH:mm:ss.SSS} [%-5level] %msg%xEx%n %C %M</property> -->
<property name="LOG_FORMAT">%d{HH:mm:ss.SSS} [%-5level] %msg%xEx%n</property>
</properties>
<!--先定义所有的appender -->
<appenders>
<!--这个输出控制台的配置 -->
<Console name="console" target="SYSTEM_OUT">
<!-- 输出的日志格式 -->
<PatternLayout pattern="${LOG_FORMAT}"/>
</Console>
<Log4j2ConsoleAppender name="Log4j2ConsoleAppender" cacheLogCount="500">
<PatternLayout pattern="${LOG_FORMAT}"/>
</Log4j2ConsoleAppender>
<Async name="AsyncCONSOLE">
<AppenderRef ref="console"/>
</Async>
<!-- 正常日志文件 -->
<RollingFile name="log" fileName="${LOG_HOME}/log.log" filePattern="${LOG_HOME}/log-%d{yyyy-MM-dd}.zip" immediateFlush="true">
<Filters>
<RegexFilter regex="slow sql[\s\S]*" onMatch="DENY" onMismatch="NEUTRAL"/>
<!-- 只输出level及以上级别的信息onMatch其他的直接拒绝onMismatch可选ACCEPT, DENY, NEUTRAL
接受使用NEUTRAL中立被第一个过滤器接受的日志信息会继续用后面的过滤器进行过滤只有符合所有过滤器条件的日志信息才会被最终写入日志文件
<ThresholdFilter level="DEBUG" onMatch="NEUTRAL" onMismatch="DENY"/>
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="DENY"/>
-->
<ThresholdFilter level="DEBUG" onMatch="NEUTRAL" onMismatch="DENY"/>
</Filters>
<!-- 输出的日志格式 -->
<PatternLayout pattern="${LOG_FORMAT}"/>
<Policies>
<OnStartupTriggeringPolicy/>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!-- 最多备份30天以内的日志此处为策略限制Delete中可以按自己需要用正则表达式编写 -->
<!-- DefaultRolloverStrategy字段中加入max=“30”经测试是配合SizeBasedTriggeringPolicy限制%i的存在数量
并没有发现是网上流传的是最多保存多少个文件的限制,也或许是我写的有问题 -->
<DefaultRolloverStrategy max="30"/>
</RollingFile>
<!-- 输出sql语句到sqllog开头的日志文件 -->
<RollingFile name="sqllog" fileName="${LOG_HOME}/sqllog.log" filePattern="${LOG_HOME}/log-%d{yyyy-MM-dd}.zip" immediateFlush="true">
<Filters>
<!-- 只输出level及以上级别的信息onMatch其他的直接拒绝onMismatch可选ACCEPT, DENY, NEUTRAL
接受使用NEUTRAL中立被第一个过滤器接受的日志信息会继续用后面的过滤器进行过滤只有符合所有过滤器条件的日志信息才会被最终写入日志文件
<ThresholdFilter level="DEBUG" onMatch="NEUTRAL" onMismatch="DENY"/>
-->
<RegexFilter regex="==> Preparing:[\s\S]*|==> Parameters:[\s\S]*" onMatch="NEUTRAL" onMismatch="DENY"/>
</Filters>
<!-- 输出的日志格式 -->
<PatternLayout pattern="${LOG_FORMAT}"/>
<Policies>
<OnStartupTriggeringPolicy/>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!-- 最多备份30天以内的日志此处为策略限制Delete中可以按自己需要用正则表达式编写 -->
<!-- DefaultRolloverStrategy字段中加入max=“30”经测试是配合SizeBasedTriggeringPolicy限制%i的存在数量
并没有发现是网上流传的是最多保存多少个文件的限制,也或许是我写的有问题 -->
<DefaultRolloverStrategy max="30"/>
</RollingFile>
<!-- 错误的日志文件 -->
<RollingFile name="error" fileName="${LOG_HOME}/error.log" filePattern="${LOG_HOME}/error-%d{yyyy-MM-dd}.zip" immediateFlush="true">
<Filters>
<!-- 只输出level及以上级别的信息onMatch其他的直接拒绝onMismatch 可选ACCEPT, DENY, NEUTRAL
接受使用NEUTRAL中立被第一个过滤器接受的日志信息会继续用后面的过滤器进行过滤只有符合所有过滤器条件的日志信息才会被最终写入日志文件
-->
<ThresholdFilter level="ERROR" onMatch="NEUTRAL" onMismatch="DENY"/>
<RegexFilter regex="slow sql[\s\S]*" onMatch="DENY" onMismatch="DENY"/>
</Filters>
<!-- 输出的日志格式 -->
<PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} [%-5level] %msg%xEx%n"/>
<Policies>
<OnStartupTriggeringPolicy/>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!-- DefaultRolloverStrategy字段中加入max=“30”经测试是配合SizeBasedTriggeringPolicy限制%i的存在数量并没有发现是网上流传的是最多保存多少个文件的限制也或许是我写的有问题 -->
<DefaultRolloverStrategy max="30"/>
</RollingFile>
<!--慢sql的日志文件-->
<RollingFile name="slowSql" fileName="${LOG_HOME}/slowsql.log" filePattern="${LOG_HOME}/slowsql-%d{yyyy-MM-dd}.zip" immediateFlush="true">
<!-- 只输出level及以上级别的信息onMatch其他的直接拒绝onMismatch
接受使用NEUTRAL中立被第一个过滤器接受的日志信息会继续用后面的过滤器进行过滤只有符合所有过滤器条件的日志信息才会被最终写入日志文件
-->
<Filters>
<RegexFilter regex="slow sql[\s\S]*" onMatch="NEUTRAL" onMismatch="DENY"/>
</Filters>
<!-- 输出的日志格式 -->
<PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} [%-5level] %msg%xEx%n"/>
<Policies>
<OnStartupTriggeringPolicy/>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!-- DefaultRolloverStrategy字段中加入max=“30”经测试是配合SizeBasedTriggeringPolicy限制%i的存在数量并没有发现是网上流传的是最多保存多少个文件的限制也或许是我写的有问题 -->
<DefaultRolloverStrategy max="30"/>
</RollingFile>
</appenders>
<!--然后定义logger只有定义了logger并引入的appenderappender才会生效 -->
<loggers>
<!--建立一个默认的root的logger -->
<root level="DEBUG">
<appender-ref ref="Log4j2ConsoleAppender"/>
<appender-ref ref="AsyncCONSOLE"/>
<!--<appender-ref ref="console"/>-->
<appender-ref ref="error"/>
<appender-ref ref="log"/>
<!-- <appender-ref ref="sqllog"/> -->
<appender-ref ref="slowSql"/>
</root>
<logger name="org.springframework" level="INFO"/>
<logger name="net.sf.ehcache" level="ERROR"/>
<logger name="com.alibaba.druid" level="ERROR"/>
<logger name="freemarker" level="ERROR"/>
<!-- 只输出错误以上org.quartz调试信息 -->
<logger name="org.quartz" level="ERROR" />
<!-- 只输出错误以上mybatis -->
<logger name="org.mybatis" level="ERROR"/>
<!-- 只输出错误以上的信息 -->
<logger name="org.apache.shiro" level="ERROR"/>
<!-- 显示sql语句-->
<logger name="druid.sql.Statement" level="ERROR" additivity="false">
<appender-ref ref="console"/>
</logger>
<!-- 显示慢sql语句-->
<logger name="druid.sql.Statement" level="ERROR" additivity="false">
<appender-ref ref="slowSql"/>
</logger>
<logger name="org.apache.commons.beanutils" level="ERROR" />
</loggers>
</configuration>

View File

@ -1,11 +1,11 @@
@echo off
TITLE 快搭平台服务器
cd /d %~dp0
set JAVA_HOME="D:\BS\Server\tomcat8\jdk"
set PATH=%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin
set CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
echo %~dp0
echo %JAVA_HOME%
java -jar kdayun-app.jar -Dfile.encoding=utf-8
@echo off
TITLE 快搭平台服务器
cd /d %~dp0
set JAVA_HOME="D:\BS\Server\tomcat8\jdk"
set PATH=%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin
set CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
echo %~dp0
echo %JAVA_HOME%
java -jar kdayun-app.jar -Dfile.encoding=utf-8
pause

View File

@ -1,279 +1,279 @@
[
{
"gongslx": "yhxggx",
"gongslxmc": "用户相关公式",
"gongsm": [
{
"name": "当前用户ID",
"val": "cxt.getUserId()",
"explain": "获取当前用户的id值"
},
{
"name": "当前登录用户单位ID",
"val": "cxt.getUserOrgId()",
"explain": "获取当前用户的单位id值"
},
{
"name": "当前登录用户角色ID",
"val": "cxt.getUserRoleId()",
"explain": "获取当前登录用户角色ID"
},
{
"name": "当前登录用户部门ID",
"val": "cxt.getUserDeptId()",
"explain": "获取当前登录用户部门ID"
},
{
"name": "当前用户code",
"val": "cxt.getUserCode()",
"explain": "获取当前登录用户code"
},
{
"name": "当前用户单位objcode",
"val": "cxt.getUserOrgCode()",
"explain": "获取当前登录用户单位code"
},
{
"name": "当前用户角色objcode",
"val": "cxt.getUserRoleCode()",
"explain": "获取当前登录用户角色code"
}
]
},
{
"gongslx": "xtpzxggs",
"gongslxmc": "系统配置相关公式",
"gongsm": [
{
"name": "通过系统选项key获取单位对应配置",
"val": "cxt.getConfig()",
"explain": "通过key获取当前登录用户系统配置选项值示例cxt.getConfig('31D48CD487674CCBA7AAFEF8E1C2741F')"
},
{
"name": "通过系统选项key和单位id获取单位对应配置",
"val": "cxt.getConfig()",
"explain": "通过系统选项key和单位id获取单位对应配置示例cxt.getConfig('9C876276D8884BFF94DF343E2A4EED7D','31D48CD487674CCBA7AAFEF8E1C2741F')"
},
{
"name": "当前登录用户角色ID",
"val": "cxt.getUserRoleId()",
"explain": "获取当前登录用户角色ID"
},
{
"name": "当前登录用户部门ID",
"val": "cxt.getUserDeptId()",
"explain": "获取当前登录用户部门ID"
},
{
"name": "当前用户code",
"val": "cxt.getUserCode()",
"explain": "获取当前登录用户code"
},
{
"name": "当前用户单位objcode",
"val": "cxt.getUserOrgCode()",
"explain": "获取当前登录用户单位code"
},
{
"name": "当前用户角色objcode",
"val": "cxt.getUserRoleCode()",
"explain": "获取当前登录用户角色code"
}
]
},
{
"gongslx": "zfczzgs",
"gongslxmc": "字符串操作公式",
"gongsm": [
{
"name": "返回32位唯一ID",
"val": "cxt.getGuid()",
"explain": "返回32位唯一ID"
},
{
"name": "判断字符串是否为空",
"val": "cxt.isBank()",
"explain": "判断字符串是否为空,返回true或者false,示例cxt.isBank(\"222\"),"
},
{
"name": "判断字符串是否为数字",
"val": "cxt.isNumber()",
"explain": "判断字符串是否为数字,返回true或者false,示例cxt.isNumber(\"22a\")"
},
{
"name": "字符串转为数字",
"val": "cxt.toNumber()",
"explain": "字符串转为数字,返回数字,示例cxt.toNumber(\"222\")"
},
{
"name": "字符串以xx开头",
"val": "cxt.startWith()",
"explain": "字符串以xx开头,返回true或者false,示例cxt.startWith(\"assxx\",\"xx\")"
},
{
"name": "字符串以xx结尾",
"val": "cxt.endWith()",
"explain": "字符串以xx结尾,返回true或者false,示例cxt.endWith(\"axxs2\",\"xx\")"
},
{
"name": "字符串以包涵xx的位置",
"val": "cxt.indexOf()",
"explain": "字符串以包涵xx的位置,返回第一个xx在字符串的位置,数字类型,如果没有xx,返回-1,示例cxt.indexOf(\"ssssa\",\"a\")"
},
{
"name": "字符串是否包涵某个字符",
"val": "cxt.contains()",
"explain": "字符串是否包涵某个字符,返回true或者false,如果包含则为true,否则为false,示例cxt.contains(\"s21sasx\",\"2\")"
},
{
"name": "字符串转大写",
"val": "cxt.toUpper()",
"explain": "字符串转大写,返回字符串,示例cxt.toUpper(\"s21sasx\")"
},
{
"name": "字符串转小写",
"val": "cxt.toLow()",
"explain": "字符串转小写,返回字符串,示例cxt.toLow(\"s21ASSS\")"
},
{
"name": "字符串是否等于某个字符串",
"val": "cxt.equals()",
"explain": "字符串是否等于某个字符串,返回true或者false,示例cxt.equals(\"s21ASSS\",\"2131dsas\")"
},
{
"name": "字符串是否等于某个字符串",
"val": "cxt.equalsIgnoreCase()",
"explain": "字符串是否等于某个字符串,忽略大小写,返回true或者false,示例cxt.equalsIgnoreCase(\"s21ASSS\",\"2131dsas\")"
},
{
"name": "某个字符串的长度",
"val": "cxt.length()",
"explain": "返回字符串的长度,数字类型,示例cxt.length(\"s21ASSS\")"
},
{
"name": "去掉字符串的空格",
"val": "cxt.trim()",
"explain": "去掉字符串的空格,返回去掉空格的字符串,示例cxt.trim(\"source \")"
},
{
"name": "某个字符串把xx替换成yy,支持正则表达式",
"val": "cxt.replaceAll()",
"explain": "某个字符串把xx替换成yy,支持正则表达式,返回替换后的字符串,示例cxt.replaceAll(\"s21ASSS\",\"AS\",\"DS\")"
},
{
"name": "保留小数,格式为千分号",
"val": "cxt.format()",
"explain": "保留小数,格式为千分号,参数有三个,第一个是需要格式化的字符串,第二个是保留的小数位数,第三个参数是是否要显示千分号,返回字符串,示例cxt.format(\"s21ASSS\",3,true)"
}
]
},
{
"gongslx": "jsgs",
"gongslxmc": "计算公式",
"gongsm": [
{
"name": "求和",
"val": "cxt.sum()",
"explain": "获取求和的值,返回数字,示例cxt.sum(1111,222,333)"
},
{
"name": "平均值",
"val": "cxt.avg()",
"explain": "获取平均值,返回数字,示例cxt.avg(1111,222,222)"
},
{
"name": "最大值",
"val": "cxt.max()",
"explain": "获取最大值,返回数字,示例cxt.max(222,4445,666)"
},
{
"name": "最小值",
"val": "cxt.min()",
"explain": "获取最小值,返回数字,示例cxt.min(333,4245,666)"
},
{
"name": "乘积",
"val": "cxt.product()",
"explain": "各个数字乘积,返回数字,示例cxt.product(333,4245,666)"
}
]
},
{
"gongslx": "sj",
"gongslxmc": "时间函数",
"gongsm": [
{
"name": "date获取当前日期",
"val": "cxt.date()",
"explain": "获取当前时间,返回yyyy-MM-dd格式字符串类型。示例cxt.date()"
},
{
"name": "datetime获取当前时间",
"val": "cxt.datetime()",
"explain": "获取当前时间,返回yyyy-MM-dd HH:mm:ss格式,字符串类型。示例cxt.datetime()"
},
{
"name": "now获取当前时间,返回时间类型",
"val": "cxt.now()",
"explain": "获取当前时间,返回时间类型,示例cxt.now()"
},
{
"name": "时间格式化成字符串",
"val": "cxt.dateFormat()",
"explain": "将时间格式化为字符串,格式自定义设置。示例cxt.or(2018-05-09,\"yyyy-MM-dd\")"
}
]
},
{
"gongslx": "shujuk",
"gongslxmc": "数据库相关函数",
"gongsm": [
{
"name": "exceSelectSql执行查询sql,返回数组对象",
"val": "cxt.exceSelectSql()",
"explain": "执行查询sql并返回数组对象。示例cxt.exceSelectSql(\"select * from core_user\")"
},
{
"name": "exceTotalSql执行查询sql,返回数字类型",
"val": "cxt.exceTotalSql()",
"explain": "执行查询sql,返回数字,用于统计。示例cxt.exceTotalSql(\"select count(*) from core_user\")"
},
{
"name": "exceTotalSql执行查询sql,返回数组数字类型",
"val": "cxt.exceSelectIntSql()",
"explain": "执行查询sql,返回数字数组,多数用于图标展示。示例cxt.exceSelectIntSql(\"select sys_sort from core_user\")"
},
{
"name": "getDbType返回当前链接的数据库类型",
"val": "cxt.getDbType()",
"explain": "返回值有mysql,oracle,sqlserver,dm,分别对应mysql数据库,oracle数据库,sqlserver数据库,达梦数据库,区分大小写"
}
]
},
{
"gongslx": "qt",
"gongslxmc": "其他",
"gongsm": [
{
"name": "ifValue表达式",
"val": "cxt.ifValue()",
"explain": "ifValue表达式,如果true,返回第一个参数,否则返回第二个参数。示例cxt.ifValue(2==3,115,10) 返回10"
},
{
"name": "and表达式",
"val": "cxt.and()",
"explain": "and逻辑关系运算符,boolean数组,只要有一个false则返回false。示例cxt.and(2==3,3==3,2==2) 返回true"
},
{
"name": "or表达式",
"val": "cxt.or()",
"explain": "or逻辑关系运算符,boolean数组,只要有一个true则返回true。示例cxt.or(2==3,3==3,2==2) 返回true"
},
{
"name": "nvl表达式",
"val": "cxt.nvl()",
"explain": "nvl表达式,返回第一个不为空的值。示例cxt.nvl(null,22) 返回22"
}
]
},
[
{
"gongslx": "yhxggx",
"gongslxmc": "用户相关公式",
"gongsm": [
{
"name": "当前用户ID",
"val": "cxt.getUserId()",
"explain": "获取当前用户的id值"
},
{
"name": "当前登录用户单位ID",
"val": "cxt.getUserOrgId()",
"explain": "获取当前用户的单位id值"
},
{
"name": "当前登录用户角色ID",
"val": "cxt.getUserRoleId()",
"explain": "获取当前登录用户角色ID"
},
{
"name": "当前登录用户部门ID",
"val": "cxt.getUserDeptId()",
"explain": "获取当前登录用户部门ID"
},
{
"name": "当前用户code",
"val": "cxt.getUserCode()",
"explain": "获取当前登录用户code"
},
{
"name": "当前用户单位objcode",
"val": "cxt.getUserOrgCode()",
"explain": "获取当前登录用户单位code"
},
{
"name": "当前用户角色objcode",
"val": "cxt.getUserRoleCode()",
"explain": "获取当前登录用户角色code"
}
]
},
{
"gongslx": "xtpzxggs",
"gongslxmc": "系统配置相关公式",
"gongsm": [
{
"name": "通过系统选项key获取单位对应配置",
"val": "cxt.getConfig()",
"explain": "通过key获取当前登录用户系统配置选项值示例cxt.getConfig('31D48CD487674CCBA7AAFEF8E1C2741F')"
},
{
"name": "通过系统选项key和单位id获取单位对应配置",
"val": "cxt.getConfig()",
"explain": "通过系统选项key和单位id获取单位对应配置示例cxt.getConfig('9C876276D8884BFF94DF343E2A4EED7D','31D48CD487674CCBA7AAFEF8E1C2741F')"
},
{
"name": "当前登录用户角色ID",
"val": "cxt.getUserRoleId()",
"explain": "获取当前登录用户角色ID"
},
{
"name": "当前登录用户部门ID",
"val": "cxt.getUserDeptId()",
"explain": "获取当前登录用户部门ID"
},
{
"name": "当前用户code",
"val": "cxt.getUserCode()",
"explain": "获取当前登录用户code"
},
{
"name": "当前用户单位objcode",
"val": "cxt.getUserOrgCode()",
"explain": "获取当前登录用户单位code"
},
{
"name": "当前用户角色objcode",
"val": "cxt.getUserRoleCode()",
"explain": "获取当前登录用户角色code"
}
]
},
{
"gongslx": "zfczzgs",
"gongslxmc": "字符串操作公式",
"gongsm": [
{
"name": "返回32位唯一ID",
"val": "cxt.getGuid()",
"explain": "返回32位唯一ID"
},
{
"name": "判断字符串是否为空",
"val": "cxt.isBank()",
"explain": "判断字符串是否为空,返回true或者false,示例cxt.isBank(\"222\"),"
},
{
"name": "判断字符串是否为数字",
"val": "cxt.isNumber()",
"explain": "判断字符串是否为数字,返回true或者false,示例cxt.isNumber(\"22a\")"
},
{
"name": "字符串转为数字",
"val": "cxt.toNumber()",
"explain": "字符串转为数字,返回数字,示例cxt.toNumber(\"222\")"
},
{
"name": "字符串以xx开头",
"val": "cxt.startWith()",
"explain": "字符串以xx开头,返回true或者false,示例cxt.startWith(\"assxx\",\"xx\")"
},
{
"name": "字符串以xx结尾",
"val": "cxt.endWith()",
"explain": "字符串以xx结尾,返回true或者false,示例cxt.endWith(\"axxs2\",\"xx\")"
},
{
"name": "字符串以包涵xx的位置",
"val": "cxt.indexOf()",
"explain": "字符串以包涵xx的位置,返回第一个xx在字符串的位置,数字类型,如果没有xx,返回-1,示例cxt.indexOf(\"ssssa\",\"a\")"
},
{
"name": "字符串是否包涵某个字符",
"val": "cxt.contains()",
"explain": "字符串是否包涵某个字符,返回true或者false,如果包含则为true,否则为false,示例cxt.contains(\"s21sasx\",\"2\")"
},
{
"name": "字符串转大写",
"val": "cxt.toUpper()",
"explain": "字符串转大写,返回字符串,示例cxt.toUpper(\"s21sasx\")"
},
{
"name": "字符串转小写",
"val": "cxt.toLow()",
"explain": "字符串转小写,返回字符串,示例cxt.toLow(\"s21ASSS\")"
},
{
"name": "字符串是否等于某个字符串",
"val": "cxt.equals()",
"explain": "字符串是否等于某个字符串,返回true或者false,示例cxt.equals(\"s21ASSS\",\"2131dsas\")"
},
{
"name": "字符串是否等于某个字符串",
"val": "cxt.equalsIgnoreCase()",
"explain": "字符串是否等于某个字符串,忽略大小写,返回true或者false,示例cxt.equalsIgnoreCase(\"s21ASSS\",\"2131dsas\")"
},
{
"name": "某个字符串的长度",
"val": "cxt.length()",
"explain": "返回字符串的长度,数字类型,示例cxt.length(\"s21ASSS\")"
},
{
"name": "去掉字符串的空格",
"val": "cxt.trim()",
"explain": "去掉字符串的空格,返回去掉空格的字符串,示例cxt.trim(\"source \")"
},
{
"name": "某个字符串把xx替换成yy,支持正则表达式",
"val": "cxt.replaceAll()",
"explain": "某个字符串把xx替换成yy,支持正则表达式,返回替换后的字符串,示例cxt.replaceAll(\"s21ASSS\",\"AS\",\"DS\")"
},
{
"name": "保留小数,格式为千分号",
"val": "cxt.format()",
"explain": "保留小数,格式为千分号,参数有三个,第一个是需要格式化的字符串,第二个是保留的小数位数,第三个参数是是否要显示千分号,返回字符串,示例cxt.format(\"s21ASSS\",3,true)"
}
]
},
{
"gongslx": "jsgs",
"gongslxmc": "计算公式",
"gongsm": [
{
"name": "求和",
"val": "cxt.sum()",
"explain": "获取求和的值,返回数字,示例cxt.sum(1111,222,333)"
},
{
"name": "平均值",
"val": "cxt.avg()",
"explain": "获取平均值,返回数字,示例cxt.avg(1111,222,222)"
},
{
"name": "最大值",
"val": "cxt.max()",
"explain": "获取最大值,返回数字,示例cxt.max(222,4445,666)"
},
{
"name": "最小值",
"val": "cxt.min()",
"explain": "获取最小值,返回数字,示例cxt.min(333,4245,666)"
},
{
"name": "乘积",
"val": "cxt.product()",
"explain": "各个数字乘积,返回数字,示例cxt.product(333,4245,666)"
}
]
},
{
"gongslx": "sj",
"gongslxmc": "时间函数",
"gongsm": [
{
"name": "date获取当前日期",
"val": "cxt.date()",
"explain": "获取当前时间,返回yyyy-MM-dd格式字符串类型。示例cxt.date()"
},
{
"name": "datetime获取当前时间",
"val": "cxt.datetime()",
"explain": "获取当前时间,返回yyyy-MM-dd HH:mm:ss格式,字符串类型。示例cxt.datetime()"
},
{
"name": "now获取当前时间,返回时间类型",
"val": "cxt.now()",
"explain": "获取当前时间,返回时间类型,示例cxt.now()"
},
{
"name": "时间格式化成字符串",
"val": "cxt.dateFormat()",
"explain": "将时间格式化为字符串,格式自定义设置。示例cxt.or(2018-05-09,\"yyyy-MM-dd\")"
}
]
},
{
"gongslx": "shujuk",
"gongslxmc": "数据库相关函数",
"gongsm": [
{
"name": "exceSelectSql执行查询sql,返回数组对象",
"val": "cxt.exceSelectSql()",
"explain": "执行查询sql并返回数组对象。示例cxt.exceSelectSql(\"select * from core_user\")"
},
{
"name": "exceTotalSql执行查询sql,返回数字类型",
"val": "cxt.exceTotalSql()",
"explain": "执行查询sql,返回数字,用于统计。示例cxt.exceTotalSql(\"select count(*) from core_user\")"
},
{
"name": "exceTotalSql执行查询sql,返回数组数字类型",
"val": "cxt.exceSelectIntSql()",
"explain": "执行查询sql,返回数字数组,多数用于图标展示。示例cxt.exceSelectIntSql(\"select sys_sort from core_user\")"
},
{
"name": "getDbType返回当前链接的数据库类型",
"val": "cxt.getDbType()",
"explain": "返回值有mysql,oracle,sqlserver,dm,分别对应mysql数据库,oracle数据库,sqlserver数据库,达梦数据库,区分大小写"
}
]
},
{
"gongslx": "qt",
"gongslxmc": "其他",
"gongsm": [
{
"name": "ifValue表达式",
"val": "cxt.ifValue()",
"explain": "ifValue表达式,如果true,返回第一个参数,否则返回第二个参数。示例cxt.ifValue(2==3,115,10) 返回10"
},
{
"name": "and表达式",
"val": "cxt.and()",
"explain": "and逻辑关系运算符,boolean数组,只要有一个false则返回false。示例cxt.and(2==3,3==3,2==2) 返回true"
},
{
"name": "or表达式",
"val": "cxt.or()",
"explain": "or逻辑关系运算符,boolean数组,只要有一个true则返回true。示例cxt.or(2==3,3==3,2==2) 返回true"
},
{
"name": "nvl表达式",
"val": "cxt.nvl()",
"explain": "nvl表达式,返回第一个不为空的值。示例cxt.nvl(null,22) 返回22"
}
]
},
]

View File

@ -1,56 +1,56 @@
[
{
"type": "variant",
"name": "USERID",
"help": "当前用户id",
"temp": "#{USERID}"
},
{
"type": "variant",
"name": "USERCODE",
"help": "当前用户编号",
"temp": "#{USERCODE}"
},
{
"type": "variant",
"name": "ROLEID",
"help": "当前用户角色id",
"temp": "#{ROLEID}"
},
{
"type": "variant",
"name": "ROLECODE",
"help": "当前用户所属组织机构(单位)编号",
"temp": "#{ROLECODE}"
},
{
"type": "variant",
"name": "DEPTID",
"help": "当前用户所属部门id",
"temp": "#{DEPTID}"
},
{
"type": "variant",
"name": "DEPTCODE",
"help": "当前用户所属部门编号",
"temp": "#{DEPTCODE}"
},
{
"type": "variant",
"name": "ORGID",
"help": "当前用户所属组织机构(单位)id",
"temp": "#{ORGID}"
},
{
"type": "variant",
"name": "ORGCODE",
"help": "当前用户所属组织机构(单位)编号",
"temp": "#{ORGCODE}"
},
{
"type": "variant",
"name": "USERWFID",
"help": "当前用户工作流程参与者唯一ID等于 {ORGID}_{DEPTID}_{ROLEID}_{USERID}",
"temp": "#{USERWFID}"
}
[
{
"type": "variant",
"name": "USERID",
"help": "当前用户id",
"temp": "#{USERID}"
},
{
"type": "variant",
"name": "USERCODE",
"help": "当前用户编号",
"temp": "#{USERCODE}"
},
{
"type": "variant",
"name": "ROLEID",
"help": "当前用户角色id",
"temp": "#{ROLEID}"
},
{
"type": "variant",
"name": "ROLECODE",
"help": "当前用户所属组织机构(单位)编号",
"temp": "#{ROLECODE}"
},
{
"type": "variant",
"name": "DEPTID",
"help": "当前用户所属部门id",
"temp": "#{DEPTID}"
},
{
"type": "variant",
"name": "DEPTCODE",
"help": "当前用户所属部门编号",
"temp": "#{DEPTCODE}"
},
{
"type": "variant",
"name": "ORGID",
"help": "当前用户所属组织机构(单位)id",
"temp": "#{ORGID}"
},
{
"type": "variant",
"name": "ORGCODE",
"help": "当前用户所属组织机构(单位)编号",
"temp": "#{ORGCODE}"
},
{
"type": "variant",
"name": "USERWFID",
"help": "当前用户工作流程参与者唯一ID等于 {ORGID}_{DEPTID}_{ROLEID}_{USERID}",
"temp": "#{USERWFID}"
}
]

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 434 KiB

After

Width:  |  Height:  |  Size: 437 KiB

View File

@ -1,295 +1,295 @@
* {
margin: 0;
padding: 0;
}
.clearfix:after {
content: '';
display: block;
height: 0;
clear: both;
visibility: hidden;
}
body {
font-family: '微软雅黑';
font-size: 13px;
background-image: url(../image/login_bg1.jpg);
background-repeat: repeat-x;
background-size: cover;
color: #277fd0;
}
.mt20 {
margin-top: 20px;
}
.header {
width: 100%;
height: 100px;
background-color: #fff;
position: relative;
}
.header h1 {
padding-top: 36px;
color: #277fd0;
font-size: 24px;
}
.header p {
color: #277fd0;
font-size: 15px;
}
.header .logo_log{
position: absolute;
bottom:0;
}
.content {
width: 100%;
margin: 0 auto;
height: 430px;
min-height: 420px;
}
.content .container {
height: 100%;
position: relative;
}
.logo_bg {
width: 500px;
height: 375px;
position: absolute;
left: 0;
top: 50%;
margin-top: -186px;
background-image: url(../image/login_bg2.gif);
background-repeat: no-repeat;
background-position: center;
}
.login_form {
width: 400px;
height: 344px;
background-color: #a8cbec;
border-radius: 10px;
-webkit-border-radius: 10px;
-o-border-radius: 10px;
-moz-border-radius: 10px;
margin-top: 100px;
margin-bottom: 100px;
margin-right: 94px;
position: absolute;
right: -80px;
top: 50%;
margin-top: -172px;
}
.login_form.noVCode{
height: 287px;
margin-top: -132px;
}
.login_form h2 {
text-align: center;
color: #277fd0;
font-size: 24px;
margin-top: 20px;
margin-bottom: 20px;
letter-spacing: 6px;
}
.login_tips {
height: 32px;
padding: 0px 10px;
background: rgba(0, 0, 0, 0.8);
line-height: 32px;
text-align: center;
color: #fff;
position: absolute;
top: 5px;
left: 50%;
border-radius: 4px;
display: none;
}
.info {
color: #ff3034;
position: absolute;
top: 70px;
left: 40px;
}
form {
margin: 0 auto;
overflow: hidden;
}
form>div {
width: 320px;
height: 42px;
margin-bottom: 10px;
margin-left: 39px;
margin-right: 39px;
/*border: 1px solid #b3b3b3;*/
border-radius: 5px;
background: #fff;
}
form>div>div:first-child {
width: 50px;
height: 100%;
float: left;
background-color: #fff;
background-image: url(../image/login.png);
background-repeat: no-repeat;
border-radius: 5px 0px 0px 5px;
-webkit-border-radius: 5px 0px 0px 5px;
-o-border-radius: 5px 0px 0px 5px;
-moz-border-radius: 5px 0px 0px 5px;
}
.user_img {
background-position: 9px 5px;
}
.pass_img {
background-position: -40px 5px;
}
.yz_img {
background-position: -90px 5px;
}
form>div.yz_input {
width: 220px;
position: relative;
}
.image {
margin-top: 1px;
margin-left: 1px;
width: 92px;
height: 40px;
-webkit-border-radius: 5px;
-o-border-radius: 5px;
-moz-border-radius: 5px;
position: absolute;
left: 228px;
}
form input {
float: left;
height: 100%;
height: 40px;
line-height: 40px;
width: 265px;
border:0 none;
padding: 0px;
outline: none;
color: #999;
font-size: 14px;
margin-top: 1px;
}
form input.yzkuang {
width: 140px;
height: 40px;
margin-right: 10px;
}
.login_btn {
width: 322px;
height: 42px;
line-height: 42px;
background-color: #277fd0;
font: 20px/42px '微软雅黑';
text-align: center;
color: #fff;
outline: none;
border: none;
border-radius: 5px;
-webkit-border-radius: 5px;
-o-border-radius: 5px;
-moz-border-radius: 5px;
}
.regist {
display: block;
font-size: 14px;
color: #277fd0;
text-decoration: none;
position: absolute;
right: 40px;
bottom: 8px;
}
.regist:hover {
color: #3d9aef;
}
.footer {
height: 100px;
padding-top: 10px;
background-color: #fff;
}
.footer p {
text-align: center;
color: #333;
font-size: 14px;
margin: 10px auto;
}
.container {
width: 1080px;
margin: 0 auto;
}
@media ( max-width : 1200px) {
.container {
width: 900px;
margin: 0 auto;
}
}
@media ( max-width : 992px) {
.container {
width: 640px;
margin: 0 auto;
}
.logo_bg {
display: none;
}
.login_form {
right: 50%;
margin-right: -200px;
}
.login_form.noVCode{
height: 287px;
margin-top: -132px;
}
}
@media ( max-width : 768px) {
.container {
width: 460px;
margin: 0 auto;
}
.logo_bg {
display: none;
}
.login_form {
right: 50%;
margin-right: -200px;
}
.login_form.noVCode{
height: 287px;
margin-top: -132px;
}
.layadmin-user-login-footer{
display: none
}
* {
margin: 0;
padding: 0;
}
.clearfix:after {
content: '';
display: block;
height: 0;
clear: both;
visibility: hidden;
}
body {
font-family: '微软雅黑';
font-size: 13px;
background-image: url(../image/login_bg1.jpg);
background-repeat: repeat-x;
background-size: cover;
color: #277fd0;
}
.mt20 {
margin-top: 20px;
}
.header {
width: 100%;
height: 100px;
background-color: #fff;
position: relative;
}
.header h1 {
padding-top: 36px;
color: #277fd0;
font-size: 24px;
}
.header p {
color: #277fd0;
font-size: 15px;
}
.header .logo_log{
position: absolute;
bottom:0;
}
.content {
width: 100%;
margin: 0 auto;
height: 430px;
min-height: 420px;
}
.content .container {
height: 100%;
position: relative;
}
.logo_bg {
width: 500px;
height: 375px;
position: absolute;
left: 0;
top: 50%;
margin-top: -186px;
background-image: url(../image/login_bg2.gif);
background-repeat: no-repeat;
background-position: center;
}
.login_form {
width: 400px;
height: 344px;
background-color: #a8cbec;
border-radius: 10px;
-webkit-border-radius: 10px;
-o-border-radius: 10px;
-moz-border-radius: 10px;
margin-top: 100px;
margin-bottom: 100px;
margin-right: 94px;
position: absolute;
right: -80px;
top: 50%;
margin-top: -172px;
}
.login_form.noVCode{
height: 287px;
margin-top: -132px;
}
.login_form h2 {
text-align: center;
color: #277fd0;
font-size: 24px;
margin-top: 20px;
margin-bottom: 20px;
letter-spacing: 6px;
}
.login_tips {
height: 32px;
padding: 0px 10px;
background: rgba(0, 0, 0, 0.8);
line-height: 32px;
text-align: center;
color: #fff;
position: absolute;
top: 5px;
left: 50%;
border-radius: 4px;
display: none;
}
.info {
color: #ff3034;
position: absolute;
top: 70px;
left: 40px;
}
form {
margin: 0 auto;
overflow: hidden;
}
form>div {
width: 320px;
height: 42px;
margin-bottom: 10px;
margin-left: 39px;
margin-right: 39px;
/*border: 1px solid #b3b3b3;*/
border-radius: 5px;
background: #fff;
}
form>div>div:first-child {
width: 50px;
height: 100%;
float: left;
background-color: #fff;
background-image: url(../image/login.png);
background-repeat: no-repeat;
border-radius: 5px 0px 0px 5px;
-webkit-border-radius: 5px 0px 0px 5px;
-o-border-radius: 5px 0px 0px 5px;
-moz-border-radius: 5px 0px 0px 5px;
}
.user_img {
background-position: 9px 5px;
}
.pass_img {
background-position: -40px 5px;
}
.yz_img {
background-position: -90px 5px;
}
form>div.yz_input {
width: 220px;
position: relative;
}
.image {
margin-top: 1px;
margin-left: 1px;
width: 92px;
height: 40px;
-webkit-border-radius: 5px;
-o-border-radius: 5px;
-moz-border-radius: 5px;
position: absolute;
left: 228px;
}
form input {
float: left;
height: 100%;
height: 40px;
line-height: 40px;
width: 265px;
border:0 none;
padding: 0px;
outline: none;
color: #999;
font-size: 14px;
margin-top: 1px;
}
form input.yzkuang {
width: 140px;
height: 40px;
margin-right: 10px;
}
.login_btn {
width: 322px;
height: 42px;
line-height: 42px;
background-color: #277fd0;
font: 20px/42px '微软雅黑';
text-align: center;
color: #fff;
outline: none;
border: none;
border-radius: 5px;
-webkit-border-radius: 5px;
-o-border-radius: 5px;
-moz-border-radius: 5px;
}
.regist {
display: block;
font-size: 14px;
color: #277fd0;
text-decoration: none;
position: absolute;
right: 40px;
bottom: 8px;
}
.regist:hover {
color: #3d9aef;
}
.footer {
height: 100px;
padding-top: 10px;
background-color: #fff;
}
.footer p {
text-align: center;
color: #333;
font-size: 14px;
margin: 10px auto;
}
.container {
width: 1080px;
margin: 0 auto;
}
@media ( max-width : 1200px) {
.container {
width: 900px;
margin: 0 auto;
}
}
@media ( max-width : 992px) {
.container {
width: 640px;
margin: 0 auto;
}
.logo_bg {
display: none;
}
.login_form {
right: 50%;
margin-right: -200px;
}
.login_form.noVCode{
height: 287px;
margin-top: -132px;
}
}
@media ( max-width : 768px) {
.container {
width: 460px;
margin: 0 auto;
}
.logo_bg {
display: none;
}
.login_form {
right: 50%;
margin-right: -200px;
}
.login_form.noVCode{
height: 287px;
margin-top: -132px;
}
.layadmin-user-login-footer{
display: none
}
}

View File

@ -1,292 +1,292 @@
* {
margin: 0;
padding: 0;
}
.clearfix:after {
content: '';
display: block;
height: 0;
clear: both;
visibility: hidden;
}
body {
font-family: '微软雅黑';
font-size: 13px;
background-image: url(../image/login_bg1.jpg);
background-repeat: repeat-x;
background-size: cover;
color: #277fd0;
}
.mt20 {
margin-top: 20px;
}
.header {
width: 100%;
height: 100px;
background-color: #fff;
position: relative;
}
.header h1 {
padding-top: 36px;
color: #277fd0;
font-size: 24px;
}
.header p {
color: #277fd0;
font-size: 15px;
}
.header .logo_log{
position: absolute;
bottom:0;
}
.content {
width: 100%;
margin: 0 auto;
height: 430px;
min-height: 420px;
}
.content .container {
height: 100%;
position: relative;
}
.logo_bg {
width: 500px;
height: 375px;
position: absolute;
left: 0;
top: 50%;
margin-top: -186px;
background-image: url(../image/login_bg2.gif);
background-repeat: no-repeat;
background-position: center;
}
.login_form {
width: 400px;
height: 344px;
background-color: #a8cbec;
border-radius: 10px;
-webkit-border-radius: 10px;
-o-border-radius: 10px;
-moz-border-radius: 10px;
margin-top: 100px;
margin-bottom: 100px;
margin-right: 94px;
position: absolute;
right: -80px;
top: 50%;
margin-top: -172px;
}
.login_form.noVCode{
height: 287px;
margin-top: -132px;
}
.login_form h2 {
text-align: center;
color: #277fd0;
font-size: 24px;
margin-top: 20px;
margin-bottom: 20px;
letter-spacing: 6px;
}
.login_tips {
height: 32px;
padding: 0px 10px;
background: rgba(0, 0, 0, 0.8);
line-height: 32px;
text-align: center;
color: #fff;
position: absolute;
top: 5px;
left: 50%;
border-radius: 4px;
display: none;
}
.info {
color: #ff3034;
position: absolute;
top: 70px;
left: 40px;
}
form {
margin: 0 auto;
overflow: hidden;
}
form>div {
width: 320px;
height: 42px;
margin-bottom: 10px;
margin-left: 39px;
margin-right: 39px;
/*border: 1px solid #b3b3b3;*/
border-radius: 5px;
background: #fff;
}
form>div>div:first-child {
width: 50px;
height: 100%;
float: left;
background-color: #fff;
background-image: url(../image/login.png);
background-repeat: no-repeat;
border-radius: 5px 0px 0px 5px;
-webkit-border-radius: 5px 0px 0px 5px;
-o-border-radius: 5px 0px 0px 5px;
-moz-border-radius: 5px 0px 0px 5px;
}
.user_img {
background-position: 9px 5px;
}
.pass_img {
background-position: -40px 5px;
}
.yz_img {
background-position: -90px 5px;
}
form>div.yz_input {
width: 220px;
position: relative;
}
.image {
margin-top: 1px;
margin-left: 1px;
width: 92px;
height: 40px;
-webkit-border-radius: 5px;
-o-border-radius: 5px;
-moz-border-radius: 5px;
position: absolute;
left: 228px;
}
form input {
float: left;
height: 100%;
height: 40px;
line-height: 40px;
width: 265px;
border:0 none;
padding: 0px;
outline: none;
color: #999;
font-size: 14px;
margin-top: 1px;
}
form input.yzkuang {
width: 140px;
height: 40px;
margin-right: 10px;
}
.login_btn {
width: 322px;
height: 42px;
line-height: 42px;
background-color: #277fd0;
font: 20px/42px '微软雅黑';
text-align: center;
color: #fff;
outline: none;
border: none;
border-radius: 5px;
-webkit-border-radius: 5px;
-o-border-radius: 5px;
-moz-border-radius: 5px;
}
.regist {
display: block;
font-size: 14px;
color: #277fd0;
text-decoration: none;
position: absolute;
right: 40px;
bottom: 8px;
}
.regist:hover {
color: #3d9aef;
}
.footer {
height: 100px;
padding-top: 10px;
background-color: #fff;
}
.footer p {
text-align: center;
color: #333;
font-size: 14px;
margin: 10px auto;
}
.container {
width: 1080px;
margin: 0 auto;
}
@media ( max-width : 1200px) {
.container {
width: 900px;
margin: 0 auto;
}
}
@media ( max-width : 992px) {
.container {
width: 640px;
margin: 0 auto;
}
.logo_bg {
display: none;
}
.login_form {
right: 50%;
margin-right: -200px;
}
.login_form.noVCode{
height: 287px;
margin-top: -132px;
}
}
@media ( max-width : 768px) {
.container {
width: 460px;
margin: 0 auto;
}
.logo_bg {
display: none;
}
.login_form {
right: 50%;
margin-right: -200px;
}
.login_form.noVCode{
height: 287px;
margin-top: -132px;
}
* {
margin: 0;
padding: 0;
}
.clearfix:after {
content: '';
display: block;
height: 0;
clear: both;
visibility: hidden;
}
body {
font-family: '微软雅黑';
font-size: 13px;
background-image: url(../image/login_bg1.jpg);
background-repeat: repeat-x;
background-size: cover;
color: #277fd0;
}
.mt20 {
margin-top: 20px;
}
.header {
width: 100%;
height: 100px;
background-color: #fff;
position: relative;
}
.header h1 {
padding-top: 36px;
color: #277fd0;
font-size: 24px;
}
.header p {
color: #277fd0;
font-size: 15px;
}
.header .logo_log{
position: absolute;
bottom:0;
}
.content {
width: 100%;
margin: 0 auto;
height: 430px;
min-height: 420px;
}
.content .container {
height: 100%;
position: relative;
}
.logo_bg {
width: 500px;
height: 375px;
position: absolute;
left: 0;
top: 50%;
margin-top: -186px;
background-image: url(../image/login_bg2.gif);
background-repeat: no-repeat;
background-position: center;
}
.login_form {
width: 400px;
height: 344px;
background-color: #a8cbec;
border-radius: 10px;
-webkit-border-radius: 10px;
-o-border-radius: 10px;
-moz-border-radius: 10px;
margin-top: 100px;
margin-bottom: 100px;
margin-right: 94px;
position: absolute;
right: -80px;
top: 50%;
margin-top: -172px;
}
.login_form.noVCode{
height: 287px;
margin-top: -132px;
}
.login_form h2 {
text-align: center;
color: #277fd0;
font-size: 24px;
margin-top: 20px;
margin-bottom: 20px;
letter-spacing: 6px;
}
.login_tips {
height: 32px;
padding: 0px 10px;
background: rgba(0, 0, 0, 0.8);
line-height: 32px;
text-align: center;
color: #fff;
position: absolute;
top: 5px;
left: 50%;
border-radius: 4px;
display: none;
}
.info {
color: #ff3034;
position: absolute;
top: 70px;
left: 40px;
}
form {
margin: 0 auto;
overflow: hidden;
}
form>div {
width: 320px;
height: 42px;
margin-bottom: 10px;
margin-left: 39px;
margin-right: 39px;
/*border: 1px solid #b3b3b3;*/
border-radius: 5px;
background: #fff;
}
form>div>div:first-child {
width: 50px;
height: 100%;
float: left;
background-color: #fff;
background-image: url(../image/login.png);
background-repeat: no-repeat;
border-radius: 5px 0px 0px 5px;
-webkit-border-radius: 5px 0px 0px 5px;
-o-border-radius: 5px 0px 0px 5px;
-moz-border-radius: 5px 0px 0px 5px;
}
.user_img {
background-position: 9px 5px;
}
.pass_img {
background-position: -40px 5px;
}
.yz_img {
background-position: -90px 5px;
}
form>div.yz_input {
width: 220px;
position: relative;
}
.image {
margin-top: 1px;
margin-left: 1px;
width: 92px;
height: 40px;
-webkit-border-radius: 5px;
-o-border-radius: 5px;
-moz-border-radius: 5px;
position: absolute;
left: 228px;
}
form input {
float: left;
height: 100%;
height: 40px;
line-height: 40px;
width: 265px;
border:0 none;
padding: 0px;
outline: none;
color: #999;
font-size: 14px;
margin-top: 1px;
}
form input.yzkuang {
width: 140px;
height: 40px;
margin-right: 10px;
}
.login_btn {
width: 322px;
height: 42px;
line-height: 42px;
background-color: #277fd0;
font: 20px/42px '微软雅黑';
text-align: center;
color: #fff;
outline: none;
border: none;
border-radius: 5px;
-webkit-border-radius: 5px;
-o-border-radius: 5px;
-moz-border-radius: 5px;
}
.regist {
display: block;
font-size: 14px;
color: #277fd0;
text-decoration: none;
position: absolute;
right: 40px;
bottom: 8px;
}
.regist:hover {
color: #3d9aef;
}
.footer {
height: 100px;
padding-top: 10px;
background-color: #fff;
}
.footer p {
text-align: center;
color: #333;
font-size: 14px;
margin: 10px auto;
}
.container {
width: 1080px;
margin: 0 auto;
}
@media ( max-width : 1200px) {
.container {
width: 900px;
margin: 0 auto;
}
}
@media ( max-width : 992px) {
.container {
width: 640px;
margin: 0 auto;
}
.logo_bg {
display: none;
}
.login_form {
right: 50%;
margin-right: -200px;
}
.login_form.noVCode{
height: 287px;
margin-top: -132px;
}
}
@media ( max-width : 768px) {
.container {
width: 460px;
margin: 0 auto;
}
.logo_bg {
display: none;
}
.login_form {
right: 50%;
margin-right: -200px;
}
.login_form.noVCode{
height: 287px;
margin-top: -132px;
}
}

File diff suppressed because one or more lines are too long

View File

@ -1,180 +1,180 @@
/**
* __ ___
* / |/ /___ _____ _____ ___ ____ ____ _ ___ _____
* / /|_/ // _ \ / ___// ___// _ \ / __ \ / __ `// _ \ / ___/
* / / / // __/(__ )(__ )/ __// / / // /_/ // __// /
* /_/ /_/ \___//____//____/ \___//_/ /_/ \__, / \___//_/
* /____/
*
* @description MessengerJS, a common cross-document communicate solution.
* @author biqing kwok
* @version 2.0
* @license release under MIT license
*/
layui.define([], function (exports) {
"use strict";
window.Messenger = (function () {
// 消息前缀, 建议使用自己的项目名, 避免多项目之间的冲突
// !注意 消息前缀应使用字符串类型
var prefix = "[PROJECT_NAME]",
supportPostMessage = 'postMessage' in window;
// Target 类, 消息对象
function Target(target, name, prefix) {
var errMsg = '';
if (arguments.length < 2) {
errMsg = 'target error - target and name are both required';
} else if (typeof target != 'object') {
errMsg = 'target error - target itself must be window object';
} else if (typeof name != 'string') {
errMsg = 'target error - target name must be string type';
}
if (errMsg) {
throw new Error(errMsg);
}
this.target = target;
this.name = name;
this.prefix = prefix;
}
// 往 target 发送消息, 出于安全考虑, 发送消息会带上前缀
if (supportPostMessage) {
// IE8+ 以及现代浏览器支持
Target.prototype.send = function (msg) {
this.target.postMessage(JSON.stringify(msg), '*');
};
} else{
throw new Error('浏览器版本过低');
}
// 信使类
// 创建Messenger实例时指定, 必须指定Messenger的名字, (可选)指定项目名, 以避免Mashup类应用中的冲突
// !注意: 父子页面中projectName必须保持一致, 否则无法匹配
function Messenger(messengerName, projectName) {
this.targets = {};
this.name = messengerName;
this.listenFunc = [];
this.prefix = projectName || prefix;
this.initListen();
}
// 添加一个消息对象
Messenger.prototype.addTarget = function (target, name) {
var targetObj = new Target(target, name, this.prefix);
this.targets[name] = targetObj;
};
// 初始化消息监听
Messenger.prototype.initListen = function () {
var self = this;
var generalCallback = function (msg) {
if (typeof msg == 'object' && msg.data) {
msg = msg.data;
}
var msgPairs = msg.split('__Messenger__');
var msg = msgPairs[1];
var pairs = msgPairs[0].split('|');
var prefix = pairs[0];
var name = pairs[1];
for (var i = 0; i < self.listenFunc.length; i++) {
if (prefix + name === self.prefix + self.name) {
self.listenFunc[i](msg);
}
}
};
if (supportPostMessage) {
if ('addEventListener' in document) {
window.addEventListener('message', generalCallback, false);
} else if ('attachEvent' in document) {
window.attachEvent('onmessage', generalCallback);
}
} else {
// 兼容IE 6/7
window.navigator[this.prefix + this.name] = generalCallback;
}
};
// 监听消息
Messenger.prototype.listen = function (callback) {
var i = 0;
var len = this.listenFunc.length;
var cbIsExist = false;
for (; i < len; i++) {
if (this.listenFunc[i] == callback) {
cbIsExist = true;
break;
}
}
if (!cbIsExist) {
this.listenFunc.push(callback);
}
};
// 注销监听
Messenger.prototype.clear = function () {
this.listenFunc = [];
};
// 广播消息
Messenger.prototype.send = function (msg) {
var targets = this.targets,
target;
for (target in targets) {
if (targets.hasOwnProperty(target)) {
targets[target].send(msg);
}
}
};
/**
* 发送消息
* @param handle 消息句柄全局唯一
* @param msg 消息值,常量
* @param params 附带发送的参数
*/
Messenger.prototype.sendMessage = function (handle, msg, params) {
let iframes = top.window.document.getElementsByTagName("iframe");
var msgobj = {
handle: handle,
msg: msg,
params: params
}
this.targets = {};
this.targets['top'] = new Target(top.window, 'top', this.prefix);
for (let i = 0; i < iframes.length; i++) {
let n = iframes[i].name;
this.targets[n] = new Target(iframes[i].contentWindow, n, this.prefix);
}
let targets = this.targets;
for (let tar in targets) {
if (targets.hasOwnProperty(tar)) {
//排除掉自己 上面已经发送给自己了.
if (document.body.ownerDocument !== targets[tar].target.document) {
targets[tar].send(msgobj);
}
}
}
};
/**
* 消息触发
* @param handle 消息句柄全局唯一
* @param msg 消息值,常量
* @param callback 消息处理回调
*/
Messenger.prototype.on = function (handle, msg, callback) {
window.addEventListener('message', function (event) {
if (event.data) {
let d = JSON.parse(event.data);
if (d && d.msg == msg && d.handle == handle) {
callback && callback(d);
}
}
});
};
return Messenger;
})();
exports('messenger', window.Messenger);
});
/**
* __ ___
* / |/ /___ _____ _____ ___ ____ ____ _ ___ _____
* / /|_/ // _ \ / ___// ___// _ \ / __ \ / __ `// _ \ / ___/
* / / / // __/(__ )(__ )/ __// / / // /_/ // __// /
* /_/ /_/ \___//____//____/ \___//_/ /_/ \__, / \___//_/
* /____/
*
* @description MessengerJS, a common cross-document communicate solution.
* @author biqing kwok
* @version 2.0
* @license release under MIT license
*/
layui.define([], function (exports) {
"use strict";
window.Messenger = (function () {
// 消息前缀, 建议使用自己的项目名, 避免多项目之间的冲突
// !注意 消息前缀应使用字符串类型
var prefix = "[PROJECT_NAME]",
supportPostMessage = 'postMessage' in window;
// Target 类, 消息对象
function Target(target, name, prefix) {
var errMsg = '';
if (arguments.length < 2) {
errMsg = 'target error - target and name are both required';
} else if (typeof target != 'object') {
errMsg = 'target error - target itself must be window object';
} else if (typeof name != 'string') {
errMsg = 'target error - target name must be string type';
}
if (errMsg) {
throw new Error(errMsg);
}
this.target = target;
this.name = name;
this.prefix = prefix;
}
// 往 target 发送消息, 出于安全考虑, 发送消息会带上前缀
if (supportPostMessage) {
// IE8+ 以及现代浏览器支持
Target.prototype.send = function (msg) {
this.target.postMessage(JSON.stringify(msg), '*');
};
} else{
throw new Error('浏览器版本过低');
}
// 信使类
// 创建Messenger实例时指定, 必须指定Messenger的名字, (可选)指定项目名, 以避免Mashup类应用中的冲突
// !注意: 父子页面中projectName必须保持一致, 否则无法匹配
function Messenger(messengerName, projectName) {
this.targets = {};
this.name = messengerName;
this.listenFunc = [];
this.prefix = projectName || prefix;
this.initListen();
}
// 添加一个消息对象
Messenger.prototype.addTarget = function (target, name) {
var targetObj = new Target(target, name, this.prefix);
this.targets[name] = targetObj;
};
// 初始化消息监听
Messenger.prototype.initListen = function () {
var self = this;
var generalCallback = function (msg) {
if (typeof msg == 'object' && msg.data) {
msg = msg.data;
}
var msgPairs = msg.split('__Messenger__');
var msg = msgPairs[1];
var pairs = msgPairs[0].split('|');
var prefix = pairs[0];
var name = pairs[1];
for (var i = 0; i < self.listenFunc.length; i++) {
if (prefix + name === self.prefix + self.name) {
self.listenFunc[i](msg);
}
}
};
if (supportPostMessage) {
if ('addEventListener' in document) {
window.addEventListener('message', generalCallback, false);
} else if ('attachEvent' in document) {
window.attachEvent('onmessage', generalCallback);
}
} else {
// 兼容IE 6/7
window.navigator[this.prefix + this.name] = generalCallback;
}
};
// 监听消息
Messenger.prototype.listen = function (callback) {
var i = 0;
var len = this.listenFunc.length;
var cbIsExist = false;
for (; i < len; i++) {
if (this.listenFunc[i] == callback) {
cbIsExist = true;
break;
}
}
if (!cbIsExist) {
this.listenFunc.push(callback);
}
};
// 注销监听
Messenger.prototype.clear = function () {
this.listenFunc = [];
};
// 广播消息
Messenger.prototype.send = function (msg) {
var targets = this.targets,
target;
for (target in targets) {
if (targets.hasOwnProperty(target)) {
targets[target].send(msg);
}
}
};
/**
* 发送消息
* @param handle 消息句柄全局唯一
* @param msg 消息值,常量
* @param params 附带发送的参数
*/
Messenger.prototype.sendMessage = function (handle, msg, params) {
let iframes = top.window.document.getElementsByTagName("iframe");
var msgobj = {
handle: handle,
msg: msg,
params: params
}
this.targets = {};
this.targets['top'] = new Target(top.window, 'top', this.prefix);
for (let i = 0; i < iframes.length; i++) {
let n = iframes[i].name;
this.targets[n] = new Target(iframes[i].contentWindow, n, this.prefix);
}
let targets = this.targets;
for (let tar in targets) {
if (targets.hasOwnProperty(tar)) {
//排除掉自己 上面已经发送给自己了.
if (document.body.ownerDocument !== targets[tar].target.document) {
targets[tar].send(msgobj);
}
}
}
};
/**
* 消息触发
* @param handle 消息句柄全局唯一
* @param msg 消息值,常量
* @param callback 消息处理回调
*/
Messenger.prototype.on = function (handle, msg, callback) {
window.addEventListener('message', function (event) {
if (event.data) {
let d = JSON.parse(event.data);
if (d && d.msg == msg && d.handle == handle) {
callback && callback(d);
}
}
});
};
return Messenger;
})();
exports('messenger', window.Messenger);
});

View File

@ -1,30 +1,30 @@
/*
* @Author: gk
* 树形弹出选择窗口
* @Date: 2018-03-21 22:05:29
* @Last Modified by: gk
* @Last Modified time: 2018-03-21 22:11:48
*/
layui.define(['laypage', 'layer', 'form'], function (exports) {
"use strict";
var selecttreedlg = function (options) {
this.options = options;
};
selecttreedlg.prototype.init = function (elem) {
}
selecttreedlg.prototype.show = function () {
var formHtml = "<div></div>";
layer.open({
type: 1,
title: readonly == 'disabled' ? '查看' : (type == 'edit' ? '编辑' : '新增'),
area: [options.width, options.height],
content: frm.join(''),
success: function (layero, index) {
form.render();
}
});
}
exports('selecttreedlg', selecttreedlg);
/*
* @Author: gk
* 树形弹出选择窗口
* @Date: 2018-03-21 22:05:29
* @Last Modified by: gk
* @Last Modified time: 2018-03-21 22:11:48
*/
layui.define(['laypage', 'layer', 'form'], function (exports) {
"use strict";
var selecttreedlg = function (options) {
this.options = options;
};
selecttreedlg.prototype.init = function (elem) {
}
selecttreedlg.prototype.show = function () {
var formHtml = "<div></div>";
layer.open({
type: 1,
title: readonly == 'disabled' ? '查看' : (type == 'edit' ? '编辑' : '新增'),
area: [options.width, options.height],
content: frm.join(''),
success: function (layero, index) {
form.render();
}
});
}
exports('selecttreedlg', selecttreedlg);
});

View File

@ -1,213 +1,213 @@
/**
* treeSelect组件
*/
layui.define('tree', function (exports) {
"use strict";
var _MOD = 'treeselect',
treeData = {}, //全局树形数据缓存
$ = layui.jquery,
hint = layui.hint(),
DISABLED = 'layui-disabled',
win = $(window),
TreeSelect = function () {
this.v = '1.0.0';
};
/**
* 初始化下拉树选择框
*/
TreeSelect.prototype.render = function (options) {
var that = this,
othis =options? $(options.elem):null,
tips = '请选择',
CLASS = 'layui-form-select',
TITLE = 'layui-select-title',
NONE = 'layui-select-none',
initValue = '',
thatInput,
isString = function (obj) {
return Object.prototype.toString.call(obj) === "[object String]";
},
settext = function (data, val, input) {
$.each(data,
function (_, o) {
if (o.id === val) {
input.val(o.name);
return false;
}
if (o.children)
settext.call(this, o.children, val, input);
});
},
hide = function (e, clear) {
if (!$(e.target).parent().hasClass(TITLE) || clear) {
$('.' + CLASS).removeClass(CLASS + 'ed ' + CLASS + 'up');
thatInput && initValue && thatInput.val(initValue);
}
thatInput = null;
},
events = function (reElem, treeid, disabled) {
var title = reElem.find('.' + TITLE),
input = title.find('input'),
tree = reElem.find('.layui-tree'),
o = treeData,
defaultVal = othis.val();
//如果控件有默认值,设置默认值
if (defaultVal)
settext.call(this, o.data, defaultVal, input);
if (disabled) return;
//展开下拉
var showDown = function () {
var top = reElem.offset().top + reElem.outerHeight() + 5 - win.scrollTop(),
downHeight = win.height() - top - 13,
dlHeight = tree.outerHeight();
if (downHeight < 300)
tree.css("max-height", downHeight + "px");
reElem.addClass(CLASS + 'ed');
//上下定位识别
if (top + dlHeight > win.height() && top >= dlHeight) {
reElem.addClass(CLASS + 'up');
}
},
hideDown = function () {
reElem.removeClass(CLASS + 'ed ' + CLASS + 'up');
input.blur();
};
//点击标题区域
title.on('click',
function (e) {
reElem.hasClass(CLASS + 'ed')
? (
hideDown()
)
: (
hide(e, true),
showDown()
);
tree.find('.' + NONE).remove();
});
//点击箭头获取焦点
title.find('.layui-edge').on('click',
function () {
input.focus();
});
//键盘事件
input.on('keyup',
function (e) {
var keyCode = e.keyCode;
//Tab键
if (keyCode === 9) {
showDown();
}
})
.on('keydown',
function (e) {
var keyCode = e.keyCode;
//Tab键
if (keyCode === 9) {
hideDown();
} else if (keyCode === 13) { //回车键
e.preventDefault();
}
});
//渲染tree
layui.tree({
elem: "#" + treeid,
click: function (obj) {
othis.val(obj.id).removeClass('layui-form-danger');
input.val(obj.name);
tree.find(".youyao-this").removeClass("youyao-this");
hideDown(true);
if (o.selectcall)
o.selectcall(obj);
return false;
},
nodes: o.data
});
//点击树箭头不隐藏
tree.find(".layui-tree-spread").on('click',
function () {
return false;
});
//关闭下拉
$(document).off('click', hide).on('click', hide);
},
init = function (treeid) {
var hasRender = othis.next('.' + CLASS),
disabled = othis[0].disabled,
value = othis.value,
placeholder = othis.attr("placeholder") ? othis.attr("placeholder") : tips;
if (typeof othis.attr('lay-ignore') === 'string') return othis.show();
//隐藏原控件
othis.hide();
othis.addClass("layui-input-treeselect");
othis.attr("data-treeid", treeid);
//替代元素
var reElem = $([
'<div class="layui-unselect ' + CLASS + (disabled ? ' layui-select-disabled' : '') + '">',
'<div class="' +
TITLE +
'"><input type="text" placeholder="' +
placeholder +
'" id="' +
treeid +
"_text" +
'" value="' +
(value ? selected.html() : '') +
'" readonly class="layui-input layui-unselect' +
(disabled ? (' ' + DISABLED) : '') +
'">', '<i class="layui-edge"></i></div>',
'<ul id="' + treeid + '" class="layui-anim layui-anim-upbit layui-tree"></ul>', '</div>'
].join(''));
hasRender[0] && hasRender.remove(); //如果已经渲染则Rerender
othis.after(reElem);
events.call(this, reElem, treeid, disabled);
},
reset = function (filter) {
var trees = filter ? $('*[lay-filter="' + filter + '"]') : $(".layui-input-treeselect");
layui.each(trees,
function (_, one) {
othis = $(one);
var treeid = othis.attr("data-treeid");
init.call(this, treeid);
});
};
if (!options)
return reset.call(this, null);
if (options.filter)
return reset.call(this, options.filter);
if (!othis[0])
return hint.error('layui.treeSelect 没有找到' + options.elem + '元素');
if (!options.data)
return hint.error(
'layui.treeSelect 缺少参数 data ,data 可直接指定treedata也可以是treedata数据urltreedata参见layui tree模块');
var treeid = "selecttree_" + options.elem.replace("#", "");
if (!isString.call(this, options.data)) {
//缓存tree data
treeData = options;
init.call(this, treeid);
} else {
$.ajax({
url: options.data,
dataType: "json",
type: !options.method ? "POST" : options.method,
success: function (d) {
options.data = d;
treeData = options;
init.call(this, treeid);
}
});
}
};
var treeSelect = new TreeSelect();
//暴露接口
exports(_MOD, treeSelect);
/**
* treeSelect组件
*/
layui.define('tree', function (exports) {
"use strict";
var _MOD = 'treeselect',
treeData = {}, //全局树形数据缓存
$ = layui.jquery,
hint = layui.hint(),
DISABLED = 'layui-disabled',
win = $(window),
TreeSelect = function () {
this.v = '1.0.0';
};
/**
* 初始化下拉树选择框
*/
TreeSelect.prototype.render = function (options) {
var that = this,
othis =options? $(options.elem):null,
tips = '请选择',
CLASS = 'layui-form-select',
TITLE = 'layui-select-title',
NONE = 'layui-select-none',
initValue = '',
thatInput,
isString = function (obj) {
return Object.prototype.toString.call(obj) === "[object String]";
},
settext = function (data, val, input) {
$.each(data,
function (_, o) {
if (o.id === val) {
input.val(o.name);
return false;
}
if (o.children)
settext.call(this, o.children, val, input);
});
},
hide = function (e, clear) {
if (!$(e.target).parent().hasClass(TITLE) || clear) {
$('.' + CLASS).removeClass(CLASS + 'ed ' + CLASS + 'up');
thatInput && initValue && thatInput.val(initValue);
}
thatInput = null;
},
events = function (reElem, treeid, disabled) {
var title = reElem.find('.' + TITLE),
input = title.find('input'),
tree = reElem.find('.layui-tree'),
o = treeData,
defaultVal = othis.val();
//如果控件有默认值,设置默认值
if (defaultVal)
settext.call(this, o.data, defaultVal, input);
if (disabled) return;
//展开下拉
var showDown = function () {
var top = reElem.offset().top + reElem.outerHeight() + 5 - win.scrollTop(),
downHeight = win.height() - top - 13,
dlHeight = tree.outerHeight();
if (downHeight < 300)
tree.css("max-height", downHeight + "px");
reElem.addClass(CLASS + 'ed');
//上下定位识别
if (top + dlHeight > win.height() && top >= dlHeight) {
reElem.addClass(CLASS + 'up');
}
},
hideDown = function () {
reElem.removeClass(CLASS + 'ed ' + CLASS + 'up');
input.blur();
};
//点击标题区域
title.on('click',
function (e) {
reElem.hasClass(CLASS + 'ed')
? (
hideDown()
)
: (
hide(e, true),
showDown()
);
tree.find('.' + NONE).remove();
});
//点击箭头获取焦点
title.find('.layui-edge').on('click',
function () {
input.focus();
});
//键盘事件
input.on('keyup',
function (e) {
var keyCode = e.keyCode;
//Tab键
if (keyCode === 9) {
showDown();
}
})
.on('keydown',
function (e) {
var keyCode = e.keyCode;
//Tab键
if (keyCode === 9) {
hideDown();
} else if (keyCode === 13) { //回车键
e.preventDefault();
}
});
//渲染tree
layui.tree({
elem: "#" + treeid,
click: function (obj) {
othis.val(obj.id).removeClass('layui-form-danger');
input.val(obj.name);
tree.find(".youyao-this").removeClass("youyao-this");
hideDown(true);
if (o.selectcall)
o.selectcall(obj);
return false;
},
nodes: o.data
});
//点击树箭头不隐藏
tree.find(".layui-tree-spread").on('click',
function () {
return false;
});
//关闭下拉
$(document).off('click', hide).on('click', hide);
},
init = function (treeid) {
var hasRender = othis.next('.' + CLASS),
disabled = othis[0].disabled,
value = othis.value,
placeholder = othis.attr("placeholder") ? othis.attr("placeholder") : tips;
if (typeof othis.attr('lay-ignore') === 'string') return othis.show();
//隐藏原控件
othis.hide();
othis.addClass("layui-input-treeselect");
othis.attr("data-treeid", treeid);
//替代元素
var reElem = $([
'<div class="layui-unselect ' + CLASS + (disabled ? ' layui-select-disabled' : '') + '">',
'<div class="' +
TITLE +
'"><input type="text" placeholder="' +
placeholder +
'" id="' +
treeid +
"_text" +
'" value="' +
(value ? selected.html() : '') +
'" readonly class="layui-input layui-unselect' +
(disabled ? (' ' + DISABLED) : '') +
'">', '<i class="layui-edge"></i></div>',
'<ul id="' + treeid + '" class="layui-anim layui-anim-upbit layui-tree"></ul>', '</div>'
].join(''));
hasRender[0] && hasRender.remove(); //如果已经渲染则Rerender
othis.after(reElem);
events.call(this, reElem, treeid, disabled);
},
reset = function (filter) {
var trees = filter ? $('*[lay-filter="' + filter + '"]') : $(".layui-input-treeselect");
layui.each(trees,
function (_, one) {
othis = $(one);
var treeid = othis.attr("data-treeid");
init.call(this, treeid);
});
};
if (!options)
return reset.call(this, null);
if (options.filter)
return reset.call(this, options.filter);
if (!othis[0])
return hint.error('layui.treeSelect 没有找到' + options.elem + '元素');
if (!options.data)
return hint.error(
'layui.treeSelect 缺少参数 data ,data 可直接指定treedata也可以是treedata数据urltreedata参见layui tree模块');
var treeid = "selecttree_" + options.elem.replace("#", "");
if (!isString.call(this, options.data)) {
//缓存tree data
treeData = options;
init.call(this, treeid);
} else {
$.ajax({
url: options.data,
dataType: "json",
type: !options.method ? "POST" : options.method,
success: function (d) {
options.data = d;
treeData = options;
init.call(this, treeid);
}
});
}
};
var treeSelect = new TreeSelect();
//暴露接口
exports(_MOD, treeSelect);
});

View File

@ -1,7 +1,7 @@
/**
* 前端框架入口
*
*/
layui.config({
base : "/kdayun/static/framework/"//设定扩展的Layui模块的所在目录一般用于外部模块扩展
/**
* 前端框架入口
*
*/
layui.config({
base : "/kdayun/static/framework/"//设定扩展的Layui模块的所在目录一般用于外部模块扩展
});

View File

@ -1,91 +1,91 @@
/*
* @Author: gk
* grid 框架的全局配置
* @Date: 2018-01-17 09:53:01
* @Last Modified by: gk
* @Last Modified time: 2018-04-15 09:29:42
*/
layui.define([], function (exports) {
"use strict";
var config = {}
/**全局配置 */
config = {
/**全局配置 */
global: {
/**全局页数 */
pageSize: 20,
/**返回结果集的json结构字段名称和类型 */
result: {
statusName: "state"
, msgName: "msg"
, dataName: "obj"
, errorState: "ERROR"
, okState: "OK"
},
/**全局页的设置 */
page: {
pageName: ""
, limitName: ""
, pages: [10, 20, 30, 50, 100]
},
/**定义grid返回的结果集的格式 */
gridResponse:{
statusName: 'state'
,statusCode: 'OK'
,msgName: 'msg'
,countName: 'total'
,dataName: 'obj'
} ,
/**自定义的消息 */
WM_USERDEF:{
//刷新数据单表,主表消息
REFRESHDATA_DATA:'REFRESHDATA(DATA)'
//刷新明细表数据消息
,REFRESHDATA_DATAMX:'REFRESHDATAMX(DATA)'
//树节点刷新数据消息
,REFRESH_TREE_DATA_DATA:'REFRESH_TREE_DATA_DATA(NODE)'
//提交完成消息
,AFTER_SUBMIT:'AFTER_SUMBIT'
//画组件的消息
,WM_DRAW:'WM_DRAW'
},
/**全局的form验证规则 */
verify: {
/**对比两个值相等 */
equals: function (value, item) { //value表单的值、item表单的DOM对象
var equalsId = $(item).attr("equalsId");
if (_.isEmpty(equalsId)) {
return '未配置对比id';
}
var value2 = $("#" + equalsId).val();
if (!_.eq(value, value2)) {
var equalsMsg = $(item).attr("equalsMsg");
if (_.isEmpty(equalsMsg)) {
equalsMsg = "值不相等";
}
return equalsMsg;
}
},
/**用户名验证*/
username: [
/^[a-zA-Z]{1}([a-zA-Z0-9]|[_]){2,19}$/,
'用户名格式不正确!'
],
/** 最小、最大长度判断 */
length: function (value, item) { //value表单的值、item表单的DOM对象
var minLength = $(item).attr("minLength");//最小长度
var maxLength = $(item).attr("maxLength");//最大长度
if (!_.isEmpty(minLength) && !_.eq('0', minLength) && _.gt(minLength, value.length)) {
return "输入内容小于最小值:" + minLength;
}
if (!_.isEmpty(maxLength) && !_.eq('0', maxLength) && _.gt(value.length, maxLength)) {
return "输入内容大于最小值:" + maxLength;
}
}
}
}
};
exports("zlConfig", config);
/*
* @Author: gk
* grid 框架的全局配置
* @Date: 2018-01-17 09:53:01
* @Last Modified by: gk
* @Last Modified time: 2018-04-15 09:29:42
*/
layui.define([], function (exports) {
"use strict";
var config = {}
/**全局配置 */
config = {
/**全局配置 */
global: {
/**全局页数 */
pageSize: 20,
/**返回结果集的json结构字段名称和类型 */
result: {
statusName: "state"
, msgName: "msg"
, dataName: "obj"
, errorState: "ERROR"
, okState: "OK"
},
/**全局页的设置 */
page: {
pageName: ""
, limitName: ""
, pages: [10, 20, 30, 50, 100]
},
/**定义grid返回的结果集的格式 */
gridResponse:{
statusName: 'state'
,statusCode: 'OK'
,msgName: 'msg'
,countName: 'total'
,dataName: 'obj'
} ,
/**自定义的消息 */
WM_USERDEF:{
//刷新数据单表,主表消息
REFRESHDATA_DATA:'REFRESHDATA(DATA)'
//刷新明细表数据消息
,REFRESHDATA_DATAMX:'REFRESHDATAMX(DATA)'
//树节点刷新数据消息
,REFRESH_TREE_DATA_DATA:'REFRESH_TREE_DATA_DATA(NODE)'
//提交完成消息
,AFTER_SUBMIT:'AFTER_SUMBIT'
//画组件的消息
,WM_DRAW:'WM_DRAW'
},
/**全局的form验证规则 */
verify: {
/**对比两个值相等 */
equals: function (value, item) { //value表单的值、item表单的DOM对象
var equalsId = $(item).attr("equalsId");
if (_.isEmpty(equalsId)) {
return '未配置对比id';
}
var value2 = $("#" + equalsId).val();
if (!_.eq(value, value2)) {
var equalsMsg = $(item).attr("equalsMsg");
if (_.isEmpty(equalsMsg)) {
equalsMsg = "值不相等";
}
return equalsMsg;
}
},
/**用户名验证*/
username: [
/^[a-zA-Z]{1}([a-zA-Z0-9]|[_]){2,19}$/,
'用户名格式不正确!'
],
/** 最小、最大长度判断 */
length: function (value, item) { //value表单的值、item表单的DOM对象
var minLength = $(item).attr("minLength");//最小长度
var maxLength = $(item).attr("maxLength");//最大长度
if (!_.isEmpty(minLength) && !_.eq('0', minLength) && _.gt(minLength, value.length)) {
return "输入内容小于最小值:" + minLength;
}
if (!_.isEmpty(maxLength) && !_.eq('0', maxLength) && _.gt(value.length, maxLength)) {
return "输入内容大于最小值:" + maxLength;
}
}
}
}
};
exports("zlConfig", config);
});

View File

@ -1,136 +1,136 @@
/**
* excel导出文件
*/
layui.define(['zlContext','table', 'form'], function (exports) {
"use strict";
var $ = layui.$
, form = layui.form
, zlContext = layui.zlContext
, table = layui.table
, zlExcel = {
downloadexcl: function (params, url) {
// zlContext.showLoading();
if (!url) {
url = layui.cache['contentPath'] + '/core/excel/export';
}
var html = ('<form id="downloadexcelform" action="' + url + '" method="post" style="display:none">');
if ($("#downloadexcelform").length > 0) {
$("#downloadexcelform").remove();
}
if (params) {
params = JSON.stringify(params).replace(/"/g,"&quot;").replace(/'/g,"&apos;");
html += '<input name="model" value=\'' + params + '\'/>';
}
html += '</form>';
$("body").append(html);
$("#downloadexcelform").prop('action', url);
$("#downloadexcelform").submit();
}
, excelpopform: function (params) {
var htmlStr = [
'<div class="layui-fluid" lay-filter="divgridWorkflow" style="padding:20px 20px 20px 10px"> <form id ="excelForm" class="layui-form" action="">'
, ' <div class="layui-form-item">'
, ' <label class="layui-form-label">标题</label>'
, ' <div class="layui-input-block">'
, ' <input type="text" name="filetitle" lay-verify="" placeholder="请输入标题,如无则为系统默认标题,导出CSV设置无效" class="layui-input">'
, ' </div>'
, ' </div>'
, ' <div class="layui-form-item">'
, ' <label class="layui-form-label">文件名</label>'
, ' <div class="layui-input-block">'
, ' <input class="layui-input" type="text" name="fileName" lay-verify="" placeholder="请输入文件名,如无则为系统默认文件名">'
, ' </div>'
, ' </div>'
, ' <div class="layui-form-item">'
, ' <label class="layui-form-label">导出范围</label>'
, ' <div class="layui-input-block">'
, ' <input type="radio" name="datalist" value="0" title="当前页" checked="">'
, ' <input type="radio" name="datalist" value="1" title="选中数据">'
, ' <input type="radio" name="datalist" id="all" value="2" title="全部">'
, ' </div>'
, ' </div>'
, ' <div class="layui-form-item">'
, ' <label class="layui-form-label">文件格式</label>'
, ' <div class="layui-input-block">'
, ' <input type="radio" name="filetype" value=".xls" title="EXCEL文件" checked="">'
, ' <input type="radio" name="filetype" value=".csv" title="CSV文件" >'
, ' </div>'
, ' </div>'
, ' <div class="layui-hide">'
, ' <div class="layui-input-block">'
, ' <button id="confirm-btn" class="layui-btn fr mr10" lay-submit lay-filter="confirm-btn">确定</button>'
, ' </div>'
, ' </div>'
, '</form></div>'
]
,defaultsetting={
url:layui.cache['contentPath'] + '/core/excel/exportuserdef',
MAINTABLENAME_ZLFW:""
}
,tableid = params.tableid
, all = params.all==undefined ?true : params.all
,checklist = tableid?table.checkStatus(tableid).data:params.checklist
,columns = tableid?{}:params.columns
,filetitle = params.filetitle?params.filetitle:''
,fileName = params.fileName?params.fileName:''
,curpagelist = tableid?layui.table.cache[tableid]:params.curpagelist;
params = $.extend({}, defaultsetting, params);
if(tableid){
table.eachCols(tableid, function(i3, item3){
if(item3.field && item3.type == 'normal' && !item3.hide){
columns[item3.title] = item3.field;
}
});
}
if(!columns){
zlContext.errorMsg("缺少参数配置,请检查参数配置!");
return;
}
layer.open({
type: 1,
title: '数据导出设置',
area: ['600px', '360px'],
btn: ['确定', '取消'],
content: htmlStr.join(''),
success: function (layero, index) {
if(filetitle){
$('input[name="filetitle"]').val(filetitle);
}
if(fileName){
$('input[name="fileName"]').val(fileName);
}
form.render();
if(!all){
$('#all').next(".layui-form-radio").hide();
}
form.on('submit(confirm-btn)', function (data) {
var newparam=data.field;
if(newparam.datalist=="0"){
newparam.list=curpagelist;
}else if(newparam.datalist=="1") {
newparam.list= checklist;
if(!checklist||checklist.length==0){
zlContext.warnMsg("无数据选中,请先选择数据!");
return false;
}
}
newparam.columns = columns;
newparam.MAINTABLENAME_ZLFW = params.MAINTABLENAME_ZLFW;
newparam = $.extend({}, params,newparam);
if(newparam.datalist=="2"&&(!newparam.sql)){
table.exportFileZl(tableid,newparam);
}else {
zlExcel.downloadexcl(newparam,params.url);
}
layer.close(index);
return false;
});
},
yes: function (layero, index) {
document.getElementById("confirm-btn").click();
}
});
}
}
exports("zlExcel", zlExcel);
});
/**
* excel导出文件
*/
layui.define(['zlContext','table', 'form'], function (exports) {
"use strict";
var $ = layui.$
, form = layui.form
, zlContext = layui.zlContext
, table = layui.table
, zlExcel = {
downloadexcl: function (params, url) {
// zlContext.showLoading();
if (!url) {
url = layui.cache['contentPath'] + '/core/excel/export';
}
var html = ('<form id="downloadexcelform" action="' + url + '" method="post" style="display:none">');
if ($("#downloadexcelform").length > 0) {
$("#downloadexcelform").remove();
}
if (params) {
params = JSON.stringify(params).replace(/"/g,"&quot;").replace(/'/g,"&apos;");
html += '<input name="model" value=\'' + params + '\'/>';
}
html += '</form>';
$("body").append(html);
$("#downloadexcelform").prop('action', url);
$("#downloadexcelform").submit();
}
, excelpopform: function (params) {
var htmlStr = [
'<div class="layui-fluid" lay-filter="divgridWorkflow" style="padding:20px 20px 20px 10px"> <form id ="excelForm" class="layui-form" action="">'
, ' <div class="layui-form-item">'
, ' <label class="layui-form-label">标题</label>'
, ' <div class="layui-input-block">'
, ' <input type="text" name="filetitle" lay-verify="" placeholder="请输入标题,如无则为系统默认标题,导出CSV设置无效" class="layui-input">'
, ' </div>'
, ' </div>'
, ' <div class="layui-form-item">'
, ' <label class="layui-form-label">文件名</label>'
, ' <div class="layui-input-block">'
, ' <input class="layui-input" type="text" name="fileName" lay-verify="" placeholder="请输入文件名,如无则为系统默认文件名">'
, ' </div>'
, ' </div>'
, ' <div class="layui-form-item">'
, ' <label class="layui-form-label">导出范围</label>'
, ' <div class="layui-input-block">'
, ' <input type="radio" name="datalist" value="0" title="当前页" checked="">'
, ' <input type="radio" name="datalist" value="1" title="选中数据">'
, ' <input type="radio" name="datalist" id="all" value="2" title="全部">'
, ' </div>'
, ' </div>'
, ' <div class="layui-form-item">'
, ' <label class="layui-form-label">文件格式</label>'
, ' <div class="layui-input-block">'
, ' <input type="radio" name="filetype" value=".xls" title="EXCEL文件" checked="">'
, ' <input type="radio" name="filetype" value=".csv" title="CSV文件" >'
, ' </div>'
, ' </div>'
, ' <div class="layui-hide">'
, ' <div class="layui-input-block">'
, ' <button id="confirm-btn" class="layui-btn fr mr10" lay-submit lay-filter="confirm-btn">确定</button>'
, ' </div>'
, ' </div>'
, '</form></div>'
]
,defaultsetting={
url:layui.cache['contentPath'] + '/core/excel/exportuserdef',
MAINTABLENAME_ZLFW:""
}
,tableid = params.tableid
, all = params.all==undefined ?true : params.all
,checklist = tableid?table.checkStatus(tableid).data:params.checklist
,columns = tableid?{}:params.columns
,filetitle = params.filetitle?params.filetitle:''
,fileName = params.fileName?params.fileName:''
,curpagelist = tableid?layui.table.cache[tableid]:params.curpagelist;
params = $.extend({}, defaultsetting, params);
if(tableid){
table.eachCols(tableid, function(i3, item3){
if(item3.field && item3.type == 'normal' && !item3.hide){
columns[item3.title] = item3.field;
}
});
}
if(!columns){
zlContext.errorMsg("缺少参数配置,请检查参数配置!");
return;
}
layer.open({
type: 1,
title: '数据导出设置',
area: ['600px', '360px'],
btn: ['确定', '取消'],
content: htmlStr.join(''),
success: function (layero, index) {
if(filetitle){
$('input[name="filetitle"]').val(filetitle);
}
if(fileName){
$('input[name="fileName"]').val(fileName);
}
form.render();
if(!all){
$('#all').next(".layui-form-radio").hide();
}
form.on('submit(confirm-btn)', function (data) {
var newparam=data.field;
if(newparam.datalist=="0"){
newparam.list=curpagelist;
}else if(newparam.datalist=="1") {
newparam.list= checklist;
if(!checklist||checklist.length==0){
zlContext.warnMsg("无数据选中,请先选择数据!");
return false;
}
}
newparam.columns = columns;
newparam.MAINTABLENAME_ZLFW = params.MAINTABLENAME_ZLFW;
newparam = $.extend({}, params,newparam);
if(newparam.datalist=="2"&&(!newparam.sql)){
table.exportFileZl(tableid,newparam);
}else {
zlExcel.downloadexcl(newparam,params.url);
}
layer.close(index);
return false;
});
},
yes: function (layero, index) {
document.getElementById("confirm-btn").click();
}
});
}
}
exports("zlExcel", zlExcel);
});

View File

@ -1,481 +1,481 @@
/*
* @Author: gk
* grid 汉子拼音转换插件
* @Date: 2018-01-17 09:53:01
* @Last Modified by: gk
* @Last Modified time: 2018-03-22 18:12:34
*/
layui.define([], function (exports) {
"use strict";
var PinYin = {}
var PinYinArray = {
"a": "\u554a\u963f\u9515",
"ai": "\u57c3\u6328\u54ce\u5509\u54c0\u7691\u764c\u853c\u77ee\u827e\u788d\u7231\u9698\u8bf6\u6371\u55f3\u55cc\u5ad2\u7477\u66a7\u7839\u953f\u972d",
"an": "\u978d\u6c28\u5b89\u4ffa\u6309\u6697\u5cb8\u80fa\u6848\u8c19\u57ef\u63de\u72b4\u5eb5\u6849\u94f5\u9e4c\u9878\u9eef",
"ang": "\u80ae\u6602\u76ce",
"ao": "\u51f9\u6556\u71ac\u7ff1\u8884\u50b2\u5965\u61ca\u6fb3\u5773\u62d7\u55f7\u5662\u5c99\u5ed2\u9068\u5aaa\u9a9c\u8071\u87af\u93ca\u9ccc\u93d6",
"ba": "\u82ad\u634c\u6252\u53ed\u5427\u7b06\u516b\u75a4\u5df4\u62d4\u8dcb\u9776\u628a\u8019\u575d\u9738\u7f62\u7238\u8307\u83dd\u8406\u636d\u5c9c\u705e\u6777\u94af\u7c91\u9c85\u9b43",
"bai": "\u767d\u67cf\u767e\u6446\u4f70\u8d25\u62dc\u7a17\u859c\u63b0\u97b4",
"ban": "\u6591\u73ed\u642c\u6273\u822c\u9881\u677f\u7248\u626e\u62cc\u4f34\u74e3\u534a\u529e\u7eca\u962a\u5742\u8c73\u94a3\u7622\u764d\u8228",
"bang": "\u90a6\u5e2e\u6886\u699c\u8180\u7ed1\u68d2\u78c5\u868c\u9551\u508d\u8c24\u84a1\u8783",
"bao": "\u82de\u80de\u5305\u8912\u96f9\u4fdd\u5821\u9971\u5b9d\u62b1\u62a5\u66b4\u8c79\u9c8d\u7206\u52f9\u8446\u5b80\u5b62\u7172\u9e28\u8913\u8db5\u9f85",
"bo": "\u5265\u8584\u73bb\u83e0\u64ad\u62e8\u94b5\u6ce2\u535a\u52c3\u640f\u94c2\u7b94\u4f2f\u5e1b\u8236\u8116\u818a\u6e24\u6cca\u9a73\u4eb3\u8543\u5575\u997d\u6a97\u64d8\u7934\u94b9\u9e41\u7c38\u8ddb",
"bei": "\u676f\u7891\u60b2\u5351\u5317\u8f88\u80cc\u8d1d\u94a1\u500d\u72c8\u5907\u60eb\u7119\u88ab\u5b5b\u9642\u90b6\u57e4\u84d3\u5457\u602b\u6096\u789a\u9e4e\u8919\u943e",
"ben": "\u5954\u82ef\u672c\u7b28\u755a\u574c\u951b",
"beng": "\u5d29\u7ef7\u752d\u6cf5\u8e66\u8ff8\u552a\u5623\u750f",
"bi": "\u903c\u9f3b\u6bd4\u9119\u7b14\u5f7c\u78a7\u84d6\u853d\u6bd5\u6bd9\u6bd6\u5e01\u5e87\u75f9\u95ed\u655d\u5f0a\u5fc5\u8f9f\u58c1\u81c2\u907f\u965b\u5315\u4ef3\u4ffe\u8298\u835c\u8378\u5421\u54d4\u72f4\u5eb3\u610e\u6ed7\u6fde\u5f3c\u59a3\u5a62\u5b16\u74a7\u8d32\u7540\u94cb\u79d5\u88e8\u7b5a\u7b85\u7be6\u822d\u895e\u8df8\u9ac0",
"bian": "\u97ad\u8fb9\u7f16\u8d2c\u6241\u4fbf\u53d8\u535e\u8fa8\u8fa9\u8fab\u904d\u533e\u5f01\u82c4\u5fed\u6c74\u7f0f\u7178\u782d\u78a5\u7a39\u7a86\u8759\u7b3e\u9cca",
"biao": "\u6807\u5f6a\u8198\u8868\u5a4a\u9aa0\u98d1\u98d9\u98da\u706c\u9556\u9573\u762d\u88f1\u9cd4",
"bie": "\u9cd6\u618b\u522b\u762a\u8e69\u9cd8",
"bin": "\u5f6c\u658c\u6fd2\u6ee8\u5bbe\u6448\u50a7\u6d5c\u7f24\u73a2\u6ba1\u8191\u9554\u9acc\u9b13",
"bing": "\u5175\u51b0\u67c4\u4e19\u79c9\u997c\u70b3\u75c5\u5e76\u7980\u90b4\u6452\u7ee0\u678b\u69df\u71f9",
"bu": "\u6355\u535c\u54fa\u8865\u57e0\u4e0d\u5e03\u6b65\u7c3f\u90e8\u6016\u62ca\u535f\u900b\u74ff\u6661\u949a\u91ad",
"ca": "\u64e6\u5693\u7924",
"cai": "\u731c\u88c1\u6750\u624d\u8d22\u776c\u8e29\u91c7\u5f69\u83dc\u8521",
"can": "\u9910\u53c2\u8695\u6b8b\u60ed\u60e8\u707f\u9a96\u74a8\u7cb2\u9eea",
"cang": "\u82cd\u8231\u4ed3\u6ca7\u85cf\u4f27",
"cao": "\u64cd\u7cd9\u69fd\u66f9\u8349\u8279\u5608\u6f15\u87ac\u825a",
"ce": "\u5395\u7b56\u4fa7\u518c\u6d4b\u5202\u5e3b\u607b",
"ceng": "\u5c42\u8e6d\u564c",
"cha": "\u63d2\u53c9\u832c\u8336\u67e5\u78b4\u643d\u5bdf\u5c94\u5dee\u8be7\u7339\u9987\u6c4a\u59f9\u6748\u6942\u69ce\u6aab\u9497\u9538\u9572\u8869",
"chai": "\u62c6\u67f4\u8c7a\u4faa\u8308\u7625\u867f\u9f87",
"chan": "\u6400\u63ba\u8749\u998b\u8c17\u7f20\u94f2\u4ea7\u9610\u98a4\u5181\u8c04\u8c36\u8487\u5edb\u5fcf\u6f7a\u6fb6\u5b71\u7fbc\u5a75\u5b17\u9aa3\u89c7\u7985\u9561\u88e3\u87fe\u8e94",
"chang": "\u660c\u7316\u573a\u5c1d\u5e38\u957f\u507f\u80a0\u5382\u655e\u7545\u5531\u5021\u4f25\u9b2f\u82cc\u83d6\u5f9c\u6005\u60dd\u960a\u5a3c\u5ae6\u6636\u6c05\u9cb3",
"chao": "\u8d85\u6284\u949e\u671d\u5632\u6f6e\u5de2\u5435\u7092\u600a\u7ec9\u6641\u8016",
"che": "\u8f66\u626f\u64a4\u63a3\u5f7b\u6f88\u577c\u5c6e\u7817",
"chen": "\u90f4\u81e3\u8fb0\u5c18\u6668\u5ff1\u6c89\u9648\u8d81\u886c\u79f0\u8c0c\u62bb\u55d4\u5bb8\u741b\u6987\u809c\u80c2\u789c\u9f80",
"cheng": "\u6491\u57ce\u6a59\u6210\u5448\u4e58\u7a0b\u60e9\u6f84\u8bda\u627f\u901e\u9a8b\u79e4\u57d5\u5d4a\u5fb5\u6d48\u67a8\u67fd\u6a18\u665f\u584d\u77a0\u94d6\u88ce\u86cf\u9172",
"chi": "\u5403\u75f4\u6301\u5319\u6c60\u8fdf\u5f1b\u9a70\u803b\u9f7f\u4f88\u5c3a\u8d64\u7fc5\u65a5\u70bd\u50ba\u5880\u82aa\u830c\u640b\u53f1\u54e7\u557b\u55e4\u5f73\u996c\u6cb2\u5ab8\u6555\u80dd\u7719\u7735\u9e31\u761b\u892b\u86a9\u87ad\u7b1e\u7bea\u8c49\u8e05\u8e1f\u9b51",
"chong": "\u5145\u51b2\u866b\u5d07\u5ba0\u833a\u5fe1\u61a7\u94f3\u825f",
"chou": "\u62bd\u916c\u7574\u8e0c\u7a20\u6101\u7b79\u4ec7\u7ef8\u7785\u4e11\u4fe6\u5733\u5e31\u60c6\u6eb4\u59af\u7633\u96e0\u9c8b",
"chu": "\u81ed\u521d\u51fa\u6a71\u53a8\u8e87\u9504\u96cf\u6ec1\u9664\u695a\u7840\u50a8\u77d7\u6410\u89e6\u5904\u4e8d\u520d\u61b7\u7ecc\u6775\u696e\u6a17\u870d\u8e70\u9edc",
"chuan": "\u63e3\u5ddd\u7a7f\u693d\u4f20\u8239\u5598\u4e32\u63be\u821b\u60f4\u9044\u5ddb\u6c1a\u948f\u9569\u8221",
"chuang": "\u75ae\u7a97\u5e62\u5e8a\u95ef\u521b\u6006",
"chui": "\u5439\u708a\u6376\u9524\u5782\u9672\u68f0\u69cc",
"chun": "\u6625\u693f\u9187\u5507\u6df3\u7eaf\u8822\u4fc3\u83bc\u6c8c\u80ab\u6710\u9e51\u877d",
"chuo": "\u6233\u7ef0\u851f\u8fb6\u8f8d\u955e\u8e14\u9f8a",
"ci": "\u75b5\u8328\u78c1\u96cc\u8f9e\u6148\u74f7\u8bcd\u6b64\u523a\u8d50\u6b21\u8360\u5472\u5d6f\u9e5a\u8785\u7ccd\u8d91",
"cong": "\u806a\u8471\u56f1\u5306\u4ece\u4e1b\u506c\u82c1\u6dd9\u9aa2\u742e\u7481\u679e",
"cu": "\u51d1\u7c97\u918b\u7c07\u731d\u6b82\u8e59",
"cuan": "\u8e7f\u7be1\u7a9c\u6c46\u64ba\u6615\u7228",
"cui": "\u6467\u5d14\u50ac\u8106\u7601\u7cb9\u6dec\u7fe0\u8403\u60b4\u7480\u69b1\u96b9",
"cun": "\u6751\u5b58\u5bf8\u78cb\u5fd6\u76b4",
"cuo": "\u64ae\u6413\u63aa\u632b\u9519\u539d\u811e\u9509\u77ec\u75e4\u9e7e\u8e49\u8e9c",
"da": "\u642d\u8fbe\u7b54\u7629\u6253\u5927\u8037\u54d2\u55d2\u601b\u59b2\u75b8\u8921\u7b2a\u977c\u9791",
"dai": "\u5446\u6b79\u50a3\u6234\u5e26\u6b86\u4ee3\u8d37\u888b\u5f85\u902e\u6020\u57ed\u7519\u5454\u5cb1\u8fe8\u902f\u9a80\u7ed0\u73b3\u9edb",
"dan": "\u803d\u62c5\u4e39\u5355\u90f8\u63b8\u80c6\u65e6\u6c2e\u4f46\u60ee\u6de1\u8bde\u5f39\u86cb\u4ebb\u510b\u5369\u840f\u5556\u6fb9\u6a90\u6b9a\u8d55\u7708\u7605\u8043\u7baa",
"dang": "\u5f53\u6321\u515a\u8361\u6863\u8c20\u51fc\u83ea\u5b95\u7800\u94db\u88c6",
"dao": "\u5200\u6363\u8e48\u5012\u5c9b\u7977\u5bfc\u5230\u7a3b\u60bc\u9053\u76d7\u53e8\u5541\u5fc9\u6d2e\u6c18\u7118\u5fd1\u7e9b",
"de": "\u5fb7\u5f97\u7684\u951d",
"deng": "\u8e6c\u706f\u767b\u7b49\u77aa\u51f3\u9093\u5654\u5d9d\u6225\u78f4\u956b\u7c26",
"di": "\u5824\u4f4e\u6ef4\u8fea\u654c\u7b1b\u72c4\u6da4\u7fdf\u5ae1\u62b5\u5e95\u5730\u8482\u7b2c\u5e1d\u5f1f\u9012\u7f14\u6c10\u7c74\u8bcb\u8c1b\u90b8\u577b\u839c\u837b\u5600\u5a23\u67e2\u68e3\u89cc\u7825\u78b2\u7747\u955d\u7f9d\u9ab6",
"dian": "\u98a0\u6382\u6ec7\u7898\u70b9\u5178\u975b\u57ab\u7535\u4f43\u7538\u5e97\u60e6\u5960\u6dc0\u6bbf\u4e36\u963d\u576b\u57dd\u5dc5\u73b7\u765c\u766b\u7c1f\u8e2e",
"diao": "\u7889\u53fc\u96d5\u51cb\u5201\u6389\u540a\u9493\u8c03\u8f7a\u94de\u8729\u7c9c\u8c82",
"die": "\u8dcc\u7239\u789f\u8776\u8fed\u8c0d\u53e0\u4f5a\u57a4\u581e\u63f2\u558b\u6e2b\u8f76\u7252\u74de\u8936\u800b\u8e40\u9cbd\u9cce",
"ding": "\u4e01\u76ef\u53ee\u9489\u9876\u9f0e\u952d\u5b9a\u8ba2\u4e22\u4ec3\u5576\u738e\u815a\u7887\u753a\u94e4\u7594\u8035\u914a",
"dong": "\u4e1c\u51ac\u8463\u61c2\u52a8\u680b\u4f97\u606b\u51bb\u6d1e\u578c\u549a\u5cbd\u5cd2\u5902\u6c21\u80e8\u80f4\u7850\u9e2b",
"dou": "\u515c\u6296\u6597\u9661\u8c46\u9017\u75d8\u8538\u94ad\u7aa6\u7aac\u86aa\u7bfc\u9161",
"du": "\u90fd\u7763\u6bd2\u728a\u72ec\u8bfb\u5835\u7779\u8d4c\u675c\u9540\u809a\u5ea6\u6e21\u5992\u828f\u561f\u6e0e\u691f\u6a50\u724d\u8839\u7b03\u9ad1\u9ee9",
"duan": "\u7aef\u77ed\u953b\u6bb5\u65ad\u7f0e\u5f56\u6934\u7145\u7c16",
"dui": "\u5806\u5151\u961f\u5bf9\u603c\u619d\u7893",
"dun": "\u58a9\u5428\u8e72\u6566\u987f\u56e4\u949d\u76fe\u9041\u7096\u7818\u7905\u76f9\u9566\u8db8",
"duo": "\u6387\u54c6\u591a\u593a\u579b\u8eb2\u6735\u8dfa\u8235\u5241\u60f0\u5815\u5484\u54da\u7f0d\u67c1\u94ce\u88f0\u8e31",
"e": "\u86fe\u5ce8\u9e45\u4fc4\u989d\u8bb9\u5a25\u6076\u5384\u627c\u904f\u9102\u997f\u5669\u8c14\u57a9\u57ad\u82ca\u83aa\u843c\u5443\u6115\u5c59\u5a40\u8f6d\u66f7\u816d\u786a\u9507\u9537\u9e57\u989a\u9cc4",
"en": "\u6069\u84bd\u6441\u5514\u55ef",
"er": "\u800c\u513f\u8033\u5c14\u9975\u6d31\u4e8c\u8d30\u8fe9\u73e5\u94d2\u9e38\u9c95",
"fa": "\u53d1\u7f5a\u7b4f\u4f10\u4e4f\u9600\u6cd5\u73d0\u57a1\u781d",
"fan": "\u85e9\u5e06\u756a\u7ffb\u6a0a\u77fe\u9492\u7e41\u51e1\u70e6\u53cd\u8fd4\u8303\u8d29\u72af\u996d\u6cdb\u8629\u5e61\u72ad\u68b5\u6535\u71d4\u7548\u8e6f",
"fang": "\u574a\u82b3\u65b9\u80aa\u623f\u9632\u59a8\u4eff\u8bbf\u7eba\u653e\u531a\u90a1\u5f77\u94ab\u822b\u9c82",
"fei": "\u83f2\u975e\u5561\u98de\u80a5\u532a\u8bfd\u5420\u80ba\u5e9f\u6cb8\u8d39\u82be\u72d2\u60b1\u6ddd\u5983\u7ecb\u7eef\u69a7\u8153\u6590\u6249\u7953\u7829\u9544\u75f1\u871a\u7bda\u7fe1\u970f\u9cb1",
"fen": "\u82ac\u915a\u5429\u6c1b\u5206\u7eb7\u575f\u711a\u6c7e\u7c89\u594b\u4efd\u5fff\u6124\u7caa\u507e\u7035\u68fc\u610d\u9cbc\u9f22",
"feng": "\u4e30\u5c01\u67ab\u8702\u5cf0\u950b\u98ce\u75af\u70fd\u9022\u51af\u7f1d\u8bbd\u5949\u51e4\u4ff8\u9146\u8451\u6ca3\u781c",
"fu": "\u4f5b\u5426\u592b\u6577\u80a4\u5b75\u6276\u62c2\u8f90\u5e45\u6c1f\u7b26\u4f0f\u4fd8\u670d\u6d6e\u6daa\u798f\u88b1\u5f17\u752b\u629a\u8f85\u4fef\u91dc\u65a7\u812f\u8151\u5e9c\u8150\u8d74\u526f\u8986\u8d4b\u590d\u5085\u4ed8\u961c\u7236\u8179\u8d1f\u5bcc\u8ba3\u9644\u5987\u7f1a\u5490\u5310\u51eb\u90db\u8299\u82fb\u832f\u83a9\u83d4\u544b\u5e5e\u6ecf\u8274\u5b5a\u9a78\u7ec2\u6874\u8d59\u9efb\u9efc\u7f58\u7a03\u99a5\u864d\u86a8\u8709\u8760\u876e\u9eb8\u8dba\u8dd7\u9cc6",
"ga": "\u5676\u560e\u86e4\u5c2c\u5477\u5c15\u5c1c\u65ee\u9486",
"gai": "\u8be5\u6539\u6982\u9499\u76d6\u6e89\u4e10\u9654\u5793\u6224\u8d45\u80f2",
"gan": "\u5e72\u7518\u6746\u67d1\u7aff\u809d\u8d76\u611f\u79c6\u6562\u8d63\u5769\u82f7\u5c34\u64c0\u6cd4\u6de6\u6f89\u7ec0\u6a44\u65f0\u77f8\u75b3\u9150",
"gang": "\u5188\u521a\u94a2\u7f38\u809b\u7eb2\u5c97\u6e2f\u6206\u7f61\u9883\u7b7b",
"gong": "\u6760\u5de5\u653b\u529f\u606d\u9f9a\u4f9b\u8eac\u516c\u5bab\u5f13\u5de9\u6c5e\u62f1\u8d21\u5171\u857b\u5efe\u54a3\u73d9\u80b1\u86a3\u86e9\u89e5",
"gao": "\u7bd9\u768b\u9ad8\u818f\u7f94\u7cd5\u641e\u9550\u7a3f\u544a\u777e\u8bf0\u90dc\u84bf\u85c1\u7f1f\u69d4\u69c1\u6772\u9506",
"ge": "\u54e5\u6b4c\u6401\u6208\u9e3d\u80f3\u7599\u5272\u9769\u845b\u683c\u9601\u9694\u94ec\u4e2a\u5404\u9b32\u4ee1\u54ff\u5865\u55dd\u7ea5\u643f\u8188\u784c\u94ea\u9549\u88bc\u988c\u867c\u8238\u9abc\u9ac2",
"gei": "\u7ed9",
"gen": "\u6839\u8ddf\u4e98\u831b\u54cf\u826e",
"geng": "\u8015\u66f4\u5e9a\u7fb9\u57c2\u803f\u6897\u54fd\u8d53\u9ca0",
"gou": "\u94a9\u52fe\u6c9f\u82df\u72d7\u57a2\u6784\u8d2d\u591f\u4f5d\u8bdf\u5ca3\u9058\u5abe\u7f11\u89cf\u5f40\u9e32\u7b31\u7bdd\u97b2",
"gu": "\u8f9c\u83c7\u5495\u7b8d\u4f30\u6cbd\u5b64\u59d1\u9f13\u53e4\u86ca\u9aa8\u8c37\u80a1\u6545\u987e\u56fa\u96c7\u560f\u8bc2\u83f0\u54cc\u5d2e\u6c69\u688f\u8f71\u726f\u727f\u80cd\u81cc\u6bc2\u77bd\u7f5f\u94b4\u9522\u74e0\u9e2a\u9e44\u75fc\u86c4\u9164\u89da\u9cb4\u9ab0\u9e58",
"gua": "\u522e\u74dc\u5250\u5be1\u6302\u8902\u5366\u8bd6\u5471\u681d\u9e39",
"guai": "\u4e56\u62d0\u602a\u54d9",
"guan": "\u68fa\u5173\u5b98\u51a0\u89c2\u7ba1\u9986\u7f50\u60ef\u704c\u8d2f\u500c\u839e\u63bc\u6dab\u76e5\u9e73\u9ccf",
"guang": "\u5149\u5e7f\u901b\u72b7\u6844\u80f1\u7592",
"gui": "\u7470\u89c4\u572d\u7845\u5f52\u9f9f\u95fa\u8f68\u9b3c\u8be1\u7678\u6842\u67dc\u8dea\u8d35\u523d\u5326\u523f\u5e8b\u5b84\u59ab\u6867\u7085\u6677\u7688\u7c0b\u9c91\u9cdc",
"gun": "\u8f8a\u6eda\u68cd\u4e28\u886e\u7ef2\u78d9\u9ca7",
"guo": "\u9505\u90ed\u56fd\u679c\u88f9\u8fc7\u9998\u8803\u57da\u63b4\u5459\u56d7\u5e3c\u5d1e\u7313\u6901\u8662\u951e\u8052\u872e\u873e\u8748",
"ha": "\u54c8",
"hai": "\u9ab8\u5b69\u6d77\u6c26\u4ea5\u5bb3\u9a87\u54b4\u55e8\u988f\u91a2",
"han": "\u9163\u61a8\u90af\u97e9\u542b\u6db5\u5bd2\u51fd\u558a\u7f55\u7ff0\u64bc\u634d\u65f1\u61be\u608d\u710a\u6c57\u6c49\u9097\u83e1\u6496\u961a\u701a\u6657\u7113\u9894\u86b6\u9f3e",
"hen": "\u592f\u75d5\u5f88\u72e0\u6068",
"hang": "\u676d\u822a\u6c86\u7ed7\u73e9\u6841",
"hao": "\u58d5\u568e\u8c6a\u6beb\u90dd\u597d\u8017\u53f7\u6d69\u8585\u55e5\u5686\u6fe0\u704f\u660a\u7693\u98a2\u869d",
"he": "\u5475\u559d\u8377\u83cf\u6838\u79be\u548c\u4f55\u5408\u76d2\u8c89\u9602\u6cb3\u6db8\u8d6b\u8910\u9e64\u8d3a\u8bc3\u52be\u58d1\u85ff\u55d1\u55ec\u9616\u76cd\u86b5\u7fee",
"hei": "\u563f\u9ed1",
"heng": "\u54fc\u4ea8\u6a2a\u8861\u6052\u8a07\u8605",
"hong": "\u8f70\u54c4\u70d8\u8679\u9e3f\u6d2a\u5b8f\u5f18\u7ea2\u9ec9\u8ba7\u836d\u85a8\u95f3\u6cd3",
"hou": "\u5589\u4faf\u7334\u543c\u539a\u5019\u540e\u5820\u5f8c\u9005\u760a\u7bcc\u7cc7\u9c8e\u9aba",
"hu": "\u547c\u4e4e\u5ffd\u745a\u58f6\u846b\u80e1\u8774\u72d0\u7cca\u6e56\u5f27\u864e\u552c\u62a4\u4e92\u6caa\u6237\u51b1\u553f\u56eb\u5cb5\u7322\u6019\u60da\u6d52\u6ef9\u7425\u69f2\u8f77\u89f3\u70c0\u7173\u623d\u6248\u795c\u9e55\u9e71\u7b0f\u9190\u659b",
"hua": "\u82b1\u54d7\u534e\u733e\u6ed1\u753b\u5212\u5316\u8bdd\u5290\u6d4d\u9a85\u6866\u94e7\u7a1e",
"huai": "\u69d0\u5f8a\u6000\u6dee\u574f\u8fd8\u8e1d",
"huan": "\u6b22\u73af\u6853\u7f13\u6362\u60a3\u5524\u75ea\u8c62\u7115\u6da3\u5ba6\u5e7b\u90c7\u5942\u57b8\u64d0\u571c\u6d39\u6d63\u6f36\u5bf0\u902d\u7f33\u953e\u9ca9\u9b1f",
"huang": "\u8352\u614c\u9ec4\u78fa\u8757\u7c27\u7687\u51f0\u60f6\u714c\u6643\u5e4c\u604d\u8c0e\u968d\u5fa8\u6e5f\u6f62\u9051\u749c\u8093\u7640\u87e5\u7bc1\u9cc7",
"hui": "\u7070\u6325\u8f89\u5fbd\u6062\u86d4\u56de\u6bc1\u6094\u6167\u5349\u60e0\u6666\u8d3f\u79fd\u4f1a\u70e9\u6c47\u8bb3\u8bf2\u7ed8\u8bd9\u8334\u835f\u8559\u54d5\u5599\u96b3\u6d04\u5f57\u7f0b\u73f2\u6656\u605a\u867a\u87ea\u9ebe",
"hun": "\u8364\u660f\u5a5a\u9b42\u6d51\u6df7\u8be8\u9984\u960d\u6eb7\u7f17",
"huo": "\u8c41\u6d3b\u4f19\u706b\u83b7\u6216\u60d1\u970d\u8d27\u7978\u6509\u56af\u5925\u94ac\u952a\u956c\u8020\u8816",
"ji": "\u51fb\u573e\u57fa\u673a\u7578\u7a3d\u79ef\u7b95\u808c\u9965\u8ff9\u6fc0\u8ba5\u9e21\u59ec\u7ee9\u7f09\u5409\u6781\u68d8\u8f91\u7c4d\u96c6\u53ca\u6025\u75be\u6c72\u5373\u5ac9\u7ea7\u6324\u51e0\u810a\u5df1\u84df\u6280\u5180\u5b63\u4f0e\u796d\u5242\u60b8\u6d4e\u5bc4\u5bc2\u8ba1\u8bb0\u65e2\u5fcc\u9645\u5993\u7ee7\u7eaa\u5c45\u4e0c\u4e69\u525e\u4f76\u4f74\u8114\u58bc\u82a8\u82b0\u8401\u84ba\u857a\u638e\u53fd\u54ad\u54dc\u5527\u5c8c\u5d74\u6d0e\u5f50\u5c50\u9aa5\u757f\u7391\u696b\u6b9b\u621f\u6222\u8d4d\u89ca\u7284\u9f51\u77f6\u7f81\u5d47\u7a37\u7620\u7635\u866e\u7b08\u7b04\u66a8\u8dfb\u8dfd\u9701\u9c9a\u9cab\u9afb\u9e82",
"jia": "\u5609\u67b7\u5939\u4f73\u5bb6\u52a0\u835a\u988a\u8d3e\u7532\u94be\u5047\u7a3c\u4ef7\u67b6\u9a7e\u5ac1\u4f3d\u90cf\u62ee\u5cac\u6d43\u8fe6\u73c8\u621b\u80db\u605d\u94d7\u9553\u75c2\u86f1\u7b33\u8888\u8dcf",
"jian": "\u6b7c\u76d1\u575a\u5c16\u7b3a\u95f4\u714e\u517c\u80a9\u8270\u5978\u7f04\u8327\u68c0\u67ec\u78b1\u7877\u62e3\u6361\u7b80\u4fed\u526a\u51cf\u8350\u69db\u9274\u8df5\u8d31\u89c1\u952e\u7bad\u4ef6\u5065\u8230\u5251\u996f\u6e10\u6e85\u6da7\u5efa\u50ed\u8c0f\u8c2b\u83c5\u84b9\u641b\u56dd\u6e54\u8e47\u8b07\u7f23\u67a7\u67d9\u6957\u620b\u622c\u726e\u728d\u6bfd\u8171\u7751\u950f\u9e63\u88e5\u7b15\u7bb4\u7fe6\u8dbc\u8e3a\u9ca3\u97af",
"jiang": "\u50f5\u59dc\u5c06\u6d46\u6c5f\u7586\u848b\u6868\u5956\u8bb2\u5320\u9171\u964d\u8333\u6d1a\u7edb\u7f30\u729f\u7913\u8029\u7ce8\u8c47",
"jiao": "\u8549\u6912\u7901\u7126\u80f6\u4ea4\u90ca\u6d47\u9a84\u5a07\u56bc\u6405\u94f0\u77eb\u4fa5\u811a\u72e1\u89d2\u997a\u7f34\u7ede\u527f\u6559\u9175\u8f7f\u8f83\u53eb\u4f7c\u50ec\u832d\u6322\u564d\u5ce4\u5fbc\u59e3\u7e9f\u656b\u768e\u9e6a\u86df\u91ae\u8de4\u9c9b",
"jie": "\u7a96\u63ed\u63a5\u7686\u79f8\u8857\u9636\u622a\u52ab\u8282\u6854\u6770\u6377\u776b\u7aed\u6d01\u7ed3\u89e3\u59d0\u6212\u85c9\u82a5\u754c\u501f\u4ecb\u75a5\u8beb\u5c4a\u5048\u8ba6\u8bd8\u5588\u55df\u736c\u5a55\u5b51\u6840\u7352\u78a3\u9534\u7596\u88b7\u9889\u86a7\u7faf\u9c92\u9ab1\u9aeb",
"jin": "\u5dfe\u7b4b\u65a4\u91d1\u4eca\u6d25\u895f\u7d27\u9526\u4ec5\u8c28\u8fdb\u9773\u664b\u7981\u8fd1\u70ec\u6d78\u5c3d\u537a\u8369\u5807\u5664\u9991\u5ed1\u5997\u7f19\u747e\u69ff\u8d46\u89d0\u9485\u9513\u887f\u77dc",
"jing": "\u52b2\u8346\u5162\u830e\u775b\u6676\u9cb8\u4eac\u60ca\u7cbe\u7cb3\u7ecf\u4e95\u8b66\u666f\u9888\u9759\u5883\u656c\u955c\u5f84\u75c9\u9756\u7adf\u7ade\u51c0\u522d\u5106\u9631\u83c1\u734d\u61ac\u6cfe\u8ff3\u5f2a\u5a67\u80bc\u80eb\u8148\u65cc",
"jiong": "\u70af\u7a98\u5182\u8fe5\u6243",
"jiu": "\u63ea\u7a76\u7ea0\u7396\u97ed\u4e45\u7078\u4e5d\u9152\u53a9\u6551\u65e7\u81fc\u8205\u548e\u5c31\u759a\u50e6\u557e\u9604\u67e9\u6855\u9e6b\u8d73\u9b0f",
"ju": "\u97a0\u62d8\u72d9\u75bd\u9a79\u83ca\u5c40\u5480\u77e9\u4e3e\u6cae\u805a\u62d2\u636e\u5de8\u5177\u8ddd\u8e1e\u952f\u4ff1\u53e5\u60e7\u70ac\u5267\u5028\u8bb5\u82e3\u82f4\u8392\u63ac\u907d\u5c66\u741a\u67b8\u6910\u6998\u6989\u6a58\u728b\u98d3\u949c\u9514\u7aad\u88fe\u8d84\u91b5\u8e3d\u9f83\u96ce\u97ab",
"juan": "\u6350\u9e43\u5a1f\u5026\u7737\u5377\u7ee2\u9104\u72f7\u6d93\u684a\u8832\u9529\u954c\u96bd",
"jue": "\u6485\u652b\u6289\u6398\u5014\u7235\u89c9\u51b3\u8bc0\u7edd\u53a5\u5282\u8c32\u77cd\u8568\u5658\u5d1b\u7357\u5b53\u73cf\u6877\u6a5b\u721d\u9562\u8e76\u89d6",
"jun": "\u5747\u83cc\u94a7\u519b\u541b\u5cfb\u4fca\u7ae3\u6d5a\u90e1\u9a8f\u6343\u72fb\u76b2\u7b60\u9e87",
"ka": "\u5580\u5496\u5361\u4f67\u5494\u80e9",
"ke": "\u54af\u5777\u82db\u67ef\u68f5\u78d5\u9897\u79d1\u58f3\u54b3\u53ef\u6e34\u514b\u523b\u5ba2\u8bfe\u5ca2\u606a\u6e98\u9a92\u7f02\u73c2\u8f72\u6c2a\u778c\u94b6\u75b4\u7aa0\u874c\u9ac1",
"kai": "\u5f00\u63e9\u6977\u51ef\u6168\u5240\u57b2\u8488\u5ffe\u607a\u94e0\u950e",
"kan": "\u520a\u582a\u52d8\u574e\u780d\u770b\u4f83\u51f5\u83b0\u83b6\u6221\u9f9b\u77b0",
"kang": "\u5eb7\u6177\u7ce0\u625b\u6297\u4ea2\u7095\u5751\u4f09\u95f6\u94aa",
"kao": "\u8003\u62f7\u70e4\u9760\u5c3b\u6832\u7292\u94d0",
"ken": "\u80af\u5543\u57a6\u6073\u57a0\u88c9\u9880",
"keng": "\u542d\u5fd0\u94ff",
"kong": "\u7a7a\u6050\u5b54\u63a7\u5025\u5d06\u7b9c",
"kou": "\u62a0\u53e3\u6263\u5bc7\u82a4\u853b\u53e9\u770d\u7b58",
"ku": "\u67af\u54ed\u7a9f\u82e6\u9177\u5e93\u88e4\u5233\u5800\u55be\u7ed4\u9ab7",
"kua": "\u5938\u57ae\u630e\u8de8\u80ef\u4f89",
"kuai": "\u5757\u7b77\u4fa9\u5feb\u84af\u90d0\u8489\u72ef\u810d",
"kuan": "\u5bbd\u6b3e\u9acb",
"kuang": "\u5321\u7b50\u72c2\u6846\u77ff\u7736\u65f7\u51b5\u8bd3\u8bf3\u909d\u5739\u593c\u54d0\u7ea9\u8d36",
"kui": "\u4e8f\u76d4\u5cbf\u7aa5\u8475\u594e\u9b41\u5080\u9988\u6127\u6e83\u9997\u532e\u5914\u9697\u63c6\u55b9\u559f\u609d\u6126\u9615\u9035\u668c\u777d\u8069\u8770\u7bd1\u81fe\u8dec",
"kun": "\u5764\u6606\u6346\u56f0\u6083\u9603\u7428\u951f\u918c\u9cb2\u9ae1",
"kuo": "\u62ec\u6269\u5ed3\u9614\u86de",
"la": "\u5783\u62c9\u5587\u8721\u814a\u8fa3\u5566\u524c\u647a\u908b\u65ef\u782c\u760c",
"lai": "\u83b1\u6765\u8d56\u5d03\u5f95\u6d9e\u6fd1\u8d49\u7750\u94fc\u765e\u7c41",
"lan": "\u84dd\u5a6a\u680f\u62e6\u7bee\u9611\u5170\u6f9c\u8c30\u63fd\u89c8\u61d2\u7f06\u70c2\u6ee5\u5549\u5c9a\u61d4\u6f24\u6984\u6593\u7f71\u9567\u8934",
"lang": "\u7405\u6994\u72fc\u5eca\u90ce\u6717\u6d6a\u83a8\u8497\u5577\u9606\u9512\u7a02\u8782",
"lao": "\u635e\u52b3\u7262\u8001\u4f6c\u59e5\u916a\u70d9\u6d9d\u5520\u5d02\u6833\u94d1\u94f9\u75e8\u91aa",
"le": "\u52d2\u4e50\u808b\u4ec2\u53fb\u561e\u6cd0\u9cd3",
"lei": "\u96f7\u956d\u857e\u78ca\u7d2f\u5121\u5792\u64c2\u7c7b\u6cea\u7fb8\u8bd4\u837d\u54a7\u6f2f\u5ad8\u7f27\u6a91\u8012\u9179",
"ling": "\u68f1\u51b7\u62ce\u73b2\u83f1\u96f6\u9f84\u94c3\u4f36\u7f9a\u51cc\u7075\u9675\u5cad\u9886\u53e6\u4ee4\u9143\u5844\u82d3\u5464\u56f9\u6ce0\u7eeb\u67c3\u68c2\u74f4\u8046\u86c9\u7fce\u9cae",
"leng": "\u695e\u6123",
"li": "\u5398\u68a8\u7281\u9ece\u7bf1\u72f8\u79bb\u6f13\u7406\u674e\u91cc\u9ca4\u793c\u8389\u8354\u540f\u6817\u4e3d\u5389\u52b1\u783e\u5386\u5229\u5088\u4f8b\u4fd0\u75e2\u7acb\u7c92\u6ca5\u96b6\u529b\u7483\u54e9\u4fea\u4fda\u90e6\u575c\u82c8\u8385\u84e0\u85dc\u6369\u5456\u5533\u55b1\u7301\u6ea7\u6fa7\u9026\u5a0c\u5ae0\u9a8a\u7f21\u73de\u67a5\u680e\u8f79\u623e\u783a\u8a48\u7f79\u9502\u9e42\u75a0\u75ac\u86ce\u870a\u8821\u7b20\u7be5\u7c9d\u91b4\u8dde\u96f3\u9ca1\u9ce2\u9ee7",
"lian": "\u4fe9\u8054\u83b2\u8fde\u9570\u5ec9\u601c\u6d9f\u5e18\u655b\u8138\u94fe\u604b\u70bc\u7ec3\u631b\u8539\u5941\u6f4b\u6fc2\u5a08\u740f\u695d\u6b93\u81c1\u81a6\u88e2\u880a\u9ca2",
"liang": "\u7cae\u51c9\u6881\u7cb1\u826f\u4e24\u8f86\u91cf\u667e\u4eae\u8c05\u589a\u690b\u8e09\u9753\u9b49",
"liao": "\u64a9\u804a\u50da\u7597\u71ce\u5be5\u8fbd\u6f66\u4e86\u6482\u9563\u5ed6\u6599\u84fc\u5c25\u5639\u7360\u5bee\u7f2d\u948c\u9e69\u8022",
"lie": "\u5217\u88c2\u70c8\u52a3\u730e\u51bd\u57d2\u6d0c\u8d94\u8e90\u9b23",
"lin": "\u7433\u6797\u78f7\u9716\u4e34\u90bb\u9cde\u6dcb\u51db\u8d41\u541d\u853a\u5d99\u5eea\u9074\u6aa9\u8f9a\u77b5\u7cbc\u8e8f\u9e9f",
"liu": "\u6e9c\u7409\u69b4\u786b\u998f\u7559\u5218\u7624\u6d41\u67f3\u516d\u62a1\u507b\u848c\u6cd6\u6d4f\u905b\u9a9d\u7efa\u65d2\u7198\u950d\u954f\u9e68\u938f",
"long": "\u9f99\u804b\u5499\u7b3c\u7abf\u9686\u5784\u62e2\u9647\u5f04\u5785\u830f\u6cf7\u73d1\u680a\u80e7\u783b\u7643",
"lou": "\u697c\u5a04\u6402\u7bd3\u6f0f\u964b\u55bd\u5d5d\u9542\u7618\u8027\u877c\u9ac5",
"lu": "\u82a6\u5362\u9885\u5e90\u7089\u63b3\u5364\u864f\u9c81\u9e93\u788c\u9732\u8def\u8d42\u9e7f\u6f5e\u7984\u5f55\u9646\u622e\u5786\u6445\u64b8\u565c\u6cf8\u6e0c\u6f09\u7490\u680c\u6a79\u8f73\u8f82\u8f98\u6c07\u80ea\u9565\u9e2c\u9e6d\u7c0f\u823b\u9c88",
"lv": "\u9a74\u5415\u94dd\u4fa3\u65c5\u5c65\u5c61\u7f15\u8651\u6c2f\u5f8b\u7387\u6ee4\u7eff\u634b\u95fe\u6988\u8182\u7a06\u891b",
"luan": "\u5ce6\u5b6a\u6ee6\u5375\u4e71\u683e\u9e3e\u92ae",
"lue": "\u63a0\u7565\u950a",
"lun": "\u8f6e\u4f26\u4ed1\u6ca6\u7eb6\u8bba\u56f5",
"luo": "\u841d\u87ba\u7f57\u903b\u9523\u7ba9\u9aa1\u88f8\u843d\u6d1b\u9a86\u7edc\u502e\u8366\u645e\u7321\u6cfa\u6924\u8136\u9559\u7630\u96d2",
"ma": "\u5988\u9ebb\u739b\u7801\u8682\u9a6c\u9a82\u561b\u5417\u551b\u72b8\u5b37\u6769\u9ebd",
"mai": "\u57cb\u4e70\u9ea6\u5356\u8fc8\u8109\u52a2\u836c\u54aa\u973e",
"man": "\u7792\u9992\u86ee\u6ee1\u8513\u66fc\u6162\u6f2b\u8c29\u5881\u5e54\u7f26\u71b3\u9558\u989f\u87a8\u9cd7\u9794",
"mang": "\u8292\u832b\u76f2\u5fd9\u83bd\u9099\u6f2d\u6726\u786d\u87d2",
"meng": "\u6c13\u840c\u8499\u6aac\u76df\u9530\u731b\u68a6\u5b5f\u52d0\u750d\u77a2\u61f5\u791e\u867b\u8722\u8813\u824b\u8268\u9efe",
"miao": "\u732b\u82d7\u63cf\u7784\u85d0\u79d2\u6e3a\u5e99\u5999\u55b5\u9088\u7f08\u7f2a\u676a\u6dfc\u7707\u9e4b\u8731",
"mao": "\u8305\u951a\u6bdb\u77db\u94c6\u536f\u8302\u5192\u5e3d\u8c8c\u8d38\u4f94\u88a4\u52d6\u8306\u5cc1\u7441\u6634\u7266\u8004\u65c4\u61cb\u7780\u86d1\u8765\u87ca\u9ae6",
"me": "\u4e48",
"mei": "\u73ab\u679a\u6885\u9176\u9709\u7164\u6ca1\u7709\u5a92\u9541\u6bcf\u7f8e\u6627\u5bd0\u59b9\u5a9a\u5776\u8393\u5d4b\u7338\u6d7c\u6e44\u6963\u9545\u9e5b\u8882\u9b45",
"men": "\u95e8\u95f7\u4eec\u626a\u739f\u7116\u61d1\u9494",
"mi": "\u772f\u919a\u9761\u7cdc\u8ff7\u8c1c\u5f25\u7c73\u79d8\u89c5\u6ccc\u871c\u5bc6\u5e42\u8288\u5196\u8c27\u863c\u5627\u7315\u736f\u6c68\u5b93\u5f2d\u8112\u6549\u7cf8\u7e3b\u9e8b",
"mian": "\u68c9\u7720\u7ef5\u5195\u514d\u52c9\u5a29\u7f05\u9762\u6c94\u6e4e\u817c\u7704",
"mie": "\u8511\u706d\u54a9\u881b\u7bfe",
"min": "\u6c11\u62bf\u76bf\u654f\u60af\u95fd\u82e0\u5cb7\u95f5\u6cef\u73c9",
"ming": "\u660e\u879f\u9e23\u94ed\u540d\u547d\u51a5\u8317\u6e9f\u669d\u7791\u9169",
"miu": "\u8c2c",
"mo": "\u6478\u6479\u8611\u6a21\u819c\u78e8\u6469\u9b54\u62b9\u672b\u83ab\u58a8\u9ed8\u6cab\u6f20\u5bde\u964c\u8c1f\u8309\u84e6\u998d\u5aeb\u9546\u79e3\u763c\u8031\u87c6\u8c8a\u8c98",
"mou": "\u8c0b\u725f\u67d0\u53b6\u54de\u5a7a\u7738\u936a",
"mu": "\u62c7\u7261\u4ea9\u59c6\u6bcd\u5893\u66ae\u5e55\u52df\u6155\u6728\u76ee\u7766\u7267\u7a46\u4eeb\u82dc\u5452\u6c90\u6bea\u94bc",
"na": "\u62ff\u54ea\u5450\u94a0\u90a3\u5a1c\u7eb3\u5185\u637a\u80ad\u954e\u8872\u7bac",
"nai": "\u6c16\u4e43\u5976\u8010\u5948\u9f10\u827f\u8418\u67f0",
"nan": "\u5357\u7537\u96be\u56ca\u5583\u56e1\u6960\u8169\u877b\u8d67",
"nao": "\u6320\u8111\u607c\u95f9\u5b6c\u57b4\u7331\u7459\u7847\u94d9\u86f2",
"ne": "\u6dd6\u5462\u8bb7",
"nei": "\u9981",
"nen": "\u5ae9\u80fd\u6798\u6041",
"ni": "\u59ae\u9713\u502a\u6ce5\u5c3c\u62df\u4f60\u533f\u817b\u9006\u6eba\u4f32\u576d\u730a\u6029\u6ee0\u6635\u65ce\u7962\u615d\u7768\u94cc\u9cb5",
"nian": "\u852b\u62c8\u5e74\u78be\u64b5\u637b\u5ff5\u5eff\u8f87\u9ecf\u9c87\u9cb6",
"niang": "\u5a18\u917f",
"niao": "\u9e1f\u5c3f\u8311\u5b32\u8132\u8885",
"nie": "\u634f\u8042\u5b7d\u556e\u954a\u954d\u6d85\u4e5c\u9667\u8616\u55eb\u8080\u989e\u81ec\u8e51",
"nin": "\u60a8\u67e0",
"ning": "\u72de\u51dd\u5b81\u62e7\u6cde\u4f5e\u84e5\u549b\u752f\u804d",
"niu": "\u725b\u626d\u94ae\u7ebd\u72c3\u5ff8\u599e\u86b4",
"nong": "\u8113\u6d53\u519c\u4fac",
"nu": "\u5974\u52aa\u6012\u5476\u5e11\u5f29\u80ec\u5b65\u9a7d",
"nv": "\u5973\u6067\u9495\u8844",
"nuan": "\u6696",
"nuenue": "\u8650",
"nue": "\u759f\u8c11",
"nuo": "\u632a\u61e6\u7cef\u8bfa\u50a9\u6426\u558f\u9518",
"ou": "\u54e6\u6b27\u9e25\u6bb4\u85d5\u5455\u5076\u6ca4\u6004\u74ef\u8026",
"pa": "\u556a\u8db4\u722c\u5e15\u6015\u7436\u8469\u7b62",
"pai": "\u62cd\u6392\u724c\u5f98\u6e43\u6d3e\u4ff3\u848e",
"pan": "\u6500\u6f58\u76d8\u78d0\u76fc\u7554\u5224\u53db\u723f\u6cee\u88a2\u897b\u87e0\u8e52",
"pang": "\u4e53\u5e9e\u65c1\u802a\u80d6\u6ec2\u9004",
"pao": "\u629b\u5486\u5228\u70ae\u888d\u8dd1\u6ce1\u530f\u72cd\u5e96\u812c\u75b1",
"pei": "\u5478\u80da\u57f9\u88f4\u8d54\u966a\u914d\u4f69\u6c9b\u638a\u8f94\u5e14\u6de0\u65c6\u952b\u9185\u9708",
"pen": "\u55b7\u76c6\u6e53",
"peng": "\u7830\u62a8\u70f9\u6f8e\u5f6d\u84ec\u68da\u787c\u7bf7\u81a8\u670b\u9e4f\u6367\u78b0\u576f\u580b\u562d\u6026\u87db",
"pi": "\u7812\u9739\u6279\u62ab\u5288\u7435\u6bd7\u5564\u813e\u75b2\u76ae\u5339\u75de\u50fb\u5c41\u8b6c\u4e15\u9674\u90b3\u90eb\u572e\u9f19\u64d7\u567c\u5e80\u5ab2\u7eb0\u6787\u7513\u7765\u7f74\u94cd\u75e6\u7656\u758b\u868d\u8c94",
"pian": "\u7bc7\u504f\u7247\u9a97\u8c1d\u9a88\u728f\u80fc\u890a\u7fe9\u8e41",
"piao": "\u98d8\u6f02\u74e2\u7968\u527d\u560c\u5ad6\u7f25\u6b8d\u779f\u87b5",
"pie": "\u6487\u77a5\u4e3f\u82e4\u6c15",
"pin": "\u62fc\u9891\u8d2b\u54c1\u8058\u62da\u59d8\u5ad4\u6980\u725d\u98a6",
"ping": "\u4e52\u576a\u82f9\u840d\u5e73\u51ed\u74f6\u8bc4\u5c4f\u4fdc\u5a09\u67b0\u9c86",
"po": "\u5761\u6cfc\u9887\u5a46\u7834\u9b44\u8feb\u7c95\u53f5\u9131\u6ea5\u73c0\u948b\u94b7\u76a4\u7b38",
"pou": "\u5256\u88d2\u8e23",
"pu": "\u6251\u94fa\u4ec6\u8386\u8461\u83e9\u84b2\u57d4\u6734\u5703\u666e\u6d66\u8c31\u66dd\u7011\u530d\u5657\u6fee\u749e\u6c06\u9564\u9568\u8e7c",
"qi": "\u671f\u6b3a\u6816\u621a\u59bb\u4e03\u51c4\u6f06\u67d2\u6c8f\u5176\u68cb\u5947\u6b67\u7566\u5d0e\u8110\u9f50\u65d7\u7948\u7941\u9a91\u8d77\u5c82\u4e5e\u4f01\u542f\u5951\u780c\u5668\u6c14\u8fc4\u5f03\u6c7d\u6ce3\u8bab\u4e9f\u4e93\u573b\u8291\u840b\u847a\u5601\u5c7a\u5c90\u6c54\u6dc7\u9a90\u7eee\u742a\u7426\u675e\u6864\u69ed\u6b39\u797a\u61a9\u789b\u86f4\u871e\u7da6\u7dae\u8dbf\u8e4a\u9ccd\u9e92",
"qia": "\u6390\u6070\u6d3d\u845c",
"qian": "\u7275\u6266\u948e\u94c5\u5343\u8fc1\u7b7e\u4edf\u8c26\u4e7e\u9ed4\u94b1\u94b3\u524d\u6f5c\u9063\u6d45\u8c34\u5811\u5d4c\u6b20\u6b49\u4f65\u9621\u828a\u82a1\u8368\u63ae\u5c8d\u60ad\u614a\u9a9e\u6434\u8930\u7f31\u6920\u80b7\u6106\u94a4\u8654\u7b9d",
"qiang": "\u67aa\u545b\u8154\u7f8c\u5899\u8537\u5f3a\u62a2\u5af1\u6a2f\u6217\u709d\u9516\u9535\u956a\u8941\u8723\u7f9f\u8deb\u8dc4",
"qiao": "\u6a47\u9539\u6572\u6084\u6865\u77a7\u4e54\u4fa8\u5de7\u9798\u64ac\u7fd8\u5ced\u4fcf\u7a8d\u5281\u8bee\u8c2f\u835e\u6100\u6194\u7f32\u6a35\u6bf3\u7857\u8df7\u9792",
"qie": "\u5207\u8304\u4e14\u602f\u7a83\u90c4\u553c\u60ec\u59be\u6308\u9532\u7ba7",
"qin": "\u94a6\u4fb5\u4eb2\u79e6\u7434\u52e4\u82b9\u64d2\u79bd\u5bdd\u6c81\u82a9\u84c1\u8572\u63ff\u5423\u55ea\u5659\u6eb1\u6a8e\u8793\u887e",
"qing": "\u9752\u8f7b\u6c22\u503e\u537f\u6e05\u64ce\u6674\u6c30\u60c5\u9877\u8bf7\u5e86\u5029\u82d8\u570a\u6aa0\u78ec\u873b\u7f44\u7b90\u8b26\u9cad\u9ee5",
"qiong": "\u743c\u7a77\u909b\u8315\u7a79\u7b47\u928e",
"qiu": "\u79cb\u4e18\u90b1\u7403\u6c42\u56da\u914b\u6cc5\u4fc5\u6c3d\u5def\u827d\u72b0\u6e6b\u9011\u9052\u6978\u8d47\u9e20\u866c\u86af\u8764\u88d8\u7cd7\u9cc5\u9f3d",
"qu": "\u8d8b\u533a\u86c6\u66f2\u8eaf\u5c48\u9a71\u6e20\u53d6\u5a36\u9f8b\u8da3\u53bb\u8bce\u52ac\u8556\u8627\u5c96\u8862\u9612\u74a9\u89d1\u6c0d\u795b\u78f2\u766f\u86d0\u883c\u9eb4\u77bf\u9ee2",
"quan": "\u5708\u98a7\u6743\u919b\u6cc9\u5168\u75ca\u62f3\u72ac\u5238\u529d\u8be0\u8343\u737e\u609b\u7efb\u8f81\u754e\u94e8\u8737\u7b4c\u9b08",
"que": "\u7f3a\u7094\u7638\u5374\u9e4a\u69b7\u786e\u96c0\u9619\u60ab",
"qun": "\u88d9\u7fa4\u9021",
"ran": "\u7136\u71c3\u5189\u67d3\u82d2\u9aef",
"rang": "\u74e4\u58e4\u6518\u56b7\u8ba9\u79b3\u7a70",
"rao": "\u9976\u6270\u7ed5\u835b\u5a06\u6861",
"ruo": "\u60f9\u82e5\u5f31",
"re": "\u70ed\u504c",
"ren": "\u58ec\u4ec1\u4eba\u5fcd\u97e7\u4efb\u8ba4\u5203\u598a\u7eab\u4ede\u834f\u845a\u996a\u8f6b\u7a14\u887d",
"reng": "\u6254\u4ecd",
"ri": "\u65e5",
"rong": "\u620e\u8338\u84c9\u8363\u878d\u7194\u6eb6\u5bb9\u7ed2\u5197\u5d58\u72e8\u7f1b\u6995\u877e",
"rou": "\u63c9\u67d4\u8089\u7cc5\u8e42\u97a3",
"ru": "\u8339\u8815\u5112\u5b7a\u5982\u8fb1\u4e73\u6c5d\u5165\u8925\u84d0\u85b7\u5685\u6d33\u6ebd\u6fe1\u94f7\u8966\u98a5",
"ruan": "\u8f6f\u962e\u670a",
"rui": "\u854a\u745e\u9510\u82ae\u8564\u777f\u868b",
"run": "\u95f0\u6da6",
"sa": "\u6492\u6d12\u8428\u5345\u4ee8\u6332\u98d2",
"sai": "\u816e\u9cc3\u585e\u8d5b\u567b",
"san": "\u4e09\u53c1\u4f1e\u6563\u5f61\u9993\u6c35\u6bf5\u7cc1\u9730",
"sang": "\u6851\u55d3\u4e27\u6421\u78c9\u98a1",
"sao": "\u6414\u9a9a\u626b\u5ac2\u57fd\u81ca\u7619\u9ccb",
"se": "\u745f\u8272\u6da9\u556c\u94e9\u94ef\u7a51",
"sen": "\u68ee",
"seng": "\u50e7",
"sha": "\u838e\u7802\u6740\u5239\u6c99\u7eb1\u50bb\u5565\u715e\u810e\u6b43\u75e7\u88df\u970e\u9ca8",
"shai": "\u7b5b\u6652\u917e",
"shan": "\u73ca\u82eb\u6749\u5c71\u5220\u717d\u886b\u95ea\u9655\u64c5\u8d61\u81b3\u5584\u6c55\u6247\u7f2e\u5261\u8baa\u912f\u57cf\u829f\u6f78\u59d7\u9a9f\u81bb\u9490\u759d\u87ee\u8222\u8dda\u9cdd",
"shang": "\u5892\u4f24\u5546\u8d4f\u664c\u4e0a\u5c1a\u88f3\u57a7\u7ef1\u6b87\u71b5\u89de",
"shao": "\u68a2\u634e\u7a0d\u70e7\u828d\u52fa\u97f6\u5c11\u54e8\u90b5\u7ecd\u52ad\u82d5\u6f72\u86f8\u7b24\u7b72\u8244",
"she": "\u5962\u8d4a\u86c7\u820c\u820d\u8d66\u6444\u5c04\u6151\u6d89\u793e\u8bbe\u538d\u4f58\u731e\u7572\u9e9d",
"shen": "\u7837\u7533\u547b\u4f38\u8eab\u6df1\u5a20\u7ec5\u795e\u6c88\u5ba1\u5a76\u751a\u80be\u614e\u6e17\u8bdc\u8c02\u5432\u54c2\u6e16\u6939\u77e7\u8703",
"sheng": "\u58f0\u751f\u7525\u7272\u5347\u7ef3\u7701\u76db\u5269\u80dc\u5723\u4e1e\u6e11\u5ab5\u771a\u7b19",
"shi": "\u5e08\u5931\u72ee\u65bd\u6e7f\u8bd7\u5c38\u8671\u5341\u77f3\u62fe\u65f6\u4ec0\u98df\u8680\u5b9e\u8bc6\u53f2\u77e2\u4f7f\u5c4e\u9a76\u59cb\u5f0f\u793a\u58eb\u4e16\u67ff\u4e8b\u62ed\u8a93\u901d\u52bf\u662f\u55dc\u566c\u9002\u4ed5\u4f8d\u91ca\u9970\u6c0f\u5e02\u6043\u5ba4\u89c6\u8bd5\u8c25\u57d8\u83b3\u84cd\u5f11\u5511\u9963\u8f7c\u8006\u8d33\u70bb\u793b\u94c8\u94ca\u87ab\u8210\u7b6e\u8c55\u9ca5\u9cba",
"shou": "\u6536\u624b\u9996\u5b88\u5bff\u6388\u552e\u53d7\u7626\u517d\u624c\u72e9\u7ef6\u824f",
"shu": "\u852c\u67a2\u68b3\u6b8a\u6292\u8f93\u53d4\u8212\u6dd1\u758f\u4e66\u8d4e\u5b70\u719f\u85af\u6691\u66d9\u7f72\u8700\u9ecd\u9f20\u5c5e\u672f\u8ff0\u6811\u675f\u620d\u7ad6\u5885\u5eb6\u6570\u6f31\u6055\u500f\u587e\u83fd\u5fc4\u6cad\u6d91\u6f8d\u59dd\u7ebe\u6bf9\u8167\u6bb3\u956f\u79eb\u9e6c",
"shua": "\u5237\u800d\u5530\u6dae",
"shuai": "\u6454\u8870\u7529\u5e05\u87c0",
"shuan": "\u6813\u62f4\u95e9",
"shuang": "\u971c\u53cc\u723d\u5b40",
"shui": "\u8c01\u6c34\u7761\u7a0e",
"shun": "\u542e\u77ac\u987a\u821c\u6042",
"shuo": "\u8bf4\u7855\u6714\u70c1\u84b4\u6420\u55cd\u6fef\u5981\u69ca\u94c4",
"si": "\u65af\u6495\u5636\u601d\u79c1\u53f8\u4e1d\u6b7b\u8086\u5bfa\u55e3\u56db\u4f3a\u4f3c\u9972\u5df3\u53ae\u4fdf\u5155\u83e5\u549d\u6c5c\u6cd7\u6f8c\u59d2\u9a77\u7f0c\u7940\u7960\u9536\u9e36\u801c\u86f3\u7b25",
"song": "\u677e\u8038\u6002\u9882\u9001\u5b8b\u8bbc\u8bf5\u51c7\u83d8\u5d27\u5d69\u5fea\u609a\u6dde\u7ae6",
"sou": "\u641c\u8258\u64de\u55fd\u53df\u55d6\u55fe\u998a\u6eb2\u98d5\u778d\u953c\u878b",
"su": "\u82cf\u9165\u4fd7\u7d20\u901f\u7c9f\u50f3\u5851\u6eaf\u5bbf\u8bc9\u8083\u5919\u8c21\u850c\u55c9\u612b\u7c0c\u89eb\u7a23",
"suan": "\u9178\u849c\u7b97",
"sui": "\u867d\u968b\u968f\u7ee5\u9ad3\u788e\u5c81\u7a57\u9042\u96a7\u795f\u84d1\u51ab\u8c07\u6fc9\u9083\u71e7\u772d\u7762",
"sun": "\u5b59\u635f\u7b0b\u836a\u72f2\u98e7\u69ab\u8de3\u96bc",
"suo": "\u68ad\u5506\u7f29\u7410\u7d22\u9501\u6240\u5522\u55e6\u5a11\u686b\u7743\u7fa7",
"ta": "\u584c\u4ed6\u5b83\u5979\u5854\u736d\u631e\u8e4b\u8e0f\u95fc\u6ebb\u9062\u69bb\u6c93",
"tai": "\u80ce\u82d4\u62ac\u53f0\u6cf0\u915e\u592a\u6001\u6c70\u90b0\u85b9\u80bd\u70b1\u949b\u8dc6\u9c90",
"tan": "\u574d\u644a\u8d2a\u762b\u6ee9\u575b\u6a80\u75f0\u6f6d\u8c2d\u8c08\u5766\u6bef\u8892\u78b3\u63a2\u53f9\u70ad\u90ef\u8548\u6619\u94bd\u952c\u8983",
"tang": "\u6c64\u5858\u642a\u5802\u68e0\u819b\u5510\u7cd6\u50a5\u9967\u6e8f\u746d\u94f4\u9557\u8025\u8797\u87b3\u7fb0\u91a3",
"thang": "\u5018\u8eba\u6dcc",
"theng": "\u8d9f\u70eb",
"tao": "\u638f\u6d9b\u6ed4\u7ee6\u8404\u6843\u9003\u6dd8\u9676\u8ba8\u5957\u6311\u9f17\u5555\u97ec\u9955",
"te": "\u7279",
"teng": "\u85e4\u817e\u75bc\u8a8a\u6ed5",
"ti": "\u68af\u5254\u8e22\u9511\u63d0\u9898\u8e44\u557c\u4f53\u66ff\u568f\u60d5\u6d95\u5243\u5c49\u8351\u608c\u9016\u7ee8\u7f07\u9e48\u88fc\u918d",
"tian": "\u5929\u6dfb\u586b\u7530\u751c\u606c\u8214\u8146\u63ad\u5fdd\u9617\u6b84\u754b\u94bf\u86ba",
"tiao": "\u6761\u8fe2\u773a\u8df3\u4f7b\u7967\u94eb\u7a95\u9f86\u9ca6",
"tie": "\u8d34\u94c1\u5e16\u841c\u992e",
"ting": "\u5385\u542c\u70c3\u6c40\u5ef7\u505c\u4ead\u5ead\u633a\u8247\u839b\u8476\u5a77\u6883\u8713\u9706",
"tong": "\u901a\u6850\u916e\u77b3\u540c\u94dc\u5f64\u7ae5\u6876\u6345\u7b52\u7edf\u75db\u4f5f\u50ee\u4edd\u833c\u55f5\u6078\u6f7c\u783c",
"tou": "\u5077\u6295\u5934\u900f\u4ea0",
"tu": "\u51f8\u79c3\u7a81\u56fe\u5f92\u9014\u6d82\u5c60\u571f\u5410\u5154\u580d\u837c\u83df\u948d\u9174",
"tuan": "\u6e4d\u56e2\u7583",
"tui": "\u63a8\u9893\u817f\u8715\u892a\u9000\u5fd2\u717a",
"tun": "\u541e\u5c6f\u81c0\u9968\u66be\u8c5a\u7a80",
"tuo": "\u62d6\u6258\u8131\u9e35\u9640\u9a6e\u9a7c\u692d\u59a5\u62d3\u553e\u4e47\u4f57\u5768\u5eb9\u6cb1\u67dd\u7823\u7ba8\u8204\u8dce\u9f0d",
"wa": "\u6316\u54c7\u86d9\u6d3c\u5a03\u74e6\u889c\u4f64\u5a32\u817d",
"wai": "\u6b6a\u5916",
"wan": "\u8c4c\u5f2f\u6e7e\u73a9\u987d\u4e38\u70f7\u5b8c\u7897\u633d\u665a\u7696\u60cb\u5b9b\u5a49\u4e07\u8155\u525c\u8284\u82cb\u83c0\u7ea8\u7efe\u742c\u8118\u7579\u873f\u7ba2",
"wang": "\u6c6a\u738b\u4ea1\u6789\u7f51\u5f80\u65fa\u671b\u5fd8\u5984\u7f54\u5c22\u60d8\u8f8b\u9b4d",
"wei": "\u5a01\u5dcd\u5fae\u5371\u97e6\u8fdd\u6845\u56f4\u552f\u60df\u4e3a\u6f4d\u7ef4\u82c7\u840e\u59d4\u4f1f\u4f2a\u5c3e\u7eac\u672a\u851a\u5473\u754f\u80c3\u5582\u9b4f\u4f4d\u6e2d\u8c13\u5c09\u6170\u536b\u502d\u504e\u8bff\u9688\u8473\u8587\u5e0f\u5e37\u5d34\u5d6c\u7325\u732c\u95f1\u6ca9\u6d27\u6da0\u9036\u5a13\u73ae\u97ea\u8ece\u709c\u7168\u71a8\u75ff\u8249\u9c94",
"wen": "\u761f\u6e29\u868a\u6587\u95fb\u7eb9\u543b\u7a33\u7d0a\u95ee\u520e\u6120\u960c\u6c76\u74ba\u97eb\u6b81\u96ef",
"weng": "\u55e1\u7fc1\u74ee\u84ca\u8579",
"wo": "\u631d\u8717\u6da1\u7a9d\u6211\u65a1\u5367\u63e1\u6c83\u83b4\u5e44\u6e25\u674c\u809f\u9f8c",
"wu": "\u5deb\u545c\u94a8\u4e4c\u6c61\u8bec\u5c4b\u65e0\u829c\u68a7\u543e\u5434\u6bcb\u6b66\u4e94\u6342\u5348\u821e\u4f0d\u4fae\u575e\u620a\u96fe\u6664\u7269\u52ff\u52a1\u609f\u8bef\u5140\u4ef5\u9622\u90ac\u572c\u82b4\u5e91\u6003\u5fe4\u6d6f\u5be4\u8fd5\u59a9\u9a9b\u727e\u7110\u9e49\u9e5c\u8708\u92c8\u9f2f",
"xi": "\u6614\u7199\u6790\u897f\u7852\u77fd\u6670\u563b\u5438\u9521\u727a\u7a00\u606f\u5e0c\u6089\u819d\u5915\u60dc\u7184\u70ef\u6eaa\u6c50\u7280\u6a84\u88ad\u5e2d\u4e60\u5ab3\u559c\u94e3\u6d17\u7cfb\u9699\u620f\u7ec6\u50d6\u516e\u96b0\u90d7\u831c\u8478\u84f0\u595a\u550f\u5f99\u9969\u960b\u6d60\u6dc5\u5c63\u5b09\u73ba\u6a28\u66e6\u89cb\u6b37\u71b9\u798a\u79a7\u94b8\u7699\u7a78\u8725\u87cb\u823e\u7fb2\u7c9e\u7fd5\u91af\u9f37",
"xia": "\u778e\u867e\u5323\u971e\u8f96\u6687\u5ce1\u4fa0\u72ed\u4e0b\u53a6\u590f\u5413\u6380\u846d\u55c4\u72ce\u9050\u7455\u7856\u7615\u7f45\u9ee0",
"xian": "\u9528\u5148\u4ed9\u9c9c\u7ea4\u54b8\u8d24\u8854\u8237\u95f2\u6d8e\u5f26\u5acc\u663e\u9669\u73b0\u732e\u53bf\u817a\u9985\u7fa1\u5baa\u9677\u9650\u7ebf\u51bc\u85d3\u5c98\u7303\u66b9\u5a34\u6c19\u7946\u9e47\u75eb\u86ac\u7b45\u7c7c\u9170\u8df9",
"xiang": "\u76f8\u53a2\u9576\u9999\u7bb1\u8944\u6e58\u4e61\u7fd4\u7965\u8be6\u60f3\u54cd\u4eab\u9879\u5df7\u6a61\u50cf\u5411\u8c61\u8297\u8459\u9977\u5ea0\u9aa7\u7f03\u87d3\u9c9e\u98e8",
"xiao": "\u8427\u785d\u9704\u524a\u54ee\u56a3\u9500\u6d88\u5bb5\u6dc6\u6653\u5c0f\u5b5d\u6821\u8096\u5578\u7b11\u6548\u54d3\u54bb\u5d24\u6f47\u900d\u9a81\u7ee1\u67ad\u67b5\u7b71\u7bab\u9b48",
"xie": "\u6954\u4e9b\u6b47\u874e\u978b\u534f\u631f\u643a\u90aa\u659c\u80c1\u8c10\u5199\u68b0\u5378\u87f9\u61c8\u6cc4\u6cfb\u8c22\u5c51\u5055\u4eb5\u52f0\u71ee\u85a4\u64b7\u5ee8\u7023\u9082\u7ec1\u7f2c\u69ad\u698d\u6b59\u8e9e",
"xin": "\u85aa\u82af\u950c\u6b23\u8f9b\u65b0\u5ffb\u5fc3\u4fe1\u8845\u56df\u99a8\u8398\u6b46\u94fd\u946b",
"xing": "\u661f\u8165\u7329\u60fa\u5174\u5211\u578b\u5f62\u90a2\u884c\u9192\u5e78\u674f\u6027\u59d3\u9649\u8347\u8365\u64e4\u60bb\u784e",
"xiong": "\u5144\u51f6\u80f8\u5308\u6c79\u96c4\u718a\u828e",
"xiu": "\u4f11\u4fee\u7f9e\u673d\u55c5\u9508\u79c0\u8896\u7ee3\u83a0\u5cab\u9990\u5ea5\u9e3a\u8c85\u9af9",
"xu": "\u589f\u620c\u9700\u865a\u5618\u987b\u5f90\u8bb8\u84c4\u9157\u53d9\u65ed\u5e8f\u755c\u6064\u7d6e\u5a7f\u7eea\u7eed\u8bb4\u8be9\u5729\u84ff\u6035\u6d2b\u6e86\u987c\u6829\u7166\u7809\u76f1\u80e5\u7cc8\u9191",
"xuan": "\u8f69\u55a7\u5ba3\u60ac\u65cb\u7384\u9009\u7663\u7729\u7eda\u5107\u8c16\u8431\u63ce\u9994\u6ceb\u6d35\u6e32\u6f29\u7487\u6966\u6684\u70ab\u714a\u78b9\u94c9\u955f\u75c3",
"xue": "\u9774\u859b\u5b66\u7a74\u96ea\u8840\u5671\u6cf6\u9cd5",
"xun": "\u52cb\u718f\u5faa\u65ec\u8be2\u5bfb\u9a6f\u5de1\u6b89\u6c5b\u8bad\u8baf\u900a\u8fc5\u5dfd\u57d9\u8340\u85b0\u5ccb\u5f87\u6d54\u66db\u7aa8\u91ba\u9c9f",
"ya": "\u538b\u62bc\u9e26\u9e2d\u5440\u4e2b\u82bd\u7259\u869c\u5d16\u8859\u6daf\u96c5\u54d1\u4e9a\u8bb6\u4f22\u63e0\u5416\u5c88\u8fd3\u5a05\u740a\u6860\u6c29\u7811\u775a\u75d6",
"yan": "\u7109\u54bd\u9609\u70df\u6df9\u76d0\u4e25\u7814\u8712\u5ca9\u5ef6\u8a00\u989c\u960e\u708e\u6cbf\u5944\u63a9\u773c\u884d\u6f14\u8273\u5830\u71d5\u538c\u781a\u96c1\u5501\u5f66\u7130\u5bb4\u8c1a\u9a8c\u53a3\u9765\u8d5d\u4fe8\u5043\u5156\u8ba0\u8c33\u90fe\u9122\u82ab\u83f8\u5d26\u6079\u95eb\u960f\u6d07\u6e6e\u6edf\u598d\u5ae3\u7430\u664f\u80ed\u814c\u7131\u7f68\u7b75\u917d\u9b47\u990d\u9f39",
"yang": "\u6b83\u592e\u9e2f\u79e7\u6768\u626c\u4f6f\u75a1\u7f8a\u6d0b\u9633\u6c27\u4ef0\u75d2\u517b\u6837\u6f3e\u5f89\u600f\u6cf1\u7080\u70ca\u6059\u86d8\u9785",
"yao": "\u9080\u8170\u5996\u7476\u6447\u5c27\u9065\u7a91\u8c23\u59da\u54ac\u8200\u836f\u8981\u8000\u592d\u723b\u5406\u5d3e\u5fad\u7039\u5e7a\u73e7\u6773\u66dc\u80b4\u9e5e\u7a88\u7e47\u9cd0",
"ye": "\u6930\u564e\u8036\u7237\u91ce\u51b6\u4e5f\u9875\u6396\u4e1a\u53f6\u66f3\u814b\u591c\u6db2\u8c12\u90ba\u63f6\u9980\u6654\u70e8\u94d8",
"yi": "\u4e00\u58f9\u533b\u63d6\u94f1\u4f9d\u4f0a\u8863\u9890\u5937\u9057\u79fb\u4eea\u80f0\u7591\u6c82\u5b9c\u59e8\u5f5d\u6905\u8681\u501a\u5df2\u4e59\u77e3\u4ee5\u827a\u6291\u6613\u9091\u5c79\u4ebf\u5f79\u81c6\u9038\u8084\u75ab\u4ea6\u88d4\u610f\u6bc5\u5fc6\u4e49\u76ca\u6ea2\u8be3\u8bae\u8c0a\u8bd1\u5f02\u7ffc\u7fcc\u7ece\u5208\u5293\u4f7e\u8bd2\u572a\u572f\u57f8\u61ff\u82e1\u858f\u5f08\u5955\u6339\u5f0b\u5453\u54a6\u54bf\u566b\u5cc4\u5db7\u7317\u9974\u603f\u6021\u6092\u6f2a\u8fe4\u9a7f\u7f22\u6baa\u8d3b\u65d6\u71a0\u9487\u9552\u9571\u75cd\u7617\u7654\u7fca\u8864\u8734\u8223\u7fbf\u7ff3\u914f\u9edf",
"yin": "\u8335\u836b\u56e0\u6bb7\u97f3\u9634\u59fb\u541f\u94f6\u6deb\u5bc5\u996e\u5c39\u5f15\u9690\u5370\u80e4\u911e\u5819\u831a\u5591\u72fa\u5924\u6c24\u94df\u763e\u8693\u972a\u9f88",
"ying": "\u82f1\u6a31\u5a74\u9e70\u5e94\u7f28\u83b9\u8424\u8425\u8367\u8747\u8fce\u8d62\u76c8\u5f71\u9896\u786c\u6620\u5b34\u90e2\u8314\u83ba\u8426\u6484\u5624\u81ba\u6ee2\u6f46\u701b\u745b\u748e\u6979\u9e66\u763f\u988d\u7f42",
"yo": "\u54df\u5537",
"yong": "\u62e5\u4f63\u81c3\u75c8\u5eb8\u96cd\u8e0a\u86f9\u548f\u6cf3\u6d8c\u6c38\u607f\u52c7\u7528\u4fd1\u58c5\u5889\u6175\u9095\u955b\u752c\u9cd9\u9954",
"you": "\u5e7d\u4f18\u60a0\u5fe7\u5c24\u7531\u90ae\u94c0\u72b9\u6cb9\u6e38\u9149\u6709\u53cb\u53f3\u4f51\u91c9\u8bf1\u53c8\u5e7c\u5363\u6538\u4f91\u83b8\u5466\u56ff\u5ba5\u67da\u7337\u7256\u94d5\u75a3\u8763\u9c7f\u9edd\u9f2c",
"yu": "\u8fc2\u6de4\u4e8e\u76c2\u6986\u865e\u611a\u8206\u4f59\u4fde\u903e\u9c7c\u6109\u6e1d\u6e14\u9685\u4e88\u5a31\u96e8\u4e0e\u5c7f\u79b9\u5b87\u8bed\u7fbd\u7389\u57df\u828b\u90c1\u5401\u9047\u55bb\u5cea\u5fa1\u6108\u6b32\u72f1\u80b2\u8a89\u6d74\u5bd3\u88d5\u9884\u8c6b\u9a6d\u79ba\u6bd3\u4f1b\u4fe3\u8c00\u8c15\u8438\u84e3\u63c4\u5581\u5704\u5709\u5d5b\u72f3\u996b\u5ebe\u9608\u59aa\u59a4\u7ea1\u745c\u6631\u89ce\u8174\u6b24\u65bc\u715c\u71e0\u807f\u94b0\u9e46\u7610\u7600\u7ab3\u8753\u7afd\u8201\u96e9\u9f89",
"yuan": "\u9e33\u6e0a\u51a4\u5143\u57a3\u8881\u539f\u63f4\u8f95\u56ed\u5458\u5706\u733f\u6e90\u7f18\u8fdc\u82d1\u613f\u6028\u9662\u586c\u6c85\u5a9b\u7457\u6a7c\u7230\u7722\u9e22\u8788\u9f0b",
"yue": "\u66f0\u7ea6\u8d8a\u8dc3\u94a5\u5cb3\u7ca4\u6708\u60a6\u9605\u9fa0\u6a3e\u5216\u94ba",
"yun": "\u8018\u4e91\u90e7\u5300\u9668\u5141\u8fd0\u8574\u915d\u6655\u97f5\u5b55\u90d3\u82b8\u72c1\u607d\u7ead\u6b92\u6600\u6c32",
"za": "\u531d\u7838\u6742\u62f6\u5482",
"zai": "\u683d\u54c9\u707e\u5bb0\u8f7d\u518d\u5728\u54b1\u5d3d\u753e",
"zan": "\u6512\u6682\u8d5e\u74d2\u661d\u7c2a\u7ccc\u8db1\u933e",
"zang": "\u8d43\u810f\u846c\u5958\u6215\u81e7",
"zao": "\u906d\u7cdf\u51ff\u85fb\u67a3\u65e9\u6fa1\u86a4\u8e81\u566a\u9020\u7682\u7076\u71e5\u5523\u7f2b",
"ze": "\u8d23\u62e9\u5219\u6cfd\u4ec4\u8d5c\u5567\u8fee\u6603\u7b2e\u7ba6\u8234",
"zei": "\u8d3c",
"zen": "\u600e\u8c2e",
"zeng": "\u589e\u618e\u66fe\u8d60\u7f2f\u7511\u7f7e\u9503",
"zha": "\u624e\u55b3\u6e23\u672d\u8f67\u94e1\u95f8\u7728\u6805\u69a8\u548b\u4e4d\u70b8\u8bc8\u63f8\u5412\u54a4\u54f3\u600d\u781f\u75c4\u86b1\u9f44",
"zhai": "\u6458\u658b\u5b85\u7a84\u503a\u5be8\u7826",
"zhan": "\u77bb\u6be1\u8a79\u7c98\u6cbe\u76cf\u65a9\u8f97\u5d2d\u5c55\u8638\u6808\u5360\u6218\u7ad9\u6e5b\u7efd\u8c35\u640c\u65c3",
"zhang": "\u6a1f\u7ae0\u5f70\u6f33\u5f20\u638c\u6da8\u6756\u4e08\u5e10\u8d26\u4ed7\u80c0\u7634\u969c\u4ec9\u9123\u5e5b\u5d82\u7350\u5adc\u748b\u87d1",
"zhao": "\u62db\u662d\u627e\u6cbc\u8d75\u7167\u7f69\u5146\u8087\u53ec\u722a\u8bcf\u68f9\u948a\u7b0a",
"zhe": "\u906e\u6298\u54f2\u86f0\u8f99\u8005\u9517\u8517\u8fd9\u6d59\u8c2a\u966c\u67d8\u8f84\u78d4\u9e67\u891a\u8707\u8d6d",
"zhen": "\u73cd\u659f\u771f\u7504\u7827\u81fb\u8d1e\u9488\u4fa6\u6795\u75b9\u8bca\u9707\u632f\u9547\u9635\u7f1c\u6862\u699b\u8f78\u8d48\u80d7\u6715\u796f\u755b\u9e29",
"zheng": "\u84b8\u6323\u7741\u5f81\u72f0\u4e89\u6014\u6574\u62ef\u6b63\u653f\u5e27\u75c7\u90d1\u8bc1\u8be4\u5ce5\u94b2\u94ee\u7b5d",
"zhi": "\u829d\u679d\u652f\u5431\u8718\u77e5\u80a2\u8102\u6c41\u4e4b\u7ec7\u804c\u76f4\u690d\u6b96\u6267\u503c\u4f84\u5740\u6307\u6b62\u8dbe\u53ea\u65e8\u7eb8\u5fd7\u631a\u63b7\u81f3\u81f4\u7f6e\u5e1c\u5cd9\u5236\u667a\u79e9\u7a1a\u8d28\u7099\u75d4\u6ede\u6cbb\u7a92\u536e\u965f\u90c5\u57f4\u82b7\u646d\u5e19\u5fee\u5f58\u54ab\u9a98\u6809\u67b3\u6800\u684e\u8f75\u8f7e\u6534\u8d3d\u81a3\u7949\u7957\u9ef9\u96c9\u9e37\u75e3\u86ed\u7d77\u916f\u8dd6\u8e2c\u8e2f\u8c78\u89ef",
"zhong": "\u4e2d\u76c5\u5fe0\u949f\u8877\u7ec8\u79cd\u80bf\u91cd\u4ef2\u4f17\u51a2\u953a\u87bd\u8202\u822f\u8e35",
"zhou": "\u821f\u5468\u5dde\u6d32\u8bcc\u7ca5\u8f74\u8098\u5e1a\u5492\u76b1\u5b99\u663c\u9aa4\u5544\u7740\u501c\u8bf9\u836e\u9b3b\u7ea3\u80c4\u78a1\u7c40\u8233\u914e\u9cb7",
"zhu": "\u73e0\u682a\u86db\u6731\u732a\u8bf8\u8bdb\u9010\u7af9\u70db\u716e\u62c4\u77a9\u5631\u4e3b\u8457\u67f1\u52a9\u86c0\u8d2e\u94f8\u7b51\u4f4f\u6ce8\u795d\u9a7b\u4f2b\u4f8f\u90be\u82ce\u8331\u6d19\u6e1a\u6f74\u9a7a\u677c\u69e0\u6a65\u70b7\u94e2\u75b0\u7603\u86b0\u7afa\u7bb8\u7fe5\u8e85\u9e88",
"zhua": "\u6293",
"zhuai": "\u62fd",
"zhuan": "\u4e13\u7816\u8f6c\u64b0\u8d5a\u7bc6\u629f\u556d\u989b",
"zhuang": "\u6869\u5e84\u88c5\u5986\u649e\u58ee\u72b6\u4e2c",
"zhui": "\u690e\u9525\u8ffd\u8d58\u5760\u7f00\u8411\u9a93\u7f12",
"zhun": "\u8c06\u51c6",
"zhuo": "\u6349\u62d9\u5353\u684c\u7422\u8301\u914c\u707c\u6d4a\u502c\u8bfc\u5ef4\u855e\u64e2\u555c\u6d5e\u6dbf\u6753\u712f\u799a\u65ab",
"zi": "\u5179\u54a8\u8d44\u59ff\u6ecb\u6dc4\u5b5c\u7d2b\u4ed4\u7c7d\u6ed3\u5b50\u81ea\u6e0d\u5b57\u8c18\u5d6b\u59ca\u5b73\u7f01\u6893\u8f8e\u8d40\u6063\u7726\u9531\u79ed\u8014\u7b2b\u7ca2\u89dc\u8a3e\u9cbb\u9aed",
"zong": "\u9b03\u68d5\u8e2a\u5b97\u7efc\u603b\u7eb5\u8159\u7cbd",
"zou": "\u90b9\u8d70\u594f\u63cd\u9139\u9cb0",
"zu": "\u79df\u8db3\u5352\u65cf\u7956\u8bc5\u963b\u7ec4\u4fce\u83f9\u5550\u5f82\u9a75\u8e74",
"zuan": "\u94bb\u7e82\u6525\u7f35",
"zui": "\u5634\u9189\u6700\u7f6a",
"zun": "\u5c0a\u9075\u6499\u6a3d\u9cdf",
"zuo": "\u6628\u5de6\u4f50\u67de\u505a\u4f5c\u5750\u5ea7\u961d\u963c\u80d9\u795a\u9162",
"cou": "\u85ae\u6971\u8f8f\u8160",
"nang": "\u652e\u54dd\u56d4\u9995\u66e9",
"o": "\u5594",
"dia": "\u55f2",
"chuai": "\u562c\u81aa\u8e39",
"cen": "\u5c91\u6d94",
"diu": "\u94e5",
"nou": "\u8028",
"fou": "\u7f36",
"bia": "\u9adf"
};
PinYin = {
/** 汉字转拼音*/
A: function (l1) {
return PinYin.DD(l1, 'ucfirst');
},
/** 汉字转拼音首字母缩写 大写*/
B: function (l1) {
return PinYin.DD(l1, 'ucUpper').toUpperCase();
},
/** 汉字转拼音第一个全拼+后面缩写 大写*/
C: function (l1) {
return PinYin.DD(l1, 'ucFirstUpper').toUpperCase();
},
/** 汉字转拼内部函数*/
DD: function (l1, type) {
var l2 = l1.length;
var I1 = "";
var reg = new RegExp('[a-zA-Z0-9\- ]');
for (var i = 0; i < l2; i++) {
var val = l1.substr(i, 1);
var name = PinYin.arraySearchDD(val, PinYinArray, type, i);
if (reg.test(val)) {
I1 += val;
} else if (name !== false) {
I1 += name;
}
}
I1 = I1.replace(/ /g, '-');
while (I1.indexOf('--') > 0) {
I1 = I1.replace('--', '-');
}
return I1;
},
/**在对象中搜索 */
arraySearchDD: function (l1, l2, type, index) {
for (var name in PinYinArray) {
if (PinYinArray[name].indexOf(l1) != -1) {
return PinYin[type](name, index);
break;
}
}
return false;
},
/**首字母大写 */
ucfirst: function (l1) {
if (l1.length > 0) {
var first = l1.substr(0, 1).toUpperCase();
var spare = l1.substr(1, l1.length);
return first + spare;
}
},
/**首字母缩写并大写 */
ucUpper: function (l1) {
if (l1.length > 0) {
var ret = l1.substr(0, 1).toUpperCase();
return ret;
}
},
/**首字母缩写并大写 */
ucFirstUpper: function (l1, index) {
if (index!=undefined && index>=0 && l1.length > 0) {
var ret = (index == 0 ? l1.toUpperCase() : l1.substr(0, 1).toUpperCase());
return ret;
}
}
};
exports("zlPinYin", PinYin);
/*
* @Author: gk
* grid 汉子拼音转换插件
* @Date: 2018-01-17 09:53:01
* @Last Modified by: gk
* @Last Modified time: 2018-03-22 18:12:34
*/
layui.define([], function (exports) {
"use strict";
var PinYin = {}
var PinYinArray = {
"a": "\u554a\u963f\u9515",
"ai": "\u57c3\u6328\u54ce\u5509\u54c0\u7691\u764c\u853c\u77ee\u827e\u788d\u7231\u9698\u8bf6\u6371\u55f3\u55cc\u5ad2\u7477\u66a7\u7839\u953f\u972d",
"an": "\u978d\u6c28\u5b89\u4ffa\u6309\u6697\u5cb8\u80fa\u6848\u8c19\u57ef\u63de\u72b4\u5eb5\u6849\u94f5\u9e4c\u9878\u9eef",
"ang": "\u80ae\u6602\u76ce",
"ao": "\u51f9\u6556\u71ac\u7ff1\u8884\u50b2\u5965\u61ca\u6fb3\u5773\u62d7\u55f7\u5662\u5c99\u5ed2\u9068\u5aaa\u9a9c\u8071\u87af\u93ca\u9ccc\u93d6",
"ba": "\u82ad\u634c\u6252\u53ed\u5427\u7b06\u516b\u75a4\u5df4\u62d4\u8dcb\u9776\u628a\u8019\u575d\u9738\u7f62\u7238\u8307\u83dd\u8406\u636d\u5c9c\u705e\u6777\u94af\u7c91\u9c85\u9b43",
"bai": "\u767d\u67cf\u767e\u6446\u4f70\u8d25\u62dc\u7a17\u859c\u63b0\u97b4",
"ban": "\u6591\u73ed\u642c\u6273\u822c\u9881\u677f\u7248\u626e\u62cc\u4f34\u74e3\u534a\u529e\u7eca\u962a\u5742\u8c73\u94a3\u7622\u764d\u8228",
"bang": "\u90a6\u5e2e\u6886\u699c\u8180\u7ed1\u68d2\u78c5\u868c\u9551\u508d\u8c24\u84a1\u8783",
"bao": "\u82de\u80de\u5305\u8912\u96f9\u4fdd\u5821\u9971\u5b9d\u62b1\u62a5\u66b4\u8c79\u9c8d\u7206\u52f9\u8446\u5b80\u5b62\u7172\u9e28\u8913\u8db5\u9f85",
"bo": "\u5265\u8584\u73bb\u83e0\u64ad\u62e8\u94b5\u6ce2\u535a\u52c3\u640f\u94c2\u7b94\u4f2f\u5e1b\u8236\u8116\u818a\u6e24\u6cca\u9a73\u4eb3\u8543\u5575\u997d\u6a97\u64d8\u7934\u94b9\u9e41\u7c38\u8ddb",
"bei": "\u676f\u7891\u60b2\u5351\u5317\u8f88\u80cc\u8d1d\u94a1\u500d\u72c8\u5907\u60eb\u7119\u88ab\u5b5b\u9642\u90b6\u57e4\u84d3\u5457\u602b\u6096\u789a\u9e4e\u8919\u943e",
"ben": "\u5954\u82ef\u672c\u7b28\u755a\u574c\u951b",
"beng": "\u5d29\u7ef7\u752d\u6cf5\u8e66\u8ff8\u552a\u5623\u750f",
"bi": "\u903c\u9f3b\u6bd4\u9119\u7b14\u5f7c\u78a7\u84d6\u853d\u6bd5\u6bd9\u6bd6\u5e01\u5e87\u75f9\u95ed\u655d\u5f0a\u5fc5\u8f9f\u58c1\u81c2\u907f\u965b\u5315\u4ef3\u4ffe\u8298\u835c\u8378\u5421\u54d4\u72f4\u5eb3\u610e\u6ed7\u6fde\u5f3c\u59a3\u5a62\u5b16\u74a7\u8d32\u7540\u94cb\u79d5\u88e8\u7b5a\u7b85\u7be6\u822d\u895e\u8df8\u9ac0",
"bian": "\u97ad\u8fb9\u7f16\u8d2c\u6241\u4fbf\u53d8\u535e\u8fa8\u8fa9\u8fab\u904d\u533e\u5f01\u82c4\u5fed\u6c74\u7f0f\u7178\u782d\u78a5\u7a39\u7a86\u8759\u7b3e\u9cca",
"biao": "\u6807\u5f6a\u8198\u8868\u5a4a\u9aa0\u98d1\u98d9\u98da\u706c\u9556\u9573\u762d\u88f1\u9cd4",
"bie": "\u9cd6\u618b\u522b\u762a\u8e69\u9cd8",
"bin": "\u5f6c\u658c\u6fd2\u6ee8\u5bbe\u6448\u50a7\u6d5c\u7f24\u73a2\u6ba1\u8191\u9554\u9acc\u9b13",
"bing": "\u5175\u51b0\u67c4\u4e19\u79c9\u997c\u70b3\u75c5\u5e76\u7980\u90b4\u6452\u7ee0\u678b\u69df\u71f9",
"bu": "\u6355\u535c\u54fa\u8865\u57e0\u4e0d\u5e03\u6b65\u7c3f\u90e8\u6016\u62ca\u535f\u900b\u74ff\u6661\u949a\u91ad",
"ca": "\u64e6\u5693\u7924",
"cai": "\u731c\u88c1\u6750\u624d\u8d22\u776c\u8e29\u91c7\u5f69\u83dc\u8521",
"can": "\u9910\u53c2\u8695\u6b8b\u60ed\u60e8\u707f\u9a96\u74a8\u7cb2\u9eea",
"cang": "\u82cd\u8231\u4ed3\u6ca7\u85cf\u4f27",
"cao": "\u64cd\u7cd9\u69fd\u66f9\u8349\u8279\u5608\u6f15\u87ac\u825a",
"ce": "\u5395\u7b56\u4fa7\u518c\u6d4b\u5202\u5e3b\u607b",
"ceng": "\u5c42\u8e6d\u564c",
"cha": "\u63d2\u53c9\u832c\u8336\u67e5\u78b4\u643d\u5bdf\u5c94\u5dee\u8be7\u7339\u9987\u6c4a\u59f9\u6748\u6942\u69ce\u6aab\u9497\u9538\u9572\u8869",
"chai": "\u62c6\u67f4\u8c7a\u4faa\u8308\u7625\u867f\u9f87",
"chan": "\u6400\u63ba\u8749\u998b\u8c17\u7f20\u94f2\u4ea7\u9610\u98a4\u5181\u8c04\u8c36\u8487\u5edb\u5fcf\u6f7a\u6fb6\u5b71\u7fbc\u5a75\u5b17\u9aa3\u89c7\u7985\u9561\u88e3\u87fe\u8e94",
"chang": "\u660c\u7316\u573a\u5c1d\u5e38\u957f\u507f\u80a0\u5382\u655e\u7545\u5531\u5021\u4f25\u9b2f\u82cc\u83d6\u5f9c\u6005\u60dd\u960a\u5a3c\u5ae6\u6636\u6c05\u9cb3",
"chao": "\u8d85\u6284\u949e\u671d\u5632\u6f6e\u5de2\u5435\u7092\u600a\u7ec9\u6641\u8016",
"che": "\u8f66\u626f\u64a4\u63a3\u5f7b\u6f88\u577c\u5c6e\u7817",
"chen": "\u90f4\u81e3\u8fb0\u5c18\u6668\u5ff1\u6c89\u9648\u8d81\u886c\u79f0\u8c0c\u62bb\u55d4\u5bb8\u741b\u6987\u809c\u80c2\u789c\u9f80",
"cheng": "\u6491\u57ce\u6a59\u6210\u5448\u4e58\u7a0b\u60e9\u6f84\u8bda\u627f\u901e\u9a8b\u79e4\u57d5\u5d4a\u5fb5\u6d48\u67a8\u67fd\u6a18\u665f\u584d\u77a0\u94d6\u88ce\u86cf\u9172",
"chi": "\u5403\u75f4\u6301\u5319\u6c60\u8fdf\u5f1b\u9a70\u803b\u9f7f\u4f88\u5c3a\u8d64\u7fc5\u65a5\u70bd\u50ba\u5880\u82aa\u830c\u640b\u53f1\u54e7\u557b\u55e4\u5f73\u996c\u6cb2\u5ab8\u6555\u80dd\u7719\u7735\u9e31\u761b\u892b\u86a9\u87ad\u7b1e\u7bea\u8c49\u8e05\u8e1f\u9b51",
"chong": "\u5145\u51b2\u866b\u5d07\u5ba0\u833a\u5fe1\u61a7\u94f3\u825f",
"chou": "\u62bd\u916c\u7574\u8e0c\u7a20\u6101\u7b79\u4ec7\u7ef8\u7785\u4e11\u4fe6\u5733\u5e31\u60c6\u6eb4\u59af\u7633\u96e0\u9c8b",
"chu": "\u81ed\u521d\u51fa\u6a71\u53a8\u8e87\u9504\u96cf\u6ec1\u9664\u695a\u7840\u50a8\u77d7\u6410\u89e6\u5904\u4e8d\u520d\u61b7\u7ecc\u6775\u696e\u6a17\u870d\u8e70\u9edc",
"chuan": "\u63e3\u5ddd\u7a7f\u693d\u4f20\u8239\u5598\u4e32\u63be\u821b\u60f4\u9044\u5ddb\u6c1a\u948f\u9569\u8221",
"chuang": "\u75ae\u7a97\u5e62\u5e8a\u95ef\u521b\u6006",
"chui": "\u5439\u708a\u6376\u9524\u5782\u9672\u68f0\u69cc",
"chun": "\u6625\u693f\u9187\u5507\u6df3\u7eaf\u8822\u4fc3\u83bc\u6c8c\u80ab\u6710\u9e51\u877d",
"chuo": "\u6233\u7ef0\u851f\u8fb6\u8f8d\u955e\u8e14\u9f8a",
"ci": "\u75b5\u8328\u78c1\u96cc\u8f9e\u6148\u74f7\u8bcd\u6b64\u523a\u8d50\u6b21\u8360\u5472\u5d6f\u9e5a\u8785\u7ccd\u8d91",
"cong": "\u806a\u8471\u56f1\u5306\u4ece\u4e1b\u506c\u82c1\u6dd9\u9aa2\u742e\u7481\u679e",
"cu": "\u51d1\u7c97\u918b\u7c07\u731d\u6b82\u8e59",
"cuan": "\u8e7f\u7be1\u7a9c\u6c46\u64ba\u6615\u7228",
"cui": "\u6467\u5d14\u50ac\u8106\u7601\u7cb9\u6dec\u7fe0\u8403\u60b4\u7480\u69b1\u96b9",
"cun": "\u6751\u5b58\u5bf8\u78cb\u5fd6\u76b4",
"cuo": "\u64ae\u6413\u63aa\u632b\u9519\u539d\u811e\u9509\u77ec\u75e4\u9e7e\u8e49\u8e9c",
"da": "\u642d\u8fbe\u7b54\u7629\u6253\u5927\u8037\u54d2\u55d2\u601b\u59b2\u75b8\u8921\u7b2a\u977c\u9791",
"dai": "\u5446\u6b79\u50a3\u6234\u5e26\u6b86\u4ee3\u8d37\u888b\u5f85\u902e\u6020\u57ed\u7519\u5454\u5cb1\u8fe8\u902f\u9a80\u7ed0\u73b3\u9edb",
"dan": "\u803d\u62c5\u4e39\u5355\u90f8\u63b8\u80c6\u65e6\u6c2e\u4f46\u60ee\u6de1\u8bde\u5f39\u86cb\u4ebb\u510b\u5369\u840f\u5556\u6fb9\u6a90\u6b9a\u8d55\u7708\u7605\u8043\u7baa",
"dang": "\u5f53\u6321\u515a\u8361\u6863\u8c20\u51fc\u83ea\u5b95\u7800\u94db\u88c6",
"dao": "\u5200\u6363\u8e48\u5012\u5c9b\u7977\u5bfc\u5230\u7a3b\u60bc\u9053\u76d7\u53e8\u5541\u5fc9\u6d2e\u6c18\u7118\u5fd1\u7e9b",
"de": "\u5fb7\u5f97\u7684\u951d",
"deng": "\u8e6c\u706f\u767b\u7b49\u77aa\u51f3\u9093\u5654\u5d9d\u6225\u78f4\u956b\u7c26",
"di": "\u5824\u4f4e\u6ef4\u8fea\u654c\u7b1b\u72c4\u6da4\u7fdf\u5ae1\u62b5\u5e95\u5730\u8482\u7b2c\u5e1d\u5f1f\u9012\u7f14\u6c10\u7c74\u8bcb\u8c1b\u90b8\u577b\u839c\u837b\u5600\u5a23\u67e2\u68e3\u89cc\u7825\u78b2\u7747\u955d\u7f9d\u9ab6",
"dian": "\u98a0\u6382\u6ec7\u7898\u70b9\u5178\u975b\u57ab\u7535\u4f43\u7538\u5e97\u60e6\u5960\u6dc0\u6bbf\u4e36\u963d\u576b\u57dd\u5dc5\u73b7\u765c\u766b\u7c1f\u8e2e",
"diao": "\u7889\u53fc\u96d5\u51cb\u5201\u6389\u540a\u9493\u8c03\u8f7a\u94de\u8729\u7c9c\u8c82",
"die": "\u8dcc\u7239\u789f\u8776\u8fed\u8c0d\u53e0\u4f5a\u57a4\u581e\u63f2\u558b\u6e2b\u8f76\u7252\u74de\u8936\u800b\u8e40\u9cbd\u9cce",
"ding": "\u4e01\u76ef\u53ee\u9489\u9876\u9f0e\u952d\u5b9a\u8ba2\u4e22\u4ec3\u5576\u738e\u815a\u7887\u753a\u94e4\u7594\u8035\u914a",
"dong": "\u4e1c\u51ac\u8463\u61c2\u52a8\u680b\u4f97\u606b\u51bb\u6d1e\u578c\u549a\u5cbd\u5cd2\u5902\u6c21\u80e8\u80f4\u7850\u9e2b",
"dou": "\u515c\u6296\u6597\u9661\u8c46\u9017\u75d8\u8538\u94ad\u7aa6\u7aac\u86aa\u7bfc\u9161",
"du": "\u90fd\u7763\u6bd2\u728a\u72ec\u8bfb\u5835\u7779\u8d4c\u675c\u9540\u809a\u5ea6\u6e21\u5992\u828f\u561f\u6e0e\u691f\u6a50\u724d\u8839\u7b03\u9ad1\u9ee9",
"duan": "\u7aef\u77ed\u953b\u6bb5\u65ad\u7f0e\u5f56\u6934\u7145\u7c16",
"dui": "\u5806\u5151\u961f\u5bf9\u603c\u619d\u7893",
"dun": "\u58a9\u5428\u8e72\u6566\u987f\u56e4\u949d\u76fe\u9041\u7096\u7818\u7905\u76f9\u9566\u8db8",
"duo": "\u6387\u54c6\u591a\u593a\u579b\u8eb2\u6735\u8dfa\u8235\u5241\u60f0\u5815\u5484\u54da\u7f0d\u67c1\u94ce\u88f0\u8e31",
"e": "\u86fe\u5ce8\u9e45\u4fc4\u989d\u8bb9\u5a25\u6076\u5384\u627c\u904f\u9102\u997f\u5669\u8c14\u57a9\u57ad\u82ca\u83aa\u843c\u5443\u6115\u5c59\u5a40\u8f6d\u66f7\u816d\u786a\u9507\u9537\u9e57\u989a\u9cc4",
"en": "\u6069\u84bd\u6441\u5514\u55ef",
"er": "\u800c\u513f\u8033\u5c14\u9975\u6d31\u4e8c\u8d30\u8fe9\u73e5\u94d2\u9e38\u9c95",
"fa": "\u53d1\u7f5a\u7b4f\u4f10\u4e4f\u9600\u6cd5\u73d0\u57a1\u781d",
"fan": "\u85e9\u5e06\u756a\u7ffb\u6a0a\u77fe\u9492\u7e41\u51e1\u70e6\u53cd\u8fd4\u8303\u8d29\u72af\u996d\u6cdb\u8629\u5e61\u72ad\u68b5\u6535\u71d4\u7548\u8e6f",
"fang": "\u574a\u82b3\u65b9\u80aa\u623f\u9632\u59a8\u4eff\u8bbf\u7eba\u653e\u531a\u90a1\u5f77\u94ab\u822b\u9c82",
"fei": "\u83f2\u975e\u5561\u98de\u80a5\u532a\u8bfd\u5420\u80ba\u5e9f\u6cb8\u8d39\u82be\u72d2\u60b1\u6ddd\u5983\u7ecb\u7eef\u69a7\u8153\u6590\u6249\u7953\u7829\u9544\u75f1\u871a\u7bda\u7fe1\u970f\u9cb1",
"fen": "\u82ac\u915a\u5429\u6c1b\u5206\u7eb7\u575f\u711a\u6c7e\u7c89\u594b\u4efd\u5fff\u6124\u7caa\u507e\u7035\u68fc\u610d\u9cbc\u9f22",
"feng": "\u4e30\u5c01\u67ab\u8702\u5cf0\u950b\u98ce\u75af\u70fd\u9022\u51af\u7f1d\u8bbd\u5949\u51e4\u4ff8\u9146\u8451\u6ca3\u781c",
"fu": "\u4f5b\u5426\u592b\u6577\u80a4\u5b75\u6276\u62c2\u8f90\u5e45\u6c1f\u7b26\u4f0f\u4fd8\u670d\u6d6e\u6daa\u798f\u88b1\u5f17\u752b\u629a\u8f85\u4fef\u91dc\u65a7\u812f\u8151\u5e9c\u8150\u8d74\u526f\u8986\u8d4b\u590d\u5085\u4ed8\u961c\u7236\u8179\u8d1f\u5bcc\u8ba3\u9644\u5987\u7f1a\u5490\u5310\u51eb\u90db\u8299\u82fb\u832f\u83a9\u83d4\u544b\u5e5e\u6ecf\u8274\u5b5a\u9a78\u7ec2\u6874\u8d59\u9efb\u9efc\u7f58\u7a03\u99a5\u864d\u86a8\u8709\u8760\u876e\u9eb8\u8dba\u8dd7\u9cc6",
"ga": "\u5676\u560e\u86e4\u5c2c\u5477\u5c15\u5c1c\u65ee\u9486",
"gai": "\u8be5\u6539\u6982\u9499\u76d6\u6e89\u4e10\u9654\u5793\u6224\u8d45\u80f2",
"gan": "\u5e72\u7518\u6746\u67d1\u7aff\u809d\u8d76\u611f\u79c6\u6562\u8d63\u5769\u82f7\u5c34\u64c0\u6cd4\u6de6\u6f89\u7ec0\u6a44\u65f0\u77f8\u75b3\u9150",
"gang": "\u5188\u521a\u94a2\u7f38\u809b\u7eb2\u5c97\u6e2f\u6206\u7f61\u9883\u7b7b",
"gong": "\u6760\u5de5\u653b\u529f\u606d\u9f9a\u4f9b\u8eac\u516c\u5bab\u5f13\u5de9\u6c5e\u62f1\u8d21\u5171\u857b\u5efe\u54a3\u73d9\u80b1\u86a3\u86e9\u89e5",
"gao": "\u7bd9\u768b\u9ad8\u818f\u7f94\u7cd5\u641e\u9550\u7a3f\u544a\u777e\u8bf0\u90dc\u84bf\u85c1\u7f1f\u69d4\u69c1\u6772\u9506",
"ge": "\u54e5\u6b4c\u6401\u6208\u9e3d\u80f3\u7599\u5272\u9769\u845b\u683c\u9601\u9694\u94ec\u4e2a\u5404\u9b32\u4ee1\u54ff\u5865\u55dd\u7ea5\u643f\u8188\u784c\u94ea\u9549\u88bc\u988c\u867c\u8238\u9abc\u9ac2",
"gei": "\u7ed9",
"gen": "\u6839\u8ddf\u4e98\u831b\u54cf\u826e",
"geng": "\u8015\u66f4\u5e9a\u7fb9\u57c2\u803f\u6897\u54fd\u8d53\u9ca0",
"gou": "\u94a9\u52fe\u6c9f\u82df\u72d7\u57a2\u6784\u8d2d\u591f\u4f5d\u8bdf\u5ca3\u9058\u5abe\u7f11\u89cf\u5f40\u9e32\u7b31\u7bdd\u97b2",
"gu": "\u8f9c\u83c7\u5495\u7b8d\u4f30\u6cbd\u5b64\u59d1\u9f13\u53e4\u86ca\u9aa8\u8c37\u80a1\u6545\u987e\u56fa\u96c7\u560f\u8bc2\u83f0\u54cc\u5d2e\u6c69\u688f\u8f71\u726f\u727f\u80cd\u81cc\u6bc2\u77bd\u7f5f\u94b4\u9522\u74e0\u9e2a\u9e44\u75fc\u86c4\u9164\u89da\u9cb4\u9ab0\u9e58",
"gua": "\u522e\u74dc\u5250\u5be1\u6302\u8902\u5366\u8bd6\u5471\u681d\u9e39",
"guai": "\u4e56\u62d0\u602a\u54d9",
"guan": "\u68fa\u5173\u5b98\u51a0\u89c2\u7ba1\u9986\u7f50\u60ef\u704c\u8d2f\u500c\u839e\u63bc\u6dab\u76e5\u9e73\u9ccf",
"guang": "\u5149\u5e7f\u901b\u72b7\u6844\u80f1\u7592",
"gui": "\u7470\u89c4\u572d\u7845\u5f52\u9f9f\u95fa\u8f68\u9b3c\u8be1\u7678\u6842\u67dc\u8dea\u8d35\u523d\u5326\u523f\u5e8b\u5b84\u59ab\u6867\u7085\u6677\u7688\u7c0b\u9c91\u9cdc",
"gun": "\u8f8a\u6eda\u68cd\u4e28\u886e\u7ef2\u78d9\u9ca7",
"guo": "\u9505\u90ed\u56fd\u679c\u88f9\u8fc7\u9998\u8803\u57da\u63b4\u5459\u56d7\u5e3c\u5d1e\u7313\u6901\u8662\u951e\u8052\u872e\u873e\u8748",
"ha": "\u54c8",
"hai": "\u9ab8\u5b69\u6d77\u6c26\u4ea5\u5bb3\u9a87\u54b4\u55e8\u988f\u91a2",
"han": "\u9163\u61a8\u90af\u97e9\u542b\u6db5\u5bd2\u51fd\u558a\u7f55\u7ff0\u64bc\u634d\u65f1\u61be\u608d\u710a\u6c57\u6c49\u9097\u83e1\u6496\u961a\u701a\u6657\u7113\u9894\u86b6\u9f3e",
"hen": "\u592f\u75d5\u5f88\u72e0\u6068",
"hang": "\u676d\u822a\u6c86\u7ed7\u73e9\u6841",
"hao": "\u58d5\u568e\u8c6a\u6beb\u90dd\u597d\u8017\u53f7\u6d69\u8585\u55e5\u5686\u6fe0\u704f\u660a\u7693\u98a2\u869d",
"he": "\u5475\u559d\u8377\u83cf\u6838\u79be\u548c\u4f55\u5408\u76d2\u8c89\u9602\u6cb3\u6db8\u8d6b\u8910\u9e64\u8d3a\u8bc3\u52be\u58d1\u85ff\u55d1\u55ec\u9616\u76cd\u86b5\u7fee",
"hei": "\u563f\u9ed1",
"heng": "\u54fc\u4ea8\u6a2a\u8861\u6052\u8a07\u8605",
"hong": "\u8f70\u54c4\u70d8\u8679\u9e3f\u6d2a\u5b8f\u5f18\u7ea2\u9ec9\u8ba7\u836d\u85a8\u95f3\u6cd3",
"hou": "\u5589\u4faf\u7334\u543c\u539a\u5019\u540e\u5820\u5f8c\u9005\u760a\u7bcc\u7cc7\u9c8e\u9aba",
"hu": "\u547c\u4e4e\u5ffd\u745a\u58f6\u846b\u80e1\u8774\u72d0\u7cca\u6e56\u5f27\u864e\u552c\u62a4\u4e92\u6caa\u6237\u51b1\u553f\u56eb\u5cb5\u7322\u6019\u60da\u6d52\u6ef9\u7425\u69f2\u8f77\u89f3\u70c0\u7173\u623d\u6248\u795c\u9e55\u9e71\u7b0f\u9190\u659b",
"hua": "\u82b1\u54d7\u534e\u733e\u6ed1\u753b\u5212\u5316\u8bdd\u5290\u6d4d\u9a85\u6866\u94e7\u7a1e",
"huai": "\u69d0\u5f8a\u6000\u6dee\u574f\u8fd8\u8e1d",
"huan": "\u6b22\u73af\u6853\u7f13\u6362\u60a3\u5524\u75ea\u8c62\u7115\u6da3\u5ba6\u5e7b\u90c7\u5942\u57b8\u64d0\u571c\u6d39\u6d63\u6f36\u5bf0\u902d\u7f33\u953e\u9ca9\u9b1f",
"huang": "\u8352\u614c\u9ec4\u78fa\u8757\u7c27\u7687\u51f0\u60f6\u714c\u6643\u5e4c\u604d\u8c0e\u968d\u5fa8\u6e5f\u6f62\u9051\u749c\u8093\u7640\u87e5\u7bc1\u9cc7",
"hui": "\u7070\u6325\u8f89\u5fbd\u6062\u86d4\u56de\u6bc1\u6094\u6167\u5349\u60e0\u6666\u8d3f\u79fd\u4f1a\u70e9\u6c47\u8bb3\u8bf2\u7ed8\u8bd9\u8334\u835f\u8559\u54d5\u5599\u96b3\u6d04\u5f57\u7f0b\u73f2\u6656\u605a\u867a\u87ea\u9ebe",
"hun": "\u8364\u660f\u5a5a\u9b42\u6d51\u6df7\u8be8\u9984\u960d\u6eb7\u7f17",
"huo": "\u8c41\u6d3b\u4f19\u706b\u83b7\u6216\u60d1\u970d\u8d27\u7978\u6509\u56af\u5925\u94ac\u952a\u956c\u8020\u8816",
"ji": "\u51fb\u573e\u57fa\u673a\u7578\u7a3d\u79ef\u7b95\u808c\u9965\u8ff9\u6fc0\u8ba5\u9e21\u59ec\u7ee9\u7f09\u5409\u6781\u68d8\u8f91\u7c4d\u96c6\u53ca\u6025\u75be\u6c72\u5373\u5ac9\u7ea7\u6324\u51e0\u810a\u5df1\u84df\u6280\u5180\u5b63\u4f0e\u796d\u5242\u60b8\u6d4e\u5bc4\u5bc2\u8ba1\u8bb0\u65e2\u5fcc\u9645\u5993\u7ee7\u7eaa\u5c45\u4e0c\u4e69\u525e\u4f76\u4f74\u8114\u58bc\u82a8\u82b0\u8401\u84ba\u857a\u638e\u53fd\u54ad\u54dc\u5527\u5c8c\u5d74\u6d0e\u5f50\u5c50\u9aa5\u757f\u7391\u696b\u6b9b\u621f\u6222\u8d4d\u89ca\u7284\u9f51\u77f6\u7f81\u5d47\u7a37\u7620\u7635\u866e\u7b08\u7b04\u66a8\u8dfb\u8dfd\u9701\u9c9a\u9cab\u9afb\u9e82",
"jia": "\u5609\u67b7\u5939\u4f73\u5bb6\u52a0\u835a\u988a\u8d3e\u7532\u94be\u5047\u7a3c\u4ef7\u67b6\u9a7e\u5ac1\u4f3d\u90cf\u62ee\u5cac\u6d43\u8fe6\u73c8\u621b\u80db\u605d\u94d7\u9553\u75c2\u86f1\u7b33\u8888\u8dcf",
"jian": "\u6b7c\u76d1\u575a\u5c16\u7b3a\u95f4\u714e\u517c\u80a9\u8270\u5978\u7f04\u8327\u68c0\u67ec\u78b1\u7877\u62e3\u6361\u7b80\u4fed\u526a\u51cf\u8350\u69db\u9274\u8df5\u8d31\u89c1\u952e\u7bad\u4ef6\u5065\u8230\u5251\u996f\u6e10\u6e85\u6da7\u5efa\u50ed\u8c0f\u8c2b\u83c5\u84b9\u641b\u56dd\u6e54\u8e47\u8b07\u7f23\u67a7\u67d9\u6957\u620b\u622c\u726e\u728d\u6bfd\u8171\u7751\u950f\u9e63\u88e5\u7b15\u7bb4\u7fe6\u8dbc\u8e3a\u9ca3\u97af",
"jiang": "\u50f5\u59dc\u5c06\u6d46\u6c5f\u7586\u848b\u6868\u5956\u8bb2\u5320\u9171\u964d\u8333\u6d1a\u7edb\u7f30\u729f\u7913\u8029\u7ce8\u8c47",
"jiao": "\u8549\u6912\u7901\u7126\u80f6\u4ea4\u90ca\u6d47\u9a84\u5a07\u56bc\u6405\u94f0\u77eb\u4fa5\u811a\u72e1\u89d2\u997a\u7f34\u7ede\u527f\u6559\u9175\u8f7f\u8f83\u53eb\u4f7c\u50ec\u832d\u6322\u564d\u5ce4\u5fbc\u59e3\u7e9f\u656b\u768e\u9e6a\u86df\u91ae\u8de4\u9c9b",
"jie": "\u7a96\u63ed\u63a5\u7686\u79f8\u8857\u9636\u622a\u52ab\u8282\u6854\u6770\u6377\u776b\u7aed\u6d01\u7ed3\u89e3\u59d0\u6212\u85c9\u82a5\u754c\u501f\u4ecb\u75a5\u8beb\u5c4a\u5048\u8ba6\u8bd8\u5588\u55df\u736c\u5a55\u5b51\u6840\u7352\u78a3\u9534\u7596\u88b7\u9889\u86a7\u7faf\u9c92\u9ab1\u9aeb",
"jin": "\u5dfe\u7b4b\u65a4\u91d1\u4eca\u6d25\u895f\u7d27\u9526\u4ec5\u8c28\u8fdb\u9773\u664b\u7981\u8fd1\u70ec\u6d78\u5c3d\u537a\u8369\u5807\u5664\u9991\u5ed1\u5997\u7f19\u747e\u69ff\u8d46\u89d0\u9485\u9513\u887f\u77dc",
"jing": "\u52b2\u8346\u5162\u830e\u775b\u6676\u9cb8\u4eac\u60ca\u7cbe\u7cb3\u7ecf\u4e95\u8b66\u666f\u9888\u9759\u5883\u656c\u955c\u5f84\u75c9\u9756\u7adf\u7ade\u51c0\u522d\u5106\u9631\u83c1\u734d\u61ac\u6cfe\u8ff3\u5f2a\u5a67\u80bc\u80eb\u8148\u65cc",
"jiong": "\u70af\u7a98\u5182\u8fe5\u6243",
"jiu": "\u63ea\u7a76\u7ea0\u7396\u97ed\u4e45\u7078\u4e5d\u9152\u53a9\u6551\u65e7\u81fc\u8205\u548e\u5c31\u759a\u50e6\u557e\u9604\u67e9\u6855\u9e6b\u8d73\u9b0f",
"ju": "\u97a0\u62d8\u72d9\u75bd\u9a79\u83ca\u5c40\u5480\u77e9\u4e3e\u6cae\u805a\u62d2\u636e\u5de8\u5177\u8ddd\u8e1e\u952f\u4ff1\u53e5\u60e7\u70ac\u5267\u5028\u8bb5\u82e3\u82f4\u8392\u63ac\u907d\u5c66\u741a\u67b8\u6910\u6998\u6989\u6a58\u728b\u98d3\u949c\u9514\u7aad\u88fe\u8d84\u91b5\u8e3d\u9f83\u96ce\u97ab",
"juan": "\u6350\u9e43\u5a1f\u5026\u7737\u5377\u7ee2\u9104\u72f7\u6d93\u684a\u8832\u9529\u954c\u96bd",
"jue": "\u6485\u652b\u6289\u6398\u5014\u7235\u89c9\u51b3\u8bc0\u7edd\u53a5\u5282\u8c32\u77cd\u8568\u5658\u5d1b\u7357\u5b53\u73cf\u6877\u6a5b\u721d\u9562\u8e76\u89d6",
"jun": "\u5747\u83cc\u94a7\u519b\u541b\u5cfb\u4fca\u7ae3\u6d5a\u90e1\u9a8f\u6343\u72fb\u76b2\u7b60\u9e87",
"ka": "\u5580\u5496\u5361\u4f67\u5494\u80e9",
"ke": "\u54af\u5777\u82db\u67ef\u68f5\u78d5\u9897\u79d1\u58f3\u54b3\u53ef\u6e34\u514b\u523b\u5ba2\u8bfe\u5ca2\u606a\u6e98\u9a92\u7f02\u73c2\u8f72\u6c2a\u778c\u94b6\u75b4\u7aa0\u874c\u9ac1",
"kai": "\u5f00\u63e9\u6977\u51ef\u6168\u5240\u57b2\u8488\u5ffe\u607a\u94e0\u950e",
"kan": "\u520a\u582a\u52d8\u574e\u780d\u770b\u4f83\u51f5\u83b0\u83b6\u6221\u9f9b\u77b0",
"kang": "\u5eb7\u6177\u7ce0\u625b\u6297\u4ea2\u7095\u5751\u4f09\u95f6\u94aa",
"kao": "\u8003\u62f7\u70e4\u9760\u5c3b\u6832\u7292\u94d0",
"ken": "\u80af\u5543\u57a6\u6073\u57a0\u88c9\u9880",
"keng": "\u542d\u5fd0\u94ff",
"kong": "\u7a7a\u6050\u5b54\u63a7\u5025\u5d06\u7b9c",
"kou": "\u62a0\u53e3\u6263\u5bc7\u82a4\u853b\u53e9\u770d\u7b58",
"ku": "\u67af\u54ed\u7a9f\u82e6\u9177\u5e93\u88e4\u5233\u5800\u55be\u7ed4\u9ab7",
"kua": "\u5938\u57ae\u630e\u8de8\u80ef\u4f89",
"kuai": "\u5757\u7b77\u4fa9\u5feb\u84af\u90d0\u8489\u72ef\u810d",
"kuan": "\u5bbd\u6b3e\u9acb",
"kuang": "\u5321\u7b50\u72c2\u6846\u77ff\u7736\u65f7\u51b5\u8bd3\u8bf3\u909d\u5739\u593c\u54d0\u7ea9\u8d36",
"kui": "\u4e8f\u76d4\u5cbf\u7aa5\u8475\u594e\u9b41\u5080\u9988\u6127\u6e83\u9997\u532e\u5914\u9697\u63c6\u55b9\u559f\u609d\u6126\u9615\u9035\u668c\u777d\u8069\u8770\u7bd1\u81fe\u8dec",
"kun": "\u5764\u6606\u6346\u56f0\u6083\u9603\u7428\u951f\u918c\u9cb2\u9ae1",
"kuo": "\u62ec\u6269\u5ed3\u9614\u86de",
"la": "\u5783\u62c9\u5587\u8721\u814a\u8fa3\u5566\u524c\u647a\u908b\u65ef\u782c\u760c",
"lai": "\u83b1\u6765\u8d56\u5d03\u5f95\u6d9e\u6fd1\u8d49\u7750\u94fc\u765e\u7c41",
"lan": "\u84dd\u5a6a\u680f\u62e6\u7bee\u9611\u5170\u6f9c\u8c30\u63fd\u89c8\u61d2\u7f06\u70c2\u6ee5\u5549\u5c9a\u61d4\u6f24\u6984\u6593\u7f71\u9567\u8934",
"lang": "\u7405\u6994\u72fc\u5eca\u90ce\u6717\u6d6a\u83a8\u8497\u5577\u9606\u9512\u7a02\u8782",
"lao": "\u635e\u52b3\u7262\u8001\u4f6c\u59e5\u916a\u70d9\u6d9d\u5520\u5d02\u6833\u94d1\u94f9\u75e8\u91aa",
"le": "\u52d2\u4e50\u808b\u4ec2\u53fb\u561e\u6cd0\u9cd3",
"lei": "\u96f7\u956d\u857e\u78ca\u7d2f\u5121\u5792\u64c2\u7c7b\u6cea\u7fb8\u8bd4\u837d\u54a7\u6f2f\u5ad8\u7f27\u6a91\u8012\u9179",
"ling": "\u68f1\u51b7\u62ce\u73b2\u83f1\u96f6\u9f84\u94c3\u4f36\u7f9a\u51cc\u7075\u9675\u5cad\u9886\u53e6\u4ee4\u9143\u5844\u82d3\u5464\u56f9\u6ce0\u7eeb\u67c3\u68c2\u74f4\u8046\u86c9\u7fce\u9cae",
"leng": "\u695e\u6123",
"li": "\u5398\u68a8\u7281\u9ece\u7bf1\u72f8\u79bb\u6f13\u7406\u674e\u91cc\u9ca4\u793c\u8389\u8354\u540f\u6817\u4e3d\u5389\u52b1\u783e\u5386\u5229\u5088\u4f8b\u4fd0\u75e2\u7acb\u7c92\u6ca5\u96b6\u529b\u7483\u54e9\u4fea\u4fda\u90e6\u575c\u82c8\u8385\u84e0\u85dc\u6369\u5456\u5533\u55b1\u7301\u6ea7\u6fa7\u9026\u5a0c\u5ae0\u9a8a\u7f21\u73de\u67a5\u680e\u8f79\u623e\u783a\u8a48\u7f79\u9502\u9e42\u75a0\u75ac\u86ce\u870a\u8821\u7b20\u7be5\u7c9d\u91b4\u8dde\u96f3\u9ca1\u9ce2\u9ee7",
"lian": "\u4fe9\u8054\u83b2\u8fde\u9570\u5ec9\u601c\u6d9f\u5e18\u655b\u8138\u94fe\u604b\u70bc\u7ec3\u631b\u8539\u5941\u6f4b\u6fc2\u5a08\u740f\u695d\u6b93\u81c1\u81a6\u88e2\u880a\u9ca2",
"liang": "\u7cae\u51c9\u6881\u7cb1\u826f\u4e24\u8f86\u91cf\u667e\u4eae\u8c05\u589a\u690b\u8e09\u9753\u9b49",
"liao": "\u64a9\u804a\u50da\u7597\u71ce\u5be5\u8fbd\u6f66\u4e86\u6482\u9563\u5ed6\u6599\u84fc\u5c25\u5639\u7360\u5bee\u7f2d\u948c\u9e69\u8022",
"lie": "\u5217\u88c2\u70c8\u52a3\u730e\u51bd\u57d2\u6d0c\u8d94\u8e90\u9b23",
"lin": "\u7433\u6797\u78f7\u9716\u4e34\u90bb\u9cde\u6dcb\u51db\u8d41\u541d\u853a\u5d99\u5eea\u9074\u6aa9\u8f9a\u77b5\u7cbc\u8e8f\u9e9f",
"liu": "\u6e9c\u7409\u69b4\u786b\u998f\u7559\u5218\u7624\u6d41\u67f3\u516d\u62a1\u507b\u848c\u6cd6\u6d4f\u905b\u9a9d\u7efa\u65d2\u7198\u950d\u954f\u9e68\u938f",
"long": "\u9f99\u804b\u5499\u7b3c\u7abf\u9686\u5784\u62e2\u9647\u5f04\u5785\u830f\u6cf7\u73d1\u680a\u80e7\u783b\u7643",
"lou": "\u697c\u5a04\u6402\u7bd3\u6f0f\u964b\u55bd\u5d5d\u9542\u7618\u8027\u877c\u9ac5",
"lu": "\u82a6\u5362\u9885\u5e90\u7089\u63b3\u5364\u864f\u9c81\u9e93\u788c\u9732\u8def\u8d42\u9e7f\u6f5e\u7984\u5f55\u9646\u622e\u5786\u6445\u64b8\u565c\u6cf8\u6e0c\u6f09\u7490\u680c\u6a79\u8f73\u8f82\u8f98\u6c07\u80ea\u9565\u9e2c\u9e6d\u7c0f\u823b\u9c88",
"lv": "\u9a74\u5415\u94dd\u4fa3\u65c5\u5c65\u5c61\u7f15\u8651\u6c2f\u5f8b\u7387\u6ee4\u7eff\u634b\u95fe\u6988\u8182\u7a06\u891b",
"luan": "\u5ce6\u5b6a\u6ee6\u5375\u4e71\u683e\u9e3e\u92ae",
"lue": "\u63a0\u7565\u950a",
"lun": "\u8f6e\u4f26\u4ed1\u6ca6\u7eb6\u8bba\u56f5",
"luo": "\u841d\u87ba\u7f57\u903b\u9523\u7ba9\u9aa1\u88f8\u843d\u6d1b\u9a86\u7edc\u502e\u8366\u645e\u7321\u6cfa\u6924\u8136\u9559\u7630\u96d2",
"ma": "\u5988\u9ebb\u739b\u7801\u8682\u9a6c\u9a82\u561b\u5417\u551b\u72b8\u5b37\u6769\u9ebd",
"mai": "\u57cb\u4e70\u9ea6\u5356\u8fc8\u8109\u52a2\u836c\u54aa\u973e",
"man": "\u7792\u9992\u86ee\u6ee1\u8513\u66fc\u6162\u6f2b\u8c29\u5881\u5e54\u7f26\u71b3\u9558\u989f\u87a8\u9cd7\u9794",
"mang": "\u8292\u832b\u76f2\u5fd9\u83bd\u9099\u6f2d\u6726\u786d\u87d2",
"meng": "\u6c13\u840c\u8499\u6aac\u76df\u9530\u731b\u68a6\u5b5f\u52d0\u750d\u77a2\u61f5\u791e\u867b\u8722\u8813\u824b\u8268\u9efe",
"miao": "\u732b\u82d7\u63cf\u7784\u85d0\u79d2\u6e3a\u5e99\u5999\u55b5\u9088\u7f08\u7f2a\u676a\u6dfc\u7707\u9e4b\u8731",
"mao": "\u8305\u951a\u6bdb\u77db\u94c6\u536f\u8302\u5192\u5e3d\u8c8c\u8d38\u4f94\u88a4\u52d6\u8306\u5cc1\u7441\u6634\u7266\u8004\u65c4\u61cb\u7780\u86d1\u8765\u87ca\u9ae6",
"me": "\u4e48",
"mei": "\u73ab\u679a\u6885\u9176\u9709\u7164\u6ca1\u7709\u5a92\u9541\u6bcf\u7f8e\u6627\u5bd0\u59b9\u5a9a\u5776\u8393\u5d4b\u7338\u6d7c\u6e44\u6963\u9545\u9e5b\u8882\u9b45",
"men": "\u95e8\u95f7\u4eec\u626a\u739f\u7116\u61d1\u9494",
"mi": "\u772f\u919a\u9761\u7cdc\u8ff7\u8c1c\u5f25\u7c73\u79d8\u89c5\u6ccc\u871c\u5bc6\u5e42\u8288\u5196\u8c27\u863c\u5627\u7315\u736f\u6c68\u5b93\u5f2d\u8112\u6549\u7cf8\u7e3b\u9e8b",
"mian": "\u68c9\u7720\u7ef5\u5195\u514d\u52c9\u5a29\u7f05\u9762\u6c94\u6e4e\u817c\u7704",
"mie": "\u8511\u706d\u54a9\u881b\u7bfe",
"min": "\u6c11\u62bf\u76bf\u654f\u60af\u95fd\u82e0\u5cb7\u95f5\u6cef\u73c9",
"ming": "\u660e\u879f\u9e23\u94ed\u540d\u547d\u51a5\u8317\u6e9f\u669d\u7791\u9169",
"miu": "\u8c2c",
"mo": "\u6478\u6479\u8611\u6a21\u819c\u78e8\u6469\u9b54\u62b9\u672b\u83ab\u58a8\u9ed8\u6cab\u6f20\u5bde\u964c\u8c1f\u8309\u84e6\u998d\u5aeb\u9546\u79e3\u763c\u8031\u87c6\u8c8a\u8c98",
"mou": "\u8c0b\u725f\u67d0\u53b6\u54de\u5a7a\u7738\u936a",
"mu": "\u62c7\u7261\u4ea9\u59c6\u6bcd\u5893\u66ae\u5e55\u52df\u6155\u6728\u76ee\u7766\u7267\u7a46\u4eeb\u82dc\u5452\u6c90\u6bea\u94bc",
"na": "\u62ff\u54ea\u5450\u94a0\u90a3\u5a1c\u7eb3\u5185\u637a\u80ad\u954e\u8872\u7bac",
"nai": "\u6c16\u4e43\u5976\u8010\u5948\u9f10\u827f\u8418\u67f0",
"nan": "\u5357\u7537\u96be\u56ca\u5583\u56e1\u6960\u8169\u877b\u8d67",
"nao": "\u6320\u8111\u607c\u95f9\u5b6c\u57b4\u7331\u7459\u7847\u94d9\u86f2",
"ne": "\u6dd6\u5462\u8bb7",
"nei": "\u9981",
"nen": "\u5ae9\u80fd\u6798\u6041",
"ni": "\u59ae\u9713\u502a\u6ce5\u5c3c\u62df\u4f60\u533f\u817b\u9006\u6eba\u4f32\u576d\u730a\u6029\u6ee0\u6635\u65ce\u7962\u615d\u7768\u94cc\u9cb5",
"nian": "\u852b\u62c8\u5e74\u78be\u64b5\u637b\u5ff5\u5eff\u8f87\u9ecf\u9c87\u9cb6",
"niang": "\u5a18\u917f",
"niao": "\u9e1f\u5c3f\u8311\u5b32\u8132\u8885",
"nie": "\u634f\u8042\u5b7d\u556e\u954a\u954d\u6d85\u4e5c\u9667\u8616\u55eb\u8080\u989e\u81ec\u8e51",
"nin": "\u60a8\u67e0",
"ning": "\u72de\u51dd\u5b81\u62e7\u6cde\u4f5e\u84e5\u549b\u752f\u804d",
"niu": "\u725b\u626d\u94ae\u7ebd\u72c3\u5ff8\u599e\u86b4",
"nong": "\u8113\u6d53\u519c\u4fac",
"nu": "\u5974\u52aa\u6012\u5476\u5e11\u5f29\u80ec\u5b65\u9a7d",
"nv": "\u5973\u6067\u9495\u8844",
"nuan": "\u6696",
"nuenue": "\u8650",
"nue": "\u759f\u8c11",
"nuo": "\u632a\u61e6\u7cef\u8bfa\u50a9\u6426\u558f\u9518",
"ou": "\u54e6\u6b27\u9e25\u6bb4\u85d5\u5455\u5076\u6ca4\u6004\u74ef\u8026",
"pa": "\u556a\u8db4\u722c\u5e15\u6015\u7436\u8469\u7b62",
"pai": "\u62cd\u6392\u724c\u5f98\u6e43\u6d3e\u4ff3\u848e",
"pan": "\u6500\u6f58\u76d8\u78d0\u76fc\u7554\u5224\u53db\u723f\u6cee\u88a2\u897b\u87e0\u8e52",
"pang": "\u4e53\u5e9e\u65c1\u802a\u80d6\u6ec2\u9004",
"pao": "\u629b\u5486\u5228\u70ae\u888d\u8dd1\u6ce1\u530f\u72cd\u5e96\u812c\u75b1",
"pei": "\u5478\u80da\u57f9\u88f4\u8d54\u966a\u914d\u4f69\u6c9b\u638a\u8f94\u5e14\u6de0\u65c6\u952b\u9185\u9708",
"pen": "\u55b7\u76c6\u6e53",
"peng": "\u7830\u62a8\u70f9\u6f8e\u5f6d\u84ec\u68da\u787c\u7bf7\u81a8\u670b\u9e4f\u6367\u78b0\u576f\u580b\u562d\u6026\u87db",
"pi": "\u7812\u9739\u6279\u62ab\u5288\u7435\u6bd7\u5564\u813e\u75b2\u76ae\u5339\u75de\u50fb\u5c41\u8b6c\u4e15\u9674\u90b3\u90eb\u572e\u9f19\u64d7\u567c\u5e80\u5ab2\u7eb0\u6787\u7513\u7765\u7f74\u94cd\u75e6\u7656\u758b\u868d\u8c94",
"pian": "\u7bc7\u504f\u7247\u9a97\u8c1d\u9a88\u728f\u80fc\u890a\u7fe9\u8e41",
"piao": "\u98d8\u6f02\u74e2\u7968\u527d\u560c\u5ad6\u7f25\u6b8d\u779f\u87b5",
"pie": "\u6487\u77a5\u4e3f\u82e4\u6c15",
"pin": "\u62fc\u9891\u8d2b\u54c1\u8058\u62da\u59d8\u5ad4\u6980\u725d\u98a6",
"ping": "\u4e52\u576a\u82f9\u840d\u5e73\u51ed\u74f6\u8bc4\u5c4f\u4fdc\u5a09\u67b0\u9c86",
"po": "\u5761\u6cfc\u9887\u5a46\u7834\u9b44\u8feb\u7c95\u53f5\u9131\u6ea5\u73c0\u948b\u94b7\u76a4\u7b38",
"pou": "\u5256\u88d2\u8e23",
"pu": "\u6251\u94fa\u4ec6\u8386\u8461\u83e9\u84b2\u57d4\u6734\u5703\u666e\u6d66\u8c31\u66dd\u7011\u530d\u5657\u6fee\u749e\u6c06\u9564\u9568\u8e7c",
"qi": "\u671f\u6b3a\u6816\u621a\u59bb\u4e03\u51c4\u6f06\u67d2\u6c8f\u5176\u68cb\u5947\u6b67\u7566\u5d0e\u8110\u9f50\u65d7\u7948\u7941\u9a91\u8d77\u5c82\u4e5e\u4f01\u542f\u5951\u780c\u5668\u6c14\u8fc4\u5f03\u6c7d\u6ce3\u8bab\u4e9f\u4e93\u573b\u8291\u840b\u847a\u5601\u5c7a\u5c90\u6c54\u6dc7\u9a90\u7eee\u742a\u7426\u675e\u6864\u69ed\u6b39\u797a\u61a9\u789b\u86f4\u871e\u7da6\u7dae\u8dbf\u8e4a\u9ccd\u9e92",
"qia": "\u6390\u6070\u6d3d\u845c",
"qian": "\u7275\u6266\u948e\u94c5\u5343\u8fc1\u7b7e\u4edf\u8c26\u4e7e\u9ed4\u94b1\u94b3\u524d\u6f5c\u9063\u6d45\u8c34\u5811\u5d4c\u6b20\u6b49\u4f65\u9621\u828a\u82a1\u8368\u63ae\u5c8d\u60ad\u614a\u9a9e\u6434\u8930\u7f31\u6920\u80b7\u6106\u94a4\u8654\u7b9d",
"qiang": "\u67aa\u545b\u8154\u7f8c\u5899\u8537\u5f3a\u62a2\u5af1\u6a2f\u6217\u709d\u9516\u9535\u956a\u8941\u8723\u7f9f\u8deb\u8dc4",
"qiao": "\u6a47\u9539\u6572\u6084\u6865\u77a7\u4e54\u4fa8\u5de7\u9798\u64ac\u7fd8\u5ced\u4fcf\u7a8d\u5281\u8bee\u8c2f\u835e\u6100\u6194\u7f32\u6a35\u6bf3\u7857\u8df7\u9792",
"qie": "\u5207\u8304\u4e14\u602f\u7a83\u90c4\u553c\u60ec\u59be\u6308\u9532\u7ba7",
"qin": "\u94a6\u4fb5\u4eb2\u79e6\u7434\u52e4\u82b9\u64d2\u79bd\u5bdd\u6c81\u82a9\u84c1\u8572\u63ff\u5423\u55ea\u5659\u6eb1\u6a8e\u8793\u887e",
"qing": "\u9752\u8f7b\u6c22\u503e\u537f\u6e05\u64ce\u6674\u6c30\u60c5\u9877\u8bf7\u5e86\u5029\u82d8\u570a\u6aa0\u78ec\u873b\u7f44\u7b90\u8b26\u9cad\u9ee5",
"qiong": "\u743c\u7a77\u909b\u8315\u7a79\u7b47\u928e",
"qiu": "\u79cb\u4e18\u90b1\u7403\u6c42\u56da\u914b\u6cc5\u4fc5\u6c3d\u5def\u827d\u72b0\u6e6b\u9011\u9052\u6978\u8d47\u9e20\u866c\u86af\u8764\u88d8\u7cd7\u9cc5\u9f3d",
"qu": "\u8d8b\u533a\u86c6\u66f2\u8eaf\u5c48\u9a71\u6e20\u53d6\u5a36\u9f8b\u8da3\u53bb\u8bce\u52ac\u8556\u8627\u5c96\u8862\u9612\u74a9\u89d1\u6c0d\u795b\u78f2\u766f\u86d0\u883c\u9eb4\u77bf\u9ee2",
"quan": "\u5708\u98a7\u6743\u919b\u6cc9\u5168\u75ca\u62f3\u72ac\u5238\u529d\u8be0\u8343\u737e\u609b\u7efb\u8f81\u754e\u94e8\u8737\u7b4c\u9b08",
"que": "\u7f3a\u7094\u7638\u5374\u9e4a\u69b7\u786e\u96c0\u9619\u60ab",
"qun": "\u88d9\u7fa4\u9021",
"ran": "\u7136\u71c3\u5189\u67d3\u82d2\u9aef",
"rang": "\u74e4\u58e4\u6518\u56b7\u8ba9\u79b3\u7a70",
"rao": "\u9976\u6270\u7ed5\u835b\u5a06\u6861",
"ruo": "\u60f9\u82e5\u5f31",
"re": "\u70ed\u504c",
"ren": "\u58ec\u4ec1\u4eba\u5fcd\u97e7\u4efb\u8ba4\u5203\u598a\u7eab\u4ede\u834f\u845a\u996a\u8f6b\u7a14\u887d",
"reng": "\u6254\u4ecd",
"ri": "\u65e5",
"rong": "\u620e\u8338\u84c9\u8363\u878d\u7194\u6eb6\u5bb9\u7ed2\u5197\u5d58\u72e8\u7f1b\u6995\u877e",
"rou": "\u63c9\u67d4\u8089\u7cc5\u8e42\u97a3",
"ru": "\u8339\u8815\u5112\u5b7a\u5982\u8fb1\u4e73\u6c5d\u5165\u8925\u84d0\u85b7\u5685\u6d33\u6ebd\u6fe1\u94f7\u8966\u98a5",
"ruan": "\u8f6f\u962e\u670a",
"rui": "\u854a\u745e\u9510\u82ae\u8564\u777f\u868b",
"run": "\u95f0\u6da6",
"sa": "\u6492\u6d12\u8428\u5345\u4ee8\u6332\u98d2",
"sai": "\u816e\u9cc3\u585e\u8d5b\u567b",
"san": "\u4e09\u53c1\u4f1e\u6563\u5f61\u9993\u6c35\u6bf5\u7cc1\u9730",
"sang": "\u6851\u55d3\u4e27\u6421\u78c9\u98a1",
"sao": "\u6414\u9a9a\u626b\u5ac2\u57fd\u81ca\u7619\u9ccb",
"se": "\u745f\u8272\u6da9\u556c\u94e9\u94ef\u7a51",
"sen": "\u68ee",
"seng": "\u50e7",
"sha": "\u838e\u7802\u6740\u5239\u6c99\u7eb1\u50bb\u5565\u715e\u810e\u6b43\u75e7\u88df\u970e\u9ca8",
"shai": "\u7b5b\u6652\u917e",
"shan": "\u73ca\u82eb\u6749\u5c71\u5220\u717d\u886b\u95ea\u9655\u64c5\u8d61\u81b3\u5584\u6c55\u6247\u7f2e\u5261\u8baa\u912f\u57cf\u829f\u6f78\u59d7\u9a9f\u81bb\u9490\u759d\u87ee\u8222\u8dda\u9cdd",
"shang": "\u5892\u4f24\u5546\u8d4f\u664c\u4e0a\u5c1a\u88f3\u57a7\u7ef1\u6b87\u71b5\u89de",
"shao": "\u68a2\u634e\u7a0d\u70e7\u828d\u52fa\u97f6\u5c11\u54e8\u90b5\u7ecd\u52ad\u82d5\u6f72\u86f8\u7b24\u7b72\u8244",
"she": "\u5962\u8d4a\u86c7\u820c\u820d\u8d66\u6444\u5c04\u6151\u6d89\u793e\u8bbe\u538d\u4f58\u731e\u7572\u9e9d",
"shen": "\u7837\u7533\u547b\u4f38\u8eab\u6df1\u5a20\u7ec5\u795e\u6c88\u5ba1\u5a76\u751a\u80be\u614e\u6e17\u8bdc\u8c02\u5432\u54c2\u6e16\u6939\u77e7\u8703",
"sheng": "\u58f0\u751f\u7525\u7272\u5347\u7ef3\u7701\u76db\u5269\u80dc\u5723\u4e1e\u6e11\u5ab5\u771a\u7b19",
"shi": "\u5e08\u5931\u72ee\u65bd\u6e7f\u8bd7\u5c38\u8671\u5341\u77f3\u62fe\u65f6\u4ec0\u98df\u8680\u5b9e\u8bc6\u53f2\u77e2\u4f7f\u5c4e\u9a76\u59cb\u5f0f\u793a\u58eb\u4e16\u67ff\u4e8b\u62ed\u8a93\u901d\u52bf\u662f\u55dc\u566c\u9002\u4ed5\u4f8d\u91ca\u9970\u6c0f\u5e02\u6043\u5ba4\u89c6\u8bd5\u8c25\u57d8\u83b3\u84cd\u5f11\u5511\u9963\u8f7c\u8006\u8d33\u70bb\u793b\u94c8\u94ca\u87ab\u8210\u7b6e\u8c55\u9ca5\u9cba",
"shou": "\u6536\u624b\u9996\u5b88\u5bff\u6388\u552e\u53d7\u7626\u517d\u624c\u72e9\u7ef6\u824f",
"shu": "\u852c\u67a2\u68b3\u6b8a\u6292\u8f93\u53d4\u8212\u6dd1\u758f\u4e66\u8d4e\u5b70\u719f\u85af\u6691\u66d9\u7f72\u8700\u9ecd\u9f20\u5c5e\u672f\u8ff0\u6811\u675f\u620d\u7ad6\u5885\u5eb6\u6570\u6f31\u6055\u500f\u587e\u83fd\u5fc4\u6cad\u6d91\u6f8d\u59dd\u7ebe\u6bf9\u8167\u6bb3\u956f\u79eb\u9e6c",
"shua": "\u5237\u800d\u5530\u6dae",
"shuai": "\u6454\u8870\u7529\u5e05\u87c0",
"shuan": "\u6813\u62f4\u95e9",
"shuang": "\u971c\u53cc\u723d\u5b40",
"shui": "\u8c01\u6c34\u7761\u7a0e",
"shun": "\u542e\u77ac\u987a\u821c\u6042",
"shuo": "\u8bf4\u7855\u6714\u70c1\u84b4\u6420\u55cd\u6fef\u5981\u69ca\u94c4",
"si": "\u65af\u6495\u5636\u601d\u79c1\u53f8\u4e1d\u6b7b\u8086\u5bfa\u55e3\u56db\u4f3a\u4f3c\u9972\u5df3\u53ae\u4fdf\u5155\u83e5\u549d\u6c5c\u6cd7\u6f8c\u59d2\u9a77\u7f0c\u7940\u7960\u9536\u9e36\u801c\u86f3\u7b25",
"song": "\u677e\u8038\u6002\u9882\u9001\u5b8b\u8bbc\u8bf5\u51c7\u83d8\u5d27\u5d69\u5fea\u609a\u6dde\u7ae6",
"sou": "\u641c\u8258\u64de\u55fd\u53df\u55d6\u55fe\u998a\u6eb2\u98d5\u778d\u953c\u878b",
"su": "\u82cf\u9165\u4fd7\u7d20\u901f\u7c9f\u50f3\u5851\u6eaf\u5bbf\u8bc9\u8083\u5919\u8c21\u850c\u55c9\u612b\u7c0c\u89eb\u7a23",
"suan": "\u9178\u849c\u7b97",
"sui": "\u867d\u968b\u968f\u7ee5\u9ad3\u788e\u5c81\u7a57\u9042\u96a7\u795f\u84d1\u51ab\u8c07\u6fc9\u9083\u71e7\u772d\u7762",
"sun": "\u5b59\u635f\u7b0b\u836a\u72f2\u98e7\u69ab\u8de3\u96bc",
"suo": "\u68ad\u5506\u7f29\u7410\u7d22\u9501\u6240\u5522\u55e6\u5a11\u686b\u7743\u7fa7",
"ta": "\u584c\u4ed6\u5b83\u5979\u5854\u736d\u631e\u8e4b\u8e0f\u95fc\u6ebb\u9062\u69bb\u6c93",
"tai": "\u80ce\u82d4\u62ac\u53f0\u6cf0\u915e\u592a\u6001\u6c70\u90b0\u85b9\u80bd\u70b1\u949b\u8dc6\u9c90",
"tan": "\u574d\u644a\u8d2a\u762b\u6ee9\u575b\u6a80\u75f0\u6f6d\u8c2d\u8c08\u5766\u6bef\u8892\u78b3\u63a2\u53f9\u70ad\u90ef\u8548\u6619\u94bd\u952c\u8983",
"tang": "\u6c64\u5858\u642a\u5802\u68e0\u819b\u5510\u7cd6\u50a5\u9967\u6e8f\u746d\u94f4\u9557\u8025\u8797\u87b3\u7fb0\u91a3",
"thang": "\u5018\u8eba\u6dcc",
"theng": "\u8d9f\u70eb",
"tao": "\u638f\u6d9b\u6ed4\u7ee6\u8404\u6843\u9003\u6dd8\u9676\u8ba8\u5957\u6311\u9f17\u5555\u97ec\u9955",
"te": "\u7279",
"teng": "\u85e4\u817e\u75bc\u8a8a\u6ed5",
"ti": "\u68af\u5254\u8e22\u9511\u63d0\u9898\u8e44\u557c\u4f53\u66ff\u568f\u60d5\u6d95\u5243\u5c49\u8351\u608c\u9016\u7ee8\u7f07\u9e48\u88fc\u918d",
"tian": "\u5929\u6dfb\u586b\u7530\u751c\u606c\u8214\u8146\u63ad\u5fdd\u9617\u6b84\u754b\u94bf\u86ba",
"tiao": "\u6761\u8fe2\u773a\u8df3\u4f7b\u7967\u94eb\u7a95\u9f86\u9ca6",
"tie": "\u8d34\u94c1\u5e16\u841c\u992e",
"ting": "\u5385\u542c\u70c3\u6c40\u5ef7\u505c\u4ead\u5ead\u633a\u8247\u839b\u8476\u5a77\u6883\u8713\u9706",
"tong": "\u901a\u6850\u916e\u77b3\u540c\u94dc\u5f64\u7ae5\u6876\u6345\u7b52\u7edf\u75db\u4f5f\u50ee\u4edd\u833c\u55f5\u6078\u6f7c\u783c",
"tou": "\u5077\u6295\u5934\u900f\u4ea0",
"tu": "\u51f8\u79c3\u7a81\u56fe\u5f92\u9014\u6d82\u5c60\u571f\u5410\u5154\u580d\u837c\u83df\u948d\u9174",
"tuan": "\u6e4d\u56e2\u7583",
"tui": "\u63a8\u9893\u817f\u8715\u892a\u9000\u5fd2\u717a",
"tun": "\u541e\u5c6f\u81c0\u9968\u66be\u8c5a\u7a80",
"tuo": "\u62d6\u6258\u8131\u9e35\u9640\u9a6e\u9a7c\u692d\u59a5\u62d3\u553e\u4e47\u4f57\u5768\u5eb9\u6cb1\u67dd\u7823\u7ba8\u8204\u8dce\u9f0d",
"wa": "\u6316\u54c7\u86d9\u6d3c\u5a03\u74e6\u889c\u4f64\u5a32\u817d",
"wai": "\u6b6a\u5916",
"wan": "\u8c4c\u5f2f\u6e7e\u73a9\u987d\u4e38\u70f7\u5b8c\u7897\u633d\u665a\u7696\u60cb\u5b9b\u5a49\u4e07\u8155\u525c\u8284\u82cb\u83c0\u7ea8\u7efe\u742c\u8118\u7579\u873f\u7ba2",
"wang": "\u6c6a\u738b\u4ea1\u6789\u7f51\u5f80\u65fa\u671b\u5fd8\u5984\u7f54\u5c22\u60d8\u8f8b\u9b4d",
"wei": "\u5a01\u5dcd\u5fae\u5371\u97e6\u8fdd\u6845\u56f4\u552f\u60df\u4e3a\u6f4d\u7ef4\u82c7\u840e\u59d4\u4f1f\u4f2a\u5c3e\u7eac\u672a\u851a\u5473\u754f\u80c3\u5582\u9b4f\u4f4d\u6e2d\u8c13\u5c09\u6170\u536b\u502d\u504e\u8bff\u9688\u8473\u8587\u5e0f\u5e37\u5d34\u5d6c\u7325\u732c\u95f1\u6ca9\u6d27\u6da0\u9036\u5a13\u73ae\u97ea\u8ece\u709c\u7168\u71a8\u75ff\u8249\u9c94",
"wen": "\u761f\u6e29\u868a\u6587\u95fb\u7eb9\u543b\u7a33\u7d0a\u95ee\u520e\u6120\u960c\u6c76\u74ba\u97eb\u6b81\u96ef",
"weng": "\u55e1\u7fc1\u74ee\u84ca\u8579",
"wo": "\u631d\u8717\u6da1\u7a9d\u6211\u65a1\u5367\u63e1\u6c83\u83b4\u5e44\u6e25\u674c\u809f\u9f8c",
"wu": "\u5deb\u545c\u94a8\u4e4c\u6c61\u8bec\u5c4b\u65e0\u829c\u68a7\u543e\u5434\u6bcb\u6b66\u4e94\u6342\u5348\u821e\u4f0d\u4fae\u575e\u620a\u96fe\u6664\u7269\u52ff\u52a1\u609f\u8bef\u5140\u4ef5\u9622\u90ac\u572c\u82b4\u5e91\u6003\u5fe4\u6d6f\u5be4\u8fd5\u59a9\u9a9b\u727e\u7110\u9e49\u9e5c\u8708\u92c8\u9f2f",
"xi": "\u6614\u7199\u6790\u897f\u7852\u77fd\u6670\u563b\u5438\u9521\u727a\u7a00\u606f\u5e0c\u6089\u819d\u5915\u60dc\u7184\u70ef\u6eaa\u6c50\u7280\u6a84\u88ad\u5e2d\u4e60\u5ab3\u559c\u94e3\u6d17\u7cfb\u9699\u620f\u7ec6\u50d6\u516e\u96b0\u90d7\u831c\u8478\u84f0\u595a\u550f\u5f99\u9969\u960b\u6d60\u6dc5\u5c63\u5b09\u73ba\u6a28\u66e6\u89cb\u6b37\u71b9\u798a\u79a7\u94b8\u7699\u7a78\u8725\u87cb\u823e\u7fb2\u7c9e\u7fd5\u91af\u9f37",
"xia": "\u778e\u867e\u5323\u971e\u8f96\u6687\u5ce1\u4fa0\u72ed\u4e0b\u53a6\u590f\u5413\u6380\u846d\u55c4\u72ce\u9050\u7455\u7856\u7615\u7f45\u9ee0",
"xian": "\u9528\u5148\u4ed9\u9c9c\u7ea4\u54b8\u8d24\u8854\u8237\u95f2\u6d8e\u5f26\u5acc\u663e\u9669\u73b0\u732e\u53bf\u817a\u9985\u7fa1\u5baa\u9677\u9650\u7ebf\u51bc\u85d3\u5c98\u7303\u66b9\u5a34\u6c19\u7946\u9e47\u75eb\u86ac\u7b45\u7c7c\u9170\u8df9",
"xiang": "\u76f8\u53a2\u9576\u9999\u7bb1\u8944\u6e58\u4e61\u7fd4\u7965\u8be6\u60f3\u54cd\u4eab\u9879\u5df7\u6a61\u50cf\u5411\u8c61\u8297\u8459\u9977\u5ea0\u9aa7\u7f03\u87d3\u9c9e\u98e8",
"xiao": "\u8427\u785d\u9704\u524a\u54ee\u56a3\u9500\u6d88\u5bb5\u6dc6\u6653\u5c0f\u5b5d\u6821\u8096\u5578\u7b11\u6548\u54d3\u54bb\u5d24\u6f47\u900d\u9a81\u7ee1\u67ad\u67b5\u7b71\u7bab\u9b48",
"xie": "\u6954\u4e9b\u6b47\u874e\u978b\u534f\u631f\u643a\u90aa\u659c\u80c1\u8c10\u5199\u68b0\u5378\u87f9\u61c8\u6cc4\u6cfb\u8c22\u5c51\u5055\u4eb5\u52f0\u71ee\u85a4\u64b7\u5ee8\u7023\u9082\u7ec1\u7f2c\u69ad\u698d\u6b59\u8e9e",
"xin": "\u85aa\u82af\u950c\u6b23\u8f9b\u65b0\u5ffb\u5fc3\u4fe1\u8845\u56df\u99a8\u8398\u6b46\u94fd\u946b",
"xing": "\u661f\u8165\u7329\u60fa\u5174\u5211\u578b\u5f62\u90a2\u884c\u9192\u5e78\u674f\u6027\u59d3\u9649\u8347\u8365\u64e4\u60bb\u784e",
"xiong": "\u5144\u51f6\u80f8\u5308\u6c79\u96c4\u718a\u828e",
"xiu": "\u4f11\u4fee\u7f9e\u673d\u55c5\u9508\u79c0\u8896\u7ee3\u83a0\u5cab\u9990\u5ea5\u9e3a\u8c85\u9af9",
"xu": "\u589f\u620c\u9700\u865a\u5618\u987b\u5f90\u8bb8\u84c4\u9157\u53d9\u65ed\u5e8f\u755c\u6064\u7d6e\u5a7f\u7eea\u7eed\u8bb4\u8be9\u5729\u84ff\u6035\u6d2b\u6e86\u987c\u6829\u7166\u7809\u76f1\u80e5\u7cc8\u9191",
"xuan": "\u8f69\u55a7\u5ba3\u60ac\u65cb\u7384\u9009\u7663\u7729\u7eda\u5107\u8c16\u8431\u63ce\u9994\u6ceb\u6d35\u6e32\u6f29\u7487\u6966\u6684\u70ab\u714a\u78b9\u94c9\u955f\u75c3",
"xue": "\u9774\u859b\u5b66\u7a74\u96ea\u8840\u5671\u6cf6\u9cd5",
"xun": "\u52cb\u718f\u5faa\u65ec\u8be2\u5bfb\u9a6f\u5de1\u6b89\u6c5b\u8bad\u8baf\u900a\u8fc5\u5dfd\u57d9\u8340\u85b0\u5ccb\u5f87\u6d54\u66db\u7aa8\u91ba\u9c9f",
"ya": "\u538b\u62bc\u9e26\u9e2d\u5440\u4e2b\u82bd\u7259\u869c\u5d16\u8859\u6daf\u96c5\u54d1\u4e9a\u8bb6\u4f22\u63e0\u5416\u5c88\u8fd3\u5a05\u740a\u6860\u6c29\u7811\u775a\u75d6",
"yan": "\u7109\u54bd\u9609\u70df\u6df9\u76d0\u4e25\u7814\u8712\u5ca9\u5ef6\u8a00\u989c\u960e\u708e\u6cbf\u5944\u63a9\u773c\u884d\u6f14\u8273\u5830\u71d5\u538c\u781a\u96c1\u5501\u5f66\u7130\u5bb4\u8c1a\u9a8c\u53a3\u9765\u8d5d\u4fe8\u5043\u5156\u8ba0\u8c33\u90fe\u9122\u82ab\u83f8\u5d26\u6079\u95eb\u960f\u6d07\u6e6e\u6edf\u598d\u5ae3\u7430\u664f\u80ed\u814c\u7131\u7f68\u7b75\u917d\u9b47\u990d\u9f39",
"yang": "\u6b83\u592e\u9e2f\u79e7\u6768\u626c\u4f6f\u75a1\u7f8a\u6d0b\u9633\u6c27\u4ef0\u75d2\u517b\u6837\u6f3e\u5f89\u600f\u6cf1\u7080\u70ca\u6059\u86d8\u9785",
"yao": "\u9080\u8170\u5996\u7476\u6447\u5c27\u9065\u7a91\u8c23\u59da\u54ac\u8200\u836f\u8981\u8000\u592d\u723b\u5406\u5d3e\u5fad\u7039\u5e7a\u73e7\u6773\u66dc\u80b4\u9e5e\u7a88\u7e47\u9cd0",
"ye": "\u6930\u564e\u8036\u7237\u91ce\u51b6\u4e5f\u9875\u6396\u4e1a\u53f6\u66f3\u814b\u591c\u6db2\u8c12\u90ba\u63f6\u9980\u6654\u70e8\u94d8",
"yi": "\u4e00\u58f9\u533b\u63d6\u94f1\u4f9d\u4f0a\u8863\u9890\u5937\u9057\u79fb\u4eea\u80f0\u7591\u6c82\u5b9c\u59e8\u5f5d\u6905\u8681\u501a\u5df2\u4e59\u77e3\u4ee5\u827a\u6291\u6613\u9091\u5c79\u4ebf\u5f79\u81c6\u9038\u8084\u75ab\u4ea6\u88d4\u610f\u6bc5\u5fc6\u4e49\u76ca\u6ea2\u8be3\u8bae\u8c0a\u8bd1\u5f02\u7ffc\u7fcc\u7ece\u5208\u5293\u4f7e\u8bd2\u572a\u572f\u57f8\u61ff\u82e1\u858f\u5f08\u5955\u6339\u5f0b\u5453\u54a6\u54bf\u566b\u5cc4\u5db7\u7317\u9974\u603f\u6021\u6092\u6f2a\u8fe4\u9a7f\u7f22\u6baa\u8d3b\u65d6\u71a0\u9487\u9552\u9571\u75cd\u7617\u7654\u7fca\u8864\u8734\u8223\u7fbf\u7ff3\u914f\u9edf",
"yin": "\u8335\u836b\u56e0\u6bb7\u97f3\u9634\u59fb\u541f\u94f6\u6deb\u5bc5\u996e\u5c39\u5f15\u9690\u5370\u80e4\u911e\u5819\u831a\u5591\u72fa\u5924\u6c24\u94df\u763e\u8693\u972a\u9f88",
"ying": "\u82f1\u6a31\u5a74\u9e70\u5e94\u7f28\u83b9\u8424\u8425\u8367\u8747\u8fce\u8d62\u76c8\u5f71\u9896\u786c\u6620\u5b34\u90e2\u8314\u83ba\u8426\u6484\u5624\u81ba\u6ee2\u6f46\u701b\u745b\u748e\u6979\u9e66\u763f\u988d\u7f42",
"yo": "\u54df\u5537",
"yong": "\u62e5\u4f63\u81c3\u75c8\u5eb8\u96cd\u8e0a\u86f9\u548f\u6cf3\u6d8c\u6c38\u607f\u52c7\u7528\u4fd1\u58c5\u5889\u6175\u9095\u955b\u752c\u9cd9\u9954",
"you": "\u5e7d\u4f18\u60a0\u5fe7\u5c24\u7531\u90ae\u94c0\u72b9\u6cb9\u6e38\u9149\u6709\u53cb\u53f3\u4f51\u91c9\u8bf1\u53c8\u5e7c\u5363\u6538\u4f91\u83b8\u5466\u56ff\u5ba5\u67da\u7337\u7256\u94d5\u75a3\u8763\u9c7f\u9edd\u9f2c",
"yu": "\u8fc2\u6de4\u4e8e\u76c2\u6986\u865e\u611a\u8206\u4f59\u4fde\u903e\u9c7c\u6109\u6e1d\u6e14\u9685\u4e88\u5a31\u96e8\u4e0e\u5c7f\u79b9\u5b87\u8bed\u7fbd\u7389\u57df\u828b\u90c1\u5401\u9047\u55bb\u5cea\u5fa1\u6108\u6b32\u72f1\u80b2\u8a89\u6d74\u5bd3\u88d5\u9884\u8c6b\u9a6d\u79ba\u6bd3\u4f1b\u4fe3\u8c00\u8c15\u8438\u84e3\u63c4\u5581\u5704\u5709\u5d5b\u72f3\u996b\u5ebe\u9608\u59aa\u59a4\u7ea1\u745c\u6631\u89ce\u8174\u6b24\u65bc\u715c\u71e0\u807f\u94b0\u9e46\u7610\u7600\u7ab3\u8753\u7afd\u8201\u96e9\u9f89",
"yuan": "\u9e33\u6e0a\u51a4\u5143\u57a3\u8881\u539f\u63f4\u8f95\u56ed\u5458\u5706\u733f\u6e90\u7f18\u8fdc\u82d1\u613f\u6028\u9662\u586c\u6c85\u5a9b\u7457\u6a7c\u7230\u7722\u9e22\u8788\u9f0b",
"yue": "\u66f0\u7ea6\u8d8a\u8dc3\u94a5\u5cb3\u7ca4\u6708\u60a6\u9605\u9fa0\u6a3e\u5216\u94ba",
"yun": "\u8018\u4e91\u90e7\u5300\u9668\u5141\u8fd0\u8574\u915d\u6655\u97f5\u5b55\u90d3\u82b8\u72c1\u607d\u7ead\u6b92\u6600\u6c32",
"za": "\u531d\u7838\u6742\u62f6\u5482",
"zai": "\u683d\u54c9\u707e\u5bb0\u8f7d\u518d\u5728\u54b1\u5d3d\u753e",
"zan": "\u6512\u6682\u8d5e\u74d2\u661d\u7c2a\u7ccc\u8db1\u933e",
"zang": "\u8d43\u810f\u846c\u5958\u6215\u81e7",
"zao": "\u906d\u7cdf\u51ff\u85fb\u67a3\u65e9\u6fa1\u86a4\u8e81\u566a\u9020\u7682\u7076\u71e5\u5523\u7f2b",
"ze": "\u8d23\u62e9\u5219\u6cfd\u4ec4\u8d5c\u5567\u8fee\u6603\u7b2e\u7ba6\u8234",
"zei": "\u8d3c",
"zen": "\u600e\u8c2e",
"zeng": "\u589e\u618e\u66fe\u8d60\u7f2f\u7511\u7f7e\u9503",
"zha": "\u624e\u55b3\u6e23\u672d\u8f67\u94e1\u95f8\u7728\u6805\u69a8\u548b\u4e4d\u70b8\u8bc8\u63f8\u5412\u54a4\u54f3\u600d\u781f\u75c4\u86b1\u9f44",
"zhai": "\u6458\u658b\u5b85\u7a84\u503a\u5be8\u7826",
"zhan": "\u77bb\u6be1\u8a79\u7c98\u6cbe\u76cf\u65a9\u8f97\u5d2d\u5c55\u8638\u6808\u5360\u6218\u7ad9\u6e5b\u7efd\u8c35\u640c\u65c3",
"zhang": "\u6a1f\u7ae0\u5f70\u6f33\u5f20\u638c\u6da8\u6756\u4e08\u5e10\u8d26\u4ed7\u80c0\u7634\u969c\u4ec9\u9123\u5e5b\u5d82\u7350\u5adc\u748b\u87d1",
"zhao": "\u62db\u662d\u627e\u6cbc\u8d75\u7167\u7f69\u5146\u8087\u53ec\u722a\u8bcf\u68f9\u948a\u7b0a",
"zhe": "\u906e\u6298\u54f2\u86f0\u8f99\u8005\u9517\u8517\u8fd9\u6d59\u8c2a\u966c\u67d8\u8f84\u78d4\u9e67\u891a\u8707\u8d6d",
"zhen": "\u73cd\u659f\u771f\u7504\u7827\u81fb\u8d1e\u9488\u4fa6\u6795\u75b9\u8bca\u9707\u632f\u9547\u9635\u7f1c\u6862\u699b\u8f78\u8d48\u80d7\u6715\u796f\u755b\u9e29",
"zheng": "\u84b8\u6323\u7741\u5f81\u72f0\u4e89\u6014\u6574\u62ef\u6b63\u653f\u5e27\u75c7\u90d1\u8bc1\u8be4\u5ce5\u94b2\u94ee\u7b5d",
"zhi": "\u829d\u679d\u652f\u5431\u8718\u77e5\u80a2\u8102\u6c41\u4e4b\u7ec7\u804c\u76f4\u690d\u6b96\u6267\u503c\u4f84\u5740\u6307\u6b62\u8dbe\u53ea\u65e8\u7eb8\u5fd7\u631a\u63b7\u81f3\u81f4\u7f6e\u5e1c\u5cd9\u5236\u667a\u79e9\u7a1a\u8d28\u7099\u75d4\u6ede\u6cbb\u7a92\u536e\u965f\u90c5\u57f4\u82b7\u646d\u5e19\u5fee\u5f58\u54ab\u9a98\u6809\u67b3\u6800\u684e\u8f75\u8f7e\u6534\u8d3d\u81a3\u7949\u7957\u9ef9\u96c9\u9e37\u75e3\u86ed\u7d77\u916f\u8dd6\u8e2c\u8e2f\u8c78\u89ef",
"zhong": "\u4e2d\u76c5\u5fe0\u949f\u8877\u7ec8\u79cd\u80bf\u91cd\u4ef2\u4f17\u51a2\u953a\u87bd\u8202\u822f\u8e35",
"zhou": "\u821f\u5468\u5dde\u6d32\u8bcc\u7ca5\u8f74\u8098\u5e1a\u5492\u76b1\u5b99\u663c\u9aa4\u5544\u7740\u501c\u8bf9\u836e\u9b3b\u7ea3\u80c4\u78a1\u7c40\u8233\u914e\u9cb7",
"zhu": "\u73e0\u682a\u86db\u6731\u732a\u8bf8\u8bdb\u9010\u7af9\u70db\u716e\u62c4\u77a9\u5631\u4e3b\u8457\u67f1\u52a9\u86c0\u8d2e\u94f8\u7b51\u4f4f\u6ce8\u795d\u9a7b\u4f2b\u4f8f\u90be\u82ce\u8331\u6d19\u6e1a\u6f74\u9a7a\u677c\u69e0\u6a65\u70b7\u94e2\u75b0\u7603\u86b0\u7afa\u7bb8\u7fe5\u8e85\u9e88",
"zhua": "\u6293",
"zhuai": "\u62fd",
"zhuan": "\u4e13\u7816\u8f6c\u64b0\u8d5a\u7bc6\u629f\u556d\u989b",
"zhuang": "\u6869\u5e84\u88c5\u5986\u649e\u58ee\u72b6\u4e2c",
"zhui": "\u690e\u9525\u8ffd\u8d58\u5760\u7f00\u8411\u9a93\u7f12",
"zhun": "\u8c06\u51c6",
"zhuo": "\u6349\u62d9\u5353\u684c\u7422\u8301\u914c\u707c\u6d4a\u502c\u8bfc\u5ef4\u855e\u64e2\u555c\u6d5e\u6dbf\u6753\u712f\u799a\u65ab",
"zi": "\u5179\u54a8\u8d44\u59ff\u6ecb\u6dc4\u5b5c\u7d2b\u4ed4\u7c7d\u6ed3\u5b50\u81ea\u6e0d\u5b57\u8c18\u5d6b\u59ca\u5b73\u7f01\u6893\u8f8e\u8d40\u6063\u7726\u9531\u79ed\u8014\u7b2b\u7ca2\u89dc\u8a3e\u9cbb\u9aed",
"zong": "\u9b03\u68d5\u8e2a\u5b97\u7efc\u603b\u7eb5\u8159\u7cbd",
"zou": "\u90b9\u8d70\u594f\u63cd\u9139\u9cb0",
"zu": "\u79df\u8db3\u5352\u65cf\u7956\u8bc5\u963b\u7ec4\u4fce\u83f9\u5550\u5f82\u9a75\u8e74",
"zuan": "\u94bb\u7e82\u6525\u7f35",
"zui": "\u5634\u9189\u6700\u7f6a",
"zun": "\u5c0a\u9075\u6499\u6a3d\u9cdf",
"zuo": "\u6628\u5de6\u4f50\u67de\u505a\u4f5c\u5750\u5ea7\u961d\u963c\u80d9\u795a\u9162",
"cou": "\u85ae\u6971\u8f8f\u8160",
"nang": "\u652e\u54dd\u56d4\u9995\u66e9",
"o": "\u5594",
"dia": "\u55f2",
"chuai": "\u562c\u81aa\u8e39",
"cen": "\u5c91\u6d94",
"diu": "\u94e5",
"nou": "\u8028",
"fou": "\u7f36",
"bia": "\u9adf"
};
PinYin = {
/** 汉字转拼音*/
A: function (l1) {
return PinYin.DD(l1, 'ucfirst');
},
/** 汉字转拼音首字母缩写 大写*/
B: function (l1) {
return PinYin.DD(l1, 'ucUpper').toUpperCase();
},
/** 汉字转拼音第一个全拼+后面缩写 大写*/
C: function (l1) {
return PinYin.DD(l1, 'ucFirstUpper').toUpperCase();
},
/** 汉字转拼内部函数*/
DD: function (l1, type) {
var l2 = l1.length;
var I1 = "";
var reg = new RegExp('[a-zA-Z0-9\- ]');
for (var i = 0; i < l2; i++) {
var val = l1.substr(i, 1);
var name = PinYin.arraySearchDD(val, PinYinArray, type, i);
if (reg.test(val)) {
I1 += val;
} else if (name !== false) {
I1 += name;
}
}
I1 = I1.replace(/ /g, '-');
while (I1.indexOf('--') > 0) {
I1 = I1.replace('--', '-');
}
return I1;
},
/**在对象中搜索 */
arraySearchDD: function (l1, l2, type, index) {
for (var name in PinYinArray) {
if (PinYinArray[name].indexOf(l1) != -1) {
return PinYin[type](name, index);
break;
}
}
return false;
},
/**首字母大写 */
ucfirst: function (l1) {
if (l1.length > 0) {
var first = l1.substr(0, 1).toUpperCase();
var spare = l1.substr(1, l1.length);
return first + spare;
}
},
/**首字母缩写并大写 */
ucUpper: function (l1) {
if (l1.length > 0) {
var ret = l1.substr(0, 1).toUpperCase();
return ret;
}
},
/**首字母缩写并大写 */
ucFirstUpper: function (l1, index) {
if (index!=undefined && index>=0 && l1.length > 0) {
var ret = (index == 0 ? l1.toUpperCase() : l1.substr(0, 1).toUpperCase());
return ret;
}
}
};
exports("zlPinYin", PinYin);
});

View File

@ -1,166 +1,166 @@
/*
* @Author: gk
* @Date: 2018-08-03 12:36:45
* @Last Modified by: gk
* @Last Modified time: 2018-04-24 14:22:54
* 打印控件
*/
layui.define(['zlConfig', 'layer'], function (exports) {
"use strict";
var $ = layui.$
, layer = layui.layer
, device = layui.device()
, zlConfig = layui.zlConfig
, MOD_NAME = 'zlPrint'
, CLASS_NAME = '.layui-dropdown-menu'
//事件类型,默认为'mouseover'(移动端则为'click'
, event = (device.android || device.ios) ? 'click' : 'mouseover';
//组件重画消息处理
layui.event('WM_USERDEF', zlConfig.global.WM_USERDEF.WM_DRAW, null, function (WParam) {
if (WParam && $(WParam.elem).attr('class') && $(WParam.elem).attr('class').indexOf('zlprint') >= 0) {
//自动完成渲染
obj.render($(WParam.elem), WParam.value);
}
});
//隐藏
var __hideDropdown = function (e) {
if (isClosable(e.target)
&& isClosable(e.target.parentElement)
&& isClosable(e.target.parentElement.parentElement)) {
obj.hide();
}
};
//判断dropdown是否可以隐藏
var isClosable = function (elem) {
return elem
&& elem.className.indexOf('layui-btn-dropdown') == -1
&& elem.className.indexOf('layui-dropdown-menu') == -1;
};
var obj = {
paramsCallBacks: {},
//修正显示位置
hide: function () {
if (this && this.inst && this.inst.is(':visible')) {
this.inst.css('display', 'none');
$('body').off(event, __hideDropdown);
}
},
/**
* url打开新的窗口
* url 路径
* params 参数
*/
iframePost: function (url, params) {
var temp_form = document.createElement("form");
temp_form.action = url;
temp_form.target = "_blank";
temp_form.method = "post";
temp_form.style.display = "none";
for (var x in params) {
var opt = document.createElement("textarea");
opt.name = x;
opt.value = params[x];
temp_form.appendChild(opt);
}
document.body.appendChild(temp_form);
temp_form.submit();
document.body.removeChild(temp_form);
},
//渲染
render: function () {
var $elem = $('.zlprint');
//数据获取
//初始化dom
$(".zlprint").each(function (index, item) {
var replist = eval('(' + $(item).attr('replist') + ')');
obj.init($(item), replist);
})
},
init: function ($elem, replist, datas) {
var that = this;
if (!$elem.hasClass('layui-btn-dropdown')) {
$elem.addClass("layui-btn-dropdown");
var btnHtml = ['<button type="button" class="layui-btn layui-btn-sm" data-toggle="dropdown">'
, ' <img src="' + layui.cache['contentPath'] + '/static/appdata/filesres/ico/A846AFC1D63E457F9BFAD447FDFDC5D4.png" style="width:16px;height:16px;">'
, ' <span>打印</span>'
, ' <span class="layui-icon" style="font-size: 14px"></span>'
, '</button>'];
var items = []
var ids = {};
$.each(replist, function (index, item) {
ids[item.id] = item;
items = items.concat([
, ' <li>'
, ' <a href="#" id="' + item.id + '">'
, ' <img src="' + item.ico + '" style="width:16px;height:16px;">' + item.title + '</a>'
, ' </li>'
]);
});
var menuHtml = ['<ul class="layui-dropdown-menu">'
, items.join('')
, '</ul>'];
$elem.append(btnHtml.join(''));
$elem.append(menuHtml.join(''));
for (var id in ids) {
$('#' + id).click(function () {
var btnId=this.id;
var params = {};
if (obj.paramsCallBacks[btnId]) {
params = obj.paramsCallBacks[btnId]();
}
obj.iframePost(ids[btnId].url, params);
});
};
}
$('.layui-btn-dropdown').each(function (index, elem) {
var reElem = $(elem);
reElem.data('id', 'dropdown-' + index);
event = (device.android || device.ios) ? 'click' : 'mouseover';
reElem[event](function () {
if (!that.inst//第一次显示
|| that.currReElem.data('id') != reElem.data('id')//切换到其他dropdown
|| (that.currReElem.data('id') == reElem.data('id') && !that.inst.is(':visible'))) {//重新移动到当前dropdown
//隐藏
that.hide();
//这里暂时采用fixed定位
var dropElem = reElem.find(CLASS_NAME),
left = reElem.offset().left - $(window).scrollLeft(),
top = reElem.offset().top + reElem.height() - $(window).scrollTop() - 2,
containerWidth = reElem.width(),
dropWidth = dropElem.width(),
offsetRight = left + containerWidth,
overflow = (left + dropWidth) > $(window).width(),
css = { 'display': 'block', 'position': 'fixed', 'top': top + 'px', 'left': left + 'px' };
overflow && $.extend(true, css, { 'left': (offsetRight - dropWidth) + 'px' });
//显示
dropElem.css(css).on('click', 'li', function () {
dropElem.css('display', 'none');
});
that.inst = dropElem;
that.currReElem = reElem;
$('body').on(event, __hideDropdown);
}
});
});
},
regeditparamCallBack: function (id, callback) {
obj.paramsCallBacks[id] = callback;
}
};
$(window).scroll(function () {
obj.hide();
});
obj.render();
exports(MOD_NAME, obj);
});
//**打印时候调用函数 */
function onPrint(url) {
var toUrl = url;
window.open(url);
/*
* @Author: gk
* @Date: 2018-08-03 12:36:45
* @Last Modified by: gk
* @Last Modified time: 2018-04-24 14:22:54
* 打印控件
*/
layui.define(['zlConfig', 'layer'], function (exports) {
"use strict";
var $ = layui.$
, layer = layui.layer
, device = layui.device()
, zlConfig = layui.zlConfig
, MOD_NAME = 'zlPrint'
, CLASS_NAME = '.layui-dropdown-menu'
//事件类型,默认为'mouseover'(移动端则为'click'
, event = (device.android || device.ios) ? 'click' : 'mouseover';
//组件重画消息处理
layui.event('WM_USERDEF', zlConfig.global.WM_USERDEF.WM_DRAW, null, function (WParam) {
if (WParam && $(WParam.elem).attr('class') && $(WParam.elem).attr('class').indexOf('zlprint') >= 0) {
//自动完成渲染
obj.render($(WParam.elem), WParam.value);
}
});
//隐藏
var __hideDropdown = function (e) {
if (isClosable(e.target)
&& isClosable(e.target.parentElement)
&& isClosable(e.target.parentElement.parentElement)) {
obj.hide();
}
};
//判断dropdown是否可以隐藏
var isClosable = function (elem) {
return elem
&& elem.className.indexOf('layui-btn-dropdown') == -1
&& elem.className.indexOf('layui-dropdown-menu') == -1;
};
var obj = {
paramsCallBacks: {},
//修正显示位置
hide: function () {
if (this && this.inst && this.inst.is(':visible')) {
this.inst.css('display', 'none');
$('body').off(event, __hideDropdown);
}
},
/**
* url打开新的窗口
* url 路径
* params 参数
*/
iframePost: function (url, params) {
var temp_form = document.createElement("form");
temp_form.action = url;
temp_form.target = "_blank";
temp_form.method = "post";
temp_form.style.display = "none";
for (var x in params) {
var opt = document.createElement("textarea");
opt.name = x;
opt.value = params[x];
temp_form.appendChild(opt);
}
document.body.appendChild(temp_form);
temp_form.submit();
document.body.removeChild(temp_form);
},
//渲染
render: function () {
var $elem = $('.zlprint');
//数据获取
//初始化dom
$(".zlprint").each(function (index, item) {
var replist = eval('(' + $(item).attr('replist') + ')');
obj.init($(item), replist);
})
},
init: function ($elem, replist, datas) {
var that = this;
if (!$elem.hasClass('layui-btn-dropdown')) {
$elem.addClass("layui-btn-dropdown");
var btnHtml = ['<button type="button" class="layui-btn layui-btn-sm" data-toggle="dropdown">'
, ' <img src="' + layui.cache['contentPath'] + '/static/appdata/filesres/ico/A846AFC1D63E457F9BFAD447FDFDC5D4.png" style="width:16px;height:16px;">'
, ' <span>打印</span>'
, ' <span class="layui-icon" style="font-size: 14px"></span>'
, '</button>'];
var items = []
var ids = {};
$.each(replist, function (index, item) {
ids[item.id] = item;
items = items.concat([
, ' <li>'
, ' <a href="#" id="' + item.id + '">'
, ' <img src="' + item.ico + '" style="width:16px;height:16px;">' + item.title + '</a>'
, ' </li>'
]);
});
var menuHtml = ['<ul class="layui-dropdown-menu">'
, items.join('')
, '</ul>'];
$elem.append(btnHtml.join(''));
$elem.append(menuHtml.join(''));
for (var id in ids) {
$('#' + id).click(function () {
var btnId=this.id;
var params = {};
if (obj.paramsCallBacks[btnId]) {
params = obj.paramsCallBacks[btnId]();
}
obj.iframePost(ids[btnId].url, params);
});
};
}
$('.layui-btn-dropdown').each(function (index, elem) {
var reElem = $(elem);
reElem.data('id', 'dropdown-' + index);
event = (device.android || device.ios) ? 'click' : 'mouseover';
reElem[event](function () {
if (!that.inst//第一次显示
|| that.currReElem.data('id') != reElem.data('id')//切换到其他dropdown
|| (that.currReElem.data('id') == reElem.data('id') && !that.inst.is(':visible'))) {//重新移动到当前dropdown
//隐藏
that.hide();
//这里暂时采用fixed定位
var dropElem = reElem.find(CLASS_NAME),
left = reElem.offset().left - $(window).scrollLeft(),
top = reElem.offset().top + reElem.height() - $(window).scrollTop() - 2,
containerWidth = reElem.width(),
dropWidth = dropElem.width(),
offsetRight = left + containerWidth,
overflow = (left + dropWidth) > $(window).width(),
css = { 'display': 'block', 'position': 'fixed', 'top': top + 'px', 'left': left + 'px' };
overflow && $.extend(true, css, { 'left': (offsetRight - dropWidth) + 'px' });
//显示
dropElem.css(css).on('click', 'li', function () {
dropElem.css('display', 'none');
});
that.inst = dropElem;
that.currReElem = reElem;
$('body').on(event, __hideDropdown);
}
});
});
},
regeditparamCallBack: function (id, callback) {
obj.paramsCallBacks[id] = callback;
}
};
$(window).scroll(function () {
obj.hide();
});
obj.render();
exports(MOD_NAME, obj);
});
//**打印时候调用函数 */
function onPrint(url) {
var toUrl = url;
window.open(url);
};

View File

@ -1,121 +1,121 @@
/*
* @Author: gk
* @Date: 2018-04-14 12:36:45
* @Last Modified by: gk
* @Last Modified time: 2018-04-24 14:22:54
* 扩展layui select成为自动填充字段填充下拉框列表
*/
layui.define(['zlConfig', 'form'], function (exports) {
"use strict";
var $ = layui.$
, zlConfig = layui.zlConfig
, STATUSNAME = zlConfig.global.result.statusName
, MSGNAME = zlConfig.global.result.msgName
, DATANAME = zlConfig.global.result.dataName
, ERROR = zlConfig.global.result.errorState
, OK = zlConfig.global.result.okState
, form = layui.form
, obj = {};
//组件重画消息处理
layui.event('WM_USERDEF', zlConfig.global.WM_USERDEF.WM_DRAW, null, function (WParam) {
if (WParam && $(WParam.elem).attr('class') && $(WParam.elem).attr('class').indexOf('select-ext') >= 0) {
obj.render($(WParam.elem), WParam.value);
}
});
obj = {
render: function ($elem, value, reload) {
var options = ($elem.attr('settings') ? eval('(' + $elem.attr('settings') + ')') : {})
, dataurl = options.dataurl
, datas = []
, defaultOptions = {
method: 'get'
, titlefield: 'name'
, valuefield: 'value'
, params: '{}'
, dataurl: ""
, value: ""
, placeholder: "请选择"
, showtitleoption: true
};
if ($elem.is(':disabled')) {
defaultOptions.placeholder = ' '
}
options = $.extend({}, defaultOptions, options);
options.reload = reload;
var isSuccess = false;
if (!$elem.attr('loaded')||options.reload) {
if ($elem.length != 1) {
layui.error("重复或不存在的组件名称[" + $elem.attr("name") + "]");
return;
}
$.ajax({
type: options.method
, async: false
, url: dataurl
, data: eval('(' + options.params + ')')
, dataType: 'json'
, success: function (res) {
if (res[STATUSNAME] == OK) {
datas = res[DATANAME];
isSuccess = true;
$elem.attr('loaded', 1);
} else {
throw Error(res[MSGNAME]);
}
}
, error: function (e, m) {
throw Error(m);
}
});
}
else {
isSuccess = true;
}
if (!isSuccess) { return; }
options.value = ((value === undefined || value === null || value === "") ? options.value : value);
if (options.value !== $elem.val()||options.reload) {
obj.init($elem, options, datas);
} else {
$elem.val((options.value ? options.value : ''));
}
},
init: function ($elem, options, datas) {
var items = [],
placeholder = $elem.attr('placeholder');
placeholder = placeholder ? placeholder : options.placeholder;
if(options.reload){
$elem.empty();
}
if (datas.length > 0) {
if (options.showtitleoption) {
items.push('<option value="">' + (placeholder ? placeholder : '请选择') + '</option>');
}
for (var i = 0; i < datas.length; i++) {
items.push("<option value='" + datas[i][options.valuefield] + "' >" + datas[i][options.titlefield] + "</option>");
}
$elem.append(items.join(''));
}
var setValue = function (value) {
$elem.val(value);
};
//初始化值
setValue(options.value==='' ?'': options.value);
// 如果是重新下载,需要自动渲染
if(options.reload){
// 根据filter渲染
var filter = $elem.attr('lay-filter');
if(filter){
form.render('select',filter);
}else {
form.render('select');
}
}
},
reinit:function($elem,value){
obj.render($elem,value,true);
}
}
exports('zlSelectEx', obj);
/*
* @Author: gk
* @Date: 2018-04-14 12:36:45
* @Last Modified by: gk
* @Last Modified time: 2018-04-24 14:22:54
* 扩展layui select成为自动填充字段填充下拉框列表
*/
layui.define(['zlConfig', 'form'], function (exports) {
"use strict";
var $ = layui.$
, zlConfig = layui.zlConfig
, STATUSNAME = zlConfig.global.result.statusName
, MSGNAME = zlConfig.global.result.msgName
, DATANAME = zlConfig.global.result.dataName
, ERROR = zlConfig.global.result.errorState
, OK = zlConfig.global.result.okState
, form = layui.form
, obj = {};
//组件重画消息处理
layui.event('WM_USERDEF', zlConfig.global.WM_USERDEF.WM_DRAW, null, function (WParam) {
if (WParam && $(WParam.elem).attr('class') && $(WParam.elem).attr('class').indexOf('select-ext') >= 0) {
obj.render($(WParam.elem), WParam.value);
}
});
obj = {
render: function ($elem, value, reload) {
var options = ($elem.attr('settings') ? eval('(' + $elem.attr('settings') + ')') : {})
, dataurl = options.dataurl
, datas = []
, defaultOptions = {
method: 'get'
, titlefield: 'name'
, valuefield: 'value'
, params: '{}'
, dataurl: ""
, value: ""
, placeholder: "请选择"
, showtitleoption: true
};
if ($elem.is(':disabled')) {
defaultOptions.placeholder = ' '
}
options = $.extend({}, defaultOptions, options);
options.reload = reload;
var isSuccess = false;
if (!$elem.attr('loaded')||options.reload) {
if ($elem.length != 1) {
layui.error("重复或不存在的组件名称[" + $elem.attr("name") + "]");
return;
}
$.ajax({
type: options.method
, async: false
, url: dataurl
, data: eval('(' + options.params + ')')
, dataType: 'json'
, success: function (res) {
if (res[STATUSNAME] == OK) {
datas = res[DATANAME];
isSuccess = true;
$elem.attr('loaded', 1);
} else {
throw Error(res[MSGNAME]);
}
}
, error: function (e, m) {
throw Error(m);
}
});
}
else {
isSuccess = true;
}
if (!isSuccess) { return; }
options.value = ((value === undefined || value === null || value === "") ? options.value : value);
if (options.value !== $elem.val()||options.reload) {
obj.init($elem, options, datas);
} else {
$elem.val((options.value ? options.value : ''));
}
},
init: function ($elem, options, datas) {
var items = [],
placeholder = $elem.attr('placeholder');
placeholder = placeholder ? placeholder : options.placeholder;
if(options.reload){
$elem.empty();
}
if (datas.length > 0) {
if (options.showtitleoption) {
items.push('<option value="">' + (placeholder ? placeholder : '请选择') + '</option>');
}
for (var i = 0; i < datas.length; i++) {
items.push("<option value='" + datas[i][options.valuefield] + "' >" + datas[i][options.titlefield] + "</option>");
}
$elem.append(items.join(''));
}
var setValue = function (value) {
$elem.val(value);
};
//初始化值
setValue(options.value==='' ?'': options.value);
// 如果是重新下载,需要自动渲染
if(options.reload){
// 根据filter渲染
var filter = $elem.attr('lay-filter');
if(filter){
form.render('select',filter);
}else {
form.render('select');
}
}
},
reinit:function($elem,value){
obj.render($elem,value,true);
}
}
exports('zlSelectEx', obj);
});

View File

@ -1,451 +1,451 @@
/*
* @Author: gk
* @Date: 2018-04-14 12:36:45
* @Last Modified by: txy
* @Last Modified time: 2019-10-27 15:45:29
* 多选组下拉框列表
*/
layui.define(['zlConfig'], function (exports) {
"use strict";
var $ = layui.$
, win = $(window)
, zlConfig = layui.zlConfig
, statusName = zlConfig.global.result.statusName
, msgName = zlConfig.global.result.msgName
, dataName = zlConfig.global.result.dataName
, ERROR = zlConfig.global.result.errorState
, OK = zlConfig.global.result.okState
, obj = {}
, CLASS = 'layui-form-select'
, TITLE = 'layui-select-title'
, HIDE = 'layui-hide'
, DISABLED = 'layui-disabled'
, OPERATIONBTN = 'selectMulti-cz'
//组件重画消息处理
layui.event('WM_USERDEF', zlConfig.global.WM_USERDEF.WM_DRAW, null, function (WParam) {
if (WParam && $(WParam.elem).attr('class') && $(WParam.elem).attr('class').indexOf('select-multiple') >= 0) {
obj.render($(WParam.elem), WParam.value);
}
});
obj = {
render: function ($elem, value, options) {
if ($elem.attr('loaded')) {
return;
}
var options = ($elem.attr('settings') ? eval('(' + $elem.attr('settings') + ')') : {})
, dataurl = options.dataurl
, datas = eval('('+options.sourcedata+')') || []
, isMultiple = options.Multiple
, chkboxType = eval('(' + options.chkboxType + ')')
, maxtip = '最多能选择' + options.maxlength + '个'
, defaultOptions = {
Multiple: false
, method: 'get'
, titlefield: 'name'
, valuefield: 'value'
, params: '{}'
, dataurl: ""
, value: ""
, placeholder: "请选择"
, edittype: (options.edittype == undefined ? "" : options.edittype)
, max: (options.maxlength == undefined ? "" : maxtip)
, issearch: 'off'
, showtool: true
};
var cmpName = $elem.attr('name');
options = $.extend({}, defaultOptions, options);
if (options.edittype == 'disabled') {
options.placeholder = ' '
}
if (!$elem.attr('loaded')) {
if ($elem.length != 1) {
layui.error("重复或不存在的组件名称[" + $elem.attr("name") + "]");
return;
} else if ((dataurl == undefined || dataurl == "") && options.sourcedata.length==0) {
layui.error("请配置请求!");
return;
}else if(dataurl == undefined && options.sourcedata == undefined){
layui.error('未找到数据或数据源链接!');
return;
}
var isSuccess = false;
if(dataurl != undefined && dataurl != ""){
$.ajax({
type: options.method
, async: false
, url: dataurl
, data: eval('(' + options.params + ')')
, dataType: 'json'
, success: function (res) {
if (res['state'] == 'OK') {
datas = res['obj'];
isSuccess = true;
$elem.attr('loaded', 1);
} else {
throw Error(res['state']);
isSuccess = false;
}
}
, error: function (e, m) {
throw Error(m);
isSuccess = false;
}
});
if (!isSuccess && dataurl != undefined) { return; }
}else{
$elem.attr('loaded', 1);
}
options.value = ((value == undefined || value == null || value == "") ? options.value : value)
obj.init($elem, options, datas);
}
},
init: function ($elem, options, datas) {
var valus = [],
items = [],
toolhtml = [],
searchhtml = [],
cmpName = $elem.attr('name'),
layVerify = $elem.attr('lay-verify'),
checkClass = '',
checked = 'checked';
for (var i = 0; i < datas.length; i++) {
if (options.maxlength === (i - 1)) {
return
}
if (options.value.indexOf(datas[i][options.valuefield]) >= 0) {
valus.push(
[
, '<a href="javascript:;">'
, ' <span>' + datas[i][options.titlefield] + '</span>'
, ' <i style="' + (options.edittype == "" ? "" : "display:none") + '"></i>'
, '</a>'
].join('')
);
checkClass = 'layui-select layui-form-checkbox layui-form-checked';
checked = 'checked';
} else {
checkClass = 'layui-select layui-form-checkbox';
checked = '';
}
items.push([
, '<dd lay-value="' + datas[i][options.valuefield] + '" class="selectMulti-dd">'
, ' <input type="checkbox" lay-filter="searchChecked" ' + checked + ' ' + options.edittype + ' title="' + datas[i][options.titlefield] + '" lay-skin="primary">'
, ' <div class="' + checkClass + '" lay-skin="primary">'
, ' <span>' + datas[i][options.titlefield] + '</span>'
, ' <i class="layui-icon"></i>'
, ' </div>'
, '</dd>'
].join(''));
}
if(options.showtool){
toolhtml.push([
, '<dd lay-value="" class="selectMulti-tips" style="background-color: #FFF!important;">'
, ' <div class="selectMulti-cz-group" show="null">'
, ' <div class="selectMulti-cz" handle="selectAll" title="全选">'
, ' <i class="zlui-icon zlui-icon-check-all"></i>'
, ' <span>全选</span>'
, ' </div>'
, ' <div class="selectMulti-cz" handle="removeAll" title="清空">'
, ' <i class="zlui-icon zlui-icon-clean"></i>'
, ' <span>清空</span>'
, ' </div>'
, ' <div class="selectMulti-cz" handle="reverseAll" title="反选">'
, ' <i class="zlui-icon zlui-icon-check-invert"></i>'
, ' <span>反选</span>'
, ' </div>'
, ' </div>'
, '</dd>'
].join(''));
}
if (options.issearch == "on") {
searchhtml.push([
, '<dd lay-value="" class="selectMulti-search" style="background-color: #FFF!important;cursor:text">'
, ' <div class="layui-form" style="position: relative;">'
, ' <input type="text" placeholder="请输入关键词" id="selectmultikey" class="layui-input" style="margin-left:0px;border-color:#e6e6e6">'
, ' <span class="layui-btn layui-btn-sm layui-btn-normal" id="selectmulti-search-btn" style="position: absolute;top: 0;right: 0px;height:38px;line-height:38px">'
, ' <i class="layui-icon">&#xe615;</i>'
, ' </span>'
, ' <div>'
, '</dd>'
].join(''));
}
toolhtml.push(searchhtml.join(''));
var html = [
' <div class="layui-select-title">'
//, ' <input type="text" class="layui-input" id="' + cmpName + 'show" placeholder = "' + options.placeholder + '">'
, ' <input type="hidden" class="layui-input" ' + (layVerify ? 'lay-verify=' + layVerify : '') + ' name="' + cmpName + '">'
, ' <div class="layui-input selectMulti">'
, ' <a class="tipname">' + (!options.value ? options.placeholder : "") + ((options.max != "" && !options.value) ? options.max : "") + '</a>'
, ' <i class="layui-edge"></i>'
, valus.join('')
, ' </div>'
, ' <dl class="layui-anim layui-anim-upbit">'
, toolhtml.join('')
, items.join('')
, ' </dl>'
, '</div>'
];
$elem.append(html.join(''));
if (options.edittype == 'disabled') {
$elem.find('.' + TITLE).find(".selectMulti").css({
'background-color': 'rgba(247, 244, 244, 0.63)',
'color': 'rgba(8, 8, 8, 0.63) !important',
'cursor': 'not-allowed'
})
return;
}
var $title = $elem.find('.' + TITLE),
$dl = $elem.find('dl'),
$dds = $dl.children('dd.selectMulti-dd'),
$input = $elem.find('input[type="hidden"]'),
$selectMulti = $title.find(".selectMulti"),
//展开下拉
showDown = function ($elem) {
var top = $elem.offset().top + $elem.outerHeight() + 5 - win.scrollTop(),
dlHeight = $dl.outerHeight();
$("." + CLASS).removeClass(CLASS + 'ed');
$elem.addClass(CLASS + 'ed');
$dds.removeClass(HIDE);
//上下定位识别
if (top + dlHeight > win.height() && top >= dlHeight) {
$elem.addClass(CLASS + 'up');
}
//宽度
$dl.width($elem.parent().width());
$elem.bind("mousedown", onBodyDown);
$dds.each(function () {
$(this).show();
});
},
//隐藏下拉
hideDown = function (choose) {
$elem.removeClass(CLASS + 'ed ' + CLASS + 'up');
$elem.bind("mousedown", onBodyDown);
if (options.issearch == "on") {
$elem.find('#selectmultikey').val("");
}
},
onBodyDown = function (event) {
var maxStr = '';
if ($input.val() == "") {
if (options.max != "")
maxStr = '' + options.max;
$title.find('.tipname').show().text(options.placeholder + maxStr);
}
if ($(event.target).parents(".layui-select-title").html() == null) {
hideDown();
}
},
setValue = function (value) {
$input.val(value);
};
//初始化值
setValue(options.value ? options.value : '');
//选择
$dds.on('click', function (e) {
var othis = $(this),
value = othis.attr('lay-value'),
valueStr = ($input.val() && $input.val().split(',')) || [];
if (othis.hasClass(DISABLED)) return false;
if (othis.find("input[type='checkbox']").is(':checked')) {
if (valueStr.length >= options.maxlength) {
othis.find('div').removeClass('layui-form-checked');
$input.val(valueStr);
$input.parents('.select-multiple').addClass('layui-form-danger');
return false
}
if (valueStr.length === 0 || valueStr.indexOf(value) === -1) {
$selectMulti.find(".tipname").hide();
$selectMulti.html($selectMulti.html() + '<a href="javascript:;"><span>' + othis.find('span').text() + '</span><i></i></a>');
valueStr.push(value);
}
} else {
$selectMulti.find('a').each(function () {
if ($(this).find('span').text() == othis.find('span').text()) {
$(this).remove();
valueStr.removeElem(value);
}
})
}
$input.val(valueStr);
setTimeout(function () { $input.parents('.select-multiple').removeClass('layui-form-danger') }, 3000);
obj.tip($elem, options);
e.stopPropagation();
layui.event.call(this, 'zlSelectMultiple', 'div(' + cmpName + ')', {
elem: $elem[0]
, value: valueStr
, othis: $elem[0]
});
});
//点击出现下拉框
$title.on('click', function (e) {
if (!$elem.hasClass(CLASS + 'ed')) {
showDown($elem);
} else {
hideDown();
obj.tip($elem, options);
}
e.stopPropagation();
});
//多选删除并维护值字符串
$title.delegate('.selectMulti a i', "click", function (e) {
var valueStr = ($input.val() && $input.val().split(',')) || [];
var _this = $(this);
e.stopPropagation();
$title.find('dd').each(function () {
if ($(this).find('span').text() == _this.siblings('span').text()) {
var othis = $(this);
$(this).find('input').removeAttr('checked');
$(this).find('.layui-form-checkbox').removeClass('layui-form-checked');
valueStr.removeElem($(this).attr('lay-value'));
$input.val(valueStr);
}
})
$(this).parent('a').remove();
obj.tip($elem, options);
layui.event.call(this, 'zlSelectMultiple', 'div(' + cmpName + ')', {
elem: $elem[0]
, value: valueStr
, othis: $elem[0]
});
})
$("body").bind("mousedown", onBodyDown);
//操作栏点击事件
$elem.find('.' + OPERATIONBTN).on('click', function (e) {
var _this = $(this),
handle = _this.attr('handle');
obj.toolOperation($elem, options, handle);
e.stopPropagation();
});
//搜索框
$elem.find('#selectmultikey').off().on('click', function (e) {
e.stopPropagation();
});
$elem.find("#selectmultikey").bind('keydown', function (e) {//给输入框绑定按键事件
if (e.keyCode == "13") {//判断如果按下的是回车键则执行下面的代码
var insertVal = $(this).val();//手动输入的字符串;
$dds.each(function () {
var paraStr = $(this).find('span').text();
if (paraStr.indexOf(insertVal) < 0) {//不包含
$(this).hide();
} else {//包含
$(this).show();
}
});
e.preventDefault();
}
e.stopPropagation();
});
//搜索框
$elem.find('#selectmulti-search-btn').on('click', function (e) {
var insertVal = $('#selectmultikey').val();//手动输入的字符串;
$dds.each(function () {
var paraStr = $(this).find('span').text();
if (paraStr.indexOf(insertVal) < 0) {//不包含
$(this).hide();
} else {//包含
$(this).show();
}
});
e.stopPropagation();
});
},
// 工具栏操作
toolOperation: function ($elem, options, handle) {
if (options.edittype == 'disabled') return false;
var $dl = $elem.find('dl'),
$dds = $dl.children('dd.selectMulti-dd'),
$input = $elem.find('input[type="hidden"]'),
$selectMulti = $elem.find(".selectMulti"),
selectedVal = [],//临时数组
valueStr = ($input.val() && $input.val().split(',')) || [];
$dds.each(function () {
var _this = $(this),
value = _this.attr('lay-value');
switch (handle) {
// 全选
case "selectAll":
$selectMulti.find(".tipname").hide();
if (valueStr.length === 0 || valueStr.indexOf(value) === -1) {
if (valueStr.length >= options.maxlength) {
_this.find('div').removeClass('layui-form-checked');
$input.val(valueStr);
$input.parents('.select-multiple').addClass('layui-form-danger');
return false
}
_this.find('input').prop('checked', true);
_this.find('div').addClass('layui-form-checked');
$selectMulti.html($selectMulti.html() + '<a href="javascript:;"><span>' + _this.find('span').text() + '</span><i></i></a>');
valueStr.push(value);
}
break;
// 清空
case "removeAll":
if (valueStr.length == 0) return false;
_this.find('input').prop('checked', false);
_this.find('div').removeClass('layui-form-checked');
valueStr.removeElem(_this.attr('lay-value'));
$selectMulti.find('a').eq(0).nextAll('a').remove();
break;
// 反选
case "reverseAll":
if (_this.find('input').prop('checked')) {
_this.find('input').prop('checked', false);
_this.find('div').removeClass('layui-form-checked');
valueStr.removeElem(_this.attr('lay-value'));
$selectMulti.find('a').each(function () {
if ($(this).find('span').text() == _this.find('span').text()) {
$(this).remove();
}
})
} else {
$selectMulti.find(".tipname").hide();
if (selectedVal.length >= options.maxlength) {
_this.find('div').removeClass('layui-form-checked');
$input.val(valueStr);
$input.parents('.select-multiple').addClass('layui-form-danger');
return true;
} else {
_this.find('input').prop('checked', true);
_this.find('div').addClass('layui-form-checked');
selectedVal.push(value);
}
$selectMulti.html($selectMulti.html() + '<a href="javascript:;"><span>' + _this.find('span').text() + '</span><i></i></a>');
valueStr.push(value);
}
break;
}
})
$input.val(valueStr);
obj.tip($elem, options);
setTimeout(function () { $input.parents('.select-multiple').removeClass('layui-form-danger') }, 3000);
},
//placeholder提示
tip: function ($elem, options) {
var $title = $elem.find('.' + TITLE),
$input = $elem.find('input[type="hidden"]'),
maxStr = '';
if ($input.val() == "") {
if (options.max != "")
maxStr = '' + options.max;
$title.find('.tipname').show().text(options.placeholder + maxStr);
}
}
, on: function (events, callback) {
return layui.onevent.call(this, 'zlSelectMultiple', events, callback);
}
}
exports('zlSelectMultiple', obj);
/*
* @Author: gk
* @Date: 2018-04-14 12:36:45
* @Last Modified by: txy
* @Last Modified time: 2019-10-27 15:45:29
* 多选组下拉框列表
*/
layui.define(['zlConfig'], function (exports) {
"use strict";
var $ = layui.$
, win = $(window)
, zlConfig = layui.zlConfig
, statusName = zlConfig.global.result.statusName
, msgName = zlConfig.global.result.msgName
, dataName = zlConfig.global.result.dataName
, ERROR = zlConfig.global.result.errorState
, OK = zlConfig.global.result.okState
, obj = {}
, CLASS = 'layui-form-select'
, TITLE = 'layui-select-title'
, HIDE = 'layui-hide'
, DISABLED = 'layui-disabled'
, OPERATIONBTN = 'selectMulti-cz'
//组件重画消息处理
layui.event('WM_USERDEF', zlConfig.global.WM_USERDEF.WM_DRAW, null, function (WParam) {
if (WParam && $(WParam.elem).attr('class') && $(WParam.elem).attr('class').indexOf('select-multiple') >= 0) {
obj.render($(WParam.elem), WParam.value);
}
});
obj = {
render: function ($elem, value, options) {
if ($elem.attr('loaded')) {
return;
}
var options = ($elem.attr('settings') ? eval('(' + $elem.attr('settings') + ')') : {})
, dataurl = options.dataurl
, datas = eval('('+options.sourcedata+')') || []
, isMultiple = options.Multiple
, chkboxType = eval('(' + options.chkboxType + ')')
, maxtip = '最多能选择' + options.maxlength + '个'
, defaultOptions = {
Multiple: false
, method: 'get'
, titlefield: 'name'
, valuefield: 'value'
, params: '{}'
, dataurl: ""
, value: ""
, placeholder: "请选择"
, edittype: (options.edittype == undefined ? "" : options.edittype)
, max: (options.maxlength == undefined ? "" : maxtip)
, issearch: 'off'
, showtool: true
};
var cmpName = $elem.attr('name');
options = $.extend({}, defaultOptions, options);
if (options.edittype == 'disabled') {
options.placeholder = ' '
}
if (!$elem.attr('loaded')) {
if ($elem.length != 1) {
layui.error("重复或不存在的组件名称[" + $elem.attr("name") + "]");
return;
} else if ((dataurl == undefined || dataurl == "") && options.sourcedata.length==0) {
layui.error("请配置请求!");
return;
}else if(dataurl == undefined && options.sourcedata == undefined){
layui.error('未找到数据或数据源链接!');
return;
}
var isSuccess = false;
if(dataurl != undefined && dataurl != ""){
$.ajax({
type: options.method
, async: false
, url: dataurl
, data: eval('(' + options.params + ')')
, dataType: 'json'
, success: function (res) {
if (res['state'] == 'OK') {
datas = res['obj'];
isSuccess = true;
$elem.attr('loaded', 1);
} else {
throw Error(res['state']);
isSuccess = false;
}
}
, error: function (e, m) {
throw Error(m);
isSuccess = false;
}
});
if (!isSuccess && dataurl != undefined) { return; }
}else{
$elem.attr('loaded', 1);
}
options.value = ((value == undefined || value == null || value == "") ? options.value : value)
obj.init($elem, options, datas);
}
},
init: function ($elem, options, datas) {
var valus = [],
items = [],
toolhtml = [],
searchhtml = [],
cmpName = $elem.attr('name'),
layVerify = $elem.attr('lay-verify'),
checkClass = '',
checked = 'checked';
for (var i = 0; i < datas.length; i++) {
if (options.maxlength === (i - 1)) {
return
}
if (options.value.indexOf(datas[i][options.valuefield]) >= 0) {
valus.push(
[
, '<a href="javascript:;">'
, ' <span>' + datas[i][options.titlefield] + '</span>'
, ' <i style="' + (options.edittype == "" ? "" : "display:none") + '"></i>'
, '</a>'
].join('')
);
checkClass = 'layui-select layui-form-checkbox layui-form-checked';
checked = 'checked';
} else {
checkClass = 'layui-select layui-form-checkbox';
checked = '';
}
items.push([
, '<dd lay-value="' + datas[i][options.valuefield] + '" class="selectMulti-dd">'
, ' <input type="checkbox" lay-filter="searchChecked" ' + checked + ' ' + options.edittype + ' title="' + datas[i][options.titlefield] + '" lay-skin="primary">'
, ' <div class="' + checkClass + '" lay-skin="primary">'
, ' <span>' + datas[i][options.titlefield] + '</span>'
, ' <i class="layui-icon"></i>'
, ' </div>'
, '</dd>'
].join(''));
}
if(options.showtool){
toolhtml.push([
, '<dd lay-value="" class="selectMulti-tips" style="background-color: #FFF!important;">'
, ' <div class="selectMulti-cz-group" show="null">'
, ' <div class="selectMulti-cz" handle="selectAll" title="全选">'
, ' <i class="zlui-icon zlui-icon-check-all"></i>'
, ' <span>全选</span>'
, ' </div>'
, ' <div class="selectMulti-cz" handle="removeAll" title="清空">'
, ' <i class="zlui-icon zlui-icon-clean"></i>'
, ' <span>清空</span>'
, ' </div>'
, ' <div class="selectMulti-cz" handle="reverseAll" title="反选">'
, ' <i class="zlui-icon zlui-icon-check-invert"></i>'
, ' <span>反选</span>'
, ' </div>'
, ' </div>'
, '</dd>'
].join(''));
}
if (options.issearch == "on") {
searchhtml.push([
, '<dd lay-value="" class="selectMulti-search" style="background-color: #FFF!important;cursor:text">'
, ' <div class="layui-form" style="position: relative;">'
, ' <input type="text" placeholder="请输入关键词" id="selectmultikey" class="layui-input" style="margin-left:0px;border-color:#e6e6e6">'
, ' <span class="layui-btn layui-btn-sm layui-btn-normal" id="selectmulti-search-btn" style="position: absolute;top: 0;right: 0px;height:38px;line-height:38px">'
, ' <i class="layui-icon">&#xe615;</i>'
, ' </span>'
, ' <div>'
, '</dd>'
].join(''));
}
toolhtml.push(searchhtml.join(''));
var html = [
' <div class="layui-select-title">'
//, ' <input type="text" class="layui-input" id="' + cmpName + 'show" placeholder = "' + options.placeholder + '">'
, ' <input type="hidden" class="layui-input" ' + (layVerify ? 'lay-verify=' + layVerify : '') + ' name="' + cmpName + '">'
, ' <div class="layui-input selectMulti">'
, ' <a class="tipname">' + (!options.value ? options.placeholder : "") + ((options.max != "" && !options.value) ? options.max : "") + '</a>'
, ' <i class="layui-edge"></i>'
, valus.join('')
, ' </div>'
, ' <dl class="layui-anim layui-anim-upbit">'
, toolhtml.join('')
, items.join('')
, ' </dl>'
, '</div>'
];
$elem.append(html.join(''));
if (options.edittype == 'disabled') {
$elem.find('.' + TITLE).find(".selectMulti").css({
'background-color': 'rgba(247, 244, 244, 0.63)',
'color': 'rgba(8, 8, 8, 0.63) !important',
'cursor': 'not-allowed'
})
return;
}
var $title = $elem.find('.' + TITLE),
$dl = $elem.find('dl'),
$dds = $dl.children('dd.selectMulti-dd'),
$input = $elem.find('input[type="hidden"]'),
$selectMulti = $title.find(".selectMulti"),
//展开下拉
showDown = function ($elem) {
var top = $elem.offset().top + $elem.outerHeight() + 5 - win.scrollTop(),
dlHeight = $dl.outerHeight();
$("." + CLASS).removeClass(CLASS + 'ed');
$elem.addClass(CLASS + 'ed');
$dds.removeClass(HIDE);
//上下定位识别
if (top + dlHeight > win.height() && top >= dlHeight) {
$elem.addClass(CLASS + 'up');
}
//宽度
$dl.width($elem.parent().width());
$elem.bind("mousedown", onBodyDown);
$dds.each(function () {
$(this).show();
});
},
//隐藏下拉
hideDown = function (choose) {
$elem.removeClass(CLASS + 'ed ' + CLASS + 'up');
$elem.bind("mousedown", onBodyDown);
if (options.issearch == "on") {
$elem.find('#selectmultikey').val("");
}
},
onBodyDown = function (event) {
var maxStr = '';
if ($input.val() == "") {
if (options.max != "")
maxStr = '' + options.max;
$title.find('.tipname').show().text(options.placeholder + maxStr);
}
if ($(event.target).parents(".layui-select-title").html() == null) {
hideDown();
}
},
setValue = function (value) {
$input.val(value);
};
//初始化值
setValue(options.value ? options.value : '');
//选择
$dds.on('click', function (e) {
var othis = $(this),
value = othis.attr('lay-value'),
valueStr = ($input.val() && $input.val().split(',')) || [];
if (othis.hasClass(DISABLED)) return false;
if (othis.find("input[type='checkbox']").is(':checked')) {
if (valueStr.length >= options.maxlength) {
othis.find('div').removeClass('layui-form-checked');
$input.val(valueStr);
$input.parents('.select-multiple').addClass('layui-form-danger');
return false
}
if (valueStr.length === 0 || valueStr.indexOf(value) === -1) {
$selectMulti.find(".tipname").hide();
$selectMulti.html($selectMulti.html() + '<a href="javascript:;"><span>' + othis.find('span').text() + '</span><i></i></a>');
valueStr.push(value);
}
} else {
$selectMulti.find('a').each(function () {
if ($(this).find('span').text() == othis.find('span').text()) {
$(this).remove();
valueStr.removeElem(value);
}
})
}
$input.val(valueStr);
setTimeout(function () { $input.parents('.select-multiple').removeClass('layui-form-danger') }, 3000);
obj.tip($elem, options);
e.stopPropagation();
layui.event.call(this, 'zlSelectMultiple', 'div(' + cmpName + ')', {
elem: $elem[0]
, value: valueStr
, othis: $elem[0]
});
});
//点击出现下拉框
$title.on('click', function (e) {
if (!$elem.hasClass(CLASS + 'ed')) {
showDown($elem);
} else {
hideDown();
obj.tip($elem, options);
}
e.stopPropagation();
});
//多选删除并维护值字符串
$title.delegate('.selectMulti a i', "click", function (e) {
var valueStr = ($input.val() && $input.val().split(',')) || [];
var _this = $(this);
e.stopPropagation();
$title.find('dd').each(function () {
if ($(this).find('span').text() == _this.siblings('span').text()) {
var othis = $(this);
$(this).find('input').removeAttr('checked');
$(this).find('.layui-form-checkbox').removeClass('layui-form-checked');
valueStr.removeElem($(this).attr('lay-value'));
$input.val(valueStr);
}
})
$(this).parent('a').remove();
obj.tip($elem, options);
layui.event.call(this, 'zlSelectMultiple', 'div(' + cmpName + ')', {
elem: $elem[0]
, value: valueStr
, othis: $elem[0]
});
})
$("body").bind("mousedown", onBodyDown);
//操作栏点击事件
$elem.find('.' + OPERATIONBTN).on('click', function (e) {
var _this = $(this),
handle = _this.attr('handle');
obj.toolOperation($elem, options, handle);
e.stopPropagation();
});
//搜索框
$elem.find('#selectmultikey').off().on('click', function (e) {
e.stopPropagation();
});
$elem.find("#selectmultikey").bind('keydown', function (e) {//给输入框绑定按键事件
if (e.keyCode == "13") {//判断如果按下的是回车键则执行下面的代码
var insertVal = $(this).val();//手动输入的字符串;
$dds.each(function () {
var paraStr = $(this).find('span').text();
if (paraStr.indexOf(insertVal) < 0) {//不包含
$(this).hide();
} else {//包含
$(this).show();
}
});
e.preventDefault();
}
e.stopPropagation();
});
//搜索框
$elem.find('#selectmulti-search-btn').on('click', function (e) {
var insertVal = $('#selectmultikey').val();//手动输入的字符串;
$dds.each(function () {
var paraStr = $(this).find('span').text();
if (paraStr.indexOf(insertVal) < 0) {//不包含
$(this).hide();
} else {//包含
$(this).show();
}
});
e.stopPropagation();
});
},
// 工具栏操作
toolOperation: function ($elem, options, handle) {
if (options.edittype == 'disabled') return false;
var $dl = $elem.find('dl'),
$dds = $dl.children('dd.selectMulti-dd'),
$input = $elem.find('input[type="hidden"]'),
$selectMulti = $elem.find(".selectMulti"),
selectedVal = [],//临时数组
valueStr = ($input.val() && $input.val().split(',')) || [];
$dds.each(function () {
var _this = $(this),
value = _this.attr('lay-value');
switch (handle) {
// 全选
case "selectAll":
$selectMulti.find(".tipname").hide();
if (valueStr.length === 0 || valueStr.indexOf(value) === -1) {
if (valueStr.length >= options.maxlength) {
_this.find('div').removeClass('layui-form-checked');
$input.val(valueStr);
$input.parents('.select-multiple').addClass('layui-form-danger');
return false
}
_this.find('input').prop('checked', true);
_this.find('div').addClass('layui-form-checked');
$selectMulti.html($selectMulti.html() + '<a href="javascript:;"><span>' + _this.find('span').text() + '</span><i></i></a>');
valueStr.push(value);
}
break;
// 清空
case "removeAll":
if (valueStr.length == 0) return false;
_this.find('input').prop('checked', false);
_this.find('div').removeClass('layui-form-checked');
valueStr.removeElem(_this.attr('lay-value'));
$selectMulti.find('a').eq(0).nextAll('a').remove();
break;
// 反选
case "reverseAll":
if (_this.find('input').prop('checked')) {
_this.find('input').prop('checked', false);
_this.find('div').removeClass('layui-form-checked');
valueStr.removeElem(_this.attr('lay-value'));
$selectMulti.find('a').each(function () {
if ($(this).find('span').text() == _this.find('span').text()) {
$(this).remove();
}
})
} else {
$selectMulti.find(".tipname").hide();
if (selectedVal.length >= options.maxlength) {
_this.find('div').removeClass('layui-form-checked');
$input.val(valueStr);
$input.parents('.select-multiple').addClass('layui-form-danger');
return true;
} else {
_this.find('input').prop('checked', true);
_this.find('div').addClass('layui-form-checked');
selectedVal.push(value);
}
$selectMulti.html($selectMulti.html() + '<a href="javascript:;"><span>' + _this.find('span').text() + '</span><i></i></a>');
valueStr.push(value);
}
break;
}
})
$input.val(valueStr);
obj.tip($elem, options);
setTimeout(function () { $input.parents('.select-multiple').removeClass('layui-form-danger') }, 3000);
},
//placeholder提示
tip: function ($elem, options) {
var $title = $elem.find('.' + TITLE),
$input = $elem.find('input[type="hidden"]'),
maxStr = '';
if ($input.val() == "") {
if (options.max != "")
maxStr = '' + options.max;
$title.find('.tipname').show().text(options.placeholder + maxStr);
}
}
, on: function (events, callback) {
return layui.onevent.call(this, 'zlSelectMultiple', events, callback);
}
}
exports('zlSelectMultiple', obj);
});

View File

@ -1,255 +1,255 @@
/*
* @Author: gk
* 树形下拉框
* @Date: 2018-03-21 22:05:29
* @Last Modified by: txy
* @Last Modified time: 2019-10-28 09:15:50
* 参数 :
* render 函数
* @param $elem class等于 select-tree 组件的节点jquery对象
* @param value 勾选的值 用于回显示
* 例如: <div name="aa" class="layui-form-select select-tree" settings="{'Multiple':true, 'chkboxType':'{ &quot;Y&quot;: &quot;ps&quot;, &quot;N&quot;: &quot;s&quot; }', name: 'MX_MINGC', idKey: 'RWID', pIdKey: 'SYS_PARENTID', rootPid: null ,dataurl:'/kdayun/manager/coretables/query'}"></div>
*/
layui.define(['laypage', 'layer', 'form', 'zlConfig', 'zlContext'], function (exports) {
"use strict";
var $ = layui.$
, zlConfig = layui.zlConfig
, zlContext = layui.zlContext
, selecttree = {};
//组件重画消息处理
layui.event('WM_USERDEF', 'WM_DRAW', null, function (WParam) {
if (WParam && $(WParam.elem).attr('class') && $(WParam.elem).attr('class').indexOf('select-tree') >= 0) {
selecttree.render($(WParam.elem), WParam.value);
}
});
selecttree = {
cmpName: '',
render: function ($elem, value) {
var options = ($elem.attr('settings') ? eval('(' + $elem.attr('settings') + ')') : {})
, dataurl = options.dataurl
, datas = []
, isMultiple = options.Multiple
, chkboxType = eval('(' + options.chkboxType + ')')
, defaultOptions = {
Multiple: false
, chkboxType: {}
, name: 'name'
, method: 'get'
, idKey: 'id'
, pIdKey: 'pid'
, rootPid: null
, params: '{}'
, dataurl: ""
, value: ""
, placeholder: "请选择"
, verify:""
, edittype:'edit'
, panelHeight:'auto'
, parentCheck:false
};
var cmpName = $elem.attr('name');
options = $.extend({}, defaultOptions, options);
if (!$elem.attr('loaded')) {
if ($elem.length != 1) {
layui.error("重复或不存在的组件名称[" + $elem.attr("name") + "]");
return;
}
var isSuccess = false;
$.ajax({
type: options.method
, async: false
, url: dataurl
, data: eval('(' + options.params + ')')
, dataType: 'json'
// , contentType: "application/json"
, success: function (res) {
if (res['state'] == 'OK') {
datas = res['obj'];
isSuccess = true;
$elem.attr('loaded', 1);
} else {
throw Error(res['state']);
isSuccess = false;
}
}
, error: function (e, m) {
throw Error(m);
isSuccess = false;
}
});
if (!isSuccess) { return; }
var treeSettings = {
left:options.left,
view: {
dblClickExpand: false,
showLine: false
},
data: {
key: {
name: options.name
}
, simpleData: {
enable: true
, idKey: options.idKey
, pIdKey: options.pIdKey
, rootPid: options.rootPid
}
},
check: {
enable: false,
chkboxType: { "Y": "ps", "N": "s" }
},
callback: {
onClick: selecttree.onClick,
onCheck: selecttree.onCheck,
beforeClick: (options.parentCheck == true ? null : selecttree.beforeClick)
}
};
if (isMultiple) {
treeSettings.check.enable = isMultiple;
}
if (chkboxType !== undefined && chkboxType != null) {
treeSettings.check.chkboxType = chkboxType;
}
treeSettings.value = ((zlContext.isEmpty(value)) ? options.value : '' ? options.value : value);
treeSettings.verify = options.verify;
selecttree.init($elem, treeSettings, datas, options);
} else {
var tempvalue = ((zlContext.isEmpty(value)) ? options.value : value);
selecttree.setValue($elem, tempvalue,options);
}
},
init: function ($elem, settings, datas, options) {
var cmpName = $elem.attr('name'),
readonly = $elem.attr('disabled') ? 'disabled' : '',
mouseShow = $elem.attr('disabled') ? 'not-allowed' : 'pointer',
layVerify = $elem.attr('lay-verify'),
html = [
' <div class = "layui-select-title" >'
, ' <input id="' + cmpName + 'Show"' + 'type = "text" '+ readonly +' lay-verify="'+options.verify+'" placeholder = "' + options.placeholder + '" value = "" class = "layui-input" style="cursor: '+ mouseShow +'" readonly>'
, ' <i class= "layui-edge" ></i>'
, ' </div>'];
$elem.append(html.join(''));
$elem.parent().append([
' <div class="select-tree-content" style="display:none">',
, ' <input id="' + cmpName + 'Hide" type="hidden" ' + (layVerify ? 'lay-verify=' + layVerify : '') + ' name="' + cmpName + '">'
, ' <ul id="' + cmpName + 'Tree" class="ztree" style="margin-top:0;"></ul>'
, ' </div>'].join(''));
$elem.on("click", function () {
if($(this).attr('disabled')) return
if ($(this).parent().find(".select-tree-content").css("display") !== "none") {
selecttree.hideMenu()
} else {
$(this).addClass("layui-form-selected");
var Offset = $(this).offset();
var width = $(this).width() - 2;
var left = settings.left;
if (left!=undefined && left!=0){
$(this).parent().find(".select-tree-content").css(
"cssText",
"left:"+left+'px!important',
"height:"+ options.panelHeight
).slideDown("fast");
}else {
$(this).parent().find(".select-tree-content").css({
left: Offset.left+ "px!important",
top: Offset.top + $(this).height() + "px",
height: options.panelHeight,
}).slideDown("fast");
}
$(this).parent().find(".select-tree-content").css({
width: width+ "px"
});
$("body").bind("mousedown", selecttree.onBodyDown);
}
});
var treeId = cmpName + "Tree";
var treeObj = $.fn.zTree.init($("#" + treeId), settings, datas);
selecttree.setValue($elem, settings.value,options)
},
setValue: function ($elem, value, options) {
var cmpName = $elem.attr('name');
$("#" + cmpName + "Hide").val(value);
var treeId = cmpName + "Tree",
treeObj = $.fn.zTree.getZTreeObj(treeId),
nd = treeObj.getNodes(),
datas = treeObj.transformToArray(nd);
for (var i = 0, l = datas.length; i < l; i++) {
treeObj.setChkDisabled(datas[i], false);
var j = value.indexOf(datas[i][treeObj.setting.data.simpleData.idKey])
if (j >= 0) {
if (treeObj.setting.check.enable && !datas[i]['checked']) {
datas[i]['checked'] = true
} else if (!treeObj.setting.check.enable) {
treeObj.selectNode(datas[i]);
}
}else{
// 清空或者重新设置值的时候需要把之前勾选的置为false
datas[i]['checked'] = false;
}
treeObj.updateNode(datas[i]);
}
selecttree.assignment(cmpName, treeObj.setting.check.enable ? treeObj.getCheckedNodes() : treeObj.getSelectedNodes(),options);
if(options!=undefined && options.edittype == 'disabled'){
for (var i = 0, l = datas.length; i < l; i++) {
treeObj.setChkDisabled(datas[i], true);
}
}
},
getValue: function ($elem) {
var cmpName = $elem.attr('name');
return $("#" + cmpName + "Hide").val();
},
show: function () {
var formHtml = "<div></div>";
},
beforeClick: function (treeId, treeNode) {
var check = (treeNode && !treeNode.isParent);
return check;
},
onClick: function (event, treeId, treeNode) {
var treeObj = $.fn.zTree.getZTreeObj(treeId),
cmpName = treeId.substring(0, treeId.length - 4);
if(treeNode.chkDisabled == true){
return
}
if (treeObj.setting.check.enable == true) {
treeObj.checkNode(treeNode, !treeNode.checked, false)
selecttree.assignment(cmpName, treeObj.getCheckedNodes());
} else {
selecttree.assignment(cmpName, treeObj.getSelectedNodes());
selecttree.hideMenu();
}
},
onCheck: function (event, treeId, treeNode) {
var treeObj = $.fn.zTree.getZTreeObj(treeId),
cmpName = treeId.substring(0, treeId.length - 4);
selecttree.assignment(cmpName, treeObj.getCheckedNodes());
},
hideMenu: function () {
$(".select-tree").removeClass("layui-form-selected");
$(".select-tree-content").fadeOut("fast");
$("body").unbind("mousedown", selecttree.onBodyDown);
},
assignment: function (cmpName, datas) {
var treeId = cmpName + "Tree";
var names = [];
var ids = [];
var treeObj = $.fn.zTree.getZTreeObj(treeId);
for (var i = 0, l = datas.length; i < l; i++) {
names.push(datas[i][treeObj.setting.data.key.name]);
ids.push(datas[i][treeObj.setting.data.simpleData.idKey]);
}
$("#" + cmpName + "Show").attr("value", names.join(','));
$("#" + cmpName + "Show").attr("title", names.join(','));
$("#" + cmpName + "Hide").attr("value", ids.join(','));
},
onBodyDown: function (event) {
if ($(event.target).parents(".select-tree-content").html() == null) {
selecttree.hideMenu();
}
}
}
exports('zlSelecttree', selecttree);
/*
* @Author: gk
* 树形下拉框
* @Date: 2018-03-21 22:05:29
* @Last Modified by: txy
* @Last Modified time: 2019-10-28 09:15:50
* 参数 :
* render 函数
* @param $elem class等于 select-tree 组件的节点jquery对象
* @param value 勾选的值 用于回显示
* 例如: <div name="aa" class="layui-form-select select-tree" settings="{'Multiple':true, 'chkboxType':'{ &quot;Y&quot;: &quot;ps&quot;, &quot;N&quot;: &quot;s&quot; }', name: 'MX_MINGC', idKey: 'RWID', pIdKey: 'SYS_PARENTID', rootPid: null ,dataurl:'/kdayun/manager/coretables/query'}"></div>
*/
layui.define(['laypage', 'layer', 'form', 'zlConfig', 'zlContext'], function (exports) {
"use strict";
var $ = layui.$
, zlConfig = layui.zlConfig
, zlContext = layui.zlContext
, selecttree = {};
//组件重画消息处理
layui.event('WM_USERDEF', 'WM_DRAW', null, function (WParam) {
if (WParam && $(WParam.elem).attr('class') && $(WParam.elem).attr('class').indexOf('select-tree') >= 0) {
selecttree.render($(WParam.elem), WParam.value);
}
});
selecttree = {
cmpName: '',
render: function ($elem, value) {
var options = ($elem.attr('settings') ? eval('(' + $elem.attr('settings') + ')') : {})
, dataurl = options.dataurl
, datas = []
, isMultiple = options.Multiple
, chkboxType = eval('(' + options.chkboxType + ')')
, defaultOptions = {
Multiple: false
, chkboxType: {}
, name: 'name'
, method: 'get'
, idKey: 'id'
, pIdKey: 'pid'
, rootPid: null
, params: '{}'
, dataurl: ""
, value: ""
, placeholder: "请选择"
, verify:""
, edittype:'edit'
, panelHeight:'auto'
, parentCheck:false
};
var cmpName = $elem.attr('name');
options = $.extend({}, defaultOptions, options);
if (!$elem.attr('loaded')) {
if ($elem.length != 1) {
layui.error("重复或不存在的组件名称[" + $elem.attr("name") + "]");
return;
}
var isSuccess = false;
$.ajax({
type: options.method
, async: false
, url: dataurl
, data: eval('(' + options.params + ')')
, dataType: 'json'
// , contentType: "application/json"
, success: function (res) {
if (res['state'] == 'OK') {
datas = res['obj'];
isSuccess = true;
$elem.attr('loaded', 1);
} else {
throw Error(res['state']);
isSuccess = false;
}
}
, error: function (e, m) {
throw Error(m);
isSuccess = false;
}
});
if (!isSuccess) { return; }
var treeSettings = {
left:options.left,
view: {
dblClickExpand: false,
showLine: false
},
data: {
key: {
name: options.name
}
, simpleData: {
enable: true
, idKey: options.idKey
, pIdKey: options.pIdKey
, rootPid: options.rootPid
}
},
check: {
enable: false,
chkboxType: { "Y": "ps", "N": "s" }
},
callback: {
onClick: selecttree.onClick,
onCheck: selecttree.onCheck,
beforeClick: (options.parentCheck == true ? null : selecttree.beforeClick)
}
};
if (isMultiple) {
treeSettings.check.enable = isMultiple;
}
if (chkboxType !== undefined && chkboxType != null) {
treeSettings.check.chkboxType = chkboxType;
}
treeSettings.value = ((zlContext.isEmpty(value)) ? options.value : '' ? options.value : value);
treeSettings.verify = options.verify;
selecttree.init($elem, treeSettings, datas, options);
} else {
var tempvalue = ((zlContext.isEmpty(value)) ? options.value : value);
selecttree.setValue($elem, tempvalue,options);
}
},
init: function ($elem, settings, datas, options) {
var cmpName = $elem.attr('name'),
readonly = $elem.attr('disabled') ? 'disabled' : '',
mouseShow = $elem.attr('disabled') ? 'not-allowed' : 'pointer',
layVerify = $elem.attr('lay-verify'),
html = [
' <div class = "layui-select-title" >'
, ' <input id="' + cmpName + 'Show"' + 'type = "text" '+ readonly +' lay-verify="'+options.verify+'" placeholder = "' + options.placeholder + '" value = "" class = "layui-input" style="cursor: '+ mouseShow +'" readonly>'
, ' <i class= "layui-edge" ></i>'
, ' </div>'];
$elem.append(html.join(''));
$elem.parent().append([
' <div class="select-tree-content" style="display:none">',
, ' <input id="' + cmpName + 'Hide" type="hidden" ' + (layVerify ? 'lay-verify=' + layVerify : '') + ' name="' + cmpName + '">'
, ' <ul id="' + cmpName + 'Tree" class="ztree" style="margin-top:0;"></ul>'
, ' </div>'].join(''));
$elem.on("click", function () {
if($(this).attr('disabled')) return
if ($(this).parent().find(".select-tree-content").css("display") !== "none") {
selecttree.hideMenu()
} else {
$(this).addClass("layui-form-selected");
var Offset = $(this).offset();
var width = $(this).width() - 2;
var left = settings.left;
if (left!=undefined && left!=0){
$(this).parent().find(".select-tree-content").css(
"cssText",
"left:"+left+'px!important',
"height:"+ options.panelHeight
).slideDown("fast");
}else {
$(this).parent().find(".select-tree-content").css({
left: Offset.left+ "px!important",
top: Offset.top + $(this).height() + "px",
height: options.panelHeight,
}).slideDown("fast");
}
$(this).parent().find(".select-tree-content").css({
width: width+ "px"
});
$("body").bind("mousedown", selecttree.onBodyDown);
}
});
var treeId = cmpName + "Tree";
var treeObj = $.fn.zTree.init($("#" + treeId), settings, datas);
selecttree.setValue($elem, settings.value,options)
},
setValue: function ($elem, value, options) {
var cmpName = $elem.attr('name');
$("#" + cmpName + "Hide").val(value);
var treeId = cmpName + "Tree",
treeObj = $.fn.zTree.getZTreeObj(treeId),
nd = treeObj.getNodes(),
datas = treeObj.transformToArray(nd);
for (var i = 0, l = datas.length; i < l; i++) {
treeObj.setChkDisabled(datas[i], false);
var j = value.indexOf(datas[i][treeObj.setting.data.simpleData.idKey])
if (j >= 0) {
if (treeObj.setting.check.enable && !datas[i]['checked']) {
datas[i]['checked'] = true
} else if (!treeObj.setting.check.enable) {
treeObj.selectNode(datas[i]);
}
}else{
// 清空或者重新设置值的时候需要把之前勾选的置为false
datas[i]['checked'] = false;
}
treeObj.updateNode(datas[i]);
}
selecttree.assignment(cmpName, treeObj.setting.check.enable ? treeObj.getCheckedNodes() : treeObj.getSelectedNodes(),options);
if(options!=undefined && options.edittype == 'disabled'){
for (var i = 0, l = datas.length; i < l; i++) {
treeObj.setChkDisabled(datas[i], true);
}
}
},
getValue: function ($elem) {
var cmpName = $elem.attr('name');
return $("#" + cmpName + "Hide").val();
},
show: function () {
var formHtml = "<div></div>";
},
beforeClick: function (treeId, treeNode) {
var check = (treeNode && !treeNode.isParent);
return check;
},
onClick: function (event, treeId, treeNode) {
var treeObj = $.fn.zTree.getZTreeObj(treeId),
cmpName = treeId.substring(0, treeId.length - 4);
if(treeNode.chkDisabled == true){
return
}
if (treeObj.setting.check.enable == true) {
treeObj.checkNode(treeNode, !treeNode.checked, false)
selecttree.assignment(cmpName, treeObj.getCheckedNodes());
} else {
selecttree.assignment(cmpName, treeObj.getSelectedNodes());
selecttree.hideMenu();
}
},
onCheck: function (event, treeId, treeNode) {
var treeObj = $.fn.zTree.getZTreeObj(treeId),
cmpName = treeId.substring(0, treeId.length - 4);
selecttree.assignment(cmpName, treeObj.getCheckedNodes());
},
hideMenu: function () {
$(".select-tree").removeClass("layui-form-selected");
$(".select-tree-content").fadeOut("fast");
$("body").unbind("mousedown", selecttree.onBodyDown);
},
assignment: function (cmpName, datas) {
var treeId = cmpName + "Tree";
var names = [];
var ids = [];
var treeObj = $.fn.zTree.getZTreeObj(treeId);
for (var i = 0, l = datas.length; i < l; i++) {
names.push(datas[i][treeObj.setting.data.key.name]);
ids.push(datas[i][treeObj.setting.data.simpleData.idKey]);
}
$("#" + cmpName + "Show").attr("value", names.join(','));
$("#" + cmpName + "Show").attr("title", names.join(','));
$("#" + cmpName + "Hide").attr("value", ids.join(','));
},
onBodyDown: function (event) {
if ($(event.target).parents(".select-tree-content").html() == null) {
selecttree.hideMenu();
}
}
}
exports('zlSelecttree', selecttree);
});

View File

@ -1,51 +1,51 @@
/*
* @Author: gk
* tree+ grid+button+editform Page的页面
* @Date: 2018-01-17 09:53:01
* @Last Modified by: mikey.zhaopeng
* @Last Modified time: 2018-03-15 14:25:51
*/
layui.define(['zlConfig','zlContext'], function (exports) {
"use strict";
var $ = layui.$
, config = layui.zlConfig
, zlContext = layui.zlContext
, init = function (options) {
options = options || {};
var that = this;
var btnHtml = [];
zlContext.get(options.url, {}, function (result) {
//合并返回功能配置信息
$.extend(options, result);
/**渲染Tree*/
})
}
, zlTree = function () {};
zlTree.prototype.render = function (options, params) {
var that = this;
that.config = {
url: '' //页面的url
, title: ''
, pageSize: 20
, id: '' //dom元素的id
, elem: ''
}
//合并复制options配置到config
$.extend(true, that.config, options);
//获取page的dom对象
that.config.elem = $("#" + that.config.id);
that.config.url = $(that.config.elem).attr("url");
if (zlContext.isEmpty(that.config.url)) {
zlContext.warnMsg("zlTree url不能为空!");
return;
}
init(that.config);
};
/**加载数据 */
zlTree.prototype.load = function () {
var that = this;
context: get(that.config.url, "", function () { }, false);
}
var tree = new zlTree();
exports("zlTree", tree);
/*
* @Author: gk
* tree+ grid+button+editform Page的页面
* @Date: 2018-01-17 09:53:01
* @Last Modified by: mikey.zhaopeng
* @Last Modified time: 2018-03-15 14:25:51
*/
layui.define(['zlConfig','zlContext'], function (exports) {
"use strict";
var $ = layui.$
, config = layui.zlConfig
, zlContext = layui.zlContext
, init = function (options) {
options = options || {};
var that = this;
var btnHtml = [];
zlContext.get(options.url, {}, function (result) {
//合并返回功能配置信息
$.extend(options, result);
/**渲染Tree*/
})
}
, zlTree = function () {};
zlTree.prototype.render = function (options, params) {
var that = this;
that.config = {
url: '' //页面的url
, title: ''
, pageSize: 20
, id: '' //dom元素的id
, elem: ''
}
//合并复制options配置到config
$.extend(true, that.config, options);
//获取page的dom对象
that.config.elem = $("#" + that.config.id);
that.config.url = $(that.config.elem).attr("url");
if (zlContext.isEmpty(that.config.url)) {
zlContext.warnMsg("zlTree url不能为空!");
return;
}
init(that.config);
};
/**加载数据 */
zlTree.prototype.load = function () {
var that = this;
context: get(that.config.url, "", function () { }, false);
}
var tree = new zlTree();
exports("zlTree", tree);
});

View File

@ -1,68 +1,68 @@
/*
* @Author: gk
* 树形编辑窗口
* @Date: 2018-01-17 09:53:01
* @Last Modified by: gk
* @Last Modified time: 2018-01-26 11:05:28
*/
layui.define(['zlConfig', 'zlContext', 'form'], function (exports) {
var $ = layui.$
, zlContext = layui.zlContext
, zlConfig = layui.zlConfig
, from = layui.form
, statusName = zlConfig.global.result.statusName
, msgName = zlConfig.global.result.msgName
, dataName = zlConfig.global.result.dataName
, ERROR = zlConfig.global.result.errorState
, OK = zlConfig.global.result.okState
, init = function (_this) {
options = _this.config || {};
var btnHtml = [];
layui.use('zlComponentRender', function () {
var $ = layui.$
, zlComponentRender = layui.zlComponentRender
var formElems = zlComponentRender.forms(options, options.elem, options.tree.editForms);
if (formElems && options.editType && options.editType === "edit") {
$.each(formElems, function (i, formElem) {
/**填充数据 */
$(formElems).attr("edit");
$.extend(options.data, options.params);
zlComponentRender.loadFormLocateData(options, formElem, options.tree.editForms[0], [options.data]);
});
} else {
$.each(formElems, function (i, formElem) {
/**填充参数数据 */
$(formElems).attr("new");
zlComponentRender.loadFormLocateData(options, formElem, options.tree.editForms[0], [options.params]);
});
}
});
}
, zlTreeEditForm = {
config: {},
show: function (treeNode, options, params, editType) {
var that = this;
zlContext.showFormEx(1, window, options.title, options.width, options.height, '' //"/static/manager/functions/zlTreeEditForm.html?nodeId="+nodeId
, function () {
}, 0, function (layero, index) {
var tmpfig = {};
var contentElem = $(layero).find('.layui-layer-content');
$.extend(tmpfig, options);
tmpfig.elem = contentElem;
tmpfig.data = treeNode;
tmpfig.editType = editType;
tmpfig.params = params;
zlTreeEditForm.render(tmpfig, params);
});
},
/**渲染组件 */
render: function (options, params) {
var that = this;
$.extend(that.config, options);
that.config.id = zlContext.generateId();
init(that);
}
};
exports('zlTreeEditForm', zlTreeEditForm);
/*
* @Author: gk
* 树形编辑窗口
* @Date: 2018-01-17 09:53:01
* @Last Modified by: gk
* @Last Modified time: 2018-01-26 11:05:28
*/
layui.define(['zlConfig', 'zlContext', 'form'], function (exports) {
var $ = layui.$
, zlContext = layui.zlContext
, zlConfig = layui.zlConfig
, from = layui.form
, statusName = zlConfig.global.result.statusName
, msgName = zlConfig.global.result.msgName
, dataName = zlConfig.global.result.dataName
, ERROR = zlConfig.global.result.errorState
, OK = zlConfig.global.result.okState
, init = function (_this) {
options = _this.config || {};
var btnHtml = [];
layui.use('zlComponentRender', function () {
var $ = layui.$
, zlComponentRender = layui.zlComponentRender
var formElems = zlComponentRender.forms(options, options.elem, options.tree.editForms);
if (formElems && options.editType && options.editType === "edit") {
$.each(formElems, function (i, formElem) {
/**填充数据 */
$(formElems).attr("edit");
$.extend(options.data, options.params);
zlComponentRender.loadFormLocateData(options, formElem, options.tree.editForms[0], [options.data]);
});
} else {
$.each(formElems, function (i, formElem) {
/**填充参数数据 */
$(formElems).attr("new");
zlComponentRender.loadFormLocateData(options, formElem, options.tree.editForms[0], [options.params]);
});
}
});
}
, zlTreeEditForm = {
config: {},
show: function (treeNode, options, params, editType) {
var that = this;
zlContext.showFormEx(1, window, options.title, options.width, options.height, '' //"/static/manager/functions/zlTreeEditForm.html?nodeId="+nodeId
, function () {
}, 0, function (layero, index) {
var tmpfig = {};
var contentElem = $(layero).find('.layui-layer-content');
$.extend(tmpfig, options);
tmpfig.elem = contentElem;
tmpfig.data = treeNode;
tmpfig.editType = editType;
tmpfig.params = params;
zlTreeEditForm.render(tmpfig, params);
});
},
/**渲染组件 */
render: function (options, params) {
var that = this;
$.extend(that.config, options);
that.config.id = zlContext.generateId();
init(that);
}
};
exports('zlTreeEditForm', zlTreeEditForm);
});

View File

@ -1,148 +1,148 @@
/**
* __ ___
* / |/ /___ _____ _____ ___ ____ ____ _ ___ _____
* / /|_/ // _ \ / ___// ___// _ \ / __ \ / __ `// _ \ / ___/
* / / / // __/(__ )(__ )/ __// / / // /_/ // __// /
* /_/ /_/ \___//____//____/ \___//_/ /_/ \__, / \___//_/
* /____/
*
* @description MessengerJS, a common cross-document communicate solution.
* @author biqing kwok
* @version 2.0
* @license release under MIT license
*/
layui.define([], function (exports) {
"use strict";
var $=layui.$;
var Messenger = function(){
// 消息前缀, 建议使用自己的项目名, 避免多项目之间的冲突
// !注意 消息前缀应使用字符串类型
var prefix = "[PROJECT_NAME]",
supportPostMessage = 'postMessage' in window;
// Target 类, 消息对象
function Target(target, name, prefix) {
var errMsg = '';
if (arguments.length < 2) {
errMsg = 'target error - target and name are both required';
} else if (typeof target != 'object') {
errMsg = 'target error - target itself must be window object';
} else if (typeof name != 'string') {
errMsg = 'target error - target name must be string type';
}
if (errMsg) {
throw new Error(errMsg);
}
this.target = target;
this.name = name;
this.prefix = prefix;
}
// 往 target 发送消息, 出于安全考虑, 发送消息会带上前缀
if (supportPostMessage) {
// IE8+ 以及现代浏览器支持
Target.prototype.send = function (msg) {
this.target.postMessage(this.prefix + '|' + this.name + '__Messenger__' + msg, '*');
};
} else {
// 兼容IE 6/7
Target.prototype.send = function (msg) {
var targetFunc = window.navigator[this.prefix + this.name];
if (typeof targetFunc == 'function') {
targetFunc(this.prefix + msg, window);
} else {
throw new Error("target callback function is not defined");
}
};
}
// 信使类
// 创建Messenger实例时指定, 必须指定Messenger的名字, (可选)指定项目名, 以避免Mashup类应用中的冲突
// !注意: 父子页面中projectName必须保持一致, 否则无法匹配
function Messenger(messengerName, projectName) {
this.targets = {};
this.name = messengerName;
this.listenFunc = [];
this.prefix = projectName || prefix;
this.initListen();
}
// 添加一个消息对象
Messenger.prototype.addTarget = function (target, name) {
var targetObj = new Target(target, name, this.prefix);
this.targets[name] = targetObj;
};
// 初始化消息监听
Messenger.prototype.initListen = function () {
var self = this;
var generalCallback = function (msg) {
if (typeof msg == 'object' && msg.data) {
msg = msg.data;
}
var msgPairs = msg.split('__Messenger__');
var msg = msgPairs[1];
var pairs = msgPairs[0].split('|');
var prefix = pairs[0];
var name = pairs[1];
for (var i = 0; i < self.listenFunc.length; i++) {
if (prefix + name === self.prefix + self.name) {
self.listenFunc[i](msg);
}
}
};
if (supportPostMessage) {
if ('addEventListener' in document) {
window.addEventListener('message', generalCallback, false);
} else if ('attachEvent' in document) {
window.attachEvent('onmessage', generalCallback);
}
} else {
// 兼容IE 6/7
window.navigator[this.prefix + this.name] = generalCallback;
}
};
// 监听消息
Messenger.prototype.listen = function (callback) {
var i = 0;
var len = this.listenFunc.length;
var cbIsExist = false;
for (; i < len; i++) {
if (this.listenFunc[i] == callback) {
cbIsExist = true;
break;
}
}
if (!cbIsExist) {
this.listenFunc.push(callback);
}
};
// 注销监听
Messenger.prototype.clear = function () {
this.listenFunc = [];
};
// 广播消息
Messenger.prototype.send = function (msg) {
var iframes=top.window.document.getElementsByTagName("iframe");
// 先清空原来的
this.targets = {};
for(var i = 0;i<iframes.length;i++){
Messenger.addTarget(iframes[i].document,iframes[i].HTML());
}
var targets = this.targets,
target;
for (target in targets) {
if (targets.hasOwnProperty(target)) {
targets[target].send(msg);
}
}
};
return Messenger;
};
exports("zlmessenger",Messenger);
});
/**
* __ ___
* / |/ /___ _____ _____ ___ ____ ____ _ ___ _____
* / /|_/ // _ \ / ___// ___// _ \ / __ \ / __ `// _ \ / ___/
* / / / // __/(__ )(__ )/ __// / / // /_/ // __// /
* /_/ /_/ \___//____//____/ \___//_/ /_/ \__, / \___//_/
* /____/
*
* @description MessengerJS, a common cross-document communicate solution.
* @author biqing kwok
* @version 2.0
* @license release under MIT license
*/
layui.define([], function (exports) {
"use strict";
var $=layui.$;
var Messenger = function(){
// 消息前缀, 建议使用自己的项目名, 避免多项目之间的冲突
// !注意 消息前缀应使用字符串类型
var prefix = "[PROJECT_NAME]",
supportPostMessage = 'postMessage' in window;
// Target 类, 消息对象
function Target(target, name, prefix) {
var errMsg = '';
if (arguments.length < 2) {
errMsg = 'target error - target and name are both required';
} else if (typeof target != 'object') {
errMsg = 'target error - target itself must be window object';
} else if (typeof name != 'string') {
errMsg = 'target error - target name must be string type';
}
if (errMsg) {
throw new Error(errMsg);
}
this.target = target;
this.name = name;
this.prefix = prefix;
}
// 往 target 发送消息, 出于安全考虑, 发送消息会带上前缀
if (supportPostMessage) {
// IE8+ 以及现代浏览器支持
Target.prototype.send = function (msg) {
this.target.postMessage(this.prefix + '|' + this.name + '__Messenger__' + msg, '*');
};
} else {
// 兼容IE 6/7
Target.prototype.send = function (msg) {
var targetFunc = window.navigator[this.prefix + this.name];
if (typeof targetFunc == 'function') {
targetFunc(this.prefix + msg, window);
} else {
throw new Error("target callback function is not defined");
}
};
}
// 信使类
// 创建Messenger实例时指定, 必须指定Messenger的名字, (可选)指定项目名, 以避免Mashup类应用中的冲突
// !注意: 父子页面中projectName必须保持一致, 否则无法匹配
function Messenger(messengerName, projectName) {
this.targets = {};
this.name = messengerName;
this.listenFunc = [];
this.prefix = projectName || prefix;
this.initListen();
}
// 添加一个消息对象
Messenger.prototype.addTarget = function (target, name) {
var targetObj = new Target(target, name, this.prefix);
this.targets[name] = targetObj;
};
// 初始化消息监听
Messenger.prototype.initListen = function () {
var self = this;
var generalCallback = function (msg) {
if (typeof msg == 'object' && msg.data) {
msg = msg.data;
}
var msgPairs = msg.split('__Messenger__');
var msg = msgPairs[1];
var pairs = msgPairs[0].split('|');
var prefix = pairs[0];
var name = pairs[1];
for (var i = 0; i < self.listenFunc.length; i++) {
if (prefix + name === self.prefix + self.name) {
self.listenFunc[i](msg);
}
}
};
if (supportPostMessage) {
if ('addEventListener' in document) {
window.addEventListener('message', generalCallback, false);
} else if ('attachEvent' in document) {
window.attachEvent('onmessage', generalCallback);
}
} else {
// 兼容IE 6/7
window.navigator[this.prefix + this.name] = generalCallback;
}
};
// 监听消息
Messenger.prototype.listen = function (callback) {
var i = 0;
var len = this.listenFunc.length;
var cbIsExist = false;
for (; i < len; i++) {
if (this.listenFunc[i] == callback) {
cbIsExist = true;
break;
}
}
if (!cbIsExist) {
this.listenFunc.push(callback);
}
};
// 注销监听
Messenger.prototype.clear = function () {
this.listenFunc = [];
};
// 广播消息
Messenger.prototype.send = function (msg) {
var iframes=top.window.document.getElementsByTagName("iframe");
// 先清空原来的
this.targets = {};
for(var i = 0;i<iframes.length;i++){
Messenger.addTarget(iframes[i].document,iframes[i].HTML());
}
var targets = this.targets,
target;
for (target in targets) {
if (targets.hasOwnProperty(target)) {
targets[target].send(msg);
}
}
};
return Messenger;
};
exports("zlmessenger",Messenger);
});

View File

@ -1,133 +1,133 @@
layui.define(['zlContext'], function (exports) {
'use strict';
var $ = layui.$
, form = layui.form
, zlContext = layui.zlContext
, formindex
, zlshenhjm = {
render: function (processid,url,params,formres,callback) {
zlContext.post(layui.cache['contentPath'] + "/core/workflow/model/getformdata", processid, function (data) {
data=data.obj;
var formparams={};
var titleparams={};
if(data!=null){
$.each(data ,function(index,record){
formparams[record.id]=record.value;
});
}
formres = $.extend({}, formparams,formres) ;
zlshenhjm.openform(processid,url,params,formres,callback,data);
});
},
openform: function (processid,url,params,formres,callback,data) {
var html = ['<form class="layui-form " style="margin:8px" id="addnew" >'
, ' <div class="layui-form-item">'
, ' <div class="layui-col-md12 ">'
, ' <label class="layui-form-label">流程操作:</label>'
, ' <div class="layui-input-block">'
, ' <input type="radio" id="canSongs" name="confirm" value="1" lay-filter="check" title="送审/提交">'
, ' <input type="radio" id="canTongy" name="confirm" value="3" lay-filter="check" title="同意">'
, ' <input type="radio" id="canTuih" name="confirm" value="0" lay-filter="check" title="退回">'
, ' <input type="radio" id="canButy" name="confirm" value="2" lay-filter="check" title="不同意">'
, ' <input type="radio" id="canQuh" name="confirm" value="4" lay-filter="check" title="取回">'
, ' <input type="hidden" id="inputcanSongs" >'
, ' <input type="hidden" id="inputcanTongy" >'
, ' <input type="hidden" id="inputcanTuih" >'
, ' <input type="hidden" id="inputcanButy" >'
, ' <input type="hidden" id="inputcanQuh" >'
, ' </div>'
, ' </div>'
, ' </div>'
, ' <div class="layui-form-item">'
, ' <div class="layui-col-md12">'
, ' <label class="layui-form-label">审批意见:</label>'
, ' <div class="layui-input-block">'
, ' <textarea class="layui-textarea" lay-filter="comment" maxlength="255" name="comment" style="width:90%"></textarea>'
, ' </div>'
, ' </div>'
, ' </div>'
, ' <div class="layui-form-btn-box">'
, ' <button class="layui-btn" id="btnadd" lay-submit lay-filter="updateprocess" style="">提交</button>'
, ' <button class="layui-btn layui-btn-primary" lay-submit lay-filter="cancel">取消</button>'
, ' </div>'
, '</form>'
];
formindex = layer.open(
{
type: 1,
id: 'zlshenhjmCheckLayer',
content: html.join(""),
title: "流程审核",
area:'600px',
success: function (index) {
form.render();
zlshenhjm.setcommit(processid, callback,url,params);
zlshenhjm.setvisibleBtn(formres,data);
}
}
);
},
setvisibleBtn:function(formres,data){
if (data && data.length > 0) {
$.each(data ,function(index,record){
$('#'+record.id).attr('title',record.name);
$('#input'+record.id).val(record.comment);
});
}
form.render();
if(formres.canTuih=='false'){
$('#canTuih').next().css('display','none');
}
if(formres.canSongs=='false'){
$('#canSongs').next().css('display','none');
}
if(formres.canButy=='false'){
$('#canButy').next().css('display','none');
}
if(formres.canTongy=='false'){
$('#canTongy').next().css('display','none');
}
if(formres.canQuh=='false'){
$('#canQuh').next().css('display','none');
}
},
setcommit: function (processid, callback,url,params) {
form.on('submit(updateprocess)', function (data) {
if(data.field.confirm==undefined){
zlContext.errorMsg('请选择相应的流程操作!');
return false;
}
var param ={comment:data.field.comment,confirm: data.field.confirm,processid:processid};
if(url){
params = $.extend({},params,param);
}else {
url= layui.cache['contentPath'] + "/core/workflow/updateprocess";
}
zlContext.post(url, params, function (data) {
if (data.state == 'OK') {
layer.close(formindex);
if(callback!=undefined){
callback();
}else{
zlContext.successMsg('流程审核成功!');
}
}else{
zlContext.errorMsg(data.msg);
}
});
return false;
});
form.on('submit(cancel)', function (data){
layer.close(formindex);
return false;
})
form.on('radio(check)', function (data) {
$('textarea[name="comment"]').val($('#input'+data.elem.id).val());
});
}
};
exports('zlshenhjm', zlshenhjm);
layui.define(['zlContext'], function (exports) {
'use strict';
var $ = layui.$
, form = layui.form
, zlContext = layui.zlContext
, formindex
, zlshenhjm = {
render: function (processid,url,params,formres,callback) {
zlContext.post(layui.cache['contentPath'] + "/core/workflow/model/getformdata", processid, function (data) {
data=data.obj;
var formparams={};
var titleparams={};
if(data!=null){
$.each(data ,function(index,record){
formparams[record.id]=record.value;
});
}
formres = $.extend({}, formparams,formres) ;
zlshenhjm.openform(processid,url,params,formres,callback,data);
});
},
openform: function (processid,url,params,formres,callback,data) {
var html = ['<form class="layui-form " style="margin:8px" id="addnew" >'
, ' <div class="layui-form-item">'
, ' <div class="layui-col-md12 ">'
, ' <label class="layui-form-label">流程操作:</label>'
, ' <div class="layui-input-block">'
, ' <input type="radio" id="canSongs" name="confirm" value="1" lay-filter="check" title="送审/提交">'
, ' <input type="radio" id="canTongy" name="confirm" value="3" lay-filter="check" title="同意">'
, ' <input type="radio" id="canTuih" name="confirm" value="0" lay-filter="check" title="退回">'
, ' <input type="radio" id="canButy" name="confirm" value="2" lay-filter="check" title="不同意">'
, ' <input type="radio" id="canQuh" name="confirm" value="4" lay-filter="check" title="取回">'
, ' <input type="hidden" id="inputcanSongs" >'
, ' <input type="hidden" id="inputcanTongy" >'
, ' <input type="hidden" id="inputcanTuih" >'
, ' <input type="hidden" id="inputcanButy" >'
, ' <input type="hidden" id="inputcanQuh" >'
, ' </div>'
, ' </div>'
, ' </div>'
, ' <div class="layui-form-item">'
, ' <div class="layui-col-md12">'
, ' <label class="layui-form-label">审批意见:</label>'
, ' <div class="layui-input-block">'
, ' <textarea class="layui-textarea" lay-filter="comment" maxlength="255" name="comment" style="width:90%"></textarea>'
, ' </div>'
, ' </div>'
, ' </div>'
, ' <div class="layui-form-btn-box">'
, ' <button class="layui-btn" id="btnadd" lay-submit lay-filter="updateprocess" style="">提交</button>'
, ' <button class="layui-btn layui-btn-primary" lay-submit lay-filter="cancel">取消</button>'
, ' </div>'
, '</form>'
];
formindex = layer.open(
{
type: 1,
id: 'zlshenhjmCheckLayer',
content: html.join(""),
title: "流程审核",
area:'600px',
success: function (index) {
form.render();
zlshenhjm.setcommit(processid, callback,url,params);
zlshenhjm.setvisibleBtn(formres,data);
}
}
);
},
setvisibleBtn:function(formres,data){
if (data && data.length > 0) {
$.each(data ,function(index,record){
$('#'+record.id).attr('title',record.name);
$('#input'+record.id).val(record.comment);
});
}
form.render();
if(formres.canTuih=='false'){
$('#canTuih').next().css('display','none');
}
if(formres.canSongs=='false'){
$('#canSongs').next().css('display','none');
}
if(formres.canButy=='false'){
$('#canButy').next().css('display','none');
}
if(formres.canTongy=='false'){
$('#canTongy').next().css('display','none');
}
if(formres.canQuh=='false'){
$('#canQuh').next().css('display','none');
}
},
setcommit: function (processid, callback,url,params) {
form.on('submit(updateprocess)', function (data) {
if(data.field.confirm==undefined){
zlContext.errorMsg('请选择相应的流程操作!');
return false;
}
var param ={comment:data.field.comment,confirm: data.field.confirm,processid:processid};
if(url){
params = $.extend({},params,param);
}else {
url= layui.cache['contentPath'] + "/core/workflow/updateprocess";
}
zlContext.post(url, params, function (data) {
if (data.state == 'OK') {
layer.close(formindex);
if(callback!=undefined){
callback();
}else{
zlContext.successMsg('流程审核成功!');
}
}else{
zlContext.errorMsg(data.msg);
}
});
return false;
});
form.on('submit(cancel)', function (data){
layer.close(formindex);
return false;
})
form.on('radio(check)', function (data) {
$('textarea[name="comment"]').val($('#input'+data.elem.id).val());
});
}
};
exports('zlshenhjm', zlshenhjm);
});

View File

@ -1,310 +1,310 @@
layui.define(['zlContext', 'layer', 'zlConfig'], function (exports) {
var $ = layui.$,
zlContext = layui.zlContext,
zlConfig = layui.zlConfig,
statusName = zlConfig.global.result.statusName,
dataName = zlConfig.global.result.dataName,
OK = zlConfig.global.result.okState,
treeObj = null;
var zltreemenu = {
isloadsearch: false,
isExpand: false,
options: {},
callback: {},
/**
* @param {*} id 目标ul ID
* @param {*} setting zTree 自定义配置项 需是对象
* @param {*} callback zTree 各回调函数
*/
render: function (id, setting, callback) {
var defaultOptions = { // 默认配置项
name: 'OBJNAME', // zTree 节点数据保存节点名称的属性名称
type: 'post', // Ajax 的 http 请求模式
idKey: 'RWID', // 节点数据中保存唯一标识的属性名称
pIdKey: 'SYS_PARENTID', // 节点数据中保存其父节点唯一标识的属性名称
rootPid: null, // 用于修正根节点父节点数据,即 pIdKey 指定的属性值
autoParam: [], // 异步加载时需要自动提交父节点属性的参数
otherParam: {}, // Ajax 请求提交的静态参数键值对
isCopy: false, // 拖拽时, 设置是否允许复制节点
isMove: true, // 拖拽时, 设置是否允许移动节点
prev: true, // 拖拽到目标节点时,设置是否允许移动到目标节点前面的操作
next: true, // 拖拽到目标节点时,设置是否允许移动到目标节点后面的操作
editEnable: true, // 设置 zTree 是否处于编辑状态
showRemoveBtn: false, // 设置是否显示删除按钮
showRenameBtn: false, // 设置是否显示编辑名称按钮
checkEnable: false,
chkStyle: "checkbox",
chkboxType: {
"Y": "ps",
"N": "ps"
},
zNodes:[],
// autoCheckTrigger: false,
// nocheckInherit: false,
// chkDisabledInherit: false,
// radioType: "level",
search: true, // 是否开启搜索功能
// asyncSearch: false,
asyncChildNodes: false // 1.zTree 的节点父节点属性锁,是否始终保持 isParent = true 2.作为搜索方式的判断依据
// 详细参数说明可查看zTree API文档 http://www.treejs.cn/v3/api.php
};
if (zltreemenu.options[id]) {
zltreemenu.options[id] = $.extend({}, zltreemenu.options[id], setting);
} else {
zltreemenu.options[id] = $.extend({}, defaultOptions, setting);
}
zltreemenu.callback[id] = $.extend({}, zltreemenu.callback[id], callback);
var zltreeSetting = {
view: {
showLine: true,
fontCss: zltreemenu.options[id].fontCss ? zltreemenu.options[id].fontCss : {}
},
async: {
enable: true,
url: zltreemenu.options[id].dataurl,
type: zltreemenu.options[id].type,
autoParam: zltreemenu.options[id].autoParam,
otherParam: zltreemenu.options[id].otherParam,
contentType: (zltreemenu.options[id].contentType ? zltreemenu.options[id].contentType : 'application/x-www-form-urlencoded'),
dataType: "json",
dataFilter: zltreemenu.options[id].dataFilter ? zltreemenu.options[id].dataFilter : zltreemenu.dataFilter
},
check: {
enable: zltreemenu.options[id].checkEnable,
chkStyle: zltreemenu.options[id].chkStyle,
chkboxType: zltreemenu.options[id].chkboxType,
},
data: {
keep: {
leaf: false,
parent: zltreemenu.options[id].asyncChildNodes,
},
key: {
name: zltreemenu.options[id].name
},
simpleData: {
enable: true,
idKey: zltreemenu.options[id].idKey,
pIdKey: zltreemenu.options[id].pIdKey,
rootPid: zltreemenu.options[id].rootPid
}
},
edit: {
drag: {
isCopy: zltreemenu.options[id].isCopy,
isMove: zltreemenu.options[id].isMove,
prev: zltreemenu.options[id].prev,
next: zltreemenu.options[id].next,
inner: zltreemenu.options[id].inner
},
enable: zltreemenu.options[id].editEnable,
showRemoveBtn: zltreemenu.options[id].showRemoveBtn,
showRenameBtn: zltreemenu.options[id].showRenameBtn,
},
callback: zltreemenu.callback[id]
};
// 搜索部分 dom
var searchHtml = [
'<div class="layui-form-item layui-search zltreeMenuSearch">',
' <div class="layui-input-block">',
' <input id="btnTreeSearchInput" type="text" name="search" data-boxid="' + id + '" placeholder="请输入查找的值" class="layui-input">',
' <a href="javascript:;" id="btnTreeSearch" style="">',
' <i class="layui-icon layui-icon-search"></i>',
' </a></div></div>'
];
if (zltreemenu.options[id].search && $('#' + id).parent('div').siblings('div.layui-search').length == 0) { // 开启搜索功能后 搜索框渲染
$('#' + id).parent('div').before(searchHtml.join(''))
}
// 树形菜单
// 获取属性菜单的静态数据
var getzNodes = zltreemenu.options[id].zNodes
treeObj = $.fn.zTree.init($('#' + id), zltreeSetting, getzNodes);
return treeObj;
},
search: function (value, type, id) {
// 一次性加载所有数据时
if (!type) {
zltreemenu.isloadsearch = true;
treeObj = $.fn.zTree.getZTreeObj(id);
// 首先显示所有已隐藏的项
treeObj.showNodes(treeObj.getNodesByParam("isHidden", true))
if (value == '') {
$('#' + id).find('.noResultBox').remove();
var firstNode = treeObj.getNodesByFilter(function (node) {
return node.level == 0 && node.isFirstNode;
});
if (firstNode.length > 0) {
treeObj.selectNode(firstNode[0]);
$("#" + firstNode[0].tId + "_a").click();
$('#' + id).parents('.zltree-body').scrollTop(0)
}
if ($('ul#roletree').length > 0) {
$('ul#roletree').find('li').show();
$('ul#roletree').siblings('.noResultBox').remove();
$('ul#authtree').find('li').show();
$('ul#authtree').find('div.layui-none').remove();
}
return;
}
// 所有无子节点的节点
var noChildrenNodes = treeObj.getNodesByParam("isParent", false);
// 先隐藏所有,满足条件的节点显示
treeObj.hideNodes(noChildrenNodes)
treeObj.expandAll(true);
treeObj.showNodes(treeObj.getNodesByFilter(function (noChildrenNodes) {
return noChildrenNodes.check_Child_State == -1 && noChildrenNodes[treeObj.setting.data.key.name].indexOf(value) > -1
}));
// 将没有子节点显示的父级节点也隐藏掉
// 先获取所有父级节点
setTimeout(function () {
var pNodes = treeObj.getNodesByParam("isParent", true);
pNodes.sort(compare('level'))
for (var i = 0; i < pNodes.length; i++) {
if (pNodes[i].children.length != 0) {
var hideNum = 0;
for (var k = 0; k < pNodes[i].children.length; k++) {
var item = pNodes[i].children[k];
if (item.isHidden == true) {
hideNum++;
}
}
if (hideNum == pNodes[i].children.length && pNodes[i][treeObj.setting.data.key.name].indexOf(value) == -1) {
treeObj.hideNode(pNodes[i])
}
}
}
if (treeObj.getNodesByParam("isHidden", false).length == 0) {
// zlContext.warnMsg('没有搜索到相关数据');
if ($('#' + id).find('.noResultBox').length == 0) {
$('#' + id).append(zltreemenu.noresult)
}
zltreemenu.isHideTableData(zltreemenu.options[id].tableId, false);
// 角色权限管理页面 搜索显示
if ($('ul#roletree').length > 0) {
$('ul#roletree').find('li').hide();
if($('ul#roletree').siblings('div.noResultBox').length==0){
$('ul#roletree').after(zltreemenu.noresult);
}
$('ul#authtree').find('li').hide();
zlContext.noData($('ul#authtree'))
}
} else {
if ($('ul#roletree').length > 0) {
$('ul#roletree').find('li').show();
$('ul#roletree').siblings('.noResultBox').remove();
$('ul#authtree').find('li').show();
$('ul#authtree').find('div.layui-none').remove();
}
zltreemenu.isHideTableData(zltreemenu.options[id].tableId, true);
$('#' + id).find('.noResultBox').remove();
var firstNode = treeObj.getNodesByFilter(function (node) {
return node.level == 0 && node.isFirstNode;
});
if (firstNode.length > 0) {
treeObj.selectNode(firstNode[0]);
$("#" + firstNode[0].tId + "_a").click();
$('#' + id).parents('.zltree-body').scrollTop(0)
}
}
$('#btnTreeSearchInput').focus();
}, 0)
} else {
zltreemenu.searchNodesByFuzzy(value);
}
},
searchNodesByFuzzy: function (keyvalue) {
if (keyvalue) {
if (zltreemenu.options[treeObj.setting.treeId].flag == 'coreuser') {
treeObj.setting.async.url = layui.cache['contentPath'] + '/admin/coreorg/queryorgdepttree?resId=252177907A6047E38FC5F1D2E63F15C4';
treeObj.setting.async.otherParam = {
'keyvalue': keyvalue,
'isnotuseddept': false
};
} else {
treeObj.setting.async.url = zltreemenu.options[treeObj.setting.treeId].searchurl;
treeObj.setting.async.otherParam[zltreemenu.options[treeObj.setting.treeId].searchKey] = keyvalue;
}
zltreemenu.isloadsearch = true;
} else {
if (zltreemenu.options[treeObj.setting.treeId].flag == 'coreuser') {
treeObj.setting.async.url = layui.cache['contentPath'] + '/admin/coreorg/queryorgdepttreelistbyparentid?resId=252177907A6047E38FC5F1D2E63F15C4';
treeObj.setting.async.otherParam = {
"startflag": "1"
};
} else {
treeObj.setting.async.url = zltreemenu.options[treeObj.setting.treeId].dataurl;
treeObj.setting.async.otherParam = {};
}
zltreemenu.isloadsearch = false;
}
treeObj = $.fn.zTree.init($('#' + treeObj.setting.treeId), treeObj.setting, null);
$('#btnTreeSearchInput').focus();
},
dataFilter: function (treeId, parentNode, responseData) {
if (responseData[statusName] == OK) {
return responseData[dataName];
} else {
zlContext.errorMsg(responseData[msgName]);
}
return responseData;
},
/**
* 隐藏表格已有内容显示无数据
* id: 目标表格的 id
*/
isHideTableData: function (id, flag) {
var idArr = id.split('|');
for (var i = 0; i < idArr.length; i++) {
if (flag) {
$('#' + idArr[i]).siblings('div').find('div.layui-table-main').find('table').show();
$('#' + idArr[i]).siblings('div').find('div.layui-table-main').find('div.layui-none').hide();
$('#' + idArr[i]).siblings('div').find('div.layui-table-page').show();
$('#' + idArr[i]).siblings('div').find('div.layui-table-fixed').show();
} else {
$('#' + idArr[i]).siblings('div').find('div.layui-table-main').find('table').hide();
zlContext.noData($('#' + idArr[i]).siblings('div').find('div.layui-table-main'));
$('#' + idArr[i]).siblings('div').find('div.layui-table-page').hide();
$('#' + idArr[i]).siblings('div').find('div.layui-table-fixed').hide();
}
}
},
noresult: '<div class="noResultBox">' +
' <i class="layui-icon layui-icon-about" style="font-size: 20px;vertical-align: sub;color: #f39b12;"></i> ' +
' <span>没有搜索到相关数据</span>' +
'</div>'
}
$(document).on('click', 'div.zltreeMenuSearch>div>a', function () {
var id = $(this).siblings('input').attr('data-boxid');
zltreemenu.search($(this).siblings('input').val(), zltreemenu.options[id].asyncChildNodes, id);
})
$(document).on('keyup', 'div.zltreeMenuSearch>div>input', function (e) {
var id = $(this).attr('data-boxid');
if (e.keyCode == '13') {
zltreemenu.search($(this).val(), zltreemenu.options[id].asyncChildNodes, id)
}
if ((e.keyCode == '46' || e.keyCode == '8' || (e.ctrlKey && e.keyCode == '86')) && $(this).val() == '') {
if (!zltreemenu.isloadsearch) return;
$(this).siblings('a').trigger('click');
$('#btnTreeSearchInput').focus();
}
})
function compare(property) {
return function (a, b) {
var value1 = a[property],
value2 = b[property];
return value2 - value1;
}
}
exports('zltreemenu', zltreemenu);
layui.define(['zlContext', 'layer', 'zlConfig'], function (exports) {
var $ = layui.$,
zlContext = layui.zlContext,
zlConfig = layui.zlConfig,
statusName = zlConfig.global.result.statusName,
dataName = zlConfig.global.result.dataName,
OK = zlConfig.global.result.okState,
treeObj = null;
var zltreemenu = {
isloadsearch: false,
isExpand: false,
options: {},
callback: {},
/**
* @param {*} id 目标ul ID
* @param {*} setting zTree 自定义配置项 需是对象
* @param {*} callback zTree 各回调函数
*/
render: function (id, setting, callback) {
var defaultOptions = { // 默认配置项
name: 'OBJNAME', // zTree 节点数据保存节点名称的属性名称
type: 'post', // Ajax 的 http 请求模式
idKey: 'RWID', // 节点数据中保存唯一标识的属性名称
pIdKey: 'SYS_PARENTID', // 节点数据中保存其父节点唯一标识的属性名称
rootPid: null, // 用于修正根节点父节点数据,即 pIdKey 指定的属性值
autoParam: [], // 异步加载时需要自动提交父节点属性的参数
otherParam: {}, // Ajax 请求提交的静态参数键值对
isCopy: false, // 拖拽时, 设置是否允许复制节点
isMove: true, // 拖拽时, 设置是否允许移动节点
prev: true, // 拖拽到目标节点时,设置是否允许移动到目标节点前面的操作
next: true, // 拖拽到目标节点时,设置是否允许移动到目标节点后面的操作
editEnable: true, // 设置 zTree 是否处于编辑状态
showRemoveBtn: false, // 设置是否显示删除按钮
showRenameBtn: false, // 设置是否显示编辑名称按钮
checkEnable: false,
chkStyle: "checkbox",
chkboxType: {
"Y": "ps",
"N": "ps"
},
zNodes:[],
// autoCheckTrigger: false,
// nocheckInherit: false,
// chkDisabledInherit: false,
// radioType: "level",
search: true, // 是否开启搜索功能
// asyncSearch: false,
asyncChildNodes: false // 1.zTree 的节点父节点属性锁,是否始终保持 isParent = true 2.作为搜索方式的判断依据
// 详细参数说明可查看zTree API文档 http://www.treejs.cn/v3/api.php
};
if (zltreemenu.options[id]) {
zltreemenu.options[id] = $.extend({}, zltreemenu.options[id], setting);
} else {
zltreemenu.options[id] = $.extend({}, defaultOptions, setting);
}
zltreemenu.callback[id] = $.extend({}, zltreemenu.callback[id], callback);
var zltreeSetting = {
view: {
showLine: true,
fontCss: zltreemenu.options[id].fontCss ? zltreemenu.options[id].fontCss : {}
},
async: {
enable: true,
url: zltreemenu.options[id].dataurl,
type: zltreemenu.options[id].type,
autoParam: zltreemenu.options[id].autoParam,
otherParam: zltreemenu.options[id].otherParam,
contentType: (zltreemenu.options[id].contentType ? zltreemenu.options[id].contentType : 'application/x-www-form-urlencoded'),
dataType: "json",
dataFilter: zltreemenu.options[id].dataFilter ? zltreemenu.options[id].dataFilter : zltreemenu.dataFilter
},
check: {
enable: zltreemenu.options[id].checkEnable,
chkStyle: zltreemenu.options[id].chkStyle,
chkboxType: zltreemenu.options[id].chkboxType,
},
data: {
keep: {
leaf: false,
parent: zltreemenu.options[id].asyncChildNodes,
},
key: {
name: zltreemenu.options[id].name
},
simpleData: {
enable: true,
idKey: zltreemenu.options[id].idKey,
pIdKey: zltreemenu.options[id].pIdKey,
rootPid: zltreemenu.options[id].rootPid
}
},
edit: {
drag: {
isCopy: zltreemenu.options[id].isCopy,
isMove: zltreemenu.options[id].isMove,
prev: zltreemenu.options[id].prev,
next: zltreemenu.options[id].next,
inner: zltreemenu.options[id].inner
},
enable: zltreemenu.options[id].editEnable,
showRemoveBtn: zltreemenu.options[id].showRemoveBtn,
showRenameBtn: zltreemenu.options[id].showRenameBtn,
},
callback: zltreemenu.callback[id]
};
// 搜索部分 dom
var searchHtml = [
'<div class="layui-form-item layui-search zltreeMenuSearch">',
' <div class="layui-input-block">',
' <input id="btnTreeSearchInput" type="text" name="search" data-boxid="' + id + '" placeholder="请输入查找的值" class="layui-input">',
' <a href="javascript:;" id="btnTreeSearch" style="">',
' <i class="layui-icon layui-icon-search"></i>',
' </a></div></div>'
];
if (zltreemenu.options[id].search && $('#' + id).parent('div').siblings('div.layui-search').length == 0) { // 开启搜索功能后 搜索框渲染
$('#' + id).parent('div').before(searchHtml.join(''))
}
// 树形菜单
// 获取属性菜单的静态数据
var getzNodes = zltreemenu.options[id].zNodes
treeObj = $.fn.zTree.init($('#' + id), zltreeSetting, getzNodes);
return treeObj;
},
search: function (value, type, id) {
// 一次性加载所有数据时
if (!type) {
zltreemenu.isloadsearch = true;
treeObj = $.fn.zTree.getZTreeObj(id);
// 首先显示所有已隐藏的项
treeObj.showNodes(treeObj.getNodesByParam("isHidden", true))
if (value == '') {
$('#' + id).find('.noResultBox').remove();
var firstNode = treeObj.getNodesByFilter(function (node) {
return node.level == 0 && node.isFirstNode;
});
if (firstNode.length > 0) {
treeObj.selectNode(firstNode[0]);
$("#" + firstNode[0].tId + "_a").click();
$('#' + id).parents('.zltree-body').scrollTop(0)
}
if ($('ul#roletree').length > 0) {
$('ul#roletree').find('li').show();
$('ul#roletree').siblings('.noResultBox').remove();
$('ul#authtree').find('li').show();
$('ul#authtree').find('div.layui-none').remove();
}
return;
}
// 所有无子节点的节点
var noChildrenNodes = treeObj.getNodesByParam("isParent", false);
// 先隐藏所有,满足条件的节点显示
treeObj.hideNodes(noChildrenNodes)
treeObj.expandAll(true);
treeObj.showNodes(treeObj.getNodesByFilter(function (noChildrenNodes) {
return noChildrenNodes.check_Child_State == -1 && noChildrenNodes[treeObj.setting.data.key.name].indexOf(value) > -1
}));
// 将没有子节点显示的父级节点也隐藏掉
// 先获取所有父级节点
setTimeout(function () {
var pNodes = treeObj.getNodesByParam("isParent", true);
pNodes.sort(compare('level'))
for (var i = 0; i < pNodes.length; i++) {
if (pNodes[i].children.length != 0) {
var hideNum = 0;
for (var k = 0; k < pNodes[i].children.length; k++) {
var item = pNodes[i].children[k];
if (item.isHidden == true) {
hideNum++;
}
}
if (hideNum == pNodes[i].children.length && pNodes[i][treeObj.setting.data.key.name].indexOf(value) == -1) {
treeObj.hideNode(pNodes[i])
}
}
}
if (treeObj.getNodesByParam("isHidden", false).length == 0) {
// zlContext.warnMsg('没有搜索到相关数据');
if ($('#' + id).find('.noResultBox').length == 0) {
$('#' + id).append(zltreemenu.noresult)
}
zltreemenu.isHideTableData(zltreemenu.options[id].tableId, false);
// 角色权限管理页面 搜索显示
if ($('ul#roletree').length > 0) {
$('ul#roletree').find('li').hide();
if($('ul#roletree').siblings('div.noResultBox').length==0){
$('ul#roletree').after(zltreemenu.noresult);
}
$('ul#authtree').find('li').hide();
zlContext.noData($('ul#authtree'))
}
} else {
if ($('ul#roletree').length > 0) {
$('ul#roletree').find('li').show();
$('ul#roletree').siblings('.noResultBox').remove();
$('ul#authtree').find('li').show();
$('ul#authtree').find('div.layui-none').remove();
}
zltreemenu.isHideTableData(zltreemenu.options[id].tableId, true);
$('#' + id).find('.noResultBox').remove();
var firstNode = treeObj.getNodesByFilter(function (node) {
return node.level == 0 && node.isFirstNode;
});
if (firstNode.length > 0) {
treeObj.selectNode(firstNode[0]);
$("#" + firstNode[0].tId + "_a").click();
$('#' + id).parents('.zltree-body').scrollTop(0)
}
}
$('#btnTreeSearchInput').focus();
}, 0)
} else {
zltreemenu.searchNodesByFuzzy(value);
}
},
searchNodesByFuzzy: function (keyvalue) {
if (keyvalue) {
if (zltreemenu.options[treeObj.setting.treeId].flag == 'coreuser') {
treeObj.setting.async.url = layui.cache['contentPath'] + '/admin/coreorg/queryorgdepttree?resId=252177907A6047E38FC5F1D2E63F15C4';
treeObj.setting.async.otherParam = {
'keyvalue': keyvalue,
'isnotuseddept': false
};
} else {
treeObj.setting.async.url = zltreemenu.options[treeObj.setting.treeId].searchurl;
treeObj.setting.async.otherParam[zltreemenu.options[treeObj.setting.treeId].searchKey] = keyvalue;
}
zltreemenu.isloadsearch = true;
} else {
if (zltreemenu.options[treeObj.setting.treeId].flag == 'coreuser') {
treeObj.setting.async.url = layui.cache['contentPath'] + '/admin/coreorg/queryorgdepttreelistbyparentid?resId=252177907A6047E38FC5F1D2E63F15C4';
treeObj.setting.async.otherParam = {
"startflag": "1"
};
} else {
treeObj.setting.async.url = zltreemenu.options[treeObj.setting.treeId].dataurl;
treeObj.setting.async.otherParam = {};
}
zltreemenu.isloadsearch = false;
}
treeObj = $.fn.zTree.init($('#' + treeObj.setting.treeId), treeObj.setting, null);
$('#btnTreeSearchInput').focus();
},
dataFilter: function (treeId, parentNode, responseData) {
if (responseData[statusName] == OK) {
return responseData[dataName];
} else {
zlContext.errorMsg(responseData[msgName]);
}
return responseData;
},
/**
* 隐藏表格已有内容显示无数据
* id: 目标表格的 id
*/
isHideTableData: function (id, flag) {
var idArr = id.split('|');
for (var i = 0; i < idArr.length; i++) {
if (flag) {
$('#' + idArr[i]).siblings('div').find('div.layui-table-main').find('table').show();
$('#' + idArr[i]).siblings('div').find('div.layui-table-main').find('div.layui-none').hide();
$('#' + idArr[i]).siblings('div').find('div.layui-table-page').show();
$('#' + idArr[i]).siblings('div').find('div.layui-table-fixed').show();
} else {
$('#' + idArr[i]).siblings('div').find('div.layui-table-main').find('table').hide();
zlContext.noData($('#' + idArr[i]).siblings('div').find('div.layui-table-main'));
$('#' + idArr[i]).siblings('div').find('div.layui-table-page').hide();
$('#' + idArr[i]).siblings('div').find('div.layui-table-fixed').hide();
}
}
},
noresult: '<div class="noResultBox">' +
' <i class="layui-icon layui-icon-about" style="font-size: 20px;vertical-align: sub;color: #f39b12;"></i> ' +
' <span>没有搜索到相关数据</span>' +
'</div>'
}
$(document).on('click', 'div.zltreeMenuSearch>div>a', function () {
var id = $(this).siblings('input').attr('data-boxid');
zltreemenu.search($(this).siblings('input').val(), zltreemenu.options[id].asyncChildNodes, id);
})
$(document).on('keyup', 'div.zltreeMenuSearch>div>input', function (e) {
var id = $(this).attr('data-boxid');
if (e.keyCode == '13') {
zltreemenu.search($(this).val(), zltreemenu.options[id].asyncChildNodes, id)
}
if ((e.keyCode == '46' || e.keyCode == '8' || (e.ctrlKey && e.keyCode == '86')) && $(this).val() == '') {
if (!zltreemenu.isloadsearch) return;
$(this).siblings('a').trigger('click');
$('#btnTreeSearchInput').focus();
}
})
function compare(property) {
return function (a, b) {
var value1 = a[property],
value2 = b[property];
return value2 - value1;
}
}
exports('zltreemenu', zltreemenu);
});

View File

@ -1,3 +1,3 @@
(function(a,b){if("function"==typeof define&&define.amd)define([],b);else if("undefined"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){"use strict";function b(a,b){return"undefined"==typeof b?b={autoBom:!1}:"object"!=typeof b&&(console.warn("Depricated: Expected third argument to be a object"),b={autoBom:!b}),b.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob(["\uFEFF",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open("GET",b),e.responseType="blob",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error("could not download file")},e.send()}function d(a){var b=new XMLHttpRequest;return b.open("HEAD",a,!1),b.send(),200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent("click"))}catch(c){var b=document.createEvent("MouseEvents");b.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,a=f.saveAs||"object"!=typeof window||window!==f?function(){}:"download"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement("a");g=g||b.name||"download",j.download=g,j.rel="noopener","string"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target="_blank")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:"msSaveOrOpenBlob"in navigator?function(f,g,h){if(g=g||f.name||"download","string"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement("a");i.href=f,i.target="_blank",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open("","_blank"),e&&(e.document.title=e.document.body.innerText="downloading..."),"string"==typeof a)return c(a,b,d);var g="application/octet-stream"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\/[\d]+/.test(navigator.userAgent);if((i||g&&h)&&"object"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,"data:attachment/file;"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}};f.saveAs=a.saveAs=a,"undefined"!=typeof module&&(module.exports=a)});
(function(a,b){if("function"==typeof define&&define.amd)define([],b);else if("undefined"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){"use strict";function b(a,b){return"undefined"==typeof b?b={autoBom:!1}:"object"!=typeof b&&(console.warn("Depricated: Expected third argument to be a object"),b={autoBom:!b}),b.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob(["\uFEFF",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open("GET",b),e.responseType="blob",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error("could not download file")},e.send()}function d(a){var b=new XMLHttpRequest;return b.open("HEAD",a,!1),b.send(),200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent("click"))}catch(c){var b=document.createEvent("MouseEvents");b.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,a=f.saveAs||"object"!=typeof window||window!==f?function(){}:"download"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement("a");g=g||b.name||"download",j.download=g,j.rel="noopener","string"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target="_blank")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:"msSaveOrOpenBlob"in navigator?function(f,g,h){if(g=g||f.name||"download","string"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement("a");i.href=f,i.target="_blank",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open("","_blank"),e&&(e.document.title=e.document.body.innerText="downloading..."),"string"==typeof a)return c(a,b,d);var g="application/octet-stream"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\/[\d]+/.test(navigator.userAgent);if((i||g&&h)&&"object"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,"data:attachment/file;"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}};f.saveAs=a.saveAs=a,"undefined"!=typeof module&&(module.exports=a)});
//# sourceMappingURL=FileSaver.min.js.map

File diff suppressed because one or more lines are too long

View File

@ -1,45 +1,45 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ACE Autocompletion demo</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/src-noconflict/ace.js"></script>
<!-- load ace language tools -->
<script src="/kdayun/static/libs/ace/src-noconflict/ext-language_tools.js"></script>
<script>
// trigger extension
ace.require("ace/ext/language_tools");
var editor = ace.edit("editor");
editor.session.setMode("ace/mode/html");
editor.setTheme("ace/theme/tomorrow");
// enable autocompletion and snippets
editor.setOptions({
enableBasicAutocompletion: true,
enableSnippets: true,
enableLiveAutocompletion: false
});
</script>
<script src="./show_own_source.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ACE Autocompletion demo</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/src-noconflict/ace.js"></script>
<!-- load ace language tools -->
<script src="/kdayun/static/libs/ace/src-noconflict/ext-language_tools.js"></script>
<script>
// trigger extension
ace.require("ace/ext/language_tools");
var editor = ace.edit("editor");
editor.session.setMode("ace/mode/html");
editor.setTheme("ace/theme/tomorrow");
// enable autocompletion and snippets
editor.setOptions({
enableBasicAutocompletion: true,
enableSnippets: true,
enableLiveAutocompletion: false
});
</script>
<script src="./show_own_source.js"></script>
</body>
</html>

View File

@ -1,66 +1,66 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
.ace_editor {
border: 1px solid lightgray;
margin: auto;
height: 200px;
width: 80%;
}
.scrollmargin {
height: 80px;
text-align: center;
}
</style>
</head>
<body>
<pre id="editor1">autoresizing editor</pre>
<div class="scrollmargin"></div>
<pre id="editor2">minHeight = 2 lines</pre>
<div class="scrollmargin"></div>
<pre id="editor3" style="width: 40%;"></pre>
<div class="scrollmargin"></div>
<pre id="editor"></pre>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<script>
var editor1 = ace.edit("editor1", {
theme: "ace/theme/tomorrow_night_eighties",
mode: "ace/mode/html",
maxLines: 30,
wrap: true,
autoScrollEditorIntoView: true
});
var editor2 = ace.edit("editor2", {
theme: "ace/theme/tomorrow_night_blue",
mode: "ace/mode/html",
autoScrollEditorIntoView: true,
maxLines: 30,
minLines: 2
});
var editor = ace.edit("editor3");
editor.setOptions({
autoScrollEditorIntoView: true,
maxLines: 8
});
editor.renderer.setScrollMargin(10, 10, 10, 10);
var editor = ace.edit("editor");
editor.setTheme("ace/theme/tomorrow");
editor.session.setMode("ace/mode/html");
editor.setAutoScrollEditorIntoView(true);
editor.setOption("maxLines", 100);
</script>
<script src="./show_own_source.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
.ace_editor {
border: 1px solid lightgray;
margin: auto;
height: 200px;
width: 80%;
}
.scrollmargin {
height: 80px;
text-align: center;
}
</style>
</head>
<body>
<pre id="editor1">autoresizing editor</pre>
<div class="scrollmargin"></div>
<pre id="editor2">minHeight = 2 lines</pre>
<div class="scrollmargin"></div>
<pre id="editor3" style="width: 40%;"></pre>
<div class="scrollmargin"></div>
<pre id="editor"></pre>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<script>
var editor1 = ace.edit("editor1", {
theme: "ace/theme/tomorrow_night_eighties",
mode: "ace/mode/html",
maxLines: 30,
wrap: true,
autoScrollEditorIntoView: true
});
var editor2 = ace.edit("editor2", {
theme: "ace/theme/tomorrow_night_blue",
mode: "ace/mode/html",
autoScrollEditorIntoView: true,
maxLines: 30,
minLines: 2
});
var editor = ace.edit("editor3");
editor.setOptions({
autoScrollEditorIntoView: true,
maxLines: 8
});
editor.renderer.setScrollMargin(10, 10, 10, 10);
var editor = ace.edit("editor");
editor.setTheme("ace/theme/tomorrow");
editor.session.setMode("ace/mode/html");
editor.setAutoScrollEditorIntoView(true);
editor.setOption("maxLines", 100);
</script>
<script src="./show_own_source.js"></script>
</body>
</html>

View File

@ -1,39 +1,39 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ACE ChromeVox demo</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace accessibility extension -->
<script src="/kdayun/static/libs/ace/ext-chromevox.js"></script>
<script>
// trigger extension
ace.require("ace/ext/chromevox");
var editor = ace.edit("editor");
editor.session.setMode("ace/mode/html");
editor.setTheme("ace/theme/tomorrow");
</script>
<script src="./show_own_source.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ACE ChromeVox demo</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace accessibility extension -->
<script src="/kdayun/static/libs/ace/ext-chromevox.js"></script>
<script>
// trigger extension
ace.require("ace/ext/chromevox");
var editor = ace.edit("editor");
editor.session.setMode("ace/mode/html");
editor.setTheme("ace/theme/tomorrow");
</script>
<script src="./show_own_source.js"></script>
</body>
</html>

View File

@ -1,41 +1,41 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ACE Emmet demo</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<!-- load emmet code and snippets compiled for browser -->
<script src="https://cloud9ide.github.io/emmet-core/emmet.js"></script>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace emmet extension -->
<script src="/kdayun/static/libs/ace/ext-emmet.js"></script>
<script>
var editor = ace.edit("editor");
editor.session.setMode("ace/mode/html");
// enable emmet on the current editor
editor.setOption("enableEmmet", true);
</script>
<script src="./show_own_source.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ACE Emmet demo</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<!-- load emmet code and snippets compiled for browser -->
<script src="https://cloud9ide.github.io/emmet-core/emmet.js"></script>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace emmet extension -->
<script src="/kdayun/static/libs/ace/ext-emmet.js"></script>
<script>
var editor = ace.edit("editor");
editor.session.setMode("ace/mode/html");
// enable emmet on the current editor
editor.setOption("enableEmmet", true);
</script>
<script src="./show_own_source.js"></script>
</body>
</html>

View File

@ -1,30 +1,30 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ACE Editor Inside iframe</title>
<style type="text/css" media="screen">
body, html {
height: 100%;
margin:0; padding:0;
}
#editor {
padding: 20px; margin: 20px
width: 80%; height: 80%;
}
</style>
</head>
<body>
<div style="height: 100%"></div>
<div><textarea></textarea></div>
<iframe id="editor-iframe" src='data:text/html,
<pre id="editor" style="height:100%"></pre>
<script src="https://ajaxorg.github.io/ace-builds/src/ace.js"></script>
<script>
var editor = ace.edit("editor");
editor.setTheme("ace/theme/twilight");
editor.session.setMode("ace/mode/javascript");
</script>
'></iframe>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ACE Editor Inside iframe</title>
<style type="text/css" media="screen">
body, html {
height: 100%;
margin:0; padding:0;
}
#editor {
padding: 20px; margin: 20px
width: 80%; height: 80%;
}
</style>
</head>
<body>
<div style="height: 100%"></div>
<div><textarea></textarea></div>
<iframe id="editor-iframe" src='data:text/html,
<pre id="editor" style="height:100%"></pre>
<script src="https://ajaxorg.github.io/ace-builds/src/ace.js"></script>
<script>
var editor = ace.edit("editor");
editor.setTheme("ace/theme/twilight");
editor.session.setMode("ace/mode/javascript");
</script>
'></iframe>
</body>
</html>

View File

@ -1,48 +1,48 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<script>
var editor = ace.edit("editor")
editor.setTheme("ace/theme/twilight")
editor.session.setMode("ace/mode/html")
// add command to lazy-load keybinding_menu extension
editor.commands.addCommand({
name: "showKeyboardShortcuts",
bindKey: {win: "Ctrl-Alt-h", mac: "Command-Alt-h"},
exec: function(editor) {
ace.config.loadModule("ace/ext/keybinding_menu", function(module) {
module.init(editor);
editor.showKeyboardShortcuts()
})
}
})
editor.execCommand("showKeyboardShortcuts")
</script>
<script src="./show_own_source.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<script>
var editor = ace.edit("editor")
editor.setTheme("ace/theme/twilight")
editor.session.setMode("ace/mode/html")
// add command to lazy-load keybinding_menu extension
editor.commands.addCommand({
name: "showKeyboardShortcuts",
bindKey: {win: "Ctrl-Alt-h", mac: "Command-Alt-h"},
exec: function(editor) {
ace.config.loadModule("ace/ext/keybinding_menu", function(module) {
module.init(editor);
editor.showKeyboardShortcuts()
})
}
})
editor.execCommand("showKeyboardShortcuts")
</script>
<script src="./show_own_source.js"></script>
</body>
</html>

View File

@ -1,49 +1,49 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>ACE Editor Modelist Demo</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace modelist extension -->
<script src="/kdayun/static/libs/ace/ext-modelist.js"></script>
<script>
var editor = ace.edit("editor");
editor.setTheme("ace/theme/twilight");
(function () {
var modelist = ace.require("ace/ext/modelist");
// the file path could come from an xmlhttp request, a drop event,
// or any other scriptable file loading process.
// Extensions could consume the modelist and use it to dynamically
// set the editor mode. Webmasters could use it in their scripts
// for site specific purposes as well.
var filePath = "blahblah/weee/some.js";
var mode = modelist.getModeForPath(filePath).mode;
console.log(mode);
editor.session.setMode(mode);
}());
</script>
<script src="./show_own_source.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>ACE Editor Modelist Demo</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace modelist extension -->
<script src="/kdayun/static/libs/ace/ext-modelist.js"></script>
<script>
var editor = ace.edit("editor");
editor.setTheme("ace/theme/twilight");
(function () {
var modelist = ace.require("ace/ext/modelist");
// the file path could come from an xmlhttp request, a drop event,
// or any other scriptable file loading process.
// Extensions could consume the modelist and use it to dynamically
// set the editor mode. Webmasters could use it in their scripts
// for site specific purposes as well.
var filePath = "blahblah/weee/some.js";
var mode = modelist.getModeForPath(filePath).mode;
console.log(mode);
editor.session.setMode(mode);
}());
</script>
<script src="./show_own_source.js"></script>
</body>
</html>

View File

@ -1,55 +1,55 @@
({
optimize: "none",
preserveLicenseComments: false,
name: "node_modules/almond/almond",
baseUrl: "/kdayun/static/libs/ace//kdayun/static/libs/ace/",
paths: {
ace : "lib/ace",
demo: "demo/kitchen-sink"
},
packages: [
],
include: [
"ace/ace"
],
exclude: [
],
out: "./packed.js",
useStrict: true,
wrap: false
})<!DOCTYPE html>
<html>
<head>
<title>Editor</title>
<link rel="stylesheet" href="/kdayun/static/libs/ace/kitchen-sink/styles.css" type="text/css" media="screen" charset="utf-8">
</head>
<body>
<div id="optionsPanel" style="position:absolute;height:100%;width:260px">
<a href="http://c9.io" title="Cloud9 IDE | Your code anywhere, anytime">
<img id="c9-logo" src="/kdayun/static/libs/ace/kitchen-sink/logo.png" style="width: 172px;margin: -9px 30px -12px 51px;">
</a>
</div>
<pre id="editor-container">
<div style="color:black; padding: 10px">
demo showing Ace usage with r.js:
install r.js and almond
and run `<code>r.js -o demo/r.js/build.js</code>`
note that you also need ace/build/src to lazy load modes and themes
require("ace/config").set("basePath", "/kdayun/static/libs/ace//kdayun/static/libs/ace/build/src");
require("ace/config").set("packaged", true);
<div>
</pre>
<script src="./packed.js" data-ace-base="src" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
require("ace/config").set("basePath", "/kdayun/static/libs/ace//kdayun/static/libs/ace/build/src")
require("ace/config").set("packaged", true)
var editor = require("ace/ace").edit("editor-container");
editor.session.setMode("ace/mode/javascript");
// editor.session.setValue("var editor = Ace!")
</script>
</body>
</html>
({
optimize: "none",
preserveLicenseComments: false,
name: "node_modules/almond/almond",
baseUrl: "/kdayun/static/libs/ace//kdayun/static/libs/ace/",
paths: {
ace : "lib/ace",
demo: "demo/kitchen-sink"
},
packages: [
],
include: [
"ace/ace"
],
exclude: [
],
out: "./packed.js",
useStrict: true,
wrap: false
})<!DOCTYPE html>
<html>
<head>
<title>Editor</title>
<link rel="stylesheet" href="/kdayun/static/libs/ace/kitchen-sink/styles.css" type="text/css" media="screen" charset="utf-8">
</head>
<body>
<div id="optionsPanel" style="position:absolute;height:100%;width:260px">
<a href="http://c9.io" title="Cloud9 IDE | Your code anywhere, anytime">
<img id="c9-logo" src="/kdayun/static/libs/ace/kitchen-sink/logo.png" style="width: 172px;margin: -9px 30px -12px 51px;">
</a>
</div>
<pre id="editor-container">
<div style="color:black; padding: 10px">
demo showing Ace usage with r.js:
install r.js and almond
and run `<code>r.js -o demo/r.js/build.js</code>`
note that you also need ace/build/src to lazy load modes and themes
require("ace/config").set("basePath", "/kdayun/static/libs/ace//kdayun/static/libs/ace/build/src");
require("ace/config").set("packaged", true);
<div>
</pre>
<script src="./packed.js" data-ace-base="src" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
require("ace/config").set("basePath", "/kdayun/static/libs/ace//kdayun/static/libs/ace/build/src")
require("ace/config").set("packaged", true)
var editor = require("ace/ace").edit("editor-container");
editor.session.setMode("ace/mode/javascript");
// editor.session.setValue("var editor = Ace!")
</script>
</body>
</html>

View File

@ -1,49 +1,49 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<pre id="editor">function foo(items) {
var i;
for (i = 0; i &lt; items.length; i++) {
alert("Ace Rocks " + items[i]);
}
}</pre>
<script src="/kdayun/static/libs/ace/demo/kitchen-sink/require.js"></script>
<script>
require.config({paths: {ace: "/kdayun/static/libs/ace/src"}})
define('testace', ['ace/ace'],
function(ace, langtools) {
console.log("This is the testace module");
var editor = ace.edit("editor");
editor.setTheme("ace/theme/twilight");
editor.session.setMode("ace/mode/javascript");
require(["ace/requirejs/text!src/ace"], function(e){
editor.setValue(e);
})
}
);
require(['testace'])
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<pre id="editor">function foo(items) {
var i;
for (i = 0; i &lt; items.length; i++) {
alert("Ace Rocks " + items[i]);
}
}</pre>
<script src="/kdayun/static/libs/ace/demo/kitchen-sink/require.js"></script>
<script>
require.config({paths: {ace: "/kdayun/static/libs/ace/src"}})
define('testace', ['ace/ace'],
function(ace, langtools) {
console.log("This is the testace module");
var editor = ace.edit("editor");
editor.setTheme("ace/theme/twilight");
editor.session.setMode("ace/mode/javascript");
require(["ace/requirejs/text!src/ace"], function(e){
editor.setValue(e);
})
}
);
require(['testace'])
</script>
</body>
</html>

View File

@ -1,158 +1,158 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
.ace_editor {
position: relative !important;
border: 1px solid lightgray;
margin: auto;
height: 200px;
width: 80%;
}
.ace_editor.fullScreen {
height: auto;
width: auto;
border: 0;
margin: 0;
position: fixed !important;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 10;
}
.fullScreen {
overflow: hidden
}
.scrollmargin {
height: 500px;
text-align: center;
}
.large-button {
color: lightblue;
cursor: pointer;
font: 30px arial;
padding: 20px;
text-align: center;
border: medium solid transparent;
display: inline-block;
}
.large-button:hover {
border: medium solid lightgray;
border-radius: 10px 10px 10px 10px;
box-shadow: 0 0 12px 0 lightblue;
}
body {
transform: translateZ(0);
}
</style>
</head>
<body>
<div class="scrollmargin">
<span onclick="scroll()" class="large-button">
scroll down &dArr;
</span>
</div>
<pre id="editor">function foo(items) {
var i;
for (i = 0; i &lt; items.length; i++) {
alert("Ace Rocks " + items[i]);
}
}</pre>
<div class="scrollmargin">
<div style="padding:20px">
press F11 to switch to fullscreen mode
</div>
<span onclick="add()" class="large-button">
+
</span>
</div>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace themelist extension -->
<script src="/kdayun/static/libs/ace/ext-themelist.js"></script>
<script>
var $ = document.getElementById.bind(document);
var dom = require("ace/lib/dom");
//add command to all new editor instances
require("ace/commands/default_commands").commands.push({
name: "Toggle Fullscreen",
bindKey: "F11",
exec: function(editor) {
var fullScreen = dom.toggleCssClass(document.body, "fullScreen")
dom.setCssClass(editor.container, "fullScreen", fullScreen)
editor.setAutoScrollEditorIntoView(!fullScreen)
editor.resize()
}
})
// create first editor
var editor = ace.edit("editor");
editor.setTheme("ace/theme/twilight");
editor.session.setMode("ace/mode/javascript");
editor.renderer.setScrollMargin(10, 10);
editor.setOptions({
// "scrollPastEnd": 0.8,
autoScrollEditorIntoView: true
});
var count = 1;
function add() {
var oldEl = editor.container
var pad = document.createElement("div")
pad.style.padding = "40px"
oldEl.parentNode.insertBefore(pad, oldEl.nextSibling)
var el = document.createElement("div")
oldEl.parentNode.insertBefore(el, pad.nextSibling)
count++
var theme = themes[Math.floor(themes.length * Math.random() - 1e-5)]
editor = ace.edit(el)
editor.setOptions({
mode: "ace/mode/javascript",
theme: theme,
autoScrollEditorIntoView: true
})
editor.setValue([
"this is editor number: ", count, "\n",
"using theme \"", theme, "\"\n",
":)"
].join(""), -1)
scroll()
}
function scroll(speed) {
var top = editor.container.getBoundingClientRect().top
speed = speed || 10
if (top > 60 && speed < 500) {
if (speed > top - speed - 50)
speed = top - speed - 50
else
setTimeout(scroll, 10, speed + 10)
window.scrollBy(0, speed)
}
}
var themes = require("ace/ext/themelist").themes.map(function(t){return t.theme});
window.add = add;
window.scroll = scroll;
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
.ace_editor {
position: relative !important;
border: 1px solid lightgray;
margin: auto;
height: 200px;
width: 80%;
}
.ace_editor.fullScreen {
height: auto;
width: auto;
border: 0;
margin: 0;
position: fixed !important;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 10;
}
.fullScreen {
overflow: hidden
}
.scrollmargin {
height: 500px;
text-align: center;
}
.large-button {
color: lightblue;
cursor: pointer;
font: 30px arial;
padding: 20px;
text-align: center;
border: medium solid transparent;
display: inline-block;
}
.large-button:hover {
border: medium solid lightgray;
border-radius: 10px 10px 10px 10px;
box-shadow: 0 0 12px 0 lightblue;
}
body {
transform: translateZ(0);
}
</style>
</head>
<body>
<div class="scrollmargin">
<span onclick="scroll()" class="large-button">
scroll down &dArr;
</span>
</div>
<pre id="editor">function foo(items) {
var i;
for (i = 0; i &lt; items.length; i++) {
alert("Ace Rocks " + items[i]);
}
}</pre>
<div class="scrollmargin">
<div style="padding:20px">
press F11 to switch to fullscreen mode
</div>
<span onclick="add()" class="large-button">
+
</span>
</div>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace themelist extension -->
<script src="/kdayun/static/libs/ace/ext-themelist.js"></script>
<script>
var $ = document.getElementById.bind(document);
var dom = require("ace/lib/dom");
//add command to all new editor instances
require("ace/commands/default_commands").commands.push({
name: "Toggle Fullscreen",
bindKey: "F11",
exec: function(editor) {
var fullScreen = dom.toggleCssClass(document.body, "fullScreen")
dom.setCssClass(editor.container, "fullScreen", fullScreen)
editor.setAutoScrollEditorIntoView(!fullScreen)
editor.resize()
}
})
// create first editor
var editor = ace.edit("editor");
editor.setTheme("ace/theme/twilight");
editor.session.setMode("ace/mode/javascript");
editor.renderer.setScrollMargin(10, 10);
editor.setOptions({
// "scrollPastEnd": 0.8,
autoScrollEditorIntoView: true
});
var count = 1;
function add() {
var oldEl = editor.container
var pad = document.createElement("div")
pad.style.padding = "40px"
oldEl.parentNode.insertBefore(pad, oldEl.nextSibling)
var el = document.createElement("div")
oldEl.parentNode.insertBefore(el, pad.nextSibling)
count++
var theme = themes[Math.floor(themes.length * Math.random() - 1e-5)]
editor = ace.edit(el)
editor.setOptions({
mode: "ace/mode/javascript",
theme: theme,
autoScrollEditorIntoView: true
})
editor.setValue([
"this is editor number: ", count, "\n",
"using theme \"", theme, "\"\n",
":)"
].join(""), -1)
scroll()
}
function scroll(speed) {
var top = editor.container.getBoundingClientRect().top
speed = speed || 10
if (top > 60 && speed < 500) {
if (speed > top - speed - 50)
speed = top - speed - 50
else
setTimeout(scroll, 10, speed + 10)
window.scrollBy(0, speed)
}
}
var themes = require("ace/ext/themelist").themes.map(function(t){return t.theme});
window.add = add;
window.scroll = scroll;
</script>
</body>
</html>

View File

@ -1,47 +1,47 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace settings_menu extension -->
<script src="/kdayun/static/libs/ace/ext-settings_menu.js"></script>
<script>
var editor = ace.edit("editor");
ace.require('ace/ext/settings_menu').init(editor);
editor.setTheme("ace/theme/twilight");
editor.session.setMode("ace/mode/html");
editor.commands.addCommands([{
name: "showSettingsMenu",
bindKey: {win: "Ctrl-q", mac: "Ctrl-q"},
exec: function(editor) {
editor.showSettingsMenu();
},
readOnly: true
}]);
</script>
<script src="./show_own_source.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace settings_menu extension -->
<script src="/kdayun/static/libs/ace/ext-settings_menu.js"></script>
<script>
var editor = ace.edit("editor");
ace.require('ace/ext/settings_menu').init(editor);
editor.setTheme("ace/theme/twilight");
editor.session.setMode("ace/mode/html");
editor.commands.addCommands([{
name: "showSettingsMenu",
bindKey: {win: "Ctrl-q", mac: "Ctrl-q"},
exec: function(editor) {
editor.showSettingsMenu();
},
readOnly: true
}]);
</script>
<script src="./show_own_source.js"></script>
</body>
</html>

View File

@ -1,121 +1,121 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
.scrollmargin {
text-align: center;
}
.large-button {
color: lightblue;
cursor: pointer;
font: 30px arial;
padding: 20px;
text-align: center;
border: medium solid transparent;
display: inline-block;
}
.large-button:hover {
border: medium solid lightgray;
border-radius: 10px 10px 10px 10px;
box-shadow: 0 0 12px 0 lightblue;
}
body {
transform: translateZ(0);
}
</style>
</head>
<body>
<div class="scrollmargin">
<span onclick="add()" class="large-button">+</span>
</div>
<ace-playground></ace-playground>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<script>
var dom = require("ace/lib/dom");
class AcePlayground extends HTMLElement {
constructor() {
super();
var shadow = this.createShadowRoot({mode: "open"});
var dom = require("ace/lib/dom");
dom.buildDom(["div", {id: "host"},
["div", {id: "html"}],
["div", {id: "css"}],
["iframe", {id: "preview"}],
["style", `
#host {
border: solid 1px gray;
display: grid;
grid-template-areas: "html preview" "css preview";
}
#html {
grid-area: html;
height: 200px;
}
#css {
grid-area: css;
height: 200px;
}
#preview {
grid-area: preview;
width: 100%;
height: 100%;
border: none;
}
`]
], shadow);
var htmlEditor = ace.edit(shadow.querySelector("#html"), {
theme: "ace/theme/solarized_light",
mode: "ace/mode/html",
value: "<div>\n\thollow world!\n</div>\n<script><\/script>",
autoScrollEditorIntoView: false
});
var cssEditor = ace.edit(shadow.querySelector("#css"), {
theme: "ace/theme/solarized_dark",
mode: "ace/mode/css",
value: "*{\n\tcolor:red\n}",
autoScrollEditorIntoView: false
});
var preview = shadow.querySelector("#preview");
this.htmlEditor = htmlEditor;
this.cssEditor = cssEditor;
this.preview = preview;
htmlEditor.renderer.attachToShadowRoot();
this.updatePreview = this.updatePreview.bind(this)
htmlEditor.on("input", this.updatePreview);
cssEditor.on("input", this.updatePreview);
this.updatePreview();
}
updatePreview() {
var code = this.htmlEditor.getValue() + "<style>" + this.cssEditor.getValue() + "</style>";
this.preview.src = "data:text/html," + encodeURIComponent(code)
}
}
customElements.define('ace-playground', AcePlayground);
window.add = function() {
var el = document.createElement("ace-playground");
document.body.appendChild(el);
};
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
.scrollmargin {
text-align: center;
}
.large-button {
color: lightblue;
cursor: pointer;
font: 30px arial;
padding: 20px;
text-align: center;
border: medium solid transparent;
display: inline-block;
}
.large-button:hover {
border: medium solid lightgray;
border-radius: 10px 10px 10px 10px;
box-shadow: 0 0 12px 0 lightblue;
}
body {
transform: translateZ(0);
}
</style>
</head>
<body>
<div class="scrollmargin">
<span onclick="add()" class="large-button">+</span>
</div>
<ace-playground></ace-playground>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<script>
var dom = require("ace/lib/dom");
class AcePlayground extends HTMLElement {
constructor() {
super();
var shadow = this.createShadowRoot({mode: "open"});
var dom = require("ace/lib/dom");
dom.buildDom(["div", {id: "host"},
["div", {id: "html"}],
["div", {id: "css"}],
["iframe", {id: "preview"}],
["style", `
#host {
border: solid 1px gray;
display: grid;
grid-template-areas: "html preview" "css preview";
}
#html {
grid-area: html;
height: 200px;
}
#css {
grid-area: css;
height: 200px;
}
#preview {
grid-area: preview;
width: 100%;
height: 100%;
border: none;
}
`]
], shadow);
var htmlEditor = ace.edit(shadow.querySelector("#html"), {
theme: "ace/theme/solarized_light",
mode: "ace/mode/html",
value: "<div>\n\thollow world!\n</div>\n<script><\/script>",
autoScrollEditorIntoView: false
});
var cssEditor = ace.edit(shadow.querySelector("#css"), {
theme: "ace/theme/solarized_dark",
mode: "ace/mode/css",
value: "*{\n\tcolor:red\n}",
autoScrollEditorIntoView: false
});
var preview = shadow.querySelector("#preview");
this.htmlEditor = htmlEditor;
this.cssEditor = cssEditor;
this.preview = preview;
htmlEditor.renderer.attachToShadowRoot();
this.updatePreview = this.updatePreview.bind(this)
htmlEditor.on("input", this.updatePreview);
cssEditor.on("input", this.updatePreview);
this.updatePreview();
}
updatePreview() {
var code = this.htmlEditor.getValue() + "<style>" + this.cssEditor.getValue() + "</style>";
this.preview.src = "data:text/html," + encodeURIComponent(code)
}
}
customElements.define('ace-playground', AcePlayground);
window.add = function() {
var el = document.createElement("ace-playground");
document.body.appendChild(el);
};
</script>
</body>
</html>

View File

@ -1,16 +1,16 @@
if (typeof ace == "undefined" && typeof require == "undefined") {
document.body.innerHTML = "<p style='padding: 20px 50px;'>couldn't find ace.js file, <br>"
+ "to build it run <code>node Makefile.dryice.js full<code>"
} else if (typeof ace == "undefined" && typeof require != "undefined") {
require(["ace/ace"], setValue)
} else {
require = ace.require;
setValue()
}
function setValue() {
require("ace/lib/net").get(document.baseURI, function(t){
var el = document.getElementById("editor");
el.env.editor.setValue(t, 1);
})
if (typeof ace == "undefined" && typeof require == "undefined") {
document.body.innerHTML = "<p style='padding: 20px 50px;'>couldn't find ace.js file, <br>"
+ "to build it run <code>node Makefile.dryice.js full<code>"
} else if (typeof ace == "undefined" && typeof require != "undefined") {
require(["ace/ace"], setValue)
} else {
require = ace.require;
setValue()
}
function setValue() {
require("ace/lib/net").get(document.baseURI, function(t){
var el = document.getElementById("editor");
el.env.editor.setValue(t, 1);
})
}

View File

@ -1,82 +1,82 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Static Code highlighter using Ace</title>
<meta name="author" content="Matthew Kastor">
<style type="text/css">
.code {
width: 50%;
white-space: pre-wrap;
border: solid lightgrey 1px
}
</style>
</head>
<body>
<h2>Client Side Syntax Highlighting</h2>
<p>Syntax highlighting using Ace language modes and themes.</p>
<div class="code" ace-mode="ace/mode/css" ace-theme="ace/theme/chrome" ace-gutter="true">
.code {
width: 50%;
white-space: pre-wrap;
border: solid lightgrey 1px
}
</div>
<pre class="code" ace-mode="ace/mode/javascript" ace-theme="ace/theme/twilight">
function wobble (flam) {
return flam.wobbled = true;
}
</pre>
<div class="code" ace-mode="ace/mode/lua" ace-theme="ace/theme/chrome" ace-gutter="true" style="width: 30em;">
--[[--
num_args takes in 5.1 byte code and extracts the number of arguments from its function header.
--]]--
function int(t)
return t:byte(1) + t:byte(2) * 0x100 + t:byte(3) * 0x10000 + t:byte(4) * 0x1000000
end
function num_args(func)
local dump = string.dump(func)
local offset, cursor = int(dump:sub(13)), offset + 26
--Get the params and var flag (whether there's a ... in the param)
return dump:sub(cursor):byte(), dump:sub(cursor+1):byte()
end
</div>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace static_highlight extension -->
<script src="/kdayun/static/libs/ace/ext-static_highlight.js"></script>
<script>
var highlight = ace.require("ace/ext/static_highlight")
var dom = ace.require("ace/lib/dom")
function qsa(sel) {
return Array.apply(null, document.querySelectorAll(sel));
}
qsa(".code").forEach(function (codeEl) {
highlight(codeEl, {
mode: codeEl.getAttribute("ace-mode"),
theme: codeEl.getAttribute("ace-theme"),
startLineNumber: 1,
showGutter: codeEl.getAttribute("ace-gutter"),
trim: true
}, function (highlighted) {
});
});
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Static Code highlighter using Ace</title>
<meta name="author" content="Matthew Kastor">
<style type="text/css">
.code {
width: 50%;
white-space: pre-wrap;
border: solid lightgrey 1px
}
</style>
</head>
<body>
<h2>Client Side Syntax Highlighting</h2>
<p>Syntax highlighting using Ace language modes and themes.</p>
<div class="code" ace-mode="ace/mode/css" ace-theme="ace/theme/chrome" ace-gutter="true">
.code {
width: 50%;
white-space: pre-wrap;
border: solid lightgrey 1px
}
</div>
<pre class="code" ace-mode="ace/mode/javascript" ace-theme="ace/theme/twilight">
function wobble (flam) {
return flam.wobbled = true;
}
</pre>
<div class="code" ace-mode="ace/mode/lua" ace-theme="ace/theme/chrome" ace-gutter="true" style="width: 30em;">
--[[--
num_args takes in 5.1 byte code and extracts the number of arguments from its function header.
--]]--
function int(t)
return t:byte(1) + t:byte(2) * 0x100 + t:byte(3) * 0x10000 + t:byte(4) * 0x1000000
end
function num_args(func)
local dump = string.dump(func)
local offset, cursor = int(dump:sub(13)), offset + 26
--Get the params and var flag (whether there's a ... in the param)
return dump:sub(cursor):byte(), dump:sub(cursor+1):byte()
end
</div>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace static_highlight extension -->
<script src="/kdayun/static/libs/ace/ext-static_highlight.js"></script>
<script>
var highlight = ace.require("ace/ext/static_highlight")
var dom = ace.require("ace/lib/dom")
function qsa(sel) {
return Array.apply(null, document.querySelectorAll(sel));
}
qsa(".code").forEach(function (codeEl) {
highlight(codeEl, {
mode: codeEl.getAttribute("ace-mode"),
theme: codeEl.getAttribute("ace-theme"),
startLineNumber: 1,
showGutter: codeEl.getAttribute("ace-gutter"),
trim: true
}, function (highlighted) {
});
});
</script>
</body>
</html>

View File

@ -1,59 +1,59 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>ACE Editor StatusBar Demo</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 20px;
left: 0;
right: 0;
}
#statusBar {
margin: 0;
padding: 0;
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 20px;
background-color: rgb(245, 245, 245);
color: gray;
}
.ace_status-indicator {
color: gray;
position: absolute;
right: 0;
border-left: 1px solid;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<div id="statusBar">ace rocks!</div>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace statusbar extension -->
<script src="/kdayun/static/libs/ace/ext-statusbar.js"></script>
<script>
var editor = ace.edit("editor");
var StatusBar = ace.require("ace/ext/statusbar").StatusBar;
// create a simple selection status indicator
var statusBar = new StatusBar(editor, document.getElementById("statusBar"));
editor.setTheme("ace/theme/dawn");
editor.session.setMode("ace/mode/html");
</script>
<script src="./show_own_source.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>ACE Editor StatusBar Demo</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 20px;
left: 0;
right: 0;
}
#statusBar {
margin: 0;
padding: 0;
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 20px;
background-color: rgb(245, 245, 245);
color: gray;
}
.ace_status-indicator {
color: gray;
position: absolute;
right: 0;
border-left: 1px solid;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<div id="statusBar">ace rocks!</div>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace statusbar extension -->
<script src="/kdayun/static/libs/ace/ext-statusbar.js"></script>
<script>
var editor = ace.edit("editor");
var StatusBar = ace.require("ace/ext/statusbar").StatusBar;
// create a simple selection status indicator
var statusBar = new StatusBar(editor, document.getElementById("statusBar"));
editor.setTheme("ace/theme/dawn");
editor.session.setMode("ace/mode/html");
</script>
<script src="./show_own_source.js"></script>
</body>
</html>

View File

@ -1,11 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg">
<style type="text/css"> #ed { width: 500px; height: 200px }</style>
<script xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/kdayun/static/libs/ace/ace.js"></script>
<script type="text/javascript">
window.onload = function() {
ace.edit("ed");
};</script>
<foreignObject id="fo" width="500px" height="200px">
<div xmlns="http://www.w3.org/1999/xhtml" id="ed">Hi!</div>
</foreignObject>
<svg xmlns="http://www.w3.org/2000/svg">
<style type="text/css"> #ed { width: 500px; height: 200px }</style>
<script xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/kdayun/static/libs/ace/ace.js"></script>
<script type="text/javascript">
window.onload = function() {
ace.edit("ed");
};</script>
<foreignObject id="fo" width="500px" height="200px">
<div xmlns="http://www.w3.org/1999/xhtml" id="ed">Hi!</div>
</foreignObject>
</svg>

Before

Width:  |  Height:  |  Size: 496 B

After

Width:  |  Height:  |  Size: 506 B

View File

@ -1,137 +1,137 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
.ace_editor, .toolbar {
border: 1px solid lightgray;
margin: auto;
width: 80%;
}
.ace_editor {
height: 200px;
}
</style>
</head>
<body>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace language_tools extension -->
<script src="/kdayun/static/libs/ace/ext-language_tools.js"></script>
<script>
var editor = ace.edit();
editor.setOptions({
theme: "ace/theme/tomorrow_night_eighties",
mode: "ace/mode/markdown",
maxLines: 30,
minLines: 30,
autoScrollEditorIntoView: true,
});
var refs = {};
function updateToolbar() {
refs.saveButton.disabled = editor.session.getUndoManager().isClean();
refs.undoButton.disabled = !editor.session.getUndoManager().hasUndo();
refs.redoButton.disabled = !editor.session.getUndoManager().hasRedo();
}
editor.on("input", updateToolbar);
editor.session.setValue(localStorage.savedValue || "Welcome to ace Toolbar demo!")
function save() {
localStorage.savedValue = editor.getValue();
editor.session.getUndoManager().markClean();
updateToolbar();
}
editor.commands.addCommand({
name: "save",
exec: save,
bindKey: { win: "ctrl-s", mac: "cmd-s" }
});
buildDom(["div", { class: "toolbar" },
["button", {
ref: "saveButton",
onclick: save
}, "save"],
["button", {
ref: "undoButton",
onclick: function() {
editor.undo();
}
}, "undo"],
["button", {
ref: "redoButton",
onclick: function() {
editor.redo();
}
}, "redo"],
["button", {
style: "font-weight: bold",
onclick: function() {
editor.insertSnippet("**${1:$SELECTION}**");
editor.renderer.scrollCursorIntoView()
}
}, "bold"],
["button", {
style: "font-style: italic",
onclick: function() {
editor.insertSnippet("*${1:$SELECTION}*");
editor.renderer.scrollCursorIntoView()
}
}, "Italic"],
], document.body, refs);
document.body.appendChild(editor.container)
window.editor = editor;
function buildDom(arr, parent, refs) {
if (typeof arr == "string" && arr) {
var txt = document.createTextNode(arr);
if (parent)
parent.appendChild(txt);
return txt;
}
if (!Array.isArray(arr))
return arr;
if (typeof arr[0] != "string" || !arr[0]) {
var els = [];
for (var i = 0; i < arr.length; i++) {
var ch = buildDom(arr[i], parent, refs);
ch && els.push(ch);
}
return els;
}
var el = document.createElement(arr[0]);
var options = arr[1];
var childIndex = 1;
if (options && typeof options == "object" && !Array.isArray(options)) {
childIndex = 2;
Object.keys(options).forEach(function(n) {
var val = options[n];
if (n === "class") {
el.className = Array.isArray(val) ? val.join(" ") : val;
} else if (typeof val == "function") {
el[n] = val;
} else if (n === "ref") {
if (refs) refs[val] = el;
} else {
el.setAttribute(n, val);
}
});
}
for (var i = childIndex; i < arr.length; i++)
buildDom(arr[i], el, refs);
if (parent)
parent.appendChild(el);
return el;
};
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
.ace_editor, .toolbar {
border: 1px solid lightgray;
margin: auto;
width: 80%;
}
.ace_editor {
height: 200px;
}
</style>
</head>
<body>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace language_tools extension -->
<script src="/kdayun/static/libs/ace/ext-language_tools.js"></script>
<script>
var editor = ace.edit();
editor.setOptions({
theme: "ace/theme/tomorrow_night_eighties",
mode: "ace/mode/markdown",
maxLines: 30,
minLines: 30,
autoScrollEditorIntoView: true,
});
var refs = {};
function updateToolbar() {
refs.saveButton.disabled = editor.session.getUndoManager().isClean();
refs.undoButton.disabled = !editor.session.getUndoManager().hasUndo();
refs.redoButton.disabled = !editor.session.getUndoManager().hasRedo();
}
editor.on("input", updateToolbar);
editor.session.setValue(localStorage.savedValue || "Welcome to ace Toolbar demo!")
function save() {
localStorage.savedValue = editor.getValue();
editor.session.getUndoManager().markClean();
updateToolbar();
}
editor.commands.addCommand({
name: "save",
exec: save,
bindKey: { win: "ctrl-s", mac: "cmd-s" }
});
buildDom(["div", { class: "toolbar" },
["button", {
ref: "saveButton",
onclick: save
}, "save"],
["button", {
ref: "undoButton",
onclick: function() {
editor.undo();
}
}, "undo"],
["button", {
ref: "redoButton",
onclick: function() {
editor.redo();
}
}, "redo"],
["button", {
style: "font-weight: bold",
onclick: function() {
editor.insertSnippet("**${1:$SELECTION}**");
editor.renderer.scrollCursorIntoView()
}
}, "bold"],
["button", {
style: "font-style: italic",
onclick: function() {
editor.insertSnippet("*${1:$SELECTION}*");
editor.renderer.scrollCursorIntoView()
}
}, "Italic"],
], document.body, refs);
document.body.appendChild(editor.container)
window.editor = editor;
function buildDom(arr, parent, refs) {
if (typeof arr == "string" && arr) {
var txt = document.createTextNode(arr);
if (parent)
parent.appendChild(txt);
return txt;
}
if (!Array.isArray(arr))
return arr;
if (typeof arr[0] != "string" || !arr[0]) {
var els = [];
for (var i = 0; i < arr.length; i++) {
var ch = buildDom(arr[i], parent, refs);
ch && els.push(ch);
}
return els;
}
var el = document.createElement(arr[0]);
var options = arr[1];
var childIndex = 1;
if (options && typeof options == "object" && !Array.isArray(options)) {
childIndex = 2;
Object.keys(options).forEach(function(n) {
var val = options[n];
if (n === "class") {
el.className = Array.isArray(val) ? val.join(" ") : val;
} else if (typeof val == "function") {
el[n] = val;
} else if (n === "ref") {
if (refs) refs[val] = el;
} else {
el.setAttribute(n, val);
}
});
}
for (var i = childIndex; i < arr.length; i++)
buildDom(arr[i], el, refs);
if (parent)
parent.appendChild(el);
return el;
};
</script>
</body>
</html>

View File

@ -1,139 +1,139 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
.ace_editor {
border: 1px solid lightgray;
margin: auto;
height: 800px;
width: 400px;
font-size: 26px!important;
max-width: 30%;
}
.scrollmargin {
height: 80px;
text-align: center;
}
#editor1, #editor2, #editor3 {
display:inline-block
}
.wrapper {
text-align: center;
perspective: 500px;
margin-top: 50px;
}
#editor1 {
transform: rotateY(10deg) rotateX(-1deg);
}
#editor2 {
transform: translateZ(-36px) rotateX(-1deg);
}
#editor3 {
transform: rotateY(-10deg) rotateX(-1deg);
}
#editor4 {
transform: scale(-1,1) rotateX(-1deg);
}
.transformed {
transform: scale(0.5);
transform-origin: center 12%
}
#editor {
width: 100%;
min-width: 100%
}
body {
background: #a9bfc7;
}
.scrollmargin input > {margin: 10px}
</style>
</head>
<body>
<div class="transformed">
<div class="wrapper">
<pre id="editor1">editor1</pre>
<pre id="editor2">editor2</pre>
<pre id="editor3">editor3</pre>
</div>
<div class="scrollmargin"></div>
<pre id="editor4">editor4</pre>
<div class="scrollmargin">
<textarea></textarea>
</div>
<pre id="editor">editor</pre>
<div class="scrollmargin" style="transform: scale(2) translateY(3em);">
<input type="checkbox" id="option">Auto scroll into view</input>
<input type="range" onchange="document.body.style.zoom = 1 + value/250">css Zoom</input>
<input type="range" onchange="document.body.style.transform = 'rotateZ(' + (this.value * 18) +'deg)'">css Transform</input>
</div>
</div>
<div class="scrollmargin">
</div>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<script>
var editor1 = ace.edit("editor1");
editor1.setOptions({
hasCssTransforms: true,
theme: "ace/theme/tomorrow_night_blue",
mode: "ace/mode/html"
});
var editor2 = ace.edit("editor2");
editor2.setOptions({
hasCssTransforms: true,
theme: "ace/theme/kuroir",
mode: "ace/mode/html"
});
var editor3 = ace.edit("editor3");
editor3.setOptions({
hasCssTransforms: true,
theme: "ace/theme/tomorrow_night_eighties",
mode: "ace/mode/html"
});
var editor4 = ace.edit("editor4");
editor4.setOptions({
hasCssTransforms: true,
theme: "ace/theme/solarized_light",
mode: "ace/mode/html"
});
var editor = ace.edit("editor");
editor.setOptions({
hasCssTransforms: true,
mode: "ace/mode/html",
value: "editor 4\n from a mirror",
});
editor.renderer.setScrollMargin(10, 10, 10, 10);
var checkbox = document.getElementById("option");
checkbox.onchange = function() {
editor1.setOption("autoScrollEditorIntoView", checkbox.checked);
editor2.setOption("autoScrollEditorIntoView", checkbox.checked);
editor3.setOption("autoScrollEditorIntoView", checkbox.checked);
editor4.setOption("autoScrollEditorIntoView", checkbox.checked);
editor.setOption("autoScrollEditorIntoView", checkbox.checked);
};
checkbox.onchange();
</script>
<script src="./show_own_source.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
.ace_editor {
border: 1px solid lightgray;
margin: auto;
height: 800px;
width: 400px;
font-size: 26px!important;
max-width: 30%;
}
.scrollmargin {
height: 80px;
text-align: center;
}
#editor1, #editor2, #editor3 {
display:inline-block
}
.wrapper {
text-align: center;
perspective: 500px;
margin-top: 50px;
}
#editor1 {
transform: rotateY(10deg) rotateX(-1deg);
}
#editor2 {
transform: translateZ(-36px) rotateX(-1deg);
}
#editor3 {
transform: rotateY(-10deg) rotateX(-1deg);
}
#editor4 {
transform: scale(-1,1) rotateX(-1deg);
}
.transformed {
transform: scale(0.5);
transform-origin: center 12%
}
#editor {
width: 100%;
min-width: 100%
}
body {
background: #a9bfc7;
}
.scrollmargin input > {margin: 10px}
</style>
</head>
<body>
<div class="transformed">
<div class="wrapper">
<pre id="editor1">editor1</pre>
<pre id="editor2">editor2</pre>
<pre id="editor3">editor3</pre>
</div>
<div class="scrollmargin"></div>
<pre id="editor4">editor4</pre>
<div class="scrollmargin">
<textarea></textarea>
</div>
<pre id="editor">editor</pre>
<div class="scrollmargin" style="transform: scale(2) translateY(3em);">
<input type="checkbox" id="option">Auto scroll into view</input>
<input type="range" onchange="document.body.style.zoom = 1 + value/250">css Zoom</input>
<input type="range" onchange="document.body.style.transform = 'rotateZ(' + (this.value * 18) +'deg)'">css Transform</input>
</div>
</div>
<div class="scrollmargin">
</div>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<script>
var editor1 = ace.edit("editor1");
editor1.setOptions({
hasCssTransforms: true,
theme: "ace/theme/tomorrow_night_blue",
mode: "ace/mode/html"
});
var editor2 = ace.edit("editor2");
editor2.setOptions({
hasCssTransforms: true,
theme: "ace/theme/kuroir",
mode: "ace/mode/html"
});
var editor3 = ace.edit("editor3");
editor3.setOptions({
hasCssTransforms: true,
theme: "ace/theme/tomorrow_night_eighties",
mode: "ace/mode/html"
});
var editor4 = ace.edit("editor4");
editor4.setOptions({
hasCssTransforms: true,
theme: "ace/theme/solarized_light",
mode: "ace/mode/html"
});
var editor = ace.edit("editor");
editor.setOptions({
hasCssTransforms: true,
mode: "ace/mode/html",
value: "editor 4\n from a mirror",
});
editor.renderer.setScrollMargin(10, 10, 10, 10);
var checkbox = document.getElementById("option");
checkbox.onchange = function() {
editor1.setOption("autoScrollEditorIntoView", checkbox.checked);
editor2.setOption("autoScrollEditorIntoView", checkbox.checked);
editor3.setOption("autoScrollEditorIntoView", checkbox.checked);
editor4.setOption("autoScrollEditorIntoView", checkbox.checked);
editor.setOption("autoScrollEditorIntoView", checkbox.checked);
};
checkbox.onchange();
</script>
<script src="./show_own_source.js"></script>
</body>
</html>

View File

@ -1,32 +1,32 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta charset="UTF-8"></meta>
<title>ACE Autocompletion demo</title>
<style type="text/css" media="screen">
body { overflow: hidden; }
#editor {
margin: 0; position: absolute;
top: 0; bottom: 0; left: 0; right: 0;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace language_tools extension -->
<script src="/kdayun/static/libs/ace/ext-language_tools.js"></script>
<script>
var langagueTools = require("ace/ext/language_tools");
var editor = ace.edit("editor");
editor.session.setMode("ace/mode/xml");
editor.setTheme("ace/theme/tomorrow");
});
]]></script>
<script src="./show_own_source.js"></script>
</body>
</html>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta charset="UTF-8"></meta>
<title>ACE Autocompletion demo</title>
<style type="text/css" media="screen">
body { overflow: hidden; }
#editor {
margin: 0; position: absolute;
top: 0; bottom: 0; left: 0; right: 0;
}
</style>
</head>
<body>
<pre id="editor"></pre>
<!-- load ace -->
<script src="/kdayun/static/libs/ace/ace.js"></script>
<!-- load ace language_tools extension -->
<script src="/kdayun/static/libs/ace/ext-language_tools.js"></script>
<script>
var langagueTools = require("ace/ext/language_tools");
var editor = ace.edit("editor");
editor.session.setMode("ace/mode/xml");
editor.setTheme("ace/theme/tomorrow");
});
]]></script>
<script src="./show_own_source.js"></script>
</body>
</html>

View File

@ -1,9 +1,9 @@
define("ace/ext/beautify",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function i(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../token_iterator").TokenIterator;t.singletonTags=["area","base","br","col","command","embed","hr","html","img","input","keygen","link","meta","param","source","track","wbr"],t.blockTags=["article","aside","blockquote","body","div","dl","fieldset","footer","form","head","header","html","nav","ol","p","script","section","style","table","tbody","tfoot","thead","ul"],t.beautify=function(e){var n=new r(e,0,0),s=n.getCurrentToken(),o=e.getTabString(),u=t.singletonTags,a=t.blockTags,f,l=!1,c=!1,h=!1,p="",d="",v="",m=0,g=0,y=0,b=0,w=0,E=0,S=!1,x,T=0,N=0,C=[],k=!1,L,A=!1,O=!1,M=!1,_=!1,D={0:0},P={},H=function(){f&&f.value&&f.type!=="string.regexp"&&(f.value=f.value.trim())},B=function(){p=p.replace(/ +$/,"")},j=function(){p=p.trimRight(),l=!1};while(s!==null){T=n.getCurrentTokenRow(),C=n.$rowTokens,f=n.stepForward();if(typeof s!="undefined"){d=s.value,w=0,M=v==="style"||e.$modeId==="ace/mode/css",i(s,"tag-open")?(O=!0,f&&(_=a.indexOf(f.value)!==-1),d==="</"&&(_&&!l&&N<1&&N++,M&&(N=1),w=1,_=!1)):i(s,"tag-close")?O=!1:i(s,"comment.start")?_=!0:i(s,"comment.end")&&(_=!1),!O&&!N&&s.type==="paren.rparen"&&s.value.substr(0,1)==="}"&&N++,T!==x&&(N=T,x&&(N-=x));if(N){j();for(;N>0;N--)p+="\n";l=!0,!i(s,"comment")&&!s.type.match(/^(comment|string)$/)&&(d=d.trimLeft())}if(d){s.type==="keyword"&&d.match(/^(if|else|elseif|for|foreach|while|switch)$/)?(P[m]=d,H(),h=!0,d.match(/^(else|elseif)$/)&&p.match(/\}[\s]*$/)&&(j(),c=!0)):s.type==="paren.lparen"?(H(),d.substr(-1)==="{"&&(h=!0,A=!1,O||(N=1)),d.substr(0,1)==="{"&&(c=!0,p.substr(-1)!=="["&&p.trimRight().substr(-1)==="["?(j(),c=!1):p.trimRight().substr(-1)===")"?j():B())):s.type==="paren.rparen"?(w=1,d.substr(0,1)==="}"&&(P[m-1]==="case"&&w++,p.trimRight().substr(-1)==="{"?j():(c=!0,M&&(N+=2))),d.substr(0,1)==="]"&&p.substr(-1)!=="}"&&p.trimRight().substr(-1)==="}"&&(c=!1,b++,j()),d.substr(0,1)===")"&&p.substr(-1)!=="("&&p.trimRight().substr(-1)==="("&&(c=!1,b++,j()),B()):s.type!=="keyword.operator"&&s.type!=="keyword"||!d.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/)?s.type==="punctuation.operator"&&d===";"?(j(),H(),h=!0,M&&N++):s.type==="punctuation.operator"&&d.match(/^(:|,)$/)?(j(),H(),h=!0,l=!1):s.type==="support.php_tag"&&d==="?>"&&!l?(j(),c=!0):i(s,"attribute-name")&&p.substr(-1).match(/^\s$/)?c=!0:i(s,"attribute-equals")?(B(),H()):i(s,"tag-close")&&(B(),d==="/>"&&(c=!0)):(j(),H(),c=!0,h=!0);if(l&&(!s.type.match(/^(comment)$/)||!!d.substr(0,1).match(/^[/#]$/))&&(!s.type.match(/^(string)$/)||!!d.substr(0,1).match(/^['"]$/))){b=y;if(m>g){b++;for(L=m;L>g;L--)D[L]=b}else m<g&&(b=D[m]);g=m,y=b,w&&(b-=w),A&&!E&&(b++,A=!1);for(L=0;L<b;L++)p+=o}s.type==="keyword"&&d.match(/^(case|default)$/)&&(P[m]=d,m++),s.type==="keyword"&&d.match(/^(break)$/)&&P[m-1]&&P[m-1].match(/^(case|default)$/)&&m--,s.type==="paren.lparen"&&(E+=(d.match(/\(/g)||[]).length,m+=d.length),s.type==="keyword"&&d.match(/^(if|else|elseif|for|while)$/)?(A=!0,E=0):!E&&d.trim()&&s.type!=="comment"&&(A=!1);if(s.type==="paren.rparen"){E-=(d.match(/\)/g)||[]).length;for(L=0;L<d.length;L++)m--,d.substr(L,1)==="}"&&P[m]==="case"&&m--}c&&!l&&(B(),p.substr(-1)!=="\n"&&(p+=" ")),p+=d,h&&(p+=" "),l=!1,c=!1,h=!1;if(i(s,"tag-close")&&(_||a.indexOf(v)!==-1)||i(s,"doctype")&&d===">")_&&f&&f.value==="</"?N=-1:N=1;i(s,"tag-open")&&d==="</"?m--:i(s,"tag-open")&&d==="<"&&u.indexOf(f.value)===-1?m++:i(s,"tag-name")?v=d:i(s,"tag-close")&&d==="/>"&&u.indexOf(v)===-1&&m--,x=T}}s=f}p=p.trim(),e.doc.setValue(p)},t.commands=[{name:"beautify",exec:function(e){t.beautify(e.session)},bindKey:"Ctrl-Shift-B"}]});
(function() {
window.require(["ace/ext/beautify"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();
define("ace/ext/beautify",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function i(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../token_iterator").TokenIterator;t.singletonTags=["area","base","br","col","command","embed","hr","html","img","input","keygen","link","meta","param","source","track","wbr"],t.blockTags=["article","aside","blockquote","body","div","dl","fieldset","footer","form","head","header","html","nav","ol","p","script","section","style","table","tbody","tfoot","thead","ul"],t.beautify=function(e){var n=new r(e,0,0),s=n.getCurrentToken(),o=e.getTabString(),u=t.singletonTags,a=t.blockTags,f,l=!1,c=!1,h=!1,p="",d="",v="",m=0,g=0,y=0,b=0,w=0,E=0,S=!1,x,T=0,N=0,C=[],k=!1,L,A=!1,O=!1,M=!1,_=!1,D={0:0},P={},H=function(){f&&f.value&&f.type!=="string.regexp"&&(f.value=f.value.trim())},B=function(){p=p.replace(/ +$/,"")},j=function(){p=p.trimRight(),l=!1};while(s!==null){T=n.getCurrentTokenRow(),C=n.$rowTokens,f=n.stepForward();if(typeof s!="undefined"){d=s.value,w=0,M=v==="style"||e.$modeId==="ace/mode/css",i(s,"tag-open")?(O=!0,f&&(_=a.indexOf(f.value)!==-1),d==="</"&&(_&&!l&&N<1&&N++,M&&(N=1),w=1,_=!1)):i(s,"tag-close")?O=!1:i(s,"comment.start")?_=!0:i(s,"comment.end")&&(_=!1),!O&&!N&&s.type==="paren.rparen"&&s.value.substr(0,1)==="}"&&N++,T!==x&&(N=T,x&&(N-=x));if(N){j();for(;N>0;N--)p+="\n";l=!0,!i(s,"comment")&&!s.type.match(/^(comment|string)$/)&&(d=d.trimLeft())}if(d){s.type==="keyword"&&d.match(/^(if|else|elseif|for|foreach|while|switch)$/)?(P[m]=d,H(),h=!0,d.match(/^(else|elseif)$/)&&p.match(/\}[\s]*$/)&&(j(),c=!0)):s.type==="paren.lparen"?(H(),d.substr(-1)==="{"&&(h=!0,A=!1,O||(N=1)),d.substr(0,1)==="{"&&(c=!0,p.substr(-1)!=="["&&p.trimRight().substr(-1)==="["?(j(),c=!1):p.trimRight().substr(-1)===")"?j():B())):s.type==="paren.rparen"?(w=1,d.substr(0,1)==="}"&&(P[m-1]==="case"&&w++,p.trimRight().substr(-1)==="{"?j():(c=!0,M&&(N+=2))),d.substr(0,1)==="]"&&p.substr(-1)!=="}"&&p.trimRight().substr(-1)==="}"&&(c=!1,b++,j()),d.substr(0,1)===")"&&p.substr(-1)!=="("&&p.trimRight().substr(-1)==="("&&(c=!1,b++,j()),B()):s.type!=="keyword.operator"&&s.type!=="keyword"||!d.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/)?s.type==="punctuation.operator"&&d===";"?(j(),H(),h=!0,M&&N++):s.type==="punctuation.operator"&&d.match(/^(:|,)$/)?(j(),H(),h=!0,l=!1):s.type==="support.php_tag"&&d==="?>"&&!l?(j(),c=!0):i(s,"attribute-name")&&p.substr(-1).match(/^\s$/)?c=!0:i(s,"attribute-equals")?(B(),H()):i(s,"tag-close")&&(B(),d==="/>"&&(c=!0)):(j(),H(),c=!0,h=!0);if(l&&(!s.type.match(/^(comment)$/)||!!d.substr(0,1).match(/^[/#]$/))&&(!s.type.match(/^(string)$/)||!!d.substr(0,1).match(/^['"]$/))){b=y;if(m>g){b++;for(L=m;L>g;L--)D[L]=b}else m<g&&(b=D[m]);g=m,y=b,w&&(b-=w),A&&!E&&(b++,A=!1);for(L=0;L<b;L++)p+=o}s.type==="keyword"&&d.match(/^(case|default)$/)&&(P[m]=d,m++),s.type==="keyword"&&d.match(/^(break)$/)&&P[m-1]&&P[m-1].match(/^(case|default)$/)&&m--,s.type==="paren.lparen"&&(E+=(d.match(/\(/g)||[]).length,m+=d.length),s.type==="keyword"&&d.match(/^(if|else|elseif|for|while)$/)?(A=!0,E=0):!E&&d.trim()&&s.type!=="comment"&&(A=!1);if(s.type==="paren.rparen"){E-=(d.match(/\)/g)||[]).length;for(L=0;L<d.length;L++)m--,d.substr(L,1)==="}"&&P[m]==="case"&&m--}c&&!l&&(B(),p.substr(-1)!=="\n"&&(p+=" ")),p+=d,h&&(p+=" "),l=!1,c=!1,h=!1;if(i(s,"tag-close")&&(_||a.indexOf(v)!==-1)||i(s,"doctype")&&d===">")_&&f&&f.value==="</"?N=-1:N=1;i(s,"tag-open")&&d==="</"?m--:i(s,"tag-open")&&d==="<"&&u.indexOf(f.value)===-1?m++:i(s,"tag-name")?v=d:i(s,"tag-close")&&d==="/>"&&u.indexOf(v)===-1&&m--,x=T}}s=f}p=p.trim(),e.doc.setValue(p)},t.commands=[{name:"beautify",exec:function(e){t.beautify(e.session)},bindKey:"Ctrl-Shift-B"}]});
(function() {
window.require(["ace/ext/beautify"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();

View File

@ -1,9 +1,9 @@
define("ace/ext/elastic_tabstops_lite",["require","exports","module","ace/editor","ace/config"],function(e,t,n){"use strict";var r=function(e){this.$editor=e;var t=this,n=[],r=!1;this.onAfterExec=function(){r=!1,t.processRows(n),n=[]},this.onExec=function(){r=!0},this.onChange=function(e){r&&(n.indexOf(e.start.row)==-1&&n.push(e.start.row),e.end.row!=e.start.row&&n.push(e.end.row))}};(function(){this.processRows=function(e){this.$inChange=!0;var t=[];for(var n=0,r=e.length;n<r;n++){var i=e[n];if(t.indexOf(i)>-1)continue;var s=this.$findCellWidthsForBlock(i),o=this.$setBlockCellWidthsToMax(s.cellWidths),u=s.firstRow;for(var a=0,f=o.length;a<f;a++){var l=o[a];t.push(u),this.$adjustRow(u,l),u++}}this.$inChange=!1},this.$findCellWidthsForBlock=function(e){var t=[],n,r=e;while(r>=0){n=this.$cellWidthsForRow(r);if(n.length==0)break;t.unshift(n),r--}var i=r+1;r=e;var s=this.$editor.session.getLength();while(r<s-1){r++,n=this.$cellWidthsForRow(r);if(n.length==0)break;t.push(n)}return{cellWidths:t,firstRow:i}},this.$cellWidthsForRow=function(e){var t=this.$selectionColumnsForRow(e),n=[-1].concat(this.$tabsForRow(e)),r=n.map(function(e){return 0}).slice(1),i=this.$editor.session.getLine(e);for(var s=0,o=n.length-1;s<o;s++){var u=n[s]+1,a=n[s+1],f=this.$rightmostSelectionInCell(t,a),l=i.substring(u,a);r[s]=Math.max(l.replace(/\s+$/g,"").length,f-u)}return r},this.$selectionColumnsForRow=function(e){var t=[],n=this.$editor.getCursorPosition();return this.$editor.session.getSelection().isEmpty()&&e==n.row&&t.push(n.column),t},this.$setBlockCellWidthsToMax=function(e){var t=!0,n,r,i,s=this.$izip_longest(e);for(var o=0,u=s.length;o<u;o++){var a=s[o];if(!a.push){console.error(a);continue}a.push(NaN);for(var f=0,l=a.length;f<l;f++){var c=a[f];t&&(n=f,i=0,t=!1);if(isNaN(c)){r=f;for(var h=n;h<r;h++)e[h][o]=i;t=!0}i=Math.max(i,c)}}return e},this.$rightmostSelectionInCell=function(e,t){var n=0;if(e.length){var r=[];for(var i=0,s=e.length;i<s;i++)e[i]<=t?r.push(i):r.push(0);n=Math.max.apply(Math,r)}return n},this.$tabsForRow=function(e){var t=[],n=this.$editor.session.getLine(e),r=/\t/g,i;while((i=r.exec(n))!=null)t.push(i.index);return t},this.$adjustRow=function(e,t){var n=this.$tabsForRow(e);if(n.length==0)return;var r=0,i=-1,s=this.$izip(t,n);for(var o=0,u=s.length;o<u;o++){var a=s[o][0],f=s[o][1];i+=1+a,f+=r;var l=i-f;if(l==0)continue;var c=this.$editor.session.getLine(e).substr(0,f),h=c.replace(/\s*$/g,""),p=c.length-h.length;l>0&&(this.$editor.session.getDocument().insertInLine({row:e,column:f+1},Array(l+1).join(" ")+" "),this.$editor.session.getDocument().removeInLine(e,f,f+1),r+=l),l<0&&p>=-l&&(this.$editor.session.getDocument().removeInLine(e,f+l,f),r+=l)}},this.$izip_longest=function(e){if(!e[0])return[];var t=e[0].length,n=e.length;for(var r=1;r<n;r++){var i=e[r].length;i>t&&(t=i)}var s=[];for(var o=0;o<t;o++){var u=[];for(var r=0;r<n;r++)e[r][o]===""?u.push(NaN):u.push(e[r][o]);s.push(u)}return s},this.$izip=function(e,t){var n=e.length>=t.length?t.length:e.length,r=[];for(var i=0;i<n;i++){var s=[e[i],t[i]];r.push(s)}return r}}).call(r.prototype),t.ElasticTabstopsLite=r;var i=e("../editor").Editor;e("../config").defineOptions(i.prototype,"editor",{useElasticTabstops:{set:function(e){e?(this.elasticTabstops||(this.elasticTabstops=new r(this)),this.commands.on("afterExec",this.elasticTabstops.onAfterExec),this.commands.on("exec",this.elasticTabstops.onExec),this.on("change",this.elasticTabstops.onChange)):this.elasticTabstops&&(this.commands.removeListener("afterExec",this.elasticTabstops.onAfterExec),this.commands.removeListener("exec",this.elasticTabstops.onExec),this.removeListener("change",this.elasticTabstops.onChange))}}})});
(function() {
window.require(["ace/ext/elastic_tabstops_lite"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();
define("ace/ext/elastic_tabstops_lite",["require","exports","module","ace/editor","ace/config"],function(e,t,n){"use strict";var r=function(e){this.$editor=e;var t=this,n=[],r=!1;this.onAfterExec=function(){r=!1,t.processRows(n),n=[]},this.onExec=function(){r=!0},this.onChange=function(e){r&&(n.indexOf(e.start.row)==-1&&n.push(e.start.row),e.end.row!=e.start.row&&n.push(e.end.row))}};(function(){this.processRows=function(e){this.$inChange=!0;var t=[];for(var n=0,r=e.length;n<r;n++){var i=e[n];if(t.indexOf(i)>-1)continue;var s=this.$findCellWidthsForBlock(i),o=this.$setBlockCellWidthsToMax(s.cellWidths),u=s.firstRow;for(var a=0,f=o.length;a<f;a++){var l=o[a];t.push(u),this.$adjustRow(u,l),u++}}this.$inChange=!1},this.$findCellWidthsForBlock=function(e){var t=[],n,r=e;while(r>=0){n=this.$cellWidthsForRow(r);if(n.length==0)break;t.unshift(n),r--}var i=r+1;r=e;var s=this.$editor.session.getLength();while(r<s-1){r++,n=this.$cellWidthsForRow(r);if(n.length==0)break;t.push(n)}return{cellWidths:t,firstRow:i}},this.$cellWidthsForRow=function(e){var t=this.$selectionColumnsForRow(e),n=[-1].concat(this.$tabsForRow(e)),r=n.map(function(e){return 0}).slice(1),i=this.$editor.session.getLine(e);for(var s=0,o=n.length-1;s<o;s++){var u=n[s]+1,a=n[s+1],f=this.$rightmostSelectionInCell(t,a),l=i.substring(u,a);r[s]=Math.max(l.replace(/\s+$/g,"").length,f-u)}return r},this.$selectionColumnsForRow=function(e){var t=[],n=this.$editor.getCursorPosition();return this.$editor.session.getSelection().isEmpty()&&e==n.row&&t.push(n.column),t},this.$setBlockCellWidthsToMax=function(e){var t=!0,n,r,i,s=this.$izip_longest(e);for(var o=0,u=s.length;o<u;o++){var a=s[o];if(!a.push){console.error(a);continue}a.push(NaN);for(var f=0,l=a.length;f<l;f++){var c=a[f];t&&(n=f,i=0,t=!1);if(isNaN(c)){r=f;for(var h=n;h<r;h++)e[h][o]=i;t=!0}i=Math.max(i,c)}}return e},this.$rightmostSelectionInCell=function(e,t){var n=0;if(e.length){var r=[];for(var i=0,s=e.length;i<s;i++)e[i]<=t?r.push(i):r.push(0);n=Math.max.apply(Math,r)}return n},this.$tabsForRow=function(e){var t=[],n=this.$editor.session.getLine(e),r=/\t/g,i;while((i=r.exec(n))!=null)t.push(i.index);return t},this.$adjustRow=function(e,t){var n=this.$tabsForRow(e);if(n.length==0)return;var r=0,i=-1,s=this.$izip(t,n);for(var o=0,u=s.length;o<u;o++){var a=s[o][0],f=s[o][1];i+=1+a,f+=r;var l=i-f;if(l==0)continue;var c=this.$editor.session.getLine(e).substr(0,f),h=c.replace(/\s*$/g,""),p=c.length-h.length;l>0&&(this.$editor.session.getDocument().insertInLine({row:e,column:f+1},Array(l+1).join(" ")+" "),this.$editor.session.getDocument().removeInLine(e,f,f+1),r+=l),l<0&&p>=-l&&(this.$editor.session.getDocument().removeInLine(e,f+l,f),r+=l)}},this.$izip_longest=function(e){if(!e[0])return[];var t=e[0].length,n=e.length;for(var r=1;r<n;r++){var i=e[r].length;i>t&&(t=i)}var s=[];for(var o=0;o<t;o++){var u=[];for(var r=0;r<n;r++)e[r][o]===""?u.push(NaN):u.push(e[r][o]);s.push(u)}return s},this.$izip=function(e,t){var n=e.length>=t.length?t.length:e.length,r=[];for(var i=0;i<n;i++){var s=[e[i],t[i]];r.push(s)}return r}}).call(r.prototype),t.ElasticTabstopsLite=r;var i=e("../editor").Editor;e("../config").defineOptions(i.prototype,"editor",{useElasticTabstops:{set:function(e){e?(this.elasticTabstops||(this.elasticTabstops=new r(this)),this.commands.on("afterExec",this.elasticTabstops.onAfterExec),this.commands.on("exec",this.elasticTabstops.onExec),this.on("change",this.elasticTabstops.onChange)):this.elasticTabstops&&(this.commands.removeListener("afterExec",this.elasticTabstops.onAfterExec),this.commands.removeListener("exec",this.elasticTabstops.onExec),this.removeListener("change",this.elasticTabstops.onChange))}}})});
(function() {
window.require(["ace/ext/elastic_tabstops_lite"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,9 @@
;
(function() {
window.require(["ace/ext/error_marker"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();
;
(function() {
window.require(["ace/ext/error_marker"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();

View File

@ -1,9 +1,9 @@
define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../../lib/dom"),i="#ace_settingsmenu, #kbshortcutmenu {background-color: #F7F7F7;color: black;box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);padding: 1em 0.5em 2em 1em;overflow: auto;position: absolute;margin: 0;bottom: 0;right: 0;top: 0;z-index: 9991;cursor: default;}.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);background-color: rgba(255, 255, 255, 0.6);color: black;}.ace_optionsMenuEntry:hover {background-color: rgba(100, 100, 100, 0.1);transition: all 0.3s}.ace_closeButton {background: rgba(245, 146, 146, 0.5);border: 1px solid #F48A8A;border-radius: 50%;padding: 7px;position: absolute;right: -8px;top: -8px;z-index: 100000;}.ace_closeButton{background: rgba(245, 146, 146, 0.9);}.ace_optionsMenuKey {color: darkslateblue;font-weight: bold;}.ace_optionsMenuCommand {color: darkcyan;font-weight: normal;}.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {vertical-align: middle;}.ace_optionsMenuEntry button[ace_selected_button=true] {background: #e7e7e7;box-shadow: 1px 0px 2px 0px #adadad inset;border-color: #adadad;}.ace_optionsMenuEntry button {background: white;border: 1px solid lightgray;margin: 0px;}.ace_optionsMenuEntry button:hover{background: #f0f0f0;}";r.importCssString(i),n.exports.overlayPage=function(t,n,i,s,o,u){function l(e){e.keyCode===27&&a.click()}i=i?"top: "+i+";":"",o=o?"bottom: "+o+";":"",s=s?"right: "+s+";":"",u=u?"left: "+u+";":"";var a=document.createElement("div"),f=document.createElement("div");a.style.cssText="margin: 0; padding: 0; position: fixed; top:0; bottom:0; left:0; right:0;z-index: 9990; background-color: rgba(0, 0, 0, 0.3);",a.addEventListener("click",function(){document.removeEventListener("keydown",l),a.parentNode.removeChild(a),t.focus(),a=null}),document.addEventListener("keydown",l),f.style.cssText=i+s+o+u,f.addEventListener("click",function(e){e.stopPropagation()});var c=r.createElement("div");c.style.position="relative";var h=r.createElement("div");h.className="ace_closeButton",h.addEventListener("click",function(){a.click()}),c.appendChild(h),f.appendChild(c),f.appendChild(n),a.appendChild(f),document.body.appendChild(a),t.blur()}}),define("ace/ext/menu_tools/get_editor_keyboard_shortcuts",["require","exports","module","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../../lib/keys");n.exports.getEditorKeybordShortcuts=function(e){var t=r.KEY_MODS,n=[],i={};return e.keyBinding.$handlers.forEach(function(e){var t=e.commandKeyBinding;for(var r in t){var s=r.replace(/(^|-)\w/g,function(e){return e.toUpperCase()}),o=t[r];Array.isArray(o)||(o=[o]),o.forEach(function(e){typeof e!="string"&&(e=e.name),i[e]?i[e].key+="|"+s:(i[e]={key:s,command:e},n.push(i[e]))})}}),n}}),define("ace/ext/keybinding_menu",["require","exports","module","ace/editor","ace/ext/menu_tools/overlay_page","ace/ext/menu_tools/get_editor_keyboard_shortcuts"],function(e,t,n){"use strict";function i(t){if(!document.getElementById("kbshortcutmenu")){var n=e("./menu_tools/overlay_page").overlayPage,r=e("./menu_tools/get_editor_keyboard_shortcuts").getEditorKeybordShortcuts,i=r(t),s=document.createElement("div"),o=i.reduce(function(e,t){return e+'<div class="ace_optionsMenuEntry"><span class="ace_optionsMenuCommand">'+t.command+"</span> : "+'<span class="ace_optionsMenuKey">'+t.key+"</span></div>"},"");s.id="kbshortcutmenu",s.innerHTML="<h1>Keyboard Shortcuts</h1>"+o+"</div>",n(t,s,"0","0","0",null)}}var r=e("ace/editor").Editor;n.exports.init=function(e){r.prototype.showKeyboardShortcuts=function(){i(this)},e.commands.addCommands([{name:"showKeyboardShortcuts",bindKey:{win:"Ctrl-Alt-h",mac:"Command-Alt-h"},exec:function(e,t){e.showKeyboardShortcuts()}}])}});
(function() {
window.require(["ace/ext/keybinding_menu"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();
define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../../lib/dom"),i="#ace_settingsmenu, #kbshortcutmenu {background-color: #F7F7F7;color: black;box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);padding: 1em 0.5em 2em 1em;overflow: auto;position: absolute;margin: 0;bottom: 0;right: 0;top: 0;z-index: 9991;cursor: default;}.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);background-color: rgba(255, 255, 255, 0.6);color: black;}.ace_optionsMenuEntry:hover {background-color: rgba(100, 100, 100, 0.1);transition: all 0.3s}.ace_closeButton {background: rgba(245, 146, 146, 0.5);border: 1px solid #F48A8A;border-radius: 50%;padding: 7px;position: absolute;right: -8px;top: -8px;z-index: 100000;}.ace_closeButton{background: rgba(245, 146, 146, 0.9);}.ace_optionsMenuKey {color: darkslateblue;font-weight: bold;}.ace_optionsMenuCommand {color: darkcyan;font-weight: normal;}.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {vertical-align: middle;}.ace_optionsMenuEntry button[ace_selected_button=true] {background: #e7e7e7;box-shadow: 1px 0px 2px 0px #adadad inset;border-color: #adadad;}.ace_optionsMenuEntry button {background: white;border: 1px solid lightgray;margin: 0px;}.ace_optionsMenuEntry button:hover{background: #f0f0f0;}";r.importCssString(i),n.exports.overlayPage=function(t,n,i,s,o,u){function l(e){e.keyCode===27&&a.click()}i=i?"top: "+i+";":"",o=o?"bottom: "+o+";":"",s=s?"right: "+s+";":"",u=u?"left: "+u+";":"";var a=document.createElement("div"),f=document.createElement("div");a.style.cssText="margin: 0; padding: 0; position: fixed; top:0; bottom:0; left:0; right:0;z-index: 9990; background-color: rgba(0, 0, 0, 0.3);",a.addEventListener("click",function(){document.removeEventListener("keydown",l),a.parentNode.removeChild(a),t.focus(),a=null}),document.addEventListener("keydown",l),f.style.cssText=i+s+o+u,f.addEventListener("click",function(e){e.stopPropagation()});var c=r.createElement("div");c.style.position="relative";var h=r.createElement("div");h.className="ace_closeButton",h.addEventListener("click",function(){a.click()}),c.appendChild(h),f.appendChild(c),f.appendChild(n),a.appendChild(f),document.body.appendChild(a),t.blur()}}),define("ace/ext/menu_tools/get_editor_keyboard_shortcuts",["require","exports","module","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../../lib/keys");n.exports.getEditorKeybordShortcuts=function(e){var t=r.KEY_MODS,n=[],i={};return e.keyBinding.$handlers.forEach(function(e){var t=e.commandKeyBinding;for(var r in t){var s=r.replace(/(^|-)\w/g,function(e){return e.toUpperCase()}),o=t[r];Array.isArray(o)||(o=[o]),o.forEach(function(e){typeof e!="string"&&(e=e.name),i[e]?i[e].key+="|"+s:(i[e]={key:s,command:e},n.push(i[e]))})}}),n}}),define("ace/ext/keybinding_menu",["require","exports","module","ace/editor","ace/ext/menu_tools/overlay_page","ace/ext/menu_tools/get_editor_keyboard_shortcuts"],function(e,t,n){"use strict";function i(t){if(!document.getElementById("kbshortcutmenu")){var n=e("./menu_tools/overlay_page").overlayPage,r=e("./menu_tools/get_editor_keyboard_shortcuts").getEditorKeybordShortcuts,i=r(t),s=document.createElement("div"),o=i.reduce(function(e,t){return e+'<div class="ace_optionsMenuEntry"><span class="ace_optionsMenuCommand">'+t.command+"</span> : "+'<span class="ace_optionsMenuKey">'+t.key+"</span></div>"},"");s.id="kbshortcutmenu",s.innerHTML="<h1>Keyboard Shortcuts</h1>"+o+"</div>",n(t,s,"0","0","0",null)}}var r=e("ace/editor").Editor;n.exports.init=function(e){r.prototype.showKeyboardShortcuts=function(){i(this)},e.commands.addCommands([{name:"showKeyboardShortcuts",bindKey:{win:"Ctrl-Alt-h",mac:"Command-Alt-h"},exec:function(e,t){e.showKeyboardShortcuts()}}])}});
(function() {
window.require(["ace/ext/keybinding_menu"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,9 @@
define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function i(e){var n=e.editor,r=e.getAccelKey();if(r){var n=e.editor,i=e.getDocumentPosition(),s=n.session,o=s.getTokenAt(i.row,i.column);t.previousLinkingHover&&t.previousLinkingHover!=o&&n._emit("linkHoverOut"),n._emit("linkHover",{position:i,token:o}),t.previousLinkingHover=o}else t.previousLinkingHover&&(n._emit("linkHoverOut"),t.previousLinkingHover=!1)}function s(e){var t=e.getAccelKey(),n=e.getButton();if(n==0&&t){var r=e.editor,i=e.getDocumentPosition(),s=r.session,o=s.getTokenAt(i.row,i.column);r._emit("linkClick",{position:i,token:o})}}var r=e("ace/editor").Editor;e("../config").defineOptions(r.prototype,"editor",{enableLinking:{set:function(e){e?(this.on("click",s),this.on("mousemove",i)):(this.off("click",s),this.off("mousemove",i))},value:!1}}),t.previousLinkingHover=!1});
(function() {
window.require(["ace/ext/linking"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();
define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function i(e){var n=e.editor,r=e.getAccelKey();if(r){var n=e.editor,i=e.getDocumentPosition(),s=n.session,o=s.getTokenAt(i.row,i.column);t.previousLinkingHover&&t.previousLinkingHover!=o&&n._emit("linkHoverOut"),n._emit("linkHover",{position:i,token:o}),t.previousLinkingHover=o}else t.previousLinkingHover&&(n._emit("linkHoverOut"),t.previousLinkingHover=!1)}function s(e){var t=e.getAccelKey(),n=e.getButton();if(n==0&&t){var r=e.editor,i=e.getDocumentPosition(),s=r.session,o=s.getTokenAt(i.row,i.column);r._emit("linkClick",{position:i,token:o})}}var r=e("ace/editor").Editor;e("../config").defineOptions(r.prototype,"editor",{enableLinking:{set:function(e){e?(this.on("click",s),this.on("mousemove",i)):(this.off("click",s),this.off("mousemove",i))},value:!1}}),t.previousLinkingHover=!1});
(function() {
window.require(["ace/ext/linking"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();

View File

@ -1,9 +1,9 @@
define("ace/ext/modelist",["require","exports","module"],function(e,t,n){"use strict";function i(e){var t=a.text,n=e.split(/[\/\\]/).pop();for(var i=0;i<r.length;i++)if(r[i].supportsFile(n)){t=r[i];break}return t}var r=[],s=function(e,t,n){this.name=e,this.caption=t,this.mode="ace/mode/"+e,this.extensions=n;var r;/\^/.test(n)?r=n.replace(/\|(\^)?/g,function(e,t){return"$|"+(t?"^":"^.*\\.")})+"$":r="^.*\\.("+n+")$",this.extRe=new RegExp(r,"gi")};s.prototype.supportsFile=function(e){return e.match(this.extRe)};var o={ABAP:["abap"],ABC:["abc"],ActionScript:["as"],ADA:["ada|adb"],Apache_Conf:["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"],AsciiDoc:["asciidoc|adoc"],ASL:["dsl|asl"],Assembly_x86:["asm|a"],AutoHotKey:["ahk"],BatchFile:["bat|cmd"],Bro:["bro"],C_Cpp:["cpp|c|cc|cxx|h|hh|hpp|ino"],C9Search:["c9search_results"],Cirru:["cirru|cr"],Clojure:["clj|cljs"],Cobol:["CBL|COB"],coffee:["coffee|cf|cson|^Cakefile"],ColdFusion:["cfm"],CSharp:["cs"],Csound_Document:["csd"],Csound_Orchestra:["orc"],Csound_Score:["sco"],CSS:["css"],Curly:["curly"],D:["d|di"],Dart:["dart"],Diff:["diff|patch"],Dockerfile:["^Dockerfile"],Dot:["dot"],Drools:["drl"],Edifact:["edi"],Eiffel:["e|ge"],EJS:["ejs"],Elixir:["ex|exs"],Elm:["elm"],Erlang:["erl|hrl"],Forth:["frt|fs|ldr|fth|4th"],Fortran:["f|f90"],FTL:["ftl"],Gcode:["gcode"],Gherkin:["feature"],Gitignore:["^.gitignore"],Glsl:["glsl|frag|vert"],Gobstones:["gbs"],golang:["go"],GraphQLSchema:["gql"],Groovy:["groovy"],HAML:["haml"],Handlebars:["hbs|handlebars|tpl|mustache"],Haskell:["hs"],Haskell_Cabal:["cabal"],haXe:["hx"],Hjson:["hjson"],HTML:["html|htm|xhtml|vue|we|wpy"],HTML_Elixir:["eex|html.eex"],HTML_Ruby:["erb|rhtml|html.erb"],INI:["ini|conf|cfg|prefs"],Io:["io"],Jack:["jack"],Jade:["jade|pug"],Java:["java"],JavaScript:["js|jsm|jsx"],JSON:["json"],JSONiq:["jq"],JSP:["jsp"],JSSM:["jssm|jssm_state"],JSX:["jsx"],Julia:["jl"],Kotlin:["kt|kts"],LaTeX:["tex|latex|ltx|bib"],LESS:["less"],Liquid:["liquid"],Lisp:["lisp"],LiveScript:["ls"],LogiQL:["logic|lql"],LSL:["lsl"],Lua:["lua"],LuaPage:["lp"],Lucene:["lucene"],Makefile:["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"],Markdown:["md|markdown"],Mask:["mask"],MATLAB:["matlab"],Maze:["mz"],MEL:["mel"],MIXAL:["mixal"],MUSHCode:["mc|mush"],MySQL:["mysql"],Nix:["nix"],NSIS:["nsi|nsh"],ObjectiveC:["m|mm"],OCaml:["ml|mli"],Pascal:["pas|p"],Perl:["pl|pm"],pgSQL:["pgsql"],PHP:["php|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"],Pig:["pig"],Powershell:["ps1"],Praat:["praat|praatscript|psc|proc"],Prolog:["plg|prolog"],Properties:["properties"],Protobuf:["proto"],Python:["py"],R:["r"],Razor:["cshtml|asp"],RDoc:["Rd"],Red:["red|reds"],RHTML:["Rhtml"],RST:["rst"],Ruby:["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"],Rust:["rs"],SASS:["sass"],SCAD:["scad"],Scala:["scala"],Scheme:["scm|sm|rkt|oak|scheme"],SCSS:["scss"],SH:["sh|bash|^.bashrc"],SJS:["sjs"],Smarty:["smarty|tpl"],snippets:["snippets"],Soy_Template:["soy"],Space:["space"],SQL:["sql"],SQLServer:["sqlserver"],Stylus:["styl|stylus"],SVG:["svg"],Swift:["swift"],Tcl:["tcl"],Tex:["tex"],Text:["txt"],Textile:["textile"],Toml:["toml"],TSX:["tsx"],Twig:["twig|swig"],Typescript:["ts|typescript|str"],Vala:["vala"],VBScript:["vbs|vb"],Velocity:["vm"],Verilog:["v|vh|sv|svh"],VHDL:["vhd|vhdl"],Wollok:["wlk|wpgm|wtest"],XML:["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"],XQuery:["xq"],YAML:["yaml|yml"],Django:["html"]},u={ObjectiveC:"Objective-C",CSharp:"C#",golang:"Go",C_Cpp:"C and C++",Csound_Document:"Csound Document",Csound_Orchestra:"Csound",Csound_Score:"Csound Score",coffee:"CoffeeScript",HTML_Ruby:"HTML (Ruby)",HTML_Elixir:"HTML (Elixir)",FTL:"FreeMarker"},a={};for(var f in o){var l=o[f],c=(u[f]||f).replace(/_/g," "),h=f.toLowerCase(),p=new s(h,c,l[0]);a[h]=p,r.push(p)}n.exports={getModeForPath:i,modes:r,modesByName:a}});
(function() {
window.require(["ace/ext/modelist"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();
define("ace/ext/modelist",["require","exports","module"],function(e,t,n){"use strict";function i(e){var t=a.text,n=e.split(/[\/\\]/).pop();for(var i=0;i<r.length;i++)if(r[i].supportsFile(n)){t=r[i];break}return t}var r=[],s=function(e,t,n){this.name=e,this.caption=t,this.mode="ace/mode/"+e,this.extensions=n;var r;/\^/.test(n)?r=n.replace(/\|(\^)?/g,function(e,t){return"$|"+(t?"^":"^.*\\.")})+"$":r="^.*\\.("+n+")$",this.extRe=new RegExp(r,"gi")};s.prototype.supportsFile=function(e){return e.match(this.extRe)};var o={ABAP:["abap"],ABC:["abc"],ActionScript:["as"],ADA:["ada|adb"],Apache_Conf:["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"],AsciiDoc:["asciidoc|adoc"],ASL:["dsl|asl"],Assembly_x86:["asm|a"],AutoHotKey:["ahk"],BatchFile:["bat|cmd"],Bro:["bro"],C_Cpp:["cpp|c|cc|cxx|h|hh|hpp|ino"],C9Search:["c9search_results"],Cirru:["cirru|cr"],Clojure:["clj|cljs"],Cobol:["CBL|COB"],coffee:["coffee|cf|cson|^Cakefile"],ColdFusion:["cfm"],CSharp:["cs"],Csound_Document:["csd"],Csound_Orchestra:["orc"],Csound_Score:["sco"],CSS:["css"],Curly:["curly"],D:["d|di"],Dart:["dart"],Diff:["diff|patch"],Dockerfile:["^Dockerfile"],Dot:["dot"],Drools:["drl"],Edifact:["edi"],Eiffel:["e|ge"],EJS:["ejs"],Elixir:["ex|exs"],Elm:["elm"],Erlang:["erl|hrl"],Forth:["frt|fs|ldr|fth|4th"],Fortran:["f|f90"],FTL:["ftl"],Gcode:["gcode"],Gherkin:["feature"],Gitignore:["^.gitignore"],Glsl:["glsl|frag|vert"],Gobstones:["gbs"],golang:["go"],GraphQLSchema:["gql"],Groovy:["groovy"],HAML:["haml"],Handlebars:["hbs|handlebars|tpl|mustache"],Haskell:["hs"],Haskell_Cabal:["cabal"],haXe:["hx"],Hjson:["hjson"],HTML:["html|htm|xhtml|vue|we|wpy"],HTML_Elixir:["eex|html.eex"],HTML_Ruby:["erb|rhtml|html.erb"],INI:["ini|conf|cfg|prefs"],Io:["io"],Jack:["jack"],Jade:["jade|pug"],Java:["java"],JavaScript:["js|jsm|jsx"],JSON:["json"],JSONiq:["jq"],JSP:["jsp"],JSSM:["jssm|jssm_state"],JSX:["jsx"],Julia:["jl"],Kotlin:["kt|kts"],LaTeX:["tex|latex|ltx|bib"],LESS:["less"],Liquid:["liquid"],Lisp:["lisp"],LiveScript:["ls"],LogiQL:["logic|lql"],LSL:["lsl"],Lua:["lua"],LuaPage:["lp"],Lucene:["lucene"],Makefile:["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"],Markdown:["md|markdown"],Mask:["mask"],MATLAB:["matlab"],Maze:["mz"],MEL:["mel"],MIXAL:["mixal"],MUSHCode:["mc|mush"],MySQL:["mysql"],Nix:["nix"],NSIS:["nsi|nsh"],ObjectiveC:["m|mm"],OCaml:["ml|mli"],Pascal:["pas|p"],Perl:["pl|pm"],pgSQL:["pgsql"],PHP:["php|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"],Pig:["pig"],Powershell:["ps1"],Praat:["praat|praatscript|psc|proc"],Prolog:["plg|prolog"],Properties:["properties"],Protobuf:["proto"],Python:["py"],R:["r"],Razor:["cshtml|asp"],RDoc:["Rd"],Red:["red|reds"],RHTML:["Rhtml"],RST:["rst"],Ruby:["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"],Rust:["rs"],SASS:["sass"],SCAD:["scad"],Scala:["scala"],Scheme:["scm|sm|rkt|oak|scheme"],SCSS:["scss"],SH:["sh|bash|^.bashrc"],SJS:["sjs"],Smarty:["smarty|tpl"],snippets:["snippets"],Soy_Template:["soy"],Space:["space"],SQL:["sql"],SQLServer:["sqlserver"],Stylus:["styl|stylus"],SVG:["svg"],Swift:["swift"],Tcl:["tcl"],Tex:["tex"],Text:["txt"],Textile:["textile"],Toml:["toml"],TSX:["tsx"],Twig:["twig|swig"],Typescript:["ts|typescript|str"],Vala:["vala"],VBScript:["vbs|vb"],Velocity:["vm"],Verilog:["v|vh|sv|svh"],VHDL:["vhd|vhdl"],Wollok:["wlk|wpgm|wtest"],XML:["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"],XQuery:["xq"],YAML:["yaml|yml"],Django:["html"]},u={ObjectiveC:"Objective-C",CSharp:"C#",golang:"Go",C_Cpp:"C and C++",Csound_Document:"Csound Document",Csound_Orchestra:"Csound",Csound_Score:"Csound Score",coffee:"CoffeeScript",HTML_Ruby:"HTML (Ruby)",HTML_Elixir:"HTML (Elixir)",FTL:"FreeMarker"},a={};for(var f in o){var l=o[f],c=(u[f]||f).replace(/_/g," "),h=f.toLowerCase(),p=new s(h,c,l[0]);a[h]=p,r.push(p)}n.exports={getModeForPath:i,modes:r,modesByName:a}});
(function() {
window.require(["ace/ext/modelist"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,9 @@
define("ace/ext/spellcheck",["require","exports","module","ace/lib/event","ace/editor","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event");t.contextMenuHandler=function(e){var t=e.target,n=t.textInput.getElement();if(!t.selection.isEmpty())return;var i=t.getCursorPosition(),s=t.session.getWordRange(i.row,i.column),o=t.session.getTextRange(s);t.session.tokenRe.lastIndex=0;if(!t.session.tokenRe.test(o))return;var u="\x01\x01",a=o+" "+u;n.value=a,n.setSelectionRange(o.length,o.length+1),n.setSelectionRange(0,0),n.setSelectionRange(0,o.length);var f=!1;r.addListener(n,"keydown",function l(){r.removeListener(n,"keydown",l),f=!0}),t.textInput.setInputHandler(function(e){console.log(e,a,n.selectionStart,n.selectionEnd);if(e==a)return"";if(e.lastIndexOf(a,0)===0)return e.slice(a.length);if(e.substr(n.selectionEnd)==a)return e.slice(0,-a.length);if(e.slice(-2)==u){var r=e.slice(0,-2);if(r.slice(-1)==" ")return f?r.substring(0,n.selectionEnd):(r=r.slice(0,-1),t.session.replace(s,r),"")}return e})};var i=e("../editor").Editor;e("../config").defineOptions(i.prototype,"editor",{spellcheck:{set:function(e){var n=this.textInput.getElement();n.spellcheck=!!e,e?this.on("nativecontextmenu",t.contextMenuHandler):this.removeListener("nativecontextmenu",t.contextMenuHandler)},value:!0}})});
(function() {
window.require(["ace/ext/spellcheck"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();
define("ace/ext/spellcheck",["require","exports","module","ace/lib/event","ace/editor","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event");t.contextMenuHandler=function(e){var t=e.target,n=t.textInput.getElement();if(!t.selection.isEmpty())return;var i=t.getCursorPosition(),s=t.session.getWordRange(i.row,i.column),o=t.session.getTextRange(s);t.session.tokenRe.lastIndex=0;if(!t.session.tokenRe.test(o))return;var u="\x01\x01",a=o+" "+u;n.value=a,n.setSelectionRange(o.length,o.length+1),n.setSelectionRange(0,0),n.setSelectionRange(0,o.length);var f=!1;r.addListener(n,"keydown",function l(){r.removeListener(n,"keydown",l),f=!0}),t.textInput.setInputHandler(function(e){console.log(e,a,n.selectionStart,n.selectionEnd);if(e==a)return"";if(e.lastIndexOf(a,0)===0)return e.slice(a.length);if(e.substr(n.selectionEnd)==a)return e.slice(0,-a.length);if(e.slice(-2)==u){var r=e.slice(0,-2);if(r.slice(-1)==" ")return f?r.substring(0,n.selectionEnd):(r=r.slice(0,-1),t.session.replace(s,r),"")}return e})};var i=e("../editor").Editor;e("../config").defineOptions(i.prototype,"editor",{spellcheck:{set:function(e){var n=this.textInput.getElement();n.spellcheck=!!e,e?this.on("nativecontextmenu",t.contextMenuHandler):this.removeListener("nativecontextmenu",t.contextMenuHandler)},value:!0}})});
(function() {
window.require(["ace/ext/spellcheck"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();

View File

@ -1,9 +1,9 @@
define("ace/split",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/editor","ace/virtual_renderer","ace/edit_session"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./editor").Editor,u=e("./virtual_renderer").VirtualRenderer,a=e("./edit_session").EditSession,f=function(e,t,n){this.BELOW=1,this.BESIDE=0,this.$container=e,this.$theme=t,this.$splits=0,this.$editorCSS="",this.$editors=[],this.$orientation=this.BESIDE,this.setSplits(n||1),this.$cEditor=this.$editors[0],this.on("focus",function(e){this.$cEditor=e}.bind(this))};(function(){r.implement(this,s),this.$createEditor=function(){var e=document.createElement("div");e.className=this.$editorCSS,e.style.cssText="position: absolute; top:0px; bottom:0px",this.$container.appendChild(e);var t=new o(new u(e,this.$theme));return t.on("focus",function(){this._emit("focus",t)}.bind(this)),this.$editors.push(t),t.setFontSize(this.$fontSize),t},this.setSplits=function(e){var t;if(e<1)throw"The number of splits have to be > 0!";if(e==this.$splits)return;if(e>this.$splits){while(this.$splits<this.$editors.length&&this.$splits<e)t=this.$editors[this.$splits],this.$container.appendChild(t.container),t.setFontSize(this.$fontSize),this.$splits++;while(this.$splits<e)this.$createEditor(),this.$splits++}else while(this.$splits>e)t=this.$editors[this.$splits-1],this.$container.removeChild(t.container),this.$splits--;this.resize()},this.getSplits=function(){return this.$splits},this.getEditor=function(e){return this.$editors[e]},this.getCurrentEditor=function(){return this.$cEditor},this.focus=function(){this.$cEditor.focus()},this.blur=function(){this.$cEditor.blur()},this.setTheme=function(e){this.$editors.forEach(function(t){t.setTheme(e)})},this.setKeyboardHandler=function(e){this.$editors.forEach(function(t){t.setKeyboardHandler(e)})},this.forEach=function(e,t){this.$editors.forEach(e,t)},this.$fontSize="",this.setFontSize=function(e){this.$fontSize=e,this.forEach(function(t){t.setFontSize(e)})},this.$cloneSession=function(e){var t=new a(e.getDocument(),e.getMode()),n=e.getUndoManager();return t.setUndoManager(n),t.setTabSize(e.getTabSize()),t.setUseSoftTabs(e.getUseSoftTabs()),t.setOverwrite(e.getOverwrite()),t.setBreakpoints(e.getBreakpoints()),t.setUseWrapMode(e.getUseWrapMode()),t.setUseWorker(e.getUseWorker()),t.setWrapLimitRange(e.$wrapLimitRange.min,e.$wrapLimitRange.max),t.$foldData=e.$cloneFoldData(),t},this.setSession=function(e,t){var n;t==null?n=this.$cEditor:n=this.$editors[t];var r=this.$editors.some(function(t){return t.session===e});return r&&(e=this.$cloneSession(e)),n.setSession(e),e},this.getOrientation=function(){return this.$orientation},this.setOrientation=function(e){if(this.$orientation==e)return;this.$orientation=e,this.resize()},this.resize=function(){var e=this.$container.clientWidth,t=this.$container.clientHeight,n;if(this.$orientation==this.BESIDE){var r=e/this.$splits;for(var i=0;i<this.$splits;i++)n=this.$editors[i],n.container.style.width=r+"px",n.container.style.top="0px",n.container.style.left=i*r+"px",n.container.style.height=t+"px",n.resize()}else{var s=t/this.$splits;for(var i=0;i<this.$splits;i++)n=this.$editors[i],n.container.style.width=e+"px",n.container.style.top=i*s+"px",n.container.style.left="0px",n.container.style.height=s+"px",n.resize()}}}).call(f.prototype),t.Split=f}),define("ace/ext/split",["require","exports","module","ace/split"],function(e,t,n){"use strict";n.exports=e("../split")});
(function() {
window.require(["ace/ext/split"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();
define("ace/split",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/editor","ace/virtual_renderer","ace/edit_session"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./editor").Editor,u=e("./virtual_renderer").VirtualRenderer,a=e("./edit_session").EditSession,f=function(e,t,n){this.BELOW=1,this.BESIDE=0,this.$container=e,this.$theme=t,this.$splits=0,this.$editorCSS="",this.$editors=[],this.$orientation=this.BESIDE,this.setSplits(n||1),this.$cEditor=this.$editors[0],this.on("focus",function(e){this.$cEditor=e}.bind(this))};(function(){r.implement(this,s),this.$createEditor=function(){var e=document.createElement("div");e.className=this.$editorCSS,e.style.cssText="position: absolute; top:0px; bottom:0px",this.$container.appendChild(e);var t=new o(new u(e,this.$theme));return t.on("focus",function(){this._emit("focus",t)}.bind(this)),this.$editors.push(t),t.setFontSize(this.$fontSize),t},this.setSplits=function(e){var t;if(e<1)throw"The number of splits have to be > 0!";if(e==this.$splits)return;if(e>this.$splits){while(this.$splits<this.$editors.length&&this.$splits<e)t=this.$editors[this.$splits],this.$container.appendChild(t.container),t.setFontSize(this.$fontSize),this.$splits++;while(this.$splits<e)this.$createEditor(),this.$splits++}else while(this.$splits>e)t=this.$editors[this.$splits-1],this.$container.removeChild(t.container),this.$splits--;this.resize()},this.getSplits=function(){return this.$splits},this.getEditor=function(e){return this.$editors[e]},this.getCurrentEditor=function(){return this.$cEditor},this.focus=function(){this.$cEditor.focus()},this.blur=function(){this.$cEditor.blur()},this.setTheme=function(e){this.$editors.forEach(function(t){t.setTheme(e)})},this.setKeyboardHandler=function(e){this.$editors.forEach(function(t){t.setKeyboardHandler(e)})},this.forEach=function(e,t){this.$editors.forEach(e,t)},this.$fontSize="",this.setFontSize=function(e){this.$fontSize=e,this.forEach(function(t){t.setFontSize(e)})},this.$cloneSession=function(e){var t=new a(e.getDocument(),e.getMode()),n=e.getUndoManager();return t.setUndoManager(n),t.setTabSize(e.getTabSize()),t.setUseSoftTabs(e.getUseSoftTabs()),t.setOverwrite(e.getOverwrite()),t.setBreakpoints(e.getBreakpoints()),t.setUseWrapMode(e.getUseWrapMode()),t.setUseWorker(e.getUseWorker()),t.setWrapLimitRange(e.$wrapLimitRange.min,e.$wrapLimitRange.max),t.$foldData=e.$cloneFoldData(),t},this.setSession=function(e,t){var n;t==null?n=this.$cEditor:n=this.$editors[t];var r=this.$editors.some(function(t){return t.session===e});return r&&(e=this.$cloneSession(e)),n.setSession(e),e},this.getOrientation=function(){return this.$orientation},this.setOrientation=function(e){if(this.$orientation==e)return;this.$orientation=e,this.resize()},this.resize=function(){var e=this.$container.clientWidth,t=this.$container.clientHeight,n;if(this.$orientation==this.BESIDE){var r=e/this.$splits;for(var i=0;i<this.$splits;i++)n=this.$editors[i],n.container.style.width=r+"px",n.container.style.top="0px",n.container.style.left=i*r+"px",n.container.style.height=t+"px",n.resize()}else{var s=t/this.$splits;for(var i=0;i<this.$splits;i++)n=this.$editors[i],n.container.style.width=e+"px",n.container.style.top=i*s+"px",n.container.style.left="0px",n.container.style.height=s+"px",n.resize()}}}).call(f.prototype),t.Split=f}),define("ace/ext/split",["require","exports","module","ace/split"],function(e,t,n){"use strict";n.exports=e("../split")});
(function() {
window.require(["ace/ext/split"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();

View File

@ -1,9 +1,9 @@
define("ace/ext/static_highlight",["require","exports","module","ace/edit_session","ace/layer/text","ace/config","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../edit_session").EditSession,i=e("../layer/text").Text,s=".ace_static_highlight {font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', 'Droid Sans Mono', monospace;font-size: 12px;white-space: pre-wrap}.ace_static_highlight .ace_gutter {width: 2em;text-align: right;padding: 0 3px 0 0;margin-right: 3px;}.ace_static_highlight.ace_show_gutter .ace_line {padding-left: 2.6em;}.ace_static_highlight .ace_line { position: relative; }.ace_static_highlight .ace_gutter-cell {-moz-user-select: -moz-none;-khtml-user-select: none;-webkit-user-select: none;user-select: none;top: 0;bottom: 0;left: 0;position: absolute;}.ace_static_highlight .ace_gutter-cell:before {content: counter(ace_line, decimal);counter-increment: ace_line;}.ace_static_highlight {counter-reset: ace_line;}",o=e("../config"),u=e("../lib/dom"),a=function(){this.config={}};a.prototype=i.prototype;var f=function(e,t,n){var r=e.className.match(/lang-(\w+)/),i=t.mode||r&&"ace/mode/"+r[1];if(!i)return!1;var s=t.theme||"ace/theme/textmate",o="",a=[];if(e.firstElementChild){var l=0;for(var c=0;c<e.childNodes.length;c++){var h=e.childNodes[c];h.nodeType==3?(l+=h.data.length,o+=h.data):a.push(l,h)}}else o=e.textContent,t.trim&&(o=o.trim());f.render(o,i,s,t.firstLineNumber,!t.showGutter,function(t){u.importCssString(t.css,"ace_highlight"),e.innerHTML=t.html;var r=e.firstChild.firstChild;for(var i=0;i<a.length;i+=2){var s=t.session.doc.indexToPosition(a[i]),o=a[i+1],f=r.children[s.row];f&&f.appendChild(o)}n&&n()})};f.render=function(e,t,n,i,s,u){function h(){var r=f.renderSync(e,t,n,i,s);return u?u(r):r}var a=1,l=r.prototype.$modes;typeof n=="string"&&(a++,o.loadModule(["theme",n],function(e){n=e,--a||h()}));var c;return t&&typeof t=="object"&&!t.getTokenizer&&(c=t,t=c.path),typeof t=="string"&&(a++,o.loadModule(["mode",t],function(e){if(!l[t]||c)l[t]=new e.Mode(c);t=l[t],--a||h()})),--a||h()},f.renderSync=function(e,t,n,i,o){i=parseInt(i||1,10);var u=new r("");u.setUseWorker(!1),u.setMode(t);var f=new a;f.setSession(u),u.setValue(e);var l=[],c=u.getLength();for(var h=0;h<c;h++)l.push("<div class='ace_line'>"),o||l.push("<span class='ace_gutter ace_gutter-cell' unselectable='on'></span>"),f.$renderLine(l,h,!0,!1),l.push("\n</div>");var p="<div class='"+n.cssClass+"'>"+"<div class='ace_static_highlight"+(o?"":" ace_show_gutter")+"' style='counter-reset:ace_line "+(i-1)+"'>"+l.join("")+"</div>"+"</div>";return f.destroy(),{css:s+n.cssText,html:p,session:u}},n.exports=f,n.exports.highlight=f});
(function() {
window.require(["ace/ext/static_highlight"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();
define("ace/ext/static_highlight",["require","exports","module","ace/edit_session","ace/layer/text","ace/config","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../edit_session").EditSession,i=e("../layer/text").Text,s=".ace_static_highlight {font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', 'Droid Sans Mono', monospace;font-size: 12px;white-space: pre-wrap}.ace_static_highlight .ace_gutter {width: 2em;text-align: right;padding: 0 3px 0 0;margin-right: 3px;}.ace_static_highlight.ace_show_gutter .ace_line {padding-left: 2.6em;}.ace_static_highlight .ace_line { position: relative; }.ace_static_highlight .ace_gutter-cell {-moz-user-select: -moz-none;-khtml-user-select: none;-webkit-user-select: none;user-select: none;top: 0;bottom: 0;left: 0;position: absolute;}.ace_static_highlight .ace_gutter-cell:before {content: counter(ace_line, decimal);counter-increment: ace_line;}.ace_static_highlight {counter-reset: ace_line;}",o=e("../config"),u=e("../lib/dom"),a=function(){this.config={}};a.prototype=i.prototype;var f=function(e,t,n){var r=e.className.match(/lang-(\w+)/),i=t.mode||r&&"ace/mode/"+r[1];if(!i)return!1;var s=t.theme||"ace/theme/textmate",o="",a=[];if(e.firstElementChild){var l=0;for(var c=0;c<e.childNodes.length;c++){var h=e.childNodes[c];h.nodeType==3?(l+=h.data.length,o+=h.data):a.push(l,h)}}else o=e.textContent,t.trim&&(o=o.trim());f.render(o,i,s,t.firstLineNumber,!t.showGutter,function(t){u.importCssString(t.css,"ace_highlight"),e.innerHTML=t.html;var r=e.firstChild.firstChild;for(var i=0;i<a.length;i+=2){var s=t.session.doc.indexToPosition(a[i]),o=a[i+1],f=r.children[s.row];f&&f.appendChild(o)}n&&n()})};f.render=function(e,t,n,i,s,u){function h(){var r=f.renderSync(e,t,n,i,s);return u?u(r):r}var a=1,l=r.prototype.$modes;typeof n=="string"&&(a++,o.loadModule(["theme",n],function(e){n=e,--a||h()}));var c;return t&&typeof t=="object"&&!t.getTokenizer&&(c=t,t=c.path),typeof t=="string"&&(a++,o.loadModule(["mode",t],function(e){if(!l[t]||c)l[t]=new e.Mode(c);t=l[t],--a||h()})),--a||h()},f.renderSync=function(e,t,n,i,o){i=parseInt(i||1,10);var u=new r("");u.setUseWorker(!1),u.setMode(t);var f=new a;f.setSession(u),u.setValue(e);var l=[],c=u.getLength();for(var h=0;h<c;h++)l.push("<div class='ace_line'>"),o||l.push("<span class='ace_gutter ace_gutter-cell' unselectable='on'></span>"),f.$renderLine(l,h,!0,!1),l.push("\n</div>");var p="<div class='"+n.cssClass+"'>"+"<div class='ace_static_highlight"+(o?"":" ace_show_gutter")+"' style='counter-reset:ace_line "+(i-1)+"'>"+l.join("")+"</div>"+"</div>";return f.destroy(),{css:s+n.cssText,html:p,session:u}},n.exports=f,n.exports.highlight=f});
(function() {
window.require(["ace/ext/static_highlight"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();

View File

@ -1,9 +1,9 @@
define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("ace/lib/dom"),i=e("ace/lib/lang"),s=function(e,t){this.element=r.createElement("div"),this.element.className="ace_status-indicator",this.element.style.cssText="display: inline-block;",t.appendChild(this.element);var n=i.delayedCall(function(){this.updateStatus(e)}.bind(this)).schedule.bind(null,100);e.on("changeStatus",n),e.on("changeSelection",n),e.on("keyboardActivity",n)};(function(){this.updateStatus=function(e){function n(e,n){e&&t.push(e,n||"|")}var t=[];n(e.keyBinding.getStatusText(e)),e.commands.recording&&n("REC");var r=e.selection,i=r.lead;if(!r.isEmpty()){var s=e.getSelectionRange();n("("+(s.end.row-s.start.row)+":"+(s.end.column-s.start.column)+")"," ")}n(i.row+":"+i.column," "),r.rangeCount&&n("["+r.rangeCount+"]"," "),t.pop(),this.element.textContent=t.join("")}}).call(s.prototype),t.StatusBar=s});
(function() {
window.require(["ace/ext/statusbar"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();
define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("ace/lib/dom"),i=e("ace/lib/lang"),s=function(e,t){this.element=r.createElement("div"),this.element.className="ace_status-indicator",this.element.style.cssText="display: inline-block;",t.appendChild(this.element);var n=i.delayedCall(function(){this.updateStatus(e)}.bind(this)).schedule.bind(null,100);e.on("changeStatus",n),e.on("changeSelection",n),e.on("keyboardActivity",n)};(function(){this.updateStatus=function(e){function n(e,n){e&&t.push(e,n||"|")}var t=[];n(e.keyBinding.getStatusText(e)),e.commands.recording&&n("REC");var r=e.selection,i=r.lead;if(!r.isEmpty()){var s=e.getSelectionRange();n("("+(s.end.row-s.start.row)+":"+(s.end.column-s.start.column)+")"," ")}n(i.row+":"+i.column," "),r.rangeCount&&n("["+r.rangeCount+"]"," "),t.pop(),this.element.textContent=t.join("")}}).call(s.prototype),t.StatusBar=s});
(function() {
window.require(["ace/ext/statusbar"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,9 @@
define("ace/ext/themelist",["require","exports","module","ace/lib/fixoldbrowsers"],function(e,t,n){"use strict";e("ace/lib/fixoldbrowsers");var r=[["Chrome"],["Clouds"],["Crimson Editor"],["Dawn"],["Dreamweaver"],["Eclipse"],["GitHub"],["IPlastic"],["Solarized Light"],["TextMate"],["Tomorrow"],["XCode"],["Kuroir"],["KatzenMilch"],["SQL Server","sqlserver","light"],["Ambiance","ambiance","dark"],["Chaos","chaos","dark"],["Clouds Midnight","clouds_midnight","dark"],["Dracula","","dark"],["Cobalt","cobalt","dark"],["Gruvbox","gruvbox","dark"],["Green on Black","gob","dark"],["idle Fingers","idle_fingers","dark"],["krTheme","kr_theme","dark"],["Merbivore","merbivore","dark"],["Merbivore Soft","merbivore_soft","dark"],["Mono Industrial","mono_industrial","dark"],["Monokai","monokai","dark"],["Pastel on dark","pastel_on_dark","dark"],["Solarized Dark","solarized_dark","dark"],["Terminal","terminal","dark"],["Tomorrow Night","tomorrow_night","dark"],["Tomorrow Night Blue","tomorrow_night_blue","dark"],["Tomorrow Night Bright","tomorrow_night_bright","dark"],["Tomorrow Night 80s","tomorrow_night_eighties","dark"],["Twilight","twilight","dark"],["Vibrant Ink","vibrant_ink","dark"]];t.themesByName={},t.themes=r.map(function(e){var n=e[1]||e[0].replace(/ /g,"_").toLowerCase(),r={caption:e[0],theme:"ace/theme/"+n,isDark:e[2]=="dark",name:n};return t.themesByName[n]=r,r})});
(function() {
window.require(["ace/ext/themelist"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();
define("ace/ext/themelist",["require","exports","module","ace/lib/fixoldbrowsers"],function(e,t,n){"use strict";e("ace/lib/fixoldbrowsers");var r=[["Chrome"],["Clouds"],["Crimson Editor"],["Dawn"],["Dreamweaver"],["Eclipse"],["GitHub"],["IPlastic"],["Solarized Light"],["TextMate"],["Tomorrow"],["XCode"],["Kuroir"],["KatzenMilch"],["SQL Server","sqlserver","light"],["Ambiance","ambiance","dark"],["Chaos","chaos","dark"],["Clouds Midnight","clouds_midnight","dark"],["Dracula","","dark"],["Cobalt","cobalt","dark"],["Gruvbox","gruvbox","dark"],["Green on Black","gob","dark"],["idle Fingers","idle_fingers","dark"],["krTheme","kr_theme","dark"],["Merbivore","merbivore","dark"],["Merbivore Soft","merbivore_soft","dark"],["Mono Industrial","mono_industrial","dark"],["Monokai","monokai","dark"],["Pastel on dark","pastel_on_dark","dark"],["Solarized Dark","solarized_dark","dark"],["Terminal","terminal","dark"],["Tomorrow Night","tomorrow_night","dark"],["Tomorrow Night Blue","tomorrow_night_blue","dark"],["Tomorrow Night Bright","tomorrow_night_bright","dark"],["Tomorrow Night 80s","tomorrow_night_eighties","dark"],["Twilight","twilight","dark"],["Vibrant Ink","vibrant_ink","dark"]];t.themesByName={},t.themes=r.map(function(e){var n=e[1]||e[0].replace(/ /g,"_").toLowerCase(),r={caption:e[0],theme:"ace/theme/"+n,isDark:e[2]=="dark",name:n};return t.themesByName[n]=r,r})});
(function() {
window.require(["ace/ext/themelist"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();

View File

@ -1,9 +1,9 @@
define("ace/ext/whitespace",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang");t.$detectIndentation=function(e,t){function c(e){var t=0;for(var r=e;r<n.length;r+=e)t+=n[r]||0;return t}var n=[],r=[],i=0,s=0,o=Math.min(e.length,1e3);for(var u=0;u<o;u++){var a=e[u];if(!/^\s*[^*+\-\s]/.test(a))continue;if(a[0]==" ")i++,s=-Number.MAX_VALUE;else{var f=a.match(/^ */)[0].length;if(f&&a[f]!=" "){var l=f-s;l>0&&!(s%l)&&!(f%l)&&(r[l]=(r[l]||0)+1),n[f]=(n[f]||0)+1}s=f}while(u<o&&a[a.length-1]=="\\")a=e[u++]}var h=r.reduce(function(e,t){return e+t},0),p={score:0,length:0},d=0;for(var u=1;u<12;u++){var v=c(u);u==1?(d=v,v=n[1]?.9:.8,n.length||(v=0)):v/=d,r[u]&&(v+=r[u]/h),v>p.score&&(p={score:v,length:u})}if(p.score&&p.score>1.4)var m=p.length;if(i>d+1){if(m==1||d<i/4||p.score<1.8)m=undefined;return{ch:" ",length:m}}if(d>i+1)return{ch:" ",length:m}},t.detectIndentation=function(e){var n=e.getLines(0,1e3),r=t.$detectIndentation(n)||{};return r.ch&&e.setUseSoftTabs(r.ch==" "),r.length&&e.setTabSize(r.length),r},t.trimTrailingSpace=function(e,t){var n=e.getDocument(),r=n.getAllLines(),i=t&&t.trimEmpty?-1:0,s=[],o=-1;t&&t.keepCursorPosition&&(e.selection.rangeCount?e.selection.rangeList.ranges.forEach(function(e,t,n){var r=n[t+1];if(r&&r.cursor.row==e.cursor.row)return;s.push(e.cursor)}):s.push(e.selection.getCursor()),o=0);var u=s[o]&&s[o].row;for(var a=0,f=r.length;a<f;a++){var l=r[a],c=l.search(/\s+$/);a==u&&(c<s[o].column&&c>i&&(c=s[o].column),o++,u=s[o]?s[o].row:-1),c>i&&n.removeInLine(a,c,l.length)}},t.convertIndentation=function(e,t,n){var i=e.getTabString()[0],s=e.getTabSize();n||(n=s),t||(t=i);var o=t==" "?t:r.stringRepeat(t,n),u=e.doc,a=u.getAllLines(),f={},l={};for(var c=0,h=a.length;c<h;c++){var p=a[c],d=p.match(/^\s*/)[0];if(d){var v=e.$getStringScreenWidth(d)[0],m=Math.floor(v/s),g=v%s,y=f[m]||(f[m]=r.stringRepeat(o,m));y+=l[g]||(l[g]=r.stringRepeat(" ",g)),y!=d&&(u.removeInLine(c,0,d.length),u.insertInLine({row:c,column:0},y))}}e.setTabSize(n),e.setUseSoftTabs(t==" ")},t.$parseStringArg=function(e){var t={};/t/.test(e)?t.ch=" ":/s/.test(e)&&(t.ch=" ");var n=e.match(/\d+/);return n&&(t.length=parseInt(n[0],10)),t},t.$parseArg=function(e){return e?typeof e=="string"?t.$parseStringArg(e):typeof e.text=="string"?t.$parseStringArg(e.text):e:{}},t.commands=[{name:"detectIndentation",exec:function(e){t.detectIndentation(e.session)}},{name:"trimTrailingSpace",exec:function(e){t.trimTrailingSpace(e.session)}},{name:"convertIndentation",exec:function(e,n){var r=t.$parseArg(n);t.convertIndentation(e.session,r.ch,r.length)}},{name:"setIndentation",exec:function(e,n){var r=t.$parseArg(n);r.length&&e.session.setTabSize(r.length),r.ch&&e.session.setUseSoftTabs(r.ch==" ")}}]});
(function() {
window.require(["ace/ext/whitespace"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();
define("ace/ext/whitespace",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang");t.$detectIndentation=function(e,t){function c(e){var t=0;for(var r=e;r<n.length;r+=e)t+=n[r]||0;return t}var n=[],r=[],i=0,s=0,o=Math.min(e.length,1e3);for(var u=0;u<o;u++){var a=e[u];if(!/^\s*[^*+\-\s]/.test(a))continue;if(a[0]==" ")i++,s=-Number.MAX_VALUE;else{var f=a.match(/^ */)[0].length;if(f&&a[f]!=" "){var l=f-s;l>0&&!(s%l)&&!(f%l)&&(r[l]=(r[l]||0)+1),n[f]=(n[f]||0)+1}s=f}while(u<o&&a[a.length-1]=="\\")a=e[u++]}var h=r.reduce(function(e,t){return e+t},0),p={score:0,length:0},d=0;for(var u=1;u<12;u++){var v=c(u);u==1?(d=v,v=n[1]?.9:.8,n.length||(v=0)):v/=d,r[u]&&(v+=r[u]/h),v>p.score&&(p={score:v,length:u})}if(p.score&&p.score>1.4)var m=p.length;if(i>d+1){if(m==1||d<i/4||p.score<1.8)m=undefined;return{ch:" ",length:m}}if(d>i+1)return{ch:" ",length:m}},t.detectIndentation=function(e){var n=e.getLines(0,1e3),r=t.$detectIndentation(n)||{};return r.ch&&e.setUseSoftTabs(r.ch==" "),r.length&&e.setTabSize(r.length),r},t.trimTrailingSpace=function(e,t){var n=e.getDocument(),r=n.getAllLines(),i=t&&t.trimEmpty?-1:0,s=[],o=-1;t&&t.keepCursorPosition&&(e.selection.rangeCount?e.selection.rangeList.ranges.forEach(function(e,t,n){var r=n[t+1];if(r&&r.cursor.row==e.cursor.row)return;s.push(e.cursor)}):s.push(e.selection.getCursor()),o=0);var u=s[o]&&s[o].row;for(var a=0,f=r.length;a<f;a++){var l=r[a],c=l.search(/\s+$/);a==u&&(c<s[o].column&&c>i&&(c=s[o].column),o++,u=s[o]?s[o].row:-1),c>i&&n.removeInLine(a,c,l.length)}},t.convertIndentation=function(e,t,n){var i=e.getTabString()[0],s=e.getTabSize();n||(n=s),t||(t=i);var o=t==" "?t:r.stringRepeat(t,n),u=e.doc,a=u.getAllLines(),f={},l={};for(var c=0,h=a.length;c<h;c++){var p=a[c],d=p.match(/^\s*/)[0];if(d){var v=e.$getStringScreenWidth(d)[0],m=Math.floor(v/s),g=v%s,y=f[m]||(f[m]=r.stringRepeat(o,m));y+=l[g]||(l[g]=r.stringRepeat(" ",g)),y!=d&&(u.removeInLine(c,0,d.length),u.insertInLine({row:c,column:0},y))}}e.setTabSize(n),e.setUseSoftTabs(t==" ")},t.$parseStringArg=function(e){var t={};/t/.test(e)?t.ch=" ":/s/.test(e)&&(t.ch=" ");var n=e.match(/\d+/);return n&&(t.length=parseInt(n[0],10)),t},t.$parseArg=function(e){return e?typeof e=="string"?t.$parseStringArg(e):typeof e.text=="string"?t.$parseStringArg(e.text):e:{}},t.commands=[{name:"detectIndentation",exec:function(e){t.detectIndentation(e.session)}},{name:"trimTrailingSpace",exec:function(e){t.trimTrailingSpace(e.session)}},{name:"convertIndentation",exec:function(e,n){var r=t.$parseArg(n);t.convertIndentation(e.session,r.ch,r.length)}},{name:"setIndentation",exec:function(e,n){var r=t.$parseArg(n);r.length&&e.session.setTabSize(r.length),r.ch&&e.session.setUseSoftTabs(r.ch==" ")}}]});
(function() {
window.require(["ace/ext/whitespace"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,9 @@
define("ace/mode/abc_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["zupfnoter.information.comment.line.percentage","information.keyword","in formation.keyword.embedded"],regex:"(%%%%)(hn\\.[a-z]*)(.*)",comment:"Instruction Comment"},{token:["information.comment.line.percentage","information.keyword.embedded"],regex:"(%%)(.*)",comment:"Instruction Comment"},{token:"comment.line.percentage",regex:"%.*",comment:"Comments"},{token:"barline.keyword.operator",regex:"[\\[:]*[|:][|\\]:]*(?:\\[?[0-9]+)?|\\[[0-9]+",comment:"Bar lines"},{token:["information.keyword.embedded","information.argument.string.unquoted"],regex:"(\\[[A-Za-z]:)([^\\]]*\\])",comment:"embedded Header lines"},{token:["information.keyword","information.argument.string.unquoted"],regex:"^([A-Za-z]:)([^%\\\\]*)",comment:"Header lines"},{token:["text","entity.name.function","string.unquoted","text"],regex:"(\\[)([A-Z]:)(.*?)(\\])",comment:"Inline fields"},{token:["accent.constant.language","pitch.constant.numeric","duration.constant.numeric"],regex:"([\\^=_]*)([A-Ga-gz][,']*)([0-9]*/*[><0-9]*)",comment:"Notes"},{token:"zupfnoter.jumptarget.string.quoted",regex:'[\\"!]\\^\\:.*?[\\"!]',comment:"Zupfnoter jumptarget"},{token:"zupfnoter.goto.string.quoted",regex:'[\\"!]\\^\\@.*?[\\"!]',comment:"Zupfnoter goto"},{token:"zupfnoter.annotation.string.quoted",regex:'[\\"!]\\^\\!.*?[\\"!]',comment:"Zupfnoter annoation"},{token:"zupfnoter.annotationref.string.quoted",regex:'[\\"!]\\^\\#.*?[\\"!]',comment:"Zupfnoter annotation reference"},{token:"chordname.string.quoted",regex:'[\\"!]\\^.*?[\\"!]',comment:"abc chord"},{token:"string.quoted",regex:'[\\"!].*?[\\"!]',comment:"abc annotation"}]},this.normalizeRules()};s.metaData={fileTypes:["abc"],name:"ABC",scopeName:"text.abcnotation"},r.inherits(s,i),t.ABCHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/abc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/abc_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./abc_highlight_rules").ABCHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.$id="ace/mode/abc"}.call(u.prototype),t.Mode=u});
(function() {
window.require(["ace/mode/abc"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();
define("ace/mode/abc_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["zupfnoter.information.comment.line.percentage","information.keyword","in formation.keyword.embedded"],regex:"(%%%%)(hn\\.[a-z]*)(.*)",comment:"Instruction Comment"},{token:["information.comment.line.percentage","information.keyword.embedded"],regex:"(%%)(.*)",comment:"Instruction Comment"},{token:"comment.line.percentage",regex:"%.*",comment:"Comments"},{token:"barline.keyword.operator",regex:"[\\[:]*[|:][|\\]:]*(?:\\[?[0-9]+)?|\\[[0-9]+",comment:"Bar lines"},{token:["information.keyword.embedded","information.argument.string.unquoted"],regex:"(\\[[A-Za-z]:)([^\\]]*\\])",comment:"embedded Header lines"},{token:["information.keyword","information.argument.string.unquoted"],regex:"^([A-Za-z]:)([^%\\\\]*)",comment:"Header lines"},{token:["text","entity.name.function","string.unquoted","text"],regex:"(\\[)([A-Z]:)(.*?)(\\])",comment:"Inline fields"},{token:["accent.constant.language","pitch.constant.numeric","duration.constant.numeric"],regex:"([\\^=_]*)([A-Ga-gz][,']*)([0-9]*/*[><0-9]*)",comment:"Notes"},{token:"zupfnoter.jumptarget.string.quoted",regex:'[\\"!]\\^\\:.*?[\\"!]',comment:"Zupfnoter jumptarget"},{token:"zupfnoter.goto.string.quoted",regex:'[\\"!]\\^\\@.*?[\\"!]',comment:"Zupfnoter goto"},{token:"zupfnoter.annotation.string.quoted",regex:'[\\"!]\\^\\!.*?[\\"!]',comment:"Zupfnoter annoation"},{token:"zupfnoter.annotationref.string.quoted",regex:'[\\"!]\\^\\#.*?[\\"!]',comment:"Zupfnoter annotation reference"},{token:"chordname.string.quoted",regex:'[\\"!]\\^.*?[\\"!]',comment:"abc chord"},{token:"string.quoted",regex:'[\\"!].*?[\\"!]',comment:"abc annotation"}]},this.normalizeRules()};s.metaData={fileTypes:["abc"],name:"ABC",scopeName:"text.abcnotation"},r.inherits(s,i),t.ABCHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/abc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/abc_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./abc_highlight_rules").ABCHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.$id="ace/mode/abc"}.call(u.prototype),t.Mode=u});
(function() {
window.require(["ace/mode/abc"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More