// // countDown.js // // Created by Rebecca Stankus on 07/02/18 // Copyright 2018 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html (function () { var _this; var DEBUG = 1; var ONE_THOUSAND = 1000; var SECONDS_PER_MINUTE = 60; var MINUTES_PER_HOUR = 60; var HOURS_PER_DAY = 24; var TWO_DIGITS = 10; var TARGET_TIME_INDEX = 13; var Countdown = function() { _this = this; }; Countdown.prototype = { interval: null, targetTime: null, preload: function(entityID) { _this.entityID = entityID; _this.getTargetTime(); _this.synchronize(); _this.interval = Script.setInterval(function() { _this.synchronize(); }, ONE_THOUSAND); }, getTargetTime: function() { var name = Entities.getEntityProperties(_this.entityID, 'name').name; _this.targetTime = new Date(name.substring(TARGET_TIME_INDEX, (name.length))).getTime(); if (DEBUG) { print("target time is ", _this.targetTime); } }, synchronize: function() { var currentTime = new Date().getTime(); print("THE TIME IS NOW ", currentTime.getMonth(), "/", currentTime.getDate(), " ", currentTime.getHours(), ":", currentTime.getMinutes()); var untilTargetTime = _this.targetTime - currentTime; var days = Math.floor(untilTargetTime / (ONE_THOUSAND * SECONDS_PER_MINUTE * MINUTES_PER_HOUR * HOURS_PER_DAY)); var targetPassed = false; if (days < 0) { targetPassed = true; } else { days = days < TWO_DIGITS ? "0" + days : days; } var hours = Math.floor((untilTargetTime % (ONE_THOUSAND * SECONDS_PER_MINUTE * MINUTES_PER_HOUR * HOURS_PER_DAY)) / (ONE_THOUSAND * SECONDS_PER_MINUTE * MINUTES_PER_HOUR )); if (hours < 0) { targetPassed = true; } else { hours = hours < TWO_DIGITS ? "0" + hours : hours; } var minutes = Math.floor((untilTargetTime % (ONE_THOUSAND * SECONDS_PER_MINUTE * MINUTES_PER_HOUR )) / (ONE_THOUSAND * SECONDS_PER_MINUTE)); if (minutes < 0) { targetPassed = true; } else { minutes = minutes < TWO_DIGITS ? "0" + minutes : minutes; } var seconds = Math.floor((untilTargetTime % (ONE_THOUSAND * SECONDS_PER_MINUTE)) / ONE_THOUSAND); if (seconds < 0) { targetPassed = true; } else { seconds = seconds < TWO_DIGITS ? "0" + seconds : seconds; } if (targetPassed) { Entities.editEntity(_this.entityID, { text: "HOORAY!" }); } else { Entities.editEntity(_this.entityID, { text: days + "d " + hours + "h " + minutes + "m " + seconds + "s "}); } }, unload: function() { if (_this.interval) { Script.clearInterval(_this.interval); } } }; return new Countdown; });