Merge branch 'dev.yang' into dev

dev.yang
Yueng 2024-10-09 13:59:14 +08:00
commit 4a005b3df0
1644 changed files with 81 additions and 189173 deletions

View File

@ -57,7 +57,6 @@
<groupId>com.muyu</groupId>
<artifactId>cloud-common-api-doc</artifactId>
</dependency>
</dependencies>
<build>

View File

@ -2,6 +2,7 @@ package com.muyu.auth.controller;
import com.muyu.auth.form.LoginBody;
import com.muyu.auth.form.RegisterBody;
import com.muyu.auth.remote.RunCarConditionRemote;
import com.muyu.auth.service.SysLoginService;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.JwtUtils;
@ -18,6 +19,9 @@ import org.springframework.web.bind.annotation.RestController;
import jakarta.servlet.http.HttpServletRequest;
import javax.annotation.Resource;
import java.util.Map;
/**
* token
*
@ -31,12 +35,17 @@ public class TokenController {
@Autowired
private SysLoginService sysLoginService;
@Resource
private RunCarConditionRemote runCarCondition;
@PostMapping("login")
public Result<?> login (@RequestBody LoginBody form) {
// 用户登录
LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword(),form.getFirmName());
// 获取登录token
return Result.success(tokenService.createToken(userInfo));
Map<String, Object> token = tokenService.createToken(userInfo);
runCarCondition.runCarCondition();
return Result.success(token);
}
@DeleteMapping("logout")

View File

@ -0,0 +1,18 @@
package com.muyu.auth.remote;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
* @Authoryang
* @Packagecom.muyu.auth.remote
* @Projectcloud-server-8
* @nameRunCarConditionRemote
* @Date2024/10/8 22:21
*/
@FeignClient(name = "cloud-electronic")
public interface RunCarConditionRemote {
@GetMapping("/text")
public void runCarCondition();
}

View File

@ -4,7 +4,7 @@ server:
# nacos线上地址
nacos:
addr: 127.0.0.1:8848
addr: 159.75.188.178:8848
user-name: nacos
password: nacos
namespace: eight

View File

@ -1,98 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<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-Saas-Service</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<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-api-doc</artifactId>
</dependency>
<!-- 接口模块 -->
<dependency>
<groupId>com.muyu</groupId>
<artifactId>cloud-electronic-common</artifactId>
<version>3.6.3</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>6.0.0</version>
</dependency>
</dependencies>
<build>
<finalName>clod-Saas-Service</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- &lt;!&ndash; 加入maven deploy插件当在deploy时忽略些model&ndash;&gt; -->
<!-- <plugin> -->
<!-- <groupId>org.apache.maven.plugins</groupId> -->
<!-- <artifactId>maven-deploy-plugin</artifactId> -->
<!-- <version>3.1.1</version> -->
<!-- <configuration> -->
<!-- <skip>true</skip> -->
<!-- </configuration> -->
<!-- </plugin> -->
</plugins>
</build>
</project>

View File

@ -1,20 +0,0 @@
package com.muyu;
import com.muyu.common.security.annotation.EnableMyFeignClients;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @Author
* @Packagecom.muyu.server.integration
* @Projectcloud-integration
* @nameIntegration
* @Date2024/9/17 9:56
*/
@EnableMyFeignClients
@SpringBootApplication
public class SaasServiceApplication {
public static void main(String[] args) {
SpringApplication.run(SaasServiceApplication.class, args);
}
}

View File

@ -1,2 +0,0 @@
Spring Boot Version: ${spring-boot.version}
Spring Application Name: ${spring.application.name}

View File

@ -1,47 +0,0 @@
# Tomcat
server:
port: 9121
# nacos线上地址
nacos:
addr: 127.0.0.1:8848
user-name: nacos
password: nacos
namespace: eight
# Spring
spring:
application:
# 应用名称
name: cloud-electronic
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}

View File

@ -1,74 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 日志存放路径 -->
<property name="log.path" value="logs/cloud-electronic"/>
<!-- 日志输出格式 -->
<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>

View File

@ -1,81 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 日志存放路径 -->
<property name="log.path" value="logs/cloud-electronic"/>
<!-- 日志输出格式 -->
<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>

View File

@ -1,81 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 日志存放路径 -->
<property name="log.path" value="logs/cloud-electronic"/>
<!-- 日志输出格式 -->
<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>

View File

@ -1,15 +0,0 @@
<?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.server.mapper.CarMiddleGroupMapper">
<select id="selectByIdList" resultType="com.muyu.domain.CarMiddleGroup">
select
*
from
car_middle_group
where
car_fence_id = #{carFenceId};
</select>
</mapper>

View File

@ -1,12 +0,0 @@
<?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.server.mapper.CarMiddleMapper">
<delete id="carDel">
delete
from car_middle
where fence_group_id = #{id} and car_information_id = #{carId};
</delete>
</mapper>

View File

@ -1,124 +0,0 @@
<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>
<description>
cloud-modules-car-gateway车辆网关模块
</description>
<artifactId>cloud-modules-car-gateway</artifactId>
<packaging>jar</packaging>
<name>cloud-modules-car-gateway</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>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>cloud-common-rabbit</artifactId>
</dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>cloud-common-core</artifactId>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>ecs20140526</artifactId>
<version>5.4.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</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>

View File

@ -1,20 +0,0 @@
package com.muyu.car;
import com.muyu.common.security.annotation.EnableMyFeignClients;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @Author
* @Packagecom.muyu.car
* @Projectcloud-server-8
* @nameCloudCarGatewayApplication
* @Date2024/9/29 10:50
*/
@EnableMyFeignClients
@SpringBootApplication
public class CloudCarGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(CloudCarGatewayApplication.class, args);
}
}

View File

@ -1,50 +0,0 @@
package com.muyu.car;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
public class MqttPublishSample {
public static void main(String[] args) {
String topic = "vehicle";
String content = "Message from MqttPublishSample";
int qos = 2;
String broker = "tcp://120.55.62.0:1883";
String clientId = "JavaSample";
try {
// 第三个参数为空,默认持久化策略
MqttClient sampleClient = new MqttClient(broker, clientId);
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setCleanSession(true);
System.out.println("Connecting to broker: "+broker);
sampleClient.connect(connOpts);
sampleClient.subscribe(topic,0);
sampleClient.setCallback(new MqttCallback() {
// 连接丢失
@Override
public void connectionLost(Throwable throwable) {
}
// 连接成功
@Override
public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
System.out.println(new String(mqttMessage.getPayload()));
}
// 接收信息
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
}
});
} catch(MqttException me) {
System.out.println("reason "+me.getReasonCode());
System.out.println("msg "+me.getMessage());
System.out.println("loc "+me.getLocalizedMessage());
System.out.println("cause "+me.getCause());
System.out.println("excep "+me);
me.printStackTrace();
}
}
}

View File

@ -1,55 +0,0 @@
package com.muyu.car.domain.api.req;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
*
* @Author
* @Packagecom.muyu.car.domain.api.req
* @Projectcloud-server-8
* @nameVehicleConnectionReq
* @Date2024/10/2 4:12
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class VehicleConnectionReq {
/**
* {
* "vehicleVin": "VIN1234567894",
* "timestamp": "11111",
* "username": "你好",
* "nonce": "33"
* }
*/
/**
* vin
*/
@JSONField(name = "vehicleVin")
private String vehicleVin;
/**
*
*/
private String timestamp;
/**
*
*/
@JSONField(name = "username")
private String username;
/**
*
*/
private String nonce;
/**
*
*/
private String password;
}

View File

@ -1,35 +0,0 @@
package com.muyu.car.domain.example;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
*
* @Author
* @Packagecom.muyu.car.domain
* @Projectcloud-server-8
* @nameExampleInformation
* @Date2024/9/29 10:01
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ExampleInformation {
/**
* ID
*/
private String InstanceId;
/**
* IP
*/
private String IpAddress;
/**
*
*/
private String status;
}

View File

@ -1,30 +0,0 @@
package com.muyu.car.domain.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author
* @Packagecom.muyu.car.domain.model
* @Projectcloud-server-8
* @nameMqttServerModel
* @Date2024/10/7 6:40
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MqttServerModel {
/**
* MQTT
*/
private String broker;
/**
* MQTT
*/
private String topic;
}

View File

@ -1,86 +0,0 @@
package com.muyu.car.domain.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author
* @Packagecom.muyu.car.domain.model
* @Projectcloud-server-8
* @nameVehicle
* @Date2024/10/6 10:33
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class VehicleInformation {
/**
* ID
*/
private String carInformationId ;
/**
* VIN
*/
private String carInformationVIN ;
/**
*
*/
private String carInformationLicensePlate ;
/**
*
*/
private String carInformationBrand ;
/**
*
*/
private String carInformationColor ;
/**
*
*/
private String carInformationDriver ;
/**
*
*/
private String carInformationExamineEnddata ;
/**
*
*/
private String carInformationMotorManufacturer ;
/**
*
*/
private String carInformationMotorModel ;
/**
*
*/
private String carInformationBatteryManufacturer ;
/**
*
*/
private String carInformationBatteryModel ;
/**
* ID
*/
private String carInformationFence ;
/**
* ID
*/
private String carInformationType ;
/**
* (0 1 )
*/
private String carInformationFocus ;
/**
* id
*/
private String carStrategyId ;
/**
* (1.线 2.线 3. 4. 5.)
*/
private String carInformationState ;
}

View File

@ -1,51 +0,0 @@
package com.muyu.car.domain.model.properties;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author
* @Packagecom.muyu.car.domain.model.properties
* @Projectcloud-server-8
* @nameMqttProperties
* @Date2024/10/6 8:24
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MqttProperties {
/**
*
*/
private String broker;
/**
*
*/
private String topic;
/**
*
*/
private String username;
/**
*
*/
private String password;
/**
* ID
*/
private String clientId;
/**
*
*/
private int qos = 0;
}

