From 0b5b4cfaf330e094cbd5a727e8d74d24632e3806 Mon Sep 17 00:00:00 2001 From: Mara Date: Fri, 10 May 2024 20:49:37 +0800 Subject: [PATCH] a6.8.1 --- .../ControlData2DRowExpression.java | 16 +- .../controller/ControlJavaScriptRefer.java | 12 +- .../controller/ControlRowFilterRefer.java | 144 ------------ .../mybox/controller/JavaScriptEditor.java | 24 +- .../mybox/controller/MathFunctionEditor.java | 27 +-- .../mybox/controller/RowFilterEditor.java | 8 +- .../main/java/mara/mybox/fxml/PopTools.java | 191 +++++++++++++--- .../data/examples/RowFilter_Examples_zh.txt | 14 +- .../resources/fxml/ControlRowFilterRefer.fxml | 209 ------------------ 9 files changed, 186 insertions(+), 459 deletions(-) delete mode 100644 alpha/MyBox/src/main/java/mara/mybox/controller/ControlRowFilterRefer.java delete mode 100644 alpha/MyBox/src/main/resources/fxml/ControlRowFilterRefer.fxml diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/ControlData2DRowExpression.java b/alpha/MyBox/src/main/java/mara/mybox/controller/ControlData2DRowExpression.java index 47312b3cd..d3c662601 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/ControlData2DRowExpression.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/ControlData2DRowExpression.java @@ -8,11 +8,11 @@ import javafx.event.Event; import javafx.fxml.FXML; import javafx.scene.control.CheckBox; +import mara.mybox.calculation.ExpressionCalculator; import mara.mybox.data2d.Data2D; import mara.mybox.db.data.Data2DColumn; import mara.mybox.db.table.TableStringValues; import mara.mybox.dev.MyBoxLog; -import mara.mybox.calculation.ExpressionCalculator; import mara.mybox.fxml.HelpTools; import mara.mybox.fxml.PopTools; import static mara.mybox.value.Languages.message; @@ -103,18 +103,10 @@ public void setPlaceholders() { } } + @FXML @Override - protected void moreExampleButtons(MenuController controller) { - try { - if (data2D == null || !data2D.isValidDefinition()) { - return; - } - String col1 = data2D.columnNames().get(0); - PopTools.rowExpressionButtons(controller, scriptInput, col1); - - } catch (Exception e) { - MyBoxLog.error(e); - } + protected void showScriptExamples(Event event) { + PopTools.popRowExpressionExamples(this, event, scriptInput, interfaceName + "Examples", data2D); } public boolean checkExpression(boolean allPages) { diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/ControlJavaScriptRefer.java b/alpha/MyBox/src/main/java/mara/mybox/controller/ControlJavaScriptRefer.java index b2e388e35..c3abb1b77 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/ControlJavaScriptRefer.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/ControlJavaScriptRefer.java @@ -116,17 +116,7 @@ protected void popScriptExamples(Event event) { @FXML protected void showScriptExamples(Event event) { - try { - MenuController controller - = PopTools.popJavaScriptExamples(this, event, scriptInput, interfaceName + "Examples"); - moreExampleButtons(controller); - } catch (Exception e) { - MyBoxLog.error(e); - } - } - - protected void moreExampleButtons(MenuController controller) { - + PopTools.popJavaScriptExamples(this, event, scriptInput, interfaceName + "Examples", null); } @FXML diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/ControlRowFilterRefer.java b/alpha/MyBox/src/main/java/mara/mybox/controller/ControlRowFilterRefer.java deleted file mode 100644 index a8b937477..000000000 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/ControlRowFilterRefer.java +++ /dev/null @@ -1,144 +0,0 @@ -package mara.mybox.controller; - -import javafx.event.ActionEvent; -import javafx.event.Event; -import javafx.event.EventHandler; -import javafx.fxml.FXML; -import javafx.scene.control.ListView; -import javafx.scene.control.SelectionMode; -import javafx.scene.control.TextArea; -import javafx.scene.control.TreeItem; -import javafx.scene.input.MouseEvent; -import mara.mybox.db.data.InfoNode; -import mara.mybox.db.table.TableTreeNode; -import mara.mybox.db.table.TableTreeNodeTag; -import mara.mybox.dev.MyBoxLog; -import mara.mybox.fxml.PopTools; -import mara.mybox.value.UserConfig; - -/** - * @Author Mara - * @CreateDate 2022-10-15 - * @License Apache License Version 2.0 - */ -public class ControlRowFilterRefer extends ControlInfoTreeList { - - @FXML - protected TextArea scriptInput; - @FXML - protected ListView placeholdersList; - - public ControlRowFilterRefer() { - category = InfoNode.RowFilter; - } - - @Override - public void initControls() { - try { - super.initControls(); - - tableTreeNode = new TableTreeNode(); - tableTreeNodeTag = new TableTreeNodeTag(); - loadTree(); - - placeholdersList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); - placeholdersList.setOnMouseClicked(new EventHandler() { - @Override - public void handle(MouseEvent event) { - String selected = placeholdersList.getSelectionModel().getSelectedItem(); - if (selected != null && !selected.isBlank()) { - scriptInput.replaceText(scriptInput.getSelection(), selected); - } - } - }); - - } catch (Exception e) { - MyBoxLog.error(e); - } - } - - /* - tree - */ - @Override - public void itemClicked(MouseEvent event, TreeItem item) { - editNode(item); - } - - @Override - public void doubleClicked(MouseEvent event, TreeItem item) { - editNode(item); - } - - protected void editNode(TreeItem item) { - if (item == null) { - return; - } - InfoNode node = item.getValue(); - if (node == null || node.getInfo() == null) { - return; - } - scriptInput.replaceText(scriptInput.getSelection(), node.getInfo()); - } - - @FXML - public void editAction() { - JavaScriptController.loadScript(scriptInput.getText()); - } - - @FXML - public void manageAction() { - JavaScriptController.loadScript(""); - } - - public void clear() { - scriptInput.clear(); - placeholdersList.getItems().clear(); - } - - /* - script - */ - @FXML - public void clearScript() { - scriptInput.clear(); - } - - @FXML - protected void popScriptExamples(MouseEvent mouseEvent) { - if (UserConfig.getBoolean(interfaceName + "ExamplesPopWhenMouseHovering", false)) { - scriptExamples(mouseEvent); - } - } - - @FXML - protected void showScriptExamples(ActionEvent event) { - scriptExamples(event); - } - - protected void scriptExamples(Event event) { - try { - MenuController controller = PopTools.popJavaScriptExamples(this, event, scriptInput, interfaceName + "Examples"); - moreExampleButtons(controller); - } catch (Exception e) { - MyBoxLog.error(e); - } - } - - protected void moreExampleButtons(MenuController controller) { - - } - - @FXML - protected void popScriptHistories(Event event) { - if (UserConfig.getBoolean(interfaceName + "HistoriesPopWhenMouseHovering", false)) { - showScriptHistories(event); - } - } - - @FXML - protected void showScriptHistories(Event event) { - PopTools.popStringValues(this, scriptInput, event, interfaceName + "Histories", false); - } - -} diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/JavaScriptEditor.java b/alpha/MyBox/src/main/java/mara/mybox/controller/JavaScriptEditor.java index 0fa0117fc..cb7bacf1f 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/JavaScriptEditor.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/JavaScriptEditor.java @@ -1,6 +1,5 @@ package mara.mybox.controller; -import java.util.Arrays; import javafx.event.Event; import javafx.fxml.FXML; import javafx.scene.control.Button; @@ -66,28 +65,7 @@ protected void popExamplesMenu(MouseEvent event) { @FXML protected void showExamplesMenu(Event event) { - try { - String menuName = interfaceName + "Examples"; - MenuController controller = PopTools.popJavaScriptExamples(this, event, valueInput, menuName); - - PopTools.addButtonsPane(controller, valueInput, Arrays.asList( - "''.search(//ig) >= 0", "''.length > 0", "''.indexOf('') >= 0", - "''.startsWith('')", "''.endsWith('')", "''.replace(//ig,'')" - ), 4); - PopTools.addButtonsPane(controller, valueInput, Arrays.asList( - "Math.PI", "Math.E", "Math.abs(-5.47)", "Math.random()", - "Math.trunc(3.51)", "Math.round(3.51)", "Math.ceil(3.15)", "Math.floor(3.51)", - "Math.pow(3, 4)", "Math.sqrt(9)", "Math.exp(2)", "Math.log(5)", - "Math.min(1,2,-3)", "Math.max(1,2,-3)", "Math.sin(Math.PI/2)", "Math.cos(0)", "Math.tan(2)" - ), 5); - PopTools.addButtonsPane(controller, valueInput, Arrays.asList( - "var array = [ 'A', 'B', 'C', 'D' ];\narray[3]", - "var object = { name1:'value1', name2:'value2', name3:'value3'}; \nobject.name2" - ), 6); - - } catch (Exception e) { - MyBoxLog.error(e); - } + PopTools.popJavaScriptExamples(this, event, valueInput, interfaceName + "Examples", null); } @Override diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/MathFunctionEditor.java b/alpha/MyBox/src/main/java/mara/mybox/controller/MathFunctionEditor.java index 767fbaad5..a7365e85d 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/MathFunctionEditor.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/MathFunctionEditor.java @@ -19,6 +19,7 @@ import static mara.mybox.db.data.InfoNode.ValueSeparater; import mara.mybox.dev.MyBoxLog; import mara.mybox.fxml.PopTools; +import static mara.mybox.fxml.PopTools.javaScriptExamples; import mara.mybox.tools.StringTools; import static mara.mybox.value.Languages.message; import mara.mybox.value.UserConfig; @@ -252,20 +253,7 @@ protected void popScriptExamples(MouseEvent event) { @FXML protected void showScriptExamples(Event event) { - try { - String menuName = "FunctionScriptExamples"; - MenuController controller = PopTools.popJavaScriptExamples(this, event, valueInput, menuName); - - PopTools.addButtonsPane(controller, valueInput, Arrays.asList( - "Math.PI", "Math.E", "Math.random()", "Math.abs(x)", - "Math.pow(x,2)", "Math.pow(x,3)", "Math.sqrt(x)", "Math.pow(x,1d/3)", - "Math.pow(3, x)", "Math.exp(x)", - "Math.log(x)", "Math.sin(x)", "Math.cos(x)", "Math.tan(x)" - ), 4); - - } catch (Exception e) { - MyBoxLog.error(e); - } + PopTools.popJavaScriptExamples(this, event, valueInput, "FunctionScriptExamples", null); } @FXML @@ -299,13 +287,14 @@ protected void showDomainExamples(ActionEvent event) { protected void domainExamples(Event event) { try { - String menuName = "FunctionDomainExamples"; - MenuController controller = PopTools.popJavaScriptExamples(this, event, moreInput, menuName); - - PopTools.addButtonsPane(controller, moreInput, Arrays.asList( + List> preValues = new ArrayList<>(); + preValues.add(Arrays.asList( "x > 0", "x >= 0", "x < 0", "x <= 0", "x != 0", "x != 1", "x >= -1 && x <= 1", "( x - Math.PI / 2 ) % Math.PI != 0" - ), 4); + )); + preValues.addAll(javaScriptExamples("x", "stringV", "dateV")); + + PopTools.popJavaScriptExamples(this, event, moreInput, "FunctionDomainExamples", preValues); } catch (Exception e) { MyBoxLog.error(e); diff --git a/alpha/MyBox/src/main/java/mara/mybox/controller/RowFilterEditor.java b/alpha/MyBox/src/main/java/mara/mybox/controller/RowFilterEditor.java index afbad441e..489703aa3 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/controller/RowFilterEditor.java +++ b/alpha/MyBox/src/main/java/mara/mybox/controller/RowFilterEditor.java @@ -16,7 +16,6 @@ import mara.mybox.fxml.HelpTools; import mara.mybox.fxml.PopTools; import mara.mybox.tools.StringTools; -import static mara.mybox.value.Languages.message; import mara.mybox.value.UserConfig; /** @@ -162,12 +161,7 @@ protected void popScriptExamples(MouseEvent mouseEvent) { @FXML protected void showScriptExamples(Event event) { - try { - MenuController controller = PopTools.popJavaScriptExamples(this, event, valueInput, interfaceName + "Examples"); - PopTools.rowExpressionButtons(controller, valueInput, message("Column") + "1"); - } catch (Exception e) { - MyBoxLog.error(e); - } + PopTools.popJavaScriptExamples(this, event, valueInput, interfaceName + "Examples", null); } @FXML diff --git a/alpha/MyBox/src/main/java/mara/mybox/fxml/PopTools.java b/alpha/MyBox/src/main/java/mara/mybox/fxml/PopTools.java index 0c2f2757b..840525fb7 100644 --- a/alpha/MyBox/src/main/java/mara/mybox/fxml/PopTools.java +++ b/alpha/MyBox/src/main/java/mara/mybox/fxml/PopTools.java @@ -53,6 +53,19 @@ import mara.mybox.controller.ControlWebView; import mara.mybox.controller.HtmlStyleInputController; import mara.mybox.controller.MenuController; +import mara.mybox.data2d.Data2D; +import static mara.mybox.db.data.ColumnDefinition.ColumnType.Color; +import static mara.mybox.db.data.ColumnDefinition.ColumnType.Date; +import static mara.mybox.db.data.ColumnDefinition.ColumnType.Datetime; +import static mara.mybox.db.data.ColumnDefinition.ColumnType.Enumeration; +import static mara.mybox.db.data.ColumnDefinition.ColumnType.EnumerationEditable; +import static mara.mybox.db.data.ColumnDefinition.ColumnType.Era; +import static mara.mybox.db.data.ColumnDefinition.ColumnType.File; +import static mara.mybox.db.data.ColumnDefinition.ColumnType.Image; +import static mara.mybox.db.data.ColumnDefinition.ColumnType.Latitude; +import static mara.mybox.db.data.ColumnDefinition.ColumnType.Longitude; +import static mara.mybox.db.data.ColumnDefinition.ColumnType.Short; +import mara.mybox.db.data.Data2DColumn; import mara.mybox.db.table.TableStringValues; import mara.mybox.dev.MyBoxLog; import mara.mybox.fxml.style.HtmlStyles; @@ -1078,7 +1091,7 @@ public static void popJShellSuggesions(BaseController parent, JShell jShell, Tex } public static MenuController popJavaScriptExamples(BaseController parent, Event event, - TextInputControl scriptInput, String valueName) { + TextInputControl scriptInput, String valueName, List> preValues) { try { MenuController controller = MenuController.open(parent, scriptInput, event, valueName, false); @@ -1111,6 +1124,13 @@ public void handle(ActionEvent event) { controller.addFlowPane(topButtons); controller.addNode(new Separator()); + if (preValues == null || preValues.isEmpty()) { + preValues = javaScriptExamples("numberV", "stringV", "dateV"); + } + for (List values : preValues) { + PopTools.addButtonsPane(controller, scriptInput, values); + } + PopTools.addButtonsPane(controller, scriptInput, Arrays.asList( " + ", " - ", " * ", " / ", " % ", "''", "( )", ";", " = ", " += ", " -= ", " *= ", " /= ", " %= ", @@ -1120,7 +1140,7 @@ public void handle(ActionEvent event) { PopTools.addButtonsPane(controller, scriptInput, Arrays.asList( " >= ", " > ", " <= ", " < ", " != ", " && ", " || ", " !", - " '' == ", " == ", " '' != ", " === ", " !== ", + " == ", " === ", " !== ", " true ", " false ", " null ", " undefined " )); @@ -1132,44 +1152,159 @@ public void handle(ActionEvent event) { } } - public static void rowExpressionButtons(MenuController controller, - TextInputControl scriptInput, String colName) { + public static List> javaScriptExamples(String numColumn, + String stringColumn, String dateColumn) { + List> preValues = new ArrayList<>(); + List values; + + if (numColumn != null) { + values = Arrays.asList( + numColumn + " == 0", numColumn + " >= 0", numColumn + " < 0", + "Math.abs(" + numColumn + ")", + "Math.trunc(" + numColumn + ")", "Math.round(" + numColumn + ")", + "Math.ceil(" + numColumn + ")", "Math.floor(" + numColumn + ")", + "Math.pow(" + numColumn + ", 2)", "Math.sqrt(" + numColumn + ")", + "Math.pow(" + numColumn + ", 1d/3)", + "Math.exp(" + numColumn + ")", "Math.log(" + numColumn + ")", + "Math.min(" + numColumn + ",2,-3)", "Math.max(" + numColumn + ",2,-3)", + "Math.sin(" + numColumn + ")", "Math.cos(" + numColumn + ")", "Math.tan(" + numColumn + ")" + ); + } else { + values = new ArrayList<>(); + } + values.addAll(Arrays.asList( + "Math.PI", "Math.E", "Math.random()" + )); + preValues.add(values); + + if (stringColumn != null) { + values = Arrays.asList( + stringColumn + " == null || " + stringColumn + " == ''", + stringColumn + " == 'Hello'", + "if ( " + stringColumn + " != null ) \n" + + " " + stringColumn + ".length\n" + + "else\n" + + " -1", + "if ( " + stringColumn + " != null ) \n" + + " " + stringColumn + ".indexOf('Hello')\n" + + "else\n" + + " -1", + "if ( " + stringColumn + " != null ) \n" + + " " + stringColumn + ".search(/Hello/ig)\n" + + "else\n" + + " -1", + "if ( " + stringColumn + " != null ) \n" + + " " + stringColumn + ".startsWith('Hello')\n" + + "else\n" + + " undefined", + "if ( " + stringColumn + " != null ) \n" + + " " + stringColumn + ".endsWith('Hello')\n" + + "else\n" + + " undefined", + "if ( " + stringColumn + " != null ) \n" + + " " + stringColumn + ".replace(/h/g, \"H\")\n" + + "else\n" + + " null", + "if ( " + stringColumn + " != null ) \n" + + " " + stringColumn + ".toLowerCase()\n" + + "else\n" + + " null", + "if ( " + stringColumn + " != null ) \n" + + " " + stringColumn + ".toUpperCase()\n" + + "else\n" + + " null" + ); + preValues.add(values); + } + + if (dateColumn != null) { + values = Arrays.asList( + dateColumn + " == '2016-05-19 11:34:28'", + dateColumn + ".startsWith('2016-05-19 11')", + "new Date(" + dateColumn + ").getTime() > new Date('2016/05/19 09:23:12').getTime()", + "function formatDate(date) {\n" + + " if (date == null) \n" + + " return null;\n" + + " var y = date.getFullYear();\n" + + " var m = date.getMonth() + 1;\n" + + " m = m < 10 ? ('0' + m) : m;\n" + + " var d = date.getDate();\n" + + " d = d < 10 ? ('0' + d) : d;\n" + + " var h =date.getHours();\n" + + " h = h < 10 ? ('0' + h) : h;\n" + + " var M =date.getMinutes();\n" + + " M = M < 10 ? ('0' + M) : M;\n" + + " var s =date.getSeconds();\n" + + " s = s < 10 ? ('0' + s) : s;\n" + + " return y + '-' + m + '-' + d + ' ' + h + ':' + M + ':' + s;\n" + + "}\n" + + "formatDate(" + dateColumn + ");" + ); + preValues.add(values); + } + + return preValues; + } + + public static MenuController popRowExpressionExamples(BaseController parent, Event event, + TextInputControl scriptInput, String valueName, Data2D data2D) { try { - if (controller == null) { - return; + if (data2D == null) { + return popJavaScriptExamples(parent, event, scriptInput, valueName, null); } - PopTools.addButtonsPane(controller, scriptInput, Arrays.asList( + List> preValues = new ArrayList<>(); + + List values = Arrays.asList( "#{" + message("DataRowNumber") + "} % 2 == 0", "#{" + message("DataRowNumber") + "} % 2 == 1", "#{" + message("DataRowNumber") + "} >= 9", "#{" + message("TableRowNumber") + "} % 2 == 0", "#{" + message("TableRowNumber") + "} % 2 == 1", "#{" + message("TableRowNumber") + "} == 1" - ), 2); - - PopTools.addButtonsPane(controller, scriptInput, Arrays.asList( - "#{" + colName + "} == 0", - "Math.abs(#{" + colName + "}) >= 3", - "#{" + colName + "} < 0 || #{" + colName + "} != -6 " - ), 3); + ); + preValues.add(values); + + String stringColumn = null, dateColumn = null, numColumn = null, cname; + for (Data2DColumn c : data2D.getColumns()) { + cname = "#{" + c.getColumnName() + "}"; + switch (c.getType()) { + case String: + case Enumeration: + case EnumerationEditable: + case File: + case Image: + case Color: + if (stringColumn == null) { + stringColumn = cname; + } + break; + case Double: + case Longitude: + case Latitude: + case Float: + case Long: + case Integer: + case Short: + if (numColumn == null) { + numColumn = cname; + } + break; + case Datetime: + case Date: + case Era: + if (dateColumn == null) { + dateColumn = cname; + } + break; + } + } - PopTools.addButtonsPane(controller, scriptInput, Arrays.asList( - "new Date('#{" + message("Time") + "}'.replace(/-/g,'/')).getTime() > new Date('2016/05/19 09:23:12').getTime()", - "'#{" + message("Time") + "}' == '2016-05-19 11:34:28'", - "'#{" + message("Time") + "}'.startsWith('2016-05-19 11')" - ), 4); + preValues.addAll(javaScriptExamples(numColumn, stringColumn, dateColumn)); - PopTools.addButtonsPane(controller, scriptInput, Arrays.asList( - "'#{" + colName + "}' == ''", - "'#{" + colName + "}'.length > 0", - "'#{" + colName + "}'.indexOf('Hello') == 3", - "'#{" + colName + "}'.endsWith('Hello')", - "'#{" + colName + "}'.search(/Hello/ig) >= 0", - "var array = [ 'A', 'B', 'C', 'D' ];\n" - + "array.includes('#{" + colName + "})')" - ), 5); + return popJavaScriptExamples(parent, event, scriptInput, valueName, preValues); } catch (Exception e) { MyBoxLog.error(e.toString()); + return null; } } diff --git a/alpha/MyBox/src/main/resources/data/examples/RowFilter_Examples_zh.txt b/alpha/MyBox/src/main/resources/data/examples/RowFilter_Examples_zh.txt index a1f830804..aa3cc9c8a 100644 --- a/alpha/MyBox/src/main/resources/data/examples/RowFilter_Examples_zh.txt +++ b/alpha/MyBox/src/main/resources/data/examples/RowFilter_Examples_zh.txt @@ -37,7 +37,7 @@ new Date(#{时间列}.replace(/-/g,'/')) ##MyBox# 行过滤 > 示例 > 时间 时间点 -new Date(#{时间列}.replace(/-/g,'/')) == '2016-05-19 11:34:28' +new Date(#{时间列}) == '2016-05-19 11:34:28' ##MyBox# 行过滤 > 示例 > 时间 @@ -47,12 +47,14 @@ new Date(#{时间列}.replace(/-/g,'/')) == '2016-05-19 11:34:28' ##MyBox# 行过滤 > 示例 > 时间 比较时间 -new Date(#{时间列}.replace(/-/g,'/')).getTime() > new Date('2016/05/19 09:23:12').getTime() - +new Date(#{时间列}).getTime() > new Date('2016/05/19 09:23:12').getTime() + ##MyBox# 行过滤 > 示例 > 时间 格式化时间 function formatDate(date) { + if (date == null) + return null; var y = date.getFullYear(); var m = date.getMonth() + 1; m = m < 10 ? ('0' + m) : m; @@ -66,7 +68,7 @@ function formatDate(date) { s = s < 10 ? ('0' + s) : s; return y + '-' + m + '-' + d + ' ' + h + ':' + M + ':' + s; } -formatDate(#{时间列}.replace(/-/g,'/')); +formatDate(#{时间列}); ##MyBox# 行过滤 > 示例 @@ -94,9 +96,9 @@ else 行过滤 > 示例 > 字符串 包含子串 if ( #{字符串列} != null ) - #{字符串列}.search(/昔去雪如花/ig) >= 0 + #{字符串列}.search(/昔去雪如花/ig) else - false + -1 ##MyBox# 行过滤 > 示例 > 字符串 diff --git a/alpha/MyBox/src/main/resources/fxml/ControlRowFilterRefer.fxml b/alpha/MyBox/src/main/resources/fxml/ControlRowFilterRefer.fxml deleted file mode 100644 index 2036a3534..000000000 --- a/alpha/MyBox/src/main/resources/fxml/ControlRowFilterRefer.fxml +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -