同步代码编写完毕
@@ -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
|
||||
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
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>
|
||||
@@ -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#柞/穝
|
||||
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 580 B |
|
Before Width: | Height: | Size: 108 B |
|
Before Width: | Height: | Size: 438 B |
|
Before Width: | Height: | Size: 227 B |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 830 B |
|
Before Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 410 B |
|
Before Width: | Height: | Size: 367 B |
|
Before Width: | Height: | Size: 344 B |
|
Before Width: | Height: | Size: 601 B |
|
Before Width: | Height: | Size: 361 B |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 953 B |
|
Before Width: | Height: | Size: 687 B |
|
Before Width: | Height: | Size: 6.1 KiB |
|
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);
|
||||
};
|
||||
*/
|
||||
@@ -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);
|
||||
@@ -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);
|
||||
};
|
||||
}
|
||||
@@ -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: ' <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();
|
||||
};
|
||||
}];
|
||||