diff --git a/README.md b/README.md index 0af2e887db..4352dd9327 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@

License: GPL v3 Codacy - Latest release Stars FOSSA Status

@@ -13,23 +12,21 @@ DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。DataEase 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便的与他人分享。 -![de-architecture](https://dataease.io/images/screenshot/de-chart-new.jpg) - **DataEase 的功能包括:** -- 图表展示:支持 PC 端、移动端、大屏; -- 图表制作:支持丰富的图表类型(Apache ECharts / AntV)、支持拖拉拽方式快速制作仪表板; -- 数据引擎:支持直连模式、本地模式(基于 Apache Doris / Kettle 实现); +- 图表展示:支持 PC 端、移动端、大屏及嵌入式使用场景; +- 图表制作:支持丰富的图表类型、支持拖拉拽方式快速制作仪表板; +- 数据引擎:基于 Apache Calcite,实现统一的 SQL 解析、验证、优化和执行; - 数据连接:支持数据仓库/数据湖、OLAP 数据库、OLTP 数据库、Excel 数据文件、API 等各种数据源。 -## DataEase 的优势 +**DataEase 的优势:** - 开源开放:零门槛,线上快速获取和安装;快速获取用户反馈、按月发布新版本; - 简单易用:极易上手,通过鼠标点击和拖拽即可完成分析; -- 秒级响应:集成 Apache Doris,超大数据量下秒级查询返回延时; +- 全场景支持:多平台支持、多种嵌入式方案支持; - 安全分享:支持多种数据分享方式,确保数据安全。 -## DataEase 支持的数据源 +**DataEase 支持的数据源:**

excel @@ -37,36 +34,18 @@ DataEase 是开源的数据可视化分析工具,帮助用户快速分析数 oracle sqlserver mariadb - elasticsearch clickhouse doris mongodb redshift - hive DB2 API TiDB StarRocks - PrestoDB - dm - KingBase - Kylin

-## DataEase 模板市场 - -- [模板市场](https://dataease.io/templates/) - -![模板市场](https://dataease.io/images/templates/templates.gif) - ## 快速开始 -**在线体验** - -- 环境地址: -- 用户名:demo -- 密码:dataease - **一键安装** 仅需两步快速安装 DataEase: @@ -83,17 +62,13 @@ curl -sSL https://dataease.oss-cn-hangzhou.aliyuncs.com/quick_start.sh | bash - [在线文档](https://dataease.io/docs/) - [社区论坛](https://bbs.fit2cloud.com/c/de/6) -**加入微信交流群** - - - ## DataEase 的技术栈 - 前端:[Vue.js](https://vuejs.org/)、[Element](https://element.eleme.cn/) -- 图库:[Apache ECharts](https://github.com/apache/echarts)、[AntV](https://antv.vision/zh) +- 图库:[AntV](https://antv.vision/zh) - 后端:[Spring Boot](https://spring.io/projects/spring-boot) - 中间件:[MySQL](https://www.mysql.com/) -- 数据处理:[Kettle](https://github.com/pentaho/pentaho-kettle)、[Apache Doris](https://github.com/apache/doris/) +- 数据处理:[Apache Calcite](https://github.com/apache/calcite/) - 基础设施:[Docker](https://www.docker.com/) ## Star History diff --git a/core/core-frontend/src/locales/zh-CN.ts b/core/core-frontend/src/locales/zh-CN.ts index 325315cf9f..f647db8531 100644 --- a/core/core-frontend/src/locales/zh-CN.ts +++ b/core/core-frontend/src/locales/zh-CN.ts @@ -951,6 +951,7 @@ export default { field_can_not_empty: '字段不能为空', conditions_can_not_empty: '字段的条件不能为空,若无条件,请直接删除该字段', remark: '备注', + remark_show: '显示备注', remark_edit: '编辑备注', remark_bg_color: '背景填充', quota_font_family: '值字体', diff --git a/core/core-frontend/src/views/chart/components/editor/editor-style/components/MiscSelector.vue b/core/core-frontend/src/views/chart/components/editor/editor-style/components/MiscSelector.vue index bf0f2dd0dc..b8e56891ec 100644 --- a/core/core-frontend/src/views/chart/components/editor/editor-style/components/MiscSelector.vue +++ b/core/core-frontend/src/views/chart/components/editor/editor-style/components/MiscSelector.vue @@ -199,7 +199,7 @@ const getQuotaField = id => { } const isValidField = field => { - return field.id !== 'count' && field.deType !== 0 && field.deType !== 1 && field.deType !== 5 + return field.id !== '-1' && state.quotaData.findIndex(ele => ele.id === field.id) !== -1 } onMounted(() => { @@ -282,27 +282,25 @@ onMounted(() => { - - - - - - - {{ item.name }} - + + + + {{ item.name }} @@ -311,8 +309,8 @@ onMounted(() => { @@ -375,27 +373,25 @@ onMounted(() => { - - - - - - - {{ item.name }} - + + + + {{ item.name }} @@ -519,8 +515,9 @@ onMounted(() => { { flex-direction: row; justify-content: space-between; } + :deep(.dynamic-item) { width: 100px !important; } } + .field-item { float: left; color: #8492a6; font-size: 12px; } + .margin-bottom-8 { margin-bottom: 8px !important; } + .series-select-option { display: flex; align-items: center; justify-content: start; padding: 0 11px; } + +.invalid-field { + ::v-deep(.ed-input__wrapper) { + box-shadow: 0 0 0 1px rgb(245, 74, 69) inset !important; + } +} diff --git a/core/core-frontend/src/views/chart/components/editor/editor-style/components/TitleSelector.vue b/core/core-frontend/src/views/chart/components/editor/editor-style/components/TitleSelector.vue index 178d77c595..feea8b5fc1 100644 --- a/core/core-frontend/src/views/chart/components/editor/editor-style/components/TitleSelector.vue +++ b/core/core-frontend/src/views/chart/components/editor/editor-style/components/TitleSelector.vue @@ -1,5 +1,5 @@ diff --git a/core/core-frontend/src/views/chart/components/editor/index.vue b/core/core-frontend/src/views/chart/components/editor/index.vue index 50743ba206..d4e6d92910 100644 --- a/core/core-frontend/src/views/chart/components/editor/index.vue +++ b/core/core-frontend/src/views/chart/components/editor/index.vue @@ -1088,7 +1088,7 @@ const onRefreshChange = val => { {{ view.title }} - +
diff --git a/core/core-frontend/src/views/chart/components/views/index.vue b/core/core-frontend/src/views/chart/components/views/index.vue index 8626c69479..bac2b3e34f 100644 --- a/core/core-frontend/src/views/chart/components/views/index.vue +++ b/core/core-frontend/src/views/chart/components/views/index.vue @@ -101,6 +101,10 @@ const snapshotStore = snapshotStoreWithOut() const state = reactive({ initReady: true, //curComponent 切换期间 不接收外部的calcData 和 renderChart 事件 title_show: true, + title_remark: { + show: false, + remark: '' + }, title_class: { fontSize: '18px', color: '#303133', @@ -240,6 +244,9 @@ const initTitle = () => { customStyle.background.alpha ) } + + state.title_remark.show = customStyle.text.remarkShow + state.title_remark.remark = customStyle.text.remark } } @@ -563,8 +570,16 @@ const toolTip = computed(() => {
+ + + + + + diff --git a/core/core-frontend/src/views/visualized/data/datasource/form/EditorDetail.vue b/core/core-frontend/src/views/visualized/data/datasource/form/EditorDetail.vue index 813dc642bd..ffea6854cb 100644 --- a/core/core-frontend/src/views/visualized/data/datasource/form/EditorDetail.vue +++ b/core/core-frontend/src/views/visualized/data/datasource/form/EditorDetail.vue @@ -131,6 +131,7 @@ const initForm = type => { if (type === 'oracle') { form.value.configuration.connectionType = 'sid' } + form.value.type = type setTimeout(() => { dsForm.value.clearValidate()