Merge remote-tracking branch 'origin/psr'
# Conflicts: # cloud-gateway/src/main/resources/bootstrap.yml # cloud-modules/cloud-Saas-Service/src/main/resources/bootstrap.yml # cloud-modules/cloud-Vehicle-Simulation/src/main/resources/bootstrap.yml # cloud-modules/cloud-modules-car/src/main/java/com/muyu/car/controller/CarInformationController.java # cloud-modules/cloud-modules-car/src/main/java/com/muyu/car/controller/CarMessageController.java # cloud-modules/cloud-modules-car/src/main/java/com/muyu/car/domain/CarMessage.java # cloud-modules/cloud-modules-car/src/main/java/com/muyu/car/mapper/CarInformationMapper.java # cloud-modules/cloud-modules-car/src/main/java/com/muyu/car/service/CarMessageService.java # cloud-modules/cloud-modules-car/src/main/java/com/muyu/car/service/Impl/CarInformationServiceImpl.java # cloud-modules/cloud-modules-car/src/main/resources/bootstrap.yml # cloud-modules/cloud-modules-car/src/main/resources/mapper/car/CarInformationMapper.xml # cloud-modules/cloud-modules-gen/src/main/resources/bootstrap.yml # cloud-modules/pom.xml # pom.xmlmaster
commit
016887afc2
|
@ -12,6 +12,8 @@ out
|
||||||
######################################################################
|
######################################################################
|
||||||
# IDE
|
# IDE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### STS ###
|
### STS ###
|
||||||
.apt_generated
|
.apt_generated
|
||||||
.classpath
|
.classpath
|
||||||
|
@ -26,6 +28,7 @@ logs
|
||||||
*.iws
|
*.iws
|
||||||
*.iml
|
*.iml
|
||||||
*.ipr
|
*.ipr
|
||||||
|
*.yml
|
||||||
|
|
||||||
### JRebel ###
|
### JRebel ###
|
||||||
rebel.xml
|
rebel.xml
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-common</artifactId>
|
||||||
|
<version>3.6.3</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>cloud-common-wechat</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>cloud-common-wechat</name>
|
||||||
|
<url>http://maven.apache.org</url>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<!-- MuYu Common Core-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-common-core</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.dom4j</groupId>
|
||||||
|
<artifactId>dom4j</artifactId>
|
||||||
|
<version>2.1.3</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 帮助将java对象转换为xml字符串-->
|
||||||
|
<!-- 依赖冲突会导致InaccessibleObjectException异常更新到适用版本-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.thoughtworks.xstream</groupId>
|
||||||
|
<artifactId>xstream</artifactId>
|
||||||
|
<version>1.4.20</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.squareup.okhttp3</groupId>
|
||||||
|
<artifactId>okhttp</artifactId>
|
||||||
|
<version>4.9.3</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Alibaba Fastjson -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba</groupId>
|
||||||
|
<artifactId>fastjson</artifactId>
|
||||||
|
<version>1.2.83</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.muyu.common.wechat.domain;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 24415
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class AccessToken {
|
||||||
|
|
||||||
|
private String access_token;
|
||||||
|
|
||||||
|
private Long expires_in;
|
||||||
|
|
||||||
|
public void setExpiresTime(Long expiresIn) {
|
||||||
|
this.expires_in = System.currentTimeMillis()+expiresIn*1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isExpired(Long expiresIn){
|
||||||
|
long now = System.currentTimeMillis();
|
||||||
|
return now>expiresIn;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
package com.muyu.common.wechat.domain;
|
||||||
|
|
||||||
|
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.wxapplication.massage
|
||||||
|
* @Project:WXApplication
|
||||||
|
* @name:Articles
|
||||||
|
* @Date:2024/9/18 下午10:14
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@XStreamAlias("item")
|
||||||
|
public class Articles {
|
||||||
|
// <Articles>
|
||||||
|
// <item>
|
||||||
|
// <Title><![CDATA[title1]]></Title>
|
||||||
|
// <Description><![CDATA[description1]]></Description>
|
||||||
|
// <PicUrl><![CDATA[picurl]]></PicUrl>
|
||||||
|
// <Url><![CDATA[url]]></Url>
|
||||||
|
// </item>
|
||||||
|
// </Articles>
|
||||||
|
|
||||||
|
@XStreamAlias("Title")
|
||||||
|
private String title ;
|
||||||
|
@XStreamAlias("Description")
|
||||||
|
private String description ;
|
||||||
|
@XStreamAlias("PicUrl")
|
||||||
|
private String picUrl ;
|
||||||
|
@XStreamAlias("Url")
|
||||||
|
private String url ;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
package com.muyu.common.wechat.domain;
|
||||||
|
|
||||||
|
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.wxapplication.massage
|
||||||
|
* @Project:WXApplication
|
||||||
|
* @name:ImageText
|
||||||
|
* @Date:2024/9/18 下午9:27
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@XStreamAlias("xml")
|
||||||
|
public class NewsMessage {
|
||||||
|
// <ToUserName><![CDATA[toUser]]></ToUserName>
|
||||||
|
// <FromUserName><![CDATA[fromUser]]></FromUserName>
|
||||||
|
// <CreateTime>12345678</CreateTime>
|
||||||
|
// <MsgType><![CDATA[news]]></MsgType>
|
||||||
|
// <ArticleCount>1</ArticleCount>
|
||||||
|
// <Articles>
|
||||||
|
// <item>
|
||||||
|
// <Title><![CDATA[title1]]></Title>
|
||||||
|
// <Description><![CDATA[description1]]></Description>
|
||||||
|
// <PicUrl><![CDATA[picurl]]></PicUrl>
|
||||||
|
// <Url><![CDATA[url]]></Url>
|
||||||
|
// </item>
|
||||||
|
// </Articles>
|
||||||
|
|
||||||
|
@XStreamAlias("ToUserName")
|
||||||
|
private String toUserName ;
|
||||||
|
@XStreamAlias("FromUserName")
|
||||||
|
private String fromUserName ;
|
||||||
|
@XStreamAlias("CreateTime")
|
||||||
|
private long createTime ;
|
||||||
|
@XStreamAlias("MsgType")
|
||||||
|
private String msgType ;
|
||||||
|
@XStreamAlias("ArticleCount")
|
||||||
|
private Integer articleCount ;
|
||||||
|
@XStreamAlias("Articles")
|
||||||
|
private List<Articles> articles ;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
package com.muyu.common.wechat.domain;
|
||||||
|
|
||||||
|
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.wxapplication.massage
|
||||||
|
* @Project:WXApplication
|
||||||
|
* @name:TextMessage
|
||||||
|
* @Date:2024/9/18 上午11:33
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@XStreamAlias("xml")
|
||||||
|
public class TextMessage {
|
||||||
|
|
||||||
|
//起一个别名 因为我们微信返回信息与java代码格式规范发生冲突
|
||||||
|
//微信格式 ToUserName
|
||||||
|
//JAVA格式 toUserName
|
||||||
|
@XStreamAlias("ToUserName")
|
||||||
|
private String toUserName;
|
||||||
|
@XStreamAlias("FromUserName")
|
||||||
|
private String fromUserName;
|
||||||
|
@XStreamAlias("CreateTime")
|
||||||
|
private long createTime;
|
||||||
|
@XStreamAlias("MsgType")
|
||||||
|
private String msgType;
|
||||||
|
@XStreamAlias("Content")
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
}
|
||||||
|
// <ToUserName><![CDATA[toUser]]></ToUserName>
|
||||||
|
// <FromUserName><![CDATA[fromUser]]></FromUserName>
|
||||||
|
// <CreateTime>12345678</CreateTime>
|
||||||
|
// <MsgType><![CDATA[text]]></MsgType>
|
||||||
|
// <Content><![CDATA[你好]]></Content>
|
|
@ -0,0 +1,38 @@
|
||||||
|
package com.muyu;
|
||||||
|
|
||||||
|
import junit.framework.Test;
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit test for simple App.
|
||||||
|
*/
|
||||||
|
public class AppTest
|
||||||
|
extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create the test case
|
||||||
|
*
|
||||||
|
* @param testName name of the test case
|
||||||
|
*/
|
||||||
|
public AppTest( String testName )
|
||||||
|
{
|
||||||
|
super( testName );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the suite of tests being tested
|
||||||
|
*/
|
||||||
|
public static Test suite()
|
||||||
|
{
|
||||||
|
return new TestSuite( AppTest.class );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rigourous Test :-)
|
||||||
|
*/
|
||||||
|
public void testApp()
|
||||||
|
{
|
||||||
|
assertTrue( true );
|
||||||
|
}
|
||||||
|
}
|
|
@ -21,6 +21,7 @@
|
||||||
<module>cloud-common-xxl</module>
|
<module>cloud-common-xxl</module>
|
||||||
<module>cloud-common-rabbit</module>
|
<module>cloud-common-rabbit</module>
|
||||||
<module>cloud-common-saas</module>
|
<module>cloud-common-saas</module>
|
||||||
|
<module>cloud-common-wechat</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<artifactId>cloud-common</artifactId>
|
<artifactId>cloud-common</artifactId>
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
# Tomcat
|
||||||
|
server:
|
||||||
|
port: 8080
|
||||||
|
|
||||||
|
# nacos线上地址
|
||||||
|
nacos:
|
||||||
|
addr: 159.75.188.178:8848
|
||||||
|
user-name: nacos
|
||||||
|
password: nacos
|
||||||
|
namespace: eight
|
||||||
|
|
||||||
|
# Spring
|
||||||
|
spring:
|
||||||
|
application:
|
||||||
|
# 应用名称
|
||||||
|
name: cloud-gateway
|
||||||
|
profiles:
|
||||||
|
# 环境配置
|
||||||
|
active: dev
|
||||||
|
cloud:
|
||||||
|
nacos:
|
||||||
|
discovery:
|
||||||
|
# 服务注册地址
|
||||||
|
server-addr: ${nacos.addr}
|
||||||
|
# nacos用户名
|
||||||
|
username: ${nacos.user-name}
|
||||||
|
# nacos密码
|
||||||
|
password: ${nacos.password}
|
||||||
|
# 命名空间
|
||||||
|
namespace: ${nacos.namespace}
|
||||||
|
config:
|
||||||
|
# 服务注册地址
|
||||||
|
server-addr: ${nacos.addr}
|
||||||
|
# nacos用户名
|
||||||
|
username: ${nacos.user-name}
|
||||||
|
# nacos密码
|
||||||
|
password: ${nacos.password}
|
||||||
|
# 命名空间
|
||||||
|
namespace: ${nacos.namespace}
|
||||||
|
# 配置文件格式
|
||||||
|
file-extension: yml
|
||||||
|
# 共享配置
|
||||||
|
shared-configs:
|
||||||
|
# 系统共享配置
|
||||||
|
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||||
|
# 系统环境Config共享配置
|
||||||
|
- application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||||
|
sentinel:
|
||||||
|
# 取消控制台懒加载
|
||||||
|
eager: true
|
||||||
|
transport:
|
||||||
|
# 控制台地址
|
||||||
|
dashboard: 127.0.0.1:8718
|
||||||
|
# nacos配置持久化
|
||||||
|
datasource:
|
||||||
|
ds1:
|
||||||
|
nacos:
|
||||||
|
server-addr: ${nacos.addr}
|
||||||
|
dataId: sentinel-cloud-gateway
|
||||||
|
groupId: DEFAULT_GROUP
|
||||||
|
namespace: ${nacos.namespace}
|
||||||
|
data-type: json
|
||||||
|
rule-type: gw-flow
|
||||||
|
knife4j:
|
||||||
|
gateway:
|
||||||
|
enabled: true
|
||||||
|
# 指定服务发现的模式聚合微服务文档,并且是默认`default`分组
|
||||||
|
strategy: discover
|
||||||
|
discover:
|
||||||
|
enabled: true
|
||||||
|
# 指定版本号(Swagger2|OpenAPI3)
|
||||||
|
version : openapi3
|
||||||
|
# 需要排除的微服务(eg:网关服务)
|
||||||
|
excluded-services:
|
||||||
|
- cloud-monitor
|
|
@ -1,6 +1,6 @@
|
||||||
# Tomcat
|
# Tomcat
|
||||||
server:
|
server:
|
||||||
port: 9111
|
port: 9500
|
||||||
|
|
||||||
# nacos线上地址
|
# nacos线上地址
|
||||||
nacos:
|
nacos:
|
||||||
|
@ -8,12 +8,11 @@ nacos:
|
||||||
user-name: nacos
|
user-name: nacos
|
||||||
password: nacos
|
password: nacos
|
||||||
namespace: eight
|
namespace: eight
|
||||||
|
|
||||||
# Spring
|
# Spring
|
||||||
spring:
|
spring:
|
||||||
application:
|
application:
|
||||||
# 应用名称
|
# 应用名称
|
||||||
name: cloud-electronic
|
name: cloud-auth
|
||||||
profiles:
|
profiles:
|
||||||
# 环境配置
|
# 环境配置
|
||||||
active: dev
|
active: dev
|
||||||
|
@ -45,3 +44,4 @@ spring:
|
||||||
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||||
# 系统环境Config共享配置
|
# 系统环境Config共享配置
|
||||||
- application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
- application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# Tomcat
|
# Tomcat
|
||||||
server:
|
server:
|
||||||
port: 9111
|
port: 9101
|
||||||
|
|
||||||
# nacos线上地址
|
# nacos线上地址
|
||||||
nacos:
|
nacos:
|
||||||
addr: 127.0.0.1:8848
|
addr: 159.75.188.178:8848
|
||||||
user-name: nacos
|
user-name: nacos
|
||||||
password: nacos
|
password: nacos
|
||||||
namespace: eight
|
namespace: eight
|
||||||
|
@ -13,7 +13,7 @@ nacos:
|
||||||
spring:
|
spring:
|
||||||
application:
|
application:
|
||||||
# 应用名称
|
# 应用名称
|
||||||
name: cloud-electronic
|
name: cloud-monitor
|
||||||
profiles:
|
profiles:
|
||||||
# 环境配置
|
# 环境配置
|
||||||
active: dev
|
active: dev
|
||||||
|
|
|
@ -7,7 +7,7 @@ nacos:
|
||||||
addr: 127.0.0.1:8848
|
addr: 127.0.0.1:8848
|
||||||
user-name: nacos
|
user-name: nacos
|
||||||
password: nacos
|
password: nacos
|
||||||
namespace: eight
|
namespace: psr
|
||||||
|
|
||||||
# Spring
|
# Spring
|
||||||
spring:
|
spring:
|
||||||
|
|
|
@ -26,7 +26,6 @@ public class CarMessage {
|
||||||
* 报文名称
|
* 报文名称
|
||||||
*/
|
*/
|
||||||
private String messageTypeName;
|
private String messageTypeName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 报文所属类别
|
* 报文所属类别
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -52,8 +52,6 @@ public interface CarInformationMapper {
|
||||||
*/
|
*/
|
||||||
Integer updatecarInformation(CarInformationUpdReq carInformationUpdReq);
|
Integer updatecarInformation(CarInformationUpdReq carInformationUpdReq);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To 电子围栏负责人
|
* To 电子围栏负责人
|
||||||
* 查询企业车辆 carInformationID 和 carInformationLicensePlate
|
* 查询企业车辆 carInformationID 和 carInformationLicensePlate
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
# Tomcat
|
# Tomcat
|
||||||
server:
|
server:
|
||||||
port: 9717
|
port: 9701
|
||||||
|
|
||||||
# nacos线上地址
|
# nacos线上地址
|
||||||
nacos:
|
nacos:
|
||||||
addr: 159.75.188.178:8848
|
addr: 159.75.188.178:8848
|
||||||
user-name: nacos
|
user-name: nacos
|
||||||
password: nacos
|
password: nacos
|
||||||
namespace: xxy
|
namespace: eight
|
||||||
# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
|
# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
|
||||||
# Spring
|
# Spring
|
||||||
spring:
|
spring:
|
||||||
|
@ -19,7 +19,7 @@ spring:
|
||||||
allow-bean-definition-overriding: true
|
allow-bean-definition-overriding: true
|
||||||
application:
|
application:
|
||||||
# 应用名称
|
# 应用名称
|
||||||
name: cloud-car
|
name: cloud-system
|
||||||
profiles:
|
profiles:
|
||||||
# 环境配置
|
# 环境配置
|
||||||
active: dev
|
active: dev
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
# Tomcat
|
||||||
|
server:
|
||||||
|
port: 9202
|
||||||
|
|
||||||
|
# nacos线上地址
|
||||||
|
nacos:
|
||||||
|
addr: 159.75.188.178:8848
|
||||||
|
user-name: nacos
|
||||||
|
password: nacos
|
||||||
|
namespace: eight
|
||||||
|
|
||||||
|
# Spring
|
||||||
|
spring:
|
||||||
|
main:
|
||||||
|
allow-bean-definition-overriding: true
|
||||||
|
application:
|
||||||
|
# 应用名称
|
||||||
|
name: cloud-gen
|
||||||
|
profiles:
|
||||||
|
# 环境配置
|
||||||
|
active: dev
|
||||||
|
cloud:
|
||||||
|
nacos:
|
||||||
|
discovery:
|
||||||
|
# 服务注册地址
|
||||||
|
server-addr: ${nacos.addr}
|
||||||
|
# nacos用户名
|
||||||
|
username: ${nacos.user-name}
|
||||||
|
# nacos密码
|
||||||
|
password: ${nacos.password}
|
||||||
|
# 命名空间
|
||||||
|
namespace: ${nacos.namespace}
|
||||||
|
config:
|
||||||
|
# 服务注册地址
|
||||||
|
server-addr: ${nacos.addr}
|
||||||
|
# nacos用户名
|
||||||
|
username: ${nacos.user-name}
|
||||||
|
# nacos密码
|
||||||
|
password: ${nacos.password}
|
||||||
|
# 命名空间
|
||||||
|
namespace: ${nacos.namespace}
|
||||||
|
# 配置文件格式
|
||||||
|
file-extension: yml
|
||||||
|
# 共享配置
|
||||||
|
shared-configs:
|
||||||
|
# 系统共享配置
|
||||||
|
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||||
|
# 系统环境Config共享配置
|
||||||
|
- application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||||
|
# xxl-job 配置文件
|
||||||
|
- application-xxl-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
|
@ -0,0 +1,112 @@
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-modules</artifactId>
|
||||||
|
<version>3.6.3</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>cloud-modules-warn</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>cloud-modules-warn</name>
|
||||||
|
<url>http://maven.apache.org</url>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<!-- SpringCloud Alibaba Nacos -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- SpringCloud Alibaba Nacos Config -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- SpringCloud Alibaba Sentinel -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- SpringBoot Actuator -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Mysql Connector -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.mysql</groupId>
|
||||||
|
<artifactId>mysql-connector-j</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- MuYu Common DataSource -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-common-datasource</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- MuYu Common DataScope -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-common-datascope</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- MuYu Common Log -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-common-log</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 接口模块 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-common-api-doc</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- XllJob定时任务 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-common-xxl</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-common-rabbit</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<finalName>${project.artifactId}</finalName>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>repackage</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.muyu.warn;
|
||||||
|
|
||||||
|
import com.muyu.common.security.annotation.EnableCustomConfig;
|
||||||
|
import com.muyu.common.security.annotation.EnableMyFeignClients;
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:CloudWarnApplication
|
||||||
|
* @Date:2024/9/20 下午8:33
|
||||||
|
*/
|
||||||
|
@EnableCustomConfig
|
||||||
|
//@EnableCustomSwagger2
|
||||||
|
@EnableMyFeignClients
|
||||||
|
@SpringBootApplication
|
||||||
|
public class CloudWarnApplication {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(CloudWarnApplication.class, args);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,117 @@
|
||||||
|
package com.muyu.warn.controller;
|
||||||
|
|
||||||
|
import com.muyu.common.core.domain.Result;
|
||||||
|
import com.muyu.common.core.utils.poi.ExcelUtil;
|
||||||
|
import com.muyu.common.core.web.controller.BaseController;
|
||||||
|
import com.muyu.common.core.web.page.TableDataInfo;
|
||||||
|
import com.muyu.common.security.annotation.RequiresPermissions;
|
||||||
|
import com.muyu.common.security.utils.SecurityUtils;
|
||||||
|
import com.muyu.warn.domain.WarnLogs;
|
||||||
|
import com.muyu.warn.domain.WarnStrategy;
|
||||||
|
import com.muyu.warn.service.WarnLogsService;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.muyu.common.core.domain.Result.error;
|
||||||
|
import static com.muyu.common.core.domain.Result.success;
|
||||||
|
import static com.muyu.common.core.utils.PageUtils.startPage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.controller
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnLogsController
|
||||||
|
* @Date:2024/9/20 下午7:29
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/logs")
|
||||||
|
public class WarnLogsController extends BaseController {
|
||||||
|
|
||||||
|
@Autowired private WarnLogsService warnLogsService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询预警日志列表
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:logs:list")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public Result<TableDataInfo<WarnLogs>> list(WarnLogs warnLogs)
|
||||||
|
{
|
||||||
|
startPage();
|
||||||
|
List<WarnLogs> list = warnLogsService.selectWarnLogsList(warnLogs);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出预警日志列表
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:logs:export")
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(HttpServletResponse response, WarnLogs warnLogs)
|
||||||
|
{
|
||||||
|
List<WarnLogs> list = warnLogsService.selectWarnLogsList(warnLogs);
|
||||||
|
ExcelUtil<WarnLogs> util = new ExcelUtil<WarnLogs>(WarnLogs.class);
|
||||||
|
util.exportExcel(response, list, "预警日志数据");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取预警日志详细信息
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:logs:query")
|
||||||
|
@GetMapping(value = "/{id}")
|
||||||
|
public Result<List<WarnLogs>> getInfo(@PathVariable("id") Long id)
|
||||||
|
{
|
||||||
|
return success(warnLogsService.selectWarnLogsById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增预警日志
|
||||||
|
* @param warnLogs 新增预警日志信息
|
||||||
|
* @return 新增结果
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:logs:add")
|
||||||
|
@PostMapping
|
||||||
|
public Result<Integer> add(
|
||||||
|
@Validated @RequestBody WarnLogs warnLogs
|
||||||
|
){
|
||||||
|
if (warnLogsService.checkIdUnique(warnLogs)){
|
||||||
|
return error("新增 预警日志 '"+ warnLogs +"' 失败,预警日志已存在 ");
|
||||||
|
}
|
||||||
|
return toAjax(warnLogsService.save(warnLogs));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改预警日志
|
||||||
|
* @param warnLogs 修改预警日志信息
|
||||||
|
* @return 修改结果
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:logs:edit")
|
||||||
|
@PutMapping
|
||||||
|
public Result<Integer> edit(
|
||||||
|
@Validated @RequestBody WarnLogs warnLogs
|
||||||
|
){
|
||||||
|
if (!warnLogsService.checkIdUnique(warnLogs)){
|
||||||
|
return error("修改 预警日志'"+ warnLogs +"'失败,预警日志不存在");
|
||||||
|
}
|
||||||
|
return toAjax(warnLogsService.updateById(warnLogs));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除预警日志
|
||||||
|
* @param ids 删除预警日志id
|
||||||
|
* @return 删除结果
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:logs:remove")
|
||||||
|
@DeleteMapping("/{ids}")
|
||||||
|
public Result<Integer> remove(@PathVariable("ids") Long[] ids)
|
||||||
|
{
|
||||||
|
warnLogsService.removeBatchByIds(Arrays.asList(ids));
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,120 @@
|
||||||
|
package com.muyu.warn.controller;
|
||||||
|
|
||||||
|
import com.muyu.common.core.domain.Result;
|
||||||
|
import com.muyu.common.core.utils.poi.ExcelUtil;
|
||||||
|
import com.muyu.common.core.web.controller.BaseController;
|
||||||
|
import com.muyu.common.core.web.page.TableDataInfo;
|
||||||
|
import com.muyu.common.security.annotation.RequiresPermissions;
|
||||||
|
import com.muyu.warn.domain.WarnRule;
|
||||||
|
import com.muyu.warn.domain.car.CarMessageType;
|
||||||
|
import com.muyu.warn.domain.car.resp.CarMessageResp;
|
||||||
|
import com.muyu.warn.service.WarnRuleService;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.controller
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnLogsController
|
||||||
|
* @Date:2024/9/20 下午7:29
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/rule")
|
||||||
|
public class WarnRuleController extends BaseController
|
||||||
|
{
|
||||||
|
@Resource
|
||||||
|
private WarnRuleService warnRuleService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询预警规则列表
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:rule:list")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public Result<TableDataInfo<WarnRule>> list(WarnRule warnRule)
|
||||||
|
{
|
||||||
|
startPage();
|
||||||
|
List<WarnRule> list = warnRuleService.selectWarnRuleList(warnRule);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出预警规则列表
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:rule:export")
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(HttpServletResponse response, WarnRule warnRule)
|
||||||
|
{
|
||||||
|
List<WarnRule> list = warnRuleService.selectWarnRuleList(warnRule);
|
||||||
|
ExcelUtil<WarnRule> util = new ExcelUtil<WarnRule>(WarnRule.class);
|
||||||
|
util.exportExcel(response, list, "预警规则数据");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取预警规则详细信息
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:rule:query")
|
||||||
|
@GetMapping(value = "/{id}")
|
||||||
|
public Result<List<WarnRule>> getInfo(@PathVariable("id") Long id)
|
||||||
|
{
|
||||||
|
return success(warnRuleService.selectWarnRuleById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增预警规则
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:rule:add")
|
||||||
|
@PostMapping
|
||||||
|
public Result<Integer> add(
|
||||||
|
@Validated @RequestBody WarnRule warnRule)
|
||||||
|
{
|
||||||
|
if (warnRuleService.checkIdUnique(warnRule)) {
|
||||||
|
return error("新增 预警规则 '" + warnRule + "'失败,预警规则已存在");
|
||||||
|
}
|
||||||
|
return toAjax(warnRuleService.save(warnRule));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改预警规则
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:rule:edit")
|
||||||
|
@PutMapping
|
||||||
|
public Result<Integer> edit(
|
||||||
|
@Validated @RequestBody WarnRule warnRule)
|
||||||
|
{
|
||||||
|
if (!warnRuleService.checkIdUnique(warnRule)) {
|
||||||
|
return error("修改 预警规则 '" + warnRule + "'失败,预警规则不存在");
|
||||||
|
}
|
||||||
|
// warnRule.setUpdateBy(SecurityUtils.getUsername());
|
||||||
|
return toAjax(warnRuleService.updateById(warnRule));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除预警规则
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:rule:remove")
|
||||||
|
@DeleteMapping("/{ids}")
|
||||||
|
public Result<Integer> remove(@PathVariable("ids") Long[] ids)
|
||||||
|
{
|
||||||
|
warnRuleService.removeBatchByIds(Arrays.asList(ids));
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取车辆类型报文
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:rule:msg")
|
||||||
|
@GetMapping("/msg/{id}")
|
||||||
|
public Result<List<CarMessageResp>> findByMsg(@PathVariable("id") Long id)
|
||||||
|
{
|
||||||
|
return success(warnRuleService.findByMsg(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,120 @@
|
||||||
|
package com.muyu.warn.controller;
|
||||||
|
|
||||||
|
import com.muyu.common.core.domain.Result;
|
||||||
|
import com.muyu.common.core.utils.poi.ExcelUtil;
|
||||||
|
import com.muyu.common.core.web.controller.BaseController;
|
||||||
|
import com.muyu.common.core.web.page.TableDataInfo;
|
||||||
|
import com.muyu.common.security.annotation.RequiresPermissions;
|
||||||
|
import com.muyu.warn.domain.car.CartType;
|
||||||
|
import com.muyu.warn.domain.WarnStrategy;
|
||||||
|
import com.muyu.warn.domain.req.WarnStrategyReq;
|
||||||
|
import com.muyu.warn.service.WarnStrategyService;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.controller
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnLogsController
|
||||||
|
* @Date:2024/9/20 下午7:29
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/strategy")
|
||||||
|
public class WarnStrategyController extends BaseController
|
||||||
|
{
|
||||||
|
@Resource
|
||||||
|
private WarnStrategyService warnStrategyService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询预警策略列表
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:strategy:list")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public Result<TableDataInfo<WarnStrategy>> list(WarnStrategy warnStrategy)
|
||||||
|
{
|
||||||
|
startPage();
|
||||||
|
List<WarnStrategy> list = warnStrategyService.selectWarnStrategyList(warnStrategy);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出预警策略列表
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:strategy:export")
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(HttpServletResponse response, WarnStrategy warnStrategy)
|
||||||
|
{
|
||||||
|
List<WarnStrategy> list = warnStrategyService.selectWarnStrategyList(warnStrategy);
|
||||||
|
ExcelUtil<WarnStrategy> util = new ExcelUtil<WarnStrategy>(WarnStrategy.class);
|
||||||
|
util.exportExcel(response, list, "预警策略数据");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取预警策略详细信息
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:strategy:query")
|
||||||
|
@GetMapping(value = "/{id}")
|
||||||
|
public Result<List<WarnStrategy>> getInfo(@PathVariable("id") Long id)
|
||||||
|
{
|
||||||
|
return success(warnStrategyService.selectWarnStrategyById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增预警策略
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:strategy:add")
|
||||||
|
@PostMapping
|
||||||
|
public Result<Integer> add(
|
||||||
|
@Validated @RequestBody WarnStrategy warnStrategy)
|
||||||
|
{
|
||||||
|
if (warnStrategyService.checkIdUnique(warnStrategy)) {
|
||||||
|
return error("新增 预警策略 '" + warnStrategy + "'失败,预警策略已存在");
|
||||||
|
}
|
||||||
|
return toAjax(warnStrategyService.save(warnStrategy));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改预警策略
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:strategy:edit")
|
||||||
|
@PutMapping
|
||||||
|
public Result<Integer> edit(
|
||||||
|
@Validated @RequestBody WarnStrategy warnStrategy)
|
||||||
|
{
|
||||||
|
if (!warnStrategyService.checkIdUnique(warnStrategy)) {
|
||||||
|
return error("修改 预警策略 '" + warnStrategy + "'失败,预警策略不存在");
|
||||||
|
}
|
||||||
|
// warnStrategy.setUpdateBy(SecurityUtils.getUsername());
|
||||||
|
return toAjax(warnStrategyService.updateById(warnStrategy));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除预警策略
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("platform:strategy:remove")
|
||||||
|
@DeleteMapping("/{ids}")
|
||||||
|
public Result<Integer> remove(@PathVariable("ids") Long[] ids)
|
||||||
|
{
|
||||||
|
warnStrategyService.removeBatchByIds(Arrays.asList(ids));
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("platform:strategy:cartype")
|
||||||
|
@PostMapping("/findByCarType")
|
||||||
|
public Result<List<CartType>> findByCarType(){
|
||||||
|
return Result.success(warnStrategyService.findByCarType());
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("platform:strategy:strategytype")
|
||||||
|
@PostMapping("/strategyType/{ids}")
|
||||||
|
public Result<List<WarnStrategyReq>> selectStrategyType(@PathVariable("ids") Long ids){
|
||||||
|
return Result.success(warnStrategyService.selectStrategyType(ids));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,104 @@
|
||||||
|
package com.muyu.warn.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.muyu.common.core.annotation.Excel;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.domain
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnLogs
|
||||||
|
* @Date:2024/9/20 下午7:11
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@TableName("warn_logs")
|
||||||
|
public class WarnLogs {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 预警日志id
|
||||||
|
*/
|
||||||
|
@Excel(name = "预警日志id", cellType = Excel.ColumnType.NUMERIC)
|
||||||
|
@TableId(type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 车辆vin码
|
||||||
|
*/
|
||||||
|
@Excel(name = "车辆vin码")
|
||||||
|
private String vin;
|
||||||
|
/**
|
||||||
|
* 规则id
|
||||||
|
*/
|
||||||
|
@Excel(name = "规则id")
|
||||||
|
private Long warnRuleId;
|
||||||
|
/**
|
||||||
|
* 开始时间
|
||||||
|
*/
|
||||||
|
@Excel(name = "开始时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date startTime ;
|
||||||
|
/**
|
||||||
|
* 结束时间
|
||||||
|
*/
|
||||||
|
@Excel(name = "结束时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date endTime ;
|
||||||
|
/**
|
||||||
|
* 最大值
|
||||||
|
*/
|
||||||
|
@Excel(name = "最大值")
|
||||||
|
private Long maxValue ;
|
||||||
|
/**
|
||||||
|
* 最小值
|
||||||
|
*/
|
||||||
|
@Excel(name = "最小值")
|
||||||
|
private Long minValue ;
|
||||||
|
/**
|
||||||
|
* 平均值
|
||||||
|
*/
|
||||||
|
@Excel(name = "平均值")
|
||||||
|
private Long avgValue ;
|
||||||
|
/**
|
||||||
|
* 中位数
|
||||||
|
*/
|
||||||
|
@Excel(name = "中位数")
|
||||||
|
private Long medianValue ;
|
||||||
|
/**
|
||||||
|
* 是否发送预警
|
||||||
|
*/
|
||||||
|
@Excel(name = "是否发送预警")
|
||||||
|
private Long status ;
|
||||||
|
// /**
|
||||||
|
// * 创建人
|
||||||
|
// */
|
||||||
|
// @Excel(name = "创建人")
|
||||||
|
// private String createBy ;
|
||||||
|
// /**
|
||||||
|
// * 创建时间
|
||||||
|
// */
|
||||||
|
// @Excel(name = "创建时间")
|
||||||
|
// private String createTime ;
|
||||||
|
// /**
|
||||||
|
// * 更新人
|
||||||
|
// */
|
||||||
|
// @Excel(name = "更新人")
|
||||||
|
// private String updateBy ;
|
||||||
|
// /**
|
||||||
|
// * 更新时间
|
||||||
|
// */
|
||||||
|
// @Excel(name = "更新时间")
|
||||||
|
// private String updateTime ;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
package com.muyu.warn.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.muyu.common.core.annotation.Excel;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.domain
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnRule
|
||||||
|
* @Date:2024/9/20 下午7:20
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@TableName("warn_rule")
|
||||||
|
public class WarnRule {
|
||||||
|
|
||||||
|
@TableId(type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
private String ruleName;
|
||||||
|
private Long strategyId;
|
||||||
|
private Long msgTypeId;
|
||||||
|
private Long slideTime;
|
||||||
|
private Long slideFrequency;
|
||||||
|
private Long maxValue;
|
||||||
|
private Long minValue;
|
||||||
|
// /**
|
||||||
|
// * 创建人
|
||||||
|
// */
|
||||||
|
// private String createBy ;
|
||||||
|
// /**
|
||||||
|
// * 创建时间
|
||||||
|
// */
|
||||||
|
// private String createTime ;
|
||||||
|
// /**
|
||||||
|
// * 更新人
|
||||||
|
// */
|
||||||
|
// private String updateBy ;
|
||||||
|
// /**
|
||||||
|
// * 更新时间
|
||||||
|
// */
|
||||||
|
// private String updateTime ;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
package com.muyu.warn.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.muyu.common.core.annotation.Excel;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.domain
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnStrategy
|
||||||
|
* @Date:2024/9/20 下午7:27
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@TableName("warn_strategy")
|
||||||
|
public class WarnStrategy {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 策略Id
|
||||||
|
*/
|
||||||
|
@TableId( type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
private Long carTypeId ;
|
||||||
|
private String strategyName ;
|
||||||
|
private Long msgId ;
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * 创建人
|
||||||
|
// */
|
||||||
|
// private String createBy ;
|
||||||
|
// /**
|
||||||
|
// * 创建时间
|
||||||
|
// */
|
||||||
|
// private String createTime ;
|
||||||
|
// /**
|
||||||
|
// * 更新人
|
||||||
|
// */
|
||||||
|
// private String updateBy ;
|
||||||
|
// /**
|
||||||
|
// * 更新时间
|
||||||
|
// */
|
||||||
|
// private String updateTime ;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
package com.muyu.warn.domain.car;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.domain.car
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:CarMessageType
|
||||||
|
* @Date:2024/9/22 下午3:08
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class CarMessage {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自增主键
|
||||||
|
*/
|
||||||
|
private Integer carMessageId ;
|
||||||
|
/**
|
||||||
|
* 车辆类型外键
|
||||||
|
*/
|
||||||
|
private Integer carMessageCarype ;
|
||||||
|
/**
|
||||||
|
* 车辆报文外键
|
||||||
|
*/
|
||||||
|
private Integer carMessageType ;
|
||||||
|
/**
|
||||||
|
* 开始位下标
|
||||||
|
*/
|
||||||
|
private Integer carMessageStartIndex ;
|
||||||
|
/**
|
||||||
|
* 结束位下标
|
||||||
|
*/
|
||||||
|
private Integer carMessageEndIndex ;
|
||||||
|
/**
|
||||||
|
* 报文数据类型 (固定值 区间随机值)
|
||||||
|
*/
|
||||||
|
private String messageTypeClass ;
|
||||||
|
/**
|
||||||
|
* 报文是否开启故障检测(0默认未开启 1开启)
|
||||||
|
*/
|
||||||
|
private Integer carMessageState ;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
package com.muyu.warn.domain.car;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.domain.car
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:CarMessage
|
||||||
|
* @Date:2024/9/22 下午3:07
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class CarMessageType {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自增主键
|
||||||
|
*/
|
||||||
|
private Integer messageTypeId ;
|
||||||
|
/**
|
||||||
|
* 报文编码
|
||||||
|
*/
|
||||||
|
private String messageTypeCode ;
|
||||||
|
/**
|
||||||
|
* 报文名称
|
||||||
|
*/
|
||||||
|
private String messageTypeName ;
|
||||||
|
/**
|
||||||
|
* 报文所属类别
|
||||||
|
*/
|
||||||
|
private String messageTypeBelongs ;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
package com.muyu.warn.domain.car;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.domain
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:CartType
|
||||||
|
* @Date:2024/9/21 下午7:38
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class CartType {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆类型ID
|
||||||
|
*/
|
||||||
|
private String carTypeId ;
|
||||||
|
/**
|
||||||
|
* 车辆类型名
|
||||||
|
*/
|
||||||
|
private String carTypeName ;
|
||||||
|
/**
|
||||||
|
* 车辆规则外键ID
|
||||||
|
*/
|
||||||
|
private String carTypeRules ;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
package com.muyu.warn.domain.car.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.domain.car
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:resp
|
||||||
|
* @Date:2024/9/22 下午7:12
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class CarMessageResp {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自增主键
|
||||||
|
*/
|
||||||
|
private Integer carMessageId ;
|
||||||
|
/**
|
||||||
|
* 车辆类型外键
|
||||||
|
*/
|
||||||
|
private Integer carMessageCartype ;
|
||||||
|
/**
|
||||||
|
* 车辆报文外键
|
||||||
|
*/
|
||||||
|
private Integer carMessageType ;
|
||||||
|
/**
|
||||||
|
* 报文名称
|
||||||
|
*/
|
||||||
|
private String messageTypeName ;
|
||||||
|
/**
|
||||||
|
* 开始位下标
|
||||||
|
*/
|
||||||
|
private Integer carMessageStartIndex ;
|
||||||
|
/**
|
||||||
|
* 结束位下标
|
||||||
|
*/
|
||||||
|
private Integer carMessageEndIndex ;
|
||||||
|
/**
|
||||||
|
* 报文数据类型 (固定值 区间随机值)
|
||||||
|
*/
|
||||||
|
private String messageTypeClass ;
|
||||||
|
/**
|
||||||
|
* 报文是否开启故障检测(0默认未开启 1开启)
|
||||||
|
*/
|
||||||
|
private Integer carMessageState ;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package com.muyu.warn.domain.req;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.domain.req
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnStrategyReq
|
||||||
|
* @Date:2024/9/25 下午10:28
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class WarnStrategyReq {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 策略id
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 车辆类型
|
||||||
|
*/
|
||||||
|
private String carTypeId;
|
||||||
|
/**
|
||||||
|
* 策略名称
|
||||||
|
*/
|
||||||
|
private String strategyName;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
package com.muyu.warn.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.muyu.warn.domain.WarnLogs;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.mapper
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnLogsMapper
|
||||||
|
* @Date:2024/9/20 下午7:31
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface WarnLogsMapper extends BaseMapper<WarnLogs> {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.muyu.warn.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.muyu.warn.domain.WarnRule;
|
||||||
|
import com.muyu.warn.domain.car.CarMessageType;
|
||||||
|
import com.muyu.warn.domain.car.resp.CarMessageResp;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.controller
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnLogsController
|
||||||
|
* @Date:2024/9/20 下午7:29
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface WarnRuleMapper extends BaseMapper<WarnRule> {
|
||||||
|
|
||||||
|
List<CarMessageResp> findByMsg(@Param("id") Long id);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package com.muyu.warn.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.muyu.warn.domain.car.CartType;
|
||||||
|
import com.muyu.warn.domain.WarnStrategy;
|
||||||
|
import com.muyu.warn.domain.req.WarnStrategyReq;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.controller
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnLogsController
|
||||||
|
* @Date:2024/9/20 下午7:29
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface WarnStrategyMapper extends BaseMapper<WarnStrategy> {
|
||||||
|
|
||||||
|
List<CartType> findByCarType();
|
||||||
|
|
||||||
|
List<WarnStrategyReq> selectStrategyType(@Param("ids") Long ids);
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
package com.muyu.warn.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.muyu.warn.domain.WarnLogs;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.service
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnLogsService
|
||||||
|
* @Date:2024/9/20 下午7:32
|
||||||
|
*/
|
||||||
|
public interface WarnLogsService extends IService<WarnLogs> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 精确查询预警日志
|
||||||
|
*
|
||||||
|
* @param id 预警日志主键
|
||||||
|
* @return 预警日志
|
||||||
|
*/
|
||||||
|
public WarnLogs selectWarnLogsById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询预警日志列表
|
||||||
|
*
|
||||||
|
* @param warnLogs 预警日志
|
||||||
|
* @return 预警日志集合
|
||||||
|
*/
|
||||||
|
public List<WarnLogs> selectWarnLogsList(WarnLogs warnLogs);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断 预警日志 id是否唯一
|
||||||
|
* @param warnLogs 预警日志
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
Boolean checkIdUnique(WarnLogs warnLogs);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.muyu.warn.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.muyu.warn.domain.WarnRule;
|
||||||
|
import com.muyu.warn.domain.car.CarMessageType;
|
||||||
|
import com.muyu.warn.domain.car.resp.CarMessageResp;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.controller
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnLogsController
|
||||||
|
* @Date:2024/9/20 下午7:29
|
||||||
|
*/
|
||||||
|
public interface WarnRuleService extends IService<WarnRule> {
|
||||||
|
/**
|
||||||
|
* 精确查询预警规则
|
||||||
|
*
|
||||||
|
* @param id 预警规则主键
|
||||||
|
* @return 预警规则
|
||||||
|
*/
|
||||||
|
public WarnRule selectWarnRuleById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询预警规则列表
|
||||||
|
*
|
||||||
|
* @param warnRule 预警规则
|
||||||
|
* @return 预警规则集合
|
||||||
|
*/
|
||||||
|
public List<WarnRule> selectWarnRuleList(WarnRule warnRule);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断 预警规则 id是否唯一
|
||||||
|
* @param warnRule 预警规则
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
Boolean checkIdUnique(WarnRule warnRule);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取车辆类型报文
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<CarMessageResp> findByMsg(Long id);
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package com.muyu.warn.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.muyu.warn.domain.car.CartType;
|
||||||
|
import com.muyu.warn.domain.WarnStrategy;
|
||||||
|
import com.muyu.warn.domain.req.WarnStrategyReq;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.controller
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnLogsController
|
||||||
|
* @Date:2024/9/20 下午7:29
|
||||||
|
*/
|
||||||
|
public interface WarnStrategyService extends IService<WarnStrategy> {
|
||||||
|
/**
|
||||||
|
* 精确查询预警策略
|
||||||
|
*
|
||||||
|
* @param id 预警策略主键
|
||||||
|
* @return 预警策略
|
||||||
|
*/
|
||||||
|
public WarnStrategy selectWarnStrategyById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询预警策略列表
|
||||||
|
*
|
||||||
|
* @param warnStrategy 预警策略
|
||||||
|
* @return 预警策略集合
|
||||||
|
*/
|
||||||
|
public List<WarnStrategy> selectWarnStrategyList(WarnStrategy warnStrategy);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断 预警策略 id是否唯一
|
||||||
|
* @param warnStrategy 预警策略
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
Boolean checkIdUnique(WarnStrategy warnStrategy);
|
||||||
|
|
||||||
|
List<CartType> findByCarType();
|
||||||
|
|
||||||
|
List<WarnStrategyReq> selectStrategyType(Long ids);
|
||||||
|
}
|
|
@ -0,0 +1,98 @@
|
||||||
|
package com.muyu.warn.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Assert;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.muyu.common.core.utils.StringUtils;
|
||||||
|
import com.muyu.warn.domain.WarnLogs;
|
||||||
|
import com.muyu.warn.mapper.WarnLogsMapper;
|
||||||
|
import com.muyu.warn.service.WarnLogsService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.service.impl
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnLogsServiceImpl
|
||||||
|
* @Date:2024/9/20 下午7:39
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class WarnLogsServiceImpl
|
||||||
|
extends ServiceImpl<WarnLogsMapper, WarnLogs>
|
||||||
|
implements WarnLogsService {
|
||||||
|
|
||||||
|
@Autowired private WarnLogsMapper warnLogsMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 精确查询预警日志
|
||||||
|
*
|
||||||
|
* @param id 预警日志主键
|
||||||
|
* @return 预警日志
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public WarnLogs selectWarnLogsById(Long id)
|
||||||
|
{
|
||||||
|
LambdaQueryWrapper<WarnLogs> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
Assert.notNull(id, "id不可为空");
|
||||||
|
queryWrapper.eq(WarnLogs::getId, id);
|
||||||
|
return this.getOne(queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询预警日志列表
|
||||||
|
*
|
||||||
|
* @param warnLogs 预警日志
|
||||||
|
* @return 预警日志
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<WarnLogs> selectWarnLogsList(WarnLogs warnLogs)
|
||||||
|
{
|
||||||
|
LambdaQueryWrapper<WarnLogs> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
if (StringUtils.isNotEmpty(warnLogs.getVin())){
|
||||||
|
queryWrapper.eq(WarnLogs::getVin, warnLogs.getVin());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotNull(warnLogs.getWarnRuleId())){
|
||||||
|
queryWrapper.eq(WarnLogs::getWarnRuleId, warnLogs.getWarnRuleId());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotNull(warnLogs.getStartTime())){
|
||||||
|
queryWrapper.eq(WarnLogs::getStartTime, warnLogs.getStartTime());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotNull(warnLogs.getEndTime())){
|
||||||
|
queryWrapper.eq(WarnLogs::getEndTime, warnLogs.getEndTime());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotNull(warnLogs.getMaxValue())){
|
||||||
|
queryWrapper.eq(WarnLogs::getMaxValue, warnLogs.getMaxValue());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotNull(warnLogs.getMinValue())){
|
||||||
|
queryWrapper.eq(WarnLogs::getMinValue, warnLogs.getMinValue());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotNull(warnLogs.getAvgValue())){
|
||||||
|
queryWrapper.eq(WarnLogs::getAvgValue, warnLogs.getAvgValue());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotNull(warnLogs.getMedianValue())){
|
||||||
|
queryWrapper.eq(WarnLogs::getMedianValue, warnLogs.getMedianValue());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotNull(warnLogs.getStatus())){
|
||||||
|
queryWrapper.eq(WarnLogs::getStatus, warnLogs.getStatus());
|
||||||
|
}
|
||||||
|
return this.list(queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 唯一 判断
|
||||||
|
* @param warnLogs 预警日志
|
||||||
|
* @return 预警日志
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean checkIdUnique(WarnLogs warnLogs) {
|
||||||
|
LambdaQueryWrapper<WarnLogs> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(WarnLogs::getId, warnLogs.getId());
|
||||||
|
return this.count(queryWrapper) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,98 @@
|
||||||
|
package com.muyu.warn.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.muyu.common.core.utils.StringUtils;
|
||||||
|
import com.muyu.warn.domain.WarnRule;
|
||||||
|
import com.muyu.warn.domain.car.CarMessageType;
|
||||||
|
import com.muyu.warn.domain.car.resp.CarMessageResp;
|
||||||
|
import com.muyu.warn.mapper.WarnRuleMapper;
|
||||||
|
import com.muyu.warn.service.WarnRuleService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.controller
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnLogsController
|
||||||
|
* @Date:2024/9/20 下午7:29
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class WarnRuleServiceImpl
|
||||||
|
extends ServiceImpl<WarnRuleMapper, WarnRule>
|
||||||
|
implements WarnRuleService {
|
||||||
|
|
||||||
|
@Autowired private WarnRuleMapper warnRuleMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 精确查询预警规则
|
||||||
|
*
|
||||||
|
* @param id 预警规则主键
|
||||||
|
* @return 预警规则
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public WarnRule selectWarnRuleById(Long id)
|
||||||
|
{
|
||||||
|
LambdaQueryWrapper<WarnRule> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
Assert.notNull(id, "id不可为空");
|
||||||
|
queryWrapper.eq(WarnRule::getId, id);
|
||||||
|
return this.getOne(queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询预警规则列表
|
||||||
|
*
|
||||||
|
* @param warnRule 预警规则
|
||||||
|
* @return 预警规则
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<WarnRule> selectWarnRuleList(WarnRule warnRule)
|
||||||
|
{
|
||||||
|
LambdaQueryWrapper<WarnRule> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
if (StringUtils.isNotEmpty(warnRule.getRuleName())){
|
||||||
|
queryWrapper.like(WarnRule::getRuleName, warnRule.getRuleName());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotNull(warnRule.getStrategyId())){
|
||||||
|
queryWrapper.eq(WarnRule::getStrategyId, warnRule.getStrategyId());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotNull(warnRule.getMsgTypeId())){
|
||||||
|
queryWrapper.eq(WarnRule::getMsgTypeId, warnRule.getMsgTypeId());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotNull(warnRule.getSlideTime())){
|
||||||
|
queryWrapper.eq(WarnRule::getSlideTime, warnRule.getSlideTime());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotNull(warnRule.getSlideFrequency())){
|
||||||
|
queryWrapper.eq(WarnRule::getSlideFrequency, warnRule.getSlideFrequency());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotNull(warnRule.getMaxValue())){
|
||||||
|
queryWrapper.eq(WarnRule::getMaxValue, warnRule.getMaxValue());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotNull(warnRule.getMinValue())){
|
||||||
|
queryWrapper.eq(WarnRule::getMinValue, warnRule.getMinValue());
|
||||||
|
}
|
||||||
|
return this.list(queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 唯一 判断
|
||||||
|
* @param warnRule 预警规则
|
||||||
|
* @return 预警规则
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean checkIdUnique(WarnRule warnRule) {
|
||||||
|
LambdaQueryWrapper<WarnRule> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(WarnRule::getId, warnRule.getId());
|
||||||
|
return this.count(queryWrapper) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CarMessageResp> findByMsg(Long id) {
|
||||||
|
return warnRuleMapper.findByMsg(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,91 @@
|
||||||
|
package com.muyu.warn.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.muyu.common.core.utils.StringUtils;
|
||||||
|
import com.muyu.warn.domain.car.CartType;
|
||||||
|
import com.muyu.warn.domain.WarnStrategy;
|
||||||
|
import com.muyu.warn.domain.req.WarnStrategyReq;
|
||||||
|
import com.muyu.warn.mapper.WarnStrategyMapper;
|
||||||
|
import com.muyu.warn.service.WarnStrategyService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.warn.controller
|
||||||
|
* @Project:cloud-server-8
|
||||||
|
* @name:WarnLogsController
|
||||||
|
* @Date:2024/9/20 下午7:29
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class WarnStrategyServiceImpl
|
||||||
|
extends ServiceImpl<WarnStrategyMapper, WarnStrategy>
|
||||||
|
implements WarnStrategyService {
|
||||||
|
|
||||||
|
@Autowired private WarnStrategyMapper warnStrategyMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 精确查询预警策略
|
||||||
|
*
|
||||||
|
* @param id 预警策略主键
|
||||||
|
* @return 预警策略
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public WarnStrategy selectWarnStrategyById(Long id)
|
||||||
|
{
|
||||||
|
LambdaQueryWrapper<WarnStrategy> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
Assert.notNull(id, "id不可为空");
|
||||||
|
queryWrapper.eq(WarnStrategy::getId, id);
|
||||||
|
return this.getOne(queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询预警策略列表
|
||||||
|
*
|
||||||
|
* @param warnStrategy 预警策略
|
||||||
|
* @return 预警策略
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<WarnStrategy> selectWarnStrategyList(WarnStrategy warnStrategy)
|
||||||
|
{
|
||||||
|
LambdaQueryWrapper<WarnStrategy> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
if (StringUtils.isNotNull(warnStrategy.getCarTypeId())){
|
||||||
|
queryWrapper.eq(WarnStrategy::getCarTypeId, warnStrategy.getCarTypeId());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotEmpty(warnStrategy.getStrategyName())){
|
||||||
|
queryWrapper.like(WarnStrategy::getStrategyName, warnStrategy.getStrategyName());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotNull(warnStrategy.getMsgId())){
|
||||||
|
queryWrapper.eq(WarnStrategy::getMsgId, warnStrategy.getMsgId());
|
||||||
|
}
|
||||||
|
return this.list(queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 唯一 判断
|
||||||
|
* @param warnStrategy 预警策略
|
||||||
|
* @return 预警策略
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean checkIdUnique(WarnStrategy warnStrategy) {
|
||||||
|
LambdaQueryWrapper<WarnStrategy> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(WarnStrategy::getId, warnStrategy.getId());
|
||||||
|
return this.count(queryWrapper) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CartType> findByCarType() {
|
||||||
|
return warnStrategyMapper.findByCarType();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<WarnStrategyReq> selectStrategyType(Long ids) {
|
||||||
|
return warnStrategyMapper.selectStrategyType(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
Spring Boot Version: ${spring-boot.version}
|
||||||
|
Spring Application Name: ${spring.application.name}
|
|
@ -0,0 +1,60 @@
|
||||||
|
# Tomcat
|
||||||
|
server:
|
||||||
|
port: 10004
|
||||||
|
|
||||||
|
# nacos线上地址
|
||||||
|
nacos:
|
||||||
|
addr: 159.75.188.178:8848
|
||||||
|
user-name: nacos
|
||||||
|
password: nacos
|
||||||
|
namespace: psr
|
||||||
|
# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
|
||||||
|
# Spring
|
||||||
|
spring:
|
||||||
|
amqp:
|
||||||
|
deserialization:
|
||||||
|
trust:
|
||||||
|
all: true
|
||||||
|
main:
|
||||||
|
allow-bean-definition-overriding: true
|
||||||
|
application:
|
||||||
|
# 应用名称
|
||||||
|
name: cloud-warn
|
||||||
|
profiles:
|
||||||
|
# 环境配置
|
||||||
|
active: dev
|
||||||
|
cloud:
|
||||||
|
nacos:
|
||||||
|
discovery:
|
||||||
|
# 服务注册地址
|
||||||
|
server-addr: ${nacos.addr}
|
||||||
|
# nacos用户名
|
||||||
|
username: ${nacos.user-name}
|
||||||
|
# nacos密码
|
||||||
|
password: ${nacos.password}
|
||||||
|
# 命名空间
|
||||||
|
namespace: ${nacos.namespace}
|
||||||
|
config:
|
||||||
|
# 服务注册地址
|
||||||
|
server-addr: ${nacos.addr}
|
||||||
|
# nacos用户名
|
||||||
|
username: ${nacos.user-name}
|
||||||
|
# nacos密码
|
||||||
|
password: ${nacos.password}
|
||||||
|
# 命名空间
|
||||||
|
namespace: ${nacos.namespace}
|
||||||
|
# 配置文件格式
|
||||||
|
file-extension: yml
|
||||||
|
# 共享配置
|
||||||
|
shared-configs:
|
||||||
|
# 系统共享配置
|
||||||
|
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||||
|
# 系统环境Config共享配置
|
||||||
|
- application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||||
|
# xxl-job 配置文件
|
||||||
|
- application-xxl-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||||
|
# rabbit 配置文件
|
||||||
|
- application-rabbit-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||||
|
logging:
|
||||||
|
level:
|
||||||
|
com.muyu.system.mapper: DEBUG
|
|
@ -0,0 +1,74 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration scan="true" scanPeriod="60 seconds" debug="false">
|
||||||
|
<!-- 日志存放路径 -->
|
||||||
|
<property name="log.path" value="logs/cloud-wechat"/>
|
||||||
|
<!-- 日志输出格式 -->
|
||||||
|
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
|
||||||
|
|
||||||
|
<!-- 控制台输出 -->
|
||||||
|
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>${log.pattern}</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统日志输出 -->
|
||||||
|
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/info.log</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${log.pattern}</pattern>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 过滤的级别 -->
|
||||||
|
<level>INFO</level>
|
||||||
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/error.log</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${log.pattern}</pattern>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 过滤的级别 -->
|
||||||
|
<level>ERROR</level>
|
||||||
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统模块日志级别控制 -->
|
||||||
|
<logger name="com.muyu" level="info"/>
|
||||||
|
<!-- Spring日志级别控制 -->
|
||||||
|
<logger name="org.springframework" level="warn"/>
|
||||||
|
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="console"/>
|
||||||
|
</root>
|
||||||
|
|
||||||
|
<!--系统操作日志-->
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="file_info"/>
|
||||||
|
<appender-ref ref="file_error"/>
|
||||||
|
</root>
|
||||||
|
</configuration>
|
|
@ -0,0 +1,81 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration scan="true" scanPeriod="60 seconds" debug="false">
|
||||||
|
<!-- 日志存放路径 -->
|
||||||
|
<property name="log.path" value="logs/cloud-wechat"/>
|
||||||
|
<!-- 日志输出格式 -->
|
||||||
|
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
|
||||||
|
<property name="log.sky.pattern" value="%d{HH:mm:ss.SSS} %yellow([%tid]) [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
|
||||||
|
|
||||||
|
<!-- 控制台输出 -->
|
||||||
|
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>${log.sky.pattern}</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统日志输出 -->
|
||||||
|
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/info.log</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 过滤的级别 -->
|
||||||
|
<level>INFO</level>
|
||||||
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/error.log</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 过滤的级别 -->
|
||||||
|
<level>ERROR</level>
|
||||||
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 使用gRpc将日志发送到skywalking服务端 -->
|
||||||
|
<appender name="GRPC_LOG" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
|
||||||
|
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
|
||||||
|
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
|
||||||
|
<Pattern>${log.sky.pattern}</Pattern>
|
||||||
|
</layout>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统模块日志级别控制 -->
|
||||||
|
<logger name="com.muyu" level="info"/>
|
||||||
|
<!-- Spring日志级别控制 -->
|
||||||
|
<logger name="org.springframework" level="warn"/>
|
||||||
|
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="GRPC_LOG"/>
|
||||||
|
<appender-ref ref="console"/>
|
||||||
|
</root>
|
||||||
|
|
||||||
|
<!--系统操作日志-->
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="file_info"/>
|
||||||
|
<appender-ref ref="file_error"/>
|
||||||
|
</root>
|
||||||
|
</configuration>
|
|
@ -0,0 +1,81 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration scan="true" scanPeriod="60 seconds" debug="false">
|
||||||
|
<!-- 日志存放路径 -->
|
||||||
|
<property name="log.path" value="logs/cloud-wechat"/>
|
||||||
|
<!-- 日志输出格式 -->
|
||||||
|
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
|
||||||
|
<property name="log.sky.pattern" value="%d{HH:mm:ss.SSS} %yellow([%tid]) [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
|
||||||
|
|
||||||
|
<!-- 控制台输出 -->
|
||||||
|
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>${log.sky.pattern}</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统日志输出 -->
|
||||||
|
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/info.log</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 过滤的级别 -->
|
||||||
|
<level>INFO</level>
|
||||||
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/error.log</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 过滤的级别 -->
|
||||||
|
<level>ERROR</level>
|
||||||
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 使用gRpc将日志发送到skywalking服务端 -->
|
||||||
|
<appender name="GRPC_LOG" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
|
||||||
|
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
|
||||||
|
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
|
||||||
|
<Pattern>${log.sky.pattern}</Pattern>
|
||||||
|
</layout>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统模块日志级别控制 -->
|
||||||
|
<logger name="com.muyu" level="info"/>
|
||||||
|
<!-- Spring日志级别控制 -->
|
||||||
|
<logger name="org.springframework" level="warn"/>
|
||||||
|
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="GRPC_LOG"/>
|
||||||
|
<appender-ref ref="console"/>
|
||||||
|
</root>
|
||||||
|
|
||||||
|
<!--系统操作日志-->
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="file_info"/>
|
||||||
|
<appender-ref ref="file_error"/>
|
||||||
|
</root>
|
||||||
|
</configuration>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.muyu.warn.mapper.WarnRuleMapper">
|
||||||
|
<select id="findByMsg" resultType="com.muyu.warn.domain.car.resp.CarMessageResp">
|
||||||
|
SELECT
|
||||||
|
cm.car_message_id,
|
||||||
|
cm.car_message_cartype,
|
||||||
|
cm.car_message_type,
|
||||||
|
cmt.message_type_name,
|
||||||
|
cm.car_message_start_index,
|
||||||
|
cm.car_message_end_index,
|
||||||
|
cm.message_type_class,
|
||||||
|
cm.car_message_state
|
||||||
|
FROM
|
||||||
|
car_message cm
|
||||||
|
LEFT JOIN car_message_type cmt ON cm.car_message_type = cmt.message_type_id
|
||||||
|
WHERE
|
||||||
|
cm.car_message_cartype = #{id}
|
||||||
|
</select>
|
||||||
|
</mapper>
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.muyu.warn.mapper.WarnStrategyMapper">
|
||||||
|
<select id="findByCarType" resultType="com.muyu.warn.domain.car.CartType">
|
||||||
|
select
|
||||||
|
car_type_id,
|
||||||
|
car_type_name,
|
||||||
|
car_type_rules
|
||||||
|
from
|
||||||
|
car_type
|
||||||
|
</select>
|
||||||
|
<select id="selectStrategyType" resultType="com.muyu.warn.domain.req.WarnStrategyReq">
|
||||||
|
select
|
||||||
|
id,
|
||||||
|
car_type_id,
|
||||||
|
strategy_name
|
||||||
|
from
|
||||||
|
warn_strategy
|
||||||
|
where
|
||||||
|
car_type_id = #{ids}
|
||||||
|
</select>
|
||||||
|
</mapper>
|
|
@ -0,0 +1,38 @@
|
||||||
|
package com.muyu;
|
||||||
|
|
||||||
|
import junit.framework.Test;
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit test for simple App.
|
||||||
|
*/
|
||||||
|
public class AppTest
|
||||||
|
extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create the test case
|
||||||
|
*
|
||||||
|
* @param testName name of the test case
|
||||||
|
*/
|
||||||
|
public AppTest( String testName )
|
||||||
|
{
|
||||||
|
super( testName );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the suite of tests being tested
|
||||||
|
*/
|
||||||
|
public static Test suite()
|
||||||
|
{
|
||||||
|
return new TestSuite( AppTest.class );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rigourous Test :-)
|
||||||
|
*/
|
||||||
|
public void testApp()
|
||||||
|
{
|
||||||
|
assertTrue( true );
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,120 @@
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-server</artifactId>
|
||||||
|
<version>3.6.3</version>
|
||||||
|
<relativePath>../../pom.xml</relativePath>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>cloud-modules-wechat</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>cloud-modules-wechat</name>
|
||||||
|
<url>http://maven.apache.org</url>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<!-- SpringCloud Alibaba Nacos -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- SpringCloud Alibaba Nacos Config -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- SpringCloud Alibaba Sentinel -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- SpringBoot Actuator -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Mysql Connector -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.mysql</groupId>
|
||||||
|
<artifactId>mysql-connector-j</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- MuYu Common DataSource -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-common-datasource</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- MuYu Common DataScope -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-common-datascope</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- MuYu Common Log -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-common-log</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 接口模块 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-common-api-doc</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- XllJob定时任务 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-common-xxl</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-common-rabbit</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>cloud-common-wechat</artifactId>
|
||||||
|
<version>3.6.3</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<finalName>${project.artifactId}</finalName>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>repackage</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,15 @@
|
||||||
|
package com.muyu.wechat;
|
||||||
|
|
||||||
|
import com.muyu.common.security.annotation.EnableMyFeignClients;
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
@EnableMyFeignClients
|
||||||
|
public class WeChatApplication {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(WeChatApplication.class, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,185 @@
|
||||||
|
package com.muyu.wechat.controller;
|
||||||
|
|
||||||
|
import com.muyu.common.wechat.domain.Articles;
|
||||||
|
import com.muyu.common.wechat.domain.NewsMessage;
|
||||||
|
import com.muyu.common.wechat.domain.TextMessage;
|
||||||
|
import com.muyu.wechat.util.WordUtil;
|
||||||
|
import com.thoughtworks.xstream.XStream;
|
||||||
|
import jakarta.servlet.ServletInputStream;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import org.dom4j.Document;
|
||||||
|
import org.dom4j.DocumentException;
|
||||||
|
import org.dom4j.Element;
|
||||||
|
import org.dom4j.io.SAXReader;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.wxapplication.controller
|
||||||
|
* @Project:WXApplication
|
||||||
|
* @name:WXController
|
||||||
|
* @Date:2024/9/17 下午8:27
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
public class WXController {
|
||||||
|
|
||||||
|
@GetMapping("/hello")
|
||||||
|
public String hello(){
|
||||||
|
return "Hello Wechat";
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/wechat")
|
||||||
|
public String check(
|
||||||
|
@RequestParam("signature") String signature,
|
||||||
|
@RequestParam("timestamp") String timestamp,
|
||||||
|
@RequestParam("nonce") String nonce,
|
||||||
|
@RequestParam("echostr") String echostr
|
||||||
|
){
|
||||||
|
// 1)将token、timestamp、nonce三个参数进行字典序排序
|
||||||
|
String token = "Psan";
|
||||||
|
List<String> list = Arrays.asList(token, timestamp, nonce);
|
||||||
|
//排序
|
||||||
|
Collections.sort(list);
|
||||||
|
// 2)将三个参数字符串拼接成一个字符串进行sha1加密
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
for (String s : list) {
|
||||||
|
stringBuilder.append(s);
|
||||||
|
}
|
||||||
|
//加密
|
||||||
|
try {
|
||||||
|
MessageDigest instance = MessageDigest.getInstance("sha1");
|
||||||
|
//使用sha1进行加密,获得byte数组
|
||||||
|
byte[] digest = instance.digest(stringBuilder.toString().getBytes());
|
||||||
|
StringBuilder sum = new StringBuilder();
|
||||||
|
for (byte b : digest) {
|
||||||
|
sum.append(Integer.toHexString((b>>4)&15));
|
||||||
|
sum.append(Integer.toHexString(b&15));
|
||||||
|
}
|
||||||
|
System.out.println("signature:"+signature);
|
||||||
|
System.out.println("sum:"+sum);
|
||||||
|
// 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
|
||||||
|
if (!StringUtils.isEmpty(signature)&&signature.equals(sum.toString())){
|
||||||
|
return echostr;
|
||||||
|
}
|
||||||
|
} catch (NoSuchAlgorithmException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/")
|
||||||
|
public String receiveMessage(HttpServletRequest request) throws IOException {
|
||||||
|
ServletInputStream inputStream = request.getInputStream();
|
||||||
|
|
||||||
|
// 查看发送信息类型
|
||||||
|
// byte[] bytes = new byte[1024];
|
||||||
|
// int len = 0;
|
||||||
|
// while ((len = inputStream.read(bytes)) != -1) {
|
||||||
|
// System.out.println(new String(bytes, 0, len));
|
||||||
|
// }
|
||||||
|
|
||||||
|
HashMap<String, String> map = new HashMap<>();
|
||||||
|
// xstream工具类
|
||||||
|
SAXReader reader = new SAXReader();
|
||||||
|
try {
|
||||||
|
//读取request输入流,获取Document对象
|
||||||
|
Document document = reader.read(inputStream);
|
||||||
|
//获取root节点
|
||||||
|
Element rootElement = document.getRootElement();
|
||||||
|
//获取所有子节点
|
||||||
|
List<Element> elements = rootElement.elements();
|
||||||
|
for (Element element : elements) {
|
||||||
|
map.put(element.getName(), element.getStringValue());
|
||||||
|
}
|
||||||
|
} catch (DocumentException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
System.out.println(map);
|
||||||
|
String massage = null;
|
||||||
|
if ("图文".equals(map.get("Content"))) {
|
||||||
|
massage = getReplyNewsMessage(map);
|
||||||
|
} else {
|
||||||
|
massage = getReplyMessage(map);
|
||||||
|
}
|
||||||
|
// String massage = getReplyMessageByWord(map);
|
||||||
|
return massage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得回复的信息内容
|
||||||
|
* @param map
|
||||||
|
* @return xml格式的字符串
|
||||||
|
*/
|
||||||
|
private String getReplyMessage(HashMap<String, String> map) {
|
||||||
|
TextMessage textMessage = new TextMessage();
|
||||||
|
textMessage.setToUserName(map.get("FromUserName"));
|
||||||
|
textMessage.setFromUserName(map.get("ToUserName"));
|
||||||
|
textMessage.setMsgType("text");
|
||||||
|
textMessage.setContent("你好吖");
|
||||||
|
textMessage.setCreateTime(System.currentTimeMillis()/1000);
|
||||||
|
|
||||||
|
//XStream将java对象转换为xml字符串
|
||||||
|
XStream xStream = new XStream();
|
||||||
|
xStream.processAnnotations(TextMessage.class);
|
||||||
|
String xml = xStream.toXML(textMessage);
|
||||||
|
return xml;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得同义词
|
||||||
|
* @param map
|
||||||
|
* @return xml格式的字符串
|
||||||
|
*/
|
||||||
|
private String getReplyMessageByWord(HashMap<String, String> map) {
|
||||||
|
TextMessage textMessage = new TextMessage();
|
||||||
|
textMessage.setToUserName(map.get("FromUserName"));
|
||||||
|
textMessage.setFromUserName(map.get("ToUserName"));
|
||||||
|
textMessage.setMsgType("text");
|
||||||
|
textMessage.setContent(WordUtil.getWords(map.get("Content")));
|
||||||
|
textMessage.setCreateTime(System.currentTimeMillis()/1000);
|
||||||
|
|
||||||
|
//XStream将java对象转换为xml字符串
|
||||||
|
XStream xStream = new XStream();
|
||||||
|
xStream.processAnnotations(TextMessage.class);
|
||||||
|
String xml = xStream.toXML(textMessage);
|
||||||
|
return xml;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得回复的图文信息内容
|
||||||
|
* @param map
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private String getReplyNewsMessage(HashMap<String, String> map) {
|
||||||
|
NewsMessage newsMessage = new NewsMessage();
|
||||||
|
newsMessage.setToUserName(map.get("FromUserName"));
|
||||||
|
newsMessage.setFromUserName(map.get("ToUserName"));
|
||||||
|
newsMessage.setMsgType("news");
|
||||||
|
newsMessage.setCreateTime(System.currentTimeMillis()/1000);
|
||||||
|
newsMessage.setArticleCount(1);
|
||||||
|
List<Articles> articles = new ArrayList<>();
|
||||||
|
Articles article = new Articles();
|
||||||
|
article.setTitle("蓬叁测试公众号");
|
||||||
|
article.setDescription("来自蓬叁");
|
||||||
|
article.setUrl("http://www.psan.com");
|
||||||
|
article.setPicUrl("http://mmbiz.qpic.cn/mmbiz_jpg/ZR9F78J7iasww9HxBJRjsBMInrZ78YbXzKvgwy6iabyfZCiaM0CJKzOIS3fUAboIbh07s8icPfYW7RMiajLmx2opticw/0");
|
||||||
|
articles.add(article);
|
||||||
|
newsMessage.setArticles(articles);
|
||||||
|
|
||||||
|
//XStream将java对象转换为xml字符串
|
||||||
|
XStream xStream = new XStream();
|
||||||
|
xStream.processAnnotations(NewsMessage.class);
|
||||||
|
String xml = xStream.toXML(newsMessage);
|
||||||
|
return xml;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package com.muyu.wechat.token;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.muyu.common.wechat.domain.AccessToken;
|
||||||
|
import com.muyu.wechat.util.OkHttpUtils;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class TokenUtil {
|
||||||
|
public final static String APP_ID = "wx962013f3b1eb0a51";
|
||||||
|
|
||||||
|
public final static String APP_SECRET ="5c4c0b2130e6fdf86d989237f9e201dc";
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.println(getAccessToken());
|
||||||
|
System.out.println(getAccessToken());
|
||||||
|
}
|
||||||
|
|
||||||
|
//域名
|
||||||
|
public final static String REDIRECT_DOMAIN ="er6zej.natappfree.cc";
|
||||||
|
|
||||||
|
private static AccessToken accessToken = new AccessToken();
|
||||||
|
|
||||||
|
// {"access_token":"84_E1XHZXQpPj-K6mbCRmGn58iIPU3w7ViwtZRwAt5QN39FP9VBLPq57S_XjRQY88upoYyT4Boil2P6gY8uoKLHuth-W5OczJzr5EGZoWeh2PwhTKEfR1NcCWjqgTYJREcAIAZHU","expires_in":7200}
|
||||||
|
private static void getToken(){
|
||||||
|
String url = String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s",APP_ID,APP_SECRET);
|
||||||
|
String request = OkHttpUtils.sendGetRequest(url);
|
||||||
|
System.out.println(request);
|
||||||
|
AccessToken wechatToken = JSON.parseObject(request, AccessToken.class);
|
||||||
|
//redisService.setCacheObject("WECHAT_TOKEN",wechatToken.getAccessToken(),wechatToken.getExpiresIn(), TimeUnit.SECONDS);
|
||||||
|
if (wechatToken != null) {
|
||||||
|
accessToken.setExpiresTime(wechatToken.getExpires_in());
|
||||||
|
accessToken.setAccess_token(wechatToken.getAccess_token());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static String getAccessToken(){
|
||||||
|
getToken();
|
||||||
|
return accessToken.getAccess_token();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
package com.muyu.wechat.util;
|
||||||
|
|
||||||
|
import okhttp3.*;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class OkHttpUtils {
|
||||||
|
|
||||||
|
private static final OkHttpClient client = new OkHttpClient();
|
||||||
|
|
||||||
|
public static String sendGetRequest(String urlString) {
|
||||||
|
Request request = new Request.Builder()
|
||||||
|
.url(urlString)
|
||||||
|
.build();
|
||||||
|
try (Response response = client.newCall(request).execute()) {
|
||||||
|
return response.body().string();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String sendPostRequest(String urlString, String params) {
|
||||||
|
RequestBody requestBody = RequestBody.create(params, MediaType.parse("application/json; charset=utf-8"));
|
||||||
|
Request request = new Request.Builder()
|
||||||
|
.url(urlString)
|
||||||
|
.post(requestBody)
|
||||||
|
.build();
|
||||||
|
try (Response response = client.newCall(request).execute()) {
|
||||||
|
return response.body().string();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
package com.muyu.wechat.util;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:蓬叁
|
||||||
|
* @Package:com.muyu.wxapplication.util
|
||||||
|
* @Project:WXApplication
|
||||||
|
* @name:WordUtil
|
||||||
|
* @Date:2024/9/18 下午7:38
|
||||||
|
*/
|
||||||
|
public class WordUtil {
|
||||||
|
|
||||||
|
//接口地址
|
||||||
|
public static final String WORD_URL = "http://apis.juhe.cn/tyfy/query";
|
||||||
|
|
||||||
|
//申请接口的请求key
|
||||||
|
// TODO: 您需要改变自己的请求key
|
||||||
|
public static final String KEY = "f9ef42f215679f6995585159c3e1073e";
|
||||||
|
|
||||||
|
public static String getWords(String word){
|
||||||
|
//发送http请求的url
|
||||||
|
String url = String.format(WORD_URL, KEY);
|
||||||
|
final String reponse = OkHttpUtils.sendPostRequest(url,JSONObject.toJSONString(word));
|
||||||
|
System.out.println("接口返回:"+reponse);
|
||||||
|
JSONObject jsonObject = JSONObject.parseObject(reponse) ;
|
||||||
|
Integer error_code = jsonObject.getInteger("error_code");
|
||||||
|
if (error_code == 0){
|
||||||
|
System.out.println("调用接口成功");
|
||||||
|
JSONObject result = jsonObject.getJSONObject("result");
|
||||||
|
JSONArray words = result.getJSONArray("words");
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
words.stream().forEach(w -> stringBuilder.append(w + ""));
|
||||||
|
System.out.println(stringBuilder);
|
||||||
|
return stringBuilder.toString();
|
||||||
|
} else {
|
||||||
|
System.out.println("调用接口失败:" + jsonObject.getString("reason"));
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
Spring Boot Version: ${spring-boot.version}
|
||||||
|
Spring Application Name: ${spring.application.name}
|
|
@ -0,0 +1,60 @@
|
||||||
|
# Tomcat
|
||||||
|
server:
|
||||||
|
port: 10003
|
||||||
|
|
||||||
|
# nacos线上地址
|
||||||
|
nacos:
|
||||||
|
addr: 159.75.188.178:8848
|
||||||
|
user-name: nacos
|
||||||
|
password: nacos
|
||||||
|
namespace: psr
|
||||||
|
# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
|
||||||
|
# Spring
|
||||||
|
spring:
|
||||||
|
amqp:
|
||||||
|
deserialization:
|
||||||
|
trust:
|
||||||
|
all: true
|
||||||
|
main:
|
||||||
|
allow-bean-definition-overriding: true
|
||||||
|
application:
|
||||||
|
# 应用名称
|
||||||
|
name: cloud-wechat
|
||||||
|
profiles:
|
||||||
|
# 环境配置
|
||||||
|
active: dev
|
||||||
|
cloud:
|
||||||
|
nacos:
|
||||||
|
discovery:
|
||||||
|
# 服务注册地址
|
||||||
|
server-addr: ${nacos.addr}
|
||||||
|
# nacos用户名
|
||||||
|
username: ${nacos.user-name}
|
||||||
|
# nacos密码
|
||||||
|
password: ${nacos.password}
|
||||||
|
# 命名空间
|
||||||
|
namespace: ${nacos.namespace}
|
||||||
|
config:
|
||||||
|
# 服务注册地址
|
||||||
|
server-addr: ${nacos.addr}
|
||||||
|
# nacos用户名
|
||||||
|
username: ${nacos.user-name}
|
||||||
|
# nacos密码
|
||||||
|
password: ${nacos.password}
|
||||||
|
# 命名空间
|
||||||
|
namespace: ${nacos.namespace}
|
||||||
|
# 配置文件格式
|
||||||
|
file-extension: yml
|
||||||
|
# 共享配置
|
||||||
|
shared-configs:
|
||||||
|
# 系统共享配置
|
||||||
|
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||||
|
# 系统环境Config共享配置
|
||||||
|
- application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||||
|
# xxl-job 配置文件
|
||||||
|
- application-xxl-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||||
|
# rabbit 配置文件
|
||||||
|
- application-rabbit-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||||
|
logging:
|
||||||
|
level:
|
||||||
|
com.muyu.system.mapper: DEBUG
|
|
@ -0,0 +1,74 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration scan="true" scanPeriod="60 seconds" debug="false">
|
||||||
|
<!-- 日志存放路径 -->
|
||||||
|
<property name="log.path" value="logs/cloud-wechat"/>
|
||||||
|
<!-- 日志输出格式 -->
|
||||||
|
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
|
||||||
|
|
||||||
|
<!-- 控制台输出 -->
|
||||||
|
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>${log.pattern}</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统日志输出 -->
|
||||||
|
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/info.log</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${log.pattern}</pattern>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 过滤的级别 -->
|
||||||
|
<level>INFO</level>
|
||||||
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/error.log</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${log.pattern}</pattern>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 过滤的级别 -->
|
||||||
|
<level>ERROR</level>
|
||||||
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统模块日志级别控制 -->
|
||||||
|
<logger name="com.muyu" level="info"/>
|
||||||
|
<!-- Spring日志级别控制 -->
|
||||||
|
<logger name="org.springframework" level="warn"/>
|
||||||
|
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="console"/>
|
||||||
|
</root>
|
||||||
|
|
||||||
|
<!--系统操作日志-->
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="file_info"/>
|
||||||
|
<appender-ref ref="file_error"/>
|
||||||
|
</root>
|
||||||
|
</configuration>
|
|
@ -0,0 +1,81 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration scan="true" scanPeriod="60 seconds" debug="false">
|
||||||
|
<!-- 日志存放路径 -->
|
||||||
|
<property name="log.path" value="logs/cloud-wechat"/>
|
||||||
|
<!-- 日志输出格式 -->
|
||||||
|
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
|
||||||
|
<property name="log.sky.pattern" value="%d{HH:mm:ss.SSS} %yellow([%tid]) [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
|
||||||
|
|
||||||
|
<!-- 控制台输出 -->
|
||||||
|
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>${log.sky.pattern}</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统日志输出 -->
|
||||||
|
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/info.log</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 过滤的级别 -->
|
||||||
|
<level>INFO</level>
|
||||||
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/error.log</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 过滤的级别 -->
|
||||||
|
<level>ERROR</level>
|
||||||
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 使用gRpc将日志发送到skywalking服务端 -->
|
||||||
|
<appender name="GRPC_LOG" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
|
||||||
|
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
|
||||||
|
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
|
||||||
|
<Pattern>${log.sky.pattern}</Pattern>
|
||||||
|
</layout>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统模块日志级别控制 -->
|
||||||
|
<logger name="com.muyu" level="info"/>
|
||||||
|
<!-- Spring日志级别控制 -->
|
||||||
|
<logger name="org.springframework" level="warn"/>
|
||||||
|
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="GRPC_LOG"/>
|
||||||
|
<appender-ref ref="console"/>
|
||||||
|
</root>
|
||||||
|
|
||||||
|
<!--系统操作日志-->
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="file_info"/>
|
||||||
|
<appender-ref ref="file_error"/>
|
||||||
|
</root>
|
||||||
|
</configuration>
|
|
@ -0,0 +1,81 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration scan="true" scanPeriod="60 seconds" debug="false">
|
||||||
|
<!-- 日志存放路径 -->
|
||||||
|
<property name="log.path" value="logs/cloud-wechat"/>
|
||||||
|
<!-- 日志输出格式 -->
|
||||||
|
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
|
||||||
|
<property name="log.sky.pattern" value="%d{HH:mm:ss.SSS} %yellow([%tid]) [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
|
||||||
|
|
||||||
|
<!-- 控制台输出 -->
|
||||||
|
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>${log.sky.pattern}</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统日志输出 -->
|
||||||
|
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/info.log</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 过滤的级别 -->
|
||||||
|
<level>INFO</level>
|
||||||
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/error.log</file>
|
||||||
|
<!-- 循环政策:基于时间创建日志文件 -->
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- 日志文件名格式 -->
|
||||||
|
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||||
|
<!-- 日志最大的历史 60天 -->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 过滤的级别 -->
|
||||||
|
<level>ERROR</level>
|
||||||
|
<!-- 匹配时的操作:接收(记录) -->
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 使用gRpc将日志发送到skywalking服务端 -->
|
||||||
|
<appender name="GRPC_LOG" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
|
||||||
|
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
|
||||||
|
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
|
||||||
|
<Pattern>${log.sky.pattern}</Pattern>
|
||||||
|
</layout>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 系统模块日志级别控制 -->
|
||||||
|
<logger name="com.muyu" level="info"/>
|
||||||
|
<!-- Spring日志级别控制 -->
|
||||||
|
<logger name="org.springframework" level="warn"/>
|
||||||
|
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="GRPC_LOG"/>
|
||||||
|
<appender-ref ref="console"/>
|
||||||
|
</root>
|
||||||
|
|
||||||
|
<!--系统操作日志-->
|
||||||
|
<root level="info">
|
||||||
|
<appender-ref ref="file_info"/>
|
||||||
|
<appender-ref ref="file_error"/>
|
||||||
|
</root>
|
||||||
|
</configuration>
|
|
@ -0,0 +1,38 @@
|
||||||
|
package com.muyu;
|
||||||
|
|
||||||
|
import junit.framework.Test;
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit test for simple App.
|
||||||
|
*/
|
||||||
|
public class AppTest
|
||||||
|
extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Create the test case
|
||||||
|
*
|
||||||
|
* @param testName name of the test case
|
||||||
|
*/
|
||||||
|
public AppTest( String testName )
|
||||||
|
{
|
||||||
|
super( testName );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the suite of tests being tested
|
||||||
|
*/
|
||||||
|
public static Test suite()
|
||||||
|
{
|
||||||
|
return new TestSuite( AppTest.class );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rigourous Test :-)
|
||||||
|
*/
|
||||||
|
public void testApp()
|
||||||
|
{
|
||||||
|
assertTrue( true );
|
||||||
|
}
|
||||||
|
}
|
|
@ -14,6 +14,9 @@
|
||||||
<module>cloud-modules-gen</module>
|
<module>cloud-modules-gen</module>
|
||||||
<module>cloud-modules-file</module>
|
<module>cloud-modules-file</module>
|
||||||
<module>cloud-modules-car</module>
|
<module>cloud-modules-car</module>
|
||||||
|
<module>cloud-modules-warn</module>
|
||||||
|
<module>cloud-modules-car</module>
|
||||||
|
<module>cloud-test</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<artifactId>cloud-modules</artifactId>
|
<artifactId>cloud-modules</artifactId>
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
"name": "cloud-server-8",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"node_modules/echarts": {
|
||||||
|
"version": "5.5.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz",
|
||||||
|
"integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
|
||||||
|
"dependencies": {
|
||||||
|
"tslib": "2.3.0",
|
||||||
|
"zrender": "5.6.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tslib": {
|
||||||
|
"version": "2.3.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
|
||||||
|
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
|
||||||
|
},
|
||||||
|
"node_modules/zrender": {
|
||||||
|
"version": "5.6.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz",
|
||||||
|
"integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
|
||||||
|
"dependencies": {
|
||||||
|
"tslib": "2.3.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,419 @@
|
||||||
|
This file contains the PGP keys of various developers.
|
||||||
|
Please don't use them for email unless you have to. Their main
|
||||||
|
purpose is code signing.
|
||||||
|
|
||||||
|
Examples of importing this file in your keystore:
|
||||||
|
gpg --import KEYS.txt
|
||||||
|
(need pgp and other examples here)
|
||||||
|
|
||||||
|
Examples of adding your key to this file:
|
||||||
|
pgp -kxa <your name> and append it to this file.
|
||||||
|
(pgpk -ll <your name> && pgpk -xa <your name>) >> this file.
|
||||||
|
(gpg --list-sigs <your name>
|
||||||
|
&& gpg --armor --export <your name>) >> this file.
|
||||||
|
|
||||||
|
---------------------------------------
|
||||||
|
pub rsa4096 2018-04-23 [SC]
|
||||||
|
9B06D9B4FA37C4DD52725742747985D7E3CEB635
|
||||||
|
uid [ultimate] Su Shuang (CODE SIGNING KEY) <sushuang@apache.org>
|
||||||
|
sig 3 747985D7E3CEB635 2018-04-23 Su Shuang (CODE SIGNING KEY) <sushuang@apache.org>
|
||||||
|
sub rsa4096 2018-04-23 [E]
|
||||||
|
sig 747985D7E3CEB635 2018-04-23 Su Shuang (CODE SIGNING KEY) <sushuang@apache.org>
|
||||||
|
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
mQINBFrd5SYBEADoCBw12lsK1sxn3r879jI50GhRAg5vF0aBql0h2BIJ3d+oYYSm
|
||||||
|
nIsK/XGpIk3t6ZhJRXK+le89t8a7vBsU+y0+3+OehxOV63du1wscQU9GPu7IfXhw
|
||||||
|
V4YcsGK330+V/GiwBs3EX808fdQrdkfCsaGEJhKJbK2fldUcnNp3M1Y2+DVZqGmb
|
||||||
|
I7fRJuEj/S9bcVGWnv40jBbMKjx/8LyP2dxZLyy1+whEUimU9em6Tj+SnyISe1I2
|
||||||
|
sLa3lwhWer0rkrz0siGFTgDHaDvLlpL9TV34acj/FOon3XKMtx4neNVmkC3QVi0z
|
||||||
|
PSlnX6EV8Fas9ylA4x9bdaUo6zUZKO533ASfC6uEibvE2XSRXYJ0xB2bThcQbkdl
|
||||||
|
332JqD1TkyF/UQRel3pUm/bCsv2daKD98ZO+eCbvNNonrip2qXDwJJ5HzlXlThyR
|
||||||
|
eN1Og90gXvYix4sbsZgNEIyYSaLri7/GjyMD34GCLQiV/kvc/foaC/hkvz6kVOiq
|
||||||
|
/tMHY3KsGYAIF4Z9kuTCwJOwFqgfb+Y15bPRDK84uyCiRhtIubNWY7Euy4bBd3ul
|
||||||
|
uazQ9LabBhZaa7HCOMssW+TaB+GondZJTiwnI6MCTJKrKtvb8kzcKR4mNf/dvF0O
|
||||||
|
x7zwVBeklMKXjkpOtje/+/XOYKuD3g1BZ/+vrfMFPTZ7y7ASC2ylcKI0/QARAQAB
|
||||||
|
tDJTdSBTaHVhbmcgKENPREUgU0lHTklORyBLRVkpIDxzdXNodWFuZ0BhcGFjaGUu
|
||||||
|
b3JnPokCTgQTAQoAOBYhBJsG2bT6N8TdUnJXQnR5hdfjzrY1BQJa3eUmAhsDBQsJ
|
||||||
|
CAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJEHR5hdfjzrY13yIP+wS+Mh86IuIK+zG5
|
||||||
|
qr/cncV541RxvIGbv5uCQEbFRIwtR8SJEyx2tu4pIgsaTu93hdwxHFCcOZT2IsXP
|
||||||
|
meRWPfhaguDFQArdu4VdOfq2AbMqqByFWRsbwvF8CX8fGMPBCsMp0pzqp0px1uUr
|
||||||
|
WlK5hBSVwDHWACElyJE7jmk5K+O7RmDUD2E/pgXid+SiU8W+k9vWj49nHAhStYTm
|
||||||
|
SwVQA4Gl7jGCJY5jFwZIRD5/b8kVYjbJFl9CBDD2nOIytrGfMVlhp2OcT1f6yZvZ
|
||||||
|
oY2nvWLBUF0SmQzlli3EW9zzsNAXDu3f81kqwa+kC2WqQ3s4bKZKQurN5sCWvoyX
|
||||||
|
db+AWedArK+m3fH9y3JFIr5Lu1MwfbgfMfm9EZS4A+3DqLFIsLrmnzbGZ9FCkqsj
|
||||||
|
TuvKWOP2H365xH44gHImYKZ92PDdLKE7XArVU5b9qtAimgCDsCjEiXTB4S3NVJGX
|
||||||
|
R0RZCttKgnrLHwAad3TeLhktWcjH4TdxNCrNZsHLO9mklGyeM1IxKqba4OdHTmYX
|
||||||
|
tYYlixSlAu5vSPa+vDkILRfyU87n9YD9RiVGmvy27IP7wdxSClJun6+9fviU2NpG
|
||||||
|
FCkLZovYz8/Qht1c8yQZGscw3sa316m1nJz42Lo+p2s6AQZhZupu8bi/W85VHoxa
|
||||||
|
roRO16i+mFr4bnbo2/jftB6UVVo7uQINBFrd5SYBEACVsgwBHz5cpBqZQVNS6o0W
|
||||||
|
RUnWWNDiBYidNQNTWCF9NDF0HCh6oHecjjXQEPduvMPdzOPpawAkKMRG+7MlHiu/
|
||||||
|
ugAq0RluoM3QzDZwvCPw+p/NTESZMqLvbHXEs2u6YCdIsFcTLXr2d+JBWDeGri0S
|
||||||
|
YB4gjjQIVvDGqG0tDoW4JmqHHMZiJ6c+h2Rq+saHte0rctHcVAq4p5I8O1iJ1Mkg
|
||||||
|
gKJ/TBsjPM5aK6ahPpIPPh48nbhpsLjKHwqB/UWdUcB/HUDa0YfV4JbJilEeeQFZ
|
||||||
|
PzlP5SJaGyuEnTnhEwnoXpFetfMYi+Mxnc4VoSrQ3UOsVpD2Ii3haUjdKWTjukyn
|
||||||
|
o3sCxvsBTQ8jyBtjjhLw1jfWJdHJ2WCDGVtQVuJ6Gx1GCV0XRbKDTWdIBnCkdKtU
|
||||||
|
FY+VMt77oQ/ydeRsZDXhkdgBqqkvdiRHRyEFy72rx61cGTIKuKcWu0rJx8/LnVyi
|
||||||
|
nOEk8K8mgNR8omnpFmkkStOtSDLjDb8WeIdigxwJ4wtQnLlLGWiAAVNnDDsqgGIB
|
||||||
|
3rrR+/HKUa05CwKI1oIC7i4f7qkgfFUjjr1e496FDSq2tBTLukq/v5FpU6C0JSVq
|
||||||
|
MeD5+UuGtSezBxQUdxV7caftIptopwWnx4bBjWSuk2FVCzWcYMnXNIbtfEbqMKuS
|
||||||
|
mrpk4mOBNAV6XYzNcOHQqwARAQABiQI2BBgBCgAgFiEEmwbZtPo3xN1ScldCdHmF
|
||||||
|
1+POtjUFAlrd5SYCGwwACgkQdHmF1+POtjXK4g//c7vJXmN0FtACspBJVrgsKrYj
|
||||||
|
ha4c2PCEynfKSwhVXW3yHnQMwh8/bpQUs5bwCTWx27IEeBrfb03/X9tlx12koGvl
|
||||||
|
LujaR7IP6xaqWpbh6rrfttOKGx3xKopJ4nHgNPIYN/ApflAacwyOd+/leWOjHrii
|
||||||
|
JXbB60oc7FNvfQRREICLZyeAnzlAcEOVcWvBTngB0EDUZucKwkQtt0x3YvKetgQf
|
||||||
|
EMFBAH4RUXG0ms85acX2rpi/kbdarFv6Hc2pzakoWDKNjHMMae1J8wQbPRaXx1NB
|
||||||
|
+xF362eLXZaxtvKdzs9Q03R46DY9cyQRofG5WNnZapgemEzPgixur8FYK5EPCQkh
|
||||||
|
Y2FA0WUbZFIkO7pE7UNS5ZN5fHkkEhAFo4wV0uqWRVBpFrjKeBxtRkIaw7jLCHr5
|
||||||
|
3EpkTusjT/529rEYIq9cGOTwf75AbKR1IZFxffEZYOU76y6SH0bINoYp0VxFJ/IR
|
||||||
|
zy5CHqvyUQVUed5O/7UzkYx0IVBGk2wSwOtC7+iRptqj+kI9RCjGizhNe4hG3SUq
|
||||||
|
1qkUGkQu6+skyXeFCR1PIAbQgleRNUQotsh/rfsfZpQOomBdvDRPT8ZcN5bjUIJ1
|
||||||
|
5c4abryWPkun+BgZk+YFtYLbGZVJAUy2OtXRG5uYzeLc5ID+X5XwwtZOO4gSWMTh
|
||||||
|
oQH7TsthVKvdZyjtZQg=
|
||||||
|
=Uv8d
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
pub rsa4096 2019-01-24 [SC]
|
||||||
|
1683FBD23F6DD36C0E52223507D78F777D2C0C27
|
||||||
|
uid [ultimate] Ovilia (CODE SIGNING KEY) <oviliazhang@gmail.com>
|
||||||
|
sig 3 07D78F777D2C0C27 2019-01-24 Ovilia (CODE SIGNING KEY) <oviliazhang@gmail.com>
|
||||||
|
sub rsa4096 2019-01-24 [E]
|
||||||
|
sig 07D78F777D2C0C27 2019-01-24 Ovilia (CODE SIGNING KEY) <oviliazhang@gmail.com>
|
||||||
|
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
B4WM8AJSCwl8WlZrRA==
|
||||||
|
=wft0
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
pub rsa4096 2020-08-06 [SC]
|
||||||
|
94BD178077672157652826758E44A82497382298
|
||||||
|
uid [ 绝对 ] Shen Yi (CODE SIGNING KEY\) <shenyi@apache.org>
|
||||||
|
sig 3 8E44A82497382298 2020-08-06 Shen Yi (CODE SIGNING KEY\) <shenyi@apache.org>
|
||||||
|
sub rsa4096 2020-08-06 [E]
|
||||||
|
sig 8E44A82497382298 2020-08-06 Shen Yi (CODE SIGNING KEY\) <shenyi@apache.org>
|
||||||
|
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
krvOtK7UUytDTcY=
|
||||||
|
=+SBy
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
pub rsa4096 2022-03-02 [SC]
|
||||||
|
8ACA4FC874B6B0836DFE70BB52514D7E7CFC32B6
|
||||||
|
uid [ 绝对 ] Zhang Wenli (CODE SIGNING KEY) <ovilia@apache.org>
|
||||||
|
sig 3 52514D7E7CFC32B6 2022-03-02 Zhang Wenli (CODE SIGNING KEY) <ovilia@apache.org>
|
||||||
|
sub rsa4096 2022-03-02 [E]
|
||||||
|
sig 52514D7E7CFC32B6 2022-03-02 Zhang Wenli (CODE SIGNING KEY) <ovilia@apache.org>
|
||||||
|
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
RWnk0btbWIvaznWpIWo=
|
||||||
|
=QBYg
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
pub rsa4096 2022-03-28 [SC]
|
||||||
|
EFA5629C5F1FF8D33E016202F16C82C561221579
|
||||||
|
uid [ultimate] Zhongxiang Wang (CODE SIGNING KEY) <wangzx@apache.org>
|
||||||
|
sig 3 F16C82C561221579 2022-03-28 Zhongxiang Wang (CODE SIGNING KEY) <wangzx@apache.org>
|
||||||
|
sub rsa4096 2022-03-28 [E]
|
||||||
|
sig F16C82C561221579 2022-03-28 Zhongxiang Wang (CODE SIGNING KEY) <wangzx@apache.org>
|
||||||
|
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
5B5E6LlMNPTCWmPzYtTm5qZK
|
||||||
|
=bbcU
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
pub ed25519 2022-12-01 [SC] [expires: 2024-11-30]
|
||||||
|
016736F5612A13D1FD04AA45CC593BC1F4F4EB7A
|
||||||
|
uid [ultimate] susiwen <susiwen8@gmail.com>
|
||||||
|
sig 3 CC593BC1F4F4EB7A 2022-12-01 susiwen <susiwen8@gmail.com>
|
||||||
|
sub cv25519 2022-12-01 [E] [expires: 2024-11-30]
|
||||||
|
sig CC593BC1F4F4EB7A 2022-12-01 susiwen <susiwen8@gmail.com>
|
||||||
|
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
mDMEY4jDBhYJKwYBBAHaRw8BAQdAlpaQNA7ARfkPVj6EoYARkkGPdLgOmulCwScl
|
||||||
|
xGk3+8m0HHN1c2l3ZW4gPHN1c2l3ZW44QGdtYWlsLmNvbT6ImQQTFgoAQRYhBAFn
|
||||||
|
NvVhKhPR/QSqRcxZO8H09Ot6BQJjiMMGAhsDBQkDwmcABQsJCAcCAiICBhUKCQgL
|
||||||
|
AgQWAgMBAh4HAheAAAoJEMxZO8H09Ot6gcoBANBsCrZOwZtWCCQB2A6cy0or7q4c
|
||||||
|
GdyMJbP7zT5tdAAuAQDI7dy5/KE5tklZmEHJZevQLWezs6yKi+31QxcNFh6FA7g4
|
||||||
|
BGOIwwYSCisGAQQBl1UBBQEBB0A4z0jb/PpPRt/zILSBzl8XidMvvQAksexms4P4
|
||||||
|
D74EcQMBCAeIfgQYFgoAJhYhBAFnNvVhKhPR/QSqRcxZO8H09Ot6BQJjiMMGAhsM
|
||||||
|
BQkDwmcAAAoJEMxZO8H09Ot6hEABALEBaZSNzmx17PbubyiyvtaEISuzsv23RYwh
|
||||||
|
4NRHP4BkAP475WSjwMns2hSairvPXULqAcqQnjytov7CU1hbMLvgDpgzBGOMr5EW
|
||||||
|
CSsGAQQB2kcPAQEHQF85ZZTr9NstXxkToCrkVYwNuahidgRyv6S3zo2xTc6ZtC9z
|
||||||
|
dXNpd2VuIChDT0RFIFNJR05JTkcgS0VZKSA8c3VzaXdlbjhAZ21haWwuY29tPoiT
|
||||||
|
BBMWCgA7FiEEhBIjSy5LUgkGNSGQJZ0/SMJTSzwFAmOMr5ECGwMFCwkIBwICIgIG
|
||||||
|
FQoJCAsCBBYCAwECHgcCF4AACgkQJZ0/SMJTSzyNaAD+P35MI4r5nUDDg97QKYNY
|
||||||
|
m99MtUxTmcK/KGsrxYEZEDEA/jECGFvy/5WAhIRUTl4ExVsY3eBL/K2DaoTseW4a
|
||||||
|
eVEPuDgEY4yvkRIKKwYBBAGXVQEFAQEHQKNPmeMoqbHBVs5xn0c+Tz/bPW0rDDbw
|
||||||
|
Gt1pqdBMdmUvAwEIB4h4BBgWCgAgFiEEhBIjSy5LUgkGNSGQJZ0/SMJTSzwFAmOM
|
||||||
|
r5ECGwwACgkQJZ0/SMJTSzxTzQD+MTFHjt7z78fdTqbbRA6isxPV84cAFQsX4cRx
|
||||||
|
PRobcbkBAIwAkq+ddEycxZTdzaELpE08h/BLcScqbOl/ME1PTZ0H
|
||||||
|
=3Tm4
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
pub ed25519 2023-03-15 [SC] [有效至:2025-03-14]
|
||||||
|
9C8B166777DB15AD1CC0FFBF715559B9217D4E5A
|
||||||
|
uid [ 绝对 ] zakwu <123537200@qq.com>
|
||||||
|
sig 3 715559B9217D4E5A 2023-03-15 zakwu <123537200@qq.com>
|
||||||
|
sub cv25519 2023-03-15 [E] [有效至:2025-03-14]
|
||||||
|
sig 715559B9217D4E5A 2023-03-15 zakwu <123537200@qq.com>
|
||||||
|
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
mDMEZBE+JRYJKwYBBAHaRw8BAQdA4US4FlrxvH2Ckj5NzIkeL5nd4NyDBrlpyERo
|
||||||
|
KvlXn/C0GHpha3d1IDwxMjM1MzcyMDBAcXEuY29tPoiZBBMWCgBBFiEEnIsWZ3fb
|
||||||
|
Fa0cwP+/cVVZuSF9TloFAmQRPiUCGwMFCQPCZwAFCwkIBwICIgIGFQoJCAsCBBYC
|
||||||
|
AwECHgcCF4AACgkQcVVZuSF9TloeGAD/RjarHn34jh1NtJGi6Z8wv/XWESxyNH6g
|
||||||
|
orBPlQ+yluEBAIinhY8j/XczJQUcj9cqpMB4m8R+/jEadbaBe9pQ3uAHuDgEZBE+
|
||||||
|
JRIKKwYBBAGXVQEFAQEHQPa8rnpAhbsWw0VsCbYo1J+VeZXT/piqPpdducN3Wyh2
|
||||||
|
AwEIB4h+BBgWCgAmFiEEnIsWZ3fbFa0cwP+/cVVZuSF9TloFAmQRPiUCGwwFCQPC
|
||||||
|
ZwAACgkQcVVZuSF9Tlrc4QD/ZDd7OjcT9ShdARjcGoQ0jt6rEqL6n10V6caG+77a
|
||||||
|
89wA/R+29UlbOXNAxcQHxph8WXUZhACDhKyNETgRsgHysZQJ
|
||||||
|
=/6bg
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
pub rsa4096 2024-01-31 [SC]
|
||||||
|
88AF48720040B150083A7D10932517D290673A7B
|
||||||
|
uid [ 绝对 ] Zhang Wenli <ovilia@apache.org>
|
||||||
|
sig 3 932517D290673A7B 2024-01-31 [自签名]
|
||||||
|
sub rsa4096 2024-01-31 [E]
|
||||||
|
sig 932517D290673A7B 2024-01-31 [自签名]
|
||||||
|
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
=YTwy
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
|
@ -0,0 +1,222 @@
|
||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
========================================================================
|
||||||
|
Apache ECharts Subcomponents:
|
||||||
|
|
||||||
|
The Apache ECharts project contains subcomponents with separate copyright
|
||||||
|
notices and license terms. Your use of the source code for these
|
||||||
|
subcomponents is also subject to the terms and conditions of the following
|
||||||
|
licenses.
|
||||||
|
|
||||||
|
BSD 3-Clause (d3.js):
|
||||||
|
The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause:
|
||||||
|
`/src/chart/treemap/treemapLayout.ts`,
|
||||||
|
`/src/chart/tree/layoutHelper.ts`,
|
||||||
|
`/src/chart/graph/forceHelper.ts`,
|
||||||
|
`/src/util/number.ts`
|
||||||
|
See `/licenses/LICENSE-d3` for details of the license.
|
|
@ -0,0 +1,5 @@
|
||||||
|
Apache ECharts
|
||||||
|
Copyright 2017-2024 The Apache Software Foundation
|
||||||
|
|
||||||
|
This product includes software developed at
|
||||||
|
The Apache Software Foundation (https://www.apache.org/).
|
|
@ -0,0 +1,98 @@
|
||||||
|
# Apache ECharts
|
||||||
|
|
||||||
|
<a href="https://echarts.apache.org/">
|
||||||
|
<img style="vertical-align: top;" src="./asset/logo.png?raw=true" alt="logo" height="50px">
|
||||||
|
</a>
|
||||||
|
|
||||||
|
Apache ECharts is a free, powerful charting and visualization library offering easy ways to add intuitive, interactive, and highly customizable charts to your commercial products. It is written in pure JavaScript and based on <a href="https://github.com/ecomfe/zrender">zrender</a>, which is a whole new lightweight canvas library.
|
||||||
|
|
||||||
|
**[中文官网](https://echarts.apache.org/zh/index.html)** | **[ENGLISH HOMEPAGE](https://echarts.apache.org/en/index.html)**
|
||||||
|
|
||||||
|
[](https://github.com/apache/echarts/blob/master/LICENSE) [](https://www.npmjs.com/package/echarts) [](https://www.npmjs.com/package/echarts) [](https://github.com/apache/echarts/graphs/contributors)
|
||||||
|
|
||||||
|
[](https://github.com/apache/echarts/actions/workflows/ci.yml)
|
||||||
|
|
||||||
|
## Get Apache ECharts
|
||||||
|
|
||||||
|
You may choose one of the following methods:
|
||||||
|
|
||||||
|
+ Download from the [official website](https://echarts.apache.org/download.html)
|
||||||
|
+ `npm install echarts --save`
|
||||||
|
+ CDN: [jsDelivr CDN](https://www.jsdelivr.com/package/npm/echarts?path=dist)
|
||||||
|
|
||||||
|
## Docs
|
||||||
|
|
||||||
|
+ [Get Started](https://echarts.apache.org/handbook)
|
||||||
|
+ [API](https://echarts.apache.org/api.html)
|
||||||
|
+ [Option Manual](https://echarts.apache.org/option.html)
|
||||||
|
+ [Examples](https://echarts.apache.org/examples)
|
||||||
|
|
||||||
|
## Get Help
|
||||||
|
|
||||||
|
+ [GitHub Issues](https://github.com/apache/echarts/issues) for bug report and feature requests
|
||||||
|
+ Email [dev@echarts.apache.org](mailto:dev@echarts.apache.org) for general questions
|
||||||
|
+ Subscribe to the [mailing list](https://echarts.apache.org/maillist.html) to get updated with the project
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Build echarts source code:
|
||||||
|
|
||||||
|
Execute the instructions in the root directory of the echarts:
|
||||||
|
([Node.js](https://nodejs.org) is required)
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Install the dependencies from NPM:
|
||||||
|
npm install
|
||||||
|
|
||||||
|
# Rebuild source code immediately in watch mode when changing the source code.
|
||||||
|
# It opens the `./test` directory, and you may open `-cases.html` to get the list
|
||||||
|
# of all test cases.
|
||||||
|
# If you wish to create a test case, run `npm run mktest:help` to learn more.
|
||||||
|
npm run dev
|
||||||
|
|
||||||
|
# Check the correctness of TypeScript code.
|
||||||
|
npm run checktype
|
||||||
|
|
||||||
|
# If intending to build and get all types of the "production" files:
|
||||||
|
npm run release
|
||||||
|
```
|
||||||
|
|
||||||
|
Then the "production" files are generated in the `dist` directory.
|
||||||
|
|
||||||
|
## Contribution
|
||||||
|
|
||||||
|
Please refer to the [contributing](https://github.com/apache/echarts/blob/master/CONTRIBUTING.md) document if you wish to debug locally or make pull requests.
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
### Awesome ECharts
|
||||||
|
|
||||||
|
[https://github.com/ecomfe/awesome-echarts](https://github.com/ecomfe/awesome-echarts)
|
||||||
|
|
||||||
|
### Extensions
|
||||||
|
|
||||||
|
+ [ECharts GL](https://github.com/ecomfe/echarts-gl) An extension pack of ECharts, which provides 3D plots, globe visualization, and WebGL acceleration.
|
||||||
|
|
||||||
|
+ [Liquidfill 水球图](https://github.com/ecomfe/echarts-liquidfill)
|
||||||
|
|
||||||
|
+ [Wordcloud 字符云](https://github.com/ecomfe/echarts-wordcloud)
|
||||||
|
|
||||||
|
+ [Extension for Baidu Map 百度地图扩展](https://github.com/apache/echarts/tree/master/extension-src/bmap) An extension provides a wrapper of Baidu Map Service SDK.
|
||||||
|
|
||||||
|
+ [vue-echarts](https://github.com/ecomfe/vue-echarts) ECharts component for Vue.js
|
||||||
|
|
||||||
|
+ [echarts-stat](https://github.com/ecomfe/echarts-stat) Statistics tool for ECharts
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
ECharts is available under the Apache License V2.
|
||||||
|
|
||||||
|
## Code of Conduct
|
||||||
|
|
||||||
|
Please refer to [Apache Code of Conduct](https://www.apache.org/foundation/policies/conduct.html).
|
||||||
|
|
||||||
|
## Paper
|
||||||
|
|
||||||
|
Deqing Li, Honghui Mei, Yi Shen, Shuang Su, Wenli Zhang, Junting Wang, Ming Zu, Wei Chen.
|
||||||
|
[ECharts: A Declarative Framework for Rapid Construction of Web-based Visualization](https://www.sciencedirect.com/science/article/pii/S2468502X18300068).
|
||||||
|
Visual Informatics, 2018.
|
Binary file not shown.
After Width: | Height: | Size: 7.2 KiB |
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from './types/dist/charts';
|
|
@ -0,0 +1,27 @@
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
// In somehow. If we export like
|
||||||
|
// export * as LineChart './chart/line/install'
|
||||||
|
// The exported code will be transformed to
|
||||||
|
// import * as LineChart_1 './chart/line/install'; export {LineChart_1 as LineChart};
|
||||||
|
// Treeshaking in webpack will not work even if we configured sideEffects to false in package.json
|
||||||
|
|
||||||
|
export * from './lib/export/charts.js';
|
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from './types/dist/components';
|
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from './lib/export/components.js';
|
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from './types/dist/core';
|
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from './lib/export/core.js';
|
|
@ -0,0 +1,235 @@
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
// @ts-nocheck
|
||||||
|
/* global BMap */
|
||||||
|
import { util as zrUtil, graphic, matrix } from 'echarts';
|
||||||
|
function BMapCoordSys(bmap, api) {
|
||||||
|
this._bmap = bmap;
|
||||||
|
this.dimensions = ['lng', 'lat'];
|
||||||
|
this._mapOffset = [0, 0];
|
||||||
|
this._api = api;
|
||||||
|
this._projection = new BMap.MercatorProjection();
|
||||||
|
}
|
||||||
|
BMapCoordSys.prototype.type = 'bmap';
|
||||||
|
BMapCoordSys.prototype.dimensions = ['lng', 'lat'];
|
||||||
|
BMapCoordSys.prototype.setZoom = function (zoom) {
|
||||||
|
this._zoom = zoom;
|
||||||
|
};
|
||||||
|
BMapCoordSys.prototype.setCenter = function (center) {
|
||||||
|
this._center = this._projection.lngLatToPoint(new BMap.Point(center[0], center[1]));
|
||||||
|
};
|
||||||
|
BMapCoordSys.prototype.setMapOffset = function (mapOffset) {
|
||||||
|
this._mapOffset = mapOffset;
|
||||||
|
};
|
||||||
|
BMapCoordSys.prototype.getBMap = function () {
|
||||||
|
return this._bmap;
|
||||||
|
};
|
||||||
|
BMapCoordSys.prototype.dataToPoint = function (data) {
|
||||||
|
var point = new BMap.Point(data[0], data[1]);
|
||||||
|
// TODO mercator projection is toooooooo slow
|
||||||
|
// let mercatorPoint = this._projection.lngLatToPoint(point);
|
||||||
|
// let width = this._api.getZr().getWidth();
|
||||||
|
// let height = this._api.getZr().getHeight();
|
||||||
|
// let divider = Math.pow(2, 18 - 10);
|
||||||
|
// return [
|
||||||
|
// Math.round((mercatorPoint.x - this._center.x) / divider + width / 2),
|
||||||
|
// Math.round((this._center.y - mercatorPoint.y) / divider + height / 2)
|
||||||
|
// ];
|
||||||
|
var px = this._bmap.pointToOverlayPixel(point);
|
||||||
|
var mapOffset = this._mapOffset;
|
||||||
|
return [px.x - mapOffset[0], px.y - mapOffset[1]];
|
||||||
|
};
|
||||||
|
BMapCoordSys.prototype.pointToData = function (pt) {
|
||||||
|
var mapOffset = this._mapOffset;
|
||||||
|
pt = this._bmap.overlayPixelToPoint({
|
||||||
|
x: pt[0] + mapOffset[0],
|
||||||
|
y: pt[1] + mapOffset[1]
|
||||||
|
});
|
||||||
|
return [pt.lng, pt.lat];
|
||||||
|
};
|
||||||
|
BMapCoordSys.prototype.getViewRect = function () {
|
||||||
|
var api = this._api;
|
||||||
|
return new graphic.BoundingRect(0, 0, api.getWidth(), api.getHeight());
|
||||||
|
};
|
||||||
|
BMapCoordSys.prototype.getRoamTransform = function () {
|
||||||
|
return matrix.create();
|
||||||
|
};
|
||||||
|
BMapCoordSys.prototype.prepareCustoms = function () {
|
||||||
|
var rect = this.getViewRect();
|
||||||
|
return {
|
||||||
|
coordSys: {
|
||||||
|
// The name exposed to user is always 'cartesian2d' but not 'grid'.
|
||||||
|
type: 'bmap',
|
||||||
|
x: rect.x,
|
||||||
|
y: rect.y,
|
||||||
|
width: rect.width,
|
||||||
|
height: rect.height
|
||||||
|
},
|
||||||
|
api: {
|
||||||
|
coord: zrUtil.bind(this.dataToPoint, this),
|
||||||
|
size: zrUtil.bind(dataToCoordSize, this)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
BMapCoordSys.prototype.convertToPixel = function (ecModel, finder, value) {
|
||||||
|
// here we ignore finder as only one bmap component is allowed
|
||||||
|
return this.dataToPoint(value);
|
||||||
|
};
|
||||||
|
BMapCoordSys.prototype.convertFromPixel = function (ecModel, finder, value) {
|
||||||
|
return this.pointToData(value);
|
||||||
|
};
|
||||||
|
function dataToCoordSize(dataSize, dataItem) {
|
||||||
|
dataItem = dataItem || [0, 0];
|
||||||
|
return zrUtil.map([0, 1], function (dimIdx) {
|
||||||
|
var val = dataItem[dimIdx];
|
||||||
|
var halfSize = dataSize[dimIdx] / 2;
|
||||||
|
var p1 = [];
|
||||||
|
var p2 = [];
|
||||||
|
p1[dimIdx] = val - halfSize;
|
||||||
|
p2[dimIdx] = val + halfSize;
|
||||||
|
p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx];
|
||||||
|
return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]);
|
||||||
|
}, this);
|
||||||
|
}
|
||||||
|
var Overlay;
|
||||||
|
// For deciding which dimensions to use when creating list data
|
||||||
|
BMapCoordSys.dimensions = BMapCoordSys.prototype.dimensions;
|
||||||
|
function createOverlayCtor() {
|
||||||
|
function Overlay(root) {
|
||||||
|
this._root = root;
|
||||||
|
}
|
||||||
|
Overlay.prototype = new BMap.Overlay();
|
||||||
|
/**
|
||||||
|
* 初始化
|
||||||
|
*
|
||||||
|
* @param {BMap.Map} map
|
||||||
|
* @override
|
||||||
|
*/
|
||||||
|
Overlay.prototype.initialize = function (map) {
|
||||||
|
map.getPanes().labelPane.appendChild(this._root);
|
||||||
|
return this._root;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* @override
|
||||||
|
*/
|
||||||
|
Overlay.prototype.draw = function () {};
|
||||||
|
return Overlay;
|
||||||
|
}
|
||||||
|
BMapCoordSys.create = function (ecModel, api) {
|
||||||
|
var bmapCoordSys;
|
||||||
|
var root = api.getDom();
|
||||||
|
// TODO Dispose
|
||||||
|
ecModel.eachComponent('bmap', function (bmapModel) {
|
||||||
|
var painter = api.getZr().painter;
|
||||||
|
var viewportRoot = painter.getViewportRoot();
|
||||||
|
if (typeof BMap === 'undefined') {
|
||||||
|
throw new Error('BMap api is not loaded');
|
||||||
|
}
|
||||||
|
Overlay = Overlay || createOverlayCtor();
|
||||||
|
if (bmapCoordSys) {
|
||||||
|
throw new Error('Only one bmap component can exist');
|
||||||
|
}
|
||||||
|
var bmap;
|
||||||
|
if (!bmapModel.__bmap) {
|
||||||
|
// Not support IE8
|
||||||
|
var bmapRoot = root.querySelector('.ec-extension-bmap');
|
||||||
|
if (bmapRoot) {
|
||||||
|
// Reset viewport left and top, which will be changed
|
||||||
|
// in moving handler in BMapView
|
||||||
|
viewportRoot.style.left = '0px';
|
||||||
|
viewportRoot.style.top = '0px';
|
||||||
|
root.removeChild(bmapRoot);
|
||||||
|
}
|
||||||
|
bmapRoot = document.createElement('div');
|
||||||
|
bmapRoot.className = 'ec-extension-bmap';
|
||||||
|
// fix #13424
|
||||||
|
bmapRoot.style.cssText = 'position:absolute;width:100%;height:100%';
|
||||||
|
root.appendChild(bmapRoot);
|
||||||
|
// initializes bmap
|
||||||
|
var mapOptions = bmapModel.get('mapOptions');
|
||||||
|
if (mapOptions) {
|
||||||
|
mapOptions = zrUtil.clone(mapOptions);
|
||||||
|
// Not support `mapType`, use `bmap.setMapType(MapType)` instead.
|
||||||
|
delete mapOptions.mapType;
|
||||||
|
}
|
||||||
|
bmap = bmapModel.__bmap = new BMap.Map(bmapRoot, mapOptions);
|
||||||
|
var overlay = new Overlay(viewportRoot);
|
||||||
|
bmap.addOverlay(overlay);
|
||||||
|
// Override
|
||||||
|
painter.getViewportRootOffset = function () {
|
||||||
|
return {
|
||||||
|
offsetLeft: 0,
|
||||||
|
offsetTop: 0
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
bmap = bmapModel.__bmap;
|
||||||
|
// Set bmap options
|
||||||
|
// centerAndZoom before layout and render
|
||||||
|
var center = bmapModel.get('center');
|
||||||
|
var zoom = bmapModel.get('zoom');
|
||||||
|
if (center && zoom) {
|
||||||
|
var bmapCenter = bmap.getCenter();
|
||||||
|
var bmapZoom = bmap.getZoom();
|
||||||
|
var centerOrZoomChanged = bmapModel.centerOrZoomChanged([bmapCenter.lng, bmapCenter.lat], bmapZoom);
|
||||||
|
if (centerOrZoomChanged) {
|
||||||
|
var pt = new BMap.Point(center[0], center[1]);
|
||||||
|
bmap.centerAndZoom(pt, zoom);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bmapCoordSys = new BMapCoordSys(bmap, api);
|
||||||
|
bmapCoordSys.setMapOffset(bmapModel.__mapOffset || [0, 0]);
|
||||||
|
bmapCoordSys.setZoom(zoom);
|
||||||
|
bmapCoordSys.setCenter(center);
|
||||||
|
bmapModel.coordinateSystem = bmapCoordSys;
|
||||||
|
});
|
||||||
|
ecModel.eachSeries(function (seriesModel) {
|
||||||
|
if (seriesModel.get('coordinateSystem') === 'bmap') {
|
||||||
|
seriesModel.coordinateSystem = bmapCoordSys;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// return created coordinate systems
|
||||||
|
return bmapCoordSys && [bmapCoordSys];
|
||||||
|
};
|
||||||
|
export default BMapCoordSys;
|
|
@ -0,0 +1,74 @@
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
// @ts-nocheck
|
||||||
|
import * as echarts from 'echarts';
|
||||||
|
function v2Equal(a, b) {
|
||||||
|
return a && b && a[0] === b[0] && a[1] === b[1];
|
||||||
|
}
|
||||||
|
export default echarts.extendComponentModel({
|
||||||
|
type: 'bmap',
|
||||||
|
getBMap: function () {
|
||||||
|
// __bmap is injected when creating BMapCoordSys
|
||||||
|
return this.__bmap;
|
||||||
|
},
|
||||||
|
setCenterAndZoom: function (center, zoom) {
|
||||||
|
this.option.center = center;
|
||||||
|
this.option.zoom = zoom;
|
||||||
|
},
|
||||||
|
centerOrZoomChanged: function (center, zoom) {
|
||||||
|
var option = this.option;
|
||||||
|
return !(v2Equal(center, option.center) && zoom === option.zoom);
|
||||||
|
},
|
||||||
|
defaultOption: {
|
||||||
|
center: [104.114129, 37.550339],
|
||||||
|
zoom: 5,
|
||||||
|
// 2.0 https://lbsyun.baidu.com/custom/index.htm
|
||||||
|
mapStyle: {},
|
||||||
|
// 3.0 https://lbsyun.baidu.com/index.php?title=open/custom
|
||||||
|
mapStyleV2: {},
|
||||||
|
// See https://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.html#a0b1
|
||||||
|
mapOptions: {},
|
||||||
|
roam: false
|
||||||
|
}
|
||||||
|
});
|
|
@ -0,0 +1,146 @@
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
// @ts-nocheck
|
||||||
|
import * as echarts from 'echarts';
|
||||||
|
function isEmptyObject(obj) {
|
||||||
|
for (var key in obj) {
|
||||||
|
if (obj.hasOwnProperty(key)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
export default echarts.extendComponentView({
|
||||||
|
type: 'bmap',
|
||||||
|
render: function (bMapModel, ecModel, api) {
|
||||||
|
var rendering = true;
|
||||||
|
var bmap = bMapModel.getBMap();
|
||||||
|
var viewportRoot = api.getZr().painter.getViewportRoot();
|
||||||
|
var coordSys = bMapModel.coordinateSystem;
|
||||||
|
var moveHandler = function (type, target) {
|
||||||
|
if (rendering) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var offsetEl = viewportRoot.parentNode.parentNode.parentNode;
|
||||||
|
var mapOffset = [-parseInt(offsetEl.style.left, 10) || 0, -parseInt(offsetEl.style.top, 10) || 0];
|
||||||
|
// only update style when map offset changed
|
||||||
|
var viewportRootStyle = viewportRoot.style;
|
||||||
|
var offsetLeft = mapOffset[0] + 'px';
|
||||||
|
var offsetTop = mapOffset[1] + 'px';
|
||||||
|
if (viewportRootStyle.left !== offsetLeft) {
|
||||||
|
viewportRootStyle.left = offsetLeft;
|
||||||
|
}
|
||||||
|
if (viewportRootStyle.top !== offsetTop) {
|
||||||
|
viewportRootStyle.top = offsetTop;
|
||||||
|
}
|
||||||
|
coordSys.setMapOffset(mapOffset);
|
||||||
|
bMapModel.__mapOffset = mapOffset;
|
||||||
|
api.dispatchAction({
|
||||||
|
type: 'bmapRoam',
|
||||||
|
animation: {
|
||||||
|
duration: 0
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
function zoomEndHandler() {
|
||||||
|
if (rendering) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
api.dispatchAction({
|
||||||
|
type: 'bmapRoam',
|
||||||
|
animation: {
|
||||||
|
duration: 0
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
bmap.removeEventListener('moving', this._oldMoveHandler);
|
||||||
|
bmap.removeEventListener('moveend', this._oldMoveHandler);
|
||||||
|
bmap.removeEventListener('zoomend', this._oldZoomEndHandler);
|
||||||
|
bmap.addEventListener('moving', moveHandler);
|
||||||
|
bmap.addEventListener('moveend', moveHandler);
|
||||||
|
bmap.addEventListener('zoomend', zoomEndHandler);
|
||||||
|
this._oldMoveHandler = moveHandler;
|
||||||
|
this._oldZoomEndHandler = zoomEndHandler;
|
||||||
|
var roam = bMapModel.get('roam');
|
||||||
|
if (roam && roam !== 'scale') {
|
||||||
|
bmap.enableDragging();
|
||||||
|
} else {
|
||||||
|
bmap.disableDragging();
|
||||||
|
}
|
||||||
|
if (roam && roam !== 'move') {
|
||||||
|
bmap.enableScrollWheelZoom();
|
||||||
|
bmap.enableDoubleClickZoom();
|
||||||
|
bmap.enablePinchToZoom();
|
||||||
|
} else {
|
||||||
|
bmap.disableScrollWheelZoom();
|
||||||
|
bmap.disableDoubleClickZoom();
|
||||||
|
bmap.disablePinchToZoom();
|
||||||
|
}
|
||||||
|
/* map 2.0 */
|
||||||
|
var originalStyle = bMapModel.__mapStyle;
|
||||||
|
var newMapStyle = bMapModel.get('mapStyle') || {};
|
||||||
|
// FIXME, Not use JSON methods
|
||||||
|
var mapStyleStr = JSON.stringify(newMapStyle);
|
||||||
|
if (JSON.stringify(originalStyle) !== mapStyleStr) {
|
||||||
|
// FIXME May have blank tile when dragging if setMapStyle
|
||||||
|
if (!isEmptyObject(newMapStyle)) {
|
||||||
|
bmap.setMapStyle(echarts.util.clone(newMapStyle));
|
||||||
|
}
|
||||||
|
bMapModel.__mapStyle = JSON.parse(mapStyleStr);
|
||||||
|
}
|
||||||
|
/* map 3.0 */
|
||||||
|
var originalStyle2 = bMapModel.__mapStyle2;
|
||||||
|
var newMapStyle2 = bMapModel.get('mapStyleV2') || {};
|
||||||
|
// FIXME, Not use JSON methods
|
||||||
|
var mapStyleStr2 = JSON.stringify(newMapStyle2);
|
||||||
|
if (JSON.stringify(originalStyle2) !== mapStyleStr2) {
|
||||||
|
// FIXME May have blank tile when dragging if setMapStyle
|
||||||
|
if (!isEmptyObject(newMapStyle2)) {
|
||||||
|
bmap.setMapStyleV2(echarts.util.clone(newMapStyle2));
|
||||||
|
}
|
||||||
|
bMapModel.__mapStyle2 = JSON.parse(mapStyleStr2);
|
||||||
|
}
|
||||||
|
rendering = false;
|
||||||
|
}
|
||||||
|
});
|
|
@ -0,0 +1,65 @@
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
// @ts-nocheck
|
||||||
|
/**
|
||||||
|
* BMap component extension
|
||||||
|
*/
|
||||||
|
import * as echarts from 'echarts';
|
||||||
|
import BMapCoordSys from './BMapCoordSys.js';
|
||||||
|
import './BMapModel.js';
|
||||||
|
import './BMapView.js';
|
||||||
|
echarts.registerCoordinateSystem('bmap', BMapCoordSys);
|
||||||
|
// Action
|
||||||
|
echarts.registerAction({
|
||||||
|
type: 'bmapRoam',
|
||||||
|
event: 'bmapRoam',
|
||||||
|
update: 'updateLayout'
|
||||||
|
}, function (payload, ecModel) {
|
||||||
|
ecModel.eachComponent('bmap', function (bMapModel) {
|
||||||
|
var bmap = bMapModel.getBMap();
|
||||||
|
var center = bmap.getCenter();
|
||||||
|
bMapModel.setCenterAndZoom([center.lng, center.lat], bmap.getZoom());
|
||||||
|
});
|
||||||
|
});
|
||||||
|
export var version = '1.0.0';
|
|
@ -0,0 +1,203 @@
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
// @ts-nocheck
|
||||||
|
/**
|
||||||
|
* This is a parse of GEXF.
|
||||||
|
*
|
||||||
|
* The spec of GEXF:
|
||||||
|
* https://gephi.org/gexf/1.2draft/gexf-12draft-primer.pdf
|
||||||
|
*/
|
||||||
|
import * as zrUtil from 'zrender/lib/core/util.js';
|
||||||
|
export function parse(xml) {
|
||||||
|
var doc;
|
||||||
|
if (typeof xml === 'string') {
|
||||||
|
var parser = new DOMParser();
|
||||||
|
doc = parser.parseFromString(xml, 'text/xml');
|
||||||
|
} else {
|
||||||
|
doc = xml;
|
||||||
|
}
|
||||||
|
if (!doc || doc.getElementsByTagName('parsererror').length) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
var gexfRoot = getChildByTagName(doc, 'gexf');
|
||||||
|
if (!gexfRoot) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
var graphRoot = getChildByTagName(gexfRoot, 'graph');
|
||||||
|
var attributes = parseAttributes(getChildByTagName(graphRoot, 'attributes'));
|
||||||
|
var attributesMap = {};
|
||||||
|
for (var i = 0; i < attributes.length; i++) {
|
||||||
|
attributesMap[attributes[i].id] = attributes[i];
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
nodes: parseNodes(getChildByTagName(graphRoot, 'nodes'), attributesMap),
|
||||||
|
links: parseEdges(getChildByTagName(graphRoot, 'edges'))
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function parseAttributes(parent) {
|
||||||
|
return parent ? zrUtil.map(getChildrenByTagName(parent, 'attribute'), function (attribDom) {
|
||||||
|
return {
|
||||||
|
id: getAttr(attribDom, 'id'),
|
||||||
|
title: getAttr(attribDom, 'title'),
|
||||||
|
type: getAttr(attribDom, 'type')
|
||||||
|
};
|
||||||
|
}) : [];
|
||||||
|
}
|
||||||
|
function parseNodes(parent, attributesMap) {
|
||||||
|
return parent ? zrUtil.map(getChildrenByTagName(parent, 'node'), function (nodeDom) {
|
||||||
|
var id = getAttr(nodeDom, 'id');
|
||||||
|
var label = getAttr(nodeDom, 'label');
|
||||||
|
var node = {
|
||||||
|
id: id,
|
||||||
|
name: label,
|
||||||
|
itemStyle: {
|
||||||
|
normal: {}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var vizSizeDom = getChildByTagName(nodeDom, 'viz:size');
|
||||||
|
var vizPosDom = getChildByTagName(nodeDom, 'viz:position');
|
||||||
|
var vizColorDom = getChildByTagName(nodeDom, 'viz:color');
|
||||||
|
// let vizShapeDom = getChildByTagName(nodeDom, 'viz:shape');
|
||||||
|
var attvaluesDom = getChildByTagName(nodeDom, 'attvalues');
|
||||||
|
if (vizSizeDom) {
|
||||||
|
node.symbolSize = parseFloat(getAttr(vizSizeDom, 'value'));
|
||||||
|
}
|
||||||
|
if (vizPosDom) {
|
||||||
|
node.x = parseFloat(getAttr(vizPosDom, 'x'));
|
||||||
|
node.y = parseFloat(getAttr(vizPosDom, 'y'));
|
||||||
|
// z
|
||||||
|
}
|
||||||
|
|
||||||
|
if (vizColorDom) {
|
||||||
|
node.itemStyle.normal.color = 'rgb(' + [getAttr(vizColorDom, 'r') | 0, getAttr(vizColorDom, 'g') | 0, getAttr(vizColorDom, 'b') | 0].join(',') + ')';
|
||||||
|
}
|
||||||
|
// if (vizShapeDom) {
|
||||||
|
// node.shape = getAttr(vizShapeDom, 'shape');
|
||||||
|
// }
|
||||||
|
if (attvaluesDom) {
|
||||||
|
var attvalueDomList = getChildrenByTagName(attvaluesDom, 'attvalue');
|
||||||
|
node.attributes = {};
|
||||||
|
for (var j = 0; j < attvalueDomList.length; j++) {
|
||||||
|
var attvalueDom = attvalueDomList[j];
|
||||||
|
var attId = getAttr(attvalueDom, 'for');
|
||||||
|
var attValue = getAttr(attvalueDom, 'value');
|
||||||
|
var attribute = attributesMap[attId];
|
||||||
|
if (attribute) {
|
||||||
|
switch (attribute.type) {
|
||||||
|
case 'integer':
|
||||||
|
case 'long':
|
||||||
|
attValue = parseInt(attValue, 10);
|
||||||
|
break;
|
||||||
|
case 'float':
|
||||||
|
case 'double':
|
||||||
|
attValue = parseFloat(attValue);
|
||||||
|
break;
|
||||||
|
case 'boolean':
|
||||||
|
attValue = attValue.toLowerCase() === 'true';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
node.attributes[attId] = attValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return node;
|
||||||
|
}) : [];
|
||||||
|
}
|
||||||
|
function parseEdges(parent) {
|
||||||
|
return parent ? zrUtil.map(getChildrenByTagName(parent, 'edge'), function (edgeDom) {
|
||||||
|
var id = getAttr(edgeDom, 'id');
|
||||||
|
var label = getAttr(edgeDom, 'label');
|
||||||
|
var sourceId = getAttr(edgeDom, 'source');
|
||||||
|
var targetId = getAttr(edgeDom, 'target');
|
||||||
|
var edge = {
|
||||||
|
id: id,
|
||||||
|
name: label,
|
||||||
|
source: sourceId,
|
||||||
|
target: targetId,
|
||||||
|
lineStyle: {
|
||||||
|
normal: {}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var lineStyle = edge.lineStyle.normal;
|
||||||
|
var vizThicknessDom = getChildByTagName(edgeDom, 'viz:thickness');
|
||||||
|
var vizColorDom = getChildByTagName(edgeDom, 'viz:color');
|
||||||
|
// let vizShapeDom = getChildByTagName(edgeDom, 'viz:shape');
|
||||||
|
if (vizThicknessDom) {
|
||||||
|
lineStyle.width = parseFloat(vizThicknessDom.getAttribute('value'));
|
||||||
|
}
|
||||||
|
if (vizColorDom) {
|
||||||
|
lineStyle.color = 'rgb(' + [getAttr(vizColorDom, 'r') | 0, getAttr(vizColorDom, 'g') | 0, getAttr(vizColorDom, 'b') | 0].join(',') + ')';
|
||||||
|
}
|
||||||
|
// if (vizShapeDom) {
|
||||||
|
// edge.shape = vizShapeDom.getAttribute('shape');
|
||||||
|
// }
|
||||||
|
return edge;
|
||||||
|
}) : [];
|
||||||
|
}
|
||||||
|
function getAttr(el, attrName) {
|
||||||
|
return el.getAttribute(attrName);
|
||||||
|
}
|
||||||
|
function getChildByTagName(parent, tagName) {
|
||||||
|
var node = parent.firstChild;
|
||||||
|
while (node) {
|
||||||
|
if (node.nodeType !== 1 || node.nodeName.toLowerCase() !== tagName.toLowerCase()) {
|
||||||
|
node = node.nextSibling;
|
||||||
|
} else {
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
function getChildrenByTagName(parent, tagName) {
|
||||||
|
var node = parent.firstChild;
|
||||||
|
var children = [];
|
||||||
|
while (node) {
|
||||||
|
if (node.nodeName.toLowerCase() === tagName.toLowerCase()) {
|
||||||
|
children.push(node);
|
||||||
|
}
|
||||||
|
node = node.nextSibling;
|
||||||
|
}
|
||||||
|
return children;
|
||||||
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
// @ts-nocheck
|
||||||
|
import * as echarts from 'echarts';
|
||||||
|
import * as gexf from './gexf.js';
|
||||||
|
import prepareBoxplotData from './prepareBoxplotData.js';
|
||||||
|
// import { boxplotTransform } from './boxplotTransform.js';
|
||||||
|
export var version = '1.0.0';
|
||||||
|
export { gexf };
|
||||||
|
export { prepareBoxplotData };
|
||||||
|
// export {boxplotTransform};
|
||||||
|
// For backward compatibility, where the namespace `dataTool` will
|
||||||
|
// be mounted on `echarts` is the extension `dataTool` is imported.
|
||||||
|
// But the old version of echarts do not have `dataTool` namespace,
|
||||||
|
// so check it before mounting.
|
||||||
|
if (echarts.dataTool) {
|
||||||
|
echarts.dataTool.version = version;
|
||||||
|
echarts.dataTool.gexf = gexf;
|
||||||
|
echarts.dataTool.prepareBoxplotData = prepareBoxplotData;
|
||||||
|
// echarts.dataTool.boxplotTransform = boxplotTransform;
|
||||||
|
}
|
|
@ -0,0 +1,116 @@
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
function asc(arr) {
|
||||||
|
arr.sort(function (a, b) {
|
||||||
|
return a - b;
|
||||||
|
});
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
function quantile(ascArr, p) {
|
||||||
|
var H = (ascArr.length - 1) * p + 1;
|
||||||
|
var h = Math.floor(H);
|
||||||
|
var v = +ascArr[h - 1];
|
||||||
|
var e = H - h;
|
||||||
|
return e ? v + e * (ascArr[h] - v) : v;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* See:
|
||||||
|
* <https://en.wikipedia.org/wiki/Box_plot#cite_note-frigge_hoaglin_iglewicz-2>
|
||||||
|
* <http://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/boxplot.stats.html>
|
||||||
|
*
|
||||||
|
* Helper method for preparing data.
|
||||||
|
*
|
||||||
|
* @param {Array.<number>} rawData like
|
||||||
|
* [
|
||||||
|
* [12,232,443], (raw data set for the first box)
|
||||||
|
* [3843,5545,1232], (raw data set for the second box)
|
||||||
|
* ...
|
||||||
|
* ]
|
||||||
|
* @param {Object} [opt]
|
||||||
|
*
|
||||||
|
* @param {(number|string)} [opt.boundIQR=1.5] Data less than min bound is outlier.
|
||||||
|
* default 1.5, means Q1 - 1.5 * (Q3 - Q1).
|
||||||
|
* If 'none'/0 passed, min bound will not be used.
|
||||||
|
* @param {(number|string)} [opt.layout='horizontal']
|
||||||
|
* Box plot layout, can be 'horizontal' or 'vertical'
|
||||||
|
* @return {Object} {
|
||||||
|
* boxData: Array.<Array.<number>>
|
||||||
|
* outliers: Array.<Array.<number>>
|
||||||
|
* axisData: Array.<string>
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
export default function (rawData, opt) {
|
||||||
|
opt = opt || {};
|
||||||
|
var boxData = [];
|
||||||
|
var outliers = [];
|
||||||
|
var axisData = [];
|
||||||
|
var boundIQR = opt.boundIQR;
|
||||||
|
var useExtreme = boundIQR === 'none' || boundIQR === 0;
|
||||||
|
for (var i = 0; i < rawData.length; i++) {
|
||||||
|
axisData.push(i + '');
|
||||||
|
var ascList = asc(rawData[i].slice());
|
||||||
|
var Q1 = quantile(ascList, 0.25);
|
||||||
|
var Q2 = quantile(ascList, 0.5);
|
||||||
|
var Q3 = quantile(ascList, 0.75);
|
||||||
|
var min = ascList[0];
|
||||||
|
var max = ascList[ascList.length - 1];
|
||||||
|
var bound = (boundIQR == null ? 1.5 : boundIQR) * (Q3 - Q1);
|
||||||
|
var low = useExtreme ? min : Math.max(min, Q1 - bound);
|
||||||
|
var high = useExtreme ? max : Math.min(max, Q3 + bound);
|
||||||
|
boxData.push([low, Q1, Q2, Q3, high]);
|
||||||
|
for (var j = 0; j < ascList.length; j++) {
|
||||||
|
var dataItem = ascList[j];
|
||||||
|
if (dataItem < low || dataItem > high) {
|
||||||
|
var outlier = [i, dataItem];
|
||||||
|
opt.layout === 'vertical' && outlier.reverse();
|
||||||
|
outliers.push(outlier);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
boxData: boxData,
|
||||||
|
outliers: outliers,
|
||||||
|
axisData: axisData
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from './types/dist/features';
|
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from './lib/export/features.js';
|
|
@ -0,0 +1,178 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports);
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({});
|
||||||
|
}
|
||||||
|
})(this, function(exports) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: Arabic.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو',
|
||||||
|
'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو',
|
||||||
|
'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'تحديد الكل',
|
||||||
|
inverse: 'عكس التحديد'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'تحديد صندوقي',
|
||||||
|
polygon: 'تحديد حلقي',
|
||||||
|
lineX: 'تحديد أفقي',
|
||||||
|
lineY: 'تحديد عمودي',
|
||||||
|
keep: 'الاحتفاظ بالمحدد',
|
||||||
|
clear: 'إلغاء التحديد'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'عرض البيانات',
|
||||||
|
lang: ['عرض البيانات', 'إغلاق', 'تحديث']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'تكبير',
|
||||||
|
back: 'استعادة التكبير'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'خطوط',
|
||||||
|
bar: 'أشرطة',
|
||||||
|
stack: 'تكديس',
|
||||||
|
tiled: 'مربعات'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'استعادة'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'حفظ كملف صورة',
|
||||||
|
lang: ['للحفظ كصورة انقر بالزر الأيمن']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'رسم بياني دائري',
|
||||||
|
bar: 'رسم بياني شريطي',
|
||||||
|
line: 'رسم بياني خطي',
|
||||||
|
scatter: 'نقاط مبعثرة',
|
||||||
|
effectScatter: 'نقاط مبعثرة متموجة',
|
||||||
|
radar: 'رسم بياني راداري',
|
||||||
|
tree: 'شجرة',
|
||||||
|
treemap: 'مخطط شجري',
|
||||||
|
boxplot: 'مخطط صندوقي',
|
||||||
|
candlestick: 'مخطط شمعدان',
|
||||||
|
k: 'رسم بياني خطي من النوع K',
|
||||||
|
heatmap: 'خريطة حرارية',
|
||||||
|
map: 'خريطة',
|
||||||
|
parallel: 'خريطة الإحداثيات المتناظرة',
|
||||||
|
lines: 'خطوط',
|
||||||
|
graph: 'مخطط علائقي',
|
||||||
|
sankey: 'مخطط ثعباني',
|
||||||
|
funnel: 'مخطط هرمي',
|
||||||
|
gauge: 'مقياس',
|
||||||
|
pictorialBar: 'مخطط مصوّر',
|
||||||
|
themeRiver: 'نمط خريطة النهر',
|
||||||
|
sunburst: 'مخطط شمسي',
|
||||||
|
custom: 'مخطط مخصص',
|
||||||
|
chart: 'مخطط'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'هذا رسم بياني حول "{title}".',
|
||||||
|
withoutTitle: 'هذا رسم بياني.'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' من النوع {seriesType} اسمه {seriesName}.',
|
||||||
|
withoutName: ' من النوع {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. يتكون من {seriesCount} سلسلة.',
|
||||||
|
withName: ' الـ {seriesId} هي سلسلة من النوع {seriesType} تستعرض {seriesName}.',
|
||||||
|
withoutName: ' الـ {seriesId} هي سلسلة من النوع {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '، ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'البيانات هي كالتالي: ',
|
||||||
|
partialData: 'أول {displayCnt} عناصر هي: ',
|
||||||
|
withName: 'قيمة العنصر {name} هي {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: '، ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
for (var key in localeObj) {
|
||||||
|
if (localeObj.hasOwnProperty(key)) {
|
||||||
|
exports[key] = localeObj[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,174 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports', 'echarts'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports, require('echarts/lib/echarts'));
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({}, root.echarts);
|
||||||
|
}
|
||||||
|
})(this, function(exports, echarts) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: Arabic.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو',
|
||||||
|
'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو',
|
||||||
|
'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'تحديد الكل',
|
||||||
|
inverse: 'عكس التحديد'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'تحديد صندوقي',
|
||||||
|
polygon: 'تحديد حلقي',
|
||||||
|
lineX: 'تحديد أفقي',
|
||||||
|
lineY: 'تحديد عمودي',
|
||||||
|
keep: 'الاحتفاظ بالمحدد',
|
||||||
|
clear: 'إلغاء التحديد'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'عرض البيانات',
|
||||||
|
lang: ['عرض البيانات', 'إغلاق', 'تحديث']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'تكبير',
|
||||||
|
back: 'استعادة التكبير'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'خطوط',
|
||||||
|
bar: 'أشرطة',
|
||||||
|
stack: 'تكديس',
|
||||||
|
tiled: 'مربعات'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'استعادة'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'حفظ كملف صورة',
|
||||||
|
lang: ['للحفظ كصورة انقر بالزر الأيمن']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'رسم بياني دائري',
|
||||||
|
bar: 'رسم بياني شريطي',
|
||||||
|
line: 'رسم بياني خطي',
|
||||||
|
scatter: 'نقاط مبعثرة',
|
||||||
|
effectScatter: 'نقاط مبعثرة متموجة',
|
||||||
|
radar: 'رسم بياني راداري',
|
||||||
|
tree: 'شجرة',
|
||||||
|
treemap: 'مخطط شجري',
|
||||||
|
boxplot: 'مخطط صندوقي',
|
||||||
|
candlestick: 'مخطط شمعدان',
|
||||||
|
k: 'رسم بياني خطي من النوع K',
|
||||||
|
heatmap: 'خريطة حرارية',
|
||||||
|
map: 'خريطة',
|
||||||
|
parallel: 'خريطة الإحداثيات المتناظرة',
|
||||||
|
lines: 'خطوط',
|
||||||
|
graph: 'مخطط علائقي',
|
||||||
|
sankey: 'مخطط ثعباني',
|
||||||
|
funnel: 'مخطط هرمي',
|
||||||
|
gauge: 'مقياس',
|
||||||
|
pictorialBar: 'مخطط مصوّر',
|
||||||
|
themeRiver: 'نمط خريطة النهر',
|
||||||
|
sunburst: 'مخطط شمسي',
|
||||||
|
custom: 'مخطط مخصص',
|
||||||
|
chart: 'مخطط'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'هذا رسم بياني حول "{title}".',
|
||||||
|
withoutTitle: 'هذا رسم بياني.'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' من النوع {seriesType} اسمه {seriesName}.',
|
||||||
|
withoutName: ' من النوع {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. يتكون من {seriesCount} سلسلة.',
|
||||||
|
withName: ' الـ {seriesId} هي سلسلة من النوع {seriesType} تستعرض {seriesName}.',
|
||||||
|
withoutName: ' الـ {seriesId} هي سلسلة من النوع {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '، ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'البيانات هي كالتالي: ',
|
||||||
|
partialData: 'أول {displayCnt} عناصر هي: ',
|
||||||
|
withName: 'قيمة العنصر {name} هي {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: '، ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
echarts.registerLocale('AR', localeObj);
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,175 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports);
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({});
|
||||||
|
}
|
||||||
|
})(this, function(exports) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: Czech.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen',
|
||||||
|
'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'Led', 'Úno', 'Bře', 'Dub', 'Kvě', 'Čvn',
|
||||||
|
'Čvc', 'Srp', 'Zář', 'Říj', 'Lis', 'Pro'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'Neděle', 'Pondělí', 'Úterý', 'Středa', 'Čtvrtek', 'Pátek', 'Sobota'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'Ne', 'Po', 'Út', 'St', 'Čt', 'Pá', 'So'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'Vše',
|
||||||
|
inverse: 'Inv'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Obdélníkový výběr',
|
||||||
|
polygon: 'Lasso výběr',
|
||||||
|
lineX: 'Horizontální výběr',
|
||||||
|
lineY: 'Vertikální výběr',
|
||||||
|
keep: 'Ponechat výběr',
|
||||||
|
clear: 'Zrušit výběr'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Data',
|
||||||
|
lang: ['Data', 'Zavřít', 'Obnovit']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Přiblížit',
|
||||||
|
back: 'Oddálit'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Změnit na Spojnicový graf',
|
||||||
|
bar: 'Změnit na Sloupcový graf',
|
||||||
|
stack: 'Plošný',
|
||||||
|
tiled: 'Tile'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Obnovit'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Uložit jako obrázek',
|
||||||
|
lang: ['Obrázek uložte pravým kliknutím']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Výsečový graf',
|
||||||
|
bar: 'Sloupcový graf',
|
||||||
|
line: 'Spojnicový graf',
|
||||||
|
scatter: 'XY bodový graf',
|
||||||
|
effectScatter: 'Effect XY bodový graf',
|
||||||
|
radar: 'Paprskový graf',
|
||||||
|
tree: 'Strom',
|
||||||
|
treemap: 'Stromová mapa',
|
||||||
|
boxplot: 'Krabicový graf',
|
||||||
|
candlestick: 'Burzovní graf',
|
||||||
|
k: 'K spojnicový graf',
|
||||||
|
heatmap: 'Teplotní mapa',
|
||||||
|
map: 'Mapa',
|
||||||
|
parallel: 'Rovnoběžné souřadnice',
|
||||||
|
lines: 'Spojnicový graf',
|
||||||
|
graph: 'Graf vztahů',
|
||||||
|
sankey: 'Sankeyův diagram',
|
||||||
|
funnel: 'Trychtýř (Funnel)',
|
||||||
|
gauge: 'Indikátor',
|
||||||
|
pictorialBar: 'Obrázkový sloupcový graf',
|
||||||
|
themeRiver: 'Theme River Map',
|
||||||
|
sunburst: 'Vícevrstvý prstencový graf',
|
||||||
|
custom: 'Graficu persunalizatu',
|
||||||
|
chart: 'Graf'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'Toto je graf o "{title}"',
|
||||||
|
withoutTitle: 'Toto je graf'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: '{seriesName} s typem {seriesType}.',
|
||||||
|
withoutName: ' s typem {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. Obsahuje {seriesCount} řad.',
|
||||||
|
withName: ' Řada {seriesId} je typu {seriesType} repreyentující {seriesName}.',
|
||||||
|
withoutName: ' Řada {seriesId} je typu {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'Všechna data jsou: ',
|
||||||
|
partialData: 'První {displayCnt} položky jsou: ',
|
||||||
|
withName: 'data pro {name} jsou {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ', ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (var key in localeObj) {
|
||||||
|
if (localeObj.hasOwnProperty(key)) {
|
||||||
|
exports[key] = localeObj[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,171 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports', 'echarts'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports, require('echarts/lib/echarts'));
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({}, root.echarts);
|
||||||
|
}
|
||||||
|
})(this, function(exports, echarts) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: Czech.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen',
|
||||||
|
'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'Led', 'Úno', 'Bře', 'Dub', 'Kvě', 'Čvn',
|
||||||
|
'Čvc', 'Srp', 'Zář', 'Říj', 'Lis', 'Pro'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'Neděle', 'Pondělí', 'Úterý', 'Středa', 'Čtvrtek', 'Pátek', 'Sobota'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'Ne', 'Po', 'Út', 'St', 'Čt', 'Pá', 'So'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'Vše',
|
||||||
|
inverse: 'Inv'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Obdélníkový výběr',
|
||||||
|
polygon: 'Lasso výběr',
|
||||||
|
lineX: 'Horizontální výběr',
|
||||||
|
lineY: 'Vertikální výběr',
|
||||||
|
keep: 'Ponechat výběr',
|
||||||
|
clear: 'Zrušit výběr'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Data',
|
||||||
|
lang: ['Data', 'Zavřít', 'Obnovit']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Přiblížit',
|
||||||
|
back: 'Oddálit'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Změnit na Spojnicový graf',
|
||||||
|
bar: 'Změnit na Sloupcový graf',
|
||||||
|
stack: 'Plošný',
|
||||||
|
tiled: 'Tile'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Obnovit'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Uložit jako obrázek',
|
||||||
|
lang: ['Obrázek uložte pravým kliknutím']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Výsečový graf',
|
||||||
|
bar: 'Sloupcový graf',
|
||||||
|
line: 'Spojnicový graf',
|
||||||
|
scatter: 'XY bodový graf',
|
||||||
|
effectScatter: 'Effect XY bodový graf',
|
||||||
|
radar: 'Paprskový graf',
|
||||||
|
tree: 'Strom',
|
||||||
|
treemap: 'Stromová mapa',
|
||||||
|
boxplot: 'Krabicový graf',
|
||||||
|
candlestick: 'Burzovní graf',
|
||||||
|
k: 'K spojnicový graf',
|
||||||
|
heatmap: 'Teplotní mapa',
|
||||||
|
map: 'Mapa',
|
||||||
|
parallel: 'Rovnoběžné souřadnice',
|
||||||
|
lines: 'Spojnicový graf',
|
||||||
|
graph: 'Graf vztahů',
|
||||||
|
sankey: 'Sankeyův diagram',
|
||||||
|
funnel: 'Trychtýř (Funnel)',
|
||||||
|
gauge: 'Indikátor',
|
||||||
|
pictorialBar: 'Obrázkový sloupcový graf',
|
||||||
|
themeRiver: 'Theme River Map',
|
||||||
|
sunburst: 'Vícevrstvý prstencový graf',
|
||||||
|
custom: 'Graficu persunalizatu',
|
||||||
|
chart: 'Graf'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'Toto je graf o "{title}"',
|
||||||
|
withoutTitle: 'Toto je graf'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: '{seriesName} s typem {seriesType}.',
|
||||||
|
withoutName: ' s typem {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. Obsahuje {seriesCount} řad.',
|
||||||
|
withName: ' Řada {seriesId} je typu {seriesType} repreyentující {seriesName}.',
|
||||||
|
withoutName: ' Řada {seriesId} je typu {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'Všechna data jsou: ',
|
||||||
|
partialData: 'První {displayCnt} položky jsou: ',
|
||||||
|
withName: 'data pro {name} jsou {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ', ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
echarts.registerLocale('CS', localeObj);
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,175 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports);
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({});
|
||||||
|
}
|
||||||
|
})(this, function(exports) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: German.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni',
|
||||||
|
'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'Jan', 'Feb', 'Mrz', 'Apr', 'Mai', 'Jun',
|
||||||
|
'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'Alle',
|
||||||
|
inverse: 'Invertiert'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Box Auswahl',
|
||||||
|
polygon: 'Lasso Auswahl',
|
||||||
|
lineX: 'Horizontale Auswahl',
|
||||||
|
lineY: 'Vertikale Auswahl',
|
||||||
|
keep: 'Bereich Auswahl',
|
||||||
|
clear: 'Auswahl zurücksetzen'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Daten Ansicht',
|
||||||
|
lang: ['Daten Ansicht', 'Schließen', 'Aktualisieren']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Zoom',
|
||||||
|
back: 'Zoom zurücksetzen'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Zu Liniendiagramm wechseln',
|
||||||
|
bar: 'Zu Balkendiagramm wechseln',
|
||||||
|
stack: 'Stapel',
|
||||||
|
tiled: 'Kachel'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Wiederherstellen'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Als Bild speichern',
|
||||||
|
lang: ['Rechtsklick zum Speichern des Bildes']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Tortendiagramm',
|
||||||
|
bar: 'Balkendiagramm',
|
||||||
|
line: 'Liniendiagramm',
|
||||||
|
scatter: 'Streudiagramm',
|
||||||
|
effectScatter: 'Welligkeits-Streudiagramm',
|
||||||
|
radar: 'Radar-Karte',
|
||||||
|
tree: 'Baum',
|
||||||
|
treemap: 'Baumkarte',
|
||||||
|
boxplot: 'Boxplot',
|
||||||
|
candlestick: 'Kerzenständer',
|
||||||
|
k: 'K Liniendiagramm',
|
||||||
|
heatmap: 'Heatmap',
|
||||||
|
map: 'Karte',
|
||||||
|
parallel: 'Parallele Koordinatenkarte',
|
||||||
|
lines: 'Liniendiagramm',
|
||||||
|
graph: 'Beziehungsgrafik',
|
||||||
|
sankey: 'Sankey-Diagramm',
|
||||||
|
funnel: 'Trichterdiagramm',
|
||||||
|
gauge: 'Meßanzeige',
|
||||||
|
pictorialBar: 'Bildlicher Balken',
|
||||||
|
themeRiver: 'Thematische Flusskarte',
|
||||||
|
sunburst: 'Sonnenausbruch',
|
||||||
|
custom: 'Graficu persunalizatu',
|
||||||
|
chart: 'Diagramm'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'Dies ist ein Diagramm über "{title}"',
|
||||||
|
withoutTitle: 'Dies ist ein Diagramm'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' mit Typ {seriesType} namens {seriesName}.',
|
||||||
|
withoutName: ' mit Typ {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. Es besteht aus {seriesCount} Serienzählung.',
|
||||||
|
withName: ' Die Serie {seriesId} ist ein {seriesType} welcher {seriesName} darstellt.',
|
||||||
|
withoutName: ' Die {seriesId}-Reihe ist ein {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'Die Daten sind wie folgt: ',
|
||||||
|
partialData: 'Die ersten {displayCnt} Elemente sind: ',
|
||||||
|
withName: 'die Daten für {name} sind {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ',',
|
||||||
|
end: '.'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (var key in localeObj) {
|
||||||
|
if (localeObj.hasOwnProperty(key)) {
|
||||||
|
exports[key] = localeObj[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,171 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports', 'echarts'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports, require('echarts/lib/echarts'));
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({}, root.echarts);
|
||||||
|
}
|
||||||
|
})(this, function(exports, echarts) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: German.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni',
|
||||||
|
'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'Jan', 'Feb', 'Mrz', 'Apr', 'Mai', 'Jun',
|
||||||
|
'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'Alle',
|
||||||
|
inverse: 'Invertiert'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Box Auswahl',
|
||||||
|
polygon: 'Lasso Auswahl',
|
||||||
|
lineX: 'Horizontale Auswahl',
|
||||||
|
lineY: 'Vertikale Auswahl',
|
||||||
|
keep: 'Bereich Auswahl',
|
||||||
|
clear: 'Auswahl zurücksetzen'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Daten Ansicht',
|
||||||
|
lang: ['Daten Ansicht', 'Schließen', 'Aktualisieren']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Zoom',
|
||||||
|
back: 'Zoom zurücksetzen'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Zu Liniendiagramm wechseln',
|
||||||
|
bar: 'Zu Balkendiagramm wechseln',
|
||||||
|
stack: 'Stapel',
|
||||||
|
tiled: 'Kachel'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Wiederherstellen'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Als Bild speichern',
|
||||||
|
lang: ['Rechtsklick zum Speichern des Bildes']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Tortendiagramm',
|
||||||
|
bar: 'Balkendiagramm',
|
||||||
|
line: 'Liniendiagramm',
|
||||||
|
scatter: 'Streudiagramm',
|
||||||
|
effectScatter: 'Welligkeits-Streudiagramm',
|
||||||
|
radar: 'Radar-Karte',
|
||||||
|
tree: 'Baum',
|
||||||
|
treemap: 'Baumkarte',
|
||||||
|
boxplot: 'Boxplot',
|
||||||
|
candlestick: 'Kerzenständer',
|
||||||
|
k: 'K Liniendiagramm',
|
||||||
|
heatmap: 'Heatmap',
|
||||||
|
map: 'Karte',
|
||||||
|
parallel: 'Parallele Koordinatenkarte',
|
||||||
|
lines: 'Liniendiagramm',
|
||||||
|
graph: 'Beziehungsgrafik',
|
||||||
|
sankey: 'Sankey-Diagramm',
|
||||||
|
funnel: 'Trichterdiagramm',
|
||||||
|
gauge: 'Meßanzeige',
|
||||||
|
pictorialBar: 'Bildlicher Balken',
|
||||||
|
themeRiver: 'Thematische Flusskarte',
|
||||||
|
sunburst: 'Sonnenausbruch',
|
||||||
|
custom: 'Graficu persunalizatu',
|
||||||
|
chart: 'Diagramm'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'Dies ist ein Diagramm über "{title}"',
|
||||||
|
withoutTitle: 'Dies ist ein Diagramm'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' mit Typ {seriesType} namens {seriesName}.',
|
||||||
|
withoutName: ' mit Typ {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. Es besteht aus {seriesCount} Serienzählung.',
|
||||||
|
withName: ' Die Serie {seriesId} ist ein {seriesType} welcher {seriesName} darstellt.',
|
||||||
|
withoutName: ' Die {seriesId}-Reihe ist ein {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'Die Daten sind wie folgt: ',
|
||||||
|
partialData: 'Die ersten {displayCnt} Elemente sind: ',
|
||||||
|
withName: 'die Daten für {name} sind {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ',',
|
||||||
|
end: '.'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
echarts.registerLocale('DE', localeObj);
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,175 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports);
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({});
|
||||||
|
}
|
||||||
|
})(this, function(exports) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: English.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'January', 'February', 'March', 'April', 'May', 'June',
|
||||||
|
'July', 'August', 'September', 'October', 'November', 'December'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
|
||||||
|
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'All',
|
||||||
|
inverse: 'Inv'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Box Select',
|
||||||
|
polygon: 'Lasso Select',
|
||||||
|
lineX: 'Horizontally Select',
|
||||||
|
lineY: 'Vertically Select',
|
||||||
|
keep: 'Keep Selections',
|
||||||
|
clear: 'Clear Selections'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Data View',
|
||||||
|
lang: ['Data View', 'Close', 'Refresh']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Zoom',
|
||||||
|
back: 'Zoom Reset'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Switch to Line Chart',
|
||||||
|
bar: 'Switch to Bar Chart',
|
||||||
|
stack: 'Stack',
|
||||||
|
tiled: 'Tile'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Restore'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Save as Image',
|
||||||
|
lang: ['Right Click to Save Image']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Pie chart',
|
||||||
|
bar: 'Bar chart',
|
||||||
|
line: 'Line chart',
|
||||||
|
scatter: 'Scatter plot',
|
||||||
|
effectScatter: 'Ripple scatter plot',
|
||||||
|
radar: 'Radar chart',
|
||||||
|
tree: 'Tree',
|
||||||
|
treemap: 'Treemap',
|
||||||
|
boxplot: 'Boxplot',
|
||||||
|
candlestick: 'Candlestick',
|
||||||
|
k: 'K line chart',
|
||||||
|
heatmap: 'Heat map',
|
||||||
|
map: 'Map',
|
||||||
|
parallel: 'Parallel coordinate map',
|
||||||
|
lines: 'Line graph',
|
||||||
|
graph: 'Relationship graph',
|
||||||
|
sankey: 'Sankey diagram',
|
||||||
|
funnel: 'Funnel chart',
|
||||||
|
gauge: 'Gauge',
|
||||||
|
pictorialBar: 'Pictorial bar',
|
||||||
|
themeRiver: 'Theme River Map',
|
||||||
|
sunburst: 'Sunburst',
|
||||||
|
custom: 'Custom chart',
|
||||||
|
chart: 'Chart'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'This is a chart about "{title}"',
|
||||||
|
withoutTitle: 'This is a chart'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' with type {seriesType} named {seriesName}.',
|
||||||
|
withoutName: ' with type {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. It consists of {seriesCount} series count.',
|
||||||
|
withName: ' The {seriesId} series is a {seriesType} representing {seriesName}.',
|
||||||
|
withoutName: ' The {seriesId} series is a {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'The data is as follows: ',
|
||||||
|
partialData: 'The first {displayCnt} items are: ',
|
||||||
|
withName: 'the data for {name} is {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ', ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (var key in localeObj) {
|
||||||
|
if (localeObj.hasOwnProperty(key)) {
|
||||||
|
exports[key] = localeObj[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,171 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports', 'echarts'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports, require('echarts/lib/echarts'));
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({}, root.echarts);
|
||||||
|
}
|
||||||
|
})(this, function(exports, echarts) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: English.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'January', 'February', 'March', 'April', 'May', 'June',
|
||||||
|
'July', 'August', 'September', 'October', 'November', 'December'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
|
||||||
|
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'All',
|
||||||
|
inverse: 'Inv'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Box Select',
|
||||||
|
polygon: 'Lasso Select',
|
||||||
|
lineX: 'Horizontally Select',
|
||||||
|
lineY: 'Vertically Select',
|
||||||
|
keep: 'Keep Selections',
|
||||||
|
clear: 'Clear Selections'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Data View',
|
||||||
|
lang: ['Data View', 'Close', 'Refresh']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Zoom',
|
||||||
|
back: 'Zoom Reset'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Switch to Line Chart',
|
||||||
|
bar: 'Switch to Bar Chart',
|
||||||
|
stack: 'Stack',
|
||||||
|
tiled: 'Tile'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Restore'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Save as Image',
|
||||||
|
lang: ['Right Click to Save Image']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Pie chart',
|
||||||
|
bar: 'Bar chart',
|
||||||
|
line: 'Line chart',
|
||||||
|
scatter: 'Scatter plot',
|
||||||
|
effectScatter: 'Ripple scatter plot',
|
||||||
|
radar: 'Radar chart',
|
||||||
|
tree: 'Tree',
|
||||||
|
treemap: 'Treemap',
|
||||||
|
boxplot: 'Boxplot',
|
||||||
|
candlestick: 'Candlestick',
|
||||||
|
k: 'K line chart',
|
||||||
|
heatmap: 'Heat map',
|
||||||
|
map: 'Map',
|
||||||
|
parallel: 'Parallel coordinate map',
|
||||||
|
lines: 'Line graph',
|
||||||
|
graph: 'Relationship graph',
|
||||||
|
sankey: 'Sankey diagram',
|
||||||
|
funnel: 'Funnel chart',
|
||||||
|
gauge: 'Gauge',
|
||||||
|
pictorialBar: 'Pictorial bar',
|
||||||
|
themeRiver: 'Theme River Map',
|
||||||
|
sunburst: 'Sunburst',
|
||||||
|
custom: 'Custom chart',
|
||||||
|
chart: 'Chart'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'This is a chart about "{title}"',
|
||||||
|
withoutTitle: 'This is a chart'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' with type {seriesType} named {seriesName}.',
|
||||||
|
withoutName: ' with type {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. It consists of {seriesCount} series count.',
|
||||||
|
withName: ' The {seriesId} series is a {seriesType} representing {seriesName}.',
|
||||||
|
withoutName: ' The {seriesId} series is a {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'The data is as follows: ',
|
||||||
|
partialData: 'The first {displayCnt} items are: ',
|
||||||
|
withName: 'the data for {name} is {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ', ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
echarts.registerLocale('EN', localeObj);
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,171 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports);
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({});
|
||||||
|
}
|
||||||
|
})(this, function(exports) {
|
||||||
|
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio',
|
||||||
|
'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'ene', 'feb', 'mar', 'abr', 'may', 'jun',
|
||||||
|
'jul', 'ago', 'sep', 'oct', 'nov', 'dic'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'dom', 'lun', 'mar', 'mie', 'jue', 'vie', 'sáb'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'Todas',
|
||||||
|
inverse: 'Inversa'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Selección de cuadro',
|
||||||
|
polygon: 'Selección de lazo',
|
||||||
|
lineX: 'Seleccionar horizontalmente',
|
||||||
|
lineY: 'Seleccionar verticalmente',
|
||||||
|
keep: 'Mantener selección',
|
||||||
|
clear: 'Despejar selecciones'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Ver datos',
|
||||||
|
lang: ['Ver datos', 'Cerrar', 'Actualizar']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Zoom',
|
||||||
|
back: 'Restablecer zoom'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Cambiar a gráfico de líneas',
|
||||||
|
bar: 'Cambiar a gráfico de barras',
|
||||||
|
stack: 'Pila',
|
||||||
|
tiled: 'Teja'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Restaurar'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Guardar como imagen',
|
||||||
|
lang: ['Clic derecho para guardar imagen']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Gráfico circular',
|
||||||
|
bar: 'Gráfico de barras',
|
||||||
|
line: 'Gráfico de líneas',
|
||||||
|
scatter: 'Diagrama de dispersión',
|
||||||
|
effectScatter: 'Diagrama de dispersión de ondas',
|
||||||
|
radar: 'Gráfico de radar',
|
||||||
|
tree: 'Árbol',
|
||||||
|
treemap: 'Mapa de árbol',
|
||||||
|
boxplot: 'Diagrama de caja',
|
||||||
|
candlestick: 'Gráfico de velas',
|
||||||
|
k: 'Gráfico de líneas K',
|
||||||
|
heatmap: 'Mapa de calor',
|
||||||
|
map: 'Mapa',
|
||||||
|
parallel: 'Mapa de coordenadas paralelas',
|
||||||
|
lines: 'Gráfico de líneas',
|
||||||
|
graph: 'Gráfico de relaciones',
|
||||||
|
sankey: 'Diagrama de Sankey',
|
||||||
|
funnel: 'Gráfico de embudo',
|
||||||
|
gauge: 'Medidor',
|
||||||
|
pictorialBar: 'Gráfico de barras pictóricas',
|
||||||
|
themeRiver: 'Mapa de río temático',
|
||||||
|
sunburst: 'Sunburst',
|
||||||
|
custom: 'Gráfico personalizado',
|
||||||
|
chart: 'Gráfico'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'Este es un gráfico sobre “{title}”',
|
||||||
|
withoutTitle: 'Este es un gráfico'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' con tipo {seriesType} llamado {seriesName}.',
|
||||||
|
withoutName: ' con tipo {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. Consta de {seriesCount} series.',
|
||||||
|
withName: ' La serie {seriesId} es un {seriesType} que representa {seriesName}.',
|
||||||
|
withoutName: ' La serie {seriesId} es un {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'Los datos son los siguientes: ',
|
||||||
|
partialData: 'Los primeros {displayCnt} elementos son: ',
|
||||||
|
withName: 'los datos para {name} son {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ', ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (var key in localeObj) {
|
||||||
|
if (localeObj.hasOwnProperty(key)) {
|
||||||
|
exports[key] = localeObj[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,167 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports', 'echarts'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports, require('echarts/lib/echarts'));
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({}, root.echarts);
|
||||||
|
}
|
||||||
|
})(this, function(exports, echarts) {
|
||||||
|
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio',
|
||||||
|
'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'ene', 'feb', 'mar', 'abr', 'may', 'jun',
|
||||||
|
'jul', 'ago', 'sep', 'oct', 'nov', 'dic'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'dom', 'lun', 'mar', 'mie', 'jue', 'vie', 'sáb'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'Todas',
|
||||||
|
inverse: 'Inversa'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Selección de cuadro',
|
||||||
|
polygon: 'Selección de lazo',
|
||||||
|
lineX: 'Seleccionar horizontalmente',
|
||||||
|
lineY: 'Seleccionar verticalmente',
|
||||||
|
keep: 'Mantener selección',
|
||||||
|
clear: 'Despejar selecciones'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Ver datos',
|
||||||
|
lang: ['Ver datos', 'Cerrar', 'Actualizar']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Zoom',
|
||||||
|
back: 'Restablecer zoom'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Cambiar a gráfico de líneas',
|
||||||
|
bar: 'Cambiar a gráfico de barras',
|
||||||
|
stack: 'Pila',
|
||||||
|
tiled: 'Teja'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Restaurar'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Guardar como imagen',
|
||||||
|
lang: ['Clic derecho para guardar imagen']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Gráfico circular',
|
||||||
|
bar: 'Gráfico de barras',
|
||||||
|
line: 'Gráfico de líneas',
|
||||||
|
scatter: 'Diagrama de dispersión',
|
||||||
|
effectScatter: 'Diagrama de dispersión de ondas',
|
||||||
|
radar: 'Gráfico de radar',
|
||||||
|
tree: 'Árbol',
|
||||||
|
treemap: 'Mapa de árbol',
|
||||||
|
boxplot: 'Diagrama de caja',
|
||||||
|
candlestick: 'Gráfico de velas',
|
||||||
|
k: 'Gráfico de líneas K',
|
||||||
|
heatmap: 'Mapa de calor',
|
||||||
|
map: 'Mapa',
|
||||||
|
parallel: 'Mapa de coordenadas paralelas',
|
||||||
|
lines: 'Gráfico de líneas',
|
||||||
|
graph: 'Gráfico de relaciones',
|
||||||
|
sankey: 'Diagrama de Sankey',
|
||||||
|
funnel: 'Gráfico de embudo',
|
||||||
|
gauge: 'Medidor',
|
||||||
|
pictorialBar: 'Gráfico de barras pictóricas',
|
||||||
|
themeRiver: 'Mapa de río temático',
|
||||||
|
sunburst: 'Sunburst',
|
||||||
|
custom: 'Gráfico personalizado',
|
||||||
|
chart: 'Gráfico'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'Este es un gráfico sobre “{title}”',
|
||||||
|
withoutTitle: 'Este es un gráfico'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' con tipo {seriesType} llamado {seriesName}.',
|
||||||
|
withoutName: ' con tipo {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. Consta de {seriesCount} series.',
|
||||||
|
withName: ' La serie {seriesId} es un {seriesType} que representa {seriesName}.',
|
||||||
|
withoutName: ' La serie {seriesId} es un {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'Los datos son los siguientes: ',
|
||||||
|
partialData: 'Los primeros {displayCnt} elementos son: ',
|
||||||
|
withName: 'los datos para {name} son {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ', ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
echarts.registerLocale('ES', localeObj);
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,171 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports);
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({});
|
||||||
|
}
|
||||||
|
})(this, function(exports) {
|
||||||
|
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'tammikuuta', 'helmikuuta', 'maaliskuuta', 'huhtikuuta', 'toukokuuta', 'kesäkuuta',
|
||||||
|
'heinäkuuta', 'elokuuta', 'syyskuuta', 'lokakuuta', 'marraskuuta', 'joulukuuta'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'tammik', 'helmik', 'maalisk', 'huhtik', 'toukok', 'kesäk',
|
||||||
|
'heinäk', 'elok', 'syysk', 'lokak', 'marrask', 'jouluk'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'sunnuntaina', 'maanantaina', 'tiistaina', 'keskiviikkona', 'torstaina', 'perjantaina', 'lauantaina'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'Kaikki',
|
||||||
|
inverse: 'Käänteinen'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Laatikko valinta',
|
||||||
|
polygon: 'Lasso valinta',
|
||||||
|
lineX: 'Vaakataso valinta',
|
||||||
|
lineY: 'Pysty valinta',
|
||||||
|
keep: 'Pidä valinta',
|
||||||
|
clear: 'Poista valinta'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Data näkymä',
|
||||||
|
lang: ['Data näkymä', 'Sulje', 'Päivitä']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Zoomaa',
|
||||||
|
back: 'Zoomin nollaus'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Vaihda Viivakaavioon',
|
||||||
|
bar: 'Vaihda palkkikaavioon',
|
||||||
|
stack: 'Pinoa',
|
||||||
|
tiled: 'Erottele'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Palauta'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Tallenna kuvana',
|
||||||
|
lang: ['Paina oikeaa hiirennappia tallentaaksesi kuva']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Ympyrädiagrammi',
|
||||||
|
bar: 'Pylväsdiagrammi',
|
||||||
|
line: 'Viivakaavio',
|
||||||
|
scatter: 'Pisteplot',
|
||||||
|
effectScatter: 'Ripple-pisteplot',
|
||||||
|
radar: 'Sädekaavio',
|
||||||
|
tree: 'Puu',
|
||||||
|
treemap: 'Tilastoaluekartta',
|
||||||
|
boxplot: 'Viivadiagrammi',
|
||||||
|
candlestick: 'Kynttiläkaavio',
|
||||||
|
k: 'K-linjakaavio',
|
||||||
|
heatmap: 'Lämpökartta',
|
||||||
|
map: 'Kartta',
|
||||||
|
parallel: 'Rinnakkaiskoordinaattikartta',
|
||||||
|
lines: 'Viivakuvaaja',
|
||||||
|
graph: 'Suhdekuvaaja',
|
||||||
|
sankey: 'Sankey-kaavio',
|
||||||
|
funnel: 'Suppilokaavio',
|
||||||
|
gauge: 'Mittari',
|
||||||
|
pictorialBar: 'Kuvallinen pylväs',
|
||||||
|
themeRiver: 'Teemajokikartta',
|
||||||
|
sunburst: 'Auringonkehä',
|
||||||
|
custom: 'Mukautettu kaavio',
|
||||||
|
chart: 'Kaavio'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'Tämä on kaavio “{title}”',
|
||||||
|
withoutTitle: 'Tämä on kaavio'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' tyyppiä {seriesType} nimeltään {seriesName}.',
|
||||||
|
withoutName: ' tyyppiä {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. Se koostuu {seriesCount} sarjasta.',
|
||||||
|
withName: ' Sarja {seriesId} on {seriesType}, joka edustaa {seriesName}.',
|
||||||
|
withoutName: ' Sarja {seriesId} on {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'Tiedot ovat seuraavat: ',
|
||||||
|
partialData: 'Ensimmäiset {displayCnt} kohtaa ovat: ',
|
||||||
|
withName: 'tiedot nimelle {name} ovat {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ', ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (var key in localeObj) {
|
||||||
|
if (localeObj.hasOwnProperty(key)) {
|
||||||
|
exports[key] = localeObj[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,167 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports', 'echarts'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports, require('echarts/lib/echarts'));
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({}, root.echarts);
|
||||||
|
}
|
||||||
|
})(this, function(exports, echarts) {
|
||||||
|
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'tammikuuta', 'helmikuuta', 'maaliskuuta', 'huhtikuuta', 'toukokuuta', 'kesäkuuta',
|
||||||
|
'heinäkuuta', 'elokuuta', 'syyskuuta', 'lokakuuta', 'marraskuuta', 'joulukuuta'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'tammik', 'helmik', 'maalisk', 'huhtik', 'toukok', 'kesäk',
|
||||||
|
'heinäk', 'elok', 'syysk', 'lokak', 'marrask', 'jouluk'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'sunnuntaina', 'maanantaina', 'tiistaina', 'keskiviikkona', 'torstaina', 'perjantaina', 'lauantaina'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'Kaikki',
|
||||||
|
inverse: 'Käänteinen'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Laatikko valinta',
|
||||||
|
polygon: 'Lasso valinta',
|
||||||
|
lineX: 'Vaakataso valinta',
|
||||||
|
lineY: 'Pysty valinta',
|
||||||
|
keep: 'Pidä valinta',
|
||||||
|
clear: 'Poista valinta'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Data näkymä',
|
||||||
|
lang: ['Data näkymä', 'Sulje', 'Päivitä']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Zoomaa',
|
||||||
|
back: 'Zoomin nollaus'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Vaihda Viivakaavioon',
|
||||||
|
bar: 'Vaihda palkkikaavioon',
|
||||||
|
stack: 'Pinoa',
|
||||||
|
tiled: 'Erottele'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Palauta'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Tallenna kuvana',
|
||||||
|
lang: ['Paina oikeaa hiirennappia tallentaaksesi kuva']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Ympyrädiagrammi',
|
||||||
|
bar: 'Pylväsdiagrammi',
|
||||||
|
line: 'Viivakaavio',
|
||||||
|
scatter: 'Pisteplot',
|
||||||
|
effectScatter: 'Ripple-pisteplot',
|
||||||
|
radar: 'Sädekaavio',
|
||||||
|
tree: 'Puu',
|
||||||
|
treemap: 'Tilastoaluekartta',
|
||||||
|
boxplot: 'Viivadiagrammi',
|
||||||
|
candlestick: 'Kynttiläkaavio',
|
||||||
|
k: 'K-linjakaavio',
|
||||||
|
heatmap: 'Lämpökartta',
|
||||||
|
map: 'Kartta',
|
||||||
|
parallel: 'Rinnakkaiskoordinaattikartta',
|
||||||
|
lines: 'Viivakuvaaja',
|
||||||
|
graph: 'Suhdekuvaaja',
|
||||||
|
sankey: 'Sankey-kaavio',
|
||||||
|
funnel: 'Suppilokaavio',
|
||||||
|
gauge: 'Mittari',
|
||||||
|
pictorialBar: 'Kuvallinen pylväs',
|
||||||
|
themeRiver: 'Teemajokikartta',
|
||||||
|
sunburst: 'Auringonkehä',
|
||||||
|
custom: 'Mukautettu kaavio',
|
||||||
|
chart: 'Kaavio'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'Tämä on kaavio “{title}”',
|
||||||
|
withoutTitle: 'Tämä on kaavio'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' tyyppiä {seriesType} nimeltään {seriesName}.',
|
||||||
|
withoutName: ' tyyppiä {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. Se koostuu {seriesCount} sarjasta.',
|
||||||
|
withName: ' Sarja {seriesId} on {seriesType}, joka edustaa {seriesName}.',
|
||||||
|
withoutName: ' Sarja {seriesId} on {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'Tiedot ovat seuraavat: ',
|
||||||
|
partialData: 'Ensimmäiset {displayCnt} kohtaa ovat: ',
|
||||||
|
withName: 'tiedot nimelle {name} ovat {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ', ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
echarts.registerLocale('FI', localeObj);
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,175 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports);
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({});
|
||||||
|
}
|
||||||
|
})(this, function(exports) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: Français.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
|
||||||
|
'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'Jan', 'Fév', 'Mars', 'Avr', 'Mai', 'Juin',
|
||||||
|
'Juil', 'Août', 'Sept', 'Oct', 'Nov', 'Déc'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'Tout',
|
||||||
|
inverse: 'Inverse'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Sélection rectangulaire',
|
||||||
|
polygon: 'Sélection au lasso',
|
||||||
|
lineX: 'Sélectionner horizontalement',
|
||||||
|
lineY: 'Sélectionner verticalement',
|
||||||
|
keep: 'Garder la sélection',
|
||||||
|
clear: 'Effacer la sélection'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Visualisation des données',
|
||||||
|
lang: ['Visualisation des données', 'Fermer', 'Rafraîchir']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Zoom',
|
||||||
|
back: 'Zoom Remise à zéro'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Changer pour Ligne',
|
||||||
|
bar: 'Changer pour Histogramme',
|
||||||
|
stack: 'Superposition',
|
||||||
|
tiled: 'Tuile'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Restaurer'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Sauvegarder l\'image',
|
||||||
|
lang: ['Clic droit pour sauvegarder l\'image']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Camembert',
|
||||||
|
bar: 'Histogramme',
|
||||||
|
line: 'Ligne',
|
||||||
|
scatter: 'Nuage de points',
|
||||||
|
effectScatter: 'Nuage de points stylisé',
|
||||||
|
radar: 'Radar',
|
||||||
|
tree: 'Arbre',
|
||||||
|
treemap: 'Treemap',
|
||||||
|
boxplot: 'Boîte à moustaches',
|
||||||
|
candlestick: 'Chandelier',
|
||||||
|
k: 'Linéaire K',
|
||||||
|
heatmap: 'Carte de fréquentation',
|
||||||
|
map: 'Carte',
|
||||||
|
parallel: 'Données parallèles',
|
||||||
|
lines: 'Lignes',
|
||||||
|
graph: 'Graphe',
|
||||||
|
sankey: 'Sankey',
|
||||||
|
funnel: 'Entonnoir',
|
||||||
|
gauge: 'Jauge',
|
||||||
|
pictorialBar: 'Barres à images',
|
||||||
|
themeRiver: 'Stream Graph',
|
||||||
|
sunburst: 'Sunburst',
|
||||||
|
custom: 'Graphique personnalisé',
|
||||||
|
chart: 'Graphique'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'Cette carte est intitulée "{title}"',
|
||||||
|
withoutTitle: 'C\'est une carte'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' Avec le type de {seriesType} qui s\'appelle {seriesName}.',
|
||||||
|
withoutName: ' Avec le type de {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: ' Elle comprend {seriesCount} séries.',
|
||||||
|
withName: ' La série {seriesId} représente {seriesName} de {seriesType}.',
|
||||||
|
withoutName: ' La série {seriesId} est un/une {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'Les données sont: ',
|
||||||
|
partialData: 'Les premiers {displayCnt} éléments sont : ',
|
||||||
|
withName: 'Les données pour {name} sont {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ', ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (var key in localeObj) {
|
||||||
|
if (localeObj.hasOwnProperty(key)) {
|
||||||
|
exports[key] = localeObj[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,171 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports', 'echarts'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports, require('echarts/lib/echarts'));
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({}, root.echarts);
|
||||||
|
}
|
||||||
|
})(this, function(exports, echarts) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: Français.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
|
||||||
|
'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'Jan', 'Fév', 'Mars', 'Avr', 'Mai', 'Juin',
|
||||||
|
'Juil', 'Août', 'Sept', 'Oct', 'Nov', 'Déc'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'Tout',
|
||||||
|
inverse: 'Inverse'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Sélection rectangulaire',
|
||||||
|
polygon: 'Sélection au lasso',
|
||||||
|
lineX: 'Sélectionner horizontalement',
|
||||||
|
lineY: 'Sélectionner verticalement',
|
||||||
|
keep: 'Garder la sélection',
|
||||||
|
clear: 'Effacer la sélection'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Visualisation des données',
|
||||||
|
lang: ['Visualisation des données', 'Fermer', 'Rafraîchir']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Zoom',
|
||||||
|
back: 'Zoom Remise à zéro'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Changer pour Ligne',
|
||||||
|
bar: 'Changer pour Histogramme',
|
||||||
|
stack: 'Superposition',
|
||||||
|
tiled: 'Tuile'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Restaurer'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Sauvegarder l\'image',
|
||||||
|
lang: ['Clic droit pour sauvegarder l\'image']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Camembert',
|
||||||
|
bar: 'Histogramme',
|
||||||
|
line: 'Ligne',
|
||||||
|
scatter: 'Nuage de points',
|
||||||
|
effectScatter: 'Nuage de points stylisé',
|
||||||
|
radar: 'Radar',
|
||||||
|
tree: 'Arbre',
|
||||||
|
treemap: 'Treemap',
|
||||||
|
boxplot: 'Boîte à moustaches',
|
||||||
|
candlestick: 'Chandelier',
|
||||||
|
k: 'Linéaire K',
|
||||||
|
heatmap: 'Carte de fréquentation',
|
||||||
|
map: 'Carte',
|
||||||
|
parallel: 'Données parallèles',
|
||||||
|
lines: 'Lignes',
|
||||||
|
graph: 'Graphe',
|
||||||
|
sankey: 'Sankey',
|
||||||
|
funnel: 'Entonnoir',
|
||||||
|
gauge: 'Jauge',
|
||||||
|
pictorialBar: 'Barres à images',
|
||||||
|
themeRiver: 'Stream Graph',
|
||||||
|
sunburst: 'Sunburst',
|
||||||
|
custom: 'Graphique personnalisé',
|
||||||
|
chart: 'Graphique'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'Cette carte est intitulée "{title}"',
|
||||||
|
withoutTitle: 'C\'est une carte'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' Avec le type de {seriesType} qui s\'appelle {seriesName}.',
|
||||||
|
withoutName: ' Avec le type de {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: ' Elle comprend {seriesCount} séries.',
|
||||||
|
withName: ' La série {seriesId} représente {seriesName} de {seriesType}.',
|
||||||
|
withoutName: ' La série {seriesId} est un/une {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'Les données sont: ',
|
||||||
|
partialData: 'Les premiers {displayCnt} éléments sont : ',
|
||||||
|
withName: 'Les données pour {name} sont {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ', ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
echarts.registerLocale('FR', localeObj);
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,175 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports);
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({});
|
||||||
|
}
|
||||||
|
})(this, function(exports) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: Hungarian.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'Január', 'Február', 'Március', 'Április', 'Május', 'Június',
|
||||||
|
'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún',
|
||||||
|
'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'V', 'H', 'K', 'Sze', 'Csü', 'P', 'Szo'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'Mind',
|
||||||
|
inverse: 'Inverz'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Négyzet kijelölés',
|
||||||
|
polygon: 'Lasszó kijelölés',
|
||||||
|
lineX: 'Vízszintes kijelölés',
|
||||||
|
lineY: 'Függőleges kijelölés',
|
||||||
|
keep: 'Kijelölések megtartása',
|
||||||
|
clear: 'Kijelölések törlése'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Adat nézet',
|
||||||
|
lang: ['Adat nézet', 'Bezárás', 'Frissítés']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Nagyítás',
|
||||||
|
back: 'Alapméret'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Váltás vonal diagramra',
|
||||||
|
bar: 'Váltás oszlop diagramra',
|
||||||
|
stack: 'Halmozás',
|
||||||
|
tiled: 'Csempe'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Visszaállítás'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Mentés képként',
|
||||||
|
lang: ['Kattints jobb egérgombbal a mentéshez képként']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Oszlopdiagram',
|
||||||
|
bar: 'Sávdiagram',
|
||||||
|
line: 'Vonaldiagram',
|
||||||
|
scatter: 'Pontdiagram',
|
||||||
|
effectScatter: 'Buborékdiagram',
|
||||||
|
radar: 'Sugárdiagram',
|
||||||
|
tree: 'Fa',
|
||||||
|
treemap: 'Fatérkép',
|
||||||
|
boxplot: 'Dobozdiagram',
|
||||||
|
candlestick: 'Árfolyamdiagram',
|
||||||
|
k: 'K vonaldiagram',
|
||||||
|
heatmap: 'Hőtérkép',
|
||||||
|
map: 'Térkép',
|
||||||
|
parallel: 'Párhuzamos koordináta térkép',
|
||||||
|
lines: 'Vonalgráf',
|
||||||
|
graph: 'Kapcsolatgráf',
|
||||||
|
sankey: 'Sankey-diagram',
|
||||||
|
funnel: 'Vízesésdiagram',
|
||||||
|
gauge: 'Mérőeszköz',
|
||||||
|
pictorialBar: 'Képes sávdiagram',
|
||||||
|
themeRiver: 'Folyó témájú térkép',
|
||||||
|
sunburst: 'Napégés',
|
||||||
|
custom: 'Egyedi diagram',
|
||||||
|
chart: 'Diagram'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'Ez egy diagram, amely neve "{title}"',
|
||||||
|
withoutTitle: 'Ez egy diagram'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' típusa {seriesType} és elnevezése {seriesName}.',
|
||||||
|
withoutName: ' típusa {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. Az adatsorok száma {seriesCount}.',
|
||||||
|
withName: ' A {seriesId} számú adatsor típusa {seriesType} és neve {seriesName}.',
|
||||||
|
withoutName: ' A {seriesId} számú adatsor típusa {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'Az adatok a következők: ',
|
||||||
|
partialData: 'Az első {displayCnt} elemek: ',
|
||||||
|
withName: 'a {name} nevű adat értéke {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ', ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (var key in localeObj) {
|
||||||
|
if (localeObj.hasOwnProperty(key)) {
|
||||||
|
exports[key] = localeObj[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,171 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports', 'echarts'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports, require('echarts/lib/echarts'));
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({}, root.echarts);
|
||||||
|
}
|
||||||
|
})(this, function(exports, echarts) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: Hungarian.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'Január', 'Február', 'Március', 'Április', 'Május', 'Június',
|
||||||
|
'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún',
|
||||||
|
'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'V', 'H', 'K', 'Sze', 'Csü', 'P', 'Szo'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'Mind',
|
||||||
|
inverse: 'Inverz'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Négyzet kijelölés',
|
||||||
|
polygon: 'Lasszó kijelölés',
|
||||||
|
lineX: 'Vízszintes kijelölés',
|
||||||
|
lineY: 'Függőleges kijelölés',
|
||||||
|
keep: 'Kijelölések megtartása',
|
||||||
|
clear: 'Kijelölések törlése'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Adat nézet',
|
||||||
|
lang: ['Adat nézet', 'Bezárás', 'Frissítés']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Nagyítás',
|
||||||
|
back: 'Alapméret'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Váltás vonal diagramra',
|
||||||
|
bar: 'Váltás oszlop diagramra',
|
||||||
|
stack: 'Halmozás',
|
||||||
|
tiled: 'Csempe'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Visszaállítás'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Mentés képként',
|
||||||
|
lang: ['Kattints jobb egérgombbal a mentéshez képként']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Oszlopdiagram',
|
||||||
|
bar: 'Sávdiagram',
|
||||||
|
line: 'Vonaldiagram',
|
||||||
|
scatter: 'Pontdiagram',
|
||||||
|
effectScatter: 'Buborékdiagram',
|
||||||
|
radar: 'Sugárdiagram',
|
||||||
|
tree: 'Fa',
|
||||||
|
treemap: 'Fatérkép',
|
||||||
|
boxplot: 'Dobozdiagram',
|
||||||
|
candlestick: 'Árfolyamdiagram',
|
||||||
|
k: 'K vonaldiagram',
|
||||||
|
heatmap: 'Hőtérkép',
|
||||||
|
map: 'Térkép',
|
||||||
|
parallel: 'Párhuzamos koordináta térkép',
|
||||||
|
lines: 'Vonalgráf',
|
||||||
|
graph: 'Kapcsolatgráf',
|
||||||
|
sankey: 'Sankey-diagram',
|
||||||
|
funnel: 'Vízesésdiagram',
|
||||||
|
gauge: 'Mérőeszköz',
|
||||||
|
pictorialBar: 'Képes sávdiagram',
|
||||||
|
themeRiver: 'Folyó témájú térkép',
|
||||||
|
sunburst: 'Napégés',
|
||||||
|
custom: 'Egyedi diagram',
|
||||||
|
chart: 'Diagram'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'Ez egy diagram, amely neve "{title}"',
|
||||||
|
withoutTitle: 'Ez egy diagram'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' típusa {seriesType} és elnevezése {seriesName}.',
|
||||||
|
withoutName: ' típusa {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. Az adatsorok száma {seriesCount}.',
|
||||||
|
withName: ' A {seriesId} számú adatsor típusa {seriesType} és neve {seriesName}.',
|
||||||
|
withoutName: ' A {seriesId} számú adatsor típusa {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'Az adatok a következők: ',
|
||||||
|
partialData: 'Az első {displayCnt} elemek: ',
|
||||||
|
withName: 'a {name} nevű adat értéke {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ', ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
echarts.registerLocale('HU', localeObj);
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,175 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports);
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({});
|
||||||
|
}
|
||||||
|
})(this, function(exports) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: Italian.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno',
|
||||||
|
'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu',
|
||||||
|
'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'Domenica', 'Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'Tutti',
|
||||||
|
inverse: 'Inverso'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Selezione rettangolare',
|
||||||
|
polygon: 'Selezione lazo',
|
||||||
|
lineX: 'Selezione orizzontale',
|
||||||
|
lineY: 'Selezione verticale',
|
||||||
|
keep: 'Mantieni selezione',
|
||||||
|
clear: 'Rimuovi selezione'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Visualizzazione dati',
|
||||||
|
lang: ['Visualizzazione dati', 'Chiudi', 'Aggiorna']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Zoom',
|
||||||
|
back: 'Resetta zoom'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Passa al grafico a linee',
|
||||||
|
bar: 'Passa al grafico a barre',
|
||||||
|
stack: 'Pila',
|
||||||
|
tiled: 'Piastrella'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Ripristina'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Salva come immagine',
|
||||||
|
lang: ['Tasto destro per salvare l\'immagine']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Grafico a torta',
|
||||||
|
bar: 'Grafico a barre',
|
||||||
|
line: 'Grafico a linee',
|
||||||
|
scatter: 'Grafico a dispersione',
|
||||||
|
effectScatter: 'Ripple scatter plot',
|
||||||
|
radar: 'Grafico radar',
|
||||||
|
tree: 'Albero',
|
||||||
|
treemap: 'Treemap',
|
||||||
|
boxplot: 'Diagramma a scatola e baffi',
|
||||||
|
candlestick: 'Candlestick',
|
||||||
|
k: 'K line chart',
|
||||||
|
heatmap: 'Mappa di calore',
|
||||||
|
map: 'Mappa',
|
||||||
|
parallel: 'Grafico a coordinate parallele',
|
||||||
|
lines: 'Grafico a linee',
|
||||||
|
graph: 'Diagramma delle relazioni',
|
||||||
|
sankey: 'Diagramma di Sankey',
|
||||||
|
funnel: 'Grafico a imbuto',
|
||||||
|
gauge: 'Gauge',
|
||||||
|
pictorialBar: 'Pictorial bar',
|
||||||
|
themeRiver: 'Theme River Map',
|
||||||
|
sunburst: 'Radiale',
|
||||||
|
custom: 'Egyedi diagram',
|
||||||
|
chart: 'Grafico'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'Questo è un grafico su "{title}"',
|
||||||
|
withoutTitle: 'Questo è un grafico'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' con il tipo {seriesType} denominato {seriesName}.',
|
||||||
|
withoutName: ' con il tipo {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. È composto da {seriesCount} serie.',
|
||||||
|
withName: ' La {seriesId} serie è un {seriesType} denominata {seriesName}.',
|
||||||
|
withoutName: ' la {seriesId} serie è un {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'I dati sono come segue: ',
|
||||||
|
partialData: 'I primi {displayCnt} elementi sono: ',
|
||||||
|
withName: 'il dato per {name} è {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ', ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (var key in localeObj) {
|
||||||
|
if (localeObj.hasOwnProperty(key)) {
|
||||||
|
exports[key] = localeObj[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,171 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports', 'echarts'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports, require('echarts/lib/echarts'));
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({}, root.echarts);
|
||||||
|
}
|
||||||
|
})(this, function(exports, echarts) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: Italian.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno',
|
||||||
|
'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu',
|
||||||
|
'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'Domenica', 'Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'Tutti',
|
||||||
|
inverse: 'Inverso'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: 'Selezione rettangolare',
|
||||||
|
polygon: 'Selezione lazo',
|
||||||
|
lineX: 'Selezione orizzontale',
|
||||||
|
lineY: 'Selezione verticale',
|
||||||
|
keep: 'Mantieni selezione',
|
||||||
|
clear: 'Rimuovi selezione'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'Visualizzazione dati',
|
||||||
|
lang: ['Visualizzazione dati', 'Chiudi', 'Aggiorna']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'Zoom',
|
||||||
|
back: 'Resetta zoom'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: 'Passa al grafico a linee',
|
||||||
|
bar: 'Passa al grafico a barre',
|
||||||
|
stack: 'Pila',
|
||||||
|
tiled: 'Piastrella'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: 'Ripristina'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: 'Salva come immagine',
|
||||||
|
lang: ['Tasto destro per salvare l\'immagine']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: 'Grafico a torta',
|
||||||
|
bar: 'Grafico a barre',
|
||||||
|
line: 'Grafico a linee',
|
||||||
|
scatter: 'Grafico a dispersione',
|
||||||
|
effectScatter: 'Ripple scatter plot',
|
||||||
|
radar: 'Grafico radar',
|
||||||
|
tree: 'Albero',
|
||||||
|
treemap: 'Treemap',
|
||||||
|
boxplot: 'Diagramma a scatola e baffi',
|
||||||
|
candlestick: 'Candlestick',
|
||||||
|
k: 'K line chart',
|
||||||
|
heatmap: 'Mappa di calore',
|
||||||
|
map: 'Mappa',
|
||||||
|
parallel: 'Grafico a coordinate parallele',
|
||||||
|
lines: 'Grafico a linee',
|
||||||
|
graph: 'Diagramma delle relazioni',
|
||||||
|
sankey: 'Diagramma di Sankey',
|
||||||
|
funnel: 'Grafico a imbuto',
|
||||||
|
gauge: 'Gauge',
|
||||||
|
pictorialBar: 'Pictorial bar',
|
||||||
|
themeRiver: 'Theme River Map',
|
||||||
|
sunburst: 'Radiale',
|
||||||
|
custom: 'Egyedi diagram',
|
||||||
|
chart: 'Grafico'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'Questo è un grafico su "{title}"',
|
||||||
|
withoutTitle: 'Questo è un grafico'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: ' con il tipo {seriesType} denominato {seriesName}.',
|
||||||
|
withoutName: ' con il tipo {seriesType}.'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '. È composto da {seriesCount} serie.',
|
||||||
|
withName: ' La {seriesId} serie è un {seriesType} denominata {seriesName}.',
|
||||||
|
withoutName: ' la {seriesId} serie è un {seriesType}.',
|
||||||
|
separator: {
|
||||||
|
middle: '',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'I dati sono come segue: ',
|
||||||
|
partialData: 'I primi {displayCnt} elementi sono: ',
|
||||||
|
withName: 'il dato per {name} è {value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: ', ',
|
||||||
|
end: '. '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
echarts.registerLocale('IT', localeObj);
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,175 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports);
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({});
|
||||||
|
}
|
||||||
|
})(this, function(exports) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: Japanese.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'一月', '二月', '三月', '四月', '五月', '六月',
|
||||||
|
'七月', '八月', '九月', '十月', '十一月', '十二月'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'1月', '2月', '3月', '4月', '5月', '6月',
|
||||||
|
'7月', '8月', '9月', '10月', '11月', '12月'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'日', '月', '火', '水', '木', '金', '土'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'すべてを選択',
|
||||||
|
inverse: '選択範囲を反転'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: '矩形選択',
|
||||||
|
polygon: 'なげなわ選択',
|
||||||
|
lineX: '横方向に選択',
|
||||||
|
lineY: '縦方向に選択',
|
||||||
|
keep: '選択範囲を維持',
|
||||||
|
clear: '選択範囲をクリア'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'データビュー',
|
||||||
|
lang: ['データビュー', '閉じる', 'リロード']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'ズーム',
|
||||||
|
back: 'リセット'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: '折れ線に切り替え',
|
||||||
|
bar: '棒に切り替え',
|
||||||
|
stack: '積み上げに切り替え',
|
||||||
|
tiled: 'タイル状に切り替え'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: '復元'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: '図として保存',
|
||||||
|
lang: ['右クリックして図を保存']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: '円グラフ',
|
||||||
|
bar: '棒グラフ',
|
||||||
|
line: '折れ線グラフ',
|
||||||
|
scatter: '散布図',
|
||||||
|
effectScatter: 'エフェクト散布図',
|
||||||
|
radar: 'レーダーチャート',
|
||||||
|
tree: '階層グラフ',
|
||||||
|
treemap: 'ツリーマップ',
|
||||||
|
boxplot: '箱ひげ図',
|
||||||
|
candlestick: 'Kチャート',
|
||||||
|
k: 'Kチャート',
|
||||||
|
heatmap: 'ヒートマップ',
|
||||||
|
map: '地図',
|
||||||
|
parallel: 'パラレルチャート',
|
||||||
|
lines: 'ラインチャート',
|
||||||
|
graph: '相関図',
|
||||||
|
sankey: 'サンキーダイアグラム',
|
||||||
|
funnel: 'ファネルグラフ',
|
||||||
|
gauge: 'ゲージ',
|
||||||
|
pictorialBar: '絵入り棒グラフ',
|
||||||
|
themeRiver: 'テーマリバー',
|
||||||
|
sunburst: 'サンバースト',
|
||||||
|
custom: 'カスタムチャート',
|
||||||
|
chart: 'チャート'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'これは「{title}」に関するチャートです。',
|
||||||
|
withoutTitle: 'これはチャートで、'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: 'チャートのタイプは{seriesType}で、{seriesName}を示しています。',
|
||||||
|
withoutName: 'チャートのタイプは{seriesType}です。'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '{seriesCount}つのチャートシリーズによって構成されています。',
|
||||||
|
withName: '{seriesId}番目のシリーズは{seriesName}を示した{seriesType}で、',
|
||||||
|
withoutName: '{seriesId}番目のシリーズは{seriesType}で、',
|
||||||
|
separator: {
|
||||||
|
middle: ';',
|
||||||
|
end: '。'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'データは:',
|
||||||
|
partialData: 'その内、{displayCnt}番目までは:',
|
||||||
|
withName: '{name}のデータは{value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: '、',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (var key in localeObj) {
|
||||||
|
if (localeObj.hasOwnProperty(key)) {
|
||||||
|
exports[key] = localeObj[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,171 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||||
|
*/
|
||||||
|
(function(root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(['exports', 'echarts'], factory);
|
||||||
|
} else if (
|
||||||
|
typeof exports === 'object' &&
|
||||||
|
typeof exports.nodeName !== 'string'
|
||||||
|
) {
|
||||||
|
// CommonJS
|
||||||
|
factory(exports, require('echarts/lib/echarts'));
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory({}, root.echarts);
|
||||||
|
}
|
||||||
|
})(this, function(exports, echarts) {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Language: Japanese.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var localeObj = {
|
||||||
|
time: {
|
||||||
|
month: [
|
||||||
|
'一月', '二月', '三月', '四月', '五月', '六月',
|
||||||
|
'七月', '八月', '九月', '十月', '十一月', '十二月'
|
||||||
|
],
|
||||||
|
monthAbbr: [
|
||||||
|
'1月', '2月', '3月', '4月', '5月', '6月',
|
||||||
|
'7月', '8月', '9月', '10月', '11月', '12月'
|
||||||
|
],
|
||||||
|
dayOfWeek: [
|
||||||
|
'日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'
|
||||||
|
],
|
||||||
|
dayOfWeekAbbr: [
|
||||||
|
'日', '月', '火', '水', '木', '金', '土'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
selector: {
|
||||||
|
all: 'すべてを選択',
|
||||||
|
inverse: '選択範囲を反転'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
brush: {
|
||||||
|
title: {
|
||||||
|
rect: '矩形選択',
|
||||||
|
polygon: 'なげなわ選択',
|
||||||
|
lineX: '横方向に選択',
|
||||||
|
lineY: '縦方向に選択',
|
||||||
|
keep: '選択範囲を維持',
|
||||||
|
clear: '選択範囲をクリア'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataView: {
|
||||||
|
title: 'データビュー',
|
||||||
|
lang: ['データビュー', '閉じる', 'リロード']
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
title: {
|
||||||
|
zoom: 'ズーム',
|
||||||
|
back: 'リセット'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
magicType: {
|
||||||
|
title: {
|
||||||
|
line: '折れ線に切り替え',
|
||||||
|
bar: '棒に切り替え',
|
||||||
|
stack: '積み上げに切り替え',
|
||||||
|
tiled: 'タイル状に切り替え'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
restore: {
|
||||||
|
title: '復元'
|
||||||
|
},
|
||||||
|
saveAsImage: {
|
||||||
|
title: '図として保存',
|
||||||
|
lang: ['右クリックして図を保存']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
typeNames: {
|
||||||
|
pie: '円グラフ',
|
||||||
|
bar: '棒グラフ',
|
||||||
|
line: '折れ線グラフ',
|
||||||
|
scatter: '散布図',
|
||||||
|
effectScatter: 'エフェクト散布図',
|
||||||
|
radar: 'レーダーチャート',
|
||||||
|
tree: '階層グラフ',
|
||||||
|
treemap: 'ツリーマップ',
|
||||||
|
boxplot: '箱ひげ図',
|
||||||
|
candlestick: 'Kチャート',
|
||||||
|
k: 'Kチャート',
|
||||||
|
heatmap: 'ヒートマップ',
|
||||||
|
map: '地図',
|
||||||
|
parallel: 'パラレルチャート',
|
||||||
|
lines: 'ラインチャート',
|
||||||
|
graph: '相関図',
|
||||||
|
sankey: 'サンキーダイアグラム',
|
||||||
|
funnel: 'ファネルグラフ',
|
||||||
|
gauge: 'ゲージ',
|
||||||
|
pictorialBar: '絵入り棒グラフ',
|
||||||
|
themeRiver: 'テーマリバー',
|
||||||
|
sunburst: 'サンバースト',
|
||||||
|
custom: 'カスタムチャート',
|
||||||
|
chart: 'チャート'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aria: {
|
||||||
|
general: {
|
||||||
|
withTitle: 'これは「{title}」に関するチャートです。',
|
||||||
|
withoutTitle: 'これはチャートで、'
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
single: {
|
||||||
|
prefix: '',
|
||||||
|
withName: 'チャートのタイプは{seriesType}で、{seriesName}を示しています。',
|
||||||
|
withoutName: 'チャートのタイプは{seriesType}です。'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
prefix: '{seriesCount}つのチャートシリーズによって構成されています。',
|
||||||
|
withName: '{seriesId}番目のシリーズは{seriesName}を示した{seriesType}で、',
|
||||||
|
withoutName: '{seriesId}番目のシリーズは{seriesType}で、',
|
||||||
|
separator: {
|
||||||
|
middle: ';',
|
||||||
|
end: '。'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
allData: 'データは:',
|
||||||
|
partialData: 'その内、{displayCnt}番目までは:',
|
||||||
|
withName: '{name}のデータは{value}',
|
||||||
|
withoutName: '{value}',
|
||||||
|
separator: {
|
||||||
|
middle: '、',
|
||||||
|
end: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
echarts.registerLocale('JA', localeObj);
|
||||||
|
|
||||||
|
});
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue