MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    Clock Clock 24

    Scheduled Pinned Locked Moved Requests
    7 Posts 3 Posters 981 Views 4 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Piranha1605P Offline
      Piranha1605
      last edited by

      Do you mean it

      Unbenannt.jpg

      lavolp3L 1 Reply Last reply Reply Quote 1
      • lavolp3L Offline
        lavolp3 Module Developer @Piranha1605
        last edited by lavolp3

        @Piranha1605 @cmgp LOL!

        How to troubleshoot modules
        MMM-soccer v2, MMM-AVStock

        1 Reply Last reply Reply Quote 0
        • C Offline
          cmgp @lavolp3
          last edited by

          @lavolp3 Actually the programmer posted the code too bad i can’t make a module:

          HTML
          .art

          • var d = 0;
            while d < 4
            .digit
            - var c = 0;
            while c < 6
            svg(class=clock clock--${d * 6 + c} width=“100” height=“100” viewBox=“0 0 100 100”)
            path(class=“clock-smallHand” d=“M50,47 C48.3431458,47 47,48.3431458 47,50 C47,51.6568542 48.3431458,53 50,53 L95,53 L95,47 L50,47 Z” stroke=“none” fill=“#4A4A4A” fill-rule=“evenodd”)
            path(class=“clock-largeHand” d=“M50,47 C48.3431458,47 47,48.3431458 47,50 C47,51.6568542 48.3431458,53 50,53 L100,53 L100,47 L50,47 Z” stroke=“none” fill=“#4A4A4A” fill-rule=“evenodd”)
            - c++
            - d++
            .text
            h1 Clock Clock 24
            p
            small Code
            br
            a(href=“https://manu.ninja/”) Manuel Wieser
            p
            small Design
            br
            a(href=“http://www.humanssince1982.com/”) Humans since 1982
            .trigger.trigger–left
            .trigger.trigger–right

          CSS

          html {
          width: 100%;
          height: 100%;
          }

          body {
          min-height: 100%;

          display: flex;
          flex-direction: column;
          align-items: center;
          justify-content: center;

          font-family: ‘Source Sans Pro’, sans-serif;
          color: #4a4a4a;

          cursor: default;
          }

          .art {
          cursor: zoom-in;
          margin: 5vw 0;
          }

          .art–full {
          cursor: zoom-out;
          }

          .text {
          margin-bottom: 5vw;
          text-align: center;
          }

          a {
          color: lighten(#4a4a4a, 25%);
          text-decoration: none;
          }

          .digit {
          float: left;
          }

          .clock {
          –small-hand: -135deg;
          –large-hand: -45deg;

          margin: .3vw; // 3px
          width: 10vw;
          height: 10vw;

          border-radius: 50%;
          box-shadow: inset 0 1px 3px rgba(0, 0, 0, .25);

          float: left;
          &:nth-of-type(2n+1) {
          clear: left;
          }
          }

          .clock-smallHand,
          .clock-largeHand {
          transform-origin: 50px center;
          transition: transform 10s;
          }

          .clock-smallHand {
          transform: rotateZ(var(–small-hand));
          }

          .clock-largeHand {
          transform: rotateZ(var(–large-hand));
          }

          .s-hidden {
          display: none;
          }

          .trigger {
          position: fixed;
          bottom: 0;
          width: 25%;
          height: 5vw;
          cursor: help;
          }

          .trigger–left {
          left: 0;
          }

          .trigger–right {
          right: 0;
          }

          JS

          const digits = [
          [ // 0
          { hour: 6, minute: 15 },
          { hour: 9, minute: 30 },
          { hour: 6, minute: 0 },
          { hour: 0, minute: 30 },
          { hour: 3, minute: 0 },
          { hour: 0, minute: 45 }
          ], [ // 1
          { hour: 7.5, minute: 37.5 },
          { hour: 6, minute: 30 },
          { hour: 7.5, minute: 37.5 },
          { hour: 6, minute: 0 },
          { hour: 7.5, minute: 37.5 },
          { hour: 0, minute: 0 }
          ], [ // 2
          { hour: 3, minute: 15 },
          { hour: 9, minute: 30 },
          { hour: 6, minute: 15 },
          { hour: 0, minute: 45 },
          { hour: 0, minute: 15 },
          { hour: 9, minute: 45 }
          ], [ // 3
          { hour: 3, minute: 15 },
          { hour: 9, minute: 30 },
          { hour: 3, minute: 15 },
          { hour: 9, minute: 0 },
          { hour: 3, minute: 15 },
          { hour: 9, minute: 0 }
          ], [ // 4
          { hour: 6, minute: 30 },
          { hour: 6, minute: 30 },
          { hour: 0, minute: 15 },
          { hour: 6, minute: 0 },
          { hour: 7.5, minute: 37.5 },
          { hour: 0, minute: 0 }
          ], [ // 5
          { hour: 6, minute: 15 },
          { hour: 9, minute: 45 },
          { hour: 0, minute: 15 },
          { hour: 6, minute: 45 },
          { hour: 3, minute: 15 },
          { hour: 0, minute: 45 }
          ], [ // 6
          { hour: 6, minute: 15 },
          { hour: 9, minute: 45 },
          { hour: 6, minute: 0 },
          { hour: 6, minute: 45 },
          { hour: 0, minute: 15 },
          { hour: 0, minute: 45 }
          ], [ // 7
          { hour: 3, minute: 15 },
          { hour: 6, minute: 45 },
          { hour: 7.5, minute: 37.5 },
          { hour: 6, minute: 0 },
          { hour: 7.5, minute: 37.5 },
          { hour: 0, minute: 0 }
          ], [ // 8
          { hour: 6, minute: 15 },
          { hour: 6, minute: 45 },
          { hour: 0, minute: 15 },
          { hour: 0, minute: 45 },
          { hour: 0, minute: 15 },
          { hour: 0, minute: 45 }
          ], [ // 9
          { hour: 6, minute: 15 },
          { hour: 6, minute: 45 },
          { hour: 3, minute: 0 },
          { hour: 6, minute: 0 },
          { hour: 3, minute: 15 },
          { hour: 0, minute: 45 }
          ]
          ];

          const happyDigit = Array(6).fill({ hour: 22.5, minute: 7.5 });
          const neutralDigit = Array(6).fill({ hour: 7.5, minute: 7.5 });

          function showSpecialState(digit) {
          stopClock();
          for (let x = 0; x < 4; x++) {
          setDigit(x, digit);
          }
          window.setTimeout(() => startClock(), 10000);
          }

          document.querySelector(‘.trigger–left’).addEventListener(‘click’, e => {
          showSpecialState(happyDigit);
          });

          document.querySelector(‘.trigger–right’).addEventListener(‘click’, e => {
          showSpecialState(neutralDigit);
          });

          window.addEventListener(‘keydown’, e => {
          const h = 72;
          const n = 78;
          if (h === e.keyCode) {
          showSpecialState(happyDigit);
          }
          if (n === e.keyCode) {
          showSpecialState(neutralDigit);
          }
          });

          document.querySelector(‘.art’).addEventListener(‘click’, e => {
          document.querySelector(‘.text’).classList.toggle(‘s-hidden’);
          document.querySelector(‘.art’).classList.toggle(‘art–full’);
          })

          function hourToDegrees(hour) {
          return hour * (360 / 12) - 90;
          }

          function minuteToDegrees(minute) {
          return minute * (360 / 60) - 90;
          }

          function setHands(id, hour, minute) {
          const clock = document.querySelector(.clock--${id});
          clock.style.setProperty(--small-hand, ${hourToDegrees(hour) + 360}deg);
          clock.style.setProperty(--large-hand, ${minuteToDegrees(minute) - 360}deg);
          }

          function setDigit(id, values) {
          for (let x = 0; x < 6; x++) {
          setHands(id * 6 + x, values[x].hour, values[x].minute);
          }
          }

          function setTime(time) {
          setDigit(0, digits[time.charAt(0)]);
          setDigit(1, digits[time.charAt(1)]);
          setDigit(2, digits[time.charAt(3)]);
          setDigit(3, digits[time.charAt(4)]);
          }

          let state;
          let interval;

          function startClock() {
          state = ‘----’;
          interval = window.setInterval(() => {
          const time = new Date(Date.now() + 10000).toTimeString();
          if (time !== state) {
          setTime(time);
          state = time;
          }
          }, 1000);
          }

          function stopClock() {
          clearInterval(interval);
          }

          startClock();

          1 Reply Last reply Reply Quote 0
          • Piranha1605P Offline
            Piranha1605
            last edited by

            Download the zip file from codepen and load everything with MMM-iFrame or with my MMM-Watchstore.

            C 1 Reply Last reply Reply Quote 0
            • C Offline
              cmgp @Piranha1605
              last edited by

              @Piranha1605 Thanks for the help works perfectly with watchstore couldn’t get it to work with iframe.

              1 Reply Last reply Reply Quote 0
              • 1 / 1
              • First post
                Last post
              Enjoying MagicMirror? Please consider a donation!
              MagicMirror created by Michael Teeuw.
              Forum managed by Sam, technical setup by Karsten.
              This forum is using NodeBB as its core | Contributors
              Contact | Privacy Policy