diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/.gitignore b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..91d237bb144c7fb1777e50271857ef0f593286fc --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/.gitignore @@ -0,0 +1,5 @@ +/node_modules +/local.properties +/.idea +**/build +/.hvigor \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/build-profile.json5 b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..e21220b09aa604dd02fed89cbdfa2e2dd9719c29 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/build-profile.json5 @@ -0,0 +1,41 @@ +{ + "app": { + "signingConfigs": [ + { + "name": "default", + "type": "HarmonyOS", + "material": { + "certpath": "C:\\Users\\Magic\\.ohos\\config\\auto_debug_pl.magic.healthypotassistant_260086000024302498.cer", + "storePassword": "0000001BE957D9DAF361E56899F0A334746AAFD1393F89A60CAEDD3C87E07B4098B5C1FDE65E20655D757D", + "keyAlias": "debugKey", + "keyPassword": "0000001B280068CCCD8CDB3FE01818B1374820C5D296CD784777F86D604E55D9CCFBBD2AD4791DCCE971EA", + "profile": "C:\\Users\\Magic\\.ohos\\config\\auto_debug_pl.magic.healthypotassistant_260086000024302498.p7b", + "signAlg": "SHA256withECDSA", + "storeFile": "C:\\Users\\Magic\\.ohos\\config\\auto_debug_pl.magic.healthypotassistant_260086000024302498.p12" + } + } + ], + "compileSdkVersion": 8, + "compatibleSdkVersion": 8, + "products": [ + { + "name": "default", + "signingConfig": "default", + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/.gitignore b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..5a6ba80fa3d9498a23ae8ae7d9518f8743fa8a96 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/.gitignore @@ -0,0 +1,4 @@ +/node_modules +/.preview +/build +/.cxx \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/build-profile.json5 b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..cfdc90f805d1f7ef3a6557bc101de47b91895eb7 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/build-profile.json5 @@ -0,0 +1,14 @@ +{ + "apiType": 'faMode', + "buildOption": { + }, + "targets": [ + { + "name": "default", + "runtimeOS": "HarmonyOS" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/hvigorfile.js b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/hvigorfile.js new file mode 100644 index 0000000000000000000000000000000000000000..bcec4c99653062cbf17702c40a2dd2a7b809b81a --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/hvigorfile.js @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +module.exports = require('@ohos/hvigor-ohos-plugin').legacyHapTasks diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/package-lock.json b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..15bc7145be1490029883067847743ea7134cf545 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "entry", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/package.json b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/package.json new file mode 100644 index 0000000000000000000000000000000000000000..c7685ac4e7c0d79df04c96744f0d8f22cb4a9025 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/package.json @@ -0,0 +1,14 @@ +{ + "license": "ISC", + "devDependencies": {}, + "name": "entry", + "ohos": { + "org": "huawei", + "directoryLevel": "module", + "buildTool": "hvigor" + }, + "description": "example description", + "repository": {}, + "version": "1.0.0", + "dependencies": {} +} diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/config.json b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/config.json new file mode 100644 index 0000000000000000000000000000000000000000..99e6691b9882ef2ff308bf2f19bbabbda094fa4a --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/config.json @@ -0,0 +1,76 @@ +{ + "app": { + "vendor": "example", + "bundleName": "pl.magic.healthypotassistant", + "version": { + "code": 1000000, + "name": "1.0.0" + } + }, + "deviceConfig": {}, + "module": { + "mainAbility": ".MainAbility", + "deviceType": [ + "phone" + ], + "abilities": [ + { + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "orientation": "unspecified", + "visible": true, + "srcPath": "MainAbility", + "name": ".MainAbility", + "srcLanguage": "ets", + "icon": "$media:icon", + "description": "$string:MainAbility_desc", + "formsEnabled": false, + "label": "$string:MainAbility_label", + "type": "page", + "launchType": "standard", + "metaData": { + "customizeData": [ + { + "name": "hwc-theme", + "value": "androidhwext:style/Theme.Emui.Light.NoTitleBar" + } + ] + } + } + ], + "distro": { + "moduleType": "entry", + "installationFree": false, + "deliveryWithInstall": true, + "moduleName": "entry" + }, + "package": "pl.magic.healthypotassistant", + "name": ".entry", + "js": [ + { + "mode": { + "syntax": "ets", + "type": "pageAbility" + }, + "pages": [ + "pages/index", + "pages/jobModelSettings", + "pages/editModel" + ], + "name": ".MainAbility", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + } + ] + } +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/app.ets b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/app.ets new file mode 100644 index 0000000000000000000000000000000000000000..38b43199a5e4b4e38c7cabf02fe51ca61dd12700 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/app.ets @@ -0,0 +1,12 @@ +import hilog from '@ohos.hilog'; + +export default { + onCreate() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'Application onCreate'); + }, + onDestroy() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'Application onDestroy'); + }, +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/components/MTopBar.ets b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/components/MTopBar.ets new file mode 100644 index 0000000000000000000000000000000000000000..d74d789e7b1f7cd75b141d01d19c1b1a904163e9 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/components/MTopBar.ets @@ -0,0 +1,35 @@ +import router from '@ohos.router'; + +//@Preview +@Component +export struct MTopBar { + private titleStr: string = '' + build() { + Stack() { + Row() { + Image($r("app.media.arrow_right")) + .width(24).height(24) + .rotate({ + x: 0, + y: 0, + z: 1, + angle: 180, + centerX: '50%', + centerY: '50%' + }) + .onClick(() => { + router.back() + }) + } + .width('100%') + .height('100%') + .padding({ left: 16 }) + .justifyContent(FlexAlign.Start) + .alignItems(VerticalAlign.Center) + + Text(this.titleStr) + .fontSize(20) + .fontWeight(500) + }.width('100%').height(48).margin({ top: 0 }) + } +} diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/model/ConnectData.ets b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/model/ConnectData.ets new file mode 100644 index 0000000000000000000000000000000000000000..550f045089f6dbfc7103e2d48b16ae11a050b1ca --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/model/ConnectData.ets @@ -0,0 +1,11 @@ +export class ConnectItem { + id: number + imgSrc: Resource + text: string + + constructor(id, imgSrc, text) { + this.id = id + this.imgSrc = imgSrc; + this.text = text; + } +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/model/ConnectDataModel.ets b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/model/ConnectDataModel.ets new file mode 100644 index 0000000000000000000000000000000000000000..36cf6e562a2ee67705905868e27a709260fa6258 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/model/ConnectDataModel.ets @@ -0,0 +1,6 @@ +import { ConnectItem } from '../model/ConnectData' + +export const connectItemData: ConnectItem[] = [ + new ConnectItem(1, $r('app.media.scan'), '扫一扫'), + new ConnectItem(2, $r('app.media.search'), '搜索') +] \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/model/JobData.ets b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/model/JobData.ets new file mode 100644 index 0000000000000000000000000000000000000000..8aa0f855a2124d300457885208ce4c20d6ea0dc0 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/model/JobData.ets @@ -0,0 +1,33 @@ +/* + 说明:养生壶的工作模式数据结构 + 2022-09-18 + */ + +let NextId = 0; +@Observed export class JobData { + id: string; // 功能模式编号 + name: string; // 功能模式名称 + currentStep: number; // 当前模式步骤 + totalMinute: number; // 模式所花总时间(分钟) + remainMinute: number; // 模式剩余时间(分钟) + steps: Array; // 模式步骤列表 + + constructor(id: string, name: string, currentStep: number, totalMinute: number, steps: Array) { + this.id = id//`${NextId++}`; + this.name = name; + this.currentStep = currentStep; + this.totalMinute = totalMinute; + this.remainMinute = totalMinute; + this.steps = steps; + } +} + +export class Step { + power: number; + minute: number; + + constructor(power: number, minute: number) { + this.power = power; + this.minute = minute; + } +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/model/JobDataModel.ets b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/model/JobDataModel.ets new file mode 100644 index 0000000000000000000000000000000000000000..b0156c7517681e1234db48edbd158df26c4f0545 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/model/JobDataModel.ets @@ -0,0 +1,51 @@ +import { JobData, Step } from './JobData' + +// name: string; // 功能模式名称 +// currentStep: number; // 当前模式步骤 +// totalMinute: number; // 模式所花总时间(分钟) +// remainMinute: number; // 模式剩余时间(分钟) +// steps: Array; // 模式步骤列表 +const JobComposition: any[] = [ + { 'name': '烧水', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 800, 'minute': 13.5}, {'power': 400, 'minute': 2.5}) }, + { 'name': '花茶', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 800, 'minute': 12}, {'power': 400, 'minute': 3}, {'power': 200, 'minute': 15}) }, + { 'name': '红茶', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 800, 'minute': 12}, {'power': 200, 'minute': 1}) }, + { 'name': '煮蛋', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 800, 'minute': 12}, {'power': 400, 'minute': 8}) }, + { 'name': '煮面', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 800, 'minute': 12}, {'power': 400, 'minute': 10}) }, + { 'name': '煲汤', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 800, 'minute': 13}, {'power': 300, 'minute': 40}, {'power': 200, 'minute': 30}) }, + // { 'name': '煲粥', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 800, 'minute': 8}, {'power': 200, 'minute': 6}, {'power': 0, 'minute': 0.25} + // , {'power': 200, 'minute': 0.4}, {'power': 0, 'minute': 0.2}, {'power': 200, 'minute': 0.4}, {'power': 0, 'minute': 0.2}, {'power': 200, 'minute': 0.4}, {'power': 0, 'minute': 0.2} + // , {'power': 200, 'minute': 0.4}, {'power': 0, 'minute': 0.2}, {'power': 200, 'minute': 0.4}, {'power': 0, 'minute': 0.2}, {'power': 200, 'minute': 0.4}, {'power': 0, 'minute': 0.2} + // , {'power': 200, 'minute': 0.4}, {'power': 0, 'minute': 0.2}, {'power': 200, 'minute': 0.4}, {'power': 0, 'minute': 0.2}, {'power': 200, 'minute': 0.4}, {'power': 0, 'minute': 0.2} + // , {'power': 200, 'minute': 0.4}, {'power': 0, 'minute': 0.2}, {'power': 200, 'minute': 0.4}, {'power': 0, 'minute': 0.2} + // , {'power': 100, 'minute': 1}, {'power': 0, 'minute': 0.2}) }, + // { 'name': '酸奶', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 200, 'minute': 10}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5} + // , {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5} + // , {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}) }, + // { 'name': '糖水', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 800, 'minute': 12}, {'power': 200, 'minute': 120}) }, + // { 'name': '热奶', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 200, 'minute': 10} + // , {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5} + // , {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5} + // , {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}) }, + // { 'name': '煮酒', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 200, 'minute': 10} + // , {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5} + // , {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5} + // , {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}) }, + // { 'name': '果茶', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 800, 'minute': 12}, {'power': 400, 'minute': 7}) }, + // { 'name': '燕角', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 800, 'minute': 12}, {'power': 200, 'minute': 120}) }, + // { 'name': '文火煮', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 800, 'minute': 12}, {'power': 200, 'minute': 120}) }, + // { 'name': '煮咖啡', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 800, 'minute': 12}) }, + // { 'name': '婴儿用水', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 800, 'minute': 12}) }, + // { 'name': '保温', 'currentStep': 0, 'totalMinute': 60, 'remainMinute': 17, 'steps': new Array({'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5} + // , {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}, {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5} + // , {'power': 200, 'minute': 0.1}, {'power': 0, 'minute': 1.5}) } + +] +let NextId = 1; +export function initializeOnStartup(): Array { + NextId = 1 + let JobDataArray: Array = [] + JobComposition.forEach(item => { + JobDataArray.push(new JobData( "" + NextId++,item.name, item.currentStep, item.totalMinute, item.steps)) + }) + return JobDataArray; +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/pages/editModel.ets b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/pages/editModel.ets new file mode 100644 index 0000000000000000000000000000000000000000..8411005c4ba743bd1c5edcc01ebe0e8acd4b7fe1 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/pages/editModel.ets @@ -0,0 +1,125 @@ +/* + * 复制工作模式编辑界面 + * 2022-09-23 + */ + +import router from '@ohos.router'; +import { MTopBar } from '../components/MTopBar' +import { JobData, Step } from '../model/JobData' + +@Entry +@Component +struct Editmodel { + title: string = '编辑模式' + jobData: JobData = router.getParams() ? router.getParams()['jobData'] : new JobData('0', '待机', 0, 0, new Array({ + 'power': 0, + 'minute': 0 + })) + private curPower: string = '0' + private curStepIndex: number = 0 + powerPickerDialog: CustomDialogController = new CustomDialogController({ + builder: PowerPickerDialog({ curPower: this.curPower, powerPick: this.onPowerPicked }), + autoCancel: true + }) + + onPowerPicked(power: string): void { + console.log("=================power:" + power) + console.log("=================title:" + this.title) + console.log("=================JobData:" + JSON.stringify(this.jobData)) +// console.log("=================power:" + this.jobData.steps.length) +// this.jobData.steps[this.curStepIndex].power = Number(power) + } + + build() { + Row() { + Column() { + MTopBar({ titleStr: this.title }) + Column({ space: 10 }) { + Row() { + Text('名称:').fontSize(18).fontWeight(400) + TextInput({ placeholder: '请输入模式名称', text: this.jobData.name }).width('80%') + .fontSize(18).fontWeight(400) + } + .width('100%') + .padding({ left: 24, right: 24 }) + + Divider().width('100%') + + ForEach(this.jobData.steps, (step: Step, index: number) => { + Row() { + Text('功率(W):').fontSize(16).fontWeight(400) + Text(step.power + "").fontSize(16).fontWeight(400) + .backgroundColor('#f3f3f3').borderRadius(20) + .width(55).padding(10) + .onClick(() => { + console.log("=================JobData:" + JSON.stringify(this.jobData)) + this.curPower = step.power + "" + this.curStepIndex = index + this.powerPickerDialog.open() + }) + // TextInput({ placeholder: '请输入功率' , text: step.power+""}).width('30%') + // .fontSize(16).fontWeight(400) + Row().width(24) + Text('时长(秒):').fontSize(16).fontWeight(400) + TextInput({ placeholder: '请输入时长', text: step.minute + "" }).width(80) + .fontSize(16).fontWeight(400) + } + .width('100%') + .padding({ left: 24, right: 24 }) + }) + + Divider().margin({left: 24, right: 24}) + Button('添加') + .onClick(() => { + this.jobData.steps.push({'power': 100, 'minute': 1}) + console.log("=================JobData:" + JSON.stringify(this.jobData)) + }) + } + } + .width('100%') + } + .alignItems(VerticalAlign.Top) + .justifyContent(FlexAlign.Start) + .height('100%') + } +} + +@CustomDialog +struct PowerPickerDialog { + private pickerHeight: Length = 400 + private select: number = 0 + private curPower: string = '0' + private powers: string[] = ["0", "100", "200", "300", '400', "500", "600", "800"] + dialogController: CustomDialogController + powerPick: (power: string) => void + + aboutToAppear() { + this.select = this.powers.indexOf(this.curPower) + if (this.select < 0 || this.select > this.powers.length - 1) { + this.select = 0 + } + } + + build() { + Column({ space: 8 }) { + TextPicker({ range: this.powers, selected: this.select }) + .onChange((value: string, index: number) => { + console.info('Picker item changed, value: ' + value + ', index: ' + index) + this.curPower = value + }) + .height(200) + .defaultPickerItemHeight(16) + .onAreaChange((oldValue: Area, newValue: Area) => { + this.pickerHeight = newValue.height + }) + Button('确定') + .onClick(() => { + this.dialogController.close() + this.powerPick(this.curPower) + }) + Row().height(8) + } + .borderRadius(10) + .backgroundColor("#fff") + } +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/pages/index.ets b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/pages/index.ets new file mode 100644 index 0000000000000000000000000000000000000000..342ba9431606fcb723f7c54c6e4d04ffb94f6a48 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/pages/index.ets @@ -0,0 +1,488 @@ +import mediaquery from '@ohos.mediaquery' +import router from '@ohos.router'; +import window from '@ohos.window'; +import { JobData, Step } from '../model/JobData' +import {ConnectItem} from '../model/ConnectData' +import {connectItemData} from '../model/ConnectDataModel' + +let portraitFunc = null + +@Styles function buttonStyle () { + .width(60) + .height(60) + .backgroundColor('#405ea1ff') + .align(Alignment.Center) +} + +// 状态信息显示组件 +@Component +struct WorkStatusDisplay { + @Prop screenOrientation: number // 0: portrait; 1: landscape + @Link isWorking: boolean + @Link jobModel: JobData + @Link isDeviceConnect: boolean + @Link deviceName: string + @Link countDownCount: number + @StorageLink('appointmentTime') appointmentTime: string = '立即' + @StorageLink('appointmentTimeRemain') appointmentTimeRemain: string = '00:00:00' + textTimerController: TextTimerController = new TextTimerController() + @State format: string = 'hh:mm:ss' + + build() { + Column({ space: 10 }) { + Text(`当前连接设备:${this.deviceName}`) + .fontSize(18).fontWeight(500) + Text(`工作状态:${this.jobModel.name}`) + .fontSize(18).fontWeight(500) + Text(`当前模式:${this.jobModel.name}`) + .fontSize(18).fontWeight(500) + Text(`当前功率:${this.jobModel.steps[this.jobModel.currentStep].power}W`) + .fontSize(18).fontWeight(500) + Text(`剩余时长:${this.jobModel.remainMinute}分`) + .fontSize(18).fontWeight(500) + Text(`预约时间:${this.appointmentTime}`) + .fontSize(18).fontWeight(500) + Row() { + Text(`预约倒计时:${this.appointmentTimeRemain}`) + .fontSize(18).fontWeight(500) + + // TODO: 不能清零 08:00:00 + // TextTimer({controller: this.textTimerController, count: this.countDownCount, isCountDown: true}) + // .format(this.format) + // .fontColor(Color.Black) + // .fontSize(18).fontWeight(500) + // .onTimer((utc: number, elapsedTime: number) => { + // console.info('textTimer notCountDown utc is:' + utc + ', elapsedTime: ' + elapsedTime) + // }) + } + + } + // .width(this.screenOrientation == 0 ? '100%' : '50%') + .width('80%') + .height('50%') + // .height(this.screenOrientation == 0 ? '50%' : '100%') + .alignItems(HorizontalAlign.Start) + .justifyContent(FlexAlign.Start) + .padding({ left: 24, top: 72 }) + } +} + +// 按钮区组件 +@Component +struct ButtonArea { + @Prop screenOrientation: number // 0: portrait; 1: landscape + @Link @Watch("onWorkingChanged") isWorking: boolean + @State fireScale: number = 1 + + onWorkingChanged(): void { + if (this.isWorking) + this.fireScale = 1.2 + else + this.fireScale = 1 + } + + build() { + Flex({ + direction: this.screenOrientation == 0 ? FlexDirection.Row : FlexDirection.Column, + justifyContent: FlexAlign.SpaceEvenly, + alignItems: ItemAlign.Center + }) { + Button({ type: ButtonType.Circle, stateEffect: true }) { + Image(this.isWorking ? $r('app.media.power_red') : $r('app.media.power_white')) + .objectFit(ImageFit.Contain) + .margin(10) + }.buttonStyle() + .onClick(() => { + if(AppStorage.Get('jobModel').id === "0") { + AlertDialog.show( + { + title: '温馨提示', + message: '您好,您还没有选择工作模式,请选择您要的工作模式,请注意水壶最高水位!', + primaryButton: { + value: '取消', + action: () => { + } + }, + secondaryButton: { + value: '选择模式', + action: () => { + router.push({ url: 'pages/jobModelSettings', params: { isWorking: this.isWorking } }) + } + }, + cancel: () => { + } + } + ) + } else { + if (this.isWorking) { + AlertDialog.show( + { + title: '温馨提示', + message: `当前工作模式:${AppStorage.Get('jobModel').name},正在工作,是否现在要停止?`, + primaryButton: { + value: '取消', + action: () => { + } + }, + secondaryButton: { + value: '停止', + action: () => { + this.isWorking = !this.isWorking + } + }, + cancel: () => { + } + } + ) + } else { + AlertDialog.show( + { + title: '温馨提示', + message: `您已选好工作模式:${AppStorage.Get('jobModel').name},是否要开始工作,请注意水壶最高水位!`, + primaryButton: { + value: '取消', + action: () => { + } + }, + secondaryButton: { + value: '开始', + action: () => { + this.isWorking = !this.isWorking + } + }, + cancel: () => { + } + } + ) + } + } + }) + + Button({ type: ButtonType.Circle, stateEffect: true }) { + Image(this.isWorking ? $r('app.media.menu_white') : $r('app.media.menu_red')) + .objectFit(ImageFit.Contain) + .fillColor('#E86565') + .margin(10) + }.buttonStyle() + .onClick(() => { + router.push({ url: 'pages/jobModelSettings', params: { isWorking: this.isWorking } }) + }) + + Button({ type: ButtonType.Circle, stateEffect: true }) { + Image(this.isWorking ? $r('app.media.fire_red') : $r('app.media.fire_white')) + .objectFit(ImageFit.Contain) + .fillColor('#E86565') + .margin(10) + .scale({ + x: this.fireScale, + y: this.fireScale + }) + .animation({ duration: 500, iterations: this.isWorking ? -1 : 0, curve: Curve.Ease, playMode: PlayMode.Alternate}) + }.buttonStyle() + + Button({ type: ButtonType.Circle, stateEffect: true }) { + Image($r('app.media.time_white')) + .objectFit(ImageFit.Contain) + .fillColor('#E86565') + .margin(10) + }.buttonStyle() + .onClick(() => { + TimePickerDialog.show({ + useMilitaryTime: true, + onAccept: (value: TimePickerResult) => { + console.info("TimePickerDialog:onAccept()" + JSON.stringify(value)) + AppStorage.Set('appointmentTime', value.hour + ":" + value.minute) + AppStorage.Set('appointmentTimeObj', value) + }, + onCancel: () => { + console.info("TimePickerDialog:onCancel()") + }, + onChange: (value: TimePickerResult) => { + console.info("TimePickerDialog:onChange()" + JSON.stringify(value)) + } + }) + }) + } + .margin({ bottom: this.screenOrientation == 0 ? 80 : 0, right: this.screenOrientation == 0 ? 0 : 24 }) + } +} + +// 连接设备弹框 +@CustomDialog +struct ConnectDialog { + dialogController: CustomDialogController + data: ConnectItem[] + confirm:(itemId: number) => void + aboutToAppear(): void { + this.data = connectItemData + } + build() { + Column({space: 10}) { + ForEach(this.data, (item: ConnectItem) => { + Column() { + Row ({space: 5}) { + Image(item.imgSrc).width(20).aspectRatio(1) + Text(item.text).fontSize(16).fontWeight(400) + }.alignItems(VerticalAlign.Center) + .width('100%') + .height(48) + .onClick(() => { + this.confirm(item.id) + this.dialogController.close() + }) + Row () .width('100%').height(1).backgroundColor('#405ea1ff') + }.alignItems(HorizontalAlign.Start) + + }) + }.width('100%') + .padding({ left: 24, right: 24, top: 12, bottom: 12}) + .alignItems(HorizontalAlign.Start) + .justifyContent(FlexAlign.Center) + } +} + +// 连接设备按钮 +@Component +struct ConnectButton { + @Link isDeviceConnect: boolean + @Link deviceName: string + private screenOrientation: number // 0: portrait; 1: landscape + dialogController: CustomDialogController = new CustomDialogController({builder: ConnectDialog({confirm: this.onSelect})}) + + onSelect(itemId: number): void { + if (itemId == 1) { + //TODO: 唤起摄像头扫二维码,没有找到相关的接口 + this.isDeviceConnect = true + this.deviceName = '蒙蒙智能养生壶 HealthyPot24' + } else if (itemId == 2) { + //TODO: 发现身边设备,没有找到相关的接口 + this.isDeviceConnect = true + this.deviceName = '蒙蒙智能养生壶 HealthyPot24' + } + console.log("=======================itemId:" + itemId) + console.log("=======================deviceName:" + this.deviceName) + } + + build(){ + Image($r('app.media.connect_blue')) + .width(48).aspectRatio(1) + .margin({top: this.screenOrientation == 0 ? 72 : 0, right: 24, left: this.screenOrientation == 0 ? 0 :24, bottom: this.screenOrientation == 0 ? 0 : 24}) + .onClick(() => { + this.dialogController.open() + }) + } +} + +@Entry +@Component +struct Index { + @State screenOrientation: number = 0 // 0: portrait; 1: landscape + @State isDeviceConnect: boolean = false + @State deviceName: string = '请连接设备' + @State isWorking: boolean = false // 运行状态 + @State countDownCount: number = 10000 + @StorageLink('jobModel') jobModel: JobData = new JobData('0', '待机', 0, 0, new Array({ + 'power': 0, + 'minute': 0 + })) + private intervalID: number; + @StorageLink('appointmentTimeObj') appointmentTimeObj: object = { "hour": -1, "minute": 0 } + listener = mediaquery.matchMediaSync('(orientation: landscape)') + + onPortrait(mediaQueryResult) { + if (mediaQueryResult.matches) { + this.screenOrientation = 1 + } else { + this.screenOrientation = 0 + } + } + + // 倒计时, 目前预览器好像不能在计时器回调中读取属性值,如:this.appointmentTimeObj["hour"],this.isWorking + countdown() { + // console.log('===========================countdown'); + // console.log(this.appointmentTimeObj["hour"]); + if (this.appointmentTimeObj["hour"] < 0) { + var curTime = new Date() + var appointTime = new Date() + appointTime.setHours(this.appointmentTimeObj["hour"], this.appointmentTimeObj["minute"]) + if (curTime.getTime() / 1000 == appointTime.getTime() / 100) { + AppStorage.Set('appointmentTimeRemain', '00:00:00') + } else if (curTime.getTime() / 1000 < appointTime.getTime() / 100) { + var remainT = appointTime.getTime() / 100 - curTime.getTime() / 100 + var h = remainT / (60 * 60) + var m = remainT % (60 * 60) / 60 + var s = remainT % 60 + AppStorage.Set('appointmentTimeRemain', (h > 9 ? h : ('0' + h)) + ':' + (m > 9 ? m : ('0' + m)) + ":" + (s > 9 ? s : ('0' + s))) + } else { + var remainT = appointTime.getTime() / 100 - curTime.getTime() / 100 + 24 * 60 * 60 + var h = remainT / (60 * 60) + var m = remainT % (60 * 60) / 60 + var s = remainT % 60 + AppStorage.Set('appointmentTimeRemain', (h > 9 ? h : ('0' + h)) + ':' + (m > 9 ? m : ('0' + m)) + ":" + (s > 9 ? s : ('0' + s))) + } + + } else { + + } + } + + aboutToAppear() { +// var mainWindowClass = null; + +// // 1.获取主窗口 +// window.getTopWindow((err, data) => { +// if (err) { +// console.error('Failed to get the subWindow. Cause: ' + JSON.stringify(err)); +// return; +// } +// console.info('Succeeded in getting subWindow. Data: ' + JSON.stringify(data)); +// mainWindowClass = data; +// }); + +// // 2.实现沉浸式效果。方式一:设置窗口全屏显示。 +// var isFullScreen = true; +// mainWindowClass.setFullScreen(isFullScreen, (err) => { +// if (err) { +// console.error('Failed to enable the full-screen mode. Cause:' + JSON.stringify(err)); +// return; +// } +// console.info('Succeeded in enabling the full-screen mode.'); +// }); +// // 2.实现沉浸式效果。方式二:设置导航栏、状态栏不显示。 +// var names = []; +// mainWindowClass.setSystemBarEnable(names, (err) => { +// if (err) { +// console.error('Failed to set the system bar to be visible. Cause:' + JSON.stringify(err)); +// return; +// } +// console.info('Succeeded in setting the system bar to be visible.'); +// }); + +// // 2.实现沉浸式效果。 +// // 方式三:设置窗口为全屏布局,配合设置状态栏、导航栏的透明度、背景/文字颜色及高亮图标等属性,与主窗口显示保持协调一致。 +// var isLayoutFullScreen = true; +// mainWindowClass.setLayoutFullScreen(isLayoutFullScreen, (err) => { +// if (err) { +// console.error('Failed to set the window layout to full-screen mode. Cause:' + JSON.stringify(err)); +// return; +// } +// console.info('Succeeded in setting the window layout to full-screen mode.'); +// }); +// var SystemBarProperties = { +// statusBarColor: '#ff00ff', +// navigationBarColor: '#00ff00', +// // 以下两个属性从API Version7开始支持 +// isStatusBarLightIcon: false, +// isNavigationBarLightIcon: false, +// // 以下两个属性从API Version8开始支持 +// statusBarContentColor: '#ffffff', +// navigationBarContentColor: '#ffffff' +// }; +// mainWindowClass.setSystemBarProperties(SystemBarProperties, (err) => { +// if (err) { +// console.error('Failed to set the system bar properties. Cause: ' + JSON.stringify(err)); +// return; +// } +// console.info('Succeeded in setting the system bar properties.'); +// }); + + portraitFunc = this.onPortrait.bind(this) //bind current js instance + this.listener.on('change', portraitFunc) + + var intervalID = setInterval(this.countdown, 1000); + this.intervalID = intervalID + } + + aboutToDisappear() { + // 取消倒计时定时器 + if (this.intervalID !== 0) { + clearInterval(this.intervalID) + } + } + + build() { + Stack() { + + // 背景 + Row() { + Column() { + Image($r('app.media.pot')) + .objectFit(ImageFit.Contain) + .opacity(0.3) + .align(Alignment.Center) + .width(800) + .aspectRatio(1) + } + .justifyContent(FlexAlign.Center) + .align(Alignment.Center) + .height('100%') + } + .justifyContent(FlexAlign.Center) + .align(Alignment.Center) + .width('100%') + .height('100%') + .backgroundColor('#EAF7EE') + + Column({ space: 10 }) { + Text('智能养生壶小助手') + .fontSize(20) + .fontColor('#E86565') + .fontWeight(500) + .margin({ top: 24 }) + Blank() + + Text('从此开启健康美好生活') + .fontSize(14) + .fontWeight(500) + .fontColor('#E86565') + .margin({ top: 10 }) + + Text('Power by Harmony OS') + .fontSize(10) + .fontWeight(400) + .fontColor('#fff') + .margin({ bottom: 10 }) + } + .alignItems(HorizontalAlign.Center) + .width('100%') + .height('100%') + + // 功能区 + if (this.screenOrientation == 0) { + Column() { + Row(){ + WorkStatusDisplay({isDeviceConnect: $isDeviceConnect, deviceName: $deviceName + , screenOrientation: this.screenOrientation + , isWorking: $isWorking, jobModel: $jobModel + , countDownCount: $countDownCount}) + Blank() + ConnectButton({isDeviceConnect: $isDeviceConnect, deviceName: $deviceName, screenOrientation: this.screenOrientation}) + }.width('100%').justifyContent(FlexAlign.Start).alignItems(VerticalAlign.Top) + Blank() + ButtonArea({ screenOrientation: this.screenOrientation, isWorking: $isWorking }) + } + .alignItems(HorizontalAlign.Center) + .width('100%') + .height('100%') + } else { + Row() { + Column(){ + WorkStatusDisplay({isDeviceConnect: $isDeviceConnect, deviceName: $deviceName + , screenOrientation: this.screenOrientation + , isWorking: $isWorking, jobModel: $jobModel + , countDownCount: $countDownCount}) + Blank() + ConnectButton({isDeviceConnect: $isDeviceConnect, deviceName: $deviceName, screenOrientation: this.screenOrientation}) + }.height('100%').justifyContent(FlexAlign.Start).alignItems(HorizontalAlign.Start) + Blank() + ButtonArea({ screenOrientation: this.screenOrientation, isWorking: $isWorking }) + } + .alignItems(VerticalAlign.Center) + .width('100%') + .height('100%') + } + } + .width('100%') + .height('100%') + } +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/pages/jobModelSettings.ets b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/pages/jobModelSettings.ets new file mode 100644 index 0000000000000000000000000000000000000000..d35f528012486cff2dcd432327baf6995edad9fc --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/ets/MainAbility/pages/jobModelSettings.ets @@ -0,0 +1,201 @@ +import { JobData, Step } from '../model/JobData' +import {initializeOnStartup} from '../model/JobDataModel' +import router from '@ohos.router'; +import {MTopBar} from '../components/MTopBar' + +@Entry +@Component +struct FunctionSettings { + @State message: string = '请选择工作模式' + @State isFold: boolean = false; + @State isWorking: boolean = router.getParams() ? router.getParams()['isWorking'] : false + private currentSelectId: string = AppStorage.Get('jobModel') ? AppStorage.Get('jobModel').id : '0' + private jobItems: JobData[] = initializeOnStartup() + + @State unfoldItem: Array = [] + + isUnfold(id: string) { + return this.unfoldItem.indexOf(id) >= 0 + } + + removeUnfold(id: string) : void { + let i = this.unfoldItem.indexOf(id) + if (i >= 0) + this.unfoldItem.splice(i, 0) + } + + addUnfold(id: string) : void { + this.unfoldItem.push(id) + } + + build() { + Row() { + Column() { + MTopBar({titleStr: this.message}) + List(){ + ForEach(this.jobItems, (item: JobData, index: number) => { + ListItem() { + //TODO: 自定义组件不能正常显示 [phone][Ace ERROR] 09/24 18:32:20 10492 [qjs_utils.cpp(JsStdDumpErrorAce)-(0)] [Engine Log] [DUMP] TypeError: cannot read property 'subscribeMe' of undefined +// JobListItem({itIndex: index, jobData: item, isWorking: this.isWorking, currentSelectId: $currentSelectId}) + Column() { + Row () { + Radio({ value: 'Radio'+(index + 1), group: 'radioGroup' }) + .checked(item.id == this.currentSelectId) + .height(20) + .width(20) + .enabled(!this.isWorking) + .onChange((isChecked: boolean) => { + console.log('this.currentSelectId:' + this.currentSelectId) + if (isChecked) { + this.currentSelectId = item.id + AppStorage.Set('jobModel', item) + } + console.log('Radio1 status is ' + isChecked) + }) + + Text(item.name).fontSize(16).fontWeight(500) + + Blank() + Image($r("app.media.copy")) + .width(24).height(24) + .margin({right: 8}) + .onClick(() => { + router.push({ + url: 'pages/editModel', + params: {'jobData': item} + }) + }) + + Image($r("app.media.arrow_right")) + .width(16).height(16) + .rotate({x: 0, y: 0, z: 1, angle: this.isFold ? 0 : 90, centerX: '50%', centerY: '50%'}) + .onClick(() => { + // Todo: 有什么办法能实现对某一下条目(模式)单独展开发收起??? + this.isFold = !this.isFold + // if (this.isUnfold(item.id)) { + // this.addUnfold(item.id) + // } else { + // this.removeUnfold(item.id) + // } + }) + }.width('100%').padding({left: 8, right: 8}) + + Column({space:8}){ + ForEach(item.steps, (funcStep) => { + Row({space:16}) { + Text(funcStep.power + "W") + .textAlign(TextAlign.Center) + .textOverflow({ overflow: TextOverflow.None }) + .fontSize(16).fontWeight(400) + + Text(funcStep.minute + "分钟") + .textAlign(TextAlign.Center) + .fontSize(16).fontWeight(400) + } + .height(24) + }) + } + .alignItems(HorizontalAlign.Start) + .margin({left:28, right: 8}) + .visibility(this.isFold ? Visibility.Visible : Visibility.None) + } + .alignItems(HorizontalAlign.Start) + .width('100%') + .backgroundColor(index % 2 ? '#f5f5f5' : '#e5e5e5') + } + }) + } + } + .width('100%') + } + .height('100%') + .alignItems(VerticalAlign.Top) + } +} + +@Component +struct JobListItem { + private itIndex: number = 0 + private jobData: JobData + @Link currentSelectId: string + @Prop isWorking: boolean + @State isFold: boolean = false + build() { + Column() { + Row () { + Radio({ value: 'Radio'+(this.itIndex + 1), group: 'radioGroup' }) + .checked(this.jobData.id == this.currentSelectId) + .height(20) + .width(20) + .enabled(!this.isWorking) + .onChange((isChecked: boolean) => { + console.log('this.currentSelectId:' + this.currentSelectId) + if (isChecked) { + this.currentSelectId = this.jobData.id + AppStorage.Set('jobModel', this.jobData) + } + console.log('Radio1 status is ' + isChecked) + }) + + Text(this.jobData.name).fontSize(16).fontWeight(500) + + Blank() + Image($r("app.media.copy")) + .width(24).height(24) + .margin({right: 8}) + .onClick(() => { + router.push({ + url: 'pages/editModel', + params: {'jobData': this.jobData} + }) + }) + + Image($r("app.media.arrow_right")) + .width(16).height(16) + .rotate({x: 0, y: 0, z: 1, angle: this.isFold ? 0 : 90, centerX: '50%', centerY: '50%'}) + .onClick(() => { + // Todo: 有什么办法能实现对某一下条目(模式)单独展开发收起??? + this.isFold = !this.isFold + // if (this.isUnfold(item.id)) { + // this.addUnfold(item.id) + // } else { + // this.removeUnfold(item.id) + // } + }) + }.width('100%').padding({left: 8, right: 8}) + + Column({space:8}){ + ForEach(this.jobData.steps, (funcStep) => { + Row({space:16}) { + Text(funcStep.power + "W") + .textAlign(TextAlign.Center) + .textOverflow({ overflow: TextOverflow.None }) + .fontSize(16).fontWeight(400) + + Text(funcStep.minute + "分钟") + .textAlign(TextAlign.Center) + .fontSize(16).fontWeight(400) + } + .height(24) + }) + +// Row({space:16}) { +// Text("200W") +// .textAlign(TextAlign.Center) +// .textOverflow({ overflow: TextOverflow.None }) +// .fontSize(16).fontWeight(400) +// +// Text("10分钟") +// .textAlign(TextAlign.Center) +// .fontSize(16).fontWeight(400) +// }.height(24) + } + .alignItems(HorizontalAlign.Start) + .margin({left:28, right: 8}) + .visibility(this.isFold ? Visibility.Visible : Visibility.None) + } + .alignItems(HorizontalAlign.Start) + .width('100%') + .backgroundColor(this.itIndex % 2 ? '#f5f5f5' : '#e5e5e5') + } +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/element/color.json b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..1bbc9aa9617e97c45440e1d3d66afc1154837012 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "white", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/element/string.json b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..eaba6969dd9581940cae02bcff6ac9b1ebac684b --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "entry_desc", + "value": "description" + }, + { + "name": "MainAbility_desc", + "value": "description" + }, + { + "name": "MainAbility_label", + "value": "养生壶" + } + ] +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/arrow_right.svg b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/arrow_right.svg new file mode 100644 index 0000000000000000000000000000000000000000..a7fd0e85ed158f674ce2004e42a5e14af7191aef --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/arrow_right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/connect.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/connect.png new file mode 100644 index 0000000000000000000000000000000000000000..42ece6377bb5efb8e0b0bd5d2d38ac7690ca52a7 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/connect.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/connect_black.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/connect_black.png new file mode 100644 index 0000000000000000000000000000000000000000..ea304915b24d2d874b27916dfda13ff5e7eff44b Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/connect_black.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/connect_blue.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/connect_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..ce2a2678edd733bda7d73fc734548a97eee72550 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/connect_blue.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/copy.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..fa7755869dfba7efd0f14441726aa318855ea91d Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/copy.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/fire.svg b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/fire.svg new file mode 100644 index 0000000000000000000000000000000000000000..ec9d095e517cc3781e2b719761954acf73eefa5e --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/fire.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/fire_red.svg b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/fire_red.svg new file mode 100644 index 0000000000000000000000000000000000000000..9497bb790a6f74c23f5b0c7df7c5d8c3f2bddd72 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/fire_red.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/fire_white.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/fire_white.png new file mode 100644 index 0000000000000000000000000000000000000000..06d61af636cc54f5cd93effac0bc04ad8c6cec0f Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/fire_white.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/firesmall.svg b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/firesmall.svg new file mode 100644 index 0000000000000000000000000000000000000000..d3b2688bdd393d9ebadb321585ab1ce08e7ab7f1 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/firesmall.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/firesmall_red.svg b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/firesmall_red.svg new file mode 100644 index 0000000000000000000000000000000000000000..a0bbe47990bf31647e194644381ccecbac168686 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/firesmall_red.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/icon.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8c93adb2199070bdc88bc2fe0ab5e57f099f377c Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/icon.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/loading.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/loading.png new file mode 100644 index 0000000000000000000000000000000000000000..77c374785e88a0f9fe79c18ced36dc8307ef7fb5 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/loading.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/menu.svg b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/menu.svg new file mode 100644 index 0000000000000000000000000000000000000000..d8d6a3f1c06af002eae95dbc6c9e8f633b6f0606 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/menu_black.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/menu_black.png new file mode 100644 index 0000000000000000000000000000000000000000..0efe06fc71ed635e02062203c991286421346369 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/menu_black.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/menu_red.svg b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/menu_red.svg new file mode 100644 index 0000000000000000000000000000000000000000..98454c4751d575bd1cc3d2c320af668a0b34ac36 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/menu_red.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/menu_white.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..7d2a9e45e611d17359e0e3361768f19bfc94be47 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/menu_white.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/pot.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/pot.png new file mode 100644 index 0000000000000000000000000000000000000000..d6f0cb5f0068c620f8a99542008d6ca073383abc Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/pot.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/power.svg b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/power.svg new file mode 100644 index 0000000000000000000000000000000000000000..8c20902033a0f2f0d1f15a0ffc142506cbfa7ed6 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/power.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/power_black.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/power_black.png new file mode 100644 index 0000000000000000000000000000000000000000..8ed7f3f5294b29301020ecd52da6953c7c51acb1 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/power_black.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/power_red.svg b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/power_red.svg new file mode 100644 index 0000000000000000000000000000000000000000..b36bfe7566ef107c56c1bb4164aae2afb6797df4 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/power_red.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/power_white.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/power_white.png new file mode 100644 index 0000000000000000000000000000000000000000..ef268eee37eb48804514413a98170e5e4bf03e5a Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/power_white.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/save.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/save.png new file mode 100644 index 0000000000000000000000000000000000000000..af79296ec43d53d090768fd2969b8d334a71c7fe Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/save.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/scan.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/scan.png new file mode 100644 index 0000000000000000000000000000000000000000..9929958023acaeb5561655c512ec6a0bbde6d810 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/scan.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/search.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/search.png new file mode 100644 index 0000000000000000000000000000000000000000..3a008873334ca1b54cac7fb3211443bacd3380d8 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/search.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/time.svg b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/time.svg new file mode 100644 index 0000000000000000000000000000000000000000..c1b0207a4add68e63d2cf6fe07bc268b3f5eed99 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/time.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/time_red.svg b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/time_red.svg new file mode 100644 index 0000000000000000000000000000000000000000..94d47575fb87b160b07b5289e6ee43332ba33878 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/time_red.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/time_white.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/time_white.png new file mode 100644 index 0000000000000000000000000000000000000000..227281bd7bed76ce2d488c91ce64185cdc77dd5b Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/main/resources/base/media/time_white.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/config.json b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/config.json new file mode 100644 index 0000000000000000000000000000000000000000..3e2b68e469c38349ef87d4ac045531dfb21bccfa --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/config.json @@ -0,0 +1,66 @@ +{ + "app": { + "bundleName": "pl.magic.healthypotassistant", + "vendor": "example", + "version": { + "code": 1000000, + "name": "1.0.0" + } + }, + "deviceConfig": {}, + "module": { + "package": "pl.magic.healthypotassistant_test", + "name": ".entry_test", + "mainAbility": ".TestAbility", + "deviceType": [ + "phone" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry_test", + "moduleType": "feature", + "installationFree": false + }, + "abilities": [ + { + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "orientation": "unspecified", + "visible": true, + "srcPath": "TestAbility", + "name": ".TestAbility", + "srcLanguage": "ets", + "icon": "$media:icon", + "description": "$string:description_TestAbility", + "formsEnabled": false, + "label": "$string:entry_TestAbility", + "type": "page", + "launchType": "standard" + } + ], + "js": [ + { + "mode": { + "syntax": "ets", + "type": "pageAbility" + }, + "pages": [ + "pages/index" + ], + "name": ".TestAbility", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + } + ] + } +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/ets/TestAbility/app.ets b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/ets/TestAbility/app.ets new file mode 100644 index 0000000000000000000000000000000000000000..b5cc21084a1d14cad575e2bf6c04299533290ebf --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/ets/TestAbility/app.ets @@ -0,0 +1,21 @@ +import hilog from '@ohos.hilog'; +import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' +import { Hypium } from '@ohos/hypium' +import testsuite from '../test/List.test' + +export default { + onCreate() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'Application onCreate'); + var abilityDelegator: any + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + var abilityDelegatorArguments: any + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + hilog.info(0x0000, 'testTag', '%{public}s', 'start run testcase!!!'); + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite) + }, + onDestroy() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'Application onDestroy'); + }, +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/ets/TestAbility/pages/index.ets b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/ets/TestAbility/pages/index.ets new file mode 100644 index 0000000000000000000000000000000000000000..64149c57788b7b362acb066fba8f64e0b571d283 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/ets/TestAbility/pages/index.ets @@ -0,0 +1,36 @@ +import hilog from '@ohos.hilog'; + +@Entry +@Component +struct Index { + aboutToAppear() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility index aboutToAppear'); + } + + @State message: string = 'Hello World' + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + Button() { + Text('next page') + .fontSize(20) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .backgroundColor('#0D9FFB') + .width('35%') + .height('5%') + .onClick(()=>{ + }) + } + .width('100%') + } + .height('100%') + } + } \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts new file mode 100644 index 0000000000000000000000000000000000000000..e80942fff4a0b6bae5115f3743cb27f673867a61 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts @@ -0,0 +1,80 @@ +import hilog from '@ohos.hilog'; +import TestRunner from '@ohos.application.testRunner' +import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' + +var abilityDelegator = undefined +var abilityDelegatorArguments = undefined + +function translateParamsToString(parameters) { + const keySet = new Set([ + '-s class', '-s notClass', '-s suite', '-s itName', + '-s level', '-s testType', '-s size', '-s timeout', + '-s package', '-s dryRun' + ]) + let targetParams = ''; + for (const key in parameters) { + if (keySet.has(key)) { + targetParams += ' ' + key + ' ' + parameters[key] + } + } + return targetParams.trim() +} + +async function onAbilityCreateCallback() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'onAbilityCreateCallback'); +} + +async function addAbilityMonitorCallback(err: any) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', 'addAbilityMonitorCallback : %{public}s', + JSON.stringify(err) ?? ''); +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner OnPrepare'); + } + + onRun() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun run'); + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + + let lMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + }; + var testAbilityName = abilityDelegatorArguments.parameters['-p'] + '.TestAbility' + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback) + var cmd = 'aa start -d 0 -a ' + testAbilityName + ' -b ' + abilityDelegatorArguments.bundleName + cmd += ' '+translateParamsToString(abilityDelegatorArguments.parameters) + var debug = abilityDelegatorArguments.parameters['-D'] + if (debug == 'true') + { + cmd += ' -D' + } + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', 'cmd : %{public}s', cmd); + abilityDelegator.executeShellCommand(cmd, + (err: any, d: any) => { + hilog.info(0x0000, 'testTag', 'executeShellCommand : err : %{public}s', + JSON.stringify(err) ?? ''); + hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', + d.stdResult ?? ''); + hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', + d.exitCode ?? ''); + }) + hilog.info(0x0000, 'testTag', '%{public}s', + 'OpenHarmonyTestRunner onRun call abilityDelegator.getAppContext'); + var context = abilityDelegator.getAppContext() + hilog.info(0x0000, 'testTag', 'getAppContext : %{public}s', + JSON.stringify(context) ?? ''); + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun end'); + } +}; \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/ets/test/Ability.test.ets b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..460fe8c8c124c821c5451615acc8949f619dbc3f --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,36 @@ +import hilog from '@ohos.hilog'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium' + +export default function abilityTest() { + describe('ActsAbilityTest', function () { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(function () { + // 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(function () { + // 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(function () { + // 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(function () { + // 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, function () { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + 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/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/ets/test/List.test.ets b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..d766fe249dfc3ada636f27e64d9b64451ce32c93 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/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/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/resources/base/element/string.json b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..a0901cfced5abc1cb836b55896884b769adc7175 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/resources/base/element/string.json @@ -0,0 +1,12 @@ +{ + "string": [ + { + "name": "description_TestAbility", + "value": "eTS_Empty Ability" + }, + { + "name": "entry_TestAbility", + "value": "entry_TestAbility" + } + ] +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/resources/base/media/icon.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/entry/src/ohosTest/resources/base/media/icon.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/generateCert.gen b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/generateCert.gen new file mode 100644 index 0000000000000000000000000000000000000000..787ccef6fd39ef3b45138d706e1673cf17c6405d --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/generateCert.gen @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIIDxTCCAi2gAwIBAgIEV5vX0jANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDEwhk +ZWJ1Z2tleTAeFw0yMjA5MjQxNTI1MzRaFw0yMzA5MjQxNTI1MzRaMBMxETAPBgNV +BAMTCGRlYnVna2V5MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAo7EO +4jEBPz7g133K4XF/6MsdCS3ADJjKzhW6tLFRQT3u1X96VHBAXgmOPXKNtgoKunzt +dMpZWIAD0ypliE2bmzxzl6Jue2AQI3uTlqXQmiy9vcfRjRzPYjNXywQOnSRwb195 +ktaYAYolTl6ITY/xK74y4yLzkRBp2fKuhT1jPM0rY8ZhDcafnto06f+hiLc7u7mh +gH9t4hV3DRely0MliIoKgh1/DwirWgBw2aQg57LjkXZ7ziLf4vwYsStEc87Zlou/ +2T8LSD7R6pgxURyhUimk5XNa9JcsFhAPaUgcW2pwJ5wTTIsP9lOMMnuYgJwUJ3Qj +PVR6e4lOGT08AcYw1x6W9eEdI324m7GswaJbIvufzVW6g6RWyxfDAZZVge5Zwio9 +IOhPmlLqHb5RcGXfwPKNwCSYshhcYbgWWwtSWrk9O0n19o9YqH4sU9PIoFz1KjKp +mT6Oeu59t5lGogLyRKOjG181KaLXv5X61iBsfkh5WhLWDkoF11vKbUiS5JiJAgMB +AAGjITAfMB0GA1UdDgQWBBSN7iLljmoZvIGo1uJXPxhWwdNFhzANBgkqhkiG9w0B +AQsFAAOCAYEAQlRpWKR5N0Vv1BC54wVlhMnBgMnOLatGd0K+/Ypu74qdjvlquIlz +so0w2FesdRoWt8BmUSLRfPeuloPkDVwncZE/AhoO7UpLuphi7Kqp5nhoIlpb2tNi +90WpV2SnWK3CHQneNS91k4JjtJkSeTUUnWAyswUHd4S/WZtNfQ5NIsYbrO+AFAu2 +KeCXS2TxJlVxutWc2kR/ZMj6MlbMaJWs4UQih98LDi2z76PFT50BLPXl1j0eeW47 +WFAZVf2/5HE1Uw8Bh6+qRjhTNPgNEN0iDX4wt3dIz9grkgJbzillCVeS+oJy2lpH +nmwAFju74kBI3WZzC+1cBCfhKEh6z6+/Unp8MBO9NMbbVcfTe5WvZNb0v2dX4uyn +WoUuqyIAQGZPuIvAy6pGws/RIMtT8y3qmUT7EWcAosO/Jq9/6x0XPWk+j0gdk/Dh +UmxkZ80xtemw5tA1EQ5OwCZRNsGkt0wUg2heCLR7PnbrleSI1w6Ej4igE8juVW3B +1TFLFnEA7fVa +-----END CERTIFICATE----- diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/hvigorfile.js b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/hvigorfile.js new file mode 100644 index 0000000000000000000000000000000000000000..cff9f0dfcf8cb00cca34e7f50d61380cf5496868 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/hvigorfile.js @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +module.exports = require('@ohos/hvigor-ohos-plugin').legacyAppTasks \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/package-lock.json b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..c9cad8cdff623c7eb06122a4fa1639f1405db7f6 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/package-lock.json @@ -0,0 +1,1226 @@ +{ + "name": "healthypotassistant", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ohos/hos-sdkmanager-common": { + "version": "1.0.4", + "resolved": "https://repo.harmonyos.com/npm/@ohos/hos-sdkmanager-common/-/@ohos/hos-sdkmanager-common-1.0.4.tgz", + "integrity": "sha512-LWrfF8Js+u54BcEAdyjzsA81iGBA4LPvQdQ1ig/pX6mvTieUPSvtjtAzdI8nnGVmJRLrHwAMHEO/syd9d8UAFw==", + "requires": { + "@ohos/sdkmanager-common": "^1.1.8" + } + }, + "@ohos/hvigor": { + "version": "1.2.2", + "resolved": "https://repo.harmonyos.com/npm/@ohos/hvigor/-/@ohos/hvigor-1.2.2.tgz", + "integrity": "sha512-GfXCf7pDnyEcxWkG7Edd23XPxgym1vY37zdNt/Gj0pZmw0f+FrP+blfCzVWfYQYlI76krzd96+kvD4lgWkIPBQ==", + "requires": { + "@ohos/hvigor-base": "1.2.2", + "fs-extra": "10.0.1", + "interpret": "1.4.0", + "liftoff": "4.0.0", + "mute-stdout": "1.0.0", + "pretty-hrtime": "1.0.0", + "v8flags": "3.2.0", + "yargs": "7.1.2" + } + }, + "@ohos/hvigor-base": { + "version": "1.2.2", + "resolved": "https://repo.harmonyos.com/npm/@ohos/hvigor-base/-/@ohos/hvigor-base-1.2.2.tgz", + "integrity": "sha512-omwL/qjTE7DTCQdHZnMKuAxKlH1JOgOxaVAae1ca8j/oPuNgY6Spn+mpYRDHIktvav6axMmHT9zV1hJykY4GEg==", + "requires": { + "fs-extra": "10.0.1", + "json5": "2.2.0", + "log4js": "6.4.1", + "once": "1.4.0", + "pretty-hrtime": "1.0.0" + } + }, + "@ohos/hvigor-ohos-plugin": { + "version": "1.2.2", + "resolved": "https://repo.harmonyos.com/npm/@ohos/hvigor-ohos-plugin/-/@ohos/hvigor-ohos-plugin-1.2.2.tgz", + "integrity": "sha512-gir91UxlhMbf2E/NjTYWJGrsNGBKD/1YYbaEdmswD/qW18UDY7jyuqSVyV/gj0h9+iji+gd53rXWzpLLztG5lg==", + "requires": { + "@ohos/hos-sdkmanager-common": "1.0.4", + "@ohos/hvigor-base": "1.2.2", + "@ohos/sdkmanager-common": "1.1.8", + "adm-zip": "0.5.9", + "ajv": "8.10.0", + "execa": "5.1.1", + "fast-xml-parser": "4.0.3", + "fs-extra": "10.0.1", + "glob": "7.2.0", + "iconv-lite": "0.6.3", + "json5": "2.2.0", + "lodash": "4.17.21", + "pretty-hrtime": "1.0.3", + "resolve-package-path": "4.0.3" + }, + "dependencies": { + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==" + } + } + }, + "@ohos/hypium": { + "version": "1.0.2", + "resolved": "https://repo.harmonyos.com/npm/@ohos/hypium/-/@ohos/hypium-1.0.2.tgz", + "integrity": "sha512-HWW62q6hbd0PhvPTH96lo4j//owFwyCLj6Q2jmVLDW6mOt1dwJJwUQ7qUH+Cni/6MmcnyXKvt9I0moGAPK1aCw==" + }, + "@ohos/sdkmanager-common": { + "version": "1.1.8", + "resolved": "https://repo.harmonyos.com/npm/@ohos/sdkmanager-common/-/@ohos/sdkmanager-common-1.1.8.tgz", + "integrity": "sha512-mxq69+6Zg/ybeQGnOtkBzOTbNBkEdiYehRKWsAD/je53v1W+ahauLqe90pNZEiBuVYugzb6z2EaJtAXYZtE8gQ==" + }, + "adm-zip": { + "version": "0.5.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/adm-zip/-/adm-zip-0.5.9.tgz", + "integrity": "sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==" + }, + "ajv": { + "version": "8.10.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==" + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://repo.huaweicloud.com/repository/npm/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "date-format": { + "version": "4.0.13", + "resolved": "https://repo.huaweicloud.com/repository/npm/date-format/-/date-format-4.0.13.tgz", + "integrity": "sha512-bnYCwf8Emc3pTD8pXnre+wfnjGtfi5ncMDKy7+cWZXbmRAsdWkOQHrfC1yz/KiwP5thDp2kCHWYWKBX4HP1hoQ==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-xml-parser": { + "version": "4.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/fast-xml-parser/-/fast-xml-parser-4.0.3.tgz", + "integrity": "sha512-xhQbg3a/EYNHwK0cxIG1nZmVkHX/0tWihamn5pU4Mhd9KEVE2ga8ZJiqEUgB2sApElvAATOdMTLjgqIpvYDUkQ==", + "requires": { + "strnum": "^1.0.5" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "5.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/fined/-/fined-2.0.0.tgz", + "integrity": "sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==", + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^5.0.0", + "object.defaults": "^1.1.0", + "object.pick": "^1.3.0", + "parse-filepath": "^1.0.2" + } + }, + "flagged-respawn": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/flagged-respawn/-/flagged-respawn-2.0.0.tgz", + "integrity": "sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==" + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://repo.huaweicloud.com/repository/npm/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "requires": { + "for-in": "^1.0.1" + } + }, + "fs-extra": { + "version": "10.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "glob": { + "version": "7.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://repo.huaweicloud.com/repository/npm/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://repo.huaweicloud.com/repository/npm/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://repo.huaweicloud.com/repository/npm/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-core-module": { + "version": "2.10.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "json5": { + "version": "2.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "liftoff": { + "version": "4.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/liftoff/-/liftoff-4.0.0.tgz", + "integrity": "sha512-rMGwYF8q7g2XhG2ulBmmJgWv25qBsqRbDn5gH0+wnuyeFt7QBJlHJmtg5qEdn4pN6WVAUMgXnIxytMFRX9c1aA==", + "requires": { + "extend": "^3.0.2", + "findup-sync": "^5.0.0", + "fined": "^2.0.0", + "flagged-respawn": "^2.0.0", + "is-plain-object": "^5.0.0", + "object.map": "^1.0.1", + "rechoir": "^0.8.0", + "resolve": "^1.20.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://repo.huaweicloud.com/repository/npm/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "log4js": { + "version": "6.4.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/log4js/-/log4js-6.4.1.tgz", + "integrity": "sha512-iUiYnXqAmNKiIZ1XSAitQ4TmNs8CdZYTAWINARF3LjnsLN8tY5m0vRwd6uuWj/yNY0YHxeZodnbmxKFUOM2rMg==", + "requires": { + "date-format": "^4.0.3", + "debug": "^4.3.3", + "flatted": "^3.2.4", + "rfdc": "^1.3.0", + "streamroller": "^3.0.2" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://repo.huaweicloud.com/repository/npm/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mute-stdout": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/mute-stdout/-/mute-stdout-1.0.0.tgz", + "integrity": "sha512-MaSQenn0f9oxIjtCufclpV00MuYTiHaXPbdcfPIM+quMqoa8cXywjHHx4LhhIAZlXqPWMdcUpYviajfmHtHRJw==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "requires": { + "lcid": "^1.0.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://repo.huaweicloud.com/repository/npm/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pretty-hrtime": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/pretty-hrtime/-/pretty-hrtime-1.0.0.tgz", + "integrity": "sha512-CU2l5CYUAptUYq/671ajexQfXuxJFwwg0n243Kdkx8bTjeenedsWgu8TGHPm03vLfNtk3aTXgySKPp3Usykudw==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "rechoir": { + "version": "0.8.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "requires": { + "resolve": "^1.20.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-package-path": { + "version": "4.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/resolve-package-path/-/resolve-package-path-4.0.3.tgz", + "integrity": "sha512-SRpNAPW4kewOaNUt8VPqhJ0UMxawMwzJD8V7m1cJfdSTK9ieZwS6K7Dabsm4bmLFM96Z5Y/UznrpG5kt1im8yA==", + "requires": { + "path-root": "^0.1.1" + } + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://repo.huaweicloud.com/repository/npm/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://repo.huaweicloud.com/repository/npm/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" + }, + "streamroller": { + "version": "3.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/streamroller/-/streamroller-3.1.2.tgz", + "integrity": "sha512-wZswqzbgGGsXYIrBYhOE0yP+nQ6XRk7xDcYwuQAGTYXdyAUmvgVFE0YU1g5pvQT0m7GBaQfYcSnlHbapuK0H0A==", + "requires": { + "date-format": "^4.0.13", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + } + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "strnum": { + "version": "1.0.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "v8flags": { + "version": "3.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "yargs": { + "version": "7.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "yargs-parser": { + "version": "5.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "requires": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + } + } +} diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/package.json b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/package.json new file mode 100644 index 0000000000000000000000000000000000000000..41e3d9a60d50e748a0f5dbb28e34dc92aff71a4d --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/package.json @@ -0,0 +1,18 @@ +{ + "license":"ISC", + "devDependencies":{}, + "name":"healthypotassistant", + "ohos":{ + "org":"huawei", + "directoryLevel":"project", + "buildTool":"hvigor" + }, + "description":"example description", + "repository":{}, + "version":"1.0.0", + "dependencies":{ + "@ohos/hypium":"1.0.2", + "@ohos/hvigor-ohos-plugin":"1.2.2", + "@ohos/hvigor":"1.2.2" + } +} \ No newline at end of file diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/requestCert.req b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/requestCert.req new file mode 100644 index 0000000000000000000000000000000000000000..715b2406dbaabdad8c3ef5bbfd63d0947f8e4e5d --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/HealthyPotAssistant/requestCert.req @@ -0,0 +1,21 @@ +-----BEGIN NEW CERTIFICATE REQUEST----- +MIIDiDCCAfACAQAwEzERMA8GA1UEAxMIZGVidWdrZXkwggGiMA0GCSqGSIb3DQEB +AQUAA4IBjwAwggGKAoIBgQCjsQ7iMQE/PuDXfcrhcX/oyx0JLcAMmMrOFbq0sVFB +Pe7Vf3pUcEBeCY49co22Cgq6fO10yllYgAPTKmWITZubPHOXom57YBAje5OWpdCa +LL29x9GNHM9iM1fLBA6dJHBvX3mS1pgBiiVOXohNj/ErvjLjIvOREGnZ8q6FPWM8 +zStjxmENxp+e2jTp/6GItzu7uaGAf23iFXcNF6XLQyWIigqCHX8PCKtaAHDZpCDn +suORdnvOIt/i/BixK0RzztmWi7/ZPwtIPtHqmDFRHKFSKaTlc1r0lywWEA9pSBxb +anAnnBNMiw/2U4wye5iAnBQndCM9VHp7iU4ZPTwBxjDXHpb14R0jfbibsazBolsi ++5/NVbqDpFbLF8MBllWB7lnCKj0g6E+aUuodvlFwZd/A8o3AJJiyGFxhuBZbC1Ja +uT07SfX2j1iofixT08igXPUqMqmZPo567n23mUaiAvJEo6MbXzUpote/lfrWIGx+ +SHlaEtYOSgXXW8ptSJLkmIkCAwEAAaAwMC4GCSqGSIb3DQEJDjEhMB8wHQYDVR0O +BBYEFI3uIuWOahm8gajW4lc/GFbB00WHMA0GCSqGSIb3DQEBCwUAA4IBgQAKFJ5J +X3fDFM5eIxJcogDzLK8BZ0gh24i90rVhcqtIwKO1USf4rfvBsohHd6ObmZjRaxUd +MzMKqLnD36OArqtRIti+dT8tr6JDi/J7wTwuKBuyXJz4L1lbBEWlctKGoJEJUDs2 +/8Jk19qspST4JzLoJ2EWOwq/rXIlEb1KfYLTw4JFvsY5a7UWsy+6HMxdRhOd1J4r +fpvz6znLZ1umsji5HXfB7uAZR5FtzdZhGvUmSmr1W0fMxrNxfQHopOnW8KJ0U0qz +TzNhEjp1jnQMt5GCnyWUu9TIG2/fL9j5mPPZjsOvVh2vqFGlSqnNpcBoh6p8ScMG +5P8QmmvpXRjSs0P1apc108UiFejcUuSf/fDdjgs2wgTnKHnBkbRplGx0ZPAoEyVm +vwcKcuMZwcglOfh8tcsaiwcm/EH8rcTVoaJxQ5axO9zNZV1MQNVO4THU48NBJEOo +S2i6IE+D/vGjG0p9JUlgv66CDEO4NNhbXmdGuvay8gjuF4j5qJ9PfUbKCd0= +-----END NEW CERTIFICATE REQUEST----- diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/README.md b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/README.md new file mode 100644 index 0000000000000000000000000000000000000000..7e79d350261c3303bbfefe49f3c6327f8a720627 --- /dev/null +++ b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/README.md @@ -0,0 +1,42 @@ +# 智能养生壶助手 + +#### 介绍 +智能养生壶助手灵感来源于51CTO 张云波老师的鸿蒙ArkUI直播课-智能打蒜器。 +最近邻居送一台电水壶(养生壶),功能齐全,模式很多(18种),很好用,但是操作复杂,而且不能自己调整模式(比如稍微缩短点时间), +故想到张云波老师的鸿蒙打蒜器,能不能给养生壶也借用鸿蒙的加持力插上一对翅膀,这样养生壶不就飞起来了吗? +当然,我没有做任可市场调研,也许市场早就有成熟产品了, +在此也是为了完成《HarmonyOS ArkUI入门训练营,4天教你打造个人的健康生活应用》 +(https://developer.huawei.com/consumer/cn/forum/topic/0201979321012220072?fid=0101587866109860105)结业小项目, +碰碰运气能不能中个大奖(小奖也无所谓,其实发个奖状也是可以的,以后求职简历也多1个项目经历_^^_), +如有成熟产品纯属巧合,本人绝无抄袭之意,也就练练手,由时间仓促(上班业余时间加周末,上班也有摸鱼了,必须老实招待,占用公司时间), +水平入门,项目也只能是抛砖引玉,班门弄斧,还望各位老师同学帮忙指点。待他日有时间慢慢完善,如果要落地当然希望有家电厂商看好。 +目前项目只能画个简单界面,构想是生是鸿蒙生态产品,死是鸿蒙生态项目,所以碰一碰,多设备流转,小卡片等等应该都要有。 + +#### 智能养生壶畅想(闭门造车_^^_) +设想中智能养生壶,在现有的基础上增加鸿蒙系统控制,通过碰一碰功能打开手机app(智能养生壶助手), +目前养生壶的功能模式都是预定好的用户不能再更改了应该是客观条件所限,所以通过智能养生壶助手在手机上操作,那就能实现一些功能扩展了, +比如红茶功能800W工作时长10分钟,可能个人会根据茶叶品质做一点小调整,如800W工作8分钟,然后600W2分钟。。。 +这种功能在现在有养生壶基本很难实现,所以通过智能养生壶助手在手机上操作就很方便了,复制红茶工作模式,然后稍做修改->保存->发送, +这样就可以轻松实现很多用户想要的功能了 +养生壶工作时间一般还是比较长的,30分钟1~2小时也是正常的,所以用户是不能守在旁边的,但竞间隔一段时间往厨房跑也有点烦, +特别是看个剧守个瓜这样应该会大打折扣,所以如果能在手机上查看进度状态那感觉应该是赶超英美了,如果在养生壶上再加个摄像头,哈哈。。。(会不会成本太高影响销售) +应该还有很多应用场场景,个人孤陋寡闻,才疏学浅暂时没有细想,希望有朝一日有厂商能实现(应该早就实现了) + +#### 开发完成情况 +1. 没有专业的UI设置,比较粗糙 +2. 功能没有完成,实现几个主要界面布局,逻辑功能基本没有实现,好像 ArkUI 倒计时功能有bug,预览器远程模拟真机不能实现倒计时(setInterval回调不能操作状态变量, TextTimer不能清零) + +![img_1.png](img_1.png) +![img_5.png](img_5.png) +![img_6.png](img_6.png) +![img_7.png](img_7.png) +![img_2.png](img_2.png) +![img_3.png](img_3.png) +![img_4.png](img_4.png) +![img_8.png](img_8.png) +![img.png](img.png) +![img_9.png](img_9.png) +![img_10.png](img_10.png) +![img_11.png](img_11.png) +![img_12.png](img_12.png) + diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img.png new file mode 100644 index 0000000000000000000000000000000000000000..a81b5396db68a8430f7db31d613bce4975f4b5f4 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_1.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_1.png new file mode 100644 index 0000000000000000000000000000000000000000..47d344807b849056d27b3f62d48a022d1971f370 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_1.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_10.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_10.png new file mode 100644 index 0000000000000000000000000000000000000000..935381a1ebc4df1cd89c4cf71ead6d6355e67288 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_10.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_11.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_11.png new file mode 100644 index 0000000000000000000000000000000000000000..dacf6eb05bc9fcf5e7e612fd48491b504b6ca589 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_11.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_12.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_12.png new file mode 100644 index 0000000000000000000000000000000000000000..66da08fb4691d71ae32dd5a0d69fa24ac0b04027 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_12.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_2.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3978abe0fdac0c94fdb7fef9eb96bbefde9cef37 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_2.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_3.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_3.png new file mode 100644 index 0000000000000000000000000000000000000000..47e517ab621ce72b6b73fdc2e9e7975301b117a6 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_3.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_4.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e3c78319087282c6b1b9a0572d18d8f0c8b76b2a Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_4.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_5.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_5.png new file mode 100644 index 0000000000000000000000000000000000000000..eafd9b221a70808f16e967402c39f33a2048c7a2 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_5.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_6.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_6.png new file mode 100644 index 0000000000000000000000000000000000000000..6f2a04d0f55daaf4002998e2f12d9f81dd9c8fc6 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_6.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_7.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_7.png new file mode 100644 index 0000000000000000000000000000000000000000..de58fa8f67209e0d33331e7dedc689960154abc8 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_7.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_8.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_8.png new file mode 100644 index 0000000000000000000000000000000000000000..767d9306996d8bf168fd3fa3429f4c2484b6d3bc Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_8.png differ diff --git a/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_9.png b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_9.png new file mode 100644 index 0000000000000000000000000000000000000000..a9e7fc81bcc846fc4413da44f8b21abfd2958114 Binary files /dev/null and b/2022_ArkUI_Bootcamp/13510335281+HealthyPotAssistant/img_9.png differ