View File

@ -1,39 +0,0 @@
package com.muyu.car.domain.model.properties;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @Author
* @Packagecom.muyu.car.domain.model.properties
* @Projectcloud-server-8
* @nameMqttServerModel
* @Date2024/10/6 8:25
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MqttServerModel {
private static final Logger log = LoggerFactory.getLogger(MqttServerModel.class);
/**
* MQTT
*/
private String broker;
/**
* MQTT
*/
private String topic;
public String getBroker () {
log.info("broker: {}", broker);
return broker.contains("tcp://") ? broker : "tcp://" + broker + ":1883";
}
}

View File

@ -1,35 +0,0 @@
package com.muyu.car.gateway.controller;
import com.muyu.car.domain.api.req.VehicleConnectionReq;
import com.muyu.car.domain.model.MqttServerModel;
import com.muyu.car.domain.model.VehicleInformation;
import com.muyu.car.gateway.service.VehicleInformationService;
import com.muyu.common.core.domain.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
*
* @Author
* @Packagecom.muyu.car.gateway.controller
* @Projectcloud-server-8
* @nameVehicleInformationController
* @Date2024/10/6 2:39
*/
@RestController
@RequestMapping("/verify")
public class VehicleInformationController {
@Autowired
private VehicleInformationService vehicleInformationService;
@PostMapping("/vehicleConnection")
public Result<MqttServerModel> getVehicleData(
@Validated @RequestBody VehicleConnectionReq vehicleConnectionReq
) {
return Result.success(vehicleInformationService.getVehicleData(vehicleConnectionReq));
}
}

View File

@ -1,25 +0,0 @@
package com.muyu.car.gateway.controller;
import com.muyu.car.domain.model.VehicleInformation;
import com.muyu.car.gateway.service.VehicleInstanceService;
import com.muyu.common.core.domain.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
*
* @Author
* @Packagecom.muyu.car.gateway.controller
* @Projectcloud-server-8
* @nameVehicleInformation
* @Date2024/10/4 9:40
*/
@RestController
@RequestMapping("/vehicle")
public class VehicleInstanceController {
@Autowired private VehicleInstanceService vehicleInstanceService;
}

View File

@ -1,53 +0,0 @@
package com.muyu.car.gateway.mq;
import lombok.extern.log4j.Log4j2;
import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
/**
* @Author
* @Packagecom.muyu.car.gateway.mq
* @Projectcloud-server-8
* @nameCreateExchange
* @Date2024/10/7 8:53
*/
@Log4j2
@Component
public class CreateExchange implements ApplicationRunner {
@Autowired
private ConnectionFactory connectionFactory;
@Override
public void run(ApplicationArguments args) {
log.info("=====>开始创建交换机");
try {
RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
// 创建Fanout类型的交换机
FanoutExchange exchange = new FanoutExchange("ONLINE_EXCHANGE", true, false);
rabbitAdmin.declareExchange(exchange);
// 创建队列
Queue queue = new Queue("GO_ONLINE", true, false, false);
rabbitAdmin.declareQueue(queue);
// Fanout交换机绑定
rabbitAdmin.declareBinding(BindingBuilder.bind(queue).to(exchange));
log.info("=====>交换机创建成功");
log.info("=====>队列创建成功并绑定到交换机");
}catch (Exception e) {
log.info(e.getMessage());
}
}
}

View File

@ -1,17 +0,0 @@
package com.muyu.car.gateway.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.car.domain.api.req.VehicleConnectionReq;
import com.muyu.car.domain.model.MqttServerModel;
import com.muyu.car.domain.model.VehicleInformation;
/**
* @Author
* @Packagecom.muyu.car.gateway.service
* @Projectcloud-server-8
* @nameVehicleInformationService
* @Date2024/10/6 2:40
*/
public interface VehicleInformationService{
MqttServerModel getVehicleData(VehicleConnectionReq vehicleConnectionReq);
}

View File

@ -1,13 +0,0 @@
package com.muyu.car.gateway.service;
import com.muyu.car.domain.model.VehicleInformation;
/**
* @Author
* @Packagecom.muyu.car.gateway.service
* @Projectcloud-server-8
* @nameVehicleInstanceService
* @Date2024/10/6 10:05
*/
public interface VehicleInstanceService {
}

View File

@ -1,44 +0,0 @@
package com.muyu.car.gateway.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.car.domain.api.req.VehicleConnectionReq;
import com.muyu.car.domain.model.MqttServerModel;
import com.muyu.car.domain.model.VehicleInformation;
import com.muyu.car.gateway.service.VehicleInformationService;
import com.muyu.car.mapper.VehicleInformationMapper;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Author
* @Packagecom.muyu.car.gateway.service.impl
* @Projectcloud-server-8
* @nameVehicleInformationServiceImpl
* @Date2024/10/6 2:41
*/
@Log4j2
@Service
public class VehicleInformationServiceImpl implements VehicleInformationService{
@Autowired private VehicleInformationMapper vehicleInformationMapper;
@Override
public MqttServerModel getVehicleData(VehicleConnectionReq vehicleConnectionReq) {
log.info("车辆连接请求:[{}]",vehicleConnectionReq);
vehicleConnectionReq.setPassword(vehicleConnectionReq.getVehicleVin()+vehicleConnectionReq.getTimestamp()+vehicleConnectionReq.getNonce());
List<String> selectVehicle =vehicleInformationMapper.selectVehicleVin(vehicleConnectionReq.getVehicleVin());
if(selectVehicle.isEmpty()) {
vehicleInformationMapper.addVehicleConnection(vehicleConnectionReq);
log.info("车辆预上线成功");
}else {
log.info("车辆无法重复预上线");
}
return new MqttServerModel("tcp://121.199.172.3:1883","vehicle");
}
}

View File

@ -1,18 +0,0 @@
package com.muyu.car.gateway.service.impl;
import com.muyu.car.domain.model.VehicleInformation;
import com.muyu.car.gateway.service.VehicleInstanceService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
/**
* @Author
* @Packagecom.muyu.car.gateway.service.impl
* @Projectcloud-server-8
* @nameVehicleInstanceServceImpl
* @Date2024/10/6 10:06
*/
@Log4j2
@Service
public class VehicleInstanceServiceImpl implements VehicleInstanceService {
}

View File

