diff --git a/resourceschedule/resourceschedule_standard/BUILD.gn b/resourceschedule/resourceschedule_standard/BUILD.gn index 44d0f78e3db5749fc951f9be36738440d93bffab..f6856225f1693f3c432e7482728a3c279c8a8bf2 100644 --- a/resourceschedule/resourceschedule_standard/BUILD.gn +++ b/resourceschedule/resourceschedule_standard/BUILD.gn @@ -19,6 +19,7 @@ group("resourceschedule_standard") { deps = [ "backgroundtaskmanager:resourceschedule_backgroundtaskmanager_js_test", "reminderagent:resourceschedule_reminderagent_js_test", + "workscheduler:resourceschedule_workscheduler_js_test", ] } } diff --git a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/config.json b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/config.json index 4bfcac71cca3b710c269f57894d1628a0346c40a..48be015ebfb25ff147ce0db144befc3ca0dee44b 100644 --- a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/config.json +++ b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/config.json @@ -36,6 +36,9 @@ ] } ], + "backgroundModes": [ + "dataTransfer" + ], "name": "ohos.acts.resourceschedule.taskmgr.js.function.MainAbility", "icon": "$media:icon", "description": "$string:mainability_description", @@ -55,6 +58,16 @@ "autoDesignWidth": false } } - ] + ], + "defPermissions": [ + { + "name": "ohos.permission.KEEP_BACKGROUND_RUNNING" + } + ], + "reqPermissions": [ + { + "name": "ohos.permission.KEEP_BACKGROUND_RUNNING" + } + ] } } diff --git a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/default/test/BackgroundTaskMagrJs.test.js b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/default/test/BackgroundTaskMagrJs.test.js index e7389dd8d4e1683a08e982b65de534fa7ab9e844..b846ad17de266f0b9a0159e8e66053915012b5cc 100755 --- a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/default/test/BackgroundTaskMagrJs.test.js +++ b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/default/test/BackgroundTaskMagrJs.test.js @@ -18,6 +18,7 @@ import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from ' describe("TransientTaskJsTest", function () { beforeAll(function() { + /* * @tc.setup: setup invoked before all testcases */ @@ -25,6 +26,7 @@ describe("TransientTaskJsTest", function () { }) afterAll(function() { + /* * @tc.teardown: teardown invoked after all testcases */ @@ -32,6 +34,7 @@ describe("TransientTaskJsTest", function () { }) beforeEach(function() { + /* * @tc.setup: setup invoked before each testcases */ @@ -39,6 +42,7 @@ describe("TransientTaskJsTest", function () { }) afterEach(function() { + /* * @tc.teardown: teardown invoked after each testcases */ @@ -49,7 +53,7 @@ describe("TransientTaskJsTest", function () { * @tc.name: TransientTaskJsTest001 * @tc.desc: test request a suspend delay * @tc.type: FUNC - * @tc.require: AR000GH86K AR000GH86N AR000GH86L + * @tc.require: */ it("TransientTaskJsTest001", 0, async function (done) { console.info('----------------------TransientTaskJsTest001---------------------------'); @@ -69,7 +73,7 @@ describe("TransientTaskJsTest", function () { * @tc.name: TransientTaskJsTest002 * @tc.desc: test transient task more than three * @tc.type: FUNC - * @tc.require: AR000GH86K AR000GH86L AR000GH86N + * @tc.require: */ it("TransientTaskJsTest002", 0, async function (done) { console.info('----------------------TransientTaskJsTest002---------------------------'); @@ -94,7 +98,7 @@ describe("TransientTaskJsTest", function () { * @tc.name: TransientTaskJsTest003 * @tc.desc: test getRemainingDelayTime Promise * @tc.type: FUNC - * @tc.require: AR000GH86M AR000GH860 AR000GH86L + * @tc.require: */ it("TransientTaskJsTest003", 0, async function (done) { function callback() {} @@ -126,7 +130,7 @@ describe("TransientTaskJsTest", function () { * @tc.name: TransientTaskJsTest004 * @tc.desc: test getRemainingDelayTime Callback * @tc.type: FUNC - * @tc.require: AR000GH86M AR000GH860 AR000GH86L + * @tc.require: */ it("TransientTaskJsTest004", 0, async function (done) { function callback() {} @@ -160,7 +164,7 @@ describe("TransientTaskJsTest", function () { * @tc.name: TransientTaskJsTest005 * @tc.desc: test request a suspend delay * @tc.type: FUNC - * @tc.require: AR000GH86K AR000GH86N AR000GH86L + * @tc.require: */ it("TransientTaskJsTest005", 0, async function (done) { console.info('----------------------TransientTaskJsTest005---------------------------'); diff --git a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/default/test/ContinuousTaskJsunit.test.js b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/default/test/ContinuousTaskJsunit.test.js new file mode 100644 index 0000000000000000000000000000000000000000..f050f148215e439fa4b358ff4e86ef25e46aa3ba --- /dev/null +++ b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/default/test/ContinuousTaskJsunit.test.js @@ -0,0 +1,390 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import notification from '@ohos.notification'; +import wantAgent from '@ohos.wantAgent'; +import particleAbility from '@ohos.ability.particleAbility' +import backgroundTaskManager from '@ohos.backgroundTaskManager' +import featureAbility from '@ohos.ability.featureAbility' + +import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' + +describe("ContinuousTaskJsTest", function () { + beforeAll(function() { + + /* + * @tc.setup: setup invoked before all testcases + */ + console.info('beforeAll called') + }) + + afterAll(function() { + + /* + * @tc.teardown: teardown invoked after all testcases + */ + console.info('afterAll called') + }) + + beforeEach(function() { + + /* + * @tc.setup: setup invoked before each testcases + */ + console.info('beforeEach called') + }) + + afterEach(function() { + + /* + * @tc.teardown: teardown invoked after each testcases + */ + console.info('afterEach called') + particleAbility.cancelBackgroundRunning(); + setTimeout(() => {}, 500); + backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()); + setTimeout(() => {}, 500); + }) + + /* + * @tc.name:ContinuousTaskJsTest001 + * @tc.desc:verify new startBackgroundrunning interface promise mode work properly + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest001", 0, async function (done) { + let wantAgentInfo = { + wants: [ + { + bundleName: "com.continuoustask.test", + abilityName: "com.continuoustask.test.MainAbility" + } + ], + operationType: 2, + requestCode: 0, + wantAgentFlags: [3] + }; + wantAgent.getWantAgent(wantAgentInfo).then((data) => { + backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), + backgroundTaskManager.BackgroundMode.DATA_TRANSFER, data).then(() => { + console.log("ContinuousTaskJsTest001 startBackgroundRunning success"); + expect(true).assertTrue(); + setTimeout(() => { + done(); + }, 500); + }).catch((err) => { + expect(false).assertTrue(); + console.log("ContinuousTaskJsTest001 startBackgroundRunning failure"); + setTimeout(() => { + done(); + }, 500); + }); + }); + }) + + /* + * @tc.name:ContinuousTaskJsTest002 + * @tc.desc:verify new startBackgroundrunning interface callback mode work properly + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest002", 0, async function (done) { + function conTaskCallback(err, data) { + if (err) { + console.info('ContinuousTaskJsTest002 startBackgroundRunning failed'); + expect(false).assertTrue(); + } else { + console.info('ContinuousTaskJsTest002 startBackgroundRunning succeed'); + expect(true).assertTrue(); + } + setTimeout(()=>{ + done(); + }, 500); + } + let wantAgentInfo = { + wants: [ + { + bundleName: "com.continuoustask.test", + abilityName: "com.continuoustask.test.MainAbility" + } + ], + operationType: 2, + requestCode: 0, + wantAgentFlags: [3] + }; + wantAgent.getWantAgent(wantAgentInfo).then((data) => { + backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), + backgroundTaskManager.BackgroundMode.DATA_TRANSFER, data, conTaskCallback); + }); + }) + + /* + * @tc.name:ContinuousTaskJsTest003 + * @tc.desc:verify old startBackgroundrunning interface promise mode work properly + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest003", 0, async function (done) { + let wantAgentInfo = { + wants: [ + { + bundleName: "com.continuoustask.test", + abilityName: "com.continuoustask.test.MainAbility" + } + ], + operationType: 2, + requestCode: 0, + wantAgentFlags: [3] + }; + wantAgent.getWantAgent(wantAgentInfo).then((data) => { + let basicContent = { + title: "title", + text: "text" + }; + + let notificationContent = { + contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, + normal: basicContent + }; + + let request = { + content: notificationContent, + wantAgent: data + } + + let id = 1; + + particleAbility.startBackgroundRunning(id, request).then((data) => { + console.log("ContinuousTaskJsTest003 startBackgroundRunning success"); + expect(true).assertTrue(); + setTimeout(() => { + done(); + }, 500); + }).catch((err) => { + expect(false).assertTrue(); + console.log("ContinuousTaskJsTest003 startBackgroundRunning failure"); + setTimeout(() => { + done(); + }, 500); + }); + }); + }) + + /* + * @tc.name:ContinuousTaskJsTest004 + * @tc.desc:verify old startBackgroundrunning interface callback mode work properly + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest004", 0, async function (done) { + function conTaskCallback(err, data) { + if (err) { + console.info('ContinuousTaskJsTest004 startBackgroundRunning failure'); + expect(false).assertTrue(); + } else { + console.info('ContinuousTaskJsTest004 startBackgroundRunning success'); + expect(true).assertTrue(); + } + setTimeout(()=>{ + done(); + }, 500); + } + let wantAgentInfo = { + wants: [ + { + bundleName: "com.continuoustask.test", + abilityName: "com.continuoustask.test.MainAbility" + } + ], + operationType: 2, + requestCode: 0, + wantAgentFlags: [3] + }; + wantAgent.getWantAgent(wantAgentInfo).then((data) => { + let basicContent = { + title: "title", + text: "text" + }; + + let notificationContent = { + contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, + normal: basicContent + }; + + let request = { + content: notificationContent, + wantAgent: data + } + + let id = 1; + + particleAbility.startBackgroundRunning(id, request, conTaskCallback); + }); + }) + + /* + * @tc.name:ContinuousTaskJsTest005 + * @tc.desc:verify new api stopBackgroundrunning interface promise mode work properly + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest005", 0, async function (done) { + let wantAgentInfo = { + wants: [ + { + bundleName: "com.continuoustask.test", + abilityName: "com.continuoustask.test.MainAbility" + } + ], + operationType: 2, + requestCode: 0, + wantAgentFlags: [3] + }; + wantAgent.getWantAgent(wantAgentInfo).then((data) => { + backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), + backgroundTaskManager.BackgroundMode.DATA_TRANSFER, data).then((data) => { + backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then((data) => { + console.log("ContinuousTaskJsTest005 cancelBackgroundRunning success"); + expect(true).assertTrue(); + setTimeout(() => { + done(); + }, 500); + }).catch((err) => { + expect(false).assertTrue(); + console.log("ContinuousTaskJsTest005 cancelBackgroundRunning failure"); + setTimeout(() => { + done(); + }, 500); + }); + }) + }); + }) + + /* + * @tc.name:ContinuousTaskJsTest006 + * @tc.desc:verify new api stopBackgroundrunning interface callback mode work properly + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest006", 0, async function (done) { + function conTaskCallback(err, data) { + if (err) { + console.info('ContinuousTaskJsTest006 startBackgroundRunning failure'); + expect(false).assertTrue(); + } else { + console.info('ContinuousTaskJsTest006 startBackgroundRunning success'); + expect(true).assertTrue(); + } + setTimeout(()=>{ + done(); + }, 500); + } + let wantAgentInfo = { + wants: [ + { + bundleName: "com.continuoustask.test", + abilityName: "com.continuoustask.test.MainAbility" + } + ], + operationType: 2, + requestCode: 0, + wantAgentFlags: [3] + }; + wantAgent.getWantAgent(wantAgentInfo).then((data) => { + backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), + backgroundTaskManager.BackgroundMode.DATA_TRANSFER, data).then((data) => { + backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext(), conTaskCallback); + }) + }); + }) + + /* + * @tc.name:ContinuousTaskJsTest007 + * @tc.desc:verify old api cancelBackgroundrunning interface promise mode work properly + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest007", 0, async function (done) { + let wantAgentInfo = { + wants: [ + { + bundleName: "com.continuoustask.test", + abilityName: "com.continuoustask.test.MainAbility" + } + ], + operationType: 2, + requestCode: 0, + wantAgentFlags: [3] + }; + await wantAgent.getWantAgent(wantAgentInfo).then((data) => { + particleAbility.startBackgroundRunning(data); + setTimeout(()=>{ + }, 500); + }); + + particleAbility.cancelBackgroundRunning().then(() => { + console.log("ContinuousTaskJsTest007 cancelBackgroundRunning success"); + expect(true).assertTrue(); + setTimeout(() => { + done(); + }, 500); + }).catch( (err) => { + expect(false).assertTrue(); + console.log("ContinuousTaskJsTest007 cancelBackgroundRunning failure"); + setTimeout(() => { + done(); + }, 500); + }); + }) + + /* + * @tc.name:ContinuousTaskJsTest008 + * @tc.desc:verify old cancelBackgroundrunning interface callback mode work properly + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest008", 0, async function (done) { + function conTaskCallback(err, data) { + if (err) { + console.info('ContinuousTaskJsTest008 startBackgroundRunning failure'); + expect(false).assertTrue(); + } else { + console.info('ContinuousTaskJsTest008 startBackgroundRunning success'); + expect(true).assertTrue(); + } + setTimeout(()=>{ + done(); + }, 500); + } + let wantAgentInfo = { + wants: [ + { + bundleName: "com.continuoustask.test", + abilityName: "com.continuoustask.test.MainAbility" + } + ], + operationType: 2, + requestCode: 0, + wantAgentFlags: [3] + }; + await wantAgent.getWantAgent(wantAgentInfo).then((data) => { + particleAbility.startBackgroundRunning(data); + setTimeout(()=>{ + }, 500); + }); + + particleAbility.cancelBackgroundRunning(conTaskCallback); + }) +}) \ No newline at end of file diff --git a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/default/test/List.test.js b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/default/test/List.test.js index 4f9eddaf490c96e23597fee1833b8aa8130a3935..6f41586fab945d6ab844209ff65619fa1e3ace8f 100755 --- a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/default/test/List.test.js +++ b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/default/test/List.test.js @@ -14,6 +14,8 @@ */ require('./BackgroundTaskMagrJs.test.js') +require('./ContinuousTaskJsunit.test.js') + diff --git a/resourceschedule/resourceschedule_standard/workscheduler/BUILD.gn b/resourceschedule/resourceschedule_standard/workscheduler/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..bf4768981b1a655adb4b0fab2e4cc52a94152623 --- /dev/null +++ b/resourceschedule/resourceschedule_standard/workscheduler/BUILD.gn @@ -0,0 +1,31 @@ +# Copyright (C) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//test/xts/tools/build/suite.gni") + +ohos_js_hap_suite("resourceschedule_workscheduler_js_test") { + hap_profile = "./src/main/config.json" + deps = [ + ":resourceschedule_js_assets", + ":resourceschedule_js_resources", + ] + certificate_profile = "./signature/openharmony_sx.p7b" + hap_name = "ActsResourcescheduleWorkSchedulerTest" +} +ohos_js_assets("resourceschedule_js_assets") { + source_dir = "./src/main/js/default" +} +ohos_resources("resourceschedule_js_resources") { + sources = [ "./src/main/resources" ] + hap_profile = "./src/main/config.json" +} diff --git a/resourceschedule/resourceschedule_standard/workscheduler/Test.json b/resourceschedule/resourceschedule_standard/workscheduler/Test.json new file mode 100644 index 0000000000000000000000000000000000000000..77338dc7860cc8a12dbdb8ed0a0d79449c227207 --- /dev/null +++ b/resourceschedule/resourceschedule_standard/workscheduler/Test.json @@ -0,0 +1,18 @@ +{ + "description": "Configuration for resourceschedule js api Tests", + "driver": { + "type": "JSUnitTest", + "test-timeout": "300000", + "package": "ohos.acts.resourceschedule.workscheduler.js.function", + "shell-timeout": "60000" + }, + "kits": [ + { + "test-file-name": [ + "ActsResourcescheduleWorkSchedulerTest.hap" + ], + "type": "AppInstallKit", + "cleanup-apps": true + } + ] +} diff --git a/resourceschedule/resourceschedule_standard/workscheduler/signature/openharmony_sx.p7b b/resourceschedule/resourceschedule_standard/workscheduler/signature/openharmony_sx.p7b new file mode 100644 index 0000000000000000000000000000000000000000..9be1e98fa4c0c28ca997ed660112fa16b194f0f5 Binary files /dev/null and b/resourceschedule/resourceschedule_standard/workscheduler/signature/openharmony_sx.p7b differ diff --git a/resourceschedule/resourceschedule_standard/workscheduler/src/main/config.json b/resourceschedule/resourceschedule_standard/workscheduler/src/main/config.json new file mode 100644 index 0000000000000000000000000000000000000000..a584f7a59febec4c8ae01d7dd2af34bc61229e50 --- /dev/null +++ b/resourceschedule/resourceschedule_standard/workscheduler/src/main/config.json @@ -0,0 +1,60 @@ +{ + "app": { + "bundleName": "ohos.acts.resourceschedule.workscheduler.js.function", + "vendor": "example", + "version": { + "code": 1, + "name": "1.0" + }, + "apiVersion": { + "compatible": 4, + "target": 5 + } + }, + "deviceConfig": {}, + "module": { + "package": "ohos.acts.resourceschedule.workscheduler.js.function", + "name": ".MyApplication", + "deviceType": [ + "phone" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry" + }, + "abilities": [ + { + "visible": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "name": "ohos.acts.resourceschedule.workscheduler.js.function.MainAbility", + "icon": "$media:icon", + "description": "$string:mainability_description", + "label": "$string:app_name", + "type": "page", + "launchType": "standard" + } + ], + "js": [ + { + "pages": [ + "pages/index/index" + ], + "name": "default", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + } + ] + } +} diff --git a/resourceschedule/resourceschedule_standard/workscheduler/src/main/js/default/app.js b/resourceschedule/resourceschedule_standard/workscheduler/src/main/js/default/app.js new file mode 100644 index 0000000000000000000000000000000000000000..e423f4bce4698ec1d7dc86c3eea3990a5e7b1085 --- /dev/null +++ b/resourceschedule/resourceschedule_standard/workscheduler/src/main/js/default/app.js @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export default { + onCreate() { + console.info('AceApplication onCreate'); + }, + onDestroy() { + console.info('AceApplication onDestroy'); + } +}; diff --git a/resourceschedule/resourceschedule_standard/workscheduler/src/main/js/default/i18n/en-US.json b/resourceschedule/resourceschedule_standard/workscheduler/src/main/js/default/i18n/en-US.json new file mode 100644 index 0000000000000000000000000000000000000000..e63c70d978a3a53be988388c87182f81785e170c --- /dev/null +++ b/resourceschedule/resourceschedule_standard/workscheduler/src/main/js/default/i18n/en-US.json @@ -0,0 +1,6 @@ +{ + "strings": { + "hello": "Hello", + "world": "World" + } +} \ No newline at end of file diff --git a/resourceschedule/resourceschedule_standard/workscheduler/src/main/js/default/i18n/zh-CN.json b/resourceschedule/resourceschedule_standard/workscheduler/src/main/js/default/i18n/zh-CN.json new file mode 100644 index 0000000000000000000000000000000000000000..de6ee5748322f44942c1b003319d8e66c837675f --- /dev/null +++ b/resourceschedule/resourceschedule_standard/workscheduler/src/main/js/default/i18n/zh-CN.json @@ -0,0 +1,6 @@ +{ + "strings": { + "hello": "您好", + "world": "世界" + } +} \ No newline at end of file diff --git a/resourceschedule/resourceschedule_standard/workscheduler/src/main/js/default/pages/index/index.css b/resourceschedule/resourceschedule_standard/workscheduler/src/main/js/default/pages/index/index.css new file mode 100644 index 0000000000000000000000000000000000000000..6fda792753f2e15f22b529c7b90a82185b2770bf --- /dev/null +++ b/resourceschedule/resourceschedule_standard/workscheduler/src/main/js/default/pages/index/index.css @@ -0,0 +1,9 @@ +.container { + flex-direction: column; + justify-content: center; + align-items: center; +} + +.title { + font-size: 100px; +} diff --git a/resourceschedule/resourceschedule_standard/workscheduler/src/main/js/default/pages/index/index.hml b/resourceschedule/resourceschedule_standard/workscheduler/src/main/js/default/pages/index/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..f64b040a5ae394dbaa5e185e1ecd4f4556b92184 --- /dev/null +++ b/resourceschedule/resourceschedule_standard/workscheduler/src/main/js/default/pages/index/index.hml @@ -0,0 +1,5 @@ +