From bfc1e6c56629af826c13acfd05687cb9ecceeae5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?REBUILD=20=E4=BC=81=E4=B8=9A=E7=AE=A1=E7=90=86=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F?= <42044143+getrebuild@users.noreply.github.com> Date: Mon, 24 Jun 2024 21:34:48 +0800 Subject: [PATCH] Fix 3.7 beta4 (#774) * Update @rbv * beta4 * style * lang * Update QueryHelper.java --- @rbv | 2 +- pom.xml | 2 +- .../java/com/rebuild/core/Application.java | 4 +-- .../BaseConfigurationService.java | 2 +- .../service/approval/ApprovalStepService.java | 2 +- .../service/dashboard/charts/IndexChart.java | 7 ++++- .../project/ProjectCommentService.java | 2 +- .../core/service/query/QueryHelper.java | 11 ++++--- .../trigger/impl/FieldAggregation.java | 7 ++--- .../com/rebuild/core/support/CommandArgs.java | 18 ++++++++--- .../core/support/ConfigurationItem.java | 2 -- src/main/resources/i18n/lang.zh_CN.json | 19 +++++++++++- src/main/resources/web/assets/css/charts.css | 30 ++++++++++++------- src/main/resources/web/assets/css/rb-page.css | 10 ++----- .../resources/web/assets/js/charts/charts.js | 17 +++++++++-- .../web/assets/js/general/rb-forms.js | 2 +- .../resources/web/dashboard/chart-design.html | 8 ++++- 17 files changed, 98 insertions(+), 47 deletions(-) diff --git a/@rbv b/@rbv index 036ee5c74..c2f072f6e 160000 --- a/@rbv +++ b/@rbv @@ -1 +1 @@ -Subproject commit 036ee5c7436fe11eba8f8717e25414d82a017941 +Subproject commit c2f072f6ed0ee3c576c81d96e51ef8b147b29be7 diff --git a/pom.xml b/pom.xml index 9ecae7397..e83e4a851 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ com.rebuild rebuild - 3.7.0-beta3 + 3.7.0-beta4 rebuild Building your business-systems freely! https://getrebuild.com/ diff --git a/src/main/java/com/rebuild/core/Application.java b/src/main/java/com/rebuild/core/Application.java index ad4844115..e7f70385c 100644 --- a/src/main/java/com/rebuild/core/Application.java +++ b/src/main/java/com/rebuild/core/Application.java @@ -75,11 +75,11 @@ public class Application implements ApplicationListener /** * Rebuild Version */ - public static final String VER = "3.7.0-beta3"; + public static final String VER = "3.7.0-beta4"; /** * Rebuild Build [MAJOR]{1}[MINOR]{2}[PATCH]{2}[BUILD]{2} */ - public static final int BUILD = 3070003; + public static final int BUILD = 3070004; static { // Driver for DB diff --git a/src/main/java/com/rebuild/core/configuration/BaseConfigurationService.java b/src/main/java/com/rebuild/core/configuration/BaseConfigurationService.java index 605a85f4e..db0bb39b5 100644 --- a/src/main/java/com/rebuild/core/configuration/BaseConfigurationService.java +++ b/src/main/java/com/rebuild/core/configuration/BaseConfigurationService.java @@ -105,7 +105,7 @@ public abstract class BaseConfigurationService extends InternalPersistService { if (!cfgRecord.hasValue("shareTo")) return cfgRecord; if (cfgRecord.getPrimary() != null) { - Object createBy = QueryHelper.queryField(cfgRecord.getPrimary(), EntityHelper.CreatedBy); + Object createBy = QueryHelper.queryFieldValue(cfgRecord.getPrimary(), EntityHelper.CreatedBy); if (UserService.ADMIN_USER.equals(createBy)) return cfgRecord; } diff --git a/src/main/java/com/rebuild/core/service/approval/ApprovalStepService.java b/src/main/java/com/rebuild/core/service/approval/ApprovalStepService.java index 5bf80d66c..a95d6294f 100644 --- a/src/main/java/com/rebuild/core/service/approval/ApprovalStepService.java +++ b/src/main/java/com/rebuild/core/service/approval/ApprovalStepService.java @@ -698,7 +698,7 @@ public class ApprovalStepService extends BaseService { String approvalStepNode = record.getString(EntityHelper.ApprovalStepNode); ID approvalId = record.getID(EntityHelper.ApprovalId); if (approvalStepNode != null && approvalId == null) { - approvalId = (ID) QueryHelper.queryField(record.getPrimary(), EntityHelper.ApprovalId); + approvalId = (ID) QueryHelper.queryFieldValue(record.getPrimary(), EntityHelper.ApprovalId); } if (approvalId == null || approvalStepNode == null) { diff --git a/src/main/java/com/rebuild/core/service/dashboard/charts/IndexChart.java b/src/main/java/com/rebuild/core/service/dashboard/charts/IndexChart.java index 0964efd75..5faabbd95 100644 --- a/src/main/java/com/rebuild/core/service/dashboard/charts/IndexChart.java +++ b/src/main/java/com/rebuild/core/service/dashboard/charts/IndexChart.java @@ -41,6 +41,11 @@ public class IndexChart extends ChartData { index.put("label2", num.getLabel()); } - return JSONUtils.toJSONObject("index", index); + JSONObject renderOption = config.getJSONObject("option"); + if (renderOption == null) renderOption = new JSONObject(); + + return JSONUtils.toJSONObject( + new String[]{"index", "_renderOption"}, + new Object[]{index, renderOption}); } } diff --git a/src/main/java/com/rebuild/core/service/project/ProjectCommentService.java b/src/main/java/com/rebuild/core/service/project/ProjectCommentService.java index 3bd2ac24c..0d4cec902 100644 --- a/src/main/java/com/rebuild/core/service/project/ProjectCommentService.java +++ b/src/main/java/com/rebuild/core/service/project/ProjectCommentService.java @@ -73,7 +73,7 @@ public class ProjectCommentService extends BaseTaskService { final String msgContent = Language.L("@%s 在任务中提到了你", record.getEditor()) + " \n> " + content; ID related = record.getID("taskId"); - if (related == null) related = (ID) QueryHelper.queryField(record.getPrimary(), "taskId"); + if (related == null) related = (ID) QueryHelper.queryFieldValue(record.getPrimary(), "taskId"); ID[] atUsers = FeedsHelper.findMentions(content); int send = 0; diff --git a/src/main/java/com/rebuild/core/service/query/QueryHelper.java b/src/main/java/com/rebuild/core/service/query/QueryHelper.java index c37ae8ea0..ef65600c5 100644 --- a/src/main/java/com/rebuild/core/service/query/QueryHelper.java +++ b/src/main/java/com/rebuild/core/service/query/QueryHelper.java @@ -11,6 +11,7 @@ import cn.devezhao.persist4j.Entity; import cn.devezhao.persist4j.Field; import cn.devezhao.persist4j.Query; import cn.devezhao.persist4j.Record; +import cn.devezhao.persist4j.dialect.FieldType; import cn.devezhao.persist4j.engine.ID; import com.alibaba.fastjson.JSONObject; import com.rebuild.core.Application; @@ -189,16 +190,18 @@ public class QueryHelper { /** * @param queryFields * @param queryValue + * @param forceQueryName * @return */ - public static ID queryId(Field[] queryFields, String queryValue) { + public static ID queryIdValue(Field[] queryFields, String queryValue, boolean forceQueryName) { Entity entity = queryFields[0].getOwnEntity(); StringBuilder sql = new StringBuilder( String.format("select %s from %s where ", entity.getPrimaryField().getName(), entity.getName())); for (Field qf : queryFields) { - sql.append( - String.format("%s = '%s' or ", qf.getName(), CommonsUtils.escapeSql(queryValue))); + String qfName = qf.getName(); + if (forceQueryName && qf.getType() == FieldType.REFERENCE) qfName = "&" + qfName; + sql.append(String.format("%s = '%s' or ", qfName, CommonsUtils.escapeSql(queryValue))); } sql = new StringBuilder(sql.substring(0, sql.length() - 4)); @@ -211,7 +214,7 @@ public class QueryHelper { * @param fieldName * @return */ - public static Object queryField(ID recordId, String fieldName) { + public static Object queryFieldValue(ID recordId, String fieldName) { Object[] o = Application.getQueryFactory().uniqueNoFilter(recordId, fieldName); return o == null || o[0] == null ? null : o[0]; } diff --git a/src/main/java/com/rebuild/core/service/trigger/impl/FieldAggregation.java b/src/main/java/com/rebuild/core/service/trigger/impl/FieldAggregation.java index f91928659..547c39e39 100644 --- a/src/main/java/com/rebuild/core/service/trigger/impl/FieldAggregation.java +++ b/src/main/java/com/rebuild/core/service/trigger/impl/FieldAggregation.java @@ -18,7 +18,6 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.rebuild.core.Application; -import com.rebuild.core.BootEnvironmentPostProcessor; import com.rebuild.core.metadata.EntityHelper; import com.rebuild.core.metadata.MetadataHelper; import com.rebuild.core.metadata.easymeta.DisplayType; @@ -36,7 +35,7 @@ import com.rebuild.core.service.trigger.ActionType; import com.rebuild.core.service.trigger.TriggerAction; import com.rebuild.core.service.trigger.TriggerException; import com.rebuild.core.service.trigger.TriggerResult; -import com.rebuild.core.support.ConfigurationItem; +import com.rebuild.core.support.CommandArgs; import com.rebuild.core.support.general.FieldValueHelper; import com.rebuild.utils.CommonsUtils; import lombok.extern.slf4j.Slf4j; @@ -62,10 +61,8 @@ public class FieldAggregation extends TriggerAction { /** * 最大触发链深度 - * @see ConfigurationItem#TriggerMaxDepth */ - public static final int MAX_TRIGGER_DEPTH = ObjectUtils.toInt( - BootEnvironmentPostProcessor.getProperty(ConfigurationItem.TriggerMaxDepth.name(), "256")); + protected static final int MAX_TRIGGER_DEPTH = CommandArgs.getInt(CommandArgs._TriggerMaxDepth, 256); // 此触发器可能产生连锁反应 // 如触发器 A 调用 B,而 B 又调用了 C ... 以此类推。此处记录其深度 diff --git a/src/main/java/com/rebuild/core/support/CommandArgs.java b/src/main/java/com/rebuild/core/support/CommandArgs.java index 2a63a7910..ec98305d9 100644 --- a/src/main/java/com/rebuild/core/support/CommandArgs.java +++ b/src/main/java/com/rebuild/core/support/CommandArgs.java @@ -27,15 +27,15 @@ public class CommandArgs { public static final String _UniPush = "_UniPush"; public static final String _UseDbFullText = "_UseDbFullText"; - public static final String _SmsDistributor = "_SmsDistributor"; public static final String _EmailDistributor = "_EmailDistributor"; - public static final String _StartEntityTypeCode = "_StartEntityTypeCode"; + public static final String _UseFrontJSAnywhere = "_UseFrontJSAnywhere"; + public static final String _TriggerMaxDepth = "_TriggerMaxDepth"; /** * @param name - * @return default false + * @return default `false` */ public static boolean getBoolean(String name) { return BooleanUtils.toBoolean(System.getProperty(name)); @@ -43,12 +43,22 @@ public class CommandArgs { /** * @param name - * @return default -1 + * @return default `-1` */ public static int getInt(String name) { return ObjectUtils.toInt(System.getProperty(name), -1); } + /** + * @param name + * @param defaultValue + * @return + */ + public static int getInt(String name, int defaultValue) { + int s = getInt(name); + return s == -1 ? defaultValue : s; + } + /** * @param name * @return diff --git a/src/main/java/com/rebuild/core/support/ConfigurationItem.java b/src/main/java/com/rebuild/core/support/ConfigurationItem.java index 23b6a015b..5ad215e55 100644 --- a/src/main/java/com/rebuild/core/support/ConfigurationItem.java +++ b/src/main/java/com/rebuild/core/support/ConfigurationItem.java @@ -121,7 +121,6 @@ public enum ConfigurationItem { RedisDatabase(0), // Redis DB MobileUrl, // 移动端地址 RbStoreUrl, // 在线仓库地址 - TriggerMaxDepth, // 触发器最大执行深度 SecurityEnhanced(false), // 安全增强 TrustedAllUrl(false), // 可信外部地址 LibreofficeBin, // Libreoffice 命令 @@ -141,7 +140,6 @@ public enum ConfigurationItem { || RedisDatabase.name().equalsIgnoreCase(name) || MobileUrl.name().equalsIgnoreCase(name) || RbStoreUrl.name().equalsIgnoreCase(name) - || TriggerMaxDepth.name().equalsIgnoreCase(name) || SecurityEnhanced.name().equalsIgnoreCase(name) || TrustedAllUrl.name().equalsIgnoreCase(name) || LibreofficeBin.name().equalsIgnoreCase(name) diff --git a/src/main/resources/i18n/lang.zh_CN.json b/src/main/resources/i18n/lang.zh_CN.json index 6cf9a49ea..f562b73b5 100644 --- a/src/main/resources/i18n/lang.zh_CN.json +++ b/src/main/resources/i18n/lang.zh_CN.json @@ -3135,5 +3135,22 @@ "基本":"基本", "纸张大小":"纸张大小", "请选择一条记录":"请选择一条记录", - "文字":"文字" + "文字":"文字", + "已禁用的":"已禁用的", + "目标匹配字段":"目标匹配字段", + "编辑源码":"编辑源码", + "是否需要切换到 PC 版访问?":"是否需要切换到 PC 版访问?", + "可用用户":"可用用户", + "选择目标匹配字段":"选择目标匹配字段", + "当维度为日期时可用":"当维度为日期时可用", + "未激活的":"未激活的", + "源匹配字段":"源匹配字段", + "目标匹配字段已添加":"目标匹配字段已添加", + "显示增长率":"显示增长率", + "邮件内容":"邮件内容", + "是否需要切换到手机版访问?":"是否需要切换到手机版访问?", + "请选择源匹配字段":"请选择源匹配字段", + "请选择目标匹配字段":"请选择目标匹配字段", + "选择源匹配字段":"选择源匹配字段", + "源匹配字段已添加":"源匹配字段已添加" } \ No newline at end of file diff --git a/src/main/resources/web/assets/css/charts.css b/src/main/resources/web/assets/css/charts.css index c61c41b35..08ba2d0c9 100644 --- a/src/main/resources/web/assets/css/charts.css +++ b/src/main/resources/web/assets/css/charts.css @@ -141,21 +141,29 @@ See LICENSE and COMMERCIAL in the project root for license information. margin-left: 5px; margin-top: 3px; font-size: 1.55rem; +} + +.chart.index > .data-item span { + font-size: 1.15rem; + margin-left: 2px; + color: red; +} + +.chart.index > .data-item span.ge::before, +.chart.index > .data-item span.le::before { + font-family: 'Material Design Icons', serif; + content: '\F0737'; + font-size: 1.25rem; + color: red; +} + +.chart.index > .data-item span.le { color: green !important; } -.chart.index > .data-item .with strong::before { - font-family: 'Material Design Icons', serif; +.chart.index > .data-item span.le::before { content: '\F072E'; - font-size: 0.9rem; -} - -.chart.index > .data-item .with strong.ge { - color: red !important; -} - -.chart.index > .data-item .with strong.ge::before { - content: '\F005E'; + color: green !important; } .grid-stack-item.fullscreen .chart.index > .data-item p { diff --git a/src/main/resources/web/assets/css/rb-page.css b/src/main/resources/web/assets/css/rb-page.css index 2b91eca78..7ef981946 100644 --- a/src/main/resources/web/assets/css/rb-page.css +++ b/src/main/resources/web/assets/css/rb-page.css @@ -50,6 +50,8 @@ html.mourning-mode { html, body { min-width: 360px; + /*min-width: 1001px;*/ + /*overflow: auto !important;*/ } a, @@ -78,8 +80,6 @@ code { } .dropdown-menu { - box-shadow: 0 3px 0.3077rem rgba(0, 0, 0, 0.1); - box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2); box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.1), 0 10px 12px 0 rgba(170, 182, 206, 0.36); border-width: 0; border-radius: 0; @@ -228,7 +228,6 @@ code { .badge.badge-light, .badge.badge-secondary { - line-height: 1.277rem; line-height: 1.1586rem; } @@ -1373,7 +1372,6 @@ a.link.link-icon::after { top: 4px; font-size: 1.25rem; padding: 5px; - display: inline-block; z-index: 1; display: none; } @@ -1798,7 +1796,6 @@ th.column-fixed { content: ''; pointer-events: none; transform: translateX(100%); - box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.15); box-shadow: inset 5px 0 4px -4px rgba(0, 0, 0, 0.15); /*width: 20px;*/ /* fix: Safari */ @@ -1825,7 +1822,6 @@ th.column-fixed { .column-fixed.col-action::after { right: auto !important; left: -48px !important; - box-shadow: inset -10px 0 8px -8px rgb(0 0 0 / 15%) !important; box-shadow: inset -5px 0 4px -4px rgb(0 0 0 / 15%) !important; } @@ -4634,7 +4630,6 @@ pre.unstyle { } .bg-market { - background-image: linear-gradient(135deg, #2973d7 0%, #26acb9 100%); background-image: linear-gradient(45deg, rgb(0, 84, 70), rgb(57, 0, 63), rgb(89, 0, 0)), linear-gradient(45deg, rgb(0, 122, 101), rgb(127, 14, 127), rgb(255, 137, 131)); } @@ -4962,7 +4957,6 @@ pre.unstyle { /* nav v2.10 */ .rb-left-sidebar .sidebar-elements > li ul { - background-color: #f5f5f5; background-color: #eee; padding: 6px 0; } diff --git a/src/main/resources/web/assets/js/charts/charts.js b/src/main/resources/web/assets/js/charts/charts.js index e616fa13d..592a3b14b 100644 --- a/src/main/resources/web/assets/js/charts/charts.js +++ b/src/main/resources/web/assets/js/charts/charts.js @@ -211,18 +211,30 @@ class ChartIndex extends BaseChart { } renderChart(data) { + const showGrowthRate = data._renderOption && data._renderOption.showGrowthRate const color = __PREVIEW ? this.props.config.option.useColor : this.props.config.color const style2 = { color: color || null } + let clazz2, rate2 + if (data.index.label2) { + const N1 = this._num(data.index.data) + const N2 = this._num(data.index.data2) + clazz2 = N1 >= N2 ? 'ge' : 'le' + rate2 = (((N1 - N2) * 1.0) / N2) * 100 + rate2 = `${Math.abs(rate2).toFixed(2)}%` + } const chartdata = (
(this._$chart = c)}>

