Git Product home page Git Product logo

running-elephant / datart Goto Github PK

View Code? Open in Web Editor NEW
1.8K 1.8K 563.0 21.95 MB

Datart is a next generation Data Visualization Open Platform

Home Page: https://running-elephant.github.io/datart-docs/

License: Apache License 2.0

JavaScript 1.31% HTML 0.19% TypeScript 74.19% CSS 0.07% Dockerfile 0.01% Batchfile 0.01% Shell 0.06% Java 24.16% Less 0.01%
analytics bi business-analytics business-intelligence chart d3 dashboard data-analysis data-analytics data-engineering data-visualization data-viz datart davinci display echarts react report sql-editor typescript

datart's Introduction

新一代数据可视化开放平台,支持报表、仪表板、大屏、分析和可视化数据应用的敏捷构建。

What is datart?

datart 是新一代数据可视化开放平台,支持各类企业数据可视化场景需求,如创建和使用报表、仪表板和大屏,进行可视化数据分析,构建可视化数据应用等。由原 davinci 主创团队出品,datart 更加开放、可塑和智能,并在数据与艺术之间寻求最佳平衡。

设计理念 Design Philosophy

开放 Openness

BI产品作为标准化产品成熟度已经很高,但大多数BI产品为封闭系统,即用户只能使用BI产品内置提供的数据源、数据图表、可视化元素等。我们认为数据可视化平台可以在其系统边界范围内,在多个层面提供开放可扩展能力,新的扩展支持可以通过即插即用方式安装、更新或卸载。因此 datart 试图建立起一套标准化的 数据可视化开放平台 体系,标准化和开放性体现在以下方面:

  • 流程标准化:基于 Source > View > Chart > Visualization 建立 受管控的数据可视化应用 (Managed VizApp)开发、发布和使用的标准化流程
  • 交互标准化:Visualization 支持权限可控的标准化交互能力,如筛选、钻取、联动、跳转、弹窗、分享、下载、发送等
  • 插件标准化:在 Source、Chart、Visualization 层提供标准化可插拔扩展接口或SDK规范,支持开放扩展或按需定制

可塑 Integrability

datart 可作为独立平台使用,但不仅限于此,为了更好支持快速构建定制化数据应用系统,datart 可以很容易被整合、被内嵌至其他三方系统,承担数据可视化部分功能。通过 datart 的登录对接能力、权限对接能力、Source 层对接能力和 Visualization 层分享、SDK等能力,用户可以基于 datart 平台对接或二开以快速满足业务系统定制化需求。

智能 Augmented Analytics

传统BI产品只能对已有数据进行勘察,而现代BI产品更加重视对数据延展洞见,以形成完整数据分析洞察能力,或增强分析能力。datart 会在平台层面提供可扩展数据增强分析能力,基于数据通过可视化方式不仅回答 What,并且可以回答 Why。

功能特性 Features

在线体验 Demo

http://datart-demo.retech.cc

用户名:demo

密码:123456

架构模块 Architecture

Document

如何部署 Deployment

1.新手上路 参见 Deployment

2.老司机 参见 Deployment

快速开始 Quick Start

参见 Quick Start Guide

用户文档 User Document

参见 User Guide

最新版本 Latest Release

参见 Latest Release

Community

社区支持 Support

反馈问题

平台问题可以查看 Issue,提交新Issue请参考 Issue描述规范

交流讨论

可以加入社区微信群参与讨论

插件示例仓库

示例仓库 v1.0.0

参与贡献 Contributing

非常欢迎和感谢参与贡献,如何参与可参见 Contributing

谁在使用 Adopters

参见 Adopters

License

datart is under the Apache 2.0 license. See the LICENSE file for details.

datart's People

Contributors

cabbage89 avatar casonchan avatar clementchong avatar cuiyansong avatar czhuanyi avatar edison-tianhe avatar francis-xjl avatar fumiwork avatar joshxie avatar kanlon avatar nianhua99 avatar parkerjx avatar pengjunzhen avatar qxqzx13 avatar rickqi avatar scottsut avatar soarbluesky avatar stillsilly avatar tclxjianjun-xu avatar tianlu-root avatar tmbiggroup avatar wgzhao avatar whenhowxu avatar xiaohuangdou666 avatar xieliuduo avatar yqwoe avatar zclhlmgqzc avatar ziyu-one avatar zzm0809 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

