mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
update ntp lib to moment
This commit is contained in:
126
interface/package-lock.json
generated
126
interface/package-lock.json
generated
@@ -1741,13 +1741,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@material-ui/core": {
|
"@material-ui/core": {
|
||||||
"version": "4.11.2",
|
"version": "4.11.3",
|
||||||
"resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.11.2.tgz",
|
"resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.11.3.tgz",
|
||||||
"integrity": "sha512-/D1+AQQeYX/WhT/FUk78UCRj8ch/RCglsQLYujYTIqPSJlwZHKcvHidNeVhODXeApojeXjkl0tWdk5C9ofwOkQ==",
|
"integrity": "sha512-Adt40rGW6Uds+cAyk3pVgcErpzU/qxc7KBR94jFHBYretU4AtWZltYcNsbeMn9tXL86jjVL1kuGcIHsgLgFGRw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.4.4",
|
"@babel/runtime": "^7.4.4",
|
||||||
"@material-ui/styles": "^4.11.2",
|
"@material-ui/styles": "^4.11.3",
|
||||||
"@material-ui/system": "^4.11.2",
|
"@material-ui/system": "^4.11.3",
|
||||||
"@material-ui/types": "^5.1.0",
|
"@material-ui/types": "^5.1.0",
|
||||||
"@material-ui/utils": "^4.11.2",
|
"@material-ui/utils": "^4.11.2",
|
||||||
"@types/react-transition-group": "^4.2.0",
|
"@types/react-transition-group": "^4.2.0",
|
||||||
@@ -1768,9 +1768,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@material-ui/styles": {
|
"@material-ui/styles": {
|
||||||
"version": "4.11.2",
|
"version": "4.11.3",
|
||||||
"resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.2.tgz",
|
"resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.3.tgz",
|
||||||
"integrity": "sha512-xbItf8zkfD3FuGoD9f2vlcyPf9jTEtj9YTJoNNV+NMWaSAHXgrW6geqRoo/IwBuMjqpwqsZhct13e2nUyU9Ljw==",
|
"integrity": "sha512-HzVzCG+PpgUGMUYEJ2rTEmQYeonGh41BYfILNFb/1ueqma+p1meSdu4RX6NjxYBMhf7k+jgfHFTTz+L1SXL/Zg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.4.4",
|
"@babel/runtime": "^7.4.4",
|
||||||
"@emotion/hash": "^0.8.0",
|
"@emotion/hash": "^0.8.0",
|
||||||
@@ -1779,21 +1779,21 @@
|
|||||||
"clsx": "^1.0.4",
|
"clsx": "^1.0.4",
|
||||||
"csstype": "^2.5.2",
|
"csstype": "^2.5.2",
|
||||||
"hoist-non-react-statics": "^3.3.2",
|
"hoist-non-react-statics": "^3.3.2",
|
||||||
"jss": "^10.0.3",
|
"jss": "^10.5.1",
|
||||||
"jss-plugin-camel-case": "^10.0.3",
|
"jss-plugin-camel-case": "^10.5.1",
|
||||||
"jss-plugin-default-unit": "^10.0.3",
|
"jss-plugin-default-unit": "^10.5.1",
|
||||||
"jss-plugin-global": "^10.0.3",
|
"jss-plugin-global": "^10.5.1",
|
||||||
"jss-plugin-nested": "^10.0.3",
|
"jss-plugin-nested": "^10.5.1",
|
||||||
"jss-plugin-props-sort": "^10.0.3",
|
"jss-plugin-props-sort": "^10.5.1",
|
||||||
"jss-plugin-rule-value-function": "^10.0.3",
|
"jss-plugin-rule-value-function": "^10.5.1",
|
||||||
"jss-plugin-vendor-prefixer": "^10.0.3",
|
"jss-plugin-vendor-prefixer": "^10.5.1",
|
||||||
"prop-types": "^15.7.2"
|
"prop-types": "^15.7.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@material-ui/system": {
|
"@material-ui/system": {
|
||||||
"version": "4.11.2",
|
"version": "4.11.3",
|
||||||
"resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.11.2.tgz",
|
"resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.11.3.tgz",
|
||||||
"integrity": "sha512-BELFJEel5E+5DMiZb6XXT3peWRn6UixRvBtKwSxqntmD0+zwbbfCij6jtGwwdJhN1qX/aXrKu10zX31GBaeR7A==",
|
"integrity": "sha512-SY7otguNGol41Mu2Sg6KbBP1ZRFIbFLHGK81y4KYbsV2yIcaEPOmsCK6zwWlp+2yTV3J/VwT6oSBARtGIVdXPw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.4.4",
|
"@babel/runtime": "^7.4.4",
|
||||||
"@material-ui/utils": "^4.11.2",
|
"@material-ui/utils": "^4.11.2",
|
||||||
@@ -2165,9 +2165,9 @@
|
|||||||
"integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4="
|
"integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4="
|
||||||
},
|
},
|
||||||
"@types/lodash": {
|
"@types/lodash": {
|
||||||
"version": "4.14.167",
|
"version": "4.14.168",
|
||||||
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.167.tgz",
|
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.168.tgz",
|
||||||
"integrity": "sha512-w7tQPjARrvdeBkX/Rwg95S592JwxqOjmms3zWQ0XZgSyxSLdzWaYH3vErBhdVS/lRBX7F8aBYcYJYTr5TMGOzw=="
|
"integrity": "sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q=="
|
||||||
},
|
},
|
||||||
"@types/material-ui": {
|
"@types/material-ui": {
|
||||||
"version": "0.21.8",
|
"version": "0.21.8",
|
||||||
@@ -2184,9 +2184,9 @@
|
|||||||
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
|
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "12.19.14",
|
"version": "12.19.15",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.14.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.15.tgz",
|
||||||
"integrity": "sha512-2U9uLN46+7dv9PiS8VQJcHhuoOjiDPZOLAt0WuA1EanEknIMae+2QbMhayF7cgGqjvRVIfNpt+6jLPczJZFiRw=="
|
"integrity": "sha512-lowukE3GUI+VSYSu6VcBXl14d61Rp5hA1D+61r16qnwC0lYNSqdxcvRh0pswejorHfS+HgwBasM8jLXz0/aOsw=="
|
||||||
},
|
},
|
||||||
"@types/normalize-package-data": {
|
"@types/normalize-package-data": {
|
||||||
"version": "2.4.0",
|
"version": "2.4.0",
|
||||||
@@ -9706,9 +9706,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jss": {
|
"jss": {
|
||||||
"version": "10.5.0",
|
"version": "10.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/jss/-/jss-10.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/jss/-/jss-10.5.1.tgz",
|
||||||
"integrity": "sha512-B6151NvG+thUg3murLNHRPLxTLwQ13ep4SH5brj4d8qKtogOx/jupnpfkPGSHPqvcwKJaCLctpj2lEk+5yGwMw==",
|
"integrity": "sha512-hbbO3+FOTqVdd7ZUoTiwpHzKXIo5vGpMNbuXH1a0wubRSWLWSBvwvaq4CiHH/U42CmjOnp6lVNNs/l+Z7ZdDmg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.3.1",
|
"@babel/runtime": "^7.3.1",
|
||||||
"csstype": "^3.0.2",
|
"csstype": "^3.0.2",
|
||||||
@@ -9725,70 +9725,70 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jss-plugin-camel-case": {
|
"jss-plugin-camel-case": {
|
||||||
"version": "10.5.0",
|
"version": "10.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.5.1.tgz",
|
||||||
"integrity": "sha512-GSjPL0adGAkuoqeYiXTgO7PlIrmjv5v8lA6TTBdfxbNYpxADOdGKJgIEkffhlyuIZHlPuuiFYTwUreLUmSn7rg==",
|
"integrity": "sha512-9+oymA7wPtswm+zxVti1qiowC5q7bRdCJNORtns2JUj/QHp2QPXYwSNRD8+D2Cy3/CEMtdJzlNnt5aXmpS6NAg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.3.1",
|
"@babel/runtime": "^7.3.1",
|
||||||
"hyphenate-style-name": "^1.0.3",
|
"hyphenate-style-name": "^1.0.3",
|
||||||
"jss": "10.5.0"
|
"jss": "10.5.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jss-plugin-default-unit": {
|
"jss-plugin-default-unit": {
|
||||||
"version": "10.5.0",
|
"version": "10.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.5.1.tgz",
|
||||||
"integrity": "sha512-rsbTtZGCMrbcb9beiDd+TwL991NGmsAgVYH0hATrYJtue9e+LH/Gn4yFD1ENwE+3JzF3A+rPnM2JuD9L/SIIWw==",
|
"integrity": "sha512-D48hJBc9Tj3PusvlillHW8Fz0y/QqA7MNmTYDQaSB/7mTrCZjt7AVRROExoOHEtd2qIYKOYJW3Jc2agnvsXRlQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.3.1",
|
"@babel/runtime": "^7.3.1",
|
||||||
"jss": "10.5.0"
|
"jss": "10.5.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jss-plugin-global": {
|
"jss-plugin-global": {
|
||||||
"version": "10.5.0",
|
"version": "10.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.5.1.tgz",
|
||||||
"integrity": "sha512-FZd9+JE/3D7HMefEG54fEC0XiQ9rhGtDHAT/ols24y8sKQ1D5KIw6OyXEmIdKFmACgxZV2ARQ5pAUypxkk2IFQ==",
|
"integrity": "sha512-jX4XpNgoaB8yPWw/gA1aPXJEoX0LNpvsROPvxlnYe+SE0JOhuvF7mA6dCkgpXBxfTWKJsno7cDSCgzHTocRjCQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.3.1",
|
"@babel/runtime": "^7.3.1",
|
||||||
"jss": "10.5.0"
|
"jss": "10.5.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jss-plugin-nested": {
|
"jss-plugin-nested": {
|
||||||
"version": "10.5.0",
|
"version": "10.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.5.1.tgz",
|
||||||
"integrity": "sha512-ejPlCLNlEGgx8jmMiDk/zarsCZk+DV0YqXfddpgzbO9Toamo0HweCFuwJ3ZO40UFOfqKwfpKMVH/3HUXgxkTMg==",
|
"integrity": "sha512-xXkWKOCljuwHNjSYcXrCxBnjd8eJp90KVFW1rlhvKKRXnEKVD6vdKXYezk2a89uKAHckSvBvBoDGsfZrldWqqQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.3.1",
|
"@babel/runtime": "^7.3.1",
|
||||||
"jss": "10.5.0",
|
"jss": "10.5.1",
|
||||||
"tiny-warning": "^1.0.2"
|
"tiny-warning": "^1.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jss-plugin-props-sort": {
|
"jss-plugin-props-sort": {
|
||||||
"version": "10.5.0",
|
"version": "10.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.5.1.tgz",
|
||||||
"integrity": "sha512-kTLRvrOetFKz5vM88FAhLNeJIxfjhCepnvq65G7xsAQ/Wgy7HwO1BS/2wE5mx8iLaAWC6Rj5h16mhMk9sKdZxg==",
|
"integrity": "sha512-t+2vcevNmMg4U/jAuxlfjKt46D/jHzCPEjsjLRj/J56CvP7Iy03scsUP58Iw8mVnaV36xAUZH2CmAmAdo8994g==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.3.1",
|
"@babel/runtime": "^7.3.1",
|
||||||
"jss": "10.5.0"
|
"jss": "10.5.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jss-plugin-rule-value-function": {
|
"jss-plugin-rule-value-function": {
|
||||||
"version": "10.5.0",
|
"version": "10.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.5.1.tgz",
|
||||||
"integrity": "sha512-jXINGr8BSsB13JVuK274oEtk0LoooYSJqTBCGeBu2cG/VJ3+4FPs1gwLgsq24xTgKshtZ+WEQMVL34OprLidRA==",
|
"integrity": "sha512-3gjrSxsy4ka/lGQsTDY8oYYtkt2esBvQiceGBB4PykXxHoGRz14tbCK31Zc6DHEnIeqsjMUGbq+wEly5UViStQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.3.1",
|
"@babel/runtime": "^7.3.1",
|
||||||
"jss": "10.5.0",
|
"jss": "10.5.1",
|
||||||
"tiny-warning": "^1.0.2"
|
"tiny-warning": "^1.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jss-plugin-vendor-prefixer": {
|
"jss-plugin-vendor-prefixer": {
|
||||||
"version": "10.5.0",
|
"version": "10.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.5.1.tgz",
|
||||||
"integrity": "sha512-rux3gmfwDdOKCLDx0IQjTwTm03IfBa+Rm/hs747cOw5Q7O3RaTUIMPKjtVfc31Xr/XI9Abz2XEupk1/oMQ7zRA==",
|
"integrity": "sha512-cLkH6RaPZWHa1TqSfd2vszNNgxT1W0omlSjAd6hCFHp3KIocSrW21gaHjlMU26JpTHwkc+tJTCQOmE/O1A4FKQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.3.1",
|
"@babel/runtime": "^7.3.1",
|
||||||
"css-vendor": "^2.0.8",
|
"css-vendor": "^2.0.8",
|
||||||
"jss": "10.5.0"
|
"jss": "10.5.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jsx-ast-utils": {
|
"jsx-ast-utils": {
|
||||||
@@ -12629,9 +12629,9 @@
|
|||||||
"integrity": "sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw=="
|
"integrity": "sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw=="
|
||||||
},
|
},
|
||||||
"react-form-validator-core": {
|
"react-form-validator-core": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/react-form-validator-core/-/react-form-validator-core-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/react-form-validator-core/-/react-form-validator-core-1.0.1.tgz",
|
||||||
"integrity": "sha512-J+itG0oD/6VikXWJlOyjpoe3QaB35iX2WeFuQ1psxyJ5KkjMncBcOjUw/lemW8dYCOC7vQTFGUjlvwkGenTgig==",
|
"integrity": "sha512-5saUtkeGhmjYoN3SeVtTyc+rO3Saxo8MzERQU9HHC+0bM1EIe24j62mYGk9aZv/eti51eRNOTZMmilIvSHt4LQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"create-react-context": "^0.3.0",
|
"create-react-context": "^0.3.0",
|
||||||
"promise-polyfill": "8.1.0",
|
"promise-polyfill": "8.1.0",
|
||||||
@@ -12650,12 +12650,12 @@
|
|||||||
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
|
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
|
||||||
},
|
},
|
||||||
"react-material-ui-form-validator": {
|
"react-material-ui-form-validator": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/react-material-ui-form-validator/-/react-material-ui-form-validator-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/react-material-ui-form-validator/-/react-material-ui-form-validator-2.1.2.tgz",
|
||||||
"integrity": "sha512-4+W6dbRVyfUnWPHaBWJTLo6LTyim/ZyCWre/GUuBalbH0l4KMlOO7VUcz+h9Vy4cTQT1/TQIxzdfitD5Y+nYMw==",
|
"integrity": "sha512-IyAB7rRbSIrwNtvOy+80C5CB3FX0rUqgNgXWCdJKGrGiJUAuhOrOqVjMSojNAoJppl0hX23nmW+MMdvEBIRvMQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"prop-types": "^15.0.0",
|
"prop-types": "^15.0.0",
|
||||||
"react-form-validator-core": "1.0.0"
|
"react-form-validator-core": "1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"react-refresh": {
|
"react-refresh": {
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@material-ui/core": "^4.11.2",
|
"@material-ui/core": "^4.11.3",
|
||||||
"@material-ui/icons": "^4.11.2",
|
"@material-ui/icons": "^4.11.2",
|
||||||
"@types/lodash": "^4.14.165",
|
"@types/lodash": "^4.14.168",
|
||||||
"@types/node": "^12.12.32",
|
"@types/node": "^12.19.15",
|
||||||
"@types/react": "^17.0.0",
|
"@types/react": "^17.0.0",
|
||||||
"@types/react-dom": "^17.0.0",
|
"@types/react-dom": "^17.0.0",
|
||||||
"@types/react-material-ui-form-validator": "^2.1.0",
|
"@types/react-material-ui-form-validator": "^2.1.0",
|
||||||
@@ -21,8 +21,8 @@
|
|||||||
"react": "^17.0.1",
|
"react": "^17.0.1",
|
||||||
"react-dom": "^17.0.1",
|
"react-dom": "^17.0.1",
|
||||||
"react-dropzone": "^11.2.4",
|
"react-dropzone": "^11.2.4",
|
||||||
"react-form-validator-core": "^1.0.0",
|
"react-form-validator-core": "^1.0.1",
|
||||||
"react-material-ui-form-validator": "^2.1.1",
|
"react-material-ui-form-validator": "^2.1.2",
|
||||||
"react-router": "^5.2.0",
|
"react-router": "^5.2.0",
|
||||||
"react-router-dom": "^5.2.0",
|
"react-router-dom": "^5.2.0",
|
||||||
"react-scripts": "4.0.1",
|
"react-scripts": "4.0.1",
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import RefreshIcon from '@material-ui/icons/Refresh';
|
|||||||
|
|
||||||
import { RestFormProps, FormButton, HighlightAvatar } from '../components';
|
import { RestFormProps, FormButton, HighlightAvatar } from '../components';
|
||||||
import { isNtpActive, ntpStatusHighlight, ntpStatus } from './NTPStatus';
|
import { isNtpActive, ntpStatusHighlight, ntpStatus } from './NTPStatus';
|
||||||
import { formatDuration, formatDateTime, formatLocalDateTimeNow, formatLocalDateTime } from './TimeFormat';
|
import { formatDuration, formatDateTime, formatLocalDateTime } from './TimeFormat';
|
||||||
import { NTPStatus, Time } from './types';
|
import { NTPStatus, Time } from './types';
|
||||||
import { redirectingAuthorizedFetch, withAuthenticatedContext, AuthenticatedContextProps } from '../authentication';
|
import { redirectingAuthorizedFetch, withAuthenticatedContext, AuthenticatedContextProps } from '../authentication';
|
||||||
import { TIME_ENDPOINT } from '../api';
|
import { TIME_ENDPOINT } from '../api';
|
||||||
@@ -38,18 +38,27 @@ class NTPStatusForm extends Component<NTPStatusFormProps, NTPStatusFormState> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateLocalTime = (event: React.ChangeEvent<HTMLInputElement>) => {
|
updateLocalTime = (event: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
this.setState({ localTime: event.target.value });
|
this.setState({
|
||||||
|
localTime: event.target.value
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
openSetTime = () => {
|
openSetTime = () => {
|
||||||
this.setState({ localTime: formatLocalDateTimeNow(), settingTime: true, });
|
this.setState({
|
||||||
|
localTime: formatLocalDateTime(new Date()),
|
||||||
|
settingTime: true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
closeSetTime = () => {
|
closeSetTime = () => {
|
||||||
this.setState({ settingTime: false });
|
this.setState({
|
||||||
|
settingTime: false
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
createTime = (): Time => ({ local_time: formatLocalDateTime(this.state.localTime) });
|
createTime = (): Time => ({
|
||||||
|
local_time: formatLocalDateTime(new Date(this.state.localTime))
|
||||||
|
});
|
||||||
|
|
||||||
configureTime = () => {
|
configureTime = () => {
|
||||||
this.setState({ processing: true });
|
this.setState({ processing: true });
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import parseMilliseconds from 'parse-ms';
|
import parseMilliseconds from 'parse-ms';
|
||||||
|
|
||||||
const LOCALE_FORMAT = new Intl.DateTimeFormat('default', {
|
const LOCALE_FORMAT = new Intl.DateTimeFormat(
|
||||||
|
[...window.navigator.languages],
|
||||||
|
{
|
||||||
day: 'numeric',
|
day: 'numeric',
|
||||||
month: 'short',
|
month: 'short',
|
||||||
year: 'numeric',
|
year: 'numeric',
|
||||||
@@ -8,38 +10,36 @@ const LOCALE_FORMAT = new Intl.DateTimeFormat('default', {
|
|||||||
minute: 'numeric',
|
minute: 'numeric',
|
||||||
second: 'numeric',
|
second: 'numeric',
|
||||||
hour12: false
|
hour12: false
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
export const formatDateTime = (dateTime: string) => {
|
export const formatDateTime = (dateTime: string) => {
|
||||||
return LOCALE_FORMAT.format(new Date(dateTime.substr(0, 19)));
|
return LOCALE_FORMAT.format(new Date(dateTime.substr(0, 19)));
|
||||||
}
|
}
|
||||||
|
|
||||||
export const formatLocalDateTimeNow = () => {
|
export const formatLocalDateTime = (date: Date) => {
|
||||||
return formatIsoDateTime(new Date()).substr(0, 19);
|
return new Date(date.getTime() - date.getTimezoneOffset() * 60000)
|
||||||
}
|
.toISOString()
|
||||||
|
.slice(0, -1)
|
||||||
export const formatLocalDateTime = (dateTime: string) => {
|
.substr(0, 19);
|
||||||
return formatIsoDateTime(new Date(dateTime)).substr(0, 19);
|
|
||||||
}
|
|
||||||
|
|
||||||
export const formatIsoDateTime = (date: Date) => {
|
|
||||||
return new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString().slice(0, -1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const formatDuration = (duration: number) => {
|
export const formatDuration = (duration: number) => {
|
||||||
const { days, hours, minutes, seconds } = parseMilliseconds(duration * 1000);
|
const { days, hours, minutes, seconds } = parseMilliseconds(duration * 1000);
|
||||||
var formatted = '';
|
var formatted = '';
|
||||||
if (days) {
|
if (days) {
|
||||||
formatted += days + ' days ';
|
formatted += pluralize(days, 'day');
|
||||||
}
|
}
|
||||||
if (formatted || hours) {
|
if (formatted || hours) {
|
||||||
formatted += hours + ' hours ';
|
formatted += pluralize(hours, 'hour');
|
||||||
}
|
}
|
||||||
if (formatted || minutes) {
|
if (formatted || minutes) {
|
||||||
formatted += minutes + ' minutes ';
|
formatted += pluralize(minutes, 'minute');
|
||||||
}
|
}
|
||||||
if (formatted || seconds) {
|
if (formatted || seconds) {
|
||||||
formatted += seconds + ' seconds';
|
formatted += pluralize(seconds, 'second');
|
||||||
}
|
}
|
||||||
return formatted;
|
return formatted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const pluralize = (count: number, noun: string, suffix: string = 's') => ` ${count} ${noun}${count !== 1 ? suffix : ''} `;
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
export enum NTPSyncStatus {
|
export enum NTPSyncStatus {
|
||||||
NTP_INACTIVE = 0,
|
NTP_INACTIVE = 0,
|
||||||
NTP_ACTIVE = 1
|
NTP_ACTIVE = 1
|
||||||
|
|||||||
@@ -52,10 +52,9 @@ void NTPSettingsService::configureNTP() {
|
|||||||
|
|
||||||
void NTPSettingsService::configureTime(AsyncWebServerRequest * request, JsonVariant & json) {
|
void NTPSettingsService::configureTime(AsyncWebServerRequest * request, JsonVariant & json) {
|
||||||
if (!sntp_enabled() && json.is<JsonObject>()) {
|
if (!sntp_enabled() && json.is<JsonObject>()) {
|
||||||
String timeUtc = json["time_utc"];
|
|
||||||
struct tm tm = {0};
|
struct tm tm = {0};
|
||||||
|
String timeLocal = json["local_time"];
|
||||||
char * s = strptime(timeUtc.c_str(), "%Y-%m-%dT%H:%M:%SZ", &tm);
|
char * s = strptime(timeLocal.c_str(), "%Y-%m-%dT%H:%M:%S", &tm);
|
||||||
if (s != nullptr) {
|
if (s != nullptr) {
|
||||||
time_t time = mktime(&tm);
|
time_t time = mktime(&tm);
|
||||||
struct timeval now = {.tv_sec = time};
|
struct timeval now = {.tv_sec = time};
|
||||||
@@ -65,7 +64,6 @@ void NTPSettingsService::configureTime(AsyncWebServerRequest * request, JsonVari
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AsyncWebServerResponse * response = request->beginResponse(400);
|
AsyncWebServerResponse * response = request->beginResponse(400);
|
||||||
request->send(response);
|
request->send(response);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,14 +36,14 @@ void NTPStatus::ntpStatus(AsyncWebServerRequest * request) {
|
|||||||
// the current time in UTC
|
// the current time in UTC
|
||||||
root["utc_time"] = toUTCTimeString(gmtime(&now));
|
root["utc_time"] = toUTCTimeString(gmtime(&now));
|
||||||
|
|
||||||
// local time as ISO String with TZ
|
// local time with offset
|
||||||
root["local_time"] = toLocalTimeString(localtime(&now));
|
root["local_time"] = toLocalTimeString(localtime(&now));
|
||||||
|
|
||||||
// the sntp server name
|
// the sntp server name
|
||||||
root["server"] = sntp_getservername(0);
|
root["server"] = sntp_getservername(0);
|
||||||
|
|
||||||
// device uptime in seconds
|
// device uptime in seconds
|
||||||
root["uptime"] = uuid::get_uptime() / 1000;
|
root["uptime"] = millis() / 1000;
|
||||||
|
|
||||||
response->setLength();
|
response->setLength();
|
||||||
request->send(response);
|
request->send(response);
|
||||||
|
|||||||
Reference in New Issue
Block a user