@ -1,36 +0,0 @@
package com.muyu.car.instance;
import org.springframework.stereotype.Component;
/**
* AccessKey ID Secret
* @Author
* @Packagecom.muyu.car.domain
* @Projectcloud-server-8
* @nameCreateClient
* @Date2024/9/29 10:41
*/
@Component
public class CreateClient {
/**
* <b>description</b> :
* <p>使AK&amp;SKClient</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.ecs20140526.Client createClient() throws Exception {
// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
// 建议使用更安全的 STS 方式更多鉴权访问方式请参见https://help.aliyun.com/document_detail/378657.html。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId("LTAI5tFtQk1KbwRBXM5pHVWw")
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret("GLByUZqUqgR600eTpGmfb52ZT93mu9");
// Endpoint 请参考 https://api.aliyun.com/product/Ecs
config.endpoint = "ecs-cn-hangzhou.aliyuncs.com";
return new com.aliyun.ecs20140526.Client(config);
}
}

View File

@ -1,102 +0,0 @@
package com.muyu.car.instance;
import com.aliyun.ecs20140526.models.DescribeInstancesRequest;
import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
import com.aliyun.ecs20140526.models.DescribeInstancesResponseBody;
import com.aliyun.ecs20140526.models.RunInstancesResponseBody;
import com.aliyun.tea.*;
import com.aliyun.teautil.models.RuntimeOptions;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import java.util.ArrayList;
import java.util.Set;
/**
*
* @Author
* @Packagecom.muyu.car.domain
* @Projectcloud-server-8
* @nameDelInstance
* @Date2024/9/29 10:42
*/
@Log4j2
@Component
@Tag(name = "程序停止删除实例")
public class DelInstance implements DisposableBean {
public static void delInstance() throws Exception {
// 创建ECS客户端对象用于后续调用ECS相关API
com.aliyun.ecs20140526.Client client = CreateClient.createClient();
DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest()
.setRegionId("cn-hangzhou");
//创建运行时选择对象,用于配置运行时的选项参数
RuntimeOptions runtimeOptions = new RuntimeOptions();
//获取实例列表
DescribeInstancesResponse describeInstancesResponse = client.describeInstancesWithOptions(describeInstancesRequest, runtimeOptions);
//提取实例ID集合
ArrayList<String> list = new ArrayList<>();
DescribeInstancesResponseBody body = describeInstancesResponse.getBody();
for (DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstance instance : body.getInstances().getInstance()) {
list.add(instance.getInstanceId());
}
log.info("Instance IDs: " + list);
// 创建删除实例请求对象,并设置请求参数
com.aliyun.ecs20140526.models.DeleteInstancesRequest deleteInstancesRequest = new com.aliyun.ecs20140526.models.DeleteInstancesRequest()
//设置地域ID指定删除实例的地域
.setRegionId("cn-hangzhou")
// 设置DryRun为true,用于验证请求是否可以成功,但不实际执行删除操作
.setDryRun(false)
// 设置Force为true表示即使实例有正在运行的任务也强制删除实例
.setForce(true)
// 设置TerminateSubscription为true表示删除按订阅付费的实例时终止订阅
.setTerminateSubscription(true)
.setInstanceId(list);
//创建运行时选项对象,用于配置运行时的选项参数
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 复制代码运行请自行打印 API 的返回值
client.deleteInstancesWithOptions(deleteInstancesRequest, runtime);
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
log.info(error.getMessage());
// 诊断地址
log.info(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
log.info(error.getMessage());
// 诊断地址
log.info(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
@Override
public void destroy() throws Exception {
log.info("===============>开始执行删除实例方法");
delInstance();
// 连接到Redis服务器
Jedis jedis = new Jedis("159.75.188.178", 6379);
// 指定要删除的文件夹(命名空间)
String namespace = "InstanceIdKey:";
// 获取所有以namespace为前缀的键
Set<String> keys = jedis.keys(namespace + "*");
// 如果存在键,则删除它们
if (keys.size() > 0) {
jedis.del(keys.toArray(new String[0]));
}
// 关闭连接
jedis.close();
}
}

View File

@ -1,121 +0,0 @@
package com.muyu.car.instance;
import com.aliyun.ecs20140526.models.*;
import com.aliyun.tea.TeaException;
import com.muyu.car.domain.example.ExampleInformation;
import com.muyu.common.redis.service.RedisService;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
*
* @Author
* @Packagecom.muyu.car.domain
* @Projectcloud-server-8
* @nameGenerateInstance
* @Date2024/9/29 10:42
*/
@Component
@Log4j2
@Tag(name = "启动时创建实例")
public class GenerateInstance implements ApplicationRunner {
@Autowired private RedisService redisService;
/**
*
* @throws Exception
*/
public static List<String> generateInstance() throws Exception {
// 创建ECS客户端对象用于后续调用ECS相关API
com.aliyun.ecs20140526.Client client = CreateClient.createClient();
com.aliyun.ecs20140526.models.RunInstancesRequest.RunInstancesRequestSystemDisk systemDisk = new com.aliyun.ecs20140526.models.RunInstancesRequest.RunInstancesRequestSystemDisk()
.setSize("40")
.setCategory("cloud_essd");
com.aliyun.ecs20140526.models.RunInstancesRequest runInstancesRequest = new com.aliyun.ecs20140526.models.RunInstancesRequest()
// 设置地域ID
.setRegionId("cn-hangzhou")
// 设置镜像ID
.setImageId("m-bp1hkxfctk751s62jqhq")
// 设置实例类型
.setInstanceType("ecs.t6-c1m1.large")
// 设置安全组ID
.setSecurityGroupId("sg-bp1a7fk8js5pn3fw9p2m")
// 设置虚拟交换机ID
.setVSwitchId("vsw-bp193np7r01vssqxhh24e")
// 设置实例名称
.setInstanceName("server-mqtt")
// 设置实例付费类型为后付费按量付费
.setInstanceChargeType("PostPaid")
// 设置互联网最大出带宽为1 Mbps
.setInternetMaxBandwidthOut(1)
// 设置系统盘配置
.setSystemDisk(systemDisk)
// 设置主机名
.setHostName("root")
// 设置实例密码
.setPassword("EightGroup123.")
// 设置创建实例的数量
.setAmount(1);
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 复制代码运行请自行打印 API 的返回值
RunInstancesResponse runInstancesResponse = client.runInstancesWithOptions(runInstancesRequest, runtime);
// 获取body返回值对象
RunInstancesResponseBody body = runInstancesResponse.getBody();
ArrayList<String> list = new ArrayList<>();
// 得到实例ID数组
for (String instance : body.getInstanceIdSets().getInstanceIdSet()) {
list.add(instance);
}
log.info("实例ID:{}",list);
return list;
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
log.info(error.getMessage());
// 诊断地址
log.info(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
log.info(error.getMessage());
// 诊断地址
log.info(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
return null;
}
@Override
public void run(ApplicationArguments args) throws Exception {
List<String> InstanceIds = generateInstance();
log.info("创建实例成功");
log.info("正在加载实例");
Thread.sleep(30000);
List<ExampleInformation> exampleInformations = QueryInstance.queryInstance(InstanceIds);
log.info("加载成功");
for (ExampleInformation exampleInformation : exampleInformations) {
redisService.setCacheObject("InstanceIdKey:"+exampleInformation.getInstanceId(),exampleInformation);
}
// for (ExampleInformation exampleInformation : exampleInformations) {
// ExampleInformation cacheObject = redisService.getCacheObject(exampleInformation.getInstanceId());
// log.info(cacheObject);
// }
log.info("实例信息:{}",exampleInformations);
}
}

View File

@ -1,69 +0,0 @@
package com.muyu.car.instance;
import com.alibaba.fastjson.JSON;
import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
import com.aliyun.ecs20140526.models.DescribeInstancesResponseBody;
import com.aliyun.tea.TeaException;
import com.muyu.car.domain.example.ExampleInformation;
import lombok.extern.log4j.Log4j2;
import java.util.ArrayList;
import java.util.List;
/**
*
* @Author
* @Packagecom.muyu.car.instance
* @Projectcloud-server-8
* @nameQueryInstance
* @Date2024/9/29 8:58
*/
@Log4j2
public class QueryInstance {
public static List<ExampleInformation> queryInstance(List<String> instanceIds) throws Exception {
com.aliyun.ecs20140526.Client client = CreateClient.createClient();
com.aliyun.ecs20140526.models.DescribeInstancesRequest describeInstancesRequest = new com.aliyun.ecs20140526.models.DescribeInstancesRequest()
.setInstanceIds(JSON.toJSONString(instanceIds))
.setRegionId("cn-hangzhou");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 复制代码运行请自行打印 API 的返回值
DescribeInstancesResponse describeInstancesResponse = client.describeInstancesWithOptions(describeInstancesRequest, runtime);
DescribeInstancesResponseBody body = describeInstancesResponse.getBody();
ArrayList<ExampleInformation> exampleInformations = new ArrayList<>();
for (DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstance instance : body.getInstances().getInstance()){
ExampleInformation exampleInformation = new ExampleInformation();
exampleInformation.setInstanceId(instance.getInstanceId());
log.info("实例ID:{}",exampleInformation.getInstanceId());
exampleInformation.setStatus(instance.getStatus());
log.info("实例状态:{}",exampleInformation.getStatus());
exampleInformation.setIpAddress(String.valueOf(instance.getPublicIpAddress().getIpAddress()));
log.info("实例IP:{}",exampleInformation.getIpAddress());
exampleInformations.add(exampleInformation);
}
log.info("实例信息:{}",exampleInformations);
return exampleInformations;
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
return null;
}
}

View File

@ -1,21 +0,0 @@
package com.muyu.car.mapper;
import com.muyu.car.domain.api.req.VehicleConnectionReq;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Author
* @Packagecom.muyu.car.mapper
* @Projectcloud-server-8
* @nameVehicleInformationMapper
* @Date2024/10/6 2:19
*/
@Mapper
public interface VehicleInformationMapper {
void addVehicleConnection(VehicleConnectionReq vehicleConnectionReq);
List<String> selectVehicleVin(@Param("vehicleVin") String vehicleVin);
}

View File

@ -1,71 +0,0 @@
package com.muyu.car.util;
import lombok.extern.log4j.Log4j2;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.SecureRandom;
@Log4j2
public class MD5Util {
private static final Integer SALT_LENGTH = 12;
/**
* byte16
* @param b
* @return
*/
public static String byteToHexString(byte[] b) {
StringBuilder hexString = new StringBuilder();
for (byte value : b) {
String hex = Integer.toHexString(value & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
hexString.append(hex.toUpperCase());
}
return hexString.toString();
}
/**
*
* @param str
* @return
*/
public static String encrypted (String str) {
try {
// 声明加密后的口令数组变量
byte[] pwd = null;
// 随机数生成器
SecureRandom random = new SecureRandom();
// 声明盐数组变量
byte[] salt = new byte[SALT_LENGTH];
// 将随机数放入盐变量中
random.nextBytes(salt);
// 声明消息摘要对象
MessageDigest md = null;
// 创建消息摘要
md = MessageDigest.getInstance("MD5");
// 将盐数据传入消息摘要对象
md.update(salt);
// 将口令的数据传给消息摘要对象
md.update(str.getBytes(StandardCharsets.UTF_8));
// 获得消息摘要的字节数组
byte[] digest = md.digest();
// 因为要在口令的字节数组中存放盐,所以加上盐的字节长度
pwd = new byte[digest.length + SALT_LENGTH];
// 将盐的字节拷贝到生成的加密口令字节数组的前12个字节以便在验证口令时取出盐
System.arraycopy(salt, 0, pwd, 0, SALT_LENGTH);
// 将消息摘要拷贝到加密口令字节数组从第13个字节开始的字节
System.arraycopy(digest, 0, pwd, SALT_LENGTH, digest.length);
// 将字节数组格式加密后的口令转化为16进制字符串格式的口令
return byteToHexString(pwd);
}catch (Exception exception){
log.info("md5加密失败[{}]", str, exception);
return str;
}
}
}

View File

@ -1,2 +0,0 @@
Spring Boot Version: ${spring-boot.version}
Spring Application Name: ${spring.application.name}

View File

@ -1,74 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 日志存放路径 -->
<property name="log.path" value="logs/cloud-car-gateway"/>
<!-- 日志输出格式 -->
<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>

View File

@ -1,81 +0,0 @@
<?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>

View File

@ -1,81 +0,0 @@
<?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>

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.@//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.muyu.car.mapper.VehicleInformationMapper">
<insert id="addVehicleConnection">
INSERT INTO `vehicle_connection` (`vin`, `timestamp`, `username`, `nonce`,`password`) VALUES (#{vehicleVin}, #{timestamp}, #{username}, #{nonce},#{password});
</insert>
<select id="selectVehicleVin" resultType="java.lang.String">
select
`vin`, `timestamp`, `username`, `nonce`,`password`
from
`vehicle_connection`
where `vin` = #{vehicleVin}
</select>
</mapper>

View File

@ -4,7 +4,7 @@ server:
# nacos线上地址
nacos:
addr: 127.0.0.1:8848
addr: 159.75.188.178:8848
user-name: nacos
password: nacos
namespace: eight

View File

@ -30,10 +30,5 @@
<artifactId>cloud-modules-enterprise-common</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>cloud-auth</artifactId>
<version>3.6.3</version>
</dependency>
</dependencies>
</project>

View File

@ -1,18 +1,17 @@
package com.muyu.server.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.domain.*;
import com.muyu.domain.req.FaultConditionAddReq;
import com.muyu.domain.req.FaultConditionListReq;
import com.muyu.domain.resp.FaultConditionListResp;
import com.muyu.domain.resp.FaultConditionTotalListResp;
import com.muyu.domain.resp.FaultLogListResp;
import com.muyu.enterprise.cache.faultCode.VehicleCacheFaultCodeAddService;
import com.muyu.server.mapper.FaultConditionMapper;
import com.muyu.server.service.FaultConditionService;
import com.muyu.server.util.ObtainRootLogin;
import com.muyu.server.service.*;
import com.muyu.server.util.RunCarCondition;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
@ -38,7 +37,12 @@ public class FaultConditionServiceImpl
@Autowired
private FaultConditionMapper faultConditionMapper;
private final RunCarCondition runCarCondition;
private final VehicleCacheFaultCodeAddService vehicleCacheFaultCodeAddService;
private final CarInformationService carInformationService;
private final CarFenceService carFenceService;
private final WarnStrategyService warnStrategyService;
private final FaultCodeService faultCodeService;
private final FaultLabelService faultLabelService;
@ -91,7 +95,8 @@ public class FaultConditionServiceImpl
@Override
public List<FaultCondition> saveFaultConditionList() {
return this.list().stream().map(FaultCondition::faultConditionBuilder).toList();
List<FaultCondition> list = this.list();
return list;
}
/**
@ -99,7 +104,34 @@ public class FaultConditionServiceImpl
*/
@Override
public void RunCarCondition() {
runCarCondition.text();
List<FaultCondition> list = this.saveFaultConditionList();
text(list, carInformationService, carFenceService, warnStrategyService, faultCodeService, faultLabelService, vehicleCacheFaultCodeAddService);
}
public static void text(List<FaultCondition> list, CarInformationService carInformationService, CarFenceService carFenceService, WarnStrategyService warnStrategyService, FaultCodeService faultCodeService, FaultLabelService faultLabelService, VehicleCacheFaultCodeAddService vehicleCacheFaultCodeAddService) {
list.forEach(faultCondition -> {
List<CarInformation> carInformationList = carInformationService.selectCarInformation(faultCondition.getCarTypeId());
carInformationList.forEach(carInformation -> {
FaultCodeCache faultCodeCache = new FaultCodeCache();
if (StringUtils.isNotNull(carInformation.getCarInformationFence())){
faultCodeCache.setCarFences(carFenceService.CarFenceList(carInformation.getCarInformationFence()));
}
if (StringUtils.isNotNull(carInformation.getCarInformationState())) {
faultCodeCache.setWarnStrategies(warnStrategyService
.selectWarnStrategyById(Long.valueOf(carInformation.getCarInformationState())));
}
if (StringUtils.isNotNull(faultCondition.getMessageTypeId())) {
faultCodeCache.setFaultCode(faultCodeService.faultCodeList(faultCondition.getMessageTypeId()));
faultCodeCache.setFaultLabels(faultLabelService.faultLabelList(faultCondition.getMessageTypeId()));
}
ArrayList<CarInformation> carInformations = new ArrayList<>();
carInformations.add(carInformation);
faultCodeCache.setCarInformation(carInformations);
vehicleCacheFaultCodeAddService.put(vehicleCacheFaultCodeAddService
.keyPre()+carInformation
.getCarInformationVIN(), faultCodeCache);
});
});
}
// private void faultCache(long messageTypeId, Long faulttypeId,String faultcodeNumber) {

View File

@ -24,8 +24,6 @@ import java.util.List;
public class FirmPermissionServiceImpl extends ServiceImpl<FirmPermissionMapper, FirmPermission> implements FirmPermissionService {
@Autowired
private FirmManageService firmManageService;
@Autowired
private FirmPermissionService firmPermissionService;
/**
*
* @param firmUpdPermissionReq

View File

@ -4,16 +4,16 @@ import com.muyu.common.core.utils.StringUtils;
import com.muyu.domain.*;
import com.muyu.enterprise.cache.faultCode.VehicleCacheFaultCodeAddService;
import com.muyu.server.service.*;
import com.muyu.server.service.impl.FaultConditionServiceImpl;
import lombok.AllArgsConstructor;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;
/**
* redis
* @Authoryang
* @Packagecom.muyu.server.util
* @Projectcloud-server-8
@ -22,7 +22,7 @@ import java.util.List;
*/
@Component
@AllArgsConstructor
public class RunCarCondition implements ApplicationRunner {
public class RunCarCondition {
private final VehicleCacheFaultCodeAddService vehicleCacheFaultCodeAddService;
private final FaultConditionService faultConditionService;
@ -32,35 +32,9 @@ public class RunCarCondition implements ApplicationRunner {
private final FaultCodeService faultCodeService;
private final FaultLabelService faultLabelService;
@Override
public void run(ApplicationArguments args) throws Exception {
text();
}
public void text() {
@GetMapping("text")
public void runCarCondition(){
List<FaultCondition> list = faultConditionService.saveFaultConditionList();
list.forEach(faultCondition -> {
List<CarInformation> carInformationList = carInformationService.selectCarInformation(faultCondition.getCarTypeId());
carInformationList.forEach(carInformation -> {
FaultCodeCache faultCodeCache = new FaultCodeCache();
if (StringUtils.isNotNull(carInformation.getCarInformationFence())){
faultCodeCache.setCarFences(carFenceService.CarFenceList(carInformation.getCarInformationFence()));
}
if (StringUtils.isNotNull(carInformation.getCarInformationState())) {
faultCodeCache.setWarnStrategies(warnStrategyService
.selectWarnStrategyById(Long.valueOf(carInformation.getCarInformationState())));
}
if (StringUtils.isNotNull(faultCondition.getMessageTypeId())) {
faultCodeCache.setFaultCode(faultCodeService.faultCodeList(faultCondition.getMessageTypeId()));
faultCodeCache.setFaultLabels(faultLabelService.faultLabelList(faultCondition.getMessageTypeId()));
}
ArrayList<CarInformation> carInformations = new ArrayList<>();
carInformations.add(carInformation);
faultCodeCache.setCarInformation(carInformations);
vehicleCacheFaultCodeAddService.put(vehicleCacheFaultCodeAddService
.keyPre()+carInformation
.getCarInformationVIN(), faultCodeCache);
});
});
FaultConditionServiceImpl.text(list, carInformationService, carFenceService, warnStrategyService, faultCodeService, faultLabelService, vehicleCacheFaultCodeAddService);
}
}

View File

@ -4,10 +4,10 @@ server:
# nacos线上地址
nacos:
addr: 127.0.0.1:8848
addr: 159.75.188.178:8848
user-name: nacos
password: nacos
namespace: psr
namespace: eight
# Spring
spring:

View File

@ -4,7 +4,7 @@ server:
# nacos线上地址
nacos:
addr: 127.0.0.1:8848
addr: 159.75.188.178:8848
user-name: nacos
password: nacos
namespace: eight

View File

@ -4,7 +4,7 @@ server:
# nacos线上地址
nacos:
addr: 127.0.0.1:8848
addr: 159.75.188.178:8848
user-name: nacos
password: nacos
namespace: eight

View File

@ -15,7 +15,6 @@
<module>cloud-modules-file</module>
<module>cloud-modules-carData</module>
<module>cloud-modules-protocolparsing</module>
<module>cloud-modules-car-gateway</module>
</modules>
<artifactId>cloud-modules</artifactId>

View File

@ -4,7 +4,7 @@ server:
# nacos线上地址
nacos:
addr: 127.0.0.1:8848
addr: 159.75.188.178:8848
user-name: nacos
password: nacos
namespace: eight

29
node_modules/.package-lock.json generated vendored
View File

@ -1,29 +0,0 @@
{
"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"
}
}
}
}

419
node_modules/echarts/KEYS generated vendored
View File

@ -1,419 +0,0 @@
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-----
mQINBFxJWEYBEADYzZRcG+WIllHo8PloMv9pX2QZxmZiVJzM7Prgg8KlWfHnO68/
7Et//hMA2zexJWweZwM0ffmjvcIIEre23De6KaA2htM/54aPoBweDAOBi34RsdR9
kpN0RvipvJMMZKGB0tDSB3mLhWaiApDGMsysfJAgTaGsIISrC2+xLO/+HxgoEAIX
a0BTJ+P3cOLPghBBaRtyKNWJjJ2e4XzlVM0T4bM06QmzC0qWTSufKqk1XAZTSOGU
LXYESonSu/+kL2TCsKi90THNX69a9SBx3DAohbb5WKjXkYistSQi9S33jqZMIc7n
I1kG1x39YxZiQwwszwbfa3/+qE3X0Qjp2k3fD7wa+qDnSpHTchqy8d71EN0wU6S/
9vEiJ2e+gxN6WZetK9wl90P70Iu0rvLqSu+5EdkenvIbh6i4CR+Cer1Sky2z7rEY
vmEjFNjV2ktvbu83RDofxp4ERSbZOwq8VMOWqj6Ft9mIWfw1OAoSkLCRchYFR1ue
r+e3FuF01KlCXjTV4t24F7l5QO/bwexnmYuVTlSEo4PVZLJAv/UYSP0ngie5DawL
z2RDCuRrROgtzcf84SaRxwcPNQ0h6EZlKZ4NFL7nl4rwbDsyZRdBqzQ5JPm6dbGe
CZXCBA84ivcnK845flcsl7ITNjcfsLbeN9s6FMnYZgOHZh/ucmw2dL+5vQARAQAB
tDFPdmlsaWEgKENPREUgU0lHTklORyBLRVkpIDxvdmlsaWF6aGFuZ0BnbWFpbC5j
b20+iQJOBBMBCAA4FiEEFoP70j9t02wOUiI1B9ePd30sDCcFAlxJWEYCGwMFCwkI
BwIGFQoJCAsCBBYCAwECHgECF4AACgkQB9ePd30sDCcgHA//be3mdnRU+jYCP3VU
l/pcYnbxoIfAhf1Z2orVcN3/E6v2wDYvbvcV7EX/cqwMXBc0/CEVisGQ3zX5CM4/
C/vwjAsPNPWsX8iyE/Mui/Ktl9tZqQ3/8hTOHe5RQIn0VQ5wIYmyh3Q42BI4vKK3
BodV9PwONdRhQVJ15x1fp59wiPTqflcXJ0qdGml3JY4ULLFYh63MBV4as6pg/Qtb
1enZmw8/Bgg6mhY6HiBI+v+8wAwdatwYuG33JdzhoPVbjsnovqAE+kMvOuxmVbK/
q5dwdwFULbyHzojNAj7zg1zjtksawP8Uspc02JHr16pW3u48E2/uk6XCkTpFDJ09
xqwtZyEGSobl/9BaDuidXQ9UDsrOIYuvBXO53vlVv1nwzyF7qUhNRNn1HdzIbEiV
16CaYT5Soy4Xh5sFTFoIg0g/E8JquSgIEJN/NutqbQOHO4ldMxaDEgFp7dRJ/tqo
CEJgahC/D16efbIUP2gVScYsJK3VYNjuEfnTu2qiR7XDXosG0zGOMGsr4xCuSx8y
mwtrqRZdl4wfaHi2/QojJGAXwd1Q9WNBxYKuE31amAo7AxGKZ8QLZ9m0RwitG912
yP7gsw9k/TA195GJiQ5W1qNTHa4gKXhzFtPqg7s9xhJOkb+GOk6tOCWzts1IJSXa
oyGerp3bGP4Ho49nipEFjeiUKgW5Ag0EXElYRgEQAMbeZQMWRo9h6RgGm7eLCfz2
K9Ro9yL0U0Jz8SmNz2I7YoYqg4idPV7D0gBym/502QsalQc427vE4QtJGlNPx8yH
uXIKD0u9sGadO3wkz3WmPqyVMlAgdzjB9ddoWjeQDYTvJLO1eo4LtVUoSydoOs67
bBNr9Wi2hIso60+cZGxczI+dTkqvgd+nSrhzG1+N1NPjpGqLUSvjWEZiu4NT1oVd
4f8C6SpQNkgUbliomLE9Zv8Wkcj8RDU5je+dU8r4fKQy1GtDVGW89QXGKALwTg4F
4/d+/qbF/ZhfZk3e6dxJV4Slmb+IKWUd5dcEYwXIdYXJuQu84CnEtsnQDsIUCc5V
Qfk1E4SqEmc0gWsmTlsPKF51VdeDpbqQShGgt+xM65wCL7/JASnuEwr1Jt2pPRDq
VF9s4APQJi/neuJh1A6RlHU6PFcPXmqjsglMdbfKdc0dzoOcc4OcSFPdAlX935L8
Tlwrp2dy2ARNTSdCvbXx4Lj+Ru7tIUTjDqIFzRLBdppRU/NO6SpNMoIKkOwrjFYd
H8nV9z6+nYHfJNR/FfT8LLx7ac/trYwDYWMJhk/h9taOszZ5OpQM4LOrWwyg2HA8
80H95TcQ0c1/dp5OBfPSNfse75yBJrW0PwtQA3++38PHQQZVhO7J3Ha2Y9/MmLqU
Ip+rhd38hfkHlkrwCr7tABEBAAGJAjYEGAEIACAWIQQWg/vSP23TbA5SIjUH1493
fSwMJwUCXElYRgIbDAAKCRAH1493fSwMJ4GVD/9AS8YwflROUAodGe7jBHZ41oye
4I8AX8iTP1qxww8ydeCBVCz3n3lvEHHP8JfVB0aJwiezUtt/1uV0bTFt9ycxyJS1
5eIefOVN0wFEsj4pgQfBfSWxI0Yd97m+W1xg5h+aAN9W1MNH6rb1ktHCebW709Vf
Bs+NfktKww98M134cQlmJSo1pBQEBzKaE5KEvLAiafluAPTkvafZfe+35QQdJAXx
iLE/ZNJQ8L9lBYZaA5mM/NKNzeEqeSTwfvcIonY5sD2EsgBU/ux6QzjRV5EmteJr
eg+bCWJnbVvZY/2LVru8NKDgfhTSMN0ocDLaWKW6aQO36TequQNdD09wasdSpQmV
GoCydtdCVoetGdGm8SZvi6EUgAWH4eI3Su/19V8sVo3kHhJ1d575NJCFwTPvKAre
s8wgU+7CgTojnMxFmb68p+lLe1qQheyXaa44WQ7d7hmXPIoe3EgMYtMc7tLcKccE
upu7zWG7BNU97kpUw7nmHKalI/1fKEEAYQUmNm9mNVGKjLVNtuG8jw6Zq0vX1tP9
mh+T3SMBEnsdzoQ+E31lIDNYTZaEHxt0XupNdjt+uEfASdrD3+8+jlWVkpO3FlZ0
MhfLdHrk689ty11m+5HlrSU7O1I1wZkt/OlYsZmS1yIpD1hEnOuSjAuqm4D3s+YI
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-----
mQINBF8sDHUBEADScBNW9N9I7tu/ytMLp0XSQbyDO64iRsaAic/dnM4ffcZOl1AZ
fbKTF2jI5ABVIl6mWBx5t8RE5XluyESfnB0au3fa0N1cb9bzjAqPiiTU5l9vF4Np
u0517j8anqPYYk9n0HCVczaBQLavwa7ulUegnMCvO+WkrapkES3PzF/QDmHEh4iC
FnPsayrhYvirg7Gwy6gkfkSZvp2jQIt2O3PQmffW1OsxwCf0uNIf4UrXxZ9gi6hc
O/x1jNNpyfOBJY5es8feIsx+zQu/jZRL5AnLeuqYdODD/IdcT/AsSeFnMkIuYdKl
+S5DL23Rr5W47mCkRglauIOAFXnVd6cc3I0/TB+8+B1XOE7YBcslPytVmnc00Uwf
f09a1WF7gTufCQAizIRShHLqSXA8Gebs42g5CLEC7k4v1Yojmwun5UFDlbxERQgj
00hyDsGYv9Mwk5EokcpB/fyInRU0Niny6kk/siui/nvol0vcqBgwTqRJjfFByX8T
ck11j7f3mUFq4z/PsVU4pQQpGyuiKLDQm7IJPAsJC/+s7aHAuMS/j3lpitM8j26A
3x091RsxjfBrCusxb301rzw6F2g4bxTRueoPv9Ie8OW27uykqTgdnnCSjT5LQcN7
H3dRmfk4UMU+QJTDhIdCzHyMnSGBVmlbbHIMIaoxnqzXFpO1+iGRQs8QcwARAQAB
tC9TaGVuIFlpIChDT0RFIFNJR05JTkcgS0VZXCkgPHNoZW55aUBhcGFjaGUub3Jn
PokCTgQTAQgAOBYhBJS9F4B3ZyFXZSgmdY5EqCSXOCKYBQJfLAx1AhsDBQsJCAcC
BhUKCQgLAgQWAgMBAh4BAheAAAoJEI5EqCSXOCKYVkYP/1n0eL9d5EnDunqxo0dt
HlfxLSx4l+edORXF+q9p0s7x33AktUZxMMNEbeAAgfrtC8sXg8bMa/NWHvmWVND7
Qj8nJYVZ/jJSVwwXImsK6EdP8401UM1X3+z7uWy4KepJZQIVd6j8dxhW4QE74mlx
CLBm9dK5rgxTjcNIKApscBJ6pP2eZBprHNdDW3ttaIMGBfz+nA3IpvH7ADgEkffP
zc9BjiyCuff3q4qW1PnATJFEQCbBAxU13Y8S7pDRhHHDvuo/GNMAoKm8xWb9OzTz
u8KistljvZWD1ZBjYxAYIKDqVyyUeH/aN134QsQyra++FFHkTiyYjpn/roSQm3Ww
eQLXtRK0f12EpDb2pchxSrN3L4wRtzGj3I/u/7z6YXa8nuK29t8CDGTss4kBjDmQ
2uYNAxFq6EylZU6QzaqvQgv/nhSuJFGlSY3v/4Q1MxB5rn68s2jegi/HXUIbFerf
KgeJCN8nUtBiSIzVwMo0HMrrNyR4ZdCJa4bxzHspu6Fck4572AKxB3TNFkLYC0s+
zOQ6b6l0bMgzH4HDj6C0k0+KtikK6Q2U1YXWu1T4MBu8Gq4weGEUDOxc0B1XywA2
BE+cbOpjHi4lK3n1//RjUR+JL90RuD+JGCB8x2d+Ttm/c19S/KjQc8CsJ9JA5x1H
wlHqg7br0XQQrbUedY65S6skuQINBF8sDHUBEAC99I/csLsLcrpNXB2JYh8XmtBc
Vb6aSWCc7kowhdwuqjyXvHMkpy9RZz6hxEkk8XiZC+nrCcrr7DNNFNzh5gx30Ihm
NyZybaawr/vn5O2Oe0BSTwuhIdk1XjpzDtqpcNT2Qui4eRx/OBcyyX9PJvicBfMq
53ZNom/3NTZbsXp70uCV8eC97a7g7T+GymRS1u2x7I/Kp+/w0plG11bXnWg2A0EZ
WHCnmQWBUpqSUW3syfuzqlCFDYWoyVkw2eNtIbhGv9knEKPtU9bewAbo1/2Jk1R2
FVP5B3VvdY2huzQLzbzHB4zhsJCEjYnvzwPZ0WeIYHmTYJEAulTynBdv9GNX9sdM
GNXS/ESTFUQDMXbgDBdwVxZOq1Gzwh+grN3lwpS/5wcsSuNhfEfvx37DyLKNiXMo
5HS/g03kAmmIgH7IWUcM27ZyyKlpxj8ztFFUIdnIUX4biiZCBJnfMuWnNzJM7o/b
T8PVEEM3wuUT5ih7yT4l/j5pV4WmEbgVdWSrbL/H77GuFHwXYiuzDyH1/E23Hedi
crd8g47bV0jL1v0TwT4oHtEkAXIU5Nj2+z+ZKSl5SJ0I2tAy86hCpIn/rmbMmtws
Ce/OHHOu2Mm5KBEK9SyLThMzqYrv5Zux9Xqre+P0LPk/tzxwdG87qKhU0xdPvn6y
rGaC1OFCT3GmidZl2QARAQABiQI2BBgBCAAgFiEElL0XgHdnIVdlKCZ1jkSoJJc4
IpgFAl8sDHUCGwwACgkQjkSoJJc4IphtBw/8DsvdVbaaVqMOe/S66R3zn5M22YKU
AkhQvBQId4rTDUgTiSJ6Ll+Ascr1q2gFupb7iAM4BWAFQji4f8iH51sS9a6I6Oy8
WK4ftFYDyQU0/hgaF2B0+QE0PN3/88ckBlL3KHhzw0ad/Y2Bp6CGGFNwI9xqC7XT
t8Y+XCpv9buC7ZVpE/N/yF+2HvVhW7PG+5oB+Qc+Q/G0RK2QX7unOSqLc2pS/n4v
mBqGc1KAe7iyxOo2Q2G+Q0XTK8g/BUMWACVOuYpOrvteyHJXIYv/VDRu+/pd81G0
i6B063BzuaDRqwNngLOU6lNcDOgom6gWkCfkg1Nbr009rXyADIg/RHPX1TUAaoFn
QH0YDIxWfyDvTJ7FgmLVCnXXc88T1du/ROAq5Y+opD3vcDX+egzbKR+oSGbaf6HL
ASj0haconAOZ7V3sLO9WSITUODzHEUwOuOx+XtaW/JYTm47JeH2r83v+OmBNbAJg
hT5KINI8iBvor3cUYKAor9ib1192ZHgBjPlrFDMntZZCqKyCvRGRktts4VcH09DD
szVC2TEeuxgIMuUi73HebjX+fRefcSIkW30ehXVzN/7Ah1SK9IJc9hzVa2ZspUho
Ias/zRyLSbzHrpCs6KVPLwzOQbyPmXNpjoYuGCq6NX54S7bf8Hn3X8SQmezozLhN
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-----

222
node_modules/echarts/LICENSE generated vendored
View File

@ -1,222 +0,0 @@
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.

5
node_modules/echarts/NOTICE generated vendored
View File

@ -1,5 +0,0 @@
Apache ECharts
Copyright 2017-2024 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (https://www.apache.org/).

98
node_modules/echarts/README.md generated vendored
View File

@ -1,98 +0,0 @@
# 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)**
[![License](https://img.shields.io/npm/l/echarts?color=5470c6)](https://github.com/apache/echarts/blob/master/LICENSE) [![Latest npm release](https://img.shields.io/npm/v/echarts?color=91cc75)](https://www.npmjs.com/package/echarts) [![NPM downloads](https://img.shields.io/npm/dm/echarts.svg?label=npm%20downloads&style=flat&color=fac858)](https://www.npmjs.com/package/echarts) [![Contributors](https://img.shields.io/github/contributors/apache/echarts?color=3ba272)](https://github.com/apache/echarts/graphs/contributors)
[![Build Status](https://github.com/apache/echarts/actions/workflows/ci.yml/badge.svg)](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.

BIN
node_modules/echarts/asset/logo.png generated vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

20
node_modules/echarts/charts.d.ts generated vendored
View File

@ -1,20 +0,0 @@
/*
* 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';

27
node_modules/echarts/charts.js generated vendored
View File

@ -1,27 +0,0 @@
/*
* 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';

20
node_modules/echarts/components.d.ts generated vendored
View File

@ -1,20 +0,0 @@
/*
* 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';

20
node_modules/echarts/components.js generated vendored
View File

@ -1,20 +0,0 @@
/*
* 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';

20
node_modules/echarts/core.d.ts generated vendored
View File

@ -1,20 +0,0 @@
/*
* 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';

20
node_modules/echarts/core.js generated vendored
View File

@ -1,20 +0,0 @@
/*
* 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';

View File

@ -1,235 +0,0 @@
/*
* 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;

View File

@ -1,74 +0,0 @@
/*
* 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
}
});

View File

@ -1,146 +0,0 @@
/*
* 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;
}
});

View File

@ -1,65 +0,0 @@
/*
* 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';

View File

@ -1,203 +0,0 @@
/*
* 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;
}

View File

@ -1,62 +0,0 @@
/*
* 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;
}

View File

@ -1,116 +0,0 @@
/*
* 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
};
}

20
node_modules/echarts/features.d.ts generated vendored
View File

@ -1,20 +0,0 @@
/*
* 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';

20
node_modules/echarts/features.js generated vendored
View File

@ -1,20 +0,0 @@
/*
* 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';

View File

@ -1,178 +0,0 @@
/*
* 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];
}
}
});

174
node_modules/echarts/i18n/langAR.js generated vendored
View File

@ -1,174 +0,0 @@
/*
* 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);
});

View File

@ -1,175 +0,0 @@
/*
* 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];
}
}
});

171
node_modules/echarts/i18n/langCS.js generated vendored
View File

@ -1,171 +0,0 @@
/*
* 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);
});

View File

@ -1,175 +0,0 @@
/*
* 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];
}
}
});

171
node_modules/echarts/i18n/langDE.js generated vendored
View File

@ -1,171 +0,0 @@
/*
* 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);
});

View File

@ -1,175 +0,0 @@
/*
* 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];
}
}
});

171
node_modules/echarts/i18n/langEN.js generated vendored
View File

@ -1,171 +0,0 @@
/*
* 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);
});

View File

@ -1,171 +0,0 @@
/*
* 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];
}
}
});

167
node_modules/echarts/i18n/langES.js generated vendored
View File

@ -1,167 +0,0 @@
/*
* 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);
});

View File

@ -1,171 +0,0 @@
/*
* 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];
}
}
});

167
node_modules/echarts/i18n/langFI.js generated vendored
View File

@ -1,167 +0,0 @@
/*
* 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);
});

View File

@ -1,175 +0,0 @@
/*
* 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];
}
}
});

171
node_modules/echarts/i18n/langFR.js generated vendored
View File

@ -1,171 +0,0 @@
/*
* 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);
});

View File

@ -1,175 +0,0 @@
/*
* 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];
}
}
});

171
node_modules/echarts/i18n/langHU.js generated vendored
View File

@ -1,171 +0,0 @@
/*
* 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);
});

View File

@ -1,175 +0,0 @@
/*
* 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];
}
}
});

171
node_modules/echarts/i18n/langIT.js generated vendored
View File

@ -1,171 +0,0 @@
/*
* 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);
});

View File

@ -1,175 +0,0 @@
/*
* 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];
}
}
});

171
node_modules/echarts/i18n/langJA.js generated vendored
View File

@ -1,171 +0,0 @@
/*
* 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);
});

View File

@ -1,175 +0,0 @@
/*
* 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: Korean.
*/
var localeObj = {
time: {
month: [
'1월', '2월', '3월', '4월', '5월', '6월',
'7월', '8월', '9월', '10월', '11월', '12월'
],
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 라인 차트',
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} representing.',
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];
}
}
});

171
node_modules/echarts/i18n/langKO.js generated vendored
View File

@ -1,171 +0,0 @@
/*
* 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: Korean.
*/
var localeObj = {
time: {
month: [
'1월', '2월', '3월', '4월', '5월', '6월',
'7월', '8월', '9월', '10월', '11월', '12월'
],
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 라인 차트',
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} representing.',
withoutName: ' {seriesId}번째 시리즈는 {seriesType}입니다.',
separator: {
middle: '',
end: ''
}
}
},
data: {
allData: '데이터: ',
partialData: '첫번째 {displayCnt} 아이템: ',
withName: '{name}의 데이터는 {value}',
withoutName: '{value}',
separator: {
middle: ', ',
end: '. '
}
}
}
};
echarts.registerLocale('KO', localeObj);
});

View File

@ -1,175 +0,0 @@
/*
* 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: Dutch.
*/
var localeObj = {
time: {
month: [
'januari', 'februari', 'maart', 'april', 'mei', 'juni',
'juli', 'augustus', 'september', 'oktober', 'november', 'december'
],
monthAbbr: [
'jan', 'feb', 'mrt', 'apr', 'mei', 'jun',
'jul', 'aug', 'sep', 'okt', 'nov', 'dec'
],
dayOfWeek: [
'zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'
],
dayOfWeekAbbr: [
'zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'
]
},
legend: {
selector: {
all: 'Alle',
inverse: 'Omgekeerd'
}
},
toolbox: {
brush: {
title: {
rect: 'Vakselectie',
polygon: 'Lasso selectie',
lineX: 'Horizontale selectie',
lineY: 'Verticale selectie',
keep: 'Selecties behouden',
clear: 'Selecties wissen'
}
},
dataView: {
title: 'Gegevensweergave',
lang: ['Gegevensweergave', 'Sluiten', 'Vernieuwen']
},
dataZoom: {
title: {
zoom: 'Zoom',
back: 'Zoom herstellen'
}
},
magicType: {
title: {
line: 'Omzetten naar lijndiagram',
bar: 'Omzetten naar staafdiagram',
stack: 'Omzetten naar stapeldiagram',
tiled: 'Omzetten naar tegeldiagram'
}
},
restore: {
title: 'Herstellen'
},
saveAsImage: {
title: 'Opslaan als afbeelding',
lang: ['Klik rechtermuisknop om de afbeelding op te slaan']
}
},
series: {
typeNames: {
pie: 'Cirkeldiagram',
bar: 'Staafdiagram',
line: 'Lijndiagram',
scatter: 'Spreidingsdiagram',
effectScatter: 'Spreidingsdiagram met rimpeleffect',
radar: 'Radardiagram',
tree: 'Boomdiagram',
treemap: 'Boomkaart',
boxplot: 'Boxplot',
candlestick: 'Kandelaardiagram',
k: 'K-lijndiagram',
heatmap: 'Hittekaart',
map: 'Kaart',
parallel: 'Parallele coördinatendiagram',
lines: 'Lijnendiagram',
graph: 'Relatiediagram',
sankey: 'Sankey-diagram',
funnel: 'Trechterdiagram',
gauge: 'Graadmeter',
pictorialBar: 'Staafdiagram met afbeeldingen',
themeRiver: 'Thematische rivierdiagram',
sunburst: 'Zonnestraaldiagram',
custom: 'Aangepast diagram',
chart: 'Diagram'
}
},
aria: {
general: {
withTitle: 'Dit is een diagram over "{title}"',
withoutTitle: 'Dit is een diagram'
},
series: {
single: {
prefix: '',
withName: ' van het type {seriesType} genaamd {seriesName}.',
withoutName: ' van het type {seriesType}.'
},
multiple: {
prefix: '. Het bestaat uit {seriesCount} series.',
withName: ' De serie {seriesId} is een {seriesType} met de naam {seriesName}.',
withoutName: ' De serie {seriesId} is een {seriesType}.',
separator: {
middle: '',
end: ''
}
}
},
data: {
allData: 'De gegevens zijn als volgt: ',
partialData: 'De eerste {displayCnt} items zijn: ',
withName: 'de gegevens voor {name} zijn {value}',
withoutName: '{value}',
separator: {
middle: ', ',
end: '. '
}
}
}
};
for (var key in localeObj) {
if (localeObj.hasOwnProperty(key)) {
exports[key] = localeObj[key];
}
}
});

171
node_modules/echarts/i18n/langNL.js generated vendored
View File

@ -1,171 +0,0 @@
/*
* 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: Dutch.
*/
var localeObj = {
time: {
month: [
'januari', 'februari', 'maart', 'april', 'mei', 'juni',
'juli', 'augustus', 'september', 'oktober', 'november', 'december'
],
monthAbbr: [
'jan', 'feb', 'mrt', 'apr', 'mei', 'jun',
'jul', 'aug', 'sep', 'okt', 'nov', 'dec'
],
dayOfWeek: [
'zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'
],
dayOfWeekAbbr: [
'zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'
]
},
legend: {
selector: {
all: 'Alle',
inverse: 'Omgekeerd'
}
},
toolbox: {
brush: {
title: {
rect: 'Vakselectie',
polygon: 'Lasso selectie',
lineX: 'Horizontale selectie',
lineY: 'Verticale selectie',
keep: 'Selecties behouden',
clear: 'Selecties wissen'
}
},
dataView: {
title: 'Gegevensweergave',
lang: ['Gegevensweergave', 'Sluiten', 'Vernieuwen']
},
dataZoom: {
title: {
zoom: 'Zoom',
back: 'Zoom herstellen'
}
},
magicType: {
title: {
line: 'Omzetten naar lijndiagram',
bar: 'Omzetten naar staafdiagram',
stack: 'Omzetten naar stapeldiagram',
tiled: 'Omzetten naar tegeldiagram'
}
},
restore: {
title: 'Herstellen'
},
saveAsImage: {
title: 'Opslaan als afbeelding',
lang: ['Klik rechtermuisknop om de afbeelding op te slaan']
}
},
series: {
typeNames: {
pie: 'Cirkeldiagram',
bar: 'Staafdiagram',
line: 'Lijndiagram',
scatter: 'Spreidingsdiagram',
effectScatter: 'Spreidingsdiagram met rimpeleffect',
radar: 'Radardiagram',
tree: 'Boomdiagram',
treemap: 'Boomkaart',
boxplot: 'Boxplot',
candlestick: 'Kandelaardiagram',
k: 'K-lijndiagram',
heatmap: 'Hittekaart',
map: 'Kaart',
parallel: 'Parallele coördinatendiagram',
lines: 'Lijnendiagram',
graph: 'Relatiediagram',
sankey: 'Sankey-diagram',
funnel: 'Trechterdiagram',
gauge: 'Graadmeter',
pictorialBar: 'Staafdiagram met afbeeldingen',
themeRiver: 'Thematische rivierdiagram',
sunburst: 'Zonnestraaldiagram',
custom: 'Aangepast diagram',
chart: 'Diagram'
}
},
aria: {
general: {
withTitle: 'Dit is een diagram over "{title}"',
withoutTitle: 'Dit is een diagram'
},
series: {
single: {
prefix: '',
withName: ' van het type {seriesType} genaamd {seriesName}.',
withoutName: ' van het type {seriesType}.'
},
multiple: {
prefix: '. Het bestaat uit {seriesCount} series.',
withName: ' De serie {seriesId} is een {seriesType} met de naam {seriesName}.',
withoutName: ' De serie {seriesId} is een {seriesType}.',
separator: {
middle: '',
end: ''
}
}
},
data: {
allData: 'De gegevens zijn als volgt: ',
partialData: 'De eerste {displayCnt} items zijn: ',
withName: 'de gegevens voor {name} zijn {value}',
withoutName: '{value}',
separator: {
middle: ', ',
end: '. '
}
}
}
};
echarts.registerLocale('NL', localeObj);
});

View File

@ -1,175 +0,0 @@
/*
* 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: Polish
*/
var localeObj = {
time: {
month: [
'Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec',
'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień'
],
monthAbbr: [
'Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze',
'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru'
],
dayOfWeek: [
'Niedziela', 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota'
],
dayOfWeekAbbr: [
'Nie', 'Pon', 'Wto', 'Śro', 'Czw', 'Pią', 'Sob'
]
},
legend: {
selector: {
all: 'Wszystko',
inverse: 'Odwróć'
}
},
toolbox: {
brush: {
title: {
rect: 'Zaznaczenie prostokątne',
polygon: 'Zaznaczanie lasso',
lineX: 'Zaznaczenie poziome',
lineY: 'Zaznaczenie pionowe',
keep: 'Zachowaj zaznaczenie',
clear: 'Wyczyść zaznaczenie'
}
},
dataView: {
title: 'Widok danych',
lang: ['Widok danych', 'Zamknij', 'Odśwież']
},
dataZoom: {
title: {
zoom: 'Przybliżenie',
back: 'Resetuj przybliżenie'
}
},
magicType: {
title: {
line: 'Przełącz na wykres liniowy',
bar: 'Przełącz na wykres słupkowy',
stack: 'Przełącz na wykres słupkowy skumulowany',
tiled: 'Przełącz na kafelki'
}
},
restore: {
title: 'Przywróć'
},
saveAsImage: {
title: 'Zapisz jako obrazek',
lang: ['Kliknij prawym klawiszem myszy aby zapisać']
}
},
series: {
typeNames: {
pie: 'Wykres kołowy',
bar: 'Wykres słupkowy',
line: 'Wykres liniowy',
scatter: 'Wykres punktowy',
effectScatter: 'Wykres punktowy z efektem falowania',
radar: 'Wykres radarowy',
tree: 'Drzewo',
treemap: 'Mapa drzewa',
boxplot: 'Wykres pudełkowy',
candlestick: 'Wykres świecowy',
k: 'Wykres linii K',
heatmap: 'Mapa ciepła',
map: 'Mapa',
parallel: 'Wykres współrzędnych równoległych',
lines: 'Diagram linii',
graph: 'Graf relacji',
sankey: 'Wykres Sankeya',
funnel: 'Wykres lejkowy',
gauge: 'Wykres zegarowy',
pictorialBar: 'Wykres słupkowy obrazkowy',
themeRiver: 'Wykres rzeki tematycznej',
sunburst: 'Wykres hierarchiczny słonecznikowy',
custom: 'Wykres niestandardowy',
chart: 'Wykres'
}
},
aria: {
general: {
withTitle: 'To jest wykres dotyczący "{title}"',
withoutTitle: 'To jest wykres'
},
series: {
single: {
prefix: '',
withName: ' typu {seriesType} nazwana {seriesName}.',
withoutName: ' typu {seriesType}.'
},
multiple: {
prefix: '. Składający się z {seriesCount} serii danych.',
withName: ' Seria danych {seriesId} jest serią typu {seriesType} przedstawiającą {seriesName}.',
withoutName: ' Seria danych {seriesId} jest serią typu {seriesType}.',
separator: {
middle: '',
end: ''
}
}
},
data: {
allData: 'Dane są następujące: ',
partialData: 'Pierwszych {displayCnt} elementów to: ',
withName: 'dane dla {name} to {value}',
withoutName: '{value}',
separator: {
middle: ', ',
end: '. '
}
}
}
};
for (var key in localeObj) {
if (localeObj.hasOwnProperty(key)) {
exports[key] = localeObj[key];
}
}
});

