blob: 50514d2294899d7795e5d1952d0f25bbadabc1fa [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
"use strict";
//------------------------------------------------------------------------------
var started = false
var buttonStartStuff
var buttonClearOutput
var outputElement
var storageIndex = 0
var db
var otherDB
// set the id based on the hash
var hash = location.href.split("#")[1]
if (!hash) hash = "anonymous"
window.WeinreServerId = hash
//------------------------------------------------------------------------------
function onLoad() {
if (!buttonStartStuff) buttonStartStuff = document.getElementById("button-start-stuff")
if (!buttonClearOutput) buttonClearOutput = document.getElementById("button-clear-output")
if (!outputElement) outputElement = document.getElementById("output")
buttonStartStuff.addEventListener("click", function() {
lastClickTime = new Date().toString()
if (db) db.transaction(addClick)
openTheOtherDatabase()
if (!started) {
buttonStartStuff.value = "stop stuff"
startStuff()
}
else {
buttonStartStuff.value = "start stuff"
stopStuff()
}
started = !started
})
buttonClearOutput.addEventListener("click", function() {
outputElement.innerHTML = ""
})
openTheDatabase()
}
//------------------------------------------------------------------------------
var interval
function startStuff() {
if (window.localStorage) window.localStorage.clear()
if (window.sessionStorage) window.sessionStorage.clear()
storageIndex = 0
interval = setInterval(intervalStuff, 1000)
}
function stopStuff() {
clearInterval(interval)
}
//------------------------------------------------------------------------------
function intervalStuff() {
var message = "doing interval stuff at " + new Date()
// add a timeout
setTimeout(function() { console.log(message)}, 333)
// add a timeline marker
console.markTimeline(message)
// write to local- and sessionStorage
if (window.localStorage) {
var smessage = message + " (local)"
window.localStorage.setItem( "item-" + storageIndex, smessage)
}
if (window.sessionStorage) {
var smessage = message + " (session)"
window.sessionStorage.setItem("item-" + storageIndex, smessage)
}
storageIndex++
// write the message to the page
output(message)
// do an XHR
var xhr = new XMLHttpRequest()
// xhr.addEventListener("readystatechange", function() {logXhr(this)})
xhr.open("GET", "../target/target-script.js", true)
xhr.send()
}
//------------------------------------------------------------------------------
function sqlSuccess(tx, resultSet) {
console.log("SQL Success!")
}
//------------------------------------------------------------------------------
function sqlError(tx, error) {
console.log("SQL Error " + error.code + ": " + error.message)
}
//------------------------------------------------------------------------------
var lastClickTime
function addClick(tx) {
var sql = "insert into clicks (date) values (?)"
tx.executeSql(sql, [lastClickTime], null, sqlError)
}
//------------------------------------------------------------------------------
function clearDatabase(tx, resultSet) {
var sql = "delete from clicks"
tx.executeSql(sql, null, null, sqlError);
}
//------------------------------------------------------------------------------
function createDatabase(tx) {
var schema = "clicks (id integer primary key, date text)"
var sql = "create table if not exists " + schema
tx.executeSql(sql, null, clearDatabase, sqlError);
}
//------------------------------------------------------------------------------
function createDatabase_other(tx) {
var schema = "clicks_other (id integer primary key, other text)"
var sql = "create table if not exists " + schema
tx.executeSql(sql, null, null, sqlError);
}
//------------------------------------------------------------------------------
function openTheDatabase() {
if (window.openDatabase) {
db = window.openDatabase("clicks_db", "1.0", "clicks_db", 8192)
db.transaction(createDatabase)
}
}
//------------------------------------------------------------------------------
function openTheOtherDatabase() {
if (otherDB) return
if (window.openDatabase) {
otherDB = window.openDatabase("clicks_other_db", "1.0", "clicks_other_db", 8192)
otherDB.transaction(createDatabase_other)
}
}
//------------------------------------------------------------------------------
function output(string) {
var element = document.createElement("div")
element.innerHTML = string
outputElement.appendChild(element)
}
//------------------------------------------------------------------------------
function logXhr(xhr) {
console.log("xhr: readyState: " + xhr.readyState)
}