96 lines
No EOL
3.4 KiB
JavaScript
96 lines
No EOL
3.4 KiB
JavaScript
//
|
|
// 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;
|
|
|
|
}); |