datart's Issues

可视化中新建数据图表后存在不能删除的问题

操作步骤:
1.首先新建数据源、数据视图、可视化
2.去删除对应的数据视图会提示关联了data,无法删除(这个没问题)
3.由于上面的提示,所以先去删除可视化中的内容,结果依旧无法删除
1634527189(1)

数据源clickhouse报错

clickhouse 数据源报错.Request failed with status code 400

image

2021-10-18 12:19:07.771 [http-nio-0.0.0.0-7080-exec-6] ERROR datart.server.config.WebExceptionHandler : null
java.lang.NullPointerException: null
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at datart.data.provider.jdbc.adapters.JdbcDataProviderAdapter.test(JdbcDataProviderAdapter.java:73)
at datart.data.provider.JdbcDataProvider.test(JdbcDataProvider.java:60)
at datart.data.provider.ProviderManager.testConnection(ProviderManager.java:60)
at datart.server.service.impl.DataProviderServiceImpl.testConnection(DataProviderServiceImpl.java:114)
at datart.server.controller.DataProviderController.testConnection(DataProviderController.java:61)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:887)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1684)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

能否添加用户注册审核功能?

如果数据是在云上的话,被其它人知道了云上的地址,如果通过恶意的注册,不断的进行恶意的请求,会使服务器压力过大,造成服务器宕机或者进程崩溃。因此能否添加一个可选的审核权限,让管理员用户对普通用户进行注册审核,并且进行权限限制,感谢!

卢大佬 这个“数据艺术”有地图下钻这功能吗

卢大佬一定要弄上啊 卢大佬如果看到了的话 拜托一定要回复我一下啊 不要装作看不到啊 我们公司超喜欢这个地图下钻的 拜托啦
祝愿卢大佬 仙福永享 寿与天齐
祝愿阮涵大佬 千万不能软 一定要硬起来
祝愿方堃大佬 不要方 要圆滑
祝愿徐翔大佬 徐徐如生 自由飞翔
祝愿小惠大佬 年年80岁 不不18岁
祝愿伏英大佬 高大威猛 英俊潇洒 风流倜傥 玉树临风 英雄与侠义化身 美貌与智慧相结合 千万别是个伏弟魔

*操作之如何跳过邮件注册

在数据库执行一下SQL可以跳过邮件注册

INSERT INTO datart.user (id, email, username, password, active, name, description, avatar, create_time, create_by, update_time, update_by) VALUES ('3a87ffed01c644a587fc56a791c43a92', '[email protected]', 'abc', '$2a$10$191xtuFLFKoORdI9Fm/g/urr9MMFqashNT9ygo/PqihFrTuI4jOTy', 1, null, null, null, null, '3a87ffed01c644a587fc56a791c43a92', '2021-10-15 22:49:34', null);

最后登录的用户名和密码如下:
用户名:[email protected]
密码:abc123

可视化中新建数据图表后存在不能删除的问题

操作步骤:
1.首先新建数据源、数据视图、可视化
2.去删除对应的数据视图会提示关联了data,无法删除(这个没问题)
3.由于上面的提示,所以先去删除可视化中的内容,结果依旧无法删除
Uploading 1634527189(1).jpg…

日期筛选条件的日期ClickHouse函数无法转换

在关联日期范围筛选时,后台报错如下

Caused by: java.lang.Throwable: Code: 6. DB::Exception: Cannot parse string '2021-09-18 23:59:59.000' as DateTime: syntax error at position 19 (parsed just '2021-09-18 23:59:59'): While processing SELECT customer_id, birth_day, toDateTime(register_time) AS register_time FROM customer_basic WHERE ((is_deleted = 0) AND (create_type = 0)) AND ((register_time <= toDateTime('2021-09-18 23:59:59.000')) AND (register_time >= toDateTime('2021-09-18 00:00:00.000'))). (CANNOT_PARSE_TEXT) (version 21.9.2.17 (official build))

        at ru.yandex.clickhouse.except.ClickHouseExceptionSpecifier.specify(ClickHouseExceptionSpecifier.java:54)
        ... 64 common frames omitted

