186 lines
5.6 KiB
JavaScript
186 lines
5.6 KiB
JavaScript
/*
|
|
* 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 liberal"
|
|
|
|
//------------------------------------------------------------------------------
|
|
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)
|
|
}
|
|
|