diff --git a/.gitignore b/.gitignore index 991a9d1..29c9cac 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,9 @@ .idea/ lib/report/*.jar target/ -.DS_Store \ No newline at end of file +.DS_Store +.gradle +build +local.properties +classes/ +transform-classes/ \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..c56b872 --- /dev/null +++ b/build.gradle @@ -0,0 +1,122 @@ + +apply plugin: 'java' + + +ext { + /** + * 项目中依赖的jar的路径 + * 1.如果依赖的jar需要打包到zip中,放置在lib根目录下 + * 2.如果依赖的jar仅仅是编译时需要,防止在lib下子目录下即可 + */ + libPath = "$projectDir/../webroot/WEB-INF/lib" + + /** + * 是否对插件的class进行加密保护,防止反编译 + */ + guard = false + + def pluginInfo = getPluginInfo() + pluginPre = "fine-plugin" + pluginName = pluginInfo.id + pluginVersion = pluginInfo.version + + outputPath = "$projectDir/../webroot/WEB-INF/plugins/plugin-" + pluginName + "-1.0/classes" +} + +group = 'com.fr.plugin' +version = '10.0' +sourceCompatibility = '8' + +sourceSets { + main { + java.outputDir = file(outputPath) + output.resourcesDir = file(outputPath) + } +} + +ant.importBuild("encrypt.xml") +//定义ant变量 +ant.projectDir = projectDir +ant.references["compile.classpath"] = ant.path { + fileset(dir: libPath, includes: '**/*.jar') + fileset(dir: ".",includes:"**/*.jar" ) +} + +classes.dependsOn('clean') + +task copyFiles(type: Copy,dependsOn: 'classes'){ + from outputPath + into "$projectDir/classes" +} + +task preJar(type:Copy,dependsOn: guard ? 'compile_encrypt_javas' : 'compile_plain_javas'){ + from "$projectDir/classes" + into "$projectDir/transform-classes" + include "**/*.*" +} +jar.dependsOn("preJar") + +task makeJar(type: Jar,dependsOn: preJar){ + from fileTree(dir: "$projectDir/transform-classes") + baseName pluginPre + appendix pluginName + version pluginVersion + destinationDir = file("$buildDir/libs") + + doLast(){ + delete file("$projectDir/classes") + delete file("$projectDir/transform-classes") + } +} + +task copyFile(type: Copy,dependsOn: ["makeJar"]){ + from "$buildDir/libs" + from("$projectDir/lib") { + include "*.jar" + } + from "$projectDir/plugin.xml" + into file("$buildDir/temp/plugin") +} + +task zip(type:Zip,dependsOn:["copyFile"]){ + from "$buildDir/temp/plugin" + destinationDir file("$buildDir/install") + baseName pluginPre + appendix pluginName + version pluginVersion +} + +//控制build时包含哪些文件,排除哪些文件 +processResources { +// exclude everything +// 用*.css没效果 +// exclude '**/*.css' +// except this file +// include 'xx.xml' +} + +/*读取plugin.xml中的version*/ +def getPluginInfo(){ + def xmlFile = file("plugin.xml") + if (!xmlFile.exists()) { + return ["id":"none", "version":"1.0.0"] + } + def plugin = new XmlParser().parse(xmlFile) + def version = plugin.version[0].text() + def id = plugin.id[0].text() + return ["id":id,"version":version] +} + +repositories { + mavenLocal() + maven { + url = uri('http://mvn.finedevelop.com/repository/maven-public/') + } +} + +dependencies { + //使用本地jar + implementation fileTree(dir: 'lib', include: ['**/*.jar']) + implementation fileTree(dir: libPath, include: ['**/*.jar']) +} + diff --git a/encrypt.xml b/encrypt.xml new file mode 100644 index 0000000..1401cd1 --- /dev/null +++ b/encrypt.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..490fda8 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..f3d3406 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://downloads.gradle-dn.com/distributions/gradle-6.3-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..2fe81a7 --- /dev/null +++ b/gradlew @@ -0,0 +1,183 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# 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 +# +# https://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. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..62bd9b9 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,103 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/plugin.xml b/plugin.xml index ca9a779..2553bf6 100755 --- a/plugin.xml +++ b/plugin.xml @@ -3,12 +3,16 @@ com.fr.solution.plugin.db.redis.v10 yes - 7.2 + 7.3.3 10.0 - 2019-03-29 + 2020-01-20 richie + [2020-06-05]搜索key的时候可以选择不同的数据库。
+ [2020-04-26]修复插件被标记为需要付费的问题。
+ [2020-04-21]修复redis集群下的一个问题。
[2019-10-30]适配新服务器数据集接口,在决策平台可以直接定义
[2019-09-29]修复无法兼容老版本的问题。
[2019-09-18]支持手动选择不同JavaScript脚本引擎。
diff --git a/readme.md b/readme.md index de4a6f2..37e72be 100644 --- a/readme.md +++ b/readme.md @@ -1,8 +1,8 @@ # 帆软报表连接redis缓存数据库插件 ## 插件编译 进入插件源码目录,执行命令 -`ant -f build.xml jar` -即可 +`gradle zip` +即可在build/install下获得插件安装包 ## 插件安装 使用帆软设计器自带的插件管理器即可安装。 diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..4604463 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,5 @@ +/* + * This file was generated by the Gradle 'init' task. + */ + +rootProject.name = 'demo-tabledata-redis' diff --git a/src/main/java/com/fr/plugin/db/redis/RedisLocaleFinder.java b/src/main/java/com/fr/plugin/db/redis/RedisLocaleFinder.java index ccb1218..e458f7a 100755 --- a/src/main/java/com/fr/plugin/db/redis/RedisLocaleFinder.java +++ b/src/main/java/com/fr/plugin/db/redis/RedisLocaleFinder.java @@ -1,11 +1,8 @@ package com.fr.plugin.db.redis; -import com.fr.plugin.db.redis.core.RedisConstants; -import com.fr.stable.fun.Authorize; import com.fr.stable.fun.impl.AbstractLocaleFinder; -@Authorize(callSignKey = RedisConstants.PLUGIN_ID) public class RedisLocaleFinder extends AbstractLocaleFinder { @Override public String find() { diff --git a/src/main/java/com/fr/plugin/db/redis/core/RedisDatabaseConnection.java b/src/main/java/com/fr/plugin/db/redis/core/RedisDatabaseConnection.java index 5946fd5..63e2c4e 100755 --- a/src/main/java/com/fr/plugin/db/redis/core/RedisDatabaseConnection.java +++ b/src/main/java/com/fr/plugin/db/redis/core/RedisDatabaseConnection.java @@ -9,6 +9,7 @@ import com.fanruan.api.util.StringKit; import com.fanruan.api.util.TypeKit; import com.fr.config.holder.Conf; import com.fr.data.impl.Connection; +import com.fr.plugin.db.redis.core.accessor.EmbedRedis; import com.fr.plugin.db.redis.core.emb.Redis; import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLableReader; @@ -79,10 +80,18 @@ public class RedisDatabaseConnection extends BaseConnection { return ArrayKit.EMPTY_STRING_ARRAY; } else { Redis redis = createRedisClient(); - Set keys = redis.getClient().keys(args[0]); - String[] array = keys.toArray(new String[0]); - redis.close(); - return array; + try { + EmbedRedis embedRedis = redis.getClient(); + int len = ArrayKit.getLength(args); + if (len > 1) { + int dbIndex = Integer.parseInt(args[1]); + embedRedis.select(dbIndex); + } + Set keys = embedRedis.keys(args[0]); + return keys.toArray(new String[0]); + } finally { + redis.close(); + } } } diff --git a/src/main/java/com/fr/plugin/db/redis/core/RedisScriptTableData.java b/src/main/java/com/fr/plugin/db/redis/core/RedisScriptTableData.java index 7da58aa..a795722 100644 --- a/src/main/java/com/fr/plugin/db/redis/core/RedisScriptTableData.java +++ b/src/main/java/com/fr/plugin/db/redis/core/RedisScriptTableData.java @@ -18,7 +18,6 @@ import com.fr.plugin.db.redis.core.script.EngineType; import com.fr.plugin.db.redis.util.RedisUtils; import com.fr.record.analyzer.EnableMetrics; import com.fr.script.Calculator; -import com.fr.stable.NameReference; import com.fr.stable.ParameterProvider; import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLableReader; diff --git a/src/main/java/com/fr/plugin/db/redis/core/RedisScriptTableDataModel.java b/src/main/java/com/fr/plugin/db/redis/core/RedisScriptTableDataModel.java index 3ff402d..16d805f 100644 --- a/src/main/java/com/fr/plugin/db/redis/core/RedisScriptTableDataModel.java +++ b/src/main/java/com/fr/plugin/db/redis/core/RedisScriptTableDataModel.java @@ -38,13 +38,17 @@ public class RedisScriptTableDataModel extends BaseDataModel { return; } Redis redis = mc.createRedisClient(); - redis.getClient().select(dbIndex); - RedisClient redisClient = RedisClientSelector.select(redis, engineType); - SimpleDataModel simple = redisClient.build(redis, script, rowCount); - if (simple != null) { - this.columnNames = simple.getColumnNames(); - this.data = simple.getData(); - this.rowCount = simple.getRowCount(); + try { + redis.getClient().select(dbIndex); + RedisClient redisClient = RedisClientSelector.select(redis, engineType); + SimpleDataModel simple = redisClient.build(redis, script, rowCount); + if (simple != null) { + this.columnNames = simple.getColumnNames(); + this.data = simple.getData(); + this.rowCount = simple.getRowCount(); + } + } finally { + redis.close(); } } diff --git a/src/main/java/com/fr/plugin/db/redis/core/RedisTableDataModel.java b/src/main/java/com/fr/plugin/db/redis/core/RedisTableDataModel.java index 5bc5c40..19719e6 100644 --- a/src/main/java/com/fr/plugin/db/redis/core/RedisTableDataModel.java +++ b/src/main/java/com/fr/plugin/db/redis/core/RedisTableDataModel.java @@ -28,9 +28,9 @@ public class RedisTableDataModel extends BaseDataModel { return; } Redis redis = mc.createRedisClient(); - redis.getClient().select(dbIndex); - LogKit.info("Connect to redis and select database:" + dbIndex); try { + redis.getClient().select(dbIndex); + LogKit.info("Connect to redis and select database:" + dbIndex); long start = System.currentTimeMillis(); DataWrapper wrapper = VisitorFactory.getKeyValueResult(calculator, ps, redis.getClient(), query, rowCount); LogKit.info("Fetch data from redis spend time {} ms.", System.currentTimeMillis() - start); @@ -40,6 +40,8 @@ public class RedisTableDataModel extends BaseDataModel { redis.close(); } catch (Exception e) { throw new RuntimeException(e.getCause()); + } finally { + redis.close(); } } diff --git a/src/main/java/com/fr/plugin/db/redis/core/accessor/category/ClusterRedisClient.java b/src/main/java/com/fr/plugin/db/redis/core/accessor/category/ClusterRedisClient.java index 69d3124..733d2e7 100644 --- a/src/main/java/com/fr/plugin/db/redis/core/accessor/category/ClusterRedisClient.java +++ b/src/main/java/com/fr/plugin/db/redis/core/accessor/category/ClusterRedisClient.java @@ -91,7 +91,10 @@ public class ClusterRedisClient implements EmbedRedis { @Override public void select(int index) { - jedisCluster.select(index); + Map clusterNodes = jedisCluster.getClusterNodes(); + for (Map.Entry entry : clusterNodes.entrySet()) { + entry.getValue().getResource().select(index); + } } @Override diff --git a/src/main/java/com/fr/plugin/db/redis/help/client/BaseRedisClient.java b/src/main/java/com/fr/plugin/db/redis/help/client/BaseRedisClient.java index 9d809b8..7581c19 100644 --- a/src/main/java/com/fr/plugin/db/redis/help/client/BaseRedisClient.java +++ b/src/main/java/com/fr/plugin/db/redis/help/client/BaseRedisClient.java @@ -50,7 +50,7 @@ public abstract class BaseRedisClient implements RedisClient { @ScriptBridge public String hkeys(String key) { long start = System.currentTimeMillis(); - Set set = jedis.keys(key); + Set set = jedis.hkeys(key); LogKit.info("Fetch data from redis spend time {} ms.", System.currentTimeMillis() - start); return object2JSONString(set); } diff --git a/src/main/java/com/fr/plugin/db/redis/ui/RedisDBConnectionChosePane.java b/src/main/java/com/fr/plugin/db/redis/ui/RedisDBConnectionChosePane.java index adfcc13..e921713 100755 --- a/src/main/java/com/fr/plugin/db/redis/ui/RedisDBConnectionChosePane.java +++ b/src/main/java/com/fr/plugin/db/redis/ui/RedisDBConnectionChosePane.java @@ -1,5 +1,7 @@ package com.fr.plugin.db.redis.ui; +import com.fanruan.api.design.ui.component.UIIntNumberField; +import com.fanruan.api.design.ui.component.UILabel; import com.fanruan.api.design.work.ConnectionComboBoxPanel; import com.fr.data.impl.Connection; import com.fr.data.operator.DataOperator; @@ -29,6 +31,7 @@ public class RedisDBConnectionChosePane extends BasicPane { private DefaultListModel listModel = new DefaultListModel(); private List listeners = new ArrayList(); private UIPlaceholderTextField keysPatternTextField; + private UIIntNumberField dbIndexNumberField; public RedisDBConnectionChosePane() { setLayout(new BorderLayout(4, 4)); @@ -51,6 +54,10 @@ public class RedisDBConnectionChosePane extends BasicPane { keysPatternTextField = new UIPlaceholderTextField(10); keysPatternTextField.setPlaceholder(DesignKit.i18nText("Plugin-Redis_Keys_Pattern")); + dbIndexNumberField = new UIIntNumberField(); + dbIndexNumberField.setColumns(2); + dbIndexNumberField.setInt(0); + JPanel centerPane = new JPanel(new BorderLayout()); UIButton searchButton = new UIButton(DesignKit.i18nText("Plugin-Redis_Keys_Pattern_Search")); @@ -63,6 +70,10 @@ public class RedisDBConnectionChosePane extends BasicPane { centerPane.add(GUICoreKit.createBorderLayoutPane( keysPatternTextField, BorderLayout.CENTER, + GUICoreKit.createBorderLayoutPane( + new UILabel(DesignKit.i18nText("Plugin-Redis_DB_Simple_Index")), BorderLayout.WEST, + dbIndexNumberField, BorderLayout.CENTER + ), BorderLayout.WEST, searchButton, BorderLayout.EAST), BorderLayout.NORTH); centerPane.add(list, BorderLayout.CENTER); @@ -97,7 +108,8 @@ public class RedisDBConnectionChosePane extends BasicPane { if (StringKit.isEmpty(keysPattern)) { return ArrayKit.EMPTY_STRING_ARRAY; } else { - return DataOperator.getInstance().getTableSummary(connection, keysPattern); + String dbIndex = String.valueOf(dbIndexNumberField.getInt()); + return DataOperator.getInstance().getTableSummary(connection, keysPattern, dbIndex); } } diff --git a/src/main/resources/com/fr/plugin/db/redis/locale/redis.properties b/src/main/resources/com/fr/plugin/db/redis/locale/redis.properties index 2d83961..2bf454e 100755 --- a/src/main/resources/com/fr/plugin/db/redis/locale/redis.properties +++ b/src/main/resources/com/fr/plugin/db/redis/locale/redis.properties @@ -9,6 +9,7 @@ Plugin-Redis_Help=Help Doc Plugin-Redis_Keys_Pattern=Keys Pattern Plugin-Redis_Keys_Pattern_Search=Search Plugin-Redis_DB_Index=DB Index +Plugin-Redis_DB_Simple_Index=Index Plugin-Redis_Preview=Preview Plugin-Redis_Refresh=Refresh Plugin-Redis_Formula=Formula diff --git a/src/main/resources/com/fr/plugin/db/redis/locale/redis_en_US.properties b/src/main/resources/com/fr/plugin/db/redis/locale/redis_en_US.properties index 2f69c39..9267e27 100755 --- a/src/main/resources/com/fr/plugin/db/redis/locale/redis_en_US.properties +++ b/src/main/resources/com/fr/plugin/db/redis/locale/redis_en_US.properties @@ -9,6 +9,7 @@ Plugin-Redis_Help=Help Doc Plugin-Redis_Keys_Pattern=Keys Pattern Plugin-Redis_Keys_Pattern_Search=Search Plugin-Redis_DB_Index=DB Index +Plugin-Redis_DB_Simple_Index=Index Plugin-Redis_Preview=Preview Plugin-Redis_Refresh=Refresh Plugin-Redis_Formula=Formula diff --git a/src/main/resources/com/fr/plugin/db/redis/locale/redis_zh_CN.properties b/src/main/resources/com/fr/plugin/db/redis/locale/redis_zh_CN.properties index 59b03d9..0bdca1f 100755 --- a/src/main/resources/com/fr/plugin/db/redis/locale/redis_zh_CN.properties +++ b/src/main/resources/com/fr/plugin/db/redis/locale/redis_zh_CN.properties @@ -9,6 +9,7 @@ Plugin-Redis_Help=\u5E2E\u52A9\u6587\u6863 Plugin-Redis_Keys_Pattern=\u952E\u503C\u7684\u6B63\u5219\u8868\u8FBE\u5F0F Plugin-Redis_Keys_Pattern_Search=\u641C\u7D22 Plugin-Redis_DB_Index=\u6570\u636E\u5E93\u7F16\u53F7 +Plugin-Redis_DB_Simple_Index=\u7F16\u53F7 Plugin-Redis_Preview=\u9884\u89C8 Plugin-Redis_Refresh=\u5237\u65B0 Plugin-Redis_Formula=\u516C\u5F0F @@ -38,15 +39,24 @@ Plugin-Redis_Cluster_Config_Description=1\u3001\u4F7F\u7528\u9017\u53F7\u5206\u5 Plugin-Redis_Script_Engine_Type=\u811A\u672C\u5F15\u64CE Plugin-Redis_Script_Engine_Type_Default=\u9ED8\u8BA4 Plugin-Redis_Script_Engine_Type_V8=V8\u9AD8\u901F\u5F15\u64CE -Plugin-Redis_Proxy_Private_Key_Path_Mark=\u8bf7\u8f93\u5165\u670d\u52a1\u5668\u6587\u4ef6\u8def\u5f84 -Plugin-Redis_Connection_Form_OriginalCharsetName= \u7f16\u7801 -Plugin-Redis_Check_Integer=\u8bf7\u8f93\u5165\u4e0d\u5c0f\u4e8e\u0030\u7684\u6574\u6570 -Plugin-Redis_View=\u89c6\u56fe +Plugin-Redis_Proxy_Private_Key_Path_Mark=\u8BF7\u8F93\u5165\u670D\u52A1\u5668\u6587\u4EF6\u8DEF\u5F84 +Plugin-Redis_Connection_Form_OriginalCharsetName= \u7F16\u7801 +Plugin-Redis_Check_Integer=\u8BF7\u8F93\u5165\u4E0D\u5C0F\u4E8E0\u7684\u6574\u6570 +Plugin-Redis_Parameter_Insert=\u63D2\u5165 +Plugin-Redis_Parameter_Delete=\u5220\u9664 +Plugin-Redis_Parameter_Move_Up=\u4E0A\u79FB +Plugin-Redis_Parameter_Move_Down=\u4E0B\u79FB +Plugin-Redis_Parameter_Refresh=\u5237\u65B0 +Plugin-Redis_Dataset_Parameter_Name=\u53C2\u6570 +Plugin-Redis_Dataset_Parameter_Value=\u503C +Plugin-Redis_Parameter_Please_Set_Parameter_Name=\u8BF7\u5148\u8BBE\u7F6E\u53C2\u6570\u540D +Plugin-Redis_Parameter_Type_String=\u5B57\u7B26\u4E32 +Plugin-Redis_Parameter_Type_Int=\u6574\u578B +Plugin-Redis_Parameter_Type_Number=\u53CC\u7CBE\u5EA6\u578B +Plugin-Redis_Parameter_Type_Date=\u65E5\u671F +Plugin-Redis_Parameter_Type_Boolean=\u5E03\u5C14\u578B +Plugin-Redis_Parameter_Type_Formula=\u516C\u5F0F +Plugin-Redis_Parameter_Delete_Confirm=\u4F60\u786E\u5B9A\u51B3\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u9879\uFF1F +Plugin-Redis_Parameter_Delete_Alert=\u5F53\u524D\u5217\u8868\u4E3A\u7A7A\u6216\u8005\u4F60\u6CA1\u6709\u9009\u4E2D\u4EFB\u4F55\u9879 +Plugin-Redis_View=\u89C6\u56FE Plugin-Redis_Table=\u8868 -Plugin-Redis_Preview=\u9884\u89c8 -Plugin-Redis_Refresh=\u5237\u65B0 -Plugin-Redis_Data_Connection=\u6570\u636e\u8fde\u63a5 -Plugin-Redis_Set_Parameter=\u53c2\u6570\u8bbe\u7f6e -Plugin-Redis_Set_Parameter_Name=\u53c2\u6570\u540d -Plugin-Redis_Set_Parameter_Type=\u53c2\u6570\u7c7b\u578b -Plugin-Redis_Set_Parameter_Value=\u9ed8\u8ba4\u503c \ No newline at end of file diff --git a/src/web/.npmrc b/src/web/.npmrc new file mode 100644 index 0000000..21e56c3 --- /dev/null +++ b/src/web/.npmrc @@ -0,0 +1 @@ +@fui:registry=https://npm.fineres.com/ \ No newline at end of file diff --git a/src/web/index.html b/src/web/index.html index a873833..67133f5 100644 --- a/src/web/index.html +++ b/src/web/index.html @@ -14,12 +14,12 @@ @@ -27,7 +27,6 @@
- - + diff --git a/src/web/package.json b/src/web/package.json index 439f620..e0512a3 100644 --- a/src/web/package.json +++ b/src/web/package.json @@ -7,9 +7,11 @@ "author": "alan", "license": "MIT", "dependencies": { + "@fui/materials": "^10.0.0", "@types/jss": "9.5.8", "autoprefixer": "^9.6.1", "es6-promise": "4.2.6", + "fineui": "^2.0.20200628140334", "fork-ts-checker-webpack-plugin": "^1.5.1", "jss": "9.8.7", "jss-plugin-global": "10.0.0-alpha.7", @@ -58,10 +60,6 @@ "webpack-dev-server": "3.7.2", "webpack-merge": "4.2.1" }, - "optionalDependencies": { - "fineui": "git+ssh://git@cloud.finedevelop.com:7999/visual/fineui.git", - "fineui-materials": "git+ssh://git@cloud.finedevelop.com:7999/fui/fineui-materials.git#release/10.0" - }, "scripts": { "dev": "cross-env NODE_ENV=mock webpack-dev-server -p --progress --config=webpack/webpack.dev.js --mode development --open", "build": "webpack -p --progress --config=webpack/webpack.prod.js --mode production", diff --git a/src/web/private/i18n.ts b/src/web/private/i18n.ts index f29deca..b619fe3 100644 --- a/src/web/private/i18n.ts +++ b/src/web/private/i18n.ts @@ -44,9 +44,193 @@ export const i18n = { 'Plugin-Redis_Check_Integer': '请输入不小于0的整数', 'Plugin-Redis_View': '视图', 'Plugin-Redis_Table': '表', - 'Plugin-Redis_Data_Connection': '数据连接', - 'Plugin-Redis_Set_Parameter': '参数设置', - 'Plugin-Redis_Set_Parameter_Name': '参数名', - 'Plugin-Redis_Set_Parameter_Type': '参数类型', - 'Plugin-Redis_Set_Parameter_Value': '默认值', + 'BI-Multi_Date_Quarter_End': '季度末', + 'BI-Multi_Date_Month_Begin': '月初', + 'BI-Multi_Date_YMD': '年月日', + 'BI-Custom_Color': '自定义颜色', + 'BI-Numerical_Interval_Input_Data': '请输入数值', + 'BI-Please_Input_Natural_Number': '请输入非负整数', + 'BI-No_More_Data': '无更多数据', + 'BI-Basic_Altogether': '共', + 'BI-Basic_Sunday': '星期日', + 'BI-Widget_Background_Colour': '组件背景', + 'BI-Color_Picker_Error_Text': '请输入0~255的正整数', + 'BI-Multi_Date_Month': '月', + 'BI-No_Selected_Item': '没有可选项', + 'BI-Multi_Date_Year_Begin': '年初', + 'BI-Quarter_1': '第1季度', + 'BI-Quarter_2': '第2季度', + 'BI-Quarter_3': '第3季度', + 'BI-Quarter_4': '第4季度', + 'BI-Multi_Date_Year_Next': '年后', + 'BI-Multi_Date_Month_Prev': '个月前', + 'BI-Month_Trigger_Error_Text': '请输入1~12的正整数', + 'BI-Less_And_Equal': '小于等于', + 'BI-Year_Trigger_Invalid_Text': '请输入有效时间', + 'BI-Multi_Date_Week_Next': '周后', + 'BI-Font_Size': '字号', + 'BI-Basic_Total': '共', + 'BI-Already_Selected': '已选择', + 'BI-Formula_Insert': '插入', + 'BI-Select_All': '全选', + 'BI-Basic_Tuesday': '星期二', + 'BI-Multi_Date_Month_End': '月末', + 'BI-Load_More': '点击加载更多数据', + 'BI-Basic_September': '九月', + 'BI-Current_Is_Last_Page': '当前已是最后一页', + 'BI-Basic_Auto': '自动', + 'BI-Basic_Count': '个', + 'BI-Basic_Value': '值', + 'BI-Basic_Unrestricted': '无限制', + 'BI-Quarter_Trigger_Error_Text': '请输入1~4的正整数', + 'BI-Basic_More': '更多', + 'BI-Basic_Wednesday': '星期三', + 'BI-Basic_Bold': '加粗', + 'BI-Basic_Simple_Saturday': '六', + 'BI-Multi_Date_Month_Next': '个月后', + 'BI-Basic_March': '三月', + 'BI-Current_Is_First_Page': '当前已是第一页', + 'BI-Basic_Thursday': '星期四', + 'BI-Basic_Prompt': '提示', + 'BI-Multi_Date_Today': '今天', + 'BI-Multi_Date_Quarter_Prev': '个季度前', + 'BI-Row_Header': '行表头', + 'BI-Date_Trigger_Error_Text': '日期格式示例:2015-3-11', + 'BI-Basic_Cancel': '取消', + 'BI-Basic_January': '一月', + 'BI-Basic_June': '六月', + 'BI-Basic_July': '七月', + 'BI-Basic_April': '四月', + 'BI-Multi_Date_Quarter_Begin': '季度初', + 'BI-Multi_Date_Week': '周', + 'BI-Click_Blank_To_Select': '点击\\空格键\\选中完全匹配项', + 'BI-Basic_August': '八月', + 'BI-Word_Align_Left': '文字居左', + 'BI-Basic_November': '十一月', + 'BI-Font_Colour': '字体颜色', + 'BI-Multi_Date_Day_Prev': '天前', + 'BI-Select_Part': '部分选择', + 'BI-Multi_Date_Day_Next': '天后', + 'BI-Less_Than': '小于', + 'BI-Basic_February': '二月', + 'BI-Multi_Date_Year': '年', + 'BI-Number_Index': '序号', + 'BI-Multi_Date_Week_Prev': '周前', + 'BI-Next_Page': '下一页', + 'BI-Right_Page': '向右翻页', + 'BI-Numerical_Interval_Signal_Value': '前后值相等,请将操作符改为“≤”', + 'BI-Basic_December': '十二月', + 'BI-Basic_Saturday': '星期六', + 'BI-Basic_Simple_Wednesday': '三', + 'BI-Multi_Date_Quarter_Next': '个季度后', + 'BI-Basic_October': '十月', + 'BI-Basic_Simple_Friday': '五', + 'BI-Basic_Save': '保存', + 'BI-Numerical_Interval_Number_Value': '请保证前面的数值小于/等于后面的数值', + 'BI-Previous_Page': '上一页', + 'BI-No_Select': '搜索结果为空', + 'BI-Basic_Clears': '清空', + 'BI-Created_By_Me': '我创建的', + 'BI-Basic_Simple_Tuesday': '二', + 'BI-Word_Align_Right': '文字居右', + 'BI-Summary_Values': '汇总', + 'BI-Basic_Clear': '清除', + 'BI-Upload_File_Size_Error': '文件大小不支持', + 'BI-Up_Page': '向上翻页', + 'BI-Basic_Simple_Sunday': '日', + 'BI-Multi_Date_Relative_Current_Time': '相对当前时间', + 'BI-Selected_Data': '已选数据:', + 'BI-Multi_Date_Quarter': '季度', + 'BI-Check_Selected': '查看已选', + 'BI-Basic_Search': '搜索', + 'BI-Basic_May': '五月', + 'BI-Continue_Select': '继续选择', + 'BI-Please_Input_Positive_Integer': '请输入正整数', + 'BI-Upload_File_Type_Error': '文件类型不支持', + 'BI-Upload_File_Error': '文件上传失败', + 'BI-Basic_Friday': '星期五', + 'BI-Down_Page': '向下翻页', + 'BI-Basic_Monday': '星期一', + 'BI-Left_Page': '向左翻页', + 'BI-Transparent_Color': '透明', + 'BI-Basic_Simple_Monday': '一', + 'BI-Multi_Date_Year_End': '年末', + 'BI-Time_Interval_Error_Text': '请保证开始时间早于/等于结束时间', + 'BI-Basic_Time': '时间', + 'BI-Basic_OK': '确定', + 'BI-Basic_Sure': '确定', + 'BI-Basic_Simple_Thursday': '四', + 'BI-Multi_Date_Year_Prev': '年前', + 'BI-Tiao_Data': '条数据', + 'BI-Basic_Italic': '斜体', + 'BI-Basic_Dynamic_Title': '动态时间', + 'BI-Basic_Year': '年', + 'BI-Basic_Single_Quarter': '季', + 'BI-Basic_Month': '月', + 'BI-Basic_Week': '周', + 'BI-Basic_Day': '天', + 'BI-Basic_Work_Day': '工作日', + 'BI-Basic_Front': '前', + 'BI-Basic_Behind': '后', + 'BI-Basic_Empty': '空', + 'BI-Basic_Month_End': '月末', + 'BI-Basic_Month_Begin': '月初', + 'BI-Basic_Year_End': '年末', + 'BI-Basic_Year_Begin': '年初', + 'BI-Basic_Quarter_End': '季末', + 'BI-Basic_Quarter_Begin': '季初', + 'BI-Basic_Week_End': '周末', + 'BI-Basic_Week_Begin': '周初', + 'BI-Basic_Current_Day': '当天', + 'BI-Basic_Begin_Start': '初', + 'BI-Basic_End_Stop': '末', + 'BI-Basic_Current_Year': '今年', + 'BI-Basic_Year_Fen': '年份', + 'BI-Basic_Current_Month': '本月', + 'BI-Basic_Current_Quarter': '本季度', + 'BI-Basic_Year_Month': '年月', + 'BI-Basic_Year_Quarter': '年季度', + 'BI-Basic_Input_Can_Not_Null': '输入框不能为空', + 'BI-Basic_Date_Time_Error_Text': '日期格式示例:2015-3-11 00:00:00', + 'BI-Basic_Input_From_To_Number': '请输入{R1}的数值', + 'BI-Basic_Or': '或', + 'BI-Basic_And': '且', + 'BI-Conf_Add_Formula': '添加公式', + 'BI-Conf_Add_Condition': '添加条件', + 'BI-Conf_Formula_And': '且公式条件', + 'BI-Conf_Formula_Or': '或公式条件', + 'BI-Conf_Condition_And': '且条件', + 'BI-Conf_Condition_Or': '或条件', + 'BI-Microsoft_YaHei': '微软雅黑', + 'BI-Apple_Light': '苹方-light', + 'BI-Font_Family': '字体', + 'BI-Basic_Please_Input_Content': '请输入内容', + 'BI-Word_Align_Center': '文字居中', + 'BI-Basic_Please_Enter_Number_Between': '请输入{R1}-{R2}的值', + 'BI-More_Than': '大于', + 'BI-More_And_Equal': '大于等于', + 'BI-Please_Enter_SQL': '请输入SQL', + 'BI-Basic_Click_To_Add_Text': '+点击新增\\{R1}\\', + 'BI-Basic_Please_Select': '请选择', + 'BI-Basic_Font_Color': '文字颜色', + 'BI-Basic_Background_Color': '背景色', + 'BI-Basic_Underline': '下划线', + 'BI-Basic_Param_Month': '{R1}月', + 'BI-Basic_Param_Day': '{R1}日', + 'BI-Basic_Param_Quarter': '{R1}季度', + 'BI-Basic_Param_Week_Count': '第{R1}周', + 'BI-Basic_Param_Hour': '{R1}时', + 'BI-Basic_Param_Minute': '{R1}分', + 'BI-Basic_Param_Second': '{R1}秒', + 'BI-Basic_Param_Year': '{R1}年', + 'BI-Basic_Date_Day': '日', + 'BI-Basic_Hour_Sin': '时', + 'BI-Basic_Seconds': '秒', + 'BI-Basic_Minute': '分', + 'BI-Basic_Wan': '万', + 'BI-Basic_Million': '百万', + 'BI-Basic_Billion': '亿', + 'BI-Basic_Quarter': '季度', + 'BI-Basic_No_Select': '不选', + 'BI-Basic_Now': '此刻', }; diff --git a/src/web/yarn.lock b/src/web/yarn.lock index e5fdcbf..7c3f2c3 100644 --- a/src/web/yarn.lock +++ b/src/web/yarn.lock @@ -723,10 +723,18 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@jest/console@^24.7.1", "@jest/console@^24.9.0": - version "24.9.0" - resolved "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" - integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== +"@fui/materials@^10.0.0": + version "10.0.0" + resolved "https://npm.fineres.com/@fui%2fmaterials/-/materials-10.0.0.tgz#816187a3c287f59e4f7e404f3b9f7f041aa424a4" + integrity sha512-yQvAR8yfnnnFPu9UEdlfx15bO/GVtrppOvbp/kJPPFW+MnW8fQ60WYAnIPjzLLu0LxNRsucvsKDAiYAUFWVwIA== + dependencies: + "@types/codemirror" "0.0.77" + codemirror "5.42.2" + +"@jest/console@^24.7.1": + version "24.7.1" + resolved "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" + integrity sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg== dependencies: "@jest/source-map" "^24.9.0" chalk "^2.0.1" @@ -906,15 +914,15 @@ "@types/codemirror@0.0.77": version "0.0.77" - resolved "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.77.tgz#6785a0183b4aea147de650530259ebf2a511bde9" - integrity sha512-nfjRJpAXgkT075jztMp92Ol2b7w7JrDvpfBU70GfVhpfdpWiZi6NqVIO3STGNzWl77/iJkTu2ZSg6hQobrEadg== + resolved "https://registry.npm.taobao.org/@types/codemirror/download/@types/codemirror-0.0.77.tgz#6785a0183b4aea147de650530259ebf2a511bde9" + integrity sha1-Z4WgGDtK6hR95lBTAlnr8qURvek= dependencies: "@types/tern" "*" "@types/estree@*": - version "0.0.39" - resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + version "0.0.45" + resolved "https://registry.npm.taobao.org/@types/estree/download/@types/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" + integrity sha1-6Th1cpmOXs2sIhlQ2rPow7Fq+IQ= "@types/events@*": version "3.0.0" @@ -992,22 +1000,15 @@ "@types/tern@*": version "0.23.3" - resolved "https://registry.npmjs.org/@types/tern/-/tern-0.23.3.tgz#4b54538f04a88c9ff79de1f6f94f575a7f339460" - integrity sha512-imDtS4TAoTcXk0g7u4kkWqedB3E4qpjXzCpD2LU5M5NAXHzCDsypyvXSaG7mM8DKYkCRa7tFp4tS/lp/Wo7Q3w== + resolved "https://registry.npm.taobao.org/@types/tern/download/@types/tern-0.23.3.tgz#4b54538f04a88c9ff79de1f6f94f575a7f339460" + integrity sha1-S1RTjwSojJ/3neH2+U9XWn8zlGA= dependencies: "@types/estree" "*" -"@types/yargs-parser@*": - version "13.1.0" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228" - integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== - -"@types/yargs@^13.0.0": - version "13.0.3" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz#76482af3981d4412d65371a318f992d33464a380" - integrity sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ== - dependencies: - "@types/yargs-parser" "*" +"@types/yargs@^12.0.2", "@types/yargs@^12.0.9": + version "12.0.12" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916" + integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw== "@typescript-eslint/eslint-plugin@1.7.0": version "1.7.0" @@ -2088,10 +2089,10 @@ code-point-at@^1.0.0: resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -codemirror@5.49.0: - version "5.49.0" - resolved "https://registry.npmjs.org/codemirror/-/codemirror-5.49.0.tgz#adedbffcc81091e4a0334bcb96b1ae3b7ada5e3f" - integrity sha512-Hyzr0HToBdZpLBN9dYFO/KlJAsKH37/cXVHPAqa+imml0R92tb9AkmsvjnXL+SluEvjjdfkDgRjc65NG5jnMYA== +codemirror@5.42.2: + version "5.42.2" + resolved "https://registry.npm.taobao.org/codemirror/download/codemirror-5.42.2.tgz?cache=0&sync_timestamp=1592745428423&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcodemirror%2Fdownload%2Fcodemirror-5.42.2.tgz#801ab715a7a7e1c7ed4162b78e9d8138b98de8f0" + integrity sha1-gBq3Faen4cftQWK3jp2BOLmN6PA= collection-visit@^1.0.0: version "1.0.0" @@ -3432,16 +3433,10 @@ findup-sync@3.0.0: micromatch "^3.0.4" resolve-dir "^1.0.1" -"fineui-materials@git+ssh://git@cloud.finedevelop.com:7999/fui/fineui-materials.git#release/10.0": - version "1.0.0" - resolved "git+ssh://git@cloud.finedevelop.com:7999/fui/fineui-materials.git#df3fd3821680cd28edbc5e03b6182d8d7021fc45" - dependencies: - "@types/codemirror" "0.0.77" - codemirror "5.49.0" - -"fineui@git+ssh://git@cloud.finedevelop.com:7999/visual/fineui.git": - version "1.1.2" - resolved "git+ssh://git@cloud.finedevelop.com:7999/visual/fineui.git#9463c7fbf77e9636945a4b08eff8c30cf8664425" +fineui@^2.0.20200628140334: + version "2.0.20200628140334" + resolved "https://registry.npm.taobao.org/fineui/download/fineui-2.0.20200628140334.tgz#9280889789402c8f731792279eeb6e43d95e6bdb" + integrity sha1-koCIl4lALI9zF5InnutuQ9lea9s= flat-cache@^2.0.1: version "2.0.1"