diff --git a/interface/src/project/SettingsScheduler.tsx b/interface/src/project/SettingsScheduler.tsx index fd12e321c..f9508da90 100644 --- a/interface/src/project/SettingsScheduler.tsx +++ b/interface/src/project/SettingsScheduler.tsx @@ -97,7 +97,7 @@ const SettingsScheduler: FC = () => { const schedule_theme = useTheme({ Table: ` - --data-table-library_grid-template-columns: 32px 324px 72px repeat(1, minmax(100px, 1fr)) 100px 100px; + --data-table-library_grid-template-columns: 140px 48px 324px 72px 240px repeat(1, minmax(100px, 1fr)); `, BaseRow: ` font-size: 14px; @@ -106,21 +106,22 @@ const SettingsScheduler: FC = () => { } `, BaseCell: ` - &:nth-of-type(1) { - text-align: center; - }, &:nth-of-type(2) { text-align: center; }, &:nth-of-type(3) { text-align: center; }, + &:nth-of-type(4) { + text-align: center; + }, `, HeaderRow: ` text-transform: uppercase; background-color: black; color: #90CAF9; .th { + padding: 8px; border-bottom: 1px solid #565656; font-weight: 500; height: 36px; @@ -131,6 +132,7 @@ const SettingsScheduler: FC = () => { position: relative; cursor: pointer; .td { + padding: 8px; border-top: 1px solid #565656; border-bottom: 1px solid #565656; } @@ -167,6 +169,7 @@ const SettingsScheduler: FC = () => { setSchedule( data.map((si) => ({ ...si, + o_id: si.id, o_active: si.active, o_deleted: si.deleted, o_flags: si.flags, @@ -217,6 +220,7 @@ const SettingsScheduler: FC = () => { function hasScheduleChanged(si: ScheduleItem) { return ( + si.id !== si.o_id || (si?.description || '') !== (si?.o_description || '') || si.active !== si.o_active || si.deleted !== si.o_deleted || @@ -302,25 +306,14 @@ const SettingsScheduler: FC = () => { if (si.description === undefined) { si.description = ''; } - setScheduleItem(si); setCreating(false); + setScheduleItem(si); }; - function makeid() { - let result = ''; - const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - const charactersLength = characters.length; - let counter = 0; - while (counter < 4) { - result += characters.charAt(Math.floor(Math.random() * charactersLength)); - counter += 1; - } - return result; - } - const addScheduleItem = () => { + setCreating(true); setScheduleItem({ - id: makeid(), // random ID of 4 strings + id: '', active: false, deleted: false, flags: 0, @@ -329,7 +322,6 @@ const SettingsScheduler: FC = () => { value: '', description: '' }); - setCreating(true); }; const updateScheduleItem = () => { @@ -337,7 +329,6 @@ const SettingsScheduler: FC = () => { const new_schedule = [...schedule.filter((si) => si.id !== scheduleItem.id), scheduleItem].sort((a, b) => a.time.localeCompare(b.time) ); - setSchedule(new_schedule); setScheduleItem(undefined); } @@ -354,19 +345,20 @@ const SettingsScheduler: FC = () => { <>
+ {LL.NAME()} {LL.SCHEDULE()} {LL.TIME()} {LL.COMMAND()} - {LL.VALUE(0)} - {LL.DESCRIPTION()} + {LL.VALUE(0)}
{tableList.map((si: ScheduleItem) => ( editScheduleItem(si)}> + {si.id} { {si.time} {si.cmd} {si.value} - {si.description} ))} @@ -423,7 +414,7 @@ const SettingsScheduler: FC = () => { if (scheduleItem) { try { setFieldErrors(undefined); - await validate(schedulerItemValidation(scheduleItem, creating), scheduleItem); + await validate(schedulerItemValidation(schedule, creating), scheduleItem); updateScheduleItem(); } catch (errors: any) { setFieldErrors(errors); @@ -436,35 +427,44 @@ const SettingsScheduler: FC = () => { return ( setScheduleItem(undefined)}> - {(creating ? LL.ADD(0) : LL.EDIT()) + - ' ' + - ((scheduleItem.flags & ScheduleFlag.SCHEDULE_TIMER) === ScheduleFlag.SCHEDULE_TIMER - ? LL.TIMER() - : LL.WEEKLY()) + - ' ' + - LL.SCHEDULE()} + {creating ? LL.ADD(0) + ' ' + LL.NEW() + ' ' + LL.SCHEDULE() : LL.EDIT() + " '" + scheduleItem.id + "'"} - {creating && ( - { - if ((event.target as HTMLInputElement).value === 't') { - scheduleItem.flags = ScheduleFlag.SCHEDULE_TIMER; - scheduleItem.time = '01:00'; - } else { - scheduleItem.flags = 0; - } - updateValue(setScheduleItem); - setFlags(['']); // refresh screen - }} - > - } label={LL.WEEKLY()} /> - } label={LL.TIMER()} /> - + {creating ? ( + <> + + { + if ((event.target as HTMLInputElement).value === 't') { + scheduleItem.flags = ScheduleFlag.SCHEDULE_TIMER; + scheduleItem.time = '01:00'; + } else { + scheduleItem.flags = 0; + } + updateValue(setScheduleItem); + setFlags(['']); // refresh screen + }} + > + } label={LL.WEEKLY()} /> + } label={LL.TIMER()} /> + + + ) : ( + + {LL.TYPE()}: {scheduleItem.flags & ScheduleFlag.SCHEDULE_TIMER ? LL.TIMER() : LL.WEEKLY()} + )} - { onChange={updateValue(setScheduleItem)} /> )} - }) }); -export const schedulerItemValidation = (si: ScheduleItem, creating: boolean) => +export const schedulerItemValidation = (schedule: ScheduleItem[], creating: boolean) => new Schema({ - cmd: [{ required: true, message: 'Command is required' }] + id: [ + { required: true, message: 'Name is required' }, + { + type: 'string', + pattern: /^[a-zA-Z0-9_\\.]{1,24}$/, + message: "Must be 1-24 characters: alpha numeric, '_' or '.'" + }, + ...(creating ? [uniqueIDValidator(schedule)] : []) + ], + cmd: [ + { required: true, message: 'Command is required' }, + { type: 'string', min: 1, max: 32, message: 'Command must be 1-32 characters' } + ] }); + +export const uniqueIDValidator = (schedule: ScheduleItem[]) => ({ + validator(rule: InternalRuleItem, id: string, callback: (error?: string) => void) { + if (id && schedule.find((si) => si.id === id)) { + callback('Name already in use'); + } else { + callback(); + } + } +}); diff --git a/interface/yarn.lock b/interface/yarn.lock index de53a82cf..7bdd83ebd 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -5,7 +5,7 @@ __metadata: version: 6 cacheKey: 8 -"@ampproject/remapping@npm:^2.1.0": +"@ampproject/remapping@npm:^2.2.0": version: 2.2.0 resolution: "@ampproject/remapping@npm:2.2.0" dependencies: @@ -25,43 +25,44 @@ __metadata: linkType: hard "@babel/compat-data@npm:^7.20.5": - version: 7.20.14 - resolution: "@babel/compat-data@npm:7.20.14" - checksum: 6c9efe36232094e4ad0b70d165587f21ca718e5d011f7a52a77a18502a7524e90e2855aa5a2e086395bcfd21bd2c7c99128dcd8d9fdffe94316b72acf5c66f2c + version: 7.21.0 + resolution: "@babel/compat-data@npm:7.21.0" + checksum: dbf632c532f9c75ba0be7d1dc9f6cd3582501af52f10a6b90415d634ec5878735bd46064c91673b10317af94d4cc99c4da5bd9d955978cdccb7905fc33291e4d languageName: node linkType: hard "@babel/core@npm:^7.19.6": - version: 7.20.12 - resolution: "@babel/core@npm:7.20.12" + version: 7.21.0 + resolution: "@babel/core@npm:7.21.0" dependencies: - "@ampproject/remapping": ^2.1.0 + "@ampproject/remapping": ^2.2.0 "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.20.7 + "@babel/generator": ^7.21.0 "@babel/helper-compilation-targets": ^7.20.7 - "@babel/helper-module-transforms": ^7.20.11 - "@babel/helpers": ^7.20.7 - "@babel/parser": ^7.20.7 + "@babel/helper-module-transforms": ^7.21.0 + "@babel/helpers": ^7.21.0 + "@babel/parser": ^7.21.0 "@babel/template": ^7.20.7 - "@babel/traverse": ^7.20.12 - "@babel/types": ^7.20.7 + "@babel/traverse": ^7.21.0 + "@babel/types": ^7.21.0 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.2 semver: ^6.3.0 - checksum: 62e6c3e2149a70b5c9729ef5f0d3e2e97e9dcde89fc039c8d8e3463d5d7ba9b29ee84d10faf79b61532ac1645aa62f2bd42338320617e6e3a8a4d8e2a27076e7 + checksum: 357f4dd3638861ceebf6d95ff49ad8b902065ee8b7b352621deed5666c2a6d702a48ca7254dba23ecae2a0afb67d20f90db7dd645c3b75e35e72ad9776c671aa languageName: node linkType: hard -"@babel/generator@npm:^7.20.7": - version: 7.20.14 - resolution: "@babel/generator@npm:7.20.14" +"@babel/generator@npm:^7.21.0, @babel/generator@npm:^7.21.1": + version: 7.21.1 + resolution: "@babel/generator@npm:7.21.1" dependencies: - "@babel/types": ^7.20.7 + "@babel/types": ^7.21.0 "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 jsesc: ^2.5.1 - checksum: 5f6aa2d86af26e76d276923a5c34191124a119b16ee9ccc34aef654a7dec84fbd7d2daed2e6458a6a06bf87f3661deb77c9fea59b8f67faff5c90793c96d76d6 + checksum: 69085a211ff91a7a608ee3f86e6fcb9cf5e724b756d792a713b0c328a671cd3e423e1ef1b12533f366baba0616caffe0a7ba9d328727eab484de5961badbef00 languageName: node linkType: hard @@ -87,13 +88,13 @@ __metadata: languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-function-name@npm:7.19.0" +"@babel/helper-function-name@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/helper-function-name@npm:7.21.0" dependencies: - "@babel/template": ^7.18.10 - "@babel/types": ^7.19.0 - checksum: eac1f5db428ba546270c2b8d750c24eb528b8fcfe50c81de2e0bdebf0e20f24bec688d4331533b782e4a907fad435244621ca2193cfcf80a86731299840e0f6e + "@babel/template": ^7.20.7 + "@babel/types": ^7.21.0 + checksum: d63e63c3e0e3e8b3138fa47b0cd321148a300ef12b8ee951196994dcd2a492cc708aeda94c2c53759a5c9177fffaac0fd8778791286746f72a000976968daf4e languageName: node linkType: hard @@ -115,9 +116,9 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.20.11": - version: 7.20.11 - resolution: "@babel/helper-module-transforms@npm:7.20.11" +"@babel/helper-module-transforms@npm:^7.21.0": + version: 7.21.2 + resolution: "@babel/helper-module-transforms@npm:7.21.2" dependencies: "@babel/helper-environment-visitor": ^7.18.9 "@babel/helper-module-imports": ^7.18.6 @@ -125,9 +126,9 @@ __metadata: "@babel/helper-split-export-declaration": ^7.18.6 "@babel/helper-validator-identifier": ^7.19.1 "@babel/template": ^7.20.7 - "@babel/traverse": ^7.20.10 - "@babel/types": ^7.20.7 - checksum: 29319ebafa693d48756c6ba0d871677bb0037e0da084fbe221a17c38d57093fc8aa38543c07d76e788266a937976e37ab4901971ca7f237c5ab45f524b9ecca0 + "@babel/traverse": ^7.21.2 + "@babel/types": ^7.21.2 + checksum: 8a1c129a4f90bdf97d8b6e7861732c9580f48f877aaaafbc376ce2482febebcb8daaa1de8bc91676d12886487603f8c62a44f9e90ee76d6cac7f9225b26a49e1 languageName: node linkType: hard @@ -164,20 +165,20 @@ __metadata: linkType: hard "@babel/helper-validator-option@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-validator-option@npm:7.18.6" - checksum: f9cc6eb7cc5d759c5abf006402180f8d5e4251e9198197428a97e05d65eb2f8ae5a0ce73b1dfd2d35af41d0eb780627a64edf98a4e71f064eeeacef8de58f2cf + version: 7.21.0 + resolution: "@babel/helper-validator-option@npm:7.21.0" + checksum: 8ece4c78ffa5461fd8ab6b6e57cc51afad59df08192ed5d84b475af4a7193fc1cb794b59e3e7be64f3cdc4df7ac78bf3dbb20c129d7757ae078e6279ff8c2f07 languageName: node linkType: hard -"@babel/helpers@npm:^7.20.7": - version: 7.20.13 - resolution: "@babel/helpers@npm:7.20.13" +"@babel/helpers@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/helpers@npm:7.21.0" dependencies: "@babel/template": ^7.20.7 - "@babel/traverse": ^7.20.13 - "@babel/types": ^7.20.7 - checksum: d62076fa834f342798f8c3fd7aec0870cc1725d273d99e540cbaa8d6c3ed10258228dd14601c8e66bfeabbb9424c3b31090ecc467fe855f7bd72c4734df7fb09 + "@babel/traverse": ^7.21.0 + "@babel/types": ^7.21.0 + checksum: 9370dad2bb665c551869a08ac87c8bdafad53dbcdce1f5c5d498f51811456a3c005d9857562715151a0f00b2e912ac8d89f56574f837b5689f5f5072221cdf54 languageName: node linkType: hard @@ -192,25 +193,16 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.20.13, @babel/parser@npm:^7.20.7": - version: 7.20.15 - resolution: "@babel/parser@npm:7.20.15" +"@babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.0, @babel/parser@npm:^7.21.2": + version: 7.21.2 + resolution: "@babel/parser@npm:7.21.2" bin: parser: ./bin/babel-parser.js - checksum: 1d0f47ca67ff2652f1c0ff1570bed8deccbc4b53509e7cd73476af9cc7ed23480c99f1179bd6d0be01612368b92b39e206d330ad6054009d699934848a89298b + checksum: e2b89de2c63d4cdd2cafeaea34f389bba729727eec7a8728f736bc472a59396059e3e9fe322c9bed8fd126d201fb609712949dc8783f4cae4806acd9a73da6ff languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.7": - version: 7.20.13 - resolution: "@babel/runtime@npm:7.20.13" - dependencies: - regenerator-runtime: ^0.13.11 - checksum: 09b7a97a05c80540db6c9e4ddf8c5d2ebb06cae5caf3a87e33c33f27f8c4d49d9c67a2d72f1570e796045288fad569f98a26ceba0c4f5fad2af84b6ad855c4fb - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.21.0": +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.7": version: 7.21.0 resolution: "@babel/runtime@npm:7.21.0" dependencies: @@ -219,7 +211,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7": +"@babel/template@npm:^7.20.7": version: 7.20.7 resolution: "@babel/template@npm:7.20.7" dependencies: @@ -230,32 +222,32 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.20.10, @babel/traverse@npm:^7.20.12, @babel/traverse@npm:^7.20.13": - version: 7.20.13 - resolution: "@babel/traverse@npm:7.20.13" +"@babel/traverse@npm:^7.21.0, @babel/traverse@npm:^7.21.2": + version: 7.21.2 + resolution: "@babel/traverse@npm:7.21.2" dependencies: "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.20.7 + "@babel/generator": ^7.21.1 "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 + "@babel/helper-function-name": ^7.21.0 "@babel/helper-hoist-variables": ^7.18.6 "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.20.13 - "@babel/types": ^7.20.7 + "@babel/parser": ^7.21.2 + "@babel/types": ^7.21.2 debug: ^4.1.0 globals: ^11.1.0 - checksum: 30ca6e0bd18233fda48fa09315efd14dfc61dcf5b8fa3712b343bfc61b32bc63b5e85ea1773cc9576c9b293b96f46b4589aaeb0a52e1f3eeac4edc076d049fc7 + checksum: d851e3f5cfbdc2fac037a014eae7b0707709de50f7d2fbb82ffbf932d3eeba90a77431529371d6e544f8faaf8c6540eeb18fdd8d1c6fa2b61acea0fb47e18d4b languageName: node linkType: hard -"@babel/types@npm:^7.18.6, @babel/types@npm:^7.19.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.7, @babel/types@npm:^7.8.3": - version: 7.20.7 - resolution: "@babel/types@npm:7.20.7" +"@babel/types@npm:^7.18.6, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.2, @babel/types@npm:^7.8.3": + version: 7.21.2 + resolution: "@babel/types@npm:7.21.2" dependencies: "@babel/helper-string-parser": ^7.19.4 "@babel/helper-validator-identifier": ^7.19.1 to-fast-properties: ^2.0.0 - checksum: b39af241f0b72bba67fd6d0d23914f6faec8c0eba8015c181cbd5ea92e59fc91a52a1ab490d3520c7dbd19ddb9ebb76c476308f6388764f16d8201e37fae6811 + checksum: a45a52acde139e575502c6de42c994bdbe262bafcb92ae9381fb54cdf1a3672149086843fda655c7683ce9806e998fd002bbe878fa44984498d0fdc7935ce7ff languageName: node linkType: hard @@ -657,7 +649,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.9": +"@jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.17 resolution: "@jridgewell/trace-mapping@npm:0.3.17" dependencies: @@ -1064,90 +1056,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.35": - version: 1.3.35 - resolution: "@swc/core-darwin-arm64@npm:1.3.35" +"@swc/core-darwin-arm64@npm:1.3.37": + version: 1.3.37 + resolution: "@swc/core-darwin-arm64@npm:1.3.37" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.35": - version: 1.3.35 - resolution: "@swc/core-darwin-x64@npm:1.3.35" +"@swc/core-darwin-x64@npm:1.3.37": + version: 1.3.37 + resolution: "@swc/core-darwin-x64@npm:1.3.37" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.35": - version: 1.3.35 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.35" +"@swc/core-linux-arm-gnueabihf@npm:1.3.37": + version: 1.3.37 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.37" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.35": - version: 1.3.35 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.35" +"@swc/core-linux-arm64-gnu@npm:1.3.37": + version: 1.3.37 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.37" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.35": - version: 1.3.35 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.35" +"@swc/core-linux-arm64-musl@npm:1.3.37": + version: 1.3.37 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.37" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.35": - version: 1.3.35 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.35" +"@swc/core-linux-x64-gnu@npm:1.3.37": + version: 1.3.37 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.37" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.35": - version: 1.3.35 - resolution: "@swc/core-linux-x64-musl@npm:1.3.35" +"@swc/core-linux-x64-musl@npm:1.3.37": + version: 1.3.37 + resolution: "@swc/core-linux-x64-musl@npm:1.3.37" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.35": - version: 1.3.35 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.35" +"@swc/core-win32-arm64-msvc@npm:1.3.37": + version: 1.3.37 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.37" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.35": - version: 1.3.35 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.35" +"@swc/core-win32-ia32-msvc@npm:1.3.37": + version: 1.3.37 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.37" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.35": - version: 1.3.35 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.35" +"@swc/core-win32-x64-msvc@npm:1.3.37": + version: 1.3.37 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.37" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.35": - version: 1.3.35 - resolution: "@swc/core@npm:1.3.35" + version: 1.3.37 + resolution: "@swc/core@npm:1.3.37" dependencies: - "@swc/core-darwin-arm64": 1.3.35 - "@swc/core-darwin-x64": 1.3.35 - "@swc/core-linux-arm-gnueabihf": 1.3.35 - "@swc/core-linux-arm64-gnu": 1.3.35 - "@swc/core-linux-arm64-musl": 1.3.35 - "@swc/core-linux-x64-gnu": 1.3.35 - "@swc/core-linux-x64-musl": 1.3.35 - "@swc/core-win32-arm64-msvc": 1.3.35 - "@swc/core-win32-ia32-msvc": 1.3.35 - "@swc/core-win32-x64-msvc": 1.3.35 + "@swc/core-darwin-arm64": 1.3.37 + "@swc/core-darwin-x64": 1.3.37 + "@swc/core-linux-arm-gnueabihf": 1.3.37 + "@swc/core-linux-arm64-gnu": 1.3.37 + "@swc/core-linux-arm64-musl": 1.3.37 + "@swc/core-linux-x64-gnu": 1.3.37 + "@swc/core-linux-x64-musl": 1.3.37 + "@swc/core-win32-arm64-msvc": 1.3.37 + "@swc/core-win32-ia32-msvc": 1.3.37 + "@swc/core-win32-x64-msvc": 1.3.37 dependenciesMeta: "@swc/core-darwin-arm64": optional: true @@ -1169,7 +1161,7 @@ __metadata: optional: true "@swc/core-win32-x64-msvc": optional: true - checksum: 263e01904fe4f4d6cbf6deef90439d6d93f28c04252d917fc290aadde131a1716820eb488a615b3c0dbe3f48d6d7ac0f1c886e2c2acd07a72e3d99e4a245b3de + checksum: 1cfa1ce8967a1d04361af076023bb50cc90bb413c347b0d7c7e86cf9b8277d05471dd2a24708a77365e527c51ddde3cd752fe49975b9e236c3abf9590e3106dd languageName: node linkType: hard @@ -1365,13 +1357,13 @@ __metadata: linkType: hard "@typescript-eslint/experimental-utils@npm:^5.0.0": - version: 5.53.0 - resolution: "@typescript-eslint/experimental-utils@npm:5.53.0" + version: 5.54.0 + resolution: "@typescript-eslint/experimental-utils@npm:5.54.0" dependencies: - "@typescript-eslint/utils": 5.53.0 + "@typescript-eslint/utils": 5.54.0 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 654702d564d6680b984a23ab2887ab6a1fceda073bb2522a84edf7c8d16a6dbd42b122be2583b9ddf1cdfd3ce68dac7292739b9c95fd0f3aa713e4414a64f7d1 + checksum: 7698471ff64c3590301105e0843563927a4289591365bdcc83b39a4dc7b3a40fd37c8c71e5f3088251ba2a38b51b1fb3edbc85c1294f5b74edbb807ec26cce90 languageName: node linkType: hard @@ -1392,16 +1384,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.53.0": - version: 5.53.0 - resolution: "@typescript-eslint/scope-manager@npm:5.53.0" - dependencies: - "@typescript-eslint/types": 5.53.0 - "@typescript-eslint/visitor-keys": 5.53.0 - checksum: 51f31dc01e95908611f402441f58404da80a338c0237b2b82f4a7b0b2e8868c4bfe8f7cf44b2567dd56533de609156a5d4ac54bb1f9f09c7014b99428aef2543 - languageName: node - linkType: hard - "@typescript-eslint/scope-manager@npm:5.54.0": version: 5.54.0 resolution: "@typescript-eslint/scope-manager@npm:5.54.0" @@ -1429,13 +1411,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:5.53.0": - version: 5.53.0 - resolution: "@typescript-eslint/types@npm:5.53.0" - checksum: b0eaf23de4ab13697d4d2095838c959a3f410c30f0d19091e5ca08e62320c3cc3c72bcb631823fb6a4fbb31db0a059e386a0801244930d0a88a6a698e5f46548 - languageName: node - linkType: hard - "@typescript-eslint/types@npm:5.54.0": version: 5.54.0 resolution: "@typescript-eslint/types@npm:5.54.0" @@ -1443,24 +1418,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.53.0": - version: 5.53.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.53.0" - dependencies: - "@typescript-eslint/types": 5.53.0 - "@typescript-eslint/visitor-keys": 5.53.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - semver: ^7.3.7 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 6e119c8e4167c8495d728c5556a834545a9c064918dd5e7b79b0d836726f4f8e2a0297b0ac82bf2b71f1e5427552217d0b59d8fb1406fd79bd3bf91b75dca873 - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:5.54.0": version: 5.54.0 resolution: "@typescript-eslint/typescript-estree@npm:5.54.0" @@ -1479,24 +1436,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.53.0": - version: 5.53.0 - resolution: "@typescript-eslint/utils@npm:5.53.0" - dependencies: - "@types/json-schema": ^7.0.9 - "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.53.0 - "@typescript-eslint/types": 5.53.0 - "@typescript-eslint/typescript-estree": 5.53.0 - eslint-scope: ^5.1.1 - eslint-utils: ^3.0.0 - semver: ^7.3.7 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 18e6bac14ae853385a74123759850bca367904723e170c37416fc014673eb714afb6bb090367bff61494a8387e941b6af65ee5f4f845f7177fabb4df85e01643 - languageName: node - linkType: hard - "@typescript-eslint/utils@npm:5.54.0": version: 5.54.0 resolution: "@typescript-eslint/utils@npm:5.54.0" @@ -1515,16 +1454,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.53.0": - version: 5.53.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.53.0" - dependencies: - "@typescript-eslint/types": 5.53.0 - eslint-visitor-keys: ^3.3.0 - checksum: 090695883c15364c6f401e97f56b13db0f31c1114f3bd22562bd41734864d27f6a3c80de33957e9dedab2d5f94b0f4480ba3fde1d4574e74dca4593917b7b54a - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:5.54.0": version: 5.54.0 resolution: "@typescript-eslint/visitor-keys@npm:5.54.0" @@ -1970,9 +1899,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001449": - version: 1.0.30001451 - resolution: "caniuse-lite@npm:1.0.30001451" - checksum: 48a06a7881093bb4d8a08ed5428f24a1cbdaa544b0a6f0c3614287d4f34b6c853e79a0f608a5bd901c27995f5e951825606fba11e7930251cc422bd61de9d849 + version: 1.0.30001458 + resolution: "caniuse-lite@npm:1.0.30001458" + checksum: 258cc5a25babbbfe483bf788c6f321a19400ff80b2bf156b360bac09a6f9f4da44516350d187a30395667cb142c682d9ea96577ea0df236d35f76234b07ccb41 languageName: node linkType: hard @@ -2306,9 +2235,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.284": - version: 1.4.295 - resolution: "electron-to-chromium@npm:1.4.295" - checksum: 66fff1341d3c94c2ccd1f2a39cffdb92118304f4b949d3194427e7022d6a6bd8c482b5c4afd9dce210117ba20cac01c1a1466089f5a862fe9c563113b86ff829 + version: 1.4.315 + resolution: "electron-to-chromium@npm:1.4.315" + checksum: 9b1e9a43afe086aaed9af2a60076a409c0d6a0d9a9f4d0a293131763329c48c86198bda4020155c7ce53d2569840d49d51e8ce2405b6cd90000a77c1bd650ea5 languageName: node linkType: hard @@ -3788,7 +3717,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^1.0.1": +"json5@npm:^1.0.2": version: 1.0.2 resolution: "json5@npm:1.0.2" dependencies: @@ -3923,9 +3852,9 @@ __metadata: linkType: hard "lru-cache@npm:^7.7.1": - version: 7.14.1 - resolution: "lru-cache@npm:7.14.1" - checksum: d72c6713c6a6d86836a7a6523b3f1ac6764768cca47ec99341c3e76db06aacd4764620e5e2cda719a36848785a52a70e531822dc2b33fb071fa709683746c104 + version: 7.18.1 + resolution: "lru-cache@npm:7.18.1" + checksum: ab0ec1360c552f1ffa54b1eaf0026126c5116a07bee156b92d1e971f4c8c88e9160f0fad4ab6fed4e0fdea84f25a4590ece085bc57ed9ab1d90b17f0b138c556 languageName: node linkType: hard @@ -4086,9 +4015,9 @@ __metadata: linkType: hard "minipass@npm:^4.0.0": - version: 4.0.3 - resolution: "minipass@npm:4.0.3" - checksum: a09f405e2f380ae7f6ee0cbb53b45c1fcc1b6c70fc3896f4d20649d92a10e61892c57bd9960a64cedf6c90b50022cb6c195905b515039c335b423202f99e6f18 + version: 4.2.4 + resolution: "minipass@npm:4.2.4" + checksum: c664f2ae4401408d1e7a6e4f50aca45f87b1b0634bc9261136df5c378e313e77355765f73f59c4a5abcadcdf43d83fcd3eb14e4a7cdcce8e36508e2290345753 languageName: node linkType: hard @@ -4111,14 +4040,14 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.2": +"ms@npm:2.1.2, ms@npm:^2.1.1": version: 2.1.2 resolution: "ms@npm:2.1.2" checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f languageName: node linkType: hard -"ms@npm:^2.0.0, ms@npm:^2.1.1": +"ms@npm:^2.0.0": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -4400,13 +4329,13 @@ __metadata: linkType: hard "open@npm:^8.4.0": - version: 8.4.1 - resolution: "open@npm:8.4.1" + version: 8.4.2 + resolution: "open@npm:8.4.2" dependencies: define-lazy-prop: ^2.0.0 is-docker: ^2.1.1 is-wsl: ^2.2.0 - checksum: dbe8e1d98889df60b5179eab8b94b9591744d1f0033bce1a9a10738ba140bd9d625d6bcde7ff9f043e379aafb918975c2daa03b87cef13eb046ac18ed807f06d + checksum: 6388bfff21b40cb9bd8f913f9130d107f2ed4724ea81a8fd29798ee322b361ca31fa2cdfb491a5c31e43a3996cfe9566741238c7a741ada8d7af1cb78d85cf26 languageName: node linkType: hard @@ -4777,13 +4706,13 @@ __metadata: linkType: hard "readable-stream@npm:^3.6.0": - version: 3.6.0 - resolution: "readable-stream@npm:3.6.0" + version: 3.6.1 + resolution: "readable-stream@npm:3.6.1" dependencies: inherits: ^2.0.3 string_decoder: ^1.1.1 util-deprecate: ^1.0.1 - checksum: d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 + checksum: b7ab0508dba3c37277b9e43c0a970ea27635375698859a687f558c3c9393154b6c4f39c3aa5689641de183fffa26771bc1a45878ddde0236ad18fc8fdfde50ea languageName: node linkType: hard @@ -4932,8 +4861,8 @@ __metadata: linkType: hard "rollup@npm:^3.10.0": - version: 3.15.0 - resolution: "rollup@npm:3.15.0" + version: 3.18.0 + resolution: "rollup@npm:3.18.0" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -4941,7 +4870,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 1a75b09503f705b594dcfebf65b9e1ca4536e3facdf5716e10d4272697b4bb7e6bd8ab35be1b3fe1271f864d4c4a75d012bd77cbe7a55579d5138258b9e85c23 + checksum: 0bcd1abb1cc383abdd09b5594de862ecb2f946e950954bb472a370289bdc4499aea8d04477be55ce205450d973d38ad255f0dc6926162500a251d73bf0e60e6f languageName: node linkType: hard @@ -5428,8 +5357,8 @@ __metadata: linkType: hard "tsconfck@npm:^2.0.1": - version: 2.0.2 - resolution: "tsconfck@npm:2.0.2" + version: 2.0.3 + resolution: "tsconfck@npm:2.0.3" peerDependencies: typescript: ^4.3.5 peerDependenciesMeta: @@ -5437,19 +5366,19 @@ __metadata: optional: true bin: tsconfck: bin/tsconfck.js - checksum: bc914042b2f5e1f9d7bbadd05b74031f32e2f1757061743d70d86d17dda0734d838e67abb0105b81db67c30b66496e5d408cbe216bb43b3d567a181b0448ddc1 + checksum: 557060017e35cb45281134568ad64f15fe1702c318c3cfba18d49f7c66f964981f19d5c493ca1848edab31f71aeaade305ae485eb6b11c8fb40fda593f3f4998 languageName: node linkType: hard "tsconfig-paths@npm:^3.14.1": - version: 3.14.1 - resolution: "tsconfig-paths@npm:3.14.1" + version: 3.14.2 + resolution: "tsconfig-paths@npm:3.14.2" dependencies: "@types/json5": ^0.0.29 - json5: ^1.0.1 + json5: ^1.0.2 minimist: ^1.2.6 strip-bom: ^3.0.0 - checksum: 8afa01c673ebb4782ba53d3a12df97fa837ce524f8ad38ee4e2b2fd57f5ac79abc21c574e9e9eb014d93efe7fe8214001b96233b5c6ea75bd1ea82afe17a4c6d + checksum: a6162eaa1aed680537f93621b82399c7856afd10ec299867b13a0675e981acac4e0ec00896860480efc59fc10fd0b16fdc928c0b885865b52be62cadac692447 languageName: node linkType: hard @@ -5805,8 +5734,8 @@ __metadata: linkType: hard "yargs@npm:^17.5.1": - version: 17.6.2 - resolution: "yargs@npm:17.6.2" + version: 17.7.1 + resolution: "yargs@npm:17.7.1" dependencies: cliui: ^8.0.1 escalade: ^3.1.1 @@ -5815,7 +5744,7 @@ __metadata: string-width: ^4.2.3 y18n: ^5.0.5 yargs-parser: ^21.1.1 - checksum: 47da1b0d854fa16d45a3ded57b716b013b2179022352a5f7467409da5a04a1eef5b3b3d97a2dfc13e8bbe5f2ffc0afe3bc6a4a72f8254e60f5a4bd7947138643 + checksum: 3d8a43c336a4942bc68080768664aca85c7bd406f018bad362fd255c41c8f4e650277f42fd65d543fce99e084124ddafee7bbfc1a5c6a8fda4cec78609dcf8d4 languageName: node linkType: hard diff --git a/mock-api/server.js b/mock-api/server.js index eb71fc2c1..09e1a9adf 100644 --- a/mock-api/server.js +++ b/mock-api/server.js @@ -603,40 +603,40 @@ const emsesp_devicedata_4 = { let emsesp_schedule = { schedule: [ { - id: '1', + id: 'hc1_on', active: true, flags: 31, time: '07:30', cmd: 'hc1/mode', value: 'day', - desc: 'Turn on central heating in morning' + description: 'Turn on central heating in morning' }, { - id: '2', + id: 'hc1_off', active: true, flags: 31, time: '23:00', cmd: 'hc1/mode', value: 'night', - desc: 'Turn off central heating for the night' + description: 'Turn off central heating for the night' }, { - id: '3', + id: 'set_roomtemp', active: true, flags: 128, time: '00:01', cmd: 'thermostat/hc2/seltemp', value: '20', - desc: 'Force thermostat temperature to 20 degrees every minute' + description: 'Force thermostat temperature to 20 degrees every minute' }, { - id: '4', + id: 'restart', active: false, flags: 1, time: '04:00', cmd: 'system/restart', value: '', - desc: 'auto restart EMS-EPS at 4am every Sunday' + description: 'auto restart EMS-EPS at 4am every Sunday' } ] }; diff --git a/src/version.h b/src/version.h index bbb843955..360172889 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.6.0-dev.1" +#define EMSESP_APP_VERSION "3.6.0-dev.2" diff --git a/src/web/WebSchedulerService.cpp b/src/web/WebSchedulerService.cpp index 74c5f25b0..28c0effa8 100644 --- a/src/web/WebSchedulerService.cpp +++ b/src/web/WebSchedulerService.cpp @@ -36,11 +36,9 @@ void WebSchedulerService::begin() { // this creates the scheduler file, saving it to the FS void WebScheduler::read(WebScheduler & webScheduler, JsonObject & root) { JsonArray schedule = root.createNestedArray("schedule"); - uint8_t count = 0; - char s[3]; for (const ScheduleItem & scheduleItem : webScheduler.scheduleItems) { JsonObject si = schedule.createNestedObject(); - si["id"] = Helpers::smallitoa(s, count++); // create unique ID as a string + si["id"] = scheduleItem.id; // name, is unqiue si["active"] = scheduleItem.active; si["flags"] = scheduleItem.flags; si["time"] = scheduleItem.time; @@ -55,8 +53,8 @@ void WebScheduler::read(WebScheduler & webScheduler, JsonObject & root) { StateUpdateResult WebScheduler::update(JsonObject & root, WebScheduler & webScheduler) { #ifdef EMSESP_STANDALONE // invoke some fake data for testing - const char * json = - "{[{\"active\":true,\"flags\":31,\"time\": \"07:30\",\"cmd\": \"hc1/mode\",\"value\": \"day\",\"description\": \"turn on central heating\"}]}"; + const char * json = "{[{\"id\":\"test1\",\"active\":true,\"flags\":31,\"time\": \"07:30\",\"cmd\": \"hc1/mode\",\"value\": \"day\",\"description\": \"turn " + "on central heating\"}]}"; StaticJsonDocument<500> doc; deserializeJson(doc, json); root = doc.as(); diff --git a/src/web/WebSchedulerService.h b/src/web/WebSchedulerService.h index f6ce0b438..b822768ac 100644 --- a/src/web/WebSchedulerService.h +++ b/src/web/WebSchedulerService.h @@ -29,7 +29,7 @@ namespace emsesp { class ScheduleItem { public: - std::string id; // unqiue id + std::string id; // unqiue id, is the name boolean active; uint8_t flags; uint16_t elapsed_min; // total mins from 00:00