| /* |
| * 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. |
| */ |
| |
| //------------------------------------------------------------------------------ |
| 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) |
| } |
| |