171
node_modules/echarts/i18n/langPL.js generated vendored
View File

@ -1,171 +0,0 @@
/*
* 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: Polish
*/
var localeObj = {
time: {
month: [
'Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec',
'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień'
],
monthAbbr: [
'Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze',
'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru'
],
dayOfWeek: [
'Niedziela', 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota'
],
dayOfWeekAbbr: [
'Nie', 'Pon', 'Wto', 'Śro', 'Czw', 'Pią', 'Sob'
]
},
legend: {
selector: {
all: 'Wszystko',
inverse: 'Odwróć'
}
},
toolbox: {
brush: {
title: {
rect: 'Zaznaczenie prostokątne',
polygon: 'Zaznaczanie lasso',
lineX: 'Zaznaczenie poziome',
lineY: 'Zaznaczenie pionowe',
keep: 'Zachowaj zaznaczenie',
clear: 'Wyczyść zaznaczenie'
}
},
dataView: {
title: 'Widok danych',
lang: ['Widok danych', 'Zamknij', 'Odśwież']
},
dataZoom: {
title: {
zoom: 'Przybliżenie',
back: 'Resetuj przybliżenie'
}
},
magicType: {
title: {
line: 'Przełącz na wykres liniowy',
bar: 'Przełącz na wykres słupkowy',
stack: 'Przełącz na wykres słupkowy skumulowany',
tiled: 'Przełącz na kafelki'
}
},
restore: {
title: 'Przywróć'
},
saveAsImage: {
title: 'Zapisz jako obrazek',
lang: ['Kliknij prawym klawiszem myszy aby zapisać']
}
},
series: {
typeNames: {
pie: 'Wykres kołowy',
bar: 'Wykres słupkowy',
line: 'Wykres liniowy',
scatter: 'Wykres punktowy',
effectScatter: 'Wykres punktowy z efektem falowania',
radar: 'Wykres radarowy',
tree: 'Drzewo',
treemap: 'Mapa drzewa',
boxplot: 'Wykres pudełkowy',
candlestick: 'Wykres świecowy',
k: 'Wykres linii K',
heatmap: 'Mapa ciepła',
map: 'Mapa',
parallel: 'Wykres współrzędnych równoległych',
lines: 'Diagram linii',
graph: 'Graf relacji',
sankey: 'Wykres Sankeya',
funnel: 'Wykres lejkowy',
gauge: 'Wykres zegarowy',
pictorialBar: 'Wykres słupkowy obrazkowy',
themeRiver: 'Wykres rzeki tematycznej',
sunburst: 'Wykres hierarchiczny słonecznikowy',
custom: 'Wykres niestandardowy',
chart: 'Wykres'
}
},
aria: {
general: {
withTitle: 'To jest wykres dotyczący "{title}"',
withoutTitle: 'To jest wykres'
},
series: {
single: {
prefix: '',
withName: ' typu {seriesType} nazwana {seriesName}.',
withoutName: ' typu {seriesType}.'
},
multiple: {
prefix: '. Składający się z {seriesCount} serii danych.',
withName: ' Seria danych {seriesId} jest serią typu {seriesType} przedstawiającą {seriesName}.',
withoutName: ' Seria danych {seriesId} jest serią typu {seriesType}.',
separator: {
middle: '',
end: ''
}
}
},
data: {
allData: 'Dane są następujące: ',
partialData: 'Pierwszych {displayCnt} elementów to: ',
withName: 'dane dla {name} to {value}',
withoutName: '{value}',
separator: {
middle: ', ',
end: '. '
}
}
}
};
echarts.registerLocale('PL', localeObj);
});

