同步代码编写完毕

This commit is contained in:
zer0Black
2023-05-09 14:29:21 +08:00
parent a06a6e93f1
commit 960ea0603e
523 changed files with 206 additions and 113883 deletions
@@ -75,4 +75,6 @@ spring.activiti.database-schema-update=true
# ????????:true-???????false-??
spring.activiti.check-process-definitions=false
iam.url=https://iamuat.faw-vw.com/
iam.appkey=1
iam.appSecret=1
@@ -1,140 +0,0 @@
#Development System
#spring.datasource.driverClassName = oracle.jdbc.OracleDriver
#spring.datasource.url = jdbc:oracle:thin:@//60.247.58.117:50011/ADC
##spring.datasource.username = ADC_PLATFORM
##spring.datasource.password = ADC_PLATFORM
#spring.datasource.url = jdbc:oracle:thin:@//192.168.144.136:19290/ADC
#spring.datasource.username = EPR
#spring.datasource.password = EPR
#spring.datasource.url = jdbc:oracle:thin:@//192.168.144.103:19290/ADC
#spring.datasource.username = EPR_TEST
#spring.datasource.password = EPR_TEST
#spring.datasource.driverClassName = com.mysql.jdbc.Driver
#spring.datasource.url = jdbc:mysql://192.168.144.124:3306/cadata2?characterEncoding=utf-8&&zeroDateTimeBehavior=convertToNull
#spring.datasource.username = adc_forecast
#spring.datasource.password = adc_forecast
#kylin\u6570\u636E\u5E93 ds1
#spring.datasource.kylin.name=PROJECT_MI
#spring.datasource.kylin.driverClassName=org.apache.kylin.jdbc.Driver
#spring.datasource.kylin.url=jdbc:kylin://10.64.23.8:7070/PROJECT_MI
#spring.datasource.kylin.username=64459
#spring.datasource.kylin.password=ichangan_ps9
##10s
#spring.datasource.kylin.maxWaitTime=10000
#spring.datasource.kylin.poolSize=10
#
##mysql\u6570\u636E\u5E93 ds2
#spring.datasource.mysql.driverClassName = com.mysql.jdbc.Driver
#spring.datasource.mysql.url = jdbc:mysql://192.168.144.80:3306/cadata?characterEncoding=utf-8&&zeroDateTimeBehavior=convertToNull
#spring.datasource.mysql.username = root
#spring.datasource.mysql.password = root
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://121.36.69.172:3307/report-library?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
spring.datasource.username = root
spring.datasource.password = hzwlsoft.com
#\u540E\u7AEF\u7AEF\u53E3
server.port=7060
#\u9A8C\u8BC1\u7801\u540E\u53F0\u6A21\u5F0F\uFF0C\u9ED8\u8BA4\u4E3A1\uFF1A1\u4E3A\u4E0D\u5F00\u542F\uFF0C2\u4E3A\u5F00\u542F\uFF0C3\u4E3A\u8F93\u9519 \u7528\u6237\u540D\u6216\u5BC6\u7801 ${maxLoginErrorCount} \u6B21 \u624D\u5F00\u542F
verifyCodeMode=3
#\u4EC5\u5F53\u9A8C\u8BC1\u7801\u6A21\u5F0F ${verifyCodeMode} \u4E3A 3\u65F6\u751F\u6548\uFF0C\u8BBE\u7F6E\u9519\u8BEF\u767B\u5F55\u51FA\u73B0\u9A8C\u8BC1\u7801\u7684\u9608\u503C\uFF0C\u9ED8\u8BA4\u4E3A3
maxLoginErrorCount=3
#\u5BC6\u7801Base64\u52A0\u5BC6\u5F00\u5173,true\u4E3A\u5F00\u542F,false\u4E3A\u5173\u95ED
isPassEncrypted=true
#{
#"password": "YWJjMTIz",
#"username": "YWRtaW4x"
#}
#swagger \u663E\u793Aapi\uFF0C1\u4E3A\u53EA\u663E\u793A${restPath:/api}\u524D\u7F00\u7684api,0\u4E3A\u663E\u793A\u6240\u6709api\uFF0C\u5176\u4ED6\u4E3A\u4E0D\u663E\u793Aapi
swaggerLevel=0
#uploadFile=/EPR/file/EPR/test/
#
#picPath=/EPR/file/home/pic/
# \u672C\u5730\u6587\u4EF6\u5B58\u50A8\u8DEF\u5F84\u65B9\u5F0F jar\u5305\u8DEF\u5F84\uFF1Ajar \u5DE5\u4F5C\u76EE\u5F55\uFF1Auserdir \u56FA\u5B9A\u76EE\u5F55\uFF1Asettled
localSaveFileType=settled
#localSaveFileType=userdir
# \u672C\u5730\u5B58\u50A8\u6587\u4EF6\u7684\u78C1\u76D8\u5730\u5740
#uploadFile=D:\\work\\idea\\changan\\
uploadFile=/data/DeploymentPackage/report_library/uploadfile
# \u672C\u5730\u6587\u4EF6\u8BBF\u95EE\u7684url\u5730\u5740
picPath=/api/home/pic/
serverIp=http://127.0.0.1:7060/
#MAIL_SMTP =smtp.163.com
#MAIL_SMTP_PORT=465
#MAIL_USERNAME=cagds@catarc.ac.cn
#MAIL_PASSWORD=Cagds9760
MAIL_SMTP =smtp.163.com
MAIL_SMTP_PORT=465
MAIL_USERNAME=simashihao@163.com
MAIL_PASSWORD=VQBNNQBLDIALAYCV
#MAIL_SMTP =cmp.changan.com
#MAIL_SMTP_PORT=25
MAIL_POP_PORT=110
#MAIL_USERNAME=64459@Any3.com
#MAIL_PASSWORD=65316975Xiaoq
IPANDPORT=http://localhost:7061/
#redis
#Redis\u670D\u52A1\u5668\u5730\u5740
spring.redis.host=192.168.144.29
#spring.redis.host=localhost
## Redis\u670D\u52A1\u5668\u8FDE\u63A5\u7AEF\u53E3
spring.redis.port=6379
## Redis\u670D\u52A1\u5668\u8FDE\u63A5\u5BC6\u7801\uFF08\u9ED8\u8BA4\u4E3A\u7A7A\uFF09
spring.redis.password=123321
## \u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09
spring.redis.timeout=200000ms
## \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u9ED8\u8BA4\u503C\u662F8\u3002
spring.redis.jedis.pool.max-idle=50
##\u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u9ED8\u8BA4\u503C\u662F0\u3002
spring.redis.jedis.pool.min-idle=10
## \u5982\u679C\u8D4B\u503C\u4E3A-1\uFF0C\u5219\u8868\u793A\u4E0D\u9650\u5236\uFF1B\u5982\u679Cpool\u5DF2\u7ECF\u5206\u914D\u4E86maxActive\u4E2Ajedis\u5B9E\u4F8B\uFF0C\u5219\u6B64\u65F6pool\u7684\u72B6\u6001\u4E3Aexhausted(\u8017\u5C3D)\u3002
spring.redis.jedis.pool.max-active=2000
## \u7B49\u5F85\u53EF\u7528\u8FDE\u63A5\u7684\u6700\u5927\u65F6\u95F4\uFF0C\u5355\u4F4D\u6BEB\u79D2\uFF0C\u9ED8\u8BA4\u503C\u4E3A-1\uFF0C\u8868\u793A\u6C38\u4E0D\u8D85\u65F6\u3002\u5982\u679C\u8D85\u8FC7\u7B49\u5F85\u65F6\u95F4\uFF0C\u5219\u76F4\u63A5\u629B\u51FAJedisConnectionException
spring.redis.jedis.pool.max-wait=2000ms
spring.redis.database=6
# \u4E0A\u4F20\u65B9\u5F0F\uFF1A\u963F\u91CC\u4E91\uFF1Aalioss \u534E\u4E3A\u4E91\uFF1Ahwobs \u672C\u5730\uFF1Alocal
uploadType: hwobs
# ======= \u963F\u91CCOSS\u914D\u7F6E =========
aliyun.OSS.endpoint=https://oss-cn-hangzhou.aliyuncs.com
aliyun.OSS.accessKeyId= LTAI5tBmUfVF6Z8R6sHTdTG7
aliyun.OSS.accessKeySecret= mY6UvWv20Tg2R46ORe6uV5gL6TQloC
aliyun.OSS.bucketName=qqxexamplebucket
aliyun.OSS.fileMaxSize=10 #\u6587\u4EF6\u4E0A\u4F20\u6700\u5927M\u6570
# ======= \u534E\u4E3AOBS\u914D\u7F6E =========
huawei.OBS.endPoint=https://obs.cn-north-4.myhuaweicloud.com
huawei.OBS.accessKey=EEMAGYTHP9KKPF18TZCL
huawei.OBS.secretKey=3NmFNf1uX3EV1LbCEzgw6gDv0tZ6WAVwG37BGq1p
huawei.OBS.bucketName=gcpa
huawei.OBS.fileMaxSize=10 #\u6587\u4EF6\u4E0A\u4F20\u6700\u5927M\u6570
logging.level.com.adc: debug
# ==== IAM????
iam.url=https://iamuat.faw-vw.com/
iam.appkey=xxxx
iam.appSecret=xxx
@@ -1,78 +0,0 @@
spring.profiles.active=dev
# ===============================
# = DATA SOURCE
# ===============================
spring.datasource.type = com.alibaba.druid.pool.DruidDataSource
spring.datasource.initialSize = 500
spring.datasource.minIdle = 500
spring.datasource.maxActive = 500
spring.datasource.maxWait = 60000
spring.datasource.timeBetweenEvictionRunsMillis = 30000
spring.datasource.minEvictableIdleTimeMillis = 100000
spring.datasource.validationQuery= 'SELECT 1 FROM DUAL'
spring.datasource.testWhileIdle = true
spring.datasource.testOnBorrow = false
spring.datasource.testOnReturn = false
spring.datasource.poolPreparedStatements = true
spring.datasource.maxPoolPreparedStatementPerConnectionSize = 20
spring.datasource.filters = stat,wall,log4j
#spring.datasource.connectionProperties = 'druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000'
#useGlobalDataSourceStat: true
spring.datasource.mergeSql=true
spring.datasource.slowSqlMillis=1
spring.datasource.logSlowSql=true
# ===============================
#SpringBootActuator
endpoints.enabled=false
# http-only
server.servlet.session.cookie.http-only=true
# mybatis_config
mybatis-plus.config-locations=classpath:mybatis/mybatis-config.xml
mybatis-plus.mapper-locations=classpath*:mybatis/mapper/**/mysql/**/*.xml
logging.level.com.adc=debug
logging.level.org.hibernate=info
logging.level.org.springframework=info
adminPath=/library/a
restPath=/library/api
portalPath=/library/portalSystem
isPassEncrypted=true
useRSALogin=true
RAS_PRI_KEY=MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAq1I/fLYOTKgNCwUavqyfixosEXByKMQ9axZDUefPywi+ftXdPI2tJ6x/7uc+CdST0a3/toqxdSRjrsHMwnnGQQIDAQABAkB5ZPBDiCUdwD5tvpIy5dKvGD59pPXfWR5EESRmlyGwNTlJ/fIV1wL7UsRYoFslAEcHLyKY7kX8wIefqw2k9R8hAiEA6mH2xls2BZ6nftz6aA8V6CSrsZ49qO9l6SPirXrxg0UCIQC7H1WXLHEV65PUaMTNvzuLc43xkac9DZX4FpUXDeuIzQIgXghhjiEH4mdNgas8V0U+H72emIsI597r/wYjqj/55xUCIDATfuQWUP+2xQZ/3ICYL25GxCNarsMq6GsTMj74HpnJAiAb6BqTkVklIMsl2lAZbE49fluSm3YLt4eNnVVdzJkpFg==
file.path=/Users/sxh/uploadFiles
spring.servlet.multipart.max-request-size=100MB
spring.servlet.multipart.max-file-size=100MB
sysLogType=dev
#rabbitMQ
spring.rabbitmq.host=192.168.1.219
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.publisher-confirms=true
#redis
spring.redis.host=221.239.111.146
spring.redis.port=15777
spring.redis.password=cvdecs
core.pool.size=10
max.pool.size=30
keep.alive.seconds=60
queue.capacity=8
mybatis-plus.configuration.map-underscore-to-camel-case=true
spring.activiti.database-schema-update=true
# ????????:true-???????false-??
spring.activiti.check-process-definitions=false
-9
View File
@@ -1,9 +0,0 @@
${AnsiColor.RED} _ _
__ _ __| | ___ __| | __ _
/ _` |/ _` |/ __|____ / _` |/ _` |
| (_| | (_| | (_|_____| (_| | (_| |
\__,_|\__,_|\___| \__,_|\__,_|
${AnsiColor.YELLOW}------------------------------------------------
${AnsiColor.YELLOW} :: ${AnsiColor.YELLOW}@数据资源中心
${AnsiColor.YELLOW}------------------------------------------------${AnsiColor.WHITE}
@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<ehcache updateCheck="false" name="hibernateCache">
<diskStore path="java.io.tmpdir/jeesite/ehcache/hibernate" />
<!-- DefaultCache setting. -->
<defaultCache maxEntriesLocalHeap="100" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600"
overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="com.thinkgem.jeesite.modules.sys.entity.Dict" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="com.thinkgem.jeesite.modules.sys.entity.Area" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="com.thinkgem.jeesite.modules.sys.entity.Area.childList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="com.thinkgem.jeesite.modules.sys.entity.Area.officeList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="com.thinkgem.jeesite.modules.sys.entity.Office" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="com.thinkgem.jeesite.modules.sys.entity.Office.childList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="com.thinkgem.jeesite.modules.sys.entity.Office.userList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="com.thinkgem.jeesite.modules.sys.entity.Menu" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="com.thinkgem.jeesite.modules.sys.entity.Menu.childList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="com.thinkgem.jeesite.modules.sys.entity.Menu.roleList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="com.thinkgem.jeesite.modules.sys.entity.Role" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="com.thinkgem.jeesite.modules.sys.entity.Role.menuList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="com.thinkgem.jeesite.modules.sys.entity.Role.userList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="com.thinkgem.jeesite.modules.sys.entity.User" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="com.thinkgem.jeesite.modules.sys.entity.User.roleList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000" />
</ehcache>
@@ -1,75 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<ehcache updateCheck="false" name="hibernateCache">
<!--
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual, socketTimeoutMillis=2000, rmiUrls=//localhost:40001/hibernateCache" />
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=localhost, port=40000, socketTimeoutMillis=2000"/>-->
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=automatic,multicastGroupAddress=230.0.0.1, multicastGroupPort=4446" />
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" />
<diskStore path="java.io.tmpdir/jeesite/ehcache/hibernate" />
<!-- DefaultCache setting. -->
<defaultCache maxEntriesLocalHeap="100" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600"
overflowToDisk="true" maxEntriesLocalDisk="100000" >
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="replicatePuts=false,replicateUpdatesViaCopy=false" />
</defaultCache>
<!-- Special objects setting. -->
<cache name="com.thinkgem.jeesite.modules.sys.entity.Dict" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="com.thinkgem.jeesite.modules.sys.entity.Area" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="com.thinkgem.jeesite.modules.sys.entity.Area.childList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="com.thinkgem.jeesite.modules.sys.entity.Area.officeList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="com.thinkgem.jeesite.modules.sys.entity.Office" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="com.thinkgem.jeesite.modules.sys.entity.Office.childList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="com.thinkgem.jeesite.modules.sys.entity.Office.userList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="com.thinkgem.jeesite.modules.sys.entity.Menu" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="com.thinkgem.jeesite.modules.sys.entity.Menu.childList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="com.thinkgem.jeesite.modules.sys.entity.Menu.roleList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="com.thinkgem.jeesite.modules.sys.entity.Role" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="com.thinkgem.jeesite.modules.sys.entity.Role.menuList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="com.thinkgem.jeesite.modules.sys.entity.Role.userList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="com.thinkgem.jeesite.modules.sys.entity.User" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
<cache name="com.thinkgem.jeesite.modules.sys.entity.User.roleList" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true" maxEntriesLocalDisk="100000">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
</cache>
</ehcache>
-27
View File
@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<ehcache updateCheck="false" name="defaultCache">
<diskStore path="java.io.tmpdir/jeesite/ehcache/default" />
<!-- DefaultCache setting. -->
<defaultCache maxEntriesLocalHeap="100" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600"
overflowToDisk="true" maxEntriesLocalDisk="100000" />
<cache name="sysCache" maxElementsInMemory="100" eternal="true" overflowToDisk="true"/>
<cache name="errorCache" maxElementsInMemory="100" timeToIdleSeconds="180" timeToLiveSeconds="300" eternal="false" overflowToDisk="true"/>
<cache name="cmsCache" maxElementsInMemory="100" eternal="true" overflowToDisk="true"/>
<cache name="shiro-activeSessionCache" maxElementsInMemory="100" overflowToDisk="true"
eternal="true" timeToLiveSeconds="0" timeToIdleSeconds="0"
diskPersistent="true" diskExpiryThreadIntervalSeconds="600"/>
<cache name="org.apache.shiro.realm.text.PropertiesRealm-0-accounts"
maxElementsInMemory="100" eternal="true" overflowToDisk="true"/>
<cache name="SimplePageCachingFilter" maxElementsInMemory="100" eternal="false" overflowToDisk="true"
timeToIdleSeconds="120" timeToLiveSeconds="120" memoryStoreEvictionPolicy="LFU"/>
</ehcache>
-54
View File
@@ -1,54 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<ehcache updateCheck="false" name="defaultCache">
<!--
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual, socketTimeoutMillis=2000, rmiUrls=//localhost:40001/mainCache" />
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=localhost, port=40000, socketTimeoutMillis=2000"/> -->
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=automatic,multicastGroupAddress=230.0.0.1, multicastGroupPort=4446" />
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" />
<diskStore path="java.io.tmpdir/jeesite/ehcache/default" />
<!-- DefaultCache setting. -->
<defaultCache maxEntriesLocalHeap="100" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600"
overflowToDisk="true" maxEntriesLocalDisk="100000" >
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="replicatePuts=false,replicateUpdatesViaCopy=false"/>
</defaultCache>
<!-- Special objects setting. -->
<cache name="sysCache" maxElementsInMemory="100" eternal="true" overflowToDisk="true">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
</cache>
<cache name="cmsCache" maxElementsInMemory="100" eternal="true" overflowToDisk="true">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
</cache>
<cache name="shiro-activeSessionCache" maxElementsInMemory="100" overflowToDisk="true"
eternal="true" timeToLiveSeconds="0" timeToIdleSeconds="0"
diskPersistent="true" diskExpiryThreadIntervalSeconds="600">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,
replicateUpdatesViaCopy=false, replicateRemovals=true "/>
</cache>
<cache name="org.apache.shiro.realm.text.PropertiesRealm-0-accounts"
maxElementsInMemory="100" eternal="true" overflowToDisk="true">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,
replicateUpdatesViaCopy=false, replicateRemovals=true "/>
</cache>
<cache name="SimplePageCachingFilter" maxElementsInMemory="100" eternal="false" overflowToDisk="true"
timeToIdleSeconds="120" timeToLiveSeconds="120" memoryStoreEvictionPolicy="LFU">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,
replicateUpdatesViaCopy=false, replicateRemovals=true "/>
</cache>
</ehcache>
@@ -1,44 +0,0 @@
#define code path
source_root_package=src/main/java
resources_root_package=src/main/resources
test_root_package=src/test/java
webroot_package=src/app
#define project
core_project=/adc-da-configuration
#client_project=/data-cloud-report/ui
client_project=..
rest_project=/adc-da-configuration
#define base class package
base_class_package=com.adc.da.base
#bussi_package[User defined]
biz_package=com.adc.da
biz_app_package=admin
#ftl resource url
template_path=template
system_encoding=utf-8
#Search Param num [User defined]
table_id=id
search_filed_num=1
#table_prefix=TD_DC_VISUAL_,TD_DC_,dict_,UM_,TD_
table_prefix=TS_,TR_,T,dmk.
#PageType 1: mapper_xml, 2: dao, 3: service, 4: rest, 5: javascript, 6: html
page_gen_type=1,2,3,4
#Not Used
mapper_xml_only=false
backend_only=true
entity_open_type=dialog
entity_save_type=form
@@ -1,30 +0,0 @@
#mysql
#----------------------------- mysql ------------------------------------------
#diver_name=com.mysql.jdbc.Driver
#url=jdbc:mysql://localhost:3306/adc_platform?characterEncoding=utf-8&&zeroDateTimeBehavior=convertToNull
#username=root
#password=root
#database_name=adc_platform
#oracle
#----------------------------- oracle ------------------------------------------
#diver_name=oracle.jdbc.driver.OracleDriver
#url=jdbc:oracle:thin:@60.247.58.117:50011/ADC
#username=ADC_PLATFORM
#password=ADC_PLATFORM
#database_name=adc_platform
diver_name = com.mysql.jdbc.Driver
url = jdbc:mysql://192.168.144.80:3306/cadata?characterEncoding=utf-8&&zeroDateTimeBehavior=convertToNull
username = root
password = root
database_name=cadata
#ldap
#----------------------------- LDAP ------------------------------------------
ldap.connection.url=ldap://localhost:10389
ldap.connection.base=dc=wlt,dc=com
ldap.connection.username=uid=admin,ou=system
ldap.connection.password=12345678
ldap.schema.cn=um
@@ -1,177 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--*****************************property start*****************************-->
<!-- 设置变量。定义变量后,可以使“${}”来使用变量。 -->
<!-- 项目名称 -->
<property name="PROJECT_NAME" value="adc-da" />
<!-- 定义日志文件的存储地址,勿在 LogBack的配置中使用相对路径 -->
<property name="LOG_HOME" value="../logs" />
<!-- 定义系统日志文件的存储地址,勿在 LogBack的配置中使用相对路径 -->
<property name="LOG_HOME_SYSTEM" value="system" />
<!-- 定义Druid日志文件的存储地址,勿在 LogBack的配置中使用相对路径 -->
<property name="LOG_HOME_DRUID" value="druid" />
<!--*****************************property end*****************************-->
<!--*****************************appender start*****************************-->
<!-- 负责写日志的组件。有两个必要属性name和class。name指定appender名称,class指定appender的全限定名。 -->
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- 控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!-- 对日志进行格式化。 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 系统日志输出:记录所有日志 -->
<!-- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。 -->
<appender name="SYSTEM_ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 过滤器,打印指定级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的日志级别 -->
<level>INFO</level>
<!-- 满足指定级别的日志操作 -->
<onMatch>ACCEPT</onMatch>
<!-- 不满足指定级别的日志操作 -->
<onMismatch>ACCEPT</onMismatch>
</filter>
<!-- rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/${LOG_HOME_SYSTEM}/${PROJECT_NAME}.system_all.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>7</MaxHistory>
<!--日志文件最大的大小-->
<MaxFileSize>100MB</MaxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 系统错误日志输出 -->
<appender name="SYSTEM_ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 过滤器,只打印ERROR级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/${LOG_HOME_SYSTEM}/${PROJECT_NAME}.system_error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<!--日志文件最大的大小-->
<MaxFileSize>100MB</MaxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- Druid日志输出,用于记录执行INFO级别的慢SQL -->
<appender name="DRUID_SLOWSQL_INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- LevelFilter: 级别过滤器,根据日志级别进行过滤 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/${LOG_HOME_DRUID}/${PROJECT_NAME}.druid_info.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>15</MaxHistory>
<!--日志文件最大的大小-->
<MaxFileSize>50MB</MaxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- Druid打印的日志文件,用于记录执行WARN级别的SQL -->
<appender name="DRUID_SLOWSQL_WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/${LOG_HOME_DRUID}/${PROJECT_NAME}.druid_warn.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--*****************************appender end*****************************-->
<!--*****************************logger start*****************************-->
<!-- logger用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender> -->
<!-- <logger>仅有一个name属性,一个可选的level和一个可选的additivity属性。 -->
<!-- name:用来指定受此logger约束的某一个包或者具体的某一个类。 -->
<!-- level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特殊值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前logger将会继承上级的级别。 -->
<!-- additivity:是否向上级logger传递打印信息。默认是true。 -->
<logger name="com.alibaba.druid" level="INFO" additivity="true">
<appender-ref ref="DRUID_SLOWSQL_INFO_FILE"/>
</logger>
<logger name="com.alibaba.druid" level="warn">
<appender-ref ref="DRUID_SLOWSQL_WARN_FILE"/>
</logger>
<!--*****************************logger end*****************************-->
<!-- 开发环境下的日志配置 -->
<springProfile name="dev">
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="SYSTEM_ALL_FILE"/>
</root>
</springProfile>
<!-- 生产环境下的日志配置 -->
<springProfile name="prod">
<root level="INFO">
<appender-ref ref="SYSTEM_ALL_FILE"/>
<appender-ref ref="SYSTEM_ERROR_FILE"/>
</root>
</springProfile>
</configuration>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 全局参数 -->
<settings>
<setting name="callSettersOnNulls" value="true" />
</settings>
<!-- 配置别名用 -->
<typeAliases>
</typeAliases>
</configuration>
-297
View File
@@ -1,297 +0,0 @@
a#阿
ao#拗口/违拗/拗断/执拗/拗口/拗口风/拗口令/拗曲/拗性/拗折/警拗
ai#艾
bang#膀/磅/蚌
ba#扒
bai#叔伯/百/柏杨/㧳/梵呗/呗佛/呗音/呗唱/呗偈/呗声/呗赞/赞呗
bao#剥皮/薄/暴/堡/曝
bei#呗
beng#蚌埠
bi#复辟/臂/秘鲁/泌阳
bing#屏息/屏弃/屏气/屏除/屏声
bian#扁/便/便宜坊
bo#薄荷/单薄/伯/泊/波/柏/萝卜/孛
bu#卜/柨
can#参
cang#藏/欌
cen#参差
ceng#曾/噌
cha#差/刹那/宝刹/一刹/查/碴/喳喳/喀喳
chai#公差/差役/专差/官差/听差/美差/办差/差事/差使/肥差/当差/钦差/苦差/出差
chan#颤/单于/禅
chang#长/厂
chao#朝/嘲/焯
che#工尺/车
chen#称职/匀称/称心/相称/对称
cheng#称/乘/澄/噌吰/橙 秤/盛满/盛器/盛饭
chu#畜
chui#椎心
chuai#揣
chuan#传
chi#匙/尺/吃
chong#重庆/重重/虫
chou#臭/帱
chuang#经幢
chuo#绰
ci#参差/鳞差/伺候/龟兹
cuan#攒聚/攒动/攒集/攒宫/攒所
cuo#撮儿/撮要/撮合
da#大/嗒
dao#叨/帱载/帱察
dai#大夫
dan#单/弹/掸/澹
dang#铛
de#的/得
di#堤/底/怎的/有的/目的/标的/打的/的确/有的放/的卢/矢之的/言中的/语中的/的士/地/提防/快的/美的
diao#蓝调/调调/音调/论调/格调/调令/低调/笔调/基调/强调/声调/滥调/老调/色调/单调/腔调/跑调/曲调/步调/语调/主调/情调
ding#丁
du#读/都/度
dou#全都/句读
duo#舵/测度/忖度/揣度/猜度
dun#粮囤/盾/顿/沌/敦
e#阿谀/阿胶/阿弥/恶/擜
er#儿
fan#番
feng#冯
fei#婔
fo#佛
fu#仿佛/果脯/罘/莩
fou#否
fiao#覅
ga#咖喱/伽马/嘎/戛纳
gai#盖
gao#告
gang#扛鼎
ge#革/蛤蚧/文蛤/蛤蜊/咯
gei#给
geng#脖颈
gong#女红/共
gu#谷/中鹄/鼓
gui#龟/柜/硅/倭傀/傀异/傀然/傀垒/傀怪/傀卓/傀奇/傀伟/傀民/傀俄/琦傀/奇傀
gua#呱
guan#纶巾/东莞
guang#广
ha#蛤/哈/虾蟆
hai#还/嗨/咳声/咳笑
hao#貉子/貉绒
hang#夯/总行/分行/支行/行业/排行/行情/央行/商行/外行/银行/中行/交行/招行/农行/工行/建行/商行/酒行/麻行/琴行/行业/同行/行列/行货/行会/行家/巷道/引吭/扼吭/批吭/搤吭/高吭/喉吭/咔吭/絶吭/吭嗌/吭咽/吭首
he#和/合/核/鶴/猲
heng#道行/涥
hu#鹄/水浒/嗀/唬
hua#滑/呚/椛
huan#归还/放还/奉还/圜
hui#会/浍河/媈/灳/哕/瑗珲
hong#红/虹
huo#软和/热和/暖和
hun#尡/珲
ji#病革/给养/自给/给水/薪给/给予/供给/稽/缉/藉/奇数/亟/诘屈/荠菜/愱
jia#雪茄/伽/家/价/贾/戛
jian#见/浅浅
jiang#降
jiao#嚼舌/嚼字/嚼蜡/角/剿/饺/脚/蕉/矫/睡觉/侥/校对/校验/校正/校准/审校/校场/校核/校勘/校订/校阅/校样
jie#解/慰藉/蕴藉/诘/媘/煯
jin#矜/劲/禁
jing#颈/景/强劲/劲风/劲旅/劲敌/劲射/苍劲/遒劲/劲草
jiong#炅
ju#咀/居/桔/句/婮
jun#均
juan#棚圈/圈养/猪圈/羊圈
jue#主角/角色/旦角/女角/丑角/角力/名角/配角/嚼/觉/䏐
jun#龟裂/俊
ka#咖/卡/喀
kai#楷
kang#扛
ke#咳/壳
keng#吭
kuai#会计/财会/浍
kui#傀
kuo#括
la#癞痢/腊/蜡
lai#癞疮/癞子/癞蛤/癞皮
lao#积潦/络子/落枕/落价/粩/姥
le#乐/勒/了
lei#勒紧
lo#然咯
lou#佝偻/泄露/露面/露脸/露骨/露底/露馅/露一手/露相/露马脚/露怯
long#里弄/弄堂/泷
li#跞/礼/櫔/栃
liao#了解/了结/明了/了得/末了/未了/了如/潦/撩
liang#靓/俩
lie#挘
lin#崊
ling#霗/令
liu#六/遛
lu#碌/陆/露
luo#络/落/漯/囖/洜/泺
lv#率/绿
lve#鋢/稤
lun#纶
ma#嫲/抹布/抹脸/抹桌子/摩挲
mai#埋
man#埋怨/蔓
mai#脉
mang#氓/芒
mao#冒
me#嚒
men#椚
meng#群氓/盟/癦
mei#没/旀
mo#淹没/没收/出没/沉没/没落/吞没/覆没/没入/埋没/鬼没/隐没/湮没/辱没/脉脉/模/摩/抹
mou#绸缪/牟
mi#秘/泌尿/分泌/谜/檷枸
mian#渑
ming#掵
miu#谬/谬论/纰缪
mu#大模/字模/模板/模样/模具/装模/模子/牟尼/子牟/夷牟/悬牟/相牟/头牟/宾牟/曹牟/岑牟/兜牟/卢牟/弥牟/牟食/牟槊/牟衫/牟光/牟牟/牟甲
na#哪/娜/那
nao#臑
nan#南
ne#哪吒/呢
nei#氞
neus#莻
nong#弄/燶
ni#毛呢/花呢/呢绒/线呢/呢料/呢子/呢喃/溺/檷
niao#尿/鸟/便溺
nian#粘膜/粘度/粘土/粘合剂/粘液/粘稠/粘合/粘着/粘结/粘性/粘附/不粘锅/粘糊/粘虫/粘聚/粘滞/焾/哖
niang#酿
nin#脌
ning#倿/拧
niu#拗/汼
nu#努
nuo#婀娜/袅娜/喏
nv#女
nve#疟/硸
o#喔/筽
ou#膒
pa#扒手/扒窃/扒外/扒分/扒糕/扒灰/扒犁/扒龙/扒搂/扒山虎/扒艇
pai#派/迫击/迫击炮
pao#刨/炮/萢
pan#番禺
pang#胖/膀/磅
pei#蓜
pi#辟/否极/臧否/龙陂/芘
pian#扁舟/便宜/魸
piao#朴姓/饿莩/饥莩/葭莩
pin#穦
ping#屏/苹/冯河
po#湖泊/血泊 /迫/朴刀/坡/陂
pu#一曝十寒/里堡/十里堡/脯/朴/曝晒/瀑/埔
qi#期/其/泣/祇
qiu#龟兹/湭
qi#稽首/缉鞋/栖/奇/漆/齐
qia#卡脖/卡子/关卡/卡壳/哨卡/边卡/发卡/峠
qiao#雀盲/雀子/地壳/甲壳/躯壳
qian#纤/乾/浅
qiang#强/㛨/㩖/䅚/䵁
qie#茄/趔趄/聺/籡
qin#亲/沁
qing#干亲/亲家
qiong#熍
qu#区/趣/爠
quan#圈/券
que#雀/炔
re#声喏/唱喏
rong#嬫
ruo#若/嵶
saeng#栍
sang#槡
sai#塞/嘥
sao#螦
se#堵塞/搪塞/茅塞/闭塞/鼻塞/梗塞/阻塞/淤塞/拥塞/哽塞/色
sha#莎/刹车/急刹/厦/杉木/杉篙
shai#色子
shao#勺/红苕
shan#姓单/单县/杉/敾/禅让/受禅/禅变/禅代/禅诰
shang#衣裳
she#拾级/折本/射/蛇
shen#沙参/野参/参王/人参/红参/丹参/山参/海参/鹿参/什么/身/沈/桑椹/食椹/烂椹/木椹
sheng#野乘/千乘/史乘/省/晟/盛/陹/渑水
shi#钥匙/什/识/似的/食/石/氏/拾/适/瑡
shiwa#瓧
shuai#表率/率性/率直/率真/粗率/率领/轻率/直率/草率/大率/坦率/衰
shuang#泷水/鏯
shu#属/数/术/熟
shui#游说
shuo#数见/说
si#伺/似/思
sou#蓃/摗
su#宿/鯂
sui#尿泡
ta#拓片/拓印/拓本/拓墨/拓写/拓手/拓工/碑拓/疲沓/拖沓/杂沓/沓/塔/鸿塔
tang#汤/镗
tao#陶
tan#反弹/弹性/弹簧/弹力/弹奏/弹跳/弹指/弹劾/弹唱/弹射/弹性体/吹弹/评弹/乱弹琴/弹压/弹指/弹簧/弹冠/弹雀/弹雀/弹丝/弹丸/澹台
te#脦
teng#虅
ti#提/体
tiao#调/苕
ting#町/听
tong#通
tu#迌
tuan#湪
tui#褪
tuo#拓/袥
tun#囤/屯
wei#尾/蔚/圩堤/圩垸/圩田/圩子/赶圩/歌圩
weng#攚
wu#无/可恶/交恶/好恶/厌恶/憎恶/嫌恶/痛恶/深恶/兀
wan#藤蔓/枝蔓/根蔓/蔓草/瓜蔓/蔓儿/莞/万/百万/皖
wang#亡
wai#崴
xia#虾/吓/夏/厦门/厦大/唬杀
xi#栖/系/蹊/洗/溪/戏/焁/铣/褶衣/褶裤
xiao#校/切削/削面/刀削/刮削
xian#纤细/光纤/纤巧/纤柔/纤小/纤维/纤瘦/纤纤/化纤/纤秀/棉纤/纤尘/铣铁/金铣
xiang#投降/巷
xie#解数/出血/采血/换血/血糊/尿血/淤血/放血/血晕/血淋/便血/吐血/咯血/叶韵/蝎/蝎子/邪/猲猲
xin#嬜/邤
xiu#铜臭/乳臭/成宿/星宿/璓
xin#馨/信/鸿信
xing#深省/省视/内省/不省人事/省悟/省察/行/荥
xiong#匂
xu#牧畜/畜产/畜牧/畜养/并畜/畜锐/吁/圩/浒
xuan#箮
xue#削/血/樰
xun#荨/寻
ya#琊
yao#钥/耀/曜/佋侥/侥觎/侥僺/侥利/侥傒/侥觊/侥会/侥滥/侥望/侥求/侥竞/侥薄/侥躐/侥取/侥奇/侥忝/侥速/侥冀/侥冒/疟子
yan#咽/殷红/朱殷/腌/烟/曕
ye#液/抽咽/哽咽/咽炎/呜咽/幽咽/悲咽/叶/葉/璍/潱/拽步/拽扶/拽扎
yi#自艾/遗/屹/嬄/噫
yin#殷/栶
ying#荥经/緓/灜
yo#杭育
yong#涌/硧
you#牗
yu#余/呼吁/吁请/吁求/育/熨帖/熨烫/於
yuan#员/茒/圜丘
yun#熨
yue#约/乐音/器乐/乐律/乐章/音乐/乐理/民乐/乐队/声乐/奏乐/弦乐/乐坛/管乐/配乐/乐曲/乐谱/锁钥/密钥/乐团/乐器/嬳/咽哕/唾哕/发哕/干哕/哕吐/哕饭/哕呕/哕息/哕厥/哕噫/哕逆/哕咽/哕骂/哕心/哕喈/口哕/呕哕
za#绑扎/结扎/包扎/捆扎/咱家
zan#攒/咱
zang#宝藏/藏历/藏文/藏语/藏青/藏族/藏医/藏药/藏蓝/西藏
zai#牛仔/龟仔/龙仔/鼻仔/羊仔/仔仔/麻仔/麵包仔/麦旺仔/鸿仔/煲仔/福仔/畠
zao#栆
ze#择
zeng#曾国藩/曾孙/曾祖父/曾祖/曾祖母/曾孙女/曾巩/囎/缯
zong#综/繌
zha#扎/柞狭/柞薪/柞子/柞鄂/柞叶/柞撒/槱柞/一柞/五柞宫/五柞/雠柞/芟柞/蜡祭/喳
zhai#宅/夈/择席/择菜
zhan#粘
zhang#列车长/行长/村长/镇长/乡长/区长/县长/市长/省长/会长/班长/排长/连长/营长/团长/旅长/师长/军长/委员长/局长/厅长/所长/部长/组长/生长/长大/长高/长个/
zhao#朝朝/明朝/朝晖/朝夕/朝思/今朝/朝气/朝三/朝秦/朝霞/鹰爪/龙爪/魔爪/爪牙/着急/着迷/着火/怎么着/正着/着凉/一着/犯不着/着数/这么着/犯得着/着慌/着忙/数得着/龙爪槐/嘲哳/嘲惹
zhe#折/着/褶
zhen#殝/椹
zhi#标识/吱/殖/枝/方祇/后祇/皇祇/黄祇/皇地祇/金祇/祇树/月氏
zhong#重/种
zhou#粥
zhu#属意/著/駯
zhua#爪子
zhuai#拽
zhuan#芈月传/外传/传记/自传/正传/小传/评传/传略/别传
zhui#椎/隹
zhuo#执著/着装/着落/着意/着力/附着/着笔/胶着/着实/衣着/着眼/着想/着重/穿着/执着/着墨/着实/沉着/着陆/着想/着色/焯见/焯烁/辉焯
zhuang#幢房/一幢/幢楼/庒
zi#仔/兹
zu#足
zuo#柞/穝
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 438 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 830 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 601 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 953 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 687 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 775 B

@@ -1,130 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="style.css" type="text/css" media="screen">
<script src="js/jstools.js" type="text/javascript" charset="utf-8"></script>
<script src="js/raphael.js" type="text/javascript" charset="utf-8"></script>
<script src="js/jquery/jquery.js" type="text/javascript" charset="utf-8"></script>
<script src="js/jquery/jquery.progressbar.js" type="text/javascript" charset="utf-8"></script>
<script src="js/jquery/jquery.asyncqueue.js" type="text/javascript" charset="utf-8"></script>
<script src="js/Color.js" type="text/javascript" charset="utf-8"></script>
<script src="js/Polyline.js" type="text/javascript" charset="utf-8"></script>
<script src="js/ActivityImpl.js" type="text/javascript" charset="utf-8"></script>
<script src="js/ActivitiRest.js" type="text/javascript" charset="utf-8"></script>
<script src="js/LineBreakMeasurer.js" type="text/javascript" charset="utf-8"></script>
<script src="js/ProcessDiagramGenerator.js" type="text/javascript" charset="utf-8"></script>
<script src="js/ProcessDiagramCanvas.js" type="text/javascript" charset="utf-8"></script>
<style type="text/css" media="screen">
</style>
</head>
<body>
<div class="wrapper">
<div id="pb1"></div>
<div id="overlayBox" >
<div id="diagramBreadCrumbs" class="diagramBreadCrumbs" onmousedown="return false" onselectstart="return false"></div>
<div id="diagramHolder" class="diagramHolder"></div>
<div class="diagram-info" id="diagramInfo"></div>
</div>
</div>
<script language='javascript'>
var DiagramGenerator = {};
var pb1;
$(document).ready(function(){
var query_string = {};
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
query_string[pair[0]] = pair[1];
}
var processDefinitionId = query_string["processDefinitionId"];
var processInstanceId = query_string["processInstanceId"];
console.log("Initialize progress bar");
pb1 = new $.ProgressBar({
boundingBox: '#pb1',
label: 'Progressbar!',
on: {
complete: function() {
console.log("Progress Bar COMPLETE");
this.set('label', 'complete!');
if (processInstanceId) {
ProcessDiagramGenerator.drawHighLights(processInstanceId);
}
},
valueChange: function(e) {
this.set('label', e.newVal + '%');
}
},
value: 0
});
console.log("Progress bar inited");
ProcessDiagramGenerator.options = {
diagramBreadCrumbsId: "diagramBreadCrumbs",
diagramHolderId: "diagramHolder",
diagramInfoId: "diagramInfo",
on: {
click: function(canvas, element, contextObject){
var mouseEvent = this;
console.log("[CLICK] mouseEvent: %o, canvas: %o, clicked element: %o, contextObject: %o", mouseEvent, canvas, element, contextObject);
if (contextObject.getProperty("type") == "callActivity") {
var processDefinitonKey = contextObject.getProperty("processDefinitonKey");
var processDefinitons = contextObject.getProperty("processDefinitons");
var processDefiniton = processDefinitons[0];
console.log("Load callActivity '" + processDefiniton.processDefinitionKey + "', contextObject: ", contextObject);
// Load processDefinition
ProcessDiagramGenerator.drawDiagram(processDefiniton.processDefinitionId);
}
},
rightClick: function(canvas, element, contextObject){
var mouseEvent = this;
console.log("[RIGHTCLICK] mouseEvent: %o, canvas: %o, clicked element: %o, contextObject: %o", mouseEvent, canvas, element, contextObject);
},
over: function(canvas, element, contextObject){
var mouseEvent = this;
//console.log("[OVER] mouseEvent: %o, canvas: %o, clicked element: %o, contextObject: %o", mouseEvent, canvas, element, contextObject);
// TODO: show tooltip-window with contextObject info
ProcessDiagramGenerator.showActivityInfo(contextObject);
},
out: function(canvas, element, contextObject){
var mouseEvent = this;
//console.log("[OUT] mouseEvent: %o, canvas: %o, clicked element: %o, contextObject: %o", mouseEvent, canvas, element, contextObject);
ProcessDiagramGenerator.hideInfo();
}
}
};
var baseUrl = window.document.location.protocol + "//" + window.document.location.host + "/";
var shortenedUrl = window.document.location.href.replace(baseUrl, "");
baseUrl = baseUrl + shortenedUrl.substring(0, shortenedUrl.indexOf("/"));
ActivitiRest.options = {
processInstanceHighLightsUrl: baseUrl + "/service/process-instance/{processInstanceId}/highlights?callback=?",
processDefinitionUrl: baseUrl + "/service/process-definition/{processDefinitionId}/diagram-layout?callback=?",
processDefinitionByKeyUrl: baseUrl + "/service/process-definition/{processDefinitionKey}/diagram-layout?callback=?"
};
if (processDefinitionId) {
ProcessDiagramGenerator.drawDiagram(processDefinitionId);
} else {
alert("processDefinitionId parameter is required");
}
});
</script>
</body>
</html>
@@ -1,74 +0,0 @@
var ActivitiRest = {
options: {},
getProcessDefinitionByKey: function(processDefinitionKey, callback) {
var url = Lang.sub(this.options.processDefinitionByKeyUrl, {processDefinitionKey: processDefinitionKey});
$.ajax({
url: url,
dataType: 'jsonp',
cache: false,
async: true,
success: function(data, textStatus) {
var processDefinition = data;
if (!processDefinition) {
console.error("Process definition '" + processDefinitionKey + "' not found");
} else {
callback.apply({processDefinitionId: processDefinition.id});
}
}
}).done(function(data, textStatus) {
console.log("ajax done");
}).fail(function(jqXHR, textStatus, error){
console.error('Get diagram layout['+processDefinitionKey+'] failure: ', textStatus, 'error: ', error, jqXHR);
});
},
getProcessDefinition: function(processDefinitionId, callback) {
var url = Lang.sub(this.options.processDefinitionUrl, {processDefinitionId: processDefinitionId});
$.ajax({
url: url,
dataType: 'jsonp',
cache: false,
async: true,
success: function(data, textStatus) {
var processDefinitionDiagramLayout = data;
if (!processDefinitionDiagramLayout) {
console.error("Process definition diagram layout '" + processDefinitionId + "' not found");
return;
} else {
callback.apply({processDefinitionDiagramLayout: processDefinitionDiagramLayout});
}
}
}).done(function(data, textStatus) {
console.log("ajax done");
}).fail(function(jqXHR, textStatus, error){
console.log('Get diagram layout['+processDefinitionId+'] failure: ', textStatus, jqXHR);
});
},
getHighLights: function(processInstanceId, callback) {
var url = Lang.sub(this.options.processInstanceHighLightsUrl, {processInstanceId: processInstanceId});
$.ajax({
url: url,
dataType: 'jsonp',
cache: false,
async: true,
success: function(data, textStatus) {
console.log("ajax returned data");
var highLights = data;
if (!highLights) {
console.log("highLights not found");
return;
} else {
callback.apply({highLights: highLights});
}
}
}).done(function(data, textStatus) {
console.log("ajax done");
}).fail(function(jqXHR, textStatus, error){
console.log('Get HighLights['+processInstanceId+'] failure: ', textStatus, jqXHR);
});
}
};
@@ -1 +0,0 @@
/**␍ * ␍ * @author Tom Baeyens␍ * @author (Javascript) Dmitry Farafonov␍ */ var ActivityImpl = function(activityJson){ this.outgoingTransitions = []; this.outgoingTransitions = []; this.incomingTransitions = []; this.activityBehavior = null; this.parent = null; this.isScope = false; this.isAsync = false; this.isExclusive = false; this.x = -1; this.y = -1; this.width = -1; this.height = -1; this.properties = {}; //console.log("activityJson: ", activityJson);␍ ␍ if (activityJson != undefined) {␍ this.setId(activityJson.activityId);␍ ␍ for (var propertyName in activityJson.properties) {␍ this.setProperty(propertyName, activityJson.properties[propertyName]);␍ }␍ //this.setProperty("name", activityJson.activityName);␍ //this.setProperty("type", activityJson.activityType);␍ this.setX(activityJson.x);␍ this.setY(activityJson.y);␍ this.setWidth(activityJson.width);␍ this.setHeight(activityJson.height);␍ ␍ if (activityJson.multiInstance)␍ this.setProperty("multiInstance", activityJson.multiInstance);␍ if (activityJson.collapsed) {␍ this.setProperty("collapsed", activityJson.collapsed);␍ }␍ if (activityJson.isInterrupting != undefined)␍ this.setProperty("isInterrupting", activityJson.isInterrupting);␍ }␍};␍␍ActivityImpl.prototype = {␍ outgoingTransitions: [],␍ outgoingTransitions: [],␍ incomingTransitions: [],␍ activityBehavior: null,␍ parent: null,␍ isScope: false,␍ isAsync: false,␍ isExclusive: false,␍ ␍ id: null,␍ ␍ properties: {},␍ ␍ // Graphical information␍ x: -1,␍ y: -1,␍ width: -1,␍ height: -1,␍ ␍ setId: function(id){␍ this.id = id;␍ },␍ ␍ getId: function(){␍ return this.id;␍ },␍ ␍ ␍ setProperty: function(name, value){␍ this.properties[name] = value;␍ },␍ getProperty: function(name){␍ return this.properties[name];␍ },␍ ␍ createOutgoingTransition: function(transitionId){␍ ␍ },␍ ␍ toString: function(id) {␍ return "Activity("+id+")";␍ },␍ ␍ getParentActivity: function(){␍ /*␍ if (parent instanceof ActivityImpl) {␍79 return (ActivityImpl) parent;␍80 }␍81 return null;␍ */␍ return this.parent;␍ },␍ ␍ // restricted setters ///////////////////////////////////////////////////////␍ ␍ setOutgoingTransitions: function(outgoingTransitions){␍ this.outgoingTransitions = outgoingTransitions;␍ },␍ ␍ setParent: function(parent){␍ this.parent = parent;␍ },␍ ␍ setIncomingTransitions: function(incomingTransitions){␍ this.incomingTransitions = incomingTransitions;␍ },␍ ␍ // getters and setters //////////////////////////////////////////////////////␍ ␍ getOutgoingTransitions: function(){␍ return this.outgoingTransitions;␍ },␍ ␍ getActivityBehavior: function(){␍ return this.activityBehavior;␍ },␍ ␍ setActivityBehavior: function(activityBehavior){␍ this.activityBehavior = activityBehavior;␍ },␍ ␍ getParent: function(){␍ return this.parent;␍ },␍ ␍ getIncomingTransitions: function(){␍ return this.incomingTransitions;␍ },␍ ␍ isScope: function(){␍ return this.isScope;␍ },␍ ␍ setScope: function(isScope){␍ this.isScope = isScope;␍ },␍ ␍ getX: function(){␍ return this.x;␍ },␍ ␍ setX: function(x){␍ this.x = x;␍ },␍ ␍ getY: function(){␍ return this.y;␍ },␍ ␍ setY: function(y){␍ this.y = y;␍ },␍ ␍ getWidth: function(){␍ return this.width;␍ },␍ ␍ setWidth: function(width){␍ this.width = width;␍ },␍ ␍ getHeight: function(){␍ return this.height;␍ },␍ ␍ setHeight: function(height){␍ this.height = height;␍ },␍ ␍ isAsync: function() {␍ return this.isAsync;␍ },␍ ␍ setAsync: function(isAsync) {␍ this.isAsync = isAsync;␍ },␍ ␍ isExclusive: function() {␍ return this.isExclusive;␍ },␍ ␍ setExclusive: function(isExclusive) {␍ this.isExclusive = isExclusive;␍ },␍ ␍ vvoid: function(){}␍};
@@ -1,603 +0,0 @@
/**
* Web color table
*
* @author Dmitry Farafonov
*/
var Color = {
/**
* The color white. In the default sRGB space.
*/
white : Raphael.getRGB("rgb(255,255,255)"),
/**
* The color white. In the default sRGB space.
*/
WHITE : this.white,
/**
* The color light gray. In the default sRGB space.
*/
lightGray : Raphael.getRGB("rgb(192, 192, 192)"),
/**
* The color light gray. In the default sRGB space.
*/
LIGHT_GRAY : this.lightGray,
/**
* The color gray. In the default sRGB space.
*/
gray : Raphael.getRGB("rgb(128, 128, 128)"),
/**
* The color gray. In the default sRGB space.
*/
GRAY : this.gray,
/**
* The color dark gray. In the default sRGB space.
*/
darkGray : Raphael.getRGB("rgb(64, 64, 64)"),
/**
* The color dark gray. In the default sRGB space.
*/
DARK_GRAY : this.darkGray,
/**
* The color black. In the default sRGB space.
*/
black : Raphael.getRGB("rgb(0, 0, 0)"),
/**
* The color black. In the default sRGB space.
*/
BLACK : this.black,
/**
* The color red. In the default sRGB space.
*/
red : Raphael.getRGB("rgb(255, 0, 0)"),
/**
* The color red. In the default sRGB space.
*/
RED : this.red,
/**
* The color pink. In the default sRGB space.
*/
pink : Raphael.getRGB("rgb(255, 175, 175)"),
/**
* The color pink. In the default sRGB space.
*/
PINK : this.pink,
/**
* The color orange. In the default sRGB space.
*/
orange : Raphael.getRGB("rgb(255, 200, 0)"),
/**
* The color orange. In the default sRGB space.
*/
ORANGE : this.orange,
/**
* The color yellow. In the default sRGB space.
*/
yellow : Raphael.getRGB("rgb(255, 255, 0)"),
/**
* The color yellow. In the default sRGB space.
*/
YELLOW : this.yellow,
/**
* The color green. In the default sRGB space.
*/
green : Raphael.getRGB("rgb(0, 255, 0)"),
/**
* The color green. In the default sRGB space.
*/
GREEN : this.green,
/**
* The color magenta. In the default sRGB space.
*/
magenta : Raphael.getRGB("rgb(255, 0, 255)"),
/**
* The color magenta. In the default sRGB space.
*/
MAGENTA : this.magenta,
/**
* The color cyan. In the default sRGB space.
*/
cyan : Raphael.getRGB("rgb(0, 255, 255)"),
/**
* The color cyan. In the default sRGB space.
*/
CYAN : this.cyan,
/**
* The color blue. In the default sRGB space.
*/
blue : Raphael.getRGB("rgb(0, 0, 255)"),
/**
* The color blue. In the default sRGB space.
*/
BLUE : this.blue,
/************************************************************************/
// http://www.stm.dp.ua/web-design/color-html.php
Snow : Raphael.getRGB("#FFFAFA "), // 255 250 250
GhostWhite : Raphael.getRGB("#F8F8FF "), // 248 248 255
WhiteSmoke : Raphael.getRGB("#F5F5F5 "), // 245 245 245
Gainsboro : Raphael.getRGB("#DCDCDC "), // 220 220 220
FloralWhite : Raphael.getRGB("#FFFAF0 "), // 255 250 240
OldLace : Raphael.getRGB("#FDF5E6 "), // 253 245 230
Linen : Raphael.getRGB("#FAF0E6 "), // 250 240 230
AntiqueWhite : Raphael.getRGB("#FAEBD7 "), // 250 235 215
PapayaWhip : Raphael.getRGB("#FFEFD5 "), // 255 239 213
BlanchedAlmond : Raphael.getRGB("#FFEBCD "), // 255 235 205
Bisque : Raphael.getRGB("#FFE4C4 "), // 255 228 196
PeachPuff : Raphael.getRGB("#FFDAB9 "), // 255 218 185
NavajoWhite : Raphael.getRGB("#FFDEAD "), // 255 222 173
Moccasin : Raphael.getRGB("#FFE4B5 "), // 255 228 181
Cornsilk : Raphael.getRGB("#FFF8DC "), // 255 248 220
Ivory : Raphael.getRGB("#FFFFF0 "), // 255 255 240
LemonChiffon : Raphael.getRGB("#FFFACD "), // 255 250 205
Seashell : Raphael.getRGB("#FFF5EE "), // 255 245 238
Honeydew : Raphael.getRGB("#F0FFF0 "), // 240 255 240
MintCream : Raphael.getRGB("#F5FFFA "), // 245 255 250
Azure : Raphael.getRGB("#F0FFFF "), // 240 255 255
AliceBlue : Raphael.getRGB("#F0F8FF "), // 240 248 255
lavender : Raphael.getRGB("#E6E6FA "), // 230 230 250
LavenderBlush : Raphael.getRGB("#FFF0F5 "), // 255 240 245
MistyRose : Raphael.getRGB("#FFE4E1 "), // 255 228 225
White : Raphael.getRGB("#FFFFFF "), // 255 255 255
Black : Raphael.getRGB("#000000 "), // 0 0 0
DarkSlateGray : Raphael.getRGB("#2F4F4F "), // 47 79 79
DimGrey : Raphael.getRGB("#696969 "), // 105 105 105
SlateGrey : Raphael.getRGB("#708090 "), // 112 128 144
LightSlateGray : Raphael.getRGB("#778899 "), // 119 136 153
Grey : Raphael.getRGB("#BEBEBE "), // 190 190 190
LightGray : Raphael.getRGB("#D3D3D3 "), // 211 211 211
MidnightBlue : Raphael.getRGB("#191970 "), // 25 25 112
NavyBlue : Raphael.getRGB("#000080 "), // 0 0 128
CornflowerBlue : Raphael.getRGB("#6495ED "), // 100 149 237
DarkSlateBlue : Raphael.getRGB("#483D8B "), // 72 61 139
SlateBlue : Raphael.getRGB("#6A5ACD "), // 106 90 205
MediumSlateBlue : Raphael.getRGB("#7B68EE "), // 123 104 238
LightSlateBlue : Raphael.getRGB("#8470FF "), // 132 112 255
MediumBlue : Raphael.getRGB("#0000CD "), // 0 0 205
RoyalBlue : Raphael.getRGB("#4169E1 "), // 65 105 225
Blue : Raphael.getRGB("#0000FF "), // 0 0 255
DodgerBlue : Raphael.getRGB("#1E90FF "), // 30 144 255
DeepSkyBlue : Raphael.getRGB("#00BFFF "), // 0 191 255
SkyBlue : Raphael.getRGB("#87CEEB "), // 135 206 235
LightSkyBlue : Raphael.getRGB("#87CEFA "), // 135 206 250
SteelBlue : Raphael.getRGB("#4682B4 "), // 70 130 180
LightSteelBlue : Raphael.getRGB("#B0C4DE "), // 176 196 222
LightBlue : Raphael.getRGB("#ADD8E6 "), // 173 216 230
PowderBlue : Raphael.getRGB("#B0E0E6 "), // 176 224 230
PaleTurquoise : Raphael.getRGB("#AFEEEE "), // 175 238 238
DarkTurquoise : Raphael.getRGB("#00CED1 "), // 0 206 209
MediumTurquoise : Raphael.getRGB("#48D1CC "), // 72 209 204
Turquoise : Raphael.getRGB("#40E0D0 "), // 64 224 208
Cyan : Raphael.getRGB("#00FFFF "), // 0 255 255
LightCyan : Raphael.getRGB("#E0FFFF "), // 224 255 255
CadetBlue : Raphael.getRGB("#5F9EA0 "), // 95 158 160
MediumAquamarine: Raphael.getRGB("#66CDAA "), // 102 205 170
Aquamarine : Raphael.getRGB("#7FFFD4 "), // 127 255 212
DarkGreen : Raphael.getRGB("#006400 "), // 0 100 0
DarkOliveGreen : Raphael.getRGB("#556B2F "), // 85 107 47
DarkSeaGreen : Raphael.getRGB("#8FBC8F "), // 143 188 143
SeaGreen : Raphael.getRGB("#2E8B57 "), // 46 139 87
MediumSeaGreen : Raphael.getRGB("#3CB371 "), // 60 179 113
LightSeaGreen : Raphael.getRGB("#20B2AA "), // 32 178 170
PaleGreen : Raphael.getRGB("#98FB98 "), // 152 251 152
SpringGreen : Raphael.getRGB("#00FF7F "), // 0 255 127
LawnGreen : Raphael.getRGB("#7CFC00 "), // 124 252 0
Green : Raphael.getRGB("#00FF00 "), // 0 255 0
Chartreuse : Raphael.getRGB("#7FFF00 "), // 127 255 0
MedSpringGreen : Raphael.getRGB("#00FA9A "), // 0 250 154
GreenYellow : Raphael.getRGB("#ADFF2F "), // 173 255 47
LimeGreen : Raphael.getRGB("#32CD32 "), // 50 205 50
YellowGreen : Raphael.getRGB("#9ACD32 "), // 154 205 50
ForestGreen : Raphael.getRGB("#228B22 "), // 34 139 34
OliveDrab : Raphael.getRGB("#6B8E23 "), // 107 142 35
DarkKhaki : Raphael.getRGB("#BDB76B "), // 189 183 107
PaleGoldenrod : Raphael.getRGB("#EEE8AA "), // 238 232 170
LtGoldenrodYello: Raphael.getRGB("#FAFAD2 "), // 250 250 210
LightYellow : Raphael.getRGB("#FFFFE0 "), // 255 255 224
Yellow : Raphael.getRGB("#FFFF00 "), // 255 255 0
Gold : Raphael.getRGB("#FFD700 "), // 255 215 0
LightGoldenrod : Raphael.getRGB("#EEDD82 "), // 238 221 130
goldenrod : Raphael.getRGB("#DAA520 "), // 218 165 32
DarkGoldenrod : Raphael.getRGB("#B8860B "), // 184 134 11
RosyBrown : Raphael.getRGB("#BC8F8F "), // 188 143 143
IndianRed : Raphael.getRGB("#CD5C5C "), // 205 92 92
SaddleBrown : Raphael.getRGB("#8B4513 "), // 139 69 19
Sienna : Raphael.getRGB("#A0522D "), // 160 82 45
Peru : Raphael.getRGB("#CD853F "), // 205 133 63
Burlywood : Raphael.getRGB("#DEB887 "), // 222 184 135
Beige : Raphael.getRGB("#F5F5DC "), // 245 245 220
Wheat : Raphael.getRGB("#F5DEB3 "), // 245 222 179
SandyBrown : Raphael.getRGB("#F4A460 "), // 244 164 96
Tan : Raphael.getRGB("#D2B48C "), // 210 180 140
Chocolate : Raphael.getRGB("#D2691E "), // 210 105 30
Firebrick : Raphael.getRGB("#B22222 "), // 178 34 34
Brown : Raphael.getRGB("#A52A2A "), // 165 42 42
DarkSalmon : Raphael.getRGB("#E9967A "), // 233 150 122
Salmon : Raphael.getRGB("#FA8072 "), // 250 128 114
LightSalmon : Raphael.getRGB("#FFA07A "), // 255 160 122
Orange : Raphael.getRGB("#FFA500 "), // 255 165 0
DarkOrange : Raphael.getRGB("#FF8C00 "), // 255 140 0
Coral : Raphael.getRGB("#FF7F50 "), // 255 127 80
LightCoral : Raphael.getRGB("#F08080 "), // 240 128 128
Tomato : Raphael.getRGB("#FF6347 "), // 255 99 71
OrangeRed : Raphael.getRGB("#FF4500 "), // 255 69 0
Red : Raphael.getRGB("#FF0000 "), // 255 0 0
HotPink : Raphael.getRGB("#FF69B4 "), // 255 105 180
DeepPink : Raphael.getRGB("#FF1493 "), // 255 20 147
Pink : Raphael.getRGB("#FFC0CB "), // 255 192 203
LightPink : Raphael.getRGB("#FFB6C1 "), // 255 182 193
PaleVioletRed : Raphael.getRGB("#DB7093 "), // 219 112 147
Maroon : Raphael.getRGB("#B03060 "), // 176 48 96
MediumVioletRed : Raphael.getRGB("#C71585 "), // 199 21 133
VioletRed : Raphael.getRGB("#D02090 "), // 208 32 144
Magenta : Raphael.getRGB("#FF00FF "), // 255 0 255
Violet : Raphael.getRGB("#EE82EE "), // 238 130 238
Plum : Raphael.getRGB("#DDA0DD "), // 221 160 221
Orchid : Raphael.getRGB("#DA70D6 "), // 218 112 214
MediumOrchid : Raphael.getRGB("#BA55D3 "), // 186 85 211
DarkOrchid : Raphael.getRGB("#9932CC "), // 153 50 204
DarkViolet : Raphael.getRGB("#9400D3 "), // 148 0 211
BlueViolet : Raphael.getRGB("#8A2BE2 "), // 138 43 226
Purple : Raphael.getRGB("#A020F0 "), // 160 32 240
MediumPurple : Raphael.getRGB("#9370DB "), // 147 112 219
Thistle : Raphael.getRGB("#D8BFD8 "), // 216 191 216
Snow1 : Raphael.getRGB("#FFFAFA "), // 255 250 250
Snow2 : Raphael.getRGB("#EEE9E9 "), // 238 233 233
Snow3 : Raphael.getRGB("#CDC9C9 "), // 205 201 201
Snow4 : Raphael.getRGB("#8B8989 "), // 139 137 137
Seashell1 : Raphael.getRGB("#FFF5EE "), // 255 245 238
Seashell2 : Raphael.getRGB("#EEE5DE "), // 238 229 222
Seashell3 : Raphael.getRGB("#CDC5BF "), // 205 197 191
Seashell4 : Raphael.getRGB("#8B8682 "), // 139 134 130
AntiqueWhite1 : Raphael.getRGB("#FFEFDB "), // 255 239 219
AntiqueWhite2 : Raphael.getRGB("#EEDFCC "), // 238 223 204
AntiqueWhite3 : Raphael.getRGB("#CDC0B0 "), // 205 192 176
AntiqueWhite4 : Raphael.getRGB("#8B8378 "), // 139 131 120
Bisque1 : Raphael.getRGB("#FFE4C4 "), // 255 228 196
Bisque2 : Raphael.getRGB("#EED5B7 "), // 238 213 183
Bisque3 : Raphael.getRGB("#CDB79E "), // 205 183 158
Bisque4 : Raphael.getRGB("#8B7D6B "), // 139 125 107
PeachPuff1 : Raphael.getRGB("#FFDAB9 "), // 255 218 185
PeachPuff2 : Raphael.getRGB("#EECBAD "), // 238 203 173
PeachPuff3 : Raphael.getRGB("#CDAF95 "), // 205 175 149
PeachPuff4 : Raphael.getRGB("#8B7765 "), // 139 119 101
NavajoWhite1 : Raphael.getRGB("#FFDEAD "), // 255 222 173
NavajoWhite2 : Raphael.getRGB("#EECFA1 "), // 238 207 161
NavajoWhite3 : Raphael.getRGB("#CDB38B "), // 205 179 139
NavajoWhite4 : Raphael.getRGB("#8B795E "), // 139 121 94
LemonChiffon1 : Raphael.getRGB("#FFFACD "), // 255 250 205
LemonChiffon2 : Raphael.getRGB("#EEE9BF "), // 238 233 191
LemonChiffon3 : Raphael.getRGB("#CDC9A5 "), // 205 201 165
LemonChiffon4 : Raphael.getRGB("#8B8970 "), // 139 137 112
Cornsilk1 : Raphael.getRGB("#FFF8DC "), // 255 248 220
Cornsilk2 : Raphael.getRGB("#EEE8CD "), // 238 232 205
Cornsilk3 : Raphael.getRGB("#CDC8B1 "), // 205 200 177
Cornsilk4 : Raphael.getRGB("#8B8878 "), // 139 136 120
Ivory1 : Raphael.getRGB("#FFFFF0 "), // 255 255 240
Ivory2 : Raphael.getRGB("#EEEEE0 "), // 238 238 224
Ivory3 : Raphael.getRGB("#CDCDC1 "), // 205 205 193
Ivory4 : Raphael.getRGB("#8B8B83 "), // 139 139 131
Honeydew1 : Raphael.getRGB("#F0FFF0 "), // 240 255 240
Honeydew2 : Raphael.getRGB("#E0EEE0 "), // 224 238 224
Honeydew3 : Raphael.getRGB("#C1CDC1 "), // 193 205 193
Honeydew4 : Raphael.getRGB("#838B83 "), // 131 139 131
LavenderBlush1 : Raphael.getRGB("#FFF0F5 "), // 255 240 245
LavenderBlush2 : Raphael.getRGB("#EEE0E5 "), // 238 224 229
LavenderBlush3 : Raphael.getRGB("#CDC1C5 "), // 205 193 197
LavenderBlush4 : Raphael.getRGB("#8B8386 "), // 139 131 134
MistyRose1 : Raphael.getRGB("#FFE4E1 "), // 255 228 225
MistyRose2 : Raphael.getRGB("#EED5D2 "), // 238 213 210
MistyRose3 : Raphael.getRGB("#CDB7B5 "), // 205 183 181
MistyRose4 : Raphael.getRGB("#8B7D7B "), // 139 125 123
Azure1 : Raphael.getRGB("#F0FFFF "), // 240 255 255
Azure2 : Raphael.getRGB("#E0EEEE "), // 224 238 238
Azure3 : Raphael.getRGB("#C1CDCD "), // 193 205 205
Azure4 : Raphael.getRGB("#838B8B "), // 131 139 139
SlateBlue1 : Raphael.getRGB("#836FFF "), // 131 111 255
SlateBlue2 : Raphael.getRGB("#7A67EE "), // 122 103 238
SlateBlue3 : Raphael.getRGB("#6959CD "), // 105 89 205
SlateBlue4 : Raphael.getRGB("#473C8B "), // 71 60 139
RoyalBlue1 : Raphael.getRGB("#4876FF "), // 72 118 255
RoyalBlue2 : Raphael.getRGB("#436EEE "), // 67 110 238
RoyalBlue3 : Raphael.getRGB("#3A5FCD "), // 58 95 205
RoyalBlue4 : Raphael.getRGB("#27408B "), // 39 64 139
Blue1 : Raphael.getRGB("#0000FF "), // 0 0 255
Blue2 : Raphael.getRGB("#0000EE "), // 0 0 238
Blue3 : Raphael.getRGB("#0000CD "), // 0 0 205
Blue4 : Raphael.getRGB("#00008B "), // 0 0 139
DodgerBlue1 : Raphael.getRGB("#1E90FF "), // 30 144 255
DodgerBlue2 : Raphael.getRGB("#1C86EE "), // 28 134 238
DodgerBlue3 : Raphael.getRGB("#1874CD "), // 24 116 205
DodgerBlue4 : Raphael.getRGB("#104E8B "), // 16 78 139
SteelBlue1 : Raphael.getRGB("#63B8FF "), // 99 184 255
SteelBlue2 : Raphael.getRGB("#5CACEE "), // 92 172 238
SteelBlue3 : Raphael.getRGB("#4F94CD "), // 79 148 205
SteelBlue4 : Raphael.getRGB("#36648B "), // 54 100 139
DeepSkyBlue1 : Raphael.getRGB("#00BFFF "), // 0 191 255
DeepSkyBlue2 : Raphael.getRGB("#00B2EE "), // 0 178 238
DeepSkyBlue3 : Raphael.getRGB("#009ACD "), // 0 154 205
DeepSkyBlue4 : Raphael.getRGB("#00688B "), // 0 104 139
SkyBlue1 : Raphael.getRGB("#87CEFF "), // 135 206 255
SkyBlue2 : Raphael.getRGB("#7EC0EE "), // 126 192 238
SkyBlue3 : Raphael.getRGB("#6CA6CD "), // 108 166 205
SkyBlue4 : Raphael.getRGB("#4A708B "), // 74 112 139
LightSkyBlue1 : Raphael.getRGB("#B0E2FF "), // 176 226 255
LightSkyBlue2 : Raphael.getRGB("#A4D3EE "), // 164 211 238
LightSkyBlue3 : Raphael.getRGB("#8DB6CD "), // 141 182 205
LightSkyBlue4 : Raphael.getRGB("#607B8B "), // 96 123 139
SlateGray1 : Raphael.getRGB("#C6E2FF "), // 198 226 255
SlateGray2 : Raphael.getRGB("#B9D3EE "), // 185 211 238
SlateGray3 : Raphael.getRGB("#9FB6CD "), // 159 182 205
SlateGray4 : Raphael.getRGB("#6C7B8B "), // 108 123 139
LightSteelBlue1 : Raphael.getRGB("#CAE1FF "), // 202 225 255
LightSteelBlue2 : Raphael.getRGB("#BCD2EE "), // 188 210 238
LightSteelBlue3 : Raphael.getRGB("#A2B5CD "), // 162 181 205
LightSteelBlue4 : Raphael.getRGB("#6E7B8B "), // 110 123 139
LightBlue1 : Raphael.getRGB("#BFEFFF "), // 191 239 255
LightBlue2 : Raphael.getRGB("#B2DFEE "), // 178 223 238
LightBlue3 : Raphael.getRGB("#9AC0CD "), // 154 192 205
LightBlue4 : Raphael.getRGB("#68838B "), // 104 131 139
LightCyan1 : Raphael.getRGB("#E0FFFF "), // 224 255 255
LightCyan2 : Raphael.getRGB("#D1EEEE "), // 209 238 238
LightCyan3 : Raphael.getRGB("#B4CDCD "), // 180 205 205
LightCyan4 : Raphael.getRGB("#7A8B8B "), // 122 139 139
PaleTurquoise1 : Raphael.getRGB("#BBFFFF "), // 187 255 255
PaleTurquoise2 : Raphael.getRGB("#AEEEEE "), // 174 238 238
PaleTurquoise3 : Raphael.getRGB("#96CDCD "), // 150 205 205
PaleTurquoise4 : Raphael.getRGB("#668B8B "), // 102 139 139
CadetBlue1 : Raphael.getRGB("#98F5FF "), // 152 245 255
CadetBlue2 : Raphael.getRGB("#8EE5EE "), // 142 229 238
CadetBlue3 : Raphael.getRGB("#7AC5CD "), // 122 197 205
CadetBlue4 : Raphael.getRGB("#53868B "), // 83 134 139
Turquoise1 : Raphael.getRGB("#00F5FF "), // 0 245 255
Turquoise2 : Raphael.getRGB("#00E5EE "), // 0 229 238
Turquoise3 : Raphael.getRGB("#00C5CD "), // 0 197 205
Turquoise4 : Raphael.getRGB("#00868B "), // 0 134 139
Cyan1 : Raphael.getRGB("#00FFFF "), // 0 255 255
Cyan2 : Raphael.getRGB("#00EEEE "), // 0 238 238
Cyan3 : Raphael.getRGB("#00CDCD "), // 0 205 205
Cyan4 : Raphael.getRGB("#008B8B "), // 0 139 139
DarkSlateGray1 : Raphael.getRGB("#97FFFF "), // 151 255 255
DarkSlateGray2 : Raphael.getRGB("#8DEEEE "), // 141 238 238
DarkSlateGray3 : Raphael.getRGB("#79CDCD "), // 121 205 205
DarkSlateGray4 : Raphael.getRGB("#528B8B "), // 82 139 139
Aquamarine1 : Raphael.getRGB("#7FFFD4 "), // 127 255 212
Aquamarine2 : Raphael.getRGB("#76EEC6 "), // 118 238 198
Aquamarine3 : Raphael.getRGB("#66CDAA "), // 102 205 170
Aquamarine4 : Raphael.getRGB("#458B74 "), // 69 139 116
DarkSeaGreen1 : Raphael.getRGB("#C1FFC1 "), // 193 255 193
DarkSeaGreen2 : Raphael.getRGB("#B4EEB4 "), // 180 238 180
DarkSeaGreen3 : Raphael.getRGB("#9BCD9B "), // 155 205 155
DarkSeaGreen4 : Raphael.getRGB("#698B69 "), // 105 139 105
SeaGreen1 : Raphael.getRGB("#54FF9F "), // 84 255 159
SeaGreen2 : Raphael.getRGB("#4EEE94 "), // 78 238 148
SeaGreen3 : Raphael.getRGB("#43CD80 "), // 67 205 128
SeaGreen4 : Raphael.getRGB("#2E8B57 "), // 46 139 87
PaleGreen1 : Raphael.getRGB("#9AFF9A "), // 154 255 154
PaleGreen2 : Raphael.getRGB("#90EE90 "), // 144 238 144
PaleGreen3 : Raphael.getRGB("#7CCD7C "), // 124 205 124
PaleGreen4 : Raphael.getRGB("#548B54 "), // 84 139 84
SpringGreen1 : Raphael.getRGB("#00FF7F "), // 0 255 127
SpringGreen2 : Raphael.getRGB("#00EE76 "), // 0 238 118
SpringGreen3 : Raphael.getRGB("#00CD66 "), // 0 205 102
SpringGreen4 : Raphael.getRGB("#008B45 "), // 0 139 69
Green1 : Raphael.getRGB("#00FF00 "), // 0 255 0
Green2 : Raphael.getRGB("#00EE00 "), // 0 238 0
Green3 : Raphael.getRGB("#00CD00 "), // 0 205 0
Green4 : Raphael.getRGB("#008B00 "), // 0 139 0
Chartreuse1 : Raphael.getRGB("#7FFF00 "), // 127 255 0
Chartreuse2 : Raphael.getRGB("#76EE00 "), // 118 238 0
Chartreuse3 : Raphael.getRGB("#66CD00 "), // 102 205 0
Chartreuse4 : Raphael.getRGB("#458B00 "), // 69 139 0
OliveDrab1 : Raphael.getRGB("#C0FF3E "), // 192 255 62
OliveDrab2 : Raphael.getRGB("#B3EE3A "), // 179 238 58
OliveDrab3 : Raphael.getRGB("#9ACD32 "), // 154 205 50
OliveDrab4 : Raphael.getRGB("#698B22 "), // 105 139 34
DarkOliveGreen1 : Raphael.getRGB("#CAFF70 "), // 202 255 112
DarkOliveGreen2 : Raphael.getRGB("#BCEE68 "), // 188 238 104
DarkOliveGreen3 : Raphael.getRGB("#A2CD5A "), // 162 205 90
DarkOliveGreen4 : Raphael.getRGB("#6E8B3D "), // 110 139 61
Khaki1 : Raphael.getRGB("#FFF68F "), // 255 246 143
Khaki2 : Raphael.getRGB("#EEE685 "), // 238 230 133
Khaki3 : Raphael.getRGB("#CDC673 "), // 205 198 115
Khaki4 : Raphael.getRGB("#8B864E "), // 139 134 78
LightGoldenrod1 : Raphael.getRGB("#FFEC8B "), // 255 236 139
LightGoldenrod2 : Raphael.getRGB("#EEDC82 "), // 238 220 130
LightGoldenrod3 : Raphael.getRGB("#CDBE70 "), // 205 190 112
LightGoldenrod4 : Raphael.getRGB("#8B814C "), // 139 129 76
LightYellow1 : Raphael.getRGB("#FFFFE0 "), // 255 255 224
LightYellow2 : Raphael.getRGB("#EEEED1 "), // 238 238 209
LightYellow3 : Raphael.getRGB("#CDCDB4 "), // 205 205 180
LightYellow4 : Raphael.getRGB("#8B8B7A "), // 139 139 122
Yellow1 : Raphael.getRGB("#FFFF00 "), // 255 255 0
Yellow2 : Raphael.getRGB("#EEEE00 "), // 238 238 0
Yellow3 : Raphael.getRGB("#CDCD00 "), // 205 205 0
Yellow4 : Raphael.getRGB("#8B8B00 "), // 139 139 0
Gold1 : Raphael.getRGB("#FFD700 "), // 255 215 0
Gold2 : Raphael.getRGB("#EEC900 "), // 238 201 0
Gold3 : Raphael.getRGB("#CDAD00 "), // 205 173 0
Gold4 : Raphael.getRGB("#8B7500 "), // 139 117 0
Goldenrod1 : Raphael.getRGB("#FFC125 "), // 255 193 37
Goldenrod2 : Raphael.getRGB("#EEB422 "), // 238 180 34
Goldenrod3 : Raphael.getRGB("#CD9B1D "), // 205 155 29
Goldenrod4 : Raphael.getRGB("#8B6914 "), // 139 105 20
DarkGoldenrod1 : Raphael.getRGB("#FFB90F "), // 255 185 15
DarkGoldenrod2 : Raphael.getRGB("#EEAD0E "), // 238 173 14
DarkGoldenrod3 : Raphael.getRGB("#CD950C "), // 205 149 12
DarkGoldenrod4 : Raphael.getRGB("#8B658B "), // 139 101 8
RosyBrown1 : Raphael.getRGB("#FFC1C1 "), // 255 193 193
RosyBrown2 : Raphael.getRGB("#EEB4B4 "), // 238 180 180
RosyBrown3 : Raphael.getRGB("#CD9B9B "), // 205 155 155
RosyBrown4 : Raphael.getRGB("#8B6969 "), // 139 105 105
IndianRed1 : Raphael.getRGB("#FF6A6A "), // 255 106 106
IndianRed2 : Raphael.getRGB("#EE6363 "), // 238 99 99
IndianRed3 : Raphael.getRGB("#CD5555 "), // 205 85 85
IndianRed4 : Raphael.getRGB("#8B3A3A "), // 139 58 58
Sienna1 : Raphael.getRGB("#FF8247 "), // 255 130 71
Sienna2 : Raphael.getRGB("#EE7942 "), // 238 121 66
Sienna3 : Raphael.getRGB("#CD6839 "), // 205 104 57
Sienna4 : Raphael.getRGB("#8B4726 "), // 139 71 38
Burlywood1 : Raphael.getRGB("#FFD39B "), // 255 211 155
Burlywood2 : Raphael.getRGB("#EEC591 "), // 238 197 145
Burlywood3 : Raphael.getRGB("#CDAA7D "), // 205 170 125
Burlywood4 : Raphael.getRGB("#8B7355 "), // 139 115 85
Wheat1 : Raphael.getRGB("#FFE7BA "), // 255 231 186
Wheat2 : Raphael.getRGB("#EED8AE "), // 238 216 174
Wheat3 : Raphael.getRGB("#CDBA96 "), // 205 186 150
Wheat4 : Raphael.getRGB("#8B7E66 "), // 139 126 102
Tan1 : Raphael.getRGB("#FFA54F "), // 255 165 79
Tan2 : Raphael.getRGB("#EE9A49 "), // 238 154 73
Tan3 : Raphael.getRGB("#CD853F "), // 205 133 63
Tan4 : Raphael.getRGB("#8B5A2B "), // 139 90 43
Chocolate1 : Raphael.getRGB("#FF7F24 "), // 255 127 36
Chocolate2 : Raphael.getRGB("#EE7621 "), // 238 118 33
Chocolate3 : Raphael.getRGB("#CD661D "), // 205 102 29
Chocolate4 : Raphael.getRGB("#8B4513 "), // 139 69 19
Firebrick1 : Raphael.getRGB("#FF3030 "), // 255 48 48
Firebrick2 : Raphael.getRGB("#EE2C2C "), // 238 44 44
Firebrick3 : Raphael.getRGB("#CD2626 "), // 205 38 38
Firebrick4 : Raphael.getRGB("#8B1A1A "), // 139 26 26
Brown1 : Raphael.getRGB("#FF4040 "), // 255 64 64
Brown2 : Raphael.getRGB("#EE3B3B "), // 238 59 59
Brown3 : Raphael.getRGB("#CD3333 "), // 205 51 51
Brown4 : Raphael.getRGB("#8B2323 "), // 139 35 35
Salmon1 : Raphael.getRGB("#FF8C69 "), // 255 140 105
Salmon2 : Raphael.getRGB("#EE8262 "), // 238 130 98
Salmon3 : Raphael.getRGB("#CD7054 "), // 205 112 84
Salmon4 : Raphael.getRGB("#8B4C39 "), // 139 76 57
LightSalmon1 : Raphael.getRGB("#FFA07A "), // 255 160 122
LightSalmon2 : Raphael.getRGB("#EE9572 "), // 238 149 114
LightSalmon3 : Raphael.getRGB("#CD8162 "), // 205 129 98
LightSalmon4 : Raphael.getRGB("#8B5742 "), // 139 87 66
Orange1 : Raphael.getRGB("#FFA500 "), // 255 165 0
Orange2 : Raphael.getRGB("#EE9A00 "), // 238 154 0
Orange3 : Raphael.getRGB("#CD8500 "), // 205 133 0
Orange4 : Raphael.getRGB("#8B5A00 "), // 139 90 0
DarkOrange1 : Raphael.getRGB("#FF7F00 "), // 255 127 0
DarkOrange2 : Raphael.getRGB("#EE7600 "), // 238 118 0
DarkOrange3 : Raphael.getRGB("#CD6600 "), // 205 102 0
DarkOrange4 : Raphael.getRGB("#8B4500 "), // 139 69 0
Coral1 : Raphael.getRGB("#FF7256 "), // 255 114 86
Coral2 : Raphael.getRGB("#EE6A50 "), // 238 106 80
Coral3 : Raphael.getRGB("#CD5B45 "), // 205 91 69
Coral4 : Raphael.getRGB("#8B3E2F "), // 139 62 47
Tomato1 : Raphael.getRGB("#FF6347 "), // 255 99 71
Tomato2 : Raphael.getRGB("#EE5C42 "), // 238 92 66
Tomato3 : Raphael.getRGB("#CD4F39 "), // 205 79 57
Tomato4 : Raphael.getRGB("#8B3626 "), // 139 54 38
OrangeRed1 : Raphael.getRGB("#FF4500 "), // 255 69 0
OrangeRed2 : Raphael.getRGB("#EE4000 "), // 238 64 0
OrangeRed3 : Raphael.getRGB("#CD3700 "), // 205 55 0
OrangeRed4 : Raphael.getRGB("#8B2500 "), // 139 37 0
Red1 : Raphael.getRGB("#FF0000 "), // 255 0 0
Red2 : Raphael.getRGB("#EE0000 "), // 238 0 0
Red3 : Raphael.getRGB("#CD0000 "), // 205 0 0
Red4 : Raphael.getRGB("#8B0000 "), // 139 0 0
DeepPink1 : Raphael.getRGB("#FF1493 "), // 255 20 147
DeepPink2 : Raphael.getRGB("#EE1289 "), // 238 18 137
DeepPink3 : Raphael.getRGB("#CD1076 "), // 205 16 118
DeepPink4 : Raphael.getRGB("#8B0A50 "), // 139 10 80
HotPink1 : Raphael.getRGB("#FF6EB4 "), // 255 110 180
HotPink2 : Raphael.getRGB("#EE6AA7 "), // 238 106 167
HotPink3 : Raphael.getRGB("#CD6090 "), // 205 96 144
HotPink4 : Raphael.getRGB("#8B3A62 "), // 139 58 98
Pink1 : Raphael.getRGB("#FFB5C5 "), // 255 181 197
Pink2 : Raphael.getRGB("#EEA9B8 "), // 238 169 184
Pink3 : Raphael.getRGB("#CD919E "), // 205 145 158
Pink4 : Raphael.getRGB("#8B636C "), // 139 99 108
LightPink1 : Raphael.getRGB("#FFAEB9 "), // 255 174 185
LightPink2 : Raphael.getRGB("#EEA2AD "), // 238 162 173
LightPink3 : Raphael.getRGB("#CD8C95 "), // 205 140 149
LightPink4 : Raphael.getRGB("#8B5F65 "), // 139 95 101
PaleVioletRed1 : Raphael.getRGB("#FF82AB "), // 255 130 171
PaleVioletRed2 : Raphael.getRGB("#EE799F "), // 238 121 159
PaleVioletRed3 : Raphael.getRGB("#CD6889 "), // 205 104 137
PaleVioletRed4 : Raphael.getRGB("#8B475D "), // 139 71 93
Maroon1 : Raphael.getRGB("#FF34B3 "), // 255 52 179
Maroon2 : Raphael.getRGB("#EE30A7 "), // 238 48 167
Maroon3 : Raphael.getRGB("#CD2990 "), // 205 41 144
Maroon4 : Raphael.getRGB("#8B1C62 "), // 139 28 98
VioletRed1 : Raphael.getRGB("#FF3E96 "), // 255 62 150
VioletRed2 : Raphael.getRGB("#EE3A8C "), // 238 58 140
VioletRed3 : Raphael.getRGB("#CD3278 "), // 205 50 120
VioletRed4 : Raphael.getRGB("#8B2252 "), // 139 34 82
Magenta1 : Raphael.getRGB("#FF00FF "), // 255 0 255
Magenta2 : Raphael.getRGB("#EE00EE "), // 238 0 238
Magenta3 : Raphael.getRGB("#CD00CD "), // 205 0 205
Magenta4 : Raphael.getRGB("#8B008B "), // 139 0 139
Orchid1 : Raphael.getRGB("#FF83FA "), // 255 131 250
Orchid2 : Raphael.getRGB("#EE7AE9 "), // 238 122 233
Orchid3 : Raphael.getRGB("#CD69C9 "), // 205 105 201
Orchid4 : Raphael.getRGB("#8B4789 "), // 139 71 137
Plum1 : Raphael.getRGB("#FFBBFF "), // 255 187 255
Plum2 : Raphael.getRGB("#EEAEEE "), // 238 174 238
Plum3 : Raphael.getRGB("#CD96CD "), // 205 150 205
Plum4 : Raphael.getRGB("#8B668B "), // 139 102 139
MediumOrchid1 : Raphael.getRGB("#E066FF "), // 224 102 255
MediumOrchid2 : Raphael.getRGB("#D15FEE "), // 209 95 238
MediumOrchid3 : Raphael.getRGB("#B452CD "), // 180 82 205
MediumOrchid4 : Raphael.getRGB("#7A378B "), // 122 55 139
DarkOrchid1 : Raphael.getRGB("#BF3EFF "), // 191 62 255
DarkOrchid2 : Raphael.getRGB("#B23AEE "), // 178 58 238
DarkOrchid3 : Raphael.getRGB("#9A32CD "), // 154 50 205
DarkOrchid4 : Raphael.getRGB("#68228B "), // 104 34 139
Purple1 : Raphael.getRGB("#9B30FF "), // 155 48 255
Purple2 : Raphael.getRGB("#912CEE "), // 145 44 238
Purple3 : Raphael.getRGB("#7D26CD "), // 125 38 205
Purple4 : Raphael.getRGB("#551A8B "), // 85 26 139
MediumPurple1 : Raphael.getRGB("#AB82FF "), // 171 130 255
MediumPurple2 : Raphael.getRGB("#9F79EE "), // 159 121 238
MediumPurple3 : Raphael.getRGB("#8968CD "), // 137 104 205
MediumPurple4 : Raphael.getRGB("#5D478B "), // 93 71 139
Thistle1 : Raphael.getRGB("#FFE1FF "), // 255 225 255
Thistle2 : Raphael.getRGB("#EED2EE "), // 238 210 238
Thistle3 : Raphael.getRGB("#CDB5CD "), // 205 181 205
Thistle4 : Raphael.getRGB("#8B7B8B "), // 139 123 139
grey11 : Raphael.getRGB("#1C1C1C "), // 28 28 28
grey21 : Raphael.getRGB("#363636 "), // 54 54 54
grey31 : Raphael.getRGB("#4F4F4F "), // 79 79 79
grey41 : Raphael.getRGB("#696969 "), // 105 105 105
grey51 : Raphael.getRGB("#828282 "), // 130 130 130
grey61 : Raphael.getRGB("#9C9C9C "), // 156 156 156
grey71 : Raphael.getRGB("#B5B5B5 "), // 181 181 181
gray81 : Raphael.getRGB("#CFCFCF "), // 207 207 207
gray91 : Raphael.getRGB("#E8E8E8 "), // 232 232 232
DarkGrey : Raphael.getRGB("#A9A9A9 "), // 169 169 169
DarkBlue : Raphael.getRGB("#00008B "), // 0 0 139
DarkCyan : Raphael.getRGB("#008B8B "), // 0 139 139
DarkMagenta : Raphael.getRGB("#8B008B "), // 139 0 139
DarkRed : Raphael.getRGB("#8B0000 "), // 139 0 0
LightGreen : Raphael.getRGB("#90EE90 "), // 144 238 144
get: function(R, G, B){
return Raphael.getRGB("rgb(" + R + ", " + G + ", " + B + ")");
}
};
@@ -1,270 +0,0 @@
/**
* Word wrapping
*
* @author (Javascript) Dmitry Farafonov
*/
var AttributedStringIterator = function(text){
//this.text = this.rtrim(this.ltrim(text));
text = text.replace(/(\s)+/, " ");
this.text = this.rtrim(text);
/*
if (beginIndex < 0 || beginIndex > endIndex || endIndex > length()) {
throw new IllegalArgumentException("Invalid substring range");
}
*/
this.beginIndex = 0;
this.endIndex = this.text.length;
this.currentIndex = this.beginIndex;
//console.group("[AttributedStringIterator]");
var i = 0;
var string = this.text;
var fullPos = 0;
//console.log("string: \"" + string + "\", length: " + string.length);
this.startWordOffsets = [];
this.startWordOffsets.push(fullPos);
// TODO: remove i 1000
while (i<1000) {
var pos = string.search(/[ \t\n\f-\.\,]/);
if (pos == -1)
break;
// whitespace start
fullPos += pos;
string = string.substr(pos);
////console.log("fullPos: " + fullPos + ", pos: " + pos + ", string: ", string);
// remove whitespaces
var pos = string.search(/[^ \t\n\f-\.\,]/);
if (pos == -1)
break;
// whitespace end
fullPos += pos;
string = string.substr(pos);
////console.log("fullPos: " + fullPos);
this.startWordOffsets.push(fullPos);
i++;
}
//console.log("startWordOffsets: ", this.startWordOffsets);
//console.groupEnd();
};
AttributedStringIterator.prototype = {
getEndIndex: function(pos){
if (typeof(pos) == "undefined")
return this.endIndex;
var string = this.text.substr(pos, this.endIndex - pos);
var posEndOfLine = string.search(/[\n]/);
if (posEndOfLine == -1)
return this.endIndex;
else
return pos + posEndOfLine;
},
getBeginIndex: function(){
return this.beginIndex;
},
isWhitespace: function(pos){
var str = this.text[pos];
var whitespaceChars = " \t\n\f";
return (whitespaceChars.indexOf(str) != -1);
},
isNewLine: function(pos){
var str = this.text[pos];
var whitespaceChars = "\n";
return (whitespaceChars.indexOf(str) != -1);
},
preceding: function(pos){
//console.group("[AttributedStringIterator.preceding]");
for(var i in this.startWordOffsets) {
var startWordOffset = this.startWordOffsets[i];
if (pos < startWordOffset && i>0) {
//console.log("startWordOffset: " + this.startWordOffsets[i-1]);
//console.groupEnd();
return this.startWordOffsets[i-1];
}
}
//console.log("pos: " + pos);
//console.groupEnd();
return this.startWordOffsets[i];
},
following: function(pos){
//console.group("[AttributedStringIterator.following]");
for(var i in this.startWordOffsets) {
var startWordOffset = this.startWordOffsets[i];
if (pos < startWordOffset && i>0) {
//console.log("startWordOffset: " + this.startWordOffsets[i]);
//console.groupEnd();
return this.startWordOffsets[i];
}
}
//console.log("pos: " + pos);
//console.groupEnd();
return this.startWordOffsets[i];
},
ltrim: function(str){
var patt2=/^\s+/g;
return str.replace(patt2, "");
},
rtrim: function(str){
var patt2=/\s+$/g;
return str.replace(patt2, "");
},
getLayout: function(start, limit){
return this.text.substr(start, limit - start);
},
getCharAtPos: function(pos) {
return this.text[pos];
}
};
var LineBreakMeasurer = function(paper, x, y, text, fontAttrs){
this.paper = paper;
this.text = new AttributedStringIterator(text);
this.fontAttrs = fontAttrs;
if (this.text.getEndIndex() - this.text.getBeginIndex() < 1) {
throw {message: "Text must contain at least one character.", code: "IllegalArgumentException"};
}
//this.measurer = new TextMeasurer(paper, this.text, this.fontAttrs);
this.limit = this.text.getEndIndex();
this.pos = this.start = this.text.getBeginIndex();
this.rafaelTextObject = this.paper.text(x, y, this.text.text).attr(fontAttrs).attr("text-anchor", "start");
this.svgTextObject = this.rafaelTextObject[0];
};
LineBreakMeasurer.prototype = {
nextOffset: function(wrappingWidth, offsetLimit, requireNextWord) {
//console.group("[nextOffset]");
var nextOffset = this.pos;
if (this.pos < this.limit) {
if (offsetLimit <= this.pos) {
throw {message: "offsetLimit must be after current position", code: "IllegalArgumentException"};
}
var charAtMaxAdvance = this.getLineBreakIndex(this.pos, wrappingWidth);
//charAtMaxAdvance --;
//console.log("charAtMaxAdvance:", charAtMaxAdvance, ", [" + this.text.getCharAtPos(charAtMaxAdvance) + "]");
if (charAtMaxAdvance == this.limit) {
nextOffset = this.limit;
//console.log("charAtMaxAdvance == this.limit");
} else if (this.text.isNewLine(charAtMaxAdvance)) {
//console.log("isNewLine");
nextOffset = charAtMaxAdvance+1;
} else if (this.text.isWhitespace(charAtMaxAdvance)) {
// TODO: find next noSpaceChar
//return nextOffset;
nextOffset = this.text.following(charAtMaxAdvance);
} else {
// Break is in a word; back up to previous break.
/*
var testPos = charAtMaxAdvance + 1;
if (testPos == this.limit) {
console.error("hbz...");
} else {
nextOffset = this.text.preceding(charAtMaxAdvance);
}
*/
nextOffset = this.text.preceding(charAtMaxAdvance);
if (nextOffset <= this.pos) {
nextOffset = Math.max(this.pos+1, charAtMaxAdvance);
}
}
}
if (nextOffset > offsetLimit) {
nextOffset = offsetLimit;
}
//console.log("nextOffset: " + nextOffset);
//console.groupEnd();
return nextOffset;
},
nextLayout: function(wrappingWidth) {
//console.groupCollapsed("[nextLayout]");
if (this.pos < this.limit) {
var requireNextWord = false;
var layoutLimit = this.nextOffset(wrappingWidth, this.limit, requireNextWord);
//console.log("layoutLimit:", layoutLimit);
if (layoutLimit == this.pos) {
//console.groupEnd();
return null;
}
var result = this.text.getLayout(this.pos, layoutLimit);
//console.log("layout: \"" + result + "\"");
// remove end of line
//var posEndOfLine = this.text.getEndIndex(this.pos);
//if (posEndOfLine < result.length)
// result = result.substr(0, posEndOfLine);
this.pos = layoutLimit;
//console.groupEnd();
return result;
} else {
//console.groupEnd();
return null;
}
},
getLineBreakIndex: function(pos, wrappingWidth) {
//console.group("[getLineBreakIndex]");
//console.log("pos:"+pos + ", text: \""+ this.text.text.replace(/\n/g, "_").substr(pos, 1) + "\"");
var bb = this.rafaelTextObject.getBBox();
var charNum = -1;
try {
var svgPoint = this.svgTextObject.getStartPositionOfChar(pos);
//var dot = this.paper.ellipse(svgPoint.x, svgPoint.y, 1, 1).attr({"stroke-width": 0, fill: Color.blue});
svgPoint.x = svgPoint.x + wrappingWidth;
//svgPoint.y = bb.y;
//console.log("svgPoint:", svgPoint);
//var dot = this.paper.ellipse(svgPoint.x, svgPoint.y, 1, 1).attr({"stroke-width": 0, fill: Color.red});
charNum = this.svgTextObject.getCharNumAtPosition(svgPoint);
} catch (e){
console.warn("getStartPositionOfChar error, pos:" + pos);
/*
var testPos = pos + 1;
if (testPos < this.limit) {
return testPos
}
*/
}
//console.log("charNum:", charNum);
if (charNum == -1) {
//console.groupEnd();
return this.text.getEndIndex(pos);
} else {
// When case there is new line between pos and charnum then use this new line
var newLineIndex = this.text.getEndIndex(pos);
if (newLineIndex < charNum ) {
console.log("newLineIndex <= charNum, newLineIndex:"+newLineIndex+", charNum:"+charNum, "\"" + this.text.text.substr(newLineIndex+1).replace(/\n/g, "?") + "\"");
//console.groupEnd();
return newLineIndex;
}
//var charAtMaxAdvance = this.text.text.substring(charNum, charNum + 1);
var charAtMaxAdvance = this.text.getCharAtPos(charNum);
//console.log("!!charAtMaxAdvance: " + charAtMaxAdvance);
//console.groupEnd();
return charNum;
}
},
getPosition: function() {
return this.pos;
}
};
@@ -1,387 +0,0 @@
/**
* Class to generate polyline
*
* @author Dmitry Farafonov
*/
var ANCHOR_TYPE= {
main: "main",
middle: "middle",
first: "first",
last: "last"
};
function Anchor(uuid, type, x, y) {
this.uuid = uuid;
this.x = x
this.y = y
this.type = (type == ANCHOR_TYPE.middle) ? ANCHOR_TYPE.middle : ANCHOR_TYPE.main;
};
Anchor.prototype = {
uuid: null,
x: 0,
y: 0,
type: ANCHOR_TYPE.main,
isFirst: false,
isLast: false,
ndex: 0,
typeIndex: 0
};
function Polyline(uuid, points, strokeWidth) {
/* Array on coordinates:
* points: [{x: 410, y: 110}, 1
* {x: 570, y: 110}, 1 2
* {x: 620, y: 240}, 2 3
* {x: 750, y: 270}, 3 4
* {x: 650, y: 370}]; 4
*/
this.points = points;
/*
* path for graph
* [["M", x1, y1], ["L", x2, y2], ["C", ax, ay, bx, by, x3, y3], ["L", x3, y3]]
*/
this.path = [];
this.anchors = [];
if (strokeWidth) this.strokeWidth = strokeWidth;
this.closePath = false;
this.init();
};
Polyline.prototype = {
id: null,
points: [],
path: [],
anchors: [],
strokeWidth: 1,
radius: 15,
showDetails: false,
element: null,
isDefaultConditionAvailable: false,
closePath: false,
init: function(points){
var linesCount = this.getLinesCount();
if (linesCount < 1)
return;
this.normalizeCoordinates();
// create anchors
this.pushAnchor(ANCHOR_TYPE.first, this.getLine(0).x1, this.getLine(0).y1);
for(var i = 1; i < linesCount; i++){
var line1 = this.getLine(i-1),
line2 = this.getLine(i);
//this.pushAnchor(ANCHOR_TYPE.middle, line1.x1 + line1.x2-line1.x1, line1.y1 + line1.y2-line1.y1);
this.pushAnchor(ANCHOR_TYPE.main, line1.x2, line1.y2);
//this.pushAnchor(ANCHOR_TYPE.middle, line2.x1 + line2.x2-line2.x1, line2.y1 + line2.y2-line2.y1);
}
this.pushAnchor(ANCHOR_TYPE.last, this.getLine(linesCount-1).x2, this.getLine(linesCount-1).y2);
this.rebuildPath();
},
normalizeCoordinates: function(){
for(var i=0; i < this.points.length; i++){
this.points[i].x = parseFloat(this.points[i].x);
this.points[i].y = parseFloat(this.points[i].y);
}
},
getLinesCount: function(){
return this.points.length-1;
},
_getLine: function(i){
return {x1: this.points[i].x, y1: this.points[i].y, x2: this.points[i+1].x, y2: this.points[i+1].y};
},
getLine: function(i){
var line = this._getLine(i);
line.angle = this.getLineAngle(i) ;
return line;
},
getLineAngle: function(i){
var line = this._getLine(i);
return Math.atan2(line.y2 - line.y1, line.x2 - line.x1);
},
getLineLengthX: function(i){
var line = this.getLine(i);
return (line.x2 - line.x1);
},
getLineLengthY: function(i){
var line = this.getLine(i);
return (line.y2 - line.y1);
},
getLineLength: function(i){
var line = this.getLine(i);
return Math.sqrt(Math.pow(this.getLineLengthX(i), 2) + Math.pow(this.getLineLengthY(i), 2));
},
getAnchors: function(){
// âåðíóòü îòñîðòèðîâàííûé ìàññèâ
// ????
return this.anchors;
},
getAnchorsCount: function(type){
if (!type)
return this.anchors.length;
else {
var count = 0;
for(var i=0; i < this.getAnchorsCount(); i++){
var anchor = this.anchors[i];
if (anchor.getType() == type) {
count++;
}
}
return count;
}
},
pushAnchor: function(type, x, y, index){
if (type == ANCHOR_TYPE.first) {
index = 0;
typeIndex = 0;
} else if (type == ANCHOR_TYPE.last) {
index = this.getAnchorsCount();
typeIndex = 0;
} else if (!index) {
index = this.anchors.length;
} else {
// ïåðåáðàòü anchors, ñäâèíóòü ïîçèöèþ äëÿ êàæäîãî, íà÷èíàÿ ñ index
//var anchor = this.getAnchor()
for(var i=0; i < this.getAnchorsCount(); i++){
var anchor = this.anchors[i];
if (anchor.index > index) {
anchor.index++;
anchor.typeIndex++;
}
}
}
var anchor = new Anchor(this.id, ANCHOR_TYPE.main, x, y, index, typeIndex);
this.anchors.push(anchor);
},
getAnchor: function(position){
return this.anchors[position];
},
getAnchorByType: function(type, position){
if (type == ANCHOR_TYPE.first)
return this.anchors[0];
if (type == ANCHOR_TYPE.last)
return this.anchors[this.getAnchorsCount()-1];
for(var i=0; i < this.getAnchorsCount(); i++){
var anchor = this.anchors[i];
if (anchor.type == type) {
if( position == anchor.position)
return anchor;
}
}
return null;
},
addNewPoint: function(position, x, y){
//
for(var i = 0; i < this.getLinesCount(); i++){
var line = this.getLine(i);
if (x > line.x1 && x < line.x2 && y > line.y1 && y < line.y2) {
this.points.splice(i+1,0,{x: x, y: y});
break;
}
}
this.rebuildPath();
},
rebuildPath: function(){
var path = [];
for(var i = 0; i < this.getAnchorsCount(); i++){
var anchor = this.getAnchor(i);
var pathType = ""
if (i==0)
pathType = "M";
else
pathType = "L";
// TODO: save previous points and calculate new path just if points are updated, and then save currents values as previous
var targetX = anchor.x, targetY = anchor.y;
if (i>0 && i < this.getAnchorsCount()-1) {
// get new x,y
var cx = anchor.x, cy = anchor.y;
// pivot point of prev line
var AO = this.getLineLength(i-1);
if (AO < this.radius) {
AO = this.radius;
}
this.isDefaultConditionAvailable = (this.isDefaultConditionAvailable || (i == 1 && AO > 10));
//console.log("isDefaultConditionAvailable", this.isDefaultConditionAvailable);
var ED = this.getLineLengthY(i-1) * this.radius / AO;
var OD = this.getLineLengthX(i-1) * this.radius / AO;
targetX = anchor.x - OD;
targetY = anchor.y - ED;
if (AO < 2*this.radius && i>1) {
targetX = anchor.x - this.getLineLengthX(i-1)/2;
targetY = anchor.y - this.getLineLengthY(i-1)/2;;
}
// pivot point of next line
var AO = this.getLineLength(i);
if (AO < this.radius) {
AO = this.radius;
}
var ED = this.getLineLengthY(i) * this.radius / AO;
var OD = this.getLineLengthX(i) * this.radius / AO;
var nextSrcX = anchor.x + OD;
var nextSrcY = anchor.y + ED;
if (AO < 2*this.radius && i<this.getAnchorsCount()-2) {
nextSrcX = anchor.x + this.getLineLengthX(i)/2;
nextSrcY = anchor.y + this.getLineLengthY(i)/2;;
}
var dx0 = (cx - targetX) / 3,
dy0 = (cy - targetY) / 3,
ax = cx - dx0,
ay = cy - dy0,
dx1 = (cx - nextSrcX) / 3,
dy1 = (cy - nextSrcY) / 3,
bx = cx - dx1,
by = cy - dy1,
zx=nextSrcX, zy=nextSrcY;
if (this.showDetails) {
var c = ProcessDiagramCanvas.g.path("M"+targetX+","+targetY+"L"+ax+","+ay).attr({stroke: Color.get(255, 153, 51), "stroke-dasharray": "- "});
var c = ProcessDiagramCanvas.g.path("M"+nextSrcX+","+nextSrcY+"L"+bx+","+by).attr({stroke: Color.get(255, 153, 51), "stroke-dasharray": "- "});
var c = ProcessDiagramCanvas.g.ellipse(ax, ay, 2, 2).attr({stroke: Color.SlateGrey});
var c = ProcessDiagramCanvas.g.ellipse(bx, by, 2, 2).attr({stroke: Color.SlateGrey});
var c = ProcessDiagramCanvas.g.ellipse(cx, cy, this.radius, this.radius).attr({stroke: Color.Gainsboro});
var c = ProcessDiagramCanvas.g.ellipse(targetX, targetY, 2, 2).attr({fill: Color.red});
var c = ProcessDiagramCanvas.g.ellipse(nextSrcX, nextSrcY, 2, 2).attr({fill: Color.red});
}
} else if (i==1 && this.getAnchorsCount() == 2){
var AO = this.getLineLength(i-1);
if (AO < this.radius) {
AO = this.radius;
}
this.isDefaultConditionAvailable = (this.isDefaultConditionAvailable || (i == 1 && AO > 10));
//console.log("-- isDefaultConditionAvailable", this.isDefaultConditionAvailable);
}
// anti smoothing
if (this.strokeWidth%2 == 1) {
targetX += 0.5;
targetY += 0.5;
}
path.push([pathType, targetX, targetY]);
if (i>0 && i < this.getAnchorsCount()-1) {
path.push(["C", ax, ay, bx, by, zx, zy]);
}
}
if (this.closePath) {
console.log("closePath:", this.closePath);
path.push(["Z"]);
}
this.path = path;
},
transform: function(transformation){
this.element.transform(transformation);
},
attr: function(attrs){
//console.log("attrs: " +attrs, "", this.element);
// TODO: foreach and set each
this.element.attr(attrs);
}
};
function Polygone(points, strokeWidth) {
/* Array on coordinates:
* points: [{x: 410, y: 110}, 1
* {x: 570, y: 110}, 1 2
* {x: 620, y: 240}, 2 3
* {x: 750, y: 270}, 3 4
* {x: 650, y: 370}]; 4
*/
this.points = points;
/*
* path for graph
* [["M", x1, y1], ["L", x2, y2], ["C", ax, ay, bx, by, x3, y3], ["L", x3, y3]]
*/
this.path = [];
this.anchors = [];
if (strokeWidth) this.strokeWidth = strokeWidth;
this.closePath = true;
this.init();
};
/*
* Poligone is inherited from Poliline: draws closedPath of polyline
*/
var Foo = function () { };
Foo.prototype = Polyline.prototype;
Polygone.prototype = new Foo();
Polygone.prototype.rebuildPath = function(){
var path = [];
//console.log("Polygone rebuildPath");
for(var i = 0; i < this.getAnchorsCount(); i++){
var anchor = this.getAnchor(i);
var pathType = ""
if (i==0)
pathType = "M";
else
pathType = "L";
var targetX = anchor.x, targetY = anchor.y;
// anti smoothing
if (this.strokeWidth%2 == 1) {
targetX += 0.5;
targetY += 0.5;
}
path.push([pathType, targetX, targetY]);
}
if (this.closePath)
path.push(["Z"]);
this.path = path;
};
/*
Polygone.prototype.transform = function(transformation){
this.element.transform(transformation);
};
*/
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,125 +0,0 @@
/*
* This file is part of the jquery plugin "asyncQueue".
*
* (c) Sebastien Roch <roch.sebastien@gmail.com>
* @author (parallel) Dmitry Farafonov
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
(function($){
$.AsyncQueue = function() {
var that = this,
queue = [],
completeFunc,
failureFunc,
paused = false,
lastCallbackData,
_run,
_complete,
inQueue = 0,
defaultTimeOut = 10;
_run = function() {
var f = queue.shift();
if (f) {
inQueue++;
setTimeout(function(){
f.fn.apply(that, [that]);
if (!f.isParallel)
if (paused === false) {
_run();
}
inQueue --;
if (inQueue == 0 && queue.length == 0)
_complete();
}, f.timeOut);
if (f.isParallel)
if (paused === false) {
_run();
}
}
};
_complete = function(){
if (completeFunc)
completeFunc.apply(that, [that]);
};
this.onComplete = function(func) {
completeFunc = func;
};
this.onFailure = function(func) {
failureFunc = func;
};
this.add = function(func) {
// TODO: add callback for queue[i] complete
var obj = arguments[0];
if (obj && Object.prototype.toString.call(obj) === "[object Array]") {
var fn = arguments[1];
var timeOut = (typeof(arguments[2]) != "undefined")? arguments[2] : defaultTimeOut;
if (typeof(fn) == "function") {
for(var i = 0; i < obj.length; i++) {
var f = function(objx){
queue.push({isParallel: true, fn: function(){fn.apply(that, [that, objx]);}, timeOut: timeOut});
}(obj[i])
}
}
} else {
var fn = arguments[0];
var timeOut = (typeof(arguments[1]) != "undefined")? arguments[2] : defaultTimeOut;
queue.push({isParallel: false, fn: func, timeOut: timeOut});
}
return this;
};
this.addParallel = function(func, timeOut) {
// TODO: add callback for queue[i] complete
queue.push({isParallel: true, fn: func, timeOut: timeOut});
return this;
};
this.storeData = function(dataObject) {
lastCallbackData = dataObject;
return this;
};
this.lastCallbackData = function () {
return lastCallbackData;
};
this.run = function() {
paused = false;
_run();
};
this.pause = function () {
paused = true;
return this;
};
this.failure = function() {
paused = true;
if (failureFunc) {
var args = [that];
for(i = 0; i < arguments.length; i++) {
args.push(arguments[i]);
}
failureFunc.apply(that, args);
}
};
this.size = function(){
return queue.length;
};
return this;
}
})(jQuery);
File diff suppressed because it is too large Load Diff
@@ -1,131 +0,0 @@
/*
* @ Dmitry Farafonov
*/
(function($){
$.ProgressBar = function(options) {
this.element = $(options.boundingBox);
if (options.on && options.on.complete){
this.onComplete = options.on.complete;
}
if (options.on && options.on.valueChange){
this.onValueChange = options.on.valueChange;
}
this._create();
if (options.label)
this.set("label", options.label);
if (options.value)
this.value(options.value);
if (options.max)
this.set("max", options.max);
};
$.ProgressBar.prototype = {
options: {
value: 0,
max: 100
},
min: 0,
_create: function() {
this.element
.addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
.attr({
role: "progressbar",
"aria-valuemin": this.min,
"aria-valuemax": this.options.max,
"aria-valuenow": this._value()
});
this.valueDiv = $( "<div class='ui-progressbar-label'></div>" )
.appendTo( this.element );
this.valueDiv = $( "<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>" )
.appendTo( this.element );
this.oldValue = this._value();
this._refreshValue();
},
_destroy: function() {
this.element
.removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
.removeAttr( "role" )
.removeAttr( "aria-valuemin" )
.removeAttr( "aria-valuemax" )
.removeAttr( "aria-valuenow" );
this.valueDiv.remove();
},
value: function( newValue ) {
if ( newValue === undefined ) {
return this._value();
}
this._setOption( "value", newValue );
return this;
},
_setOption: function( key, value ) {
if ( key === "value" ) {
//var oldVal = this.options.value;
this.options.value = value;
this._refreshValue();
if (this.onValueChange)
this.onValueChange.apply(this, [{oldVal: this.oldValue, newVal: value}]);
if ( this._value() === this.options.max ) {
//this._trigger( "complete" );
if (this.onComplete)
this.onComplete.apply(this);
}
} else if (key === "label") {
$(this.element).find(".ui-progressbar-label").html(value);
} else if (key === "max") {
this.options.max = value;
}
//this._super( key, value );
},
_value: function() {
var val = this.options.value;
// normalize invalid value
if ( typeof val !== "number" ) {
val = 0;
}
return Math.min( this.options.max, Math.max( this.min, val ) );
},
_percentage: function() {
return 100 * this._value() / this.options.max;
},
_refreshValue: function() {
var value = this.value(),
percentage = this._percentage();
if ( this.oldValue !== value ) {
this.oldValue = value;
//this._trigger( "change" );
}
this.valueDiv
.toggle( value > this.min )
.toggleClass( "ui-corner-right", value === this.options.max )
.width( percentage.toFixed(0) + "%" );
this.element.attr( "aria-valuenow", value );
//$(this.element).find(".ui-progressbar-label").html(value + "%");
},
set: function(key, value){
this._setOption(key, value);
}
};
})( jQuery );
@@ -1,23 +0,0 @@
if (typeof(console) == "undefined") {
var console = {
info: function(){},
warn: function(){},
error: function(){},
log: function(){},
time: function(){},
timeEnd: function(){}
};
}
if(!Array.isArray) {
Array.isArray = function (vArg) {
return Object.prototype.toString.call(vArg) === "[object Array]";
};
}
if (!Object.isSVGElement) {
Object.isSVGElement = function(vArg) {
var str = Object.prototype.toString.call(vArg);
return (str.indexOf("[object SVG") == 0);
};
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
@@ -1,441 +0,0 @@
 window.onload = function () {
var paper = Raphael("holder");
//var curve = paper.ellipse(100, 100, 1, 1).attr({"stroke-width": 0, fill: Color.red});
var text = "Betty Botter bought some butter but, she said, the butter's bitter. If I put it in my batter, it will make my batter bitter. But a bit of better butter will make my batter better. So, she bought a bit of butter, better than her bitter butter, and she put it in her batter, and the batter was not bitter. It was better Betty Botter bought a bit better butter.";
var font = {font: "11px Arial", "font-style":"italic", opacity: 1, "fill": LABEL_COLOR, stroke: LABEL_COLOR, "stroke-width":.3};
var font = {font: "11px Arial", opacity: 1, "fill": LABEL_COLOR};
var boxWidth = 100
var AttributedStringIterator = function(text){
//this.text = this.rtrim(this.ltrim(text));
text = text.replace(/(\s)+/, " ");
this.text = this.rtrim(text);
/*
if (beginIndex < 0 || beginIndex > endIndex || endIndex > length()) {
throw new IllegalArgumentException("Invalid substring range");
}
*/
this.beginIndex = 0;
this.endIndex = this.text.length;
this.currentIndex = this.beginIndex;
//console.group("[AttributedStringIterator]");
var i = 0;
var string = this.text;
var fullPos = 0;
//console.log("string: \"" + string + "\", length: " + string.length);
this.startWordOffsets = [];
this.startWordOffsets.push(fullPos);
// TODO: remove i 1000
while (i<1000) {
var pos = string.search(/[ \t\n\f-\.\,]/);
if (pos == -1)
break;
// whitespace start
fullPos += pos;
string = string.substr(pos);
////console.log("fullPos: " + fullPos + ", pos: " + pos + ", string: ", string);
// remove whitespaces
var pos = string.search(/[^ \t\n\f-\.\,]/);
if (pos == -1)
break;
// whitespace end
fullPos += pos;
string = string.substr(pos);
////console.log("fullPos: " + fullPos);
this.startWordOffsets.push(fullPos);
i++;
}
//console.log("startWordOffsets: ", this.startWordOffsets);
//console.groupEnd();
};
AttributedStringIterator.prototype = {
getEndIndex: function(pos){
if (typeof(pos) == "undefined")
return this.endIndex;
var string = this.text.substr(pos, this.endIndex - pos);
var posEndOfLine = string.search(/[\n]/);
if (posEndOfLine == -1)
return this.endIndex;
else
return pos + posEndOfLine;
},
getBeginIndex: function(){
return this.beginIndex;
},
isWhitespace: function(pos){
var str = this.text[pos];
var whitespaceChars = " \t\n\f";
return (whitespaceChars.indexOf(str) != -1);
},
isNewLine: function(pos){
var str = this.text[pos];
var whitespaceChars = "\n";
return (whitespaceChars.indexOf(str) != -1);
},
preceding: function(pos){
//console.group("[AttributedStringIterator.preceding]");
for(var i in this.startWordOffsets) {
var startWordOffset = this.startWordOffsets[i];
if (pos < startWordOffset && i>0) {
//console.log("startWordOffset: " + this.startWordOffsets[i-1]);
//console.groupEnd();
return this.startWordOffsets[i-1];
}
}
//console.log("pos: " + pos);
//console.groupEnd();
return this.startWordOffsets[i];
},
following: function(pos){
//console.group("[AttributedStringIterator.following]");
for(var i in this.startWordOffsets) {
var startWordOffset = this.startWordOffsets[i];
if (pos < startWordOffset && i>0) {
//console.log("startWordOffset: " + this.startWordOffsets[i]);
//console.groupEnd();
return this.startWordOffsets[i];
}
}
//console.log("pos: " + pos);
//console.groupEnd();
return this.startWordOffsets[i];
},
ltrim: function(str){
var patt2=/^\s+/g;
return str.replace(patt2, "");
},
rtrim: function(str){
var patt2=/\s+$/g;
return str.replace(patt2, "");
},
getLayout: function(start, limit){
return this.text.substr(start, limit - start);
},
getCharAtPos: function(pos) {
return this.text[pos];
}
};
/*
var TextMeasurer = function(paper, text, fontAttrs){
this.text = text;
this.paper = paper;
this.fontAttrs = fontAttrs;
this.fStart = this.text.getBeginIndex();
};
TextMeasurer.prototype = {
getLineBreakIndex: function(start, maxAdvance){
var localStart = start - this.fStart;
},
getLayout: function(){
}
}
*/
var LineBreakMeasurer = function(paper, text, fontAttrs){
this.paper = paper;
this.text = new AttributedStringIterator(text);
this.fontAttrs = fontAttrs;
if (this.text.getEndIndex() - this.text.getBeginIndex() < 1) {
throw {message: "Text must contain at least one character.", code: "IllegalArgumentException"};
}
//this.measurer = new TextMeasurer(paper, this.text, this.fontAttrs);
this.limit = this.text.getEndIndex();
this.pos = this.start = this.text.getBeginIndex();
this.rafaelTextObject = this.paper.text(100, 100, this.text.text).attr(fontAttrs).attr("text-anchor", "start");
this.svgTextObject = this.rafaelTextObject[0];
};
LineBreakMeasurer.prototype = {
nextOffset: function(wrappingWidth, offsetLimit, requireNextWord) {
//console.group("[nextOffset]");
var nextOffset = this.pos;
if (this.pos < this.limit) {
if (offsetLimit <= this.pos) {
throw {message: "offsetLimit must be after current position", code: "IllegalArgumentException"};
}
var charAtMaxAdvance = this.getLineBreakIndex(this.pos, wrappingWidth);
//charAtMaxAdvance --;
//console.log("charAtMaxAdvance:", charAtMaxAdvance, ", [" + this.text.getCharAtPos(charAtMaxAdvance) + "]");
if (charAtMaxAdvance == this.limit) {
nextOffset = this.limit;
//console.log("charAtMaxAdvance == this.limit");
} else if (this.text.isNewLine(charAtMaxAdvance)) {
console.log("isNewLine");
nextOffset = charAtMaxAdvance+1;
} else if (this.text.isWhitespace(charAtMaxAdvance)) {
// TODO: find next noSpaceChar
//return nextOffset;
nextOffset = this.text.following(charAtMaxAdvance);
} else {
// Break is in a word; back up to previous break.
/*
var testPos = charAtMaxAdvance + 1;
if (testPos == this.limit) {
console.error("hbz...");
} else {
nextOffset = this.text.preceding(charAtMaxAdvance);
}
*/
nextOffset = this.text.preceding(charAtMaxAdvance);
if (nextOffset <= this.pos) {
nextOffset = Math.max(this.pos+1, charAtMaxAdvance);
}
}
}
if (nextOffset > offsetLimit) {
nextOffset = offsetLimit;
}
//console.log("nextOffset: " + nextOffset);
//console.groupEnd();
return nextOffset;
},
nextLayout: function(wrappingWidth) {
//console.groupCollapsed("[nextLayout]");
if (this.pos < this.limit) {
var requireNextWord = false;
var layoutLimit = this.nextOffset(wrappingWidth, this.limit, requireNextWord);
//console.log("layoutLimit:", layoutLimit);
if (layoutLimit == this.pos) {
//console.groupEnd();
return null;
}
var result = this.text.getLayout(this.pos, layoutLimit);
//console.log("layout: \"" + result + "\"");
// remove end of line
//var posEndOfLine = this.text.getEndIndex(this.pos);
//if (posEndOfLine < result.length)
// result = result.substr(0, posEndOfLine);
this.pos = layoutLimit;
//console.groupEnd();
return result;
} else {
//console.groupEnd();
return null;
}
},
getLineBreakIndex: function(pos, wrappingWidth) {
//console.group("[getLineBreakIndex]");
//console.log("pos:"+pos + ", text: \""+ this.text.text.replace(/\n/g, "_").substr(pos, 1) + "\"");
var bb = this.rafaelTextObject.getBBox();
var charNum = -1;
try {
var svgPoint = this.svgTextObject.getStartPositionOfChar(pos);
//var dot = this.paper.ellipse(svgPoint.x, svgPoint.y, 1, 1).attr({"stroke-width": 0, fill: Color.blue});
svgPoint.x = svgPoint.x + wrappingWidth;
//svgPoint.y = bb.y;
//console.log("svgPoint:", svgPoint);
//var dot = this.paper.ellipse(svgPoint.x, svgPoint.y, 1, 1).attr({"stroke-width": 0, fill: Color.red});
charNum = this.svgTextObject.getCharNumAtPosition(svgPoint);
} catch (e){
console.warn("getStartPositionOfChar error, pos:" + pos);
/*
var testPos = pos + 1;
if (testPos < this.limit) {
return testPos
}
*/
}
//console.log("charNum:", charNum);
if (charNum == -1) {
//console.groupEnd();
return this.text.getEndIndex(pos);
} else {
// When case there is new line between pos and charnum then use this new line
var newLineIndex = this.text.getEndIndex(pos);
if (newLineIndex < charNum ) {
console.log("newLineIndex <= charNum, newLineIndex:"+newLineIndex+", charNum:"+charNum, "\"" + this.text.text.substr(newLineIndex+1).replace(/\n/g, "↵") + "\"");
//console.groupEnd();
return newLineIndex;
}
//var charAtMaxAdvance = this.text.text.substring(charNum, charNum + 1);
var charAtMaxAdvance = this.text.getCharAtPos(charNum);
//console.log("!!charAtMaxAdvance: " + charAtMaxAdvance);
//console.groupEnd();
return charNum;
}
},
getPosition: function() {
return this.pos;
}
};
// ******
function drawMultilineText(text, x, y, boxWidth, boxHeight, options) {
var TEXT_PADDING = 3;
var width = boxWidth - (2 * TEXT_PADDING);
if (boxHeight)
var height = boxHeight - (2 * TEXT_PADDING);
var layouts = [];
var measurer = new LineBreakMeasurer(paper, text, font);
var lineHeight = measurer.rafaelTextObject.getBBox().height;
console.log("text: ", text.replace(/\n/g, "↵"));
if (height) {
var availableLinesCount = parseInt(height/lineHeight);
console.log("availableLinesCount: " + availableLinesCount);
}
var i = 1;
while (measurer.getPosition() < measurer.text.getEndIndex()) {
var layout = measurer.nextLayout(width);
//console.log("LAYOUT: " + layout + ", getPosition: " + measurer.getPosition());
if (layout != null) {
if (!availableLinesCount || i < availableLinesCount) {
layouts.push(layout);
} else {
layouts.push(fitTextToWidth(layout + "...", boxWidth));
break;
}
}
i++;
};
console.log(layouts);
measurer.rafaelTextObject.attr({"text": layouts.join("\n")});
//measurer.rafaelTextObject.attr({"text-anchor": "end"});
//measurer.rafaelTextObject.attr({"text-anchor": "middle"});
if (options)
measurer.rafaelTextObject.attr({"text-anchor": options["text-anchor"]});
var bb = measurer.rafaelTextObject.getBBox();
//measurer.rafaelTextObject.attr({"x": x + boxWidth/2});
if (options["vertical-align"] == "top")
measurer.rafaelTextObject.attr({"y": y + bb.height/2 + TEXT_PADDING});
else
measurer.rafaelTextObject.attr({"y": y + height/2});
//var bb = measurer.rafaelTextObject.getBBox();
if (measurer.rafaelTextObject.attr("text-anchor") == "middle" )
measurer.rafaelTextObject.attr("x", x + boxWidth/2 + TEXT_PADDING/2);
else if (measurer.rafaelTextObject.attr("text-anchor") == "end" )
measurer.rafaelTextObject.attr("x", x + boxWidth + TEXT_PADDING/2);
else
measurer.rafaelTextObject.attr("x", x + boxWidth/2 - bb.width/2 + TEXT_PADDING/2);
var boxStyle = {stroke: Color.LightSteelBlue2, "stroke-width": 1.0, "stroke-dasharray": "- "};
/*
var box = paper.rect(x+.0 + boxWidth/2 - bb.width/2+ TEXT_PADDING/2, y + .5 + boxHeight/2 - bb.height/2, width, height).attr(boxStyle);
box.attr("height", bb.height);
*/
//var box = paper.rect(bb.x - .5 + bb.width/2 + TEXT_PADDING, bb.y + bb.height/2, bb.width, bb.height).attr(boxStyle);
var textAreaCX = x + boxWidth/2;
var textAreaCY = y + height/2;
var dotLeftTop = paper.ellipse(x, y, 3, 3).attr({"stroke-width": 0, fill: Color.LightSteelBlue, stroke: "none"});
var dotCenter = paper.ellipse(textAreaCX, textAreaCY, 3, 3).attr({fill: Color.LightSteelBlue2, stroke: "none"});
/*
// real bbox
var bb = measurer.rafaelTextObject.getBBox();
var rect = paper.rect(bb.x+.5, bb.y + .5, bb.width, bb.height).attr({"stroke-width": 1});
*/
var boxStyle = {stroke: Color.LightSteelBlue2, "stroke-width": 1.0, "stroke-dasharray": "- "};
var rect = paper.rect(x+.5, y + .5, boxWidth, boxHeight).attr(boxStyle);
}
/*
for (var i=0; i<1; i++) {
var t = text;
//var t = "Высококвалифицирова";
var text = paper.text(300, 100, t).attr(font).attr("text-anchor", "start");
var bbText = text.getBBox();
paper.rect(300+.5, 100 + .5, bbText.width, bbText.height).attr({"stroke-width": 1});
console.log("t: ", t.replace(/\n/g, "↵"));
while (measurer.getPosition() < measurer.text.getEndIndex()) {
var layout = measurer.nextLayout(width);
//console.log("LAYOUT: " + layout + ", getPosition: " + measurer.getPosition());
if (layout != null)
layouts.push(layout);
};
measurer.rafaelTextObject.attr("text", layouts.join("\n"));
var bb = measurer.rafaelTextObject.getBBox();
var rect = paper.rect(bb.x+.5, bb.y + .5, bb.width, bb.height).attr({"stroke-width": 1});
lay.push(layouts);
console.log(layouts);
}
*/
var fitTextToWidth = function(original, width) {
var text = original;
// TODO: move attr on parameters
var attr = {font: "11px Arial", opacity: 0};
// remove length for "..."
var dots = paper.text(0, 0, "...").attr(attr).hide();
var dotsBB = dots.getBBox();
var maxWidth = width - dotsBB.width;
var textElement = paper.text(0, 0, text).attr(attr).hide();
var bb = textElement.getBBox();
// it's a little bit incorrect with "..."
while (bb.width > maxWidth && text.length > 0) {
text = text.substring(0, text.length - 1);
textElement.attr({"text": text});
bb = textElement.getBBox();
}
// remove element from paper
textElement.remove();
if (text != original) {
text = text + "...";
}
return text;
}
var x=100, y=90, height=20;
var options = {"text-anchor": "middle", "boxHeight": 150, "vertical-align": "top"};
var options = {"boxHeight": 150, "vertical-align": "top"};
drawMultilineText(text, x, y, 150, 100, options);
};
@@ -1 +0,0 @@
body { background: #fafafa; color: #708090; /* font: 300 100.1% "Helvetica Neue", Helvetica, "Arial Unicode MS", Arial, sans-serif; */ font-family: Verdana, sans-serif, Arial; font-size: 10px; } .wrapper{ height: 100%; position: relative; width: 100%; } /* #holder { height: 480px; width: 640px; b_ackground: #F8F8FF; -moz-border-radius: 10px; -webkit-border-radius: 10px; -webkit-box-shadow: 0 1px 3px #666; background: #DDD url(./images/bg.png); /* background: #DDD url(./images/checker-bg.png); * / b_order:0px solid #dedede; } */ div.diagramHolder { float:left; } div.diagram{ border:1px solid #dedede; margin: 5px; padding: 5px; background: #FFF; } div.diagram.hidden{ display:none; } svg { background: #DDD url(./images/bg.png); } div.diagram-info { float:left; position: relative; padding: 5px; } /* Breadcrumbs */ #diagramBreadCrumbs { margin-left: 2px; margin-right: 2px; margin-top: 10px; } #diagramBreadCrumbs ul { list-style: none; background-color: white; border: 1px solid #DEDEDE; border-color: #C0C2C5; margin: 0; margin-bottom: 10px; margin-left: 0; -webkit-padding-start: 0px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } #diagramBreadCrumbs li { /*text-decoration: underline;*/ display: inline-block; vertical-align: middle; padding-left: .75em; padding-right: 0; cursor: pointer; } #diagramBreadCrumbs li.selected { color: #9370DB; color: #4876FF; color: #4F94CD; font-weight: bold; } #diagramBreadCrumbs li span { background: url(images/breadcrumbs.png) no-repeat 100% 50%; display: block; padding: .5em 15px .5em 0; } /* Progress bar */ .ui-progressbar { height: 25px; /*height:2em; text-align: left; overflow: hidden; */ background: white; border: 1px solid #949DAD; margin: 2px; overflow: hidden; padding: 1px; position: relative; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } .ui-progressbar .ui-progressbar-value { m_argin: -1px; height:100%; background: #D4E4FF; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } .ui-widget-header a { color: #222222/*{fcHeader}*/; } .ui-progressbar .ui-progressbar-label{ position: absolute; margin-top: 7px; border:0px solid red; width: 100%; text-align: center; }
@@ -1,26 +0,0 @@
/*
* Activiti Modeler component part of the Activiti project
* Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
'use strict';
var ACTIVITI = ACTIVITI || {};
ACTIVITI.CONFIG = {
'contextRoot' : '/library/api/service',
};
@@ -1,432 +0,0 @@
/*
* Activiti Modeler component part of the Activiti project
* Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
'use strict';
var activitiModeler = angular.module('activitiModeler', [
'ngCookies',
'ngResource',
'ngSanitize',
'ngRoute',
'ngDragDrop',
'mgcrea.ngStrap',
'ngGrid',
'ngAnimate',
'pascalprecht.translate',
'duScroll'
]);
var activitiModule = activitiModeler;
activitiModeler
// Initialize routes
.config(['$selectProvider', '$translateProvider', function ($selectProvider, $translateProvider) {
// Override caret for bs-select directive
angular.extend($selectProvider.defaults, {
caretHtml: '&nbsp;<i class="icon icon-caret-down"></i>'
});
// Initialize angular-translate
$translateProvider.useStaticFilesLoader({
prefix: './editor-app/i18n/',
suffix: '.json'
});
$translateProvider.preferredLanguage('en');
// remember language
$translateProvider.useCookieStorage();
}])
.run(['$rootScope', '$timeout', '$modal', '$translate', '$location', '$window', '$http', '$q',
function($rootScope, $timeout, $modal, $translate, $location, $window, $http, $q) {
$rootScope.config = ACTIVITI.CONFIG;
$rootScope.editorInitialized = false;
$rootScope.editorFactory = $q.defer();
$rootScope.forceSelectionRefresh = false;
$rootScope.ignoreChanges = false; // by default never ignore changes
$rootScope.validationErrors = [];
$rootScope.staticIncludeVersion = Date.now();
/**
* A 'safer' apply that avoids concurrent updates (which $apply allows).
*/
$rootScope.safeApply = function(fn) {
var phase = this.$root.$$phase;
if(phase == '$apply' || phase == '$digest') {
if(fn && (typeof(fn) === 'function')) {
fn();
}
} else {
this.$apply(fn);
}
};
/**
* Initialize the event bus: couple all Oryx events with a dispatch of the
* event of the event bus. This way, it gets much easier to attach custom logic
* to any event.
*/
/* Helper method to fetch model from server (always needed) */
function fetchModel(modelId) {
var modelUrl = KISBPM.URL.getModel(modelId);
$http({method: 'GET', url: modelUrl}).
success(function (data, status, headers, config) {
$rootScope.editor = new ORYX.Editor(data);
$rootScope.modelData = angular.fromJson(data);
$rootScope.editorFactory.resolve();
}).
error(function (data, status, headers, config) {
console.log('Error loading model with id ' + modelId + ' ' + data);
});
}
function initScrollHandling() {
var canvasSection = jQuery('#canvasSection');
canvasSection.scroll(function() {
// Hides the resizer and quick menu items during scrolling
var selectedElements = $rootScope.editor.selection;
var subSelectionElements = $rootScope.editor._subSelection;
$rootScope.selectedElements = selectedElements;
$rootScope.subSelectionElements = subSelectionElements;
if (selectedElements && selectedElements.length > 0) {
$rootScope.selectedElementBeforeScrolling = selectedElements[0];
}
jQuery('.Oryx_button').each(function(i, obj) {
$rootScope.orginalOryxButtonStyle = obj.style.display;
obj.style.display = 'none';
});
jQuery('.resizer_southeast').each(function(i, obj) {
$rootScope.orginalResizerSEStyle = obj.style.display;
obj.style.display = 'none';
});
jQuery('.resizer_northwest').each(function(i, obj) {
$rootScope.orginalResizerNWStyle = obj.style.display;
obj.style.display = 'none';
});
$rootScope.editor.handleEvents({type:ORYX.CONFIG.EVENT_CANVAS_SCROLL});
});
canvasSection.scrollStopped(function(){
// Puts the quick menu items and resizer back when scroll is stopped.
$rootScope.editor.setSelection([]); // needed cause it checks for element changes and does nothing if the elements are the same
$rootScope.editor.setSelection($rootScope.selectedElements, $rootScope.subSelectionElements);
$rootScope.selectedElements = undefined;
$rootScope.subSelectionElements = undefined;
function handleDisplayProperty(obj) {
if (jQuery(obj).position().top > 0) {
obj.style.display = 'block';
} else {
obj.style.display = 'none';
}
}
jQuery('.Oryx_button').each(function(i, obj) {
handleDisplayProperty(obj);
});
jQuery('.resizer_southeast').each(function(i, obj) {
handleDisplayProperty(obj);
});
jQuery('.resizer_northwest').each(function(i, obj) {
handleDisplayProperty(obj);
});
});
}
/**
* Initialize the Oryx Editor when the content has been loaded
*/
$rootScope.$on('$includeContentLoaded', function (event) {
if (!$rootScope.editorInitialized) {
ORYX._loadPlugins();
var modelId = EDITOR.UTIL.getParameterByName('modelId');
fetchModel(modelId);
$rootScope.window = {};
var updateWindowSize = function() {
$rootScope.window.width = $window.innerWidth;
$rootScope.window.height = $window.innerHeight;
};
// Window resize hook
angular.element($window).bind('resize', function() {
$rootScope.safeApply(updateWindowSize());
});
$rootScope.$watch('window.forceRefresh', function(newValue) {
if(newValue) {
$timeout(function() {
updateWindowSize();
$rootScope.window.forceRefresh = false;
});
}
});
updateWindowSize();
// Hook in resizing of main panels when window resizes
// TODO: perhaps move to a separate JS-file?
jQuery(window).resize(function () {
// Calculate the offset based on the bottom of the module header
var offset = jQuery("#editor-header").offset();
var propSectionHeight = jQuery('#propertySection').height();
var canvas = jQuery('#canvasSection');
var mainHeader = jQuery('#main-header');
if (offset == undefined || offset === null
|| propSectionHeight === undefined || propSectionHeight === null
|| canvas === undefined || canvas === null || mainHeader === null) {
return;
}
if ($rootScope.editor)
{
var selectedElements = $rootScope.editor.selection;
var subSelectionElements = $rootScope.editor._subSelection;
$rootScope.selectedElements = selectedElements;
$rootScope.subSelectionElements = subSelectionElements;
if (selectedElements && selectedElements.length > 0)
{
$rootScope.selectedElementBeforeScrolling = selectedElements[0];
$rootScope.editor.setSelection([]); // needed cause it checks for element changes and does nothing if the elements are the same
$rootScope.editor.setSelection($rootScope.selectedElements, $rootScope.subSelectionElements);
$rootScope.selectedElements = undefined;
$rootScope.subSelectionElements = undefined;
}
}
var totalAvailable = jQuery(window).height() - offset.top - mainHeader.height() - 21;
canvas.height(totalAvailable - propSectionHeight);
jQuery('#paletteSection').height(totalAvailable);
// Update positions of the resize-markers, according to the canvas
var actualCanvas = null;
if (canvas && canvas[0].children[1]) {
actualCanvas = canvas[0].children[1];
}
var canvasTop = canvas.position().top;
var canvasLeft = canvas.position().left;
var canvasHeight = canvas[0].clientHeight;
var canvasWidth = canvas[0].clientWidth;
var iconCenterOffset = 8;
var widthDiff = 0;
var actualWidth = 0;
if(actualCanvas) {
// In some browsers, the SVG-element clientwidth isn't available, so we revert to the parent
actualWidth = actualCanvas.clientWidth || actualCanvas.parentNode.clientWidth;
}
if(actualWidth < canvas[0].clientWidth) {
widthDiff = actualWidth - canvas[0].clientWidth;
// In case the canvas is smaller than the actual viewport, the resizers should be moved
canvasLeft -= widthDiff / 2;
canvasWidth += widthDiff;
}
var iconWidth = 17;
var iconOffset = 20;
var north = jQuery('#canvas-grow-N');
north.css('top', canvasTop + iconOffset + 'px');
north.css('left', canvasLeft - 10 + (canvasWidth - iconWidth) / 2 + 'px');
var south = jQuery('#canvas-grow-S');
south.css('top', (canvasTop + canvasHeight - iconOffset - iconCenterOffset) + 'px');
south.css('left', canvasLeft - 10 + (canvasWidth - iconWidth) / 2 + 'px');
var east = jQuery('#canvas-grow-E');
east.css('top', canvasTop - 10 + (canvasHeight - iconWidth) / 2 + 'px');
east.css('left', (canvasLeft + canvasWidth - iconOffset - iconCenterOffset) + 'px');
var west = jQuery('#canvas-grow-W');
west.css('top', canvasTop -10 + (canvasHeight - iconWidth) / 2 + 'px');
west.css('left', canvasLeft + iconOffset + 'px');
north = jQuery('#canvas-shrink-N');
north.css('top', canvasTop + iconOffset + 'px');
north.css('left', canvasLeft + 10 + (canvasWidth - iconWidth) / 2 + 'px');
south = jQuery('#canvas-shrink-S');
south.css('top', (canvasTop + canvasHeight - iconOffset - iconCenterOffset) + 'px');
south.css('left', canvasLeft +10 + (canvasWidth - iconWidth) / 2 + 'px');
east = jQuery('#canvas-shrink-E');
east.css('top', canvasTop + 10 + (canvasHeight - iconWidth) / 2 + 'px');
east.css('left', (canvasLeft + canvasWidth - iconOffset - iconCenterOffset) + 'px');
west = jQuery('#canvas-shrink-W');
west.css('top', canvasTop + 10 + (canvasHeight - iconWidth) / 2 + 'px');
west.css('left', canvasLeft + iconOffset + 'px');
});
jQuery(window).trigger('resize');
jQuery.fn.scrollStopped = function(callback) {
jQuery(this).scroll(function(){
var self = this, $this = jQuery(self);
if ($this.data('scrollTimeout')) {
clearTimeout($this.data('scrollTimeout'));
}
$this.data('scrollTimeout', setTimeout(callback,50,self));
});
};
// Always needed, cause the DOM element on which the scroll event listeners are attached are changed for every new model
initScrollHandling();
$rootScope.editorInitialized = true;
}
});
/**
* Initialize the event bus: couple all Oryx events with a dispatch of the
* event of the event bus. This way, it gets much easier to attach custom logic
* to any event.
*/
$rootScope.editorFactory.promise.then(function() {
KISBPM.eventBus.editor = $rootScope.editor;
var eventMappings = [
{ oryxType : ORYX.CONFIG.EVENT_SELECTION_CHANGED, kisBpmType : KISBPM.eventBus.EVENT_TYPE_SELECTION_CHANGE },
{ oryxType : ORYX.CONFIG.EVENT_DBLCLICK, kisBpmType : KISBPM.eventBus.EVENT_TYPE_DOUBLE_CLICK },
{ oryxType : ORYX.CONFIG.EVENT_MOUSEOUT, kisBpmType : KISBPM.eventBus.EVENT_TYPE_MOUSE_OUT },
{ oryxType : ORYX.CONFIG.EVENT_MOUSEOVER, kisBpmType : KISBPM.eventBus.EVENT_TYPE_MOUSE_OVER }
];
eventMappings.forEach(function(eventMapping) {
$rootScope.editor.registerOnEvent(eventMapping.oryxType, function(event) {
KISBPM.eventBus.dispatch(eventMapping.kisBpmType, event);
});
});
$rootScope.editor.registerOnEvent(ORYX.CONFIG.EVENT_SHAPEREMOVED, function (event) {
var validateButton = document.getElementById(event.shape.resourceId + "-validate-button");
if (validateButton)
{
validateButton.style.display = 'none';
}
});
// The Oryx canvas is ready (we know since we're in this promise callback) and the
// event bus is ready. The editor is now ready for use
KISBPM.eventBus.dispatch(KISBPM.eventBus.EVENT_TYPE_EDITOR_READY, {type : KISBPM.eventBus.EVENT_TYPE_EDITOR_READY});
});
// Alerts
$rootScope.alerts = {
queue: []
};
$rootScope.showAlert = function(alert) {
if(alert.queue.length > 0) {
alert.current = alert.queue.shift();
// Start timout for message-pruning
alert.timeout = $timeout(function() {
if (alert.queue.length == 0) {
alert.current = undefined;
alert.timeout = undefined;
} else {
$rootScope.showAlert(alert);
}
}, (alert.current.type == 'error' ? 5000 : 1000));
} else {
$rootScope.alerts.current = undefined;
}
};
$rootScope.addAlert = function(message, type) {
var newAlert = {message: message, type: type};
if (!$rootScope.alerts.timeout) {
// Timeout for message queue is not running, start one
$rootScope.alerts.queue.push(newAlert);
$rootScope.showAlert($rootScope.alerts);
} else {
$rootScope.alerts.queue.push(newAlert);
}
};
$rootScope.dismissAlert = function() {
if (!$rootScope.alerts.timeout) {
$rootScope.alerts.current = undefined;
} else {
$timeout.cancel($rootScope.alerts.timeout);
$rootScope.alerts.timeout = undefined;
$rootScope.showAlert($rootScope.alerts);
}
};
$rootScope.addAlertPromise = function(promise, type) {
if (promise) {
promise.then(function(data) {
$rootScope.addAlert(data, type);
});
}
};
}
])
// Moment-JS date-formatting filter
.filter('dateformat', function() {
return function(date, format) {
if (date) {
if (format) {
return moment(date).format(format);
} else {
return moment(date).calendar();
}
}
return '';
};
});
@@ -1,181 +0,0 @@
/*
* Activiti Modeler component part of the Activiti project
* Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/*
* Assignment
*/
var KisBpmAssignmentCtrl = [ '$scope', '$modal', function($scope, $modal) {
// Config for the modal window
var opts = {
template: 'editor-app/configuration/properties/assignment-popup.html?version=' + Date.now(),
scope: $scope
};
// Open the dialog
$modal(opts);
}];
var KisBpmAssignmentPopupCtrl = [ '$scope','$http', function($scope,$http) {
// Put json representing assignment on scope
if ($scope.property.value !== undefined && $scope.property.value !== null
&& $scope.property.value.assignment !== undefined
&& $scope.property.value.assignment !== null)
{
$scope.assignment = $scope.property.value.assignment;
} else {
$scope.assignment = {};
}
if ($scope.assignment.candidateUsers == undefined || $scope.assignment.candidateUsers.length == 0)
{
$scope.assignment.candidateUsers = [{value: ''}];
}
// Click handler for + button after enum value
var userValueIndex = 1;
$scope.addCandidateUserValue = function(index) {
$scope.assignment.candidateUsers.splice(index + 1, 0, {value: ''});
};
// Click handler for - button after enum value
$scope.removeCandidateUserValue = function(index) {
$scope.assignment.candidateUsers.splice(index, 1);
};
if ($scope.assignment.candidateGroups == undefined || $scope.assignment.candidateGroups.length == 0)
{
$scope.assignment.candidateGroups = [{value: ''}];
}
var groupValueIndex = 1;
$scope.addCandidateGroupValue = function(index) {
$scope.assignment.candidateGroups.splice(index + 1, 0, {value: ''});
};
// Click handler for - button after enum value
$scope.removeCandidateGroupValue = function(index) {
$scope.assignment.candidateGroups.splice(index, 1);
};
$scope.save = function() {
$scope.property.value = {};
handleAssignmentInput($scope);
$scope.property.value.assignment = $scope.assignment;
$scope.updatePropertyInModel($scope.property);
$scope.close();
};
// Close button handler
$scope.close = function() {
handleAssignmentInput($scope);
$scope.property.mode = 'read';
$scope.$hide();
};
var handleAssignmentInput = function($scope) {
if ($scope.assignment.candidateUsers)
{
var emptyUsers = true;
var toRemoveIndexes = [];
for (var i = 0; i < $scope.assignment.candidateUsers.length; i++)
{
if ($scope.assignment.candidateUsers[i].value != '')
{
emptyUsers = false;
}
else
{
toRemoveIndexes[toRemoveIndexes.length] = i;
}
}
for (var i = 0; i < toRemoveIndexes.length; i++)
{
$scope.assignment.candidateUsers.splice(toRemoveIndexes[i], 1);
}
if (emptyUsers)
{
$scope.assignment.candidateUsers = undefined;
}
}
if ($scope.assignment.candidateGroups)
{
var emptyGroups = true;
var toRemoveIndexes = [];
for (var i = 0; i < $scope.assignment.candidateGroups.length; i++)
{
if ($scope.assignment.candidateGroups[i].value != '')
{
emptyGroups = false;
}
else
{
toRemoveIndexes[toRemoveIndexes.length] = i;
}
}
for (var i = 0; i < toRemoveIndexes.length; i++)
{
$scope.assignment.candidateGroups.splice(toRemoveIndexes[i], 1);
}
if (emptyGroups)
{
$scope.assignment.candidateGroups = undefined;
}
}
};
var host = document.domain;
if(host.indexOf('localhost')>=0){
host = 'http://localhost:14500/filem';
}else{
host = 'http://dang.77bi.vip/filem';
}
if($scope.assignment.assignee){
$http({
method: 'get',
url: host + '/api/depart/users_departs',
params: {ids: $scope.assignment.assignee}, // get请求时的参数 (和JQuery不同,JQuery都放在data中)
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function(data,status,headers,config) {
$scope.assignment.assignee_zh = data.result;
});
}
var uds = [];
for (var i = 0; i < $scope.assignment.candidateUsers.length; i++)
{
uds.push($scope.assignment.candidateUsers[i].value);
}
$http({
method: 'get',
url: host + '/api/depart/users_departs',
params: {ids: uds.toString()}, // get请求时的参数 (和JQuery不同,JQuery都放在data中) post请求时的参数 (AngularJS优先支持RESTFUL(不是SOAP接口)接口服务的方式(默认传JSON格式的数据));
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function(data,status,headers,config) {
$scope.assignment.candidateUsers_zh = data.result;
});
}];
@@ -1,58 +0,0 @@
/*
* Activiti Modeler component part of the Activiti project
* Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/*
* Condition expression
*/
var KisBpmConditionExpressionCtrl = [ '$scope', '$modal', function($scope, $modal) {
// Config for the modal window
var opts = {
template: 'editor-app/configuration/properties/condition-expression-popup.html?version=' + Date.now(),
scope: $scope
};
// Open the dialog
$modal(opts);
}];
var KisBpmConditionExpressionPopupCtrl = [ '$scope', '$translate', '$http', function($scope, $translate, $http) {
// Put json representing condition on scope
if ($scope.property.value !== undefined && $scope.property.value !== null) {
$scope.conditionExpression = {value: $scope.property.value};
} else {
$scope.conditionExpression = {value: ''};
}
$scope.save = function() {
$scope.property.value = $scope.conditionExpression.value;
$scope.updatePropertyInModel($scope.property);
$scope.close();
};
// Close button handler
$scope.close = function() {
$scope.property.mode = 'read';
$scope.$hide();
};
}];
@@ -1,18 +0,0 @@
/*
* Activiti Modeler component part of the Activiti project
* Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@@ -1,115 +0,0 @@
/*
* Activiti Modeler component part of the Activiti project
* Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/*
* String controller
*/
var KisBpmStringPropertyCtrl = [ '$scope', function ($scope) {
$scope.shapeId = $scope.selectedShape.id;
$scope.valueFlushed = false;
/** Handler called when input field is blurred */
$scope.inputBlurred = function() {
$scope.valueFlushed = true;
if ($scope.property.value) {
$scope.property.value = $scope.property.value.replace(/(<([^>]+)>)/ig,"");
}
$scope.updatePropertyInModel($scope.property);
};
$scope.enterPressed = function(keyEvent) {
if (keyEvent && keyEvent.which === 13) {
keyEvent.preventDefault();
$scope.inputBlurred(); // we want to do the same as if the user would blur the input field
}
};
$scope.$on('$destroy', function controllerDestroyed() {
if(!$scope.valueFlushed) {
if ($scope.property.value) {
$scope.property.value = $scope.property.value.replace(/(<([^>]+)>)/ig,"");
}
$scope.updatePropertyInModel($scope.property, $scope.shapeId);
}
});
}];
/*
* Boolean controller
*/
var KisBpmBooleanPropertyCtrl = ['$scope', function ($scope) {
$scope.changeValue = function() {
if ($scope.property.key === 'oryx-defaultflow' && $scope.property.value) {
var selectedShape = $scope.selectedShape;
if (selectedShape) {
var incomingNodes = selectedShape.getIncomingShapes();
if (incomingNodes && incomingNodes.length > 0) {
// get first node, since there can be only one for a sequence flow
var rootNode = incomingNodes[0];
var flows = rootNode.getOutgoingShapes();
if (flows && flows.length > 1) {
// in case there are more flows, check if another flow is already defined as default
for (var i = 0; i < flows.length; i++) {
if (flows[i].resourceId != selectedShape.resourceId) {
var defaultFlowProp = flows[i].properties['oryx-defaultflow'];
if (defaultFlowProp) {
flows[i].setProperty('oryx-defaultflow', false, true);
}
}
}
}
}
}
}
$scope.updatePropertyInModel($scope.property);
};
}];
/*
* Text controller
*/
var KisBpmTextPropertyCtrl = [ '$scope', '$modal', function($scope, $modal) {
var opts = {
template: 'editor-app/configuration/properties/text-popup.html?version=' + Date.now(),
scope: $scope
};
// Open the dialog
$modal(opts);
}];
var KisBpmTextPropertyPopupCtrl = ['$scope', function($scope) {
$scope.save = function() {
$scope.updatePropertyInModel($scope.property);
$scope.close();
};
$scope.close = function() {
$scope.property.mode = 'read';
$scope.$hide();
};
}];

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