之前Davinci是有只精确到日期的选择的,目前精确到了毫秒有一点问题

启动错误

请问有微信交流群吗?

windows 使用 datart-server.cmd 脚本启动
报错如下

Logging system failed to initialize using configuration from 'config/logback.xml'
java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.qos.logback.core.joran.action.AppenderAction - Could not create an Appender of type [datart.core.log.AccessLogAppender]. ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type datart.core.log.AccessLogAppender
ERROR in ch.qos.logback.core.joran.spi.Interpreter@11:82 - ActionException in Action for tag [appender] ch.qos.logback.core.joran.spi.ActionException: ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type datart.core.log.AccessLogAppender
ERROR in ch.qos.logback.core.joran.action.AppenderRefAction - Could not find an appender named [error_db_appender]. Did you define it below instead of above in the configuration file?
ERROR in ch.qos.logback.core.joran.action.AppenderRefAction - See http://logback.qos.ch/codes.html#appender_order for more details.
        at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:179)
        at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithSpecificConfig(AbstractLoggingSystem.java:66)
        at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:57)
        at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:132)
        at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:315)
        at org.springframework.boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:281)
        at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:239)
        at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:216)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131)
        at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82)
        at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63)
        at java.util.ArrayList.forEach(ArrayList.java:1257)
        at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117)
        at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111)
        at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62)
        at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:362)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300)
        at datart.DatartServerApplication.main(DatartServerApplication.java:12)
2021-10-15 21:01:41.410 ERROR org.springframework.boot.SpringApplication : Application run failed
java.lang.IllegalStateException: java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.qos.logback.core.joran.action.AppenderAction - Could not create an Appender of type [datart.core.log.AccessLogAppender]. ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type datart.core.log.AccessLogAppender
ERROR in ch.qos.logback.core.joran.spi.Interpreter@11:82 - ActionException in Action for tag [appender] ch.qos.logback.core.joran.spi.ActionException: ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type datart.core.log.AccessLogAppender
ERROR in ch.qos.logback.core.joran.action.AppenderRefAction - Could not find an appender named [error_db_appender]. Did you define it below instead of above in the configuration file?
ERROR in ch.qos.logback.core.joran.action.AppenderRefAction - See http://logback.qos.ch/codes.html#appender_order for more details.
        at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:327)
        at org.springframework.boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:281)
        at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:239)
        at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:216)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131)
        at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82)
        at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63)
        at java.util.ArrayList.forEach(ArrayList.java:1257)
        at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117)
        at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111)
        at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62)
        at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:362)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300)
        at datart.DatartServerApplication.main(DatartServerApplication.java:12)
Caused by: java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.qos.logback.core.joran.action.AppenderAction - Could not create an Appender of type [datart.core.log.AccessLogAppender]. ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type datart.core.log.AccessLogAppender
ERROR in ch.qos.logback.core.joran.spi.Interpreter@11:82 - ActionException in Action for tag [appender] ch.qos.logback.core.joran.spi.ActionException: ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type datart.core.log.AccessLogAppender
ERROR in ch.qos.logback.core.joran.action.AppenderRefAction - Could not find an appender named [error_db_appender]. Did you define it below instead of above in the configuration file?
ERROR in ch.qos.logback.core.joran.action.AppenderRefAction - See http://logback.qos.ch/codes.html#appender_order for more details.
        at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:179)
        at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithSpecificConfig(AbstractLoggingSystem.java:66)
        at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:57)
        at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:132)
        at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:315)
        ... 18 common frames omitted