View File

@ -1,176 +0,0 @@
/*
* 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: Portuguese (Brazil).
*/
var localeObj = {
time: {
month: [
'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho',
'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'
],
monthAbbr: [
'Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun',
'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'
],
dayOfWeek: [
'Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira',
'Quinta-feira', 'Sexta-feira', 'Sábado'
],
dayOfWeekAbbr: [
'Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'
]
},
legend: {
selector: {
all: 'Todas',
inverse: 'Inv'
}
},
toolbox: {
brush: {
title: {
rect: 'Seleção retangular',
polygon: 'Seleção em laço',
lineX: 'Selecionar horizontalmente',
lineY: 'Selecionar verticalmente',
keep: 'Manter seleções',
clear: 'Limpar seleções'
}
},
dataView: {
title: 'Exibição de dados',
lang: ['Exibição de dados', 'Fechar', 'Atualizar']
},
dataZoom: {
title: {
zoom: 'Zoom',
back: 'Restaurar Zoom'
}
},
magicType: {
title: {
line: 'Trocar para gráfico de linhas',
bar: 'Trocar para gráfico de barras',
stack: 'Empilhar',
tiled: 'Tile'
}
},
restore: {
title: 'Restore'
},
saveAsImage: {
title: 'Salvar como imagem',
lang: ['Clique com o botão direito para salvar imagem']
}
},
series: {
typeNames: {
pie: 'Gráfico de pizza',
bar: 'Gráfico de barras',
line: 'Gráfico de linhas',
scatter: 'Gráfico de dispersão',
effectScatter: 'Gráfico de dispersão ondulado',
radar: 'Gráfico radar',
tree: 'Árvore',
treemap: 'Treemap',
boxplot: 'Boxplot',
candlestick: 'Candlestick',
k: 'Gráfico K line',
heatmap: 'Mapa de calor',
map: 'Mapa',
parallel: 'Coordenadas paralelas',
lines: 'Gráfico de linhas',
graph: 'Relationship graph',
sankey: 'Gráfico Sankey',
funnel: 'Gráfico de funil',
gauge: 'Gauge',
pictorialBar: 'Pictorial bar',
themeRiver: 'Theme River Map',
sunburst: 'Sunburst',
custom: 'Gráfico personalizado',
chart: 'Gráfico'
}
},
aria: {
general: {
withTitle: 'Este é um gráfico entitulado "{title}"',
withoutTitle: 'Este é um gráfico'
},
series: {
single: {
prefix: '',
withName: ' do tipo {seriesType} nomeada/nomeado como {seriesName}.',
withoutName: ' do tipo {seriesType}.'
},
multiple: {
prefix: '. Consiste de {seriesCount} séries.',
withName: ' A {seriesId} série é um/uma {seriesType} representando {seriesName}.',
withoutName: ' A {seriesId} series é um/uma {seriesType}.',
separator: {
middle: '',
end: ''
}
}
},
data: {
allData: 'Os dados são: ',
partialData: 'As primeiros {displayCnt} itens são: ',
withName: 'os dados para {name} são {value}',
withoutName: '{value}',
separator: {
middle: ', ',
end: '. '
}
}
}
};
for (var key in localeObj) {
if (localeObj.hasOwnProperty(key)) {
exports[key] = localeObj[key];
}
}
});