{data.index.label || this.label}

- {data.index.data} + + {data.index.data} + {clazz2 && {showGrowthRate ? rate2 : null}} + {data.index.label2 && (

{data.index.label2}

- = this._num(data.index.data) && 'ge'}>{data.index.data2} + {data.index.data2}
)}
@@ -402,6 +414,7 @@ const shortNumber = function (num) { else return num } +// 千分位 const formatThousands = function (num, flag) { let n = num if (Math.abs(~~n) > 1000) { diff --git a/src/main/resources/web/assets/js/general/rb-forms.js b/src/main/resources/web/assets/js/general/rb-forms.js index 15847c7c5..25cd9675a 100644 --- a/src/main/resources/web/assets/js/general/rb-forms.js +++ b/src/main/resources/web/assets/js/general/rb-forms.js @@ -1534,7 +1534,7 @@ class RbFormDateTime extends RbFormElement { startView: startView, pickerPosition: this._getAutoPosition(), minuteStep: window.__LAB_MINUTESTEP || 5, - // todayBtn: true, + todayBtn: true, }) .on('changeDate', function () { const val = $(this).val() diff --git a/src/main/resources/web/dashboard/chart-design.html b/src/main/resources/web/dashboard/chart-design.html index 3537a9b32..fd0be3ebd 100644 --- a/src/main/resources/web/dashboard/chart-design.html +++ b/src/main/resources/web/dashboard/chart-design.html @@ -150,7 +150,13 @@
+
+
+