troubleshooting Question

Finishing Touches on Race Clock

Avatar of Bob Schneider
Bob SchneiderFlag for United States of America asked on
JavaScriptASP
7 Comments1 Solution21 ViewsLast Modified:
Hi.  I am tryinmg to put the finishing touches on a web-based race clock.  It is not working for me.  The problem appears to be the value I am placing into the JS script.  

Here is the classic asp:
[code]
dRaceTime = Date & " " & ConvertToMinutes(Round(lngRaceStart + sngStartTime, 0))  'remove tenths
dRaceTime = Left(dRaceTime, Len(dRaceTime) - 2)  'truncate to remove ".0"
dRaceStart = DateDiff("s","1/1/1970 00:00:00", dRaceTime) * 1000  'convert to milliseconds
[/code]

js...pretty sure it is correct...not my code
[code]
            <script>
                var TTimer = {
                    startedTime: <%=dRaceStart%>,
                    restoredFromSession: false,
                    started: false,
                    minutes: 0,
                    seconds: 0,
                    
                    tick: function tick() {
                    // Since setInterval is not reliable in inactive windows/tabs we are using date diff.
                    var diffInSeconds = Math.floor((new Date() - this.startedTime) / 1000);
                    this.minutes = Math.floor(diffInSeconds / 60);
                    this.seconds = diffInSeconds - this.minutes * 60;
                    this.render();
                    this.updateSession();
                    },
                    
                    utilities: {
                    pad: function pad(number) {
                        return number < 10 ? '0' + number : number;
                    }
                    },
                    
                    container: function container() {
                    return $(document);
                    },
                    
                    render: function render() {
                    this.container().find('#timer-minutes').text(this.utilities.pad(this.minutes));
                    this.container().find('#timer-seconds').text(this.utilities.pad(this.seconds));
            
                    },
                    
                    updateSession: function updateSession() {
                    sessionStorage.setItem('timerStartedTime', this.startedTime);
                    },
                    
                    clearSession: function clearSession() {
                    sessionStorage.removeItem('timerStartedTime');
                    },
                    
                    restoreFromSession: function restoreFromSession() {
                    // Using sessionsStorage to make the timer persistent
                    if (typeof Storage == "undefined") {
                        console.log('No sessionStorage Support');
                        return;
                    }
            
                    if (sessionStorage.getItem('timerStartedTime') !== null) {
                        this.restoredFromSession = true;
                        this.startedTime = new Date(sessionStorage.getItem('timerStartedTime'));
                    }
                    },
                    
                    start: function start() {
                    this.restoreFromSession();
                    this.stop();
                    this.started = true;
                    this.tick();
                    this.timerId = setInterval(this.tick.bind(this), 1000);
                    },
                    
                    stop: function stop() {
                    this.started = false;
                    clearInterval(this.timerId);
                    this.render();
                    }
                };
            
                TTimer.start();
            </script>
[/code]


Join the community to see this answer!
Join our exclusive community to see this answer & millions of others.
Unlock 1 Answer and 7 Comments.
Join the Community
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 7 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros