From 52b159e5d0913e615bc8b85861944080ddad483c Mon Sep 17 00:00:00 2001 From: NingWei Date: Mon, 25 Dec 2023 19:16:06 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=9C=A8APP=E5=86=85?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E6=96=87=E4=BB=B6=EF=BC=8C=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E5=B0=86=E4=B9=8B=E5=89=8D=E5=81=9A=E7=9A=84PDF=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E4=B9=9F=E5=88=87=E6=8D=A2=E5=88=B0=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E7=9A=84=E6=96=87=E4=BB=B6=E4=B8=8B=E8=BD=BD=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 11 +- app/release/output-metadata.json | 2 +- .../lab/container/HACCrashHandler.java | 3 + .../proxy/support/pdf/PDFPreviewActivity.java | 71 ++------ .../utilities/HACDownloadManager.java | 165 ++++++++++++++++++ .../container/utilities/MiscUtilities.java | 60 +++++++ .../webview/HACDownloadListener.java | 34 ++-- build.gradle | 4 +- 8 files changed, 277 insertions(+), 73 deletions(-) create mode 100644 app/src/main/java/com/huozige/lab/container/utilities/HACDownloadManager.java diff --git a/app/build.gradle b/app/build.gradle index 9051895..02256d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,15 +3,15 @@ plugins { } android { - compileSdk 33 + compileSdk 34 defaultConfig { applicationId "com.huozige.lab.container" minSdk 26 //noinspection ExpiredTargetSdkVersion - targetSdk 29 + targetSdk 29 // 超过29后,文件权限要大改 versionCode 4 - versionName '1.13.0-beta2' + versionName '1.14.0-beta1' manifestPlaceholders = [ JPUSH_PKGNAME : applicationId, @@ -42,10 +42,10 @@ apply plugin: 'com.google.gms.google-services' apply plugin: "realm-android" dependencies { - implementation 'com.google.firebase:firebase-analytics:21.3.0' + implementation 'com.google.firebase:firebase-analytics:21.5.0' implementation 'com.github.getActivity:XXPermissions:18.2' implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'com.google.android.material:material:1.9.0' + implementation 'com.google.android.material:material:1.11.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation files('libs/LPAPI-2021-02-02-R.jar') implementation 'com.zhihu.android:matisse:0.5.3-beta3' @@ -55,7 +55,6 @@ dependencies { implementation 'com.alibaba:fastjson:1.1.72.android' implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' implementation 'commons-io:commons-io:2.6' - implementation 'io.github.chiclaim:downloader:1.0.2' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'cn.jiguang.sdk:jpush:5.2.0' } \ No newline at end of file diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index 58d91ee..4db10dd 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -12,7 +12,7 @@ "filters": [], "attributes": [], "versionCode": 4, - "versionName": "1.13.0-beta1", + "versionName": "1.13.0-release", "outputFile": "app-release.apk" } ], diff --git a/app/src/main/java/com/huozige/lab/container/HACCrashHandler.java b/app/src/main/java/com/huozige/lab/container/HACCrashHandler.java index 8a9613f..7d23ffe 100644 --- a/app/src/main/java/com/huozige/lab/container/HACCrashHandler.java +++ b/app/src/main/java/com/huozige/lab/container/HACCrashHandler.java @@ -3,6 +3,7 @@ import android.app.Application; import android.content.Intent; import android.util.Log; +import android.widget.Toast; import androidx.annotation.NonNull; @@ -30,6 +31,8 @@ public void uncaughtException(@NonNull Thread thread, @NonNull Throwable throwab message+="\r\n"; message+=throwable.toString(); + Toast.makeText(this._context,message,Toast.LENGTH_LONG).show(); + Intent intent = new Intent(_context, ShowErrorActivity.class); intent.putExtra(ShowErrorActivity.EXTRA_KEY_MESSAGE, message); diff --git a/app/src/main/java/com/huozige/lab/container/proxy/support/pdf/PDFPreviewActivity.java b/app/src/main/java/com/huozige/lab/container/proxy/support/pdf/PDFPreviewActivity.java index 0f3cb01..ecb4ef8 100644 --- a/app/src/main/java/com/huozige/lab/container/proxy/support/pdf/PDFPreviewActivity.java +++ b/app/src/main/java/com/huozige/lab/container/proxy/support/pdf/PDFPreviewActivity.java @@ -1,27 +1,22 @@ package com.huozige.lab.container.proxy.support.pdf; -import android.app.DownloadManager; import android.net.Uri; import android.os.Bundle; -import android.os.Environment; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.ProgressBar; import android.widget.Toast; -import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; -import com.chiclaim.android.downloader.DownloadConstants; -import com.chiclaim.android.downloader.DownloadListener; -import com.chiclaim.android.downloader.DownloadRequest; import com.github.barteksc.pdfviewer.PDFView; import com.huozige.lab.container.R; +import com.huozige.lab.container.utilities.HACDownloadManager; import org.apache.commons.io.FilenameUtils; -import java.util.Objects; +import java.io.File; /** * 下载并预览PDF的页面 @@ -40,58 +35,28 @@ public class PDFPreviewActivity extends AppCompatActivity { PDFView _pdfView; ProgressBar _pbDownload; + Uri _uri; + /** * 启动下载 */ private void startDownload() { setTitle(R.string.title_pdf_downloading); - // 准备下载目录吗,确保其存在 - boolean ready= Environment - .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) - .mkdirs(); - - Log.v(LOG_TAG, "Download target dir is ready: "+ ready); - - // 创建下载请求,使用推荐的下载引擎 - DownloadRequest request = new DownloadRequest(this, _url, DownloadConstants.DOWNLOAD_ENGINE_EMBED); - - // 配置下载选项 - request.setIgnoreLocal(true) - .setNotificationTitle(this.getString(R.string.app_name)) - .setNotificationContent(_fileName) - .setNeedInstall(false) // 这个组件是为了下载apk使用的,默认会提示安装,这里需要关闭这个选项 - .setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN) - .setShowNotificationDisableTip(false) - .setDestinationUri(Uri.parse(FilenameUtils.concat(Objects.requireNonNull(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)).getPath(), _fileName))) // 固定采用用户提供的文件名 - .registerListener(new DownloadListener() { - @Override - public void onDownloadStart() { - Log.v(LOG_TAG, "Download task started: " + _url); - } - - @Override - public void onProgressUpdate(int i) { - setTitle(getString(R.string.title_pdf_downloading) + " (" + i + "/100)"); - } - - @Override - public void onDownloadComplete(@NonNull Uri uri) { - Log.v(LOG_TAG, "Download task completed: " + _url); - - // 读取PDF之前需要先申请权限 - renderPDF(uri); - } - - @Override - public void onDownloadFailed(@NonNull Throwable throwable) { - Log.e(LOG_TAG, "Download failed, Url: " + _url + " error: " + throwable); - - // 提示错误消息后关闭预览窗口 - Toast.makeText(PDFPreviewActivity.this, "下载过程中发生错误:" + throwable.getMessage(), Toast.LENGTH_LONG).show(); - PDFPreviewActivity.this.finish(); - } - }).startDownload(); + HACDownloadManager.getInstance(this).startDownloadTask(this, _url, new HACDownloadManager.IHACDownloadHandler() { + @Override + public void onSuccess(File targetFile) { + Log.v(LOG_TAG, "Download task completed: " + _url); + _uri = Uri.fromFile(targetFile); + renderPDF(_uri); + } + + @Override + public void onError(String fileName, String url) { + Log.v(LOG_TAG, "Download task failed: " + _url); + PDFPreviewActivity.this.finish(); + } + }); } /** diff --git a/app/src/main/java/com/huozige/lab/container/utilities/HACDownloadManager.java b/app/src/main/java/com/huozige/lab/container/utilities/HACDownloadManager.java new file mode 100644 index 0000000..d7f5f80 --- /dev/null +++ b/app/src/main/java/com/huozige/lab/container/utilities/HACDownloadManager.java @@ -0,0 +1,165 @@ +package com.huozige.lab.container.utilities; + +import static android.content.Context.DOWNLOAD_SERVICE; +import static android.content.Context.RECEIVER_NOT_EXPORTED; + +import android.app.DownloadManager; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.database.Cursor; +import android.net.Uri; +import android.os.Build; +import android.os.Environment; +import android.util.Log; +import android.webkit.CookieManager; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; + +/** + * 文件下载帮助类 + */ +public class HACDownloadManager { + + public interface IHACDownloadHandler{ + void onSuccess(File targetFile); + void onError(String fileName, String url); + } + + public static class HACDownloadTask{ + public long taskId; + public String url; + public String fileName; + public File targetFile; + public int statusCode; + private IHACDownloadHandler handler; + + public void registryHandler(IHACDownloadHandler handler) { + this.handler = handler; + } + + } + + static final String LOG_TAG = "HAC_DownloadManager"; // 日志的标识 + + static HACDownloadManager __instance; + + static final HashMap __taskList = new HashMap<>(); + + public static HACDownloadManager getInstance(Context context) { + + if(__instance !=null){ + return __instance; + } + + __instance = new HACDownloadManager(); + __instance._innerManager = (android.app.DownloadManager) context.getSystemService(DOWNLOAD_SERVICE); + __instance._receiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) { + + for (Map.Entry entry: __taskList.entrySet() + ) { + Cursor cursor = __instance._innerManager.query(new DownloadManager.Query().setFilterById(entry.getKey())); + + if (cursor != null) { + if (cursor.moveToFirst()) { + + HACDownloadTask task = entry.getValue(); + + int statusColumn = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS); + if (statusColumn >= 0) { + int status = cursor.getInt(statusColumn); + task.statusCode = status; + + switch (status) { + case DownloadManager.STATUS_FAILED: + Log.e(LOG_TAG, "文件下载失败:"+ task.fileName+",标识为"+task.taskId); + //下载失败 + task.handler.onError(task.fileName, task.url); + break; + case DownloadManager.STATUS_SUCCESSFUL: + Log.v(LOG_TAG, "文件下载成功:" + task.targetFile+",标识为"+task.taskId); + //下载成功 + task.handler.onSuccess(task.targetFile); + break; + } + } + } + cursor.close(); + } + } + } + } + }; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + context.registerReceiver(__instance._receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE), RECEIVER_NOT_EXPORTED); + } else { + context.registerReceiver(__instance._receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); + } + + return __instance; + } + + private DownloadManager _innerManager; + + private BroadcastReceiver _receiver; + + /** + * 执行下载 + * + * @param context 操作上下文 + * @param url 需要被下载的URL + * @param callback 下载成功的回调 + */ + public void startDownloadTask(Context context, String url, IHACDownloadHandler callback) { + + Log.v(LOG_TAG, "即将开始下载:" + url); + + HACDownloadTask task = new HACDownloadTask(); + task.url = url; + task.registryHandler(callback); + + // 0. 准备下载文件夹 + boolean isReady = Environment + .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + .mkdirs(); + + // 1. 处理文件名 + task.fileName = MiscUtilities.guessFileName(url); + task.targetFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), task.fileName); + + Log.v(LOG_TAG, "下载目录准备就绪:" + task.targetFile + "文件夹是否为本次新建:" + isReady); + + // 2. 配置下载选项 + android.app.DownloadManager.Request request = new android.app.DownloadManager.Request(Uri.parse(url)) + .setTitle(task.fileName) + .setNotificationVisibility(android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) + .setVisibleInDownloadsUi(true) + .setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, task.fileName) + .setAllowedOverMetered(true) + .setAllowedOverRoaming(true); + + request.allowScanningByMediaScanner(); + + // 3. 处理授权 + String cookieString = CookieManager.getInstance().getCookie(url); + request.addRequestHeader("cookie", cookieString); + + // 4. 启动下载 + android.app.DownloadManager downloadManager = (android.app.DownloadManager) context.getSystemService(DOWNLOAD_SERVICE); + task.taskId = downloadManager.enqueue(request); + + // 5. 加入列表 + __taskList.put(task.taskId, task); + + // 6. 记录日志 + Log.v(LOG_TAG, "文件下载启动,本次下载的标识为" + task.taskId); + } +} diff --git a/app/src/main/java/com/huozige/lab/container/utilities/MiscUtilities.java b/app/src/main/java/com/huozige/lab/container/utilities/MiscUtilities.java index 19921e7..dba60d6 100644 --- a/app/src/main/java/com/huozige/lab/container/utilities/MiscUtilities.java +++ b/app/src/main/java/com/huozige/lab/container/utilities/MiscUtilities.java @@ -1,5 +1,10 @@ package com.huozige.lab.container.utilities; +import android.webkit.URLUtil; + +import java.net.URL; + + public class MiscUtilities { /** @@ -20,4 +25,59 @@ public static String removeNonASCIIChars(String text) { return text.trim(); } + + /** + * 获取附件类URL的文件名 + * @param url URL地址 + * @return 如果是普通地址,则调用UrlUtil的算法,否则按照活字格的规则获取 + */ + public static String guessFileName(String url){ + return guessFileName(url,""); + } + + /** + * 获取附件类URL的文件名 + * @param url URL地址 + * @param contentDisposition Content-Disposition的内容 + * @return 如果是普通地址,则调用UrlUtil的算法,否则按照活字格的规则获取 + */ + public static String guessFileName(String url, String contentDisposition){ + + String fileName = URLUtil.guessFileName(url, contentDisposition, "application/octet-stream"); + + // 活字格的附件名存放在download的file参数中,如https://hac.app.hzgcloud.cn/demo/FileDownloadUpload/Download?file=47916819-f90e-47f8-8079-72df4fce78ac_AppLevelSecurityProvider.zip + if(url.toLowerCase().contains("/filedownloadupload/download?")){ + String hzgFileName = MiscUtilities.getUrlparameter(url,"file"); + if(hzgFileName!=null && hzgFileName.split("_").length>1){ + fileName = hzgFileName.replace(hzgFileName.split("_")[0]+"_",""); + } + } + + return fileName; + } + + public static String getUrlparameter(String urlString, String paraName) { + URL url; + try { + url = new URL(urlString); + String query = url.getQuery(); + String decodedQuery = java.net.URLDecoder.decode(query, "UTF-8"); + String[] params = decodedQuery.split("&"); + + for (String param : params) { + String[] keyValue = param.split("="); // 将参数拆分为 ["param1", "value1"] 或者 ["param2", "value2"] + + String key = keyValue[0]; // 参数的键 + String value = keyValue[1]; // 参数的值 + + if(key.equalsIgnoreCase(paraName)){ + return value; + } + } + } catch (Exception e) { + return null; + } + + return null; + } } diff --git a/app/src/main/java/com/huozige/lab/container/webview/HACDownloadListener.java b/app/src/main/java/com/huozige/lab/container/webview/HACDownloadListener.java index 1b6b3b8..549e991 100644 --- a/app/src/main/java/com/huozige/lab/container/webview/HACDownloadListener.java +++ b/app/src/main/java/com/huozige/lab/container/webview/HACDownloadListener.java @@ -1,15 +1,17 @@ package com.huozige.lab.container.webview; -import android.content.Intent; -import android.net.Uri; -import android.util.Log; +import android.app.Activity; import android.webkit.DownloadListener; +import android.widget.Toast; + +import com.huozige.lab.container.utilities.HACDownloadManager; + +import java.io.File; /** * 处理不同MIME,下载或直接展示 */ public class HACDownloadListener implements DownloadListener { - static final String LOG_TAG = "HAC_DownloadListener"; // 日志的标识 HACWebView _webView; public HACDownloadListener(HACWebView webView) { @@ -19,13 +21,23 @@ public HACDownloadListener(HACWebView webView) { @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { - Log.v(LOG_TAG, "当前页面地址的MIME无法在浏览器中打开,即将开始下载:" + url +"("+ mimetype+")"); - - // 浏览器无法直接渲染的MIME类型,调用系统浏览器进行下载 - Uri uri = Uri.parse(url); - Intent intent = new Intent(Intent.ACTION_VIEW, uri); - _webView.getContext().startActivity(intent); - + String oringTitle = this._webView.getTitle(); + ((Activity) this._webView.getContext()).setTitle("文件下载中,请稍等……"); + + // 执行下载 + HACDownloadManager.getInstance(this._webView.getContext()).startDownloadTask(this._webView.getContext(), url, new HACDownloadManager.IHACDownloadHandler() { + @Override + public void onSuccess(File targetFile) { + Toast.makeText(_webView.getContext(), "文件下载成功,保存到" + targetFile, Toast.LENGTH_LONG).show(); + ((Activity) _webView.getContext()).setTitle(oringTitle); + } + + @Override + public void onError(String fileName, String url) { + Toast.makeText(_webView.getContext(), "文件下载失败。", Toast.LENGTH_LONG).show(); + ((Activity) _webView.getContext()).setTitle(oringTitle); + } + }); } } diff --git a/build.gradle b/build.gradle index c47d6f9..4dedc0a 100644 --- a/build.gradle +++ b/build.gradle @@ -7,8 +7,8 @@ buildscript { google() // Google's Maven repository } dependencies { - classpath 'com.google.gms:google-services:4.3.15' - classpath "io.realm:realm-gradle-plugin:10.16.1" + classpath 'com.google.gms:google-services:4.4.0' + classpath "io.realm:realm-gradle-plugin:10.17.0" } } From 63c1c68b396649bbac9739a5117784320a8dfb17 Mon Sep 17 00:00:00 2001 From: NingWei Date: Tue, 26 Dec 2023 15:53:57 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E5=85=A8=E9=83=A8=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E4=B8=BA=E7=B3=BB=E7=BB=9F=E7=9A=84Downloadmanager?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 14 +++- .../proxy/support/pdf/PDFPreviewActivity.java | 9 ++- .../utilities/HACDownloadManager.java | 75 +++---------------- .../container/utilities/HACDownloadTask.java | 23 ++++++ .../utilities/HACFileDownloadedReceiver.java | 57 ++++++++++++++ .../container/utilities/MiscUtilities.java | 15 +--- .../webview/HACDownloadListener.java | 3 +- 7 files changed, 113 insertions(+), 83 deletions(-) create mode 100644 app/src/main/java/com/huozige/lab/container/utilities/HACDownloadTask.java create mode 100644 app/src/main/java/com/huozige/lab/container/utilities/HACFileDownloadedReceiver.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6d15333..14c6838 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,7 @@ + @@ -62,6 +63,15 @@ android:usesCleartextTraffic="true" tools:ignore="UnusedAttribute"> + + + + + + @@ -117,9 +127,7 @@ - - - + getTasks(){ + return __taskList; } - public static class HACDownloadTask{ - public long taskId; - public String url; - public String fileName; - public File targetFile; - public int statusCode; - private IHACDownloadHandler handler; - - public void registryHandler(IHACDownloadHandler handler) { - this.handler = handler; - } - + public static DownloadManager getDownloadManager(){ + return __instance._innerManager; } static final String LOG_TAG = "HAC_DownloadManager"; // 日志的标识 @@ -57,49 +42,10 @@ public static HACDownloadManager getInstance(Context context) { __instance = new HACDownloadManager(); __instance._innerManager = (android.app.DownloadManager) context.getSystemService(DOWNLOAD_SERVICE); - __instance._receiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - String action = intent.getAction(); - if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) { - - for (Map.Entry entry: __taskList.entrySet() - ) { - Cursor cursor = __instance._innerManager.query(new DownloadManager.Query().setFilterById(entry.getKey())); - - if (cursor != null) { - if (cursor.moveToFirst()) { - - HACDownloadTask task = entry.getValue(); - - int statusColumn = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS); - if (statusColumn >= 0) { - int status = cursor.getInt(statusColumn); - task.statusCode = status; - - switch (status) { - case DownloadManager.STATUS_FAILED: - Log.e(LOG_TAG, "文件下载失败:"+ task.fileName+",标识为"+task.taskId); - //下载失败 - task.handler.onError(task.fileName, task.url); - break; - case DownloadManager.STATUS_SUCCESSFUL: - Log.v(LOG_TAG, "文件下载成功:" + task.targetFile+",标识为"+task.taskId); - //下载成功 - task.handler.onSuccess(task.targetFile); - break; - } - } - } - cursor.close(); - } - } - } - } - }; + __instance._receiver = new HACFileDownloadedReceiver(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - context.registerReceiver(__instance._receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE), RECEIVER_NOT_EXPORTED); + context.registerReceiver(__instance._receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE), RECEIVER_EXPORTED); } else { context.registerReceiver(__instance._receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); } @@ -109,7 +55,7 @@ public void onReceive(Context context, Intent intent) { private DownloadManager _innerManager; - private BroadcastReceiver _receiver; + private HACFileDownloadedReceiver _receiver; /** * 执行下载 @@ -118,7 +64,7 @@ public void onReceive(Context context, Intent intent) { * @param url 需要被下载的URL * @param callback 下载成功的回调 */ - public void startDownloadTask(Context context, String url, IHACDownloadHandler callback) { + public void startDownloadTask(Context context, String url, String mimeType, HACDownloadTask.IHACDownloadHandler callback) { Log.v(LOG_TAG, "即将开始下载:" + url); @@ -132,7 +78,7 @@ public void startDownloadTask(Context context, String url, IHACDownloadHandler c .mkdirs(); // 1. 处理文件名 - task.fileName = MiscUtilities.guessFileName(url); + task.fileName = MiscUtilities.guessFileName(url,mimeType); task.targetFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), task.fileName); Log.v(LOG_TAG, "下载目录准备就绪:" + task.targetFile + "文件夹是否为本次新建:" + isReady); @@ -142,6 +88,7 @@ public void startDownloadTask(Context context, String url, IHACDownloadHandler c .setTitle(task.fileName) .setNotificationVisibility(android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) .setVisibleInDownloadsUi(true) + .setMimeType(mimeType) .setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, task.fileName) .setAllowedOverMetered(true) .setAllowedOverRoaming(true); diff --git a/app/src/main/java/com/huozige/lab/container/utilities/HACDownloadTask.java b/app/src/main/java/com/huozige/lab/container/utilities/HACDownloadTask.java new file mode 100644 index 0000000..38e269c --- /dev/null +++ b/app/src/main/java/com/huozige/lab/container/utilities/HACDownloadTask.java @@ -0,0 +1,23 @@ +package com.huozige.lab.container.utilities; + +import java.io.File; + +public class HACDownloadTask { + + public interface IHACDownloadHandler{ + void onSuccess(File targetFile); + void onError(String fileName, String url); + } + + public long taskId; + public String url; + public String fileName; + public File targetFile; + public int statusCode; + public IHACDownloadHandler handler; + + public void registryHandler(IHACDownloadHandler handler) { + this.handler = handler; + } + +} diff --git a/app/src/main/java/com/huozige/lab/container/utilities/HACFileDownloadedReceiver.java b/app/src/main/java/com/huozige/lab/container/utilities/HACFileDownloadedReceiver.java new file mode 100644 index 0000000..3c0c9ef --- /dev/null +++ b/app/src/main/java/com/huozige/lab/container/utilities/HACFileDownloadedReceiver.java @@ -0,0 +1,57 @@ +package com.huozige.lab.container.utilities; + +import android.app.DownloadManager; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.database.Cursor; +import android.util.Log; + +import java.util.Map; + +public class HACFileDownloadedReceiver extends BroadcastReceiver { + + static final String LOG_TAG = "HAC_HACFileDownloadedReceiver"; // 日志的标识 + + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) { + + for (Map.Entry entry: HACDownloadManager.getTasks().entrySet() + ) { + Cursor cursor = HACDownloadManager.getDownloadManager().query(new DownloadManager.Query().setFilterById(entry.getKey())); + + if (cursor != null) { + if (cursor.moveToFirst()) { + + HACDownloadTask task = entry.getValue(); + + int statusColumn = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS); + int reasonColumn = cursor.getColumnIndex(DownloadManager.COLUMN_REASON); + + if (statusColumn >= 0) { + int status = cursor.getInt(statusColumn); + int reason = cursor.getInt(reasonColumn); + task.statusCode = status; + HACDownloadManager.getTasks().remove(task.taskId); + switch (status) { + case DownloadManager.STATUS_FAILED: + Log.e(LOG_TAG, "文件下载失败:"+ task.fileName+",标识为"+task.taskId+",原因是"+reason); + //下载失败 + task.handler.onError(task.fileName, task.url); + break; + case DownloadManager.STATUS_SUCCESSFUL: + Log.v(LOG_TAG, "文件下载成功:" + task.targetFile+",标识为"+task.taskId); + //下载成功 + task.handler.onSuccess(task.targetFile); + break; + } + } + } + cursor.close(); + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/huozige/lab/container/utilities/MiscUtilities.java b/app/src/main/java/com/huozige/lab/container/utilities/MiscUtilities.java index dba60d6..4c611f2 100644 --- a/app/src/main/java/com/huozige/lab/container/utilities/MiscUtilities.java +++ b/app/src/main/java/com/huozige/lab/container/utilities/MiscUtilities.java @@ -29,21 +29,12 @@ public static String removeNonASCIIChars(String text) { /** * 获取附件类URL的文件名 * @param url URL地址 + * @param mimeType MIME * @return 如果是普通地址,则调用UrlUtil的算法,否则按照活字格的规则获取 */ - public static String guessFileName(String url){ - return guessFileName(url,""); - } - - /** - * 获取附件类URL的文件名 - * @param url URL地址 - * @param contentDisposition Content-Disposition的内容 - * @return 如果是普通地址,则调用UrlUtil的算法,否则按照活字格的规则获取 - */ - public static String guessFileName(String url, String contentDisposition){ + public static String guessFileName(String url, String mimeType){ - String fileName = URLUtil.guessFileName(url, contentDisposition, "application/octet-stream"); + String fileName = URLUtil.guessFileName(url, "", mimeType); // 活字格的附件名存放在download的file参数中,如https://hac.app.hzgcloud.cn/demo/FileDownloadUpload/Download?file=47916819-f90e-47f8-8079-72df4fce78ac_AppLevelSecurityProvider.zip if(url.toLowerCase().contains("/filedownloadupload/download?")){ diff --git a/app/src/main/java/com/huozige/lab/container/webview/HACDownloadListener.java b/app/src/main/java/com/huozige/lab/container/webview/HACDownloadListener.java index 549e991..b0c7970 100644 --- a/app/src/main/java/com/huozige/lab/container/webview/HACDownloadListener.java +++ b/app/src/main/java/com/huozige/lab/container/webview/HACDownloadListener.java @@ -5,6 +5,7 @@ import android.widget.Toast; import com.huozige.lab.container.utilities.HACDownloadManager; +import com.huozige.lab.container.utilities.HACDownloadTask; import java.io.File; @@ -25,7 +26,7 @@ public void onDownloadStart(String url, String userAgent, String contentDisposit ((Activity) this._webView.getContext()).setTitle("文件下载中,请稍等……"); // 执行下载 - HACDownloadManager.getInstance(this._webView.getContext()).startDownloadTask(this._webView.getContext(), url, new HACDownloadManager.IHACDownloadHandler() { + HACDownloadManager.getInstance(this._webView.getContext()).startDownloadTask(this._webView.getContext(), url,mimetype, new HACDownloadTask.IHACDownloadHandler() { @Override public void onSuccess(File targetFile) { Toast.makeText(_webView.getContext(), "文件下载成功,保存到" + targetFile, Toast.LENGTH_LONG).show(); From 298cb9a2422d2a1edf989aea0725570b01552b0b Mon Sep 17 00:00:00 2001 From: NingWei Date: Thu, 28 Dec 2023 11:51:05 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E5=A4=84=E7=90=86=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E7=9A=84=E5=90=8E=E7=BB=AD=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 3 +- app/release/output-metadata.json | 2 +- .../proxy/support/pdf/PDFPreviewActivity.java | 19 +++++-------- .../lab/container/utilities/FileNameInfo.java | 6 ++++ .../utilities/HACDownloadManager.java | 28 ++++++------------- .../container/utilities/HACDownloadTask.java | 6 ++-- .../utilities/HACFileDownloadedReceiver.java | 16 +++++++++-- .../container/utilities/MiscUtilities.java | 11 ++++++-- .../webview/HACDownloadListener.java | 12 ++++---- app/src/main/res/values/strings.xml | 4 +++ 10 files changed, 60 insertions(+), 47 deletions(-) create mode 100644 app/src/main/java/com/huozige/lab/container/utilities/FileNameInfo.java diff --git a/app/build.gradle b/app/build.gradle index 02256d2..cd4d14e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -53,8 +53,9 @@ dependencies { implementation 'com.github.jenly1314:zxing-lite:2.4.0' implementation 'com.github.david-serrano:locationprovider:1.2' implementation 'com.alibaba:fastjson:1.1.72.android' - implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' + implementation 'com.github.barteksc:android-pdf-viewer:3.2.0-beta.1' implementation 'commons-io:commons-io:2.6' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'cn.jiguang.sdk:jpush:5.2.0' + implementation 'com.squareup.okhttp3:okhttp:4.12.0' } \ No newline at end of file diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index 4db10dd..9458d6b 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -12,7 +12,7 @@ "filters": [], "attributes": [], "versionCode": 4, - "versionName": "1.13.0-release", + "versionName": "1.13.1-release", "outputFile": "app-release.apk" } ], diff --git a/app/src/main/java/com/huozige/lab/container/proxy/support/pdf/PDFPreviewActivity.java b/app/src/main/java/com/huozige/lab/container/proxy/support/pdf/PDFPreviewActivity.java index c6e8b1a..3cf9d61 100644 --- a/app/src/main/java/com/huozige/lab/container/proxy/support/pdf/PDFPreviewActivity.java +++ b/app/src/main/java/com/huozige/lab/container/proxy/support/pdf/PDFPreviewActivity.java @@ -17,8 +17,6 @@ import org.apache.commons.io.FilenameUtils; -import java.io.File; - /** * 下载并预览PDF的页面 */ @@ -36,8 +34,6 @@ public class PDFPreviewActivity extends AppCompatActivity { PDFView _pdfView; ProgressBar _pbDownload; - Uri _uri; - /** * 启动下载 */ @@ -46,17 +42,16 @@ private void startDownload() { HACDownloadManager.getInstance(this).startDownloadTask(this, _url, "application/pdf",new HACDownloadTask.IHACDownloadHandler() { @Override - public void onSuccess(File targetFile) { - Log.v(LOG_TAG, "Download task completed: " + _url +" to: "+targetFile); - Toast.makeText(PDFPreviewActivity.this,"PDF文件已成功下载,即将打开:"+targetFile, Toast.LENGTH_LONG).show(); - _uri = Uri.fromFile(targetFile); - renderPDF(_uri); + public void onSuccess(Uri localFileUri) { + Log.v(LOG_TAG, "Download task completed: " + _url +" to: "+ localFileUri); + Toast.makeText(PDFPreviewActivity.this,R.string.ui_message_pdf_downloaded+ _fileName, Toast.LENGTH_LONG).show(); + renderPDF(localFileUri); } @Override public void onError(String fileName, String url) { Log.v(LOG_TAG, "Download task failed: " + url +" name: "+ fileName); - Toast.makeText(PDFPreviewActivity.this,"PDF文件无法下载,请稍后重试:"+fileName, Toast.LENGTH_LONG).show(); + Toast.makeText(PDFPreviewActivity.this,R.string.ui_message_pdf_download_failed+fileName, Toast.LENGTH_LONG).show(); PDFPreviewActivity.this.finish(); } }); @@ -88,12 +83,12 @@ private void renderPDF(Uri pdfFile) { // 开始展示PDF config.load(); - Log.v(LOG_TAG, "PDF file was rendered."); + Log.v(LOG_TAG, "PDF file was rendered:" + pdfFile); } catch (Exception ex) { // 提示错误消息后关闭窗口 - Log.e(LOG_TAG, "Error on rendering PDF file: " + ex); + Log.e(LOG_TAG, "Error on rendering PDF file: " + pdfFile +" >> "+ex); Toast.makeText(PDFPreviewActivity.this, ex.getMessage(), Toast.LENGTH_LONG).show(); this.finish(); } diff --git a/app/src/main/java/com/huozige/lab/container/utilities/FileNameInfo.java b/app/src/main/java/com/huozige/lab/container/utilities/FileNameInfo.java new file mode 100644 index 0000000..c4da5b8 --- /dev/null +++ b/app/src/main/java/com/huozige/lab/container/utilities/FileNameInfo.java @@ -0,0 +1,6 @@ +package com.huozige.lab.container.utilities; + +public class FileNameInfo { + public String fileName; + public String mimeType; +} diff --git a/app/src/main/java/com/huozige/lab/container/utilities/HACDownloadManager.java b/app/src/main/java/com/huozige/lab/container/utilities/HACDownloadManager.java index 520dca2..e4b3611 100644 --- a/app/src/main/java/com/huozige/lab/container/utilities/HACDownloadManager.java +++ b/app/src/main/java/com/huozige/lab/container/utilities/HACDownloadManager.java @@ -24,10 +24,6 @@ public static HashMap getTasks(){ return __taskList; } - public static DownloadManager getDownloadManager(){ - return __instance._innerManager; - } - static final String LOG_TAG = "HAC_DownloadManager"; // 日志的标识 static HACDownloadManager __instance; @@ -41,7 +37,6 @@ public static HACDownloadManager getInstance(Context context) { } __instance = new HACDownloadManager(); - __instance._innerManager = (android.app.DownloadManager) context.getSystemService(DOWNLOAD_SERVICE); __instance._receiver = new HACFileDownloadedReceiver(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { @@ -53,8 +48,6 @@ public static HACDownloadManager getInstance(Context context) { return __instance; } - private DownloadManager _innerManager; - private HACFileDownloadedReceiver _receiver; /** @@ -72,32 +65,29 @@ public void startDownloadTask(Context context, String url, String mimeType, HACD task.url = url; task.registryHandler(callback); - // 0. 准备下载文件夹 - boolean isReady = Environment - .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) - .mkdirs(); - // 1. 处理文件名 - task.fileName = MiscUtilities.guessFileName(url,mimeType); - task.targetFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), task.fileName); - - Log.v(LOG_TAG, "下载目录准备就绪:" + task.targetFile + "文件夹是否为本次新建:" + isReady); + FileNameInfo fileInfo = MiscUtilities.guessFileName(url,mimeType); + task.fileName = fileInfo.fileName; + mimeType = fileInfo.mimeType; + File tempFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), task.fileName); + tempFile.deleteOnExit(); // 2. 配置下载选项 android.app.DownloadManager.Request request = new android.app.DownloadManager.Request(Uri.parse(url)) .setTitle(task.fileName) - .setNotificationVisibility(android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) + .setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) .setVisibleInDownloadsUi(true) - .setMimeType(mimeType) .setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, task.fileName) .setAllowedOverMetered(true) + .addRequestHeader("Accept-Content", mimeType) + .setMimeType(mimeType) .setAllowedOverRoaming(true); request.allowScanningByMediaScanner(); // 3. 处理授权 String cookieString = CookieManager.getInstance().getCookie(url); - request.addRequestHeader("cookie", cookieString); + request.addRequestHeader("Cookie", cookieString); // 4. 启动下载 android.app.DownloadManager downloadManager = (android.app.DownloadManager) context.getSystemService(DOWNLOAD_SERVICE); diff --git a/app/src/main/java/com/huozige/lab/container/utilities/HACDownloadTask.java b/app/src/main/java/com/huozige/lab/container/utilities/HACDownloadTask.java index 38e269c..deee2fd 100644 --- a/app/src/main/java/com/huozige/lab/container/utilities/HACDownloadTask.java +++ b/app/src/main/java/com/huozige/lab/container/utilities/HACDownloadTask.java @@ -1,18 +1,18 @@ package com.huozige.lab.container.utilities; -import java.io.File; +import android.net.Uri; public class HACDownloadTask { public interface IHACDownloadHandler{ - void onSuccess(File targetFile); + void onSuccess(Uri localFileUri); void onError(String fileName, String url); } public long taskId; public String url; public String fileName; - public File targetFile; + public int statusCode; public IHACDownloadHandler handler; diff --git a/app/src/main/java/com/huozige/lab/container/utilities/HACFileDownloadedReceiver.java b/app/src/main/java/com/huozige/lab/container/utilities/HACFileDownloadedReceiver.java index 3c0c9ef..2df7906 100644 --- a/app/src/main/java/com/huozige/lab/container/utilities/HACFileDownloadedReceiver.java +++ b/app/src/main/java/com/huozige/lab/container/utilities/HACFileDownloadedReceiver.java @@ -1,10 +1,14 @@ package com.huozige.lab.container.utilities; +import static android.content.Context.DOWNLOAD_SERVICE; + import android.app.DownloadManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.database.Cursor; +import android.net.Uri; + import android.util.Log; import java.util.Map; @@ -18,9 +22,11 @@ public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) { + DownloadManager dm = (android.app.DownloadManager) context.getSystemService(DOWNLOAD_SERVICE); + for (Map.Entry entry: HACDownloadManager.getTasks().entrySet() ) { - Cursor cursor = HACDownloadManager.getDownloadManager().query(new DownloadManager.Query().setFilterById(entry.getKey())); + Cursor cursor = dm.query(new DownloadManager.Query().setFilterById(entry.getKey())); if (cursor != null) { if (cursor.moveToFirst()) { @@ -40,11 +46,15 @@ public void onReceive(Context context, Intent intent) { Log.e(LOG_TAG, "文件下载失败:"+ task.fileName+",标识为"+task.taskId+",原因是"+reason); //下载失败 task.handler.onError(task.fileName, task.url); + break; case DownloadManager.STATUS_SUCCESSFUL: - Log.v(LOG_TAG, "文件下载成功:" + task.targetFile+",标识为"+task.taskId); + Log.v(LOG_TAG, "文件下载成功:" + task.fileName +",标识为"+task.taskId); //下载成功 - task.handler.onSuccess(task.targetFile); + + Uri target = dm.getUriForDownloadedFile(task.taskId); + task.handler.onSuccess(target); + break; } } diff --git a/app/src/main/java/com/huozige/lab/container/utilities/MiscUtilities.java b/app/src/main/java/com/huozige/lab/container/utilities/MiscUtilities.java index 4c611f2..56f1c79 100644 --- a/app/src/main/java/com/huozige/lab/container/utilities/MiscUtilities.java +++ b/app/src/main/java/com/huozige/lab/container/utilities/MiscUtilities.java @@ -3,6 +3,7 @@ import android.webkit.URLUtil; import java.net.URL; +import java.net.URLConnection; public class MiscUtilities { @@ -26,14 +27,16 @@ public static String removeNonASCIIChars(String text) { return text.trim(); } + /** * 获取附件类URL的文件名 * @param url URL地址 * @param mimeType MIME * @return 如果是普通地址,则调用UrlUtil的算法,否则按照活字格的规则获取 */ - public static String guessFileName(String url, String mimeType){ + public static FileNameInfo guessFileName(String url, String mimeType){ + // 默认实现 String fileName = URLUtil.guessFileName(url, "", mimeType); // 活字格的附件名存放在download的file参数中,如https://hac.app.hzgcloud.cn/demo/FileDownloadUpload/Download?file=47916819-f90e-47f8-8079-72df4fce78ac_AppLevelSecurityProvider.zip @@ -41,10 +44,14 @@ public static String guessFileName(String url, String mimeType){ String hzgFileName = MiscUtilities.getUrlparameter(url,"file"); if(hzgFileName!=null && hzgFileName.split("_").length>1){ fileName = hzgFileName.replace(hzgFileName.split("_")[0]+"_",""); + mimeType = URLConnection.guessContentTypeFromName(fileName); } } - return fileName; + FileNameInfo result = new FileNameInfo(); + result.fileName= fileName; + result.mimeType = mimeType; + return result; } public static String getUrlparameter(String urlString, String paraName) { diff --git a/app/src/main/java/com/huozige/lab/container/webview/HACDownloadListener.java b/app/src/main/java/com/huozige/lab/container/webview/HACDownloadListener.java index b0c7970..b6fb615 100644 --- a/app/src/main/java/com/huozige/lab/container/webview/HACDownloadListener.java +++ b/app/src/main/java/com/huozige/lab/container/webview/HACDownloadListener.java @@ -1,14 +1,14 @@ package com.huozige.lab.container.webview; import android.app.Activity; +import android.net.Uri; import android.webkit.DownloadListener; import android.widget.Toast; +import com.huozige.lab.container.R; import com.huozige.lab.container.utilities.HACDownloadManager; import com.huozige.lab.container.utilities.HACDownloadTask; -import java.io.File; - /** * 处理不同MIME,下载或直接展示 */ @@ -23,19 +23,19 @@ public HACDownloadListener(HACWebView webView) { public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { String oringTitle = this._webView.getTitle(); - ((Activity) this._webView.getContext()).setTitle("文件下载中,请稍等……"); + ((Activity) this._webView.getContext()).setTitle(R.string.title_pdf_downloading); // 执行下载 HACDownloadManager.getInstance(this._webView.getContext()).startDownloadTask(this._webView.getContext(), url,mimetype, new HACDownloadTask.IHACDownloadHandler() { @Override - public void onSuccess(File targetFile) { - Toast.makeText(_webView.getContext(), "文件下载成功,保存到" + targetFile, Toast.LENGTH_LONG).show(); + public void onSuccess(Uri targetFileUri) { + Toast.makeText(_webView.getContext(), R.string.ui_message_download_to_dir, Toast.LENGTH_LONG).show(); ((Activity) _webView.getContext()).setTitle(oringTitle); } @Override public void onError(String fileName, String url) { - Toast.makeText(_webView.getContext(), "文件下载失败。", Toast.LENGTH_LONG).show(); + Toast.makeText(_webView.getContext(), R.string.ui_message_download_failed, Toast.LENGTH_LONG).show(); ((Activity) _webView.getContext()).setTitle(oringTitle); } }); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5b17663..7722e19 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -64,4 +64,8 @@ PDF预览 浏览已下载的文件 关闭预览 + 文件传输完成,已保存到【下载】目录。 + 文件下载失败,这通常是因为网络不可用或临时中断,请稍后重试。 + PDF文件已成功下载,即将打开: + PDF文件无法下载,这通常是因为网络不可用或临时中断,请稍后重试: \ No newline at end of file From d32358a2d646308d43a486878ba1db91b718be55 Mon Sep 17 00:00:00 2001 From: NingWei Date: Thu, 28 Dec 2023 11:56:47 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E6=89=8B=E5=8A=A8=E5=90=88=E5=B9=B6PR#10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../container/webview/HACWebChromeClient.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/huozige/lab/container/webview/HACWebChromeClient.java b/app/src/main/java/com/huozige/lab/container/webview/HACWebChromeClient.java index 4b2f0a6..8642d57 100644 --- a/app/src/main/java/com/huozige/lab/container/webview/HACWebChromeClient.java +++ b/app/src/main/java/com/huozige/lab/container/webview/HACWebChromeClient.java @@ -12,6 +12,7 @@ import android.webkit.GeolocationPermissions; import android.webkit.JsPromptResult; import android.webkit.JsResult; +import android.webkit.PermissionRequest; import android.webkit.ValueCallback; import android.webkit.WebChromeClient; import android.webkit.WebView; @@ -176,14 +177,14 @@ public boolean onShowFileChooser(WebView webView, ValueCallback filePathC if (Arrays.asList(fileChooserParams.getAcceptTypes()).contains("image/*")) { // 兼容活字格官方Vant插件,支持“直接调出摄像头拍照上传”功能 - if(fileChooserParams.isCaptureEnabled()){ + if (fileChooserParams.isCaptureEnabled()) { ContentValues values = new ContentValues(); values.put(MediaStore.Images.Media.TITLE, this._title); _UriForImageCapture = this._context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, _UriForImageCapture); _imageCaptureChooser.launch(cameraIntent); - }else{ + } else { // 照片采用知乎的Matisse库,支持拍摄 Matisse.from(_context) .choose(MimeType.ofImage(), false) @@ -240,7 +241,7 @@ public void registryLaunchersOnCreated() { // 让页面接手处理,每一个ChooseFile都需要有配套的onReceiveValue事件 _filePathCallback.onReceiveValue(selectedFiles.toArray(new Uri[0])); - }else{ + } else { // 让页面接手处理,每一个ChooseFile都需要有配套的onReceiveValue事件 _filePathCallback.onReceiveValue(selectedFiles.toArray(new Uri[0])); } @@ -303,4 +304,16 @@ public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermiss }); } + /** + * 允许H5使用设备资源 + * @param request 权限请求 + */ + @Override + public void onPermissionRequest(PermissionRequest request) { + + // 不阻拦权限申请 + request.grant(request.getResources()); + request.getOrigin(); + } + } From 2987c19217d0d363a6bb0f85df5c908a499c89a0 Mon Sep 17 00:00:00 2001 From: NingWei Date: Fri, 29 Dec 2023 12:17:43 +0800 Subject: [PATCH 5/8] =?UTF-8?q?1.=20=E5=A2=9E=E5=8A=A0BLE=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=88=E5=AE=9E=E9=AA=8C=E6=80=A7=EF=BC=89=202.=20?= =?UTF-8?q?=E9=87=8D=E6=9E=84proxy=E7=9A=84=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 20 +- .../huozige/lab/container/MainActivity.java | 2 +- .../lab/container/proxy/AbstractProxy.java | 5 +- .../huozige/lab/container/proxy/AppProxy.java | 5 +- .../huozige/lab/container/proxy/BLEProxy.java | 311 ++++++++++++++++++ .../container/proxy/DothanPrinterProxy.java | 5 +- .../lab/container/proxy/IndexProxy.java | 5 +- .../huozige/lab/container/proxy/NfcProxy.java | 5 +- .../huozige/lab/container/proxy/PDAProxy.java | 5 +- .../lab/container/proxy/ProxyRegister.java | 2 + app/src/main/res/values/strings.xml | 3 + 11 files changed, 346 insertions(+), 22 deletions(-) create mode 100644 app/src/main/java/com/huozige/lab/container/proxy/BLEProxy.java diff --git a/app/build.gradle b/app/build.gradle index cd4d14e..937f590 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ android { //noinspection ExpiredTargetSdkVersion targetSdk 29 // 超过29后,文件权限要大改 versionCode 4 - versionName '1.14.0-beta1' + versionName '1.14.0-beta2' manifestPlaceholders = [ JPUSH_PKGNAME : applicationId, @@ -47,15 +47,15 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.11.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' - implementation files('libs/LPAPI-2021-02-02-R.jar') - implementation 'com.zhihu.android:matisse:0.5.3-beta3' - implementation 'com.github.bumptech.glide:glide:4.11.0' - implementation 'com.github.jenly1314:zxing-lite:2.4.0' - implementation 'com.github.david-serrano:locationprovider:1.2' - implementation 'com.alibaba:fastjson:1.1.72.android' - implementation 'com.github.barteksc:android-pdf-viewer:3.2.0-beta.1' implementation 'commons-io:commons-io:2.6' implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'cn.jiguang.sdk:jpush:5.2.0' - implementation 'com.squareup.okhttp3:okhttp:4.12.0' + implementation files('libs/LPAPI-2021-02-02-R.jar') // 德佟打印机 + implementation 'com.zhihu.android:matisse:0.5.3-beta3' // 图片选择 + implementation 'com.github.bumptech.glide:glide:4.11.0' // matisse依赖 + implementation 'com.github.jenly1314:zxing-lite:2.4.0' // 二维码识别 + implementation 'com.github.david-serrano:locationprovider:1.2' // 读取GPS + implementation 'com.alibaba:fastjson:1.1.72.android' // JSON处理 + implementation 'com.github.barteksc:android-pdf-viewer:3.2.0-beta.1' // 预览PDF + implementation 'cn.jiguang.sdk:jpush:5.2.0' // 极光推送 + implementation 'com.github.Jasonchenlijian:FastBle:2.4.0' // BLE设备 } \ No newline at end of file diff --git a/app/src/main/java/com/huozige/lab/container/MainActivity.java b/app/src/main/java/com/huozige/lab/container/MainActivity.java index 16b728c..0a0a56f 100644 --- a/app/src/main/java/com/huozige/lab/container/MainActivity.java +++ b/app/src/main/java/com/huozige/lab/container/MainActivity.java @@ -96,7 +96,7 @@ protected void onCreate(Bundle savedInstanceState) { br.setConfigManager(getConfigManager()); // 配置接口 br.setInterop(_webInterop); // WebInterop _webView.addJavascriptInterface(br,br.getName()); // 注册到浏览器 - br.onActivityCreated(); // 初始化以当前Activity为上下文的启动器,这一操作仅允许在当前阶段调用,否则会出错 + br.onActivityCreated(MainActivity.this); // 初始化以当前Activity为上下文的启动器,这一操作仅允许在当前阶段调用,否则会出错 } // 10. 初始化启动器 diff --git a/app/src/main/java/com/huozige/lab/container/proxy/AbstractProxy.java b/app/src/main/java/com/huozige/lab/container/proxy/AbstractProxy.java index 863d9bf..fc87c25 100644 --- a/app/src/main/java/com/huozige/lab/container/proxy/AbstractProxy.java +++ b/app/src/main/java/com/huozige/lab/container/proxy/AbstractProxy.java @@ -2,12 +2,15 @@ import android.content.Intent; +import androidx.appcompat.app.AppCompatActivity; + import com.huozige.lab.container.platform.AbstractWebInterop; import com.huozige.lab.container.utilities.ConfigManager; /** * JavaScript桥的抽象类 * 未来可以做更多功能,但暂时没有具体的实现 + * @noinspection unused */ public abstract class AbstractProxy { @@ -22,7 +25,7 @@ public abstract class AbstractProxy { /** * 需要注册到上下文中的初始化操作 */ - public void onActivityCreated(){ + public void onActivityCreated(AppCompatActivity activity){ } diff --git a/app/src/main/java/com/huozige/lab/container/proxy/AppProxy.java b/app/src/main/java/com/huozige/lab/container/proxy/AppProxy.java index b8f80f0..b5dc6f1 100644 --- a/app/src/main/java/com/huozige/lab/container/proxy/AppProxy.java +++ b/app/src/main/java/com/huozige/lab/container/proxy/AppProxy.java @@ -10,6 +10,7 @@ import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; +import androidx.appcompat.app.AppCompatActivity; import com.hjq.permissions.Permission; import com.huozige.lab.container.QuickConfigActivity; @@ -68,8 +69,8 @@ public String getName() { * 无需操作 */ @Override - public void onActivityCreated() { - _arcWoCallback = getInterop().getActivityContext().registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { + public void onActivityCreated(AppCompatActivity activity) { + _arcWoCallback = activity.registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { }); } diff --git a/app/src/main/java/com/huozige/lab/container/proxy/BLEProxy.java b/app/src/main/java/com/huozige/lab/container/proxy/BLEProxy.java new file mode 100644 index 0000000..5ce5d8f --- /dev/null +++ b/app/src/main/java/com/huozige/lab/container/proxy/BLEProxy.java @@ -0,0 +1,311 @@ +package com.huozige.lab.container.proxy; + +import android.bluetooth.BluetoothGatt; +import android.util.Log; +import android.webkit.JavascriptInterface; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.clj.fastble.BleManager; +import com.clj.fastble.callback.BleGattCallback; +import com.clj.fastble.callback.BleMtuChangedCallback; +import com.clj.fastble.callback.BleReadCallback; +import com.clj.fastble.callback.BleScanCallback; +import com.clj.fastble.callback.BleWriteCallback; +import com.clj.fastble.data.BleDevice; +import com.clj.fastble.exception.BleException; +import com.hjq.permissions.Permission; +import com.huozige.lab.container.R; +import com.huozige.lab.container.utilities.PermissionsUtility; + +import java.util.List; + +public class BLEProxy extends AbstractProxy { + + static final String LOG_TAG = "HAC_BLEProxy"; + + @Override + public String getName() { + return "ble"; + } + + private boolean checkBleErrors(String cellError) { + + if (!BleManager.getInstance().isSupportBle()) { + getInterop().setInputValue(cellError, "BLE_NOT_SUPPORTED"); + Toast.makeText(getInterop().getActivityContext(), R.string.ui_message_ble_na, Toast.LENGTH_LONG).show(); + return true; + } + + if (!BleManager.getInstance().isBlueEnable()) { + getInterop().setInputValue(cellError, "BLUETOOTH_DISABLED"); + Toast.makeText(getInterop().getActivityContext(), R.string.ui_message_ble_na, Toast.LENGTH_LONG).show(); + return true; + } + + return false; + } + + @JavascriptInterface + public void scan(String cellJSONList, String cellError) { + + PermissionsUtility.asyncRequirePermissions(getInterop().getActivityContext(), new String[]{ + Permission.ACCESS_FINE_LOCATION, + Permission.ACCESS_COARSE_LOCATION + }, () -> { + if (checkBleErrors(cellError)) { + return; + } + + BleManager.getInstance().scan(new BleScanCallback() { + @Override + public void onScanStarted(boolean success) { + Log.v(LOG_TAG, "Start scanning BLE devices"); + } + + @Override + public void onScanning(BleDevice bleDevice) { + Log.v(LOG_TAG, "BLE device was founded:" + bleDevice.getKey()); + } + + @Override + public void onScanFinished(List scanResultList) { + String json = "[]"; + if (scanResultList != null) { + json = JSON.toJSONString(scanResultList); + } + + Log.v(LOG_TAG, "Scan completed, BLE devices: " + json); + + getInterop().setInputValue(cellJSONList, json); + getInterop().setInputValue(cellError, ""); + } + }); + }); + } + + @JavascriptInterface + public void read(String mac, String uuid_service, String uuid_characteristic_read, String cellJSONData, String cellError) { + + PermissionsUtility.asyncRequirePermissions(getInterop().getActivityContext(), new String[]{ + Permission.ACCESS_FINE_LOCATION, + Permission.ACCESS_COARSE_LOCATION + }, () -> { + if (checkBleErrors(cellError)) { + return; + } + + BleManager.getInstance().connect(mac, new BleGattCallback() { + @Override + public void onStartConnect() { + + } + + @Override + public void onConnectFail(BleDevice bleDevice, BleException exception) { + Log.e(LOG_TAG, "Connecting failed, device: "+bleDevice+" detail: " + exception); + getInterop().setInputValue(cellJSONData, ""); + getInterop().setInputValue(cellError, exception.getDescription()); + + } + + @Override + public void onConnectSuccess(BleDevice bleDevice, BluetoothGatt gatt, int status) { + + Log.v(LOG_TAG, "Connected the device, ready for reading: " + bleDevice +" ,status: "+status); + + try { + Thread.sleep(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + BleManager.getInstance().read( + bleDevice, + uuid_service, + uuid_characteristic_read, + new BleReadCallback() { + @Override + public void onReadSuccess(byte[] data) { + String json = JSON.toJSONString(data); + + Log.v(LOG_TAG, "Reading completed, data: " + json); + getInterop().setInputValue(cellJSONData, json); + getInterop().setInputValue(cellError, ""); + } + + @Override + public void onReadFailure(BleException exception) { + Log.e(LOG_TAG, "Reading failed, detail: " + exception); + getInterop().setInputValue(cellJSONData, ""); + getInterop().setInputValue(cellError, exception.getDescription()); + } + }); + } + + @Override + public void onDisConnected(boolean isActiveDisConnected, BleDevice bleDevice, BluetoothGatt gatt, int status) { + Log.v(LOG_TAG, "Device disconnected: " + bleDevice +" ,status: "+status); + } + }); + } + ); + } + + @JavascriptInterface + public void write(String mac, String uuid_service, String uuid_characteristic_read, String arrayValue, String cellError) { + + Object[] source = JSONArray.parseArray(arrayValue).toArray(); + + byte[] data = new byte[source.length]; + + for(int i=0; i< source.length;i++){ + data[i] = (byte) source[i]; + } + + PermissionsUtility.asyncRequirePermissions(getInterop().getActivityContext(), new String[]{ + Permission.ACCESS_FINE_LOCATION, + Permission.ACCESS_COARSE_LOCATION + }, () -> { + if (checkBleErrors(cellError)) { + return; + } + + BleManager.getInstance().connect(mac, new BleGattCallback() { + @Override + public void onStartConnect() { + + } + + @Override + public void onConnectFail(BleDevice bleDevice, BleException exception) { + Log.e(LOG_TAG, "Connecting failed, device: "+bleDevice+" detail: " + exception); + getInterop().setInputValue(cellError, exception.getDescription()); + + } + + @Override + public void onConnectSuccess(BleDevice bleDevice, BluetoothGatt gatt, int status) { + + Log.v(LOG_TAG, "Connected the device, ready for writing: " + bleDevice +" ,status: "+status); + + try { + Thread.sleep(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + BleManager.getInstance().write( + bleDevice, + uuid_service, + uuid_characteristic_read, + data, + new BleWriteCallback() { + @Override + public void onWriteSuccess(int current, int total, byte[] justWrite) { + + Log.v(LOG_TAG, "Writing completed, total: " + total); + getInterop().setInputValue(cellError, ""); + } + + @Override + public void onWriteFailure(BleException exception) { + Log.e(LOG_TAG, "Writing failed, detail: " + exception); + + getInterop().setInputValue(cellError, exception.getDescription()); + } + }); + } + + @Override + public void onDisConnected(boolean isActiveDisConnected, BleDevice bleDevice, BluetoothGatt gatt, int status) { + Log.v(LOG_TAG, "Device disconnected: " + bleDevice +" ,status: "+status); + } + }); + } + ); + } + + @JavascriptInterface + public void setMTU(String mac, int mtu, String cellError) { + + PermissionsUtility.asyncRequirePermissions(getInterop().getActivityContext(), new String[]{ + Permission.ACCESS_FINE_LOCATION, + Permission.ACCESS_COARSE_LOCATION + }, () -> { + if (checkBleErrors(cellError)) { + return; + } + + BleManager.getInstance().connect(mac, new BleGattCallback() { + @Override + public void onStartConnect() { + + } + + @Override + public void onConnectFail(BleDevice bleDevice, BleException exception) { + Log.e(LOG_TAG, "Connecting failed, device: "+bleDevice+" detail: " + exception); + getInterop().setInputValue(cellError, exception.getDescription()); + + } + + @Override + public void onConnectSuccess(BleDevice bleDevice, BluetoothGatt gatt, int status) { + + Log.v(LOG_TAG, "Connected the device, ready for writing: " + bleDevice +" ,status: "+status); + + try { + Thread.sleep(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + BleManager.getInstance().setMtu( + bleDevice, + mtu, + new BleMtuChangedCallback() { + @Override + public void onSetMTUFailure(BleException exception) { + Log.e(LOG_TAG, "Setting MTU failed, detail: " + exception); + + getInterop().setInputValue(cellError, exception.getDescription()); + } + + @Override + public void onMtuChanged(int mtu) { + + } + + }); + } + + @Override + public void onDisConnected(boolean isActiveDisConnected, BleDevice bleDevice, BluetoothGatt gatt, int status) { + Log.v(LOG_TAG, "Device disconnected: " + bleDevice +" ,status: "+status); + } + }); + } + ); + } + + @Override + public void onActivityCreated(AppCompatActivity activity) { + + BleManager.getInstance().init(activity.getApplication()); + + BleManager.getInstance() + .enableLog(true) + .setReConnectCount(1, 5000) + .setSplitWriteNum(20) + .setConnectOverTime(10000) + .setOperateTimeout(5000); + + Log.v(LOG_TAG, "BLE manager is ready."); + + } + +} diff --git a/app/src/main/java/com/huozige/lab/container/proxy/DothanPrinterProxy.java b/app/src/main/java/com/huozige/lab/container/proxy/DothanPrinterProxy.java index e6ba41e..105d315 100644 --- a/app/src/main/java/com/huozige/lab/container/proxy/DothanPrinterProxy.java +++ b/app/src/main/java/com/huozige/lab/container/proxy/DothanPrinterProxy.java @@ -2,6 +2,8 @@ import android.webkit.JavascriptInterface; +import androidx.appcompat.app.AppCompatActivity; + import com.dothantech.lpapi.LPAPI; import com.dothantech.printer.IDzPrinter; @@ -19,13 +21,12 @@ public String getName() { } @Override - public void onActivityCreated(){ + public void onActivityCreated(AppCompatActivity activity){ _lpApi = LPAPI.Factory.createInstance(this.getInterop().getWebView()); } /** * 获取打印机的状态 - * * 0:正在连接打印机 * 1:打印机已连接 * 2:打印机已连接的情况下,再次连接该打印机以测试连接是否有效。如果有效的话,会发出该状态消息; diff --git a/app/src/main/java/com/huozige/lab/container/proxy/IndexProxy.java b/app/src/main/java/com/huozige/lab/container/proxy/IndexProxy.java index c93c34e..a72ca8f 100644 --- a/app/src/main/java/com/huozige/lab/container/proxy/IndexProxy.java +++ b/app/src/main/java/com/huozige/lab/container/proxy/IndexProxy.java @@ -6,6 +6,7 @@ import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; +import androidx.appcompat.app.AppCompatActivity; import com.king.zxing.CameraScan; import com.king.zxing.CaptureActivity; @@ -46,10 +47,10 @@ public String getName() { * 初始化过程:创建调用器 */ @Override - public void onActivityCreated(){ + public void onActivityCreated(AppCompatActivity activity){ // 创建到ZXingLite的调用器 - _arcZxingLite= getInterop().getActivityContext().registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { + _arcZxingLite= activity.registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { // 按照ZXingLite文档获取和解析扫码结果数据,如果出错或者取消,默认为空字符串,同官方APP Intent data = result.getData(); diff --git a/app/src/main/java/com/huozige/lab/container/proxy/NfcProxy.java b/app/src/main/java/com/huozige/lab/container/proxy/NfcProxy.java index e49fed5..e44f8ba 100644 --- a/app/src/main/java/com/huozige/lab/container/proxy/NfcProxy.java +++ b/app/src/main/java/com/huozige/lab/container/proxy/NfcProxy.java @@ -5,6 +5,7 @@ import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; +import androidx.appcompat.app.AppCompatActivity; import com.huozige.lab.container.proxy.support.scanner.NfcProxy_ReadingActivity; import com.huozige.lab.container.utilities.MiscUtilities; @@ -41,10 +42,10 @@ public void readTagId(String cellTag) { * 初始化过程:创建调用器 */ @Override - public void onActivityCreated() { + public void onActivityCreated(AppCompatActivity activity) { // 创建读取页面 - _arcScanner = getInterop().getActivityContext().registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { + _arcScanner = activity.registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { // 获取页面返回的结果 Intent data = result.getData(); diff --git a/app/src/main/java/com/huozige/lab/container/proxy/PDAProxy.java b/app/src/main/java/com/huozige/lab/container/proxy/PDAProxy.java index 951784e..a6f18d0 100644 --- a/app/src/main/java/com/huozige/lab/container/proxy/PDAProxy.java +++ b/app/src/main/java/com/huozige/lab/container/proxy/PDAProxy.java @@ -10,6 +10,7 @@ import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; +import androidx.appcompat.app.AppCompatActivity; import com.huozige.lab.container.proxy.support.scanner.PDAProxy_SingleScanActivity; import com.huozige.lab.container.utilities.MiscUtilities; @@ -47,10 +48,10 @@ public String getName() { * 初始化过程:创建调用器 */ @Override - public void onActivityCreated() { + public void onActivityCreated(AppCompatActivity activity) { // 创建Broadcast模式扫码页面 - _arcScanner = getInterop().getActivityContext().registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { + _arcScanner = activity.registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { // 获取页面返回的结果 Intent data = result.getData(); diff --git a/app/src/main/java/com/huozige/lab/container/proxy/ProxyRegister.java b/app/src/main/java/com/huozige/lab/container/proxy/ProxyRegister.java index ffa27a3..162ddb2 100644 --- a/app/src/main/java/com/huozige/lab/container/proxy/ProxyRegister.java +++ b/app/src/main/java/com/huozige/lab/container/proxy/ProxyRegister.java @@ -53,6 +53,8 @@ private ProxyRegister(){ this._proxies.add(new JPushProxy()); // 操作极光推送 + this._proxies.add(new BLEProxy()); // BLE设备 + __instance = this; } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7722e19..aa73911 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -68,4 +68,7 @@ 文件下载失败,这通常是因为网络不可用或临时中断,请稍后重试。 PDF文件已成功下载,即将打开: PDF文件无法下载,这通常是因为网络不可用或临时中断,请稍后重试: + 无法连接到蓝牙BLE设备,请确保设备已启动并且在接收范围呢。 + 无法从蓝牙BLE读写数据,请确认设备是否可以连接,服务与特征信息是否正确。 + 蓝牙BLE无法使用,请确认是否具备和启用该功能。 \ No newline at end of file From 4c9e9fd5ce84471526416ab90376a6cbdd0dab2a Mon Sep 17 00:00:00 2001 From: NingWei Date: Tue, 2 Jan 2024 19:36:47 +0800 Subject: [PATCH 6/8] =?UTF-8?q?1.=20=E5=AE=8C=E6=88=90BLE=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E9=AA=8C=E8=AF=81=202.=20=E6=94=AF=E6=8C=819.1?= =?UTF-8?q?=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- app/release/output-metadata.json | 2 +- app/src/main/AndroidManifest.xml | 3 + .../hzg_bundle_cache_9.0.103.0/forguncy.css | 5 + .../hzg_bundle_cache_9.0.103.0/forguncy.js | 208 + .../forguncyCalc.js | 133 + .../forguncyChart.js | 53 + .../hzg_bundle_cache_9.0.103.0/importExcel.js | 49 + .../hzg_bundle_cache_9.0.103.0/inputMan.css | 2 + .../hzg_bundle_cache_9.0.103.0/inputMan.js | 10 + .../hzg_bundle_cache_9.0.103.0/pvTable.js | 14 + .../hzg_bundle_cache_9.0.103.0/spread.css | 2 + .../hzg_bundle_cache_9.0.103.0/spread.js | 133 + .../Babel/7.10.4/polyfill.min.js | 1 + .../Bootstrap/ReadMe.txt | 41 + .../Bootstrap/css/bootstrap.css | 462 + .../Bootstrap/js/dropdown.js | 147 + .../Bootstrap/js/tab.js | 130 + .../Bootstrap/js/tooltip.js | 405 + .../Css/css-vars-ponyfill.js | 8 + .../Css/init-css-polyfill-in-ie.js | 5 + .../ECharts/Readme.txt | 1 + .../ECharts/chartTheme.js | 742 + .../ECharts/echarts.min.js | 45 + .../hzg_scripts_cache_9.0.103.0/EXIF/exif.js | 805 + .../InputManJS/gc.inputman-js.css | 1380 ++ .../InputManJS/gc.inputman-js.ja.js | 1566 ++ .../JQuery/jquery-3.6.0.min.js | 2 + .../JsEncrypt/jsencrypt.min.js | 1 + .../Postscribe/postscribe.min.js | 10 + .../SignalR/signalr.min.js | 2 + .../SignaturePad/signature_pad.umd.min.js | 6 + .../Simplebar/simplebar.css | 183 + .../Simplebar/simplebar.js | 10 + .../ja/gc.spread.sheets.resources.ja.js | 4633 +++++ .../ja/gc.spread.sheets.resources.ja.min.js | 19 + .../Vue/vue-3.2.37.dev.js | 15934 ++++++++++++++++ .../Vue/vue-3.2.37.prod.js | 1 + .../bigNumber/bignumber.js | 2902 +++ .../platform/hzg/HZGCacheFilter.java | 3 +- .../huozige/lab/container/proxy/BLEProxy.java | 320 +- .../proxy/support/scanner/BleError.java | 26 + .../scanner/BleProxy_ReadingActivity.java | 410 + .../res/layout/activity_ble_proxy_reading.xml | 56 + app/src/main/res/values/strings.xml | 2 + 45 files changed, 30598 insertions(+), 276 deletions(-) create mode 100644 app/src/main/assets/hzg_bundle_cache_9.0.103.0/forguncy.css create mode 100644 app/src/main/assets/hzg_bundle_cache_9.0.103.0/forguncy.js create mode 100644 app/src/main/assets/hzg_bundle_cache_9.0.103.0/forguncyCalc.js create mode 100644 app/src/main/assets/hzg_bundle_cache_9.0.103.0/forguncyChart.js create mode 100644 app/src/main/assets/hzg_bundle_cache_9.0.103.0/importExcel.js create mode 100644 app/src/main/assets/hzg_bundle_cache_9.0.103.0/inputMan.css create mode 100644 app/src/main/assets/hzg_bundle_cache_9.0.103.0/inputMan.js create mode 100644 app/src/main/assets/hzg_bundle_cache_9.0.103.0/pvTable.js create mode 100644 app/src/main/assets/hzg_bundle_cache_9.0.103.0/spread.css create mode 100644 app/src/main/assets/hzg_bundle_cache_9.0.103.0/spread.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/Babel/7.10.4/polyfill.min.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/Bootstrap/ReadMe.txt create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/Bootstrap/css/bootstrap.css create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/Bootstrap/js/dropdown.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/Bootstrap/js/tab.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/Bootstrap/js/tooltip.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/Css/css-vars-ponyfill.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/Css/init-css-polyfill-in-ie.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/ECharts/Readme.txt create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/ECharts/chartTheme.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/ECharts/echarts.min.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/EXIF/exif.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/InputManJS/gc.inputman-js.css create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/InputManJS/gc.inputman-js.ja.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/JQuery/jquery-3.6.0.min.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/JsEncrypt/jsencrypt.min.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/Postscribe/postscribe.min.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/SignalR/signalr.min.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/SignaturePad/signature_pad.umd.min.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/Simplebar/simplebar.css create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/Simplebar/simplebar.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/SpreadJS/resources/ja/gc.spread.sheets.resources.ja.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/SpreadJS/resources/ja/gc.spread.sheets.resources.ja.min.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/Vue/vue-3.2.37.dev.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/Vue/vue-3.2.37.prod.js create mode 100644 app/src/main/assets/hzg_scripts_cache_9.0.103.0/bigNumber/bignumber.js create mode 100644 app/src/main/java/com/huozige/lab/container/proxy/support/scanner/BleError.java create mode 100644 app/src/main/java/com/huozige/lab/container/proxy/support/scanner/BleProxy_ReadingActivity.java create mode 100644 app/src/main/res/layout/activity_ble_proxy_reading.xml diff --git a/app/build.gradle b/app/build.gradle index 937f590..3428165 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ android { //noinspection ExpiredTargetSdkVersion targetSdk 29 // 超过29后,文件权限要大改 versionCode 4 - versionName '1.14.0-beta2' + versionName '1.14.0-release' manifestPlaceholders = [ JPUSH_PKGNAME : applicationId, diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index 9458d6b..021877a 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -12,7 +12,7 @@ "filters": [], "attributes": [], "versionCode": 4, - "versionName": "1.13.1-release", + "versionName": "1.14.0-release", "outputFile": "app-release.apk" } ], diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 14c6838..fb1cb23 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,6 +62,9 @@ android:theme="@style/AppTheme" android:usesCleartextTraffic="true" tools:ignore="UnusedAttribute"> + .caret,.dropup>.btn>.caret{border-top-color:#000 !important}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#f00}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#f00}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1} +*{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}::placeholder{color:#a9a9a9 !important;opacity:1}:-ms-input-placeholder{color:#a9a9a9 !important}::-ms-input-placeholder{color:#a9a9a9 !important}input,select,textarea{font-family:inherit}a{text-decoration-line:inherit}div[fgc-exporting] div[fgc-no-styletemplate]>button{border:1px solid #696969;background:linear-gradient(#ececec,#d5d5d5)}button[forguncyattr],button[forguncyattr] label{cursor:pointer}input[othertext]{margin:2px}div[id$="_DropDownList"]{box-sizing:content-box}html{-webkit-text-size-adjust:100%}html,body{margin:0;padding:0;height:100%}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.tooltip-inner{background-color:#f00;white-space:pre-wrap;text-align:initial;max-width:205px}.default-inputContainer{display:block;vertical-align:text-top}.defaultHeaderStyle{font-size:14.67px;color:#000}input[type=password]:focus,input[type=text]:focus,input[type=number]:focus,input[type=date]:focus,input[type=time]:focus,textarea:focus{outline:none}a:focus{outline:none}.proceeBarTab{display:block;margin:0 2px 2px 2px;background-color:#f1f1f1;border:1px solid #a9a9a9;border-top-width:0;padding:2px 10px;border-bottom-left-radius:4px;border-bottom-right-radius:4px;white-space:nowrap}.proceeBarHistoryTable{border:1px solid #fff;border-collapse:collapse;margin:5px 20px 10px 20px}.proceeBarHistoryTable th{text-align:left;border-bottom:1px solid #dfdfdf;background-color:#fff;padding:5px;color:#aaa}.proceeBarHistoryTable td{border-right:1px dashed #e5e5e5;border-bottom:1px solid #e5e5e5;border-collapse:collapse;padding:5px;overflow:hidden}input,a,button,select{-webkit-tap-highlight-color:initial}.disableSelect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mobileButtonStyle{padding:6px}.scrollbar-measure{width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px}.nav-tabs{border-bottom:none}.nav-tabs>li>a{color:#000;overflow:hidden;margin:0;border-radius:0}.nav-tabs>li>a>span{display:block;margin:7px 10px}.nav-tabs>li:nth-child(n+2){margin-left:-1px}.nav-tabs>li{z-index:1}.nav-tabs>li.active{z-index:2}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#000}.fgc-float-left{float:left}.fgc-float-right{float:right}.fgc-textalign-left{text-align:left}.fgc-textalign-center{text-align:center}.fgc-textalign-right{text-align:right}.fgc-verticalalign-top{vertical-align:top}.fgc-verticalalign-middle{vertical-align:middle}.fgc-verticalalign-bottom{vertical-align:bottom}.fgc-whitespace-pre{white-space:pre}.fgc-display-block{display:block}.fgc-display-inline{display:inline}.fgc-display-none{display:none}.fgc-position-absolute{position:absolute}.fgc-overflow-hidden{overflow:hidden}.fgc-flex-justify-start{justify-content:flex-start}.fgc-flex-justify-center{justify-content:center}.fgc-flex-justify-end{justify-content:flex-end}.fgc-flex-items-start{align-items:flex-start}.fgc-flex-items-center{align-items:center}.fgc-flex-items-end{align-items:flex-end}div[data-cell-type="GeneralCellType"] .fgc-distributed{text-align:justify;text-align-last:justify}div[data-cell-type="GeneralCellType"] .fgc-distributed label{white-space:normal!important}.fgc-page-wrapper{position:relative;width:100%;height:100%}.fgc-inputbox{position:inherit;box-sizing:border-box;padding:0 2px;width:100%;height:100%;border:none}.fgc-inputbox:active,.fgc-inputbox:focus{border-radius:inherit}.fgc-inputbox:-webkit-autofill,.fgc-inputbox:-webkit-autofill:hover,.fgc-inputbox:-webkit-autofill:focus,.fgc-inputbox:-webkit-autofill:active{-webkit-box-shadow:0 0 0 100px white inset !important}.fgc-container-absolute{position:absolute;width:100%;height:100%;left:0;right:0;top:0;bottom:0}.fgc-container-relative{position:relative;width:100%;height:100%}.fgc-page-cover{position:fixed;top:0;left:0;width:100%;height:100%}.fgc-cell-tip__cover{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10000}.fgc-cell-tip__label{position:absolute;background-color:#00f;color:#fff;padding-left:5px;padding-right:5px;border:1px solid}.fgc-btn{display:block;width:100%;height:100%;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fgc-btn:disabled,.fgc-btn[disabled],.fgc-btn:disabled label,.fgc-btn[disabled] label{cursor:default !important}.fgc-flex-container{display:flex;width:100%;height:100%}.fgc-table{display:table;border-collapse:collapse;width:100%}.fgc-align{display:table;table-layout:fixed;min-width:100%;height:100%}.fgc-align__inner{display:table-cell;width:inherit;height:100%}.fgc-confirm-dialog__btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:130px}.fgc-barcode{width:100%;height:100%;background-repeat:no-repeat;background-position:50%;background-size:contain}.fgc-input-tooltip{position:absolute;border:1px solid #aaa;margin:5px;background-color:#fff;word-wrap:break-word;z-index:1031;box-shadow:0 2px 4px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12) !important;min-width:100px;max-width:200px;display:none}.fgc-input-tooltip__title{margin-left:5px;font-size:12px;font-weight:bold}.fgc-input-tooltip__message{margin-left:5px;font-size:12px;white-space:pre-wrap}.fgc-adjust-container{width:100%;height:100%}.fgc-adjust-container__content__inner{position:absolute;top:0}.fgc-notification-icon{position:absolute;margin-left:-20px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;text-align:center;font-style:normal;background-color:#f00;color:#fff;border-radius:10px}.fgc-notification-name-icon{position:absolute;right:0;padding:3px 7px;font-size:10px;font-weight:700;line-height:1;text-align:center;font-style:normal;background-color:#f00;color:#fff;border-radius:10px}.EdgeDefaultThemeBorder table[id$="_DropDownButton"]>tbody>tr>td,.EdgeFocusedThemeBorder table[id$="_DropDownButton"]>tbody>tr>td,.EdgeHoverThemeBorder table[id$="_DropDownButton"]>tbody>tr>td,.Win8FocusedThemeBorder table[id$="_DropDownButton"]>tbody>tr>td,.Win8HoverThemeBorder table[id$="_DropDownButton"]>tbody>tr>td,.Win8DefaultThemeBorder table[id$="_DropDownButton"]>tbody>tr>td,.EdgeDefaultThemeBorder table[id$="_SpinDownButton"]>tbody>tr>td,.EdgeFocusedThemeBorder table[id$="_SpinDownButton"]>tbody>tr>td,.EdgeHoverThemeBorder table[id$="_SpinDownButton"]>tbody>tr>td,.Win8FocusedThemeBorder table[id$="_SpinDownButton"]>tbody>tr>td,.Win8HoverThemeBorder table[id$="_SpinDownButton"]>tbody>tr>td,.Win8DefaultThemeBorder table[id$="_SpinDownButton"]>tbody>tr>td,.EdgeDefaultThemeBorder table[id$="_SpinUpButton"]>tbody>tr>td,.EdgeFocusedThemeBorder table[id$="_SpinUpButton"]>tbody>tr>td,.EdgeHoverThemeBorder table[id$="_SpinUpButton"]>tbody>tr>td,.Win8FocusedThemeBorder table[id$="_SpinUpButton"]>tbody>tr>td,.Win8HoverThemeBorder table[id$="_SpinUpButton"]>tbody>tr>td,.Win8DefaultThemeBorder table[id$="_SpinUpButton"]>tbody>tr>td{background-image:none !important}input[type="time"].in-simulator::-webkit-inner-spin-button,input[type="date"].in-simulator::-webkit-inner-spin-button{-webkit-appearance:none;display:none}input[type="time"].in-simulator:not(:focus)::-webkit-calendar-picker-indicator,input[type="date"].in-simulator:not(:focus)::-webkit-calendar-picker-indicator{-webkit-appearance:none;display:none}div[pivottableid]>table{font-size:0}.useFormatColor_red{color:#f00 !important}input:disabled,textarea:disabled,select:disabled{opacity:.7}.fgc-align-format-label{opacity:0}.fgc-format-label-show .fgc-align-format-label{opacity:1}.fgc-format-label-show .fgc-inputbox{opacity:0}.fgc-format-label-show [disabled] .fgc-align-format-label{opacity:.7}.fgc-tooltip-normalcell+.tooltip{left:50% !important;transform:translateX(-50%) !important;width:max-content;max-width:100%;min-width:min-content}.fgc-tooltip-normalcell+.tooltip.top{top:auto !important;bottom:100% !important;margin-top:auto !important;margin-bottom:3px}.fgc-tooltip-normalcell+.tooltip.bottom{top:100% !important;bottom:auto !important}.gc-theme-version{position:absolute;z-index:2013}div[forguncyattachment="true"]{color:#00f}.repeater-item-command{cursor:pointer}.tabCell-nav-tabs a{text-decoration:none} +:root{--FGC_Accent1:#0087cd;--FGC_ButtonPrimary:#1890ff;--FGC_ButtonHover:#40a9ff;--FGC_ButtonActive:#096dd9;--FGC_Accent1_RGB_Number:0,135,205;--FGC_ButtonPrimary_RGB_Number:24,144,255;--FGC_ButtonHover_RGB_Number:64,169,255;--FGC_ButtonActive_RGB_Number:9,109,217}.FUI-dialog-outer{position:absolute;left:0;top:0;width:0;height:0;transition:opacity .15s linear}.FUI-dialog-cover{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.3);z-index:100;user-select:none;-ms-user-select:none;opacity:0;transition:opacity .15s linear}.FUI-dialog-cover.FUI-show{opacity:1}.FUI-dialog{position:relative;z-index:100;width:36rem;height:21rem;display:flex;flex-direction:column;min-width:12rem;min-height:2rem;opacity:0;transition:opacity .15s linear;color:#333;background-color:#fff;background-clip:padding-box;border:0;border-radius:2px;box-shadow:0 3px 6px -4px rgba(0,0,0,.12),0 6px 16px rgba(0,0,0,.08),0 9px 28px 8px rgba(0,0,0,.05);pointer-events:auto}.FUI-dialog.FUI-show{opacity:1}.FUI-dialog-header{position:relative;display:flex;align-items:center;padding:8px;color:rgba(0,0,0,.85);background:#fff;border-bottom:1px solid #f0f0f0;border-radius:2px 2px 0 0;cursor:move;user-select:none;-ms-user-select:none}.FUI-dialog-header-title{margin:0;margin-left:8px;color:rgba(0,0,0,.85);font-weight:bold;font-size:16px;line-height:22px;word-wrap:break-word;flex-grow:1}.FUI-dialog-header-close{font-size:1.5rem;line-height:2rem;width:2rem;height:2rem;min-width:2rem;min-height:2rem;text-align:center;cursor:pointer;color:#696969;transition:all linear .15s;user-select:none;-ms-user-select:none}.FUI-dialog-header-close:hover{cursor:pointer;background-color:#f3f2f1}.FUI-dialog-content{position:relative;flex-grow:1;-ms-flex:auto}.FUI-dialog-footer{display:flex;flex-direction:row-reverse;align-items:center;position:relative;padding:10px 16px;text-align:right;background:0 0;border-top:1px solid #f0f0f0;border-radius:0 0 2px 2px}.FUI-dialog-footer .FUI-button{min-width:4rem;height:32px;padding:4px 24px;font-size:14px;border-radius:2px}.FUI-dialog-footer .FUI-button-group{overflow:hidden}.FUI-cursor-cover{position:fixed;left:0;top:0;width:100%;height:100%;z-index:10000000}.FUI-resize-up{position:absolute;height:5px;top:-2px;left:0;right:0;cursor:n-resize}.FUI-resize-down{position:absolute;height:5px;bottom:-2px;left:0;right:0;cursor:s-resize}.FUI-resize-left{position:absolute;width:5px;left:-2px;top:0;bottom:0;cursor:w-resize}.FUI-resize-right{position:absolute;width:5px;right:-2px;top:0;bottom:0;cursor:e-resize}.FUI-resize-nw{position:absolute;width:5px;height:5px;left:-2px;top:-2px;cursor:nw-resize}.FUI-resize-ne{position:absolute;width:5px;height:5px;right:-2px;top:-2px;cursor:ne-resize}.FUI-resize-sw{position:absolute;width:5px;height:5px;left:-2px;bottom:-2px;cursor:sw-resize}.FUI-resize-se{position:absolute;width:5px;height:5px;right:-2px;bottom:-2px;cursor:se-resize}.FUI-disable{position:relative;pointer-events:none;opacity:.62}.FUI-disable:after{content:"";position:absolute;left:0;top:0;width:100%;height:100%}.FUI-listbox{position:relative;flex-grow:1;overflow-y:auto;background-color:#f8f8f8}.FUI-listbox:focus .FUI-listbox-item.FUI-selected{color:#fff;background-color:#007bff;border-color:#007bff}.FUI-listbox-item{padding:.3rem .5rem;cursor:default;user-select:none;-ms-user-select:none}.FUI-listbox-item.FUI-selected{color:#000;background-color:#c8c8c8;border-color:#c8c8c8}.FUI-button{position:relative;display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;touch-action:manipulation;cursor:pointer}.FUI-button[disabled]{cursor:not-allowed}.FUI-button[disabled]>*{pointer-events:none}.FUI-button-default{line-height:1.5715;font-weight:400;white-space:nowrap;text-align:center;border:1px solid transparent;box-shadow:0 2px rgba(0,0,0,.02);transition:all .3s cubic-bezier(.645,.045,.355,1);height:32px;padding:4px 15px;font-size:14px;border-radius:2px;border-color:#d9d9d9;color:rgba(var(--FGC_ButtonActive_RGB_Number),.85);background:#fff}.FUI-button-default:hover,.FUI-button-default:focus{color:var(--FGC_ButtonHover);border-color:var(--FGC_ButtonHover);background:#fff}.FUI-button-default:active{color:var(--FGC_ButtonActive);border-color:var(--FGC_ButtonActive);background:#fff}.FUI-button-default[disabled],.FUI-button-default[disabled]:hover,.FUI-button-default[disabled]:focus,.FUI-button-default[disabled]:active{color:rgb(0,0,0,.25);border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.FUI-button-default:not([disabled]):active{box-shadow:none}.FUI-button-primary{color:#fff;border-color:var(--FGC_ButtonPrimary);background:var(--FGC_ButtonPrimary);text-shadow:0 -1px 0 rgba(0,0,0,.12);box-shadow:0 2px rgba(0,0,0,.04)}.FUI-button-primary:hover,.FUI-button-primary:focus{color:#fff;border-color:var(--FGC_ButtonHover);background:var(--FGC_ButtonHover)}.FUI-button-primary:active{color:#fff;border-color:var(--FGC_ButtonActive);background:var(--FGC_ButtonActive)}.FUI-button-primary[disabled],.FUI-button-primary[disabled]:hover,.FUI-button-primary[disabled]:focus,.FUI-button-primary[disabled]:active{color:rgb(0,0,0,.25);border-color:#d9d9d9;background:#f5f5f5;text-shadow:none;box-shadow:none}.FUI-button-primary:not([disabled]):active{box-shadow:none}.FUI-button-svg{display:inline-block}.FUI-button-svg svg{width:1rem;height:1rem;vertical-align:sub;margin-right:4px}.FUI-button-text{display:inline-block;white-space:nowrap}.FUI-flexlayout{display:flex}.FUI-inline-flex-layout{display:inline-flex}.FUI-flex-direction-row{flex-direction:row}.FUI-flex-direction-column{flex-direction:column}.FUI-flex-direction-row-reverse{flex-direction:row;justify-content:flex-end}.FUI-flex-direction-column-reverse{flex-direction:column;justify-content:flex-end}.FUI-flex-align-items-flex-start{align-items:flex-start}.FUI-flex-align-items-flex-end{align-items:flex-end}.FUI-flex-align-items-center{align-items:center}.FUI-flex-align-items-baseline{align-items:baseline}.FUI-flex-align-items-stretch{align-items:stretch}.FUI-button-group{display:flex}.FUI-button-group.FUI-flex-direction-row-reverse .FUI-button{margin-left:.3rem}.FUI-button-group.FUI-flex-direction-column .FUI-button{margin-bottom:.3rem}.FUI-contextmenu div{box-sizing:border-box}.FUI-contextmenu-outer{position:absolute;left:0;top:0;width:0;height:0}.FUI-contextmenu-cover{position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.3);z-index:200;user-select:none;-ms-user-select:none;opacity:0;transition:opacity .15s linear}.FUI-contextmenu{font-size:14px;min-width:10rem;left:0;top:0;border:1px solid #ccc;box-shadow:rgba(0,0,0,.2) 0 0 .5rem;background:#fff;z-index:201;padding:2px;border-radius:2px}.FUI-contextmenu-item{position:relative;padding:2px}.FUI-contextmenu-parent:after{content:"";position:absolute;right:.3rem;top:50%;transform:translateY(-50%);width:0;height:0;border-width:.3rem;border-style:solid;border-color:transparent transparent transparent #555}.FUI-contextmenu-button{padding:6px 16px 6px 8px;font-size:14px;color:#555;background-color:#fff;display:flex;align-items:center;cursor:default;line-height:1;user-select:none;border-radius:2px}.FUI-contextmenu-button:hover{background-color:#ededed}.FUI-contextmenu-button.FUI-disable:hover{background-color:#fff}.FUI-contextmenu-button:focus{outline:none}.FUI-contextmenu-button.FUI-focus{background-color:#cdcdcd}.FUI-contextmenu-button .FUI-button-svg{position:relative;width:1rem;height:1rem;margin-right:.5rem}.FUI-contextmenu-spliter{margin:0 .4rem;height:1px;border-top:1px solid #ccc}.FUI-progress{position:absolute;left:0;top:0;width:100%;height:100%;background:rgba(255,255,255,.8)}.spinner{position:absolute;left:0;top:0;right:0;bottom:0;margin:auto;font-size:1.25rem;width:1em;height:1em;border-radius:50%;box-shadow:inset 0 0 0 .1em rgba(58,168,237,.2);line-height:1}.spinner i{position:absolute;clip:rect(0,1em,1em,.5em);width:1em;height:1em;animation:a 1s ease-in-out infinite}.spinner i:after{position:absolute;clip:rect(0,1em,1em,.5em);width:1em;height:1em;content:"";animation:b 1s ease-in-out infinite;border-radius:50%;box-shadow:inset 0 0 0 .1em #3aa8ed}@keyframes a{0%{transform:rotate(0deg)}to{transform:rotate(180deg)}}@keyframes b{0%{transform:rotate(-180deg)}to{transform:rotate(180deg)}}.FUI-textblock{font-size:14px;user-select:none;-ms-user-select:none;line-height:1}.FUI-textblock.FUI-textblock-empty:before{content:attr(data-placeholder);color:#a9a9a9}.FUI-table table{border-spacing:0;width:100%;table-layout:fixed}.FUI-table table thead tr{color:#8c8c8c;background:#eef3f7;font-size:12px;font-weight:bold}.FUI-table table thead tr th{padding:2px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:30px}.FUI-table table thead tr th input,.FUI-table table tbody tr td input,.FUI-table table tbody tr{cursor:pointer}.FUI-table table thead tr th[column-align=left],.FUI-table table tbody tr td[column-align=left]{text-align:left}.FUI-table table thead tr th[column-align=right],.FUI-table table tbody tr td[column-align=right]{text-align:right}.FUI-table table tbody tr{font-size:12px;font-weight:normal;background:#f8fbff;color:rgb(0,0,0,.85)}.FUI-table table tbody tr:hover{background:rgba(218,244,255,.5)}.FUI-table table tbody tr.FUI-table-item-selected{background:#daf4ff}.FUI-table table tbody tr td{text-align:center;padding:8px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #eef3f7}.FUI-table table tbody tr td.FUI-table-action-column div{color:#48c4ff;background:#fff;border-radius:2px;border-color:#d9d9d9;border:1px solid #12a8da;padding:2px 0;display:inline-block;padding:3px 10px;margin-left:8px}.FUI-table table tbody tr td.FUI-table-action-column div:first-child{margin-left:0}.FUI-table table tbody tr td.FUI-table-action-column div:hover{color:#12a8da;background:#c2ecff border-box;border:1px solid #12a8da}.FUI-textarea{display:block;resize:vertical;line-height:1.5;box-sizing:border-box;width:100%;font-size:14px;padding:5px 5px;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.FUI-svgtext{font-size:14px;user-select:none;-ms-user-select:none;display:inline-flex;align-items:center;line-height:1}.FUI-svgtext-icon,.FUI-svgtext-suffix{display:inline-flex;align-items:center}.FUI-svgtext-icon svg,.FUI-svgtext-suffix svg{width:1rem;height:1rem}.FUI-svgtext-text{padding-left:.3rem;padding-right:.3rem}.FUI-imagetext{font-size:14px;user-select:none;-ms-user-select:none;display:inline-flex;align-items:center;line-height:1}.FUI-imagetext-icon{width:1rem;height:1rem}.FUI-imagetext-text{margin-left:.3rem}.FUI-treeview{position:relative;flex-grow:1;flex-basis:0;background-color:#fff;overflow:auto;-webkit-overflow-scrolling:touch}.FUI-treeview-content>.FUI-treeview-node{margin-left:0}.FUI-treeview-leaf-node .FUI-treeview-node-expand{visibility:hidden}.FUI-treeview-node{margin-left:.7rem;font-size:14px;padding:.2rem .4rem 0 .4rem}.FUI-treeview-node-children{display:none;overflow:hidden}.FUI-treeview-node-children.FUI-show{display:block}.FUI-treeview-node-content{display:flex}.FUI-treeview-node-expand{position:relative;display:inline-block;width:.8rem;height:.8rem;border:none;padding:0 4px;flex-shrink:0;align-items:center}.FUI-treeview-node-expand .FUI-button-svg:after{content:"";position:absolute;left:25%;top:50%;transform:translateY(-50%);width:0;height:0;border-width:.3rem;border-style:solid;border-color:transparent transparent transparent #555}.FUI-treeview-node-expand.FUI-checked .FUI-button-svg:after{content:"";position:absolute;left:50%;top:25%;transform:translateX(-50%);width:0;height:0;border-width:.3rem;border-style:solid;border-color:#555 transparent transparent transparent}.FUI-toggle{display:inline-flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none}.FUI-toggle-inner{cursor:pointer;user-select:none}.FUI-toggle-inner>input{cursor:pointer}.FUI-toggle-text{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.FUI-checkbox{font-size:14px;cursor:pointer}.FUI-radio{font-size:14px;cursor:pointer}.FUI-radio .FUI-toggle-inner{font-size:12px}.FUI-combobox{font-size:14px;line-height:1}.FUI-textbox{display:inline-block;position:relative;font-size:14px}.FUI-textbox-input{width:100%;height:100%}.FUI-textbox-suffix{position:absolute;right:10px;height:100%;display:inline-flex;align-items:center}.FUI-pagination{user-select:none;list-style:none;display:inline-block;vertical-align:top;font-size:0;padding:0;margin:0}.FUI-pagination ul{padding:0;display:inline-block}.FUI-pagination li{padding:0;background:#fff;vertical-align:top;display:inline-flex;align-items:center;font-size:13px;min-width:28px;height:28px;line-height:28px;cursor:pointer;box-sizing:border-box;text-align:center;margin:0}.FUI-pagination-item-active{color:var(--FGC_ButtonActive);font-weight:bold}.FUI-pagination li:hover{color:var(--FGC_ButtonHover);font-weight:bold}.FUI-datetimepicker input{height:100%}.FUI-datetimepicker .gcim-layout{border:1px solid rgba(0,0,0,.2);border-radius:4px}.FUI-datetimepicker .gcim-layout .gcim-icon{border-left:1px solid #ccc}.FUI-signature-pad-container canvas{border:1px solid #dcdfe6;border-radius:4px} +.fgc-popup-transparentcover>.FUI-dialog-cover{background-color:transparent}.fgc-drawer{position:fixed}.fgc-drawer>.FUI-dialog-content{max-width:100vw;max-height:100vh;overflow:auto}.fgc-drawer-includ-title .FUI-dialog-content{max-height:calc(100vh - 48px)}.fgc-drawer-ttb.FUI-show{animation:ttb-drawer-in .3s 1ms}.fgc-drawer-btt.FUI-show{animation:btt-drawer-in .3s 1ms}.fgc-drawer-ltr.FUI-show{animation:ltr-drawer-in .3s 1ms}.fgc-drawer-rtl.FUI-show{animation:rtl-drawer-in .3s 1ms}.fgc-drawer-ttb.FUI-disposing{animation:ttb-drawer-out .3s ease-in 1ms}.fgc-drawer-btt.FUI-disposing{animation:btt-drawer-out .3s ease-in 1ms}.fgc-drawer-ltr.FUI-disposing{animation:ltr-drawer-out .3s ease-in 1ms}.fgc-drawer-rtl.FUI-disposing{animation:rtl-drawer-out .3s ease-in 1ms}@keyframes ttb-drawer-in{0%{transform:translateY(-100%)}to{transform:translate(0)}}@keyframes ttb-drawer-out{0%{transform:translate(0)}to{transform:translateY(-100%)}}@keyframes btt-drawer-in{0%{transform:translateY(100%)}to{transform:translate(0)}}@keyframes btt-drawer-out{0%{transform:translate(0)}to{transform:translateY(100%)}}@keyframes ltr-drawer-in{0%{transform:translateX(-100%)}to{transform:translate(0)}}@keyframes ltr-drawer-out{0%{transform:translate(0)}to{transform:translateX(-100%)}}@keyframes rtl-drawer-in{0%{transform:translateX(100%)}to{transform:translate(0)}}@keyframes rtl-drawer-out{0%{transform:translate(0)}to{transform:translateX(100%)}}#fgc-popup-dialog[popuptype=dialog]{border-radius:.25rem .25rem 0 0}#fgc-popup-dialog[popuptype=drawer]{border-radius:0 0 0 0}#fgc-popup-dialog[popuptype=dialog]>.FUI-dialog-content,#fgc-popup-dialog[popuptype=dropdown]>.FUI-dialog-content{background-color:#fff}#fgc-popup-dialog{min-width:0;min-height:0}#fgc-confirmbox-icontext{padding:1.25rem;background-color:#fff;font-size:1rem;min-width:20rem;min-height:5rem}.mobile-confirm-container #fgc-confirmbox-icontext{width:90vw}.mobile-confirm-container #fgc-confirmbox-icontext .FUI-imagetext-text{white-space:pre-wrap}#fgc-confirmbox-icontext .FUI-imagetext-icon{width:3rem;height:3rem;min-height:3rem;margin-right:1rem}#fgc-confirmbox-icontext .FUI-imagetext-text{line-height:1rem;font-size:1rem;white-space:pre;align-self:center}#fgc-columnoptions-dialog{min-width:40rem;min-height:24rem}#fgc-columnoptions-dialog>.FUI-dialog-content{flex-grow:1;flex-shrink:1;flex-basis:0;display:flex;padding:.5rem 1rem .5rem .5rem}#fgc-columnoptions-outerflex{flex-grow:1;flex-shrink:1;flex-basis:0}#fgc-columnoptions-availableflex,#fgc-columnoptions-selectedflex{flex-grow:1;flex-shrink:1;flex-basis:0;margin:.5rem}#fgc-columnoptions-availabletext,#fgc-columnoptions-selectedtext{padding:.1rem 0;color:#2f4f4f;margin-bottom:.2rem}#fgc-columnoptions-dialog>.FUI-dialog-content .FUI-listbox{flex-grow:1;flex-shrink:1;flex-basis:0}#fgc-columnoptions-dialog>.FUI-dialog-content .FUI-listbox-item{font-size:.8rem;padding:.4rem .6rem;word-wrap:break-word;word-break:break-word}#fgc-columnoptions-dialog>.FUI-dialog-content .FUI-button-group{padding-top:.5rem;margin-top:1.2rem}#fgc-columnoptions-dialog>.FUI-dialog-content .FUI-button{padding:.3rem .5rem}#fgc-columnoptions-dialog>.FUI-dialog-content .FUI-button svg{width:.625rem;height:.625rem}#fgc-columnoptions-button-reset{position:absolute;left:.7rem}#fgc-columnoptions-button-add,#fgc-columnoptions-button-remove,#fgc-columnoptions-button-up,#fgc-columnoptions-button-down{width:2rem;height:2rem}#fgc-columnoptions-button-add .FUI-button-svg,#fgc-columnoptions-button-remove .FUI-button-svg,#fgc-columnoptions-button-up .FUI-button-svg,#fgc-columnoptions-button-down .FUI-button-svg{display:inline-flex}#fgc-columnoptions-button-add .FUI-button-svg svg,#fgc-columnoptions-button-remove .FUI-button-svg svg,#fgc-columnoptions-button-up .FUI-button-svg svg,#fgc-columnoptions-button-down .FUI-button-svg svg{margin-right:0}#fgc-basicfilter-dialog{width:24rem;height:32rem;min-height:10rem}#fgc-basicfilter-dialog>div.FUI-dialog-content{flex-grow:1;flex-shrink:1;flex-basis:0;display:flex;padding:10px 1rem;flex-direction:column}#fgc-basicfilter-dialog>div.FUI-dialog-content>.FUI-svgtext{margin-top:.5rem;color:#555}#fgc-basicfilter-treeview .FUI-toggle-text{white-space:pre-wrap;word-break:break-word;word-wrap:break-word;overflow:hidden}#fgc-columnfilter-blank-datetime>.FUI-toggle{margin-left:.8rem}#fgc-advancedfilter-dialog{width:26rem;height:15rem;min-width:26rem;min-height:15rem}#fgc-advancedfilter-dialog .FUI-dialog-content{display:flex;justify-content:center;align-items:center;flex-grow:1}#fgc-advancedfilter-outerflex{margin:.7rem;flex-grow:1}#fgc-advancedfilter-targetname{font-weight:bold}#fgc-advancedfilter-titleflex .FUI-textblock:nth-child(1){color:#444;margin-left:.3rem}#fgc-advancedfilter-contentflex{margin-top:.8rem;flex-grow:1;flex-shrink:1;flex-basis:1.6rem;justify-content:center;align-items:center}#fgc-advancedfilter-contentflex>.FUI-textblock{height:.8rem;margin-left:.3rem;margin-right:.3rem}#fgc-advancedfilter-contentflex>.FUI-textbox{height:2rem;margin-left:.3rem;margin-right:.3rem;flex-shrink:1;flex-grow:1;flex-basis:0;width:30%}#fgc-advancedfilter-contentflex>.FUI-combobox{height:2rem;margin-left:.3rem;margin-right:.3rem}#fgc-advancedfilter-example{color:#999;margin:.5rem .3rem 0 .3rem}.fgc-checkbox-modern{margin-left:.2rem}.fgc-checkbox-modern>.FUI-toggle-text{margin-left:.25rem}.fgc-checkbox-modern>.FUI-toggle-inner{position:relative;border:1px solid #aaadb4;border-radius:2px;box-sizing:border-box;width:14px;min-width:14px;height:14px;background-color:#fff;z-index:1;line-height:1;color:#409eff;transition:all .3s cubic-bezier(.645,.045,.355,1)}.fgc-checkbox-modern>.FUI-toggle-inner:hover{border-color:currentColor}.fgc-checkbox-modern>.FUI-toggle-inner>input{position:absolute;opacity:0;margin:0;padding:0}.fgc-checkbox-modern>.FUI-toggle-inner::after{box-sizing:content-box;content:"";border:1.6px solid currentColor;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:3px;transition:transform .15s ease-in .05s;transform-origin:center}.fgc-checkbox-modern.FUI-focus>.FUI-toggle-inner{border-color:currentColor}.fgc-checkbox-modern.FUI-checked.FUI-focus>.FUI-toggle-inner{box-shadow:0 0 3px 2px rgba(74,144,226,.5)}.fgc-checkbox-modern.FUI-checked.FUI-focus:hover>.FUI-toggle-inner{box-shadow:none !important}.fgc-checkbox-modern.FUI-checked>.FUI-toggle-inner::after{transform:rotate(45deg) scaleY(1)}.fgc-checkbox-modern.FUI-checked>.FUI-toggle-inner{background-color:currentColor;border-color:currentColor}.fgc-radio-modern{margin-left:.2rem}.fgc-radio-modern>.FUI-toggle-text{margin-left:.25rem}.fgc-radio-modern>.FUI-toggle-inner{border:1px solid #aaadb4;border-radius:100%;width:14px;min-width:14px;height:14px;background-color:#fff;position:relative;display:inline-block;box-sizing:border-box;color:#409eff;transition:all .3s cubic-bezier(.645,.045,.355,1)}.fgc-radio-modern>.FUI-toggle-inner:hover{border-color:currentColor}.fgc-radio-modern>.FUI-toggle-inner>input{opacity:0;margin:0;padding:0}.fgc-radio-modern>.FUI-toggle-inner::after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in}.fgc-radio-modern.FUI-focus>.FUI-toggle-inner{border-color:currentColor}.fgc-radio-modern.FUI-checked>.FUI-toggle-inner::after{transform:translate(-50%,-50%) scale(1)}.fgc-radio-modern.FUI-checked>.FUI-toggle-inner{background-color:currentColor;border-color:currentColor}.fgc-radio-modern.FUI-checked.FUI-focus>.FUI-toggle-inner{box-shadow:0 0 3px 2px rgba(74,144,226,.5)}.fgc-radio-modern.FUI-checked.FUI-focus:hover>.FUI-toggle-inner{box-shadow:none !important}.fgc-toggle-switch{margin:.2rem}.fgc-toggle-switch>.FUI-toggle-text{margin-left:.2rem}.fgc-toggle-switch>.FUI-toggle-inner{margin:0;position:relative;width:40px;min-width:40px;height:20px;border:1px solid #dcdfe6;border-radius:10px;box-sizing:border-box;background:hsl(222,17%,88%);transition:all .3s;vertical-align:middle;line-height:20px;color:#409eff}.fgc-toggle-switch>.FUI-toggle-inner>input{opacity:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.fgc-toggle-switch>.FUI-toggle-inner::after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;transition:all .3s;width:16px;height:16px;background-color:currentColor}.fgc-toggle-switch.FUI-focus>.FUI-toggle-inner{box-shadow:0 0 3px 2px rgba(74,144,226,.5);outline:0}.fgc-toggle-switch.FUI-focus:hover>.FUI-toggle-inner{box-shadow:none !important}.fgc-toggle-switch.FUI-checked>.FUI-toggle-inner::after{left:100%;margin-left:-17px}.fgc-toggle-switch.FUI-checked>.FUI-toggle-inner{border-color:currentColor;background-color:currentColor}.fgc-toggle-button{display:flex;border:1px solid #dcdfe6;text-align:center;box-sizing:border-box;margin:0;outline:none;border-radius:0;transition:all .3s cubic-bezier(.645,.045,.355,1);width:100%;height:100%;overflow:hidden}.fgc-toggle-button:hover>.FUI-toggle-text{color:currentColor}.fgc-toggle-button.FUI-focus{border-color:currentColor}.fgc-toggle-button>.FUI-toggle-inner{margin:0;width:0;height:0;padding:0}.fgc-toggle-button>.FUI-toggle-inner>input{opacity:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.fgc-toggle-button.FUI-checked{border-color:currentColor;background-color:currentColor}.fgc-toggle-button.FUI-checked.FUI-focus{box-shadow:0 0 3px 2px rgba(74,144,226,.5)}.fgc-toggle-button.FUI-checked.FUI-focus:hover{box-shadow:none !important}.fgc-toggle-button.FUI-disable{border-color:#dcdfe6}.fgc-toggle-button>.FUI-toggle-text{color:#000;transition:color .3s cubic-bezier(.645,.045,.355,1)}.fgc-toggle-groupbutton{display:inline-flex;justify-content:center;position:relative;width:auto;height:auto;padding:5px 10px;z-index:1}.fgc-toggle-groupbutton:hover{z-index:2}.fgc-toggle-groupbutton:hover.FUI-focus{z-index:3}.fgc-toggle-groupbutton.FUI-focus{z-index:3}.fgc-toggle-groupbutton.FUI-checked{z-index:4}.fgc-toggle-groupbutton.FUI-checked:hover{z-index:5}.fgc-toggle-groupbutton.FUI-checked.FUI-focus{z-index:6}.fgc-grid .fgc-toggle-groupbutton{width:100%;height:100%}.fgc-grid .fgc-toggle-groupbutton .FUI-toggle-text{overflow:hidden;text-overflow:ellipsis}.fgc-toggle-exporting{display:inline-table;vertical-align:middle;margin-left:.2rem;font-size:0}.fgc-toggle-exporting>.FUI-toggle-inner{display:table-cell;vertical-align:middle;width:14px;height:14px;font-size:0}.fgc-toggle-exporting>.FUI-toggle-inner>input{opacity:0;position:absolute;width:1px;height:1px;font-size:0}.fgc-toggle-exporting>.FUI-toggle-inner>span{width:14px;height:14px;font-size:0}.fgc-toggle-exporting>.FUI-toggle-text{display:table-cell;vertical-align:middle;padding-left:.2rem}.fgc-toggle-exporting+input[othertext]{vertical-align:middle}div[hasotheritem]>.fgc-toggle-exporting{vertical-align:middle} +@charset "UTF-8";.fgc-bpm-panel-actionbutton{display:inline-block;cursor:pointer}.fgc-bpm-panel-morebutton{display:inline-block;cursor:pointer}.fgc-bpm-panel-morebutton svg{width:1rem;height:100%;vertical-align:middle}#fgc-bpm-delegate-list-dialog{width:1260px;min-width:1260px;height:670px;font-size:12px}#fgc-bpm-delegate-list-dialog .FUI-dialog-content{overflow-y:auto;padding:16px 20px}#fgc-bpm-delegate-list-dialog .FUI-table .FUI-table-body-wrapper{overflow-y:auto;max-height:500px}#fgc-bpm-delegate-list-dialog .FUI-table thead tr{font-size:15.4px;height:38px;background:#f3f9fc}#fgc-bpm-delegate-list-dialog .FUI-dialog-footer{border-top:none}#fgc-bpm-create-delegate-dialog{width:750px;height:864px;min-width:750px;min-height:100px;font-size:14.67px}#fgc-bpm-create-delegate-dialog .FUI-dialog-content{overflow-y:auto;padding:0 20px}#fgc-bpm-create-delegate-dialog .fgc-bpm-create-delegate-dialog-group-title{height:28px;line-height:28px;background:#d7e9f3;padding-left:5px;font-size:14.67px}#fgc-bpm-create-delegate-dialog .fgc-bpm-create-delegate-dialog-group-tip{height:32px;line-height:32px;font-size:12px;margin-bottom:9px;color:#000}#fgc-bpm-create-delegate-dialog .fgc-bpm-create-delegate-dialog-group-item-delegate-time .FUI-textblock{font-size:14.67px;line-height:28px;height:28px;width:80px}#fgc-bpm-create-delegate-dialog .fgc-bpm-create-delegate-dialog-group-item-delegate-process .FUI-textblock{font-size:14.67px;line-height:28px;height:30px}#fgc-bpm-create-delegate-dialog .fgc-bpm-create-delegate-dialog-group-item-delegate-process .FUI-radio+.FUI-radio{margin-left:6px}#fgc-bpm-create-delegate-dialog .fgc-bpm-create-delegate-dialog-group-item-description{margin-top:40px}#fgc-bpm-create-delegate-dialog .fgc-bpm-create-delegate-dialog-group-item-description .fgc-bpm-create-delegate-dialog-group-content{padding:15px 1px}#fgc-bpm-create-delegate-dialog .fgc-bpm-create-delegate-dialog-group-content{padding:15px}#fgc-bpm-create-delegate-dialog .FUI-table .FUI-table-body-wrapper{overflow-y:auto;max-height:350px}#fgc-bpm-create-delegate-dialog .FUI-table thead tr{font-size:14px;height:30px;background:#edf9ff}#fgc-bpm-create-delegate-dialog .FUI-table thead tr th{font-weight:normal;color:#262626}#fgc-bpm-create-delegate-dialog .FUI-dialog-footer{border-top:none}#fgc-bpm-task-action-dialog{width:auto;height:auto;min-width:552px;min-height:160px}#fgc-bpm-task-action-dialog .FUI-dialog-content{overflow-y:auto;padding:16px 20px}#fgc-bpm-task-action-dialog .fgc-bpm-form-row+.fgc-bpm-form-row{margin-top:16px}#fgc-bpm-task-action-dialog .fgc-bpm-form-row .FUI-textblock{height:32px;line-height:32px}#fgc-bpm-task-action-dialog .fgc-bpm-form-row .fgc-bpm-form-row-title{height:20px;line-height:20px;font-weight:bold;margin-bottom:9px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}#fgc-bpm-task-action-dialog .fgc-bpm-form-field-name{margin-right:8px;width:52px;min-width:52px}#fgc-bpm-task-action-dialog .fgc-bpm-form-field-name-required:after{content:"*";color:#f00}#fgc-bpm-task-action-dialog .fgc-bpm-form-field-signature .FUI-signature-pad-container{width:100%}#fgc-bpm-task-action-dialog .fgc-bpm-form-field-signature .fgc-bpm-form-field-signature-operationalContainer{width:452px;justify-content:space-between;margin-top:10px}#fgc-bpm-task-action-dialog .fgc-bpm-form-field-signature .fgc-bpm-form-field-signature-useSavedSignature{height:28px;line-height:28px;font-size:13px;color:rgba(var(--FGC_ButtonActive_RGB_Number),.85);cursor:pointer}#fgc-bpm-task-action-dialog .fgc-bpm-form-field-signature .fgc-bpm-form-field-signature-useSavedSignature:hover{color:var(--FGC_ButtonHover)}#fgc-bpm-task-action-dialog .fgc-bpm-form-field-signature .fgc-bpm-form-field-signature-openSignatureDialog{border:none}#fgc-bpm-task-action-dialog .fgc-bpm-form-field-signature .fgc-bpm-form-field-signature-saveSignature{height:28px;line-height:18px;font-size:13px;margin-right:10px}#fgc-bpm-task-action-dialog .fgc-bpm-form-field-signature .fgc-bpm-form-field-signature-clearsignature{height:28px;line-height:18px;font-size:13px}#fgc-bpm-task-action-dialog .fgc-bpm-form-field-selectuser{width:0;flex-grow:1;border-bottom:1px solid #d7d7d7}#fgc-bpm-task-action-dialog .fgc-bpm-form-field-selectuser .FUI-textblock{overflow:hidden;text-overflow:ellipsis;flex:1;padding:0 0 0 8px;white-space:nowrap;cursor:pointer}#fgc-bpm-task-action-dialog .fgc-bpm-form-field-selectuser .FUI-button{border:none;color:#6b6b6b;padding-right:0}#fgc-bpm-task-action-dialog .fgc-bpm-form-field-selectuser .FUI-button:hover,#fgc-bpm-task-action-dialog .fgc-bpm-form-field-selectuser .FUI-button:focus{color:var(--FGC_ButtonHover)}#fgc-bpm-task-action-dialog .fgc-bpm-radiogroup .FUI-radio{margin:4px 0}#fgc-bpm-task-action-dialog .fgc-bpm-textblock-quote{color:#999;margin-bottom:16px;padding:12px 8px;border:1px solid rgba(160,160,160,.15);background-color:rgba(160,160,160,.1);border-radius:2px}#fgc-bpm-task-action-dialog .FUI-dialog-footer{padding-left:20px;padding-right:20px}#fgc-bpm-user-selector-dialog{width:680px;height:auto;min-width:32rem;min-height:230px;font-size:12px}#fgc-bpm-user-selector-dialog .FUI-dialog-header{border-bottom:none}#fgc-bpm-user-selector-dialog .FUI-dialog-content{overflow-y:auto}#fgc-bpm-user-selector-dialog .FUI-textbox{font-size:inherit}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-tabs{border-bottom:1px solid #f0f0f0;padding:0 15px}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-tabs .fgc-bpm-userselectordialog-tabs-item.FUI-button{font-size:13px;padding:0 15px;min-width:90px;text-align:center;height:23px}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-tabs .fgc-bpm-userselectordialog-tabs-item[active=true].FUI-button{border-bottom:2px solid var(--FGC_ButtonHover)}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-search{margin-bottom:15px;height:30px}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-search .FUI-textbox-input{border:1px solid #d7d7d7;padding:5px 10px;border-radius:4px;font-size:inherit}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-search .FUI-textbox-input::-ms-clear{display:none}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-search .FUI-textbox-input:hover{border-color:#00adee}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-search .FUI-textbox-suffix{color:#6b6b6b}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-search .FUI-textbox-suffix:hover{color:#00adee}#fgc-bpm-user-selector-dialog .FUI-table .FUI-table-body-wrapper{overflow-y:auto;max-height:350px;min-height:350px}#fgc-bpm-user-selector-dialog .FUI-table tr>th[data-key=UserName]:first-child,#fgc-bpm-user-selector-dialog .FUI-table tr>td[data-key=UserName]:first-child{padding-left:10px}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-treeview .FUI-svgtext{line-height:1.4;padding:4px 0}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-treeview .FUI-svgtext .FUI-svgtext-text{font-size:12px}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-treeview .FUI-svgtext-icon svg,#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-treeview .FUI-svgtext-suffix svg{width:14px;height:14px}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-treeview .FUI-treeview-node{padding:0}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-treeview .FUI-treeview-node-content{display:inline-flex;width:100%;align-items:center}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-treeview .FUI-treeview-node-content:hover{background:rgba(218,244,255,.5)}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-treeview .FUI-treeview-node-content:hover .FUI-treeview-node-expand{background:inherit}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-treeview .FUI-treeview-node-content:hover .FUI-treeview-node-children{background:#fff}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-treeview .FUI-selected{background:#daf4ff;color:#409eff}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-treeview .FUI-selected .FUI-treeview-node-expand{background:inherit;color:inherit}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-treeview .FUI-selected .FUI-treeview-node-children{background:#fff;color:#333}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-selection-title{margin:20px 0 10px 0}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-selection-area{max-height:135px;overflow-y:auto}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-selection-area div{background:#effaff;margin:2.5px;padding:4px 6px 4px 10px;border-radius:2px;color:#333;border:1px solid #b3e8ff;display:inline-flex;align-items:center}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-selection-area div:hover{background:#daf4ff}#fgc-bpm-user-selector-dialog .fgc-bpm-userselectordialog-selection-area div svg{color:#00adee;width:.7rem;height:1rem;cursor:pointer;margin-left:4px}#fgc-bpm-task-action-dialog-mobile{width:100vw;height:100vh;min-width:100vw;min-height:100vh;max-width:100vw;max-height:100vh;min-height:-webkit-fill-available;height:-webkit-fill-available;max-height:-webkit-fill-available;min-height:-moz-fill-available;height:-moz-fill-available;max-height:-moz-fill-available;position:fixed;left:0 !important;top:0 !important}#fgc-bpm-task-action-dialog-mobile .FUI-dialog-header{padding-right:40px}#fgc-bpm-task-action-dialog-mobile .FUI-dialog-header .FUI-dialog-header-title{text-align:center}#fgc-bpm-task-action-dialog-mobile .FUI-dialog-header .FUI-button-svg{display:inline-flex;align-items:center}#fgc-bpm-task-action-dialog-mobile .FUI-dialog-header .FUI-button-svg svg{width:.5rem}#fgc-bpm-task-action-dialog-mobile .FUI-dialog-footer .FUI-button-group{width:100%}#fgc-bpm-task-action-dialog-mobile .FUI-dialog-footer .FUI-button-group .FUI-button{width:100%;margin-left:0;border-radius:41px;height:46px;display:inline-flex;justify-content:center;align-items:center}#fgc-bpm-task-action-dialog-mobile .FUI-dialog-content{overflow-y:auto;padding:0}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-row{padding:10px 16px;border-bottom:1px solid #eef3f7}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-row .FUI-textblock{height:32px;line-height:32px}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-row .fgc-bpm-form-row-title{font-weight:normal;font-size:18px;height:46px;line-height:46px;margin-bottom:0}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-row+.fgc-bpm-form-row{margin-top:0}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-name{margin-right:8px;width:52px;min-width:52px}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-name-required:after{content:"*";color:#f00}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-signature .fgc-bpm-form-field-signature-signaturePadPlaceHolder{position:absolute;left:10px;color:#b2b2b2}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-signature .FUI-signature-pad-container{width:100%}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-signature .fgc-bpm-form-field-signature-operationalContainer{width:100%;justify-content:space-between;margin-top:10px}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-signature .fgc-bpm-form-field-signature-useSavedSignature{height:28px;line-height:28px;font-size:13px;color:rgba(var(--FGC_ButtonActive_RGB_Number),.85);cursor:pointer}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-signature .fgc-bpm-form-field-signature-useSavedSignature:hover{color:var(--FGC_ButtonHover)}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-signature .fgc-bpm-form-field-signature-openSignatureDialog{border:none;padding-right:0;padding-left:0}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-signature .fgc-bpm-form-field-signature-saveSignature,#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-signature .fgc-bpm-form-field-signature-clearsignature{height:28px;line-height:18px;font-size:13px;margin-left:10px}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-selectuser{width:100%;border-bottom:none}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-selectuser .FUI-textblock{overflow:hidden;text-overflow:ellipsis;flex:1;width:0;padding:0 0 0 8px;white-space:nowrap;cursor:pointer}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-selectuser .FUI-button{border:none;color:#6b6b6b;padding-right:0}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-selectuser .FUI-button:hover,#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-selectuser .FUI-button:focus{color:var(--FGC_ButtonHover)}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-selectuser .FUI-button-svg svg{width:.5rem}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-radiogroup .FUI-radio{margin:4px 0}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-textblock-quote{color:#999;margin-bottom:16px;padding:12px 8px;border:1px solid rgba(160,160,160,.15);background-color:rgba(160,160,160,.1);border-radius:2px}#fgc-bpm-task-action-dialog-mobile .fgc-bpm-form-field-remark .FUI-textarea{border:none}#fgc-bpm-task-action-dialog-mobile .FUI-table table{padding:0 16px}#fgc-bpm-task-action-dialog-mobile .FUI-table tbody tr td{border-bottom:1px solid #eef3f7}#fgc-bpm-task-action-dialog-mobile .FUI-table tbody tr td:first-child{padding-left:0}#fgc-bpm-task-action-dialog-mobile .FUI-table tbody tr td:last-child{padding-right:0}#fgc-bpm-user-selector-dialog-mobile{height:auto;min-width:32rem;min-height:230px;font-size:12px;width:100vw;height:100vh;min-width:100vw;min-height:100vh;max-width:100vw;max-height:100vh;min-height:-webkit-fill-available;height:-webkit-fill-available;max-height:-webkit-fill-available;min-height:-moz-fill-available;height:-moz-fill-available;max-height:-moz-fill-available;position:fixed;left:0 !important;top:0 !important}#fgc-bpm-user-selector-dialog-mobile .FUI-dialog-header{flex-shrink:0;padding-right:40px}#fgc-bpm-user-selector-dialog-mobile .FUI-dialog-header .FUI-dialog-header-title{text-align:center}#fgc-bpm-user-selector-dialog-mobile .FUI-dialog-header .FUI-button-svg{display:inline-flex;align-items:center}#fgc-bpm-user-selector-dialog-mobile .FUI-dialog-header .FUI-button-svg svg{width:.5rem}#fgc-bpm-user-selector-dialog-mobile .FUI-dialog-footer{flex-shrink:0}#fgc-bpm-user-selector-dialog-mobile .FUI-dialog-footer .FUI-button-group{width:100%}#fgc-bpm-user-selector-dialog-mobile .FUI-dialog-footer .FUI-button-group .FUI-button{width:100%;margin-left:0;border-radius:41px;height:46px;display:inline-flex;justify-content:center;align-items:center}#fgc-bpm-user-selector-dialog-mobile .FUI-dialog-content{overflow-y:hidden}#fgc-bpm-user-selector-dialog-mobile .FUI-dialog-content>div{height:100%}#fgc-bpm-user-selector-dialog-mobile .fgc-bpm-userselectordialog-search{margin-bottom:0;height:40px;flex:0;margin-bottom:10px;height:30px;margin-bottom:0;height:40px;flex:0}#fgc-bpm-user-selector-dialog-mobile .fgc-bpm-userselectordialog-search .FUI-textbox-input{font-size:inherit;border:none;border-bottom:1px solid #eef3f7;padding:10px 16px;border-radius:0}#fgc-bpm-user-selector-dialog-mobile .fgc-bpm-userselectordialog-search .FUI-textbox-input::-ms-clear{display:none}#fgc-bpm-user-selector-dialog-mobile .fgc-bpm-userselectordialog-search .FUI-textbox-input:hover{border-color:#00adee}#fgc-bpm-user-selector-dialog-mobile .fgc-bpm-userselectordialog-search .FUI-textbox-suffix{padding-right:5px;color:#6b6b6b}#fgc-bpm-user-selector-dialog-mobile .fgc-bpm-userselectordialog-search .FUI-textbox-suffix:hover{color:#00adee}#fgc-bpm-user-selector-dialog-mobile.fgc-bpm-userselectordialog-singlemode .FUI-table .FUI-table-body-wrapper{max-height:calc(100vh - 203px + 46px)}#fgc-bpm-user-selector-dialog-mobile .fgc-bpm-userselectordialog-selection-title{margin:0;padding:0 16px;border-top:1px solid #eef3f7;flex:0}#fgc-bpm-user-selector-dialog-mobile .fgc-bpm-userselectordialog-selection-title .FUI-textblock{width:100%;line-height:46px}#fgc-bpm-user-selector-dialog-mobile .fgc-bpm-userselectordialog-selection-title .FUI-svgtext-suffix svg{width:.5rem}#fgc-bpm-user-selector-dialog-mobile .FUI-table{overflow:auto}#fgc-bpm-user-selector-dialog-mobile .FUI-table .FUI-table-body-wrapper{overflow-y:auto;max-height:calc(100vh - 203px);min-height:100%}#fgc-bpm-user-selector-dialog-mobile .FUI-table table{padding:0 16px;overflow:auto}#fgc-bpm-user-selector-dialog-mobile .FUI-table table tbody td[data-key=info]{height:68px;text-align:left}#fgc-bpm-user-selector-dialog-mobile .FUI-table table tbody td[data-key=info] div[data-key=info-username]{font-size:16px;overflow:hidden;text-overflow:ellipsis}#fgc-bpm-user-selector-dialog-mobile .FUI-table table tbody td[data-key=info] div[data-key=info-email]{color:#a3a3a3;font-size:14px}#fgc-bpm-user-selector-dialog-mobile .FUI-table table tbody tr{background:inherit}#fgc-bpm-user-selector-dialog-mobile .FUI-table table tbody tr td{border-bottom:1px solid #eef3f7}#fgc-bpm-user-selector-dialog-mobile .FUI-table table tbody tr td:first-child{padding-left:0}#fgc-bpm-user-selector-dialog-mobile .FUI-table table tbody tr td:last-child{padding-right:0}#fgc-bpm-user-selector-dialog-mobile .FUI-textbox{font-size:inherit}#fgc-bpm-user-selection-list-dialog-mobile{border-radius:12px 12px 0 0}#fgc-bpm-user-selection-list-dialog-mobile .FUI-dialog-header{border-radius:12px 12px 0 0}#fgc-bpm-user-selection-list-dialog-mobile .FUI-dialog-header .FUI-dialog-header-title{font-weight:normal}#fgc-bpm-user-selection-list-dialog-mobile .FUI-dialog-header .FUI-button-svg{display:inline-flex;align-items:center}#fgc-bpm-user-selection-list-dialog-mobile .FUI-dialog-content{max-height:50vh}#fgc-bpm-user-selection-list-dialog-mobile .FUI-table{max-height:50vh;overflow:auto}#fgc-bpm-user-selection-list-dialog-mobile .FUI-table .FUI-table-body-wrapper{max-height:50vh;overflow-y:auto}#fgc-bpm-user-selection-list-dialog-mobile .FUI-table table{padding:0 16px}#fgc-bpm-user-selection-list-dialog-mobile .FUI-table table tbody td[data-key=info]{height:68px;text-align:left}#fgc-bpm-user-selection-list-dialog-mobile .FUI-table table tbody td[data-key=info] div[data-key=info-username]{font-size:16px;overflow:hidden;text-overflow:ellipsis}#fgc-bpm-user-selection-list-dialog-mobile .FUI-table table tbody td[data-key=info] div[data-key=info-email]{color:#a3a3a3;font-size:14px}#fgc-bpm-user-selection-list-dialog-mobile .FUI-table table tbody tr{background:inherit}#fgc-bpm-user-selection-list-dialog-mobile .FUI-table table tbody tr td{border-bottom:1px solid #eef3f7}#fgc-bpm-user-selection-list-dialog-mobile .FUI-table table tbody tr td:first-child{padding-left:0}#fgc-bpm-user-selection-list-dialog-mobile .FUI-table table tbody tr td:last-child{padding-right:0}#fgc-bpm-signature-pad-dialog-mobile{width:100vw;height:100vh;min-width:100vw;min-height:100vh;max-width:100vw;max-height:100vh;min-height:-webkit-fill-available;height:-webkit-fill-available;max-height:-webkit-fill-available;min-height:-moz-fill-available;height:-moz-fill-available;max-height:-moz-fill-available;position:fixed;left:0 !important;top:0 !important}#fgc-bpm-signature-pad-dialog-mobile .FUI-dialog-content{overflow-y:auto;padding:10px}#fgc-bpm-signature-pad-dialog-mobile .FUI-dialog-header{height:50px}#fgc-bpm-signature-pad-dialog-mobile .FUI-dialog-header .FUI-dialog-header-title{text-align:center}#fgc-bpm-signature-pad-dialog-mobile .FUI-dialog-header .FUI-button-svg{display:inline-flex;align-items:center}#fgc-bpm-signature-pad-dialog-mobile .FUI-dialog-header .FUI-button-svg svg{width:.5rem}#fgc-bpm-signature-pad-dialog-mobile .fgc-bpm-form-field-signature{width:100%;height:100%;align-items:center}#fgc-bpm-signature-pad-dialog-mobile .fgc-bpm-form-field-signature-portraitOperationalContainer{margin-top:10px;width:227px;user-select:none}#fgc-bpm-signature-pad-dialog-mobile .fgc-bpm-form-field-signature-portraitOperationalContainer .fgc-bpm-form-field-signature-saveSignature{left:66px}#fgc-bpm-signature-pad-dialog-mobile .fgc-bpm-form-field-signature-portraitOperationalContainer .fgc-bpm-form-field-signature-confirmsignature{left:33px}#fgc-bpm-signature-pad-dialog-mobile .fgc-bpm-form-field-signature-portraitOperationalContainer .fgc-bpm-form-field-signature-saveSignature,#fgc-bpm-signature-pad-dialog-mobile .fgc-bpm-form-field-signature-portraitOperationalContainer .fgc-bpm-form-field-signature-clearsignature,#fgc-bpm-signature-pad-dialog-mobile .fgc-bpm-form-field-signature-portraitOperationalContainer .fgc-bpm-form-field-signature-confirmsignature{transform:rotate(90deg);transform-origin:left top}#fgc-bpm-signature-pad-dialog-mobile .fgc-bpm-form-field-signature-landscapeOperationalContainer{height:227px;justify-content:space-between;margin-left:10px;margin-bottom:10px;user-select:none}#fgc-bpm-signature-pad-dialog-mobile .fgc-bpm-form-field-signature-landscapeOperationalContainer .fgc-bpm-form-field-signature-confirmsignature{margin-top:10px}#fgc-bpm-signature-pad-dialog-mobile .fgc-bpm-form-field-signature-saveSignature,#fgc-bpm-signature-pad-dialog-mobile .fgc-bpm-form-field-signature-clearsignature,#fgc-bpm-signature-pad-dialog-mobile .fgc-bpm-form-field-signature-confirmsignature{height:33px;width:80px;outline:none;-webkit-tap-highlight-color:rgba(0,0,0,0)} diff --git a/app/src/main/assets/hzg_bundle_cache_9.0.103.0/forguncy.js b/app/src/main/assets/hzg_bundle_cache_9.0.103.0/forguncy.js new file mode 100644 index 0000000..e1dba8f --- /dev/null +++ b/app/src/main/assets/hzg_bundle_cache_9.0.103.0/forguncy.js @@ -0,0 +1,208 @@ + +; +;var Forguncy;(function(n){var t,i;(function(n){n[n.Left=0]="Left";n[n.Center=1]="Center";n[n.Right=2]="Right";n[n.General=3]="General";n[n.Distributed=4]="Distributed"})(t=n.CellHorizontalAlignment||(n.CellHorizontalAlignment={})),function(n){n[n.Top=0]="Top";n[n.Center=1]="Center";n[n.Bottom=2]="Bottom"}(i=n.CellVerticalAlignment||(n.CellVerticalAlignment={}))})(Forguncy||(Forguncy={})) +;var Forguncy;(function(n){var t;(function(t){var r=function(){function t(){}return t.requestRSAPublicKey=function(t){n.Common.forguncyPost("Account/GetRSAPublicKey",null,function(i){(i===null||i===void 0?void 0:i.Result)?t(i.Result):alert(n.RS.Failed)},null,function(){alert(n.RS.Failed)})},t}(),i;t.SecurityManager=r;i=function(){function t(){}return t.encrypt=function(t,i,r){return n.ModuleLoader.LoadModels(["jsencrypt"],n.ForguncyData.ForguncyRoot).done(function(){var u=new JSEncrypt({}),n;if(u.setPublicKey(i),n=u.encrypt(t),n!==!1)r(n);else throw new Error("Can't encrypt password");})},t}();t.Encrypter=i})(t=n.Security||(n.Security={}))})(Forguncy||(Forguncy={})) +;var Forguncy;(function(n){var t;(function(n){var t=function(){function n(n,t){n===void 0&&(n=0);t===void 0&&(t=0);this.x=n;this.y=t}return Object.defineProperty(n,"Zero",{get:function(){return new n(0,0)},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"length",{get:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"sqrtLength",{get:function(){return this.x*this.x+this.y*this.y},enumerable:!1,configurable:!0}),n.prototype.clone=function(){return new n(this.x,this.y)},n.prototype.normalize=function(){var t=1/this.length;return new n(this.x*t,this.y*t)},n.prototype.negate=function(){return new n(-this.x,-this.y)},n.prototype.add=function(t){return new n(this.x+t.x,this.y+t.y)},n.prototype.subtract=function(t){return new n(this.x-t.x,this.y-t.y)},n.prototype.multiply=function(t){return new n(this.x*t,this.y*t)},n.prototype.divide=function(t){var i=1/t;return new n(this.x*i,this.y*i)},n.prototype.dot=function(n){return this.x*n.x+this.y*n.y},n.prototype.rotate=function(t){var i=Math.sin(t),r=Math.cos(t);return new n(this.x*r-this.y*i,this.y*r+this.x*i)},n.prototype.setLength=function(n){var t=this.length;t>0&&(this.x=this.x*n/t,this.y=this.y*n/t)},n.prototype.limitLength=function(n){var t=this.length;t>n&&this.setLength(n)},n.prototype.cos=function(n){return this.dot(n)/(this.length*n.length)},n}();n.Vector2=t})(t=n.Numerics||(n.Numerics={}))})(Forguncy||(Forguncy={})) +;var Forguncy;(function(n){var h=function(){function t(){}Object.defineProperty(t,"default",{get:function(){var i,r=n.ForguncyData.GlobalSettings;return(i=r===null||r===void 0?void 0:r.ThemeFont)!==null&&i!==void 0?i:t[n.RS.Culture]},enumerable:!1,configurable:!0});var i,r,u,f;return i="EN",r="CN",u="JA",f="KR",t[i]="Calibri",t[r]="Microsoft YaHei",t[u]="Meiryo UI",t[f]="Malgun Gothic",t}(),t,i,r,u,f,e,o,s;n.LocaleFonts=h;t=function(){function n(){}return n.Culture="EN",n.NeedChangeOriginPassword="The current password is the initial password, please modify your initial password for security.",n.PasswordNotChange="The new password cannot be the same as the old password.",n.UserNameOrPasswordIsIncorrect="User name or password is incorrect, or the user is disabled.",n.PasswordIsNotSame="The passwords do not match.",n.ForSafetyReasonPleaseChangeYourPassword="You are successfully signed in. Change your default password for security reasons.",n.TokenIsInvalid="Invalid token",n.ResetPasswordSuccess="The password has been reset successfully!",n.Failed="Failed",n.UserName="User Name",n.None="",n.deleteStr="Delete",n.addStr="Add",n.listviewNotExisted="The listview does not exist.",n.FullName="Full Name",n.Email="Email",n.Role="Role",n.OrganizationSuperior="Supervisor",n.Success="Successful!",n.ConfirmDelete="Are you sure you want to delete?",n.Year="Year",n.Month="Month",n.Day="Day",n.Quarter="Quarter",n.noFieldErrorInfo="There are no data binding settings required to update the tabel {0}.",n.unique="The value already exists. Specify different value.",n.login="Sign in",n.cantAddEmptyFile="An empty file cannot be uploaded.",n.Boolean_True="Yes",n.Boolean_False="No",n.MonthNames=["January","February","March","April","May","June","July","August","September","October","November","December"],n.ColumnFilter_YearName="",n.ColumnFilter_DayName="",n.ContextMenu_CompareType_Equals="Equal to",n.ContextMenu_CompareType_DoesNotEqual="Does not equal to",n.ContextMenu_CompareType_BeginsWith="Begin with",n.ContextMenu_CompareType_DoesNotBeginWith="Does not begin with",n.ContextMenu_CompareType_EndsWith="End with",n.ContextMenu_CompareType_DoesNotEndWidth="Does not end with",n.ContextMenu_CompareType_Contains="Contain",n.ContextMenu_CompareType_DoesNotContain="Does not contain",n.ContextMenu_CompareType_IsGreaterThan="Greater than",n.ContextMenu_CompareType_IsGreaterThanOrEqualTo="Greater than or equal to",n.ContextMenu_CompareType_IsLessThan="Less than",n.ContextMenu_CompareType_IsLessThanOrEqualTo="Less than or equal to",n.ContextMenu_CompareType_IsBetween="Between",n.ContextMenu_CompareType_IsNotBetween="Not between",n.ContextMenu_CompareType_In="In",n.ContextMenu_CompareType_NotIn="Not in",n.ContextMenu_CompareType_IsLessThan_Date="Before",n.ContextMenu_CompareType_IsGreaterThan_Date="After",n.ComboBox_CompareType_Equals="equal to",n.ComboBox_CompareType_DoesNotEqual="does not equal to",n.ComboBox_CompareType_BeginsWith="begin with",n.ComboBox_CompareType_DoesNotBeginWith="does not begin with",n.ComboBox_CompareType_EndsWith="end with",n.ComboBox_CompareType_DoesNotEndWidth="does not end with",n.ComboBox_CompareType_Contains="contain",n.ComboBox_CompareType_DoesNotContain="does not contain",n.ComboBox_CompareType_IsGreaterThan="greater than",n.ComboBox_CompareType_IsGreaterThanOrEqualTo="greater than or equal to",n.ComboBox_CompareType_IsLessThan="less than",n.ComboBox_CompareType_IsLessThanOrEqualTo="less than or equal to",n.ComboBox_CompareType_IsBetween="between",n.ComboBox_CompareType_IsNotBetween="not between",n.ComboBox_CompareType_In="in",n.ComboBox_CompareType_NotIn="not in",n.ComboBox_CompareType_IsLessThan_Date="before",n.ComboBox_CompareType_IsGreaterThan_Date="after",n.DateCompareType_Tomorrow="Tomorrow",n.DateCompareType_Today="Today",n.DateCompareType_Yesterday="Yesterday",n.DateCompareType_NextWeek="Next Week",n.DateCompareType_ThisWeek="Current Week",n.DateCompareType_LastWeek="Previous Week",n.DateCompareType_NextMonth="Next Month",n.DateCompareType_ThisMonth="Current Month",n.DateCompareType_LastMonth="Previous Month",n.DateCompareType_NextYear="Next Year",n.DateCompareType_ThisYear="Current Year",n.DateCompareType_LastYear="Previous Year",n.ForguncyUI_Dialog_OK="OK",n.ForguncyUI_Dialog_Cancel="Cancel",n.ColumnFilter_Dialog_Title="Filter",n.ColumnFilter_ContextMenu_SortAscending="Sort Ascending",n.ColumnFilter_ContextMenu_SortDesending="Sort Desending",n.ColumnFilter_ContextMenu_ClearFilter="Clear Filter",n.ColumnFilter_ContextMenu_Filter="Filter",n.ColumnFilter_ContextMenu_CustomFilter="Custom Filters",n.ColumnFilter_ContextMenu_NumberFilter="Number Filters",n.ColumnFilter_ContextMenu_TextFilter="Text Filters",n.ColumnFilter_ContextMenu_DateFilter="Date Filters",n.ColumnFilter_TreeView_SelectAll="(Select All)",n.ColumnFilter_TreeView_Blanks="(Blanks)",n.ColumnFilter_TreeView_TooManyItems="Some items are not shown.",n.ColumnFilter_TextBlock_And="And",n.ColumnFilter_TextBlock_Where="Show items where:",n.ColumnFilter_Alert_IncorrectValue="The value entered is incorrect!",n.ColumnFilter_TextBlock_TextExample_In="e.g. Apple,Banana,Orange (comma separated)",n.ColumnFilter_TextBlock_DateExample="e.g. 2019/01/01",n.ColumnFilter_TextBlock_DateExample_Between="e.g. 2019/01/01 and 2019/12/31",n.ColumnFilter_TextBlock_TimeExample="e.g. 10:00",n.ColumnFilter_TextBlock_TimeExample_Between="e.g. 10:00 and 12:00",n.ColumnFilter_ContextMenu_Suffix_OnlyCurrentPage="(Current Page Only)",n.ColumnOptionsCommand_Title="Column Options",n.ColumnOptionsCommand_AvailableColumns="Available Columns:",n.ColumnOptionsCommand_SelectedColumns="Selected Columns:",n.ColumnOptionsCommand_UnamedColumn="",n.ColumnOptionsCommand_ResetSetting="Reset settings",n.ColumnOptionsCommand_AddColumn="Add Column",n.ColumnOptionsCommand_RemoveColumn="Remove Column",n.ColumnOptionsCommand_MoveColumnUp="Move Column Up ",n.ColumnOptionsCommand_MoveColumnDown="Move Column Down",n.AttachmentCell_NotSupportedFile="Unsupported File",n.CurrentUserCell_ChangeProfile="Change Profile",n.CurrentUserCell_ChangePassword="Change Password",n.CurrentUserCell_Logout="Sign out",n.ChangeCurrentUserMFA_Enable="Enable Two-factor authentication",n.ChangeCurrentUserMFA_Disable="Disable Two-factor authentication",n.ChangeCurrentUserMFA_Enable_Confirm="Are you sure you want to enable the Two-factor authentication? You'll have to sign in again after the changes are made.",n.ChangeCurrentUserMFA_Disable_Confirm="Are you sure you want to disable the Two-factor authentication? This page will refresh.",n.ChangeCurrentUserMFA_Enable_Fail="Failed to enable Two-factor authentication.",n.ChangeCurrentUserMFA_Disable_Fail="Failed to disable Two-factor authentication.",n.ProcessBarCell_AssignedToPopup_Title="Currently Assigned To",n.ProcessBarCell_AssignedTo="Assigned To",n.ProcessBarCell_AssignedTo_me="me",n.ProcessBarCell_AssignedToMultiUser="{0} and {1} more",n.ProcessBarCell_HistoryPopup_Title="Status History",n.ProcessBarCell_History_Operator="Action By",n.ProcessBarCell_History_Time="Time",n.ProcessBarCell_History_EndStatus="Post Action State",n.ProcessBarCell_History_Comments="Comments",n.ProcessBarCell_History_ActionName="Action Name",n.ProcessBarCell_ActionPopup_Title="Update State",n.ProcessBarCell_ActionPopup_NextStatus="Next State:",n.ProcessBarCell_ActionPopup_Assignto_Choose="Assign To:",n.ProcessBarCell_ActionPopup_Assignto_All="Available Assignees:",n.ProcessBarCell_ActionPopup_Comments="Comments:",n.ProcessBarCell_OK="OK",n.ProcessBarCell_Cancel="Cancel",n.ProcessBarCell_Status="Status: {0}",n.ProcessBarCell_ChangeStateFailed="Failed to _execute the action",n.ProcessBarCell_ChangeAssignee="Change Assignee",n.ProcessBarCell_CreateBy="Created by {0} at {1}",n.ProcessBarCell_LastModifyBy="Modified by {0} at {1}",n.CannotFindCell="A cell with the name '{0}' does not exist on this page.",n.CannotFindCellById="A cell with an id '{0}' does not exist on this page.",n.CannotFindListview="A listview with the name '{0}' does not exist on this page.",n.CannotFindColumn="A column with the name '{0}' does not exist in '{1}' listview",n.CannotFindColumnIndex="Invalid column index '{0}' in listview '{1}'.",n.NotSupportEventForPage="The event '{0}' is not supported for {1}.",n.NotSupportEventForCellOrListview="The event '{0}' is not supported for {1} '{2}'.",n.NotSupportSetValue="This method isn't supported for cell '{0}'.",n.InvalidNumberParam="Specify a valid value for the '{0}' parameter.",n.IndexOutOfRange="Parameter '{0}' is out of range.",n.ForguncyApiExceptionString="{0} in {1}.{2} method : {3}.",n.InvalidFunctionParam="Specify a function to the parameter '{0}'.",n.HideShowColumns_CannotHideRowHeader="Can't show or hide row header columns.",n.HideShowColumns_ListviewIsEditing="Can't show or hide columns when listview is in edit mode.",n.HideShowColumns_CannotShowHiddenColumn="Can't show columns that are set to be hidden at runtime, or the widths are set to zero (0).",n.CannotFindCommandInCell="The cell '{0}' on this page doesn't have any commands associated with it.",n.CannotUseCommandParameterInCurrentContext="Can't access command parameters (variables) in the current context.",n.CannotSelectCellInColumn="Following cells can't be selected: 1) cells that are part of column or rwo headers, 2) in the selected column, 3) hidden cells.",n.WebApi_ErrorInfo_NonemptyStringParam="The '{0}' parameter can't be an empty string.",n.WebApi_ErrorInfo_ParamInvalid="The '{0}' parameter is invalid.",n.groupCell_Other="Others:",n.ClosePopupCommand_NotPopup="Can't issue a 'close popup window' command on this page because it is not a popup page.",n.AddUserApiParamError="Invalid parameters!",n.Echart_DataLoadingText="Loading data...",n.Echart_NoDataLoadingText="No Data",n.Echart_BubbleChartToolTip="Size: {0}",n.InvalidCopyPasteSize="The copy area and the paste area are NOT of the same size.",n.RangeOperationCannotInvolveTotalRow="You can't perform a cell operation on a cell range that involves cell(s) in the total row.",n.ValidateErrorMessage="The value '{0}' at Row {1} and Column {2} is invalid.\r\nError Message:\r\n{3}",n.InvalidValueTypeMessage="Invalid value type.",n.ValueNotInList="That value is not found in the list of items.",n.ErrorInfo_Uncommited="Can't perform query or sort operations since the data is in an uncommited state.",n.DataValidation_Required="Required",n.DataValidation_WholeNumberDefaultErrorMessage="This value doesn't match the data validation restrictions defined for this cell.",n.DataValidation_DecimalDefaultErrorMessage="This value doesn't match the data validation restrictions defined for this cell.",n.DataValidation_DateDefaultErrorMessage="This value doesn't match the data validation restrictions defined for this cell.",n.DataValidation_TimeDefaultErrorMessage="This value doesn't match the data validation restrictions defined for this cell.",n.DataValidation_TextLenghtDefaultErrorMessage="This value doesn't match the data validation restrictions defined for this cell.",n.DataValidation_CustomDefaultErrorMessage="This value doesn't match the data validation restrictions defined for this cell.",n.DataValidation_RegularUserInputDefaultErrorMessage="This value doesn't match the data validation restrictions defined for this cell.",n.DataValidation_RegularDefaultErrorMessage="An invalid regular expression is specified for '{0}'.",n.Validate_Number="Enter a valid number.",n.InvalidValueErrorMessage="Can't commit an invaid value '{0}' to the '{1}' column of '{2}'table .",n.uploadFileBiggerThanMaxFileCount="The maximum allowed number of files has already been uploaded. No further files can be uploaded.",n.uploadFileBiggerThanMaxSize="The file size of '{0}' is greater than than the maximum allowed uploadedable file size of {1}MB.",n.uploadFileNotMatchExtension="The file type of the file '{0}' is not permitted to be uploaded.",n.ExprotToExcelCalFormulaError="Can't export as an Excel document because there are errors with the formula results.",n.ExprotToPDFCalFormulaError="Can't export as a PDF document because there are errors with the formula results.",n.ExportListviewNoColumnError="There are no columns to be exported.",n.AutoGeneratedID_Conflict_Error="The auto-generated ID already exists. A new ID will be generated so try committing data again.",n.AutoGeneratedID_Generate_Error="The auto-generated number '{0}' is greater than the specified length.",n.AutoGeneratedID_Conflict_Listview_Error="A value already exists in the '{0}' field.",n.ImportExcelFirstRowMissDataError="The Excel document specified for import doesn't have any data in its first row.",n.NoMatchBetweenExcelWithListViewError="The Excel document specified for import doesn't have the data structure that matches the target listview. Can’t find matching columns in the Excel document: {0}",n.InCorrectFileFormatError="An incorrect file format specified.",n.NoSelectedRowError="Select at least one row.",n.ImportExcelCannotFindListViewError="Can't find listview '{0}'.",n.ImportExcelEmptyError="There is no data in the imported excel.",n.ImportExcelConvertSheetIndexError="Failed to convert '{0}' to worksheet index value while importing Excel file.",n.ImportExcelSheetIndexOutOfRangeError="Import Excel file worksheet index value '{0}' out of range, should be between '{1}'-'{2}'.",n.ImportExcelSheetNotExistError="Sheet '{0}' does not exist in the Excel file.",n.ImportExcelSheetDataEmptyError="There is no data in the sheet '{0}' in the Excel file.",n.ImportExcelSheetDataTableEmptyError="The table data in the worksheet '{0}' in the Excel file is empty.",n.GUID_Creator="CreatedBy",n.GUID_CreateDate="CreationDate",n.GUID_LastModifyBy="ModifiedBy",n.GUID_LastModifyDate="ModificationDate",n.GUID_AssignTo="AssignedTo",n.GUID_Status="Status",n.UpdateListviewCommand_Listview_Group="Can't update a listview that contains an aggregated column.",n.UpdateListviewCommand_Listview_DetailListview="Can't update a detail listview that doesn't have a record that corresponds to the master table.",n.ImportExcelToListViewError_Detail="An invalid value found in the Excel document at row '{0}' and column '{1}'.\r\nError message: {2}",n.ImportExcelToListViewError_ExistSameKeys="Ensure that the column(s) specified to identify a record uniquely don't have duplicated values in the Excel document.\r\nDuplicated values are as follows: {0}",n.ImportExcelToListViewError_ExistEmptyKeys="There is blank data in the base column in the Excel file, please ensure that the data in the base column is not empty. \r\nThe line where the blank value is located is as follows: {0}",n.ImportExcelToListViewError_ListViewExistEmptyKeys="There is blank data in the base column in the listview '{0}', please ensure that the data in the base column is not empty. \r\nThe line where the blank value is located is as follows: {1}",n.ImportExcelToListViewError_SkippedRowsFormatError="The value setting the number of skipped lines is malformed, an integer is expected.",n.ImportExcelToListViewError_SkippedRowsInvalid="Input value cannot be used for sheet index. Please enter an integer value greater than 0.",n.UpdateViewFail_Error="Failed to update the current view.",n.UpdateListViewFail_BindingTableCantEditError="Failed to update the current data binding.",n.ConcurrentLicenseError_Kickoffed="You have been kicked out by an administrator.",n.ConcurrentLicenseError_NoEnoughLicense="Access has been denied because the permissible concurrent user count has reached its limit. Contact your administrator.",n.ConcurrentLicenseError_SendEmail="Send Email",n.ConcurrentLicenseError_Cancel="Cancel",n.ConcurrentLicenseError_MessagePlaceHolder="Input email content here.",n.ConcurrentLicenseError_AddressPlaceHolder="Input sender email address.",n.ConcurrentLicenseError_SendSuccess="Email sent successfully.",n.ConcurrentLicenseError_SendFailed="Failed to send email.",n.ConcurrentLicenseError_EmailTitle="[Forguncy Server] Access denied.",n.ConcurrentLicenseError_PleaseInputValidEmailAddress="Input valid email address.",n.ConcurrentLicenseError_SenderAddress="From",n.ContainerCellType_Error_CircularReference="Failed to load the sub page '{0}' due to a circular reference found.",n.NameConflict="There is a conflict with the name '{0}'. Such name exists in both page '{1}' and page '{2}'.",n.ContainerCellType_Error_NoExistedPage="Can't find page '{0}'.",n.SetCurrentRow_Error_NoRecord="Failed to change current row on table '{0}'. A record matching such data queries doesn't exist.",n.ListViewAddNewRowError_CantConvertToNumber="Can't convert to a Number type.",n.ListViewAddNewRowError_CantConvertToBool="Can't convert to a YesNo type.",n.ListViewAddNewRowError_CantConvertToDateTime="Can't convert to a Date type.",n.CallStoredProcedureCommand_ExecuteFailed="Faild to execute a stored procedure.",n.Command_postFail_ErrorMessage="Failed to execute a command.",n.Commit_FailMessage="Failed to commit changes.",n.Commit_ExecutingMessage="A command is currently executing.",n.LongTimeNoOperation="The connection to application has been terminated due to a long idle time on the page.",n.PleaseClickButtonToReload="Click to reload the page.",n.ReloadPage="Reload Page",n.DateTime_Calender_HeaderFormat="yyyy/MM",n.DateTime_Calender_YearMonthFormat="yyyy/MM",n.UnauthorizedUpload="An anonymuse access not permitted. Sign in.",n.SessionTimeout="Session timed out. Sign in again.",n.ExprotActiveReportsCalFormulaError="Invalid file name for the report export.",n.ActiveReportsParameterValueCalFormulaError="Invalid parameter values for the report export.",n.ActiveReportsJsonDataSourceIsNotAJSONString="The json data source is not a JSON string:{0}.",n.NameConflictWarning="The name '{0}' conflicts with the cell name or a variable.",n.StartExecuteCommand="Execute command:",n.StartExecutePageLoadCommand="Executing on-pageload command {0}",n.StartExecuteCellClickCommand="Executing on-click command {0}",n.StartExecuteCellValudeChangedCommand="Executing on-cell-value-changed {0}",n.UseTime="Duration: {0} ms",n.DataValidationNotPassed="There is cell value verification on the page that fails,resulting in the cancellation of the execution of the server command.To close this restriction,you can find the corresponding 'call server command' in the designer,uncheck the 'data verification before request' option in the advanced settings.",n.PopupCloseButton="Close popup",n.CommandName_ClosePopupCommand="Close popup window",n.Log_NavigateCommand_PassValues="Pass values to the page being transferred to.",n.CreateCommandContextVariables="[Create command context's variables]",n.ServerCommandLog_CreateParam="Create Parameter: {0} = {1}",n.LeaveSiteConfirm="The changes you made may not be saved. Are you sure you want to leave this page?",n.LeaveSiteConsoleMessage_Cell="{0} cell",n.LeaveSiteConsoleMessage_Cell_DefaultValue="Default Value: {0}",n.LeaveSiteConsoleMessage_Cell_CurrentValue="Current Value: {0}",n.LeaveSiteConsoleMessage_Listview="{0} listview",n.CantFindParam="Can't find the parameter {0}",n.TriggerByCommand="Trigger by command {0}",n.ExportPageToExcelCommand_PageNameTooLong="The name of exported page cannot exceed 31.",n.ExportListviewToExcelCommand_PageNameTooLong="The name of page where the listview resides cannot exceed 31.",n.BPM_LogText_CommitTitle="start execute commit operation.",n.BPM_LogText_TerminateTitle="start execute terminate operation.",n.BPM_LogText_RollbackTitle="start execute rollback operation.",n.BPM_LogText_GetBackTitle="start execute get back operation.",n.BPM_LogText_DispatchTitle="start execute dispatch operation.",n.BPM_LogText_DelegateTitle="start execute delegate operation.",n.BPM_LogText_CancelDelegateTitle="start execute cancel delegate operation.",n.BPM_LogText_AddOnSignTitle="start execute addon sign operation.",n.BPM_LogText_CarbonCopyTitle="start execute carbon copy operation.",n.BPM_LogText_ReadCarbonCopyTitle="start execute read carbon copy operation.",n.BPM_LogText_SaveBussinessData="Save business data: ",n.BPM_LogText_SaveBussinessDataCommand="[Execute save business data command]",n.BPM_LogText_ExecutePreCommands="[Execute pre commands]",n.BPM_LogText_ExecutePostCommands="[Execute post commands]",n.BPM_LogText_ExecuteTaskNodeAction="Execute task action [{0}], Task ID: [{1}]",n.BPM_LogText_CallStartProcessCommand_ByDefinitionID="Call ProcessStartCommand, ProcessDefinitionID: [{0}], Process Instance Name: {1}",n.BPM_LogText_CallStartProcessCommand_ByName="Call ProcessStartCommand, Process Name: [{0}], Process Instance Name: {1}",n.BPM_LogText_CallStartProcessCommand_Empty="",n.BPM_UserSetting_UnnamedNode="",n.BPM_AssigneesRow_SelectByUser_Placeholder="Specify who to assign to",n.BPM_Error_AssigneesTarget_TypeIsNotExist="The type doesn't exist for the specified assignee.",n.CurrentRow_NotExist="Current row does not exist. Check the startup command of the process.",n.RowMode_NotExist="The selected row mode does not exist. Check the startup command of the process.",n.ProcessInstanceName_EvaluteError="The evaluation for the process instance name failed. Check the cell settings.",n.ProcessDefinitionId_EvaluteError="The evaluation for the process definition id failed. Check the cell settings.",n.ProcessPanelCellType_UnnamedAction="",n.ProcessPanelCellType_UnnamedNode="",n.ProcessPanelCellType_GenerateBusinessKey_Error="Failed to update the current database.",n.ProcessPanelCellType_UpdateCurrentRowsClosure_ConfirmText="Are you sure that you want to add this record?",n.TaskActionDialog_CommentTextRow_Label="Comments",n.TaskActionDialog_CommentTextRow_PlaceHolder="Enter comments.",n.TaskActionDialog_AssigneesRow_AssginToLabel="Assign To",n.TaskActionDialog_AssigneesRow_DelegateToLabel="Delegate To",n.TaskActionDialog_AssigneesRow_AddOnSignToLabel="AddOnSign To",n.TaskActionDialog_AssigneesRow_CarbonCopyToLabel="CarbonCopy To",n.TaskActionDialog_AssigneesRow_AddOnSignTypeLabel="Type",n.TaskActionDialog_AssigneesRow_AddOnSignTypePre="PreAddOnSign,add an approval step before current step",n.TaskActionDialog_AssigneesRow_AddOnSignTypePost="PostAddOnSign, add an approval step after current step",n.TaskActionDialog_AssigneesRow_SelectorDialogTitle="Select User",n.TaskActionDialog_AssigneesRow_SelectorDialogTitle_Mobile="Show the selected users ({0} users)",n.TaskActionDialog_AssigneesRow_Error_NoUserInfo="No optional users, contact your administrator",n.TaskActionDialog_AssigneesRow_AssignToCannotBeEmpty="Please select at least one user for Assign To.",n.TaskActionDialog_AssigneesRow_DelegateToCannotBeEmpty="Please select at least one user for Delegate To.",n.TaskActionDialog_AssigneesRow_AddOnSignToCannotBeEmpty="Please select at least one user for AddOnSign To.",n.TaskActionDialog_AssigneesRow_CarbonCopyToCannotBeEmpty="Please select at least one user for CarbonCopy To.",n.TaskActionDialog_Component_Signature_SignatureLabel="Signature",n.TaskActionDialog_Component_Signature_UseSavedSignature="Use the saved signature",n.TaskActionDialog_Component_Signature_NoSavedSignature="The saved signature is empty",n.TaskActionDialog_Component_Signature_MobileDialogTitle="Handwritten Signature",n.TaskActionDialog_Component_Signature_MobileSignaturePadPlaceHolder="Click the edit icon below to signature",n.TaskActionDialog_Component_Signature_SaveSignatureButtonText="Save",n.TaskActionDialog_Component_Signature_SaveSignatureSuccessfullyText="Saved signature successfully",n.TaskActionDialog_Component_Signature_SaveSignatureSuccessfullyText_ButValueIsEmpty="Saved signature successfully (Signature is empty)",n.TaskActionDialog_Component_Signature_SaveSignatureFailedText="Saved signature failed",n.TaskActionDialog_Component_Signature_SignatureCannotBeEmpty="The signature cannot be empty",n.TaskActionDialog_Component_Signature_ClearSignatureButtonText="Clear",n.TaskActionDialog_Component_Signature_ComfirmSignatureButtonText="OK",n.TaskActionDialog_Component_Remark_CantbeEmpty="The Comment cannot be empty",n.UserSelectorDialog_SearchInput="Search User...",n.UserSelectorDialog_Selection_Title="{0} users selected",n.UserSelectorDialog_Selection_IsMultiple="Unlimited",n.UserSelectorDialog_Selection_NoMultiple="Only one person permitted",n.UserSelectorDialog_TreeView_Title="Organizational Department",n.UserSelectorDialog_TreeView_NotOrganizedUser="Not Organizational Users",n.UserSelectorDialog_UserList_Title="Optional Users",n.UserSelectorDialog_DeleteList_Title="Delete selected user(s)",n.UserSelectorDialog_DeleteListTip_Text="Are you sure delete {0} users?",n.CreateDelegateDialog_Title="Create Delegate",n.CreateDelegateDialog_Tip="During the delegation time, the delegation process tasks will be transferred to the agent for handling.",n.CreateDelegateDialog_DelegatedTime_Title="Time",n.CreateDelegateDialog_DelegatedTime_StartTime="Start Time:",n.CreateDelegateDialog_DelegatedTime_EndTime="End Time:",n.CreateDelegateDialog_DelegatedTime_Error_EndTimeMustEarilerStartTime="End time cannot be earlier than or equal to start time.",n.CreateDelegateDialog_Agent_Title="Agent",n.CreateDelegateDialog_Agent_Tip="* Find the first valid agent in order, if the first person is deleted, it will find the second person in order, and so on.",n.CreateDelegateDialog_Agent_SelectAgent="Select Agent",n.CreateDelegateDialog_Agent_DeleteAgent="Delete",n.CreateDelegateDialog_Agent_Error_AgentCannotBeEmpty="Agent cannot be empty",n.CreateDelegateDialog_DelegatedProcess_Title="Process",n.CreateDelegateDialog_DelegatedProcess_Tip="* 'All' are applied to all current and subsequent new processes. 'Select' only be applied to the selected processes. ",n.CreateDelegateDialog_DelegatedProcess_Type="Delegation Process:",n.CreateDelegateDialog_DelegatedProcess_AllProcesses="All Processes",n.CreateDelegateDialog_DelegatedProcess_SelectProcesses="Select Processes",n.CreateDelegateDialog_DelegatedProcess_Error_ProcessCannotBeEmpty="Process cannot be empty",n.CreateDelegateDialog_ProcessTable_Title="Title",n.CreateDelegateDialog_ProcessTable_Description="Description",n.CreateDelegateDialog_Description_Title="Description",n.CreateDelegateDialog_Description_Placeholder="Please enter description",n.CreateDelegateDialog_User_NotExist="Inexistent",n.CreateDelegateDialog_User_Disabled="Disabled",n.CreateDelegateDialog_Process_NotExist="Inexistent",n.DelegationListDialog_Title="Delegate Setting",n.DelegationListDialog_CreateDelegation="Create Delegate",n.DelegationListDialog_Tab_User="User",n.DelegationListDialog_Tab_Org="Organization",n.DelegationListDialog_Table_AllProcesses="All Processes",n.DelegationListDialog_Table_EmptyTime="Empty",n.DelegationListDialog_Table_DataColumn_Agent="Agent(s)",n.DelegationListDialog_Table_DataColumn_DelegatedProcess="Process(es)",n.DelegationListDialog_Table_DataColumn_StartTime="Start Time",n.DelegationListDialog_Table_DataColumn_EndTime="End Time",n.DelegationListDialog_Table_DataColumn_CreateDate="Create Time",n.DelegationListDialog_Table_DataColumn_Description="Description",n.DelegationListDialog_Table_DataColumn_Update="Update",n.DelegationListDialog_Table_DataColumn_Delete="Delete",n.DelegationListDialog_Table_DataColumn_Enable="Enable",n.DelegationListDialog_Table_DataColumn_Disable="Disable",n.DelegationListDialog_Error_DelegationConfigurationIsEmpty="Delegation Configuration does not exist.",n.DelegationListDialog_Comfirm_EnabledConfuguration="Sure to enable delegate?",n.DelegationListDialog_Comfirm_DisabledConfuguration="Sure to disable delegate?",n.DelegationListDialog_Comfirm_DeleteConfuguration="Sure to delete delegate?",n.DebugWarningChecker_PopupTitle="{0} Warning",n.UpdateDelegateDialog_Title="Update Delegate",n.UI_Table_ActionColumn="Action(s)",n.ThirdPartBindingLogin_Error_UserNameEmpty="Please enter user name.",n.ThirdPartBindingLogin_Error_PasswordEmpty="Please enter password.",n.ThirdPartBindingLogin_Error_PasswordLengthInvalid="Password must between 6 and 18 characters.",n.ThirdPartBindingLogin_Error_PasswordConfirmNotSame="Password and Confirm Password are not same.",n.ForguncyUserAvator_UserName="UserName",n.ForguncyUserAvator_FullName="FullName",n.ForguncyUserAvator_Email="Email",n.NotificationUnauthorized="Subscribe Server Notification failed, Maybe user is unauthorized.",n.NotificationLocationString="execute notification command",n.PerformanceWarning="Performance Tips:",n.PerformanceWarningListviewLoadTwice="List view '{0}' loaded binding data twice when page loading, it may bring performance problem. Suggest to enable 'Do not load data when page is loaded' setting to avoid load listview binding data multiple times.",n.PerformanceWarningListviewLoadTowManyDatas="List view '{0}' has too many rows ({1}) from database, it may bring performance problem. Suggest to add pagination cell to to paging the listview or enable load on demand option to limition maximum row count when load listview data.",n.PerformanceWarningChartLoadTwice="Chart '{0}' loaded binding data twice when page loading, it may bring performance problem",n.PerformanceWarningChartLoadTowManyDatas="Chart '{0}' has too many rows ({1}) from database, it may bring performance problem.",n.RowHeightColumnWidth_InvalidNumber="Can't use the input value. Please input a value between 0 and 9999999.",n.RowHeightColumnWidth_MinLargerThanMax="The min value should be less than the max value.",n.PivotTableCellType_ClickCellTitle_Lable="The_title_of_the_value",n.PivotTableCellType_ClickCellValue_Lable="Clicked_cell_value",n.RequestAPIException="Request API exception ({0}): ",n.RequestAPIParsererror="Usually, this is caused by incorrectly formatted data being returned by the server. This may be because the data returned by the server is not in a valid JSON format, or there is a syntax error in the returned HTML or XML. It is also possible that the JSON data returned is too large to parse.",n.CircularlyReferencingErrorMessages="Unfortunately, it is not possible to build a tree structure due to circular references in the data. Circular references can lead to infinite loops and undeterminable results. Please make sure that the input data has no cross references or circular relationships before attempting to build the tree structure.",n.UserControlIsUnset="Target user control is unset.",n.CannotFindProperty="'{0}' can't find property '{1}'",n.CannotSetPrivateProperty="'{0}' can't set private property '{1}' value",n.CannotGetPrivateProperty="'{0}' can't get private property '{1}' value",n.Condition_RelationType_Or="Or",n.Condition_RelationType_And="And",n.ConditionCommand_Log_EvalueCondition="Judgement: {0} Result is {1}",n}();n.RS=t;i=function(){function n(){}return n.Culture="CN",n.NeedChangeOriginPassword="当前密码为初始密码,为了安全,请修改您的初始密码。",n.UserNameOrPasswordIsIncorrect="用户名或密码不正确,或者该用户被禁用。",n.PasswordNotChange="新密码不能和旧密码相同",n.PasswordIsNotSame="输入的密码不相同",n.ForSafetyReasonPleaseChangeYourPassword="登录成功。为了安全,请修改您的初始密码",n.TokenIsInvalid="令牌值不正确",n.ResetPasswordSuccess="重置密码成功",n.Failed="失败",n.UserName="用户名",n.None="<未选择>",n.deleteStr="删除",n.addStr="添加",n.listviewNotExisted="表格不存在。",n.FullName="全名",n.Email="邮件",n.Role="角色",n.OrganizationSuperior="组织上级",n.Success="成功!",n.ConfirmDelete="确认要删除吗?",n.Year="年",n.Month="月",n.Day="日",n.Quarter="季度",n.noFieldErrorInfo="不存在数据表 {0} 的绑定字段。",n.unique="值已经存在,请输入其他值。",n.login="登录",n.cantAddEmptyFile="不能上传空文件。",n.Boolean_True="是",n.Boolean_False="否",n.MonthNames=["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],n.ColumnFilter_YearName="年",n.ColumnFilter_DayName="日",n.ContextMenu_CompareType_Equals="等于",n.ContextMenu_CompareType_DoesNotEqual="不等于",n.ContextMenu_CompareType_BeginsWith="开头是",n.ContextMenu_CompareType_DoesNotBeginWith="开头不是",n.ContextMenu_CompareType_EndsWith="结尾是",n.ContextMenu_CompareType_DoesNotEndWidth="结尾不是",n.ContextMenu_CompareType_Contains="包含",n.ContextMenu_CompareType_DoesNotContain="不包含",n.ContextMenu_CompareType_IsGreaterThan="大于",n.ContextMenu_CompareType_IsGreaterThanOrEqualTo="大于或等于",n.ContextMenu_CompareType_IsLessThan="小于",n.ContextMenu_CompareType_IsLessThanOrEqualTo="小于或等于",n.ContextMenu_CompareType_IsBetween="介于两者",n.ContextMenu_CompareType_IsNotBetween="不介于两者",n.ContextMenu_CompareType_In="在里面",n.ContextMenu_CompareType_NotIn="不在里面",n.ContextMenu_CompareType_IsLessThan_Date="之前",n.ContextMenu_CompareType_IsGreaterThan_Date="之后",n.ComboBox_CompareType_Equals="等于",n.ComboBox_CompareType_DoesNotEqual="不等于",n.ComboBox_CompareType_BeginsWith="开头是",n.ComboBox_CompareType_DoesNotBeginWith="开头不是",n.ComboBox_CompareType_EndsWith="结尾是",n.ComboBox_CompareType_DoesNotEndWidth="结尾不是",n.ComboBox_CompareType_Contains="包含",n.ComboBox_CompareType_DoesNotContain="不包含",n.ComboBox_CompareType_IsGreaterThan="大于",n.ComboBox_CompareType_IsGreaterThanOrEqualTo="大于或等于",n.ComboBox_CompareType_IsLessThan="小于",n.ComboBox_CompareType_IsLessThanOrEqualTo="小于或等于",n.ComboBox_CompareType_IsBetween="介于两者",n.ComboBox_CompareType_IsNotBetween="不介于两者",n.ComboBox_CompareType_In="在里面",n.ComboBox_CompareType_NotIn="不在里面",n.ComboBox_CompareType_IsLessThan_Date="之前",n.ComboBox_CompareType_IsGreaterThan_Date="之后",n.DateCompareType_Tomorrow="明天",n.DateCompareType_Today="今天",n.DateCompareType_Yesterday="昨天",n.DateCompareType_NextWeek="下周",n.DateCompareType_ThisWeek="本周",n.DateCompareType_LastWeek="上周",n.DateCompareType_NextMonth="下月",n.DateCompareType_ThisMonth="本月",n.DateCompareType_LastMonth="上月",n.DateCompareType_NextYear="明年",n.DateCompareType_ThisYear="今年",n.DateCompareType_LastYear="去年",n.ForguncyUI_Dialog_OK="确定",n.ForguncyUI_Dialog_Cancel="取消",n.ColumnFilter_Dialog_Title="筛选",n.ColumnFilter_ContextMenu_SortAscending="升序排序",n.ColumnFilter_ContextMenu_SortDesending="降序排序",n.ColumnFilter_ContextMenu_ClearFilter="清空筛选",n.ColumnFilter_ContextMenu_Filter="设置筛选",n.ColumnFilter_ContextMenu_CustomFilter="自定义筛选",n.ColumnFilter_ContextMenu_NumberFilter="数字筛选",n.ColumnFilter_ContextMenu_TextFilter="文本筛选",n.ColumnFilter_ContextMenu_DateFilter="日期筛选",n.ColumnFilter_TreeView_SelectAll="(全选)",n.ColumnFilter_TreeView_Blanks="(空白项)",n.ColumnFilter_TreeView_TooManyItems="数据过多,仅显示前 500 项!",n.ColumnFilter_TextBlock_And="和",n.ColumnFilter_TextBlock_Where="显示行:",n.ColumnFilter_Alert_IncorrectValue="输入的值不正确!",n.ColumnFilter_TextBlock_TextExample_In="示例:苹果,香蕉,橘子 (使用半角逗号分隔)",n.ColumnFilter_TextBlock_DateExample="示例:2019/01/01",n.ColumnFilter_TextBlock_DateExample_Between="示例:2019/01/01 和 2019/12/31",n.ColumnFilter_TextBlock_TimeExample="示例:10:00",n.ColumnFilter_TextBlock_TimeExample_Between="示例:10:00 和 12:00",n.ColumnFilter_ContextMenu_Suffix_OnlyCurrentPage="(仅限当前页)",n.ColumnOptionsCommand_Title="列选项",n.ColumnOptionsCommand_AvailableColumns="可用列:",n.ColumnOptionsCommand_SelectedColumns="显示列:",n.ColumnOptionsCommand_UnamedColumn="<未命名列>",n.ColumnOptionsCommand_ResetSetting="重置设定",n.ColumnOptionsCommand_AddColumn="添加列",n.ColumnOptionsCommand_RemoveColumn="移除列",n.ColumnOptionsCommand_MoveColumnUp="上移列 ",n.ColumnOptionsCommand_MoveColumnDown="下移列",n.AttachmentCell_NotSupportedFile="不支持的文件类型",n.CurrentUserCell_ChangeProfile="修改个人信息",n.CurrentUserCell_ChangePassword="修改密码",n.CurrentUserCell_Logout="退出当前账户",n.ChangeCurrentUserMFA_Enable="启用两步验证",n.ChangeCurrentUserMFA_Disable="停用两步验证",n.ChangeCurrentUserMFA_Enable_Confirm="确定要启用两步验证吗? 启用两步验证后需要重新登录以完成设备绑定过程。",n.ChangeCurrentUserMFA_Disable_Confirm="确定要停用两步验证吗? 停用两步验证后当前页面会重新加载。",n.ChangeCurrentUserMFA_Enable_Fail="启用两步验证失败。",n.ChangeCurrentUserMFA_Disable_Fail="停用两步验证失败。",n.ProcessBarCell_AssignedToPopup_Title="担当者",n.ProcessBarCell_AssignedTo="担当者",n.ProcessBarCell_AssignedTo_me="我",n.ProcessBarCell_AssignedToMultiUser="{0}及其他{1}人",n.ProcessBarCell_HistoryPopup_Title="状态历史",n.ProcessBarCell_History_Operator="操作者",n.ProcessBarCell_History_Time="时间",n.ProcessBarCell_History_EndStatus="结束状态",n.ProcessBarCell_History_Comments="备注",n.ProcessBarCell_History_ActionName="操作名称",n.ProcessBarCell_ActionPopup_Title="更新状态",n.ProcessBarCell_ActionPopup_NextStatus="下个状态",n.ProcessBarCell_ActionPopup_Assignto_Choose="选择担当者",n.ProcessBarCell_ActionPopup_Assignto_All="下个操作的担当者",n.ProcessBarCell_ActionPopup_Comments="注释",n.ProcessBarCell_OK="确定",n.ProcessBarCell_Cancel="取消",n.ProcessBarCell_Status="状态: {0}",n.ProcessBarCell_ChangeStateFailed="执行操作失败",n.ProcessBarCell_ChangeAssignee="修改担当者",n.ProcessBarCell_CreateBy="创建者:{0},创建时间:{1}",n.ProcessBarCell_LastModifyBy="最后更新者:{0},更新时间:{1}",n.CannotFindCell="本页面不能发现命名为'{0}'的单元格",n.CannotFindCellById="本页面不能发现Id等于'{0}'的单元格",n.CannotFindListview="本页面不能发现命名为'{0}'的表格",n.CannotFindColumn="在表格'{1}'中不能发现命名为'{0}'的列",n.CannotFindColumnIndex="在表格'{1}'中没有第'{0}'列",n.NotSupportEventForPage="'{1}'不支持事件'{0}'",n.NotSupportEventForCellOrListview="'{1}'或者'{2}'不支持事件'{0}'",n.NotSupportSetValue="单元格'{0}'不支持此方法",n.InvalidNumberParam="请设置正确的值给参数'{0}'",n.IndexOutOfRange="参数'{0}'超出范围",n.ForguncyApiExceptionString="{0} 在 {1}.{2} 方法 : {3}",n.InvalidFunctionParam="参数'{0}'应当是一个函数",n.HideShowColumns_CannotHideRowHeader="不能隐藏或显示行头/选择列",n.HideShowColumns_ListviewIsEditing="表格正在编辑,不能隐藏或显示列",n.HideShowColumns_CannotShowHiddenColumn="不能显示隐藏列(没有开启忽略隐藏)和在设计器中宽度为0的列",n.CannotFindCommandInCell="在单元格 '{0}' 上没有设置命令",n.CannotUseCommandParameterInCurrentContext="不能再当前上下文环境下访问命令参数(变量)",n.CannotSelectCellInColumn="不能选择行头,选择列和非显示列中的单元格",n.WebApi_ErrorInfo_NonemptyStringParam="参数'{0}'应当是一个非空字符。",n.WebApi_ErrorInfo_ParamInvalid="参数'{0}'无效",n.groupCell_Other="其他:",n.ClosePopupCommand_NotPopup="当前页面不是弹出式页面。",n.AddUserApiParamError="参数类型不正确!",n.Echart_DataLoadingText="数据加载中...",n.Echart_NoDataLoadingText="没有数据",n.Echart_BubbleChartToolTip="大小: {0}",n.InvalidCopyPasteSize="复制区域和粘贴区域大小不一样。",n.RangeOperationCannotInvolveTotalRow="单元格区域操作不能包含汇总行。",n.ValidateErrorMessage="值'{0}'在行: {1}, 列: {2}无效。\r\n错误信息:\r\n{3}",n.InvalidValueTypeMessage="无效的值类型。",n.ValueNotInList="没有包含在项目列表里。",n.ErrorInfo_Uncommited="有未提交的数据。",n.DataValidation_Required="不能为空",n.DataValidation_WholeNumberDefaultErrorMessage="输入的整数值非法",n.DataValidation_DecimalDefaultErrorMessage="输入的小数值非法",n.DataValidation_DateDefaultErrorMessage="输入的日期值非法",n.DataValidation_TimeDefaultErrorMessage="输入的时间值非法",n.DataValidation_TextLenghtDefaultErrorMessage="输入值的长度非法",n.DataValidation_CustomDefaultErrorMessage="输入的值非法",n.DataValidation_RegularUserInputDefaultErrorMessage="输入的值非法",n.DataValidation_RegularDefaultErrorMessage="输入的值无法通过{0}的验证",n.Validate_Number="请输入一个有效数字。",n.InvalidValueErrorMessage="不能提交无效的值'{0}' 到表'{2}'的列'{1}'。",n.uploadFileBiggerThanMaxFileCount="上传的文件个数已经达到最大,不能上传更多的文件。",n.uploadFileBiggerThanMaxSize="上传的文件 {0} 的大小超出了限制, 最大上传文件的大小为 {1} MB。",n.uploadFileNotMatchExtension="上传的文件 {0} 的类型不正确。",n.ExprotToExcelCalFormulaError="导出Excel文件的文件名,被您设置成了一个错误的值。",n.ExprotToPDFCalFormulaError="导出PDF文件的文件名,被您设置成了一个错误的值。",n.ExportListviewNoColumnError="表格中没有要导出的列。",n.AutoGeneratedID_Conflict_Error="自增编号已存在。请重新提交数据。",n.AutoGeneratedID_Generate_Error="自增编号'{0}'的顺序号长度超过设置长度。",n.AutoGeneratedID_Conflict_Listview_Error="字段'{0}'的数据已存在。",n.NoMatchBetweenExcelWithListViewError="要导入的Excel和页面上的表格不匹配。在Excel模板中找不到匹配的列名:{0}",n.InCorrectFileFormatError="文件格式不正确。",n.NoSelectedRowError="请至少选择一行",n.ImportExcelCannotFindListViewError="找不到表格'{0}'。",n.ImportExcelEmptyError="导入的excel中无数据。",n.ImportExcelConvertSheetIndexError="导入Excel文件时转换'{0}'为工作表索引值失败。",n.ImportExcelSheetIndexOutOfRangeError="导入Excel文件时工作表索引值'{0}'越界,应在'{1}'-'{2}'之间",n.ImportExcelSheetNotExistError="Excel文件中工作表'{0}'不存在。",n.ImportExcelSheetDataEmptyError="Excel文件中工作表'{0}'中无数据。",n.ImportExcelSheetDataTableEmptyError="Excel文件中工作表'{0}'中表格内容为空。",n.GUID_Creator="创建者",n.GUID_CreateDate="创建日期",n.GUID_LastModifyBy="最后更新者",n.GUID_LastModifyDate="最后更新日期",n.GUID_AssignTo="担当者",n.GUID_Status="状态",n.UpdateListviewCommand_Listview_Group="不能提交包含统计列的表格。",n.UpdateListviewCommand_Listview_DetailListview="不能提交没有主表当前行信息的从表。",n.ImportExcelFirstRowMissDataError="Excel文件中的第一行数据不能为空。",n.ImportExcelToListViewError_Detail="Excel文件中第'{0}'行,列名为'{1}'的值不合法。错误信息:{2}",n.ImportExcelToListViewError_ExistSameKeys="Excel文件中基准列存在相同数据,请确保基准列的数据唯一。\r\n重复值如下所示: {0}",n.ImportExcelToListViewError_ExistEmptyKeys="Excel文件中基准列存在空白数据,请确保基准列的数据非空。\r\n空白值所在行如下所示: {0}",n.ImportExcelToListViewError_ListViewExistEmptyKeys="表格'{0}'中基准列存在空白数据,请确保基准列的数据非空。\r\n空白值所在行如下所示: {1}",n.ImportExcelToListViewError_SkippedRowsFormatError="设置跳过行数的值格式错误,应为整数。",n.ImportExcelToListViewError_SkippedRowsInvalid="输入值不能用于跳过行数。请输入一个大于等于0的整数值。",n.UpdateViewFail_Error="更新失败。 \r\n当前视图不能更新。",n.UpdateListViewFail_BindingTableCantEditError="更新失败。 \r\n当前绑定的数据源不能更新。",n.ConcurrentLicenseError_Kickoffed="您已经被管理员强制登出。",n.ConcurrentLicenseError_NoEnoughLicense="访问被拒绝。并发用户访问数量达到最大值,如有疑问请联系管理员。",n.ConcurrentLicenseError_SendEmail="发送邮件",n.ConcurrentLicenseError_Cancel="不发送",n.ConcurrentLicenseError_MessagePlaceHolder="邮件内容",n.ConcurrentLicenseError_AddressPlaceHolder="请填写发件人地址",n.ConcurrentLicenseError_SendSuccess="发送成功",n.ConcurrentLicenseError_SendFailed="发送失败",n.ConcurrentLicenseError_EmailTitle="访问被拒绝",n.ConcurrentLicenseError_PleaseInputValidEmailAddress="请填写合法的邮箱",n.ConcurrentLicenseError_SenderAddress="发件人",n.ContainerCellType_Error_CircularReference="子页面'{0}'加载失败,存在循环引用。",n.NameConflict="名称'{0}'出现冲突,分别位于页面'{1}'和页面'{2}'",n.ContainerCellType_Error_NoExistedPage="页面'{0}'不存在。",n.SetCurrentRow_Error_NoRecord="设置表'{0}'的当前行失败,没有符合条件的记录。",n.ListViewAddNewRowError_CantConvertToNumber="不能转换成数字类型。",n.ListViewAddNewRowError_CantConvertToBool="不能转换成是否类型。",n.ListViewAddNewRowError_CantConvertToDateTime="不能转换成日期或时间类型。",n.CallStoredProcedureCommand_ExecuteFailed="存储过程执行失败。",n.Command_postFail_ErrorMessage="命令执行失败。",n.Commit_FailMessage="提交失败。",n.Commit_ExecutingMessage="您已经点过一次了,休息一下...",n.LongTimeNoOperation="由于您长时间没有操作页面,连接已经断开,如需继续使用请刷新页面。",n.PleaseClickButtonToReload="点击按钮重新加载本页面",n.ReloadPage="重新加载页面",n.DateTime_Calender_HeaderFormat="yyy年M月",n.DateTime_Calender_YearMonthFormat="yyyy年,M月",n.UnauthorizedUpload="不允许匿名操作。你需要登录。",n.SessionTimeout="会话过期, 请重新登录",n.ExprotActiveReportsCalFormulaError="导出报表的文件名被您设置成了一个错误的值。",n.ActiveReportsParameterValueCalFormulaError="报表的参数值被您设置成了一个错误的值。",n.ActiveReportsJsonDataSourceIsNotAJSONString="报表JSON数据源不是一个JSON字符串:{0}.",n.NameConflictWarning="名称'{0}'同时存在于单元格名称和变量中,单元格的值将会被使用。",n.StartExecuteCommand="执行命令:",n.StartExecutePageLoadCommand="执行‘{0}’页面加载命令",n.StartExecuteCellClickCommand="执行点击命令 {0}",n.StartExecuteCellValudeChangedCommand="执行值变更命令 {0}",n.UseTime="用时: {0} 毫秒",n.DataValidationNotPassed="页面上有单元格数据校验未通过,导致服务端命令执行被取消。如需关闭此限制,可以在活字设计器中找到对应的“调用服务端命令”,在高级设置中取消勾选“请求前数据校验”选项。",n.PopupCloseButton="弹出框关闭按钮",n.CommandName_ClosePopupCommand="关闭弹出页面",n.Log_NavigateCommand_PassValues="传值到目标页面",n.CreateCommandContextVariables="[创建命令上下文变量]",n.ServerCommandLog_CreateParam="创建变量 {0} = {1}",n.LeaveSiteConfirm="页面上可能包含未提交的数据,确认离开吗?",n.LeaveSiteConsoleMessage_Cell="单元格({0})",n.LeaveSiteConsoleMessage_Cell_DefaultValue="默认值: {0} ",n.LeaveSiteConsoleMessage_Cell_CurrentValue="当前值: {0}",n.LeaveSiteConsoleMessage_Listview="表格({0})",n.CantFindParam="找不到名称为‘{0}’的变量或参数",n.TriggerByCommand="由[{0}]触发",n.ExportPageToExcelCommand_PageNameTooLong="导出页面的名称长度不能超过31。",n.ExportListviewToExcelCommand_PageNameTooLong="导出表格所在页面的名称长度不能超过31。",n.BPM_LogText_CommitTitle="开始执行[提交]操作。",n.BPM_LogText_TerminateTitle="开始执行[终止]操作。",n.BPM_LogText_RollbackTitle="开始执行[回退]操作。",n.BPM_LogText_GetBackTitle="开始执行[取回]操作。",n.BPM_LogText_DispatchTitle="开始执行[调度]操作。",n.BPM_LogText_DelegateTitle="开始执行[委托]操作。",n.BPM_LogText_CancelDelegateTitle="开始执行[取消委托]操作。",n.BPM_LogText_AddOnSignTitle="开始执行[加签]操作。",n.BPM_LogText_CarbonCopyTitle="开始执行[抄送]操作。",n.BPM_LogText_ReadCarbonCopyTitle="开始执行[标记为已读]操作。",n.BPM_LogText_SaveBussinessData="保存业务数据: ",n.BPM_LogText_SaveBussinessDataCommand="[执行保存业务数据命令]",n.BPM_LogText_ExecutePreCommands="[执行前置命令]",n.BPM_LogText_ExecutePostCommands="[执行后置命令]",n.BPM_LogText_ExecuteTaskNodeAction="执行流程节点操作[{0}],任务 ID:[{1}]",n.BPM_LogText_CallStartProcessCommand_ByDefinitionID="调用发起流程命令,流程定义ID:[{0}],流程实例标题:{1}",n.BPM_LogText_CallStartProcessCommand_ByName="调用发起流程命令,流程定义名称:[{0}],流程实例标题:{1}",n.BPM_LogText_CallStartProcessCommand_Empty="<空>",n.BPM_UserSetting_UnnamedNode="<未命名节点>",n.BPM_AssigneesRow_SelectByUser_Placeholder="请选择用户",n.BPM_Error_AssigneesTarget_TypeIsNotExist="分配策略类型不正确",n.CurrentRow_NotExist="当前行数据为空,请检查流程发起命令",n.RowMode_NotExist="当前行模式不存在,请检查流程发起命令",n.ProcessInstanceName_EvaluteError="流程实例名称解析失败,请检查配置是否合法",n.ProcessDefinitionId_EvaluteError="流程定义ID解析失败,请检查配置是否合法",n.ProcessPanelCellType_UnnamedAction="<未命名动作>",n.ProcessPanelCellType_UnnamedNode="<未命名节点>",n.ProcessPanelCellType_GenerateBusinessKey_Error="当前数据库更新失败!",n.ProcessPanelCellType_UpdateCurrentRowsClosure_ConfirmText="您确定添加这条记录?",n.TaskActionDialog_CommentTextRow_Label="备注",n.TaskActionDialog_CommentTextRow_PlaceHolder="请输入备注信息",n.TaskActionDialog_AssigneesRow_AssginToLabel="负责人",n.TaskActionDialog_AssigneesRow_DelegateToLabel="代理人",n.TaskActionDialog_AssigneesRow_AddOnSignToLabel="审批人",n.TaskActionDialog_AssigneesRow_CarbonCopyToLabel="抄送人",n.TaskActionDialog_AssigneesRow_AddOnSignTypeLabel="模式",n.TaskActionDialog_AssigneesRow_AddOnSignTypePre="增加审批环节,在我审批之前审批",n.TaskActionDialog_AssigneesRow_AddOnSignTypePost="在我审批之后,增加一个审批环节",n.TaskActionDialog_AssigneesRow_SelectorDialogTitle="选择用户",n.TaskActionDialog_AssigneesRow_SelectorDialogTitle_Mobile="查看已选择的用户({0} 人)",n.TaskActionDialog_AssigneesRow_Error_NoUserInfo="无可选用户,请联系管理员",n.TaskActionDialog_AssigneesRow_AssignToCannotBeEmpty="请至少选择一名负责人",n.TaskActionDialog_AssigneesRow_DelegateToCannotBeEmpty="请至少选择一名代理人",n.TaskActionDialog_AssigneesRow_AddOnSignToCannotBeEmpty="请至少选择一名审批人",n.TaskActionDialog_AssigneesRow_CarbonCopyToCannotBeEmpty="请至少选择一名抄送人",n.TaskActionDialog_Component_Signature_SignatureLabel="签名",n.TaskActionDialog_Component_Signature_UseSavedSignature="使用保存的签名",n.TaskActionDialog_Component_Signature_NoSavedSignature="您还未保存过签名,请先使用【保存签名】按钮保存签名",n.TaskActionDialog_Component_Signature_MobileDialogTitle="手写签名",n.TaskActionDialog_Component_Signature_MobileSignaturePadPlaceHolder="点击下方编辑图标进行签名",n.TaskActionDialog_Component_Signature_SaveSignatureButtonText="保存签名",n.TaskActionDialog_Component_Signature_SaveSignatureSuccessfullyText="保存签名成功",n.TaskActionDialog_Component_Signature_SaveSignatureSuccessfullyText_ButValueIsEmpty="保存签名成功(签名为空)",n.TaskActionDialog_Component_Signature_SaveSignatureFailedText="保存签名失败",n.TaskActionDialog_Component_Signature_SignatureCannotBeEmpty="签名不能为空",n.TaskActionDialog_Component_Signature_ClearSignatureButtonText="清除",n.TaskActionDialog_Component_Signature_ComfirmSignatureButtonText="确定",n.TaskActionDialog_Component_Remark_CantbeEmpty="备注不能为空",n.UserSelectorDialog_SearchInput="搜索用户...",n.UserSelectorDialog_Selection_Title="已选择 {0} 人",n.UserSelectorDialog_Selection_IsMultiple="不限人数",n.UserSelectorDialog_Selection_NoMultiple="限制 1 人",n.UserSelectorDialog_TreeView_Title="组织部门",n.UserSelectorDialog_TreeView_NotOrganizedUser="无组织用户",n.UserSelectorDialog_UserList_Title="可选用户",n.UserSelectorDialog_DeleteList_Title="删除已选择用户",n.UserSelectorDialog_DeleteListTip_Text="你确定删除 {0} 用户吗?",n.CreateDelegateDialog_Title="新建委托",n.CreateDelegateDialog_Tip="在委托时间内,委托的流程任务会转交给代理人进行办理。",n.CreateDelegateDialog_DelegatedTime_Title="委托时间",n.CreateDelegateDialog_DelegatedTime_StartTime="开始时间:",n.CreateDelegateDialog_DelegatedTime_EndTime="结束时间:",n.CreateDelegateDialog_DelegatedTime_Error_EndTimeMustEarilerStartTime="结束时间不能早于或等于开始时间",n.CreateDelegateDialog_Agent_Title="代理人",n.CreateDelegateDialog_Agent_Tip="* 按顺序查找第一个有效的代理人,比如第一个人被删除,那会按顺序查找第二个人,依次类推。",n.CreateDelegateDialog_Agent_SelectAgent="添加代理人",n.CreateDelegateDialog_Agent_DeleteAgent="删除",n.CreateDelegateDialog_Agent_Error_AgentCannotBeEmpty="代理人不能为空",n.CreateDelegateDialog_DelegatedProcess_Title="委托流程",n.CreateDelegateDialog_DelegatedProcess_Tip="* “全部流程”是应用于目前所有的流程以及后续新加的流程。“选择流程”只应用于所选择的流程。",n.CreateDelegateDialog_DelegatedProcess_Type="委托流程:",n.CreateDelegateDialog_DelegatedProcess_AllProcesses="全部流程",n.CreateDelegateDialog_DelegatedProcess_SelectProcesses="选择流程",n.CreateDelegateDialog_DelegatedProcess_Error_ProcessCannotBeEmpty="流程不能为空",n.CreateDelegateDialog_ProcessTable_Title="标题",n.CreateDelegateDialog_ProcessTable_Description="描述",n.CreateDelegateDialog_Description_Title="委托备注",n.CreateDelegateDialog_Description_Placeholder="请输入委托备注",n.DelegationListDialog_Title="委托代理",n.DelegationListDialog_CreateDelegation="新建委托",n.DelegationListDialog_Tab_User="用户",n.DelegationListDialog_Tab_Org="组织结构",n.DelegationListDialog_Table_AllProcesses="全部流程",n.DelegationListDialog_Table_EmptyTime="无",n.DelegationListDialog_Table_DataColumn_Agent="代理人",n.DelegationListDialog_Table_DataColumn_DelegatedProcess="委托流程",n.DelegationListDialog_Table_DataColumn_StartTime="开始时间",n.DelegationListDialog_Table_DataColumn_EndTime="结束时间",n.DelegationListDialog_Table_DataColumn_CreateDate="创建时间",n.DelegationListDialog_Table_DataColumn_Description="备注",n.DelegationListDialog_Table_DataColumn_Update="更新",n.DelegationListDialog_Table_DataColumn_Delete="删除",n.DelegationListDialog_Table_DataColumn_Enable="启用",n.DelegationListDialog_Table_DataColumn_Disable="禁用",n.DelegationListDialog_Error_DelegationConfigurationIsEmpty="委托配置不存在",n.DelegationListDialog_Comfirm_EnabledConfuguration="确定启用委托吗?",n.DelegationListDialog_Comfirm_DisabledConfuguration="确定禁用委托吗?",n.DelegationListDialog_Comfirm_DeleteConfuguration="确定删除委托吗?",n.CreateDelegateDialog_User_NotExist="不存在",n.CreateDelegateDialog_User_Disabled="已禁用",n.CreateDelegateDialog_Process_NotExist="不存在",n.DebugWarningChecker_PopupTitle="{0}个警告",n.UpdateDelegateDialog_Title="更新委托",n.UI_Table_ActionColumn="操作",n.ThirdPartBindingLogin_Error_UserNameEmpty="请输入用户名",n.ThirdPartBindingLogin_Error_PasswordEmpty="请输入密码",n.ThirdPartBindingLogin_Error_PasswordLengthInvalid="密码长度应在6到18位之间",n.ThirdPartBindingLogin_Error_PasswordConfirmNotSame="两次输入的密码不一致",n.ForguncyUserAvator_UserName="用户名",n.ForguncyUserAvator_FullName="全名",n.ForguncyUserAvator_Email="电子邮箱",n.NotificationUnauthorized="订阅服务端通知失败,可能是因为权限不足。",n.NotificationLocationString="执行消息通知命令",n.PerformanceWarning="性能提示:",n.PerformanceWarningListviewLoadTwice="检测到表格'{0}'在页面加载过程中多次加载绑定数据,可能会导致页面加载过慢的性能问题。\r\n建议找到并开启'初始化页面时不加载表格数据'选项,以避免在页面加载过程中多次加载表格绑定数据而导致页面加载过慢的性能问题",n.PerformanceWarningListviewLoadTowManyDatas="检测到表格'{0}'从数据库中加载了过多数据({1}行), 可能会导致加载过慢的性能问题。\r\n建议添加分页组件或者开启表格的按需加载来避免表格一次性加载过多数据",n.PerformanceWarningChartLoadTwice="检测到图表'{0}'在页面加载过程中多次加载绑定数据,可能会导致页面加载过慢的性能问题。",n.PerformanceWarningChartLoadTowManyDatas="检测到图表'{0}'从数据库中加载了过多数据({1}行), 可能会导致加载过慢的性能问题。",n.RowHeightColumnWidth_InvalidNumber="输入的值无效,请输入一个在 0 和 9999999之间的值。",n.RowHeightColumnWidth_MinLargerThanMax="最小值应小于最大值。",n.PivotTableCellType_ClickCellTitle_Lable="值的标题",n.PivotTableCellType_ClickCellValue_Lable="单元格值",n.RequestAPIException="请求接口异常({0}):",n.RequestAPIParsererror="通常情况下,这是由于服务器返回的数据格式不正确而导致的。可能是因为服务器返回的数据不是有效的 JSON 格式,或者在返回的 HTML 或 XML 中存在语法错误。也有可能返回的JSON数据过大,无法解析。",n.CircularlyReferencingErrorMessages="很抱歉,由于数据中存在循环引用,无法构建树结构。循环引用会导致无限循环和无法确定的结果。请确保输入的数据没有相互引用或者循环关系,然后再尝试构建树形结构。",n.UserControlIsUnset="未设置目标组件。",n.CannotFindProperty="'{0}'找不到组件属性'{1}'",n.CannotSetPrivateProperty="'{0}'不能设置私有属性'{1}'的值",n.CannotGetPrivateProperty="'{0}'不能获取私有属性'{1}'的值",n.Condition_RelationType_Or="或者",n.Condition_RelationType_And="并且",n.ConditionCommand_Log_EvalueCondition="判断: {0} 结果为 {1}",n}();n._CNStringResource=i;r=function(){function n(){}return n.Culture="JA",n.NeedChangeOriginPassword="パスワードが初期パスワードのままです。セキュリティ向上のため、パスワードを変更してください。",n.PasswordNotChange="新しいパスワードを古いパスワードと同じにすることは出来ません。",n.UserNameOrPasswordIsIncorrect="ユーザーが存在しないか、パスワードに誤りがあります。",n.PasswordIsNotSame="パスワードが一致していません。",n.ForSafetyReasonPleaseChangeYourPassword="ログインしました。セキュリティ強化のため、初期パスワードを変更してください。",n.TokenIsInvalid="トークンが不正です。",n.ResetPasswordSuccess="パスワードがリセットされました。",n.Failed="失敗",n.UserName="ユーザー名",n.None="<なし>",n.deleteStr="削除",n.addStr="添付",n.listviewNotExisted="リストビューは存在しません。",n.FullName="氏名",n.Email="メールアドレス",n.Role="ロール",n.OrganizationSuperior="上位組織のメンバー",n.Success="成功しました。",n.ConfirmDelete="本当に削除してもよろしいですか?",n.Year="年",n.Month="月",n.Day="日",n.Quarter="四半期",n.noFieldErrorInfo="「{0}」テーブルを更新するために必要なデータ連結設定がありません。",n.unique="その値は既に存在します。異なる値を入力してください。",n.login="ログイン",n.cantAddEmptyFile="空のファイルをアップロードすることはできません。",n.Boolean_True="はい",n.Boolean_False="いいえ",n.MonthNames=["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],n.ColumnFilter_YearName="年",n.ColumnFilter_DayName="日",n.ContextMenu_CompareType_Equals="指定の値に等しい",n.ContextMenu_CompareType_DoesNotEqual="指定の値に等しくない",n.ContextMenu_CompareType_BeginsWith="指定値から始まる",n.ContextMenu_CompareType_DoesNotBeginWith="指定値から始まらない",n.ContextMenu_CompareType_EndsWith="指定値で終わる",n.ContextMenu_CompareType_DoesNotEndWidth="指定値で終わらない",n.ContextMenu_CompareType_Contains="指定値を含む",n.ContextMenu_CompareType_DoesNotContain="指定値を含まない",n.ContextMenu_CompareType_IsGreaterThan="指定の値より大きい",n.ContextMenu_CompareType_IsGreaterThanOrEqualTo="指定の値以上",n.ContextMenu_CompareType_IsLessThan="指定の値より小さい",n.ContextMenu_CompareType_IsLessThanOrEqualTo="指定の値以下",n.ContextMenu_CompareType_IsBetween="指定の範囲内",n.ContextMenu_CompareType_IsNotBetween="指定値の間以外",n.ContextMenu_CompareType_In="指定したリストに含まれる",n.ContextMenu_CompareType_NotIn="指定したリストに含まれない",n.ContextMenu_CompareType_IsLessThan_Date="指定の値より前",n.ContextMenu_CompareType_IsGreaterThan_Date="指定の値より後",n.ComboBox_CompareType_Equals="と等しい",n.ComboBox_CompareType_DoesNotEqual="と等しくない",n.ComboBox_CompareType_BeginsWith="で始まる",n.ComboBox_CompareType_DoesNotBeginWith="で始まらない",n.ComboBox_CompareType_EndsWith="で終わる",n.ComboBox_CompareType_DoesNotEndWidth="で終わらない",n.ComboBox_CompareType_Contains="を含む",n.ComboBox_CompareType_DoesNotContain="を含まない",n.ComboBox_CompareType_IsGreaterThan="より大きい",n.ComboBox_CompareType_IsGreaterThanOrEqualTo="以上",n.ComboBox_CompareType_IsLessThan="より小さい",n.ComboBox_CompareType_IsLessThanOrEqualTo="以下",n.ComboBox_CompareType_IsBetween="の間",n.ComboBox_CompareType_IsNotBetween="の間以外",n.ComboBox_CompareType_In="のリストに含まれる",n.ComboBox_CompareType_NotIn="のリストに含まれない",n.ComboBox_CompareType_IsLessThan_Date="より前",n.ComboBox_CompareType_IsGreaterThan_Date="より後",n.DateCompareType_Tomorrow="明日",n.DateCompareType_Today="今日",n.DateCompareType_Yesterday="昨日",n.DateCompareType_NextWeek="来週",n.DateCompareType_ThisWeek="今週",n.DateCompareType_LastWeek="先週",n.DateCompareType_NextMonth="来月",n.DateCompareType_ThisMonth="今月",n.DateCompareType_LastMonth="先月",n.DateCompareType_NextYear="来年",n.DateCompareType_ThisYear="今年",n.DateCompareType_LastYear="昨年",n.ForguncyUI_Dialog_OK="OK",n.ForguncyUI_Dialog_Cancel="キャンセル",n.ColumnFilter_Dialog_Title="フィルター",n.ColumnFilter_ContextMenu_SortAscending="昇順で並べ替え",n.ColumnFilter_ContextMenu_SortDesending="降順で並べ替え",n.ColumnFilter_ContextMenu_ClearFilter="フィルターをクリア",n.ColumnFilter_ContextMenu_Filter="フィルター",n.ColumnFilter_ContextMenu_CustomFilter="ユーザー設定フィルター",n.ColumnFilter_ContextMenu_NumberFilter="数値フィルター",n.ColumnFilter_ContextMenu_TextFilter="テキスト フィルター",n.ColumnFilter_ContextMenu_DateFilter="日付フィルター",n.ColumnFilter_TreeView_SelectAll="(すべて選択)",n.ColumnFilter_TreeView_Blanks="(空白)",n.ColumnFilter_TreeView_TooManyItems="500番目までのアイテムが表示されています",n.ColumnFilter_TextBlock_And="と",n.ColumnFilter_TextBlock_Where="抽出条件の指定:",n.ColumnFilter_Alert_IncorrectValue="適切な値を入力してください。",n.ColumnFilter_TextBlock_TextExample_In="(例) りんご,バナナ,オレンジ (半角のカンマで区切る)",n.ColumnFilter_TextBlock_DateExample="(例) 2020/01/01",n.ColumnFilter_TextBlock_DateExample_Between="(例) 2020/01/01 と 2019/12/31",n.ColumnFilter_TextBlock_TimeExample="(例) 10:00",n.ColumnFilter_TextBlock_TimeExample_Between="(例) 10:00 と 12:00",n.ColumnFilter_ContextMenu_Suffix_OnlyCurrentPage="(現在のページのみ)",n.ColumnOptionsCommand_Title="表示列のカスタマイズ",n.ColumnOptionsCommand_AvailableColumns="追加可能な列",n.ColumnOptionsCommand_SelectedColumns="表示列",n.ColumnOptionsCommand_UnamedColumn="<列名なし>",n.ColumnOptionsCommand_ResetSetting="初期状態に戻す",n.ColumnOptionsCommand_AddColumn="列の追加",n.ColumnOptionsCommand_RemoveColumn="列の削除",n.ColumnOptionsCommand_MoveColumnUp="1つ上へ移動",n.ColumnOptionsCommand_MoveColumnDown="1つ下へ移動",n.AttachmentCell_NotSupportedFile="サポートされていないファイル",n.CurrentUserCell_ChangeProfile="プロファイルの編集",n.CurrentUserCell_ChangePassword="パスワードの変更",n.CurrentUserCell_Logout="ログアウト",n.ChangeCurrentUserMFA_Enable="二要素認証の有効化",n.ChangeCurrentUserMFA_Disable="二要素認証の無効化",n.ChangeCurrentUserMFA_Enable_Confirm="本当に二要素認証を有効化してもよろしいですか?二要素認証の有効化にはモバイル端末への認証アプリのインストールが必要です。",n.ChangeCurrentUserMFA_Disable_Confirm="本当に二要素認証を無効化してもよろしいですか?[OK]ボタンをクリックするとページの再読み込みが行われます。",n.ChangeCurrentUserMFA_Enable_Fail="二要素認証を有効化できませんでした。",n.ChangeCurrentUserMFA_Disable_Fail="二要素認証を無効化できませんでした。",n.ProcessBarCell_AssignedToPopup_Title="現在の担当者",n.ProcessBarCell_AssignedTo="担当者",n.ProcessBarCell_AssignedTo_me="あなた",n.ProcessBarCell_AssignedToMultiUser="{0}と他{1}人",n.ProcessBarCell_HistoryPopup_Title="状態の履歴",n.ProcessBarCell_History_Operator="実行者",n.ProcessBarCell_History_Time="日時",n.ProcessBarCell_History_EndStatus="実行後の状態",n.ProcessBarCell_History_Comments="コメント",n.ProcessBarCell_History_ActionName="アクション名",n.ProcessBarCell_ActionPopup_Title="状態の更新",n.ProcessBarCell_ActionPopup_NextStatus="次の状態:",n.ProcessBarCell_ActionPopup_Assignto_Choose="次の担当者:",n.ProcessBarCell_ActionPopup_Assignto_All="次のアクションを実行可能なユーザー:",n.ProcessBarCell_ActionPopup_Comments="コメント:",n.ProcessBarCell_OK="OK",n.ProcessBarCell_Cancel="キャンセル",n.ProcessBarCell_Status="状態:{0}",n.ProcessBarCell_ChangeStateFailed="アクションの実行に失敗",n.ProcessBarCell_ChangeAssignee="担当者の変更",n.ProcessBarCell_CreateBy="作成者:{0} 作成日時:{1}",n.ProcessBarCell_LastModifyBy="最終更新者:{0} 最終更新日時:{1}",n.CannotFindCell="このページに '{0}' という名前のセルは存在しません",n.CannotFindCellById="'{0}' と等しいセルがこのページに見つかりません",n.CannotFindListview="このページに '{0}' という名前のリストビューは存在しません",n.CannotFindColumn="リストビュー '{1}' に '{0}' という名前の列は存在しません",n.CannotFindColumnIndex="リストビュー '{1}' の列インデックス '{0}' が不正です",n.NotSupportEventForPage="{1}のイベント '{0}' はサポートされていません",n.NotSupportEventForCellOrListview="{1} '{2}' のイベント '{0}' はサポートされていません",n.NotSupportSetValue="このメソッドはセル '{0}' でサポートされていません",n.InvalidNumberParam="パラメーター '{0}' に正しい数値を指定してください",n.IndexOutOfRange="パラメーター '{0}' に範囲外の値が指定されています",n.ForguncyApiExceptionString="{0} が {1}.{2} メソッド内で発生:{3}",n.InvalidFunctionParam="パラメーター '{0}' は関数オブジェクトを指定してください",n.HideShowColumns_CannotHideRowHeader="行ヘッダー列の表示、非表示を行うことはできません",n.HideShowColumns_ListviewIsEditing="編集中のリストビューに対して、列の表示、非表示を行うことはできません",n.HideShowColumns_CannotShowHiddenColumn="非表示の列([非表示を無視する]設定が有効になっていない) と、設計時の列幅が0である列を表示させることはできません。",n.CannotFindCommandInCell="セル「{0}」に設定コマンドがありません",n.CannotUseCommandParameterInCurrentContext="現在のコンテキストでコマンドパラメータ(変数)にアクセスできません",n.CannotSelectCellInColumn="列ヘッダー、行ヘッダー、選択列、非表示になっているセルを選択することはできません。",n.WebApi_ErrorInfo_NonemptyStringParam="パラメーター '{0}' を空にすることはできません。",n.WebApi_ErrorInfo_ParamInvalid="パラメーター '{0}' が正しくありません。",n.groupCell_Other="その他:",n.ClosePopupCommand_NotPopup="このページはポップアップウィンドウとして表示されていないため、[ポップアップウィンドウの終了]を実行することができません。",n.Echart_DataLoadingText="データの読み込み中...",n.Echart_NoDataLoadingText="データなし",n.InvalidCopyPasteSize="コピーと貼り付けの範囲サイズが異なっています。",n.RangeOperationCannotInvolveTotalRow="セルの操作範囲として集計行の領域を含めることはできません。",n.ValidateErrorMessage="行:{1}、列:{2}の値「{0}」は有効な値ではありません。\r\nエラー内容:\r\n{3}",n.InvalidValueTypeMessage="値の型が不正です。",n.ValueNotInList="その値は項目リストに含まれていません。",n.ErrorInfo_Uncommited="未確定のデータが含まれているため、クエリー/並べ替え処理を行うことはできません。",n.DataValidation_Required="必須入力項目です。",n.DataValidation_WholeNumberDefaultErrorMessage="入力した値は正しくありません。",n.DataValidation_DecimalDefaultErrorMessage="入力した値は正しくありません。",n.DataValidation_DateDefaultErrorMessage="入力した値は正しくありません。",n.DataValidation_TimeDefaultErrorMessage="入力した値は正しくありません。",n.DataValidation_TextLenghtDefaultErrorMessage="入力した文字列の長さは正しくありません。",n.DataValidation_CustomDefaultErrorMessage="入力した値は正しくありません。",n.DataValidation_RegularUserInputDefaultErrorMessage="入力した値は正しくありません。",n.DataValidation_RegularDefaultErrorMessage="入力した値は「{0}」の値として正しくありません。",n.Validate_Number="有効な数値を入力してください。",n.InvalidValueErrorMessage="「{2}」テーブルの「{1}」フィールドに不正な値「{0}」を登録、または更新することはできません。",n.uploadFileBiggerThanMaxFileCount="アップロードされたファイルの数が上限に達しています。これ以上ファイルをアップロードすることはできません。",n.uploadFileBiggerThanMaxSize="アップロードされたファイル「{0}」のサイズが大きすぎます。アップロード可能なファイルの最大サイズは {1} MBです。",n.uploadFileNotMatchExtension="拡張子が「{0}」であるファイルをアップロードすることは許可されていません。",n.ExprotToExcelCalFormulaError="数式の実行結果が#N/Aエラーであるため、Excelファイルをエクスポートすることができません。",n.ExprotToPDFCalFormulaError="数式の実行結果が#N/Aエラーであるため、PDFファイルをエクスポートすることができません。",n.ExportListviewNoColumnError="エクスポートの対象となる列がありません。",n.AutoGeneratedID_Conflict_Error="自動採番により生成されたIDは既に使用されています。対象のセルには新しいIDが表示されます。再度データの登録処理を行ってください。",n.AutoGeneratedID_Generate_Error="The auto-generated number '{0}' is greater than the specified length.",n.AutoGeneratedID_Conflict_Listview_Error="フィールド「{0}」の値は既に存在します。",n.ImportExcelFirstRowMissDataError="インポートしようとしたExcelファイルの最初の行にデータが存在しません。",n.NoMatchBetweenExcelWithListViewError="インポートに指定されたExcelファイルに、対象のリストビューに一致するデータ構造がしません。Excelファイルに一致する列が見つかりません。:{0}",n.InCorrectFileFormatError="不正なファイル形式です。",n.NoSelectedRowError="少なくとも1つ以上の行を選択してください。",n.ImportExcelCannotFindListViewError="リストビュー「{0}」が見つかりません。",n.ImportExcelEmptyError="インポート対象のExcelにデータがありません。",n.ImportExcelConvertSheetIndexError="Excelファイルのインポート時に「{0}」をワークシートのインデックス値に変換するのに失敗しました。",n.ImportExcelSheetIndexOutOfRangeError="指定されたワークシートのインデックス値「{0}」は選択したExcelにおいて範囲外です。「{1}」から「{2}」の値が指定されている必要があります。",n.ImportExcelSheetNotExistError="選択したExcelファイルにシート名「{0}」が存在しません。",n.ImportExcelSheetDataEmptyError="選択したExcelファイルのシート「{0}」にデータが存在しません。",n.ImportExcelSheetDataTableEmptyError="選択したExcelファイルのシート「{0}」のテーブルにデータがないか、インポート可能なデータが存在しません。",n.GUID_Creator="作成者",n.GUID_CreateDate="作成日時",n.GUID_LastModifyBy="最終更新者",n.GUID_LastModifyDate="最終更新日時",n.GUID_AssignTo="担当者",n.GUID_Status="状態",n.UpdateListviewCommand_Listview_Group="集計フィールドを含むリストビューを更新することはできません。",n.UpdateListviewCommand_Listview_DetailListview="マスターテーブルに合致するレコードが存在しない場合、詳細リストビューを更新することはできません。",n.ImportExcelToListViewError_Detail="Excelシートの {0} 行目、列「{1}」にある値が不正です。\r\nエラー内容:{2}",n.ImportExcelToListViewError_ExistSameKeys="インポートしようとしたExcelファイルの「一意となる列」に重複データがないかどうか確認してください。\r\n重複している値は以下の通りです。{0}",n.ImportExcelToListViewError_ExistEmptyKeys="There is blank data in the base column in the Excel file, please ensure that the data in the base column is not empty. \r\nThe line where the blank value is located is as follows: {0}",n.ImportExcelToListViewError_ListViewExistEmptyKeys="There is blank data in the base column in the listview '{0}', please ensure that the data in the base column is not empty. \r\nThe line where the blank value is located is as follows: {1}",n.ImportExcelToListViewError_SkippedRowsFormatError="The value setting the number of skipped lines is malformed, an integer is expected.",n.ImportExcelToListViewError_SkippedRowsInvalid="Input value cannot be used for sheet index. Please enter an integer value greater than 0.",n.UpdateViewFail_Error="更新に失敗しました。 \r\n 現在のビューを更新できません。",n.UpdateListViewFail_BindingTableCantEditError="更新処理に失敗しました。現在データ連結されているデータソースは更新できません。",n.AddUserApiParamError="パラメータの型が正しくありません。",n.ConcurrentLicenseError_Kickoffed="管理者により強制切断されました。",n.ConcurrentLicenseError_NoEnoughLicense="同時接続数が最大数に達しているため、アクセスが拒否されました。しばらくたってから再度アクセスするか、管理者に問い合わせてください。[メールを送信]ボタンを押すことでAdministratorロールのメンバーにメールを送ることができます。",n.ConcurrentLicenseError_SendEmail="メールを送信",n.ConcurrentLicenseError_Cancel="キャンセル",n.ConcurrentLicenseError_MessagePlaceHolder="送信するメールの本文を入力してください。",n.ConcurrentLicenseError_AddressPlaceHolder="送信元とするメールアドレスを入力してください。",n.ConcurrentLicenseError_SendSuccess="メールの送信が完了しました。",n.ConcurrentLicenseError_SendFailed="メールの送信に失敗しました。",n.ConcurrentLicenseError_EmailTitle="[Forguncy Server]同時接続数不足によるアクセス拒否の通知",n.ConcurrentLicenseError_PleaseInputValidEmailAddress="不正なメールアドレスが入力されています。",n.ConcurrentLicenseError_SenderAddress="送信元",n.ContainerCellType_Error_CircularReference="サブページ「{0}」が循環参照を行っているため、読み込みに失敗しました。",n.NameConflict="「{0}」という名前が競合しています。この名前はページ「{1}」とページ「{2}」の両方に存在します。",n.ContainerCellType_Error_NoExistedPage="ページ「{0}」が見つかりません。",n.SetCurrentRow_Error_NoRecord="テーブル「{0}」のカレントレコードの設定に失敗しました。指定されたクエリー条件に合致するレコードが存在しません。",n.ListViewAddNewRowError_CantConvertToNumber="数値型に変換できません。",n.ListViewAddNewRowError_CantConvertToBool="Yes/No型に変換できません。",n.ListViewAddNewRowError_CantConvertToDateTime="日付型、または時刻型に変換できません。",n.CallStoredProcedureCommand_ExecuteFailed="ストアドプロシージャーの実行に失敗しました。",n.Echart_BubbleChartToolTip="サイズ:{0}",n.Command_postFail_ErrorMessage="コマンドの実行に失敗しました。",n.Commit_FailMessage="データベースへの更新の反映に失敗しました。",n.Commit_ExecutingMessage="コマンドが実行中です。",n.LongTimeNoOperation="一定期間操作が行われなかったため、アプリケーションは切断されました。",n.PleaseClickButtonToReload="ボタンをクリックしてこのページを再読み込みします。",n.ReloadPage="ページの再読み込み",n.DateTime_Calender_HeaderFormat="yyy年M月",n.DateTime_Calender_YearMonthFormat="yyyy年,M月",n.UnauthorizedUpload="匿名ユーザーによるアクセスは許可されていません。 ログインが必要です。",n.SessionTimeout="セッションがタイムアウトしました。再度ログインしてください。",n.NameConflictWarning="セル名と変数名の両方に「{0}」という名前が存在していますが、セルの値が使用されます。",n.ExprotActiveReportsCalFormulaError="エクスポートされたレポートのファイル名に不正な値が設定されています。",n.ActiveReportsParameterValueCalFormulaError="レポートのパラメータに不正な値が設定されています。",n.ActiveReportsJsonDataSourceIsNotAJSONString="The json data source is not a JSON string:{0}.",n.StartExecuteCommand="コマンドの実行:",n.StartExecutePageLoadCommand="ページロード時のコマンド「{0}」を実行",n.StartExecuteCellClickCommand="クリック時のコマンド「{0}」を実行",n.StartExecuteCellValudeChangedCommand="値変更時のコマンド「{0}」を実行",n.UseTime="経過時間:{0}ミリ秒",n.DataValidationNotPassed="There is cell value verification on the page that fails,resulting in the cancellation of the execution of the server command.To close this restriction,you can find the corresponding 'call server command' in the designer,uncheck the 'data verification before request' option in the advanced settings.",n.PopupCloseButton="ポップアップウィンドウの閉じるボタン",n.CommandName_ClosePopupCommand="ポップアップウィンドウの終了",n.Log_NavigateCommand_PassValues="遷移先ページへの値の受け渡し",n.CreateCommandContextVariables="[Create command context's variables]",n.ServerCommandLog_CreateParam="パラーメーターの作成: {0} = {1}",n.LeaveSiteConfirm="行った変更が保存されない可能性があります。本当にこのページから離れてもよろしいですか?",n.LeaveSiteConsoleMessage_Cell="セル({0})",n.LeaveSiteConsoleMessage_Cell_DefaultValue="既定値:{0}",n.LeaveSiteConsoleMessage_Cell_CurrentValue="現在の値:{0}",n.LeaveSiteConsoleMessage_Listview="リストビュー({0})",n.CantFindParam="パラメーターが見つかりません:{0}",n.TriggerByCommand="Trigger by command {0}",n.ExportPageToExcelCommand_PageNameTooLong="The name of exported page cannot exceed 31.",n.ExportListviewToExcelCommand_PageNameTooLong="The name of page where the listview resides cannot exceed 31.",n.RowHeightColumnWidth_InvalidNumber="入力された値は使用できません。0 から 9999999 までの値を入力してください。",n.RowHeightColumnWidth_MinLargerThanMax="[最小値]は[最大値]よりも小さな値を設定してください。",n.BPM_LogText_CommitTitle="start execute commit operation.",n.BPM_LogText_TerminateTitle="start execute terminate operation.",n.BPM_LogText_RollbackTitle="start execute rollback operation.",n.BPM_LogText_GetBackTitle="start execute get back operation.",n.BPM_LogText_DispatchTitle="start execute dispatch operation.",n.BPM_LogText_DelegateTitle="start execute delegate operation.",n.BPM_LogText_CancelDelegateTitle="start execute cancel delegate operation.",n.BPM_LogText_AddOnSignTitle="start execute addon sign operation.",n.BPM_LogText_CarbonCopyTitle="start execute carbon copy operation.",n.BPM_LogText_ReadCarbonCopyTitle="start execute read carbon copy operation.",n.BPM_LogText_SaveBussinessData="Save business data: ",n.BPM_LogText_SaveBussinessDataCommand="[Execute save business data command]",n.BPM_LogText_ExecutePreCommands="[Execute pre commands]",n.BPM_LogText_ExecutePostCommands="[Execute post commands]",n.BPM_LogText_ExecuteTaskNodeAction="Execute task action [{0}], Task ID: [{1}]",n.BPM_LogText_CallStartProcessCommand_ByDefinitionID="Call ProcessStartCommand, ProcessDefinitionID: [{0}], Process Instance Name: {1}",n.BPM_LogText_CallStartProcessCommand_ByName="Call ProcessStartCommand, Process Name: [{0}], Process Instance Name: {1}",n.BPM_LogText_CallStartProcessCommand_Empty="",n.BPM_UserSetting_UnnamedNode="",n.BPM_AssigneesRow_SelectByUser_Placeholder="Please select assignee",n.BPM_Error_AssigneesTarget_TypeIsNotExist="AssigneesTarget's type is not exist",n.CurrentRow_NotExist="current row is not exist, check the process start command please",n.RowMode_NotExist="the selected row mode is not exist, check the process start command please",n.ProcessInstanceName_EvaluteError="the process instance name evaluate failed, check the cell setting please",n.ProcessDefinitionId_EvaluteError="The evaluation for the process definition id failed. Check the cell settings.",n.ProcessPanelCellType_UnnamedAction="",n.ProcessPanelCellType_UnnamedNode="",n.ProcessPanelCellType_GenerateBusinessKey_Error="The current database update failed",n.ProcessPanelCellType_UpdateCurrentRowsClosure_ConfirmText="You are sure to add this record?",n.TaskActionDialog_CommentTextRow_Label="Comment",n.TaskActionDialog_CommentTextRow_PlaceHolder="please enter the comment",n.TaskActionDialog_AssigneesRow_AssginToLabel="AssignTo",n.TaskActionDialog_AssigneesRow_DelegateToLabel="DelegateTo",n.TaskActionDialog_AssigneesRow_AddOnSignToLabel="AddOnSignTo",n.TaskActionDialog_AssigneesRow_CarbonCopyToLabel="CarbonCopyTo",n.TaskActionDialog_AssigneesRow_AddOnSignTypeLabel="Type",n.TaskActionDialog_AssigneesRow_AddOnSignTypePre="PreAddOnSign,add an approval step before current step",n.TaskActionDialog_AssigneesRow_AddOnSignTypePost="PostAddOnSign, add an approval step after current step",n.TaskActionDialog_AssigneesRow_SelectorDialogTitle="Select User",n.TaskActionDialog_AssigneesRow_SelectorDialogTitle_Mobile="Show the selected users ({0} users)",n.TaskActionDialog_AssigneesRow_Error_NoUserInfo="No optional users, contact your administrator",n.TaskActionDialog_AssigneesRow_AssignToCannotBeEmpty="Please select at least one user for Assign To.",n.TaskActionDialog_AssigneesRow_DelegateToCannotBeEmpty="Please select at least one user for Delegate To.",n.TaskActionDialog_AssigneesRow_AddOnSignToCannotBeEmpty="Please select at least one user for AddOnSign To.",n.TaskActionDialog_AssigneesRow_CarbonCopyToCannotBeEmpty="Please select at least one user for CarbonCopy To.",n.TaskActionDialog_Component_Signature_SignatureLabel="Signature",n.TaskActionDialog_Component_Signature_UseSavedSignature="Use the saved signature",n.TaskActionDialog_Component_Signature_NoSavedSignature="The saved signature is empty",n.TaskActionDialog_Component_Signature_MobileDialogTitle="Handwritten Signature",n.TaskActionDialog_Component_Signature_MobileSignaturePadPlaceHolder="Click the edit icon below to signature",n.TaskActionDialog_Component_Signature_SaveSignatureButtonText="Save",n.TaskActionDialog_Component_Signature_SaveSignatureSuccessfullyText="Saved signature successfully",n.TaskActionDialog_Component_Signature_SaveSignatureSuccessfullyText_ButValueIsEmpty="Saved signature successfully (Signature is empty)",n.TaskActionDialog_Component_Signature_SaveSignatureFailedText="Saved signature failed",n.TaskActionDialog_Component_Signature_SignatureCannotBeEmpty="The signature cannot be empty",n.TaskActionDialog_Component_Signature_ClearSignatureButtonText="Clear",n.TaskActionDialog_Component_Signature_ComfirmSignatureButtonText="OK",n.TaskActionDialog_Component_Remark_CantbeEmpty="The Comment cannot be empty",n.UserSelectorDialog_SearchInput="Search User...",n.UserSelectorDialog_Selection_Title="Selected {0} Users",n.UserSelectorDialog_Selection_IsMultiple="Unlimited",n.UserSelectorDialog_Selection_NoMultiple="Limited to 1 person",n.UserSelectorDialog_TreeView_Title="Organizational Departments",n.UserSelectorDialog_TreeView_NotOrganizedUser="Not Organized Users",n.UserSelectorDialog_UserList_Title="Optional user",n.UserSelectorDialog_DeleteList_Title="Delete selected user(s)",n.UserSelectorDialog_DeleteListTip_Text="Are you sure delete {0} users?",n.CreateDelegateDialog_Title="Create Delegate",n.CreateDelegateDialog_Tip="During the delegation time, the delegation process tasks will be transferred to the agent for handling.",n.CreateDelegateDialog_DelegatedTime_Title="Time",n.CreateDelegateDialog_DelegatedTime_StartTime="Start Time:",n.CreateDelegateDialog_DelegatedTime_EndTime="End Time:",n.CreateDelegateDialog_DelegatedTime_Error_EndTimeMustEarilerStartTime="End time cannot be earlier than or equal to start time.",n.CreateDelegateDialog_Agent_Title="Agent",n.CreateDelegateDialog_Agent_Tip="* Find the first valid agent in order, if the first person is deleted, it will find the second person in order, and so on.",n.CreateDelegateDialog_Agent_SelectAgent="Select Agent",n.CreateDelegateDialog_Agent_DeleteAgent="Delete",n.CreateDelegateDialog_Agent_Error_AgentCannotBeEmpty="Agent cannot be empty",n.CreateDelegateDialog_DelegatedProcess_Title="Process",n.CreateDelegateDialog_DelegatedProcess_Tip="* 'All' are applied to all current and subsequent new processes. 'Select' only be applied to the selected processes. ",n.CreateDelegateDialog_DelegatedProcess_Type="Delegation Process:",n.CreateDelegateDialog_DelegatedProcess_AllProcesses="All Processes",n.CreateDelegateDialog_DelegatedProcess_SelectProcesses="Select Processes",n.CreateDelegateDialog_DelegatedProcess_Error_ProcessCannotBeEmpty="Process cannot be empty",n.CreateDelegateDialog_ProcessTable_Title="Title",n.CreateDelegateDialog_ProcessTable_Description="Description",n.CreateDelegateDialog_Description_Title="Description",n.CreateDelegateDialog_Description_Placeholder="Please enter description",n.DelegationListDialog_Title="Delegate Setting",n.DelegationListDialog_CreateDelegation="Create Delegate",n.DelegationListDialog_Tab_User="User",n.DelegationListDialog_Tab_Org="Organization",n.DelegationListDialog_Table_AllProcesses="All Processes",n.DelegationListDialog_Table_EmptyTime="Empty",n.DelegationListDialog_Table_DataColumn_Agent="Agent(s)",n.DelegationListDialog_Table_DataColumn_DelegatedProcess="Process(es)",n.DelegationListDialog_Table_DataColumn_StartTime="Start Time",n.DelegationListDialog_Table_DataColumn_EndTime="End Time",n.DelegationListDialog_Table_DataColumn_CreateDate="Create Time",n.DelegationListDialog_Table_DataColumn_Description="Description",n.DelegationListDialog_Table_DataColumn_Update="Update",n.DelegationListDialog_Table_DataColumn_Delete="Delete",n.DelegationListDialog_Table_DataColumn_Enable="Enable",n.DelegationListDialog_Table_DataColumn_Disable="Disable",n.DelegationListDialog_Error_DelegationConfigurationIsEmpty="Delegation Configuration does not exist.",n.DelegationListDialog_Comfirm_EnabledConfuguration="Sure to enable delegate?",n.DelegationListDialog_Comfirm_DisabledConfuguration="Sure to disable delegate?",n.DelegationListDialog_Comfirm_DeleteConfuguration="Sure to delete delegate?",n.CreateDelegateDialog_User_NotExist="Inexistent",n.CreateDelegateDialog_User_Disabled="Disabled",n.CreateDelegateDialog_Process_NotExist="Inexistent",n.DebugWarningChecker_PopupTitle="{0} 警告",n.UpdateDelegateDialog_Title="Update Delegate",n.UI_Table_ActionColumn="Action(s)",n.ThirdPartBindingLogin_Error_UserNameEmpty="Please enter user name.",n.ThirdPartBindingLogin_Error_PasswordEmpty="Please enter password.",n.ThirdPartBindingLogin_Error_PasswordLengthInvalid="Password must between 6 and 18 characters.",n.ThirdPartBindingLogin_Error_PasswordConfirmNotSame="Password and Confirm Password are not same.",n.ForguncyUserAvator_UserName="UserName",n.ForguncyUserAvator_FullName="FullName",n.ForguncyUserAvator_Email="Email",n.NotificationUnauthorized="プッシュ通知の送信に失敗しました。ユーザーがログイン済みでない可能性があります。",n.NotificationLocationString="execute notification command",n.PerformanceWarning="Performance Tips:",n.PerformanceWarningListviewLoadTwice="List view '{0}' loaded binding data twice when page loading, it may bring performance problem. Suggest to enable 'Do not load data when page is loaded' setting to avoid load listview binding data multiple times.",n.PerformanceWarningListviewLoadTowManyDatas="List view '{0}' has too many rows ({1}) from database, it may bring performance problem. Suggest to add pagination cell to to paging the listview or enable load on demand option to limition maximum row count when load listview data.",n.PerformanceWarningChartLoadTwice="Chart '{0}' loaded binding data twice when page loading, it may bring performance problem",n.PerformanceWarningChartLoadTowManyDatas="Chart '{0}' has too many rows ({1}) from database, it may bring performance problem.",n.PivotTableCellType_ClickCellTitle_Lable="値のタイトル",n.PivotTableCellType_ClickCellValue_Lable="クリックされたセルの値",n.RequestAPIException="Request API exception ({0}): ",n.RequestAPIParsererror="Usually, this is caused by incorrectly formatted data being returned by the server. This may be because the data returned by the server is not in a valid JSON format, or there is a syntax error in the returned HTML or XML. It is also possible that the JSON data returned is too large to parse.",n.CircularlyReferencingErrorMessages="Unfortunately, it is not possible to build a tree structure due to circular references in the data. Circular references can lead to infinite loops and undeterminable results. Please make sure that the input data has no cross references or circular relationships before attempting to build the tree structure.",n.UserControlIsUnset="Target user control is unset.",n.CannotFindProperty="'{0}' can't find property '{1}'",n.CannotSetPrivateProperty="'{0}' can't set private property '{1}' value",n.CannotGetPrivateProperty="'{0}' can't get private property '{1}' value",n.Condition_RelationType_Or="Or",n.Condition_RelationType_And="And",n.ConditionCommand_Log_EvalueCondition="判定:{0} 結果は{1}",n}();n._JAStringResource=r;u=function(){function n(){}return n.Culture="KR",n.NeedChangeOriginPassword="현재 비밀번호는 초기 비밀번호이므로 보안을 위해 초기 비밀번호를 수정해주세요.",n.PasswordNotChange="새 암호는 이전 암호와 같을 수 없습니다.",n.UserNameOrPasswordIsIncorrect="사용자 이름 또는 암호가 올바르지 않거나 사용자가 비활성화되었습니다.",n.PasswordIsNotSame="암호가 동일하지 않습니다.",n.ForSafetyReasonPleaseChangeYourPassword="성공적으로 로그인하셨습니다. 이후 보안 유지를 위해 암호를 변경해 주십시오.",n.TokenIsInvalid="토큰이 잘못되었습니다.",n.ResetPasswordSuccess="암호 재설정 성공!",n.Failed="실패",n.UserName="사용자 이름",n.None="<없음>",n.deleteStr="삭제",n.addStr="추가",n.listviewNotExisted="리스트뷰가 없습니다.",n.FullName="전체 이름",n.Email="이메일",n.Role="역할",n.OrganizationSuperior="조직 관리자",n.Success="성공!",n.ConfirmDelete="삭제하시겠습니까?",n.Year="년",n.Month="월",n.Day="일",n.Quarter="분기",n.noFieldErrorInfo="{0} 표에 대한 필드가 없습니다.",n.unique="값이 존재합니다. 다른 값을 입력하십시오.",n.login="로그인",n.cantAddEmptyFile="빈 파일을 업로드할 수 없습니다.",n.Boolean_True="예",n.Boolean_False="아니오",n.MonthNames=["1월","2월","3월","4월","6월","7월","8월","9월","10월","11월","12월"],n.ColumnFilter_YearName="년",n.ColumnFilter_DayName="일",n.ContextMenu_CompareType_Equals="같음",n.ContextMenu_CompareType_DoesNotEqual="같지 않음",n.ContextMenu_CompareType_BeginsWith="~로 시작",n.ContextMenu_CompareType_DoesNotBeginWith="~로 시작하지 않는",n.ContextMenu_CompareType_EndsWith="~로 끝남",n.ContextMenu_CompareType_DoesNotEndWidth="~로 끝나지 않는",n.ContextMenu_CompareType_Contains="포함",n.ContextMenu_CompareType_DoesNotContain="포함하지 않는",n.ContextMenu_CompareType_IsGreaterThan="~보다 큰",n.ContextMenu_CompareType_IsGreaterThanOrEqualTo="크거나 같은",n.ContextMenu_CompareType_IsLessThan="~보다 작은",n.ContextMenu_CompareType_IsLessThanOrEqualTo="작거나 같은",n.ContextMenu_CompareType_IsBetween="범위 내",n.ContextMenu_CompareType_IsNotBetween="범위 밖",n.ContextMenu_CompareType_In="안에",n.ContextMenu_CompareType_NotIn="밖에",n.ContextMenu_CompareType_IsLessThan_Date="이전",n.ContextMenu_CompareType_IsGreaterThan_Date="이후",n.ComboBox_CompareType_Equals="같음",n.ComboBox_CompareType_DoesNotEqual="같지 않음",n.ComboBox_CompareType_BeginsWith="~로 시작",n.ComboBox_CompareType_DoesNotBeginWith="~로 시작하지 않는",n.ComboBox_CompareType_EndsWith="~로 끝남",n.ComboBox_CompareType_DoesNotEndWidth="~로 끝나지 않는",n.ComboBox_CompareType_Contains="포함",n.ComboBox_CompareType_DoesNotContain="포함하지 않는",n.ComboBox_CompareType_IsGreaterThan="~보다 큰",n.ComboBox_CompareType_IsGreaterThanOrEqualTo="크거나 같은",n.ComboBox_CompareType_IsLessThan="~보다 작은",n.ComboBox_CompareType_IsLessThanOrEqualTo="작거나 같은",n.ComboBox_CompareType_IsBetween="범위 내",n.ComboBox_CompareType_IsNotBetween="범위 밖",n.ComboBox_CompareType_In="안에",n.ComboBox_CompareType_NotIn="밖에",n.ComboBox_CompareType_IsLessThan_Date="이전",n.ComboBox_CompareType_IsGreaterThan_Date="이후",n.DateCompareType_Tomorrow="내일",n.DateCompareType_Today="오늘",n.DateCompareType_Yesterday="어제",n.DateCompareType_NextWeek="다음주",n.DateCompareType_ThisWeek="이번주",n.DateCompareType_LastWeek="지난주",n.DateCompareType_NextMonth="다음달",n.DateCompareType_ThisMonth="이번달",n.DateCompareType_LastMonth="지난달",n.DateCompareType_NextYear="내년",n.DateCompareType_ThisYear="올해",n.DateCompareType_LastYear="작년",n.ForguncyUI_Dialog_OK="확인",n.ForguncyUI_Dialog_Cancel="취소",n.ColumnFilter_Dialog_Title="필터",n.ColumnFilter_ContextMenu_SortAscending="오름차순 정렬",n.ColumnFilter_ContextMenu_SortDesending="내림차순 정렬",n.ColumnFilter_ContextMenu_ClearFilter="필터 초기화",n.ColumnFilter_ContextMenu_Filter="필터",n.ColumnFilter_ContextMenu_CustomFilter="사용자정의 필터",n.ColumnFilter_ContextMenu_NumberFilter="숫자 필터",n.ColumnFilter_ContextMenu_TextFilter="문자 필터",n.ColumnFilter_ContextMenu_DateFilter="날짜 필터",n.ColumnFilter_TreeView_SelectAll="(모두 선택)",n.ColumnFilter_TreeView_Blanks="(공백)",n.ColumnFilter_TreeView_TooManyItems="일부 항목 표시 안함",n.ColumnFilter_TextBlock_And="그리고",n.ColumnFilter_TextBlock_Where="항목 위치 표시:",n.ColumnFilter_Alert_IncorrectValue="입력한 값이 올바르지 않음!",n.ColumnFilter_TextBlock_TextExample_In="예) 사과,바나나,오렌지 (쉼표로 구분)",n.ColumnFilter_TextBlock_DateExample="예) 2019/01/01",n.ColumnFilter_TextBlock_DateExample_Between="예) 2019/01/01 부터 2019/12/31",n.ColumnFilter_TextBlock_TimeExample="예) 10:00",n.ColumnFilter_TextBlock_TimeExample_Between="예) 10:00 부터 12:00",n.ColumnFilter_ContextMenu_Suffix_OnlyCurrentPage="(현재 페이지에만 적용)",n.ColumnOptionsCommand_Title="열(Column) 옵션",n.ColumnOptionsCommand_AvailableColumns="사용가능한 열:",n.ColumnOptionsCommand_SelectedColumns="선택된 열:",n.ColumnOptionsCommand_UnamedColumn="<이름없는열>",n.ColumnOptionsCommand_ResetSetting="설정 초기화",n.ColumnOptionsCommand_AddColumn="열 추가",n.ColumnOptionsCommand_RemoveColumn="열 제거",n.ColumnOptionsCommand_MoveColumnUp="위로 열 이동 ",n.ColumnOptionsCommand_MoveColumnDown="아래로 열 이동",n.AttachmentCell_NotSupportedFile="지원하지 않는 파일입니다",n.CurrentUserCell_ChangeProfile="프로필 변경",n.CurrentUserCell_ChangePassword="암호 변경",n.CurrentUserCell_Logout="로그아웃",n.ChangeCurrentUserMFA_Enable="2단계 인증 활성화",n.ChangeCurrentUserMFA_Disable="2단계 인증 비활성화",n.ChangeCurrentUserMFA_Enable_Confirm="2단계 인증을 활성화하시겠습니까? 활성화하신 후 설정 확인을 위해 다시 로그인하셔야 합니다.",n.ChangeCurrentUserMFA_Disable_Confirm="2단계 인증을 비활성화하시겠습니까? 비활성화 하시면 현재 페이지는 새로고침됩니다.",n.ChangeCurrentUserMFA_Enable_Fail="2단계 인증 활성화 중 문제가 발생했습니다.",n.ChangeCurrentUserMFA_Disable_Fail="2단계 인증 비활성화 중 문제가 발생했습니다.",n.ProcessBarCell_AssignedToPopup_Title="현재 담당자",n.ProcessBarCell_AssignedTo="담당자",n.ProcessBarCell_AssignedTo_me="본인",n.ProcessBarCell_AssignedToMultiUser="{0} 및 {1} 등",n.ProcessBarCell_HistoryPopup_Title="상태 내역",n.ProcessBarCell_History_Operator="운영자",n.ProcessBarCell_History_Time="시간",n.ProcessBarCell_History_EndStatus="종료 상태",n.ProcessBarCell_History_Comments="메모",n.ProcessBarCell_History_ActionName="작업 이름",n.ProcessBarCell_ActionPopup_Title="상태 업데이트",n.ProcessBarCell_ActionPopup_NextStatus="다음 상태:",n.ProcessBarCell_ActionPopup_Assignto_Choose="담당자 선택:",n.ProcessBarCell_ActionPopup_Assignto_All="다음 상태의 담당자:",n.ProcessBarCell_ActionPopup_Comments="메모:",n.ProcessBarCell_OK="확인",n.ProcessBarCell_Cancel="취소",n.ProcessBarCell_Status="상태: {0}",n.ProcessBarCell_ChangeStateFailed="작업 실행 실패(_E)",n.ProcessBarCell_ChangeAssignee="담당자 변경",n.ProcessBarCell_CreateBy="{1}에 {0}이(가) 만듦",n.ProcessBarCell_LastModifyBy="{1}에 {0}이(가) 마지막으로 수정함",n.CannotFindCell="이 페이지에서 이름이 '{0}'인 셀을 찾을 수 없습니다",n.CannotFindCellById="이 페이지에서 ID가 '{0}'과(와) 같은 셀을 찾을 수 없습니다",n.CannotFindListview="이 페이지에서 이름이 '{0}'인 리스트뷰를 찾을 수 없습니다.",n.CannotFindColumn="'{1}' 리스트뷰에서 이름이 '{0}'인 열을 찾을 수 없습니다",n.CannotFindColumnIndex="'{1}' 리스트뷰의 열 인덱스 '{0}'이(가) 잘못되었습니다",n.NotSupportEventForPage="{1}에 대해 '{0}' 이벤트를 지원하지 않습니다.",n.NotSupportEventForCellOrListview="{1} '{2}'에 대해 '{0}' 이벤트를 지원하지 않습니다",n.NotSupportSetValue="이 메서드는 셀 '{0}'에 지원되지 않습니다",n.InvalidNumberParam="'{0}' 매개 변수에 대해 유효한 숫자를 제공하십시오",n.IndexOutOfRange="'{0}' 매개 변수가 범위를 벗어났습니다",n.ForguncyApiExceptionString="{1}.{2} 메서드의 {0}: {3}",n.InvalidFunctionParam="'{0}' 매개 변수는 함수여야 합니다",n.HideShowColumns_CannotHideRowHeader="행 헤더는 감추기/보이기 하실 수 없습니다",n.HideShowColumns_ListviewIsEditing="리스트뷰가 수정 모드일 때는 열을 감추기/보이기 하실 수 없습니다",n.HideShowColumns_CannotShowHiddenColumn="감추기 옵션이 선택되지 않은 감추어진 열 혹은 너비가 0인 열을 표시할 수 없습니다",n.CannotFindCommandInCell="현재 페이지의 셀 {0}에서 명령을 찾을 수 없습니다",n.CannotUseCommandParameterInCurrentContext="현재 상황에서는 매개 변수가 있는 명령을 사용하실 수 없습니다",n.CannotSelectCellInColumn="행 헤더를 선택할 수 없으며, 숨겨진 열에서 열 및 셀을 선택할 수 없습니다.",n.WebApi_ErrorInfo_NonemptyStringParam="'{0}' 매개 변수는 비어 있지 않은 문자열이어야 합니다.",n.WebApi_ErrorInfo_ParamInvalid="'{0}' 매개 변수가 올바르지 않습니다.",n.groupCell_Other="기타:",n.ClosePopupCommand_NotPopup="현재 페이지는 팝업 페이지가 아닙니다.",n.AddUserApiParamError="매개 변수의 유형이 잘못되었습니다!",n.Echart_DataLoadingText="데이터 로드 중...",n.Echart_NoDataLoadingText="데이터 없음",n.InvalidCopyPasteSize="복사 영역과 붙여넣기 영역의 크기가 다릅니다.",n.RangeOperationCannotInvolveTotalRow="범위 연산하실 때 전체 열을 대상으로 하실 수 없습니다.",n.ValidateErrorMessage="행: {1}, 열: {2}의 '{0}' 값이 잘못되었습니다.\r\n오류 메시지:\r\n{3}",n.InvalidValueTypeMessage="잘못된 값 유형입니다.",n.ValueNotInList="값이 항목 목록에 포함되어 있지 않습니다.",n.ErrorInfo_Uncommited="커밋되지 않은 데이터를 포함합니다.",n.DataValidation_Required="필수",n.DataValidation_WholeNumberDefaultErrorMessage="입력한 정수가 잘못되었습니다.",n.DataValidation_DecimalDefaultErrorMessage="입력한 10진수가 잘못되었습니다.",n.DataValidation_DateDefaultErrorMessage="입력한 날짜가 잘못되었습니다.",n.DataValidation_TimeDefaultErrorMessage="입력한 시간이 잘못되었습니다.",n.DataValidation_TextLenghtDefaultErrorMessage="입력한 값의 길이가 잘못되었습니다.",n.DataValidation_CustomDefaultErrorMessage="입력한 값이 수식과 일치하지 않습니다.",n.DataValidation_RegularUserInputDefaultErrorMessage="입력한 값이 정규식과 일치하지 않습니다.",n.DataValidation_RegularDefaultErrorMessage="입력한 값이 {0} 정규식과 일치하지 않습니다.",n.Validate_Number="유효한 숫자를 입력하십시오.",n.InvalidValueErrorMessage="'{2}' 표에서 '{1}' 열의 잘못된 값 '{0}'을(를) 커밋할 수 없습니다.",n.uploadFileBiggerThanMaxFileCount="업로드된 파일 수가 최대 수에 도달했습니다. 더 이상 파일을 업로드할 수 없습니다.",n.uploadFileBiggerThanMaxSize="업로드된 파일 {0} 크기가 제한보다 큽니다. 최대 크기는 {1}MB입니다.",n.uploadFileNotMatchExtension="업로드된 파일 {0}의 파일 유형이 허용되지 않습니다.",n.ExprotToExcelCalFormulaError="수식의 결과에 오류가 있어 Excel 파일로 내보내기 할 수 없습니다.",n.ExprotToPDFCalFormulaError="수식을 결과에 오류가 있어 PDF 파일로 내보내기 할 수 없습니다!",n.ExportListviewNoColumnError="테이블에 내보내기할 대상 열이 없습니다.",n.AutoGeneratedID_Conflict_Error="자동 생성된 ID가 이미 있습니다. 관련 셀이 새 ID를 업데이트했습니다. 데이터를 다시 커밋하십시오.",n.AutoGeneratedID_Generate_Error="The auto-generated number '{0}' is greater than the specified length.",n.AutoGeneratedID_Conflict_Listview_Error="'{0}' 필드의 값이 이미 존재합니다.",n.ImportExcelFirstRowMissDataError="Excel에서 가져온 첫 번째 행 데이터는 비워둘 수 없습니다.",n.NoMatchBetweenExcelWithListViewError="가져오기를 위해 지정된 Excel 문서에 대상 목록 보기와 일치하는 데이터 구조가 없습니다. Excel 문서에서 일치하는 열을 찾을 수 없음: {0}",n.InCorrectFileFormatError="올바르지 않은 파일 형식입니다.",n.NoSelectedRowError="하나 이상의 행을 선택하십시오.",n.ImportExcelCannotFindListViewError="목록 보기 '{0}'을(를) 찾을 수 없습니다.",n.ImportExcelEmptyError="There is no data in the imported excel.",n.ImportExcelConvertSheetIndexError="Failed to convert '{0}' to worksheet index value while importing Excel file.",n.ImportExcelSheetIndexOutOfRangeError="Import Excel file worksheet index value '{0}' out of range, should be between '{1}'-'{2}'.",n.ImportExcelSheetNotExistError="Sheet '{0}' does not exist in the Excel file.",n.ImportExcelSheetDataEmptyError="There is no data in the sheet '{0}' in the Excel file.",n.ImportExcelSheetDataTableEmptyError="The table data in the worksheet '{0}' in the Excel file is empty.",n.GUID_Creator="작성자",n.GUID_CreateDate="작성일",n.GUID_LastModifyBy="마지막 수정자",n.GUID_LastModifyDate="마지막 수정일",n.GUID_AssignTo="담당자",n.GUID_Status="상태",n.UpdateListviewCommand_Listview_Group="통계 열을 포함하는 ListView를 업데이트할 수 없습니다.",n.UpdateListviewCommand_Listview_DetailListview="마스터 표의 현재 행이 없는 세부 ListView를 업데이트할 수 없습니다.",n.ImportExcelToListViewError_Detail="Excel의 '{1}' 행 및 '{2}' 열에 있는 '{0}' 값이 잘못되었습니다. 오류 메시지: {3}",n.ImportExcelToListViewError_ExistSameKeys="Excel 데이터에 중복되는 Key값이 있습니다. Primary Key는 유일한 값이어야 합니다. 중복되는 값은 다음과 같습니다: {0}",n.ImportExcelToListViewError_ExistEmptyKeys="There is blank data in the base column in the Excel file, please ensure that the data in the base column is not empty. \r\nThe line where the blank value is located is as follows: {0}",n.ImportExcelToListViewError_ListViewExistEmptyKeys="There is blank data in the base column in the listview '{0}', please ensure that the data in the base column is not empty. \r\nThe line where the blank value is located is as follows: {1}",n.ImportExcelToListViewError_SkippedRowsFormatError="The value setting the number of skipped lines is malformed, an integer is expected.",n.ImportExcelToListViewError_SkippedRowsInvalid="Input value cannot be used for sheet index. Please enter an integer value greater than 0.",n.UpdateViewFail_Error="업데이트하지 못했습니다.\r\n 현재 보기를 업데이트할 수 없습니다.",n.UpdateListViewFail_BindingTableCantEditError="업데이트하지 못했습니다. \r\n 현재 연결된 데이터 원본을 업데이트할 수 없습니다.",n.ConcurrentLicenseError_Kickoffed="관리자에 의해 퇴출되었습니다.",n.ConcurrentLicenseError_NoEnoughLicense="동시 접속자 수가 초과되었습니다. 잠시 후 접속해 주십시오.",n.ConcurrentLicenseError_SendEmail="이메일 보내기",n.ConcurrentLicenseError_Cancel="보내지 않음",n.ConcurrentLicenseError_MessagePlaceHolder="여기에 이메일 내용을 입력하십시오.",n.ConcurrentLicenseError_AddressPlaceHolder="이메일 주소를 입력하십시오.",n.ConcurrentLicenseError_SendSuccess="보내기에 성공했습니다.",n.ConcurrentLicenseError_SendFailed="보내기에 실패했습니다.",n.ConcurrentLicenseError_EmailTitle="액세스가 거부되었습니다.",n.ConcurrentLicenseError_PleaseInputValidEmailAddress="유효한 이메일 주소를 입력하십시오.",n.ConcurrentLicenseError_SenderAddress="보낸이",n.ContainerCellType_Error_CircularReference="하위 페이지 '{0}' 로드에 실패했습니다. 순환 참조가 있습니다.",n.NameConflict="이름 '{0}'이(가) 충돌합니다. '{1}' 페이지 및 '{2}' 페이지 모두에 이 이름이 있습니다.",n.ContainerCellType_Error_NoExistedPage="'{0}' 페이지를 찾을 수 없습니다.",n.SetCurrentRow_Error_NoRecord="'{0}' 표의 현재 행을 설정하지 못했습니다. 쿼리 조건에 따른 데이터가 없습니다.",n.ListViewAddNewRowError_CantConvertToNumber="숫자로 변환할 수 없습니다.",n.ListViewAddNewRowError_CantConvertToBool="참/거짓으로 변환할 수 없습니다.",n.ListViewAddNewRowError_CantConvertToDateTime="날짜 또는 시간으로 변환할 수 없습니다.",n.CallStoredProcedureCommand_ExecuteFailed="저장 프로시저 실행에 실패했습니다.",n.Echart_BubbleChartToolTip="크기: {0}",n.Command_postFail_ErrorMessage="명령 실행 실패.",n.Commit_FailMessage="커밋 실패.",n.Commit_ExecutingMessage="명령이 실행중입니다.",n.LongTimeNoOperation="오랜 시간 동안 페이지를 조작하지 않으면 연결이 끊어집니다.",n.PleaseClickButtonToReload="페이지를 새로 고침하려면 버튼을 클릭하십시오..",n.ReloadPage="페이지 새로 고침",n.DateTime_Calender_HeaderFormat="yyy년M월",n.DateTime_Calender_YearMonthFormat="yyyy년,M월",n.UnauthorizedUpload="익명 접근을 허용하지 않습니다. 로그인하셔야 합니다.",n.SessionTimeout="세션이 만료되었습니다. 다시 로그인해 주십시오.",n.NameConflictWarning="입력하신 「{0}」는 셀 이름 혹은 변수명으로 이미 사용 중입니다.",n.ExprotActiveReportsCalFormulaError="수식 계산 시 내보내기 하시려는 보고서 파일의 이름이 잘못되었습니다.",n.ActiveReportsParameterValueCalFormulaError="수식 계산 시 매개 변수 값이 잘못되었습니다.",n.ActiveReportsJsonDataSourceIsNotAJSONString="The json data source is not a JSON string:{0}.",n.StartExecuteCommand="명령 수행:",n.StartExecutePageLoadCommand="페이지 로딩 시 명령 {0} 수행",n.StartExecuteCellClickCommand="셀 클릭 시 명령 {0} 수행",n.StartExecuteCellValudeChangedCommand="셀 값 변경 명령 {0} 수행",n.UseTime="기간: {0} ms",n.DataValidationNotPassed="There is cell value verification on the page that fails,resulting in the cancellation of the execution of the server command.To close this restriction,you can find the corresponding 'call server command' in the designer,uncheck the 'data verification before request' option in the advanced settings.",n.PopupCloseButton="팝업 닫기 버튼",n.CommandName_ClosePopupCommand="팝업 닫기",n.Log_NavigateCommand_PassValues="대상 페이지에 값 전달e",n.CreateCommandContextVariables="[명령 컨텍스트의 변수 만들기]",n.ServerCommandLog_CreateParam="매개 변수 생성 : {0} = {1}",n.LeaveSiteConfirm="변경하신 내용이 저장되지 않습니다. 그냥 이동하시겠습니까?",n.LeaveSiteConsoleMessage_Cell="셀({0})",n.LeaveSiteConsoleMessage_Cell_DefaultValue="기본 값: {0}",n.LeaveSiteConsoleMessage_Cell_CurrentValue="현재 값: {0}",n.LeaveSiteConsoleMessage_Listview="리스트뷰({0})",n.CantFindParam="매개변수를 찾을 수 없습니다.: {0}",n.TriggerByCommand="명령으로 트리거 {0}",n.ExportPageToExcelCommand_PageNameTooLong="내보낼 페이지명의 길이는 31자를 초과할 수 없습니다.",n.ExportListviewToExcelCommand_PageNameTooLong="리스트뷰가 있는 페이지명의 이름 길이는 31자를 초과할 수 없습니다.",n.BPM_LogText_CommitTitle="커밋 작업 실행을 시작합니다.",n.BPM_LogText_TerminateTitle="종료 작업 실행을 시작합니다.",n.BPM_LogText_RollbackTitle="롤백 작업 실행을 시작합니다.",n.BPM_LogText_GetBackTitle="되돌리기 작업을 시작합니다.",n.BPM_LogText_DispatchTitle="실행 보내기 작업을 시작합니다.",n.BPM_LogText_DelegateTitle="위임 작업 실행을 시작합니다.",n.BPM_LogText_CancelDelegateTitle="실행 취소 위임 작업을 시작합니다.",n.BPM_LogText_AddOnSignTitle="애드온 서명 작업을 시작합니다.",n.BPM_LogText_CarbonCopyTitle="사본 복사 작업을 시작합니다.",n.BPM_LogText_ReadCarbonCopyTitle="사본 읽기 복사 작업을 시작합니다.",n.BPM_LogText_SaveBussinessData="비즈니스 데이터 저장: ",n.BPM_LogText_SaveBussinessDataCommand="[비즈니스 데이터 저장 명령 실행]",n.BPM_LogText_ExecutePreCommands="[사전 명령 실행]",n.BPM_LogText_ExecutePostCommands="[사후 명령 실행]",n.BPM_LogText_ExecuteTaskNodeAction="작업 작업 실행 [{0}], 작업 ID: [{1}]",n.BPM_LogText_CallStartProcessCommand_ByDefinitionID="프로세스시작명령 호출, 프로세스 정의ID: [{0}], 프로세스 인스턴스 이름: {1}",n.BPM_LogText_CallStartProcessCommand_ByName="프로세스시작명령 호출, 프로세스 이름: [{0}], 프로세스 인스턴스 이름: {1}",n.BPM_LogText_CallStartProcessCommand_Empty="",n.BPM_UserSetting_UnnamedNode="<이름없는 노드>",n.BPM_AssigneesRow_SelectByUser_Placeholder="담당자를 선택하세요.",n.BPM_Error_AssigneesTarget_TypeIsNotExist="AssigneeTarget의 유형이 존재하지 않습니다.",n.CurrentRow_NotExist="현재 행이 존재하지 않습니다. 프로세스 시작 명령을 확인하십시오.",n.RowMode_NotExist="선택한 행 모드가 존재하지 않습니다. 프로세스 시작 명령을 확인하십시오.",n.ProcessInstanceName_EvaluteError="프로세스 인스턴스 이름 평가에 실패했습니다. 셀 설정을 확인하십시오.",n.ProcessDefinitionId_EvaluteError="프로세스 정의 ID에 대한 평가가 실패했습니다. 셀 설정을 확인하십시오.",n.ProcessPanelCellType_UnnamedAction="<이름 없는 액션>",n.ProcessPanelCellType_UnnamedNode="<이름 없는 노드>",n.ProcessPanelCellType_GenerateBusinessKey_Error="현재 데이터베이스 업데이트에 실패했습니다.",n.ProcessPanelCellType_UpdateCurrentRowsClosure_ConfirmText="이 레코드를 추가하시겠습니까?",n.TaskActionDialog_CommentTextRow_Label="메모",n.TaskActionDialog_CommentTextRow_PlaceHolder="메모를 입력해주세요",n.TaskActionDialog_AssigneesRow_AssginToLabel="할당자",n.TaskActionDialog_AssigneesRow_DelegateToLabel="대리인",n.TaskActionDialog_AssigneesRow_AddOnSignToLabel="승인자",n.TaskActionDialog_AssigneesRow_CarbonCopyToLabel="참조인",n.TaskActionDialog_AssigneesRow_AddOnSignTypeLabel="유형",n.TaskActionDialog_AssigneesRow_AddOnSignTypePre="승인 링크 추가, 현재 단계 전에 승인 단계 추가",n.TaskActionDialog_AssigneesRow_AddOnSignTypePost="승인 후, 승인 링크 추가",n.TaskActionDialog_AssigneesRow_SelectorDialogTitle="사용자 선택",n.TaskActionDialog_AssigneesRow_SelectorDialogTitle_Mobile="선택한 사용자 표시({0} 사용자)",n.TaskActionDialog_AssigneesRow_Error_NoUserInfo="선택할 수 있는 사용자가 없습니다. 관리자에게 문의하세요.",n.TaskActionDialog_AssigneesRow_AssignToCannotBeEmpty="Please select at least one user for Assign To.",n.TaskActionDialog_AssigneesRow_DelegateToCannotBeEmpty="Please select at least one user for Delegate To.",n.TaskActionDialog_AssigneesRow_AddOnSignToCannotBeEmpty="Please select at least one user for AddOnSign To.",n.TaskActionDialog_AssigneesRow_CarbonCopyToCannotBeEmpty="Please select at least one user for CarbonCopy To.",n.TaskActionDialog_Component_Signature_SignatureLabel="서명",n.TaskActionDialog_Component_Signature_UseSavedSignature="저장된 서명 사용",n.TaskActionDialog_Component_Signature_NoSavedSignature="저장된 서명이 비어 있습니다.",n.TaskActionDialog_Component_Signature_MobileDialogTitle="자필 서명",n.TaskActionDialog_Component_Signature_MobileSignaturePadPlaceHolder="서명하려면 아래 수정 아이콘을 클릭하세요.",n.TaskActionDialog_Component_Signature_SaveSignatureButtonText="저장",n.TaskActionDialog_Component_Signature_SaveSignatureSuccessfullyText="서명이 성공적으로 저장되었습니다.",n.TaskActionDialog_Component_Signature_SaveSignatureSuccessfullyText_ButValueIsEmpty="서명이 성공적으로 저장되었습니다(서명이 비어 있음).",n.TaskActionDialog_Component_Signature_SaveSignatureFailedText="서명을 저장하지 못했습니다.",n.TaskActionDialog_Component_Signature_SignatureCannotBeEmpty="서명은 비워둘 수 없습니다.",n.TaskActionDialog_Component_Signature_ClearSignatureButtonText="초기화",n.TaskActionDialog_Component_Signature_ComfirmSignatureButtonText="확인",n.TaskActionDialog_Component_Remark_CantbeEmpty="The Comment cannot be empty",n.UserSelectorDialog_SearchInput="검색 사용자...",n.UserSelectorDialog_Selection_Title="선택된 사용자 {0}명",n.UserSelectorDialog_Selection_IsMultiple="제한 없는",n.UserSelectorDialog_Selection_NoMultiple="1인 한정",n.UserSelectorDialog_TreeView_Title="조직 부서",n.UserSelectorDialog_TreeView_NotOrganizedUser="조직화되지 않은 사용자",n.UserSelectorDialog_UserList_Title="선택적 사용자",n.UserSelectorDialog_DeleteList_Title="선택한 사용자 삭제",n.UserSelectorDialog_DeleteListTip_Text="{0}명의 사용자를 삭제하시겠습니까?",n.CreateDelegateDialog_Title="대리인 생성",n.CreateDelegateDialog_Tip="위임 시간 동안 위임 프로세스 작업은 처리를 위해 에이전트에게 전달됩니다.",n.CreateDelegateDialog_DelegatedTime_Title="시간",n.CreateDelegateDialog_DelegatedTime_StartTime="시작 시간:",n.CreateDelegateDialog_DelegatedTime_EndTime="종료 시간:",n.CreateDelegateDialog_DelegatedTime_Error_EndTimeMustEarilerStartTime="종료 시간은 시작 시간보다 빠르거나 같을 수 없습니다.",n.CreateDelegateDialog_Agent_Title="에이전트",n.CreateDelegateDialog_Agent_Tip="* 첫 번째 유효한 에이전트를 순서대로 찾고, 첫 번째 사람이 삭제되면 두 번째 사람을 순서대로 찾는 식입니다.",n.CreateDelegateDialog_Agent_SelectAgent="에이전트 선택",n.CreateDelegateDialog_Agent_DeleteAgent="삭제",n.CreateDelegateDialog_Agent_Error_AgentCannotBeEmpty="에이전트는 비워둘 수 없습니다.",n.CreateDelegateDialog_DelegatedProcess_Title="프로세스",n.CreateDelegateDialog_DelegatedProcess_Tip="* '모든'은 현재 및 이후의 모든 신규 프로세스에 적용됩니다. '선택'은 선택된 프로세스에만 적용됩니다. ",n.CreateDelegateDialog_DelegatedProcess_Type="위임 절차:",n.CreateDelegateDialog_DelegatedProcess_AllProcesses="모든 프로세스",n.CreateDelegateDialog_DelegatedProcess_SelectProcesses="선택 프로세스",n.CreateDelegateDialog_DelegatedProcess_Error_ProcessCannotBeEmpty="프로세스는 비워둘 수 없습니다.",n.CreateDelegateDialog_ProcessTable_Title="제목",n.CreateDelegateDialog_ProcessTable_Description="설명",n.CreateDelegateDialog_Description_Title="설명",n.CreateDelegateDialog_Description_Placeholder="설명을 입력하세요",n.CreateDelegateDialog_User_NotExist="존재하지 않음",n.CreateDelegateDialog_User_Disabled="비활성화",n.CreateDelegateDialog_Process_NotExist="존재하지 않음",n.DelegationListDialog_Title="대리인 설정",n.DelegationListDialog_CreateDelegation="대리인 생성",n.DelegationListDialog_Tab_User="사용자",n.DelegationListDialog_Tab_Org="조직",n.DelegationListDialog_Table_AllProcesses="모든 프로세스",n.DelegationListDialog_Table_EmptyTime="비어 있는",n.DelegationListDialog_Table_DataColumn_Agent="에이전트(s)",n.DelegationListDialog_Table_DataColumn_DelegatedProcess="프로세스(es)",n.DelegationListDialog_Table_DataColumn_StartTime="시작 시간",n.DelegationListDialog_Table_DataColumn_EndTime="종료 시간",n.DelegationListDialog_Table_DataColumn_CreateDate="생성 시간",n.DelegationListDialog_Table_DataColumn_Description="설명",n.DelegationListDialog_Table_DataColumn_Update="업데이트",n.DelegationListDialog_Table_DataColumn_Delete="삭제",n.DelegationListDialog_Table_DataColumn_Enable="활성화",n.DelegationListDialog_Table_DataColumn_Disable="비활성화",n.DelegationListDialog_Error_DelegationConfigurationIsEmpty="위임 구성이 존재하지 않습니다.",n.DelegationListDialog_Comfirm_EnabledConfuguration="대리인을 활성화하시겠습니까?",n.DelegationListDialog_Comfirm_DisabledConfuguration="대리인을 비활성화하시겠습니까?",n.DelegationListDialog_Comfirm_DeleteConfuguration="대리인을 삭제하시겠습니까?",n.DebugWarningChecker_PopupTitle="{0} Warning",n.UpdateDelegateDialog_Title="대리인 업데이트",n.UI_Table_ActionColumn="c",n.ThirdPartBindingLogin_Error_UserNameEmpty="Please enter user name.",n.ThirdPartBindingLogin_Error_PasswordEmpty="Please enter password.",n.ThirdPartBindingLogin_Error_PasswordLengthInvalid="Password must between 6 and 18 characters.",n.ThirdPartBindingLogin_Error_PasswordConfirmNotSame="Password and Confirm Password are not same.",n.ForguncyUserAvator_UserName="사용자이름",n.ForguncyUserAvator_FullName="전체이름",n.ForguncyUserAvator_Email="이메일",n.NotificationUnauthorized="구독 서버 알림에 실패했습니다. 사용자가 승인되지 않았을 수 있습니다.",n.NotificationLocationString="알림 명령 실행",n.PerformanceWarning="성능 팁:",n.PerformanceWarningListviewLoadTwice="List view '{0}' loaded binding data twice when page loading, it may bring performance problem. Suggest to enable 'Do not load data when page is loaded' setting to avoid load listview binding data multiple times.",n.PerformanceWarningListviewLoadTowManyDatas="리스트뷰 '{0}'에 데이터베이스의 행({1})이 너무 많아 성능 문제가 발생할 수 있습니다. 리스트뷰를 페이징하기 위해 페이지 탐색 셀을 추가하거나 리스트뷰 데이터를 로드할 때 불러올 행 수를 제한하고, 데이터 로드 설정을 활성화하는 것이 좋습니다.",n.PerformanceWarningChartLoadTwice="Chart '{0}' loaded binding data twice when page loading, it may bring performance problem",n.PerformanceWarningChartLoadTowManyDatas="Chart '{0}' has too many rows ({1}) from database, it may bring performance problem.",n.RowHeightColumnWidth_InvalidNumber="입력 값을 사용할 수 없습니다. 0과 9999999 사이의 값을 입력하십시오.",n.RowHeightColumnWidth_MinLargerThanMax="최소 값은 최대 값 이해로 설정하셔야 합니다.",n.Condition_RelationType_Or="또는",n.Condition_RelationType_And="및",n.ConditionCommand_Log_EvalueCondition="판정 : {0} 결과는 {1}",n.PivotTableCellType_ClickCellTitle_Lable="값_제목",n.PivotTableCellType_ClickCellValue_Lable="클릭_된_셀_값",n.RequestAPIException="Request API exception ({0}): ",n.RequestAPIParsererror="Usually, this is caused by incorrectly formatted data being returned by the server. This may be because the data returned by the server is not in a valid JSON format, or there is a syntax error in the returned HTML or XML. It is also possible that the JSON data returned is too large to parse.",n.CircularlyReferencingErrorMessages="Unfortunately, it is not possible to build a tree structure due to circular references in the data. Circular references can lead to infinite loops and undeterminable results. Please make sure that the input data has no cross references or circular relationships before attempting to build the tree structure.",n.UserControlIsUnset="Target user control is unset.",n.CannotFindProperty="'{0}' can't find property '{1}'",n.CannotSetPrivateProperty="'{0}' can't set private property '{1}' value",n.CannotGetPrivateProperty="'{0}' can't get private property '{1}' value",n}();n._KOStringResource=u;f=function(){function n(){}return n.cultureName="en-US",n.dashboard_scenario_value_running_sum="Running Sum",n.dashboard_scenario_value_running_avg="Running Average",n.dashboard_scenario_value_running_max="Running Max",n.dashboard_scenario_value_running_min="Running Min",n.dashboard_scenario_value_running_cnt="Running Count",n.dashboard_scenario_value_moving_sum="Moving Sum",n.dashboard_scenario_value_moving_avg="Moving Average",n.dashboard_scenario_value_moving_max="Moving Max",n.dashboard_scenario_value_moving_min="Moving Min",n.dashboard_scenario_value_sumof="Sum of {0}",n.dashboard_scenario_value_avgof="Average of {0}",n.dashboard_scenario_value_maxof="Max of {0}",n.dashboard_scenario_value_minof="Min of {0}",n.dashboard_scenario_value_cntof="Count of {0}",n.dashboard_scenario_value_dstof="Distinct Count of {0}",n.dashboard_scenario_value_firstof="First of {0}",n.dashboard_scenario_value_lastof="Last of {0}",n.directives_scenariodimension_datadimensions_year="Year",n.directives_scenariodimension_datadimensions_fiscalyear="Fiscal Year",n.directives_scenariodimension_datadimensions_quarter="Quarter",n.directives_scenariodimension_datadimensions_month="Month",n.directives_scenariodimension_datadimensions_week="Week",n.directives_scenariodimension_datadimensions_day="Day",n.directives_scenariodimension_datadimensions_hour="Hour",n.directives_scenariodimension_datadimensions_minute="Minute",n.directives_scenariodimension_datadimensions_second="Second",n.directives_scenariodimension_datadimensions_millisecond="Millisecond",n.spread_pivot_table_subtotal="Total",n.spread_pivot_table_grand_total="Grand Total",n.nullvalue_display="(blank)",n.datetime_quarter_q1="Q1",n.datetime_quarter_q2="Q2",n.datetime_quarter_q3="Q3",n.datetime_quarter_q4="Q4",n.datetime_month_m1="Jan",n.datetime_month_m2="Feb",n.datetime_month_m3="Mar",n.datetime_month_m4="Apr",n.datetime_month_m5="May",n.datetime_month_m6="Jun",n.datetime_month_m7="Jul",n.datetime_month_m8="Aug",n.datetime_month_m9="Sep",n.datetime_month_m10="Oct",n.datetime_month_m11="Nov",n.datetime_month_m12="Dec",n.datetime_year_format="@",n}();n._PivotTableENSR=f;e=function(){function n(){}return n.cultureName="ja-JP",n.dashboard_scenario_value_running_sum="累積合計",n.dashboard_scenario_value_running_avg="累積平均",n.dashboard_scenario_value_running_max="累積最大値",n.dashboard_scenario_value_running_min="累積最小値",n.dashboard_scenario_value_running_cnt="累積数",n.dashboard_scenario_value_moving_sum="移動合計",n.dashboard_scenario_value_moving_avg="移動平均",n.dashboard_scenario_value_moving_max="移動最大値",n.dashboard_scenario_value_moving_min="移動最小値",n.dashboard_scenario_value_sumof="合計 {0}",n.dashboard_scenario_value_avgof="平均 {0}",n.dashboard_scenario_value_maxof="最大 {0}",n.dashboard_scenario_value_minof="最小 {0}",n.dashboard_scenario_value_cntof="データの個数 {0}",n.dashboard_scenario_value_dstof="一意のデータの個数 {0}",n.dashboard_scenario_value_firstof="最初のデータ {0}",n.dashboard_scenario_value_lastof="最後のデータ {0}",n.directives_scenariodimension_datadimensions_year="年",n.directives_scenariodimension_datadimensions_fiscalyear="会計年度",n.directives_scenariodimension_datadimensions_quarter="四半期",n.directives_scenariodimension_datadimensions_month="月",n.directives_scenariodimension_datadimensions_week="週",n.directives_scenariodimension_datadimensions_day="日",n.directives_scenariodimension_datadimensions_hour="時",n.directives_scenariodimension_datadimensions_minute="分",n.directives_scenariodimension_datadimensions_second="秒",n.directives_scenariodimension_datadimensions_millisecond="ミリ秒",n.spread_pivot_table_subtotal="計",n.spread_pivot_table_grand_total="総計",n.nullvalue_display="(空白)",n.datetime_quarter_q1="第1四半期",n.datetime_quarter_q2="第2四半期",n.datetime_quarter_q3="第3四半期",n.datetime_quarter_q4="第4四半期",n.datetime_month_m1="1月",n.datetime_month_m2="2月",n.datetime_month_m3="3月",n.datetime_month_m4="4月",n.datetime_month_m5="5月",n.datetime_month_m6="6月",n.datetime_month_m7="7月",n.datetime_month_m8="8月",n.datetime_month_m9="9月",n.datetime_month_m10="10月",n.datetime_month_m11="11月",n.datetime_month_m12="12月",n.datetime_year_format="@年",n}();n._PivotTableJASR=e;o=function(){function n(){}return n.cultureName="zh-CN",n.dashboard_scenario_value_running_sum="累积合计",n.dashboard_scenario_value_running_avg="累积平均",n.dashboard_scenario_value_running_max="累积最大值",n.dashboard_scenario_value_running_min="累积最小值",n.dashboard_scenario_value_running_cnt="累积计数",n.dashboard_scenario_value_moving_sum="移动合計",n.dashboard_scenario_value_moving_avg="移动平均",n.dashboard_scenario_value_moving_max="移动最大值",n.dashboard_scenario_value_moving_min="移动最小值",n.dashboard_scenario_value_sumof="合計 {0}",n.dashboard_scenario_value_avgof="平均 {0}",n.dashboard_scenario_value_maxof="最大值 {0}",n.dashboard_scenario_value_minof="最小值 {0}",n.dashboard_scenario_value_cntof="数值计数 {0}",n.dashboard_scenario_value_dstof="唯一计数 {0}",n.dashboard_scenario_value_firstof="第一条 {0}",n.dashboard_scenario_value_lastof="最后一条 {0}",n.directives_scenariodimension_datadimensions_year="年",n.directives_scenariodimension_datadimensions_fiscalyear="财年",n.directives_scenariodimension_datadimensions_quarter="季度",n.directives_scenariodimension_datadimensions_month="月",n.directives_scenariodimension_datadimensions_week="周",n.directives_scenariodimension_datadimensions_day="日",n.directives_scenariodimension_datadimensions_hour="时",n.directives_scenariodimension_datadimensions_minute="分",n.directives_scenariodimension_datadimensions_second="秒",n.directives_scenariodimension_datadimensions_millisecond="毫秒",n.spread_pivot_table_subtotal="小计",n.spread_pivot_table_grand_total="总计",n.scenario_slicer_relativedate_datetype_year="年",n.scenario_slicer_relativedate_datetype_quarter="季度",n.scenario_slicer_relativedate_datetype_month="月",n.scenario_slicer_relativedate_datetype_week="周",n.scenario_slicer_relativedate_datetype_day="日",n.nullvalue_display="(空白)",n.table_rows_empty_desc="无有效项",n.pivot_table_empty_desc="点击此区域设计透视表",n.pivot_table_dataset_removed="相关数据集被删除",n.datetime_quarter_q1="第一季度",n.datetime_quarter_q2="第二季度",n.datetime_quarter_q3="第三季度",n.datetime_quarter_q4="第四季度",n.datetime_month_m1="1月",n.datetime_month_m2="2月",n.datetime_month_m3="3月",n.datetime_month_m4="4月",n.datetime_month_m5="5月",n.datetime_month_m6="6月",n.datetime_month_m7="7月",n.datetime_month_m8="8月",n.datetime_month_m9="9月",n.datetime_month_m10="10月",n.datetime_month_m11="11月",n.datetime_month_m12="12月",n.datetime_year_format="@年",n}();n._PivotTableCNSR=o;s=function(){function n(){}return n.cultureName="ko-KR",n.dashboard_scenario_value_running_sum="누적합계",n.dashboard_scenario_value_running_avg="누적평균",n.dashboard_scenario_value_running_max="누적최대",n.dashboard_scenario_value_running_min="누적최소",n.dashboard_scenario_value_running_cnt="누적개수",n.dashboard_scenario_value_moving_sum="이동합계",n.dashboard_scenario_value_moving_avg="이동평균",n.dashboard_scenario_value_moving_max="이동최대",n.dashboard_scenario_value_moving_min="이동최소",n.dashboard_scenario_value_sumof="{0}의 합계",n.dashboard_scenario_value_avgof="{0}의 평균",n.dashboard_scenario_value_maxof="{0} 중 최대",n.dashboard_scenario_value_minof="{0} 중 최소",n.dashboard_scenario_value_cntof="{0} 개수",n.dashboard_scenario_value_dstof="{0} 중 고유 데이터의 개수",n.dashboard_scenario_value_firstof="{0} 중 첫번째",n.dashboard_scenario_value_lastof="{0} 중 마지막",n.directives_scenariodimension_datadimensions_year="년",n.directives_scenariodimension_datadimensions_fiscalyear="회계 연도",n.directives_scenariodimension_datadimensions_quarter="분기",n.directives_scenariodimension_datadimensions_month="월",n.directives_scenariodimension_datadimensions_week="주",n.directives_scenariodimension_datadimensions_day="일",n.directives_scenariodimension_datadimensions_hour="시",n.directives_scenariodimension_datadimensions_minute="분",n.directives_scenariodimension_datadimensions_second="초",n.directives_scenariodimension_datadimensions_millisecond="밀리 초",n.spread_pivot_table_subtotal="소계",n.spread_pivot_table_grand_total="총 합계",n.nullvalue_display="(비어있음)",n.datetime_quarter_q1="Q분기",n.datetime_quarter_q2="Q분기",n.datetime_quarter_q3="Q분기",n.datetime_quarter_q4="Q분기",n.datetime_month_m1="1월",n.datetime_month_m2="2월",n.datetime_month_m3="3월",n.datetime_month_m4="4월",n.datetime_month_m5="5월",n.datetime_month_m6="6월",n.datetime_month_m7="7월",n.datetime_month_m8="8월",n.datetime_month_m9="9월",n.datetime_month_m10="10월",n.datetime_month_m11="11월",n.datetime_month_m12="12월",n.datetime_year_format="@",n}();n._PivotTableKRSR=s;switch(n.StaticData.Lang){case"cn":n.RS=n._CNStringResource;break;case"ja":n.RS=n._JAStringResource;break;case"kr":n.RS=n._KOStringResource}})(Forguncy||(Forguncy={})) +;var Forguncy;(function(n){var f=function(){function n(){}return n.InnerID="innerid",n.NeedImplementException="Need Implement.",n.isInListview="isInListview",n.conditionalForeColor="conditionalForeColor",n.FontStyle_Italic="Italic",n.Font_Normal="Normal",n.FontWeight_Bold="Bold",n.RunTimeNormalPage="p",n.RunTimeMasterPage="m",n.DefaultFontSizeInPx=14.67,n}(),i,r,t,u;n.StaticValues=f;i=function(){function n(){}return n.toArray=function(){return[n.CreateBy,n.CreateDate,n.LastModifyBy,n.LastModifyDate,n.Status,n.AssignTo,]},n.CreateBy="FGC_Creator",n.CreateDate="FGC_CreateDate",n.LastModifyBy="FGC_LastModifier",n.LastModifyDate="FGC_LastModifyDate",n.AssignTo="FGC_AssignTo",n.Status="FGC_State",n}();n.GUIDColumnName=i;r=function(){function i(){}return i.IsKeyWord=function(n){if(n&&typeof n=="string"){var t=n;if(t===i.PageName||t===i.PageTitle||t===i.ViewportWidth||t===i.ViewportHeight||t===i.CurrentUserStr||t.length>i.CurrentUserPrefix.length+1&&t.indexOf(i.CurrentUserPrefix)===0&&t[t.length-1]==="%")return!0}return!1},i.GetKeyWordValue=function(r,u,f){var o,s,h,e,c,l;if(!i.IsKeyWord(r))return r;if(r===i.PageName||r===i.PageTitle)return u&&(o=n.PageManager.getContainerCell(u),o&&o.cellType instanceof n.UserControlPageCellType)?this.GetKeyWordValue(r,o.runTimePageName,f):r===i.PageName?n.PageManager.getDesignerPageName(u,!0):n.PageManager.getDesignerPageTitle(u,!0);if(r===i.ViewportWidth)return f&&(s=function(){var n=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0);f(n,function(){return $(window).off("resize",s)})},$(window).resize(s)),Math.max(document.documentElement.clientWidth||0,window.innerWidth||0);if(r===i.ViewportHeight)return f&&(h=function(){var n=Math.max(document.documentElement.clientHeight||0,window.innerHeight||0);f(n,function(){return $(window).off("resize",h)})},$(window).resize(h)),Math.max(document.documentElement.clientHeight||0,window.innerHeight||0);e=0;c=null;switch(r){case i.CurrentUserStr:case i.CurrentUserUserName:e=0;break;case i.CurrentUserEmail:e=2;break;case i.CurrentUserFullName:e=1;break;case i.CurrentUserRole:e=3;break;case i.CurrentUserOrganizationSuperior:e=6;break;default:l=r.length;c=r.substr(i.CurrentUserPrefix.length,l-i.CurrentUserPrefix.length-1);e=7}return t.getUserInfo({PropertyType:e,UserProperty:c})},i.Null="%Null%",i.CurrentUserStr="%CurrentUser%",i.CurrentUserPrefix="%CurrentUser.",i.CurrentUserEmail="%CurrentUser.Email%",i.CurrentUserFullName="%CurrentUser.FullName%",i.CurrentUserRole="%CurrentUser.Role%",i.CurrentUserUserName="%CurrentUser.UserName%",i.CurrentUserOrganizationSuperior="%CurrentUser.OrganizationSuperior%",i.PageName="%PageName%",i.PageTitle="%PageTitle%",i.ViewportWidth="%ViewportWidth%",i.ViewportHeight="%ViewportHeight%",i}();n.KeyWords=r;t=function(){function t(){}return t.getUserInfo=function(i){var r=n.ForguncyData.userInfo,u;switch(i.PropertyType){case 2:return r.Email;case 1:return r.FullName;case 6:return r.OrganizationSuperior;case 3:return r.Role;case 0:return r.UserName;case 4:return t.getCustomPropertyValue(i.UserProperty).Value;case 5:return t.getOrganizationLevelValue(i.UserProperty);case 7:return u=t.getCustomPropertyValue(i.UserProperty),u.Find?u.Value:t.getOrganizationLevelValue(i.UserProperty);default:return null}},t.getCustomPropertyValue=function(t){var i=n.ForguncyData.userInfo,r,u;if(i.GetCustomPropertyValue)return i.GetCustomPropertyValue(t);if(i.Properties)for(r=0;rt.maxWidth&&(t.height=t.height*(t.maxWidth/t.width),t.width=t.maxWidth),t.height>t.maxHeight&&(t.width=t.width*(t.maxHeight/t.height),t.height=t.maxHeight),t)},t.convertBase64ToFile=function(n){for(var i=n.split(","),f=i[0].match(/:(.*?);/)[1],r=atob(i[1]),t=r.length,u=new Uint8Array(t);t--;)u[t]=r.charCodeAt(t);return new Blob([u],{type:f})},t}();n.ImageCompressHelper=t})(Forguncy||(Forguncy={})) +;var Forguncy;(function(n){var t,f,i,e,r,u,o,s,h,c;typeof String.prototype.endsWith!="function"&&(String.prototype.endsWith=function(n){return this.indexOf(n,this.length-n.length)!==-1});t=jQuery;f=function(){function n(){}return n.dateTimeDefaultFormattingString="yyyy/M/d h:mm:ss",n.timeDefaultFormattingString="h:mm; @",n}();n.StaticFormatString=f;i=function(){function i(){}return i.isForguncyFile=function(n){return/^[0-9a-f]{8}-?[0-9a-f]{4}-?[1-5][0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}_.+$/i.test(n)},i.enumAllCommandsMetaData=function(n){var t=[],r,u,o,f,e,s;if(n)for(r=0;r"9"||t[r]<"0")break;if(e=Number(t.substring(u+1,r)),!isNaN(e))return{suffix:t.substring(r),row:f,col:e}}},i.back=function(){history.go(n.ForguncyData.enterHistoryCount-history.length-1)},i.openWindow=function(t){var i=window.open(t);!i&&(n.Platform.isMobile()||n.Platform.isIpad())&&(window.location.href=t)},i.trimStr=function(n){var t,i;if(typeof n!="string"||n.length===0)return n;if(n.trim)return n.trim();for(t=0;t=0;)if(n[i]!==" ")break;else i--;return t=0&&t=u.Column+u.ColumnCount)&&(r=-1),r)},i.typeContains=function(n,t){if(n){var i=n.$type;return typeof i=="string"&&i.indexOf(t)!==-1}return!1},i.updateFile=function(r,u,f,e,o,s,h,c){o===void 0&&(o=null);s===void 0&&(s=null);h===void 0&&(h=null);c===void 0&&(c=!1);var a=u&&(!o||o.MaxUploadFileCount!==1)?"multiple":"",l=t("#FGC_UploadFile_Input");l.length>0&&l.remove();l=t("<\/input>");n.Platform.isAndroid()&&n.Platform.isWeChatOrQQBrowser()&&(r=null);l.attr("accept",r);l.hide();l.appendTo("body");c&&l.attr(n.StaticValues.isInListview,!0);l.on("change",function(){var r,u,t,c;if(l.val())for(r=l[0],u=r.files.length,t=0;t0&&h.remove();h=t("<\/input>");h.hide();h.appendTo("body");s&&h.attr(n.StaticValues.isInListview,!0);h.on("change",function(){var n,t,s,l;if(h.val()){if(n=h[0],t=n.files.length,t===0)return;if(s=n.files[t-1],l=c.checkFileExtension(i===null||i===void 0?void 0:i.AllowExtensions,s.name,function(n){alert(n)}),!l)return;c.uploadImageToServer(s,i,r,u,e,o,f)}});n.ForguncyData.IsAutoTest||h.trigger("click")},i.uploadImageToServer=function(t,r,u,f,e,o,s){var c,h;if(s===void 0&&(s=null),u=u!==null&&u!==void 0?u:".art, .bmp, .cmx, .cod, .dib, .gif, .ico, .ief, .jfif, .jpe, .jpeg, .jpg, .pbm, .pgm, .png, .pnm, .pnz, .ppm, .ras, .rf, .rgb, .svg, .tif, .tiff, .wbmp, .xbm, .xpm, .xwd",c=this.checkFileExtension(u,t.name,function(n){e(n)}),c){if(t.size===0){e(n.RS.cantAddEmptyFile);return}o&&o();!i.IsEmpty(r)&&r.IsCompressImage&&n.ImageCompressHelper.isValidCompressImageExtension(t.name)?EXIF.getData(t,function(){EXIF.getAllTags(this);var o=EXIF.getTag(this,"Orientation"),u=new FileReader;u.onload=function(){var u={src:this.result,file:t,maxWidth:r.MaxWidth,maxHeight:r.MaxHeight,orientation:o,uploadLimitId:s};n.ImageCompressHelper.getCompressedImageFormData(u,function(n){i.uploadFileWithAjax(i.uploadImageUrl,n,f,e)})};u.readAsDataURL(t)}):(h=new FormData,h.append("file",t),h.append("uploadLimitId",s),i.uploadFileWithAjax(i.uploadImageUrl,h,f,e))}},i.uploadFileByHTML5=function(t,r,u,f,e){var s,o;if(f===void 0&&(f=null),e===void 0&&(e=null),f){if(s=this.checkFileExtension(f.ExtensionFilter,t.name,u),!s)return;if(f.SizeLimit&&f.SizeLimit*1048576');return u.css("background",n.ColorHelper.Convert(i)),u.css("opacity",r),u.addClass("disableSelect"),u},i.equals=function(n,t){return n===t?!0:n instanceof Date&&t instanceof Date?n.valueOf()===t.valueOf():!1},i.getA1ReferenceString=function(t,i,r,u){return n.FormulaHelper.unparse(n.FormulaHelper.createCellExpression(null,null,t,i,r,u))},i.parseCellReferenceFormulaToCellLocation=function(t){var u,h,c,i,r,o,s,l;if(!t)return[];var f=[],e=t.split(","),a=e.length;for(u=0;u0?e[u].split("!")[1]:e[u],i=n.FormulaHelper.parse(h),i.type===GC.Spread.CalcEngine.ExpressionType.reference)if(r=i.getRange(0,0),n.FormulaHelper.isCellExpression(i))f.push({Row:r.row,Column:r.col,ColumnRelative:i.columnRelative,RowRelative:i.rowRelative});else for(o=r.row;o0?t.split("!")[1]:t,i=n.FormulaHelper.parse(r),i.type===GC.Spread.CalcEngine.ExpressionType.array)try{return i.value.array[0]}catch(f){return null}return null},i.parseCellReferenceFormula=function(t,i){for(var u,f=n.Common.parseCellReferenceFormulaToCellLocation(t),e=[],o=f.length,r=0;r=t.Row&&i=t.Column&&r0?u[0]:null},i.AdjustCellRange=function(n){typeof n.Row=="undefined"&&(n.Row=0);typeof n.Column=="undefined"&&(n.Column=0);typeof n.RowCount=="undefined"&&(n.RowCount=0);typeof n.ColumnCount=="undefined"&&(n.ColumnCount=0)},i.GetLastBindingInfoColumnName=function(n){if(!n)return null;var t=n.RelationBinding;if(i.IsEmpty(t))return n.ColumnName;while(!i.IsEmpty(t.NextRelationBinding))t=t.NextRelationBinding;return t.DisplayColumn},i.rgbToHex=function(n,t,i){return"#"+(16777216+(n<<16)+(t<<8)+i).toString(16).slice(1)},i.hexToRgb=function(n){var t;return n=n.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(n,t,i,r){return t+t+i+i+r+r}),t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n),t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null},i.isEquals=function(n,t){return i.IsEmpty(n)||i.IsEmpty(t)?i.IsEmpty(n)&&i.IsEmpty(t):n===!0&&(t===1||t==="1")||t===!0&&(n===1||n==="1")||n===!1&&(t===0||t==="0")||t===!1&&(n===0||n==="0")?!1:i.isFuzzyEquals(n,t)},i.isFuzzyEquals=function(n,t){return n==t},i.isQueryEqual=function(t,r){if(n.Common.IsEmpty(t)||n.Common.IsEmpty(r))return!1;try{for(var u in t)if(!i.isFuzzyEquals(t[u],r[u]))return!1}catch(f){return!1}return!0},i.getUniqueNumber=function(){return(new Date).valueOf()},i.isValidateTime=function(n){return/^(?:[01]\d|2[0-3]):[0-5]\d(:[0-5]\d(\.\d{3})?)?$/.test(n)?!0:!1},i.isProcessView=function(n){return n==="ACT_RU_TASK_View"||n==="ACT_HI_TASKINST_View"||n==="ACT_HI_PROCINST_View"},i.isPageContainsTableBinding=function(t,i){if(n.ForguncyData.PageBindingTables){var r=n.ForguncyData.PageBindingTables[t];if(r&&r.length>0)return r.indexOf(i)>=0}return!1},i.htmlEncode=function(n){var t=document.createElement("div"),i=document.createTextNode(n);return t.appendChild(i),t.innerHTML},i.download=function(t,i){try{n.PageBuilder.isDownloading=!0;var r=document.createElement("a");i&&r.setAttribute("download",i);r.href=t;document.body.appendChild(r);r.click();document.body.removeChild(r)}finally{n.PageBuilder.isDownloading=!1}},i.getElementContentSize=function(n){var t=n.clone(),i;return t.css("display","inline"),t.appendTo("body"),i={width:t.width(),height:t.height()},t.remove(),i},i.isBuiltInDataBaseView=function(t){return n.ForguncyData.pageInfo.ViewInfoList.some(function(n){return n.ViewName===t&&n.IsBuiltin})},i.isView=function(t){return n.ForguncyData.pageInfo.ViewInfoList.some(function(n){return n.ViewName===t})},i.openTab=function(t){var r=n.PageManager.getContainerCell(t),u;r&&(r.cellType instanceof n.TabControlCellType&&(u=r.cellType,u.showTab(u.getTabIndex(t))),i.openTab(r.runTimePageName))},i.scrollToElement=function(n,t){i.openTab(t);var r=n.parents("#placeHolderDiv");r.length>0?(i._scrollPlaceHolderToElement(n,r),i._scrollWindowToElement(n)):i._scrollWindowToElement(n)},i._scrollWindowToElement=function(r){var c=t(window).width(),l=t(window).height(),u=r[0].getBoundingClientRect(),f=u.top<0||u.bottom>l,e=u.left<0||u.right>c;if(f||e){var o=r.offset(),s=f?o.top-i._scrollBufferDistance:undefined,h=e?o.left-i._scrollBufferDistance:undefined;n.DelayRefresh.NeedDelayRun?t("html, body").animate({scrollTop:s,scrollLeft:h},400):window.scrollTo({top:s,left:h})}},i._scrollPlaceHolderToElement=function(n,t){var f;if(t.css("overflow-x")==="auto"){var r=n.offset(),u=t.offset(),e=t.width(),o=r.left=u.left+e;o&&(f=r.left+t.scrollLeft()-u.left-i._scrollBufferDistance,t.scrollLeft(f))}},i.operateODataPost=function(t,r,u,f,e,o){var l;e===void 0&&(e=!0);o===void 0&&(o=null);var h=r,c=function(n){n.Success?u&&(n.Data&&n.Data.$values?u(n.Data.$values):(n.Data===undefined&&(n.Data=null),u(n.Data))):f&&f(n.ErrorMessage)},s=null;f&&(s=function(n){f(n.responseText)});e?i.IsEmpty(o)?n.Common.forguncyPost(t,h,c,null,s):(l="GetOData:"+o,n.Common.forguncyPost(t,h,c,l,s)):n.Common.forguncyPostSync(t,h,c,s)},i.convertMetaDataDefaultValue=function(t,i){return t=n.KeyWords.GetKeyWordValue(t,i),t===undefined?null:t},i.getRunTimePageNameFromFormulaCalcContext=function(t){if(t)if(i.IsEmpty(t.PageID)){if(t.IsInMasterPage)return n.StaticValues.RunTimeMasterPage}else return t.PageID;return n.StaticValues.RunTimeNormalPage},i.remove=function(n,t){if(!n)return!1;var i=n.indexOf(t);return i>=0?(n.splice(i,1),!0):!1},i.getMFADeviceInfo=function(){return new h(i.mfaDeviceLocalStorageKey).GetDeviceInfo()},i.setCookie=function(n){document.cookie=n},i.removeCookie=function(n){var t=new Date;t.setTime(t.getTime()-1);document.cookie=n+";expires="+t.toUTCString()},i.isShouldLoadMoreContent=function(n,t,i){var r=n.target.scrollTop,u=n.target.scrollHeight;return Math.ceil(r)+Math.ceil(t)+i>=u},i.generateID=function(n){return n===void 0&&(n=""),"".concat(n,"-").concat((new Date).getTime().toString(36),"-").concat(Math.random().toString(36).slice(2))},i.JsonUrlSwitchKeyWords=[["{","A"],['"',"B"],["[","C"],["}","D"],["]","E"],[":","F"],[",","G"],],i.postOrder={},i.uploadUrl=n.ForguncyData.ForguncyRoot+"FileDownloadUpload/Upload",i.uploadImageUrl=n.ForguncyData.ForguncyRoot+"FileDownloadUpload/UploadImage",i.getLowerCaseString=function(n){return n=String(n),n.toLowerCase()},i._scrollBufferDistance=100,i.mfaDeviceLocalStorageKey="25538D1E-3B9A-4E10-9FA2-3D850A47A8A6",i}();n.Common=i;e=function(){function n(){}return n.getBorderWidth=function(n){switch(n){case GC.Spread.Sheets.LineStyle.hair:case GC.Spread.Sheets.LineStyle.thin:case GC.Spread.Sheets.LineStyle.dashDot:case GC.Spread.Sheets.LineStyle.dashDotDot:case GC.Spread.Sheets.LineStyle.dashed:case GC.Spread.Sheets.LineStyle.dotted:return 1;case GC.Spread.Sheets.LineStyle.medium:case GC.Spread.Sheets.LineStyle.mediumDashDot:case GC.Spread.Sheets.LineStyle.mediumDashDotDot:case GC.Spread.Sheets.LineStyle.mediumDashed:case GC.Spread.Sheets.LineStyle.slantedDashDot:return 2;case GC.Spread.Sheets.LineStyle.thick:case GC.Spread.Sheets.LineStyle.double:return 3;default:return 0}},n}();n.SpreadJSHelper=e;r=function(){function t(){}return t.fromDateToOADate=function(t){return n.SpreadJSHelpMethods._DateTimeHelper.___toOADate(t)},t.fromOADateToDate=function(t){return n.SpreadJSHelpMethods._DateTimeHelper._fromOADate(t)},t}();n.Convertor=r;u=function(){function n(){}return n.getToday=function(){var n=new Date;return n.setHours(0),n.setMinutes(0),n.setSeconds(0),n.setMilliseconds(0),n},n.isValidDateValue=function(t){return this.isValidDate(t)?!0:typeof t=="number"?n.isValidDateValue(r.fromOADateToDate(t)):!1},n.isValidDate=function(n){return n instanceof Date&&!isNaN(n.valueOf())},n.adjustDateWith485Timezone=function(n){var t=n.getTimezoneOffset();return t===-485?r.fromDateToOADate(n):n},n}();n.DateHelper=u;o=function(){function t(){}return t.isFormatSetted=function(n){return!i.IsEmpty(n)&&n!=="General"},t.isDateOrTimeFormat=function(n){var f,i,r,e,o,s;if(!t.isFormatSetted(n))return!1;for(f=["#","?","E","%"],i=0,r=f;i=0)return!1;return o=new GC.Spread.Formatter.GeneralFormatter(n,null),s=o.parse("2020/1/30"),u.isValidDate(s)},t.isTimeFormat=function(n){var u,i,r,f;if(!t.isDateOrTimeFormat(n))return!1;for(u=["h","s",":","時","分","秒","时","시","분","초"],i=0,r=u;i=0)return!0;return!1},t.format=function(n,t){var r=new GC.Spread.Formatter.GeneralFormatter(n,null),i={},u=r.format(t,i);return{text:u,color:i.conditionalForeColor}},t.getValueFromText=function(n,t){if(t===void 0&&(t=null),typeof n!="string")return n;var i={value:null};try{new GC.Spread.Formatter.GeneralFormatter(t,null).getPreferredDisplayFormatter(n,i)}catch(r){return n}return i.value!==null?i.value:n},t.getTextFromValue=function(n,t){var r,u,f;return n instanceof Date?(r=new GC.Spread.Formatter.GeneralFormatter("",null),u=r.getPreferredEditingFormatter(n),n=u.format(n,{})):this.isPercentageFormat(t)&&!i.IsEmpty(n)&&(f=new GC.Spread.Formatter.GeneralFormatter(t,null),n=f.format(n,{})),i.IsEmpty(n)&&(n=""),n},t.isPercentageFormat=function(n){if(n&&n[n.length-1]==="%"){var t=n.substr(0,n.length-1);if(Number(t)===0)return!0}return!1},t.formatValue=function(t,r,u){if(n.Common.IsEmpty(t))return"";if(i.IsEmpty(r)&&t instanceof Date&&(r=n.StaticFormatString.dateTimeDefaultFormattingString),i.IsEmpty(r)||typeof r!="string")return t+"";var f=new GC.Spread.Formatter.GeneralFormatter(r,null);return f.format(t,u)},t}();n.FormatHelper=o;s=function(){function t(){}return t.printJavascriptAIPError=function(i,r,u){try{var f=n.Common.format(n.RS.ForguncyApiExceptionString,"ForguncyApiException",i,r,u);throw new Error(f);}catch(e){t.printError(e)}},t.printError=function(i){var f="",u,o,r;if(i instanceof Error){var h=n.ForguncyData.ForguncyRoot+"Resources/JS.js?v=",s=i.stack+"",e="\n";for(s.indexOf("\r\n")>=0&&(e="\r\n"),u=s.split(e),o=[],r=0;r")[0],n=i.getContext("2d"),n.font="18pt Arial",n.textBaseline="top",n.fillText("Hello, user.",2,2),r=i.toDataURL("image/jpeg"),r.length}catch(u){return 0}},n}();c=function(){function t(){}return t.getHeight=function(n,t,i,r,u,f){return u===void 0&&(u="国"),f===void 0&&(f=1),this.getWidth(n,t,i,r,u)*f},t.getWidth=function(n,i,r,u,f){var h=t.getFontString(n,i,r,u),e=f+":"+h,c,o,s;return this._cachedSize[e]?this._cachedSize[e]:(this._cachedContext||(c=document.createElement("canvas"),this._cachedContext=c.getContext("2d")),o=this._cachedContext,o.font=h,s=o.measureText(f).width,this._cachedSize[e]=s,s)},t.getFontString=function(t,i,r,u){return[t?t:"normal",i?i:"normal",r+"px",u?u:n.LocaleFonts.default].join(" ")},t._cachedSize={},t}();n.MeasureHelper=c})(Forguncy||(Forguncy={})) +;var Forguncy;(function(n){var t=function(){function t(){}return t.addCSSRules=function(t,i){t.forEach(function(t){n.CellTypeStyleTemplateUtils.AddCSSTextToDocument(t,i)})},t.getCssFontInfoFromCssFontString=function(n){var t=$(""),i,r;return t.css("font",n),i=t.css("lineHeight"),r=t.css("fontVariant"),{fontStyle:t.css("fontStyle"),fontWeight:t.css("fontWeight"),fontSize:t.css("fontSize"),fontFamily:t.css("fontFamily"),lineHeight:i==="normal"?"":i,fontVariant:r==="normal"?"":r}},t.getCssFontStringFromCssFontInfo=function(n){var t="";return Object.keys(n).forEach(function(i){n[i]&&n[i].length&&(t+=n[i]+" ")}),t.trim()},t.getClassName=function(t){var s=Object.keys(t),u,f,h,e,o,i,r,c;if(s.length===0)return null;for(s.sort(),u={},f=0,h=s;f=0&&f+r.length===u.length):t===9?(f=u.lastIndexOf(r),!(f>=0&&f+r.length===u.length)):t===10?(f=u.lastIndexOf(r),f!==-1):t===11?(f=u.lastIndexOf(r),f===-1):t===14?(r=this.ReplaceRegexKeywords(r),e=new RegExp("^"+r.replaceAll("%","((.|\\n)*)").replaceAll("_",".")+"$","i"),e.exec(u)!==null):!1},t.ReplaceRegexKeywords=function(n){for(var r,t=0,i=this.REGEX_KEY_WORDS;tu;if(r===3)return i>=u;if(r===4)return i=0:!1},t.needRefreshCellRange=function(i,r,u){var f=t.getLocatedListviewCalcName(r,u);return n.Common.IsEmpty(i.calcName)&&n.Common.IsEmpty(f)?t.needRefreshNormalCellRange(i.arg,r,u):i.calcName===f?t.needRefreshListviewCellRange(f,i.arg,r):!1},t.needRefreshNormalCellRange=function(t,i,r){var u=n.Common.parseIDStr(t.id);return u.suffix===r&&(u.row>=i.Row&&u.row=i.Column&&u.col1},i.isIOSDevice=function(){return/iPad|iPhone|iPod/.test(navigator.platform)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1},i.isMac=function(){return new RegExp("Mac").test(navigator.userAgent)},i.isIE=function(){return!!window.ActiveXObject||"ActiveXObject"in window?!0:!1},i.isMobile=function(i){return(i===void 0&&(i=!1),!i&&n.ForguncyData.forceMobileChild)?!0:(t===null&&(t=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4))),t)},i.isAndroid=function(){var n=navigator.userAgent.toLowerCase();return n.indexOf("android")>-1||n.indexOf("adr")>-1},i.isQqBrowser=function(){var n=navigator.userAgent.toLowerCase();return n.indexOf("qqbrowser")>-1},i.isWechatBrowser=function(){var n=navigator.userAgent.toLowerCase();return n.indexOf("micromessenger")>-1},i.isWeChatOrQQBrowser=function(){var n=navigator.userAgent.toLowerCase();return n.indexOf("micromessenger")>-1||n.indexOf("qqbrowser")>-1},i}(),r;n.Platform=i;i.isAndroid()&&i.isQqBrowser()&&(r=String.prototype.localeCompare,String.prototype.localeCompare=function(n){return r.apply(this,[n])})})(Forguncy||(Forguncy={})) +;var Forguncy;(function(n){var t=function(){function t(){}return t.init=function(){t._operationList=[]},t.Push=function(n,i,u){var e=new r,f;e.obj=n;e.functions={f:i};f=t.getPriority(u);t._operationList[f]||(t._operationList[f]=[]);t._operationList[f].push(e);t.doOperation()},t.getPriority=function(n){return n===0?0:1},t.doOperation=function(){i.setTimeout(function(){var n,i;if(t.haveNoActiveAjaxCall())if(n=t.getNextOperation(),n){if(i=n.functions.f.apply(n.obj),i instanceof Promise){i.then(function(){t.doOperation()});return}}else return;t.doOperation()})},t.getNextOperation=function(){for(var n=t._operationList.length-1;n>=0;n--)if(t._operationList[n]&&t._operationList[n].length>0)return t._operationList[n].shift();return null},t.haveNoActiveAjaxCall=function(){return jQuery.active===0&&n.ModuleLoader.active===0},t}(),i,r;n.DelayOperateHelper=t;i=function(){function i(){}return i.Init=function(){i._refreshing=!1;i._objectMethods=[]},i.Push=function(n,t,r,u){var o,f,e;for(u===void 0&&(u=!1),o=!1,f=0;f0||n.ModuleLoader.active>0||jQuery.active>0},i._objectMethods=[],i._refreshing=!1,i.NeedDelayRun=!0,i._executingSetTimeoutCount=0,i._isUnitTest=!1,i}();n.DelayRefresh=i;r=function(){function n(){}return n}()})(Forguncy||(Forguncy={})) +; +;var Forguncy;(function(n){var i=function(){function n(){}return n.firstOrDefault=function(n,t){for(var i=0;i1&&(i[0]==="Background"?(u=Number(i[1]),r=u-1):i[0]==="Text"?(u=Number(i[1]),r=u+1):i[0]==="Accent"&&(u=Number(i[1]),r=u+3)),f=0,i.length>2&&(f=Number(i[2])),e=255,i.length>3&&(e=Number(i[3])),r>-1))?n.UpdateTint(this.Convert(this.Colors[r]),f/100,e):"":""},n.UpdateTint=function(n,t,i){var u,r,e,h,f,o,s;return t===0&&i===255?n:(u="".concat(n," ").concat(t," ").concat(i),u&&this.ColorCache[u])?this.ColorCache[u]:(r=this._getHLSColor(n),t>0?(h=240-r._luminosity,f=h*t,e=r._luminosity+f):(f=r._luminosity*-t,e=r._luminosity-f),o=this._fromHLS(r._hue,e,r._saturation),o.a=i,s=this._toString(o),this.ColorCache[u]=s,s)},n.IsThemeColor=function(n){var t,i;if(!n)return!1;t=this.ThemeColorPrefix;for(i in t)if(n.indexOf(t[i])===0)return!0;return!1},n._toString=function(){for(var n=[],t=0;t240&&(i-=240),i<40)?n+((t-n)*i+20)/40:i<120?t:i<160?n+((t-n)*(160-i)+20)/40:n},n.saturate=function(n,t,i){return Math.min(parseInt(((this._hueToRGB(n,t,i)*255+120)/240).toString()),255)},n._fromHLS=function(n,t,i){var f,e,o,r,u;return i===0?f=e=o=parseInt((t*255/240).toString(),10):(r=t<=120?parseInt(((t*(240+i)+120)/240).toString()):t+i-parseInt(((t*i+120)/240).toString()),u=2*t-r,f=this.saturate(u,r,n+80),e=this.saturate(u,r,n),o=this.saturate(u,r,n-80)),{a:255,r:f,g:e,b:o}},n.stringToARGB=function(n){var t=this._ctx,i,r;return(t||(i=document.createElement("canvas"),i&&i.getContext&&(t=this._ctx=i.getContext("2d",{willReadFrequently:!0}))),!t)?n:(t.clearRect(1,1,1,1),t.fillStyle=n,t.fillRect(1,1,1,1),r=t.getImageData(1,1,1,1),r)?r.data:null},n._fromString=function(n){var i=0,r=0,u=0,f=0,t;return n&&(t=this.stringToARGB(n),t&&(r=t[0],u=t[1],f=t[2],i=t[3])),{a:i,r:r,g:u,b:f}},n._getHLSColor=function(n){var i=this._fromString(n);return new t(i)},n._toHexString=function(n){var t=n.toString(16);return t.length%2&&(t="0"+t),t},n.Colors=["#FFFFFF","#000000","#EEECE1","#1F497D","#4F81BD","#C0504D","#9BBB59","#8064A2","#4BACC6","#F79646"],n.ThemeColorPrefix=["Background 1","Text 1","Background 2","Text 2","Accent 1","Accent 2","Accent 3","Accent 4","Accent 5","Accent 6"],n.ColorCache={},n}(),t;n.ColorHelper=i;t=function(){function n(n){var t=this,f=n.r,e=n.g,o=n.b,r=Math.max(Math.max(f,e),o),s=Math.min(Math.min(f,e),o),u=r+s,i;if(t._luminosity=parseInt(((u*240+255)/510).toString(),10),i=r-s,i===0)t._saturation=0,t._hue=160;else{t._saturation=t._luminosity<=120?parseInt(((i*240+u/2)/u).toString(),10):parseInt(((i*240+(510-u)/2)/(510-u)).toString(),10);var h=((r-f)*40+i/2)/i,c=((r-e)*40+i/2)/i,l=((r-o)*40+i/2)/i;t._hue=f===r?parseInt((l-c).toString(),10):e===r?parseInt((80+h-l).toString(),10):parseInt((160+c-h).toString(),10);t._hue<0&&(t._hue+=240);t._hue>240&&(t._hue-=240)}}return n}()})(Forguncy||(Forguncy={})) +;var Forguncy;(function(n){var u=function(){function n(n){this.ruleArr=n}return n.prototype.FeedStyle=function(n,t){this.ruleArr.push("".concat(n,":").concat(t,";"))},n.prototype.Digest=function(){this.resultString="{ ".concat(this.ruleArr.join("")," }")},n.prototype.GetResultString=function(){return this.Digest(),this.resultString},n}(),r;n.NormalStyleFeeder=u;var i=function(){function n(n){this.Dom=n}return n.prototype.FeedStyle=function(n,t){this.Dom.css(n,t)},n.prototype.Digest=function(){},n}(),f=function(){function t(n,t,i){this.styleArr=t;this.className=i;this.Dom=n}return t.prototype.FeedStyle=function(n,t){this.styleArr.push("".concat(n,":").concat(t,";"))},t.prototype.Digest=function(){var t=".".concat(this.className," { ").concat(this.styleArr.join("")," }");n.CellTypeStyleTemplateUtils.AddCSSTextToDocument(t,this.className);this.Dom.addClass(this.className)},t}(),t=function(){function t(){}return t.setPropertyToDom=function(n,i,r,u){t._init();for(var f=0;f=0?this.browserScrollbarWidthCache:(n=document.createElement("div"),n.className="scrollbar-measure",document.body.appendChild(n),t=n.offsetWidth-n.clientWidth,document.body.removeChild(n),this.browserScrollbarWidthCache=t,t)},t.createJqueryDomElement=function(n){return $(document.createElement(n))},t.createAlignmentContainer=function(n,i,r){n.addClass("fgc-align__inner");n.addClass(t.getHorizontalAlignmentClass(i));n.addClass(t.getVerticalAlignmentClass(r));var u=t.createJqueryDomElement("div");return u.addClass("fgc-align"),u.append(n),u},t.createTableContainer=function(n,t){for(var i,r,u=$(document.createElement("table")).append(document.createElement("tbody")).addClass("fgc-table"),e=u.find("tbody"),o=Math.ceil(n/t),f=0;f1&&n.css("grid-row-end",t+r);u>1&&n.css("grid-column-end",i+u)},t.createGridContainerInternal=function(){var n=this.createJqueryDomElement("div");return n.css("display","grid"),n},t.createDropDownListForFormUser=function(i,r,u){var o=t.createRelativeContainerDiv(),e=t.createRelativeContainerDiv(),f,s,h,c;return e.append(r),e.attr("data-toggle","_dropdown"),e.attr("id",u.ID+"_dropdown"),o.append(e),f=t.createJqueryDomElement("ul"),i.StyleInfo.HorizontalAlignment===n.CellHorizontalAlignment.Right?f.attr("class","dropdown-menu pull-right"):f.attr("class","dropdown-menu"),f.attr("role","menu"),n.ForguncyData.AuthenticationType===3&&(s=$("
  • "+n.RS.CurrentUserCell_ChangeProfile+"<\/a><\/li>"),t.createNavigateCommand(s,n.BuiltInPageManager.builtInPages[n.BuiltInPageType.ChangeUserSettings],"FGX_ChangeProfile",u),f.append(s),h=$("
  • "+n.RS.CurrentUserCell_ChangePassword+"<\/a><\/li>"),t.createNavigateCommand(h,n.BuiltInPageManager.builtInPages[n.BuiltInPageType.ChangePassword],"FGX_ChangePassword",u),f.append(h),n.ForguncyData.AllowUserChangeMFAStatus&&n.Common.forguncyPostSync("Account/GetMFASettingInfo",null,function(t){if(t.Result){var i=t.Properties.isEnabled,r=i?n.RS.ChangeCurrentUserMFA_Disable:n.RS.ChangeCurrentUserMFA_Enable,u=i?"MFA_Disable":"MFA_Enable",e=$("
  • "+r+"<\/a><\/li>");f.append(e)}})),c=$("
  • "+n.RS.CurrentUserCell_Logout+"<\/a><\/li>"),f.append(c),n.Platform.isMobile()&&f.find("a").css("padding-top",10).css("padding-bottom",10),o.append(f),o},t.createNavigateCommand=function(n,i,r,u){var f=[{$type:"Forguncy.Model.NavigateCommand, ServerDesignerCommon",PageName:i,navigateType:"normal"}];t.addCustomCommand(n,f,r,u)},t.createAbsoluteContainerDiv=function(){var n=t.createJqueryDomElement("div");return n.addClass("fgc-container-absolute"),n},t.createRelativeContainerDiv=function(){var n=t.createJqueryDomElement("div");return n.addClass("fgc-container-relative"),n},t.createLoadingIndicator=function(){var i=t.createAbsoluteContainerDiv().addClass("indicator").css("display","none").css("top",0),r=t.createAbsoluteContainerDiv().css("background-color","gray").css("opacity",.2).css("top",0),u=t.createAbsoluteContainerDiv().css("background-repeat","no-repeat").css("background-position","center").css("background-image",'url("'+n.ForguncyData.ForguncyRoot+'Resources/Images/SiteBuiltInImages/fgc_loading.gif")').css("top",0);return i.append(r),i.append(u),i},t._init=function(){t.inited||(t.funcs[0]=t._initalFont,t.funcs[1]=t._initalIndent,t.funcs[3]=t._initalCommand,t.funcs[4]=t._initalFormatString,t.funcs[2]=t._initalId,t.funcs[5]=t._initalForguncyAttribute,t.funcs[6]=t._initWaterMark,t.inited=!0)},t._initClassMethods=function(){t.classMethodsInited||(t.classMethods[0]=t._initalFontClass,t.classMethods[1]=t._initalIndentClass,t.classMethods[3]=t._initalCommandClass,t.classMethods[4]=t._initalFormatStringClass,t.classMethods[2]=t._initalIdClass,t.classMethods[5]=t._initalForguncyAttributeClass,t.classMethods[6]=t._initWaterMarkClass,t.classMethodsInited=!0)},t._initalFontClass=function(n,i){t.setFontStyleClass(n.StyleInfo,i)},t._initalFont=function(n,i){t.setFontStyle(n.StyleInfo,i)},t.setFontStyle=function(n,r){var u=new i(r);t.setFontStyleClass(n,u)},t._initalIndent=function(n,r,u){var f=new i(r);t._initalIndentClass(n,f,u)},t._initalFormatString=function(n,r,u){var f=new i(r);t._initalFormatStringClass(n,f,u)},t._initalCommand=function(n,r,u){var f=new i(r);t._initalCommandClass(n,f,u)},t._initalForguncyAttribute=function(n,r,u){var f=new i(r);t._initalForguncyAttributeClass(n,f,u)},t._initalId=function(n,t,i){t.attr("id",i.id);t.attr("name",i.id)},t._initWaterMark=function(n,r,u){var f=new i(r);t._initWaterMarkClass(n,f,u)},t.getFontFamily=function(t){return t&&!n.Common.IsEmpty(t.FontFamily)?t.FontFamily:n.LocaleFonts.default?n.LocaleFonts.default:null},t.setFontStyleClass=function(i,r,u){if(u===void 0&&(u=!0),i&&(!u||r.Dom)){var f=t.getFontFamily(i);f&&r.FeedStyle("font-family",'"'+f+'"');i.FontSize!==-1&&(isNaN(i.FontSize)?r.FeedStyle("font-size",i.FontSize):r.FeedStyle("font-size",i.FontSize+"px"));r.FeedStyle("color",n.ColorHelper.Convert(i.Foreground));i.WordWrap?(r.FeedStyle("word-wrap","break-word"),r.FeedStyle("word-break","break-word"),r.FeedStyle("white-space","pre-wrap")):r.FeedStyle("white-space","pre");n.Common.IsEmpty(i.Underline)&&n.Common.IsEmpty(i.Strikethrough)?r.FeedStyle("text-decoration",""):i.Underline&&i.Strikethrough?r.FeedStyle("text-decoration","underline line-through"):i.Underline?r.FeedStyle("text-decoration","underline"):i.Strikethrough?r.FeedStyle("text-decoration","line-through"):r.FeedStyle("text-decoration","");n.Common.IsEmpty(i.FontWeight)?r.FeedStyle("font-weight",""):r.FeedStyle("font-weight",t.getFontWeightText(i.FontWeight));n.Common.IsEmpty(i.FontStyle)?r.FeedStyle("font-style",""):r.FeedStyle("font-style",t.getFontStlyeText(i.FontStyle))}},t._initalIndentClass=function(n,i){var r=n.StyleInfo;r&&t.setTextIndent(r,i)},t.setTextIndent=function(t,i){t.TextIndent&&(t.HorizontalAlignment===n.CellHorizontalAlignment.Left?i.FeedStyle("padding-left",t.TextIndent):t.HorizontalAlignment===n.CellHorizontalAlignment.Right?i.FeedStyle("padding-right",t.TextIndent):t.HorizontalAlignment===n.CellHorizontalAlignment.Distributed&&(i.FeedStyle("padding-right",t.TextIndent),i.FeedStyle("padding-left",t.TextIndent)))},t._initalFormatStringClass=function(n,t){var i=n.StyleInfo;i&&typeof i.Formatter!="undefined"&&t.Dom.attr("formatString",i.Formatter)},t._initalCommandClass=function(n,t){n.CellType&&n.CellType.CommandList&&t.FeedStyle("cursor","pointer")},t._initalForguncyAttributeClass=function(n,t,i){!i.isInListview&&n.CellType&&n.CellType.ForguncyAttribute&&t.Dom.attr("forguncyattr",n.CellType.ForguncyAttribute)},t._initalIdClass=function(n,t,i){t.Dom.attr("id",i.id);t.Dom.attr("name",i.id)},t._initWaterMarkClass=function(t,i){t&&t.CellType&&!n.Common.IsEmpty(t.CellType.WaterMark)&&(n.Platform.isMobile()&&(t.CellType.$type==="Forguncy.DropDownListCellType, ServerDesignerCommon"||t.CellType.$type==="Forguncy.DateCellType, ServerDesignerCommon"||t.CellType.$type==="Forguncy.TimeCellType, ServerDesignerCommon"||t.CellType.$type==="Forguncy.UserCellType, ServerDesignerCommon")||i.Dom.attr("placeholder",t.CellType.WaterMark))},t.getHorizontalAlignmentText=function(t){switch(t){case n.CellHorizontalAlignment.Left:return"left";case n.CellHorizontalAlignment.Distributed:return"left";case n.CellHorizontalAlignment.Center:return"center";case n.CellHorizontalAlignment.Right:default:return"right"}},t.getHorizontalAlignmentClass=function(t){switch(t){case n.CellHorizontalAlignment.Left:return"fgc-textalign-left";case n.CellHorizontalAlignment.Center:return"fgc-textalign-center";case n.CellHorizontalAlignment.Distributed:return"fgc-distributed";case n.CellHorizontalAlignment.Right:default:return"fgc-textalign-right"}},t.getFlexHorizontalAlignmentClass=function(t){switch(t){case n.CellHorizontalAlignment.Left:return"fgc-flex-justify-start";case n.CellHorizontalAlignment.Distributed:return"fgc-distributed";case n.CellHorizontalAlignment.Center:return"fgc-flex-justify-center";case n.CellHorizontalAlignment.Right:default:return"fgc-flex-justify-end"}},t.getVerticalAlignmentText=function(t){switch(t){case n.CellVerticalAlignment.Top:return"top";case n.CellVerticalAlignment.Center:return"middle";case n.CellVerticalAlignment.Bottom:default:return"bottom"}},t.getVerticalAlignmentClass=function(t){switch(t){case n.CellVerticalAlignment.Top:return"fgc-verticalalign-top";case n.CellVerticalAlignment.Center:return"fgc-verticalalign-middle";case n.CellVerticalAlignment.Bottom:default:return"fgc-verticalalign-bottom"}},t.getFlexVerticalAlignmentClass=function(t){switch(t){case n.CellVerticalAlignment.Top:return"fgc-flex-items-start";case n.CellVerticalAlignment.Center:return"fgc-flex-items-center";case n.CellVerticalAlignment.Bottom:default:return"fgc-flex-items-end"}},t.getFontStlyeText=function(t){return n.Common.IsEmpty(t)?"":t.toLowerCase()},t.getFontWeightText=function(t){return n.Common.IsEmpty(t)?"":t.toLowerCase()},t.setContainerOverFlow=function(t,i){t.css("overflow",i);(i==="scroll"||i==="auto")&&n.Platform.isIOSDevice()&&t.css("-webkit-overflow-scrolling","touch")},t.applySimpleBar=function(t){return n.MetadataLoader.IsMobile()||n.Platform.isIpad()?null:new SimpleBar(t[0])},t.applyPentrableEvent=function(){$(document).on("click",function(n){var f,i,r,u;if(n.clientX&&n.clientY&&!t.isClickable(n.target)&&(f=document.elementsFromPoint||document.msElementsFromPoint,i=f.call(document,n.clientX,n.clientY),i))for(r=0;r0&&(n.css({display:"inline-block",overflow:"hidden","max-width":t+"px","text-overflow":"ellipsis","white-space":"pre"}),i!==null&&i())},t.ClearTextEllipsis=function(n,t){t===void 0&&(t=null);n.css({display:"",overflow:"","max-width":"","text-overflow":"","white-space":""});t!==null&&t()},t.funcs={},t.classMethods={},t.inited=!1,t.classMethodsInited=!1,t}();n.DomUtilities=t;r=function(){function i(){}return i.createTextElement=function(i,r,u,f,e,o){var s,c,h;return(f===void 0&&(f=!0),e===void 0&&(e=!0),o===void 0&&(o=!1),s=[1,4,2,3],o||s.push(0),t.setPropertyToDom(i,r,u,s),r.addClass("fgc-whitespace-pre"),e&&i.Value!==undefined&&i.Value!==null&&(c=i.Value,r.append(document.createTextNode(c))),n.Common.typeContains(i.CellType,"HyperlinkCellType")&&(i.IsRightOverflow||i.IsLeftOverflow)||r.css("display","block"),f)?(h=t.createJqueryDomElement("div"),h.append(r),t.createAlignmentContainer(h,i.StyleInfo.HorizontalAlignment,i.StyleInfo.VerticalAlignment)):r},i.createCantSelectLabel=function(){return $("