View File

@ -1,172 +0,0 @@
/*
* 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: Portuguese (Brazil).
*/
var localeObj = {
time: {
month: [
'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho',
'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'
],
monthAbbr: [
'Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun',
'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'
],
dayOfWeek: [
'Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira',
'Quinta-feira', 'Sexta-feira', 'Sábado'
],
dayOfWeekAbbr: [
'Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'
]
},
legend: {
selector: {
all: 'Todas',
inverse: 'Inv'
}
},
toolbox: {
brush: {
title: {
rect: 'Seleção retangular',
polygon: 'Seleção em laço',
lineX: 'Selecionar horizontalmente',
lineY: 'Selecionar verticalmente',
keep: 'Manter seleções',
clear: 'Limpar seleções'
}
},
dataView: {
title: 'Exibição de dados',
lang: ['Exibição de dados', 'Fechar', 'Atualizar']
},
dataZoom: {
title: {
zoom: 'Zoom',
back: 'Restaurar Zoom'
}
},
magicType: {
title: {
line: 'Trocar para gráfico de linhas',
bar: 'Trocar para gráfico de barras',
stack: 'Empilhar',
tiled: 'Tile'
}
},
restore: {
title: 'Restore'
},
saveAsImage: {
title: 'Salvar como imagem',
lang: ['Clique com o botão direito para salvar imagem']
}
},
series: {
typeNames: {
pie: 'Gráfico de pizza',
bar: 'Gráfico de barras',
line: 'Gráfico de linhas',
scatter: 'Gráfico de dispersão',
effectScatter: 'Gráfico de dispersão ondulado',
radar: 'Gráfico radar',
tree: 'Árvore',
treemap: 'Treemap',
boxplot: 'Boxplot',
candlestick: 'Candlestick',
k: 'Gráfico K line',
heatmap: 'Mapa de calor',
map: 'Mapa',
parallel: 'Coordenadas paralelas',
lines: 'Gráfico de linhas',
graph: 'Relationship graph',
sankey: 'Gráfico Sankey',
funnel: 'Gráfico de funil',
gauge: 'Gauge',
pictorialBar: 'Pictorial bar',
themeRiver: 'Theme River Map',
sunburst: 'Sunburst',
custom: 'Gráfico personalizado',
chart: 'Gráfico'
}
},
aria: {
general: {
withTitle: 'Este é um gráfico entitulado "{title}"',
withoutTitle: 'Este é um gráfico'
},
series: {
single: {
prefix: '',
withName: ' do tipo {seriesType} nomeada/nomeado como {seriesName}.',
withoutName: ' do tipo {seriesType}.'
},
multiple: {
prefix: '. Consiste de {seriesCount} séries.',
withName: ' A {seriesId} série é um/uma {seriesType} representando {seriesName}.',
withoutName: ' A {seriesId} series é um/uma {seriesType}.',
separator: {
middle: '',
end: ''
}
}
},
data: {
allData: 'Os dados são: ',
partialData: 'As primeiros {displayCnt} itens são: ',
withName: 'os dados para {name} são {value}',
withoutName: '{value}',
separator: {
middle: ', ',
end: '. '
}
}
}
};
echarts.registerLocale('PT-br', localeObj);
});

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