From 7a25d5331ef8629c6c49d8dd1acce6e1cd6c08a4 Mon Sep 17 00:00:00 2001 From: johnillo Date: Sat, 7 Aug 2021 21:52:01 +0800 Subject: [PATCH] Initial commit. --- .github/deploy.yml | 23 ++++++ README.md | 10 +++ dist/app.js | 43 +++++++++++ dist/index.html | 40 +++++++++++ dist/style.css | 174 +++++++++++++++++++++++++++++++++++++++++++++ screenshot.png | Bin 0 -> 13968 bytes 6 files changed, 290 insertions(+) create mode 100644 .github/deploy.yml create mode 100644 README.md create mode 100644 dist/app.js create mode 100644 dist/index.html create mode 100644 dist/style.css create mode 100644 screenshot.png diff --git a/.github/deploy.yml b/.github/deploy.yml new file mode 100644 index 0000000..a694a7e --- /dev/null +++ b/.github/deploy.yml @@ -0,0 +1,23 @@ +name: Deploy +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: SCP Files + uses: appleboy/scp-action@master + with: + host: ${{ secrets.DROPLET_IP }} + username: ${{ secrets.DROPLET_USER }} + key: ${{ secrets.DROPLET_KEY }} + source: "dist/*" + target: ${{ secrets.DEPLOY_PATH }} + strip_components: 1 + rm: true \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..1d85676 --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +# Analog Clock + +
+ +
+ +## Development + +- Open `index.html` on a modern browser. +- Edit the files on your favorite text editor. diff --git a/dist/app.js b/dist/app.js new file mode 100644 index 0000000..a283b51 --- /dev/null +++ b/dist/app.js @@ -0,0 +1,43 @@ +var second = document.getElementById('second'); +var minute = document.getElementById('minute'); +var hour = document.getElementById('hour'); +var dow = document.getElementById('dow'); +var day = document.getElementById('day'); + +var DAY_OF_WEEK = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']; + +function getRotation60Deg(value) { + return (value * 6) % 360 - (90); +} + +function getRotation12Deg(value) { + return (value * 30) % 360 - (90); +} + +function setDayNightScheme(date) { + if (date.getHours() >= 18 || date.getHours() < 6) { + return document.body.classList.add('night'); + } + document.body.classList.remove('night'); +} + +function render() { + var date = new Date(); + setDayNightScheme(date); + var seconds = date.getSeconds() + (date.getMilliseconds() / 1000); + var minutes = date.getMinutes() + (date.getSeconds() / 60); + var hours = date.getHours() + (date.getMinutes() / 60); + second.style.transform = 'rotate(' + getRotation60Deg(seconds) + 'deg)'; + minute.style.transform = 'rotate(' + getRotation60Deg(minutes) + 'deg)'; + hour.style.transform = 'rotate(' + getRotation12Deg(hours) + 'deg)'; + dow.innerHTML = DAY_OF_WEEK[date.getDay()]; + day.innerHTML = ('00' + date.getDate()).slice(-2); +} + +window.onload = function () { + render(); + setInterval(render, 16); + setTimeout(function () { + document.body.classList.add('transition'); + }, 1000); +} \ No newline at end of file diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..939fcd7 --- /dev/null +++ b/dist/index.html @@ -0,0 +1,40 @@ + + + + + + + + Analog Clock + + +
+ +
+ SAT + 08 +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/dist/style.css b/dist/style.css new file mode 100644 index 0000000..6559df2 --- /dev/null +++ b/dist/style.css @@ -0,0 +1,174 @@ +* { + box-sizing: border-box; + font-family: sans-serif; + padding: 0; + margin: 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +body.transition, +body.transition *, +body.transition *:before { + transition: background-color 0.5s ease-in-out, color 0.5s ease-in-out; +} +body { + background-color: #eeeeee; + display: flex; + align-items: center; + justify-content: center; + height: 100vh; + width: 100vw; + color: #373737; + flex-direction: column; +} +body.night { + background-color: rgb(27, 28, 32); + color: rgb(220, 220, 220); +} +#clock { + position: relative; + background-color: #fafafa; + height: min(80vh, 80vw); + width: min(80vh, 80vw); + border-radius: 100%; + overflow: hidden; +} +body.night #clock { + background-color: rgb(37, 38, 42); +} +#clock ul { + font-size: min(5vh, 5vw); + list-style-type: none; +} +#clock ul li { + position: absolute; + width: 100%; + height: 100%; + text-align: center; + padding: 4%; +} +#clock ul li:nth-child(1) { transform: rotate(30deg); } +#clock ul li:nth-child(1) div { transform: rotate(-30deg); } +#clock ul li:nth-child(2) { transform: rotate(60deg); } +#clock ul li:nth-child(2) div { transform: rotate(-60deg); } +#clock ul li:nth-child(3) { transform: rotate(90deg); } +#clock ul li:nth-child(3) div { transform: rotate(-90deg); } +#clock ul li:nth-child(4) { transform: rotate(120deg); } +#clock ul li:nth-child(4) div { transform: rotate(-120deg); } +#clock ul li:nth-child(5) { transform: rotate(150deg); } +#clock ul li:nth-child(5) div { transform: rotate(-150deg); } +#clock ul li:nth-child(6) { transform: rotate(180deg); } +#clock ul li:nth-child(6) div { transform: rotate(-180deg); } +#clock ul li:nth-child(7) { transform: rotate(210deg); } +#clock ul li:nth-child(7) div { transform: rotate(-210deg); } +#clock ul li:nth-child(8) { transform: rotate(240deg); } +#clock ul li:nth-child(8) div { transform: rotate(-240deg); } +#clock ul li:nth-child(9) { transform: rotate(270deg); } +#clock ul li:nth-child(9) div { transform: rotate(-270deg); } +#clock ul li:nth-child(10) { transform: rotate(300deg); } +#clock ul li:nth-child(10) div { transform: rotate(-300deg); } +#clock ul li:nth-child(11) { transform: rotate(330deg); } +#clock ul li:nth-child(11) div { transform: rotate(-330deg); } +.hand { + position: absolute; + width: 100%; + height: 100%; +} +.hand:before { + content: ' '; + position: absolute; + top: 50%; + left: 50%; + border-radius: 1em; + background-color: #373737; +} +body.night .hand:before { + background-color: rgb(220, 220, 220); +} +.center { + position: absolute; + width: 4%; + height: 4%; + background-color: #373737; + border-radius: 100%; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); +} +.center:before { + content: ' '; + background-color: #fafafa; + position: absolute; + width: 50%; + height: 50%; + left: 50%; + top: 50%; + transform: translate(-51%, -51%); + border-radius: 100%; +} +body.night .center { + background-color: rgb(220, 220, 220); +} +body.night .center:before { + background-color: rgb(37, 38, 42); +} +#second { + transform: rotate(-90deg); +} +#second:before { + height: 0.50%; + width: 52%; + background-color: #c64b4b; + margin-top: -0.25%; + left: 43%; +} +#minute { + transform: rotate(-90deg); +} +#minute:before { + height: 1.5%; + width: 45%; + margin-top: -0.75%; +} +#hour { + transform: rotate(-90deg); +} +#hour:before { + height: 2.5%; + width: 30%; + margin-top: -1.25%; +} +#date { + position: absolute; + color: #373737; + top: 50%; + right: 15%; + font-size: min(4vh, 4vw); + transform: translateY(-50%); +} +body.night #date { + color: rgb(230, 230, 230); +} +footer { + position: fixed; + font-size: min(3vh, 12px); + opacity: 0.5; + text-transform: uppercase; + bottom: 2.5%; +} +footer a { + text-decoration: none; + color: inherit; +} +footer a:hover { + text-decoration: underline; +} +@media (max-height: 400px) { + footer { + display: none; + } +} \ No newline at end of file diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..229d1eb73db0aae5c52bfdf508519598b60d5a62 GIT binary patch literal 13968 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 g+1dZ?3uQNi