<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>scriptDB data input - ramblings.mcpher.com</title>
<link rel="stylesheet" type="text/css" href="https://storage.googleapis.com/toasty/cdn/css/d3flights.css">
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="https://apis.google.com/js/client.js"></script>
<script type="text/javascript" src="js/scriptdbapi.js"></script>
<script type="text/javascript" src="js/firsttime.js"></script>
<script type="text/javascript" src="https://storage.googleapis.com/toasty/cdn/js/ccookie.js"></script>
<script type="text/javascript">
/* v1.0
*/
// do various test excercises on cScrptDbCom class
(function () {
google.load("jquery", "1");
google.setOnLoadCallback(function() {
// these create cookies with credentials for scriptdbAPI,
// They only need to be run once for a pc, so they should be in some different script
firstTimeReadonly();
firstTimeTest();
// copy a couple of classes from the primer database to the test one
testCopy()
.done (function() {
// do a query------
var dbCustomer = getScriptDb("VBAParseCustomers","dbTest");
dbCustomer.getObjectsByQuery({country:"United States"})
.done (function (data,cob) {
renderScriptDb(data.results,'#countryquery');
})
// look up date in another table based on data in another
var dbData = getScriptDb("VBAParseData","dbTest");
// restrict to paricular customers
dbCustomer.getObjectsByQuery({country:"United States"})
.done (function (data,cob) {
$('#matchquery').html('');
for ( var i = 0 ; i < data.results.length;i++) {
printTransaction (dbData,data.results[i]);
}
})
});
function printTransaction (dbData,result) {
dbData.getObjectsByQuery({customerid:result.customerid})
.done (function (transaction,cob) {
if (transaction.results.length) {
$('#matchquery').append(JSON.stringify(
{ country:result.country,
name:result.name,
transaction:transaction.results
}) + '<br>');
}
});
}
});
})();
function testCopy() {
// do the copies simulatneously
var dd = dbCopy ("primer", "dbTest", "VBAParseData");
var dc = dbCopy ("primer", "dbTest", "VBAParseCustomers");
// report when done
showCount (dd,'#countcopydata');
showCount (dc,'#countcopycustomers');
// we can return a promise for them all being done
return $.when(dd,dc);
// show counts
function showCount (promise, elemID ) {
promise
.done (function(pData,cob) {
cob.getCount()
.done (function (data) {
renderScriptDb(data.count,elemID);
})
.fail(function (error) {
renderScriptDb(JSON.stringify(error),elemID);
});
})
.fail(function(error) {
alert (JSON.stringify(error));
});
}
function dbCopy( source, target , cls) {
var dbSource = getScriptDb(cls,source);
var dbTarget = getScriptDb(cls,target);
var d= $.Deferred();
//delete everything in source db of this class
if (!(dbTarget && dbSource)) {
d.reject ("scriptdbs not opened");
}
else {
dbTarget.deleteObjects()
.done( function() {
// get the whole thing
dbSource.getAllMatchingQueries()
.done (function (data){
// copy to target
dbTarget.createObjects(data);
// clear anything in batch not yet done.
dbTarget.finalFlush()
.done(function(data,cob){
d.resolve(data,cob);
})
.fail(function(error,cob){
d.reject(error,cob);
});
})
.fail ( function (error,cob){
// failed to do a query
alert (JSON.stringify(error));
});
})
.fail( function (error,cob){
// didnt manage to delete it
alert (JSON.stringify(error));
});
}
return d.promise();
}
}
/* display contents of some object at given element
* @param {object} control some object
* @param {string} id the id of the element
* @return {null}
*/
function renderScriptDb(control,id) {
$(id).text(JSON.stringify(control));
}
</script>
</head>
<body>
<div>
<h2>Test scriptdb query access</h2>
</div>
<div><h2>after copy<br></h2>
<div><b>Count on customers</b><div id="countcopycustomers"></div></div>
<div><b>Count on data</b><div id="countcopydata"></div></div>
<div><b>object query</b><div id="countryquery"></div></div>
<div><b>match query</b><div id="matchquery"></div></div>
</div>
</div>
</body>
</html>