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": "OAAO,EAAE,OAAO,EAAE;AAElB,CAAC,QAAQ;AACT,MAAM,OAAO,SAAS;IACpB,SAAS,EAAE,MAAM,CAAC,CAAC,WAAW;IAC9B,QAAQ,EAAE,MAAM,CAAC,CAAC,UAAU;IAC5B,cAAc,EAAE,MAAM,CAAC,CAAC,YAAY;IACpC,aAAa,EAAE,MAAM,CAAC,CAAC,WAAW;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM;IAC1B,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,YAAY,EAAE,SAAS,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC,CAAC,WAAW;IAE1B,YAAY,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE;QAC9J,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,UAAU;QAC9B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,CAAA;IACpB,CAAC;CAEF;AAED,CAAC,QAAQ;AACT,MAAM,OAAO,UAAU;IACrB,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,SAAS;IAChC,IAAI,EAAE,MAAM,CAAC,CAAC,YAAY;IAC1B,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,SAAS;IAChC,IAAI,EAAE,MAAM,CAAC,CAAC,YAAY;IAC1B,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO;IACtB,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS;IAEjC,YAAY,KAAK,EAAE,OAAO,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM;QAClF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;YAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;SAC1B;aAAM;YACL,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;SAC3B;IACH,CAAC;IAED,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;QACvC,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK;YACpC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,CACzC,CAAC;IACJ,CAAC,CAAC,iBAAiB;IAEnB,WAAW;QACT,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE;YACtE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAChB;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAChB;IACH,CAAC,CAAC,eAAe;IAEjB,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO;QACvD,IAAI,UAAU,KAAK,IAAI,CAAC,KAAK,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;SAC3B;aAAM;YACL,OAAO,KAAK,CAAA;SACb;IACH,CAAC,CAAC,OAAO;IAET,aAAa;QACX,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;QACpD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;IACtD,CAAC,CAAC,cAAc;IAEhB,aAAa;QACX,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,IAAI,CAAA;QACxC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IAC1C,CAAC,CAAC,cAAc;IAEhB,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;QACzB,IAAI,KAAK,YAAY,UAAU,EAAE;YAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YACnC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC;SACrE;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,eAAe;CAClB;AAED,CAAC,QAAQ;AACT,MAAM,OAAO,OAAQ,SAAQ,OAAO;IAClC,OAAO,EAAE,SAAS,CAAC,CAAC,cAAc;IAClC,QAAQ,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC,SAAS;IAEpC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI;QAClD,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QACrC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,CAAA,CAAC,WAAW;QACnC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,CAAA,CAAC,cAAc;QACxC,IAAI,CAAC,GAAG,0GAAwB,CAAA,CAAC,OAAO;QACxC,IAAI,CAAC,KAAK,0GAA2B,CAAA,CAAC,WAAW;QACjD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;IACf,CAAC;IAED,cAAc;QACZ,OAAO,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAA;IAC/B,CAAC,CAAC,WAAW;IAEb,YAAY;QACV,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAA;IAChC,CAAC,CAAC,SAAS;IAEX,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE;QACpG,IAAI,MAAM,GAAG,SAAS,CAAA;QACtB,IAAI,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA;QACrF,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;QAChB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1C,eAAe,CAAC,GAAG,IAAI,CAAC,QAAQ,aAAa,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;QAC/D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACnB,CAAC,CAAC,QAAQ;IAEV,IAAI,CAAC,MAAM,EAAE,SAAS;QACpB,MAAM,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QAClC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAA;QACvB,eAAe,CAAC,GAAG,IAAI,CAAC,QAAQ,aAAa,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;QAC/D,IAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAE,SAAS,EAAE;YAC7E,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;SAChF;IACH,CAAC,CAAC,QAAQ;IAEV,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;QACjC,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE,EAAE;YACnC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAC1C,eAAe,CAAC,GAAG,IAAI,CAAC,QAAQ,WAAW,MAAM,CAAC,OAAO,IAAI,CAAC,CAAA;SAC/D;aAAM;YACL,OAAM;SACP;IACH,CAAC,CAAC,QAAQ;CACX;AAED,CAAC,QAAQ;AACT,MAAM,OAAO,SAAU,SAAQ,OAAO;IAEpC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI;QAClD,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QACrC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA,CAAC,WAAW;QACrD,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA,CAAC,cAAc;QAC1D,IAAI,CAAC,GAAG,0GAA0B,CAAA,CAAC,QAAQ;QAC3C,IAAI,CAAC,KAAK,0GAA6B,CAAA,CAAC,YAAY;QACpD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QACb,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;IACvB,CAAC;IAED,cAAc;QACZ,OAAO,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAA;IAC/B,CAAC,CAAC,WAAW;IAEb,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;QACjE,gBAAgB;QAChB,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAExD,qBAAqB;QACrB,MAAM,kBAAkB,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,mBAAmB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEtD,wBAAwB;QACxB,MAAM,6BAA6B,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,MAAM,wBAAwB,GAAG,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzE,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE1D,0CAA0C;QAC1C,OAAO,wBAAwB,KAAK,mBAAmB,IAAI,UAAU,KAAK,IAAI,CAAC;IACjF,CAAC,CAAC,qBAAqB;IAEvB,QAAQ,CAAC,MAAM,EAAE,SAAS;QACxB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAA;YAC1D,IAAG,IAAI,IAAI,IAAI,EAAC;gBACd,IAAG,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,aAAa,CAAC,EAAC;oBAC7F,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;oBAChK,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;oBAC5B,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;oBACvB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;oBACvC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBAC7B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;iBACjB;aACF;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,WAAW;IAEb,OAAO,CAAC,MAAM,EAAE,SAAS;QACvB,eAAe,CAAC,OAAO,IAAI,CAAC,QAAQ,cAAc,CAAC,CAAA;QACnD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1C,IAAI;YACF,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;SACvD;QAAA,OAAO,CAAC,EAAC;YACR,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;SACtD;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC,CAAC,QAAQ;IAEV,cAAc,IAAI,MAAM;QACtB,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;QACtC,KAAK,IAAI,MAAM,IAAI,YAAY,EAAE;YAC/B,GAAG,IAAI,QAAQ,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;YACtC,GAAG,IAAI,QAAQ,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;SACtC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,gBAAgB;CACnB;AAED,CAAC,QAAQ;AACT,MAAM,OAAO,SAAU,SAAQ,OAAO;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI;QAClD,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QACrC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA,CAAC,WAAW;QACrD,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA,CAAC,cAAc;QAC1D,IAAI,CAAC,GAAG,0GAA6B,CAAA,CAAC,QAAQ;QAC9C,IAAI,CAAC,KAAK,0GAAgC,CAAA,CAAC,YAAY;QACvD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QACb,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;IACvB,CAAC;IAED,cAAc;QACZ,OAAO,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAA;IAC/B,CAAC,CAAC,WAAW;IAEb,QAAQ,CAAC,MAAM,EAAE,SAAS;QACxB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAA;YAC1D,IAAG,IAAI,IAAI,IAAI,EAAC;gBACd,IAAG,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,cAAc,CAAC,EAAC;oBAC9F,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;oBAChK,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;oBAC5B,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;oBACvB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;oBACvC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBAC7B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;iBACjB;aACF;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,WAAW;IAEb,OAAO,CAAC,MAAM,EAAE,SAAS;QACvB,eAAe,CAAC,OAAO,IAAI,CAAC,QAAQ,cAAc,CAAC,CAAA;QACnD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC,CAAC,QAAQ;IAEV,cAAc,IAAI,MAAM;QACtB,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;YAC9B,GAAG,IAAI,QAAQ,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;YACtC,GAAG,IAAI,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;SAClC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,iBAAiB;CACpB;AAED,CAAC,QAAQ;AACT,MAAM,OAAO,MAAO,SAAQ,OAAO;IACjC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI;QAClD,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QACrC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA,CAAC,WAAW;QACrD,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA,CAAC,cAAc;QAC1D,IAAI,CAAC,GAAG,0GAA2B,CAAA,CAAC,QAAQ;QAC5C,IAAI,CAAC,KAAK,0GAA8B,CAAA,CAAC,YAAY;IACvD,CAAC;IAED,cAAc,IAAI,MAAM;QACtB,OAAO,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAA,CAAC,WAAW;IAC3C,CAAC;IAED,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;QAC/B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;YAC7C,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAA;YAC1D,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;oBACzB,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;oBAChK,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;oBAC5B,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;oBACvB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;oBACvC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBAC7B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;iBACjB;aACF;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,WAAW;IAEb,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;QAC9B,eAAe,CAAC,OAAO,IAAI,CAAC,QAAQ,cAAc,CAAC,CAAA;QACnD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC,CAAC,QAAQ;CACX;AAED,SAAS,UAAU;IACjB,OAAO,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,GAAG,IAAI,CAAA;AAC3C,CAAC,CAAC,SAAS;AAEX,SAAS,eAAe,CAAC,IAAI,EAAE,MAAM;IACnC,IAAI,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACvC,OAAO,GAAG,OAAO,GAAG,UAAU,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;IAC9C,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC,CAAC,cAAc" + }, + "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}` : '/>'; + 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