From c7c8ce8db97dc9be029cba1e686121db5c778806 Mon Sep 17 00:00:00 2001 From: Maksim Gavrilov Date: Fri, 20 Dec 2024 11:56:50 +0100 Subject: [PATCH] Migration to Zepp OS v3: - upgrade to zepp os v3 - general refactoring for easier support of other devices - timer progress page is now based on canvas api --- app.js | 12 +- app.json | 23 +- assets/gt/.gitkeep | 0 assets/trex/gradient_w_1.png | Bin 1419 -> 0 bytes assets/trex/gradient_w_1_debug.png | Bin 1392 -> 0 bytes assets/trex/gradient_w_2.png | Bin 386 -> 0 bytes assets/trex/gradient_w_2_debug.png | Bin 386 -> 0 bytes global.d.ts | 2 +- jsconfig.json | 4 +- package.json | 7 +- page/common.js | 91 ------- page/common/common.layout.js | 65 +++++ .../create_timer.page.template.js | 137 ++++++++++ .../select_timer.page.template.js | 70 +++++ .../timer_progress.page.template.js | 188 +++++++++++++ page/constants/constants.js | 45 ++++ page/create_timer/create_interval.js | 13 - page/create_timer/create_timer.js | 13 - page/create_timer/create_timer_template.js | 159 ----------- page/data/models.js | 85 ++++++ page/devices/gt/.gitkeep | 0 .../creation_pages/create_interval.page.js | 22 ++ .../trex/creation_pages/create_timer.page.js | 22 ++ .../creation_pages/creation.page.layout.js | 3 + .../selection_pages/select_interval.page.js | 47 ++++ .../trex/selection_pages/select_timer.page.js | 47 ++++ .../selection_pages/selection.page.layout.js | 27 ++ .../timer_progress/timer_progress.page.js | 53 ++++ .../timer_progress.page.layout.js | 98 +++++++ page/devices/trex/trex.layout.js | 50 ++++ page/i18n/ru-RU.po | 1 - page/select_predefined/select_interval.js | 31 --- .../select_predefined_template.js | 67 ----- page/select_predefined/select_timer.js | 31 --- page/style/style.js | 246 ------------------ page/timer_progress/timer_progress.js | 219 ---------------- readme/02_new_timer.png | Bin 18109 -> 21256 bytes readme/04_new_interval.png | Bin 30305 -> 23071 bytes readme/05_countdown.png | Bin 52648 -> 66513 bytes utils/index.js | 46 ++++ 40 files changed, 1028 insertions(+), 896 deletions(-) create mode 100644 assets/gt/.gitkeep delete mode 100644 assets/trex/gradient_w_1.png delete mode 100644 assets/trex/gradient_w_1_debug.png delete mode 100644 assets/trex/gradient_w_2.png delete mode 100644 assets/trex/gradient_w_2_debug.png delete mode 100644 page/common.js create mode 100644 page/common/common.layout.js create mode 100644 page/common/creation_pages/create_timer.page.template.js create mode 100644 page/common/selection_pages/select_timer.page.template.js create mode 100644 page/common/timer_progress/timer_progress.page.template.js create mode 100644 page/constants/constants.js delete mode 100644 page/create_timer/create_interval.js delete mode 100644 page/create_timer/create_timer.js delete mode 100644 page/create_timer/create_timer_template.js create mode 100644 page/data/models.js create mode 100644 page/devices/gt/.gitkeep create mode 100644 page/devices/trex/creation_pages/create_interval.page.js create mode 100644 page/devices/trex/creation_pages/create_timer.page.js create mode 100644 page/devices/trex/creation_pages/creation.page.layout.js create mode 100644 page/devices/trex/selection_pages/select_interval.page.js create mode 100644 page/devices/trex/selection_pages/select_timer.page.js create mode 100644 page/devices/trex/selection_pages/selection.page.layout.js create mode 100644 page/devices/trex/timer_progress/timer_progress.page.js create mode 100644 page/devices/trex/timer_progress/timer_progress.page.layout.js create mode 100644 page/devices/trex/trex.layout.js delete mode 100644 page/select_predefined/select_interval.js delete mode 100644 page/select_predefined/select_predefined_template.js delete mode 100644 page/select_predefined/select_timer.js delete mode 100644 page/style/style.js delete mode 100644 page/timer_progress/timer_progress.js create mode 100644 utils/index.js diff --git a/app.js b/app.js index 3630b09..0bf0415 100644 --- a/app.js +++ b/app.js @@ -1,14 +1,8 @@ -import { TimerModel } from "./page/common" - App({ - globalData: { - }, + globalData: {}, onCreate(options) { - console.log('app on create invoke') - this.globalData.timerModel = new TimerModel() }, onDestroy(options) { - console.log('app on destroy invoke') - } -}) \ No newline at end of file + }, +}); diff --git a/app.json b/app.json index 7861198..9f12516 100644 --- a/app.json +++ b/app.json @@ -1,12 +1,12 @@ { - "configVersion": "v2", + "configVersion": "v3", "app": { "appId": 1032854, "appName": "Timerr", "appType": "app", "version": { - "code": 1, - "name": "1.0.1" + "code": 2, + "name": "2.0.0" }, "icon": "icon.png", "vender": "zepp", @@ -18,21 +18,22 @@ ], "runtime": { "apiVersion": { - "compatible": "2.0.0", - "target": "2.0.0", - "minVersion": "2.0.0" + "compatible": "3.0.0", + "target": "3.0.0", + "minVersion": "3.0" } }, + "debug": false, "targets": { "trex": { "module": { "page": { "pages": [ - "page/select_predefined/select_timer", - "page/select_predefined/select_interval", - "page/timer_progress/timer_progress", - "page/create_timer/create_timer", - "page/create_timer/create_interval" + "page/devices/trex/selection_pages/select_timer.page", + "page/devices/trex/selection_pages/select_interval.page", + "page/devices/trex/creation_pages/create_timer.page", + "page/devices/trex/creation_pages/create_interval.page", + "page/devices/trex/timer_progress/timer_progress.page" ] } }, diff --git a/assets/gt/.gitkeep b/assets/gt/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/assets/trex/gradient_w_1.png b/assets/trex/gradient_w_1.png deleted file mode 100644 index dea7995e1ece8d713d171bf32e4024c469435049..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1419 zcmeAS@N?(olHy`uVBq!ia0y~yU_1t7J8-Z8$%a4IBY+f3x}&cn1H;CC?mvmFK)yn< zN02WALzNm(MGFJNFObR?3=E|P3=FRl7#OT(FffQ0%-I!a1C(e zfC;9W@z?@p7@NTXsG7mO@#!WY#aZAHS8?tx|+mh4$+(B?3=GUXo-U3d6^w81_-c?tMbaNfW20D&FJCWO z?@$+5G5w}>?1zhddvb1n+gxAEA)w&Uz|a``ppl7@i3P|j;NWqa#X-^a+OK=SoYS2)574$7MNkM@7PTb zu=Z7~YCY$#GU@q)c}@w3eh8&2gX4UKn82}D$KQVf#qFqaaetz<>TJ3 zpWgX`^@KHYF8*J$d6fmoaEG-G_DiqXRf(&E(uy%K*`#aLDTCNiz;sjlMb8hUC!Og~ z#j;1{;FKde!=Uc!y?aN&Mjud8=;7`F+h4-%BawfXB@f~-zDCZ+-wRCy!S2s%JYDy9 wc^=btkR^;v?FU*4_t}A*3Fd+s5B49Bl~^vaz3%@WK2QFVdQ&MBb@0JejLLjV8( diff --git a/assets/trex/gradient_w_1_debug.png b/assets/trex/gradient_w_1_debug.png deleted file mode 100644 index 022d34c2eb9028a164731a58ed93fdf4a8096723..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1392 zcmds1>ub|c6hBF8&AJWi92y;Jtl~sjlTHv9+L~#dtJ*ooggRf1UA9$i8`_M;;iDa$ zFBB2Khz^+yL=d0sgNjI*uzm1@4irIrphJ|QZbKB6A>Mn_b^0%OLvnuip5OhQbMCq1 zcx}zPLhBqW02KPFy>$RoKf)4YLEq%~^8hmD=1PAhz^&8y-^P zg_$1#S_OdNAb@xdV3yi-Z?g+I(n`SB(Wo0P<(xmxA+M zEK=JVt`BGd|3)zsi#X)Q*lxw4M^wBET)K#0MA2kUkL-&kMBQyC3=v_x%-cCa(e}FS z0e>yGCKgw?6%N56*gaN`<6QB^Cb7<2mEDeJZhMQSsUpv}wY53gmOEncX5Lv*QNau4 ze0g~pVw5HJM>Sb5izXHtA`?1ZB@v2;RV^Hga#&a19c$Ixb~_G~8%Ca5xM?y{G?6U} z706=`?{o-!P8)4?;Z<={JglI|Sl{Dx5#~Q@**Gp92mdP>qf)YpO7&P>eD2sh*4aDX zP6eRHeBR1>o%;N8TTO?vxO4F91<`zTq_}YG#Nx}f8y+4~Eju2ldZSXh%Qkl9!|O-W zDB8@}xY5$lObQ6Tlg|vj>RX${v-RvLVwrSOupBu{2ux3*jgyj)vf27GY7vH%+-u0# z=suRMA&T6|71%?YS4*tvp^w1ypasQ}k`lv&f-CbdObRcIunZ*^6qFJfTU7~Br5A7~ zQ*Rd$nZ6bi&Qs#dX{XRdpu|T0%jBM1H#ZlM3X_>)Rvu4R8f9)wP4Az^PB>axpDrsP zCoKi7y~C{?Io8Nm{|?q`qN-<=_8 qd~&GuBLiQUovVzCW?U_1e4$E(mHAuRJwHYKAMvfN@m^mY?Dzxss#&H0 diff --git a/assets/trex/gradient_w_2.png b/assets/trex/gradient_w_2.png deleted file mode 100644 index d2d2aad547a3150af26095e7175380c6ef88f78a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmeAS@N?(olHy`uVBq!ia0y~yU_1t7J8&=q$?Zz&SwM=hILO_J@#aaLdLW0hz$3Dl zfq`2Xgc%uT&5-~KdIb1{xB_XafYmK)W&;h9C<*clW?*FF5s_BWwQ%-}N-e6JuxRVi zE05m(_@A6EX$e%b-qXb~q+-t7i|wII3=A$Cg+;l8-u%u#CHG%dJ7w{M#s*oA8_JB; zN(tv#-gq2{-v4S$6;*fV|e uZ#c%%%PA#nqL$%vVa5VO$K)m|2pp1SyzJRnCLRY0R0dC1KbLh*2~7a{oM<=z diff --git a/assets/trex/gradient_w_2_debug.png b/assets/trex/gradient_w_2_debug.png deleted file mode 100644 index dec81ca3f9daaa8c0ac6eb79292d9ac7bdbc3724..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmeAS@N?(olHy`uVBq!ia0y~yU_1t7J8&=q$?Zz&SwM=hILO_J@#aaLdLW0hz$3Dl zfq`2Xgc%uT&5-~KdIb1{xB_X0x&J9gTc%lu0F9C;3GxeOU}WPFmR8ZVaPo^vEv%cc zXv>i+kKTU&@6mZ|E>O*SPZ!6KiaBpDwudq?Ft}_K7Ud3l^E>~P+<#T=l*JDk8)P|d zC^J?oC7fq@<8dI4^N@BY>4H!F}2|?#|?GH-%1JhS>Cia{1w_@ y&-Bf|;TTIVr \ No newline at end of file +/// diff --git a/jsconfig.json b/jsconfig.json index 539d239..608d165 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -9,6 +9,6 @@ "**/node_modules/*" ], "files": [ - "node_modules/@zeppos/device-types/index.d.ts" + "node_modules/@zeppos/device-types/dist/index.d.ts" ] -} \ No newline at end of file +} diff --git a/package.json b/package.json index 0205ff5..3c24cfe 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "empty", + "name": "timerr", "version": "1.0.0", "description": "", "main": "app.js", @@ -9,6 +9,9 @@ "author": "", "license": "ISC", "devDependencies": { - "@zeppos/device-types": "^2.0.0" + "@zeppos/device-types": "^3.0.0" + }, + "dependencies": { + "@zeppos/zml": "^0.0.9" } } diff --git a/page/common.js b/page/common.js deleted file mode 100644 index 2abde94..0000000 --- a/page/common.js +++ /dev/null @@ -1,91 +0,0 @@ -import {getText} from '@zos/i18n' - -export {getText} - -export const CONSTANTS = { - seconds: { - mili: 1000, - min: 60, - hour: 3600 - }, - i18n: { - APP_NAME: 'appName', - SELECT_TIMER_HEADER: 'select_timer', - SELECT_INTERVAL_HEADER: 'select_interval', - TIMER_PROGRESS_HEADER: 'timer_progress', - CREATE_TIMER_HEADER: 'create_timer', - CREATE_INTERVAL_HEADER: 'create_interval', - UNIT_SECOND: 'unit_second', - UNIT_MINUTE: 'unit_minute', - UNIT_HOUR: 'unit_hour' - - }, - pages: { - SELECT_TIMER: 'page/select_predefined/select_timer', - SELECT_INTERVAL: 'page/select_predefined/select_interval', - TIMER_PROGRESS: 'page/timer_progress/timer_progress', - CREATE_TIMER: 'page/create_timer/create_timer', - CREATE_INTERVAL: 'page/create_timer/create_interval' - }, - img: { - // bottom rectangle buttons - PLUS: 'plus_button.png', - PLUS_PRESSED: 'plus_button_pressed.png', - CONFIRM: 'confirm_button.png', - CONFIRM_PRESSED: 'confirm_button_pressed.png', - STOP: 'stop_button.png', - STOP_PRESSED: 'stop_button_pressed.png', - - // circle buttons - CLOCK_BUTTON: 'clock_button.png', - CLOCK_BUTTON_PRESSED: 'clock_button_pressed.png', - CANCEL: 'cancel_button.png', - CANCEL_PRESSED: 'cancel_button_pressed.png', - PAUSE: 'pause_button.png', - PAUSE_PRESSED: 'pause_button_pressed.png', - RESUME: 'resume_button.png', - RESUME_PRESSED: 'resume_button_pressed.png', - - // create new timer - GRADIENT_BG_UP: 'gradient_w_1.png', - GRADIENT_BG_BOTTOM: 'gradient_w_2.png' - } -} - -export class Unit { - constructor(code, text) { - this.code = code - this.text = text - } -} - -export const Units = { - SEC: new Unit('SEC', getText('unit_second')), - MIN: new Unit('MIN', getText('unit_minute')), - HOUR: new Unit('HOUR', getText('unit_hour')) -} - -export class Timer { - constructor(value, unit, valueSeconds = 0, args = {}) { - this.value = value - this.unit = unit - this.valueSeconds = valueSeconds - this.img = CONSTANTS.img.CLOCK_BUTTON - this.img_pressed = CONSTANTS.img.CLOCK_BUTTON_PRESSED - const {displayName} = args - this.displayName = displayName - } - - getDisplayName() { - return !this.displayName ? this.value + ' ' + this.unit.text : this.displayName - } -} - -export class TimerModel { - constructor() { - this.timer - this.interval - } -} - -export const zeroPad = (num, places = 2) => String(num).padStart(places, '0') \ No newline at end of file diff --git a/page/common/common.layout.js b/page/common/common.layout.js new file mode 100644 index 0000000..778a55e --- /dev/null +++ b/page/common/common.layout.js @@ -0,0 +1,65 @@ +import {getDeviceInfo} from '@zos/device' +import {align, text_style} from '@zos/ui' +import {getText} from '@zos/i18n'; + +export const {width: DEVICE_WIDTH, height: DEVICE_HEIGHT} = getDeviceInfo() + +export const COLORS = { + // see https://www.figma.com/design/bY5cr0QN41npTOTO642Did/Zepp-OS-3.0-Library-Circular-(Community)?node-id=31-3&node-type=canvas + SYS: { + BUTTON: 0x515151, + BUTTON_PRESSED: 0x313131, + BUTTON_HIGHLIGHT: 0x0986D4, + BUTTON_HIGHLIGHT_PRESSED: 0x234F7C, + HIGHLIGHT: 0x0986D4, + HIGHLIGHT_DISABLED: 0x10283F, + PAGE_BACKGROUND: 0x000000 + }, + TEXT: { + BUTTON: 0xFFFFFF, + LINK: 0x059AF7, + TITLE: 0xFFFFFF, + WARNING: 0xD14221, + SUBTITLE: 0xB2B2B2 + }, + SECONDARY: { + _01: 0x03B5AA, + _02: 0x7B9E89, + _03: 0x399E5A, + _18: 0xAA2F2F, + _20: 0x9B3642 + } +} + +// STYLES +export const PAGE_HEADERS = { + HEADER_STYLE(pageName) { + return { + color: COLORS.TEXT.TITLE, + align_h: align.CENTER_H, + align_v: align.CENTER_V, + text_style: text_style.NONE, + text: getText(pageName) + } + } +} + +export const BUTTONS = { + STANDARD_BOTTOM_BUTTON_STYLE(src, pressedSrc) { + return { + x: 0, + normal_src: src, + press_src: pressedSrc + } + }, + STANDARD_BOTTOM_BUTTON_STYLE_WITH_HANDLER(src, pressedSrc, handler) { + return { + x: 0, + normal_src: src, + press_src: pressedSrc, + click_func: (button) => { + handler(button) + } + } + } +} \ No newline at end of file diff --git a/page/common/creation_pages/create_timer.page.template.js b/page/common/creation_pages/create_timer.page.template.js new file mode 100644 index 0000000..347bb5e --- /dev/null +++ b/page/common/creation_pages/create_timer.page.template.js @@ -0,0 +1,137 @@ +import {createWidget, widget} from '@zos/ui' +import {formatNumberForPicker} from '../../../utils'; +import {getText} from '@zos/i18n'; +import {CONSTANTS} from '../../constants/constants'; +import {log as Logger} from '@zos/utils'; +import {TimeSpan} from '../../data/models' +import {LocalStorage} from '@zos/storage' + +let hh = 0 +let mm = 0 +let ss = 0 +const logger = Logger.getLogger('timerr'); +const storage = new LocalStorage() + +function CreationPage(args) { + const { + //data + storageKey, + pageName, + nextPageUrl, + + //style + headerStyle, + containerStyle, + + //handlers + nextPageRoutingFunction + } = args + + Page({ + onInit() { + }, + build() { + this.initValues() + let viewContainer = createWidget(widget.VIEW_CONTAINER, containerStyle) + this.renderTimerDisplay(viewContainer) + this.renderHeader(viewContainer); + }, + onDestroy() { + }, + initValues() { + hh = storage.getItem(`${pageName}.hh`, 0) ?? 0 + mm = storage.getItem(`${pageName}.mm`, 0) ?? 0 + ss = storage.getItem(`${pageName}.ss`, 0) ?? 0 + logger.debug('initial picker values:', + ` ${pageName}.hh: `, hh, + ` ${pageName}.mm: `, mm, + ` ${pageName}.ss: `, ss) + }, + renderTimerDisplay(viewContainer) { + this.selectTime(viewContainer) + }, + renderHeader(viewContainer) { + viewContainer.createWidget(widget.TEXT, headerStyle) + createWidget(widget.TEXT, headerStyle) + }, + selectTime(viewContainer) { + viewContainer.createWidget(widget.WIDGET_PICKER, { + title: '', + nb_of_columns: 3, + init_col_index: 2, + data_config: [ + { + data_array: new Array(24).fill(0).map((d, index) => formatNumberForPicker(index)), + support_loop: true, + init_val_index: hh, + connector: ':', + unit: getText(CONSTANTS.i18n.UNIT_HOUR) + }, + { + data_array: new Array(60).fill(0).map((d, index) => formatNumberForPicker(index)), + support_loop: false, + init_val_index: mm, + connector: ':', + unit: getText(CONSTANTS.i18n.UNIT_MINUTE) + }, + { + data_array: new Array(60).fill(0).map((d, index) => formatNumberForPicker(index)), + support_loop: false, + init_val_index: ss, + unit: getText(CONSTANTS.i18n.UNIT_SECOND) + } + ], + picker_cb: this.pickerCallback + }); + }, + pickerCallback(picker, event_type, column, valueIndex) { + function collectTimeSpans() { + let hourSec = new TimeSpan(getNumber(hh), CONSTANTS.timeUnits.HOUR).valueSeconds + let minSec = new TimeSpan(getNumber(mm), CONSTANTS.timeUnits.MIN).valueSeconds + let sec = new TimeSpan(getNumber(ss), CONSTANTS.timeUnits.SEC).valueSeconds + return new TimeSpan(sec + minSec + hourSec, CONSTANTS.timeUnits.SEC) + } + + function getNumber(value) { + return (typeof value === 'number') ? value : 0; + } + + function putInLocalStorage(storage, pageName, hh, mm, ss) { + logger.debug('save picker values:', + ` ${pageName}.hh: `, hh, + ` ${pageName}.mm: `, mm, + ` ${pageName}.ss: `, ss) + storage.setItem(`${pageName}.hh`, hh) + storage.setItem(`${pageName}.mm`, mm) + storage.setItem(`${pageName}.ss`, ss) + } + + function savePikerValues(timeSpan) { + // remember selected picker values for future + putInLocalStorage(storage, pageName, hh, mm, ss) + logger.debug('select ' + storageKey + ' : ' + timeSpan.valueSeconds) + getApp()._options.globalData[storageKey] = timeSpan + } + + if (event_type === 1) { + switch (column) { + case 0: + hh = valueIndex + break; + case 1: + mm = valueIndex + break; + case 2: + ss = valueIndex + break; + } + } else if (event_type === 2) { + let timeSpan = collectTimeSpans(); + savePikerValues(timeSpan) + nextPageRoutingFunction({url: nextPageUrl}) + } + } + }) +} + +export default CreationPage \ No newline at end of file diff --git a/page/common/selection_pages/select_timer.page.template.js b/page/common/selection_pages/select_timer.page.template.js new file mode 100644 index 0000000..c2aadc7 --- /dev/null +++ b/page/common/selection_pages/select_timer.page.template.js @@ -0,0 +1,70 @@ +import {createWidget, event, prop, widget} from '@zos/ui'; +import {log as Logger} from '@zos/utils'; +import {vibroCallback} from '../../../utils/index' + +const logger = Logger.getLogger('timerr'); + +function SelectionPage(args) { + const { + //data + storageKey, + predefinedSpans, + columnsNumber, + creationPageUrl, + nextPageUrl, + + //style + headerStyle, + containerStyle, + addButtonStyle, + timerButtonStyleFunction, + + //handlers + creationPageRoutingFunction, + nextPageRoutingFunction + } = args + + Page({ + onInit() { + }, + build() { + let viewContainer = createWidget(widget.VIEW_CONTAINER, containerStyle) + this.renderHeader(viewContainer); + this.renderDefaultSpans(viewContainer, predefinedSpans) + this.renderCreateButton() + }, + onDestroy() { + }, + renderHeader(viewContainer) { + viewContainer.createWidget(widget.TEXT, headerStyle) + }, + renderDefaultSpans(viewContainer, predefinedSpans) { + for (let i = 0, row = 0, column = 0; i < predefinedSpans.length; i++) { + if (column === columnsNumber) { + column = 0 + row++ + } + let timeSpan = predefinedSpans[i] + let timeSpanButtonStyle = timerButtonStyleFunction(timeSpan, row, column++, vibroCallback((button) => { + this.saveSelectedValue(button) + nextPageRoutingFunction({url: nextPageUrl}) + })); + let timerButton = viewContainer.createWidget(widget.BUTTON, timeSpanButtonStyle) + timerButton.setProperty(prop.DATASET, {timeSpan: timeSpan}) + } + }, + renderCreateButton() { + let createButton = createWidget(widget.BUTTON, addButtonStyle) + createButton.addEventListener(event.CLICK_DOWN, vibroCallback(() => { + creationPageRoutingFunction({url: creationPageUrl}) + })) + }, + saveSelectedValue(button) { + let timeSpan = button.getProperty(prop.DATASET).timeSpan; + logger.debug('select ' + storageKey + ' : ' + timeSpan.valueSeconds) + getApp()._options.globalData[storageKey] = timeSpan + } + }); +} + +export default SelectionPage diff --git a/page/common/timer_progress/timer_progress.page.template.js b/page/common/timer_progress/timer_progress.page.template.js new file mode 100644 index 0000000..4025363 --- /dev/null +++ b/page/common/timer_progress/timer_progress.page.template.js @@ -0,0 +1,188 @@ +import {back} from '@zos/router'; +import {createWidget, deleteWidget, prop, widget} from '@zos/ui'; +import {log as Logger} from '@zos/utils'; +import {CONSTANTS} from '../../constants/constants'; +import {pauseDropWristScreenOff, pausePalmScreenOff, resetDropWristScreenOff, resetPalmScreenOff} from '@zos/display' +import {doLongVibro, formatNumberForPicker as _00, startVibration, stopVibration, vibroCallback} from '../../../utils/index' +import {Time} from '@zos/sensor'; + +const logger = Logger.getLogger('timerr') +const MILLI = 1_000 +const PROCESS_DELAY_MS = 200 +const TIME = new Time() + +function TimerProgressPage(args) { + const { + //style + headerStyle, + remainingTimeStyleFunction, + cancelButtonStyleFunction, + pauseButtonStyleFunction, + resumeButtonStyleFunction, + stopButtonStyleFunction, + canvasLayoutStyle, + timerDisplayTextAccentColors, + + // + createTimerProgressBarFunction + } = args + + Page({ + onInit() { + }, + build() { + this.processes = [] + this.timerSeconds = getApp()._options.globalData[CONSTANTS.session.timer].valueSeconds + this.intervalSeconds = getApp()._options.globalData[CONSTANTS.session.interval].valueSeconds + logger.debug('start with timer : ' + this.timerSeconds) + logger.debug('start with interval : ' + this.intervalSeconds) + + this.pauseScreenOff() + this.renderWidgets() + + this.start = TIME.getTime() + this.end = this.start + secondsToMillis(this.timerSeconds + 1) + this.remainingSeconds = getRemainingSeconds(this.end) + this.startTimer() + }, + onDestroy() { + stopVibration() + this.resetScreenOff() + }, + pauseScreenOff() { + const duration = { + duration: 0 + } + pausePalmScreenOff(duration) + pauseDropWristScreenOff(duration) + }, + resetScreenOff() { + resetPalmScreenOff() + resetDropWristScreenOff() + }, + renderWidgets() { + this.canvas = createWidget(widget.CANVAS, canvasLayoutStyle) + this.updateTimerProgressBar(0) + createWidget(widget.TEXT, headerStyle) + this.timerDisplay = createWidget(widget.TEXT, remainingTimeStyleFunction(getRemainingTimeText(this.timerSeconds))) + this.cancelButton = this.createCancelButton(cancelButtonStyleFunction(vibroCallback(() => back()))) + this.pauseButton = this.createPauseButton() + }, + updateTimerProgressBar(progress) { + this.canvas.clear(canvasLayoutStyle) + createTimerProgressBarFunction(this.canvas, progress) + }, + createCancelButton(options) { + return createWidget(widget.BUTTON, options) + }, + createPauseButton() { + return createWidget(widget.BUTTON, pauseButtonStyleFunction(vibroCallback((button) => { + this.stopProcesses() + this.pause = TIME.getTime() + this.resumeButton = this.createResumeButton() + deleteWidget(button) + }))) + }, + createResumeButton() { + return createWidget(widget.BUTTON, resumeButtonStyleFunction(vibroCallback((button) => { + this.pauseButton = this.createPauseButton() + const pauseTime = TIME.getTime() - this.pause + this.end += pauseTime + this.lastReminderTime += pauseTime + this.startTimer() + deleteWidget(button) + }))) + }, + startTimer() { + logger.debug('start time: ', this.start, ' end time:', this.end) + + const process = setInterval(() => { + const remainingSeconds = getRemainingSeconds(this.end) + this.setTimerDisplayText(getRemainingTimeText(remainingSeconds)) + if (remainingSeconds === 0) { + this.stopProcesses() + this.deleteAdditionalButtons() + this.createCancelButton(stopButtonStyleFunction(vibroCallback(() => back()))) + this.startTimerDisplayBlinking() + startVibration() + } else { + this.notifyOnInterval(remainingSeconds) + } + if (this.remainingSeconds != remainingSeconds) { + this.remainingSeconds = remainingSeconds + this.updateTimerProgressBar(getProgress(remainingSeconds, this.timerSeconds)) + } + }, PROCESS_DELAY_MS) + this.processes.push(process) + }, + setTimerDisplayText(textValue) { + this.timerDisplay.setProperty(prop.MORE, { + text: textValue + }) + }, + switchTimerDisplayColor(isWarning) { + this.timerDisplay.setProperty(prop.MORE, { + color: isWarning ? timerDisplayTextAccentColors[1] : timerDisplayTextAccentColors[0] + }) + }, + stopProcesses() { + this.processes.forEach(i => clearInterval(i)) + }, + deleteAdditionalButtons() { + deleteWidget(this.cancelButton) + deleteWidget(this.pauseButton) + deleteWidget(this.resumeButton) + }, + startTimerDisplayBlinking() { + let switcher = true + let interval = setInterval(() => { + this.switchTimerDisplayColor(switcher) + switcher = !switcher + }, PROCESS_DELAY_MS) + this.processes.push(interval) + }, + notifyOnInterval() { + if (this.intervalSeconds > 0) { + if (this.lastReminderTime) { + const now = TIME.getTime() + if (now - this.lastReminderTime >= secondsToMillis(this.intervalSeconds)) { + doLongVibro() + this.switchTimerDisplayColor(true) + this.lastReminderTime = now + } else { + this.switchTimerDisplayColor(false) + } + } else { + this.lastReminderTime = this.start + } + } + } + }) +} + +function getProgress(remainingSeconds, totalSeconds) { + if (remainingSeconds <= 0) { + return 100 + } + return Math.min(100, Math.floor((totalSeconds - remainingSeconds) / totalSeconds * 100)) +} + +function getRemainingSeconds(endTime) { + return Math.floor(Math.max(0, endTime - TIME.getTime()) / MILLI) +} + +function getRemainingTimeText(valueSeconds) { + const remainingHours = Math.floor(valueSeconds / CONSTANTS.timeUnits.HOUR.toSeconds()) + const remainingMinutes = Math.floor(valueSeconds % CONSTANTS.timeUnits.HOUR.toSeconds() / CONSTANTS.timeUnits.MIN.toSeconds()) + const remainingSeconds = valueSeconds % CONSTANTS.timeUnits.MIN.toSeconds() + if (remainingHours > 0) { + return `${_00(remainingHours)}:${_00(remainingMinutes)}:${_00(remainingSeconds)}` + } + return `${_00(remainingMinutes)}:${_00(remainingSeconds)}` +} + +function secondsToMillis(seconds) { + return seconds * MILLI +} + +export default TimerProgressPage diff --git a/page/constants/constants.js b/page/constants/constants.js new file mode 100644 index 0000000..ec6a638 --- /dev/null +++ b/page/constants/constants.js @@ -0,0 +1,45 @@ +import {Hour, Minute, Page, Second} from '../data/models' + +export const CONSTANTS = { + session: { + timer: 'timer', + interval: 'interval', + }, + timeUnits: { + SEC: new Second(), + MIN: new Minute(), + HOUR: new Hour() + }, + i18n: { + APP_NAME: 'appName', + UNIT_SECOND: 'unit_second', + UNIT_MINUTE: 'unit_minute', + UNIT_HOUR: 'unit_hour' + }, + pages: { + SELECT_TIMER: new Page('select_timer', 'selection_pages/select_timer.page'), + SELECT_INTERVAL: new Page('select_interval', 'selection_pages/select_interval.page'), + CREATE_TIMER: new Page('create_timer', 'creation_pages/create_timer.page'), + CREATE_INTERVAL: new Page('create_interval', 'creation_pages/create_interval.page'), + TIMER_PROGRESS: new Page('timer_progress', 'timer_progress/timer_progress.page'), + }, + images: { + // bottom rectangle buttons + PLUS: 'plus_button.png', + PLUS_PRESSED: 'plus_button_pressed.png', + CONFIRM: 'confirm_button.png', + CONFIRM_PRESSED: 'confirm_button_pressed.png', + STOP: 'stop_button.png', + STOP_PRESSED: 'stop_button_pressed.png', + + // circle buttons + CLOCK_BUTTON: 'clock_button.png', + CLOCK_BUTTON_PRESSED: 'clock_button_pressed.png', + CANCEL: 'cancel_button.png', + CANCEL_PRESSED: 'cancel_button_pressed.png', + PAUSE: 'pause_button.png', + PAUSE_PRESSED: 'pause_button_pressed.png', + RESUME: 'resume_button.png', + RESUME_PRESSED: 'resume_button_pressed.png', + } +} diff --git a/page/create_timer/create_interval.js b/page/create_timer/create_interval.js deleted file mode 100644 index d2d4b70..0000000 --- a/page/create_timer/create_interval.js +++ /dev/null @@ -1,13 +0,0 @@ -import {replace} from '@zos/router' - -import {CONSTANTS, getText} from '../common' -import CreateNewTimerPage from './create_timer_template' - -CreateNewTimerPage({ - header: getText(CONSTANTS.i18n.CREATE_INTERVAL_HEADER), - pageKey: 'create.interval', - confirmHandler: function (timer) { - getApp()._options.globalData.timerModel.interval = timer - replace({url: CONSTANTS.pages.TIMER_PROGRESS}) - } -}) diff --git a/page/create_timer/create_timer.js b/page/create_timer/create_timer.js deleted file mode 100644 index f7eb00b..0000000 --- a/page/create_timer/create_timer.js +++ /dev/null @@ -1,13 +0,0 @@ -import {replace} from '@zos/router' - -import {CONSTANTS, getText} from '../common' -import CreateNewTimerPage from './create_timer_template' - -CreateNewTimerPage({ - header: getText(CONSTANTS.i18n.CREATE_TIMER_HEADER), - pageKey: 'create.timer', - confirmHandler: function (timer) { - getApp()._options.globalData.timerModel.timer = timer - replace({url: CONSTANTS.pages.SELECT_INTERVAL}) - } -}) diff --git a/page/create_timer/create_timer_template.js b/page/create_timer/create_timer_template.js deleted file mode 100644 index fb2247e..0000000 --- a/page/create_timer/create_timer_template.js +++ /dev/null @@ -1,159 +0,0 @@ -import {Vibrator, VIBRATOR_SCENE_SHORT_LIGHT} from '@zos/sensor' -import {localStorage} from '@zos/storage' -import {createWidget, deleteWidget, event, prop, widget} from '@zos/ui' - -import {CONSTANTS, getText, Timer, Units, zeroPad} from '../common' -import {COMMON, CREATE_TIMER} from '../style/style' - -const REEL_VALUES = [] -for (let i = 0; i < 60; i++) { - REEL_VALUES.push({text: zeroPad(i, 2), src: '', value: i}) -} -const REEL_TYPES = {HH: 'HH', MM: 'MM', SS: 'SS'} - -function CreateNewTimerPage(args) { - const { - header = getText(CONSTANTS.i18n.APP_NAME), - headerStyle = COMMON.HEADER_STYLE(header), - confirmButtonStyle = COMMON.STANDARD_BOTTOM_BUTTON_STYLE(CONSTANTS.img.CONFIRM, CONSTANTS.img.CONFIRM_PRESSED), - confirmHandler, - pageKey - } = args - - Page({ - onInit() { - }, - build() { - this.hh = localStorage.getItem(`${pageKey}.hh`) ? localStorage.getItem(`${pageKey}.hh`) : 0 - this.mm = localStorage.getItem(`${pageKey}.mm`) ? localStorage.getItem(`${pageKey}.mm`) : 0 - this.ss = localStorage.getItem(`${pageKey}.ss`) ? localStorage.getItem(`${pageKey}.ss`) : 0 - this.vibro = new Vibrator() - const header = createWidget(widget.TEXT, headerStyle) - this.createConfirmButton() - this.createTimerDisplay() - }, - onDestroy() { - this.vibro && this.vibro.stop() - }, - createTimerDisplay() { - this.createDisplayTextHH() - this.createDisplayTextMM() - this.createDisplayTextSS() - }, - createDisplayTextHH() { - const hhDisplayText = createWidget(widget.TEXT, CREATE_TIMER.DISPLAY_TEXT(this.hh, 0)) - const title = createWidget(widget.TEXT, CREATE_TIMER.DISPLAY_TEXT_SUB(getText(CONSTANTS.i18n.UNIT_HOUR), 0)) - hhDisplayText.addEventListener(event.CLICK_DOWN, (e) => { - deleteWidget(hhDisplayText) - deleteWidget(title) - this.resetActiveReel() - this.activeReel = this.createReelHH() - }) - }, - createDisplayTextMM() { - const mmDisplayText = createWidget(widget.TEXT, CREATE_TIMER.DISPLAY_TEXT(this.mm, 1)) - const title = createWidget(widget.TEXT, CREATE_TIMER.DISPLAY_TEXT_SUB(getText(CONSTANTS.i18n.UNIT_MINUTE), 1)) - mmDisplayText.addEventListener(event.CLICK_DOWN, (e) => { - deleteWidget(mmDisplayText) - deleteWidget(title) - this.resetActiveReel() - this.activeReel = this.createReelMM() - }) - }, - createDisplayTextSS() { - const ssDisplayText = createWidget(widget.TEXT, CREATE_TIMER.DISPLAY_TEXT(this.ss, 2)) - const title = createWidget(widget.TEXT, CREATE_TIMER.DISPLAY_TEXT_SUB(getText(CONSTANTS.i18n.UNIT_SECOND), 2)) - ssDisplayText.addEventListener(event.CLICK_DOWN, (e) => { - deleteWidget(ssDisplayText) - deleteWidget(title) - this.resetActiveReel() - this.activeReel = this.createReelSS() - }) - }, - resetActiveReel() { - if (this.activeReel) { - deleteWidget(this.activeReel.reel) - deleteWidget(this.activeReel.gradient.up) - deleteWidget(this.activeReel.gradient.bottom) - switch (this.activeReel.type) { - case REEL_TYPES.HH: - this.createDisplayTextHH() - break - case REEL_TYPES.MM: - this.createDisplayTextMM() - break - case REEL_TYPES.SS: - this.createDisplayTextSS() - break - } - } - }, - createReelHH() { - const data = [REEL_VALUES[23]].concat(REEL_VALUES.slice(0, 23)) - return { - reel: this.createReelWidget(data, 0, this.hh, (list, index) => { - this.hh = this.getValueFromCycleList(list, index) - }), - gradient: this.createGradients(0), - type: REEL_TYPES.HH - } - }, - createReelMM() { - const data = [REEL_VALUES[59]].concat(REEL_VALUES.slice(0, 59)) - return { - reel: this.createReelWidget(data, 1, this.mm, (list, index) => { - this.mm = this.getValueFromCycleList(list, index) - }), - gradient: this.createGradients(1), - type: REEL_TYPES.MM - } - }, - createReelSS() { - const data = [REEL_VALUES[59]].concat(REEL_VALUES.slice(0, 59)) - return { - reel: this.createReelWidget(data, 2, this.ss, (list, index) => { - this.ss = this.getValueFromCycleList(list, index) - }), - gradient: this.createGradients(2), - type: REEL_TYPES.SS - } - }, - createReelWidget(data, position, listTop, handler) { - const reelWidget = createWidget(widget.CYCLE_IMAGE_TEXT_LIST, CREATE_TIMER.REEL_STILE(data, position, handler)) - reelWidget.setProperty(prop.LIST_TOP, listTop) - return reelWidget - }, - createGradients(position) { - const up = createWidget(widget.IMG, CREATE_TIMER.GRADIENT_UP(position)) - const bottom = createWidget(widget.IMG, CREATE_TIMER.GRADIENT_BOTTOM(position)) - return {up: up, bottom: bottom} - }, - createConfirmButton() { - const button = createWidget(widget.BUTTON, confirmButtonStyle) - button.addEventListener(event.CLICK_DOWN, (e) => { - this.doVibro() - confirmHandler(this.getTimerObject()) - this.saveTimer() - }) - }, - getValueFromCycleList(list, index) { - return index === 0 ? 0 : list[index].value + 1 - }, - getTimerObject() { - const valueSeconds = this.hh * CONSTANTS.seconds.hour + this.mm * CONSTANTS.seconds.min + this.ss - return new Timer(0, Units.SEC, valueSeconds) - }, - saveTimer() { - localStorage.setItem(`${pageKey}.hh`, this.hh) - localStorage.setItem(`${pageKey}.mm`, this.mm) - localStorage.setItem(`${pageKey}.ss`, this.ss) - }, - doVibro() { - this.vibro.stop() - this.vibro.setMode(VIBRATOR_SCENE_SHORT_LIGHT) - this.vibro.start() - } - }) -} - -export default CreateNewTimerPage \ No newline at end of file diff --git a/page/data/models.js b/page/data/models.js new file mode 100644 index 0000000..c84c9e5 --- /dev/null +++ b/page/data/models.js @@ -0,0 +1,85 @@ +import {getText} from '@zos/i18n'; +import {log as Logger} from '@zos/utils'; + +const logger = Logger.getLogger('timerr'); + +export class Page { + constructor(name, url) { + this.name = name + this.url = url + } + + getUrl(deviceFamily) { + let url = 'page/devices/' + deviceFamily + '/' + this.url + return url + } +} + +export class TimeUnit { + constructor(code, text) { + this.code = code; + this.text = text; + } + + toSeconds() { + throw new Error('not implemented') + } +} + +export class Second extends TimeUnit { + + constructor() { + super('SEC', getText('unit_second')); + } + + toSeconds() { + return 1; + } +} + +export class Minute extends TimeUnit { + constructor() { + super('MIN', getText('unit_minute')); + } + + toSeconds() { + return 60; + } +} + +export class Hour extends TimeUnit { + constructor() { + super('HOUR', getText('unit_hour')); + } + + toSeconds() { + return 60 * 60; + } +} + +export class TimeSpan { + + constructor(value, unit, img = null, imgPressed = null) { + this.value = value; + this.unit = unit; + this.valueSeconds = value * unit.toSeconds(); + this.img = img + this.imgPressed = imgPressed + } + + getDisplayName() { + return this.value + ' ' + this.unit.text + } +} + +export class ZeroSpan extends TimeSpan { + + constructor(unit, img, imgPressed) { + super(0, unit, img, imgPressed) + } + + getDisplayName() { + return '-' + } +} + diff --git a/page/devices/gt/.gitkeep b/page/devices/gt/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/page/devices/trex/creation_pages/create_interval.page.js b/page/devices/trex/creation_pages/create_interval.page.js new file mode 100644 index 0000000..f8d402b --- /dev/null +++ b/page/devices/trex/creation_pages/create_interval.page.js @@ -0,0 +1,22 @@ +import CreationPage from '../../../common/creation_pages/create_timer.page.template' +import {replace} from '@zos/router'; +import {CONSTANTS} from '../../../constants/constants'; +import * as layout from './creation.page.layout'; +import {log as Logger} from '@zos/utils'; + +const logger = Logger.getLogger('timerr'); + +let pageName = CONSTANTS.pages.CREATE_INTERVAL.name; +CreationPage({ + //data + storageKey: CONSTANTS.session.interval, + pageName: pageName, + nextPageUrl: CONSTANTS.pages.TIMER_PROGRESS.getUrl(layout.DEVICE_FAMILY), + + //style + headerStyle: layout.HEADER_STYLE(pageName), + containerStyle: layout.STANDARD_CONTAINER_STYLE, + + //handlers + nextPageRoutingFunction: replace +}) \ No newline at end of file diff --git a/page/devices/trex/creation_pages/create_timer.page.js b/page/devices/trex/creation_pages/create_timer.page.js new file mode 100644 index 0000000..1561024 --- /dev/null +++ b/page/devices/trex/creation_pages/create_timer.page.js @@ -0,0 +1,22 @@ +import CreationPage from '../../../common/creation_pages/create_timer.page.template' +import {replace} from '@zos/router'; +import {CONSTANTS} from '../../../constants/constants'; +import * as layout from './creation.page.layout'; +import {log as Logger} from '@zos/utils'; + +const logger = Logger.getLogger('timerr'); + +let pageName = CONSTANTS.pages.CREATE_TIMER.name; +CreationPage({ + //data + storageKey: CONSTANTS.session.timer, + pageName: pageName, + nextPageUrl: CONSTANTS.pages.SELECT_INTERVAL.getUrl(layout.DEVICE_FAMILY), + + //style + headerStyle: layout.HEADER_STYLE(pageName), + containerStyle: layout.STANDARD_CONTAINER_STYLE, + + //handlers + nextPageRoutingFunction: replace +}) \ No newline at end of file diff --git a/page/devices/trex/creation_pages/creation.page.layout.js b/page/devices/trex/creation_pages/creation.page.layout.js new file mode 100644 index 0000000..2d061b4 --- /dev/null +++ b/page/devices/trex/creation_pages/creation.page.layout.js @@ -0,0 +1,3 @@ +import {BUTTONS, DEVICE_FAMILY, HEADER_STYLE, STANDARD_CONTAINER_STYLE} from '../trex.layout' + +export {BUTTONS, DEVICE_FAMILY, HEADER_STYLE, STANDARD_CONTAINER_STYLE} diff --git a/page/devices/trex/selection_pages/select_interval.page.js b/page/devices/trex/selection_pages/select_interval.page.js new file mode 100644 index 0000000..a43639a --- /dev/null +++ b/page/devices/trex/selection_pages/select_interval.page.js @@ -0,0 +1,47 @@ +import {replace} from '@zos/router' + +import {TimeSpan, ZeroSpan} from '../../../data/models' +import {CONSTANTS} from '../../../constants/constants' +import SelectionPage from '../../../common/selection_pages/select_timer.page.template'; +import * as layout from './selection.page.layout'; +import {log as Logger} from '@zos/utils'; + +const logger = Logger.getLogger('timerr'); + +const predefinedSpans = [ + new ZeroSpan(CONSTANTS.timeUnits.SEC, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(5, CONSTANTS.timeUnits.SEC, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(10, CONSTANTS.timeUnits.SEC, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(30, CONSTANTS.timeUnits.SEC, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(1, CONSTANTS.timeUnits.MIN, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(2, CONSTANTS.timeUnits.MIN, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(3, CONSTANTS.timeUnits.MIN, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(5, CONSTANTS.timeUnits.MIN, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(10, CONSTANTS.timeUnits.MIN, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(15, CONSTANTS.timeUnits.MIN, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(20, CONSTANTS.timeUnits.MIN, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED) +] + +SelectionPage({ + //data + storageKey: CONSTANTS.session.interval, + columnsNumber: layout.PREDEFINED_SPAN_COLUMNS_NUMBER, + predefinedSpans: predefinedSpans, + creationPageUrl: CONSTANTS.pages.CREATE_INTERVAL.getUrl(layout.DEVICE_FAMILY), + nextPageUrl: CONSTANTS.pages.TIMER_PROGRESS.getUrl(layout.DEVICE_FAMILY), + //style + headerStyle: layout.HEADER_STYLE(CONSTANTS.pages.SELECT_INTERVAL.name), + containerStyle: layout.STANDARD_CONTAINER_WITH_BOTTOM_BUTTON_STYLE, + addButtonStyle: layout.BUTTONS.STANDARD_BOTTOM_BUTTON_STYLE(CONSTANTS.images.PLUS, CONSTANTS.images.PLUS_PRESSED), + timerButtonStyleFunction: layout.TIME_SPAN_BUTTON_STYLE_FUNCTION, + + //handlers + creationPageRoutingFunction: replace, + nextPageRoutingFunction: replace, + selectTimerHandler: function (button) { + replace({url: CONSTANTS.pages.TIMER_PROGRESS.getUrl(layout.DEVICE_FAMILY)}) + }, + addButtonHandler: function () { + replace({url: CONSTANTS.pages.CREATE_INTERVAL.getUrl(layout.DEVICE_FAMILY)}) + } +}) diff --git a/page/devices/trex/selection_pages/select_timer.page.js b/page/devices/trex/selection_pages/select_timer.page.js new file mode 100644 index 0000000..0247f4f --- /dev/null +++ b/page/devices/trex/selection_pages/select_timer.page.js @@ -0,0 +1,47 @@ +import {push} from '@zos/router' + +import {TimeSpan} from '../../../data/models' +import {CONSTANTS} from '../../../constants/constants' +import SelectionPage from '../../../common/selection_pages/select_timer.page.template'; +import * as layout from './selection.page.layout'; +import {log as Logger} from '@zos/utils'; + +const logger = Logger.getLogger('timerr'); + +const predefinedSpans = [ + new TimeSpan(30, CONSTANTS.timeUnits.SEC, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(1, CONSTANTS.timeUnits.MIN, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(2, CONSTANTS.timeUnits.MIN, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(3, CONSTANTS.timeUnits.MIN, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(5, CONSTANTS.timeUnits.MIN, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(10, CONSTANTS.timeUnits.MIN, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(15, CONSTANTS.timeUnits.MIN, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(20, CONSTANTS.timeUnits.MIN, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(30, CONSTANTS.timeUnits.MIN, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED), + new TimeSpan(1, CONSTANTS.timeUnits.HOUR, CONSTANTS.images.CLOCK_BUTTON, CONSTANTS.images.CLOCK_BUTTON_PRESSED) +] + +SelectionPage({ + //data + storageKey: CONSTANTS.session.timer, + columnsNumber: layout.PREDEFINED_SPAN_COLUMNS_NUMBER, + predefinedSpans: predefinedSpans, + creationPageUrl: CONSTANTS.pages.CREATE_TIMER.getUrl(layout.DEVICE_FAMILY), + nextPageUrl: CONSTANTS.pages.SELECT_INTERVAL.getUrl(layout.DEVICE_FAMILY), + + //style + headerStyle: layout.HEADER_STYLE(CONSTANTS.pages.SELECT_TIMER.name), + containerStyle: layout.STANDARD_CONTAINER_WITH_BOTTOM_BUTTON_STYLE, + addButtonStyle: layout.BUTTONS.STANDARD_BOTTOM_BUTTON_STYLE(CONSTANTS.images.PLUS, CONSTANTS.images.PLUS_PRESSED), + timerButtonStyleFunction: layout.TIME_SPAN_BUTTON_STYLE_FUNCTION, + + //handlers + creationPageRoutingFunction: push, + nextPageRoutingFunction: push, + selectTimerHandler: function (button) { + push({url: CONSTANTS.pages.SELECT_INTERVAL.getUrl(layout.DEVICE_FAMILY)}) + }, + addButtonHandler: function () { + push({url: CONSTANTS.pages.CREATE_TIMER.getUrl(layout.DEVICE_FAMILY)}) + } +}) diff --git a/page/devices/trex/selection_pages/selection.page.layout.js b/page/devices/trex/selection_pages/selection.page.layout.js new file mode 100644 index 0000000..284f507 --- /dev/null +++ b/page/devices/trex/selection_pages/selection.page.layout.js @@ -0,0 +1,27 @@ +import {px} from '@zos/utils'; +import {BUTTONS, DEVICE_FAMILY, HEADER_STYLE, STANDARD_CONTAINER_WITH_BOTTOM_BUTTON_STYLE} from '../trex.layout' + +const PREDEFINED_SPAN_COLUMNS_NUMBER = 2 + +// SELECT TIMERS, INTERVALS +const cell_size = px(200) +const timer_size = px(170) +const cell_padding_x = px(38) +const cell_padding_y = px(57) +export function TIME_SPAN_BUTTON_STYLE_FUNCTION(timer, row, column, handler) { + return { + x: column * cell_size + cell_padding_x, + y: row * cell_size + cell_padding_y * 2, + w: timer_size, + h: timer_size, + text: timer.getDisplayName(), + text_size: px(30), + normal_src: timer.img, + press_src: timer.imgPressed, + click_func: (button) => { + handler(button) + } + } +} + +export {BUTTONS, HEADER_STYLE, PREDEFINED_SPAN_COLUMNS_NUMBER, DEVICE_FAMILY, STANDARD_CONTAINER_WITH_BOTTOM_BUTTON_STYLE} diff --git a/page/devices/trex/timer_progress/timer_progress.page.js b/page/devices/trex/timer_progress/timer_progress.page.js new file mode 100644 index 0000000..6102426 --- /dev/null +++ b/page/devices/trex/timer_progress/timer_progress.page.js @@ -0,0 +1,53 @@ +import TimerProgressPage from '../../../common/timer_progress/timer_progress.page.template' +import * as layout from './timer_progress.page.layout'; +import {log as Logger} from '@zos/utils'; +import {CONSTANTS} from '../../../constants/constants'; +import {COLORS} from '../../../common/common.layout'; + +const logger = Logger.getLogger('timerr'); + +TimerProgressPage({ + //data + + //style + headerStyle: layout.HEADER_STYLE(CONSTANTS.pages.TIMER_PROGRESS.name), + remainingTimeStyleFunction: layout.REMAINING_TIME_STYLE_FUNCTION, + cancelButtonStyleFunction: layout.CANCEL_BUTTON_FUNCTION, + pauseButtonStyleFunction: layout.PAUSE_BUTTON_FUNCTION, + resumeButtonStyleFunction: layout.RESUME_BUTTON_FUNCTION, + stopButtonStyleFunction: layout.STOP_BUTTON_FUNCTION, + canvasLayoutStyle: layout.TIMER_PROGRESS_CIRCLE.CANVAS_LAYOUT_STYLE, + timerDisplayTextAccentColors: [COLORS.TEXT.TITLE, COLORS.TEXT.WARNING], + + //handlers + createTimerProgressBarFunction: createTimerProgressCircle +}) + +function createTimerProgressCircle(canvas, progress) { + const tickWidth = layout.TIMER_PROGRESS_CIRCLE.TICKS.W + const tickLength = layout.TIMER_PROGRESS_CIRCLE.TICKS.H + const tickHalfWidth = tickWidth / 2; + canvas.setPaint({ + line_width: tickWidth + }) + const numTicks = layout.TIMER_PROGRESS_CIRCLE.TICKS.TOTAL + const radius = layout.TIMER_PROGRESS_CIRCLE.CIRCLE.RADIUS; + const centerX = radius + tickHalfWidth; + const centerY = radius + tickHalfWidth; + let pastTicks = Math.min(120, Math.max(0, numTicks / 100 * progress)) + for (let i = 0; i < numTicks; i++) { + const angle = layout.TIMER_PROGRESS_CIRCLE.CIRCLE.TICK_ANGLE_FUNCTION(i); + + let startX = centerX + (radius - tickHalfWidth) * Math.cos(angle); + let startY = centerY + (radius - tickHalfWidth) * Math.sin(angle); + let endX = centerX + (radius - tickLength) * Math.cos(angle); + let endY = centerY + (radius - tickLength) * Math.sin(angle); + canvas.drawLine({ + x1: startX, + y1: startY, + x2: endX, + y2: endY, + color: i < pastTicks ? COLORS.SYS.HIGHLIGHT_DISABLED : COLORS.SYS.HIGHLIGHT + }) + } +} \ No newline at end of file diff --git a/page/devices/trex/timer_progress/timer_progress.page.layout.js b/page/devices/trex/timer_progress/timer_progress.page.layout.js new file mode 100644 index 0000000..952bb41 --- /dev/null +++ b/page/devices/trex/timer_progress/timer_progress.page.layout.js @@ -0,0 +1,98 @@ +import {px} from '@zos/utils'; +import {align, text_style} from '@zos/ui' +import { + BUTTONS, + DEVICE_FAMILY, + DEVICE_HEIGHT, + DEVICE_WIDTH, + HEADER_STYLE as COMMON_HEADER_STYLE, + STANDARD_CONTAINER_STYLE +} from '../trex.layout' +import {COLORS} from '../../../common/common.layout'; +import {CONSTANTS} from '../../../constants/constants'; + +export function HEADER_STYLE(pageName) { + let style = COMMON_HEADER_STYLE(pageName) + style.y = px(style.y + 50) + return style +} + +const timer_display_size = 70 +const circle_button_size = 116 + +export function REMAINING_TIME_STYLE_FUNCTION(initialValue) { + return { + x: 0, + y: px(DEVICE_HEIGHT / 2 - timer_display_size / 2), + w: DEVICE_WIDTH, + h: timer_display_size, + color: COLORS.TEXT.TITLE, + text_size: px(60), + align_h: align.CENTER_H, + align_v: align.CENTER_V, + text_style: text_style.NONE, + text: initialValue + } +} + +export function CANCEL_BUTTON_FUNCTION(handler) { + return { + x: px(DEVICE_WIDTH / 2 - circle_button_size - 10), + y: px(DEVICE_HEIGHT / 2 + 40), + w: circle_button_size, + h: circle_button_size, + normal_src: CONSTANTS.images.CANCEL, + press_src: CONSTANTS.images.CANCEL_PRESSED, + click_func: (button) => { + handler(button) + } + } +} + +export function PAUSE_BUTTON_FUNCTION(handler) { + return { + x: px(DEVICE_WIDTH / 2 + 10), + y: px(DEVICE_HEIGHT / 2 + 40), + w: circle_button_size, + h: circle_button_size, + normal_src: CONSTANTS.images.PAUSE, + press_src: CONSTANTS.images.PAUSE_PRESSED, + click_func: (button) => { + handler(button) + } + } +} + +export function RESUME_BUTTON_FUNCTION(handler) { + let style = PAUSE_BUTTON_FUNCTION(handler) + style.normal_src = CONSTANTS.images.RESUME + style.press_src = CONSTANTS.images.PAUSE_PRESSED + return style +} + +export function STOP_BUTTON_FUNCTION(handler) { + return BUTTONS.STANDARD_BOTTOM_BUTTON_STYLE_WITH_HANDLER(CONSTANTS.images.STOP, CONSTANTS.images.STOP_PRESSED, handler) +} + +const tickWidth = 4 +const tickHeight = 25 +export const TIMER_PROGRESS_CIRCLE = { + CANVAS_LAYOUT_STYLE: { + x: 0, + y: 0, + w: px(DEVICE_WIDTH), + h: px(DEVICE_HEIGHT) + }, + TICKS: { + W: px(tickWidth), + H: px(tickHeight), + TOTAL: 120, + COLOR_ACTIVE: COLORS.SYS.HIGHLIGHT, + COLOR_IN_ACTIVE: COLORS.SYS.HIGHLIGHT_DISABLED + }, + CIRCLE: { + RADIUS: (DEVICE_WIDTH - tickWidth) / 2, + TICK_ANGLE_FUNCTION: (i) => (-i * 3 + 90) * Math.PI / 180 + } +} +export {BUTTONS, DEVICE_FAMILY, STANDARD_CONTAINER_STYLE, DEVICE_HEIGHT, DEVICE_WIDTH} diff --git a/page/devices/trex/trex.layout.js b/page/devices/trex/trex.layout.js new file mode 100644 index 0000000..97ba7d4 --- /dev/null +++ b/page/devices/trex/trex.layout.js @@ -0,0 +1,50 @@ +import {px} from '@zos/utils'; +import {BUTTONS as BUTTONS_COMMON, DEVICE_HEIGHT, DEVICE_WIDTH, PAGE_HEADERS as PAGE_HEADERS_COMMON} from '../../common/common.layout'; + +export const DEVICE_FAMILY = 'trex' +export const STANDARD_BUTTON_SIZE = px(88) + +export const STANDARD_CONTAINER_STYLE = { + x: 0, + y: 0, + w: DEVICE_WIDTH, + h: DEVICE_HEIGHT, + scroll_enable: 0 +} +export const STANDARD_CONTAINER_WITH_BOTTOM_BUTTON_STYLE = { + x: 0, + y: 0, + w: DEVICE_WIDTH, + h: DEVICE_HEIGHT - STANDARD_BUTTON_SIZE, + scroll_enable: 1 +} + +export function HEADER_STYLE(pageName) { + let style = PAGE_HEADERS_COMMON.HEADER_STYLE(pageName) + style.x = DEVICE_WIDTH / 5 + style.y = px(40) + style.w = DEVICE_WIDTH * 3 / 5 + style.h = px(40) + style.text_size = px(35) + return style +} + +export const BUTTONS = { + setSpatialParamsForBottomButton(style) { + style.y = DEVICE_HEIGHT - STANDARD_BUTTON_SIZE + style.w = DEVICE_WIDTH + style.h = STANDARD_BUTTON_SIZE + }, + STANDARD_BOTTOM_BUTTON_STYLE(src, pressedSrc) { + let style = BUTTONS_COMMON.STANDARD_BOTTOM_BUTTON_STYLE(src, pressedSrc) + this.setSpatialParamsForBottomButton(style); + return style + }, + STANDARD_BOTTOM_BUTTON_STYLE_WITH_HANDLER(src, pressedSrc, handler) { + let style = BUTTONS_COMMON.STANDARD_BOTTOM_BUTTON_STYLE_WITH_HANDLER(src, pressedSrc, handler) + this.setSpatialParamsForBottomButton(style); + return style + } +} + +export {DEVICE_HEIGHT, DEVICE_WIDTH} \ No newline at end of file diff --git a/page/i18n/ru-RU.po b/page/i18n/ru-RU.po index f41cb2f..1717299 100644 --- a/page/i18n/ru-RU.po +++ b/page/i18n/ru-RU.po @@ -18,7 +18,6 @@ msgstr "час" msgid "timer_progress" msgstr "Обратный отсчет" -msgstr "час" msgid "create_timer" msgstr "Новый таймер" diff --git a/page/select_predefined/select_interval.js b/page/select_predefined/select_interval.js deleted file mode 100644 index e71fee0..0000000 --- a/page/select_predefined/select_interval.js +++ /dev/null @@ -1,31 +0,0 @@ -import {prop} from '@zos/ui' -import {replace} from '@zos/router' - -import {CONSTANTS, getText, Timer, Units} from '../common' -import SelectPredefinedTimerPage from './select_predefined_template' - -const standardTimers = [ - new Timer(0, Units.SEC, 0, {displayName: '-'}), - new Timer(5, Units.SEC, 5), - new Timer(10, Units.SEC, 10), - new Timer(30, Units.SEC, 30), - new Timer(1, Units.MIN, 1 * CONSTANTS.seconds.min), - new Timer(2, Units.MIN, 2 * CONSTANTS.seconds.min), - new Timer(3, Units.MIN, 3 * CONSTANTS.seconds.min), - new Timer(5, Units.MIN, 5 * CONSTANTS.seconds.min), - new Timer(10, Units.MIN, 10 * CONSTANTS.seconds.min), - new Timer(15, Units.MIN, 15 * CONSTANTS.seconds.min), - new Timer(20, Units.MIN, 20 * CONSTANTS.seconds.min) -] - -SelectPredefinedTimerPage({ - header: getText(CONSTANTS.i18n.SELECT_INTERVAL_HEADER), - timersList: standardTimers, - timerHandler: function (button) { - getApp()._options.globalData.timerModel.interval = button.getProperty(prop.DATASET).timer - replace({url: CONSTANTS.pages.TIMER_PROGRESS}) - }, - addButtonHandler: function () { - replace({url: CONSTANTS.pages.CREATE_INTERVAL}) - } -}) \ No newline at end of file diff --git a/page/select_predefined/select_predefined_template.js b/page/select_predefined/select_predefined_template.js deleted file mode 100644 index bd1bf73..0000000 --- a/page/select_predefined/select_predefined_template.js +++ /dev/null @@ -1,67 +0,0 @@ -import {Vibrator, VIBRATOR_SCENE_SHORT_LIGHT} from '@zos/sensor' -import {createWidget, event, prop, widget} from '@zos/ui' - -import {CONSTANTS, getText} from '../common' -import {COMMON, SELECT_PREDEFINED} from '../style/style' - -function SelectPredefinedTimerPage(args) { - const { - header = getText(CONSTANTS.i18n.APP_NAME), - headerStyle = COMMON.HEADER_STYLE(header), - containerStyle = SELECT_PREDEFINED.TIMERS_CONTAINER_STYLE, - addButtonStyle = COMMON.STANDARD_BOTTOM_BUTTON_STYLE(CONSTANTS.img.PLUS, CONSTANTS.img.PLUS_PRESSED), - timerHandler, - timersList, - addButtonHandler - } = args - - Page({ - onInit() { - }, - - build() { - this.vibro = new Vibrator() - const viewContainer = createWidget(widget.VIEW_CONTAINER, containerStyle) - const header = viewContainer.createWidget(widget.TEXT, headerStyle) - this.renderDefaultTimers(viewContainer, timersList) - this.createAddButton() - }, - - onDestroy() { - this.vibro && this.vibro.stop() - }, - - doVibro() { - this.vibro.stop() - this.vibro.setMode(VIBRATOR_SCENE_SHORT_LIGHT) - this.vibro.start() - }, - wrapWithVibro(fun) { - return arg => { - this.doVibro() - fun(arg) - } - }, - renderDefaultTimers(container, timers) { - for (let i = 0, row = 0, column = 0; i < timers.length; i++) { - if (column === 2) { - column = 0 - row++ - } - let timer = timers[i] - const timerButton = container.createWidget(widget.BUTTON, - SELECT_PREDEFINED.TIMER_BUTTON_STYLE(timer, row, column++, this.wrapWithVibro(timerHandler))) - timerButton.setProperty(prop.DATASET, {timer: timer}) - } - }, - createAddButton() { - const addButton = createWidget(widget.BUTTON, addButtonStyle) - addButton.addEventListener(event.CLICK_DOWN, (e) => { - this.doVibro() - addButtonHandler() - }) - } - }) -} - -export default SelectPredefinedTimerPage diff --git a/page/select_predefined/select_timer.js b/page/select_predefined/select_timer.js deleted file mode 100644 index 3d663cd..0000000 --- a/page/select_predefined/select_timer.js +++ /dev/null @@ -1,31 +0,0 @@ -import {prop} from '@zos/ui' -import {push} from '@zos/router' - -import {CONSTANTS, getText, Timer, Units} from '../common' -import SelectPredefinedTimerPage from './select_predefined_template' - -const standardTimers = [ - new Timer(30, Units.SEC, 30), - new Timer(1, Units.MIN, 1 * CONSTANTS.seconds.min), - new Timer(2, Units.MIN, 2 * CONSTANTS.seconds.min), - new Timer(3, Units.MIN, 3 * CONSTANTS.seconds.min), - new Timer(5, Units.MIN, 5 * CONSTANTS.seconds.min), - new Timer(10, Units.MIN, 10 * CONSTANTS.seconds.min), - new Timer(15, Units.MIN, 15 * CONSTANTS.seconds.min), - new Timer(20, Units.MIN, 20 * CONSTANTS.seconds.min), - new Timer(30, Units.MIN, 30 * CONSTANTS.seconds.min), - new Timer(1, Units.HOUR, 1 * CONSTANTS.seconds.hour) -] - -SelectPredefinedTimerPage({ - header: getText(CONSTANTS.i18n.SELECT_TIMER_HEADER), - timersList: standardTimers, - timerHandler: function (button) { - getApp()._options.globalData.timerModel.timer = button.getProperty(prop.DATASET).timer - push({url: CONSTANTS.pages.SELECT_INTERVAL}) - }, - addButtonHandler: function () { - push({url: CONSTANTS.pages.CREATE_TIMER}) - } -}) - diff --git a/page/style/style.js b/page/style/style.js deleted file mode 100644 index 6605d8e..0000000 --- a/page/style/style.js +++ /dev/null @@ -1,246 +0,0 @@ -import {getDeviceInfo} from '@zos/device' -import {align, text_style} from '@zos/ui' -import {CONSTANTS, zeroPad} from '../common' - -// COMMON -const standard_button_size = 88 -export const {width: DEVICE_WIDTH, height: DEVICE_HEIGHT} = getDeviceInfo() -export const COLORS = { - SYS: { - BUTTON: 0x515151, - BUTTON_PRESSED: 0x313131, - BUTTON_HIGHLIGHT: 0x0986D4, - BUTTON_HIGHLIGHT_PRESSED: 0x234F7C, - HIGHLIGHT: 0x0986D4, - HIGHLIGHT_DISABLED: 0x10283F, - PAGE_BACKGROUND: 0x000000 - }, - TEXT: { - BUTTON: 0xFFFFFF, - LINK: 0x059AF7, - TITLE: 0xFFFFFF, - WARNING: 0xD14221, - SUBTITLE: 0xB2B2B2 - }, - SECONDARY: { - _01: 0x03B5AA, - _02: 0x7B9E89, - _03: 0x399E5A, - _18: 0xAA2F2F, - _20: 0x9B3642 - } -} -export const COMMON = { - HEADER_STYLE(header) { - return { - x: DEVICE_WIDTH / 5, - y: 40, - w: DEVICE_WIDTH * 3 / 5, - h: 40, - color: COLORS.TEXT.TITLE, - text_size: 35, - align_h: align.CENTER_H, - align_v: align.CENTER_V, - text_style: text_style.NONE, - text: header - } - }, - HEADER_STYLE_Y(header, y) { - return { - x: DEVICE_WIDTH / 5, - y: y, - w: DEVICE_WIDTH * 3 / 5, - h: 40, - color: COLORS.TEXT.TITLE, - text_size: 35, - align_h: align.CENTER_H, - align_v: align.CENTER_V, - text_style: text_style.NONE, - text: header - } - }, - STANDARD_BOTTOM_BUTTON_STYLE(src, pressedSrc) { - return { - x: 0, - y: DEVICE_HEIGHT - standard_button_size, - w: DEVICE_WIDTH, - h: standard_button_size, - normal_src: src, - press_src: pressedSrc - } - }, - STANDARD_BOTTOM_BUTTON_STYLE_ACTION(src, pressedSrc, handler) { - return { - x: 0, - y: DEVICE_HEIGHT - standard_button_size, - w: DEVICE_WIDTH, - h: standard_button_size, - normal_src: src, - press_src: pressedSrc, - click_func: (button) => { - handler(button) - } - } - } -} - -// SELECT TIMERS, INTERVALS -const cell_size = 200 -const timer_size = 170 -const cell_padding_x = 38 -const cell_padding_y = 57 -export const SELECT_PREDEFINED = { - TIMER_BUTTON_STYLE(timer, row, column, handler) { - return { - x: column * cell_size + cell_padding_x, - y: row * cell_size + cell_padding_y * 2, - w: timer_size, - h: timer_size, - text: timer.getDisplayName(), - text_size: 30, - normal_src: timer.img, - press_src: timer.img_pressed, - click_func: (button) => { - handler(button) - } - } - }, - TIMERS_CONTAINER_STYLE: { - x: 0, - y: 0, - w: DEVICE_WIDTH, - h: DEVICE_HEIGHT - standard_button_size - } -} - -// TIMER PROGRESS -const timer_display_size = 70 -const circle_button_size = 116 -export const TIMER_PROGRESS = { - TIMER_DISPLAY_STYLE(initialValue) { - return { - x: 0, - y: DEVICE_HEIGHT / 2 - timer_display_size / 2, - w: DEVICE_WIDTH, - h: timer_display_size, - color: COLORS.TEXT.TITLE, - text_size: 60, - align_h: align.CENTER_H, - align_v: align.CENTER_V, - text_style: text_style.NONE, - text: initialValue - } - }, - TIMER_PROGRESS_CIRCLE: { - radius: 210, - center_x: 217, - center_y: 216, - bars_step: 4, - bar_width: 4, - bar_height: 25, - bar_color: COLORS.SYS.HIGHLIGHT, - bar_color_processed: COLORS.SYS.HIGHLIGHT_DISABLED - }, - CANCEL_BUTTON(handler) { - return { - x: DEVICE_WIDTH / 2 - circle_button_size - 10, - y: DEVICE_HEIGHT / 2 + 40, - w: circle_button_size, - h: circle_button_size, - normal_src: CONSTANTS.img.CANCEL, - press_src: CONSTANTS.img.CANCEL_PRESSED, - click_func: (button) => { - handler(button) - } - } - }, - PAUSE_RESUME_BUTTON(src, pressSrc, handler) { - return { - x: DEVICE_WIDTH / 2 + 10, - y: DEVICE_HEIGHT / 2 + 40, - w: circle_button_size, - h: circle_button_size, - normal_src: src, - press_src: pressSrc, - click_func: (button) => { - handler(button) - } - } - } -} - -// CREATE NEW TIMER -const create_timer_text_size = 95 -const reel_padding_y = 80 -const reel_padding_x = 60 -const reel_w = 111 -const reel_h = 265 -const gradient_h = 64 -export const CREATE_TIMER = { - REEL_STILE(dataList, position, handler) { - return { - x: reel_padding_x + position * reel_w, - y: reel_padding_y, - w: reel_w, - h: reel_h, - data_array: dataList, - data_size: dataList.length, - item_height: 90, - item_bg_color: COLORS.SYS.PAGE_BACKGROUND, - - item_text_align_v: align.CENTER_V, - item_text_color: COLORS.SYS.HIGHLIGHT, - item_text_size: create_timer_text_size, - item_click_func: (list, index) => { - handler(dataList, index) - }, - item_focus_change_func: (list, index, isFocus) => { - if (isFocus) { - handler(dataList, index) - } - } - } - }, - GRADIENT_UP(position) { - return { - x: reel_padding_x + position * reel_w, - y: reel_padding_y, - w: reel_w, - src: CONSTANTS.img.GRADIENT_BG_UP - } - }, - GRADIENT_BOTTOM(position) { - return { - x: reel_padding_x + position * reel_w, - y: reel_padding_y + reel_h - gradient_h, - w: reel_w, - src: CONSTANTS.img.GRADIENT_BG_BOTTOM - } - }, - DISPLAY_TEXT(value, position) { - return { - x: reel_padding_x + position * reel_w, - y: reel_padding_y, - w: reel_w, - h: reel_h, - color: COLORS.TEXT.TITLE, - text_size: create_timer_text_size, - align_h: align.CENTER_H, - align_v: align.CENTER_V, - text: zeroPad(value) - } - }, - DISPLAY_TEXT_SUB(text, position) { - return { - x: reel_padding_x + position * reel_w, - y: reel_padding_y + create_timer_text_size * 1.9, - w: reel_w, - h: 50, - color: COLORS.TEXT.SUBTITLE, - text_size: 30, - align_h: align.CENTER_H, - align_v: align.CENTER_V, - text: text - } - } -} \ No newline at end of file diff --git a/page/timer_progress/timer_progress.js b/page/timer_progress/timer_progress.js deleted file mode 100644 index 91716fa..0000000 --- a/page/timer_progress/timer_progress.js +++ /dev/null @@ -1,219 +0,0 @@ -import {back} from '@zos/router' -import {createWidget, deleteWidget, prop, widget} from '@zos/ui' -import {Time, Vibrator, VIBRATOR_SCENE_DURATION_LONG, VIBRATOR_SCENE_SHORT_LIGHT, VIBRATOR_SCENE_TIMER} from '@zos/sensor' -import {pausePalmScreenOff, resetPalmScreenOff} from '@zos/display' - -import {CONSTANTS, getText, zeroPad} from '../common' -import {COLORS, COMMON, TIMER_PROGRESS} from '../style/style' - -const INTERVAL_MS = 200 - -Page({ - onInit() { - }, - build() { - this.vibro = new Vibrator() - this.time = new Time() - this.processes = { - intervals: [], - timeouts: [] - } - pausePalmScreenOff({ - duration: 0 - }) - this.buildUI() - }, - - onDestroy() { - this.stopProcesses() - this.vibro && this.vibro.stop() - resetPalmScreenOff() - }, - - buildUI() { - const header = createWidget(widget.TEXT, COMMON.HEADER_STYLE_Y(getText(CONSTANTS.i18n.TIMER_PROGRESS_HEADER), 70)) - this.timer = getApp()._options.globalData.timerModel.timer - this.interval = getApp()._options.globalData.timerModel.interval - this.timerDisplay = createWidget(widget.TEXT, TIMER_PROGRESS.TIMER_DISPLAY_STYLE(getTimerDisplayValue(this.timer.valueSeconds))) - this.cancelButton = this.createCancelButton() - this.pauseButton = this.createPauseButton() - this.bars = createTimerProgressCircle() - - this.start = this.time.getTime() - this.end = this.start + CONSTANTS.seconds.mili + this.timer.valueSeconds * CONSTANTS.seconds.mili - this.startTimerProcess() - }, - - stopProcesses() { - this.processes.intervals.forEach(i => clearInterval(i)) - this.processes.timeouts.forEach(t => clearTimeout(t)) - }, - - startTimerProcess() { - const process = setInterval(() => { - const remainingSeconds = this.getRemainingSeconds() - this.setDisplayValue(remainingSeconds) - this.colorBars(remainingSeconds) - if (remainingSeconds === 0) { - this.stopProcesses() - this.startBlinkInterval() - this.createStopButton() - this.deleteAdditionalButtons() - this.doVibro(VIBRATOR_SCENE_TIMER) - } else { - this.notifyOnInterval(remainingSeconds) - } - }, INTERVAL_MS) - this.processes.intervals.push(process) - }, - - startBlinkInterval() { - let switcher = true - let interval = setInterval(() => { - this.switchTimerDisplayColor(switcher) - switcher = !switcher - }, 200); - this.processes.intervals.push(interval) - return interval - }, - - notifyOnInterval() { - if (this.interval.valueSeconds > 0) { - if (this.lastReminder) { - const now = this.time.getTime() - if (now - this.lastReminder >= this.interval.valueSeconds * CONSTANTS.seconds.mili) { - this.doVibro(VIBRATOR_SCENE_DURATION_LONG) - this.switchTimerDisplayColor(true) - this.lastReminder = now - } else { - this.switchTimerDisplayColor(false) - } - } else { - this.lastReminder = this.start - } - } - }, - - switchTimerDisplayColor(isWarning) { - this.timerDisplay.setProperty(prop.MORE, { - color: isWarning ? COLORS.TEXT.WARNING : COLORS.TEXT.TITLE - }) - }, - - setDisplayValue(seconds) { - this.timerDisplay.setProperty(prop.MORE, { - text: getTimerDisplayValue(seconds) - }) - }, - - colorBars(remainingSeconds) { - const progress = Math.min(100, 100 - Math.floor(100 * remainingSeconds / this.timer.valueSeconds)) - for (let i = 0; i < progress; i++) { - const bar = this.bars[i].bar - const props = this.bars[i].props - if (!props.processed) { - bar.setProperty(prop.MORE, { - x: props.x, - y: props.y, - w: props.w, - h: props.h, - color: TIMER_PROGRESS.TIMER_PROGRESS_CIRCLE.bar_color_processed - }) - props.processed = true - } - } - }, - - doVibro(scene = VIBRATOR_SCENE_SHORT_LIGHT) { - this.vibro.stop() - this.vibro.setMode(scene) - this.vibro.start() - }, - - createStopButton() { - return createWidget(widget.BUTTON, - COMMON.STANDARD_BOTTOM_BUTTON_STYLE_ACTION(CONSTANTS.img.STOP, CONSTANTS.img.STOP_PRESSED, (arg) => { - back() - })) - }, - - createCancelButton() { - return createWidget(widget.BUTTON, TIMER_PROGRESS.CANCEL_BUTTON((arg) => { - this.doVibro(VIBRATOR_SCENE_SHORT_LIGHT) - back() - })) - }, - - createPauseButton() { - return createWidget(widget.BUTTON, - TIMER_PROGRESS.PAUSE_RESUME_BUTTON(CONSTANTS.img.PAUSE, CONSTANTS.img.PAUSE_PRESSED, (button) => { - this.doVibro(VIBRATOR_SCENE_SHORT_LIGHT) - this.stopProcesses() - this.pause = this.time.getTime() - this.resumeButton = this.createResumeButton() - deleteWidget(button) - })) - }, - - createResumeButton() { - return createWidget(widget.BUTTON, - TIMER_PROGRESS.PAUSE_RESUME_BUTTON(CONSTANTS.img.RESUME, CONSTANTS.img.RESUME_PRESSED, (button) => { - this.doVibro(VIBRATOR_SCENE_SHORT_LIGHT) - const pauseTime = this.time.getTime() - this.pause - this.end += pauseTime - this.lastReminder += pauseTime - this.startTimerProcess() - this.pauseButton = this.createPauseButton() - deleteWidget(button) - })) - }, - - deleteAdditionalButtons() { - deleteWidget(this.cancelButton) - deleteWidget(this.pauseButton) - deleteWidget(this.resumeButton) - }, - - getRemainingSeconds() { - return Math.floor(Math.max(0, this.end - this.time.getTime()) / CONSTANTS.seconds.mili) - } -}) - -function createTimerProgressCircle() { - let bars = {} - let angle = 360 - - for (let i = 0; i < 100; i += 1) { - if (angle === 0) { - angle = 180 - } - const circleProps = TIMER_PROGRESS.TIMER_PROGRESS_CIRCLE - const x = circleProps.center_x + circleProps.radius * Math.cos((-90 - i * 3.6) * Math.PI / 180) - const y = circleProps.center_y + circleProps.radius * Math.sin((-90 - i * 3.6) * Math.PI / 180) - const bar = createWidget(widget.FILL_RECT, { - x: x, - y: y, - w: circleProps.bar_width, - h: circleProps.bar_height, - color: circleProps.bar_color, - angle: angle - }) - bars[i] = {bar: bar, props: {x: x, y: y, w: circleProps.bar_width, h: circleProps.bar_height, processed: false}} - angle -= 3.6 - } - return bars -} - -function getTimerDisplayValue(valueSeconds) { - const timerHours = Math.floor(valueSeconds / CONSTANTS.seconds.hour) - const timerMinutes = Math.floor(valueSeconds % CONSTANTS.seconds.hour / CONSTANTS.seconds.min) - const timerSeconds = valueSeconds % CONSTANTS.seconds.min - if (timerHours > 0) { - return `${_00(timerHours)}:${_00(timerMinutes)}:${_00(timerSeconds)}` - } - return `${_00(timerMinutes)}:${_00(timerSeconds)}` -} - -function _00(value) { - return zeroPad(value, 2) -} \ No newline at end of file diff --git a/readme/02_new_timer.png b/readme/02_new_timer.png index d9ed2469042f24a3d482ecbc07998c742aa4593c..0ab362d8c88b6cca528a10e83d9b83bd0613017b 100644 GIT binary patch literal 21256 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 NfR&jYrs=d7@xNsob0h!& literal 18109 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 Drb_$i diff --git a/readme/04_new_interval.png b/readme/04_new_interval.png index 90e331ff4fbdab975a4d283c1e2098779629a7a2..ad8aefd22fe5940933bd0cdfeb496919a9445b4e 100644 GIT binary patch literal 23071 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 diff --git a/readme/05_countdown.png b/readme/05_countdown.png index cacad61d67ce569db47780812fd34a6a592e66a4..35417d83c193a4e5cc80f6eca21514cd3a731bce 100644 GIT binary patch literal 66513 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�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[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 Q(EtDd07*qoM6N<$g5F-|4gdfE literal 52648 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

H5!d&XA!c)Er1fn_)^-Hl+eFY- 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 diff --git a/utils/index.js b/utils/index.js new file mode 100644 index 0000000..7edae72 --- /dev/null +++ b/utils/index.js @@ -0,0 +1,46 @@ +import {Vibrator, VIBRATOR_SCENE_DURATION_LONG, VIBRATOR_SCENE_SHORT_LIGHT, VIBRATOR_SCENE_TIMER} from '@zos/sensor'; +import {log as Logger} from '@zos/utils'; + +const logger = Logger.getLogger('timerr'); +const VIBRO = new Vibrator() + +export function assets(type) { + return (path) => type + '/' + path; +} + +export function doShortVibro() { + logger.debug('* * * * short vibro * * * *') + VIBRO.stop() + VIBRO.setMode(VIBRATOR_SCENE_DURATION_LONG) + VIBRO.start(VIBRATOR_SCENE_DURATION_LONG) +} + +export function doLongVibro() { + logger.debug('* * * * long vibro * * * *') + VIBRO.stop() + VIBRO.setMode(VIBRATOR_SCENE_SHORT_LIGHT) + VIBRO.start(VIBRATOR_SCENE_SHORT_LIGHT) +} + +export function startVibration() { + logger.debug('* * * * endless vibro * * * *') + VIBRO.stop() + VIBRO.setMode(VIBRATOR_SCENE_TIMER) + VIBRO.start(VIBRATOR_SCENE_TIMER) +} + +export function stopVibration() { + logger.debug('- - - - stop vibro - - - -') + VIBRO.stop() +} + +export function vibroCallback(callback) { + return arg => { + doShortVibro() + callback(arg) + } +} + +export function formatNumberForPicker(number, places = 2) { + return String(number).padStart(places, '0') +} \ No newline at end of file