diff --git a/ensping/README.md b/ensping/README.md
new file mode 100644
index 0000000..c0d9fe8
--- /dev/null
+++ b/ensping/README.md
@@ -0,0 +1,21 @@
+# pointgaming
+### 1、项目说明
+总体思路:TSP求解仿真仿真项目开发的总体思路如图1.1示意,旅行商问题求解仿真项目拟实现一个仿真系统。具体功能描述:(1)能够让读者产生一个问题规模为n的TSP,可以手工添加节点、边及权值来产生,也可以由程序自动产生,并在屏幕上显示;(2)能够以遍历算法和贪心算法自动求解该TSP,并将问题的解以可视化的方式显示;(3)能够支持用户手动标记一条路径,然后系统判断该路径是否是贪心算法路径;(4)能够获取地图中的城市相关数据,构造TSP并进行求解。
+ 图1.1 项目开发的总体思路图
+
+
+
+### 2、开发环境说明
+(1)系统版本:OpenHarmony 4.0 Release
+(2)SDK版本:API 10
+(3)Model类型:Stage
+(4)DevEco Studio版本:Deveco Studio 4.0 release
+(5)硬件环境:Unionpi Whale、RK3566开发板
+(6)预览器参数:(1)DeviceType:default;(2)Resolution:560-1280;(3)DPI:240;其余参数自定。
+### 3、项目主要函数调用关系图与项目输出界面演进图
+ 图3.1 项目主要函数调用关系图
+
+
+
+ 图3.2 项目输出界面演进图
+
\ No newline at end of file
diff --git a/ensping/ensp13/.hvigor/outputs/sync/output.json b/ensping/ensp13/.hvigor/outputs/sync/output.json
new file mode 100644
index 0000000..cc4e615
--- /dev/null
+++ b/ensping/ensp13/.hvigor/outputs/sync/output.json
@@ -0,0 +1,61 @@
+{
+ "ohos-module-entry": {
+ "SELECT_TARGET": "default",
+ "MODULE_BUILD_DIR": "F:\\jiaocai\\ensp13\\entry\\build",
+ "TARGETS": {
+ "default": {
+ "SOURCE_ROOT": "F:\\jiaocai\\ensp13\\entry\\src\\main",
+ "RESOURCES_PATH": [
+ "F:\\jiaocai\\ensp13\\entry\\src\\main\\resources"
+ ],
+ "BUILD_PATH": {
+ "OUTPUT_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\outputs\\default",
+ "INTERMEDIA_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates",
+ "JS_ASSETS_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\loader_out\\default",
+ "JS_LITE_ASSETS_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\loader_out_lite\\default",
+ "RES_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\res\\default",
+ "RES_PROFILE_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\res\\default\\resources\\base\\profile",
+ "ETS_SUPER_VISUAL_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\cache\\default\\default@CompileArkTS\\esmodule",
+ "JS_SUPER_VISUAL_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\cache\\default\\default@CompileJS\\jsbundle",
+ "WORKER_LOADER": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\loader\\default\\loader.json",
+ "MANIFEST_JSON": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\manifest\\default",
+ "OUTPUT_METADATA_JSON": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\hap_metadata\\default\\output_metadata.json"
+ },
+ "BUILD_OPTION": {
+ "debuggable": true
+ }
+ },
+ "ohosTest": {
+ "SOURCE_ROOT": "F:\\jiaocai\\ensp13\\entry\\src\\ohosTest",
+ "RESOURCES_PATH": [
+ "F:\\jiaocai\\ensp13\\entry\\src\\ohosTest\\resources"
+ ],
+ "BUILD_PATH": {
+ "OUTPUT_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\outputs\\ohosTest",
+ "INTERMEDIA_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates",
+ "JS_ASSETS_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\loader_out\\ohosTest",
+ "JS_LITE_ASSETS_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\loader_out_lite\\ohosTest",
+ "RES_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\res\\ohosTest",
+ "RES_PROFILE_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\res\\ohosTest\\resources\\base\\profile",
+ "ETS_SUPER_VISUAL_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\cache\\ohosTest\\ohosTest@OhosTestCompileArkTS\\esmodule",
+ "JS_SUPER_VISUAL_PATH": "F:\\jiaocai\\ensp13\\entry\\build\\default\\cache\\ohosTest\\ohosTest@OhosTestCompileJS\\jsbundle",
+ "WORKER_LOADER": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\loader\\ohosTest\\loader.json",
+ "MANIFEST_JSON": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\manifest\\ohosTest",
+ "OUTPUT_METADATA_JSON": "F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\hap_metadata\\ohosTest\\output_metadata.json"
+ },
+ "BUILD_OPTION": {
+ "debuggable": true
+ }
+ }
+ }
+ },
+ "ohos-project": {
+ "SELECT_PRODUCT_NAME": "default",
+ "MODULE_BUILD_DIR": "F:\\jiaocai\\ensp13\\build",
+ "BUNDLE_NAME": "com.example.ensp2",
+ "BUILD_PATH": {
+ "OUTPUT_PATH": "F:\\jiaocai\\ensp13\\build\\outputs\\default"
+ }
+ },
+ "version": 1
+}
\ No newline at end of file
diff --git a/ensping/ensp13/.idea/.deveco/module/entry.cache.json b/ensping/ensp13/.idea/.deveco/module/entry.cache.json
new file mode 100644
index 0000000..eae1c59
--- /dev/null
+++ b/ensping/ensp13/.idea/.deveco/module/entry.cache.json
@@ -0,0 +1,21 @@
+{
+ "CommonInfo":{
+ "current.select.target":"default"
+ },
+ "BuildOptions":{
+ "SELECT_BUILD_TARGET":"default",
+ "BUILD_PATH":{
+ "OUTPUT_METADATA_JSON":"F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\hap_metadata\\default\\output_metadata.json",
+ "OUTPUT_PATH":"F:\\jiaocai\\ensp13\\entry\\build\\default\\outputs\\default",
+ "RES_PATH":"F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\res\\default",
+ "ETS_SUPER_VISUAL_PATH":"F:\\jiaocai\\ensp13\\entry\\build\\default\\cache\\default\\default@CompileArkTS\\esmodule",
+ "JS_ASSETS_PATH":"F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\loader_out\\default",
+ "INTERMEDIA_PATH":"F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates",
+ "RES_PROFILE_PATH":"F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\res\\default\\resources\\base\\profile",
+ "WORKER_LOADER":"F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\loader\\default\\loader.json",
+ "MANIFEST_JSON":"F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\manifest\\default",
+ "JS_LITE_ASSETS_PATH":"F:\\jiaocai\\ensp13\\entry\\build\\default\\intermediates\\loader_out_lite\\default",
+ "JS_SUPER_VISUAL_PATH":"F:\\jiaocai\\ensp13\\entry\\build\\default\\cache\\default\\default@CompileJS\\jsbundle"
+ }
+ }
+}
\ No newline at end of file
diff --git a/ensping/ensp13/.idea/.deveco/project.cache.json b/ensping/ensp13/.idea/.deveco/project.cache.json
new file mode 100644
index 0000000..d1b9f41
--- /dev/null
+++ b/ensping/ensp13/.idea/.deveco/project.cache.json
@@ -0,0 +1,16 @@
+{
+ "CommonInfo":{
+ "crossplatform.projectType":"",
+ "project.ide.version":"4.0.0.600",
+ "current.select.product":"default",
+ "current.select.buildMode":""
+ },
+ "BuildOptions":{
+ "BUNDLE_NAME":"com.example.ensp2",
+ "SELECT_BUILD_MODE":"",
+ "BUILD_PATH":{
+ "OUTPUT_PATH":"F:\\jiaocai\\ensp13\\build\\outputs\\default"
+ },
+ "SELECT_BUILD_PRODUCT":"default"
+ }
+}
\ No newline at end of file
diff --git a/ensping/ensp13/.idea/.gitignore b/ensping/ensp13/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/ensping/ensp13/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/ensping/ensp13/.idea/modules.xml b/ensping/ensp13/.idea/modules.xml
new file mode 100644
index 0000000..932c04a
--- /dev/null
+++ b/ensping/ensp13/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ensping/ensp13/.idea/modules/ensp13.iml b/ensping/ensp13/.idea/modules/ensp13.iml
new file mode 100644
index 0000000..c18b750
--- /dev/null
+++ b/ensping/ensp13/.idea/modules/ensp13.iml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ensping/ensp13/.idea/modules/entry/entry.iml b/ensping/ensp13/.idea/modules/entry/entry.iml
new file mode 100644
index 0000000..b630fe7
--- /dev/null
+++ b/ensping/ensp13/.idea/modules/entry/entry.iml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ensping/ensp13/.idea/vcs.xml b/ensping/ensp13/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/ensping/ensp13/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ensping/ensp13/AppScope/app.json5 b/ensping/ensp13/AppScope/app.json5
new file mode 100644
index 0000000..398dcd7
--- /dev/null
+++ b/ensping/ensp13/AppScope/app.json5
@@ -0,0 +1,10 @@
+{
+ "app": {
+ "bundleName": "com.example.ensp2",
+ "vendor": "example",
+ "versionCode": 1000000,
+ "versionName": "1.0.0",
+ "icon": "$media:app_icon",
+ "label": "$string:app_name"
+ }
+}
diff --git a/ensping/ensp13/AppScope/resources/base/element/string.json b/ensping/ensp13/AppScope/resources/base/element/string.json
new file mode 100644
index 0000000..0157928
--- /dev/null
+++ b/ensping/ensp13/AppScope/resources/base/element/string.json
@@ -0,0 +1,8 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "ENSP2"
+ }
+ ]
+}
diff --git a/ensping/ensp13/AppScope/resources/base/media/app_icon.png b/ensping/ensp13/AppScope/resources/base/media/app_icon.png
new file mode 100644
index 0000000..cd45acc
Binary files /dev/null and b/ensping/ensp13/AppScope/resources/base/media/app_icon.png differ
diff --git a/ensping/ensp13/build-profile.json5 b/ensping/ensp13/build-profile.json5
new file mode 100644
index 0000000..7807cd1
--- /dev/null
+++ b/ensping/ensp13/build-profile.json5
@@ -0,0 +1,49 @@
+{
+ "app": {
+ "signingConfigs": [
+ {
+ "name": "default",
+ "material": {
+ "certpath": "C:\\Users\\zijie\\.ohos\\config\\openharmony\\auto_ohos_default_ensp_com.example.ensp2.cer",
+ "storePassword": "0000001AA2B2DDC1A35AD76D290AE6FC8D7C97F724C6E1EFC0AED7508C812BE7B63A2CDE4D2083DB9E3E",
+ "keyAlias": "debugKey",
+ "keyPassword": "0000001ACCA96D793A7443266856A64E03F1C41835DF5512FFD109DE9C6CC216F19B5A83DFCA2DF68EC3",
+ "profile": "C:\\Users\\zijie\\.ohos\\config\\openharmony\\auto_ohos_default_ensp_com.example.ensp2.p7b",
+ "signAlg": "SHA256withECDSA",
+ "storeFile": "C:\\Users\\zijie\\.ohos\\config\\openharmony\\auto_ohos_default_ensp_com.example.ensp2.p12"
+ }
+ }
+ ],
+ "products": [
+ {
+ "name": "default",
+ "signingConfig": "default",
+ "compileSdkVersion": 10,
+ "compatibleSdkVersion": 9,
+ "runtimeOS": "OpenHarmony",
+ }
+ ],
+ "buildModeSet": [
+ {
+ "name": "debug",
+ },
+ {
+ "name": "release"
+ }
+ ]
+ },
+ "modules": [
+ {
+ "name": "entry",
+ "srcPath": "./entry",
+ "targets": [
+ {
+ "name": "default",
+ "applyToProducts": [
+ "default"
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/.preview/PreviewBuildParam.json b/ensping/ensp13/entry/.preview/PreviewBuildParam.json
new file mode 100644
index 0000000..ef96bf3
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/PreviewBuildParam.json
@@ -0,0 +1 @@
+{"APP_RESOURCES":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\AppScope\\resources","MODULE_RESOURCES":"{\"D:\\\\computer_programing\\\\Deveco_Studio\\\\openharmony_program\\\\ENSP_thirteen\\\\entry\\\\src\\\\main\\\\resources\":\"module_compiled\"}","HAR_RESOURCES":"{}","PREVIEW_GENERATE_SOURCE_DIR":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\entry\\.preview\\default\\generated\\r\\default","PREVIEW_COMPILE_MODULE_NAMES":"entry"}
diff --git a/ensping/ensp13/entry/.preview/cache/.default/.default/compiler.cache.msgpack b/ensping/ensp13/entry/.preview/cache/.default/.default/compiler.cache.msgpack
new file mode 100644
index 0000000..2063f52
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/.default/compiler.cache.msgpack differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/.default/watch_logs.cache.json b/ensping/ensp13/entry/.preview/cache/.default/.default/watch_logs.cache.json
new file mode 100644
index 0000000..0637a08
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/.default/watch_logs.cache.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/ensping/ensp13/entry/.preview/cache/.default/ArkTS/ArkTSLinter_output.json b/ensping/ensp13/entry/.preview/cache/.default/ArkTS/ArkTSLinter_output.json
new file mode 100644
index 0000000..86f87e4
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/ArkTS/ArkTSLinter_output.json
@@ -0,0 +1,952 @@
+[
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 15,
+ "character": 3,
+ "messageText": "Property 'level' has no initializer and is not definitely assigned in the constructor."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 46,
+ "character": 23,
+ "messageText": "Property 'configCorrect' is used before being assigned."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 56,
+ "character": 7,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 56,
+ "character": 28,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 57,
+ "character": 9,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 57,
+ "character": 30,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 62,
+ "character": 9,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 62,
+ "character": 27,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 62,
+ "character": 44,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 62,
+ "character": 62,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 69,
+ "character": 53,
+ "messageText": "Function lacks ending return statement and return type does not include 'undefined'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 71,
+ "character": 7,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 78,
+ "character": 5,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 78,
+ "character": 41,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 79,
+ "character": 5,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 79,
+ "character": 41,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 83,
+ "character": 5,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 84,
+ "character": 5,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 89,
+ "character": 24,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 90,
+ "character": 24,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 91,
+ "character": 14,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 91,
+ "character": 46,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 99,
+ "character": 3,
+ "messageText": "Property 'RPacket' has no initializer and is not definitely assigned in the constructor."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 124,
+ "character": 32,
+ "messageText": {
+ "messageText": "Argument of type 'string | null' is not assignable to parameter of type 'string'.",
+ "category": 1,
+ "code": 2345,
+ "next": [
+ {
+ "messageText": "Type 'null' is not assignable to type 'string'.",
+ "category": 1,
+ "code": 2322
+ }
+ ]
+ }
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 137,
+ "character": 7,
+ "messageText": "Object is possibly 'undefined'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 141,
+ "character": 31,
+ "messageText": "Function lacks ending return statement and return type does not include 'undefined'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 146,
+ "character": 7,
+ "messageText": "Type 'undefined' is not assignable to type 'boolean'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 196,
+ "character": 37,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 202,
+ "character": 11,
+ "messageText": "Object is possibly 'undefined'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 212,
+ "character": 53,
+ "messageText": {
+ "messageText": "Argument of type 'string | null' is not assignable to parameter of type 'string'.",
+ "category": 1,
+ "code": 2345,
+ "next": [
+ {
+ "messageText": "Type 'null' is not assignable to type 'string'.",
+ "category": 1,
+ "code": 2322
+ }
+ ]
+ }
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 222,
+ "character": 24,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 232,
+ "character": 3,
+ "messageText": "Property 'macTable' has no initializer and is not definitely assigned in the constructor."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 254,
+ "character": 37,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 260,
+ "character": 11,
+ "messageText": "Object is possibly 'undefined'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 309,
+ "character": 11,
+ "messageText": "Object is possibly 'undefined'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 10,
+ "character": 11,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 11,
+ "character": 7,
+ "messageText": "\"Symbol()\" API is not supported (arkts-no-symbol)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 27,
+ "character": 15,
+ "messageText": "\"Symbol()\" API is not supported (arkts-no-symbol)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 87,
+ "character": 17,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 102,
+ "character": 45,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 154,
+ "character": 45,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 173,
+ "character": 11,
+ "messageText": "Destructuring variable declarations are not supported (arkts-no-destruct-decls)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 181,
+ "character": 14,
+ "messageText": "Usage of standard library is restricted (arkts-limited-stdlib)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 181,
+ "character": 31,
+ "messageText": "Usage of standard library is restricted (arkts-limited-stdlib)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 223,
+ "character": 22,
+ "messageText": "Indexed access is not supported for fields (arkts-no-props-by-index)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 224,
+ "character": 22,
+ "messageText": "Indexed access is not supported for fields (arkts-no-props-by-index)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 234,
+ "character": 45,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 285,
+ "character": 45,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/OtherSimObjects.ets",
+ "line": 327,
+ "character": 7,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/SimBase.ets",
+ "line": 14,
+ "character": 3,
+ "messageText": "Property 'Ip' has no initializer and is not definitely assigned in the constructor."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/SimBase.ets",
+ "line": 15,
+ "character": 3,
+ "messageText": "Property 'Mac' has no initializer and is not definitely assigned in the constructor."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/SimBase.ets",
+ "line": 16,
+ "character": 3,
+ "messageText": "Property 'routerTable' has no initializer and is not definitely assigned in the constructor."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/SimBase.ets",
+ "line": 17,
+ "character": 3,
+ "messageText": "Property 'switchTable' has no initializer and is not definitely assigned in the constructor."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/SimBase.ets",
+ "line": 18,
+ "character": 3,
+ "messageText": "Property 'objLabel' has no initializer and is not definitely assigned in the constructor."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/SimBase.ets",
+ "line": 22,
+ "character": 3,
+ "messageText": "Property 'img' has no initializer and is not definitely assigned in the constructor."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/SimBase.ets",
+ "line": 23,
+ "character": 3,
+ "messageText": "Property 'imgTm' has no initializer and is not definitely assigned in the constructor."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/SimBase.ets",
+ "line": 24,
+ "character": 3,
+ "messageText": "Property 'interface' has no initializer and is not definitely assigned in the constructor."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/SimBase.ets",
+ "line": 25,
+ "character": 3,
+ "messageText": "Property 'connections' has no initializer and is not definitely assigned in the constructor."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/SimBase.ets",
+ "line": 24,
+ "character": 20,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/SimBase.ets",
+ "line": 25,
+ "character": 22,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/classes/SimBase.ets",
+ "line": 31,
+ "character": 18,
+ "messageText": "\"Symbol()\" API is not supported (arkts-no-symbol)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/functions/functions.ets",
+ "line": 46,
+ "character": 33,
+ "messageText": {
+ "messageText": "Argument of type 'string | null' is not assignable to parameter of type 'string'.",
+ "category": 1,
+ "code": 2345,
+ "next": [
+ {
+ "messageText": "Type 'null' is not assignable to type 'string'.",
+ "category": 1,
+ "code": 2322
+ }
+ ]
+ }
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/functions/functions.ets",
+ "line": 5,
+ "character": 29,
+ "messageText": "RegExp literals are not supported (arkts-no-regexp-literals)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/functions/functions.ets",
+ "line": 6,
+ "character": 32,
+ "messageText": "RegExp literals are not supported (arkts-no-regexp-literals)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/functions/functions.ets",
+ "line": 15,
+ "character": 21,
+ "messageText": "Usage of standard library is restricted (arkts-limited-stdlib)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/functions/functions.ets",
+ "line": 21,
+ "character": 24,
+ "messageText": "Usage of standard library is restricted (arkts-limited-stdlib)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/functions/functions.ets",
+ "line": 30,
+ "character": 21,
+ "messageText": "Usage of standard library is restricted (arkts-limited-stdlib)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 68,
+ "character": 37,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 68,
+ "character": 79,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 70,
+ "character": 78,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 70,
+ "character": 97,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 70,
+ "character": 119,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 156,
+ "character": 17,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 157,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 159,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 160,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 179,
+ "character": 17,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 180,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 182,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 183,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 202,
+ "character": 17,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 203,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 205,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 206,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 225,
+ "character": 17,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 226,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 228,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 229,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 265,
+ "character": 17,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 266,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 268,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 269,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 288,
+ "character": 17,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 289,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 291,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 292,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 311,
+ "character": 17,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 312,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 314,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 315,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 334,
+ "character": 17,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 335,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 337,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 338,
+ "character": 15,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 420,
+ "character": 19,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/Dialog.ets",
+ "line": 468,
+ "character": 34,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/TopMenuBar.ets",
+ "line": 11,
+ "character": 51,
+ "messageText": "Type 'null' cannot be used as an index type."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/TopMenuBar.ets",
+ "line": 15,
+ "character": 50,
+ "messageText": "Type 'null' cannot be used as an index type."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/TopMenuBar.ets",
+ "line": 19,
+ "character": 53,
+ "messageText": "Type 'null' cannot be used as an index type."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/TopMenuBar.ets",
+ "line": 23,
+ "character": 57,
+ "messageText": "Type 'null' cannot be used as an index type."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/TopMenuBar.ets",
+ "line": 27,
+ "character": 57,
+ "messageText": "Type 'null' cannot be used as an index type."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/TopMenuBar.ets",
+ "line": 31,
+ "character": 49,
+ "messageText": "Type 'null' cannot be used as an index type."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/TopMenuBar.ets",
+ "line": 35,
+ "character": 54,
+ "messageText": "Type 'null' cannot be used as an index type."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/TopMenuBar.ets",
+ "line": 68,
+ "character": 29,
+ "messageText": "Type 'null' cannot be used as an index type."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/TopMenuBar.ets",
+ "line": 68,
+ "character": 56,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/TopMenuBar.ets",
+ "line": 68,
+ "character": 91,
+ "messageText": "Type 'null' cannot be used as an index type."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/TopMenuBar.ets",
+ "line": 68,
+ "character": 118,
+ "messageText": "Object is possibly 'null'."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/TopMenuBar.ets",
+ "line": 177,
+ "character": 22,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/MiddleContent.ets",
+ "line": 40,
+ "character": 26,
+ "messageText": "Type 'null' cannot be used as an index type."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/MiddleContent.ets",
+ "line": 41,
+ "character": 26,
+ "messageText": "Type 'null' cannot be used as an index type."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/MiddleContent.ets",
+ "line": 42,
+ "character": 26,
+ "messageText": "Type 'null' cannot be used as an index type."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/MiddleContent.ets",
+ "line": 182,
+ "character": 3,
+ "messageText": "Property 'thisIndex' has no initializer and is not definitely assigned in the constructor."
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/MiddleContent.ets",
+ "line": 10,
+ "character": 22,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/MiddleContent.ets",
+ "line": 142,
+ "character": 12,
+ "messageText": "Object literal must correspond to some explicitly declared class or interface (arkts-no-untyped-obj-literals)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/MiddleContent.ets",
+ "line": 150,
+ "character": 12,
+ "messageText": "Object literal must correspond to some explicitly declared class or interface (arkts-no-untyped-obj-literals)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/MiddleContent.ets",
+ "line": 176,
+ "character": 22,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/MiddleContent.ets",
+ "line": 187,
+ "character": 39,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/components/ButtomMenuBar.ets",
+ "line": 37,
+ "character": 22,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/pages/Index.ets",
+ "line": 8,
+ "character": 23,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/pages/Index.ets",
+ "line": 9,
+ "character": 24,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ },
+ {
+ "categoryInfo": "Error",
+ "fileName": "D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/src/main/ets/pages/Index.ets",
+ "line": 10,
+ "character": 22,
+ "messageText": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)"
+ }
+]
\ No newline at end of file
diff --git a/ensping/ensp13/entry/.preview/cache/.default/ResourceTable.txt b/ensping/ensp13/entry/.preview/cache/.default/ResourceTable.txt
new file mode 100644
index 0000000..8c459bb
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/ResourceTable.txt
@@ -0,0 +1,18 @@
+string EntryAbility_desc 0x01000002
+string EntryAbility_label 0x01000003
+string app_name 0x01000001
+string module_desc 0x01000004
+color start_window_background 0x01000006
+media app_icon 0x01000000
+media icon 0x0100000f
+media jiaohuanji 0x01000011
+media jiaohuanji_tm 0x0100000e
+media jixianqi 0x0100000b
+media jixianqi_tm 0x0100000a
+media luyouqi 0x01000005
+media luyouqi_tm 0x0100000c
+media packet 0x01000007
+media startIcon 0x01000009
+media zhuji 0x01000008
+media zhuji_tm 0x0100000d
+profile main_pages 0x01000010
\ No newline at end of file
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/OtherSimObjects.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/OtherSimObjects.protoBin
new file mode 100644
index 0000000..84ce0ed
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/OtherSimObjects.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/OtherSimObjects.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/OtherSimObjects.ts
new file mode 100644
index 0000000..77fdb4b
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/OtherSimObjects.ts
@@ -0,0 +1,293 @@
+import { SimBase } from "@bundle:com.example.ensp2/entry/ets/classes/SimBase";
+@Observed
+export class SimPacket {
+ sourceMac: string; // 源主机mac地址
+ sourceIp: string; // 源主机ip地址
+ destinationMac: string; // 目的主机mac地址
+ destinationIp: string; // 目的主机ip地址
+ message: string;
+ upJump: any; // 可以根据具体类型定义
+ id: symbol;
+ points: number[][]; // 路径点
+ allSimObj: SimBase[];
+ allSimPacket: SimPacket[];
+ level: number; // 数据包展示优先级
+ constructor(sourceIp: string, sourceMac: string, destinationIp: string, destinationMac: string, message: string, allSimObj: SimBase[], allSimPacket: SimPacket[]) {
+ this.sourceMac = sourceMac;
+ this.sourceIp = sourceIp;
+ this.destinationMac = destinationMac;
+ this.destinationIp = destinationIp;
+ this.message = message;
+ this.allSimObj = allSimObj;
+ this.allSimPacket = allSimPacket;
+ this.upJump = null; // 上一跳连接对象
+ this.points = [];
+ this.id = Symbol();
+ }
+}
+@Observed
+export class SimConnect {
+ nObjS: SimBase | null; // 线一端节点S
+ ifsS: number; // 线一端节点S的端口
+ nObjE: SimBase | null; // 线一端节点E
+ ifsE: number; // 线一端节点E的端口
+ width: number; // 线的粗细
+ configCorrect: boolean; // 配置正确与否
+ constructor(nobjs: SimBase | null, ifss: number, nobje: SimBase | null, ifse: number) {
+ this.nObjS = nobjs;
+ this.ifsS = ifss;
+ this.nObjE = nobje;
+ this.ifsE = ifse;
+ this.width = this.configCorrect === false ? 1 : 4;
+ if (nobjs != null && nobje != null) {
+ this.configCorrect = true;
+ }
+ else {
+ this.configCorrect = false;
+ }
+ }
+ isConnectedTo(other: SimConnect): boolean {
+ return (this.nObjS.objID === other.nObjS.objID &&
+ this.nObjE.objID === other.nObjE.objID);
+ } // 判断两个连接对象是否已经连接
+ checkConfig() {
+ if (this.nObjS.Mac && this.nObjS.Ip && this.nObjE.Mac && this.nObjE.Ip) {
+ this.width = 4;
+ }
+ else {
+ this.width = 1;
+ }
+ } // 检查两边节点配置是否正确
+ transfer(sourceNode: SimBase, packet: SimPacket): boolean {
+ if (sourceNode === this.nObjS) {
+ this.nObjE.receive(packet);
+ }
+ else {
+ return false;
+ }
+ } // 传输数据
+ updateObjConn() {
+ this.nObjS.interface[this.ifsS - 1] = this.nObjE.objID;
+ this.nObjE.interface[this.ifsE - 1] = this.nObjS.objID;
+ } // 更新虚拟对象的接口信息
+ deleteObjConn() {
+ this.nObjS.interface[this.ifsS - 1] = null;
+ this.nObjE.interface[this.ifsE - 1] = null;
+ } // 删除虚拟对象的接口信息
+ equals(other: any): boolean {
+ if (other instanceof SimConnect) {
+ const otherIds = other.nObjS.objID;
+ const otherIde = other.nObjE.objID;
+ return this.nObjS.objID == otherIds && this.nObjE.objID == otherIde;
+ }
+ return false;
+ } // 判断两个连接对象是否相同
+}
+@Observed
+export class SimHost extends SimBase {
+ RPacket: SimPacket; // 主机获取到的正确数据包
+ isOnline: boolean = false; // 主机联网状态
+ constructor(x: number, y: number, config: any = null) {
+ super(x, y, config);
+ this.objType = 1;
+ this.objLabel = this.setDefaultName();
+ this.interface = [null]; // 主机只有一个接口
+ this.connections = [null]; // 一个接口对应一根连接线
+ this.img = { "id": 16777224, "type": 20000, params: [], "bundleName": "com.example.ensp2", "moduleName": "entry" }; // 主机图片
+ this.imgTm = { "id": 16777229, "type": 20000, params: [], "bundleName": "com.example.ensp2", "moduleName": "entry" }; // 主机配置成功图片
+ this.Ip = "";
+ this.Mac = "";
+ }
+ setDefaultName() {
+ return `SHO${++SimBase.flag}`;
+ } // 生成组件默认名称
+ onlineSwitch() {
+ this.isOnline = !this.isOnline;
+ } // 切换联网状态
+ createPacket(ip: string, mac: string, message: string, allSimObj: SimBase[], allSimPacket: SimPacket[]) {
+ let objArr = allSimObj;
+ let packet = new SimPacket(this.Ip, this.Mac, ip, mac, message, objArr, allSimPacket);
+ packet.allSimPacket.push(packet);
+ packet.level = 1;
+ packet.points.push([this.objX, this.objY]);
+ updatePacketLog(`${this.objLabel}创建数据包,信息为[${packet.message}]`);
+ this.send(packet);
+ } // 创建数据包
+ send(packet: SimPacket) {
+ const connObj: Symbol = this.objID;
+ packet.upJump = connObj;
+ updatePacketLog(`${this.objLabel}发送数据包,信息为[${packet.message}]`);
+ if (packet.allSimObj.find(item => item.objID === this.interface[0]) != undefined) {
+ packet.allSimObj.find(item => item.objID === this.interface[0]).receive(packet);
+ }
+ } // 发送数据包
+ receive(packet: SimPacket): boolean {
+ if (packet.destinationIp == this.Ip) {
+ packet.points.push([this.objX, this.objY]);
+ updatePacketLog(`${this.objLabel}成功获取到信息[${packet.message}]!`);
+ }
+ else {
+ return;
+ }
+ } // 收到数据包
+}
+@Observed
+export class SimRouter extends SimBase {
+ constructor(x: number, y: number, config: any = null) {
+ super(x, y, config);
+ this.objType = 2;
+ this.objLabel = this.setDefaultName();
+ this.interface = [null, null, null, null]; // 路由器有四个接口
+ this.connections = [null, null, null, null]; // 四个接口对应四根连接线
+ this.img = { "id": 16777221, "type": 20000, params: [], "bundleName": "com.example.ensp2", "moduleName": "entry" }; // 路由器图片
+ this.imgTm = { "id": 16777228, "type": 20000, params: [], "bundleName": "com.example.ensp2", "moduleName": "entry" }; // 路由器配置成功图片
+ this.Ip = "";
+ this.Mac = "";
+ this.routerTable = [];
+ }
+ setDefaultName() {
+ return `SRO${++SimBase.flag}`;
+ } // 生成组件默认名称
+ checkDestinationIp(destinationIp: string, network: string): boolean {
+ // 解析目标 IP 和网络地址
+ const [networkAddress, subnetMask] = network.split('/');
+ // 分解目标 IP 地址和网络地址为数组
+ const destinationIpParts = destinationIp.split('.');
+ const networkAddressParts = networkAddress.split('.');
+ // 计算目标 IP 的网络地址(根据子网掩码)
+ const calculatedNetworkAddressParts = destinationIpParts.map((part, index) => {
+ return parseInt(part) & parseInt(networkAddressParts[index]);
+ });
+ // 构建目标 IP 的网络地址和网络地址的比较字符串
+ const calculatedNetworkAddress = calculatedNetworkAddressParts.join('.');
+ const inputNetworkAddress = networkAddressParts.join('.');
+ // 比较目标 IP 的网络地址和给定的网络地址是否相同,并检查是否在同一网络范围内
+ return calculatedNetworkAddress === inputNetworkAddress && subnetMask === '24';
+ } // 检查目标ip是否属于指定的网段范围内
+ transmit(packet: SimPacket) {
+ this.interface.forEach((item: Symbol) => {
+ let obj = packet.allSimObj.find(obj => obj.objID === item);
+ if (item != null) {
+ if (item != packet.upJump && this.routerTable.some(table => table.net === packet.destinationIp)) {
+ const pac = new SimPacket(packet.sourceIp, packet.sourceMac, packet.destinationIp, packet.destinationMac, packet.message, packet.allSimObj, packet.allSimPacket);
+ pac.level = packet.level + 1;
+ pac.upJump = this.objID;
+ pac.points.push([this.objX, this.objY]);
+ packet.allSimPacket.push(pac);
+ obj.receive(pac);
+ }
+ }
+ });
+ } // 路由器转发数据包
+ receive(packet: SimPacket) {
+ updatePacketLog(`路由器-${this.objLabel}接受到数据,将进行转发!`);
+ packet.points.push([this.objX, this.objY]);
+ try {
+ this.checkDestinationIp(packet.destinationIp, this.Ip);
+ }
+ catch (e) {
+ console.log('packet router err:' + JSON.stringify(e));
+ }
+ this.transmit(packet);
+ } // 收到数据包
+ getTableConfig(): string {
+ let str = "";
+ const routerTables = this.routerTable;
+ for (let router of routerTables) {
+ str += `接口号: ${router['node_ifs']}\n`;
+ str += `网段号: ${router['segment']}\n`;
+ }
+ return str;
+ } // 获取路由表配置信息用于展示
+}
+@Observed
+export class SimSwitch extends SimBase {
+ macTable: object[];
+ constructor(x: number, y: number, config: any = null) {
+ super(x, y, config);
+ this.objType = 3;
+ this.objLabel = this.setDefaultName();
+ this.interface = [null, null, null, null]; // 路由器有四个接口
+ this.connections = [null, null, null, null]; // 四个接口对应四根连接线
+ this.img = { "id": 16777233, "type": 20000, params: [], "bundleName": "com.example.ensp2", "moduleName": "entry" }; // 交换机图片
+ this.imgTm = { "id": 16777230, "type": 20000, params: [], "bundleName": "com.example.ensp2", "moduleName": "entry" }; // 交换机配置成功图片
+ this.Mac = "";
+ this.switchTable = [];
+ }
+ setDefaultName() {
+ return `SSW${++SimBase.flag}`;
+ } // 生成组件默认名称
+ transmit(packet: SimPacket) {
+ this.interface.forEach((item: Symbol) => {
+ let obj = packet.allSimObj.find(obj => obj.objID === item);
+ if (item != null) {
+ if (item != packet.upJump && this.switchTable.some(table => table.net === packet.destinationMac)) {
+ const pac = new SimPacket(packet.sourceIp, packet.sourceMac, packet.destinationIp, packet.destinationMac, packet.message, packet.allSimObj, packet.allSimPacket);
+ pac.level = packet.level + 1;
+ pac.upJump = this.objID;
+ pac.points.push([this.objX, this.objY]);
+ packet.allSimPacket.push(pac);
+ obj.receive(pac);
+ }
+ }
+ });
+ } // 交换机转发数据包
+ receive(packet: SimPacket) {
+ updatePacketLog(`交换机-${this.objLabel}接受到数据,将进行转发!`);
+ packet.points.push([this.objX, this.objY]);
+ this.transmit(packet);
+ } // 收到数据包
+ getTableConfig(): string {
+ let str = "";
+ const macTables = this.macTable;
+ for (const router of macTables) {
+ str += `接口号: ${router['node_ifs']}\n`;
+ str += `网段号: ${router['mac']}\n`;
+ }
+ return str;
+ } // 获取交换机表配置信息用于展示
+}
+@Observed
+export class SimHub extends SimBase {
+ constructor(x: number, y: number, config: any = null) {
+ super(x, y, config);
+ this.objType = 4;
+ this.objLabel = this.setDefaultName();
+ this.interface = [null, null, null, null]; // 路由器有四个接口
+ this.connections = [null, null, null, null]; // 四个接口对应四根连接线
+ this.img = { "id": 16777227, "type": 20000, params: [], "bundleName": "com.example.ensp2", "moduleName": "entry" }; // 集线器图片
+ this.imgTm = { "id": 16777226, "type": 20000, params: [], "bundleName": "com.example.ensp2", "moduleName": "entry" }; // 集线器配置成功图片
+ }
+ setDefaultName(): string {
+ return `SHU${++SimBase.flag}`; // 生成组件默认名称
+ }
+ transmit(packet: SimPacket): void {
+ this.interface.forEach((item: Symbol, index) => {
+ let obj = packet.allSimObj.find(obj => obj.objID === item);
+ if (item != null) {
+ if (item != packet.upJump) {
+ const pac = new SimPacket(packet.sourceIp, packet.sourceMac, packet.destinationIp, packet.destinationMac, packet.message, packet.allSimObj, packet.allSimPacket);
+ pac.level = packet.level + 1;
+ pac.upJump = this.objID;
+ pac.points.push([this.objX, this.objY]);
+ packet.allSimPacket.push(pac);
+ obj.receive(pac);
+ }
+ }
+ });
+ } // 集线器转发数据包
+ receive(packet: SimPacket): void {
+ updatePacketLog(`集线器-${this.objLabel}接受到数据,将进行转发!`);
+ packet.points.push([this.objX, this.objY]);
+ this.transmit(packet);
+ } // 收到数据包
+}
+function getNewDate() {
+ return new Date().toLocaleString() + '\t';
+} // 获取当前时间
+function updatePacketLog(text: string) {
+ let logText = AppStorage.get('LogText');
+ logText = logText + getNewDate() + text + '\n';
+ AppStorage.set('LogText', logText);
+ console.log(text);
+} // 更新主页面底部日志信息
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/SimBase.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/SimBase.protoBin
new file mode 100644
index 0000000..8e5fe02
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/SimBase.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/SimBase.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/SimBase.ts
new file mode 100644
index 0000000..92d21ab
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/SimBase.ts
@@ -0,0 +1,58 @@
+import type { SimPacket } from './OtherSimObjects';
+// 路由表和mac表项
+export interface Table {
+ port: number; // 设备哪个端口
+ net: string; // 连接哪个网络或设备(下一跳可到达网段或设备mac地址)
+}
+@Observed
+export class SimBase {
+ static flag = 0; // 当前仿真对象数量
+ configCorrect: boolean; // 是否配置正确
+ objType: number | null; // 对象类型,1为主机,2为路由器,3为交换机,4为集线器
+ Ip: string | null; // ip地址
+ Mac: string | null; // mac地址
+ routerTable: Array
| null; // 路由表
+ switchTable: Array | null; // 交换表
+ objLabel: string; // 对象标签
+ objID: Symbol; // 使用symbol()生成对象唯一标识
+ objX: number; // x坐标
+ objY: number; // y坐标
+ img: Resource | null; // 仿真对象图片
+ imgTm: Resource | null; // 仿真对象配置成功图片
+ interface: Array; // 接口网络配置信息
+ connections: Array; // 连接线对象
+ isChose: boolean; // 是否被选中
+ constructor(x: number, y: number, type: number) {
+ this.configCorrect = false;
+ this.objType = type;
+ this.objID = Symbol();
+ this.objX = x;
+ this.objY = y;
+ this.isChose = false;
+ }
+ setDefaultName(): string {
+ let header: string = "";
+ if (this.objType == 1) {
+ header = "SHO";
+ }
+ else if (this.objType == 2) {
+ header = "SRO";
+ }
+ else if (this.objType == 3) {
+ header = "SSW";
+ }
+ else {
+ header = "SHU";
+ }
+ return `${header}${++SimBase.flag}`;
+ } // 生成组件默认名称
+ receive(packet: SimPacket) {
+ } // 发送数据包
+ createPacket(ip: string, mac: string, message: string, allSimObj: SimBase[], allSimPacket: SimPacket[]) {
+ } // 创建数据包
+ transmit(packet: SimPacket) {
+ } // 转发数据包
+ changeIsChose() {
+ this.isChose = !this.isChose;
+ }
+}
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/TopMenu.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/TopMenu.protoBin
new file mode 100644
index 0000000..13af064
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/TopMenu.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/TopMenu.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/TopMenu.ts
new file mode 100644
index 0000000..8f5564a
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/classes/TopMenu.ts
@@ -0,0 +1,16 @@
+export class TopMenu {
+ title: string;
+ menuItemArr: TopMenuItem[] | undefined;
+ constructor(title: string, menuItemArr?: TopMenuItem[]) {
+ this.title = title;
+ this.menuItemArr = menuItemArr;
+ }
+} // 顶部菜单类
+export class TopMenuItem {
+ title: string;
+ fun: Function | undefined;
+ constructor(title: string, fun?: Function) {
+ this.title = title;
+ this.fun = fun;
+ }
+} // 顶部菜单选项类
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/ButtomMenuBar.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/ButtomMenuBar.protoBin
new file mode 100644
index 0000000..49c429d
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/ButtomMenuBar.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/ButtomMenuBar.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/ButtomMenuBar.ts
new file mode 100644
index 0000000..b3a730c
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/ButtomMenuBar.ts
@@ -0,0 +1,263 @@
+interface BottomMenuBar_Params {
+ simClickObjArr?: SimClickObj[];
+ allSimObj?: SimBase[] // 仿真对象数组
+ ;
+ isNewObj?: boolean // 是否新增对象
+ ;
+ newObjType?: number // 新增对象类型
+ ;
+ choseIndex?: number | null // 选中对象下标
+ ;
+ TempConn?: any[] // 是否正在新增连接线
+ ;
+ isNewConn?: boolean // 选中连接线下标
+ ;
+ scroller?: Scroller;
+ LogText?: string;
+}
+import type { SimBase } from '../classes/SimBase';
+interface SimClickObj {
+ name: string;
+ image: Resource;
+ type: number;
+}
+export class BottomMenuBar extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.simClickObjArr = [
+ {
+ name: '主机',
+ image: { "id": 16777224, "type": 20000, params: [], "bundleName": "com.example.ensp2", "moduleName": "entry" },
+ type: 1
+ },
+ {
+ name: '路由器',
+ image: { "id": 16777221, "type": 20000, params: [], "bundleName": "com.example.ensp2", "moduleName": "entry" },
+ type: 2
+ },
+ {
+ name: '交换器',
+ image: { "id": 16777233, "type": 20000, params: [], "bundleName": "com.example.ensp2", "moduleName": "entry" },
+ type: 3
+ },
+ {
+ name: '集线器',
+ image: { "id": 16777227, "type": 20000, params: [], "bundleName": "com.example.ensp2", "moduleName": "entry" },
+ type: 4
+ },
+ ] // 底部菜单栏数组
+ ;
+ this.__allSimObj = this.initializeConsume("allSimObj", "allSimObj");
+ this.__isNewObj = this.initializeConsume("isNewObj", "isNewObj");
+ this.__newObjType = this.initializeConsume("newObjType", "newObjType");
+ this.__choseIndex = this.initializeConsume("choseIndex", "choseIndex");
+ this.__TempConn = this.initializeConsume("TempConn", "TempConn");
+ this.__isNewConn = this.initializeConsume("isNewConn", "isNewConn");
+ this.scroller = new Scroller();
+ this.__LogText = this.createStorageLink('LogText', '', "LogText");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: BottomMenuBar_Params) {
+ if (params.simClickObjArr !== undefined) {
+ this.simClickObjArr = params.simClickObjArr;
+ }
+ if (params.scroller !== undefined) {
+ this.scroller = params.scroller;
+ }
+ }
+ updateStateVars(params: BottomMenuBar_Params) {
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__allSimObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__isNewObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__newObjType.purgeDependencyOnElmtId(rmElmtId);
+ this.__choseIndex.purgeDependencyOnElmtId(rmElmtId);
+ this.__TempConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__isNewConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__LogText.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__allSimObj.aboutToBeDeleted();
+ this.__isNewObj.aboutToBeDeleted();
+ this.__newObjType.aboutToBeDeleted();
+ this.__choseIndex.aboutToBeDeleted();
+ this.__TempConn.aboutToBeDeleted();
+ this.__isNewConn.aboutToBeDeleted();
+ this.__LogText.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private simClickObjArr: SimClickObj[]; // 底部菜单栏数组
+ private __allSimObj: ObservedPropertyAbstractPU; // 仿真对象数组
+ get allSimObj() {
+ return this.__allSimObj.get();
+ }
+ set allSimObj(newValue: SimBase[] // 仿真对象数组
+ ) {
+ this.__allSimObj.set(newValue);
+ }
+ private __isNewObj: ObservedPropertyAbstractPU; // 是否新增对象
+ get isNewObj() {
+ return this.__isNewObj.get();
+ }
+ set isNewObj(newValue: boolean // 是否新增对象
+ ) {
+ this.__isNewObj.set(newValue);
+ }
+ private __newObjType: ObservedPropertyAbstractPU; // 新增对象类型
+ get newObjType() {
+ return this.__newObjType.get();
+ }
+ set newObjType(newValue: number // 新增对象类型
+ ) {
+ this.__newObjType.set(newValue);
+ }
+ private __choseIndex: ObservedPropertyAbstractPU; // 选中对象下标
+ get choseIndex() {
+ return this.__choseIndex.get();
+ }
+ set choseIndex(newValue: number | null // 选中对象下标
+ ) {
+ this.__choseIndex.set(newValue);
+ }
+ private __TempConn: ObservedPropertyAbstractPU; // 是否正在新增连接线
+ get TempConn() {
+ return this.__TempConn.get();
+ }
+ set TempConn(newValue: any[] // 是否正在新增连接线
+ ) {
+ this.__TempConn.set(newValue);
+ }
+ private __isNewConn: ObservedPropertyAbstractPU; // 选中连接线下标
+ get isNewConn() {
+ return this.__isNewConn.get();
+ }
+ set isNewConn(newValue: boolean // 选中连接线下标
+ ) {
+ this.__isNewConn.set(newValue);
+ }
+ private scroller: Scroller;
+ private __LogText: ObservedPropertyAbstractPU;
+ get LogText() {
+ return this.__LogText.get();
+ }
+ set LogText(newValue: string) {
+ this.__LogText.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create({ space: 10 });
+ Row.debugLine("components/ButtomMenuBar.ets(44:5)");
+ Row.layoutWeight(1);
+ Row.margin({ left: '5%' });
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ ForEach.create();
+ const forEachItemGenFunction = _item => {
+ const item = _item;
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/ButtomMenuBar.ets(46:9)");
+ Column.margin({ top: 5 });
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Image.create(item.image);
+ Image.debugLine("components/ButtomMenuBar.ets(47:11)");
+ Image.border({
+ color: item.type == this.newObjType && this.isNewObj ? Color.Red : Color.Transparent,
+ width: 1
+ });
+ Image.width(50);
+ Image.onClick(() => {
+ this.isNewConn = false;
+ this.TempConn = [];
+ if (!this.isNewObj) { // 选择创建对象
+ this.isNewObj = true;
+ this.newObjType = item.type;
+ }
+ else if (this.newObjType != item.type) { // 选择创建其他对象
+ this.newObjType = item.type;
+ }
+ else { // 取消选择
+ this.isNewObj = false;
+ this.newObjType = -1;
+ }
+ this.allSimObj.forEach(item => {
+ item.isChose = false;
+ }); // 创建对象时必须全部设置为非选中状态
+ this.choseIndex = null;
+ });
+ if (!isInitialRender) {
+ Image.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create(item.name);
+ Text.debugLine("components/ButtomMenuBar.ets(70:11)");
+ Text.fontWeight(FontWeight.Bold);
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ Column.pop();
+ };
+ this.forEachUpdateFunction(elmtId, this.simClickObjArr, forEachItemGenFunction);
+ if (!isInitialRender) {
+ ForEach.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ ForEach.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Scroll.create(this.scroller);
+ Scroll.debugLine("components/ButtomMenuBar.ets(76:7)");
+ Scroll.border({
+ color: Color.Black,
+ width: 1
+ });
+ Scroll.layoutWeight(1);
+ Scroll.height('100%');
+ Scroll.margin(2);
+ if (!isInitialRender) {
+ Scroll.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create(this.LogText);
+ Text.debugLine("components/ButtomMenuBar.ets(77:9)");
+ Text.fontSize(15);
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ Scroll.pop();
+ Row.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/Dialog.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/Dialog.protoBin
new file mode 100644
index 0000000..df2f133
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/Dialog.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/Dialog.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/Dialog.ts
new file mode 100644
index 0000000..d7979d1
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/Dialog.ts
@@ -0,0 +1,1512 @@
+interface BatchPacketSet_Params {
+ controller?: CustomDialogController;
+ simObj?: SimBase;
+ ip?: string;
+ mac?: string;
+ message?: string;
+ allSimObj?: SimBase[];
+ allSimPacket?: SimPacket[];
+ packets?: any[];
+}
+interface PacketSet_Params {
+ controller?: CustomDialogController;
+ simObj?: SimBase;
+ ip?: string;
+ mac?: string;
+ message?: string;
+ allSimObj?: SimBase[];
+ allSimPacket?: SimPacket[];
+}
+interface SwitchTableConfig_Params {
+ controller?: CustomDialogController;
+ simObj?: SimBase;
+ mac1?: string;
+ mac2?: string;
+ mac3?: string;
+ mac4?: string;
+}
+interface RouterTableConfig_Params {
+ controller?: CustomDialogController;
+ simObj?: SimBase;
+ ip1?: string;
+ ip2?: string;
+ ip3?: string;
+ ip4?: string;
+}
+interface NetworkConfig_Params {
+ controller?: CustomDialogController;
+ simObj?: SimBase;
+ ip?: string;
+ mac?: string;
+}
+interface LineDelete_Params {
+ controller?: CustomDialogController;
+ simObj?: SimBase;
+ allSimConn?: SimConnect[];
+}
+interface LabelRevise_Params {
+ controller?: CustomDialogController;
+ simObj?: SimBase;
+ newLabel?: string;
+}
+import type { SimBase, Table } from "../classes/SimBase";
+import type { SimConnect, SimPacket } from '../classes/OtherSimObjects';
+import promptAction from "@ohos:promptAction";
+import { checkNetwork } from "@bundle:com.example.ensp2/entry/ets/functions/functions";
+export class LabelRevise extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.controller = undefined;
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.__newLabel = new ObservedPropertySimplePU("", this, "newLabel");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: LabelRevise_Params) {
+ if (params.controller !== undefined) {
+ this.controller = params.controller;
+ }
+ this.__simObj.set(params.simObj);
+ if (params.newLabel !== undefined) {
+ this.newLabel = params.newLabel;
+ }
+ }
+ updateStateVars(params: LabelRevise_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__newLabel.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__simObj.aboutToBeDeleted();
+ this.__newLabel.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private controller: CustomDialogController;
+ setController(ctr: CustomDialogController) {
+ this.controller = ctr;
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ private __newLabel: ObservedPropertySimplePU;
+ get newLabel() {
+ return this.__newLabel.get();
+ }
+ set newLabel(newValue: string) {
+ this.__newLabel.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create({ space: 5 });
+ Column.debugLine("components/Dialog.ets(13:5)");
+ Column.margin(10);
+ Column.backgroundColor(Color.White);
+ Column.justifyContent(FlexAlign.Center);
+ Column.alignItems(HorizontalAlign.Center);
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create("原标签: " + this.simObj.objLabel);
+ Text.debugLine("components/Dialog.ets(14:7)");
+ Text.fontSize(28);
+ Text.fontColor(Color.Gray);
+ Text.width("80%");
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/Dialog.ets(19:7)");
+ Row.width("80%");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create("新标签:");
+ Text.debugLine("components/Dialog.ets(20:9)");
+ Text.fontSize(28);
+ Text.fontColor(Color.Gray);
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入新标签" });
+ TextInput.debugLine("components/Dialog.ets(24:9)");
+ TextInput.onChange((value) => {
+ this.newLabel = value;
+ });
+ TextInput.width("65%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Row.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create({ space: 40 });
+ Row.debugLine("components/Dialog.ets(32:7)");
+ Row.margin({ top: 5 });
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("取消");
+ Button.debugLine("components/Dialog.ets(33:9)");
+ Button.height(35);
+ Button.onClick(() => {
+ this.controller.close();
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("确定");
+ Button.debugLine("components/Dialog.ets(39:9)");
+ Button.height(35);
+ Button.onClick(() => {
+ this.simObj.objLabel = this.newLabel;
+ this.controller.close();
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
+export class LineDelete extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.controller = undefined;
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.__allSimConn = this.initializeConsume("allSimConn", "allSimConn");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: LineDelete_Params) {
+ if (params.controller !== undefined) {
+ this.controller = params.controller;
+ }
+ this.__simObj.set(params.simObj);
+ }
+ updateStateVars(params: LineDelete_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__allSimConn.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__simObj.aboutToBeDeleted();
+ this.__allSimConn.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private controller: CustomDialogController;
+ setController(ctr: CustomDialogController) {
+ this.controller = ctr;
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ private __allSimConn: ObservedPropertyAbstractPU;
+ get allSimConn() {
+ return this.__allSimConn.get();
+ }
+ set allSimConn(newValue: SimConnect[]) {
+ this.__allSimConn.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/Dialog.ets(62:5)");
+ Column.width("100%");
+ Column.margin(10);
+ Column.backgroundColor(Color.White);
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create(this.simObj.objLabel + ' 连接线列表');
+ Text.debugLine("components/Dialog.ets(63:7)");
+ Text.fontSize(18);
+ Text.fontWeight(FontWeight.Bold);
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Menu.create();
+ Menu.debugLine("components/Dialog.ets(66:7)");
+ if (!isInitialRender) {
+ Menu.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ ForEach.create();
+ const forEachItemGenFunction = (_item, index) => {
+ const item = _item;
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ If.create();
+ if (this.simObj.objID === item.nObjE.objID || this.simObj.objID === item.nObjS.objID) {
+ this.ifElseBranchUpdateFunction(0, () => {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ MenuItem.create({
+ content: this.simObj.objLabel + ' : ' + (this.simObj.objID === item.nObjE.objID ? item.nObjS.objLabel : item.nObjE.objLabel)
+ });
+ MenuItem.debugLine("components/Dialog.ets(69:13)");
+ MenuItem.height(25);
+ MenuItem.contentFont({ size: 18 });
+ MenuItem.onChange(() => {
+ item.deleteObjConn(); // 删除线时应该先将线两端的设备的connection设置为null
+ this.allSimConn.splice(index, 1); // 然后将连接线对象数组中的该连接线对象删除
+ this.controller.close();
+ });
+ if (!isInitialRender) {
+ MenuItem.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ MenuItem.pop();
+ });
+ }
+ else {
+ this.ifElseBranchUpdateFunction(1, () => {
+ });
+ }
+ if (!isInitialRender) {
+ If.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ If.pop();
+ };
+ this.forEachUpdateFunction(elmtId, this.allSimConn, forEachItemGenFunction, undefined, true, false);
+ if (!isInitialRender) {
+ ForEach.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ ForEach.pop();
+ Menu.pop();
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
+export class NetworkConfig extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.controller = undefined;
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.__ip = new ObservedPropertySimplePU("", this, "ip");
+ this.__mac = new ObservedPropertySimplePU("", this, "mac");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: NetworkConfig_Params) {
+ if (params.controller !== undefined) {
+ this.controller = params.controller;
+ }
+ this.__simObj.set(params.simObj);
+ if (params.ip !== undefined) {
+ this.ip = params.ip;
+ }
+ if (params.mac !== undefined) {
+ this.mac = params.mac;
+ }
+ }
+ updateStateVars(params: NetworkConfig_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__ip.purgeDependencyOnElmtId(rmElmtId);
+ this.__mac.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__simObj.aboutToBeDeleted();
+ this.__ip.aboutToBeDeleted();
+ this.__mac.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private controller: CustomDialogController;
+ setController(ctr: CustomDialogController) {
+ this.controller = ctr;
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ private __ip: ObservedPropertySimplePU;
+ get ip() {
+ return this.__ip.get();
+ }
+ set ip(newValue: string) {
+ this.__ip.set(newValue);
+ }
+ private __mac: ObservedPropertySimplePU;
+ get mac() {
+ return this.__mac.get();
+ }
+ set mac(newValue: string) {
+ this.__mac.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/Dialog.ets(97:5)");
+ Column.backgroundColor(Color.White);
+ Column.justifyContent(FlexAlign.Center);
+ Column.alignItems(HorizontalAlign.Center);
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入ip地址:192.168.1.1" });
+ TextInput.debugLine("components/Dialog.ets(98:7)");
+ TextInput.onChange((value) => {
+ this.ip = value;
+ });
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入mac地址:mac11" });
+ TextInput.debugLine("components/Dialog.ets(103:7)");
+ TextInput.onChange((value) => {
+ this.mac = value;
+ });
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create({ space: 30 });
+ Row.debugLine("components/Dialog.ets(108:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("取消");
+ Button.debugLine("components/Dialog.ets(109:9)");
+ Button.onClick(() => {
+ this.controller.close();
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("确定");
+ Button.debugLine("components/Dialog.ets(114:9)");
+ Button.onClick(() => {
+ if (this.simObj.objType == 3) {
+ this.simObj.Mac = this.mac;
+ }
+ else {
+ this.simObj.Ip = this.ip;
+ this.simObj.Mac = this.mac;
+ }
+ this.controller.close();
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
+export class RouterTableConfig extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.controller = undefined;
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.__ip1 = new ObservedPropertySimplePU("", this, "ip1");
+ this.__ip2 = new ObservedPropertySimplePU("", this, "ip2");
+ this.__ip3 = new ObservedPropertySimplePU("", this, "ip3");
+ this.__ip4 = new ObservedPropertySimplePU("", this, "ip4");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: RouterTableConfig_Params) {
+ if (params.controller !== undefined) {
+ this.controller = params.controller;
+ }
+ this.__simObj.set(params.simObj);
+ if (params.ip1 !== undefined) {
+ this.ip1 = params.ip1;
+ }
+ if (params.ip2 !== undefined) {
+ this.ip2 = params.ip2;
+ }
+ if (params.ip3 !== undefined) {
+ this.ip3 = params.ip3;
+ }
+ if (params.ip4 !== undefined) {
+ this.ip4 = params.ip4;
+ }
+ }
+ updateStateVars(params: RouterTableConfig_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__ip1.purgeDependencyOnElmtId(rmElmtId);
+ this.__ip2.purgeDependencyOnElmtId(rmElmtId);
+ this.__ip3.purgeDependencyOnElmtId(rmElmtId);
+ this.__ip4.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__simObj.aboutToBeDeleted();
+ this.__ip1.aboutToBeDeleted();
+ this.__ip2.aboutToBeDeleted();
+ this.__ip3.aboutToBeDeleted();
+ this.__ip4.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private controller: CustomDialogController;
+ setController(ctr: CustomDialogController) {
+ this.controller = ctr;
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ private __ip1: ObservedPropertySimplePU;
+ get ip1() {
+ return this.__ip1.get();
+ }
+ set ip1(newValue: string) {
+ this.__ip1.set(newValue);
+ }
+ private __ip2: ObservedPropertySimplePU;
+ get ip2() {
+ return this.__ip2.get();
+ }
+ set ip2(newValue: string) {
+ this.__ip2.set(newValue);
+ }
+ private __ip3: ObservedPropertySimplePU;
+ get ip3() {
+ return this.__ip3.get();
+ }
+ set ip3(newValue: string) {
+ this.__ip3.set(newValue);
+ }
+ private __ip4: ObservedPropertySimplePU;
+ get ip4() {
+ return this.__ip4.get();
+ }
+ set ip4(newValue: string) {
+ this.__ip4.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/Dialog.ets(142:5)");
+ Column.backgroundColor(Color.White);
+ Column.justifyContent(FlexAlign.Center);
+ Column.alignItems(HorizontalAlign.Center);
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/Dialog.ets(143:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口1下一跳:192.168.1.0/24" });
+ TextInput.debugLine("components/Dialog.ets(144:9)");
+ TextInput.onChange((value) => {
+ this.ip1 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/Dialog.ets(150:9)");
+ Button.onClick(() => {
+ let pushItem: Table = {
+ port: 1,
+ net: this.ip1
+ };
+ if (this.simObj.routerTable.some(item => item.port == pushItem.port)) {
+ this.simObj.routerTable[pushItem.port - 1] = pushItem;
+ }
+ else {
+ this.simObj.routerTable.push(pushItem);
+ this.simObj.routerTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1);
+ }
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/Dialog.ets(165:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口2下一跳:" });
+ TextInput.debugLine("components/Dialog.ets(166:9)");
+ TextInput.onChange((value) => {
+ this.ip2 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/Dialog.ets(172:9)");
+ Button.onClick(() => {
+ let pushItem: Table = {
+ port: 2,
+ net: this.ip2
+ };
+ if (this.simObj.routerTable.some(item => item.port == pushItem.port)) {
+ this.simObj.routerTable[pushItem.port - 1] = pushItem;
+ }
+ else {
+ this.simObj.routerTable.push(pushItem);
+ this.simObj.routerTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1);
+ }
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/Dialog.ets(187:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口3下一跳:" });
+ TextInput.debugLine("components/Dialog.ets(188:9)");
+ TextInput.onChange((value) => {
+ this.ip3 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/Dialog.ets(194:9)");
+ Button.onClick(() => {
+ let pushItem: Table = {
+ port: 3,
+ net: this.ip3
+ };
+ if (this.simObj.routerTable.some(item => item.port == pushItem.port)) {
+ this.simObj.routerTable[pushItem.port - 1] = pushItem;
+ }
+ else {
+ this.simObj.routerTable.push(pushItem);
+ this.simObj.routerTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1);
+ }
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/Dialog.ets(209:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口4下一跳:" });
+ TextInput.debugLine("components/Dialog.ets(210:9)");
+ TextInput.onChange((value) => {
+ this.ip4 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/Dialog.ets(216:9)");
+ Button.onClick(() => {
+ let pushItem: Table = {
+ port: 4,
+ net: this.ip4
+ };
+ if (this.simObj.routerTable.some(item => item.port == pushItem.port)) {
+ this.simObj.routerTable[pushItem.port - 1] = pushItem;
+ }
+ else {
+ this.simObj.routerTable.push(pushItem);
+ this.simObj.routerTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1);
+ }
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
+export class SwitchTableConfig extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.controller = undefined;
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.__mac1 = new ObservedPropertySimplePU("", this, "mac1");
+ this.__mac2 = new ObservedPropertySimplePU("", this, "mac2");
+ this.__mac3 = new ObservedPropertySimplePU("", this, "mac3");
+ this.__mac4 = new ObservedPropertySimplePU("", this, "mac4");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: SwitchTableConfig_Params) {
+ if (params.controller !== undefined) {
+ this.controller = params.controller;
+ }
+ this.__simObj.set(params.simObj);
+ if (params.mac1 !== undefined) {
+ this.mac1 = params.mac1;
+ }
+ if (params.mac2 !== undefined) {
+ this.mac2 = params.mac2;
+ }
+ if (params.mac3 !== undefined) {
+ this.mac3 = params.mac3;
+ }
+ if (params.mac4 !== undefined) {
+ this.mac4 = params.mac4;
+ }
+ }
+ updateStateVars(params: SwitchTableConfig_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__mac1.purgeDependencyOnElmtId(rmElmtId);
+ this.__mac2.purgeDependencyOnElmtId(rmElmtId);
+ this.__mac3.purgeDependencyOnElmtId(rmElmtId);
+ this.__mac4.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__simObj.aboutToBeDeleted();
+ this.__mac1.aboutToBeDeleted();
+ this.__mac2.aboutToBeDeleted();
+ this.__mac3.aboutToBeDeleted();
+ this.__mac4.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private controller: CustomDialogController;
+ setController(ctr: CustomDialogController) {
+ this.controller = ctr;
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ private __mac1: ObservedPropertySimplePU;
+ get mac1() {
+ return this.__mac1.get();
+ }
+ set mac1(newValue: string) {
+ this.__mac1.set(newValue);
+ }
+ private __mac2: ObservedPropertySimplePU;
+ get mac2() {
+ return this.__mac2.get();
+ }
+ set mac2(newValue: string) {
+ this.__mac2.set(newValue);
+ }
+ private __mac3: ObservedPropertySimplePU;
+ get mac3() {
+ return this.__mac3.get();
+ }
+ set mac3(newValue: string) {
+ this.__mac3.set(newValue);
+ }
+ private __mac4: ObservedPropertySimplePU;
+ get mac4() {
+ return this.__mac4.get();
+ }
+ set mac4(newValue: string) {
+ this.__mac4.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/Dialog.ets(247:5)");
+ Column.backgroundColor(Color.White);
+ Column.justifyContent(FlexAlign.Center);
+ Column.alignItems(HorizontalAlign.Center);
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/Dialog.ets(248:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口1下一跳:mac11" });
+ TextInput.debugLine("components/Dialog.ets(249:9)");
+ TextInput.onChange((value) => {
+ this.mac1 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/Dialog.ets(255:9)");
+ Button.onClick(() => {
+ let pushItem: Table = {
+ port: 1,
+ net: this.mac1
+ };
+ if (this.simObj.switchTable.some(item => item.port == pushItem.port)) {
+ this.simObj.switchTable[pushItem.port - 1] = pushItem;
+ }
+ else {
+ this.simObj.switchTable.push(pushItem);
+ this.simObj.switchTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1);
+ }
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/Dialog.ets(270:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口2下一跳:" });
+ TextInput.debugLine("components/Dialog.ets(271:9)");
+ TextInput.onChange((value) => {
+ this.mac2 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/Dialog.ets(277:9)");
+ Button.onClick(() => {
+ let pushItem: Table = {
+ port: 2,
+ net: this.mac2
+ };
+ if (this.simObj.switchTable.some(item => item.port == pushItem.port)) {
+ this.simObj.switchTable[pushItem.port - 1] = pushItem;
+ }
+ else {
+ this.simObj.switchTable.push(pushItem);
+ this.simObj.switchTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1);
+ }
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/Dialog.ets(292:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口3下一跳:" });
+ TextInput.debugLine("components/Dialog.ets(293:9)");
+ TextInput.onChange((value) => {
+ this.mac3 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/Dialog.ets(299:9)");
+ Button.onClick(() => {
+ let pushItem: Table = {
+ port: 3,
+ net: this.mac3
+ };
+ if (this.simObj.switchTable.some(item => item.port == pushItem.port)) {
+ this.simObj.switchTable[pushItem.port - 1] = pushItem;
+ }
+ else {
+ this.simObj.switchTable.push(pushItem);
+ this.simObj.switchTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1);
+ }
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/Dialog.ets(314:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口4下一跳:" });
+ TextInput.debugLine("components/Dialog.ets(315:9)");
+ TextInput.onChange((value) => {
+ this.mac4 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/Dialog.ets(321:9)");
+ Button.onClick(() => {
+ let pushItem: Table = {
+ port: 4,
+ net: this.mac4
+ };
+ if (this.simObj.switchTable.some(item => item.port == pushItem.port)) {
+ this.simObj.switchTable[pushItem.port - 1] = pushItem;
+ }
+ else {
+ this.simObj.switchTable.push(pushItem);
+ this.simObj.switchTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1);
+ }
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
+export class PacketSet extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.controller = undefined;
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.__ip = new ObservedPropertySimplePU("", this, "ip");
+ this.__mac = new ObservedPropertySimplePU("", this, "mac");
+ this.__message = new ObservedPropertySimplePU("", this, "message");
+ this.__allSimObj = this.initializeConsume("allSimObj", "allSimObj");
+ this.__allSimPacket = this.initializeConsume("allSimPacket", "allSimPacket");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: PacketSet_Params) {
+ if (params.controller !== undefined) {
+ this.controller = params.controller;
+ }
+ this.__simObj.set(params.simObj);
+ if (params.ip !== undefined) {
+ this.ip = params.ip;
+ }
+ if (params.mac !== undefined) {
+ this.mac = params.mac;
+ }
+ if (params.message !== undefined) {
+ this.message = params.message;
+ }
+ }
+ updateStateVars(params: PacketSet_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__ip.purgeDependencyOnElmtId(rmElmtId);
+ this.__mac.purgeDependencyOnElmtId(rmElmtId);
+ this.__message.purgeDependencyOnElmtId(rmElmtId);
+ this.__allSimObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__allSimPacket.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__simObj.aboutToBeDeleted();
+ this.__ip.aboutToBeDeleted();
+ this.__mac.aboutToBeDeleted();
+ this.__message.aboutToBeDeleted();
+ this.__allSimObj.aboutToBeDeleted();
+ this.__allSimPacket.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private controller: CustomDialogController;
+ setController(ctr: CustomDialogController) {
+ this.controller = ctr;
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ private __ip: ObservedPropertySimplePU;
+ get ip() {
+ return this.__ip.get();
+ }
+ set ip(newValue: string) {
+ this.__ip.set(newValue);
+ }
+ private __mac: ObservedPropertySimplePU;
+ get mac() {
+ return this.__mac.get();
+ }
+ set mac(newValue: string) {
+ this.__mac.set(newValue);
+ }
+ private __message: ObservedPropertySimplePU;
+ get message() {
+ return this.__message.get();
+ }
+ set message(newValue: string) {
+ this.__message.set(newValue);
+ }
+ private __allSimObj: ObservedPropertyAbstractPU;
+ get allSimObj() {
+ return this.__allSimObj.get();
+ }
+ set allSimObj(newValue: SimBase[]) {
+ this.__allSimObj.set(newValue);
+ }
+ private __allSimPacket: ObservedPropertyAbstractPU;
+ get allSimPacket() {
+ return this.__allSimPacket.get();
+ }
+ set allSimPacket(newValue: SimPacket[]) {
+ this.__allSimPacket.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/Dialog.ets(353:5)");
+ Column.backgroundColor(Color.White);
+ Column.justifyContent(FlexAlign.Center);
+ Column.alignItems(HorizontalAlign.Center);
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入目标ip地址:192.168.1.1" });
+ TextInput.debugLine("components/Dialog.ets(354:7)");
+ TextInput.onChange((value) => {
+ this.ip = value;
+ });
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入目标mac地址:mac11" });
+ TextInput.debugLine("components/Dialog.ets(359:7)");
+ TextInput.onChange((value) => {
+ this.mac = value;
+ });
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入发送信息" });
+ TextInput.debugLine("components/Dialog.ets(364:7)");
+ TextInput.onChange((value) => {
+ this.message = value;
+ });
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create({ space: 30 });
+ Row.debugLine("components/Dialog.ets(369:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("取消");
+ Button.debugLine("components/Dialog.ets(370:9)");
+ Button.onClick(() => {
+ this.controller.close();
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("确定");
+ Button.debugLine("components/Dialog.ets(375:9)");
+ Button.onClick(() => {
+ if (!checkNetwork(this.allSimObj)) {
+ promptAction.showToast({
+ message: "请正确配置IP地址",
+ duration: 3000,
+ bottom: 50
+ });
+ }
+ else if (this.simObj.objType == 1) {
+ this.simObj.createPacket(this.ip, this.mac, this.message, ObservedObject.GetRawObject(this.allSimObj), ObservedObject.GetRawObject(this.allSimPacket));
+ }
+ else {
+ promptAction.showToast({
+ message: "请选择正确对象",
+ duration: 3000,
+ bottom: 50
+ });
+ }
+ this.controller.close();
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
+export class BatchPacketSet extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.controller = undefined;
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.__ip = new ObservedPropertySimplePU("", this, "ip");
+ this.__mac = new ObservedPropertySimplePU("", this, "mac");
+ this.__message = new ObservedPropertySimplePU("", this, "message");
+ this.__allSimObj = this.initializeConsume("allSimObj", "allSimObj");
+ this.__allSimPacket = this.initializeConsume("allSimPacket", "allSimPacket");
+ this.__packets = new ObservedPropertyObjectPU([], this, "packets");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: BatchPacketSet_Params) {
+ if (params.controller !== undefined) {
+ this.controller = params.controller;
+ }
+ this.__simObj.set(params.simObj);
+ if (params.ip !== undefined) {
+ this.ip = params.ip;
+ }
+ if (params.mac !== undefined) {
+ this.mac = params.mac;
+ }
+ if (params.message !== undefined) {
+ this.message = params.message;
+ }
+ if (params.packets !== undefined) {
+ this.packets = params.packets;
+ }
+ }
+ updateStateVars(params: BatchPacketSet_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__ip.purgeDependencyOnElmtId(rmElmtId);
+ this.__mac.purgeDependencyOnElmtId(rmElmtId);
+ this.__message.purgeDependencyOnElmtId(rmElmtId);
+ this.__allSimObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__allSimPacket.purgeDependencyOnElmtId(rmElmtId);
+ this.__packets.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__simObj.aboutToBeDeleted();
+ this.__ip.aboutToBeDeleted();
+ this.__mac.aboutToBeDeleted();
+ this.__message.aboutToBeDeleted();
+ this.__allSimObj.aboutToBeDeleted();
+ this.__allSimPacket.aboutToBeDeleted();
+ this.__packets.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private controller: CustomDialogController;
+ setController(ctr: CustomDialogController) {
+ this.controller = ctr;
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ private __ip: ObservedPropertySimplePU;
+ get ip() {
+ return this.__ip.get();
+ }
+ set ip(newValue: string) {
+ this.__ip.set(newValue);
+ }
+ private __mac: ObservedPropertySimplePU;
+ get mac() {
+ return this.__mac.get();
+ }
+ set mac(newValue: string) {
+ this.__mac.set(newValue);
+ }
+ private __message: ObservedPropertySimplePU;
+ get message() {
+ return this.__message.get();
+ }
+ set message(newValue: string) {
+ this.__message.set(newValue);
+ }
+ private __allSimObj: ObservedPropertyAbstractPU;
+ get allSimObj() {
+ return this.__allSimObj.get();
+ }
+ set allSimObj(newValue: SimBase[]) {
+ this.__allSimObj.set(newValue);
+ }
+ private __allSimPacket: ObservedPropertyAbstractPU;
+ get allSimPacket() {
+ return this.__allSimPacket.get();
+ }
+ set allSimPacket(newValue: SimPacket[]) {
+ this.__allSimPacket.set(newValue);
+ }
+ private __packets: ObservedPropertyObjectPU;
+ get packets() {
+ return this.__packets.get();
+ }
+ set packets(newValue: any[]) {
+ this.__packets.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/Dialog.ets(414:5)");
+ Column.backgroundColor(Color.White);
+ Column.justifyContent(FlexAlign.Center);
+ Column.alignItems(HorizontalAlign.Center);
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入目标ip地址:192.168.1.1" });
+ TextInput.debugLine("components/Dialog.ets(415:7)");
+ TextInput.onChange((value) => {
+ this.ip = value;
+ });
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入目标mac地址:mac11" });
+ TextInput.debugLine("components/Dialog.ets(420:7)");
+ TextInput.onChange((value) => {
+ this.mac = value;
+ });
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入发送信息" });
+ TextInput.debugLine("components/Dialog.ets(425:7)");
+ TextInput.onChange((value) => {
+ this.message = value;
+ });
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create({ space: 30 });
+ Row.debugLine("components/Dialog.ets(430:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel('取消');
+ Button.debugLine("components/Dialog.ets(431:9)");
+ Button.onClick(() => {
+ this.controller.close();
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("新增");
+ Button.debugLine("components/Dialog.ets(436:9)");
+ Button.onClick(() => {
+ if (!checkNetwork(this.allSimObj)) {
+ promptAction.showToast({
+ message: "请正确配置IP地址",
+ duration: 3000,
+ bottom: 50
+ });
+ }
+ else if (this.simObj.objType == 1) {
+ this.packets.push({
+ ip: this.ip,
+ mac: this.mac,
+ message: this.message,
+ allSimObj: this.allSimObj,
+ allSimPacket: this.allSimPacket
+ });
+ }
+ else {
+ promptAction.showToast({
+ message: "请选择正确对象",
+ duration: 3000,
+ bottom: 50
+ });
+ }
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("批量发送");
+ Button.debugLine("components/Dialog.ets(463:9)");
+ Button.onClick(() => {
+ this.packets.forEach(item => {
+ this.simObj.createPacket(item.ip, item.mac, item.message, ObservedObject.GetRawObject(item.allSimObj), ObservedObject.GetRawObject(item.allSimPacket));
+ });
+ this.controller.close();
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/LabelRevise.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/LabelRevise.protoBin
new file mode 100644
index 0000000..bb3e19b
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/LabelRevise.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/LabelRevise.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/LabelRevise.ts
new file mode 100644
index 0000000..6a312b4
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/LabelRevise.ts
@@ -0,0 +1,163 @@
+interface LabelRevise_Params {
+ controller?: CustomDialogController;
+ simObj?: SimBase;
+ newLabel?: string;
+}
+import type { SimBase } from "../classes/SimBase";
+export class LabelRevise extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.controller = undefined;
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.__newLabel = new ObservedPropertySimplePU("", this, "newLabel");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: LabelRevise_Params) {
+ if (params.controller !== undefined) {
+ this.controller = params.controller;
+ }
+ this.__simObj.set(params.simObj);
+ if (params.newLabel !== undefined) {
+ this.newLabel = params.newLabel;
+ }
+ }
+ updateStateVars(params: LabelRevise_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__newLabel.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__simObj.aboutToBeDeleted();
+ this.__newLabel.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private controller: CustomDialogController;
+ setController(ctr: CustomDialogController) {
+ this.controller = ctr;
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ private __newLabel: ObservedPropertySimplePU;
+ get newLabel() {
+ return this.__newLabel.get();
+ }
+ set newLabel(newValue: string) {
+ this.__newLabel.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/LabelRevise.ets(10:5)");
+ Column.backgroundColor(Color.White);
+ Column.justifyContent(FlexAlign.Center);
+ Column.alignItems(HorizontalAlign.Center);
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create("原标签: " + this.simObj.objLabel);
+ Text.debugLine("components/LabelRevise.ets(11:7)");
+ Text.fontSize(30);
+ Text.fontColor(Color.Gray);
+ Text.width("80%");
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/LabelRevise.ets(16:7)");
+ Row.width("80%");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create("新标签:");
+ Text.debugLine("components/LabelRevise.ets(17:9)");
+ Text.fontSize(30);
+ Text.fontColor(Color.Gray);
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入新标签" });
+ TextInput.debugLine("components/LabelRevise.ets(21:9)");
+ TextInput.onChange((value) => {
+ this.newLabel = value;
+ });
+ TextInput.width("70%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Row.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create({ space: 30 });
+ Row.debugLine("components/LabelRevise.ets(29:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("确定");
+ Button.debugLine("components/LabelRevise.ets(30:9)");
+ Button.onClick(() => {
+ this.simObj.objLabel = this.newLabel;
+ this.controller.close();
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ // .margin({ left: , right: })
+ Button.createWithLabel("取消");
+ Button.debugLine("components/LabelRevise.ets(37:9)");
+ // .margin({ left: , right: })
+ Button.onClick(() => {
+ this.controller.close();
+ });
+ if (!isInitialRender) {
+ // .margin({ left: , right: })
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ // .margin({ left: , right: })
+ Button.pop();
+ Row.pop();
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/MiddleCanvas.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/MiddleCanvas.protoBin
new file mode 100644
index 0000000..93501b1
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/MiddleCanvas.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/MiddleCanvas.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/MiddleCanvas.ts
new file mode 100644
index 0000000..cee9c8d
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/MiddleCanvas.ts
@@ -0,0 +1,672 @@
+interface CreateLabel_Params {
+ simObj?: SimBase;
+}
+interface CreateImg_Params {
+ allSimObj?: SimBase[];
+ allSimConn?: AllSimConnect[];
+ simObj?: SimBase;
+ isNew?: boolean;
+ newObjType?: number;
+ choseIndex?: number | null;
+ isConn?: boolean;
+ TempConn?: any[];
+ thisIndex?: number;
+}
+interface CreateCon_Params {
+ objS?: SimBase;
+ objE?: SimBase;
+}
+interface MiddleCanvas_Params {
+ allSimObj?: SimBase[] //仿真对象数组
+ ;
+ allSimConn?: AllSimConnect[] //仿真连接线数组
+ ;
+ isNew?: boolean //是否插入新增对象
+ ;
+ newObjType?: number //新增对象类型
+ ;
+ choseIndex?: number | null //选中对象下标
+ ;
+ isConn?: boolean //是否正在新增连接线
+ ;
+ TempConn?: any[] //临时连接线对象
+ ;
+}
+import { AllSimConnect } from "@bundle:com.example.ensp2/entry/ets/classes/OtherSimObjects";
+import { SimBase } from "@bundle:com.example.ensp2/entry/ets/classes/SimBase";
+export class MiddleCanvas extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.__allSimObj = this.initializeConsume("allSimObj", "allSimObj");
+ this.__allSimConn = this.initializeConsume("allSimConn", "allSimConn");
+ this.__isNew = this.initializeConsume("isNew", "isNew");
+ this.__newObjType = this.initializeConsume("newObjType", "newObjType");
+ this.__choseIndex = this.initializeConsume("choseIndex", "choseIndex");
+ this.__isConn = this.initializeConsume("isConn", "isConn");
+ this.__TempConn = this.initializeConsume("TempConn", "TempConn");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: MiddleCanvas_Params) {
+ }
+ updateStateVars(params: MiddleCanvas_Params) {
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__allSimObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__allSimConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__isNew.purgeDependencyOnElmtId(rmElmtId);
+ this.__newObjType.purgeDependencyOnElmtId(rmElmtId);
+ this.__choseIndex.purgeDependencyOnElmtId(rmElmtId);
+ this.__isConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__TempConn.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__allSimObj.aboutToBeDeleted();
+ this.__allSimConn.aboutToBeDeleted();
+ this.__isNew.aboutToBeDeleted();
+ this.__newObjType.aboutToBeDeleted();
+ this.__choseIndex.aboutToBeDeleted();
+ this.__isConn.aboutToBeDeleted();
+ this.__TempConn.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private __allSimObj: ObservedPropertyAbstractPU; //仿真对象数组
+ get allSimObj() {
+ return this.__allSimObj.get();
+ }
+ set allSimObj(newValue: SimBase[] //仿真对象数组
+ ) {
+ this.__allSimObj.set(newValue);
+ }
+ private __allSimConn: ObservedPropertyAbstractPU; //仿真连接线数组
+ get allSimConn() {
+ return this.__allSimConn.get();
+ }
+ set allSimConn(newValue: AllSimConnect[] //仿真连接线数组
+ ) {
+ this.__allSimConn.set(newValue);
+ }
+ private __isNew: ObservedPropertyAbstractPU; //是否插入新增对象
+ get isNew() {
+ return this.__isNew.get();
+ }
+ set isNew(newValue: boolean //是否插入新增对象
+ ) {
+ this.__isNew.set(newValue);
+ }
+ private __newObjType: ObservedPropertyAbstractPU; //新增对象类型
+ get newObjType() {
+ return this.__newObjType.get();
+ }
+ set newObjType(newValue: number //新增对象类型
+ ) {
+ this.__newObjType.set(newValue);
+ }
+ private __choseIndex: ObservedPropertyAbstractPU; //选中对象下标
+ get choseIndex() {
+ return this.__choseIndex.get();
+ }
+ set choseIndex(newValue: number | null //选中对象下标
+ ) {
+ this.__choseIndex.set(newValue);
+ }
+ private __isConn: ObservedPropertyAbstractPU; //是否正在新增连接线
+ get isConn() {
+ return this.__isConn.get();
+ }
+ set isConn(newValue: boolean //是否正在新增连接线
+ ) {
+ this.__isConn.set(newValue);
+ }
+ private __TempConn: ObservedPropertyAbstractPU; //临时连接线对象
+ get TempConn() {
+ return this.__TempConn.get();
+ }
+ set TempConn(newValue: any[] //临时连接线对象
+ ) {
+ this.__TempConn.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/MiddleCanvas.ets(15:5)");
+ Row.width('100%');
+ Row.height('74%');
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ //画布
+ Stack.create();
+ Stack.debugLine("components/MiddleCanvas.ets(17:7)");
+ //画布
+ Stack.onClick((event: ClickEvent) => {
+ if (this.isNew) { //若要插入新增对象
+ const obj = new SimBase(event.windowX - 20, event.windowY - 55, this.newObjType);
+ this.allSimObj.push(obj); //插入并绘制新增对象
+ }
+ else if (!this.isNew && this.allSimObj.some(item => item.isChose == true)) {
+ this.allSimObj[this.choseIndex].objX = event.windowX - 20; //更新X坐标
+ this.allSimObj[this.choseIndex].objY = event.windowY - 55; //更新Y坐标
+ this.allSimObj[this.choseIndex].isChose = false; //更新选中状态为未选中
+ }
+ this.choseIndex = null; //取消选中下标
+ this.isNew = false; //取消新增状态
+ this.newObjType = -1; //取消新增类型
+ });
+ //画布
+ Stack.width('78%');
+ //画布
+ Stack.height('100%');
+ //画布
+ Stack.border({ color: Color.Black, width: 1 });
+ if (!isInitialRender) {
+ //画布
+ Stack.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ ForEach.create();
+ const forEachItemGenFunction = _item => {
+ const item = _item;
+ {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ if (isInitialRender) {
+ let paramsLambda = () => {
+ return {
+ objS: item.nObjS as SimBase,
+ objE: item.nObjE as SimBase
+ };
+ };
+ ViewPU.create(new CreateCon(this, { objS: item.nObjS as SimBase, objE: item.nObjE as SimBase }, undefined, elmtId, paramsLambda));
+ }
+ else {
+ this.updateStateVarsOfChildByElmtId(elmtId, {
+ objS: item.nObjS as SimBase, objE: item.nObjE as SimBase
+ });
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ }
+ };
+ this.forEachUpdateFunction(elmtId, this.allSimConn, forEachItemGenFunction);
+ if (!isInitialRender) {
+ ForEach.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ ForEach.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ ForEach.create();
+ const forEachItemGenFunction = (_item, index) => {
+ const item = _item;
+ {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ if (isInitialRender) {
+ let paramsLambda = () => {
+ return {
+ simObj: item,
+ thisIndex: index
+ };
+ };
+ ViewPU.create(new CreateImg(this, { simObj: item, thisIndex: index }, undefined, elmtId, paramsLambda));
+ }
+ else {
+ this.updateStateVarsOfChildByElmtId(elmtId, {
+ simObj: item
+ });
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ }
+ {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ if (isInitialRender) {
+ let paramsLambda = () => {
+ return {
+ simObj: item
+ };
+ };
+ ViewPU.create(new CreateLabel(this, { simObj: item }, undefined, elmtId, paramsLambda));
+ }
+ else {
+ this.updateStateVarsOfChildByElmtId(elmtId, {
+ simObj: item
+ });
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ }
+ };
+ this.forEachUpdateFunction(elmtId, this.allSimObj, forEachItemGenFunction, undefined, true, false);
+ if (!isInitialRender) {
+ ForEach.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ ForEach.pop();
+ //画布
+ Stack.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ //配置信息展示
+ Column.create({ space: 3 });
+ Column.debugLine("components/MiddleCanvas.ets(45:7)");
+ //配置信息展示
+ Column.padding(2);
+ //配置信息展示
+ Column.justifyContent(FlexAlign.SpaceBetween);
+ //配置信息展示
+ Column.layoutWeight(1);
+ if (!isInitialRender) {
+ //配置信息展示
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/MiddleCanvas.ets(46:9)");
+ Column.width('100%');
+ Column.height('50%');
+ Column.border({ color: Color.Orange, width: 1 });
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create('网络配置信息');
+ Text.debugLine("components/MiddleCanvas.ets(47:11)");
+ Text.fontSize(21);
+ Text.fontWeight(FontWeight.Bold);
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ Column.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/MiddleCanvas.ets(55:9)");
+ Column.width('100%');
+ Column.height('50%');
+ Column.border({ color: Color.Orange, width: 1 });
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create('路由/交换表信息');
+ Text.debugLine("components/MiddleCanvas.ets(56:11)");
+ Text.fontSize(21);
+ Text.fontWeight(FontWeight.Bold);
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ Column.pop();
+ //配置信息展示
+ Column.pop();
+ Row.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
+class CreateCon extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.__objS = new SynchedPropertyNesedObjectPU(params.objS, this, "objS");
+ this.__objE = new SynchedPropertyNesedObjectPU(params.objE, this, "objE");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: CreateCon_Params) {
+ this.__objS.set(params.objS);
+ this.__objE.set(params.objE);
+ }
+ updateStateVars(params: CreateCon_Params) {
+ this.__objS.set(params.objS);
+ this.__objE.set(params.objE);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__objS.purgeDependencyOnElmtId(rmElmtId);
+ this.__objE.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__objS.aboutToBeDeleted();
+ this.__objE.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private __objS: SynchedPropertyNesedObjectPU;
+ get objS() {
+ return this.__objS.get();
+ }
+ private __objE: SynchedPropertyNesedObjectPU;
+ get objE() {
+ return this.__objE.get();
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Line.create();
+ Line.debugLine("components/MiddleCanvas.ets(79:5)");
+ Line.width('100%');
+ Line.height('100%');
+ Line.stroke(Color.Black);
+ Line.startPoint([this.objS.objX + 25, this.objS.objY + 25]);
+ Line.endPoint([this.objE.objX + 25, this.objE.objY + 25]);
+ if (!isInitialRender) {
+ Line.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
+class CreateImg extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.__allSimObj = this.initializeConsume("allSimObj", "allSimObj");
+ this.__allSimConn = this.initializeConsume("allSimConn", "allSimConn");
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.__isNew = this.initializeConsume("isNew", "isNew");
+ this.__newObjType = this.initializeConsume("newObjType", "newObjType");
+ this.__choseIndex = this.initializeConsume("choseIndex", "choseIndex");
+ this.__isConn = this.initializeConsume("isConn", "isConn");
+ this.__TempConn = this.initializeConsume("TempConn", "TempConn");
+ this.thisIndex = undefined;
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: CreateImg_Params) {
+ this.__simObj.set(params.simObj);
+ if (params.thisIndex !== undefined) {
+ this.thisIndex = params.thisIndex;
+ }
+ }
+ updateStateVars(params: CreateImg_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__allSimObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__allSimConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__isNew.purgeDependencyOnElmtId(rmElmtId);
+ this.__newObjType.purgeDependencyOnElmtId(rmElmtId);
+ this.__choseIndex.purgeDependencyOnElmtId(rmElmtId);
+ this.__isConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__TempConn.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__allSimObj.aboutToBeDeleted();
+ this.__allSimConn.aboutToBeDeleted();
+ this.__simObj.aboutToBeDeleted();
+ this.__isNew.aboutToBeDeleted();
+ this.__newObjType.aboutToBeDeleted();
+ this.__choseIndex.aboutToBeDeleted();
+ this.__isConn.aboutToBeDeleted();
+ this.__TempConn.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private __allSimObj: ObservedPropertyAbstractPU;
+ get allSimObj() {
+ return this.__allSimObj.get();
+ }
+ set allSimObj(newValue: SimBase[]) {
+ this.__allSimObj.set(newValue);
+ }
+ private __allSimConn: ObservedPropertyAbstractPU;
+ get allSimConn() {
+ return this.__allSimConn.get();
+ }
+ set allSimConn(newValue: AllSimConnect[]) {
+ this.__allSimConn.set(newValue);
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ private __isNew: ObservedPropertyAbstractPU;
+ get isNew() {
+ return this.__isNew.get();
+ }
+ set isNew(newValue: boolean) {
+ this.__isNew.set(newValue);
+ }
+ private __newObjType: ObservedPropertyAbstractPU;
+ get newObjType() {
+ return this.__newObjType.get();
+ }
+ set newObjType(newValue: number) {
+ this.__newObjType.set(newValue);
+ }
+ private __choseIndex: ObservedPropertyAbstractPU;
+ get choseIndex() {
+ return this.__choseIndex.get();
+ }
+ set choseIndex(newValue: number | null) {
+ this.__choseIndex.set(newValue);
+ }
+ private __isConn: ObservedPropertyAbstractPU;
+ get isConn() {
+ return this.__isConn.get();
+ }
+ set isConn(newValue: boolean) {
+ this.__isConn.set(newValue);
+ }
+ private __TempConn: ObservedPropertyAbstractPU;
+ get TempConn() {
+ return this.__TempConn.get();
+ }
+ set TempConn(newValue: any[]) {
+ this.__TempConn.set(newValue);
+ }
+ private thisIndex: number;
+ InterfaceMenu(parent = null) {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Menu.create();
+ Menu.debugLine("components/MiddleCanvas.ets(102:5)");
+ Menu.radius(8);
+ if (!isInitialRender) {
+ Menu.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ ForEach.create();
+ const forEachItemGenFunction = (_item, index) => {
+ const item = _item;
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ If.create();
+ if (item == null) {
+ this.ifElseBranchUpdateFunction(0, () => {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ MenuItem.create({ content: '接口' + (index + 1).toString() });
+ MenuItem.debugLine("components/MiddleCanvas.ets(105:11)");
+ MenuItem.width(70);
+ MenuItem.height(30);
+ MenuItem.contentFont({ size: 14 });
+ MenuItem.onChange(() => {
+ if (!this.isConn) {
+ this.TempConn.push(this.allSimObj[this.thisIndex]);
+ this.TempConn.push(index + 1);
+ }
+ else {
+ this.allSimConn.push(new AllSimConnect(this.TempConn[0], this.TempConn[1], this.allSimObj[this.thisIndex], index + 1));
+ this.TempConn = [];
+ }
+ this.isConn = !this.isConn;
+ });
+ if (!isInitialRender) {
+ MenuItem.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ MenuItem.pop();
+ });
+ }
+ else {
+ this.ifElseBranchUpdateFunction(1, () => {
+ });
+ }
+ if (!isInitialRender) {
+ If.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ If.pop();
+ };
+ this.forEachUpdateFunction(elmtId, this.simObj.interface, forEachItemGenFunction, undefined, true, false);
+ if (!isInitialRender) {
+ ForEach.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ ForEach.pop();
+ Menu.pop();
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/MiddleCanvas.ets(126:5)");
+ Column.position({ x: this.simObj.objX, y: this.simObj.objY });
+ Column.bindContextMenu({ builder: () => {
+ this.InterfaceMenu.call(this);
+ } }, ResponseType.LongPress);
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Image.create(this.simObj.img);
+ Image.debugLine("components/MiddleCanvas.ets(127:7)");
+ Image.width(50);
+ Image.border({ color: this.simObj.isChose ? Color.Red : Color.Transparent, width: 1 });
+ Image.onClick(() => {
+ this.isNew = false; //取消插入新对象状态
+ this.newObjType = -1;
+ if (!this.allSimObj.some(item => item.isChose == true)) { //若没有对象被选中
+ this.simObj.changeIsChose(); //更新对象选中状态
+ this.choseIndex = this.thisIndex; //更新选中对象的下标
+ }
+ else if (this.simObj.isChose) { //若要取消选中对象
+ this.simObj.changeIsChose(); //更新对象选中状态
+ this.choseIndex = null; //更新选中下标为null
+ }
+ else if (!this.simObj.isChose && this.choseIndex != null) { //若要更换选择对象
+ this.allSimObj[this.choseIndex].isChose = false; //更新上一个选中对象选中状态
+ this.simObj.changeIsChose(); //更新当前对象选中状态
+ this.choseIndex = this.thisIndex; //更新选中下标
+ }
+ });
+ if (!isInitialRender) {
+ Image.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
+class CreateLabel extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: CreateLabel_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ updateStateVars(params: CreateLabel_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__simObj.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ If.create();
+ if (this.simObj.isShowLabel) {
+ this.ifElseBranchUpdateFunction(0, () => {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create(this.simObj.objLabel);
+ Text.debugLine("components/MiddleCanvas.ets(157:7)");
+ Text.fontSize(15);
+ Text.position({ x: this.simObj.objX + 25, y: this.simObj.objY - 12 });
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ });
+ }
+ else {
+ this.ifElseBranchUpdateFunction(1, () => {
+ });
+ }
+ if (!isInitialRender) {
+ If.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ If.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/MiddleContent.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/MiddleContent.protoBin
new file mode 100644
index 0000000..906284d
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/MiddleContent.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/MiddleContent.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/MiddleContent.ts
new file mode 100644
index 0000000..9f9876f
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/MiddleContent.ts
@@ -0,0 +1,1060 @@
+interface CreateLabel_Params {
+ simObj?: SimBase;
+ isShowLabel?: boolean // 是否显示标签
+ ;
+}
+interface CreateImg_Params {
+ allSimObj?: SimBase[] // 仿真对象数组
+ ;
+ allSimConn?: SimConnect[] // 仿真连接线数组
+ ;
+ TempConn?: any[] // 临时any数组
+ ;
+ simObj?: SimBase // 当前对象
+ ;
+ isNewObj?: boolean // 是否新增对象
+ ;
+ newObjType?: number // 新增对象类型
+ ;
+ choseIndex?: number | null // 选中对象下标
+ ;
+ isNewConn?: boolean // 是否正在新增连接线
+ ;
+ thisIndex?: number;
+}
+interface CreatePort_Params {
+ objS?: SimBase;
+ objE?: SimBase;
+ conn?: SimConnect;
+ r?: number;
+}
+interface CreateCon_Params {
+ objS?: SimBase;
+ objE?: SimBase;
+}
+interface MiddleContent_Params {
+ allSimObj?: SimBase[] // 仿真对象数组
+ ;
+ allSimConn?: SimConnect[] // 仿真连接线数组
+ ;
+ TempConn?: any[] // 临时any数组
+ ;
+ isNewObj?: boolean // 是否插入新增对象
+ ;
+ newObjType?: number // 新增对象类型
+ ;
+ choseIndex?: number | null // 选中对象下标
+ ;
+ isNewConn?: boolean // 是否正在新增连接线
+ ;
+ isShowLabel?: boolean // 是否显示标签
+ ;
+ isShowPort?: boolean // 是否显示接口
+ ;
+ isShowInterface?: boolean // 是否显示网络配置信息
+ ;
+ isShowTable?: boolean // 是否显示路由/交换表信息
+ ;
+ allSimPacket?: [
+ ] // 单次数据包传输的集合
+ ;
+}
+import promptAction from "@ohos:promptAction";
+import { SimConnect, SimHost, SimHub, SimRouter, SimSwitch } from "@bundle:com.example.ensp2/entry/ets/classes/OtherSimObjects";
+import type { SimBase } from '../classes/SimBase';
+import { TableChart, NetworkChart } from "@bundle:com.example.ensp2/entry/ets/components/Table";
+export class MiddleContent extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.__allSimObj = this.initializeConsume("allSimObj", "allSimObj");
+ this.__allSimConn = this.initializeConsume("allSimConn", "allSimConn");
+ this.__TempConn = this.initializeConsume("TempConn", "TempConn");
+ this.__isNewObj = this.initializeConsume("isNewObj", "isNewObj");
+ this.__newObjType = this.initializeConsume("newObjType", "newObjType");
+ this.__choseIndex = this.initializeConsume("choseIndex", "choseIndex");
+ this.__isNewConn = this.initializeConsume("isNewConn", "isNewConn");
+ this.__isShowLabel = this.initializeConsume("isShowLabel", "isShowLabel");
+ this.__isShowPort = this.initializeConsume("isShowPort", "isShowPort");
+ this.__isShowInterface = this.initializeConsume("isShowInterface", "isShowInterface");
+ this.__isShowTable = this.initializeConsume("isShowTable", "isShowTable");
+ this.__allSimPacket = this.initializeConsume("allSimPacket", "allSimPacket");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: MiddleContent_Params) {
+ }
+ updateStateVars(params: MiddleContent_Params) {
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__allSimObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__allSimConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__TempConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__isNewObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__newObjType.purgeDependencyOnElmtId(rmElmtId);
+ this.__choseIndex.purgeDependencyOnElmtId(rmElmtId);
+ this.__isNewConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__isShowLabel.purgeDependencyOnElmtId(rmElmtId);
+ this.__isShowPort.purgeDependencyOnElmtId(rmElmtId);
+ this.__isShowInterface.purgeDependencyOnElmtId(rmElmtId);
+ this.__isShowTable.purgeDependencyOnElmtId(rmElmtId);
+ this.__allSimPacket.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__allSimObj.aboutToBeDeleted();
+ this.__allSimConn.aboutToBeDeleted();
+ this.__TempConn.aboutToBeDeleted();
+ this.__isNewObj.aboutToBeDeleted();
+ this.__newObjType.aboutToBeDeleted();
+ this.__choseIndex.aboutToBeDeleted();
+ this.__isNewConn.aboutToBeDeleted();
+ this.__isShowLabel.aboutToBeDeleted();
+ this.__isShowPort.aboutToBeDeleted();
+ this.__isShowInterface.aboutToBeDeleted();
+ this.__isShowTable.aboutToBeDeleted();
+ this.__allSimPacket.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private __allSimObj: ObservedPropertyAbstractPU; // 仿真对象数组
+ get allSimObj() {
+ return this.__allSimObj.get();
+ }
+ set allSimObj(newValue: SimBase[] // 仿真对象数组
+ ) {
+ this.__allSimObj.set(newValue);
+ }
+ private __allSimConn: ObservedPropertyAbstractPU; // 仿真连接线数组
+ get allSimConn() {
+ return this.__allSimConn.get();
+ }
+ set allSimConn(newValue: SimConnect[] // 仿真连接线数组
+ ) {
+ this.__allSimConn.set(newValue);
+ }
+ private __TempConn: ObservedPropertyAbstractPU; // 临时any数组
+ get TempConn() {
+ return this.__TempConn.get();
+ }
+ set TempConn(newValue: any[] // 临时any数组
+ ) {
+ this.__TempConn.set(newValue);
+ }
+ private __isNewObj: ObservedPropertyAbstractPU; // 是否插入新增对象
+ get isNewObj() {
+ return this.__isNewObj.get();
+ }
+ set isNewObj(newValue: boolean // 是否插入新增对象
+ ) {
+ this.__isNewObj.set(newValue);
+ }
+ private __newObjType: ObservedPropertyAbstractPU; // 新增对象类型
+ get newObjType() {
+ return this.__newObjType.get();
+ }
+ set newObjType(newValue: number // 新增对象类型
+ ) {
+ this.__newObjType.set(newValue);
+ }
+ private __choseIndex: ObservedPropertyAbstractPU; // 选中对象下标
+ get choseIndex() {
+ return this.__choseIndex.get();
+ }
+ set choseIndex(newValue: number | null // 选中对象下标
+ ) {
+ this.__choseIndex.set(newValue);
+ }
+ private __isNewConn: ObservedPropertyAbstractPU; // 是否正在新增连接线
+ get isNewConn() {
+ return this.__isNewConn.get();
+ }
+ set isNewConn(newValue: boolean // 是否正在新增连接线
+ ) {
+ this.__isNewConn.set(newValue);
+ }
+ private __isShowLabel: ObservedPropertyAbstractPU; // 是否显示标签
+ get isShowLabel() {
+ return this.__isShowLabel.get();
+ }
+ set isShowLabel(newValue: boolean // 是否显示标签
+ ) {
+ this.__isShowLabel.set(newValue);
+ }
+ private __isShowPort: ObservedPropertyAbstractPU; // 是否显示接口
+ get isShowPort() {
+ return this.__isShowPort.get();
+ }
+ set isShowPort(newValue: boolean // 是否显示接口
+ ) {
+ this.__isShowPort.set(newValue);
+ }
+ private __isShowInterface: ObservedPropertyAbstractPU; // 是否显示网络配置信息
+ get isShowInterface() {
+ return this.__isShowInterface.get();
+ }
+ set isShowInterface(newValue: boolean // 是否显示网络配置信息
+ ) {
+ this.__isShowInterface.set(newValue);
+ }
+ private __isShowTable: ObservedPropertyAbstractPU; // 是否显示路由/交换表信息
+ get isShowTable() {
+ return this.__isShowTable.get();
+ }
+ set isShowTable(newValue: boolean // 是否显示路由/交换表信息
+ ) {
+ this.__isShowTable.set(newValue);
+ }
+ private __allSimPacket: ObservedPropertyAbstractPU<[
+ ]>; // 单次数据包传输的集合
+ get allSimPacket() {
+ return this.__allSimPacket.get();
+ }
+ set allSimPacket(newValue: [
+ ] // 单次数据包传输的集合
+ ) {
+ this.__allSimPacket.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/MiddleContent.ets(22:5)");
+ Row.width('100%');
+ Row.height('74%');
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ // 画布
+ Stack.create();
+ Stack.debugLine("components/MiddleContent.ets(24:7)");
+ // 画布
+ Stack.onClick((event: ClickEvent) => {
+ if (this.isNewObj) { // 若要插入新增对象
+ const obj = this.newObjType == 1 ? new SimHost(event.x - 25, event.y - 15) : this.newObjType == 2 ? new SimRouter(event.x - 25, event.y - 15) : this.newObjType == 3 ? new SimSwitch(event.x - 25, event.y - 15) : new SimHub(event.x - 25, event.y - 15);
+ this.allSimObj.push(obj); // 插入并绘制新增对象
+ }
+ else if (!this.isNewObj && this.allSimObj.some(item => item.isChose == true)) {
+ this.allSimObj[this.choseIndex].objX = event.x - 25; // 更新X坐标
+ this.allSimObj[this.choseIndex].objY = event.y - 15; // 更新Y坐标
+ this.allSimObj[this.choseIndex].isChose = false; // 更新选中状态为未选中
+ }
+ this.isNewObj = false; // 取消新增状态
+ this.newObjType = -1; // 取消新增类型
+ this.choseIndex = null; // 取消选中下标
+ this.isNewConn = false; // 取消新增连接线
+ this.TempConn = []; // 清空临时连接线对象
+ });
+ // 画布
+ Stack.width('78%');
+ // 画布
+ Stack.height('100%');
+ // 画布
+ Stack.border({ color: Color.Black, width: 1 });
+ if (!isInitialRender) {
+ // 画布
+ Stack.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ ForEach.create();
+ const forEachItemGenFunction = _item => {
+ const item = _item;
+ {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ if (isInitialRender) {
+ let paramsLambda = () => {
+ return {
+ objS: item.nObjS as SimBase,
+ objE: item.nObjE as SimBase
+ };
+ };
+ ViewPU.create(new CreateCon(this, { objS: item.nObjS as SimBase, objE: item.nObjE as SimBase }, undefined, elmtId, paramsLambda));
+ }
+ else {
+ this.updateStateVarsOfChildByElmtId(elmtId, {
+ objS: item.nObjS as SimBase, objE: item.nObjE as SimBase
+ });
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ }
+ {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ if (isInitialRender) {
+ let paramsLambda = () => {
+ return {
+ objS: item.nObjS as SimBase,
+ objE: item.nObjE as SimBase,
+ conn: item
+ };
+ };
+ ViewPU.create(new CreatePort(this, { objS: item.nObjS as SimBase, objE: item.nObjE as SimBase, conn: item }, undefined, elmtId, paramsLambda));
+ }
+ else {
+ this.updateStateVarsOfChildByElmtId(elmtId, {
+ objS: item.nObjS as SimBase, objE: item.nObjE as SimBase, conn: item
+ });
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ }
+ };
+ this.forEachUpdateFunction(elmtId, this.allSimConn, forEachItemGenFunction);
+ if (!isInitialRender) {
+ ForEach.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ ForEach.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ ForEach.create();
+ const forEachItemGenFunction = (_item, index) => {
+ const item = _item;
+ {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ if (isInitialRender) {
+ let paramsLambda = () => {
+ return {
+ simObj: item,
+ thisIndex: index
+ };
+ };
+ ViewPU.create(new CreateImg(this, { simObj: item, thisIndex: index }, undefined, elmtId, paramsLambda));
+ }
+ else {
+ this.updateStateVarsOfChildByElmtId(elmtId, {
+ simObj: item
+ });
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ }
+ {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ if (isInitialRender) {
+ let paramsLambda = () => {
+ return {
+ simObj: item
+ };
+ };
+ ViewPU.create(new CreateLabel(this, { simObj: item }, undefined, elmtId, paramsLambda));
+ }
+ else {
+ this.updateStateVarsOfChildByElmtId(elmtId, {
+ simObj: item
+ });
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ }
+ };
+ this.forEachUpdateFunction(elmtId, this.allSimObj, forEachItemGenFunction, undefined, true, false);
+ if (!isInitialRender) {
+ ForEach.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ ForEach.pop();
+ // 画布
+ Stack.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ // 配置信息展示
+ Column.create({ space: 3 });
+ Column.debugLine("components/MiddleContent.ets(55:7)");
+ // 配置信息展示
+ Column.padding(2);
+ // 配置信息展示
+ Column.justifyContent(FlexAlign.SpaceBetween);
+ // 配置信息展示
+ Column.layoutWeight(1);
+ if (!isInitialRender) {
+ // 配置信息展示
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/MiddleContent.ets(56:9)");
+ Column.width('100%');
+ Column.height('50%');
+ Column.border({ color: Color.Orange, width: 1 });
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create('网络配置信息');
+ Text.debugLine("components/MiddleContent.ets(57:11)");
+ Text.fontSize(21);
+ Text.fontWeight(FontWeight.Bold);
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/MiddleContent.ets(61:11)");
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ If.create();
+ if (this.choseIndex != null && this.isShowInterface) {
+ this.ifElseBranchUpdateFunction(0, () => {
+ {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ if (isInitialRender) {
+ let paramsLambda = () => {
+ return {
+ simObj: this.allSimObj[this.choseIndex]
+ };
+ };
+ ViewPU.create(new NetworkChart(this, { simObj: this.allSimObj[this.choseIndex] }, undefined, elmtId, paramsLambda));
+ }
+ else {
+ this.updateStateVarsOfChildByElmtId(elmtId, {
+ simObj: this.allSimObj[this.choseIndex]
+ });
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ }
+ });
+ }
+ else {
+ this.ifElseBranchUpdateFunction(1, () => {
+ });
+ }
+ if (!isInitialRender) {
+ If.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ If.pop();
+ Column.pop();
+ Column.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/MiddleContent.ets(71:9)");
+ Column.width('100%');
+ Column.height('50%');
+ Column.border({ color: Color.Orange, width: 1 });
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create('路由/交换表信息');
+ Text.debugLine("components/MiddleContent.ets(72:11)");
+ Text.fontSize(21);
+ Text.fontWeight(FontWeight.Bold);
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/MiddleContent.ets(76:11)");
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ If.create();
+ if (this.choseIndex != null && this.isShowTable) {
+ this.ifElseBranchUpdateFunction(0, () => {
+ {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ if (isInitialRender) {
+ let paramsLambda = () => {
+ return {
+ simObj: this.allSimObj[this.choseIndex]
+ };
+ };
+ ViewPU.create(new TableChart(this, { simObj: this.allSimObj[this.choseIndex] }, undefined, elmtId, paramsLambda));
+ }
+ else {
+ this.updateStateVarsOfChildByElmtId(elmtId, {
+ simObj: this.allSimObj[this.choseIndex]
+ });
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ }
+ });
+ }
+ else {
+ this.ifElseBranchUpdateFunction(1, () => {
+ });
+ }
+ if (!isInitialRender) {
+ If.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ If.pop();
+ Column.pop();
+ Column.pop();
+ // 配置信息展示
+ Column.pop();
+ Row.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
+class CreateCon extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.__objS = new SynchedPropertyNesedObjectPU(params.objS, this, "objS");
+ this.__objE = new SynchedPropertyNesedObjectPU(params.objE, this, "objE");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: CreateCon_Params) {
+ this.__objS.set(params.objS);
+ this.__objE.set(params.objE);
+ }
+ updateStateVars(params: CreateCon_Params) {
+ this.__objS.set(params.objS);
+ this.__objE.set(params.objE);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__objS.purgeDependencyOnElmtId(rmElmtId);
+ this.__objE.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__objS.aboutToBeDeleted();
+ this.__objE.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private __objS: SynchedPropertyNesedObjectPU;
+ get objS() {
+ return this.__objS.get();
+ }
+ private __objE: SynchedPropertyNesedObjectPU;
+ get objE() {
+ return this.__objE.get();
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Line.create();
+ Line.debugLine("components/MiddleContent.ets(102:5)");
+ Line.width('100%');
+ Line.height('100%');
+ Line.stroke(Color.Black);
+ Line.startPoint([this.objS.objX + 25, this.objS.objY + 15]);
+ Line.endPoint([this.objE.objX + 25, this.objE.objY + 15]);
+ if (!isInitialRender) {
+ Line.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
+class coordinates {
+ x: number;
+ y: number;
+ constructor(x: number, y: number) {
+ this.x = x;
+ this.y = y;
+ }
+} // 坐标类
+class CreatePort extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.__objS = new SynchedPropertyNesedObjectPU(params.objS, this, "objS");
+ this.__objE = new SynchedPropertyNesedObjectPU(params.objE, this, "objE");
+ this.__conn = new SynchedPropertyNesedObjectPU(params.conn, this, "conn");
+ this.r = 30;
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: CreatePort_Params) {
+ this.__objS.set(params.objS);
+ this.__objE.set(params.objE);
+ this.__conn.set(params.conn);
+ if (params.r !== undefined) {
+ this.r = params.r;
+ }
+ }
+ updateStateVars(params: CreatePort_Params) {
+ this.__objS.set(params.objS);
+ this.__objE.set(params.objE);
+ this.__conn.set(params.conn);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__objS.purgeDependencyOnElmtId(rmElmtId);
+ this.__objE.purgeDependencyOnElmtId(rmElmtId);
+ this.__conn.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__objS.aboutToBeDeleted();
+ this.__objE.aboutToBeDeleted();
+ this.__conn.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private __objS: SynchedPropertyNesedObjectPU;
+ get objS() {
+ return this.__objS.get();
+ }
+ private __objE: SynchedPropertyNesedObjectPU;
+ get objE() {
+ return this.__objE.get();
+ }
+ private __conn: SynchedPropertyNesedObjectPU;
+ get conn() {
+ return this.__conn.get();
+ }
+ private r: number;
+ k() {
+ return (this.objS.objY - this.objE.objY) / (this.objS.objX - this.objE.objX);
+ } // 直线斜率
+ distance(point1: coordinates, point2: coordinates) {
+ return Math.sqrt((point1.x - point2.x) ** 2 + (point1.y - point2.y) ** 2);
+ } // 两点距离
+ closerSPoint() {
+ let objEPoint = new coordinates(this.objE.objX + 25, this.objE.objY + 15);
+ let objSPoint1 = new coordinates(this.objS.objX + 25 + this.r / Math.sqrt(this.k() ** 2 + 1), this.objS.objY + 15 + this.k() * this.r / Math.sqrt(this.k() ** 2 + 1));
+ let objSPoint2 = new coordinates(this.objS.objX + 25 - this.r / Math.sqrt(this.k() ** 2 + 1), this.objS.objY + 15 - this.k() * this.r / Math.sqrt(this.k() ** 2 + 1));
+ let objSPoint = this.distance(objSPoint1, objEPoint) < this.distance(objSPoint2, objEPoint) ? objSPoint1 : objSPoint2;
+ return { x: objSPoint.x, y: objSPoint.y };
+ }
+ closerEPoint() {
+ let objSPoint = new coordinates(this.objS.objX + 25, this.objS.objY + 15);
+ let objEPoint1 = new coordinates(this.objE.objX + 25 + this.r / Math.sqrt(this.k() ** 2 + 1), this.objE.objY + 15 + this.k() * this.r / Math.sqrt(this.k() ** 2 + 1));
+ let objEPoint2 = new coordinates(this.objE.objX + 25 - this.r / Math.sqrt(this.k() ** 2 + 1), this.objE.objY + 15 - this.k() * this.r / Math.sqrt(this.k() ** 2 + 1));
+ let objEPoint = this.distance(objEPoint1, objSPoint) < this.distance(objEPoint2, objSPoint) ? objEPoint1 : objEPoint2;
+ return { x: objEPoint.x, y: objEPoint.y };
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Stack.create();
+ Stack.debugLine("components/MiddleContent.ets(154:5)");
+ Stack.width('100%');
+ Stack.height('100%');
+ if (!isInitialRender) {
+ Stack.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create(this.conn.ifsS.toString());
+ Text.debugLine("components/MiddleContent.ets(155:7)");
+ Text.fontSize(15);
+ Text.fontColor(Color.Green);
+ Text.fontWeight(FontWeight.Bold);
+ Text.position(this.closerSPoint());
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create(this.conn.ifsE.toString());
+ Text.debugLine("components/MiddleContent.ets(160:7)");
+ Text.fontSize(15);
+ Text.fontColor(Color.Green);
+ Text.fontWeight(FontWeight.Bold);
+ Text.position(this.closerEPoint());
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ Stack.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
+class CreateImg extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.__allSimObj = this.initializeConsume("allSimObj", "allSimObj");
+ this.__allSimConn = this.initializeConsume("allSimConn", "allSimConn");
+ this.__TempConn = this.initializeConsume("TempConn", "TempConn");
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.__isNewObj = this.initializeConsume("isNewObj", "isNewObj");
+ this.__newObjType = this.initializeConsume("newObjType", "newObjType");
+ this.__choseIndex = this.initializeConsume("choseIndex", "choseIndex");
+ this.__isNewConn = this.initializeConsume("isNewConn", "isNewConn");
+ this.thisIndex = undefined;
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: CreateImg_Params) {
+ this.__simObj.set(params.simObj);
+ if (params.thisIndex !== undefined) {
+ this.thisIndex = params.thisIndex;
+ }
+ }
+ updateStateVars(params: CreateImg_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__allSimObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__allSimConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__TempConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__isNewObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__newObjType.purgeDependencyOnElmtId(rmElmtId);
+ this.__choseIndex.purgeDependencyOnElmtId(rmElmtId);
+ this.__isNewConn.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__allSimObj.aboutToBeDeleted();
+ this.__allSimConn.aboutToBeDeleted();
+ this.__TempConn.aboutToBeDeleted();
+ this.__simObj.aboutToBeDeleted();
+ this.__isNewObj.aboutToBeDeleted();
+ this.__newObjType.aboutToBeDeleted();
+ this.__choseIndex.aboutToBeDeleted();
+ this.__isNewConn.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private __allSimObj: ObservedPropertyAbstractPU; // 仿真对象数组
+ get allSimObj() {
+ return this.__allSimObj.get();
+ }
+ set allSimObj(newValue: SimBase[] // 仿真对象数组
+ ) {
+ this.__allSimObj.set(newValue);
+ }
+ private __allSimConn: ObservedPropertyAbstractPU; // 仿真连接线数组
+ get allSimConn() {
+ return this.__allSimConn.get();
+ }
+ set allSimConn(newValue: SimConnect[] // 仿真连接线数组
+ ) {
+ this.__allSimConn.set(newValue);
+ }
+ private __TempConn: ObservedPropertyAbstractPU; // 临时any数组
+ get TempConn() {
+ return this.__TempConn.get();
+ }
+ set TempConn(newValue: any[] // 临时any数组
+ ) {
+ this.__TempConn.set(newValue);
+ }
+ private __simObj: SynchedPropertyNesedObjectPU; // 当前对象
+ get simObj() {
+ return this.__simObj.get();
+ }
+ private __isNewObj: ObservedPropertyAbstractPU; // 是否新增对象
+ get isNewObj() {
+ return this.__isNewObj.get();
+ }
+ set isNewObj(newValue: boolean // 是否新增对象
+ ) {
+ this.__isNewObj.set(newValue);
+ }
+ private __newObjType: ObservedPropertyAbstractPU; // 新增对象类型
+ get newObjType() {
+ return this.__newObjType.get();
+ }
+ set newObjType(newValue: number // 新增对象类型
+ ) {
+ this.__newObjType.set(newValue);
+ }
+ private __choseIndex: ObservedPropertyAbstractPU; // 选中对象下标
+ get choseIndex() {
+ return this.__choseIndex.get();
+ }
+ set choseIndex(newValue: number | null // 选中对象下标
+ ) {
+ this.__choseIndex.set(newValue);
+ }
+ private __isNewConn: ObservedPropertyAbstractPU; // 是否正在新增连接线
+ get isNewConn() {
+ return this.__isNewConn.get();
+ }
+ set isNewConn(newValue: boolean // 是否正在新增连接线
+ ) {
+ this.__isNewConn.set(newValue);
+ }
+ private thisIndex: number;
+ InterfaceMenu(parent = null) {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Menu.create();
+ Menu.debugLine("components/MiddleContent.ets(186:5)");
+ Menu.radius(8);
+ if (!isInitialRender) {
+ Menu.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ ForEach.create();
+ const forEachItemGenFunction = (_item, index) => {
+ const item = _item;
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ If.create();
+ if (item === null) {
+ this.ifElseBranchUpdateFunction(0, () => {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ MenuItem.create({ content: '接口' + (index + 1).toString() });
+ MenuItem.debugLine("components/MiddleContent.ets(189:11)");
+ MenuItem.width(70);
+ MenuItem.height(30);
+ MenuItem.contentFont({ size: 14 });
+ MenuItem.onChange(() => {
+ if (!this.isNewConn) {
+ this.TempConn.push(this.allSimObj[this.thisIndex]);
+ this.TempConn.push(index + 1);
+ }
+ else {
+ if (this.TempConn[0] != this.simObj && !this.TempConn[0].interface.includes(ObservedObject.GetRawObject(this.simObj))) {
+ const conn = new SimConnect(this.TempConn[0], this.TempConn[1], this.allSimObj[this.thisIndex], index + 1);
+ this.allSimConn.push(conn);
+ // 更新两个连接对象中的连接线信息
+ conn.updateObjConn();
+ this.TempConn = [];
+ }
+ else {
+ this.TempConn = [];
+ promptAction.showToast({
+ message: "请选择连接不同的对象",
+ duration: 3000,
+ bottom: 50
+ });
+ }
+ }
+ if (this.choseIndex != null) {
+ this.allSimObj[this.choseIndex].isChose = false;
+ }
+ this.isNewObj = false;
+ this.newObjType = -1;
+ this.choseIndex = null;
+ this.isNewConn = !this.isNewConn;
+ });
+ if (!isInitialRender) {
+ MenuItem.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ MenuItem.pop();
+ });
+ }
+ else {
+ this.ifElseBranchUpdateFunction(1, () => {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ MenuItem.create({ content: '接口' + (index + 1).toString() + '已连接' });
+ MenuItem.debugLine("components/MiddleContent.ets(222:11)");
+ MenuItem.width(105);
+ MenuItem.height(30);
+ MenuItem.contentFont({ size: 13, style: FontStyle.Italic });
+ MenuItem.contentFontColor(Color.Green);
+ MenuItem.onChange(() => {
+ promptAction.showToast({
+ message: "该接口已连接",
+ duration: 3000,
+ bottom: 50
+ });
+ });
+ if (!isInitialRender) {
+ MenuItem.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ MenuItem.pop();
+ });
+ }
+ if (!isInitialRender) {
+ If.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ If.pop();
+ };
+ this.forEachUpdateFunction(elmtId, this.simObj.interface, forEachItemGenFunction, undefined, true, false);
+ if (!isInitialRender) {
+ ForEach.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ ForEach.pop();
+ Menu.pop();
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/MiddleContent.ets(241:5)");
+ Column.position({ x: this.simObj.objX, y: this.simObj.objY });
+ Column.bindContextMenu({ builder: () => {
+ this.InterfaceMenu.call(this);
+ } }, ResponseType.LongPress);
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Image.create(this.simObj.img);
+ Image.debugLine("components/MiddleContent.ets(242:7)");
+ Image.width(50);
+ Image.border({
+ color: this.TempConn[0] === this.simObj ? Color.Green : this.simObj.isChose ? Color.Red : Color.Transparent,
+ width: 1.2
+ });
+ Image.onClick(() => {
+ this.TempConn = [];
+ this.isNewObj = false; // 取消插入新对象状态
+ this.newObjType = -1;
+ this.isNewConn = false;
+ if (!this.allSimObj.some(item => item.isChose == true)) { // 若没有对象被选中
+ this.choseIndex = this.thisIndex; // 更新选中对象的下标
+ this.simObj.changeIsChose(); // 更新对象选中状态
+ }
+ else if (this.simObj.isChose) { // 若要取消选中对象
+ this.choseIndex = null; // 更新选中下标为null
+ this.simObj.changeIsChose(); // 更新对象选中状态
+ }
+ else if (!this.simObj.isChose && this.choseIndex != null) { // 若要更换选择对象
+ this.allSimObj[this.choseIndex].changeIsChose(); // 更新上一个选中对象选中状态
+ this.choseIndex = this.thisIndex; // 更新选中下标
+ this.simObj.changeIsChose(); // 更新当前对象选中状态
+ }
+ });
+ if (!isInitialRender) {
+ Image.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
+class CreateLabel extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.__isShowLabel = this.initializeConsume("isShowLabel", "isShowLabel");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: CreateLabel_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ updateStateVars(params: CreateLabel_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__isShowLabel.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__simObj.aboutToBeDeleted();
+ this.__isShowLabel.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ private __isShowLabel: ObservedPropertyAbstractPU; // 是否显示标签
+ get isShowLabel() {
+ return this.__isShowLabel.get();
+ }
+ set isShowLabel(newValue: boolean // 是否显示标签
+ ) {
+ this.__isShowLabel.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ If.create();
+ if (this.isShowLabel) {
+ this.ifElseBranchUpdateFunction(0, () => {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create(this.simObj.objLabel);
+ Text.debugLine("components/MiddleContent.ets(279:7)");
+ Text.fontSize(15);
+ Text.position({ x: this.simObj.objX + 25, y: this.simObj.objY - 12 });
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ });
+ }
+ else {
+ this.ifElseBranchUpdateFunction(1, () => {
+ });
+ }
+ if (!isInitialRender) {
+ If.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ If.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/NetworkConfig.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/NetworkConfig.protoBin
new file mode 100644
index 0000000..b200416
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/NetworkConfig.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/NetworkConfig.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/NetworkConfig.ts
new file mode 100644
index 0000000..88aaffd
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/NetworkConfig.ts
@@ -0,0 +1,176 @@
+interface NetworkConfig_Params {
+ controller?: CustomDialogController;
+ simObj?: SimBase;
+ ip?: string;
+ port?: string;
+ mac?: string;
+}
+import type { SimBase } from "../classes/SimBase";
+export class NetworkConfig extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.controller = undefined;
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.__ip = new ObservedPropertySimplePU("", this, "ip");
+ this.__port = new ObservedPropertySimplePU("", this, "port");
+ this.__mac = new ObservedPropertySimplePU("", this, "mac");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: NetworkConfig_Params) {
+ if (params.controller !== undefined) {
+ this.controller = params.controller;
+ }
+ this.__simObj.set(params.simObj);
+ if (params.ip !== undefined) {
+ this.ip = params.ip;
+ }
+ if (params.port !== undefined) {
+ this.port = params.port;
+ }
+ if (params.mac !== undefined) {
+ this.mac = params.mac;
+ }
+ }
+ updateStateVars(params: NetworkConfig_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__ip.purgeDependencyOnElmtId(rmElmtId);
+ this.__port.purgeDependencyOnElmtId(rmElmtId);
+ this.__mac.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__simObj.aboutToBeDeleted();
+ this.__ip.aboutToBeDeleted();
+ this.__port.aboutToBeDeleted();
+ this.__mac.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private controller: CustomDialogController;
+ setController(ctr: CustomDialogController) {
+ this.controller = ctr;
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ private __ip: ObservedPropertySimplePU;
+ get ip() {
+ return this.__ip.get();
+ }
+ set ip(newValue: string) {
+ this.__ip.set(newValue);
+ }
+ private __port: ObservedPropertySimplePU;
+ get port() {
+ return this.__port.get();
+ }
+ set port(newValue: string) {
+ this.__port.set(newValue);
+ }
+ private __mac: ObservedPropertySimplePU;
+ get mac() {
+ return this.__mac.get();
+ }
+ set mac(newValue: string) {
+ this.__mac.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/NetworkConfig.ets(12:5)");
+ Column.backgroundColor(Color.White);
+ Column.justifyContent(FlexAlign.Center);
+ Column.alignItems(HorizontalAlign.Center);
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入ip地址:192.168.1.1" });
+ TextInput.debugLine("components/NetworkConfig.ets(13:7)");
+ TextInput.onChange((value) => {
+ this.ip = value;
+ });
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口号:8080" });
+ TextInput.debugLine("components/NetworkConfig.ets(18:7)");
+ TextInput.onChange((value) => {
+ this.port = value;
+ });
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入mac地址:mac11" });
+ TextInput.debugLine("components/NetworkConfig.ets(23:7)");
+ TextInput.onChange((value) => {
+ this.mac = value;
+ });
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create({ space: 30 });
+ Row.debugLine("components/NetworkConfig.ets(28:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("取消");
+ Button.debugLine("components/NetworkConfig.ets(29:9)");
+ Button.onClick(() => {
+ this.controller.close();
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("确定");
+ Button.debugLine("components/NetworkConfig.ets(34:9)");
+ Button.onClick(() => {
+ this.simObj.Ip = this.ip;
+ this.simObj.Mac = this.mac;
+ this.simObj.port = this.port;
+ this.controller.close();
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/RouterTableConfig.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/RouterTableConfig.protoBin
new file mode 100644
index 0000000..3964463
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/RouterTableConfig.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/RouterTableConfig.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/RouterTableConfig.ts
new file mode 100644
index 0000000..57e2c9f
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/RouterTableConfig.ts
@@ -0,0 +1,255 @@
+interface RouterTableConfig_Params {
+ controller?: CustomDialogController;
+ simObj?: SimBase;
+ ip1?: string;
+ ip2?: string;
+ ip3?: string;
+ ip4?: string;
+}
+import type { SimBase } from "../classes/SimBase";
+export class RouterTableConfig extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.controller = undefined;
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.__ip1 = new ObservedPropertySimplePU("", this, "ip1");
+ this.__ip2 = new ObservedPropertySimplePU("", this, "ip2");
+ this.__ip3 = new ObservedPropertySimplePU("", this, "ip3");
+ this.__ip4 = new ObservedPropertySimplePU("", this, "ip4");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: RouterTableConfig_Params) {
+ if (params.controller !== undefined) {
+ this.controller = params.controller;
+ }
+ this.__simObj.set(params.simObj);
+ if (params.ip1 !== undefined) {
+ this.ip1 = params.ip1;
+ }
+ if (params.ip2 !== undefined) {
+ this.ip2 = params.ip2;
+ }
+ if (params.ip3 !== undefined) {
+ this.ip3 = params.ip3;
+ }
+ if (params.ip4 !== undefined) {
+ this.ip4 = params.ip4;
+ }
+ }
+ updateStateVars(params: RouterTableConfig_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__ip1.purgeDependencyOnElmtId(rmElmtId);
+ this.__ip2.purgeDependencyOnElmtId(rmElmtId);
+ this.__ip3.purgeDependencyOnElmtId(rmElmtId);
+ this.__ip4.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__simObj.aboutToBeDeleted();
+ this.__ip1.aboutToBeDeleted();
+ this.__ip2.aboutToBeDeleted();
+ this.__ip3.aboutToBeDeleted();
+ this.__ip4.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private controller: CustomDialogController;
+ setController(ctr: CustomDialogController) {
+ this.controller = ctr;
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ private __ip1: ObservedPropertySimplePU;
+ get ip1() {
+ return this.__ip1.get();
+ }
+ set ip1(newValue: string) {
+ this.__ip1.set(newValue);
+ }
+ private __ip2: ObservedPropertySimplePU;
+ get ip2() {
+ return this.__ip2.get();
+ }
+ set ip2(newValue: string) {
+ this.__ip2.set(newValue);
+ }
+ private __ip3: ObservedPropertySimplePU;
+ get ip3() {
+ return this.__ip3.get();
+ }
+ set ip3(newValue: string) {
+ this.__ip3.set(newValue);
+ }
+ private __ip4: ObservedPropertySimplePU;
+ get ip4() {
+ return this.__ip4.get();
+ }
+ set ip4(newValue: string) {
+ this.__ip4.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/RouterTableConfig.ets(13:5)");
+ Column.backgroundColor(Color.White);
+ Column.justifyContent(FlexAlign.Center);
+ Column.alignItems(HorizontalAlign.Center);
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/RouterTableConfig.ets(14:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口1下一跳:192.168.1.0/24" });
+ TextInput.debugLine("components/RouterTableConfig.ets(15:9)");
+ TextInput.onChange((value) => {
+ this.ip1 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/RouterTableConfig.ets(21:9)");
+ Button.onClick(() => {
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/RouterTableConfig.ets(27:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口2下一跳:" });
+ TextInput.debugLine("components/RouterTableConfig.ets(28:9)");
+ TextInput.onChange((value) => {
+ this.ip2 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/RouterTableConfig.ets(34:9)");
+ Button.onClick(() => {
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/RouterTableConfig.ets(40:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口3下一跳:" });
+ TextInput.debugLine("components/RouterTableConfig.ets(41:9)");
+ TextInput.onChange((value) => {
+ this.ip3 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/RouterTableConfig.ets(47:9)");
+ Button.onClick(() => {
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/RouterTableConfig.ets(53:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口4下一跳:" });
+ TextInput.debugLine("components/RouterTableConfig.ets(54:9)");
+ TextInput.onChange((value) => {
+ this.ip4 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/RouterTableConfig.ets(60:9)");
+ Button.onClick(() => {
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/SwitchTableConfig.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/SwitchTableConfig.protoBin
new file mode 100644
index 0000000..a1447f9
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/SwitchTableConfig.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/SwitchTableConfig.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/SwitchTableConfig.ts
new file mode 100644
index 0000000..4e77694
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/SwitchTableConfig.ts
@@ -0,0 +1,255 @@
+interface SwitchTableConfig_Params {
+ controller?: CustomDialogController;
+ simObj?: SimBase;
+ mac1?: string;
+ mac2?: string;
+ mac3?: string;
+ mac4?: string;
+}
+import type { SimBase } from "../classes/SimBase";
+export class SwitchTableConfig extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.controller = undefined;
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.__mac1 = new ObservedPropertySimplePU("", this, "mac1");
+ this.__mac2 = new ObservedPropertySimplePU("", this, "mac2");
+ this.__mac3 = new ObservedPropertySimplePU("", this, "mac3");
+ this.__mac4 = new ObservedPropertySimplePU("", this, "mac4");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: SwitchTableConfig_Params) {
+ if (params.controller !== undefined) {
+ this.controller = params.controller;
+ }
+ this.__simObj.set(params.simObj);
+ if (params.mac1 !== undefined) {
+ this.mac1 = params.mac1;
+ }
+ if (params.mac2 !== undefined) {
+ this.mac2 = params.mac2;
+ }
+ if (params.mac3 !== undefined) {
+ this.mac3 = params.mac3;
+ }
+ if (params.mac4 !== undefined) {
+ this.mac4 = params.mac4;
+ }
+ }
+ updateStateVars(params: SwitchTableConfig_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__mac1.purgeDependencyOnElmtId(rmElmtId);
+ this.__mac2.purgeDependencyOnElmtId(rmElmtId);
+ this.__mac3.purgeDependencyOnElmtId(rmElmtId);
+ this.__mac4.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__simObj.aboutToBeDeleted();
+ this.__mac1.aboutToBeDeleted();
+ this.__mac2.aboutToBeDeleted();
+ this.__mac3.aboutToBeDeleted();
+ this.__mac4.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private controller: CustomDialogController;
+ setController(ctr: CustomDialogController) {
+ this.controller = ctr;
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ private __mac1: ObservedPropertySimplePU;
+ get mac1() {
+ return this.__mac1.get();
+ }
+ set mac1(newValue: string) {
+ this.__mac1.set(newValue);
+ }
+ private __mac2: ObservedPropertySimplePU;
+ get mac2() {
+ return this.__mac2.get();
+ }
+ set mac2(newValue: string) {
+ this.__mac2.set(newValue);
+ }
+ private __mac3: ObservedPropertySimplePU;
+ get mac3() {
+ return this.__mac3.get();
+ }
+ set mac3(newValue: string) {
+ this.__mac3.set(newValue);
+ }
+ private __mac4: ObservedPropertySimplePU;
+ get mac4() {
+ return this.__mac4.get();
+ }
+ set mac4(newValue: string) {
+ this.__mac4.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/SwitchTableConfig.ets(13:5)");
+ Column.backgroundColor(Color.White);
+ Column.justifyContent(FlexAlign.Center);
+ Column.alignItems(HorizontalAlign.Center);
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/SwitchTableConfig.ets(14:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口1下一跳:mac11" });
+ TextInput.debugLine("components/SwitchTableConfig.ets(15:9)");
+ TextInput.onChange((value) => {
+ this.mac1 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/SwitchTableConfig.ets(21:9)");
+ Button.onClick(() => {
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/SwitchTableConfig.ets(27:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口2下一跳:" });
+ TextInput.debugLine("components/SwitchTableConfig.ets(28:9)");
+ TextInput.onChange((value) => {
+ this.mac2 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/SwitchTableConfig.ets(34:9)");
+ Button.onClick(() => {
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/SwitchTableConfig.ets(40:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口3下一跳:" });
+ TextInput.debugLine("components/SwitchTableConfig.ets(41:9)");
+ TextInput.onChange((value) => {
+ this.mac3 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/SwitchTableConfig.ets(47:9)");
+ Button.onClick(() => {
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/SwitchTableConfig.ets(53:7)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ TextInput.create({ placeholder: "请输入端口4下一跳:" });
+ TextInput.debugLine("components/SwitchTableConfig.ets(54:9)");
+ TextInput.onChange((value) => {
+ this.mac4 = value;
+ });
+ TextInput.width("80%");
+ if (!isInitialRender) {
+ TextInput.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel("添加");
+ Button.debugLine("components/SwitchTableConfig.ets(60:9)");
+ Button.onClick(() => {
+ });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ Row.pop();
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/Table.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/Table.protoBin
new file mode 100644
index 0000000..72acbb4
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/Table.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/Table.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/Table.ts
new file mode 100644
index 0000000..2aa7802
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/Table.ts
@@ -0,0 +1,275 @@
+interface TableChart_Params {
+ simObj?: SimBase;
+}
+interface NetworkChart_Params {
+ simObj?: SimBase;
+}
+import type { SimBase, Table } from '../classes/SimBase';
+export class NetworkChart extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: NetworkChart_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ updateStateVars(params: NetworkChart_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__simObj.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/Table.ets(8:5)");
+ Column.width("100%");
+ Column.height("100%");
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ If.create();
+ if (this.simObj.objType == 1 || this.simObj.objType == 2) {
+ this.ifElseBranchUpdateFunction(0, () => {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/Table.ets(10:9)");
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create("IP地址:" + this.simObj.Ip);
+ Text.debugLine("components/Table.ets(11:11)");
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create("Mac地址:" + this.simObj.Mac);
+ Text.debugLine("components/Table.ets(13:11)");
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ Column.pop();
+ });
+ }
+ else if (this.simObj.objType == 3) {
+ this.ifElseBranchUpdateFunction(1, () => {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/Table.ets(16:9)");
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create("Mac地址:" + this.simObj.Mac);
+ Text.debugLine("components/Table.ets(17:11)");
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ Column.pop();
+ });
+ }
+ else {
+ this.ifElseBranchUpdateFunction(2, () => {
+ });
+ }
+ if (!isInitialRender) {
+ If.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ If.pop();
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
+export class TableChart extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.__simObj = new SynchedPropertyNesedObjectPU(params.simObj, this, "simObj");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: TableChart_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ updateStateVars(params: TableChart_Params) {
+ this.__simObj.set(params.simObj);
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__simObj.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__simObj.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private __simObj: SynchedPropertyNesedObjectPU;
+ get simObj() {
+ return this.__simObj.get();
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("components/Table.ets(31:5)");
+ Column.width("100%");
+ Column.height("100%");
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ If.create();
+ if (this.simObj.objType == 2) {
+ this.ifElseBranchUpdateFunction(0, () => {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ ForEach.create();
+ const forEachItemGenFunction = _item => {
+ const item = _item;
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/Table.ets(34:11)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create("端口" + item.port.toString() + ":");
+ Text.debugLine("components/Table.ets(35:13)");
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create(item.net);
+ Text.debugLine("components/Table.ets(37:13)");
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ Row.pop();
+ };
+ this.forEachUpdateFunction(elmtId, this.simObj.routerTable, forEachItemGenFunction);
+ if (!isInitialRender) {
+ ForEach.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ ForEach.pop();
+ });
+ }
+ else if (this.simObj.objType == 3) {
+ this.ifElseBranchUpdateFunction(1, () => {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ ForEach.create();
+ const forEachItemGenFunction = _item => {
+ const item = _item;
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/Table.ets(42:11)");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create("端口" + item.port.toString() + ":");
+ Text.debugLine("components/Table.ets(43:13)");
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Text.create(item.net);
+ Text.debugLine("components/Table.ets(45:13)");
+ if (!isInitialRender) {
+ Text.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Text.pop();
+ Row.pop();
+ };
+ this.forEachUpdateFunction(elmtId, this.simObj.switchTable, forEachItemGenFunction);
+ if (!isInitialRender) {
+ ForEach.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ ForEach.pop();
+ });
+ }
+ else {
+ this.ifElseBranchUpdateFunction(2, () => {
+ });
+ }
+ if (!isInitialRender) {
+ If.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ If.pop();
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/TopMenuBar.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/TopMenuBar.protoBin
new file mode 100644
index 0000000..a83aa7f
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/TopMenuBar.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/TopMenuBar.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/TopMenuBar.ts
new file mode 100644
index 0000000..ab7f195
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/components/TopMenuBar.ts
@@ -0,0 +1,531 @@
+interface TopMenuBar_Params {
+ // 修改标签控制器
+ reviseLabelController?: CustomDialogController;
+ // 删除连接线控制器
+ deleteLineController?: CustomDialogController;
+ // 网络配置控制器
+ NetworkController?: CustomDialogController;
+ // 路由表配置配置器
+ RouterController?: CustomDialogController;
+ // 转换表配置控制器
+ SwitchController?: CustomDialogController;
+ // 数据包设置控制器
+ PacketController?: CustomDialogController;
+ // 批量数据包设置控制器
+ BatchPacketController?: CustomDialogController;
+ menuArr?: TopMenu[];
+ allSimObj?: SimBase[] // 仿真对象数组
+ ;
+ allSimConn?: SimConnect[] // 仿真连接线数组
+ ;
+ TempConn?: any[] // 临时any数组
+ ;
+ isNewObj?: boolean // 是否新增对象
+ ;
+ newObjType?: number // 新增对象类型
+ ;
+ choseIndex?: number | null // 选中对象下标
+ ;
+ isShowLabel?: boolean // 是否显示标签
+ ;
+ isShowPort?: boolean // 是否显示接口
+ ;
+ isShowInterface?: boolean // 是否显示网络配置信息
+ ;
+ isShowTable?: boolean // 是否显示路由/交换表信息
+ ;
+ allSimPacket?: SimPacket[] // 单次数据包传输的集合
+ ;
+}
+import promptAction from "@ohos:promptAction";
+import type { SimBase } from '../classes/SimBase';
+import type { SimConnect, SimPacket } from '../classes/OtherSimObjects';
+import { TopMenu, TopMenuItem } from "@bundle:com.example.ensp2/entry/ets/classes/TopMenu";
+import { LabelRevise, LineDelete, NetworkConfig, RouterTableConfig, SwitchTableConfig, PacketSet, BatchPacketSet } from "@bundle:com.example.ensp2/entry/ets/components/Dialog";
+export class TopMenuBar extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.reviseLabelController = new CustomDialogController({
+ builder: () => {
+ let paramsLambda = () => {
+ return {
+ simObj: this.allSimObj[this.choseIndex]
+ };
+ };
+ let jsDialog = new LabelRevise(this, { simObj: this.allSimObj[this.choseIndex] }, undefined, -1, paramsLambda);
+ jsDialog.setController(this.
+ // 修改标签控制器
+ reviseLabelController);
+ ViewPU.create(jsDialog);
+ }
+ }, this);
+ this.deleteLineController = new CustomDialogController({
+ builder: () => {
+ let paramsLambda = () => {
+ return {
+ simObj: this.allSimObj[this.choseIndex]
+ };
+ };
+ let jsDialog = new LineDelete(this, { simObj: this.allSimObj[this.choseIndex] }, undefined, -1, paramsLambda);
+ jsDialog.setController(this.
+ // 删除连接线控制器
+ deleteLineController);
+ ViewPU.create(jsDialog);
+ }
+ }, this);
+ this.NetworkController = new CustomDialogController({
+ builder: () => {
+ let paramsLambda = () => {
+ return {
+ simObj: this.allSimObj[this.choseIndex]
+ };
+ };
+ let jsDialog = new NetworkConfig(this, { simObj: this.allSimObj[this.choseIndex] }, undefined, -1, paramsLambda);
+ jsDialog.setController(this.
+ // 网络配置控制器
+ NetworkController);
+ ViewPU.create(jsDialog);
+ }
+ }, this);
+ this.RouterController = new CustomDialogController({
+ builder: () => {
+ let paramsLambda = () => {
+ return {
+ simObj: this.allSimObj[this.choseIndex]
+ };
+ };
+ let jsDialog = new RouterTableConfig(this, { simObj: this.allSimObj[this.choseIndex] }, undefined, -1, paramsLambda);
+ jsDialog.setController(this.
+ // 路由表配置配置器
+ RouterController);
+ ViewPU.create(jsDialog);
+ }
+ }, this);
+ this.SwitchController = new CustomDialogController({
+ builder: () => {
+ let paramsLambda = () => {
+ return {
+ simObj: this.allSimObj[this.choseIndex]
+ };
+ };
+ let jsDialog = new SwitchTableConfig(this, { simObj: this.allSimObj[this.choseIndex] }, undefined, -1, paramsLambda);
+ jsDialog.setController(this.
+ // 转换表配置控制器
+ SwitchController);
+ ViewPU.create(jsDialog);
+ }
+ }, this);
+ this.PacketController = new CustomDialogController({
+ builder: () => {
+ let paramsLambda = () => {
+ return {
+ simObj: this.allSimObj[this.choseIndex]
+ };
+ };
+ let jsDialog = new PacketSet(this, { simObj: this.allSimObj[this.choseIndex] }, undefined, -1, paramsLambda);
+ jsDialog.setController(this.
+ // 数据包设置控制器
+ PacketController);
+ ViewPU.create(jsDialog);
+ }
+ }, this);
+ this.BatchPacketController = new CustomDialogController({
+ builder: () => {
+ let paramsLambda = () => {
+ return {
+ simObj: this.allSimObj[this.choseIndex]
+ };
+ };
+ let jsDialog = new BatchPacketSet(this, { simObj: this.allSimObj[this.choseIndex] }, undefined, -1, paramsLambda);
+ jsDialog.setController(this.
+ // 批量数据包设置控制器
+ BatchPacketController);
+ ViewPU.create(jsDialog);
+ }
+ }, this);
+ this.menuArr = [
+ new TopMenu('删除与修改', [new TopMenuItem('删除对象', () => {
+ if (this.choseIndex != null) {
+ this.allSimConn = this.allSimConn.filter((item) => {
+ if (this.allSimObj[this.choseIndex].objID === item.nObjE.objID || this.allSimObj[this.choseIndex].objID === item.nObjS.objID) {
+ item.deleteObjConn(); // 删除线时应该先将线两端的设备的connection设置为null
+ return false;
+ }
+ return true;
+ });
+ this.allSimObj.splice(this.choseIndex, 1);
+ this.isNewObj = false;
+ this.newObjType = -1;
+ this.choseIndex = null;
+ }
+ else {
+ promptAction.showToast({
+ message: "请先选择要删除的对象",
+ duration: 3000,
+ bottom: 50
+ });
+ }
+ }), new TopMenuItem('删除连接线', () => {
+ if (this.choseIndex != null) {
+ this.deleteLineController.open();
+ }
+ else {
+ promptAction.showToast({
+ message: "请选择要删除的连接线对象",
+ duration: 3000,
+ bottom: 50
+ });
+ }
+ }), new TopMenuItem('修改标签', () => {
+ if (this.choseIndex != null) {
+ this.reviseLabelController.open();
+ }
+ else {
+ promptAction.showToast({
+ message: "请选择仿真对象",
+ duration: 3000,
+ bottom: 50
+ });
+ }
+ })]),
+ new TopMenu('基础配置', [new TopMenuItem('网络配置', () => {
+ if (this.choseIndex != null && (this.allSimObj[this.choseIndex].objType == 1 || this.allSimObj[this.choseIndex].objType == 2 || this.allSimObj[this.choseIndex].objType == 3)) {
+ this.NetworkController.open();
+ }
+ else {
+ promptAction.showToast({
+ message: "请选择正确对象",
+ duration: 3000,
+ bottom: 50
+ });
+ }
+ }), new TopMenuItem('路由器配置', () => {
+ if (this.choseIndex != null && this.allSimObj[this.choseIndex].objType == 2) {
+ this.RouterController.open();
+ }
+ else {
+ promptAction.showToast({
+ message: "请选择路由器对象",
+ duration: 3000,
+ bottom: 50
+ });
+ }
+ }), new TopMenuItem('交换器配置', () => {
+ if (this.choseIndex != null && this.allSimObj[this.choseIndex].objType == 3) {
+ this.SwitchController.open();
+ }
+ else {
+ promptAction.showToast({
+ message: "请选择交换机对象",
+ duration: 3000,
+ bottom: 50
+ });
+ }
+ })]),
+ new TopMenu('显示设置', [new TopMenuItem('显示/不显示标签', () => {
+ this.isShowLabel = !this.isShowLabel;
+ }), new TopMenuItem('显示/不显示接口', () => {
+ this.isShowPort = !this.isShowPort;
+ }), new TopMenuItem('显示/不显示配置信息', () => {
+ this.isShowInterface = !this.isShowInterface;
+ }), new TopMenuItem('显示/不显示交换表信息', () => {
+ this.isShowTable = !this.isShowTable;
+ })]),
+ new TopMenu('发送数据包', [new TopMenuItem('发送数据包', () => {
+ if (this.choseIndex != null && this.allSimObj[this.choseIndex].objType == 1) {
+ this.PacketController.open();
+ }
+ else {
+ promptAction.showToast({
+ message: "请选择主机对象",
+ duration: 3000,
+ bottom: 50
+ });
+ }
+ }), new TopMenuItem('批量发送数据包', () => {
+ if (this.choseIndex != null && this.allSimObj[this.choseIndex].objType == 1) {
+ this.BatchPacketController.open();
+ }
+ else {
+ promptAction.showToast({
+ message: "请选择主机对象",
+ duration: 3000,
+ bottom: 50
+ });
+ }
+ })]),
+ new TopMenu('清除屏幕', [new TopMenuItem('清除屏幕', () => {
+ this.allSimObj = [];
+ this.allSimConn = [];
+ this.TempConn = [];
+ this.isNewObj = false;
+ this.choseIndex = null;
+ })])
+ ] // 顶部菜单栏数组
+ ;
+ this.__allSimObj = this.initializeConsume("allSimObj", "allSimObj");
+ this.__allSimConn = this.initializeConsume("allSimConn", "allSimConn");
+ this.__TempConn = this.initializeConsume("TempConn", "TempConn");
+ this.__isNewObj = this.initializeConsume("isNewObj", "isNewObj");
+ this.__newObjType = this.initializeConsume("newObjType", "newObjType");
+ this.__choseIndex = this.initializeConsume("choseIndex", "choseIndex");
+ this.__isShowLabel = this.initializeConsume("isShowLabel", "isShowLabel");
+ this.__isShowPort = this.initializeConsume("isShowPort", "isShowPort");
+ this.__isShowInterface = this.initializeConsume("isShowInterface", "isShowInterface");
+ this.__isShowTable = this.initializeConsume("isShowTable", "isShowTable");
+ this.__allSimPacket = this.initializeConsume("allSimPacket", "allSimPacket");
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: TopMenuBar_Params) {
+ if (params.reviseLabelController !== undefined) {
+ this.reviseLabelController = params.reviseLabelController;
+ }
+ if (params.deleteLineController !== undefined) {
+ this.deleteLineController = params.deleteLineController;
+ }
+ if (params.NetworkController !== undefined) {
+ this.NetworkController = params.NetworkController;
+ }
+ if (params.RouterController !== undefined) {
+ this.RouterController = params.RouterController;
+ }
+ if (params.SwitchController !== undefined) {
+ this.SwitchController = params.SwitchController;
+ }
+ if (params.PacketController !== undefined) {
+ this.PacketController = params.PacketController;
+ }
+ if (params.BatchPacketController !== undefined) {
+ this.BatchPacketController = params.BatchPacketController;
+ }
+ if (params.menuArr !== undefined) {
+ this.menuArr = params.menuArr;
+ }
+ }
+ updateStateVars(params: TopMenuBar_Params) {
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__allSimObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__allSimConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__TempConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__isNewObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__newObjType.purgeDependencyOnElmtId(rmElmtId);
+ this.__choseIndex.purgeDependencyOnElmtId(rmElmtId);
+ this.__isShowLabel.purgeDependencyOnElmtId(rmElmtId);
+ this.__isShowPort.purgeDependencyOnElmtId(rmElmtId);
+ this.__isShowInterface.purgeDependencyOnElmtId(rmElmtId);
+ this.__isShowTable.purgeDependencyOnElmtId(rmElmtId);
+ this.__allSimPacket.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__allSimObj.aboutToBeDeleted();
+ this.__allSimConn.aboutToBeDeleted();
+ this.__TempConn.aboutToBeDeleted();
+ this.__isNewObj.aboutToBeDeleted();
+ this.__newObjType.aboutToBeDeleted();
+ this.__choseIndex.aboutToBeDeleted();
+ this.__isShowLabel.aboutToBeDeleted();
+ this.__isShowPort.aboutToBeDeleted();
+ this.__isShowInterface.aboutToBeDeleted();
+ this.__isShowTable.aboutToBeDeleted();
+ this.__allSimPacket.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ // 修改标签控制器
+ private reviseLabelController: CustomDialogController;
+ // 删除连接线控制器
+ private deleteLineController: CustomDialogController;
+ // 网络配置控制器
+ private NetworkController: CustomDialogController;
+ // 路由表配置配置器
+ private RouterController: CustomDialogController;
+ // 转换表配置控制器
+ private SwitchController: CustomDialogController;
+ // 数据包设置控制器
+ private PacketController: CustomDialogController;
+ // 批量数据包设置控制器
+ private BatchPacketController: CustomDialogController;
+ MenuItem(menuItemArr: TopMenuItem[], parent = null) {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Menu.create();
+ Menu.debugLine("components/TopMenuBar.ets(40:5)");
+ if (!isInitialRender) {
+ Menu.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ ForEach.create();
+ const forEachItemGenFunction = _item => {
+ const item = _item;
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ MenuItem.create({ content: item.title });
+ MenuItem.debugLine("components/TopMenuBar.ets(42:9)");
+ MenuItem.onChange(() => {
+ if (item.fun) {
+ item.fun();
+ }
+ });
+ if (!isInitialRender) {
+ MenuItem.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ MenuItem.pop();
+ };
+ this.forEachUpdateFunction(elmtId, menuItemArr, forEachItemGenFunction);
+ if (!isInitialRender) {
+ ForEach.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ ForEach.pop();
+ Menu.pop();
+ } // 顶部菜单栏按钮每小项
+ MenuButton(menuArr: TopMenu[], parent = null) {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ ForEach.create();
+ const forEachItemGenFunction = _item => {
+ const item = _item;
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Button.createWithLabel(item.title);
+ Button.debugLine("components/TopMenuBar.ets(55:7)");
+ Button.type(ButtonType.Normal);
+ Button.fontColor(Color.Black);
+ Button.border({ color: Color.Black, width: 1 });
+ Button.backgroundColor(Color.Transparent);
+ Button.bindMenu({ builder: () => {
+ this.MenuItem.call(this, item.menuItemArr);
+ } });
+ if (!isInitialRender) {
+ Button.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ Button.pop();
+ };
+ this.forEachUpdateFunction(elmtId, menuArr, forEachItemGenFunction);
+ if (!isInitialRender) {
+ ForEach.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ ForEach.pop();
+ } // 顶部菜单栏按钮
+ private menuArr: TopMenu[]; // 顶部菜单栏数组
+ private __allSimObj: ObservedPropertyAbstractPU; // 仿真对象数组
+ get allSimObj() {
+ return this.__allSimObj.get();
+ }
+ set allSimObj(newValue: SimBase[] // 仿真对象数组
+ ) {
+ this.__allSimObj.set(newValue);
+ }
+ private __allSimConn: ObservedPropertyAbstractPU; // 仿真连接线数组
+ get allSimConn() {
+ return this.__allSimConn.get();
+ }
+ set allSimConn(newValue: SimConnect[] // 仿真连接线数组
+ ) {
+ this.__allSimConn.set(newValue);
+ }
+ private __TempConn: ObservedPropertyAbstractPU; // 临时any数组
+ get TempConn() {
+ return this.__TempConn.get();
+ }
+ set TempConn(newValue: any[] // 临时any数组
+ ) {
+ this.__TempConn.set(newValue);
+ }
+ private __isNewObj: ObservedPropertyAbstractPU; // 是否新增对象
+ get isNewObj() {
+ return this.__isNewObj.get();
+ }
+ set isNewObj(newValue: boolean // 是否新增对象
+ ) {
+ this.__isNewObj.set(newValue);
+ }
+ private __newObjType: ObservedPropertyAbstractPU; // 新增对象类型
+ get newObjType() {
+ return this.__newObjType.get();
+ }
+ set newObjType(newValue: number // 新增对象类型
+ ) {
+ this.__newObjType.set(newValue);
+ }
+ private __choseIndex: ObservedPropertyAbstractPU; // 选中对象下标
+ get choseIndex() {
+ return this.__choseIndex.get();
+ }
+ set choseIndex(newValue: number | null // 选中对象下标
+ ) {
+ this.__choseIndex.set(newValue);
+ }
+ private __isShowLabel: ObservedPropertyAbstractPU; // 是否显示标签
+ get isShowLabel() {
+ return this.__isShowLabel.get();
+ }
+ set isShowLabel(newValue: boolean // 是否显示标签
+ ) {
+ this.__isShowLabel.set(newValue);
+ }
+ private __isShowPort: ObservedPropertyAbstractPU; // 是否显示接口
+ get isShowPort() {
+ return this.__isShowPort.get();
+ }
+ set isShowPort(newValue: boolean // 是否显示接口
+ ) {
+ this.__isShowPort.set(newValue);
+ }
+ private __isShowInterface: ObservedPropertyAbstractPU; // 是否显示网络配置信息
+ get isShowInterface() {
+ return this.__isShowInterface.get();
+ }
+ set isShowInterface(newValue: boolean // 是否显示网络配置信息
+ ) {
+ this.__isShowInterface.set(newValue);
+ }
+ private __isShowTable: ObservedPropertyAbstractPU; // 是否显示路由/交换表信息
+ get isShowTable() {
+ return this.__isShowTable.get();
+ }
+ set isShowTable(newValue: boolean // 是否显示路由/交换表信息
+ ) {
+ this.__isShowTable.set(newValue);
+ }
+ private __allSimPacket: ObservedPropertyAbstractPU; // 单次数据包传输的集合
+ get allSimPacket() {
+ return this.__allSimPacket.get();
+ }
+ set allSimPacket(newValue: SimPacket[] // 单次数据包传输的集合
+ ) {
+ this.__allSimPacket.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Row.create();
+ Row.debugLine("components/TopMenuBar.ets(190:5)");
+ Row.height("12%");
+ Row.width("100%");
+ if (!isInitialRender) {
+ Row.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ this.MenuButton.bind(this)(this.menuArr);
+ Row.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/entryability/EntryAbility.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/entryability/EntryAbility.protoBin
new file mode 100644
index 0000000..fc30121
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/entryability/EntryAbility.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/entryability/EntryAbility.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/entryability/EntryAbility.ts
new file mode 100644
index 0000000..b22a785
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/entryability/EntryAbility.ts
@@ -0,0 +1,38 @@
+import type AbilityConstant from "@ohos:app.ability.AbilityConstant";
+import hilog from "@ohos:hilog";
+import UIAbility from "@ohos:app.ability.UIAbility";
+import type Want from "@ohos:app.ability.Want";
+import type window from "@ohos:window";
+export default class EntryAbility extends UIAbility {
+ onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
+ hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
+ AppStorage.setOrCreate('LogText', '');
+ }
+ onDestroy(): void {
+ hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
+ }
+ onWindowStageCreate(windowStage: window.WindowStage): void {
+ // Main window is created, set main page for this ability
+ hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
+ windowStage.loadContent('pages/Index', (err, data) => {
+ if (err.code) {
+ hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
+ return;
+ }
+ hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
+ });
+ // windowStage.getMainWindowSync().setWindowSystemBarEnable([]);
+ }
+ onWindowStageDestroy(): void {
+ // Main window is destroyed, release UI related resources
+ hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
+ }
+ onForeground(): void {
+ // Ability has brought to foreground
+ hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
+ }
+ onBackground(): void {
+ // Ability has back to background
+ hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
+ }
+}
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/functions/functions.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/functions/functions.protoBin
new file mode 100644
index 0000000..34d56c7
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/functions/functions.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/functions/functions.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/functions/functions.ts
new file mode 100644
index 0000000..71a9678
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/functions/functions.ts
@@ -0,0 +1,50 @@
+import type { SimBase } from "../classes/SimBase";
+function ValidateIPAddress(ipAddress: string): boolean {
+ // 定义IP地址的正则表达式模式
+ const patternWithSubnet = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/(\d{1,2})$/;
+ const patternWithoutSubnet = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
+ const matchWithSubnet = ipAddress.match(patternWithSubnet);
+ const matchWithoutSubnet = ipAddress.match(patternWithoutSubnet);
+ if (matchWithSubnet) {
+ // 带有子网掩码的IP地址
+ // 检查每个组件的取值范围是否在 0-255 之间
+ for (let i = 1; i <= 4; i++) {
+ const group = parseInt(matchWithSubnet[i]);
+ if (group < 0 || group > 255) {
+ return false;
+ }
+ }
+ // 检查子网掩码的取值范围是否在 0-32 之间
+ const subnetMask = parseInt(matchWithSubnet[5]);
+ if (subnetMask < 0 || subnetMask > 32) {
+ return false;
+ }
+ return true;
+ }
+ else if (matchWithoutSubnet) {
+ // 不带子网掩码的IP地址
+ // 检查每个组件的取值范围是否在 0-255 之间
+ for (let i = 1; i <= 4; i++) {
+ const group = parseInt(matchWithoutSubnet[i]);
+ if (group < 0 || group > 255) {
+ return false;
+ }
+ }
+ return true;
+ }
+ else {
+ // IP地址格式不正确
+ return false;
+ }
+}
+export function checkNetwork(allSimObj: SimBase[]) {
+ for (const item of allSimObj) {
+ if (item.objType == 4) {
+ continue;
+ }
+ else if (!ValidateIPAddress(item.Ip)) {
+ return false;
+ }
+ }
+ return true;
+} // 检查创建虚拟对象的IP地址是否正确
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/pages/Index.protoBin b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/pages/Index.protoBin
new file mode 100644
index 0000000..e2bef42
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/pages/Index.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/pages/Index.ts b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/pages/Index.ts
new file mode 100644
index 0000000..a248a67
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/entry/src/main/ets/pages/Index.ts
@@ -0,0 +1,290 @@
+interface Index_Params {
+ allSimObj?: any[];
+ allSimConn?: any[];
+ TempConn?: any[];
+ isNewObj?: boolean;
+ newObjType?: number;
+ choseIndex?: number | null;
+ isNewConn?: boolean;
+ isShowLabel?: boolean;
+ isShowPort?: boolean;
+ isShowInterface?: boolean;
+ isShowTable?: boolean;
+ allSimPacket?: [
+ ];
+}
+import { TopMenuBar } from "@bundle:com.example.ensp2/entry/ets/components/TopMenuBar";
+import { MiddleContent } from "@bundle:com.example.ensp2/entry/ets/components/MiddleContent";
+import { BottomMenuBar } from "@bundle:com.example.ensp2/entry/ets/components/ButtomMenuBar";
+class Index extends ViewPU {
+ constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined) {
+ super(parent, __localStorage, elmtId);
+ if (typeof paramsLambda === "function") {
+ this.paramsGenerator_ = paramsLambda;
+ }
+ this.__allSimObj = new ObservedPropertyObjectPU([] // 仿真对象数组
+ , this, "allSimObj");
+ this.addProvidedVar("allSimObj", this.__allSimObj);
+ this.__allSimConn = new ObservedPropertyObjectPU([] // 仿真连接线数组
+ , this, "allSimConn");
+ this.addProvidedVar("allSimConn", this.__allSimConn);
+ this.__TempConn = new ObservedPropertyObjectPU([] // 临时连接线对象数组
+ , this, "TempConn");
+ this.addProvidedVar("TempConn", this.__TempConn);
+ this.__isNewObj = new ObservedPropertySimplePU(false // 是否新增对象
+ , this, "isNewObj");
+ this.addProvidedVar("isNewObj", this.__isNewObj);
+ this.__newObjType = new ObservedPropertySimplePU(-1 // 新增对象类型
+ , this, "newObjType");
+ this.addProvidedVar("newObjType", this.__newObjType);
+ this.__choseIndex = new ObservedPropertyObjectPU(null // 选中对象下标
+ , this, "choseIndex");
+ this.addProvidedVar("choseIndex", this.__choseIndex);
+ this.__isNewConn = new ObservedPropertySimplePU(false // 是否正在新增连接线
+ , this, "isNewConn");
+ this.addProvidedVar("isNewConn", this.__isNewConn);
+ this.__isShowLabel = new ObservedPropertySimplePU(true // 是否显示标签
+ , this, "isShowLabel");
+ this.addProvidedVar("isShowLabel", this.__isShowLabel);
+ this.__isShowPort = new ObservedPropertySimplePU(true // 是否显示接口
+ , this, "isShowPort");
+ this.addProvidedVar("isShowPort", this.__isShowPort);
+ this.__isShowInterface = new ObservedPropertySimplePU(true // 是否显示网络配置信息
+ , this, "isShowInterface");
+ this.addProvidedVar("isShowInterface", this.__isShowInterface);
+ this.__isShowTable = new ObservedPropertySimplePU(true // 是否显示路由/交换表信息
+ , this, "isShowTable");
+ this.addProvidedVar("isShowTable", this.__isShowTable);
+ this.__allSimPacket = new ObservedPropertyObjectPU([] // 单次数据包传输的集合
+ , this, "allSimPacket");
+ this.addProvidedVar("allSimPacket", this.__allSimPacket);
+ this.setInitiallyProvidedValue(params);
+ }
+ setInitiallyProvidedValue(params: Index_Params) {
+ if (params.allSimObj !== undefined) {
+ this.allSimObj = params.allSimObj;
+ }
+ if (params.allSimConn !== undefined) {
+ this.allSimConn = params.allSimConn;
+ }
+ if (params.TempConn !== undefined) {
+ this.TempConn = params.TempConn;
+ }
+ if (params.isNewObj !== undefined) {
+ this.isNewObj = params.isNewObj;
+ }
+ if (params.newObjType !== undefined) {
+ this.newObjType = params.newObjType;
+ }
+ if (params.choseIndex !== undefined) {
+ this.choseIndex = params.choseIndex;
+ }
+ if (params.isNewConn !== undefined) {
+ this.isNewConn = params.isNewConn;
+ }
+ if (params.isShowLabel !== undefined) {
+ this.isShowLabel = params.isShowLabel;
+ }
+ if (params.isShowPort !== undefined) {
+ this.isShowPort = params.isShowPort;
+ }
+ if (params.isShowInterface !== undefined) {
+ this.isShowInterface = params.isShowInterface;
+ }
+ if (params.isShowTable !== undefined) {
+ this.isShowTable = params.isShowTable;
+ }
+ if (params.allSimPacket !== undefined) {
+ this.allSimPacket = params.allSimPacket;
+ }
+ }
+ updateStateVars(params: Index_Params) {
+ }
+ purgeVariableDependenciesOnElmtId(rmElmtId) {
+ this.__allSimObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__allSimConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__TempConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__isNewObj.purgeDependencyOnElmtId(rmElmtId);
+ this.__newObjType.purgeDependencyOnElmtId(rmElmtId);
+ this.__choseIndex.purgeDependencyOnElmtId(rmElmtId);
+ this.__isNewConn.purgeDependencyOnElmtId(rmElmtId);
+ this.__isShowLabel.purgeDependencyOnElmtId(rmElmtId);
+ this.__isShowPort.purgeDependencyOnElmtId(rmElmtId);
+ this.__isShowInterface.purgeDependencyOnElmtId(rmElmtId);
+ this.__isShowTable.purgeDependencyOnElmtId(rmElmtId);
+ this.__allSimPacket.purgeDependencyOnElmtId(rmElmtId);
+ }
+ aboutToBeDeleted() {
+ this.__allSimObj.aboutToBeDeleted();
+ this.__allSimConn.aboutToBeDeleted();
+ this.__TempConn.aboutToBeDeleted();
+ this.__isNewObj.aboutToBeDeleted();
+ this.__newObjType.aboutToBeDeleted();
+ this.__choseIndex.aboutToBeDeleted();
+ this.__isNewConn.aboutToBeDeleted();
+ this.__isShowLabel.aboutToBeDeleted();
+ this.__isShowPort.aboutToBeDeleted();
+ this.__isShowInterface.aboutToBeDeleted();
+ this.__isShowTable.aboutToBeDeleted();
+ this.__allSimPacket.aboutToBeDeleted();
+ SubscriberManager.Get().delete(this.id__());
+ this.aboutToBeDeletedInternal();
+ }
+ private __allSimObj: ObservedPropertyObjectPU; // 仿真对象数组
+ get allSimObj() {
+ return this.__allSimObj.get();
+ }
+ set allSimObj(newValue: any[]) {
+ this.__allSimObj.set(newValue);
+ }
+ private __allSimConn: ObservedPropertyObjectPU; // 仿真连接线数组
+ get allSimConn() {
+ return this.__allSimConn.get();
+ }
+ set allSimConn(newValue: any[]) {
+ this.__allSimConn.set(newValue);
+ }
+ private __TempConn: ObservedPropertyObjectPU; // 临时连接线对象数组
+ get TempConn() {
+ return this.__TempConn.get();
+ }
+ set TempConn(newValue: any[]) {
+ this.__TempConn.set(newValue);
+ }
+ private __isNewObj: ObservedPropertySimplePU; // 是否新增对象
+ get isNewObj() {
+ return this.__isNewObj.get();
+ }
+ set isNewObj(newValue: boolean) {
+ this.__isNewObj.set(newValue);
+ }
+ private __newObjType: ObservedPropertySimplePU; // 新增对象类型
+ get newObjType() {
+ return this.__newObjType.get();
+ }
+ set newObjType(newValue: number) {
+ this.__newObjType.set(newValue);
+ }
+ private __choseIndex: ObservedPropertyObjectPU; // 选中对象下标
+ get choseIndex() {
+ return this.__choseIndex.get();
+ }
+ set choseIndex(newValue: number | null) {
+ this.__choseIndex.set(newValue);
+ }
+ private __isNewConn: ObservedPropertySimplePU; // 是否正在新增连接线
+ get isNewConn() {
+ return this.__isNewConn.get();
+ }
+ set isNewConn(newValue: boolean) {
+ this.__isNewConn.set(newValue);
+ }
+ private __isShowLabel: ObservedPropertySimplePU; // 是否显示标签
+ get isShowLabel() {
+ return this.__isShowLabel.get();
+ }
+ set isShowLabel(newValue: boolean) {
+ this.__isShowLabel.set(newValue);
+ }
+ private __isShowPort: ObservedPropertySimplePU; // 是否显示接口
+ get isShowPort() {
+ return this.__isShowPort.get();
+ }
+ set isShowPort(newValue: boolean) {
+ this.__isShowPort.set(newValue);
+ }
+ private __isShowInterface: ObservedPropertySimplePU; // 是否显示网络配置信息
+ get isShowInterface() {
+ return this.__isShowInterface.get();
+ }
+ set isShowInterface(newValue: boolean) {
+ this.__isShowInterface.set(newValue);
+ }
+ private __isShowTable: ObservedPropertySimplePU; // 是否显示路由/交换表信息
+ get isShowTable() {
+ return this.__isShowTable.get();
+ }
+ set isShowTable(newValue: boolean) {
+ this.__isShowTable.set(newValue);
+ }
+ private __allSimPacket: ObservedPropertyObjectPU<[
+ ]>; // 单次数据包传输的集合
+ get allSimPacket() {
+ return this.__allSimPacket.get();
+ }
+ set allSimPacket(newValue: [
+ ]) {
+ this.__allSimPacket.set(newValue);
+ }
+ initialRender() {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ Column.create();
+ Column.debugLine("pages/Index.ets(24:5)");
+ Column.width('100%');
+ Column.height('100%');
+ if (!isInitialRender) {
+ Column.pop();
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ if (isInitialRender) {
+ let paramsLambda = () => {
+ return {};
+ };
+ ViewPU.create(new
+ // 顶部功能栏
+ TopMenuBar(this, {}, undefined, elmtId, paramsLambda));
+ }
+ else {
+ this.updateStateVarsOfChildByElmtId(elmtId, {});
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ }
+ {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ if (isInitialRender) {
+ let paramsLambda = () => {
+ return {};
+ };
+ ViewPU.create(new
+ // 中间绘制区
+ MiddleContent(this, {}, undefined, elmtId, paramsLambda));
+ }
+ else {
+ this.updateStateVarsOfChildByElmtId(elmtId, {});
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ }
+ {
+ this.observeComponentCreation((elmtId, isInitialRender) => {
+ ViewStackProcessor.StartGetAccessRecordingFor(elmtId);
+ if (isInitialRender) {
+ let paramsLambda = () => {
+ return {};
+ };
+ ViewPU.create(new
+ // 底部选择栏
+ BottomMenuBar(this, {}, undefined, elmtId, paramsLambda));
+ }
+ else {
+ this.updateStateVarsOfChildByElmtId(elmtId, {});
+ }
+ ViewStackProcessor.StopGetAccessRecording();
+ });
+ }
+ Column.pop();
+ }
+ rerender() {
+ this.updateDirtyElements();
+ }
+}
+ViewStackProcessor.StartGetAccessRecordingFor(ViewStackProcessor.AllocateNewElmetIdForNextComponent());
+loadDocument(new Index(undefined, {}));
+ViewStackProcessor.StopGetAccessRecording();
diff --git a/ensping/ensp13/entry/.preview/cache/.default/filesInfo.txt b/ensping/ensp13/entry/.preview/cache/.default/filesInfo.txt
new file mode 100644
index 0000000..4088ca9
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/filesInfo.txt
@@ -0,0 +1,11 @@
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/entryability/EntryAbility.ts;com.example.ensp2/entry/ets/entryability/EntryAbility;esm;entry/src/main/ets/entryability/EntryAbility.ets;entry
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/pages/Index.ts;com.example.ensp2/entry/ets/pages/Index;esm;entry/src/main/ets/pages/Index.ets;entry
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/components/TopMenuBar.ts;com.example.ensp2/entry/ets/components/TopMenuBar;esm;entry/src/main/ets/components/TopMenuBar.ets;entry
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/components/MiddleContent.ts;com.example.ensp2/entry/ets/components/MiddleContent;esm;entry/src/main/ets/components/MiddleContent.ets;entry
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/components/ButtomMenuBar.ts;com.example.ensp2/entry/ets/components/ButtomMenuBar;esm;entry/src/main/ets/components/ButtomMenuBar.ets;entry
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/classes/TopMenu.ts;com.example.ensp2/entry/ets/classes/TopMenu;esm;entry/src/main/ets/classes/TopMenu.ets;entry
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/components/Dialog.ts;com.example.ensp2/entry/ets/components/Dialog;esm;entry/src/main/ets/components/Dialog.ets;entry
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/classes/OtherSimObjects.ts;com.example.ensp2/entry/ets/classes/OtherSimObjects;esm;entry/src/main/ets/classes/OtherSimObjects.ets;entry
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/components/Table.ts;com.example.ensp2/entry/ets/components/Table;esm;entry/src/main/ets/components/Table.ets;entry
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/classes/SimBase.ts;com.example.ensp2/entry/ets/classes/SimBase;esm;entry/src/main/ets/classes/SimBase.ets;entry
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/functions/functions.ts;com.example.ensp2/entry/ets/functions/functions;esm;entry/src/main/ets/functions/functions.ets;entry
diff --git a/ensping/ensp13/entry/.preview/cache/.default/modules.cache b/ensping/ensp13/entry/.preview/cache/.default/modules.cache
new file mode 100644
index 0000000..711a802
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/modules.cache
@@ -0,0 +1,12 @@
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/entryability/EntryAbility.ts;D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/entryability/EntryAbility.protoBin
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/pages/Index.ts;D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/pages/Index.protoBin
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/components/TopMenuBar.ts;D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/components/TopMenuBar.protoBin
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/components/MiddleContent.ts;D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/components/MiddleContent.protoBin
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/components/ButtomMenuBar.ts;D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/components/ButtomMenuBar.protoBin
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/classes/TopMenu.ts;D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/classes/TopMenu.protoBin
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/components/Dialog.ts;D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/components/Dialog.protoBin
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/classes/OtherSimObjects.ts;D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/classes/OtherSimObjects.protoBin
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/components/Table.ts;D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/components/Table.protoBin
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/classes/SimBase.ts;D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/classes/SimBase.protoBin
+D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/functions/functions.ts;D:/computer_programing/Deveco_Studio/openharmony_program/ENSP_thirteen/entry/.preview/cache/.default/entry/src/main/ets/functions/functions.protoBin
+D:\computer_programing\Deveco_Studio\openharmony_program\ENSP_thirteen\entry\.preview\cache\.default\npmEntries.txt;D:\computer_programing\Deveco_Studio\openharmony_program\ENSP_thirteen\entry\.preview\cache\.default\npmEntries.protoBin
diff --git a/ensping/ensp13/entry/.preview/cache/.default/npmEntries.protoBin b/ensping/ensp13/entry/.preview/cache/.default/npmEntries.protoBin
new file mode 100644
index 0000000..c8be1d8
Binary files /dev/null and b/ensping/ensp13/entry/.preview/cache/.default/npmEntries.protoBin differ
diff --git a/ensping/ensp13/entry/.preview/cache/.default/npmEntries.txt b/ensping/ensp13/entry/.preview/cache/.default/npmEntries.txt
new file mode 100644
index 0000000..e69de29
diff --git a/ensping/ensp13/entry/.preview/cache/.default/preview.ets b/ensping/ensp13/entry/.preview/cache/.default/preview.ets
new file mode 100644
index 0000000..e69de29
diff --git a/ensping/ensp13/entry/.preview/cache/.default/sourceMaps.json b/ensping/ensp13/entry/.preview/cache/.default/sourceMaps.json
new file mode 100644
index 0000000..493d8ec
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/cache/.default/sourceMaps.json
@@ -0,0 +1,112 @@
+{
+ "entry/src/main/ets/pages/Index.ets": {
+ "version": 3,
+ "file": "Index.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/pages/Index.ets"
+ ],
+ "names": [],
+ "mappings": ";IAOW,SAAS,GAAE,GAAG,EAAE;IAChB,UAAU,GAAE,GAAG,EAAE;IACjB,QAAQ,GAAE,GAAG,EAAE;IACf,QAAQ,GAAE,OAAO;IACjB,UAAU,GAAE,MAAM;IAClB,UAAU,GAAE,MAAM,GAAG,IAAI;IACzB,SAAS,GAAE,OAAO;IAElB,WAAW,GAAE,OAAO;IACpB,UAAU,GAAE,OAAO;IACnB,eAAe,GAAE,OAAO;IACxB,WAAW,GAAE,OAAO;IAEpB,YAAY,GAAE;KAAE;;OApBpB,EAAE,UAAU,EAAE;OACd,EAAE,aAAa,EAAE;OACjB,EAAE,aAAa,EAAE;MAIjB,KAAK;IAFZ;;;;;wDAG8B,EAAE,CAAC,SAAS;;;yDACX,EAAE,CAAC,UAAU;;;uDACf,EAAE,CAAC,YAAY;;;uDACb,KAAK,CAAC,SAAS;;;yDACd,CAAC,CAAC,CAAC,SAAS;;;yDACL,IAAI,CAAC,SAAS;;;wDACrB,KAAK,CAAC,YAAY;;;0DAEhB,IAAI,CAAC,SAAS;;;yDACf,IAAI,CAAC,SAAS;;;8DACT,IAAI,CAAC,aAAa;;;0DACtB,IAAI,CAAC,eAAe;;;2DAExB,EAAE,CAAC,aAAa;;;;KAlBa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKzD,8CAAoB,GAAG,EAAE,EAAK,CAAC,SAAS;QAA/B,SAAS;;;QAAT,SAAS,WAAE,GAAG,EAAE;;;IACzB,+CAAqB,GAAG,EAAE,EAAK,CAAC,UAAU;QAAjC,UAAU;;;QAAV,UAAU,WAAE,GAAG,EAAE;;;IAC1B,6CAAmB,GAAG,EAAE,EAAK,CAAC,YAAY;QAAjC,QAAQ;;;QAAR,QAAQ,WAAE,GAAG,EAAE;;;IACxB,6CAAmB,OAAO,EAAQ,CAAC,SAAS;QAAnC,QAAQ;;;QAAR,QAAQ,WAAE,OAAO;;;IAC1B,+CAAqB,MAAM,EAAK,CAAC,SAAS;QAAjC,UAAU;;;QAAV,UAAU,WAAE,MAAM;;;IAC3B,+CAAqB,MAAM,GAAG,IAAI,EAAO,CAAC,SAAS;QAA1C,UAAU;;;QAAV,UAAU,WAAE,MAAM,GAAG,IAAI;;;IAClC,8CAAoB,OAAO,EAAQ,CAAC,YAAY;QAAvC,SAAS;;;QAAT,SAAS,WAAE,OAAO;;;IAE3B,gDAAsB,OAAO,EAAO,CAAC,SAAS;QAArC,WAAW;;;QAAX,WAAW,WAAE,OAAO;;;IAC7B,+CAAqB,OAAO,EAAO,CAAC,SAAS;QAApC,UAAU;;;QAAV,UAAU,WAAE,OAAO;;;IAC5B,oDAA0B,OAAO,EAAO,CAAC,aAAa;QAA7C,eAAe;;;QAAf,eAAe,WAAE,OAAO;;;IACjC,gDAAsB,OAAO,EAAO,CAAC,eAAe;QAA3C,WAAW;;;QAAX,WAAW,WAAE,OAAO;;;IAE7B,iDAAuB;KAAE,EAAK,CAAC,aAAa;QAAnC,YAAY;;;QAAZ,YAAY,WAAE;KAAE;;;IAEzB;;;YACE,MAAM;;YAAN,MAAM,CAUL,KAAK,CAAC,MAAM;YAVb,MAAM,CAWL,MAAM,CAAC,MAAM;;gBAXd,MAAM;;;;;;;;;;;;oBACJ,QAAQ;oBACR,UAAU;;;;;;;;;;;;;;;;oBAEV,QAAQ;oBACR,aAAa;;;;;;;;;;;;;;;;oBAEb,QAAQ;oBACR,aAAa;;;;;;;;QARf,MAAM;KAYP"
+ },
+ "entry/src/main/ets/entryability/EntryAbility.ets": {
+ "version": 3,
+ "file": "EntryAbility.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/entryability/EntryAbility.ets"
+ ],
+ "names": [],
+ "mappings": "YAAO,eAAe;OACf,KAAK;OACL,SAAS;YACT,IAAI;YACJ,MAAM;AAGb,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,SAAS;IACjD,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,WAAW,GAAG,IAAI;QAClE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAChE,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,SAAS,IAAI,IAAI;QACf,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;IACnE,CAAC;IAED,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,GAAG,IAAI;QACxD,yDAAyD;QACzD,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,6BAA6B,CAAC,CAAC;QAG3E,WAAW,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACnD,IAAI,GAAG,CAAC,IAAI,EAAE;gBACZ,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,+CAA+C,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3G,OAAO;aACR;YACD,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,oDAAoD,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAClH,CAAC,CAAC,CAAC;QAEH,gEAAgE;IAClE,CAAC;IAED,oBAAoB,IAAI,IAAI;QAC1B,yDAAyD;QACzD,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,8BAA8B,CAAC,CAAC;IAC9E,CAAC;IAED,YAAY,IAAI,IAAI;QAClB,oCAAoC;QACpC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC;IACtE,CAAC;IAED,YAAY,IAAI,IAAI;QAClB,iCAAiC;QACjC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC;IACtE,CAAC;CACF"
+ },
+ "entry/src/main/ets/components/TopMenuBar.ets": {
+ "version": 3,
+ "file": "TopMenuBar.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/components/TopMenuBar.ets"
+ ],
+ "names": [],
+ "mappings": "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"
+ },
+ "entry/src/main/ets/components/ButtomMenuBar.ets": {
+ "version": 3,
+ "file": "ButtomMenuBar.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/components/ButtomMenuBar.ets"
+ ],
+ "names": [],
+ "mappings": "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"
+ },
+ "entry/src/main/ets/classes/TopMenu.ets": {
+ "version": 3,
+ "file": "TopMenu.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/classes/TopMenu.ets"
+ ],
+ "names": [],
+ "mappings": "AAAA,MAAM,OAAO,OAAO;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,WAAW,EAAE,GAAG,SAAS,CAAA;IAEtC,YAAY,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE;QACpD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;CACF,CAAC,QAAQ;AAEV,MAAM,OAAO,WAAW;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,QAAQ,GAAG,SAAS,CAAA;IAEzB,YAAY,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;CACF,CAAC,UAAU"
+ },
+ "entry/src/main/ets/classes/SimBase.ets": {
+ "version": 3,
+ "file": "SimBase.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/classes/SimBase.ets"
+ ],
+ "names": [],
+ "mappings": "cAAS,SAAS,QAAQ,mBAAmB;AAE7C,YAAY;AACZ,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAA,CAAC,SAAS;IACtB,GAAG,EAAE,MAAM,CAAA,CAAC,8BAA8B;CAC3C;AAED,CAAC,QAAQ;AACT,MAAM,OAAO,OAAO;IAClB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAA,CAAC,WAAW;IAC3B,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS;IACjC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,8BAA8B;IACtD,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO;IAC1B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,QAAQ;IAC5B,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM;IACxC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM;IACxC,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO;IACzB,KAAK,EAAE,MAAM,CAAC,CAAC,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM;IACpB,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM;IACpB,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC,SAAS;IAC/B,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC,aAAa;IACrC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;IAClC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ;IACjC,OAAO,EAAE,OAAO,CAAA,CAAC,QAAQ;IAEzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;QAC5C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAED,cAAc,IAAI,MAAM;QACtB,IAAI,MAAM,EAAE,MAAM,GAAG,EAAE,CAAA;QACvB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE;YACrB,MAAM,GAAG,KAAK,CAAA;SACf;aAAM,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE;YAC5B,MAAM,GAAG,KAAK,CAAA;SACf;aAAM,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE;YAC5B,MAAM,GAAG,KAAK,CAAA;SACf;aAAM;YACL,MAAM,GAAG,KAAK,CAAA;SACf;QACD,OAAO,GAAG,MAAM,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,CAAA;IACrC,CAAC,CAAC,WAAW;IAEb,OAAO,CAAC,MAAM,EAAE,SAAS;IACzB,CAAC,CAAC,QAAQ;IAEV,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE;IACtG,CAAC,CAAC,QAAQ;IAEV,QAAQ,CAAC,MAAM,EAAE,SAAS;IAC1B,CAAC,CAAC,QAAQ;IAEV,aAAa;QACX,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAA;IAC9B,CAAC;CACF"
+ },
+ "entry/src/main/ets/classes/OtherSimObjects.ets": {
+ "version": 3,
+ "file": "OtherSimObjects.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/classes/OtherSimObjects.ets"
+ ],
+ "names": [],
+ "mappings": "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"
+ },
+ "entry/src/main/ets/components/MiddleContent.ets": {
+ "version": 3,
+ "file": "MiddleContent.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/components/MiddleContent.ets"
+ ],
+ "names": [],
+ "mappings": "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"
+ },
+ "entry/src/main/ets/components/Dialog.ets": {
+ "version": 3,
+ "file": "Dialog.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/components/Dialog.ets"
+ ],
+ "names": [],
+ "mappings": "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"
+ },
+ "entry/src/main/ets/components/Table.ets": {
+ "version": 3,
+ "file": "Table.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/components/Table.ets"
+ ],
+ "names": [],
+ "mappings": ";IA2Bc,MAAM,GAAE,OAAO;;;IAvBf,MAAM,GAAE,OAAO;;cAJpB,OAAO,EAAE,KAAK,QAAQ,oBAAoB;AAGnD,MAAM,OAAQ,YAAY;IAD1B;;;;;;;KAFmD;;;;;;;;;;;;;;;IAIjD,+CAAoB,OAAO,EAAA;QAAf,MAAM;;;IAElB;;;YACE,MAAM;;YAAN,MAAM,CAaL,KAAK,CAAC,MAAM;YAbb,MAAM,CAcL,MAAM,CAAC,MAAM;;gBAdd,MAAM;;;;;;;YACJ,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE;;;;wBACxD,MAAM;;;4BAAN,MAAM;;;;;;wBACJ,IAAI,QAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE;;;4BAA7B,IAAI;;;;oBAAJ,IAAI;;;wBAEJ,IAAI,QAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;;;4BAA/B,IAAI;;;;oBAAJ,IAAI;oBAHN,MAAM;;aAKP;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE;;;;wBACnC,MAAM;;;4BAAN,MAAM;;;;;;wBACJ,IAAI,QAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;;;4BAA/B,IAAI;;;;oBAAJ,IAAI;oBADN,MAAM;;aAGP;;;;aAAA;;;;;;;QAXH,MAAM;KAeP;;;;;AAIH,MAAM,OAAQ,UAAU;IADxB;;;;;;;KAFC;;;;;;;;;;;;;;;IAIC,+CAAoB,OAAO,EAAA;QAAf,MAAM;;;IAElB;;;YACE,MAAM;;YAAN,MAAM,CAmBL,KAAK,CAAC,MAAM;YAnBb,MAAM,CAoBL,MAAM,CAAC,MAAM;;gBApBd,MAAM;;;;;;;YACJ,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE;;;;wBAC5B,OAAO;;;;;gCACL,GAAG;;;oCAAH,GAAG;;;;;;gCACD,IAAI,QAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG;;;oCAAtC,IAAI;;;;4BAAJ,IAAI;;;gCAEJ,IAAI,QAAC,IAAI,CAAC,GAAG;;;oCAAb,IAAI;;;;4BAAJ,IAAI;4BAHN,GAAG;;2DADG,IAAI,CAAC,MAAM,CAAC,WAAW;;4BAA/B,OAAO;;;;oBAAP,OAAO;;aAOR;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE;;;;wBACnC,OAAO;;;;;gCACL,GAAG;;;oCAAH,GAAG;;;;;;gCACD,IAAI,QAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG;;;oCAAtC,IAAI;;;;4BAAJ,IAAI;;;gCAEJ,IAAI,QAAC,IAAI,CAAC,GAAG;;;oCAAb,IAAI;;;;4BAAJ,IAAI;4BAHN,GAAG;;2DADG,IAAI,CAAC,MAAM,CAAC,WAAW;;4BAA/B,OAAO;;;;oBAAP,OAAO;;aAOR;;;;aAAA;;;;;;;QAjBH,MAAM;KAqBP"
+ },
+ "entry/src/main/ets/functions/functions.ets": {
+ "version": 3,
+ "file": "functions.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/functions/functions.ets"
+ ],
+ "names": [],
+ "mappings": "cAAS,OAAO,QAAQ,oBAAoB;AAE5C,SAAS,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IACpD,iBAAiB;IACjB,MAAM,iBAAiB,GAAG,yDAAyD,CAAC;IACpF,MAAM,oBAAoB,GAAG,8CAA8C,CAAC;IAE5E,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,kBAAkB,GAAG,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAEjE,IAAI,eAAe,EAAE;QACnB,cAAc;QACd,0BAA0B;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE;gBAC5B,OAAO,KAAK,CAAC;aACd;SACF;QACD,yBAAyB;QACzB,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,EAAE,EAAE;YACrC,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,kBAAkB,EAAE;QAC7B,cAAc;QACd,0BAA0B;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE;gBAC5B,OAAO,KAAK,CAAC;aACd;SACF;QACD,OAAO,IAAI,CAAC;KACb;SAAM;QACL,YAAY;QACZ,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE;IAC/C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;QAC5B,IAAG,IAAI,CAAC,OAAO,IAAI,CAAC,EAAC;YACnB,SAAQ;SACT;aAAK,IAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAC;YACnC,OAAO,KAAK,CAAA;SACb;KACF;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAC,oBAAoB"
+ }
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/.preview/config/buildConfig.json b/ensping/ensp13/entry/.preview/config/buildConfig.json
new file mode 100644
index 0000000..52ad3b4
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/config/buildConfig.json
@@ -0,0 +1 @@
+{"deviceType":"default,tablet","checkEntry":"true","localPropertiesPath":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\local.properties","Path":"D:\\computer_programing\\Deveco_Studio\\HuaWei\\nodejs\\","note":"false","aceProfilePath":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\entry\\.preview\\default\\intermediates\\res\\default\\resources\\base\\profile","isPreview":"true","hapMode":"false","buildMode":"debug","img2bin":"true","projectProfilePath":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\build-profile.json5","watchMode":"true","appResource":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\entry\\.preview\\default\\intermediates\\res\\default\\ResourceTable.txt","logLevel":"3","stageRouterConfig":{"contents":["{\"module\":{\"pages\":\"$profile:main_pages\",\"name\":\"entry\"}}","{\"src\":[\"pages/Index\"]}"],"paths":["D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\entry\\.preview\\default\\intermediates\\res\\default\\module.json","D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\entry\\.preview\\default\\intermediates\\res\\default\\resources\\base\\profile\\main_pages.json"]},"port":"29907","aceBuildJson":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\entry\\.preview\\default\\intermediates\\loader\\default\\loader.json","aceModuleRoot":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\entry\\src\\main\\ets","aceSoPath":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\entry\\.preview\\cache\\nativeDependencies.txt","cachePath":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\entry\\.preview\\cache\\.default","aceModuleBuild":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\entry\\.preview\\default\\intermediates\\assets\\default\\ets","aceSuperVisualPath":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\entry\\src\\main\\supervisual","aceModuleJsonPath":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\entry\\.preview\\default\\intermediates\\res\\default\\module.json"}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/.preview/default/generated/r/default/ResourceTable.h b/ensping/ensp13/entry/.preview/default/generated/r/default/ResourceTable.h
new file mode 100644
index 0000000..bd022bd
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/default/generated/r/default/ResourceTable.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2023 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef RESOURCE_TABLE_H
+#define RESOURCE_TABLE_H
+
+#include
+
+namespace OHOS {
+const int32_t STRING_ENTRYABILITY_DESC = 0x01000002;
+const int32_t STRING_ENTRYABILITY_LABEL = 0x01000003;
+const int32_t STRING_APP_NAME = 0x01000001;
+const int32_t STRING_MODULE_DESC = 0x01000004;
+const int32_t COLOR_START_WINDOW_BACKGROUND = 0x01000006;
+const int32_t MEDIA_APP_ICON = 0x01000000;
+const int32_t MEDIA_ICON = 0x0100000f;
+const int32_t MEDIA_JIAOHUANJI = 0x01000011;
+const int32_t MEDIA_JIAOHUANJI_TM = 0x0100000e;
+const int32_t MEDIA_JIXIANQI = 0x0100000b;
+const int32_t MEDIA_JIXIANQI_TM = 0x0100000a;
+const int32_t MEDIA_LUYOUQI = 0x01000005;
+const int32_t MEDIA_LUYOUQI_TM = 0x0100000c;
+const int32_t MEDIA_PACKET = 0x01000007;
+const int32_t MEDIA_STARTICON = 0x01000009;
+const int32_t MEDIA_ZHUJI = 0x01000008;
+const int32_t MEDIA_ZHUJI_TM = 0x0100000d;
+const int32_t PROFILE_MAIN_PAGES = 0x01000010;
+}
+#endif
\ No newline at end of file
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/assets/default/ets/modules.abc b/ensping/ensp13/entry/.preview/default/intermediates/assets/default/ets/modules.abc
new file mode 100644
index 0000000..9ae01e4
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/assets/default/ets/modules.abc differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/assets/default/ets/sourceMaps.map b/ensping/ensp13/entry/.preview/default/intermediates/assets/default/ets/sourceMaps.map
new file mode 100644
index 0000000..493d8ec
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/default/intermediates/assets/default/ets/sourceMaps.map
@@ -0,0 +1,112 @@
+{
+ "entry/src/main/ets/pages/Index.ets": {
+ "version": 3,
+ "file": "Index.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/pages/Index.ets"
+ ],
+ "names": [],
+ "mappings": ";IAOW,SAAS,GAAE,GAAG,EAAE;IAChB,UAAU,GAAE,GAAG,EAAE;IACjB,QAAQ,GAAE,GAAG,EAAE;IACf,QAAQ,GAAE,OAAO;IACjB,UAAU,GAAE,MAAM;IAClB,UAAU,GAAE,MAAM,GAAG,IAAI;IACzB,SAAS,GAAE,OAAO;IAElB,WAAW,GAAE,OAAO;IACpB,UAAU,GAAE,OAAO;IACnB,eAAe,GAAE,OAAO;IACxB,WAAW,GAAE,OAAO;IAEpB,YAAY,GAAE;KAAE;;OApBpB,EAAE,UAAU,EAAE;OACd,EAAE,aAAa,EAAE;OACjB,EAAE,aAAa,EAAE;MAIjB,KAAK;IAFZ;;;;;wDAG8B,EAAE,CAAC,SAAS;;;yDACX,EAAE,CAAC,UAAU;;;uDACf,EAAE,CAAC,YAAY;;;uDACb,KAAK,CAAC,SAAS;;;yDACd,CAAC,CAAC,CAAC,SAAS;;;yDACL,IAAI,CAAC,SAAS;;;wDACrB,KAAK,CAAC,YAAY;;;0DAEhB,IAAI,CAAC,SAAS;;;yDACf,IAAI,CAAC,SAAS;;;8DACT,IAAI,CAAC,aAAa;;;0DACtB,IAAI,CAAC,eAAe;;;2DAExB,EAAE,CAAC,aAAa;;;;KAlBa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKzD,8CAAoB,GAAG,EAAE,EAAK,CAAC,SAAS;QAA/B,SAAS;;;QAAT,SAAS,WAAE,GAAG,EAAE;;;IACzB,+CAAqB,GAAG,EAAE,EAAK,CAAC,UAAU;QAAjC,UAAU;;;QAAV,UAAU,WAAE,GAAG,EAAE;;;IAC1B,6CAAmB,GAAG,EAAE,EAAK,CAAC,YAAY;QAAjC,QAAQ;;;QAAR,QAAQ,WAAE,GAAG,EAAE;;;IACxB,6CAAmB,OAAO,EAAQ,CAAC,SAAS;QAAnC,QAAQ;;;QAAR,QAAQ,WAAE,OAAO;;;IAC1B,+CAAqB,MAAM,EAAK,CAAC,SAAS;QAAjC,UAAU;;;QAAV,UAAU,WAAE,MAAM;;;IAC3B,+CAAqB,MAAM,GAAG,IAAI,EAAO,CAAC,SAAS;QAA1C,UAAU;;;QAAV,UAAU,WAAE,MAAM,GAAG,IAAI;;;IAClC,8CAAoB,OAAO,EAAQ,CAAC,YAAY;QAAvC,SAAS;;;QAAT,SAAS,WAAE,OAAO;;;IAE3B,gDAAsB,OAAO,EAAO,CAAC,SAAS;QAArC,WAAW;;;QAAX,WAAW,WAAE,OAAO;;;IAC7B,+CAAqB,OAAO,EAAO,CAAC,SAAS;QAApC,UAAU;;;QAAV,UAAU,WAAE,OAAO;;;IAC5B,oDAA0B,OAAO,EAAO,CAAC,aAAa;QAA7C,eAAe;;;QAAf,eAAe,WAAE,OAAO;;;IACjC,gDAAsB,OAAO,EAAO,CAAC,eAAe;QAA3C,WAAW;;;QAAX,WAAW,WAAE,OAAO;;;IAE7B,iDAAuB;KAAE,EAAK,CAAC,aAAa;QAAnC,YAAY;;;QAAZ,YAAY,WAAE;KAAE;;;IAEzB;;;YACE,MAAM;;YAAN,MAAM,CAUL,KAAK,CAAC,MAAM;YAVb,MAAM,CAWL,MAAM,CAAC,MAAM;;gBAXd,MAAM;;;;;;;;;;;;oBACJ,QAAQ;oBACR,UAAU;;;;;;;;;;;;;;;;oBAEV,QAAQ;oBACR,aAAa;;;;;;;;;;;;;;;;oBAEb,QAAQ;oBACR,aAAa;;;;;;;;QARf,MAAM;KAYP"
+ },
+ "entry/src/main/ets/entryability/EntryAbility.ets": {
+ "version": 3,
+ "file": "EntryAbility.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/entryability/EntryAbility.ets"
+ ],
+ "names": [],
+ "mappings": "YAAO,eAAe;OACf,KAAK;OACL,SAAS;YACT,IAAI;YACJ,MAAM;AAGb,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,SAAS;IACjD,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,WAAW,GAAG,IAAI;QAClE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAChE,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,SAAS,IAAI,IAAI;QACf,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;IACnE,CAAC;IAED,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,GAAG,IAAI;QACxD,yDAAyD;QACzD,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,6BAA6B,CAAC,CAAC;QAG3E,WAAW,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACnD,IAAI,GAAG,CAAC,IAAI,EAAE;gBACZ,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,+CAA+C,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3G,OAAO;aACR;YACD,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,oDAAoD,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAClH,CAAC,CAAC,CAAC;QAEH,gEAAgE;IAClE,CAAC;IAED,oBAAoB,IAAI,IAAI;QAC1B,yDAAyD;QACzD,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,8BAA8B,CAAC,CAAC;IAC9E,CAAC;IAED,YAAY,IAAI,IAAI;QAClB,oCAAoC;QACpC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC;IACtE,CAAC;IAED,YAAY,IAAI,IAAI;QAClB,iCAAiC;QACjC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC;IACtE,CAAC;CACF"
+ },
+ "entry/src/main/ets/components/TopMenuBar.ets": {
+ "version": 3,
+ "file": "TopMenuBar.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/components/TopMenuBar.ets"
+ ],
+ "names": [],
+ "mappings": "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"
+ },
+ "entry/src/main/ets/components/ButtomMenuBar.ets": {
+ "version": 3,
+ "file": "ButtomMenuBar.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/components/ButtomMenuBar.ets"
+ ],
+ "names": [],
+ "mappings": "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"
+ },
+ "entry/src/main/ets/classes/TopMenu.ets": {
+ "version": 3,
+ "file": "TopMenu.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/classes/TopMenu.ets"
+ ],
+ "names": [],
+ "mappings": "AAAA,MAAM,OAAO,OAAO;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,WAAW,EAAE,GAAG,SAAS,CAAA;IAEtC,YAAY,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE;QACpD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;CACF,CAAC,QAAQ;AAEV,MAAM,OAAO,WAAW;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,QAAQ,GAAG,SAAS,CAAA;IAEzB,YAAY,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;CACF,CAAC,UAAU"
+ },
+ "entry/src/main/ets/classes/SimBase.ets": {
+ "version": 3,
+ "file": "SimBase.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/classes/SimBase.ets"
+ ],
+ "names": [],
+ "mappings": "cAAS,SAAS,QAAQ,mBAAmB;AAE7C,YAAY;AACZ,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAA,CAAC,SAAS;IACtB,GAAG,EAAE,MAAM,CAAA,CAAC,8BAA8B;CAC3C;AAED,CAAC,QAAQ;AACT,MAAM,OAAO,OAAO;IAClB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAA,CAAC,WAAW;IAC3B,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS;IACjC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,8BAA8B;IACtD,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO;IAC1B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,QAAQ;IAC5B,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM;IACxC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM;IACxC,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO;IACzB,KAAK,EAAE,MAAM,CAAC,CAAC,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM;IACpB,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM;IACpB,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC,SAAS;IAC/B,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC,aAAa;IACrC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW;IAClC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ;IACjC,OAAO,EAAE,OAAO,CAAA,CAAC,QAAQ;IAEzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;QAC5C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAED,cAAc,IAAI,MAAM;QACtB,IAAI,MAAM,EAAE,MAAM,GAAG,EAAE,CAAA;QACvB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE;YACrB,MAAM,GAAG,KAAK,CAAA;SACf;aAAM,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE;YAC5B,MAAM,GAAG,KAAK,CAAA;SACf;aAAM,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE;YAC5B,MAAM,GAAG,KAAK,CAAA;SACf;aAAM;YACL,MAAM,GAAG,KAAK,CAAA;SACf;QACD,OAAO,GAAG,MAAM,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,CAAA;IACrC,CAAC,CAAC,WAAW;IAEb,OAAO,CAAC,MAAM,EAAE,SAAS;IACzB,CAAC,CAAC,QAAQ;IAEV,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE;IACtG,CAAC,CAAC,QAAQ;IAEV,QAAQ,CAAC,MAAM,EAAE,SAAS;IAC1B,CAAC,CAAC,QAAQ;IAEV,aAAa;QACX,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAA;IAC9B,CAAC;CACF"
+ },
+ "entry/src/main/ets/classes/OtherSimObjects.ets": {
+ "version": 3,
+ "file": "OtherSimObjects.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/classes/OtherSimObjects.ets"
+ ],
+ "names": [],
+ "mappings": "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"
+ },
+ "entry/src/main/ets/components/MiddleContent.ets": {
+ "version": 3,
+ "file": "MiddleContent.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/components/MiddleContent.ets"
+ ],
+ "names": [],
+ "mappings": "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"
+ },
+ "entry/src/main/ets/components/Dialog.ets": {
+ "version": 3,
+ "file": "Dialog.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/components/Dialog.ets"
+ ],
+ "names": [],
+ "mappings": "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"
+ },
+ "entry/src/main/ets/components/Table.ets": {
+ "version": 3,
+ "file": "Table.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/components/Table.ets"
+ ],
+ "names": [],
+ "mappings": ";IA2Bc,MAAM,GAAE,OAAO;;;IAvBf,MAAM,GAAE,OAAO;;cAJpB,OAAO,EAAE,KAAK,QAAQ,oBAAoB;AAGnD,MAAM,OAAQ,YAAY;IAD1B;;;;;;;KAFmD;;;;;;;;;;;;;;;IAIjD,+CAAoB,OAAO,EAAA;QAAf,MAAM;;;IAElB;;;YACE,MAAM;;YAAN,MAAM,CAaL,KAAK,CAAC,MAAM;YAbb,MAAM,CAcL,MAAM,CAAC,MAAM;;gBAdd,MAAM;;;;;;;YACJ,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE;;;;wBACxD,MAAM;;;4BAAN,MAAM;;;;;;wBACJ,IAAI,QAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE;;;4BAA7B,IAAI;;;;oBAAJ,IAAI;;;wBAEJ,IAAI,QAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;;;4BAA/B,IAAI;;;;oBAAJ,IAAI;oBAHN,MAAM;;aAKP;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE;;;;wBACnC,MAAM;;;4BAAN,MAAM;;;;;;wBACJ,IAAI,QAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;;;4BAA/B,IAAI;;;;oBAAJ,IAAI;oBADN,MAAM;;aAGP;;;;aAAA;;;;;;;QAXH,MAAM;KAeP;;;;;AAIH,MAAM,OAAQ,UAAU;IADxB;;;;;;;KAFC;;;;;;;;;;;;;;;IAIC,+CAAoB,OAAO,EAAA;QAAf,MAAM;;;IAElB;;;YACE,MAAM;;YAAN,MAAM,CAmBL,KAAK,CAAC,MAAM;YAnBb,MAAM,CAoBL,MAAM,CAAC,MAAM;;gBApBd,MAAM;;;;;;;YACJ,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE;;;;wBAC5B,OAAO;;;;;gCACL,GAAG;;;oCAAH,GAAG;;;;;;gCACD,IAAI,QAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG;;;oCAAtC,IAAI;;;;4BAAJ,IAAI;;;gCAEJ,IAAI,QAAC,IAAI,CAAC,GAAG;;;oCAAb,IAAI;;;;4BAAJ,IAAI;4BAHN,GAAG;;2DADG,IAAI,CAAC,MAAM,CAAC,WAAW;;4BAA/B,OAAO;;;;oBAAP,OAAO;;aAOR;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE;;;;wBACnC,OAAO;;;;;gCACL,GAAG;;;oCAAH,GAAG;;;;;;gCACD,IAAI,QAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG;;;oCAAtC,IAAI;;;;4BAAJ,IAAI;;;gCAEJ,IAAI,QAAC,IAAI,CAAC,GAAG;;;oCAAb,IAAI;;;;4BAAJ,IAAI;4BAHN,GAAG;;2DADG,IAAI,CAAC,MAAM,CAAC,WAAW;;4BAA/B,OAAO;;;;oBAAP,OAAO;;aAOR;;;;aAAA;;;;;;;QAjBH,MAAM;KAqBP"
+ },
+ "entry/src/main/ets/functions/functions.ets": {
+ "version": 3,
+ "file": "functions.ets",
+ "sourceRoot": "",
+ "sources": [
+ "entry/src/main/ets/functions/functions.ets"
+ ],
+ "names": [],
+ "mappings": "cAAS,OAAO,QAAQ,oBAAoB;AAE5C,SAAS,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IACpD,iBAAiB;IACjB,MAAM,iBAAiB,GAAG,yDAAyD,CAAC;IACpF,MAAM,oBAAoB,GAAG,8CAA8C,CAAC;IAE5E,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,kBAAkB,GAAG,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAEjE,IAAI,eAAe,EAAE;QACnB,cAAc;QACd,0BAA0B;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE;gBAC5B,OAAO,KAAK,CAAC;aACd;SACF;QACD,yBAAyB;QACzB,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,EAAE,EAAE;YACrC,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,kBAAkB,EAAE;QAC7B,cAAc;QACd,0BAA0B;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE;gBAC5B,OAAO,KAAK,CAAC;aACd;SACF;QACD,OAAO,IAAI,CAAC;KACb;SAAM;QACL,YAAY;QACZ,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE;IAC/C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;QAC5B,IAAG,IAAI,CAAC,OAAO,IAAI,CAAC,EAAC;YACnB,SAAQ;SACT;aAAK,IAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAC;YACnC,OAAO,KAAK,CAAA;SACb;KACF;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAC,oBAAoB"
+ }
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/loader/default/loader.json b/ensping/ensp13/entry/.preview/default/intermediates/loader/default/loader.json
new file mode 100644
index 0000000..5c3c15c
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/default/intermediates/loader/default/loader.json
@@ -0,0 +1 @@
+{"modulePathMap":{"entry":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\entry"},"compileMode":"esmodule","projectRootPath":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen","nodeModulesPath":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\entry\\.preview\\default\\intermediates\\loader_out\\default\\node_modules","moduleName":"entry","harNameOhmMap":{},"packageManagerType":"ohpm","anBuildOutPut":"D:\\computer_programing\\Deveco_Studio\\openharmony_program\\ENSP_thirteen\\entry\\.preview\\default\\intermediates\\loader_out\\default\\an\\arm64-v8a","anBuildMode":"type"}
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/merge_profile/default/module.json b/ensping/ensp13/entry/.preview/default/intermediates/merge_profile/default/module.json
new file mode 100644
index 0000000..c772bfc
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/default/intermediates/merge_profile/default/module.json
@@ -0,0 +1,52 @@
+{
+ "app": {
+ "bundleName": "com.example.ensp2",
+ "vendor": "example",
+ "versionCode": 1000000,
+ "versionName": "1.0.0",
+ "icon": "$media:app_icon",
+ "label": "$string:app_name",
+ "apiReleaseType": "Release",
+ "compileSdkVersion": "4.0.10.13",
+ "targetAPIVersion": 10,
+ "minAPIVersion": 9,
+ "compileSdkType": "OpenHarmony",
+ "debug": true
+ },
+ "module": {
+ "name": "entry",
+ "type": "entry",
+ "description": "$string:module_desc",
+ "mainElement": "EntryAbility",
+ "deviceTypes": [
+ "default",
+ "tablet"
+ ],
+ "deliveryWithInstall": true,
+ "installationFree": false,
+ "pages": "$profile:main_pages",
+ "abilities": [
+ {
+ "name": "EntryAbility",
+ "srcEntry": "./ets/entryability/EntryAbility.ets",
+ "description": "$string:EntryAbility_desc",
+ "icon": "$media:icon",
+ "label": "$string:EntryAbility_label",
+ "startWindowIcon": "$media:startIcon",
+ "startWindowBackground": "$color:start_window_background",
+ "exported": true,
+ "orientation": "auto_rotation",
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ]
+ }
+ ]
+ }
+}
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/process_profile/default/module.json b/ensping/ensp13/entry/.preview/default/intermediates/process_profile/default/module.json
new file mode 100644
index 0000000..907a415
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/default/intermediates/process_profile/default/module.json
@@ -0,0 +1,55 @@
+{
+ "app": {
+ "bundleName": "com.example.ensp2",
+ "vendor": "example",
+ "versionCode": 1000000,
+ "versionName": "1.0.0",
+ "icon": "$media:app_icon",
+ "label": "$string:app_name",
+ "apiReleaseType": "Release",
+ "compileSdkVersion": "4.0.10.13",
+ "targetAPIVersion": 10,
+ "minAPIVersion": 9,
+ "compileSdkType": "OpenHarmony",
+ "debug": true
+ },
+ "module": {
+ "name": "entry",
+ "type": "entry",
+ "description": "$string:module_desc",
+ "mainElement": "EntryAbility",
+ "deviceTypes": [
+ "default",
+ "tablet"
+ ],
+ "deliveryWithInstall": true,
+ "installationFree": false,
+ "pages": "$profile:main_pages",
+ "abilities": [
+ {
+ "name": "EntryAbility",
+ "srcEntry": "./ets/entryability/EntryAbility.ets",
+ "description": "$string:EntryAbility_desc",
+ "icon": "$media:icon",
+ "label": "$string:EntryAbility_label",
+ "startWindowIcon": "$media:startIcon",
+ "startWindowBackground": "$color:start_window_background",
+ "exported": true,
+ "orientation": "auto_rotation",
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ]
+ }
+ ],
+ "virtualMachine": "ark9.0.0.0",
+ "compileMode": "esmodule",
+ "dependencies": []
+ }
+}
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/ResourceTable.txt b/ensping/ensp13/entry/.preview/default/intermediates/res/default/ResourceTable.txt
new file mode 100644
index 0000000..8c459bb
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/default/intermediates/res/default/ResourceTable.txt
@@ -0,0 +1,18 @@
+string EntryAbility_desc 0x01000002
+string EntryAbility_label 0x01000003
+string app_name 0x01000001
+string module_desc 0x01000004
+color start_window_background 0x01000006
+media app_icon 0x01000000
+media icon 0x0100000f
+media jiaohuanji 0x01000011
+media jiaohuanji_tm 0x0100000e
+media jixianqi 0x0100000b
+media jixianqi_tm 0x0100000a
+media luyouqi 0x01000005
+media luyouqi_tm 0x0100000c
+media packet 0x01000007
+media startIcon 0x01000009
+media zhuji 0x01000008
+media zhuji_tm 0x0100000d
+profile main_pages 0x01000010
\ No newline at end of file
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/app_compiled/14708225930201321384 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/app_compiled/14708225930201321384
new file mode 100644
index 0000000..b434150
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/app_compiled/14708225930201321384 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/app_compiled/18216653305835117640 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/app_compiled/18216653305835117640
new file mode 100644
index 0000000..c18f841
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/app_compiled/18216653305835117640 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/ids_map/id_defined.json b/ensping/ensp13/entry/.preview/default/intermediates/res/default/ids_map/id_defined.json
new file mode 100644
index 0000000..d3a6a1e
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/default/intermediates/res/default/ids_map/id_defined.json
@@ -0,0 +1,95 @@
+{
+ "record" :
+ [
+ {
+ "id" : "0x01000000",
+ "name" : "app_icon",
+ "type" : "media"
+ },
+ {
+ "id" : "0x01000001",
+ "name" : "app_name",
+ "type" : "string"
+ },
+ {
+ "id" : "0x01000002",
+ "name" : "EntryAbility_desc",
+ "type" : "string"
+ },
+ {
+ "id" : "0x01000003",
+ "name" : "EntryAbility_label",
+ "type" : "string"
+ },
+ {
+ "id" : "0x01000004",
+ "name" : "module_desc",
+ "type" : "string"
+ },
+ {
+ "id" : "0x01000005",
+ "name" : "luyouqi",
+ "type" : "media"
+ },
+ {
+ "id" : "0x01000006",
+ "name" : "start_window_background",
+ "type" : "color"
+ },
+ {
+ "id" : "0x01000007",
+ "name" : "packet",
+ "type" : "media"
+ },
+ {
+ "id" : "0x01000008",
+ "name" : "zhuji",
+ "type" : "media"
+ },
+ {
+ "id" : "0x01000009",
+ "name" : "startIcon",
+ "type" : "media"
+ },
+ {
+ "id" : "0x0100000A",
+ "name" : "jixianqi_tm",
+ "type" : "media"
+ },
+ {
+ "id" : "0x0100000B",
+ "name" : "jixianqi",
+ "type" : "media"
+ },
+ {
+ "id" : "0x0100000C",
+ "name" : "luyouqi_tm",
+ "type" : "media"
+ },
+ {
+ "id" : "0x0100000D",
+ "name" : "zhuji_tm",
+ "type" : "media"
+ },
+ {
+ "id" : "0x0100000E",
+ "name" : "jiaohuanji_tm",
+ "type" : "media"
+ },
+ {
+ "id" : "0x0100000F",
+ "name" : "icon",
+ "type" : "media"
+ },
+ {
+ "id" : "0x01000010",
+ "name" : "main_pages",
+ "type" : "profile"
+ },
+ {
+ "id" : "0x01000011",
+ "name" : "jiaohuanji",
+ "type" : "media"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module.json b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module.json
new file mode 100644
index 0000000..9ccbcc4
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module.json
@@ -0,0 +1,70 @@
+{
+ "app" :
+ {
+ "apiReleaseType" : "Release",
+ "bundleName" : "com.example.ensp2",
+ "compileSdkType" : "OpenHarmony",
+ "compileSdkVersion" : "4.0.10.13",
+ "debug" : true,
+ "icon" : "$media:app_icon",
+ "iconId" : 16777216,
+ "label" : "$string:app_name",
+ "labelId" : 16777217,
+ "minAPIVersion" : 9,
+ "targetAPIVersion" : 10,
+ "vendor" : "example",
+ "versionCode" : 1000000,
+ "versionName" : "1.0.0"
+ },
+ "module" :
+ {
+ "abilities" :
+ [
+ {
+ "description" : "$string:EntryAbility_desc",
+ "descriptionId" : 16777218,
+ "exported" : true,
+ "icon" : "$media:icon",
+ "iconId" : 16777231,
+ "label" : "$string:EntryAbility_label",
+ "labelId" : 16777219,
+ "name" : "EntryAbility",
+ "orientation" : "auto_rotation",
+ "skills" :
+ [
+ {
+ "actions" :
+ [
+ "action.system.home"
+ ],
+ "entities" :
+ [
+ "entity.system.home"
+ ]
+ }
+ ],
+ "srcEntry" : "./ets/entryability/EntryAbility.ets",
+ "startWindowBackground" : "$color:start_window_background",
+ "startWindowBackgroundId" : 16777222,
+ "startWindowIcon" : "$media:startIcon",
+ "startWindowIconId" : 16777225
+ }
+ ],
+ "compileMode" : "esmodule",
+ "deliveryWithInstall" : true,
+ "dependencies" : [],
+ "description" : "$string:module_desc",
+ "descriptionId" : 16777220,
+ "deviceTypes" :
+ [
+ "default",
+ "tablet"
+ ],
+ "installationFree" : false,
+ "mainElement" : "EntryAbility",
+ "name" : "entry",
+ "pages" : "$profile:main_pages",
+ "type" : "entry",
+ "virtualMachine" : "ark9.0.0.0"
+ }
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/10058093550837655519 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/10058093550837655519
new file mode 100644
index 0000000..cc796c9
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/10058093550837655519 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/1064533535123646463 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/1064533535123646463
new file mode 100644
index 0000000..5587887
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/1064533535123646463 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/10682296761831456517 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/10682296761831456517
new file mode 100644
index 0000000..40b7339
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/10682296761831456517 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/10731582151851488901 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/10731582151851488901
new file mode 100644
index 0000000..5a67a85
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/10731582151851488901 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/12123514570212677131 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/12123514570212677131
new file mode 100644
index 0000000..796ff7f
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/12123514570212677131 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/13301478669344157992 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/13301478669344157992
new file mode 100644
index 0000000..59267cb
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/13301478669344157992 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/16274922081164925474 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/16274922081164925474
new file mode 100644
index 0000000..3c01481
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/16274922081164925474 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/16669003313698051336 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/16669003313698051336
new file mode 100644
index 0000000..0ae4897
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/16669003313698051336 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/17623435939783076387 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/17623435939783076387
new file mode 100644
index 0000000..cdfb880
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/17623435939783076387 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/2583796074116202515 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/2583796074116202515
new file mode 100644
index 0000000..3732798
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/2583796074116202515 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/4293901321661233858 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/4293901321661233858
new file mode 100644
index 0000000..0bbd05b
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/4293901321661233858 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/4315407931405757870 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/4315407931405757870
new file mode 100644
index 0000000..33b63cc
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/4315407931405757870 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/5585038379342001338 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/5585038379342001338
new file mode 100644
index 0000000..9efebaf
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/5585038379342001338 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/5684127005139439033 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/5684127005139439033
new file mode 100644
index 0000000..4b6a1ad
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/5684127005139439033 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/6203914011489341608 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/6203914011489341608
new file mode 100644
index 0000000..b5b4586
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/6203914011489341608 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/7723746858232146880 b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/7723746858232146880
new file mode 100644
index 0000000..f56e638
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/module_compiled/7723746858232146880 differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/resources.index b/ensping/ensp13/entry/.preview/default/intermediates/res/default/resources.index
new file mode 100644
index 0000000..3ad7535
Binary files /dev/null and b/ensping/ensp13/entry/.preview/default/intermediates/res/default/resources.index differ
diff --git a/ensping/ensp13/entry/.preview/default/intermediates/res/default/resources/base/profile/main_pages.json b/ensping/ensp13/entry/.preview/default/intermediates/res/default/resources/base/profile/main_pages.json
new file mode 100644
index 0000000..396cce1
--- /dev/null
+++ b/ensping/ensp13/entry/.preview/default/intermediates/res/default/resources/base/profile/main_pages.json
@@ -0,0 +1 @@
+{"src":["pages/Index"]}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/build-profile.json5 b/ensping/ensp13/entry/build-profile.json5
new file mode 100644
index 0000000..197e83c
--- /dev/null
+++ b/ensping/ensp13/entry/build-profile.json5
@@ -0,0 +1,31 @@
+{
+ "apiType": "stageMode",
+ "buildOption": {
+ "arkOptions": {
+ // "apPath": "./modules.ap" /* Profile used for profile-guided optimization (PGO), a compiler optimization technique to improve app runtime performance. */
+ }
+ },
+ "buildOptionSet": [
+ {
+ "name": "release",
+ "arkOptions": {
+ "obfuscation": {
+ "ruleOptions": {
+ "enable": true,
+ "files": [
+ "./obfuscation-rules.txt"
+ ]
+ }
+ }
+ }
+ },
+ ],
+ "targets": [
+ {
+ "name": "default"
+ },
+ {
+ "name": "ohosTest",
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/hvigorfile.ts b/ensping/ensp13/entry/hvigorfile.ts
new file mode 100644
index 0000000..c6edcd9
--- /dev/null
+++ b/ensping/ensp13/entry/hvigorfile.ts
@@ -0,0 +1,6 @@
+import { hapTasks } from '@ohos/hvigor-ohos-plugin';
+
+export default {
+ system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
+ plugins:[] /* Custom plugin to extend the functionality of Hvigor. */
+}
diff --git a/ensping/ensp13/entry/obfuscation-rules.txt b/ensping/ensp13/entry/obfuscation-rules.txt
new file mode 100644
index 0000000..985b2ae
--- /dev/null
+++ b/ensping/ensp13/entry/obfuscation-rules.txt
@@ -0,0 +1,18 @@
+# Define project specific obfuscation rules here.
+# You can include the obfuscation configuration files in the current module's build-profile.json5.
+#
+# For more details, see
+# https://gitee.com/openharmony/arkcompiler_ets_frontend/blob/master/arkguard/README.md
+
+# Obfuscation options:
+# -disable-obfuscation: disable all obfuscations
+# -enable-property-obfuscation: obfuscate the property names
+# -enable-toplevel-obfuscation: obfuscate the names in the global scope
+# -compact: remove unnecessary blank spaces and all line feeds
+# -remove-log: remove all console.* statements
+# -print-namecache: print the name cache that contains the mapping from the old names to new names
+# -apply-namecache: reuse the given cache file
+
+# Keep options:
+# -keep-property-name: specifies property names that you want to keep
+# -keep-global-name: specifies names that you want to keep in the global scope
\ No newline at end of file
diff --git a/ensping/ensp13/entry/oh-package.json5 b/ensping/ensp13/entry/oh-package.json5
new file mode 100644
index 0000000..225946c
--- /dev/null
+++ b/ensping/ensp13/entry/oh-package.json5
@@ -0,0 +1,10 @@
+{
+ "license": "",
+ "devDependencies": {},
+ "author": "",
+ "name": "entry",
+ "description": "Please describe the basic information.",
+ "main": "",
+ "version": "1.0.0",
+ "dependencies": {}
+}
diff --git a/ensping/ensp13/entry/src/main/ets/classes/OtherSimObjects.ets b/ensping/ensp13/entry/src/main/ets/classes/OtherSimObjects.ets
new file mode 100644
index 0000000..62c3dce
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/ets/classes/OtherSimObjects.ets
@@ -0,0 +1,331 @@
+import { SimBase } from "./SimBase"
+
+@Observed
+export class SimPacket {
+ sourceMac: string; // 源主机mac地址
+ sourceIp: string; // 源主机ip地址
+ destinationMac: string; // 目的主机mac地址
+ destinationIp: string; // 目的主机ip地址
+ message: string;
+ upJump: any; // 可以根据具体类型定义
+ id: symbol;
+ points: number[][]; // 路径点
+ allSimObj: SimBase[];
+ allSimPacket: SimPacket[];
+ level: number; // 数据包展示优先级
+
+ constructor(sourceIp: string, sourceMac: string, destinationIp: string, destinationMac: string, message: string, allSimObj: SimBase[], allSimPacket: SimPacket[]) {
+ this.sourceMac = sourceMac;
+ this.sourceIp = sourceIp;
+ this.destinationMac = destinationMac;
+ this.destinationIp = destinationIp;
+ this.message = message;
+ this.allSimObj = allSimObj;
+ this.allSimPacket = allSimPacket;
+ this.upJump = null; // 上一跳连接对象
+ this.points = [];
+ this.id = Symbol()
+ }
+
+}
+
+@Observed
+export class SimConnect {
+ nObjS: SimBase | null; // 线一端节点S
+ ifsS: number; // 线一端节点S的端口
+ nObjE: SimBase | null; // 线一端节点E
+ ifsE: number; // 线一端节点E的端口
+ width: number; // 线的粗细
+ configCorrect: boolean; // 配置正确与否
+
+ constructor(nobjs: SimBase | null, ifss: number, nobje: SimBase | null, ifse: number) {
+ this.nObjS = nobjs;
+ this.ifsS = ifss;
+ this.nObjE = nobje;
+ this.ifsE = ifse;
+ this.width = this.configCorrect === false ? 1 : 4;
+ if (nobjs != null && nobje != null) {
+ this.configCorrect = true
+ } else {
+ this.configCorrect = false
+ }
+ }
+
+ isConnectedTo(other: SimConnect): boolean {
+ return (
+ this.nObjS.objID === other.nObjS.objID &&
+ this.nObjE.objID === other.nObjE.objID
+ );
+ } // 判断两个连接对象是否已经连接
+
+ checkConfig() {
+ if (this.nObjS.Mac && this.nObjS.Ip && this.nObjE.Mac && this.nObjE.Ip) {
+ this.width = 4;
+ } else {
+ this.width = 1;
+ }
+ } // 检查两边节点配置是否正确
+
+ transfer(sourceNode: SimBase, packet: SimPacket): boolean {
+ if (sourceNode === this.nObjS) {
+ this.nObjE.receive(packet)
+ } else {
+ return false
+ }
+ } // 传输数据
+
+ updateObjConn() {
+ this.nObjS.interface[this.ifsS-1] = this.nObjE.objID
+ this.nObjE.interface[this.ifsE-1] = this.nObjS.objID
+ } // 更新虚拟对象的接口信息
+
+ deleteObjConn() {
+ this.nObjS.interface[this.ifsS-1] = null
+ this.nObjE.interface[this.ifsE-1] = null
+ } // 删除虚拟对象的接口信息
+
+ equals(other: any): boolean {
+ if (other instanceof SimConnect) {
+ const otherIds = other.nObjS.objID;
+ const otherIde = other.nObjE.objID;
+ return this.nObjS.objID == otherIds && this.nObjE.objID == otherIde;
+ }
+ return false;
+ } // 判断两个连接对象是否相同
+}
+
+@Observed
+export class SimHost extends SimBase {
+ RPacket: SimPacket; // 主机获取到的正确数据包
+ isOnline: boolean = false; // 主机联网状态
+
+ constructor(x: number, y: number, config: any = null) {
+ super(x, y, config)
+ this.objType = 1
+ this.objLabel = this.setDefaultName()
+ this.interface = [null] // 主机只有一个接口
+ this.connections = [null] // 一个接口对应一根连接线
+ this.img = $r("app.media.zhuji") // 主机图片
+ this.imgTm = $r("app.media.zhuji_tm") // 主机配置成功图片
+ this.Ip = ""
+ this.Mac = ""
+ }
+
+ setDefaultName() {
+ return `SHO${++SimBase.flag}`
+ } // 生成组件默认名称
+
+ onlineSwitch(){
+ this.isOnline = !this.isOnline
+ } // 切换联网状态
+
+ createPacket(ip: string, mac: string, message: string, allSimObj: SimBase[], allSimPacket: SimPacket[]) {
+ let objArr = allSimObj
+ let packet = new SimPacket(this.Ip, this.Mac, ip, mac, message, objArr, allSimPacket)
+ packet.allSimPacket.push(packet)
+ packet.level = 1
+ packet.points.push([this.objX, this.objY])
+ updatePacketLog(`${this.objLabel}创建数据包,信息为[${packet.message}]`)
+ this.send(packet)
+ } // 创建数据包
+
+ send(packet: SimPacket) {
+ const connObj: Symbol = this.objID
+ packet.upJump = connObj
+ updatePacketLog(`${this.objLabel}发送数据包,信息为[${packet.message}]`)
+ if(packet.allSimObj.find(item => item.objID === this.interface[0])!=undefined) {
+ packet.allSimObj.find(item => item.objID === this.interface[0]).receive(packet)
+ }
+ } // 发送数据包
+
+ receive(packet: SimPacket): boolean {
+ if (packet.destinationIp == this.Ip) {
+ packet.points.push([this.objX, this.objY])
+ updatePacketLog(`${this.objLabel}成功获取到信息[${packet.message}]!`)
+ } else {
+ return
+ }
+ } // 收到数据包
+}
+
+@Observed
+export class SimRouter extends SimBase {
+
+ constructor(x: number, y: number, config: any = null) {
+ super(x, y, config)
+ this.objType = 2
+ this.objLabel = this.setDefaultName()
+ this.interface = [null, null, null, null] // 路由器有四个接口
+ this.connections = [null, null, null, null] // 四个接口对应四根连接线
+ this.img = $r("app.media.luyouqi") // 路由器图片
+ this.imgTm = $r("app.media.luyouqi_tm") // 路由器配置成功图片
+ this.Ip = ""
+ this.Mac = ""
+ this.routerTable = []
+ }
+
+ setDefaultName() {
+ return `SRO${++SimBase.flag}`
+ } // 生成组件默认名称
+
+ checkDestinationIp(destinationIp: string, network: string): boolean {
+ // 解析目标 IP 和网络地址
+ const [networkAddress, subnetMask] = network.split('/');
+
+ // 分解目标 IP 地址和网络地址为数组
+ const destinationIpParts = destinationIp.split('.');
+ const networkAddressParts = networkAddress.split('.');
+
+ // 计算目标 IP 的网络地址(根据子网掩码)
+ const calculatedNetworkAddressParts = destinationIpParts.map((part, index) => {
+ return parseInt(part) & parseInt(networkAddressParts[index]);
+ });
+
+ // 构建目标 IP 的网络地址和网络地址的比较字符串
+ const calculatedNetworkAddress = calculatedNetworkAddressParts.join('.');
+ const inputNetworkAddress = networkAddressParts.join('.');
+
+ // 比较目标 IP 的网络地址和给定的网络地址是否相同,并检查是否在同一网络范围内
+ return calculatedNetworkAddress === inputNetworkAddress && subnetMask === '24';
+ } // 检查目标ip是否属于指定的网段范围内
+
+ transmit(packet: SimPacket){
+ this.interface.forEach((item: Symbol) => {
+ let obj = packet.allSimObj.find(obj => obj.objID === item)
+ if(item != null){
+ if(item != packet.upJump && this.routerTable.some(table => table.net === packet.destinationIp)){
+ const pac = new SimPacket(packet.sourceIp, packet.sourceMac, packet.destinationIp, packet.destinationMac, packet.message, packet.allSimObj, packet.allSimPacket)
+ pac.level = packet.level + 1
+ pac.upJump = this.objID
+ pac.points.push([this.objX, this.objY])
+ packet.allSimPacket.push(pac)
+ obj.receive(pac)
+ }
+ }
+ })
+ } // 路由器转发数据包
+
+ receive(packet: SimPacket){
+ updatePacketLog(`路由器-${this.objLabel}接受到数据,将进行转发!`)
+ packet.points.push([this.objX, this.objY])
+ try {
+ this.checkDestinationIp(packet.destinationIp, this.Ip)
+ }catch (e){
+ console.log('packet router err:' + JSON.stringify(e))
+ }
+ this.transmit(packet);
+ } // 收到数据包
+
+ getTableConfig(): string {
+ let str = "";
+ const routerTables = this.routerTable;
+ for (let router of routerTables) {
+ str += `接口号: ${router['node_ifs']}\n`;
+ str += `网段号: ${router['segment']}\n`;
+ }
+ return str;
+ } // 获取路由表配置信息用于展示
+}
+
+@Observed
+export class SimSwitch extends SimBase {
+ macTable: object[];
+
+ constructor(x: number, y: number, config: any = null) {
+ super(x, y, config)
+ this.objType = 3
+ this.objLabel = this.setDefaultName()
+ this.interface = [null, null, null, null] // 路由器有四个接口
+ this.connections = [null, null, null, null] // 四个接口对应四根连接线
+ this.img = $r("app.media.jiaohuanji") // 交换机图片
+ this.imgTm = $r("app.media.jiaohuanji_tm") // 交换机配置成功图片
+ this.Mac = ""
+ this.switchTable = []
+ }
+
+ setDefaultName() {
+ return `SSW${++SimBase.flag}`
+ } // 生成组件默认名称
+
+ transmit(packet: SimPacket){
+ this.interface.forEach((item: Symbol) => {
+ let obj = packet.allSimObj.find(obj => obj.objID === item)
+ if(item != null){
+ if(item != packet.upJump && this.switchTable.some(table => table.net === packet.destinationMac)){
+ const pac = new SimPacket(packet.sourceIp, packet.sourceMac, packet.destinationIp, packet.destinationMac, packet.message, packet.allSimObj, packet.allSimPacket)
+ pac.level = packet.level + 1
+ pac.upJump = this.objID
+ pac.points.push([this.objX, this.objY])
+ packet.allSimPacket.push(pac)
+ obj.receive(pac)
+ }
+ }
+ })
+ } // 交换机转发数据包
+
+ receive(packet: SimPacket){
+ updatePacketLog(`交换机-${this.objLabel}接受到数据,将进行转发!`)
+ packet.points.push([this.objX, this.objY])
+ this.transmit(packet);
+ } // 收到数据包
+
+ getTableConfig(): string {
+ let str = "";
+ const macTables = this.macTable;
+ for (const router of macTables) {
+ str += `接口号: ${router['node_ifs']}\n`;
+ str += `网段号: ${router['mac']}\n`;
+ }
+ return str;
+ } // 获取交换机表配置信息用于展示
+}
+
+@Observed
+export class SimHub extends SimBase {
+ constructor(x: number, y: number, config: any = null) {
+ super(x, y, config)
+ this.objType = 4
+ this.objLabel = this.setDefaultName()
+ this.interface = [null, null, null, null] // 路由器有四个接口
+ this.connections = [null, null, null, null] // 四个接口对应四根连接线
+ this.img = $r("app.media.jixianqi") // 集线器图片
+ this.imgTm = $r("app.media.jixianqi_tm") // 集线器配置成功图片
+ }
+
+ setDefaultName(): string {
+ return `SHU${++SimBase.flag}` // 生成组件默认名称
+ }
+
+ transmit(packet: SimPacket): void {
+ this.interface.forEach((item: Symbol, index) => {
+ let obj = packet.allSimObj.find(obj => obj.objID === item)
+ if (item != null) {
+ if (item != packet.upJump) {
+ const pac = new SimPacket(packet.sourceIp, packet.sourceMac, packet.destinationIp, packet.destinationMac, packet.message, packet.allSimObj, packet.allSimPacket)
+ pac.level = packet.level + 1
+ pac.upJump = this.objID
+ pac.points.push([this.objX, this.objY])
+ packet.allSimPacket.push(pac)
+ obj.receive(pac)
+ }
+ }
+ })
+ } // 集线器转发数据包
+
+ receive(packet: SimPacket): void {
+ updatePacketLog(`集线器-${this.objLabel}接受到数据,将进行转发!`)
+ packet.points.push([this.objX, this.objY])
+ this.transmit(packet);
+ } // 收到数据包
+}
+
+function getNewDate() {
+ return new Date().toLocaleString() + '\t'
+} // 获取当前时间
+
+function updatePacketLog(text: string){
+ let logText = AppStorage.get('LogText')
+ logText = logText + getNewDate() + text + '\n'
+ AppStorage.set('LogText', logText)
+ console.log(text);
+} // 更新主页面底部日志信息
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/main/ets/classes/SimBase.ets b/ensping/ensp13/entry/src/main/ets/classes/SimBase.ets
new file mode 100644
index 0000000..618ae1a
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/ets/classes/SimBase.ets
@@ -0,0 +1,63 @@
+import { SimPacket } from './OtherSimObjects';
+
+// 路由表和mac表项
+export interface Table {
+ port: number // 设备哪个端口
+ net: string // 连接哪个网络或设备(下一跳可到达网段或设备mac地址)
+}
+
+@Observed
+export class SimBase {
+ static flag = 0 // 当前仿真对象数量
+ configCorrect: boolean; // 是否配置正确
+ objType: number | null; // 对象类型,1为主机,2为路由器,3为交换机,4为集线器
+ Ip: string | null; // ip地址
+ Mac: string | null; // mac地址
+ routerTable: Array | null; // 路由表
+ switchTable: Array | null; // 交换表
+ objLabel: string; // 对象标签
+ objID: Symbol; // 使用symbol()生成对象唯一标识
+ objX: number; // x坐标
+ objY: number; // y坐标
+ img: Resource | null; // 仿真对象图片
+ imgTm: Resource | null; // 仿真对象配置成功图片
+ interface: Array; // 接口网络配置信息
+ connections: Array; // 连接线对象
+ isChose: boolean // 是否被选中
+
+ constructor(x: number, y: number, type: number) {
+ this.configCorrect = false;
+ this.objType = type;
+ this.objID = Symbol();
+ this.objX = x;
+ this.objY = y;
+ this.isChose = false
+ }
+
+ setDefaultName(): string {
+ let header: string = ""
+ if (this.objType == 1) {
+ header = "SHO"
+ } else if (this.objType == 2) {
+ header = "SRO"
+ } else if (this.objType == 3) {
+ header = "SSW"
+ } else {
+ header = "SHU"
+ }
+ return `${header}${++SimBase.flag}`
+ } // 生成组件默认名称
+
+ receive(packet: SimPacket) {
+ } // 发送数据包
+
+ createPacket(ip: string, mac: string, message: string, allSimObj: SimBase[], allSimPacket: SimPacket[]){
+ } // 创建数据包
+
+ transmit(packet: SimPacket){
+ } // 转发数据包
+
+ changeIsChose() {
+ this.isChose = !this.isChose
+ }
+}
diff --git a/ensping/ensp13/entry/src/main/ets/classes/TopMenu.ets b/ensping/ensp13/entry/src/main/ets/classes/TopMenu.ets
new file mode 100644
index 0000000..e58acaf
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/ets/classes/TopMenu.ets
@@ -0,0 +1,19 @@
+export class TopMenu {
+ title: string
+ menuItemArr: TopMenuItem[] | undefined
+
+ constructor(title: string, menuItemArr?: TopMenuItem[]) {
+ this.title = title
+ this.menuItemArr = menuItemArr
+ }
+} // 顶部菜单类
+
+export class TopMenuItem {
+ title: string
+ fun: Function | undefined
+
+ constructor(title: string, fun?: Function) {
+ this.title = title
+ this.fun = fun
+ }
+} // 顶部菜单选项类
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/main/ets/components/ButtomMenuBar.ets b/ensping/ensp13/entry/src/main/ets/components/ButtomMenuBar.ets
new file mode 100644
index 0000000..ed6d49b
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/ets/components/ButtomMenuBar.ets
@@ -0,0 +1,91 @@
+import { SimBase } from '../classes/SimBase'
+
+interface SimClickObj {
+ name: string
+ image: Resource
+ type: number
+}
+
+@Component
+export struct BottomMenuBar {
+ private simClickObjArr: SimClickObj[] = [
+ {
+ name: '主机',
+ image: $r('app.media.zhuji'),
+ type: 1
+ },
+ {
+ name: '路由器',
+ image: $r('app.media.luyouqi'),
+ type: 2
+ },
+ {
+ name: '交换器',
+ image: $r('app.media.jiaohuanji'),
+ type: 3
+ },
+ {
+ name: '集线器',
+ image: $r('app.media.jixianqi'),
+ type: 4
+ },
+ ] // 底部菜单栏数组
+ @Consume allSimObj: SimBase[] // 仿真对象数组
+ @Consume isNewObj: boolean // 是否新增对象
+ @Consume newObjType: number // 新增对象类型
+ @Consume choseIndex: number | null // 选中对象下标
+ @Consume TempConn: any[] // 是否正在新增连接线
+ @Consume isNewConn: boolean // 选中连接线下标
+
+ scroller: Scroller = new Scroller()
+ @StorageLink('LogText') LogText: string = ''
+
+ build() {
+ Row({ space: 10 }) {
+ ForEach(this.simClickObjArr, (item: SimClickObj) => {
+ Column() {
+ Image(item.image)
+ .border({
+ color: item.type == this.newObjType && this.isNewObj ? Color.Red : Color.Transparent,
+ width: 1
+ })
+ .width(50)
+ .onClick(() => {
+ this.isNewConn = false
+ this.TempConn = []
+ if (!this.isNewObj) { // 选择创建对象
+ this.isNewObj = true
+ this.newObjType = item.type
+ } else if (this.newObjType != item.type) { // 选择创建其他对象
+ this.newObjType = item.type
+ } else { // 取消选择
+ this.isNewObj = false
+ this.newObjType = -1
+ }
+ this.allSimObj.forEach(item => {
+ item.isChose = false
+ }) // 创建对象时必须全部设置为非选中状态
+ this.choseIndex = null
+ })
+ Text(item.name)
+ .fontWeight(FontWeight.Bold)
+ }
+ .margin({ top: 5 })
+ })
+
+ Scroll(this.scroller) {
+ Text(this.LogText)
+ .fontSize(15)
+ }
+ .border({
+ color: Color.Black,
+ width: 1
+ })
+ .layoutWeight(1)
+ .height('100%')
+ .margin(2)
+ }
+ .layoutWeight(1)
+ .margin({left: '5%'})
+ }
+}
diff --git a/ensping/ensp13/entry/src/main/ets/components/Dialog.ets b/ensping/ensp13/entry/src/main/ets/components/Dialog.ets
new file mode 100644
index 0000000..bcec9a6
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/ets/components/Dialog.ets
@@ -0,0 +1,476 @@
+import { SimBase, Table } from "../classes/SimBase"
+import { SimConnect, SimPacket } from '../classes/OtherSimObjects'
+import promptAction from '@ohos.promptAction'
+import { checkNetwork } from '../functions/functions'
+
+@CustomDialog
+export struct LabelRevise {
+ controller: CustomDialogController
+ @ObjectLink simObj: SimBase
+ @State newLabel: string = ""
+
+ build() {
+ Column({ space: 5 }) {
+ Text("原标签: " + this.simObj.objLabel)
+ .fontSize(28)
+ .fontColor(Color.Gray)
+ .width("80%")
+
+ Row() {
+ Text("新标签:")
+ .fontSize(28)
+ .fontColor(Color.Gray)
+
+ TextInput({ placeholder: "请输入新标签" })
+ .onChange((value) => {
+ this.newLabel = value
+ })
+ .width("65%")
+ }
+ .width("80%")
+
+ Row({ space: 40 }) {
+ Button("取消")
+ .height(35)
+ .onClick(() => {
+ this.controller.close()
+ })
+
+ Button("确定")
+ .height(35)
+ .onClick(() => {
+ this.simObj.objLabel = this.newLabel
+ this.controller.close()
+ })
+ }
+ .margin({ top: 5 })
+ }
+ .margin(10)
+ .backgroundColor(Color.White)
+ .justifyContent(FlexAlign.Center)
+ .alignItems(HorizontalAlign.Center)
+ }
+}
+
+@CustomDialog
+export struct LineDelete {
+ controller: CustomDialogController
+ @ObjectLink simObj: SimBase
+ @Consume allSimConn: SimConnect[]
+
+ build() {
+ Column() {
+ Text(this.simObj.objLabel + ' 连接线列表')
+ .fontSize(18)
+ .fontWeight(FontWeight.Bold)
+ Menu() {
+ ForEach(this.allSimConn, (item: SimConnect, index) => {
+ if (this.simObj.objID === item.nObjE.objID || this.simObj.objID === item.nObjS.objID) {
+ MenuItem({
+ content: this.simObj.objLabel + ' : ' + (this.simObj.objID === item.nObjE.objID ? item.nObjS.objLabel : item.nObjE.objLabel)
+ })
+ .height(25)
+ .contentFont({ size: 18 })
+ .onChange(() => {
+ item.deleteObjConn() // 删除线时应该先将线两端的设备的connection设置为null
+ this.allSimConn.splice(index, 1) // 然后将连接线对象数组中的该连接线对象删除
+ this.controller.close()
+ })
+ }
+ })
+ }
+ }
+ .width("100%")
+ .margin(10)
+ .backgroundColor(Color.White)
+ }
+}
+
+@CustomDialog
+export struct NetworkConfig {
+ controller: CustomDialogController
+ @ObjectLink simObj: SimBase
+ @State ip: string = ""
+ @State mac: string = ""
+
+ build() {
+ Column() {
+ TextInput({ placeholder: "请输入ip地址:192.168.1.1" })
+ .onChange((value) => {
+ this.ip = value
+ })
+
+ TextInput({ placeholder: "请输入mac地址:mac11" })
+ .onChange((value) => {
+ this.mac = value
+ })
+
+ Row({ space: 30 }) {
+ Button("取消")
+ .onClick(() => {
+ this.controller.close()
+ })
+
+ Button("确定")
+ .onClick(() => {
+ if (this.simObj.objType == 3) {
+ this.simObj.Mac = this.mac
+ } else {
+ this.simObj.Ip = this.ip
+ this.simObj.Mac = this.mac
+ }
+ this.controller.close()
+ })
+ }
+ }
+ .backgroundColor(Color.White)
+ .justifyContent(FlexAlign.Center)
+ .alignItems(HorizontalAlign.Center)
+ }
+}
+
+@CustomDialog
+export struct RouterTableConfig {
+ controller: CustomDialogController
+ @ObjectLink simObj: SimBase
+ @State ip1: string = ""
+ @State ip2: string = ""
+ @State ip3: string = ""
+ @State ip4: string = ""
+
+ build() {
+ Column() {
+ Row() {
+ TextInput({ placeholder: "请输入端口1下一跳:192.168.1.0/24" })
+ .onChange((value) => {
+ this.ip1 = value
+ })
+ .width("80%")
+
+ Button("添加")
+ .onClick(() => {
+ let pushItem: Table = {
+ port: 1,
+ net: this.ip1
+ }
+ if (this.simObj.routerTable.some(item => item.port == pushItem.port)) {
+ this.simObj.routerTable[pushItem.port-1] = pushItem
+ } else {
+ this.simObj.routerTable.push(pushItem)
+ this.simObj.routerTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1)
+ }
+ })
+ }
+
+ Row() {
+ TextInput({ placeholder: "请输入端口2下一跳:" })
+ .onChange((value) => {
+ this.ip2 = value
+ })
+ .width("80%")
+
+ Button("添加")
+ .onClick(() => {
+ let pushItem: Table = {
+ port: 2,
+ net: this.ip2
+ }
+ if (this.simObj.routerTable.some(item => item.port == pushItem.port)) {
+ this.simObj.routerTable[pushItem.port-1] = pushItem
+ } else {
+ this.simObj.routerTable.push(pushItem)
+ this.simObj.routerTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1)
+ }
+ })
+ }
+
+ Row() {
+ TextInput({ placeholder: "请输入端口3下一跳:" })
+ .onChange((value) => {
+ this.ip3 = value
+ })
+ .width("80%")
+
+ Button("添加")
+ .onClick(() => {
+ let pushItem: Table = {
+ port: 3,
+ net: this.ip3
+ }
+ if (this.simObj.routerTable.some(item => item.port == pushItem.port)) {
+ this.simObj.routerTable[pushItem.port-1] = pushItem
+ } else {
+ this.simObj.routerTable.push(pushItem)
+ this.simObj.routerTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1)
+ }
+ })
+ }
+
+ Row() {
+ TextInput({ placeholder: "请输入端口4下一跳:" })
+ .onChange((value) => {
+ this.ip4 = value
+ })
+ .width("80%")
+
+ Button("添加")
+ .onClick(() => {
+ let pushItem: Table = {
+ port: 4,
+ net: this.ip4
+ }
+ if (this.simObj.routerTable.some(item => item.port == pushItem.port)) {
+ this.simObj.routerTable[pushItem.port-1] = pushItem
+ } else {
+ this.simObj.routerTable.push(pushItem)
+ this.simObj.routerTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1)
+ }
+ })
+ }
+ }
+ .backgroundColor(Color.White)
+ .justifyContent(FlexAlign.Center)
+ .alignItems(HorizontalAlign.Center)
+ }
+}
+
+@CustomDialog
+export struct SwitchTableConfig {
+ controller: CustomDialogController
+ @ObjectLink simObj: SimBase
+ @State mac1: string = ""
+ @State mac2: string = ""
+ @State mac3: string = ""
+ @State mac4: string = ""
+
+ build() {
+ Column() {
+ Row() {
+ TextInput({ placeholder: "请输入端口1下一跳:mac11" })
+ .onChange((value) => {
+ this.mac1 = value
+ })
+ .width("80%")
+
+ Button("添加")
+ .onClick(() => {
+ let pushItem: Table = {
+ port: 1,
+ net: this.mac1
+ }
+ if (this.simObj.switchTable.some(item => item.port == pushItem.port)) {
+ this.simObj.switchTable[pushItem.port-1] = pushItem
+ } else {
+ this.simObj.switchTable.push(pushItem)
+ this.simObj.switchTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1)
+ }
+ })
+ }
+
+ Row() {
+ TextInput({ placeholder: "请输入端口2下一跳:" })
+ .onChange((value) => {
+ this.mac2 = value
+ })
+ .width("80%")
+
+ Button("添加")
+ .onClick(() => {
+ let pushItem: Table = {
+ port: 2,
+ net: this.mac2
+ }
+ if (this.simObj.switchTable.some(item => item.port == pushItem.port)) {
+ this.simObj.switchTable[pushItem.port-1] = pushItem
+ } else {
+ this.simObj.switchTable.push(pushItem)
+ this.simObj.switchTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1)
+ }
+ })
+ }
+
+ Row() {
+ TextInput({ placeholder: "请输入端口3下一跳:" })
+ .onChange((value) => {
+ this.mac3 = value
+ })
+ .width("80%")
+
+ Button("添加")
+ .onClick(() => {
+ let pushItem: Table = {
+ port: 3,
+ net: this.mac3
+ }
+ if (this.simObj.switchTable.some(item => item.port == pushItem.port)) {
+ this.simObj.switchTable[pushItem.port-1] = pushItem
+ } else {
+ this.simObj.switchTable.push(pushItem)
+ this.simObj.switchTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1)
+ }
+ })
+ }
+
+ Row() {
+ TextInput({ placeholder: "请输入端口4下一跳:" })
+ .onChange((value) => {
+ this.mac4 = value
+ })
+ .width("80%")
+
+ Button("添加")
+ .onClick(() => {
+ let pushItem: Table = {
+ port: 4,
+ net: this.mac4
+ }
+ if (this.simObj.switchTable.some(item => item.port == pushItem.port)) {
+ this.simObj.switchTable[pushItem.port-1] = pushItem
+ } else {
+ this.simObj.switchTable.push(pushItem)
+ this.simObj.switchTable.sort((a: Table, b: Table) => a.port > b.port ? 1 : -1)
+ }
+ })
+ }
+ }
+ .backgroundColor(Color.White)
+ .justifyContent(FlexAlign.Center)
+ .alignItems(HorizontalAlign.Center)
+ }
+}
+
+@CustomDialog
+export struct PacketSet {
+ controller: CustomDialogController
+ @ObjectLink simObj: SimBase
+ @State ip: string = ""
+ @State mac: string = ""
+ @State message: string = ""
+ @Consume allSimObj: SimBase[]
+ @Consume allSimPacket: SimPacket[]
+
+ build() {
+ Column() {
+ TextInput({ placeholder: "请输入目标ip地址:192.168.1.1" })
+ .onChange((value) => {
+ this.ip = value
+ })
+
+ TextInput({ placeholder: "请输入目标mac地址:mac11" })
+ .onChange((value) => {
+ this.mac = value
+ })
+
+ TextInput({ placeholder: "请输入发送信息" })
+ .onChange((value) => {
+ this.message = value
+ })
+
+ Row({ space: 30 }) {
+ Button("取消")
+ .onClick(() => {
+ this.controller.close()
+ })
+
+ Button("确定")
+ .onClick(() => {
+ if (!checkNetwork(this.allSimObj)) {
+ promptAction.showToast({
+ message: "请正确配置IP地址",
+ duration: 3000,
+ bottom: 50
+ })
+ } else if (this.simObj.objType == 1) {
+ this.simObj.createPacket(this.ip, this.mac, this.message, this.allSimObj, this.allSimPacket)
+ } else {
+ promptAction.showToast({
+ message: "请选择正确对象",
+ duration: 3000,
+ bottom: 50
+ })
+ }
+ this.controller.close()
+ })
+ }
+ }
+ .backgroundColor(Color.White)
+ .justifyContent(FlexAlign.Center)
+ .alignItems(HorizontalAlign.Center)
+ }
+}
+
+@CustomDialog
+export struct BatchPacketSet {
+ controller: CustomDialogController
+ @ObjectLink simObj: SimBase
+ @State ip: string = ""
+ @State mac: string = ""
+ @State message: string = ""
+ @Consume allSimObj: SimBase[]
+ @Consume allSimPacket: SimPacket[]
+ @State packets: any[] = []
+
+ build() {
+ Column() {
+ TextInput({ placeholder: "请输入目标ip地址:192.168.1.1" })
+ .onChange((value) => {
+ this.ip = value
+ })
+
+ TextInput({ placeholder: "请输入目标mac地址:mac11" })
+ .onChange((value) => {
+ this.mac = value
+ })
+
+ TextInput({ placeholder: "请输入发送信息" })
+ .onChange((value) => {
+ this.message = value
+ })
+
+ Row({ space: 30 }) {
+ Button('取消')
+ .onClick(() => {
+ this.controller.close()
+ })
+
+ Button("新增")
+ .onClick(() => {
+ if (!checkNetwork(this.allSimObj)) {
+ promptAction.showToast({
+ message: "请正确配置IP地址",
+ duration: 3000,
+ bottom: 50
+ })
+ } else if (this.simObj.objType == 1) {
+ this.packets.push(
+ {
+ ip: this.ip,
+ mac: this.mac,
+ message: this.message,
+ allSimObj: this.allSimObj,
+ allSimPacket: this.allSimPacket
+ }
+ )
+ } else {
+ promptAction.showToast({
+ message: "请选择正确对象",
+ duration: 3000,
+ bottom: 50
+ })
+ }
+ })
+
+ Button("批量发送")
+ .onClick(() => {
+ this.packets.forEach(item => {
+ this.simObj.createPacket(item.ip, item.mac, item.message, item.allSimObj, item.allSimPacket)
+ })
+ this.controller.close()
+ })
+ }
+ }
+ .backgroundColor(Color.White)
+ .justifyContent(FlexAlign.Center)
+ .alignItems(HorizontalAlign.Center)
+ }
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/main/ets/components/MiddleContent.ets b/ensping/ensp13/entry/src/main/ets/components/MiddleContent.ets
new file mode 100644
index 0000000..6798ef4
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/ets/components/MiddleContent.ets
@@ -0,0 +1,284 @@
+import promptAction from '@ohos.promptAction'
+import { SimConnect, SimHost, SimHub, SimRouter, SimSwitch } from '../classes/OtherSimObjects'
+import { SimBase } from '../classes/SimBase'
+import { TableChart, NetworkChart } from './Table'
+
+@Component
+export struct MiddleContent {
+ @Consume allSimObj: SimBase[] // 仿真对象数组
+ @Consume allSimConn: SimConnect[] // 仿真连接线数组
+ @Consume TempConn: any[] // 临时any数组
+ @Consume isNewObj: boolean // 是否插入新增对象
+ @Consume newObjType: number // 新增对象类型
+ @Consume choseIndex: number | null // 选中对象下标
+ @Consume isNewConn: boolean // 是否正在新增连接线
+ @Consume isShowLabel: boolean // 是否显示标签
+ @Consume isShowPort: boolean // 是否显示接口
+ @Consume isShowInterface: boolean // 是否显示网络配置信息
+ @Consume isShowTable: boolean // 是否显示路由/交换表信息
+ @Consume allSimPacket: [] // 单次数据包传输的集合
+
+ build() {
+ Row() {
+ // 画布
+ Stack() {
+ ForEach(this.allSimConn, (item: SimConnect) => {
+ CreateCon({ objS: item.nObjS as SimBase, objE: item.nObjE as SimBase }) // 连接线绘制组件
+ CreatePort({ objS: item.nObjS as SimBase, objE: item.nObjE as SimBase, conn: item }) // 接口绘制组件
+ })
+
+ ForEach(this.allSimObj, (item: SimBase, index) => {
+ CreateImg({ simObj: item, thisIndex: index }) // 虚拟对象绘制组件
+ CreateLabel({ simObj: item }) // 标签绘制组件
+ })
+ }
+ .onClick((event: ClickEvent) => {
+ if (this.isNewObj) { // 若要插入新增对象
+ const obj = this.newObjType == 1 ? new SimHost(event.x - 25, event.y - 15) : this.newObjType == 2 ? new SimRouter(event.x - 25, event.y - 15) : this.newObjType == 3 ? new SimSwitch(event.x - 25, event.y - 15) : new SimHub(event.x - 25, event.y - 15)
+ this.allSimObj.push(obj) // 插入并绘制新增对象
+ } else if (!this.isNewObj && this.allSimObj.some(item => item.isChose == true)) {
+ this.allSimObj[this.choseIndex].objX = event.x - 25 // 更新X坐标
+ this.allSimObj[this.choseIndex].objY = event.y - 15 // 更新Y坐标
+ this.allSimObj[this.choseIndex].isChose = false // 更新选中状态为未选中
+ }
+ this.isNewObj = false // 取消新增状态
+ this.newObjType = -1 // 取消新增类型
+ this.choseIndex = null // 取消选中下标
+ this.isNewConn = false // 取消新增连接线
+ this.TempConn = [] // 清空临时连接线对象
+ })
+ .width('78%')
+ .height('100%')
+ .border({ color: Color.Black, width: 1 })
+
+ // 配置信息展示
+ Column({ space: 3 }) {
+ Column() {
+ Text('网络配置信息')
+ .fontSize(21)
+ .fontWeight(FontWeight.Bold)
+
+ Column() {
+ if (this.choseIndex != null && this.isShowInterface) {
+ NetworkChart({ simObj: this.allSimObj[this.choseIndex] })
+ }
+ }
+ }
+ .width('100%')
+ .height('50%')
+ .border({ color: Color.Orange, width: 1 })
+
+ Column() {
+ Text('路由/交换表信息')
+ .fontSize(21)
+ .fontWeight(FontWeight.Bold)
+
+ Column() {
+ if (this.choseIndex != null && this.isShowTable) {
+ TableChart({ simObj: this.allSimObj[this.choseIndex] })
+ }
+ }
+ }
+ .width('100%')
+ .height('50%')
+ .border({ color: Color.Orange, width: 1 })
+ }
+ .padding(2)
+ .justifyContent(FlexAlign.SpaceBetween)
+ .layoutWeight(1)
+ }
+ .width('100%')
+ .height('74%')
+ }
+}
+
+// 绘制连接线组件
+@Component
+struct CreateCon {
+ @ObjectLink objS: SimBase
+ @ObjectLink objE: SimBase
+
+ build() {
+ Line()
+ .width('100%')
+ .height('100%')
+ .stroke(Color.Black)
+ .startPoint([this.objS.objX + 25, this.objS.objY + 15])
+ .endPoint([this.objE.objX + 25, this.objE.objY + 15])
+ }
+}
+
+class coordinates {
+ x: number
+ y: number
+
+ constructor(x: number, y: number) {
+ this.x = x
+ this.y = y
+ }
+} // 坐标类
+
+// 绘制接口组件
+@Component
+struct CreatePort {
+ @ObjectLink objS: SimBase
+ @ObjectLink objE: SimBase
+ @ObjectLink conn: SimConnect
+ r: number = 30
+
+ k() {
+ return (this.objS.objY - this.objE.objY) / (this.objS.objX - this.objE.objX)
+ } // 直线斜率
+
+ distance(point1: coordinates, point2: coordinates) {
+ return Math.sqrt((point1.x - point2.x)**2 + (point1.y - point2.y)**2)
+ } // 两点距离
+
+ closerSPoint() {
+ let objEPoint = new coordinates(this.objE.objX + 25, this.objE.objY + 15)
+ let objSPoint1 = new coordinates(this.objS.objX + 25 + this.r / Math.sqrt(this.k()**2 + 1), this.objS.objY + 15 + this.k() * this.r / Math.sqrt(this.k()**2 + 1))
+ let objSPoint2 = new coordinates(this.objS.objX + 25 - this.r / Math.sqrt(this.k()**2 + 1), this.objS.objY + 15 - this.k() * this.r / Math.sqrt(this.k()**2 + 1))
+ let objSPoint = this.distance(objSPoint1, objEPoint) < this.distance(objSPoint2, objEPoint) ? objSPoint1 : objSPoint2
+ return { x: objSPoint.x, y: objSPoint.y }
+ }
+
+ closerEPoint() {
+ let objSPoint = new coordinates(this.objS.objX + 25, this.objS.objY + 15)
+ let objEPoint1 = new coordinates(this.objE.objX + 25 + this.r / Math.sqrt(this.k()**2 + 1), this.objE.objY + 15 + this.k() * this.r / Math.sqrt(this.k()**2 + 1))
+ let objEPoint2 = new coordinates(this.objE.objX + 25 - this.r / Math.sqrt(this.k()**2 + 1), this.objE.objY + 15 - this.k() * this.r / Math.sqrt(this.k()**2 + 1))
+ let objEPoint = this.distance(objEPoint1, objSPoint) < this.distance(objEPoint2, objSPoint) ? objEPoint1 : objEPoint2
+ return { x: objEPoint.x, y: objEPoint.y }
+ }
+
+ build() {
+ Stack() {
+ Text(this.conn.ifsS.toString())
+ .fontSize(15)
+ .fontColor(Color.Green)
+ .fontWeight(FontWeight.Bold)
+ .position(this.closerSPoint())
+ Text(this.conn.ifsE.toString())
+ .fontSize(15)
+ .fontColor(Color.Green)
+ .fontWeight(FontWeight.Bold)
+ .position(this.closerEPoint())
+ }
+ .width('100%')
+ .height('100%')
+ }
+}
+
+// 绘制仿真对象组件
+@Component
+ struct CreateImg {
+ @Consume allSimObj: SimBase[] // 仿真对象数组
+ @Consume allSimConn: SimConnect[] // 仿真连接线数组
+ @Consume TempConn: any[] // 临时any数组
+ @ObjectLink simObj: SimBase // 当前对象
+ @Consume isNewObj: boolean // 是否新增对象
+ @Consume newObjType: number // 新增对象类型
+ @Consume choseIndex: number | null // 选中对象下标
+ @Consume isNewConn: boolean // 是否正在新增连接线
+ thisIndex: number
+
+ @Builder
+ InterfaceMenu() { // 接口选择菜单
+ Menu() {
+ ForEach(this.simObj.interface, (item, index) => {
+ if (item === null) {
+ MenuItem({ content: '接口' + (index + 1).toString() })
+ .width(70)
+ .height(30)
+ .contentFont({ size: 14 })
+ .onChange(() => {
+ if (!this.isNewConn) {
+ this.TempConn.push(this.allSimObj[this.thisIndex])
+ this.TempConn.push(index + 1)
+ } else {
+ if (this.TempConn[0] != this.simObj && !this.TempConn[0].interface.includes(this.simObj)) {
+ const conn = new SimConnect(this.TempConn[0], this.TempConn[1], this.allSimObj[this.thisIndex], index + 1)
+ this.allSimConn.push(conn)
+ // 更新两个连接对象中的连接线信息
+ conn.updateObjConn()
+ this.TempConn = []
+ } else {
+ this.TempConn = []
+ promptAction.showToast({
+ message: "请选择连接不同的对象",
+ duration: 3000,
+ bottom: 50
+ })
+ }
+ }
+ if (this.choseIndex != null) {
+ this.allSimObj[this.choseIndex].isChose = false
+ }
+ this.isNewObj = false
+ this.newObjType = -1
+ this.choseIndex = null
+ this.isNewConn = !this.isNewConn
+ })
+ } else {
+ MenuItem({ content: '接口' + (index + 1).toString() + '已连接' })
+ .width(105)
+ .height(30)
+ .contentFont({ size: 13, style: FontStyle.Italic })
+ .contentFontColor(Color.Green)
+ .onChange(() => {
+ promptAction.showToast({
+ message: "该接口已连接",
+ duration: 3000,
+ bottom: 50
+ })
+ })
+ }
+ })
+ }
+ .radius(8)
+ }
+
+ build() {
+ Column() {
+ Image(this.simObj.img)
+ .width(50)
+ .border({
+ color: this.TempConn[0] === this.simObj ? Color.Green : this.simObj.isChose ? Color.Red : Color.Transparent,
+ width: 1.2
+ })// 选中框
+ .onClick(() => { // 仅允许一个对象被选中
+ this.TempConn = []
+ this.isNewObj = false // 取消插入新对象状态
+ this.newObjType = -1
+ this.isNewConn = false
+ if (!this.allSimObj.some(item => item.isChose == true)) { // 若没有对象被选中
+ this.choseIndex = this.thisIndex // 更新选中对象的下标
+ this.simObj.changeIsChose() // 更新对象选中状态
+ } else if (this.simObj.isChose) { // 若要取消选中对象
+ this.choseIndex = null // 更新选中下标为null
+ this.simObj.changeIsChose() // 更新对象选中状态
+ } else if (!this.simObj.isChose && this.choseIndex != null) { // 若要更换选择对象
+ this.allSimObj[this.choseIndex].changeIsChose() // 更新上一个选中对象选中状态
+ this.choseIndex = this.thisIndex // 更新选中下标
+ this.simObj.changeIsChose() // 更新当前对象选中状态
+ }
+ })
+ }
+ .position({ x: this.simObj.objX, y: this.simObj.objY })
+ .bindContextMenu(this.InterfaceMenu(), ResponseType.LongPress) // 外容器绑定长按事件,避免与内组件冲突
+ }
+}
+
+// 绘制标签组件
+@Component
+struct CreateLabel {
+ @ObjectLink simObj: SimBase
+ @Consume isShowLabel: boolean // 是否显示标签
+
+ build() {
+ if (this.isShowLabel) {
+ Text(this.simObj.objLabel)
+ .fontSize(15)
+ .position({ x: this.simObj.objX + 25, y: this.simObj.objY - 12 })
+ }
+ }
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/main/ets/components/Table.ets b/ensping/ensp13/entry/src/main/ets/components/Table.ets
new file mode 100644
index 0000000..4c45096
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/ets/components/Table.ets
@@ -0,0 +1,53 @@
+import { SimBase, Table } from '../classes/SimBase'
+
+@Component
+export struct NetworkChart {
+ @ObjectLink simObj: SimBase
+
+ build() {
+ Column() {
+ if (this.simObj.objType == 1 || this.simObj.objType == 2) {
+ Column() {
+ Text("IP地址:" + this.simObj.Ip)
+
+ Text("Mac地址:" + this.simObj.Mac)
+ }
+ } else if (this.simObj.objType == 3) {
+ Column() {
+ Text("Mac地址:" + this.simObj.Mac)
+ }
+ }
+ }
+ .width("100%")
+ .height("100%")
+ }
+}
+
+@Component
+export struct TableChart {
+ @ObjectLink simObj: SimBase
+
+ build() {
+ Column() {
+ if (this.simObj.objType == 2) {
+ ForEach(this.simObj.routerTable, (item: Table) => {
+ Row() {
+ Text("端口" + item.port.toString() + ":")
+
+ Text(item.net)
+ }
+ })
+ } else if (this.simObj.objType == 3) {
+ ForEach(this.simObj.switchTable, (item: Table) => {
+ Row() {
+ Text("端口" + item.port.toString() + ":")
+
+ Text(item.net)
+ }
+ })
+ }
+ }
+ .width("100%")
+ .height("100%")
+ }
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/main/ets/components/TopMenuBar.ets b/ensping/ensp13/entry/src/main/ets/components/TopMenuBar.ets
new file mode 100644
index 0000000..e06e0f6
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/ets/components/TopMenuBar.ets
@@ -0,0 +1,196 @@
+import promptAction from '@ohos.promptAction';
+import { SimBase } from '../classes/SimBase'
+import { SimConnect, SimPacket } from '../classes/OtherSimObjects'
+import { TopMenu, TopMenuItem } from "../classes/TopMenu"
+import { LabelRevise, LineDelete, NetworkConfig, RouterTableConfig, SwitchTableConfig, PacketSet, BatchPacketSet } from "./Dialog"
+
+@Component
+export struct TopMenuBar {
+ // 修改标签控制器
+ reviseLabelController: CustomDialogController = new CustomDialogController({
+ builder: LabelRevise({ simObj: this.allSimObj[this.choseIndex] })
+ })
+ // 删除连接线控制器
+ deleteLineController: CustomDialogController = new CustomDialogController({
+ builder: LineDelete({ simObj: this.allSimObj[this.choseIndex] })
+ })
+ // 网络配置控制器
+ NetworkController: CustomDialogController = new CustomDialogController({
+ builder: NetworkConfig({ simObj: this.allSimObj[this.choseIndex] })
+ })
+ // 路由表配置配置器
+ RouterController: CustomDialogController = new CustomDialogController({
+ builder: RouterTableConfig({ simObj: this.allSimObj[this.choseIndex] })
+ })
+ // 转换表配置控制器
+ SwitchController: CustomDialogController = new CustomDialogController({
+ builder: SwitchTableConfig({ simObj: this.allSimObj[this.choseIndex] })
+ })
+ // 数据包设置控制器
+ PacketController: CustomDialogController = new CustomDialogController({
+ builder: PacketSet({ simObj: this.allSimObj[this.choseIndex] })
+ })
+ // 批量数据包设置控制器
+ BatchPacketController: CustomDialogController = new CustomDialogController({
+ builder: BatchPacketSet({ simObj: this.allSimObj[this.choseIndex] })
+ })
+
+ @Builder
+ MenuItem(menuItemArr: TopMenuItem[]) {
+ Menu() {
+ ForEach(menuItemArr, (item: TopMenuItem) => {
+ MenuItem({ content: item.title })
+ .onChange(() => {
+ if (item.fun) {
+ item.fun()
+ }
+ })
+ })
+ }
+ } // 顶部菜单栏按钮每小项
+
+ @Builder
+ MenuButton(menuArr: TopMenu[]) {
+ ForEach(menuArr, (item: TopMenu) => {
+ Button(item.title)
+ .type(ButtonType.Normal)
+ .fontColor(Color.Black)
+ .border({ color: Color.Black, width: 1 })
+ .backgroundColor(Color.Transparent)
+ .bindMenu(this.MenuItem(item.menuItemArr))
+ })
+ } // 顶部菜单栏按钮
+
+ private menuArr: TopMenu[] = [
+ new TopMenu('删除与修改', [new TopMenuItem('删除对象', () => {
+ if (this.choseIndex != null) {
+ this.allSimConn = this.allSimConn.filter((item)=>{
+ if(this.allSimObj[this.choseIndex].objID === item.nObjE.objID || this.allSimObj[this.choseIndex].objID === item.nObjS.objID){
+ item.deleteObjConn() // 删除线时应该先将线两端的设备的connection设置为null
+ return false
+ }
+ return true
+ })
+ this.allSimObj.splice(this.choseIndex, 1)
+ this.isNewObj = false
+ this.newObjType = -1
+ this.choseIndex = null
+ } else {
+ promptAction.showToast({
+ message: "请先选择要删除的对象",
+ duration: 3000,
+ bottom: 50
+ })
+ }
+ }), new TopMenuItem('删除连接线', () => {
+ if (this.choseIndex != null) {
+ this.deleteLineController.open()
+ } else {
+ promptAction.showToast({
+ message: "请选择要删除的连接线对象",
+ duration: 3000,
+ bottom: 50
+ })
+ }
+ }), new TopMenuItem('修改标签', () => {
+ if (this.choseIndex != null) {
+ this.reviseLabelController.open()
+ } else {
+ promptAction.showToast({
+ message: "请选择仿真对象",
+ duration: 3000,
+ bottom: 50
+ })
+ }
+ })]),
+ new TopMenu('基础配置', [new TopMenuItem('网络配置', () => {
+ if (this.choseIndex != null && (this.allSimObj[this.choseIndex].objType == 1 || this.allSimObj[this.choseIndex].objType == 2 || this.allSimObj[this.choseIndex].objType == 3)) {
+ this.NetworkController.open()
+ } else {
+ promptAction.showToast({
+ message: "请选择正确对象",
+ duration: 3000,
+ bottom: 50
+ })
+ }
+ }), new TopMenuItem('路由器配置', () => {
+ if (this.choseIndex != null && this.allSimObj[this.choseIndex].objType == 2) {
+ this.RouterController.open()
+ } else {
+ promptAction.showToast({
+ message: "请选择路由器对象",
+ duration: 3000,
+ bottom: 50
+ })
+ }
+ }), new TopMenuItem('交换器配置', () => {
+ if (this.choseIndex != null && this.allSimObj[this.choseIndex].objType == 3) {
+ this.SwitchController.open()
+ } else {
+ promptAction.showToast({
+ message: "请选择交换机对象",
+ duration: 3000,
+ bottom: 50
+ })
+ }
+ })]),
+ new TopMenu('显示设置', [new TopMenuItem('显示/不显示标签', () => {
+ this.isShowLabel = !this.isShowLabel
+ }), new TopMenuItem('显示/不显示接口', () => {
+ this.isShowPort = !this.isShowPort
+ }), new TopMenuItem('显示/不显示配置信息', () => {
+ this.isShowInterface = !this.isShowInterface
+ }), new TopMenuItem('显示/不显示交换表信息', () => {
+ this.isShowTable = !this.isShowTable
+ })]),
+ new TopMenu('发送数据包', [new TopMenuItem('发送数据包', () => {
+ if (this.choseIndex != null && this.allSimObj[this.choseIndex].objType == 1){
+ this.PacketController.open()
+ }else{
+ promptAction.showToast({
+ message: "请选择主机对象",
+ duration: 3000,
+ bottom: 50
+ })
+ }
+ }), new TopMenuItem('批量发送数据包', () => {
+ if (this.choseIndex != null && this.allSimObj[this.choseIndex].objType == 1){
+ this.BatchPacketController.open()
+ }else{
+ promptAction.showToast({
+ message: "请选择主机对象",
+ duration: 3000,
+ bottom: 50
+ })
+ }
+ })]),
+ new TopMenu('清除屏幕', [new TopMenuItem('清除屏幕', () => {
+ this.allSimObj = []
+ this.allSimConn = []
+ this.TempConn = []
+ this.isNewObj = false
+ this.choseIndex = null
+ })])
+ ] // 顶部菜单栏数组
+ @Consume allSimObj: SimBase[] // 仿真对象数组
+ @Consume allSimConn: SimConnect[] // 仿真连接线数组
+ @Consume TempConn: any[] // 临时any数组
+ @Consume isNewObj: boolean // 是否新增对象
+ @Consume newObjType: number // 新增对象类型
+ @Consume choseIndex: number | null // 选中对象下标
+
+ @Consume isShowLabel: boolean // 是否显示标签
+ @Consume isShowPort: boolean // 是否显示接口
+ @Consume isShowInterface: boolean // 是否显示网络配置信息
+ @Consume isShowTable: boolean // 是否显示路由/交换表信息
+
+ @Consume allSimPacket: SimPacket[] // 单次数据包传输的集合
+
+ build() {
+ Row() {
+ this.MenuButton(this.menuArr)
+ }
+ .height("12%")
+ .width("100%")
+ }
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/main/ets/entryability/EntryAbility.ets b/ensping/ensp13/entry/src/main/ets/entryability/EntryAbility.ets
new file mode 100644
index 0000000..ec7d65a
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/ets/entryability/EntryAbility.ets
@@ -0,0 +1,48 @@
+import AbilityConstant from '@ohos.app.ability.AbilityConstant';
+import hilog from '@ohos.hilog';
+import UIAbility from '@ohos.app.ability.UIAbility';
+import Want from '@ohos.app.ability.Want';
+import window from '@ohos.window';
+
+
+export default class EntryAbility extends UIAbility {
+ onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
+ hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
+ AppStorage.setOrCreate('LogText', '')
+ }
+
+ onDestroy(): void {
+ hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
+ }
+
+ onWindowStageCreate(windowStage: window.WindowStage): void {
+ // Main window is created, set main page for this ability
+ hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
+
+
+ windowStage.loadContent('pages/Index', (err, data) => {
+ if (err.code) {
+ hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
+ return;
+ }
+ hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
+ });
+
+ // windowStage.getMainWindowSync().setWindowSystemBarEnable([]);
+ }
+
+ onWindowStageDestroy(): void {
+ // Main window is destroyed, release UI related resources
+ hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
+ }
+
+ onForeground(): void {
+ // Ability has brought to foreground
+ hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
+ }
+
+ onBackground(): void {
+ // Ability has back to background
+ hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
+ }
+}
diff --git a/ensping/ensp13/entry/src/main/ets/functions/functions.ets b/ensping/ensp13/entry/src/main/ets/functions/functions.ets
new file mode 100644
index 0000000..86fd5ae
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/ets/functions/functions.ets
@@ -0,0 +1,51 @@
+import { SimBase } from "../classes/SimBase"
+
+function ValidateIPAddress(ipAddress: string): boolean {
+ // 定义IP地址的正则表达式模式
+ const patternWithSubnet = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/(\d{1,2})$/;
+ const patternWithoutSubnet = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
+
+ const matchWithSubnet = ipAddress.match(patternWithSubnet);
+ const matchWithoutSubnet = ipAddress.match(patternWithoutSubnet);
+
+ if (matchWithSubnet) {
+ // 带有子网掩码的IP地址
+ // 检查每个组件的取值范围是否在 0-255 之间
+ for (let i = 1; i <= 4; i++) {
+ const group = parseInt(matchWithSubnet[i]);
+ if (group < 0 || group > 255) {
+ return false;
+ }
+ }
+ // 检查子网掩码的取值范围是否在 0-32 之间
+ const subnetMask = parseInt(matchWithSubnet[5]);
+ if (subnetMask < 0 || subnetMask > 32) {
+ return false;
+ }
+ return true;
+ } else if (matchWithoutSubnet) {
+ // 不带子网掩码的IP地址
+ // 检查每个组件的取值范围是否在 0-255 之间
+ for (let i = 1; i <= 4; i++) {
+ const group = parseInt(matchWithoutSubnet[i]);
+ if (group < 0 || group > 255) {
+ return false;
+ }
+ }
+ return true;
+ } else {
+ // IP地址格式不正确
+ return false;
+ }
+}
+
+export function checkNetwork(allSimObj: SimBase[]) {
+ for (const item of allSimObj) {
+ if(item.objType == 4){
+ continue
+ }else if(!ValidateIPAddress(item.Ip)){
+ return false
+ }
+ }
+ return true
+} // 检查创建虚拟对象的IP地址是否正确
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/main/ets/pages/Index.ets b/ensping/ensp13/entry/src/main/ets/pages/Index.ets
new file mode 100644
index 0000000..2c13d8b
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/ets/pages/Index.ets
@@ -0,0 +1,38 @@
+import { TopMenuBar } from "../components/TopMenuBar" // 顶部功能栏
+import { MiddleContent } from "../components/MiddleContent" // 中间控制区
+import { BottomMenuBar } from "../components/ButtomMenuBar" // 底部选择栏
+
+@Entry
+@Component
+struct Index {
+ @Provide allSimObj: any[] = [] // 仿真对象数组
+ @Provide allSimConn: any[] = [] // 仿真连接线数组
+ @Provide TempConn: any[] = [] // 临时连接线对象数组
+ @Provide isNewObj: boolean = false // 是否新增对象
+ @Provide newObjType: number = -1 // 新增对象类型
+ @Provide choseIndex: number | null = null // 选中对象下标
+ @Provide isNewConn: boolean = false // 是否正在新增连接线
+
+ @Provide isShowLabel: boolean = true // 是否显示标签
+ @Provide isShowPort: boolean = true // 是否显示接口
+ @Provide isShowInterface: boolean = true // 是否显示网络配置信息
+ @Provide isShowTable: boolean = true // 是否显示路由/交换表信息
+
+ @Provide allSimPacket: [] = [] // 单次数据包传输的集合
+
+ build() {
+ Column() {
+ // 顶部功能栏
+ TopMenuBar()
+
+ // 中间绘制区
+ MiddleContent()
+
+ // 底部选择栏
+ BottomMenuBar()
+ }
+ .width('100%')
+ .height('100%')
+ }
+}
+
diff --git a/ensping/ensp13/entry/src/main/module.json5 b/ensping/ensp13/entry/src/main/module.json5
new file mode 100644
index 0000000..22edd18
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/module.json5
@@ -0,0 +1,38 @@
+{
+ "module": {
+ "name": "entry",
+ "type": "entry",
+ "description": "$string:module_desc",
+ "mainElement": "EntryAbility",
+ "deviceTypes": [
+ "default",
+ "tablet"
+ ],
+ "deliveryWithInstall": true,
+ "installationFree": false,
+ "pages": "$profile:main_pages",
+ "abilities": [
+ {
+ "name": "EntryAbility",
+ "srcEntry": "./ets/entryability/EntryAbility.ets",
+ "description": "$string:EntryAbility_desc",
+ "icon": "$media:icon",
+ "label": "$string:EntryAbility_label",
+ "startWindowIcon": "$media:startIcon",
+ "startWindowBackground": "$color:start_window_background",
+ "exported": true,
+ "orientation": "auto_rotation",
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ]
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/main/resources/base/element/color.json b/ensping/ensp13/entry/src/main/resources/base/element/color.json
new file mode 100644
index 0000000..3c71296
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/resources/base/element/color.json
@@ -0,0 +1,8 @@
+{
+ "color": [
+ {
+ "name": "start_window_background",
+ "value": "#FFFFFF"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/main/resources/base/element/string.json b/ensping/ensp13/entry/src/main/resources/base/element/string.json
new file mode 100644
index 0000000..f945955
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,16 @@
+{
+ "string": [
+ {
+ "name": "module_desc",
+ "value": "module description"
+ },
+ {
+ "name": "EntryAbility_desc",
+ "value": "description"
+ },
+ {
+ "name": "EntryAbility_label",
+ "value": "label"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/main/resources/base/media/icon.png b/ensping/ensp13/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 0000000..cd45acc
Binary files /dev/null and b/ensping/ensp13/entry/src/main/resources/base/media/icon.png differ
diff --git a/ensping/ensp13/entry/src/main/resources/base/media/jiaohuanji.png b/ensping/ensp13/entry/src/main/resources/base/media/jiaohuanji.png
new file mode 100644
index 0000000..1467d82
Binary files /dev/null and b/ensping/ensp13/entry/src/main/resources/base/media/jiaohuanji.png differ
diff --git a/ensping/ensp13/entry/src/main/resources/base/media/jiaohuanji_tm.png b/ensping/ensp13/entry/src/main/resources/base/media/jiaohuanji_tm.png
new file mode 100644
index 0000000..e2d78d0
Binary files /dev/null and b/ensping/ensp13/entry/src/main/resources/base/media/jiaohuanji_tm.png differ
diff --git a/ensping/ensp13/entry/src/main/resources/base/media/jixianqi.png b/ensping/ensp13/entry/src/main/resources/base/media/jixianqi.png
new file mode 100644
index 0000000..5b3de1a
Binary files /dev/null and b/ensping/ensp13/entry/src/main/resources/base/media/jixianqi.png differ
diff --git a/ensping/ensp13/entry/src/main/resources/base/media/jixianqi_tm.png b/ensping/ensp13/entry/src/main/resources/base/media/jixianqi_tm.png
new file mode 100644
index 0000000..cdae403
Binary files /dev/null and b/ensping/ensp13/entry/src/main/resources/base/media/jixianqi_tm.png differ
diff --git a/ensping/ensp13/entry/src/main/resources/base/media/luyouqi.png b/ensping/ensp13/entry/src/main/resources/base/media/luyouqi.png
new file mode 100644
index 0000000..cb99d04
Binary files /dev/null and b/ensping/ensp13/entry/src/main/resources/base/media/luyouqi.png differ
diff --git a/ensping/ensp13/entry/src/main/resources/base/media/luyouqi_tm.png b/ensping/ensp13/entry/src/main/resources/base/media/luyouqi_tm.png
new file mode 100644
index 0000000..8c17004
Binary files /dev/null and b/ensping/ensp13/entry/src/main/resources/base/media/luyouqi_tm.png differ
diff --git a/ensping/ensp13/entry/src/main/resources/base/media/packet.png b/ensping/ensp13/entry/src/main/resources/base/media/packet.png
new file mode 100644
index 0000000..50a8ef0
Binary files /dev/null and b/ensping/ensp13/entry/src/main/resources/base/media/packet.png differ
diff --git a/ensping/ensp13/entry/src/main/resources/base/media/startIcon.png b/ensping/ensp13/entry/src/main/resources/base/media/startIcon.png
new file mode 100644
index 0000000..366f764
Binary files /dev/null and b/ensping/ensp13/entry/src/main/resources/base/media/startIcon.png differ
diff --git a/ensping/ensp13/entry/src/main/resources/base/media/zhuji.png b/ensping/ensp13/entry/src/main/resources/base/media/zhuji.png
new file mode 100644
index 0000000..58189e3
Binary files /dev/null and b/ensping/ensp13/entry/src/main/resources/base/media/zhuji.png differ
diff --git a/ensping/ensp13/entry/src/main/resources/base/media/zhuji_tm.png b/ensping/ensp13/entry/src/main/resources/base/media/zhuji_tm.png
new file mode 100644
index 0000000..a2e634a
Binary files /dev/null and b/ensping/ensp13/entry/src/main/resources/base/media/zhuji_tm.png differ
diff --git a/ensping/ensp13/entry/src/main/resources/base/profile/main_pages.json b/ensping/ensp13/entry/src/main/resources/base/profile/main_pages.json
new file mode 100644
index 0000000..1898d94
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/resources/base/profile/main_pages.json
@@ -0,0 +1,5 @@
+{
+ "src": [
+ "pages/Index"
+ ]
+}
diff --git a/ensping/ensp13/entry/src/main/resources/en_US/element/string.json b/ensping/ensp13/entry/src/main/resources/en_US/element/string.json
new file mode 100644
index 0000000..f945955
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/resources/en_US/element/string.json
@@ -0,0 +1,16 @@
+{
+ "string": [
+ {
+ "name": "module_desc",
+ "value": "module description"
+ },
+ {
+ "name": "EntryAbility_desc",
+ "value": "description"
+ },
+ {
+ "name": "EntryAbility_label",
+ "value": "label"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/main/resources/zh_CN/element/string.json b/ensping/ensp13/entry/src/main/resources/zh_CN/element/string.json
new file mode 100644
index 0000000..597ecf9
--- /dev/null
+++ b/ensping/ensp13/entry/src/main/resources/zh_CN/element/string.json
@@ -0,0 +1,16 @@
+{
+ "string": [
+ {
+ "name": "module_desc",
+ "value": "模块描述"
+ },
+ {
+ "name": "EntryAbility_desc",
+ "value": "description"
+ },
+ {
+ "name": "EntryAbility_label",
+ "value": "label"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/ohosTest/ets/test/Ability.test.ets b/ensping/ensp13/entry/src/ohosTest/ets/test/Ability.test.ets
new file mode 100644
index 0000000..8aa3749
--- /dev/null
+++ b/ensping/ensp13/entry/src/ohosTest/ets/test/Ability.test.ets
@@ -0,0 +1,35 @@
+import hilog from '@ohos.hilog';
+import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium';
+
+export default function abilityTest() {
+ describe('ActsAbilityTest', () => {
+ // Defines a test suite. Two parameters are supported: test suite name and test suite function.
+ beforeAll(() => {
+ // Presets an action, which is performed only once before all test cases of the test suite start.
+ // This API supports only one parameter: preset action function.
+ })
+ beforeEach(() => {
+ // Presets an action, which is performed before each unit test case starts.
+ // The number of execution times is the same as the number of test cases defined by **it**.
+ // This API supports only one parameter: preset action function.
+ })
+ afterEach(() => {
+ // Presets a clear action, which is performed after each unit test case ends.
+ // The number of execution times is the same as the number of test cases defined by **it**.
+ // This API supports only one parameter: clear action function.
+ })
+ afterAll(() => {
+ // Presets a clear action, which is performed after all test cases of the test suite end.
+ // This API supports only one parameter: clear action function.
+ })
+ it('assertContain', 0, () => {
+ // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function.
+ hilog.info(0x0000, 'testTag', '%{public}s', 'it begin');
+ let a = 'abc';
+ let b = 'b';
+ // Defines a variety of assertion methods, which are used to declare expected boolean conditions.
+ expect(a).assertContain(b);
+ expect(a).assertEqual(a);
+ })
+ })
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/ohosTest/ets/test/List.test.ets b/ensping/ensp13/entry/src/ohosTest/ets/test/List.test.ets
new file mode 100644
index 0000000..794c7dc
--- /dev/null
+++ b/ensping/ensp13/entry/src/ohosTest/ets/test/List.test.ets
@@ -0,0 +1,5 @@
+import abilityTest from './Ability.test';
+
+export default function testsuite() {
+ abilityTest();
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/ohosTest/ets/testability/TestAbility.ets b/ensping/ensp13/entry/src/ohosTest/ets/testability/TestAbility.ets
new file mode 100644
index 0000000..9484761
--- /dev/null
+++ b/ensping/ensp13/entry/src/ohosTest/ets/testability/TestAbility.ets
@@ -0,0 +1,50 @@
+import UIAbility from '@ohos.app.ability.UIAbility';
+import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry';
+import hilog from '@ohos.hilog';
+import { Hypium } from '@ohos/hypium';
+import testsuite from '../test/List.test';
+import window from '@ohos.window';
+import Want from '@ohos.app.ability.Want';
+import AbilityConstant from '@ohos.app.ability.AbilityConstant';
+
+export default class TestAbility extends UIAbility {
+ onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
+ hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onCreate');
+ hilog.info(0x0000, 'testTag', '%{public}s', 'want param:' + JSON.stringify(want) ?? '');
+ hilog.info(0x0000, 'testTag', '%{public}s', 'launchParam:' + JSON.stringify(launchParam) ?? '');
+ let abilityDelegator: AbilityDelegatorRegistry.AbilityDelegator;
+ abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator();
+ let abilityDelegatorArguments: AbilityDelegatorRegistry.AbilityDelegatorArgs;
+ abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments();
+ hilog.info(0x0000, 'testTag', '%{public}s', 'start run testcase!!!');
+ Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite);
+ }
+
+ onDestroy() {
+ hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onDestroy');
+ }
+
+ onWindowStageCreate(windowStage: window.WindowStage) {
+ hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageCreate');
+ windowStage.loadContent('testability/pages/Index', (err, data) => {
+ if (err.code) {
+ hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
+ return;
+ }
+ hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s',
+ JSON.stringify(data) ?? '');
+ });
+ }
+
+ onWindowStageDestroy() {
+ hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageDestroy');
+ }
+
+ onForeground() {
+ hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onForeground');
+ }
+
+ onBackground() {
+ hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onBackground');
+ }
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/ohosTest/ets/testability/pages/Index.ets b/ensping/ensp13/entry/src/ohosTest/ets/testability/pages/Index.ets
new file mode 100644
index 0000000..423b427
--- /dev/null
+++ b/ensping/ensp13/entry/src/ohosTest/ets/testability/pages/Index.ets
@@ -0,0 +1,17 @@
+@Entry
+@Component
+struct Index {
+ @State message: string = 'Hello World';
+
+ build() {
+ Row() {
+ Column() {
+ Text(this.message)
+ .fontSize(50)
+ .fontWeight(FontWeight.Bold)
+ }
+ .width('100%')
+ }
+ .height('100%')
+ }
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ets b/ensping/ensp13/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ets
new file mode 100644
index 0000000..917d27a
--- /dev/null
+++ b/ensping/ensp13/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ets
@@ -0,0 +1,47 @@
+import hilog from '@ohos.hilog';
+import TestRunner from '@ohos.application.testRunner';
+import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry';
+import Want from '@ohos.app.ability.Want';
+
+let abilityDelegator: AbilityDelegatorRegistry.AbilityDelegator | undefined = undefined
+let abilityDelegatorArguments: AbilityDelegatorRegistry.AbilityDelegatorArgs | undefined = undefined
+
+async function onAbilityCreateCallback() {
+ hilog.info(0x0000, 'testTag', '%{public}s', 'onAbilityCreateCallback');
+}
+
+async function addAbilityMonitorCallback(err : Error) {
+ hilog.info(0x0000, 'testTag', 'addAbilityMonitorCallback : %{public}s', JSON.stringify(err) ?? '');
+}
+
+export default class OpenHarmonyTestRunner implements TestRunner {
+ constructor() {
+ }
+
+ onPrepare() {
+ hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner OnPrepare ');
+ }
+
+ async onRun() {
+ hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun run');
+ abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments()
+ abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator()
+ const bundleName = abilityDelegatorArguments.bundleName;
+ const testAbilityName = 'TestAbility';
+ let lMonitor: AbilityDelegatorRegistry.AbilityMonitor = {
+ abilityName: testAbilityName,
+ onAbilityCreate: onAbilityCreateCallback,
+ };
+ abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback)
+ const want: Want = {
+ bundleName: bundleName,
+ abilityName: testAbilityName
+ };
+ abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator();
+ abilityDelegator.startAbility(want, (err, data) => {
+ hilog.info(0x0000, 'testTag', 'startAbility : err : %{public}s', JSON.stringify(err) ?? '');
+ hilog.info(0x0000, 'testTag', 'startAbility : data : %{public}s',JSON.stringify(data) ?? '');
+ })
+ hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun end');
+ }
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/ohosTest/module.json5 b/ensping/ensp13/entry/src/ohosTest/module.json5
new file mode 100644
index 0000000..4fc9701
--- /dev/null
+++ b/ensping/ensp13/entry/src/ohosTest/module.json5
@@ -0,0 +1,37 @@
+{
+ "module": {
+ "name": "entry_test",
+ "type": "feature",
+ "description": "$string:module_test_desc",
+ "mainElement": "TestAbility",
+ "deviceTypes": [
+ "default",
+ "tablet"
+ ],
+ "deliveryWithInstall": true,
+ "installationFree": false,
+ "pages": "$profile:test_pages",
+ "abilities": [
+ {
+ "name": "TestAbility",
+ "srcEntry": "./ets/testability/TestAbility.ets",
+ "description": "$string:TestAbility_desc",
+ "icon": "$media:icon",
+ "label": "$string:TestAbility_label",
+ "exported": true,
+ "startWindowIcon": "$media:icon",
+ "startWindowBackground": "$color:start_window_background",
+ "skills": [
+ {
+ "actions": [
+ "action.system.home"
+ ],
+ "entities": [
+ "entity.system.home"
+ ]
+ }
+ ]
+ }
+ ]
+ }
+}
diff --git a/ensping/ensp13/entry/src/ohosTest/resources/base/element/color.json b/ensping/ensp13/entry/src/ohosTest/resources/base/element/color.json
new file mode 100644
index 0000000..3c71296
--- /dev/null
+++ b/ensping/ensp13/entry/src/ohosTest/resources/base/element/color.json
@@ -0,0 +1,8 @@
+{
+ "color": [
+ {
+ "name": "start_window_background",
+ "value": "#FFFFFF"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/ohosTest/resources/base/element/string.json b/ensping/ensp13/entry/src/ohosTest/resources/base/element/string.json
new file mode 100644
index 0000000..65d8fa5
--- /dev/null
+++ b/ensping/ensp13/entry/src/ohosTest/resources/base/element/string.json
@@ -0,0 +1,16 @@
+{
+ "string": [
+ {
+ "name": "module_test_desc",
+ "value": "test ability description"
+ },
+ {
+ "name": "TestAbility_desc",
+ "value": "the test ability"
+ },
+ {
+ "name": "TestAbility_label",
+ "value": "test label"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/ohosTest/resources/base/media/icon.png b/ensping/ensp13/entry/src/ohosTest/resources/base/media/icon.png
new file mode 100644
index 0000000..ce307a8
Binary files /dev/null and b/ensping/ensp13/entry/src/ohosTest/resources/base/media/icon.png differ
diff --git a/ensping/ensp13/entry/src/ohosTest/resources/base/profile/test_pages.json b/ensping/ensp13/entry/src/ohosTest/resources/base/profile/test_pages.json
new file mode 100644
index 0000000..b7e7343
--- /dev/null
+++ b/ensping/ensp13/entry/src/ohosTest/resources/base/profile/test_pages.json
@@ -0,0 +1,5 @@
+{
+ "src": [
+ "testability/pages/Index"
+ ]
+}
diff --git a/ensping/ensp13/entry/src/test/List.test.ets b/ensping/ensp13/entry/src/test/List.test.ets
new file mode 100644
index 0000000..bb5b5c3
--- /dev/null
+++ b/ensping/ensp13/entry/src/test/List.test.ets
@@ -0,0 +1,5 @@
+import localUnitTest from './LocalUnit.test';
+
+export default function testsuite() {
+ localUnitTest();
+}
\ No newline at end of file
diff --git a/ensping/ensp13/entry/src/test/LocalUnit.test.ets b/ensping/ensp13/entry/src/test/LocalUnit.test.ets
new file mode 100644
index 0000000..ed22d4d
--- /dev/null
+++ b/ensping/ensp13/entry/src/test/LocalUnit.test.ets
@@ -0,0 +1,33 @@
+import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium';
+
+export default function localUnitTest() {
+ describe('localUnitTest',() => {
+ // Defines a test suite. Two parameters are supported: test suite name and test suite function.
+ beforeAll(() => {
+ // Presets an action, which is performed only once before all test cases of the test suite start.
+ // This API supports only one parameter: preset action function.
+ });
+ beforeEach(() => {
+ // Presets an action, which is performed before each unit test case starts.
+ // The number of execution times is the same as the number of test cases defined by **it**.
+ // This API supports only one parameter: preset action function.
+ });
+ afterEach(() => {
+ // Presets a clear action, which is performed after each unit test case ends.
+ // The number of execution times is the same as the number of test cases defined by **it**.
+ // This API supports only one parameter: clear action function.
+ });
+ afterAll(() => {
+ // Presets a clear action, which is performed after all test cases of the test suite end.
+ // This API supports only one parameter: clear action function.
+ });
+ it('assertContain', 0, () => {
+ // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function.
+ let a = 'abc';
+ let b = 'b';
+ // Defines a variety of assertion methods, which are used to declare expected boolean conditions.
+ expect(a).assertContain(b);
+ expect(a).assertEqual(a);
+ });
+ });
+}
\ No newline at end of file
diff --git a/ensping/ensp13/hvigor/hvigor-config.json5 b/ensping/ensp13/hvigor/hvigor-config.json5
new file mode 100644
index 0000000..1a47490
--- /dev/null
+++ b/ensping/ensp13/hvigor/hvigor-config.json5
@@ -0,0 +1,18 @@
+{
+ "hvigorVersion": "3.0.9",
+ "dependencies": {
+ "@ohos/hvigor-ohos-plugin": "3.0.9"
+ },
+ "execution": {
+ // "daemon": true, /* Enable daemon compilation. Default: true */
+ // "incremental": true, /* Enable incremental compilation. Default: true */
+ // "parallel": true, /* Enable parallel compilation. Default: true */
+ // "typeCheck": false, /* Enable typeCheck. Default: false */
+ },
+ "logging": {
+ // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */
+ },
+ "debugging": {
+ // "stacktrace": false /* Disable stacktrace compilation. Default: false */
+ }
+}
diff --git a/ensping/ensp13/hvigor/hvigor-wrapper.js b/ensping/ensp13/hvigor/hvigor-wrapper.js
new file mode 100644
index 0000000..372eae8
--- /dev/null
+++ b/ensping/ensp13/hvigor/hvigor-wrapper.js
@@ -0,0 +1 @@
+"use strict";var u=require("path"),D=require("os"),e=require("fs"),t=require("crypto"),r=require("child_process"),n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},i={},C={},F=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(C,"__esModule",{value:!0}),C.maxPathLength=C.isMac=C.isLinux=C.isWindows=void 0;const E=F(D),A="Windows_NT",o="Darwin";function a(){return E.default.type()===A}function c(){return E.default.type()===o}C.isWindows=a,C.isLinux=function(){return"Linux"===E.default.type()},C.isMac=c,C.maxPathLength=function(){return c()?1016:a()?259:4095},function(e){var t=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),r=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),i=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&t(D,u,e);return r(D,u),D};Object.defineProperty(e,"__esModule",{value:!0}),e.WORK_SPACE=e.HVIGOR_PROJECT_WRAPPER_HOME=e.HVIGOR_PROJECT_ROOT_DIR=e.HVIGOR_PROJECT_CACHES_HOME=e.HVIGOR_PNPM_STORE_PATH=e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=e.PROJECT_CACHES=e.HVIGOR_WRAPPER_TOOLS_HOME=e.HVIGOR_USER_HOME=e.DEFAULT_PACKAGE_JSON=e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME=e.PNPM=e.HVIGOR=e.NPM_TOOL=e.PNPM_TOOL=e.HVIGOR_ENGINE_PACKAGE_NAME=void 0;const F=i(D),E=i(u),A=C;e.HVIGOR_ENGINE_PACKAGE_NAME="@ohos/hvigor",e.PNPM_TOOL=(0,A.isWindows)()?"pnpm.cmd":"pnpm",e.NPM_TOOL=(0,A.isWindows)()?"npm.cmd":"npm",e.HVIGOR="hvigor",e.PNPM="pnpm",e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME="hvigor-config.json5",e.DEFAULT_PACKAGE_JSON="package.json",e.HVIGOR_USER_HOME=E.resolve(F.homedir(),".hvigor"),e.HVIGOR_WRAPPER_TOOLS_HOME=E.resolve(e.HVIGOR_USER_HOME,"wrapper","tools"),e.PROJECT_CACHES="project_caches",e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=E.resolve(e.HVIGOR_WRAPPER_TOOLS_HOME,"node_modules",".bin",e.PNPM_TOOL),e.HVIGOR_PNPM_STORE_PATH=E.resolve(e.HVIGOR_USER_HOME,"caches"),e.HVIGOR_PROJECT_CACHES_HOME=E.resolve(e.HVIGOR_USER_HOME,e.PROJECT_CACHES),e.HVIGOR_PROJECT_ROOT_DIR=process.cwd(),e.HVIGOR_PROJECT_WRAPPER_HOME=E.resolve(e.HVIGOR_PROJECT_ROOT_DIR,e.HVIGOR),e.WORK_SPACE="workspace"}(i);var s={},l={};Object.defineProperty(l,"__esModule",{value:!0}),l.logInfoPrintConsole=l.logErrorAndExit=void 0,l.logErrorAndExit=function(u){u instanceof Error?console.error(u.message):console.error(u),process.exit(-1)},l.logInfoPrintConsole=function(u){console.log(u)};var B=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),d=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),f=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&B(D,u,e);return d(D,u),D};Object.defineProperty(s,"__esModule",{value:!0});var _=s.executeBuild=void 0;const p=f(e),O=f(u),h=l;_=s.executeBuild=function(u){const D=O.resolve(u,"node_modules","@ohos","hvigor","bin","hvigor.js");try{const u=p.realpathSync(D);require(u)}catch(e){(0,h.logErrorAndExit)(`Error: ENOENT: no such file ${D},delete ${u} and retry.`)}};var P={},v={};!function(u){var D=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(u,"__esModule",{value:!0}),u.hashFile=u.hash=u.createHash=void 0;const r=D(t),i=D(e);u.createHash=(u="MD5")=>r.default.createHash(u);u.hash=(D,e)=>(0,u.createHash)(e).update(D).digest("hex");u.hashFile=(D,e)=>{if(i.default.existsSync(D))return(0,u.hash)(i.default.readFileSync(D,"utf-8"),e)}}(v);var g={},m={},R={};Object.defineProperty(R,"__esModule",{value:!0}),R.Unicode=void 0;class y{}R.Unicode=y,y.SPACE_SEPARATOR=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,y.ID_START=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,y.ID_CONTINUE=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,Object.defineProperty(m,"__esModule",{value:!0}),m.JudgeUtil=void 0;const I=R;m.JudgeUtil=class{static isIgnoreChar(u){return"string"==typeof u&&("\t"===u||"\v"===u||"\f"===u||" "===u||" "===u||"\ufeff"===u||"\n"===u||"\r"===u||"\u2028"===u||"\u2029"===u)}static isSpaceSeparator(u){return"string"==typeof u&&I.Unicode.SPACE_SEPARATOR.test(u)}static isIdStartChar(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||I.Unicode.ID_START.test(u))}static isIdContinueChar(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||"$"===u||"_"===u||""===u||""===u||I.Unicode.ID_CONTINUE.test(u))}static isDigitWithoutZero(u){return/[1-9]/.test(u)}static isDigit(u){return"string"==typeof u&&/[0-9]/.test(u)}static isHexDigit(u){return"string"==typeof u&&/[0-9A-Fa-f]/.test(u)}};var N=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(g,"__esModule",{value:!0}),g.parseJsonText=g.parseJsonFile=void 0;const b=N(e),S=N(D),w=N(u),H=m;var x;!function(u){u[u.Char=0]="Char",u[u.EOF=1]="EOF",u[u.Identifier=2]="Identifier"}(x||(x={}));let M,T,V,G,j,J,W="start",U=[],L=0,$=1,k=0,K=!1,z="default",q="'",Z=1;function X(u,D=!1){T=String(u),W="start",U=[],L=0,$=1,k=0,G=void 0,K=D;do{M=Q(),nu[W]()}while("eof"!==M.type);return G}function Q(){for(z="default",j="",q="'",Z=1;;){J=Y();const u=Du[z]();if(u)return u}}function Y(){if(T[L])return String.fromCodePoint(T.codePointAt(L))}function uu(){const u=Y();return"\n"===u?($++,k=0):u?k+=u.length:k++,u&&(L+=u.length),u}g.parseJsonFile=function(u,D=!1,e="utf-8"){const t=b.default.readFileSync(w.default.resolve(u),{encoding:e});try{return X(t,D)}catch(D){if(D instanceof SyntaxError){const e=D.message.split("at");if(2===e.length)throw new Error(`${e[0].trim()}${S.default.EOL}\t at ${u}:${e[1].trim()}`)}throw new Error(`${u} is not in valid JSON/JSON5 format.`)}},g.parseJsonText=X;const Du={default(){switch(J){case"/":return uu(),void(z="comment");case void 0:return uu(),eu("eof")}if(!H.JudgeUtil.isIgnoreChar(J)&&!H.JudgeUtil.isSpaceSeparator(J))return Du[W]();uu()},start(){z="value"},beforePropertyName(){switch(J){case"$":case"_":return j=uu(),void(z="identifierName");case"\\":return uu(),void(z="identifierNameStartEscape");case"}":return eu("punctuator",uu());case'"':case"'":return q=J,uu(),void(z="string")}if(H.JudgeUtil.isIdStartChar(J))return j+=uu(),void(z="identifierName");throw Eu(x.Char,uu())},afterPropertyName(){if(":"===J)return eu("punctuator",uu());throw Eu(x.Char,uu())},beforePropertyValue(){z="value"},afterPropertyValue(){switch(J){case",":case"}":return eu("punctuator",uu())}throw Eu(x.Char,uu())},beforeArrayValue(){if("]"===J)return eu("punctuator",uu());z="value"},afterArrayValue(){switch(J){case",":case"]":return eu("punctuator",uu())}throw Eu(x.Char,uu())},end(){throw Eu(x.Char,uu())},comment(){switch(J){case"*":return uu(),void(z="multiLineComment");case"/":return uu(),void(z="singleLineComment")}throw Eu(x.Char,uu())},multiLineComment(){switch(J){case"*":return uu(),void(z="multiLineCommentAsterisk");case void 0:throw Eu(x.Char,uu())}uu()},multiLineCommentAsterisk(){switch(J){case"*":return void uu();case"/":return uu(),void(z="default");case void 0:throw Eu(x.Char,uu())}uu(),z="multiLineComment"},singleLineComment(){switch(J){case"\n":case"\r":case"\u2028":case"\u2029":return uu(),void(z="default");case void 0:return uu(),eu("eof")}uu()},value(){switch(J){case"{":case"[":return eu("punctuator",uu());case"n":return uu(),tu("ull"),eu("null",null);case"t":return uu(),tu("rue"),eu("boolean",!0);case"f":return uu(),tu("alse"),eu("boolean",!1);case"-":case"+":return"-"===uu()&&(Z=-1),void(z="numerical");case".":case"0":case"I":case"N":return void(z="numerical");case'"':case"'":return q=J,uu(),j="",void(z="string")}if(void 0===J||!H.JudgeUtil.isDigitWithoutZero(J))throw Eu(x.Char,uu());z="numerical"},numerical(){switch(J){case".":return j=uu(),void(z="decimalPointLeading");case"0":return j=uu(),void(z="zero");case"I":return uu(),tu("nfinity"),eu("numeric",Z*(1/0));case"N":return uu(),tu("aN"),eu("numeric",NaN)}if(void 0!==J&&H.JudgeUtil.isDigitWithoutZero(J))return j=uu(),void(z="decimalInteger");throw Eu(x.Char,uu())},zero(){switch(J){case".":case"e":case"E":return void(z="decimal");case"x":case"X":return j+=uu(),void(z="hexadecimal")}return eu("numeric",0)},decimalInteger(){switch(J){case".":case"e":case"E":return void(z="decimal")}if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},decimal(){switch(J){case".":j+=uu(),z="decimalFraction";break;case"e":case"E":j+=uu(),z="decimalExponent"}},decimalPointLeading(){if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalFraction");throw Eu(x.Char,uu())},decimalFraction(){switch(J){case"e":case"E":return j+=uu(),void(z="decimalExponent")}if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},decimalExponent(){switch(J){case"+":case"-":return j+=uu(),void(z="decimalExponentSign")}if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalExponentInteger");throw Eu(x.Char,uu())},decimalExponentSign(){if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalExponentInteger");throw Eu(x.Char,uu())},decimalExponentInteger(){if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},hexadecimal(){if(H.JudgeUtil.isHexDigit(J))return j+=uu(),void(z="hexadecimalInteger");throw Eu(x.Char,uu())},hexadecimalInteger(){if(!H.JudgeUtil.isHexDigit(J))return eu("numeric",Z*Number(j));j+=uu()},identifierNameStartEscape(){if("u"!==J)throw Eu(x.Char,uu());uu();const u=ru();switch(u){case"$":case"_":break;default:if(!H.JudgeUtil.isIdStartChar(u))throw Eu(x.Identifier)}j+=u,z="identifierName"},identifierName(){switch(J){case"$":case"_":case"":case"":return void(j+=uu());case"\\":return uu(),void(z="identifierNameEscape")}if(!H.JudgeUtil.isIdContinueChar(J))return eu("identifier",j);j+=uu()},identifierNameEscape(){if("u"!==J)throw Eu(x.Char,uu());uu();const u=ru();switch(u){case"$":case"_":case"":case"":break;default:if(!H.JudgeUtil.isIdContinueChar(u))throw Eu(x.Identifier)}j+=u,z="identifierName"},string(){switch(J){case"\\":return uu(),void(j+=function(){const u=Y(),D=function(){switch(Y()){case"b":return uu(),"\b";case"f":return uu(),"\f";case"n":return uu(),"\n";case"r":return uu(),"\r";case"t":return uu(),"\t";case"v":return uu(),"\v"}return}();if(D)return D;switch(u){case"0":if(uu(),H.JudgeUtil.isDigit(Y()))throw Eu(x.Char,uu());return"\0";case"x":return uu(),function(){let u="",D=Y();if(!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());if(u+=uu(),D=Y(),!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());return u+=uu(),String.fromCodePoint(parseInt(u,16))}();case"u":return uu(),ru();case"\n":case"\u2028":case"\u2029":return uu(),"";case"\r":return uu(),"\n"===Y()&&uu(),""}if(void 0===u||H.JudgeUtil.isDigitWithoutZero(u))throw Eu(x.Char,uu());return uu()}());case'"':case"'":if(J===q){const u=eu("string",j);return uu(),u}return void(j+=uu());case"\n":case"\r":case void 0:throw Eu(x.Char,uu());case"\u2028":case"\u2029":!function(u){console.warn(`JSON5: '${Fu(u)}' in strings is not valid ECMAScript; consider escaping.`)}(J)}j+=uu()}};function eu(u,D){return{type:u,value:D,line:$,column:k}}function tu(u){for(const D of u){if(Y()!==D)throw Eu(x.Char,uu());uu()}}function ru(){let u="",D=4;for(;D-- >0;){const D=Y();if(!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());u+=uu()}return String.fromCodePoint(parseInt(u,16))}const nu={start(){if("eof"===M.type)throw Eu(x.EOF);iu()},beforePropertyName(){switch(M.type){case"identifier":case"string":return V=M.value,void(W="afterPropertyName");case"punctuator":return void Cu();case"eof":throw Eu(x.EOF)}},afterPropertyName(){if("eof"===M.type)throw Eu(x.EOF);W="beforePropertyValue"},beforePropertyValue(){if("eof"===M.type)throw Eu(x.EOF);iu()},afterPropertyValue(){if("eof"===M.type)throw Eu(x.EOF);switch(M.value){case",":return void(W="beforePropertyName");case"}":Cu()}},beforeArrayValue(){if("eof"===M.type)throw Eu(x.EOF);"punctuator"!==M.type||"]"!==M.value?iu():Cu()},afterArrayValue(){if("eof"===M.type)throw Eu(x.EOF);switch(M.value){case",":return void(W="beforeArrayValue");case"]":Cu()}},end(){}};function iu(){const u=function(){let u;switch(M.type){case"punctuator":switch(M.value){case"{":u={};break;case"[":u=[]}break;case"null":case"boolean":case"numeric":case"string":u=M.value}return u}();if(K&&"object"==typeof u&&(u._line=$,u._column=k),void 0===G)G=u;else{const D=U[U.length-1];Array.isArray(D)?K&&"object"!=typeof u?D.push({value:u,_line:$,_column:k}):D.push(u):D[V]=K&&"object"!=typeof u?{value:u,_line:$,_column:k}:u}!function(u){if(u&&"object"==typeof u)U.push(u),W=Array.isArray(u)?"beforeArrayValue":"beforePropertyName";else{const u=U[U.length-1];W=u?Array.isArray(u)?"afterArrayValue":"afterPropertyValue":"end"}}(u)}function Cu(){U.pop();const u=U[U.length-1];W=u?Array.isArray(u)?"afterArrayValue":"afterPropertyValue":"end"}function Fu(u){const D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(D[u])return D[u];if(u<" "){const D=u.charCodeAt(0).toString(16);return`\\x${`00${D}`.substring(D.length)}`}return u}function Eu(u,D){let e="";switch(u){case x.Char:e=void 0===D?`JSON5: invalid end of input at ${$}:${k}`:`JSON5: invalid character '${Fu(D)}' at ${$}:${k}`;break;case x.EOF:e=`JSON5: invalid end of input at ${$}:${k}`;break;case x.Identifier:k-=5,e=`JSON5: invalid identifier character at ${$}:${k}`}const t=new Au(e);return t.lineNumber=$,t.columnNumber=k,t}class Au extends SyntaxError{}var ou={},au=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),cu=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),su=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&au(D,u,e);return cu(D,u),D},lu=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(ou,"__esModule",{value:!0}),ou.isFileExists=ou.offlinePluginConversion=ou.executeCommand=ou.getNpmPath=ou.hasNpmPackInPaths=void 0;const Bu=r,du=lu(e),fu=su(u),_u=i,pu=l;ou.hasNpmPackInPaths=function(u,D){try{return require.resolve(u,{paths:[...D]}),!0}catch(u){return!1}},ou.getNpmPath=function(){const u=process.execPath;return fu.join(fu.dirname(u),_u.NPM_TOOL)},ou.executeCommand=function(u,D,e){0!==(0,Bu.spawnSync)(u,D,e).status&&(0,pu.logErrorAndExit)(`Error: ${u} ${D} execute failed.See above for details.`)},ou.offlinePluginConversion=function(u,D){return D.startsWith("file:")||D.endsWith(".tgz")?fu.resolve(u,_u.HVIGOR,D.replace("file:","")):D},ou.isFileExists=function(u){return du.default.existsSync(u)&&du.default.statSync(u).isFile()};var Ou=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),hu=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),Pu=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&Ou(D,u,e);return hu(D,u),D},vu=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(P,"__esModule",{value:!0});var gu=P.initProjectWorkSpace=void 0;const mu=Pu(e),Ru=vu(D),yu=Pu(u),Iu=v,Nu=i,bu=g,Su=l,wu=ou;let Hu,xu,Mu;function Tu(u,D,e){return void 0!==e.dependencies&&(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,D.dependencies[u])===yu.normalize(e.dependencies[u])}function Vu(){const u=yu.join(Mu,Nu.WORK_SPACE);if((0,Su.logInfoPrintConsole)("Hvigor cleaning..."),!mu.existsSync(u))return;const D=mu.readdirSync(u);if(!D||0===D.length)return;const e=yu.resolve(Mu,"node_modules","@ohos","hvigor","bin","hvigor.js");mu.existsSync(e)&&(0,wu.executeCommand)(process.argv[0],[e,"--stop-daemon"],{});try{D.forEach((D=>{mu.rmSync(yu.resolve(u,D),{recursive:!0})}))}catch(D){(0,Su.logErrorAndExit)(`The hvigor build tool cannot be installed. Please manually clear the workspace directory and synchronize the project again.\n\n Workspace Path: ${u}.`)}}gu=P.initProjectWorkSpace=function(){if(Hu=function(){const u=yu.resolve(Nu.HVIGOR_PROJECT_WRAPPER_HOME,Nu.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME);mu.existsSync(u)||(0,Su.logErrorAndExit)(`Error: Hvigor config file ${u} does not exist.`);return(0,bu.parseJsonFile)(u)}(),Mu=function(u){let D;D=function(u){let D=u.hvigorVersion;if(D.startsWith("file:")||D.endsWith(".tgz"))return!1;const e=u.dependencies,t=Object.getOwnPropertyNames(e);for(const u of t){const D=e[u];if(D.startsWith("file:")||D.endsWith(".tgz"))return!1}if(1===t.length&&"@ohos/hvigor-ohos-plugin"===t[0])return D>"2.5.0";return!1}(u)?function(u){let D=`${Nu.HVIGOR_ENGINE_PACKAGE_NAME}@${u.hvigorVersion}`;const e=u.dependencies;if(e){Object.getOwnPropertyNames(e).sort().forEach((u=>{D+=`,${u}@${e[u]}`}))}return(0,Iu.hash)(D)}(u):(0,Iu.hash)(process.cwd());return yu.resolve(Ru.default.homedir(),".hvigor","project_caches",D)}(Hu),xu=function(){const u=yu.resolve(Mu,Nu.WORK_SPACE,Nu.DEFAULT_PACKAGE_JSON);return mu.existsSync(u)?(0,bu.parseJsonFile)(u):{dependencies:{}}}(),!(0,wu.hasNpmPackInPaths)(Nu.HVIGOR_ENGINE_PACKAGE_NAME,[yu.join(Mu,Nu.WORK_SPACE)])||(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.hvigorVersion)!==xu.dependencies[Nu.HVIGOR_ENGINE_PACKAGE_NAME]||!function(){function u(u){const D=null==u?void 0:u.dependencies;return void 0===D?0:Object.getOwnPropertyNames(D).length}const D=u(Hu),e=u(xu);if(D+1!==e)return!1;for(const u in null==Hu?void 0:Hu.dependencies)if(!(0,wu.hasNpmPackInPaths)(u,[yu.join(Mu,Nu.WORK_SPACE)])||!Tu(u,Hu,xu))return!1;return!0}()){Vu();try{!function(){(0,Su.logInfoPrintConsole)("Hvigor installing...");for(const u in Hu.dependencies)Hu.dependencies[u]&&(Hu.dependencies[u]=(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.dependencies[u]));const u={dependencies:{...Hu.dependencies}};u.dependencies[Nu.HVIGOR_ENGINE_PACKAGE_NAME]=(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.hvigorVersion);const D=yu.join(Mu,Nu.WORK_SPACE);try{mu.mkdirSync(D,{recursive:!0});const e=yu.resolve(D,Nu.DEFAULT_PACKAGE_JSON);mu.writeFileSync(e,JSON.stringify(u))}catch(u){(0,Su.logErrorAndExit)(u)}(function(){const u=["config","set","store-dir",Nu.HVIGOR_PNPM_STORE_PATH],D={cwd:yu.join(Mu,Nu.WORK_SPACE),stdio:["inherit","inherit","inherit"]};(0,wu.executeCommand)(Nu.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,u,D)})(),function(){const u=["install"],D={cwd:yu.join(Mu,Nu.WORK_SPACE),stdio:["inherit","inherit","inherit"]};(0,wu.executeCommand)(Nu.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,u,D)}(),(0,Su.logInfoPrintConsole)("Hvigor install success.")}()}catch(u){Vu()}}return Mu};var Gu={};!function(t){var C=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),F=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),E=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&C(D,u,e);return F(D,u),D},A=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(t,"__esModule",{value:!0}),t.executeInstallPnpm=t.isPnpmInstalled=t.environmentHandler=t.checkNpmConifg=t.PNPM_VERSION=void 0;const o=r,a=E(e),c=A(D),s=E(u),B=i,d=l,f=ou;t.PNPM_VERSION="7.30.0",t.checkNpmConifg=function(){const u=s.resolve(B.HVIGOR_PROJECT_ROOT_DIR,".npmrc"),D=s.resolve(c.default.homedir(),".npmrc");if((0,f.isFileExists)(u)||(0,f.isFileExists)(D))return;const e=(0,f.getNpmPath)(),t=(0,o.spawnSync)(e,["config","get","prefix"],{cwd:B.HVIGOR_PROJECT_ROOT_DIR});if(0!==t.status||!t.stdout)return void(0,d.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.");const r=s.resolve(`${t.stdout}`.replace(/[\r\n]/gi,""),".npmrc");(0,f.isFileExists)(r)||(0,d.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.")},t.environmentHandler=function(){process.env["npm_config_update-notifier"]="false"},t.isPnpmInstalled=function(){return!!a.existsSync(B.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH)&&(0,f.hasNpmPackInPaths)("pnpm",[B.HVIGOR_WRAPPER_TOOLS_HOME])},t.executeInstallPnpm=function(){(0,d.logInfoPrintConsole)(`Installing pnpm@${t.PNPM_VERSION}...`);const u=(0,f.getNpmPath)();!function(){const u=s.resolve(B.HVIGOR_WRAPPER_TOOLS_HOME,B.DEFAULT_PACKAGE_JSON);try{a.existsSync(B.HVIGOR_WRAPPER_TOOLS_HOME)||a.mkdirSync(B.HVIGOR_WRAPPER_TOOLS_HOME,{recursive:!0});const D={dependencies:{}};D.dependencies[B.PNPM]=t.PNPM_VERSION,a.writeFileSync(u,JSON.stringify(D))}catch(D){(0,d.logErrorAndExit)(`Error: EPERM: operation not permitted,create ${u} failed.`)}}(),(0,f.executeCommand)(u,["install","pnpm"],{cwd:B.HVIGOR_WRAPPER_TOOLS_HOME,stdio:["inherit","inherit","inherit"],env:process.env}),(0,d.logInfoPrintConsole)("Pnpm install success.")}}(Gu),function(){Gu.checkNpmConifg(),Gu.environmentHandler(),Gu.isPnpmInstalled()||Gu.executeInstallPnpm();const D=gu();_(u.join(D,i.WORK_SPACE))}();
\ No newline at end of file
diff --git a/ensping/ensp13/hvigorfile.ts b/ensping/ensp13/hvigorfile.ts
new file mode 100644
index 0000000..f3cb9f1
--- /dev/null
+++ b/ensping/ensp13/hvigorfile.ts
@@ -0,0 +1,6 @@
+import { appTasks } from '@ohos/hvigor-ohos-plugin';
+
+export default {
+ system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
+ plugins:[] /* Custom plugin to extend the functionality of Hvigor. */
+}
diff --git a/ensping/ensp13/hvigorw b/ensping/ensp13/hvigorw
new file mode 100644
index 0000000..ff6a29a
--- /dev/null
+++ b/ensping/ensp13/hvigorw
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+# ----------------------------------------------------------------------------
+# Hvigor startup script, version 1.0.0
+#
+# Required ENV vars:
+# ------------------
+# NODE_HOME - location of a Node home dir
+# or
+# Add /usr/local/nodejs/bin to the PATH environment variable
+# ----------------------------------------------------------------------------
+
+HVIGOR_APP_HOME="`pwd -P`"
+HVIGOR_WRAPPER_SCRIPT=${HVIGOR_APP_HOME}/hvigor/hvigor-wrapper.js
+warn() {
+ echo ""
+ echo -e "\033[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m"
+}
+
+error() {
+ echo ""
+ echo -e "\033[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m"
+}
+
+fail() {
+ error "$@"
+ exit 1
+}
+
+# Determine node to start hvigor wrapper script
+if [ -n "${NODE_HOME}" ];then
+ EXECUTABLE_NODE="${NODE_HOME}/bin/node"
+ if [ ! -x "$EXECUTABLE_NODE" ];then
+ fail "ERROR: NODE_HOME is set to an invalid directory,check $NODE_HOME\n\nPlease set NODE_HOME in your environment to the location where your nodejs installed"
+ fi
+else
+ EXECUTABLE_NODE="node"
+ which ${EXECUTABLE_NODE} > /dev/null 2>&1 || fail "ERROR: NODE_HOME is not set and not 'node' command found in your path"
+fi
+
+# Check hvigor wrapper script
+if [ ! -r "$HVIGOR_WRAPPER_SCRIPT" ];then
+ fail "ERROR: Couldn't find hvigor/hvigor-wrapper.js in ${HVIGOR_APP_HOME}"
+fi
+
+# start hvigor-wrapper script
+exec "${EXECUTABLE_NODE}" \
+ "${HVIGOR_WRAPPER_SCRIPT}" "$@"
diff --git a/ensping/ensp13/hvigorw.bat b/ensping/ensp13/hvigorw.bat
new file mode 100644
index 0000000..d570007
--- /dev/null
+++ b/ensping/ensp13/hvigorw.bat
@@ -0,0 +1,64 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Hvigor startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+set WRAPPER_MODULE_PATH=%APP_HOME%\hvigor\hvigor-wrapper.js
+set NODE_EXE=node.exe
+
+goto start
+
+:start
+@rem Find node.exe
+if defined NODE_HOME goto findNodeFromNodeHome
+
+%NODE_EXE% --version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto execute
+
+echo.
+echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH.
+echo.
+echo Please set the NODE_HOME variable in your environment to match the
+echo location of your NodeJs installation.
+
+goto fail
+
+:findNodeFromNodeHome
+set NODE_HOME=%NODE_HOME:"=%
+set NODE_EXE_PATH=%NODE_HOME%/%NODE_EXE%
+
+if exist "%NODE_EXE_PATH%" goto execute
+echo.
+echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH.
+echo.
+echo Please set the NODE_HOME variable in your environment to match the
+echo location of your NodeJs installation.
+
+goto fail
+
+:execute
+@rem Execute hvigor
+"%NODE_EXE%" "%WRAPPER_MODULE_PATH%" %*
+
+if "%ERRORLEVEL%" == "0" goto hvigorwEnd
+
+:fail
+exit /b 1
+
+:hvigorwEnd
+if "%OS%" == "Windows_NT" endlocal
+
+:end
diff --git a/ensping/ensp13/local.properties b/ensping/ensp13/local.properties
new file mode 100644
index 0000000..1ad829e
--- /dev/null
+++ b/ensping/ensp13/local.properties
@@ -0,0 +1,10 @@
+# This file is automatically generated by DevEco Studio.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file should *NOT* be checked into Version Control Systems,
+# as it contains information specific to your local configuration.
+#
+# For customization when using a Version Control System, please read the header note.
+sdk.dir=F:/Huawei/SDK2
+nodejs.dir=F:/Huawei/node
+ohpm.dir=D:/computer_programing/Deveco_Studio/HuaWei/Ohpm
\ No newline at end of file
diff --git a/ensping/ensp13/oh-package-lock.json5 b/ensping/ensp13/oh-package-lock.json5
new file mode 100644
index 0000000..347b43f
--- /dev/null
+++ b/ensping/ensp13/oh-package-lock.json5
@@ -0,0 +1,13 @@
+{
+ "lockfileVersion": 1,
+ "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.",
+ "specifiers": {
+ "@ohos/hypium@1.0.11": "@ohos/hypium@1.0.11"
+ },
+ "packages": {
+ "@ohos/hypium@1.0.11": {
+ "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hypium/-/hypium-1.0.11.tgz",
+ "integrity": "sha512-KawcLnv43C3QIYv1UbDnKCFX3MohtDxGuFvzlUxT/qf2DBilR56Ws6zrj90LdH6PjloJQwOPESuBQIHBACAK7w=="
+ }
+ }
+}
\ No newline at end of file
diff --git a/ensping/ensp13/oh-package.json5 b/ensping/ensp13/oh-package.json5
new file mode 100644
index 0000000..804cddc
--- /dev/null
+++ b/ensping/ensp13/oh-package.json5
@@ -0,0 +1,12 @@
+{
+ "license": "",
+ "devDependencies": {
+ "@ohos/hypium": "1.0.11"
+ },
+ "author": "",
+ "name": "ensp2",
+ "description": "Please describe the basic information.",
+ "main": "",
+ "version": "1.0.0",
+ "dependencies": {}
+}
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/LICENSE b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/LICENSE
new file mode 100644
index 0000000..4947287
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/LICENSE
@@ -0,0 +1,177 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/README.md b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/README.md
new file mode 100644
index 0000000..762e757
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/README.md
@@ -0,0 +1,219 @@
+Hypium
+A unit test framework for OpenHarmonyOS application
+
+## Hypium是什么?
+***
+- Hypium是OpenHarmony上的测试框架,提供测试用例编写、执行、结果显示能力,用于OpenHarmony系统应用接口以及应用界面测试。
+- Hypium结构化模型:hypium工程主要由List.test.js与TestCase.test.js组成。
+```
+rootProject // Hypium工程根目录
+├── moduleA
+│ ├── src
+│ ├── main // 被测试应用目录
+│ ├── ohosTest // 测试用例目录
+│ ├── js/ets
+│ └── test
+│ └── List.test.js // 测试用例加载脚本,ets目录下为.ets后缀
+│ └── TestCase.test.js // 测试用例脚本,ets目录下为.ets后缀
+└── moduleB
+ ...
+│ └── List.test.js // 测试用例加载脚本,ets目录下为.ets后缀
+│ └── TestCase.test.js // 测试用例脚本,ets目录下为.ets后缀
+```
+
+## 安装使用
+***
+- 在DevEco Studio内使用Hypium
+- 工程级package.json内配置:
+```json
+"dependencies": {
+ "@ohos/hypium": "1.0.7"
+}
+```
+注:
+hypium服务于OpenHarmonyOS应用对外接口测试、系统对外接口测试(SDK中接口),完成HAP自动化测试。详细指导:
+[Deveco Studio](https://developer.harmonyos.com/cn/develop/deveco-studio)
+
+#### 通用语法
+
+- 测试用例采用业内通用语法,describe代表一个测试套, it代表一条用例。
+
+| No. | API | 功能说明 |
+| --- | ---------- | ---------------------------------------------------------------------------------------------------------------------- |
+| 1 | describe | 定义一个测试套,支持两个参数:测试套名称和测试套函数 |
+| 2 | beforeAll | 在测试套内定义一个预置条件,在所有测试用例开始前执行且仅执行一次,支持一个参数:预置动作函数 |
+| 3 | beforeEach | 在测试套内定义一个单元预置条件,在每条测试用例开始前执行,执行次数与it定义的测试用例数一致,支持一个参数:预置动作函数 |
+| 4 | afterEach | 在测试套内定义一个单元清理条件,在每条测试用例结束后执行,执行次数与it定义的测试用例数一致,支持一个参数:清理动作函数 |
+| 5 | afterAll | 在测试套内定义一个清理条件,在所有测试用例结束后执行且仅执行一次,支持一个参数:清理动作函数 |
+| 6 | it | 定义一条测试用例,支持三个参数:用例名称,过滤参数和用例函数 |
+| 7 | expect | 支持bool类型判断等多种断言方法 |
+
+#### 断言库
+
+- 示例代码:
+
+```javascript
+ expect(${actualvalue}).assertX(${expectvalue})
+```
+
+- 断言功能列表:
+
+| No. | API | 功能说明 |
+| :--- | :------------------------------- | ---------------------------------------------------------------------------------------------- |
+| 1 | assertClose | 检验actualvalue和expectvalue(0)的接近程度是否是expectValue(1) |
+| 2 | assertContain | 检验actualvalue中是否包含expectvalue |
+| 3 | assertDeepEquals | @since1.0.4 检验actualvalue和expectvalue(0)是否是同一个对象 |
+| 4 | assertEqual | 检验actualvalue是否等于expectvalue[0] |
+| 5 | assertFail | 抛出一个错误 |
+| 6 | assertFalse | 检验actualvalue是否是false |
+| 7 | assertTrue | 检验actualvalue是否是true |
+| 8 | assertInstanceOf | 检验actualvalue是否是expectvalue类型 |
+| 9 | assertLarger | 检验actualvalue是否大于expectvalue |
+| 10 | assertLess | 检验actualvalue是否小于expectvalue |
+| 11 | assertNaN | @since1.0.4 检验actualvalue是否是NaN |
+| 12 | assertNegUnlimited | @since1.0.4 检验actualvalue是否等于Number.NEGATIVE_INFINITY |
+| 13 | assertNull | 检验actualvalue是否是null |
+| 14 | assertPosUnlimited | @since1.0.4 检验actualvalue是否等于Number.POSITIVE_INFINITY |
+| 15 | assertPromiseIsPending | @since1.0.4 检验actualvalue是否处于Pending状态【actualvalue为promse对象】 |
+| 16 | assertPromiseIsRejected | @since1.0.4 检验actualvalue是否处于Rejected状态【同15】 |
+| 17 | assertPromiseIsRejectedWith | @since1.0.4 检验actualvalue是否处于Rejected状态,并且比较执行的结果值【同15】 |
+| 18 | assertPromiseIsRejectedWithError | @since1.0.4 检验actualvalue是否处于Rejected状态并有异常,同时比较异常的类型和message值【同15】 |
+| 19 | assertPromiseIsResolved | @since1.0.4 检验actualvalue是否处于Resolved状态【同15】 |
+| 20 | assertPromiseIsResolvedWith | @since1.0.4 检验actualvalue是否处于Resolved状态,并且比较执行的结果值【同15】 |
+| 21 | assertThrowError | 检验actualvalue抛出Error内容是否是expectValue |
+| 22 | assertUndefined | 检验actualvalue是否是undefined |
+| 23 | not | @since1.0.4 断言结果取反 |
+
+
+ 示例代码:
+
+```javascript
+ import { describe, it, expect } from '@ohos/hypium';
+
+ export default async function assertCloseTest() {
+ describe('assertClose', function () {
+ it('assertClose_success', 0, function () {
+ let a = 100;
+ let b = 0.1;
+ expect(a).assertClose(99, b);
+ })
+ })
+ }
+```
+
+#### 公共系统能力
+
+| No. | API | 功能描述 |
+| ---- | ------------------------------------------------------- | ------------------------------------------------------------ |
+| 1 | existKeyword(keyword: string, timeout: number): boolean | @since1.0.3 hilog日志中查找指定字段是否存在,keyword是待查找关键字,timeout为设置的查找时间 |
+| 2 | actionStart(tag: string): void | @since1.0.3 cmd窗口输出开始tag |
+| 3 | actionEnd(tag: string): void | @since1.0.3 cmd窗口输出结束tag |
+
+ 示例代码:
+
+```javascript
+import { describe, it, expect, SysTestKit} from '@ohos/hypium';
+
+export default function existKeywordTest() {
+ describe('existKeywordTest', function () {
+ it('existKeyword',DEFAULT, async function () {
+ console.info("HelloTest");
+ let isExist = await SysTestKit.existKeyword('HelloTest');
+ console.info('isExist ------>' + isExist);
+ })
+ })
+}
+```
+```javascript
+import { describe, it, expect, SysTestKit} from '@ohos/hypium';
+
+export default function actionTest() {
+ describe('actionTest', function () {
+ it('existKeyword',DEFAULT, async function () {
+ let tag = '[MyTest]';
+ SysTestKit.actionStart(tag);
+ //do something
+ SysTestKit.actionEnd(tag);
+ })
+ })
+}
+```
+
+#### 专项能力
+
+- 测试用例属性筛选能力:hypium支持根据用例属性筛选执行指定测试用例,使用方式是先在测试用例上标记用例属性后,再在测试应用的启动shell命令后新增" -s ${Key} ${Value}"。
+
+| Key | 含义说明 | Value取值范围 |
+| -------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| level | 用例级别 | "0","1","2","3","4", 例如:-s level 1 |
+| size | 用例粒度 | "small","medium","large", 例如:-s size small |
+| testType | 用例测试类型 | "function","performance","power","reliability","security","global","compatibility","user","standard","safety","resilience", 例如:-s testType function |
+
+ 示例代码
+
+```javascript
+import { describe, it, expect, TestType, Size, Level } from '@ohos/hypium';
+
+export default function attributeTest() {
+ describe('attributeTest', function () {
+ it("testAttributeIt", TestType.FUNCTION | Size.SMALLTEST | Level.LEVEL0, function () {
+ console.info('Hello Test');
+ })
+ })
+}
+```
+
+ 示例命令
+```shell
+XX -s level 1 -s size small -s testType function
+```
+该命令的作用是:筛选测试应用中同时满足a)用例级别是1 b)用例粒度是small c)用例测试类型是function 三个条件的用例执行。
+
+- 测试套/测试用例名称筛选能力(测试套与用例名称用“#”号连接,多个用“,”英文逗号分隔)
+
+| Key | 含义说明 | Value取值范围 |
+| -------- | ----------------------- | -------------------------------------------------------------------------------------------- |
+| class | 指定要执行的测试套&用例 | ${describeName}#${itName},${describeName} , 例如:-s class attributeTest#testAttributeIt |
+| notClass | 指定不执行的测试套&用例 | ${describeName}#${itName},${describeName} , 例如:-s notClass attributeTest#testAttributeIt |
+
+ 示例命令
+```shell
+XX -s class attributeTest#testAttributeIt,abilityTest#testAbilityIt
+```
+该命令的作用是:筛选测试应用中attributeTest测试套下的testAttributeIt测试用例,abilityTest测试套下的testAbilityIt测试用例,只执行这两条用例。
+
+- 其他能力
+
+| 能力项 | Key | 含义说明 | Value取值范围 |
+| ------------ | ------- | ---------------------------- | ---------------------------------------------- |
+| 随机执行能力 | random | 测试套&测试用例随机执行 | true, 不传参默认为false, 例如:-s random true |
+| 空跑能力 | dryRun | 显示要执行的测试用例信息全集 | true , 不传参默认为false,例如:-s dryRun true |
+| 异步超时能力 | timeout | 异步用例执行的超时时间 | 正整数 , 单位ms,例如:-s timeout 5000 |
+
+##### 约束限制
+随机执行能力和空跑能力从npm包1.0.3版本开始支持
+
+#### Mock能力
+
+##### 约束限制
+
+单元测试框架Mock能力从npm包[1.0.1版本](https://repo.harmonyos.com/#/cn/application/atomService/@ohos%2Fhypium/v/1.0.1)开始支持
+
+## 约束
+
+***
+ 本模块首批接口从OpenHarmony SDK API version 8开始支持。
+
+## Hypium开放能力隐私声明
+
+- 我们如何收集和使用您的个人信息
+ 您在使用集成了Hypium开放能力的测试应用时,Hypium不会处理您的个人信息。
+- SDK处理的个人信息
+ 不涉及。
+- SDK集成第三方服务声明
+ 不涉及。
+- SDK数据安全保护
+ 不涉及。
+- SDK版本更新声明
+ 为了向您提供最新的服务,我们会不时更新Hypium版本。我们强烈建议开发者集成使用最新版本的Hypium。
+
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/index.d.ts b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/index.d.ts
new file mode 100644
index 0000000..8a501ef
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/index.d.ts
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export const DEFAULT = 0B0000
+
+export const when: when;
+
+export enum TestType {
+ FUNCTION = 0B1,
+ PERFORMANCE = 0B1 << 1,
+ POWER = 0B1 << 2,
+ RELIABILITY = 0B1 << 3,
+ SECURITY = 0B1 << 4,
+ GLOBAL = 0B1 << 5,
+ COMPATIBILITY = 0B1 << 6,
+ USER = 0B1 << 7,
+ STANDARD = 0B1 << 8,
+ SAFETY = 0B1 << 9,
+ RESILIENCE = 0B1 << 10
+}
+
+export enum Size {
+ SMALLTEST = 0B1 << 16,
+ MEDIUMTEST = 0B1 << 17,
+ LARGETEST = 0B1 << 18
+}
+
+export enum Level {
+ LEVEL0 = 0B1 << 24,
+ LEVEL1 = 0B1 << 25,
+ LEVEL2 = 0B1 << 26,
+ LEVEL3 = 0B1 << 27,
+ LEVEL4 = 0B1 << 28
+}
+
+export function describe(testSuiteName: string, callback: Function): void
+
+export function beforeItSpecified(testCaseNames: Array | string, callback: Function): void
+
+export function afterItSpecified(testCaseNames: Array | string, callback: Function): void
+
+export function beforeEach(callback: Function): void
+
+export function afterEach(callback: Function): void
+
+export function beforeAll(callback: Function): void
+
+export function afterAll(callback: Function): void
+
+export function it(testCaseName: string, attribute: (TestType | Size | Level), callback: Function)
+
+export interface Assert {
+ assertClose(expectValue: number, precision: number): void
+ assertContain(expectValue: any): void
+ assertEqual(expectValue: any): void
+ assertFail(): void
+ assertFalse(): void
+ assertTrue(): void
+ assertInstanceOf(expectValue: string): void
+ assertLarger(expectValue: number): void
+ assertLess(expectValue: number): void
+ assertNull(): void
+ assertThrowError(expectValue: string): void
+ assertUndefined(): void
+ assertLargerOrEqual(expectValue: number):void
+ assertLessOrEqual(expectValue: number):void
+ assertNaN():void
+ assertNegUnlimited(): void
+ assertPosUnlimited(): void
+ not(): Assert;
+ assertDeepEquals(expectValue: any):void
+ assertPromiseIsPending(): void
+ assertPromiseIsRejected(): void
+ assertPromiseIsRejectedWith(expectValue?: any): void
+ assertPromiseIsRejectedWithError(...expectValue): void
+ assertPromiseIsResolved(): void
+ assertPromiseIsResolvedWith(expectValue?: any): void
+}
+
+export function expect(actualValue?: any): Assert
+
+export class ArgumentMatchers {
+ static any;
+ static anyString;
+ static anyBoolean;
+ static anyNumber;
+ static anyObj;
+ static anyFunction;
+ static matchRegexs(Regex: RegExp): void
+}
+
+declare interface when {
+ afterReturn(value: any): any
+ afterReturnNothing(): undefined
+ afterAction(action: any): any
+ afterThrow(e_msg: string): string
+ (argMatchers?: any): when;
+}
+
+export interface VerificationMode {
+ times(count: Number): void
+ never(): void
+ once(): void
+ atLeast(count: Number): void
+ atMost(count: Number): void
+}
+
+export class MockKit {
+ constructor()
+ mockFunc(obj: Object, func: Function): Function
+ mockObject(obj: Object): Object
+ verify(methodName: String, argsArray: Array): VerificationMode
+ ignoreMock(obj: Object, func: Function): void
+ clear(obj: Object): void
+ clearAll(): void
+}
+
+export class SysTestKit {
+ static actionStart(tag: string): void
+ static actionEnd(tag: string): void
+ static existKeyword(keyword: string, timeout?: number): boolean
+}
+
+export class Hypium {
+ static setData(data: {[key: string]: any}): void
+ static setTimeConfig(systemTime: any)
+ static hypiumTest(abilityDelegator: any, abilityDelegatorArguments: any, testsuite: Function): void
+}
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/index.ets b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/index.ets
new file mode 100644
index 0000000..7e1796c
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/index.ets
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import Core from './src/main/core';
+import {ConfigService} from './src/main/module/config/configService'
+import {DEFAULT, TestType, Size, Level, TAG} from './src/main/Constant';
+import DataDriver from './src/main/module/config/DataDriver';
+import ExpectExtend from './src/main/module/assert/ExpectExtend';
+import OhReport from './src/main/module/report/OhReport';
+import SysTestKit from './src/main/module/kit/SysTestKit';
+import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect, beforeItSpecified, afterItSpecified} from './src/main/interface';
+import {MockKit, when} from './src/main/module/mock/MockKit';
+import ArgumentMatchers from './src/main/module/mock/ArgumentMatchers';
+
+class Hypium {
+ static setData(data:Object) {
+ const core:Core = Core.getInstance();
+ const dataDriver:DataDriver = new DataDriver({data});
+ core.addService('dataDriver', dataDriver);
+ }
+
+ static setTimeConfig(systemTime:Object) {
+ SysTestKit.systemTime = systemTime;
+ }
+
+ static hypiumTest(abilityDelegator:Object, abilityDelegatorArguments:Object, testsuite:Function) {
+ const core:Core = Core.getInstance();
+ const expectExtend:ExpectExtend = new ExpectExtend({
+ id: 'extend'
+ });
+ core.addService('expect', expectExtend);
+ const ohReport:OhReport = new OhReport({
+ delegator: abilityDelegator,
+ abilityDelegatorArguments: abilityDelegatorArguments
+ });
+ SysTestKit.delegator = abilityDelegator;
+ core.addService('report', ohReport);
+ core.init();
+ core.subscribeEvent('spec', ohReport);
+ core.subscribeEvent('suite', ohReport);
+ core.subscribeEvent('task', ohReport);
+ const configService:ConfigService = core.getDefaultService('config');
+ if (abilityDelegatorArguments !== null) {
+ let testParameters:Object = configService.translateParams((abilityDelegatorArguments as Record).parameters);
+ console.info(`${TAG}parameters:${JSON.stringify(testParameters)}`);
+ configService.setConfig(testParameters);
+ }
+ testsuite();
+ core.execute(abilityDelegator);
+ }
+}
+
+export {
+ Hypium,
+ Core,
+ DEFAULT,
+ TestType,
+ Size,
+ Level,
+ DataDriver,
+ ExpectExtend,
+ OhReport,
+ SysTestKit,
+ describe, beforeAll, beforeEach, afterEach, afterAll, it, expect, beforeItSpecified, afterItSpecified,
+ MockKit, when,
+ ArgumentMatchers
+};
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/index.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/index.js
new file mode 100644
index 0000000..edecd8e
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/index.js
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import Core from './src/main/core';
+import {DEFAULT, TestType, Size, Level, TAG} from './src/main/Constant';
+import DataDriver from './src/main/module/config/DataDriver';
+import ExpectExtend from './src/main/module/assert/ExpectExtend';
+import OhReport from './src/main/module/report/OhReport';
+import SysTestKit from './src/main/module/kit/SysTestKit';
+import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect, beforeItSpecified, afterItSpecified} from './src/main/interface';
+import {MockKit, when} from './src/main/module/mock/MockKit';
+import ArgumentMatchers from './src/main/module/mock/ArgumentMatchers';
+
+class Hypium {
+ static setData(data) {
+ const core = Core.getInstance();
+ const dataDriver = new DataDriver({data});
+ core.addService('dataDriver', dataDriver);
+ }
+
+ static setTimeConfig(systemTime) {
+ SysTestKit.systemTime = systemTime;
+ }
+
+ static hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite) {
+ const core = Core.getInstance();
+ const expectExtend = new ExpectExtend({
+ 'id': 'extend'
+ });
+ core.addService('expect', expectExtend);
+ const ohReport = new OhReport({
+ 'delegator': abilityDelegator,
+ 'abilityDelegatorArguments': abilityDelegatorArguments
+ });
+ SysTestKit.delegator = abilityDelegator;
+ core.addService('report', ohReport);
+ core.init();
+ core.subscribeEvent('spec', ohReport);
+ core.subscribeEvent('suite', ohReport);
+ core.subscribeEvent('task', ohReport);
+ const configService = core.getDefaultService('config');
+ if (abilityDelegatorArguments !== null) {
+ let testParameters = configService.translateParams(abilityDelegatorArguments.parameters);
+ console.info(`${TAG}parameters:${JSON.stringify(testParameters)}`);
+ configService.setConfig(testParameters);
+ }
+ testsuite();
+ core.execute(abilityDelegator);
+ }
+}
+
+export {
+ Hypium,
+ Core,
+ DEFAULT,
+ TestType,
+ Size,
+ Level,
+ DataDriver,
+ ExpectExtend,
+ OhReport,
+ SysTestKit,
+ describe, beforeAll, beforeEach, afterEach, afterAll, it, expect, beforeItSpecified, afterItSpecified,
+ MockKit, when,
+ ArgumentMatchers
+};
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/oh-package.json5 b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/oh-package.json5
new file mode 100644
index 0000000..30a5883
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/oh-package.json5
@@ -0,0 +1,11 @@
+{
+ "name": "@ohos/hypium",
+ "version": "1.0.11",
+ "description": "A unit test framework for OpenHarmony application",
+ "main": "index.js",
+ "keywords": [],
+ "author": "huawei",
+ "license": "Apache-2.0",
+ "dependencies": {
+ }
+}
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/Constant.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/Constant.js
new file mode 100644
index 0000000..13f6849
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/Constant.js
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * define the testcase type : TestType, Size , Level
+ */
+export const TAG = '[Hypium]';
+
+export const DEFAULT = 0B0000;
+
+export class TestType {
+ static FUNCTION = 0B1;
+ static PERFORMANCE = 0B1 << 1;
+ static POWER = 0B1 << 2;
+ static RELIABILITY = 0B1 << 3;
+ static SECURITY = 0B1 << 4;
+ static GLOBAL = 0B1 << 5;
+ static COMPATIBILITY = 0B1 << 6;
+ static USER = 0B1 << 7;
+ static STANDARD = 0B1 << 8;
+ static SAFETY = 0B1 << 9;
+ static RESILIENCE = 0B1 << 10;
+}
+
+export class Size {
+ static SMALLTEST = 0B1 << 16;
+ static MEDIUMTEST = 0B1 << 17;
+ static LARGETEST = 0B1 << 18;
+}
+
+export class Level {
+ static LEVEL0 = 0B1 << 24;
+ static LEVEL1 = 0B1 << 25;
+ static LEVEL2 = 0B1 << 26;
+ static LEVEL3 = 0B1 << 27;
+ static LEVEL4 = 0B1 << 28;
+}
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/core.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/core.js
new file mode 100644
index 0000000..cfcb5f1
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/core.js
@@ -0,0 +1,159 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {SuiteService, SpecService, ExpectService, ReportService} from './service';
+import {ConfigService} from './module/config/configService';
+import {SpecEvent, TaskEvent, SuiteEvent} from './event';
+
+/**
+ * core service for execute testcase.
+ */
+class Core {
+ static getInstance() {
+ if (!this.instance) {
+ this.instance = new Core();
+ }
+ return this.instance;
+ }
+
+ constructor() {
+ this.instance = null;
+ this.services = {
+ suite: {},
+ spec: {},
+ config: {},
+ expect: {},
+ log: {},
+ report: {}
+
+ };
+ this.events = {
+ suite: {},
+ spec: {},
+ task: {}
+ };
+ }
+
+ addService(name, service) {
+ let serviceObj = {};
+ if (!this.services[name]) {
+ this.services[name] = serviceObj;
+ } else {
+ serviceObj = this.services[name];
+ }
+ serviceObj[service.id] = service;
+ }
+
+ getDefaultService(name) {
+ return this.services[name].default;
+ }
+
+ getServices(name) {
+ return this.services[name];
+ }
+
+ registerEvent(serviceName, event) {
+ let eventObj = {};
+ if (!this.events[serviceName]) {
+ this.events[serviceName] = eventObj;
+ } else {
+ eventObj = this.events[serviceName];
+ }
+ eventObj[event.id] = event;
+ }
+
+ unRegisterEvent(serviceName, eventID) {
+ const eventObj = this.events[serviceName];
+ if (eventObj) {
+ delete eventObj[eventID];
+ }
+ }
+
+ subscribeEvent(serviceName, serviceObj) {
+ const eventObj = this.events[serviceName];
+ if (eventObj) {
+ for (const attr in eventObj) {
+ eventObj[attr]['subscribeEvent'](serviceObj);
+ }
+ }
+ }
+
+ async fireEvents(serviceName, eventName) {
+ const eventObj = this.events[serviceName];
+ if (!eventObj) {
+ return;
+ }
+ for (const attr in eventObj) {
+ await eventObj[attr][eventName]();
+ }
+ }
+
+ addToGlobal(apis) {
+ if (typeof globalThis !== 'undefined') {
+ for (let api in apis) {
+ globalThis[api] = apis[api];
+ }
+ }
+ for (const api in apis) {
+ this[api] = apis[api];
+ }
+ }
+
+ init() {
+ this.addService('suite', new SuiteService({id: 'default'}));
+ this.addService('spec', new SpecService({id: 'default'}));
+ this.addService('expect', new ExpectService({id: 'default'}));
+ this.addService('report', new ReportService({id: 'default'}));
+ this.addService('config', new ConfigService({id: 'default'}));
+ this.registerEvent('task', new TaskEvent({id: 'default', coreContext: this}));
+ this.registerEvent('suite', new SuiteEvent({id: 'default', coreContext: this}));
+ this.registerEvent('spec', new SpecEvent({id: 'default', coreContext: this}));
+ this.subscribeEvent('spec', this.getDefaultService('report'));
+ this.subscribeEvent('suite', this.getDefaultService('report'));
+ this.subscribeEvent('task', this.getDefaultService('report'));
+ const context = this;
+ for (const key in this.services) {
+ const serviceObj = this.services[key];
+ for (const serviceID in serviceObj) {
+ const service = serviceObj[serviceID];
+ service.init(context);
+
+ if (typeof service.apis !== 'function') {
+ continue;
+ }
+ const apis = service.apis();
+ if (apis) {
+ this.addToGlobal(apis);
+ }
+ }
+ }
+ }
+
+ execute(abilityDelegator) {
+ const suiteService = this.getDefaultService('suite');
+ const configService = this.getDefaultService('config');
+ if (configService['dryRun'] === 'true') {
+ (async function () {
+ await suiteService.dryRun(abilityDelegator);
+ })();
+ return;
+ }
+ setTimeout(() => {
+ suiteService.execute();
+ }, 10);
+ }
+}
+
+export default Core;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/event.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/event.js
new file mode 100644
index 0000000..1333a1c
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/event.js
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+class SpecEvent {
+ constructor(attr) {
+ this.id = attr.id;
+ this.coreContext = attr.context;
+ this.eventMonitors = [];
+ }
+
+ subscribeEvent(service) {
+ this.eventMonitors.push(service);
+ }
+
+ async specStart() {
+ for (const monitor of this.eventMonitors) {
+ await monitor['specStart']();
+ }
+ }
+
+ async specDone() {
+ for (const monitor of this.eventMonitors) {
+ await monitor['specDone']();
+ }
+ }
+}
+
+class SuiteEvent {
+ constructor(attr) {
+ this.id = attr.id;
+ this.suiteContext = attr.coreContext;
+ this.eventMonitors = [];
+ }
+
+ subscribeEvent(service) {
+ this.eventMonitors.push(service);
+ }
+
+ async suiteStart() {
+ for (const monitor of this.eventMonitors) {
+ await monitor['suiteStart']();
+ }
+ }
+
+ async suiteDone() {
+ for (const monitor of this.eventMonitors) {
+ await monitor['suiteDone']();
+ }
+ }
+}
+
+class TaskEvent {
+ constructor(attr) {
+ this.id = attr.id;
+ this.coreContext = attr.coreContext;
+ this.eventMonitors = [];
+ }
+
+ subscribeEvent(service) {
+ this.eventMonitors.push(service);
+ }
+
+ async taskStart() {
+ for (const monitor of this.eventMonitors) {
+ await monitor['taskStart']();
+ }
+ }
+
+ async taskDone() {
+ for (const monitor of this.eventMonitors) {
+ await monitor['taskDone']();
+ }
+ }
+
+ incorrectFormat() {
+ for (const monitor of this.eventMonitors) {
+ monitor['incorrectFormat']();
+ }
+ }
+}
+
+export {SpecEvent, TaskEvent, SuiteEvent};
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/interface.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/interface.js
new file mode 100644
index 0000000..b5c185f
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/interface.js
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import Core from './core';
+
+const core = Core.getInstance();
+
+const describe = function (desc, func) {
+ return Reflect.has(core, 'describe') ? core.describe(desc, func) : (desc, func) => { };
+};
+const it = function (desc, filter, func) {
+ return Reflect.has(core, 'it') ? core.it(desc, filter, func) : (desc, filter, func) => { };
+};
+const beforeItSpecified = function (itDescs, func) {
+ return Reflect.has(core, 'beforeItSpecified') ? core.beforeItSpecified(itDescs, func) : (itDescs, func) => { };
+};
+
+const afterItSpecified = function (itDescs, func) {
+ return Reflect.has(core, 'afterItSpecified') ? core.afterItSpecified(itDescs, func) : (itDescs, func) => { };
+};
+const beforeEach = function (func) {
+ return Reflect.has(core, 'beforeEach') ? core.beforeEach(func) : (func) => { };
+};
+const afterEach = function (func) {
+ return Reflect.has(core, 'afterEach') ? core.afterEach(func) : (func) => { };
+};
+const beforeAll = function (func) {
+ return Reflect.has(core, 'beforeAll') ? core.beforeAll(func) : (func) => { };
+};
+const afterAll = function (func) {
+ return Reflect.has(core, 'afterAll') ? core.afterAll(func) : (func) => { };
+};
+const expect = function (actualValue) {
+ return Reflect.has(core, 'expect') ? core.expect(actualValue) : (actualValue) => { };
+};
+
+export {
+ describe, it, beforeAll, beforeEach, afterEach, afterAll, expect, beforeItSpecified, afterItSpecified
+};
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/ExpectExtend.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/ExpectExtend.js
new file mode 100644
index 0000000..d10d15e
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/ExpectExtend.js
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import assertNull from './assertNull';
+import assertClose from './assertClose';
+import assertContain from './assertContain';
+import assertLess from './assertLess';
+import assertLarger from './assertLarger';
+import assertFail from './assertFail';
+import assertUndefined from './assertUndefined';
+import assertFalse from './assertFalse';
+import assertInstanceOf from './assertInstanceOf';
+import assertThrowError from './assertThrowError';
+import assertLargerOrEqual from './assertLargerOrEqual'
+import assertLessOrEqual from './assertLessOrEqual'
+import assertNaN from './assertNaN'
+import assertNegUnlimited from './assertNegUnlimited'
+import assertPosUnlimited from './assertPosUnlimited'
+import assertDeepEquals from './deepEquals/assertDeepEquals'
+import assertPromiseIsPending from './assertPromiseIsPending';
+import assertPromiseIsRejected from './assertPromiseIsRejected';
+import assertPromiseIsRejectedWith from './assertPromiseIsRejectedWith';
+import assertPromiseIsRejectedWithError from './assertPromiseIsRejectedWithError';
+import assertPromiseIsResolved from './assertPromiseIsResolved';
+import assertPromiseIsResolvedWith from './assertPromiseIsResolvedWith';
+class ExpectExtend {
+ constructor(attr) {
+ this.id = attr.id;
+ this.matchers = {};
+ }
+
+ extendsMatchers() {
+ this.matchers.assertNull = assertNull;
+ this.matchers.assertClose = assertClose;
+ this.matchers.assertContain = assertContain;
+ this.matchers.assertLess = assertLess;
+ this.matchers.assertLarger = assertLarger;
+ this.matchers.assertFail = assertFail;
+ this.matchers.assertUndefined = assertUndefined;
+ this.matchers.assertFalse = assertFalse;
+ this.matchers.assertInstanceOf = assertInstanceOf;
+ this.matchers.assertThrowError = assertThrowError;
+ this.matchers.assertLargerOrEqual = assertLargerOrEqual;
+ this.matchers.assertLessOrEqual = assertLessOrEqual;
+ this.matchers.assertNaN = assertNaN;
+ this.matchers.assertNegUnlimited = assertNegUnlimited;
+ this.matchers.assertPosUnlimited = assertPosUnlimited;
+ this.matchers.assertDeepEquals = assertDeepEquals;
+ this.matchers.assertPromiseIsPending = assertPromiseIsPending;
+ this.matchers.assertPromiseIsRejected = assertPromiseIsRejected;
+ this.matchers.assertPromiseIsRejectedWith = assertPromiseIsRejectedWith;
+ this.matchers.assertPromiseIsRejectedWithError = assertPromiseIsRejectedWithError;
+ this.matchers.assertPromiseIsResolved = assertPromiseIsResolved;
+ this.matchers.assertPromiseIsResolvedWith = assertPromiseIsResolvedWith;
+ }
+
+ init(coreContext) {
+ this.coreContext = coreContext;
+ this.extendsMatchers();
+ const expectService = this.coreContext.getDefaultService('expect');
+ expectService.addMatchers(this.matchers);
+ }
+
+ apis() {
+ return {
+ 'expect': function (actualValue) {
+ return this.coreContext.getDefaultService('expect').expect(actualValue);
+ }
+ };
+ }
+}
+
+export default ExpectExtend;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertClose.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertClose.js
new file mode 100644
index 0000000..63635be
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertClose.js
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function assertClose(actualValue, expected) {
+ console.log('expected:' + expected[0] + ',precision:' + expected[1]);
+ if (actualValue === null && expected[0] === null) {
+ throw new Error('actualValue and expected can not be both null!!!');
+ }
+ let result;
+ let diff = Math.abs(expected[0] - actualValue);
+ let actualAbs = Math.abs(actualValue);
+ if ((actualAbs - 0) === 0) {
+ if ((diff - 0) === 0) {
+ result = true;
+ } else {
+ result = false;
+ }
+ } else if (diff / actualAbs < expected[1]) {
+ result = true;
+ } else {
+ result = false;
+ }
+ return {
+ pass: result,
+ message: '|' + actualValue + ' - ' + expected[0] + '|/' + actualValue + ' is not less than ' + expected[1]
+ };
+}
+
+export default assertClose;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertContain.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertContain.js
new file mode 100644
index 0000000..7fba0d9
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertContain.js
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function assertContain(actualValue, expect) {
+ let result = false;
+ if (Object.prototype.toString.call(actualValue).indexOf('Array')) {
+ for (let i in actualValue) {
+ if (actualValue[i] == expect[0]) {
+ result = true;
+ }
+ }
+ }
+ let type = Object.prototype.toString.call(actualValue);
+ if (type === '[object String]') {
+ result = actualValue.indexOf(expect[0]) >= 0;
+ }
+ return {
+ pass: result,
+ message: 'expect false, ' + actualValue + ' do not have ' + expect[0]
+ };
+}
+
+export default assertContain;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertFail.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertFail.js
new file mode 100644
index 0000000..8ab4ac5
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertFail.js
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function assertFail() {
+ return {
+ pass: false,
+ message: 'fail '
+ };
+}
+
+export default assertFail;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertFalse.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertFalse.js
new file mode 100644
index 0000000..c5008e9
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertFalse.js
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function assertFalse(actualValue) {
+ return {
+ pass: (actualValue) === false,
+ message: 'expect false, actualValue is ' + actualValue
+ };
+}
+
+export default assertFalse;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertInstanceOf.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertInstanceOf.js
new file mode 100644
index 0000000..1e11b93
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertInstanceOf.js
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function assertInstanceOf(actualValue, expected) {
+ if (Object.prototype.toString.call(actualValue) == '[object ' + expected[0] + ']') {
+ return {
+ pass: true
+ };
+ } else {
+ return {
+ pass: false,
+ message: actualValue + ' is ' + Object.prototype.toString.call(actualValue) + 'not ' + expected[0]
+ };
+ }
+}
+
+export default assertInstanceOf;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertLarger.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertLarger.js
new file mode 100644
index 0000000..a74f4a8
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertLarger.js
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function assertLarger(actualValue, expected) {
+ return {
+ pass: (actualValue) > expected[0],
+ message: (actualValue) + ' is not larger than ' + expected[0]
+ };
+}
+
+export default assertLarger;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertLargerOrEqual.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertLargerOrEqual.js
new file mode 100644
index 0000000..e847e6c
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertLargerOrEqual.js
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function assertLargerOrEqual(actualValue, expected) {
+ return {
+ pass: (actualValue) >= expected[0],
+ message: (actualValue) + ' is not larger than ' + expected[0]
+ };
+}
+
+export default assertLargerOrEqual;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertLess.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertLess.js
new file mode 100644
index 0000000..17e84b0
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertLess.js
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function assertLess(actualValue, expected) {
+ return {
+ pass: (actualValue) < expected[0],
+ message: (actualValue) + ' is not less than ' + expected[0]
+ };
+}
+
+export default assertLess;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertLessOrEqual.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertLessOrEqual.js
new file mode 100644
index 0000000..f754f97
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertLessOrEqual.js
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function assertLessOrEqual(actualValue, expected) {
+ return {
+ pass: (actualValue) <= expected[0],
+ message: (actualValue) + ' is not less than ' + expected[0]
+ };
+}
+
+export default assertLessOrEqual;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertNaN.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertNaN.js
new file mode 100644
index 0000000..8d45d6a
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertNaN.js
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function assertNaN(actualValue) {
+ return {
+ pass: actualValue !== actualValue,
+ message: 'expect NaN, actualValue is ' + actualValue
+ };
+}
+
+export default assertNaN;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertNegUnlimited.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertNegUnlimited.js
new file mode 100644
index 0000000..ceac555
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertNegUnlimited.js
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2022 Huawei Device Co., Ltd.
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+function assertNegUnlimited(actualValue) {
+ return {
+ pass: actualValue === Number.NEGATIVE_INFINITY,
+ message: 'Expected actualValue not to be -Infinity. actualValue is,' + actualValue
+ };
+}
+
+export default assertNegUnlimited;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertNull.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertNull.js
new file mode 100644
index 0000000..53a7bad
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertNull.js
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function assertNull(actualValue) {
+ return {
+ pass: (actualValue) === null,
+ message: 'expect null, actualValue is ' + (actualValue)
+ };
+}
+
+export default assertNull;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPosUnlimited.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPosUnlimited.js
new file mode 100644
index 0000000..6e68c0e
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPosUnlimited.js
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2022 Huawei Device Co., Ltd.
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+function assertPosUnlimited(actualValue) {
+ return {
+ pass: actualValue === Number.POSITIVE_INFINITY,
+ message: 'Expected actualValue is POSITIVE_INFINITY. actualValue is,' + actualValue
+ };
+}
+
+export default assertPosUnlimited;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsPending.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsPending.js
new file mode 100644
index 0000000..7e2ca2c
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsPending.js
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import isPromiseLike from './isPromiseLike';
+
+function assertPromiseIsPending(actualPromise) {
+ if (!isPromiseLike(actualPromise)) {
+ return Promise.reject().then(function () {
+ }, function () {
+ return {pass: false, message: 'Expected not be called on a promise.'};
+ });
+ }
+ const helper = {};
+ return Promise.race([actualPromise, Promise.resolve(helper)]).then(
+ function (got) {
+ return helper === got ? {pass: true, message: 'actualValue is isPending'}
+ : {
+ pass: false,
+ message: 'expect isPending, actualValue is resolve'
+ };
+ },
+ function () {
+ return {
+ pass: false
+ , message: 'expect isPending, actualValue is reject'
+ };
+ });
+}
+
+export default assertPromiseIsPending;
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsRejected.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsRejected.js
new file mode 100644
index 0000000..eb8e65c
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsRejected.js
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import isPromiseLike from './isPromiseLike';
+
+function assertPromiseIsRejected(actualPromise) {
+ if (!isPromiseLike(actualPromise)) {
+ return Promise.reject().then(function () {
+ }, function () {
+ return {pass: false, message: 'Expected not be called on a promise.'};
+ });
+ }
+ const helper = {};
+ return Promise.race([actualPromise, Promise.resolve(helper)]).then(
+ function (got) {
+ return {
+ pass: false,
+ message: 'expect isRejected, but actualValue is '
+ + (helper === got ? 'isPending' : 'resolve')
+ };
+ },
+ function () {
+ return {pass: true, message: 'actualValue is isRejected'};
+ }
+ );
+}
+
+export default assertPromiseIsRejected;
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsRejectedWith.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsRejectedWith.js
new file mode 100644
index 0000000..48eaf78
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsRejectedWith.js
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import isPromiseLike from './isPromiseLike';
+
+function assertPromiseIsRejectedWith(actualPromise, expectedValue) {
+
+ if (!isPromiseLike(actualPromise)) {
+ return Promise.reject().then(function () {
+ }, function () {
+ return {pass: false, message: 'Expected not be called on a promise.'};
+ });
+ }
+
+ function tips(passed) {
+ return ('Expected a promise ' + (passed ? 'not ' : '') +
+ 'to be rejected with ' + JSON.stringify(expectedValue[0]));
+ }
+
+ const helper = {};
+ return Promise.race([actualPromise, Promise.resolve(helper)]).then(
+ function (got) {
+ return {
+ pass: false,
+ message: tips(false) + ' but actualValue is '
+ + (helper === got ? 'isPending' : 'resolve')
+ };
+ },
+ function (actualValue) {
+ if (JSON.stringify(actualValue) == JSON.stringify(expectedValue[0])) {
+ return {
+ pass: true,
+ message: 'actualValue was rejected with ' + JSON.stringify(actualValue) + '.'
+ };
+ } else {
+ return {
+ pass: false,
+ message: tips(false) + ' but it was rejected with ' + JSON.stringify(actualValue) + '.'
+ };
+ }
+ }
+ );
+}
+
+export default assertPromiseIsRejectedWith;
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsRejectedWithError.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsRejectedWithError.js
new file mode 100644
index 0000000..20f236f
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsRejectedWithError.js
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import isPromiseLike from './isPromiseLike';
+
+function assertPromiseIsRejectedWithError(actualPromise, expectedValue) {
+ if (!isPromiseLike(actualPromise)) {
+ return Promise.reject().then(function () {
+ }, function () {
+ return {pass: false, message: 'Expected not be called on a promise.'};
+ });
+ }
+ const helper = {};
+ return Promise.race([actualPromise, Promise.resolve(helper)]).then(
+ function (got) {
+ return {
+ pass: false,
+ message: 'Expected a promise to be rejected but actualValue is '
+ + (helper === got ? 'isPending' : 'resolve')
+ };
+ },
+ function (actualValue) {
+ return matchError(actualValue, expectedValue);
+ }
+ );
+
+}
+
+function matchError(actualValue, expectedValue) {
+ if (expectedValue.length == 1 && typeof expectedValue[0] === 'function') {
+ if (expectedValue[0].name === actualValue.__proto__.name) {
+ return {pass: true, message: 'actual error type is ' + actualValue.name + '.'};
+ }
+ return {pass: false, message: `except error type is ${expectedValue[0].name},but actual is ${actualValue.name}.`};
+ }
+
+ if (expectedValue.length == 1 && typeof expectedValue[0] === 'string') {
+ if (expectedValue[0] === actualValue.message) {
+ return {pass: true, message: `actual error message is ${actualValue.message}.`};
+ }
+ return {pass: false, message: `except error message ${expectedValue[0]},but actual is ${actualValue.message}.`};
+ }
+
+ if (expectedValue.length == 1) {
+ return {pass: false, message: 'When only one parameter, it should be error type or error message.'};
+ }
+
+ if (expectedValue.length == 2 && typeof expectedValue[0] === 'function' && expectedValue[0].name === actualValue.name) {
+ if (typeof expectedValue[1] === 'string' && actualValue.message === expectedValue[1]) {
+ return {pass: true, message: 'actual error message is ' + actualValue.message + '.'};
+ }
+ return {pass: false, message: `except error message is ${expectedValue[1]},but actual is ${actualValue.message}.`};
+ }
+
+ if (expectedValue.length == 2 && typeof expectedValue[0] === 'function' && expectedValue[0].name !== actualValue.name) {
+ if (typeof expectedValue[1] === 'string' && actualValue.message === expectedValue[1]) {
+ return {pass: false, message: `except error type is ${expectedValue[0].name},but actual is ${actualValue.name}.`};
+ }
+ return {pass: false, message: 'except error type and message are incorrect.'};
+ }
+ if (expectedValue.length > 2) {
+ return {pass: false, message: 'Up to two parameters are supported.'};
+ }
+}
+
+export default assertPromiseIsRejectedWithError;
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsResolved.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsResolved.js
new file mode 100644
index 0000000..855426c
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsResolved.js
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import isPromiseLike from './isPromiseLike';
+
+function assertPromiseIsResolved(actualPromise) {
+ if (!isPromiseLike(actualPromise)) {
+ return Promise.reject().then(function () {
+ }, function () {
+ return {pass: false, message: 'Expected not be called on a promise.'};
+ });
+ }
+
+ const helper = {};
+ return Promise.race([actualPromise, Promise.resolve(helper)]).then(
+ function (got) {
+ return helper === got ? {
+ pass: false,
+ message: 'expect resolve, actualValue is isPending'
+ }
+ : {pass: true, message: 'actualValue is isResolved'};
+ },
+ function (rej) {
+ return {
+ pass: false,
+ message: 'Expected a promise to be resolved but it was ' +
+ 'rejected with ' + JSON.stringify(rej) + '.'
+ };
+ }
+ );
+}
+
+export default assertPromiseIsResolved;
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsResolvedWith.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsResolvedWith.js
new file mode 100644
index 0000000..d5eb01e
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertPromiseIsResolvedWith.js
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import isPromiseLike from './isPromiseLike';
+
+function assertPromiseIsResolvedWith(actualPromise, expectedValue) {
+ if (!isPromiseLike(actualPromise)) {
+ return Promise.reject().then(function () {
+ }, function () {
+ return {pass: false, message: 'Expected not be called on a promise.'};
+ });
+ }
+
+ function tips(passed) {
+ return (
+ 'Expected a promise ' + (passed ? 'not ' : '') +
+ 'to be resolved with ' + JSON.stringify(expectedValue[0]));
+ }
+
+ const helper = {};
+ return Promise.race([actualPromise, Promise.resolve(helper)]).then(
+ function (got) {
+ if (helper === got) {
+ return {pass: false, message: 'expect resolve, actualValue is isPending'};
+ }
+ if (JSON.stringify(got) == JSON.stringify(expectedValue[0])) {
+ return {
+ pass: true,
+ message: 'actualValue was resolved with ' + JSON.stringify(got) + '.'
+ };
+ }
+ return {
+ pass: false,
+ message: tips(false) + ' but it was resolved with ' +
+ JSON.stringify(got) + '.'
+ };
+ },
+ function (rej) {
+ return {
+ pass: false,
+ message: tips(false) + ' but it was rejected with ' + JSON.stringify(rej) + '.'
+ };
+ }
+ );
+}
+
+export default assertPromiseIsResolvedWith;
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertThrowError.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertThrowError.js
new file mode 100644
index 0000000..749cab0
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertThrowError.js
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function assertThrowError(actualValue, expected) {
+ let result = false;
+ let err;
+ if (typeof actualValue !== 'function') {
+ throw new Error('actualValue is not a function');
+ }
+ try {
+ actualValue();
+ return {
+ pass: result,
+ message: ' An error is not thrown while it is expected!'
+ };
+ } catch (e) {
+ err = e;
+ }
+
+ if (err instanceof Error) {
+ console.log(err.message);
+ if (err.message == expected[0]) {
+ result = true;
+ }
+ }
+ return {
+ pass: result,
+ message: 'expected throw failed , ' + err.message + ' is not ' + expected[0]
+ };
+}
+
+export default assertThrowError;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertUndefined.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertUndefined.js
new file mode 100644
index 0000000..61f092d
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/assertUndefined.js
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function assertUndefined(actualValue) {
+ return {
+ pass: undefined === (actualValue),
+ message: 'expect Undefined, actualValue is ' + (actualValue)
+ };
+}
+
+export default assertUndefined;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/deepEquals/DeepTypeUtils.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/deepEquals/DeepTypeUtils.js
new file mode 100644
index 0000000..627fb3b
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/deepEquals/DeepTypeUtils.js
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+class DeepTypeUtils {
+ static getType_(value) {
+ return Object.prototype.toString.apply(value);
+ }
+ static isA_(typeName, value) {
+ return this.getType_(value) === '[object ' + typeName + ']';
+ }
+ static isAsymmetricEqualityTester_(obj) {
+ return obj ? this.isA_('Function', obj.asymmetricMatch) : false;
+ }
+
+ /**
+ * 是否是function
+ * @param value
+ */
+ static isFunction_(value) {
+ return this.isA_('Function', value);
+ }
+
+ /**
+ * 是否是undefined
+ * @param obj
+ */
+ static isUndefined(obj) {
+ return obj === void 0;
+ }
+
+ /**
+ * 是否是Node
+ * @param obj
+ */
+ static isDomNode(obj) {
+ return obj !== null &&
+ typeof obj === 'object' &&
+ typeof obj.nodeType === 'number' &&
+ typeof obj.nodeName === 'string';
+ }
+
+ /**
+ * 是否是promise对象
+ * @param obj
+ */
+ static isPromise (obj) {
+ return !!obj && obj.constructor === Promise;
+ };
+ /**
+ * 是否是map对象
+ * @param obj
+ */
+ static isMap(obj) {
+ return (
+ obj !== null &&
+ typeof obj !== 'undefined' &&
+ obj.constructor === Map
+ );
+ }
+
+ /**
+ * 是否是set对象
+ * @param obj 对象
+ */
+ static isSet(obj) {
+ return (
+ obj !== null &&
+ typeof obj !== 'undefined' &&
+ obj.constructor === Set
+ );
+ }
+
+ /**
+ * 对象是否有key属性
+ * @param obj 对象
+ * @param key 对象属性名称
+ */
+ static has(obj, key) {
+ return Object.prototype.hasOwnProperty.call(obj, key);
+ }
+
+ /**
+ * 获取对象的自有属性
+ * @param obj 对象
+ * @param isArray 是否是数组,[object Array]
+ */
+ static keys(obj, isArray) {
+ const extraKeys = [];
+ // 获取对象所有属性
+ const allKeys = this.getAllKeys(obj);
+ if (!isArray) {
+ return allKeys;
+ }
+ if (allKeys.length === 0) {
+ return allKeys;
+ }
+ for (const k of allKeys) {
+ if (typeof k === 'symbol' || !/^[0-9]+$/.test(k)) {
+ extraKeys.push(k);
+ }
+ }
+ return extraKeys;
+ }
+
+ /**
+ * 获取obj对象的所有属性
+ * @param obj obj对象
+ */
+ static getAllKeys(obj) {
+ const keys = [];
+ for (let key in obj) {
+ if(this.has(obj, key)) {
+ keys.push(key);
+ }
+ }
+ const symbols = Object.getOwnPropertySymbols(obj);
+ for (const sym of symbols) {
+ if (obj.propertyIsEnumerable(sym)) {
+ keys.push(sym);
+ }
+ }
+ return keys;
+ }
+
+}
+export default DeepTypeUtils;
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/deepEquals/assertDeepEquals.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/deepEquals/assertDeepEquals.js
new file mode 100644
index 0000000..482e28e
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/deepEquals/assertDeepEquals.js
@@ -0,0 +1,315 @@
+/*
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import DeepTypeUtils from './DeepTypeUtils'
+function assertDeepEquals(actualValue, expected) {
+ console.log('actualValue:' + actualValue + ',expected:' + expected[0]);
+ let result = eq(actualValue, expected[0],[], [])
+ let msg = logMsg(actualValue, expected[0]);
+ return {
+ pass: result,
+ message: msg
+ };
+}
+
+/**
+ * 获取失败显示日志
+ * @param actualValue 实际对象
+ * @param expected 期待比较对象
+ */
+function logMsg(actualValue, expected) {
+ // 获取a的对象名称
+ const aClassName = Object.prototype.toString.call(actualValue);
+ const bClassName = Object.prototype.toString.call(expected);
+ let actualMsg;
+ let expectMsg;
+ if(aClassName == "[object Function]") {
+ actualMsg = "actualValue Function"
+ }else if(aClassName == "[object Promise]") {
+ actualMsg = "actualValue Promise"
+ }else if(aClassName == "[object Set]" || aClassName == "[object Map]") {
+ actualMsg = JSON.stringify(Array.from(actualValue));;
+ }else if(aClassName == "[object RegExp]") {
+ actualMsg = JSON.stringify(actualValue.source.replace("\\",""));;
+ }else if(aClassName == "[object BigInt]") {
+ actualMsg = actualValue;
+ }
+ else{
+ actualMsg = JSON.stringify(actualValue);
+ }
+ if(bClassName == "[object Function]") {
+ expectMsg = "expected Function"
+ }else if(bClassName == "[object Promise]") {
+ expectMsg = "expected Promise"
+ }else if(bClassName == "[object Set]" || bClassName == "[object Map]") {
+ expectMsg = JSON.stringify(Array.from(expected));
+ }else if(bClassName == "[object RegExp]") {
+ expectMsg = JSON.stringify(expected.source.replace("\\",""));;
+ }else if(bClassName == "[object BigInt]") {
+ expectMsg = expected;
+ }
+ else{
+ expectMsg = JSON.stringify(expected);
+ }
+ return actualMsg + " is not deep equal " + expectMsg;
+}
+
+function eq(a, b, aStack, bStack) {
+ let result = true;
+ console.log('a is:' + a + ',b is:' + b);
+ const asymmetricResult = asymmetricMatch_(a,b);
+ if (!DeepTypeUtils.isUndefined(asymmetricResult)) {
+ return asymmetricResult;
+ }
+
+ if (a instanceof Error && b instanceof Error) {
+ result = a.message == b.message;
+ return result;
+ }
+
+ if (a === b) {
+ result = a !== 0 || 1 / a == 1 / b;
+ return result;
+ }
+
+ if (a === null || b === null) {
+ result = a === b;
+ return result;
+ }
+ // 获取a的对象名称
+ const aClassName = Object.prototype.toString.call(a);
+ const bClassName = Object.prototype.toString.call(b);
+ console.log('aClassName is:' + aClassName);
+ console.log('bClassName is:' + bClassName);
+ // 不同类型不同对象
+ if (aClassName != bClassName) {
+ return false;
+ }
+ // 俩个string对象
+ if(aClassName === '[object String]') {
+ result = a == String(b);
+ return result;
+ }
+ // 俩个Number对象
+ if(aClassName === '[object Number]') {
+ result = a != +a ? b != +b : a === 0 && b === 0 ? 1 / a == 1 / b : a == +b;
+ return result;
+ }
+
+ if(aClassName === '[object Date]' || aClassName === '[object Boolean]') {
+ result = +a == +b;
+ return result;
+ }
+
+ // 数组
+ if(aClassName === '[object ArrayBuffer]') {
+ return eq(new Uint8Array(a), new Uint8Array(b), aStack, bStack);
+ }
+
+ // 正则表达式
+ if(aClassName === '[object RegExp]') {
+ return (
+ a.source == b.source &&
+ a.global == b.global &&
+ a.multiline == b.multiline &&
+ a.ignoreCase == b.ignoreCase
+ );
+ }
+
+ if (typeof a != 'object' || typeof b != 'object') {
+ return false;
+ }
+
+ const aIsDomNode = DeepTypeUtils.isDomNode(a);
+ const bIsDomNode = DeepTypeUtils.isDomNode(b);
+ if (aIsDomNode && bIsDomNode) {
+ // At first try to use DOM3 method isEqualNode
+ result = a.isEqualNode(b);
+ return result;
+ }
+ if (aIsDomNode || bIsDomNode) {
+ return false;
+ }
+ const aIsPromise = DeepTypeUtils.isPromise(a);
+ const bIsPromise = DeepTypeUtils.isPromise(b);
+ if (aIsPromise && bIsPromise) {
+ return a === b;
+ }
+ let length = aStack.length;
+ while (length--) {
+ if (aStack[length] == a) {
+ return bStack[length] == b;
+ }
+ }
+ aStack.push(a);
+ bStack.push(b);
+ let size = 0;
+
+ // 都是数组
+ if(aClassName == '[object Array]') {
+ const aLength = a.length;
+ const bLength = b.length;
+ if (aLength !== bLength) {
+ // 数组长度不同,不是同一个对象
+ return false;
+ }
+ for (let i = 0; i < aLength || i < bLength; i++) {
+ // 递归每一个元素是否相同
+ result = eq(i < aLength ? a[i] : void 0, i < bLength ? b[i] : void 0, aStack, bStack) && result;
+ }
+ if (!result) {
+ return false;
+ }
+ } else if(DeepTypeUtils.isMap(a) && DeepTypeUtils.isMap(b)) {
+ if (a.size != b.size) {
+ return false;
+ }
+ const keysA = [];
+ const keysB = [];
+ a.forEach(function(valueA, keyA) {
+ keysA.push(keyA);
+ });
+ b.forEach(function(valueB, keyB) {
+ keysB.push(keyB);
+ });
+ const mapKeys = [keysA, keysB];
+ const cmpKeys = [keysB, keysA];
+ for (let i = 0; result && i < mapKeys.length; i++) {
+ const mapIter = mapKeys[i];
+ const cmpIter = cmpKeys[i];
+
+ for (let j = 0; result && j < mapIter.length; j++) {
+ const mapKey = mapIter[j];
+ const cmpKey = cmpIter[j];
+ const mapValueA = a.get(mapKey);
+ let mapValueB;
+ if (
+ DeepTypeUtils.isAsymmetricEqualityTester_(mapKey) ||
+ (DeepTypeUtils.isAsymmetricEqualityTester_(cmpKey) &&
+ eq(mapKey, cmpKey))
+ ) {
+ mapValueB = b.get(cmpKey);
+ } else {
+ mapValueB = b.get(mapKey);
+ }
+ result = eq(mapValueA, mapValueB, aStack, bStack);
+ }
+ }
+ if (!result) {
+ return false;
+ }
+ } else if(DeepTypeUtils.isSet(a) && DeepTypeUtils.isSet(b)) {
+ if (a.size != b.size) {
+ return false;
+ }
+ const valuesA = [];
+ a.forEach(function(valueA) {
+ valuesA.push(valueA);
+ });
+ const valuesB = [];
+ b.forEach(function(valueB) {
+ valuesB.push(valueB);
+ });
+ const setPairs = [[valuesA, valuesB], [valuesB, valuesA]];
+ const stackPairs = [[aStack, bStack], [bStack, aStack]];
+ for (let i = 0; result && i < setPairs.length; i++) {
+ const baseValues = setPairs[i][0];
+ const otherValues = setPairs[i][1];
+ const baseStack = stackPairs[i][0];
+ const otherStack = stackPairs[i][1];
+ for (const baseValue of baseValues) {
+ let found = false;
+ for (let j = 0; !found && j < otherValues.length; j++) {
+ const otherValue = otherValues[j];
+ const prevStackSize = baseStack.length;
+ // 深度比较对象
+ found = eq(baseValue, otherValue, baseStack, otherStack);
+ if (!found && prevStackSize !== baseStack.length) {
+ baseStack.splice(prevStackSize);
+ otherStack.splice(prevStackSize);
+ }
+ }
+ result = result && found;
+ }
+ }
+ if (!result) {
+ return false;
+ }
+ } else {
+ const aCtor = a.constructor,
+ bCtor = b.constructor;
+ if (
+ aCtor !== bCtor &&
+ DeepTypeUtils.isFunction_(aCtor) &&
+ DeepTypeUtils.isFunction_(bCtor) &&
+ a instanceof aCtor &&
+ b instanceof bCtor &&
+ !(aCtor instanceof aCtor && bCtor instanceof bCtor)
+ ) {
+ return false;
+ }
+ }
+
+ // 获取对象所有的属性集合
+ const aKeys = DeepTypeUtils.keys(a, aClassName == '[object Array]');
+ size = aKeys.length;
+
+ // 俩个对象属性长度不一致, 俩对象不相同
+ if (DeepTypeUtils.keys(b, bClassName == '[object Array]').length !== size) {
+ return false;
+ }
+
+ // 俩对象属性数量相同, 递归比较每个属性值得值
+ for (const key of aKeys) {
+ console.log('key is:' + key);
+ // b 没有 key 属性
+ if(!DeepTypeUtils.has(b, key)) {
+ result = false;
+ continue;
+ }
+ if (!eq(a[key], b[key], aStack, bStack)) {
+ result = false;
+ }
+ }
+ if (!result) {
+ return false;
+ }
+ aStack.pop();
+ bStack.pop();
+ return result;
+}
+
+function asymmetricMatch_(a, b) {
+ const asymmetricA = DeepTypeUtils.isAsymmetricEqualityTester_(a);
+ const asymmetricB = DeepTypeUtils.isAsymmetricEqualityTester_(b);
+
+ if (asymmetricA === asymmetricB) {
+ return undefined;
+ }
+
+}
+
+/**
+ * 获取对象的自有属性
+ *
+ * @param obj 对象
+ * @param isArray 是否是一个数组
+ */
+function keys(obj, isArray) {
+ const keys = [];
+
+}
+
+export default assertDeepEquals;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/isPromiseLike.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/isPromiseLike.js
new file mode 100644
index 0000000..015ab19
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/assert/isPromiseLike.js
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function isPromiseLike(obj) {
+ return !!obj && isFunction_(obj.then);
+}
+
+function isFunction_(value) {
+ return isA_('Function', value);
+}
+
+function isA_(typeName, value) {
+ return getType_(value) === '[object ' + typeName + ']';
+}
+
+function getType_(value) {
+ return Object.prototype.toString.apply(value);
+}
+
+export default isPromiseLike;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/config/DataDriver.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/config/DataDriver.js
new file mode 100644
index 0000000..639dffc
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/config/DataDriver.js
@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+const SUITES_KEY = 'suites';
+const SPECS_KEY = 'items';
+const DESCRIBE_KEY = 'describe';
+const IT_KEY = 'it';
+const PARAMS_KEY = 'params';
+const STRESS_KEY = 'stress';
+
+class ObjectUtils {
+ static get(object, name, defaultValue) {
+ let result = defaultValue;
+ for (const key in object) {
+ if (key === name) {
+ return object[key];
+ }
+ }
+ return result;
+ }
+
+ static has(object, key) {
+ return Object.prototype.hasOwnProperty.call(object, key);
+ }
+}
+
+class DataDriver {
+ constructor(attr) {
+ this.id = 'dataDriver';
+ this.data = attr.data || {};
+ }
+
+ init(coreContext) {
+ this.coreContext = coreContext;
+ this.suiteService = this.coreContext.getDefaultService('suite');
+ this.specService = this.coreContext.getDefaultService('spec');
+ }
+
+ getSpecParams() {
+ let specParams = [];
+ let suiteDesc = this.suiteService.getCurrentRunningSuite().description;
+ let specDesc = this.specService.getCurrentRunningSpec().description;
+ let suites = ObjectUtils.get(this.data, SUITES_KEY, []);
+ for (const suiteItem of suites) {
+ let describeValue = ObjectUtils.get(suiteItem, DESCRIBE_KEY, '');
+ if (ObjectUtils.has(suiteItem, DESCRIBE_KEY) && (typeof describeValue === 'object') && describeValue.constructor === Array && describeValue.includes(suiteDesc)) {
+ let specs = ObjectUtils.get(suiteItem, SPECS_KEY, []);
+ for (const specItem of specs) {
+ if (ObjectUtils.has(specItem, IT_KEY) && ObjectUtils.get(specItem, IT_KEY) === specDesc) {
+ return ObjectUtils.get(specItem, PARAMS_KEY, specParams);
+ }
+ }
+ }
+ }
+ return specParams;
+ }
+
+ getSuiteParams() {
+ let suiteParams = {};
+ let suiteDesc = this.suiteService.getCurrentRunningSuite().description;
+ let suites = ObjectUtils.get(this.data, SUITES_KEY, []);
+ for (const suiteItem of suites) {
+ let describeValue = ObjectUtils.get(suiteItem, DESCRIBE_KEY, []);
+ if (ObjectUtils.has(suiteItem, DESCRIBE_KEY) && (typeof describeValue === 'object') && describeValue.constructor === Array && describeValue.includes(suiteDesc)) {
+ suiteParams = Object.assign({}, suiteParams, ObjectUtils.get(suiteItem, PARAMS_KEY, suiteParams));
+ }
+ }
+ return suiteParams;
+ }
+
+ getSpecStress(specDesc) {
+ let stress = 1;
+ let suiteDesc = this.suiteService.getCurrentRunningSuite().description;
+ let suites = ObjectUtils.get(this.data, SUITES_KEY, []);
+ for (const suiteItem of suites) {
+ let describeValue = ObjectUtils.get(suiteItem, DESCRIBE_KEY, '');
+ if (ObjectUtils.has(suiteItem, DESCRIBE_KEY) && (typeof describeValue === 'object') && describeValue.constructor === Array && describeValue.includes(suiteDesc)) {
+ let specs = ObjectUtils.get(suiteItem, SPECS_KEY, []);
+ for (const specItem of specs) {
+ if (ObjectUtils.has(specItem, IT_KEY) && ObjectUtils.get(specItem, IT_KEY) === specDesc) {
+ let tempStress = ObjectUtils.get(specItem, STRESS_KEY, stress);
+ return (Number.isInteger(tempStress) && tempStress >= 1) ? tempStress : stress;
+ }
+ }
+ }
+ }
+ return stress;
+ }
+
+ getSuiteStress(suiteDesc) {
+ let stress = 1;
+ let suites = ObjectUtils.get(this.data, SUITES_KEY, []);
+ for (const suiteItem of suites) {
+ let describeValue = ObjectUtils.get(suiteItem, DESCRIBE_KEY, []);
+ if (ObjectUtils.has(suiteItem, DESCRIBE_KEY) && (typeof describeValue === 'object') && describeValue.constructor === Array && describeValue.includes(suiteDesc)) {
+ let tempStress = ObjectUtils.get(suiteItem, STRESS_KEY, stress);
+ return (Number.isInteger(tempStress) && tempStress >= 1) ? tempStress : stress;
+ }
+ }
+ return stress;
+ }
+}
+
+export default DataDriver;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/config/Filter.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/config/Filter.js
new file mode 100644
index 0000000..0ca3b4f
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/config/Filter.js
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+class ClassFilter {
+ constructor(suiteName, itName, params) {
+ this.suiteName = suiteName;
+ this.itName = itName;
+ this.params = params;
+ }
+
+ filterSuite() {
+ return !this.params.split(',').map(item => item.split('#')[0]).map(item => item == this.suiteName).reduce((pre, cur) => pre || cur, false);
+ }
+
+ filterIt() {
+ let classArray = this.params.split(',') || [];
+ let suiteFilterResult = classArray.filter(item => !item.includes('#')).map(item => item == this.suiteName).reduce((pre, cur) => pre || cur, false);
+ let itFilterResult = classArray.filter(item => item.includes('#')).map(item => item == (this.suiteName + '#' + this.itName)).reduce((pre, cur) => pre || cur, false);
+ return !(suiteFilterResult || itFilterResult);
+ }
+}
+
+class NotClassFilter {
+ constructor(suiteName, itName, params) {
+ this.suiteName = suiteName;
+ this.itName = itName;
+ this.params = params;
+ }
+
+ filterSuite() {
+ return this.params.split(',').map(item => item == this.suiteName).reduce((pre, cur) => pre || cur, false);
+ }
+
+ filterIt() {
+ return this.params.split(',').some(item => item == (this.suiteName + '#' + this.itName));
+ }
+}
+
+class SuiteAndItNameFilter {
+ constructor(suiteName, itName, params) {
+ this.suiteName = suiteName;
+ this.itName = itName;
+ this.params = params;
+ }
+
+ filterSuite() {
+ return !this.params.split(',').map(item => item == this.suiteName).reduce((pre, cur) => pre || cur, false);
+ }
+
+ filterIt() {
+ return !this.params.split(',').map(item => item == this.itName).reduce((pre, cur) => pre || cur, false);
+ }
+}
+
+
+class TestTypesFilter {
+ constructor(suiteName, itName, fi, params) {
+ this.suiteName = suiteName;
+ this.itName = itName;
+ this.params = params;
+ this.fi = fi;
+ }
+
+ filterIt() {
+ return !((this.params === (this.fi & this.params)) || this.fi === 0);
+ }
+}
+
+export {ClassFilter, NotClassFilter, SuiteAndItNameFilter, TestTypesFilter};
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/config/configService.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/config/configService.js
new file mode 100644
index 0000000..0e2ea1b
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/config/configService.js
@@ -0,0 +1,293 @@
+/*
+ * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {ClassFilter, NotClassFilter, SuiteAndItNameFilter, TestTypesFilter} from './Filter';
+import {TAG} from '../../Constant';
+const STRESS_RULE = /^[1-9]\d*$/;
+
+class ConfigService {
+ constructor(attr) {
+ this.id = attr.id;
+ this.supportAsync = false;
+ this.random = false;
+ this.filterValid = [];
+ this.filter = 0;
+ this.flag = false;
+ this.suite = null;
+ this.itName = null;
+ this.testType = null;
+ this.level = null;
+ this.size = null;
+ this.class = null;
+ this.notClass = null;
+ this.timeout = null;
+ // 遇错即停模式配置
+ this.breakOnError = false;
+ // 压力测试配置
+ this.stress = null;
+ }
+
+ init(coreContext) {
+ this.coreContext = coreContext;
+ }
+
+ isNormalInteger(str) {
+ const n = Math.floor(Number(str));
+ return n !== Infinity && String(n) === String(str) && n >= 0;
+ }
+
+ getStress() {
+ if (this.stress === undefined || this.stress === '' || this.stress === null) {
+ return 1;
+ }
+ return !this.stress.match(STRESS_RULE) ? 1 : Number.parseInt(this.stress);
+ }
+
+ basicParamValidCheck(params) {
+ let size = params.size;
+ if (size !== undefined && size !== '' && size !== null) {
+ let sizeArray = ['small', 'medium', 'large'];
+ if (sizeArray.indexOf(size) === -1) {
+ this.filterValid.push('size:' + size);
+ }
+ }
+ let level = params.level;
+ if (level !== undefined && level !== '' && level !== null) {
+ let levelArray = ['0', '1', '2', '3', '4'];
+ if (levelArray.indexOf(level) === -1) {
+ this.filterValid.push('level:' + level);
+ }
+ }
+ let testType = params.testType;
+ if (testType !== undefined && testType !== '' && testType !== null) {
+ let testTypeArray = ['function', 'performance', 'power', 'reliability', 'security',
+ 'global', 'compatibility', 'user', 'standard', 'safety', 'resilience'];
+ if (testTypeArray.indexOf(testType) === -1) {
+ this.filterValid.push('testType:' + testType);
+ }
+ }
+ }
+
+ filterParamValidCheck(params) {
+ let timeout = params.timeout;
+ if (timeout !== undefined && timeout !== '' && timeout !== null) {
+ if (!this.isNormalInteger(timeout)) {
+ this.filterValid.push('timeout:' + timeout);
+ }
+ }
+
+ let paramKeys = ['dryRun', 'random', 'breakOnError', 'coverage'];
+ for (const key of paramKeys) {
+ if (params[key] !== undefined && params[key] !== 'true' && params[key] !== 'false') {
+ this.filterValid.push(`${key}:${params[key]}`);
+ }
+ }
+
+ // 压力测试参数验证,正整数
+ if (params.stress !== undefined && params.stress !== '' && params.stress !== null) {
+ if (!params.stress.match(STRESS_RULE)) {
+ this.filterValid.push('stress:' + params.stress);
+ }
+ }
+
+ let nameRule = /^[A-Za-z]{1}[\w#,.]*$/;
+ let paramClassKeys = ['class', 'notClass'];
+ for (const key of paramClassKeys) {
+ if (params[key] !== undefined && params[key] !== '' && params[key] !== null) {
+ let classArray = params[key].split(',');
+ classArray.forEach(item => !item.match(nameRule) ? this.filterValid.push(`${key}:${params[key]}`) : null);
+ }
+ }
+ }
+
+ setConfig(params) {
+ this.basicParamValidCheck(params);
+ this.filterParamValidCheck(params);
+ try {
+ this.class = params.class;
+ this.notClass = params.notClass;
+ this.flag = params.flag || {flag: false};
+ this.suite = params.suite;
+ this.itName = params.itName;
+ this.filter = params.filter;
+ this.testType = params.testType;
+ this.level = params.level;
+ this.size = params.size;
+ this.timeout = params.timeout;
+ this.dryRun = params.dryRun;
+ this.breakOnError = params.breakOnError;
+ this.random = params.random === 'true' ? true : false;
+ this.stress = params.stress;
+ this.coverage = params.coverage;
+ this.filterParam = {
+ testType: {
+ 'function': 1,
+ 'performance': 1 << 1,
+ 'power': 1 << 2,
+ 'reliability': 1 << 3,
+ 'security': 1 << 4,
+ 'global': 1 << 5,
+ 'compatibility': 1 << 6,
+ 'user': 1 << 7,
+ 'standard': 1 << 8,
+ 'safety': 1 << 9,
+ 'resilience': 1 << 10,
+ },
+ level: {
+ '0': 1 << 24,
+ '1': 1 << 25,
+ '2': 1 << 26,
+ '3': 1 << 27,
+ '4': 1 << 28,
+ },
+ size: {
+ 'small': 1 << 16,
+ 'medium': 1 << 17,
+ 'large': 1 << 18,
+ }
+ };
+ this.parseParams();
+ } catch (err) {
+ console.info(`${TAG}setConfig error: ${err.message}`);
+ }
+ }
+
+ parseParams() {
+ if (this.filter != null) {
+ return;
+ }
+ let testTypeFilter = 0;
+ let sizeFilter = 0;
+ let levelFilter = 0;
+ if (this.testType != null) {
+ testTypeFilter = this.testType.split(',')
+ .map(item => this.filterParam.testType[item] || 0)
+ .reduce((pre, cur) => pre | cur, 0);
+ }
+ if (this.level != null) {
+ levelFilter = this.level.split(',')
+ .map(item => this.filterParam.level[item] || 0)
+ .reduce((pre, cur) => pre | cur, 0);
+ }
+ if (this.size != null) {
+ sizeFilter = this.size.split(',')
+ .map(item => this.filterParam.size[item] || 0)
+ .reduce((pre, cur) => pre | cur, 0);
+ }
+ this.filter = testTypeFilter | sizeFilter | levelFilter;
+ console.info(`${TAG}filter params:${this.filter}`);
+ }
+
+ isCurrentSuite(description) {
+ if (this.suite !== undefined && this.suite !== '' && this.suite !== null) {
+ let suiteArray = this.suite.split(',');
+ return suiteArray.indexOf(description) !== -1;
+ }
+ return false;
+ }
+
+ filterSuite(currentSuiteName) {
+ let filterArray = [];
+ if (this.suite !== undefined && this.suite !== '' && this.suite !== null) {
+ filterArray.push(new SuiteAndItNameFilter(currentSuiteName, '', this.suite));
+ }
+ if (this.class !== undefined && this.class !== '' && this.class !== null) {
+ filterArray.push(new ClassFilter(currentSuiteName, '', this.class));
+ }
+ if (this.notClass !== undefined && this.notClass !== '' && this.notClass !== null) {
+ filterArray.push(new NotClassFilter(currentSuiteName, '', this.notClass));
+ }
+
+ let result = filterArray.map(item => item.filterSuite()).reduce((pre, cur) => pre || cur, false);
+ return result;
+ }
+
+ filterDesc(currentSuiteName, desc, fi, coreContext) {
+ let filterArray = [];
+ if (this.itName !== undefined && this.itName !== '' && this.itName !== null) {
+ filterArray.push(new SuiteAndItNameFilter(currentSuiteName, desc, this.itName));
+ }
+ if (this.class !== undefined && this.class !== '' && this.class !== null) {
+ filterArray.push(new ClassFilter(currentSuiteName, desc, this.class));
+ }
+ if (this.notClass !== undefined && this.notClass !== '' && this.notClass !== null) {
+ filterArray.push(new NotClassFilter(currentSuiteName, desc, this.notClass));
+ }
+ if (typeof (this.filter) !== 'undefined' && this.filter !== 0 && fi !== 0) {
+ filterArray.push(new TestTypesFilter('', '', fi, this.filter));
+ }
+ let result = filterArray.map(item => item.filterIt()).reduce((pre, cur) => pre || cur, false);
+ return result;
+ }
+
+ isRandom() {
+ return this.random || false;
+ }
+
+ isBreakOnError() {
+ return this.breakOnError !== 'true' ? false : true;
+ }
+
+ setSupportAsync(value) {
+ this.supportAsync = value;
+ }
+
+ isSupportAsync() {
+ return this.supportAsync;
+ }
+
+ translateParams(parameters) {
+ const keySet = new Set([
+ '-s class', '-s notClass', '-s suite', '-s itName',
+ '-s level', '-s testType', '-s size', '-s timeout',
+ '-s dryRun', '-s random', '-s breakOnError', '-s stress',
+ '-s coverage', 'class', 'notClass', 'suite', 'itName',
+ 'level', 'testType', 'size', 'timeout', 'dryRun', 'random',
+ 'breakOnError', 'stress', 'coverage'
+ ]);
+ let targetParams = {};
+ for (const key in parameters) {
+ if (keySet.has(key)) {
+ var newKey = key.replace("-s ", "");
+ targetParams[newKey] = parameters[key];
+ }
+ }
+ return targetParams;
+ }
+ translateParamsToString(parameters) {
+ const keySet = new Set([
+ '-s class', '-s notClass', '-s suite', '-s itName',
+ '-s level', '-s testType', '-s size', '-s timeout',
+ '-s dryRun', '-s random', '-s breakOnError', '-s stress',
+ '-s coverage', 'class', 'notClass', 'suite', 'itName',
+ 'level', 'testType', 'size', 'timeout', 'dryRun', 'random',
+ 'breakOnError', 'stress', 'coverage'
+ ]);
+ let targetParams = '';
+ for (const key in parameters) {
+ if (keySet.has(key)) {
+ targetParams += ' ' + key + ' ' + parameters[key];
+ }
+ }
+ return targetParams.trim();
+ }
+
+ execute() {
+ }
+}
+
+export {
+ ConfigService
+};
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/coverage/coverageCollect.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/coverage/coverageCollect.js
new file mode 100644
index 0000000..632a682
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/coverage/coverageCollect.js
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2023 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import SysTestKit from "../kit/SysTestKit";
+
+export async function collectCoverageData() {
+ if (globalThis.__coverage__ === undefined) {
+ return;
+ }
+ const strJson = JSON.stringify(globalThis.__coverage__);
+ const strLen = strJson.length;
+ const maxLen = 500;
+ const maxCount = Math.floor(strLen / maxLen);
+ const OHOS_REPORT_COVERAGE_DATA = 'OHOS_REPORT_COVERAGE_DATA:';
+ for (let count = 0; count <= maxCount; count++) {
+ console.info(`${OHOS_REPORT_COVERAGE_DATA} ${strJson.substring(count * maxLen, (count + 1) * maxLen)}`);
+ await SysTestKit.print(`${OHOS_REPORT_COVERAGE_DATA} ${strJson.substring(count * maxLen, (count + 1) * maxLen)}`);
+ }
+}
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/kit/SysTestKit.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/kit/SysTestKit.js
new file mode 100644
index 0000000..65d063c
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/kit/SysTestKit.js
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {TAG} from '../../Constant';
+
+export default class SysTestKit {
+
+ static delegator = null;
+ static systemTime = null;
+
+ constructor() {
+ this.id = 'sysTestKit';
+ this.index = 0;
+ }
+
+ static actionStart(tag) {
+ console.info(`${TAG}${JSON.stringify(tag)}`);
+ var message = '\n' + 'OHOS_REPORT_ACTIONSTART: ' + JSON.stringify(tag) + '\n';
+ SysTestKit.print(message);
+ console.info(`${TAG}${JSON.stringify(tag)} actionStart print success`);
+ }
+
+ static actionEnd(tag) {
+ console.info(`${TAG}${JSON.stringify(tag)}`);
+ var message = '\n' + 'OHOS_REPORT_ACTIONEND: ' + JSON.stringify(tag) + '\n';
+ SysTestKit.print(message);
+ console.info(`${TAG}${JSON.stringify(tag)} actionEnd print success`);
+ }
+
+ static async existKeyword(keyword, timeout) {
+ let reg = new RegExp(/^[a-zA-Z0-9]{1,}$/);
+ if (!reg.test(keyword)) {
+ throw new Error('keyword must contain more than one string, and only letters and numbers are supported.');
+ }
+ timeout = timeout || 4;
+
+ let searchResult = false;
+ let cmd = 'hilog -x | grep -i \'' + keyword + '\' | wc -l';
+ await executePromise(cmd, timeout).then((data) => {
+ searchResult = data;
+ });
+ return searchResult;
+ }
+ static async print(message) {
+ if ('printSync' in SysTestKit.delegator) {
+ console.debug(`${TAG}printSync called ...`);
+ SysTestKit.delegator.printSync(message);
+ } else {
+ await SysTestKit.delegator.print(message);
+ }
+ }
+
+ static async getRealTime() {
+ let currentTime = new Date().getTime();
+ if (SysTestKit.systemTime !== null && SysTestKit.systemTime !== undefined) {
+ await SysTestKit.systemTime.getRealTime().then((time) => {
+ console.info(`${TAG}systemTime.getRealTime success data: ${JSON.stringify(time)}`);
+ currentTime = time;
+ }).catch((error) => {
+ console.error(`${TAG}failed to systemTime.getRealTime because ${JSON.stringify(error)}`);
+ });
+ }
+ return currentTime;
+ }
+}
+
+function executePromise(cmd, timeout) {
+ return new Promise((resolve, reject) => {
+ SysTestKit.delegator.executeShellCommand(cmd, timeout,
+ (error, data) => {
+ console.info(`${TAG}existKeyword CallBack: err : ${JSON.stringify(error)}`);
+ console.info(`${TAG}existKeyword CallBack: data : ${JSON.stringify(data)}`);
+ resolve(parseInt(data.stdResult) > 3 ? true : false);
+ });
+ });
+}
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/mock/ArgumentMatchers.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/mock/ArgumentMatchers.js
new file mode 100644
index 0000000..6a9d7aa
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/mock/ArgumentMatchers.js
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+class ArgumentMatchers {
+ ANY = "";
+ ANY_STRING = "";
+ ANY_BOOLEAN = "";
+ ANY_NUMBER = "";
+ ANY_OBJECT = "";
+ ANY_FUNCTION = "";
+ MATCH_REGEXS = "";
+
+ static any() {
+ }
+
+ static anyString() {
+ }
+
+ static anyBoolean() {
+ }
+
+ static anyNumber() {
+ }
+
+ static anyObj() {
+ }
+
+ static anyFunction() {
+ }
+
+ static matchRegexs() {
+ let regex = arguments[0];
+ if (ArgumentMatchers.isRegExp(regex)) {
+ return regex;
+ }
+ throw Error("not a regex");
+ }
+
+ static isRegExp(value) {
+ return Object.prototype.toString.call(value) === "[object RegExp]";
+ }
+
+ matcheReturnKey() {
+ let arg = arguments[0];
+ let regex = arguments[1];
+ let stubSetKey = arguments[2];
+
+ if (stubSetKey && stubSetKey == this.ANY) {
+ return this.ANY;
+ }
+
+ if (typeof arg === "string" && !regex) {
+ return this.ANY_STRING;
+ }
+
+ if (typeof arg === "boolean" && !regex) {
+ return this.ANY_BOOLEAN;
+ }
+
+ if (typeof arg === "number" && !regex) {
+ return this.ANY_NUMBER;
+ }
+
+ if (typeof arg === "object" && !regex) {
+ return this.ANY_OBJECT;
+ }
+
+ if (typeof arg === "function" && !regex) {
+ return this.ANY_FUNCTION;
+ }
+
+ if (typeof arg === "string" && regex) {
+ return regex.test(arg);
+ }
+
+ return null;
+ }
+
+ matcheStubKey() {
+ let key = arguments[0];
+
+ if (key === ArgumentMatchers.any) {
+ return this.ANY;
+ }
+
+ if (key === ArgumentMatchers.anyString) {
+ return this.ANY_STRING;
+ }
+ if (key === ArgumentMatchers.anyBoolean) {
+ return this.ANY_BOOLEAN;
+ }
+ if (key === ArgumentMatchers.anyNumber) {
+ return this.ANY_NUMBER;
+ }
+ if (key === ArgumentMatchers.anyObj) {
+ return this.ANY_OBJECT;
+ }
+ if (key === ArgumentMatchers.anyFunction) {
+ return this.ANY_FUNCTION;
+ }
+
+ if (ArgumentMatchers.isRegExp(key)) {
+ return key;
+ }
+
+ return null;
+ }
+}
+
+export default ArgumentMatchers;
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/mock/ExtendInterface.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/mock/ExtendInterface.js
new file mode 100644
index 0000000..c6a866a
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/mock/ExtendInterface.js
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+class ExtendInterface {
+ constructor(mocker) {
+ this.mocker = mocker;
+ }
+
+ stub() {
+ this.params = arguments;
+ return this;
+ }
+
+ stubMockedCall(returnInfo) {
+ this.mocker.stubApply(this, this.params, returnInfo);
+ }
+
+ afterReturn(value) {
+ this.stubMockedCall(function () {
+ return value;
+ });
+ }
+
+ afterReturnNothing() {
+ this.stubMockedCall(function () {
+ return undefined;
+ });
+ }
+
+ afterAction(action) {
+ this.stubMockedCall(action);
+ }
+
+ afterThrow(msg) {
+ this.stubMockedCall(function () {
+ throw msg;
+ });
+ }
+
+ clear() {
+ this.mocker.clear();
+ }
+}
+
+export default ExtendInterface;
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/mock/MockKit.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/mock/MockKit.js
new file mode 100644
index 0000000..1bd83be
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/mock/MockKit.js
@@ -0,0 +1,256 @@
+/*
+ * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import ExtendInterface from "./ExtendInterface";
+import VerificationMode from "./VerificationMode";
+import ArgumentMatchers from "./ArgumentMatchers";
+
+class MockKit {
+
+ constructor() {
+ this.mFunctions = [];
+ this.stubs = new Map();
+ this.recordCalls = new Map();
+ this.currentSetKey = new Map();
+ this.mockObj = null;
+ this.recordMockedMethod = new Map();
+ }
+
+ init() {
+ this.reset();
+ }
+
+ reset() {
+ this.mFunctions = [];
+ this.stubs = {};
+ this.recordCalls = {};
+ this.currentSetKey = new Map();
+ this.mockObj = null;
+ this.recordMockedMethod = new Map();
+ }
+
+ clearAll() {
+ this.reset();
+ var props = Object.keys(this);
+ for (var i = 0; i < props.length; i++) {
+ delete this[props[i]];
+ }
+
+ var props = Object.getOwnPropertyNames(this);
+ for (var i = 0; i < props.length; i++) {
+ delete this[props[i]];
+ }
+ for (var key in this) {
+ delete this[key];
+ }
+ }
+
+ clear(obj) {
+ if (!obj) throw Error("Please enter an object to be cleaned");
+ if (typeof (obj) != 'object') throw new Error('Not a object');
+ this.recordMockedMethod.forEach(function (value, key, map) {
+ if (key) {
+ obj[key] = value;
+ }
+ });
+ }
+
+ ignoreMock(obj, method) {
+ if (typeof (obj) != 'object') throw new Error('Not a object');
+ if (typeof (method) != 'function') throw new Error('Not a function');
+ let og = this.recordMockedMethod.get(method.propName);
+ if (og) {
+ obj[method.propName] = og;
+ this.recordMockedMethod.set(method.propName, undefined);
+ }
+ }
+
+ extend(dest, source) {
+ dest["stub"] = source["stub"];
+ dest["afterReturn"] = source["afterReturn"];
+ dest["afterReturnNothing"] = source["afterReturnNothing"];
+ dest["afterAction"] = source["afterAction"];
+ dest["afterThrow"] = source["afterThrow"];
+ dest["stubMockedCall"] = source["stubMockedCall"];
+ dest["clear"] = source["clear"];
+ return dest;
+ }
+
+ stubApply(f, params, returnInfo) {
+ let values = this.stubs.get(f);
+ if (!values) {
+ values = new Map();
+ }
+ let key = params[0];
+ if (typeof key == "undefined") {
+ key = "anonymous-mock-" + f.propName;
+ }
+ let matcher = new ArgumentMatchers();
+ if (matcher.matcheStubKey(key)) {
+ key = matcher.matcheStubKey(key);
+ if (key) {
+ this.currentSetKey.set(f, key);
+ }
+ }
+ values.set(key, returnInfo);
+ this.stubs.set(f, values);
+ }
+
+ getReturnInfo(f, params) {
+ let values = this.stubs.get(f);
+ if (!values) {
+ return undefined;
+ }
+ let retrunKet = params[0];
+ if (typeof retrunKet == "undefined") {
+ retrunKet = "anonymous-mock-" + f.propName;
+ }
+ let stubSetKey = this.currentSetKey.get(f);
+
+ if (stubSetKey && (typeof (retrunKet) != "undefined")) {
+ retrunKet = stubSetKey;
+ }
+ let matcher = new ArgumentMatchers();
+ if (matcher.matcheReturnKey(params[0], undefined, stubSetKey) && matcher.matcheReturnKey(params[0], undefined, stubSetKey) != stubSetKey) {
+ retrunKet = params[0];
+ }
+
+ values.forEach(function (value, key, map) {
+ if (ArgumentMatchers.isRegExp(key) && matcher.matcheReturnKey(params[0], key)) {
+ retrunKet = key;
+ }
+ });
+
+ return values.get(retrunKet);
+ }
+
+ findName(obj, value) {
+ let properties = this.findProperties(obj);
+ let name = null;
+ properties.filter(item => (item !== 'caller' && item !== 'arguments')).forEach(
+ function (va1, idx, array) {
+ if (obj[va1] === value) {
+ name = va1;
+ }
+ }
+ );
+ return name;
+ }
+
+ isFunctionFromPrototype(f, container, propName) {
+ if (container.constructor != Object && container.constructor.prototype !== container) {
+ return container.constructor.prototype[propName] === f;
+ }
+ return false;
+ }
+
+ findProperties(obj, ...arg) {
+ function getProperty(new_obj) {
+ if (new_obj.__proto__ === null) {
+ return [];
+ }
+ let properties = Object.getOwnPropertyNames(new_obj);
+ return [...properties, ...getProperty(new_obj.__proto__)];
+ }
+ return getProperty(obj);
+ }
+
+ recordMethodCall(originalMethod, args) {
+ Function.prototype.getName = function () {
+ return this.name || this.toString().match(/function\s*([^(]*)\(/)[1];
+ };
+ let name = originalMethod.getName();
+ let arglistString = name + '(' + Array.from(args).toString() + ')';
+ let records = this.recordCalls.get(arglistString);
+ if (!records) {
+ records = 0;
+ }
+ records++;
+ this.recordCalls.set(arglistString, records);
+ }
+
+ mockFunc(originalObject, originalMethod) {
+ let tmp = this;
+ this.originalMethod = originalMethod;
+ let f = function () {
+ let args = arguments;
+ let action = tmp.getReturnInfo(f, args);
+ if (originalMethod) {
+ tmp.recordMethodCall(originalMethod, args);
+ }
+ if (action) {
+ return action.apply(this, args);
+ }
+ };
+
+ f.container = null || originalObject;
+ f.original = originalMethod || null;
+
+ if (originalObject && originalMethod) {
+ if (typeof (originalMethod) != 'function') throw new Error('Not a function');
+ var name = this.findName(originalObject, originalMethod);
+ originalObject[name] = f;
+ this.recordMockedMethod.set(name, originalMethod);
+ f.propName = name;
+ f.originalFromPrototype = this.isFunctionFromPrototype(f.original, originalObject, f.propName);
+ }
+ f.mocker = this;
+ this.mFunctions.push(f);
+ this.extend(f, new ExtendInterface(this));
+ return f;
+ }
+
+ verify(methodName, argsArray) {
+ if (!methodName) {
+ throw Error("not a function name");
+ }
+ let a = this.recordCalls.get(methodName + '(' + argsArray.toString() + ')');
+ return new VerificationMode(a ? a : 0);
+ }
+
+ mockObject(object) {
+ if (!object || typeof object === "string") {
+ throw Error(`this ${object} cannot be mocked`);
+ }
+ const _this = this;
+ let mockedObject = {};
+ let keys = Reflect.ownKeys(object);
+ keys.filter(key => (typeof Reflect.get(object, key)) === 'function')
+ .forEach(key => {
+ mockedObject[key] = object[key];
+ mockedObject[key] = _this.mockFunc(mockedObject, mockedObject[key]);
+ });
+ return mockedObject;
+ }
+}
+
+function ifMockedFunction(f) {
+ if (Object.prototype.toString.call(f) != "[object Function]" &&
+ Object.prototype.toString.call(f) != "[object AsyncFunction]") {
+ throw Error("not a function");
+ }
+ if (!f.stub) {
+ throw Error("not a mock function");
+ }
+ return true;
+}
+
+function when(f) {
+ if (ifMockedFunction(f)) {
+ return f.stub.bind(f);
+ }
+}
+
+export {MockKit, when};
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/mock/VerificationMode.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/mock/VerificationMode.js
new file mode 100644
index 0000000..28eda2b
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/mock/VerificationMode.js
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {expect} from '../../interface';
+
+class VerificationMode {
+ constructor(times) {
+ this.doTimes = times;
+ }
+
+ times(count) {
+ expect(count).assertEqual(this.doTimes);
+ }
+
+ never() {
+ console.log(this.doTimes);
+ expect(0).assertEqual(this.doTimes);
+ }
+
+ once() {
+ expect(1).assertEqual(this.doTimes);
+ }
+
+ atLeast(count) {
+ if (count > this.doTimes) {
+ throw Error('failed ' + count + ' greater than the actual execution times of method');
+ }
+ }
+
+ atMost(count) {
+ if (count < this.doTimes) {
+ throw Error('failed ' + count + ' less than the actual execution times of method');
+ }
+ }
+}
+
+export default VerificationMode;
\ No newline at end of file
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/report/OhReport.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/report/OhReport.js
new file mode 100644
index 0000000..f648b11
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/report/OhReport.js
@@ -0,0 +1,152 @@
+/*
+ * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import SysTestKit from "../kit/SysTestKit";
+import {collectCoverageData} from '../coverage/coverageCollect';
+import {TAG} from '../../Constant';
+
+class OhReport {
+ constructor(attr) {
+ this.delegator = attr.delegator;
+ this.abilityDelegatorArguments = attr.abilityDelegatorArguments;
+ this.id = 'report';
+ this.index = 0;
+ this.duration = 0;
+ }
+
+ init(coreContext) {
+ this.coreContext = coreContext;
+ this.suiteService = this.coreContext.getDefaultService('suite');
+ this.specService = this.coreContext.getDefaultService('spec');
+ }
+
+ taskStart() {
+ }
+
+ async taskDone() {
+ if (this.abilityDelegatorArguments !== null) {
+ this.taskDoneTime = new Date().getTime();
+ let summary = this.suiteService.getSummary();
+ const configService = this.coreContext.getDefaultService('config');
+ if (configService['coverage'] === 'true') {
+ await collectCoverageData();
+ }
+ let message = '\n' + 'OHOS_REPORT_RESULT: stream=Tests run: ' + summary.total + ', Failure: ' + summary.failure;
+ message += ', Error: ' + summary.error;
+ message += ', Pass: ' + summary.pass;
+ message += ', Ignore: ' + summary.ignore;
+ message += '\n' + 'OHOS_REPORT_CODE: ' + (summary.failure > 0 ? -1 : 0) + '\n';
+ let isHasError = summary.failure > 0 || summary.error > 0;
+ let config = this.coreContext.getDefaultService('config');
+ if (config.isBreakOnError() && isHasError) {
+ // 未执行全部说明
+ message += '\n' + 'OHOS_REPORT_RESULT: breakOnError model, Stopping whole test suite if one specific test case failed or error' + '\n';
+ }
+ message += 'OHOS_REPORT_STATUS: taskconsuming=' + summary.duration + '\n';
+ console.info(`${message}`);
+ await SysTestKit.print(message);
+ }
+ console.info(`${TAG}report print success`);
+ this.delegator.finishTest('your test finished!!!', 0, () => { });
+ }
+
+ incorrectFormat() {
+ if (this.coreContext.getDefaultService('config').filterValid.length !== 0) {
+ var value = this.coreContext.getDefaultService('config').filterValid;
+ var message = 'this param ' + value.join(',') + ' is invalid' + '\n';
+ this.delegator.finishTest(message, 0, () => {
+ });
+ }
+ }
+
+ async suiteStart() {
+ if (this.abilityDelegatorArguments !== null) {
+ let message = '\n' + 'OHOS_REPORT_SUM: ' + this.suiteService.getCurrentRunningSuite().getSpecsNum();
+ message += '\n' + 'OHOS_REPORT_STATUS: class=' + this.suiteService.getCurrentRunningSuite().description + '\n';
+ console.info(`${message}`);
+ await SysTestKit.print(message);
+ console.info(`${TAG}${this.suiteService.getCurrentRunningSuite().description} suiteStart print success`);
+ }
+ }
+
+ async suiteDone() {
+ if (this.abilityDelegatorArguments !== null) {
+ const currentRunningSuite = this.suiteService.getCurrentRunningSuite();
+ let message = '\n' + 'OHOS_REPORT_STATUS: class=' + this.suiteService.getCurrentRunningSuite().description;
+ message += '\n' + 'OHOS_REPORT_STATUS: suiteconsuming=' + this.suiteService.getCurrentRunningSuite().duration;
+ if (currentRunningSuite.hookError) {
+ message += '\n' + `OHOS_REPORT_STATUS: ${currentRunningSuite.hookError.message}`;
+ }
+ message += '\n';
+ console.info(`${message}`);
+ await SysTestKit.print(message);
+ console.info(`${TAG}${this.suiteService.getCurrentRunningSuite().description} suiteDone print success`);
+ }
+ }
+
+ async specStart() {
+ if (this.abilityDelegatorArguments !== null) {
+ let message = '\n' + 'OHOS_REPORT_STATUS: class=' + this.suiteService.getCurrentRunningSuite().description;
+ message += '\n' + 'OHOS_REPORT_STATUS: current=' + (++this.index);
+ message += '\n' + 'OHOS_REPORT_STATUS: id=JS';
+ message += '\n' + 'OHOS_REPORT_STATUS: numtests=' + this.specService.getTestTotal();
+ message += '\n' + 'OHOS_REPORT_STATUS: stream=';
+ message += '\n' + 'OHOS_REPORT_STATUS: test=' + this.specService.currentRunningSpec.description;
+ message += '\n' + 'OHOS_REPORT_STATUS_CODE: 1' + '\n';
+ console.info(`${message}`);
+ await SysTestKit.print(message);
+ console.info(`${TAG}${this.specService.currentRunningSpec.description} specStart start print success`);
+ }
+ }
+
+ async specDone() {
+ if (this.abilityDelegatorArguments !== null) {
+ let message = '\n' + 'OHOS_REPORT_STATUS: class=' + this.suiteService.getCurrentRunningSuite().description;
+ message += '\n' + 'OHOS_REPORT_STATUS: current=' + (this.index);
+ message += '\n' + 'OHOS_REPORT_STATUS: id=JS';
+ message += '\n' + 'OHOS_REPORT_STATUS: numtests=' + this.specService.getTestTotal();
+ let errorMsg = '';
+ if (this.specService.currentRunningSpec.error) {
+ message += '\n' + 'OHOS_REPORT_STATUS: stack=' + this.specService.currentRunningSpec.error.message;
+ message += '\n' + 'OHOS_REPORT_STATUS: stream=';
+ message += '\n' + 'Error in ' + this.specService.currentRunningSpec.description;
+ message += '\n' + this.specService.currentRunningSpec.error.message;
+ message += '\n' + 'OHOS_REPORT_STATUS: test=' + this.specService.currentRunningSpec.description;
+ message += '\n' + 'OHOS_REPORT_STATUS_CODE: -1' + '\n';
+ } else if (this.specService.currentRunningSpec) {
+ if (this.specService.currentRunningSpec.fail) {
+ errorMsg = this.specService.currentRunningSpec.fail?.message;
+ message += '\n' + 'OHOS_REPORT_STATUS: stack=' + errorMsg;
+ message += '\n' + 'OHOS_REPORT_STATUS: stream=';
+ message += '\n' + 'Error in ' + this.specService.currentRunningSpec.description;
+ message += '\n' + errorMsg + '\n' + 'OHOS_REPORT_STATUS: test=' + this.specService.currentRunningSpec.description;
+ message += '\n' + 'OHOS_REPORT_STATUS_CODE: -2' + '\n';
+ } else {
+ message += '\n' + 'OHOS_REPORT_STATUS: stream=';
+ message += '\n' + 'OHOS_REPORT_STATUS: test=' + this.specService.currentRunningSpec.description;
+ message += '\n' + 'OHOS_REPORT_STATUS_CODE: 0' + '\n';
+ }
+ } else {
+ message += '\n';
+ }
+ message += 'OHOS_REPORT_STATUS: consuming=' + this.specService.currentRunningSpec.duration + '\n';
+ console.info(`${message}`);
+ await SysTestKit.print(message);
+ console.info(`${TAG}${this.specService.currentRunningSpec.description} specDone end print success`);
+ }
+ }
+}
+
+export default OhReport;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/report/ReportExtend.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/report/ReportExtend.js
new file mode 100644
index 0000000..852fbcd
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/module/report/ReportExtend.js
@@ -0,0 +1,137 @@
+/*
+ * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+class ReportExtend {
+ constructor(fileModule) {
+ this.id = 'extend';
+ this.fileModule = fileModule;
+ }
+
+ init(coreContext) {
+ this.coreContext = coreContext;
+ this.suiteService = this.coreContext.getDefaultService('suite');
+ }
+
+ taskStart() {
+
+ }
+
+ taskDone() {
+ const report = {
+ tag: 'testsuites',
+ name: 'summary_report',
+ timestamp: new Date().toDateString(),
+ time: '1',
+ errors: 0,
+ failures: 0,
+ tests: 0,
+ children: []
+ };
+ const rootSuite = this.suiteService.rootSuite;
+ if (rootSuite && rootSuite.childSuites) {
+ for (let testsuite of rootSuite.childSuites) {
+ let suiteReport = {
+ tag: 'testsuite',
+ name: testsuite['description'],
+ errors: 0,
+ tests: 0,
+ failures: 0,
+ time: '0.1',
+ children: []
+ };
+ let specs = testsuite['specs'];
+ for (let testcase of specs) {
+ report.tests++;
+ suiteReport.tests++;
+ let caseReport = {
+ tag: 'testcase',
+ name: testcase['description'],
+ status: 'run',
+ time: '0.0',
+ classname: testsuite['description']
+ };
+ if (testcase.error) {
+ caseReport['result'] = false;
+ caseReport['children'] = [{
+ tag: 'error',
+ type: '',
+ message: testcase.error.message
+ }];
+ report.errors++;
+ suiteReport.errors++;
+ } else if (testcase.result.failExpects.length > 0) {
+ caseReport['result'] = false;
+ let message = '';
+ testcase.result.failExpects.forEach(failExpect => {
+ message += failExpect.message || ('expect ' + failExpect.actualValue + ' ' + failExpect.checkFunc + ' ' + (failExpect.expectValue || '')) + ';';
+ });
+ caseReport['children'] = [{
+ tag: 'failure',
+ type: '',
+ message: message
+ }];
+ report.failures++;
+ suiteReport.failures++;
+ } else {
+ caseReport['result'] = true;
+ }
+ suiteReport.children.push(caseReport);
+ }
+ report.children.push(suiteReport);
+ }
+ }
+
+ let reportXml = '\n' + json2xml(report);
+ this.fileModule.writeText({
+ uri: 'internal://app/report.xml',
+ text: reportXml,
+ success: function () {
+ console.info('call success callback success');
+ },
+ fail: function (data, code) {
+ console.info('call fail callback success:');
+ },
+ complete: function () {
+ console.info('call complete callback success');
+ }
+ });
+ }
+}
+
+function json2xml(json) {
+ let tagName;
+ let hasChildren = false;
+ let childrenStr = '';
+ let attrStr = '';
+ for (let key in json) {
+ if (key === 'tag') {
+ tagName = json[key];
+ } else if (key === 'children') {
+ if (json[key].length > 0) {
+ hasChildren = true;
+ for (let child of json[key]) {
+ childrenStr += json2xml(child);
+ }
+ }
+ } else {
+ attrStr += ` ${key}="${json[key]}"`;
+ }
+ }
+ let xml = `<${tagName}${attrStr}`;
+ xml += hasChildren ? `>${childrenStr}${tagName}>` : '/>';
+ return xml;
+}
+
+export default ReportExtend;
diff --git a/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/service.js b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/service.js
new file mode 100644
index 0000000..74e9aa9
--- /dev/null
+++ b/ensping/ensp13/oh_modules/.ohpm/@ohos+hypium@1.0.11/oh_modules/@ohos/hypium/src/main/service.js
@@ -0,0 +1,996 @@
+/*
+ * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import SysTestKit from "./module/kit/SysTestKit";
+import {TAG} from './Constant';
+
+class AssertException extends Error {
+ constructor(message) {
+ super();
+ this.name = "AssertException";
+ this.message = message;
+ }
+}
+
+function getFuncWithArgsZero(func, timeout, isStressTest) {
+ return new Promise(async (resolve, reject) => {
+ let timer = null;
+ if (!isStressTest) {
+ timer = setTimeout(() => {
+ reject(new Error('execute timeout ' + timeout + 'ms'));
+ }, timeout);
+ }
+ try {
+ await func();
+ } catch (err) {
+ reject(err);
+ }
+ timer !== null ? clearTimeout(timer) : null;
+ resolve();
+ });
+}
+
+function getFuncWithArgsOne(func, timeout, isStressTest) {
+ return new Promise(async (resolve, reject) => {
+ let timer = null;
+ if (!isStressTest) {
+ timer = setTimeout(() => {
+ reject(new Error('execute timeout ' + timeout + 'ms'));
+ }, timeout);;
+ }
+
+ function done() {
+ timer !== null ? clearTimeout(timer) : null;
+ resolve();
+ }
+
+ try {
+ await func(done);
+ } catch (err) {
+ timer !== null ? clearTimeout(timer) : null;
+ reject(err);
+ }
+ });
+}
+
+function getFuncWithArgsTwo(func, timeout, paramItem, isStressTest) {
+ return new Promise(async (resolve, reject) => {
+ let timer = null;
+ if (!isStressTest) {
+ timer = setTimeout(() => {
+ reject(new Error('execute timeout ' + timeout + 'ms'));
+ }, timeout);
+ }
+
+ function done() {
+ timer !== null ? clearTimeout(timer) : null;
+ resolve();
+ }
+
+ try {
+ await func(done, paramItem);
+ } catch (err) {
+ timer !== null ? clearTimeout(timer) : null;
+ reject(err);
+ }
+ });
+}
+
+function processFunc(coreContext, func) {
+ let argNames = ((func || '').toString()
+ .replace(/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg, '')
+ .match(/^(function)?\s*[^\(]*\(\s*([^\)]*)\)/m) || ['', '', ''])[2]
+ .split(',') // split parameters
+ .map(item => item.replace(/^\s*(_?)(.+?)\1\s*$/, name => name.split('=')[0].trim()))
+ .filter(String);
+ let funcLen = func.length;
+ let processedFunc;
+ const config = coreContext.getDefaultService('config');
+ config.setSupportAsync(true);
+ const timeout = + (config.timeout === undefined ? 5000 : config.timeout);
+ const isStressTest = (coreContext.getServices('dataDriver') !== undefined || config.getStress() > 1);
+ switch (funcLen) {
+ case 0: {
+ processedFunc = function () {
+ return getFuncWithArgsZero(func, timeout, isStressTest);
+ };
+ break;
+ }
+ case 1: {
+ if (argNames[0] === 'data') {
+ processedFunc = function (paramItem) {
+ func(paramItem);
+ };
+ } else {
+ processedFunc = function () {
+ return getFuncWithArgsOne(func, timeout, isStressTest);
+ };
+ }
+ break;
+ }
+ default: {
+ processedFunc = function (paramItem) {
+ return getFuncWithArgsTwo(func, timeout, paramItem, isStressTest);
+ };
+ break;
+ }
+ }
+ return processedFunc;
+}
+
+function secureRandomNumber() {
+ return crypto.randomBytes(8).readUInt32LE() / 0xffffffff;
+}
+
+class SuiteService {
+ constructor(attr) {
+ this.id = attr.id;
+ this.rootSuite = new SuiteService.Suite({});
+ this.currentRunningSuite = this.rootSuite;
+ this.suitesStack = [this.rootSuite];
+ }
+
+ describe(desc, func) {
+ const configService = this.coreContext.getDefaultService('config');
+ if (configService.filterSuite(desc)) {
+ console.info(`${TAG}filter suite : ${desc}`);
+ return;
+ }
+ const suite = new SuiteService.Suite({description: desc});
+ if (typeof this.coreContext.getServices('dataDriver') !== 'undefined' && configService['dryRun'] !== 'true') {
+ let suiteStress = this.coreContext.getServices('dataDriver').dataDriver.getSuiteStress(desc);
+ for (let i = 1; i < suiteStress; i++) {
+ this.currentRunningSuite.childSuites.push(suite);
+ }
+ }
+ this.currentRunningSuite.childSuites.push(suite);
+ this.currentRunningSuite = suite;
+ this.suitesStack.push(suite);
+ func.call();
+ let childSuite = this.suitesStack.pop();
+ if (this.suitesStack.length === 0) {
+ this.currentRunningSuite = childSuite;
+ this.suitesStack.push(childSuite);
+ }
+ if (this.suitesStack.length > 1) {
+ this.currentRunningSuite = this.suitesStack.pop();
+ } else {
+ this.currentRunningSuite = this.suitesStack.pop();
+ this.suitesStack.push(this.currentRunningSuite);
+ }
+ }
+
+ beforeAll(func) {
+ this.currentRunningSuite.beforeAll.push(processFunc(this.coreContext, func));
+ }
+
+ beforeEach(func) {
+ this.currentRunningSuite.beforeEach.push(processFunc(this.coreContext, func));
+ }
+
+ beforeItSpecified(itDescs, func) {
+ this.currentRunningSuite.beforeItSpecified.set(itDescs, processFunc(this.coreContext, func));
+ }
+
+ afterItSpecified(itDescs, func) {
+ this.currentRunningSuite.afterItSpecified.set(itDescs, processFunc(this.coreContext, func));
+ }
+
+ afterAll(func) {
+ this.currentRunningSuite.afterAll.push(processFunc(this.coreContext, func));
+ }
+
+ afterEach(func) {
+ this.currentRunningSuite.afterEach.push(processFunc(this.coreContext, func));
+ }
+
+ getCurrentRunningSuite() {
+ return this.currentRunningSuite;
+ }
+
+ setCurrentRunningSuite(suite) {
+ this.currentRunningSuite = suite;
+ }
+
+ traversalResults(suite, obj, breakOnError) {
+ if (suite.childSuites.length === 0 && suite.specs.length === 0) {
+ return obj;
+ }
+ if (suite.specs.length > 0) {
+ for (const itItem of suite.specs) {
+ obj.total++;
+ if (breakOnError && (obj.error > 0 || obj.failure > 0)) { // breakOnError模式
+ continue;
+ }
+ if (itItem.error) {
+ obj.error++;
+ } else if (itItem.fail) {
+ obj.failure++;
+ } else if (itItem.pass === true) {
+ obj.pass++;
+ }
+ }
+ }
+
+ obj.duration += suite.duration;
+
+ if (suite.childSuites.length > 0) {
+ for (const suiteItem of suite.childSuites) {
+ this.traversalResults(suiteItem, obj, breakOnError);
+ }
+ }
+ }
+
+ async setSuiteResults(suite, error, coreContext) {
+ if (suite.childSuites.length === 0 && suite.specs.length === 0) {
+ return obj;
+ }
+ if (suite.specs.length > 0) {
+ const specService = coreContext.getDefaultService('spec');
+ for (const specItem of suite.specs) {
+ specService.setCurrentRunningSpec(specItem);
+ if (error instanceof AssertException) {
+ specItem.fail = error;
+ } else {
+ specItem.error = error;
+ }
+ await coreContext.fireEvents('spec', 'specStart', specItem);
+ await coreContext.fireEvents('spec', 'specDone', specItem);
+ }
+ }
+ if (suite.childSuites.length > 0) {
+ for (const suiteItem of suite.childSuites) {
+ await this.setSuiteResults(suiteItem, error, coreContext);
+ }
+ }
+ }
+
+ getSummary() {
+ let suiteService = this.coreContext.getDefaultService('suite');
+ let rootSuite = suiteService.rootSuite;
+ const specService = this.coreContext.getDefaultService('spec');
+ const configService = this.coreContext.getDefaultService('config');
+ let breakOnError = configService.isBreakOnError();
+ let isError = specService.getStatus();
+ let isBreaKOnError = breakOnError && isError;
+ let obj = {total: 0, failure: 0, error: 0, pass: 0, ignore: 0, duration: 0};
+ for (const suiteItem of rootSuite.childSuites) {
+ this.traversalResults(suiteItem, obj, isBreaKOnError);
+ }
+ obj.ignore = obj.total - obj.pass - obj.failure - obj.error;
+ return obj;
+ }
+
+ init(coreContext) {
+ this.coreContext = coreContext;
+ }
+
+ traversalSuites(suite, obj, configService) {
+ if (suite.childSuites.length === 0 && suite.specs.length === 0) {
+ return [];
+ }
+ if (suite.specs.length > 0) {
+ let itArray = [];
+ for (const itItem of suite['specs']) {
+ if (!configService.filterDesc(suite.description, itItem.description, itItem.fi, null)) {
+ itArray.push({'itName': itItem.description});
+ }
+ }
+ obj[suite.description] = itArray;
+ }
+
+ if (suite.childSuites.length > 0) {
+ let suiteArray = [];
+ for (const suiteItem of suite.childSuites) {
+ let suiteObj = {};
+ this.traversalSuites(suiteItem, suiteObj, configService);
+ if (!configService.filterSuite(suiteItem.description)) {
+ suiteArray.push(suiteObj);
+ }
+ }
+ obj.suites = suiteArray;
+ }
+ }
+
+ async dryRun(abilityDelegator) {
+ const configService = this.coreContext.getDefaultService('config');
+ let testSuitesObj = {};
+ let suitesArray = [];
+ for (const suiteItem of this.rootSuite.childSuites) {
+ let obj = {};
+ this.traversalSuites(suiteItem, obj, configService);
+ if (!configService.filterSuite(suiteItem.description)) {
+ suitesArray.push(obj);
+ }
+ }
+ testSuitesObj['suites'] = suitesArray;
+
+ let strJson = JSON.stringify(testSuitesObj);
+ let strLen = strJson.length;
+ let maxLen = 500;
+ let maxCount = Math.floor(strLen / maxLen);
+
+ for (let count = 0; count <= maxCount; count++) {
+ await SysTestKit.print(strJson.substring(count * maxLen, (count + 1) * maxLen));
+ }
+ console.info(`${TAG}dryRun print success`);
+ abilityDelegator.finishTest('dry run finished!!!', 0, () => { });
+ }
+
+ execute() {
+ const configService = this.coreContext.getDefaultService('config');
+ if (configService.filterValid.length !== 0) {
+ this.coreContext.fireEvents('task', 'incorrectFormat');
+ return;
+ }
+
+ if (configService.isRandom() && this.rootSuite.childSuites.length > 0) {
+ this.rootSuite.childSuites.sort(function () {
+ return Math.random().toFixed(1) > 0.5 ? -1 : 1;
+ });
+ this.currentRunningSuite = this.rootSuite.childSuites[0];
+ }
+
+ if (configService.isSupportAsync()) {
+ let asyncExecute = async () => {
+ await this.coreContext.fireEvents('task', 'taskStart');
+ await this.rootSuite.asyncRun(this.coreContext);
+ };
+ asyncExecute().then(async () => {
+ await this.coreContext.fireEvents('task', 'taskDone');
+ });
+ } else {
+ this.coreContext.fireEvents('task', 'taskStart');
+ this.rootSuite.run(this.coreContext);
+ this.coreContext.fireEvents('task', 'taskDone');
+ }
+ }
+
+ apis() {
+ const _this = this;
+ return {
+ describe: function (desc, func) {
+ return _this.describe(desc, func);
+ },
+ beforeItSpecified: function (itDescs, func) {
+ return _this.beforeItSpecified(itDescs, func);
+ },
+ afterItSpecified: function (itDescs, func) {
+ return _this.afterItSpecified(itDescs, func);
+ },
+ beforeAll: function (func) {
+ return _this.beforeAll(func);
+ },
+ beforeEach: function (func) {
+ return _this.beforeEach(func);
+ },
+ afterAll: function (func) {
+ return _this.afterAll(func);
+ },
+ afterEach: function (func) {
+ return _this.afterEach(func);
+ }
+ };
+ }
+}
+
+SuiteService.Suite = class {
+ constructor(attrs) {
+ this.description = attrs.description || '';
+ this.childSuites = [];
+ this.specs = [];
+ this.beforeAll = [];
+ this.afterAll = [];
+ this.beforeItSpecified = new Map();
+ this.afterItSpecified = new Map();
+ this.beforeEach = [];
+ this.afterEach = [];
+ this.duration = 0;
+ this.hookError = null;
+ }
+
+ pushSpec(spec) {
+ this.specs.push(spec);
+ }
+
+ removeSpec(desc) {
+ this.specs = this.specs.filter((item, index) => {
+ return item.description !== desc;
+ });
+ }
+
+ getSpecsNum() {
+ return this.specs.length;
+ }
+
+ isRun(coreContext) {
+ const configService = coreContext.getDefaultService('config');
+ const suiteService = coreContext.getDefaultService('suite');
+ const specService = coreContext.getDefaultService('spec');
+ let breakOnError = configService.isBreakOnError();
+ let isError = specService.getStatus();
+ return breakOnError && isError;
+ }
+
+ run(coreContext) {
+ const suiteService = coreContext.getDefaultService('suite');
+ suiteService.setCurrentRunningSuite(this);
+ if (this.description !== '') {
+ coreContext.fireEvents('suite', 'suiteStart', this);
+ }
+ this.runHookFunc('beforeAll');
+ if (this.specs.length > 0) {
+ const configService = coreContext.getDefaultService('config');
+ if (configService.isRandom()) {
+ this.specs.sort(function () {
+ return Math.random().toFixed(1) > 0.5 ? -1 : 1;
+ });
+ }
+ for (let spec in this.specs) {
+ let isBreakOnError = this.isRun(coreContext);
+ if (isBreakOnError) {
+ break;
+ }
+ this.runHookFunc('beforeEach');
+ spec.run(coreContext);
+ this.runHookFunc('afterEach');
+ }
+ }
+ if (this.childSuites.length > 0) {
+ for (let suite in this.childSuites) {
+ let isBreakOnError = this.isRun(coreContext);
+ if (isBreakOnError) {
+ break;
+ }
+ suite.run(coreContext);
+ suiteService.setCurrentRunningSuite(suite);
+ }
+ }
+ this.runHookFunc('afterAll');
+ if (this.description !== '') {
+ coreContext.fireEvents('suite', 'suiteDone');
+ }
+ }
+
+ async asyncRunSpecs(coreContext) {
+ const configService = coreContext.getDefaultService('config');
+ if (configService.isRandom()) {
+ this.specs.sort(function () {
+ return Math.random().toFixed(1) > 0.5 ? -1 : 1;
+ });
+ }
+ const specService = coreContext.getDefaultService('spec');
+ for (let specItem of this.specs) {
+ specService.setCurrentRunningSpec(specItem);
+ // 遇错即停模式,发现用例有问题,直接返回,不在执行后面的it
+ let isBreakOnError = this.isRun(coreContext);
+ if (isBreakOnError) {
+ console.log("break description :" + this.description);
+ break;
+ }
+ await coreContext.fireEvents('spec', 'specStart', specItem);
+ try {
+ for (const [itNames, hookFunc] of this.beforeItSpecified) {
+ if ((Object.prototype.toString.call(itNames) === '[object Array]' && itNames.includes(specItem.description)) ||
+ (Object.prototype.toString.call(itNames) === '[object String]' && itNames === specItem.description)) {
+ await Reflect.apply(hookFunc, null, []);
+ }
+ break;
+ }
+ await this.runAsyncHookFunc('beforeEach');
+ await specItem.asyncRun(coreContext);
+ for (const [itNames, hookFunc] of this.afterItSpecified) {
+ if ((Object.prototype.toString.call(itNames) === '[object Array]' && itNames.includes(specItem.description)) ||
+ (Object.prototype.toString.call(itNames) === '[object String]' && itNames === specItem.description)) {
+ await Reflect.apply(hookFunc, null, []);
+ }
+ break;
+ }
+ await this.runAsyncHookFunc('afterEach');
+ } catch (e) {
+ console.error(`${TAG}${e?.stack}`);
+ if (e instanceof AssertException) {
+ specItem.fail = e;
+ } else {
+ specItem.error = e;
+ }
+ specService.setStatus(true);
+ }
+ specItem.setResult();
+ await coreContext.fireEvents('spec', 'specDone', specItem);
+ specService.setCurrentRunningSpec(null);
+ }
+ }
+
+ async asyncRunChildSuites(coreContext) {
+ for (let i = 0; i < this.childSuites.length; i++) {
+ // 遇错即停模式, 发现用例有问题,直接返回,不在执行后面的description
+ let isBreakOnError = this.isRun(coreContext);
+ if (isBreakOnError) {
+ console.log(`${TAG}break description : ${this.description}`);
+ break;
+ }
+ await this.childSuites[i].asyncRun(coreContext);
+ }
+ }
+
+ async asyncRun(coreContext) {
+ const suiteService = coreContext.getDefaultService('suite');
+ const specService = coreContext.getDefaultService('spec');
+
+ suiteService.setCurrentRunningSuite(this);
+ suiteService.suitesStack.push(this);
+ if (this.description !== '') {
+ await coreContext.fireEvents('suite', 'suiteStart', this);
+ }
+
+ try {
+ await this.runAsyncHookFunc('beforeAll');
+ } catch (error) {
+ console.error(`${TAG}${error?.stack}`);
+ this.hookError = error;
+ }
+
+ if (this.hookError !== null) {
+ specService.setStatus(true);
+ await suiteService.setSuiteResults(this, this.hookError, coreContext);
+ }
+
+ if (this.specs.length > 0 && this.hookError === null) {
+ await this.asyncRunSpecs(coreContext);
+ }
+
+ if (this.childSuites.length > 0 && this.hookError === null) {
+ await this.asyncRunChildSuites(coreContext);
+ }
+
+ try {
+ await this.runAsyncHookFunc('afterAll');
+ } catch (error) {
+ console.error(`${TAG}${error?.stack}`);
+ this.hookError = error;
+ specService.setStatus(true);
+ }
+
+ if (this.description !== '') {
+ await coreContext.fireEvents('suite', 'suiteDone');
+ let childSuite = suiteService.suitesStack.pop();
+ if (suiteService.suitesStack.length === 0) {
+ suiteService.suitesStack.push(childSuite);
+ }
+ if (suiteService.suitesStack.length > 1) {
+ suiteService.setCurrentRunningSuite(suiteService.suitesStack.pop());
+ } else {
+ let currentRunningSuite = suiteService.suitesStack.pop();
+ suiteService.setCurrentRunningSuite(currentRunningSuite);
+ suiteService.suitesStack.push(currentRunningSuite);
+ }
+ }
+ }
+
+ runHookFunc(hookName) {
+ if (this[hookName] && this[hookName].length > 0) {
+ this[hookName].forEach(func => {
+ try {
+ func();
+ } catch (e) {
+ console.error(`${TAG}${e.stack}`);
+ }
+ });
+ }
+ }
+
+ async runAsyncHookFunc(hookName) {
+ for (const hookItem of this[hookName]) {
+ try {
+ await hookItem();
+ } catch (error) {
+ error['message'] += `, error in ${hookName} function`;
+ throw error;
+ }
+
+ }
+ }
+};
+
+class SpecService {
+ constructor(attr) {
+ this.id = attr.id;
+ this.totalTest = 0;
+ this.hasError = false;
+ }
+
+ init(coreContext) {
+ this.coreContext = coreContext;
+ }
+
+ setCurrentRunningSpec(spec) {
+ this.currentRunningSpec = spec;
+ }
+
+ setStatus(obj) {
+ this.hasError = obj;
+ }
+
+ getStatus() {
+ return this.hasError;
+ }
+
+ getTestTotal() {
+ return this.totalTest;
+ }
+
+ getCurrentRunningSpec() {
+ return this.currentRunningSpec;
+ }
+
+ it(desc, filter, func) {
+ const configService = this.coreContext.getDefaultService('config');
+ const currentSuiteName = this.coreContext.getDefaultService('suite').getCurrentRunningSuite().description;
+ if (configService.filterDesc(currentSuiteName, desc, filter, this.coreContext)) {
+ console.info(`${TAG}filter it :${desc}`);
+ } else {
+ let processedFunc = processFunc(this.coreContext, func);
+ const spec = new SpecService.Spec({description: desc, fi: filter, fn: processedFunc});
+ const suiteService = this.coreContext.getDefaultService('suite');
+ if (typeof this.coreContext.getServices('dataDriver') !== 'undefined' && configService['dryRun'] !== 'true') {
+ let specStress = this.coreContext.getServices('dataDriver').dataDriver.getSpecStress(desc);
+ for (let i = 1; i < specStress; i++) {
+ this.totalTest++;
+ suiteService.getCurrentRunningSuite().pushSpec(spec);
+ }
+ }
+
+ // dryRun 状态下不统计压力测试重复数据
+ if (configService['dryRun'] !== 'true') {
+ let stress = configService.getStress(); // 命令配置压力测试
+ console.info(`${TAG}stress length : ${stress}`);
+ for (let i = 1; i < stress; i++) {
+ this.totalTest++;
+ suiteService.getCurrentRunningSuite().pushSpec(spec);
+ }
+ }
+ this.totalTest++;
+ suiteService.getCurrentRunningSuite().pushSpec(spec);
+ }
+ }
+
+ apis() {
+ const _this = this;
+ return {
+ it: function (desc, filter, func) {
+ return _this.it(desc, filter, func);
+ }
+ };
+ }
+}
+
+SpecService.Spec = class {
+ constructor(attrs) {
+ this.description = attrs.description || '';
+ this.fi = attrs.fi;
+ this.fn = attrs.fn || function () {
+ };
+ this.fail = undefined;
+ this.error = undefined;
+ this.duration = 0;
+ this.startTime = 0;
+ this.isExecuted = false; // 当前用例是否执行
+ }
+
+ setResult() {
+ if (this.fail) {
+ this.pass = false;
+ } else {
+ this.pass = true;
+ }
+ }
+
+ run(coreContext) {
+ const specService = coreContext.getDefaultService('spec');
+ specService.setCurrentRunningSpec(this);
+ coreContext.fireEvents('spec', 'specStart', this);
+ this.isExecuted = true;
+ try {
+ let dataDriver = coreContext.getServices('dataDriver');
+ if (typeof dataDriver === 'undefined') {
+ this.fn();
+ } else {
+ let suiteParams = dataDriver.dataDriver.getSuiteParams();
+ let specParams = dataDriver.dataDriver.getSpecParams();
+ console.info(`${TAG}[suite params] ${JSON.stringify(suiteParams)}`);
+ console.info(`${TAG}[spec params] ${JSON.stringify(specParams)}`);
+ if (this.fn.length === 0) {
+ this.fn();
+ } else if (specParams.length === 0) {
+ this.fn(suiteParams);
+ } else {
+ specParams.forEach(paramItem => this.fn(Object.assign({}, paramItem, suiteParams)));
+ }
+ }
+ this.setResult();
+ } catch (e) {
+ this.error = e;
+ specService.setStatus(true);
+ }
+ coreContext.fireEvents('spec', 'specDone', this);
+ }
+
+ async asyncRun(coreContext) {
+ const dataDriver = coreContext.getServices('dataDriver');
+ if (typeof dataDriver === 'undefined') {
+ await this.fn();
+ } else {
+ const suiteParams = dataDriver.dataDriver.getSuiteParams();
+ const specParams = dataDriver.dataDriver.getSpecParams();
+ console.info(`[suite params] ${JSON.stringify(suiteParams)}`);
+ console.info(`[spec params] ${JSON.stringify(specParams)}`);
+ if (this.fn.length === 0) {
+ await this.fn();
+ } else if (specParams.length === 0) {
+ await this.fn(suiteParams);
+ } else {
+ for (const paramItem of specParams) {
+ await this.fn(Object.assign({}, paramItem, suiteParams));
+ }
+ }
+ }
+
+ this.isExecuted = true;
+ }
+
+ filterCheck(coreContext) {
+ const specService = coreContext.getDefaultService('spec');
+ specService.setCurrentRunningSpec(this);
+ return true;
+ }
+};
+
+class ExpectService {
+ constructor(attr) {
+ this.id = attr.id;
+ this.matchers = {};
+ }
+
+ expect(actualValue) {
+ return this.wrapMatchers(actualValue);
+ }
+
+ init(coreContext) {
+ this.coreContext = coreContext;
+ this.addMatchers(this.basicMatchers());
+ }
+
+ addMatchers(matchers) {
+ for (const matcherName in matchers) {
+ if (Object.prototype.hasOwnProperty.call(matchers, matcherName)) {
+ this.matchers[matcherName] = matchers[matcherName];
+ }
+ }
+ }
+
+ basicMatchers() {
+ return {
+ assertTrue: function (actualValue) {
+ return {
+ pass: (actualValue) === true,
+ message: 'expect true, actualValue is ' + actualValue
+ };
+ },
+ assertEqual: function (actualValue, args) {
+ return {
+ pass: (actualValue) === args[0],
+ expectValue: args[0],
+ message: 'expect ' + actualValue + ' equals ' + args[0]
+ };
+ },
+ assertThrow: function (actual, args) {
+ const result = {
+ pass: false
+ };
+ if (typeof actual !== 'function') {
+ result.message = 'toThrow\'s Actual should be a Function';
+ } else {
+ let hasThrow = false;
+ let throwError;
+ try {
+ actual();
+ } catch (e) {
+ hasThrow = true;
+ throwError = e;
+ }
+ if (!hasThrow) {
+ result.message = 'function did not throw an exception';
+ } else if (throwError && throwError.message === args[0]) {
+ result.pass = true;
+ } else {
+ result.message = `expect to throw ${args[0]} , actual throw ${throwError.message}`;
+ }
+ }
+ return result;
+ }
+ };
+ }
+
+ wrapMatchers(actualValue) {
+ const _this = this;
+ const wrappedMatchers = {
+ // 翻转标识
+ isNot: false,
+
+ // 翻转方法
+ not: function () {
+ this.isNot = true;
+ return this;
+ }
+ };
+ const specService = _this.coreContext.getDefaultService('spec');
+ const currentRunningSpec = specService.getCurrentRunningSpec();
+ const currentRunningSuite = _this.coreContext.getDefaultService('suite').getCurrentRunningSuite();
+ for (const matcherName in this.matchers) {
+ let result = Object.prototype.hasOwnProperty.call(this.matchers, matcherName);
+ if (!result) {
+ continue;
+ }
+ if (matcherName.search('assertPromise') == 0) {
+ wrappedMatchers[matcherName] = async function () {
+ await _this.matchers[matcherName](actualValue, arguments).then(function (result) {
+ if (wrappedMatchers.isNot) {
+ result.pass = !result.pass;
+ }
+ result.actualValue = actualValue;
+ result.checkFunc = matcherName;
+ if (!result.pass) {
+ const assertError = new AssertException(result.message);
+ currentRunningSpec ? currentRunningSpec.fail = assertError : currentRunningSuite.hookError = assertError;
+ throw assertError;
+ }
+ });
+ };
+ } else {
+ wrappedMatchers[matcherName] = function () {
+ const result = _this.matchers[matcherName](actualValue, arguments);
+ if (wrappedMatchers.isNot) {
+ result.pass = !result.pass;
+ }
+ result.actualValue = actualValue;
+ result.checkFunc = matcherName;
+ if (!result.pass) {
+ const assertError = new AssertException(result.message);
+ currentRunningSpec ? currentRunningSpec.fail = assertError : currentRunningSuite.hookError = assertError;
+ throw assertError;
+ }
+ };
+ }
+ }
+ return wrappedMatchers;
+ }
+
+ apis() {
+ const _this = this;
+ return {
+ expect: function (actualValue) {
+ return _this.expect(actualValue);
+ }
+ };
+ }
+}
+
+class ReportService {
+ constructor(attr) {
+ this.id = attr.id;
+ }
+
+ init(coreContext) {
+ this.coreContext = coreContext;
+ this.specService = this.coreContext.getDefaultService('spec');
+ this.suiteService = this.coreContext.getDefaultService('suite');
+ this.duration = 0;
+ }
+
+ taskStart() {
+ console.info(`${TAG}[start] start run suites`);
+ }
+
+ async suiteStart() {
+ console.info(`${TAG}[suite start]${this.suiteService.getCurrentRunningSuite().description}`);
+ }
+
+ async specStart() {
+ console.info(`${TAG}start running case '${this.specService.currentRunningSpec.description}'`);
+ this.index = this.index + 1;
+ let spec = this.specService.currentRunningSpec;
+ spec.startTime = await SysTestKit.getRealTime();
+ }
+
+ async specDone() {
+ let msg = '';
+ let spec = this.specService.currentRunningSpec;
+ let suite = this.suiteService.currentRunningSuite;
+ spec.duration = await SysTestKit.getRealTime() - spec.startTime;
+ suite.duration += spec.duration;
+ if (spec.error) {
+ this.formatPrint('error', spec.description + ' ; consuming ' + spec.duration + 'ms');
+ this.formatPrint('errorDetail', spec.error);
+ } else if (spec.fail) {
+ this.formatPrint('fail', spec.description + ' ; consuming ' + spec.duration + 'ms');
+ this.formatPrint('failDetail', spec.fail?.message);
+ } else {
+ this.formatPrint('pass', spec.description + ' ; consuming ' + spec.duration + 'ms');
+ }
+ this.formatPrint(this.specService.currentRunningSpec.error, msg);
+ }
+
+ suiteDone() {
+ let suite = this.suiteService.currentRunningSuite;
+ let message = suite.hookError ? `, ${suite.hookError?.message}` : '';
+ console.info(`[suite end] ${suite.description} consuming ${suite.duration} ms${message}`);
+ }
+
+ taskDone() {
+ let msg = '';
+ let summary = this.suiteService.getSummary();
+ msg = 'total cases:' + summary.total + ';failure ' + summary.failure + ',' + 'error ' + summary.error;
+ msg += ',pass ' + summary.pass + '; consuming ' + summary.duration + 'ms';
+ console.info(`${TAG}${msg}`);
+ console.info(`${TAG}[end] run suites end`);
+ }
+
+ incorrectFormat() {
+ if (this.coreContext.getDefaultService('config').filterValid.length !== 0) {
+ this.coreContext.getDefaultService('config').filterValid.forEach(function (item) {
+ console.info(`${TAG}this param ${item} is invalid`);
+ });
+ }
+ }
+
+ formatPrint(type, msg) {
+ switch (type) {
+ case 'pass':
+ console.info(`${TAG}[pass]${msg}`);
+ break;
+ case 'fail':
+ console.info(`${TAG}[fail]${msg}`);
+ break;
+ case 'failDetail':
+ console.info(`${TAG}[failDetail]${msg}`);
+ break;
+ case 'error':
+ console.info(`${TAG}[error]${msg}`);
+ break;
+ case 'errorDetail':
+ console.info(`${TAG}[errorDetail]${msg}`);
+ break;
+ }
+ }
+
+ sleep(numberMillis) {
+ var now = new Date();
+ var exitTime = now.getTime() + numberMillis;
+ while (true) {
+ now = new Date();
+ if (now.getTime() > exitTime) {
+ return;
+ }
+ }
+ }
+}
+
+export {
+ SuiteService,
+ SpecService,
+ ExpectService,
+ ReportService
+};
diff --git a/ensping/figs/evolution.png b/ensping/figs/evolution.png
new file mode 100644
index 0000000..0141a52
Binary files /dev/null and b/ensping/figs/evolution.png differ
diff --git a/ensping/figs/overall.png b/ensping/figs/overall.png
new file mode 100644
index 0000000..87aff67
Binary files /dev/null and b/ensping/figs/overall.png differ
diff --git a/ensping/figs/relation.png b/ensping/figs/relation.png
new file mode 100644
index 0000000..18747e4
Binary files /dev/null and b/ensping/figs/relation.png differ