Exception in thread "main" java.lang.IllegalStateException: java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.qos.logback.core.joran.action.AppenderAction - Could not create an Appender of type [datart.core.log.AccessLogAppender]. ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type datart.core.log.AccessLogAppender
ERROR in ch.qos.logback.core.joran.spi.Interpreter@11:82 - ActionException in Action for tag [appender] ch.qos.logback.core.joran.spi.ActionException: ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type datart.core.log.AccessLogAppender
ERROR in ch.qos.logback.core.joran.action.AppenderRefAction - Could not find an appender named [error_db_appender]. Did you define it below instead of above in the configuration file?
ERROR in ch.qos.logback.core.joran.action.AppenderRefAction - See http://logback.qos.ch/codes.html#appender_order for more details.
        at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:327)
        at org.springframework.boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:281)
        at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:239)
        at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:216)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131)
        at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82)
        at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63)
        at java.util.ArrayList.forEach(ArrayList.java:1257)
        at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117)
        at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111)
        at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62)
        at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:362)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300)
        at datart.DatartServerApplication.main(DatartServerApplication.java:12)
Caused by: java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.qos.logback.core.joran.action.AppenderAction - Could not create an Appender of type [datart.core.log.AccessLogAppender]. ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type datart.core.log.AccessLogAppender
ERROR in ch.qos.logback.core.joran.spi.Interpreter@11:82 - ActionException in Action for tag [appender] ch.qos.logback.core.joran.spi.ActionException: ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type datart.core.log.AccessLogAppender
ERROR in ch.qos.logback.core.joran.action.AppenderRefAction - Could not find an appender named [error_db_appender]. Did you define it below instead of above in the configuration file?
ERROR in ch.qos.logback.core.joran.action.AppenderRefAction - See http://logback.qos.ch/codes.html#appender_order for more details.
        at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:179)
        at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithSpecificConfig(AbstractLoggingSystem.java:66)
        at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:57)
        at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:132)
        at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:315)
        ... 18 more

数据视图 中文名称 保存出现了乱码

图片

数据库用utf-8 ,application-config.yml 里面也要在jdbc连接串里面加上useUnicode=true&characterEncoding=utf-8
url: jdbc:mysql://xxxx:3306/datart?&allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8

CALCITE数据库类型,不支持java.sql.Resultset的last、first、absolute操作,在数据视图执行SQL语句时报错误:java.sql.SQLFeatureNotSupportedException: null

Describe the bug

CALCITE数据库类型,不支持java.sql.Resultset的last、first、absolute操作,在数据视图执行SQL语句时报错误:java.sql.SQLFeatureNotSupportedException: null

Expected behavior
修复CALCITE数据库类型的BUG,针对这种类型进行优化处理

Screenshots
2021-10-18_10-01-24
2021-10-18_10-02-12

If applicable, add screenshots to help explain your problem.
第1个截图,配置数据源,使用的URL:jdbc:avatica:remote:url=http://192.168.203.176:8082/druid/v2/sql/avatica/,对接的是Apache Druid实时分析数据库

第2个截图,是Debug执行时,发现出错的3个方法

仪表板右侧滚动条闪烁问题

编辑仪表板的,鼠标选中仪表板空白位置后,右侧展示为面板设计,将鼠标放到编辑背景颜色的按钮上,出现调色盘一直闪烁的现象。
屏幕截图 2021-10-18 110024

仪表盘发布后再次刷新报错

Describe the bug
错误描述
1.前端创建仪表盘后,点击浏览器刷新页面
2.后端服务报错

2021-10-19 16:28:37.823 ERROR datart.server.config.WebExceptionHandler : Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:207)
	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)
	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)
	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)
	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:887)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1684)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:835)

A clear and concise description of what the bug is.
清晰简洁地描述这个错误

To Reproduce
如何重现

Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

重现错误的步骤,例如:

  1. 到...页面
  2. 点击...
  3. 滚动到...
  4. 看到错误

Expected behavior
期望结果

A clear and concise description of what you expected to happen.
清晰简洁地描述你期望的结果是什么

Screenshots
截图
image

image

If applicable, add screenshots to help explain your problem.
如果方便的话,添加一个截图帮助解释你的问题

Environmental details: (optional, depending on where the bug occurs)

  • OS: Macos
  • Source Database: MySQL 8.0.26
  • Browser: chrome

运行环境详情:(可选,取决于错误发生的具体位置)

  • OS: [例如 Windows 10]
  • 数据源: [例如 MySQL 8.0.26]
  • 浏览器: [例如 chrome 94, safari 15]

Additional context
其他内容

Add any other context about the problem here.
有关这个问题的任意其他内容

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.