mirror of
https://github.com/Esri/offline-editor-js.git
synced 2025-12-15 15:20:05 +00:00
more JSLint fixes
This commit is contained in:
parent
2e143c7b58
commit
6585928cf3
@ -1,4 +1,4 @@
|
||||
"use strict"
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Library for handling the storing of map tiles in IndexedDB.
|
||||
@ -30,7 +30,7 @@ define([],function()
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Adds an object to the database
|
||||
@ -43,19 +43,19 @@ define([],function()
|
||||
{
|
||||
var transaction = this._db.transaction(["tilepath"],"readwrite");
|
||||
|
||||
transaction.oncomplete = function(event)
|
||||
transaction.oncomplete = function()
|
||||
{
|
||||
callback(true);
|
||||
};
|
||||
|
||||
transaction.onerror = function(event)
|
||||
{
|
||||
callback(false,event.target.error.message)
|
||||
callback(false,event.target.error.message);
|
||||
};
|
||||
|
||||
var objectStore = transaction.objectStore("tilepath");
|
||||
var request = objectStore.put(urlDataPair);
|
||||
request.onsuccess = function(event)
|
||||
request.onsuccess = function()
|
||||
{
|
||||
//console.log("item added to db " + event.target.result);
|
||||
};
|
||||
@ -63,9 +63,9 @@ define([],function()
|
||||
catch(err)
|
||||
{
|
||||
console.log("TilesStore: " + err.stack);
|
||||
callback(false,err.stack);
|
||||
callback(false, err.stack);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Retrieve a record.
|
||||
@ -74,27 +74,29 @@ define([],function()
|
||||
*/
|
||||
this.retrieve = function(/* String */ url,callback)
|
||||
{
|
||||
if(this._db != null)
|
||||
if(this._db !== null)
|
||||
{
|
||||
var objectStore = this._db.transaction(["tilepath"]).objectStore("tilepath");
|
||||
var request = objectStore.get(url);
|
||||
request.onsuccess = function(event)
|
||||
{
|
||||
var result = event.target.result;
|
||||
if(result == null){
|
||||
if(!result)
|
||||
{
|
||||
callback(false,"not found");
|
||||
}
|
||||
else{
|
||||
else
|
||||
{
|
||||
callback(true,result);
|
||||
}
|
||||
}
|
||||
};
|
||||
request.onerror = function(err)
|
||||
{
|
||||
console.log(err);
|
||||
callback(false,err);
|
||||
}
|
||||
callback(false, err);
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Deletes entire database
|
||||
@ -102,25 +104,25 @@ define([],function()
|
||||
*/
|
||||
this.deleteAll = function(callback)
|
||||
{
|
||||
if(this._db != null)
|
||||
if(this._db !== null)
|
||||
{
|
||||
var request = this._db.transaction(["tilepath"],"readwrite")
|
||||
.objectStore("tilepath")
|
||||
.clear();
|
||||
request.onsuccess = function(event)
|
||||
request.onsuccess = function()
|
||||
{
|
||||
callback(true);
|
||||
}
|
||||
};
|
||||
request.onerror = function(err)
|
||||
{
|
||||
callback(false,err);
|
||||
}
|
||||
callback(false, err);
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
callback(false,null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Delete an individual entry
|
||||
@ -129,23 +131,25 @@ define([],function()
|
||||
*/
|
||||
this.delete = function(/* String */ url,callback)
|
||||
{
|
||||
if(this._db != null)
|
||||
if(this._db !== null)
|
||||
{
|
||||
var request = this._db.transaction(["tilepath"],"readwrite")
|
||||
.objectStore("tilepath")
|
||||
.delete(url);
|
||||
request.onsuccess = function(event){
|
||||
request.onsuccess = function()
|
||||
{
|
||||
callback(true);
|
||||
}
|
||||
request.onerror = function(err){
|
||||
callback(false,err);
|
||||
}
|
||||
};
|
||||
request.onerror = function(err)
|
||||
{
|
||||
callback(false, err);
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
callback(false,null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Retrieve all tiles from indexeddb
|
||||
@ -153,7 +157,7 @@ define([],function()
|
||||
*/
|
||||
this.getAllTiles = function(callback)
|
||||
{
|
||||
if(this._db != null){
|
||||
if(this._db !== null){
|
||||
var transaction = this._db.transaction(["tilepath"])
|
||||
.objectStore("tilepath")
|
||||
.openCursor();
|
||||
@ -167,26 +171,28 @@ define([],function()
|
||||
callback(url,img,null);
|
||||
cursor.continue();
|
||||
}
|
||||
else{
|
||||
else
|
||||
{
|
||||
callback(null, null, "end");
|
||||
}
|
||||
}.bind(this);
|
||||
transaction.onerror = function(err){
|
||||
transaction.onerror = function(err)
|
||||
{
|
||||
callback(null, null, err);
|
||||
}
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
callback(null, null, "no db");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Provides the size of database in bytes
|
||||
* @param callback callback(size, null) or callback(null, error)
|
||||
*/
|
||||
this.usedSpace = function(callback){
|
||||
if(this._db != null){
|
||||
if(this._db !== null){
|
||||
var usage = { sizeBytes: 0, tileCount: 0 };
|
||||
|
||||
var transaction = this._db.transaction(["tilepath"])
|
||||
@ -202,27 +208,30 @@ define([],function()
|
||||
usage.tileCount += 1;
|
||||
cursor.continue();
|
||||
}
|
||||
else{
|
||||
else
|
||||
{
|
||||
callback(usage,null);
|
||||
}
|
||||
}.bind(this);
|
||||
transaction.onerror = function(err){
|
||||
callback(null,err);
|
||||
}
|
||||
transaction.onerror = function(err)
|
||||
{
|
||||
callback(null, err);
|
||||
};
|
||||
}
|
||||
else{
|
||||
else
|
||||
{
|
||||
callback(null,null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
this._stringBytes = function(str) {
|
||||
return str.length /**2*/ ;
|
||||
}
|
||||
};
|
||||
|
||||
this.init = function(callback)
|
||||
{
|
||||
var request = indexedDB.open(DB_NAME, 4);
|
||||
callback = callback? callback : function(success) { console.log("TilesStore::init() success:", success)}.bind(this);
|
||||
callback = callback || function(success) { console.log("TilesStore::init() success:", success); }.bind(this);
|
||||
|
||||
request.onerror = function(event)
|
||||
{
|
||||
@ -239,7 +248,7 @@ define([],function()
|
||||
db.deleteObjectStore("tilepath");
|
||||
}
|
||||
|
||||
var objectStore = db.createObjectStore("tilepath", { keyPath: "url" });
|
||||
db.createObjectStore("tilepath", { keyPath: "url" });
|
||||
}.bind(this);
|
||||
|
||||
request.onsuccess = function(event)
|
||||
@ -248,7 +257,7 @@ define([],function()
|
||||
console.log("database opened successfully");
|
||||
callback(true);
|
||||
}.bind(this);
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
return TilesStore;
|
||||
});
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
"use strict"
|
||||
"use strict";
|
||||
|
||||
define([],function()
|
||||
{
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
"use strict"
|
||||
"use strict";
|
||||
|
||||
define([
|
||||
"dojo/query",
|
||||
@ -48,9 +48,13 @@ define([
|
||||
};
|
||||
|
||||
if( /*false &&*/ layer.offline.store.isSupported() )
|
||||
layer.offline.store.init(callback);
|
||||
{
|
||||
layer.offline.store.init(callback);
|
||||
}
|
||||
else
|
||||
return callback(false, "indexedDB not supported");
|
||||
{
|
||||
return callback(false, "indexedDB not supported");
|
||||
}
|
||||
|
||||
layer.resampling = false;
|
||||
|
||||
@ -91,7 +95,7 @@ define([
|
||||
var img = query("img[src="+tileid+"]")[0];
|
||||
var imgURL;
|
||||
|
||||
console.assert(typeof img != "undefined","undefined image detected");
|
||||
console.assert(img !== "undefined", "undefined image detected");
|
||||
|
||||
if( success )
|
||||
{
|
||||
@ -134,7 +138,7 @@ define([
|
||||
level: level,
|
||||
tileCount: cellIds.length,
|
||||
sizeBytes: cellIds.length * tileSize
|
||||
}
|
||||
};
|
||||
|
||||
return levelEstimation;
|
||||
};
|
||||
@ -151,8 +155,9 @@ define([
|
||||
/* create list of tiles to store */
|
||||
var tilingScheme = new TilingScheme(this,geometry);
|
||||
var cells = [];
|
||||
var level;
|
||||
|
||||
for(var level=minLevel; level<=maxLevel; level++)
|
||||
for(level=minLevel; level<=maxLevel; level++)
|
||||
{
|
||||
var level_cell_ids = tilingScheme.getAllCellIdsInExtent(extent,level);
|
||||
|
||||
@ -162,7 +167,7 @@ define([
|
||||
});
|
||||
|
||||
// if the number of requested tiles is excessive, we just stop
|
||||
if( cells.length > 5000 && level != maxLevel)
|
||||
if( cells.length > 5000 && level !== maxLevel)
|
||||
{
|
||||
console.log("enough is enough!");
|
||||
break;
|
||||
@ -217,7 +222,7 @@ define([
|
||||
{
|
||||
var store = this.offline.store;
|
||||
store.deleteAll(callback);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets the size in bytes of the local tile cache.
|
||||
@ -243,9 +248,9 @@ define([
|
||||
if(url)
|
||||
{
|
||||
var components = url.split("/");
|
||||
var level = parseInt(components[ components.length - 3]);
|
||||
var col = parseInt(components[ components.length - 2]);
|
||||
var row = parseInt(components[ components.length - 1]);
|
||||
var level = parseInt(components[ components.length - 3],10);
|
||||
var col = parseInt(components[ components.length - 2],10);
|
||||
var row = parseInt(components[ components.length - 1],10);
|
||||
var cellId = [row,col];
|
||||
var polygon = tilingScheme.getCellPolygonFromCellId(cellId, level);
|
||||
//if( level == 15)
|
||||
@ -256,7 +261,7 @@ define([
|
||||
callback(null,err);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Saves tile cache into a portable csv format.
|
||||
@ -271,35 +276,33 @@ define([
|
||||
csv.push("url,img");
|
||||
store.getAllTiles(function(url,img,evt)
|
||||
{
|
||||
if(evt=="end")
|
||||
if(evt==="end")
|
||||
{
|
||||
var blob = new Blob([ csv.join("\r\n") ], {type:"text/plain;charset=utf-8"});
|
||||
var saver = FileSaver.saveAs(blob, fileName);
|
||||
|
||||
if( saver.readyState == saver.DONE )
|
||||
if( saver.readyState === saver.DONE )
|
||||
{
|
||||
if( saver.error )
|
||||
return callback(false,"Error saving file " + fileName);
|
||||
else
|
||||
return callback(true, "Saved " + (csv.length-1) + " tiles (" + Math.floor(blob.size / 1024 / 1024 * 100) / 100 + " Mb) into " + fileName);
|
||||
}
|
||||
else
|
||||
{
|
||||
saver.onerror = function(evt) {
|
||||
callback(false,"Error saving file " + fileName);
|
||||
}
|
||||
saver.onwriteend = function(evt)
|
||||
{
|
||||
callback(true, "Saved " + (csv.length-1) + " tiles (" + Math.floor(blob.size / 1024 / 1024 * 100) / 100 + " Mb) into " + fileName);
|
||||
return callback(false,"Error saving file " + fileName);
|
||||
}
|
||||
return callback(true, "Saved " + (csv.length-1) + " tiles (" + Math.floor(blob.size / 1024 / 1024 * 100) / 100 + " Mb) into " + fileName);
|
||||
}
|
||||
saver.onerror = function() {
|
||||
callback(false,"Error saving file " + fileName);
|
||||
};
|
||||
saver.onwriteend = function()
|
||||
{
|
||||
callback(true, "Saved " + (csv.length-1) + " tiles (" + Math.floor(blob.size / 1024 / 1024 * 100) / 100 + " Mb) into " + fileName);
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
csv.push(url+","+img);
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Reads a csv file into local tile cache.
|
||||
@ -311,7 +314,7 @@ define([
|
||||
console.log("reading",file);
|
||||
|
||||
var store = this.offline.store;
|
||||
var layer = this;
|
||||
var i;
|
||||
|
||||
if (window.File && window.FileReader && window.FileList && window.Blob)
|
||||
{
|
||||
@ -322,26 +325,31 @@ define([
|
||||
var csvContent = evt.target.result;
|
||||
var tiles = csvContent.split("\r\n");
|
||||
var tileCount = 0;
|
||||
var pair, tile;
|
||||
|
||||
if(tiles[0] != "url,img")
|
||||
if(tiles[0] !== "url,img")
|
||||
{
|
||||
return callback(false, "File " + file.name + " doesn't contain tiles that can be loaded");
|
||||
}
|
||||
|
||||
for(var i=1; i<tiles.length; i++)
|
||||
for(i=1; i<tiles.length; i++)
|
||||
{
|
||||
var pair = tiles[i].split(',');
|
||||
var tile = {
|
||||
pair = tiles[i].split(',');
|
||||
tile = {
|
||||
url: pair[0],
|
||||
img: pair[1]
|
||||
}
|
||||
};
|
||||
console.log("read",tile.url);
|
||||
store.store(tile,function(success)
|
||||
{
|
||||
console.log(".");
|
||||
|
||||
if( success )
|
||||
{
|
||||
tileCount += 1;
|
||||
}
|
||||
|
||||
if( tileCount == tiles.length-1)
|
||||
if( tileCount === tiles.length-1)
|
||||
{
|
||||
console.log("finished!");
|
||||
window.setTimeout(function() { /* refresh layer by zooming in and out, or some way that really refreshes the layer */ }, 1000);
|
||||
@ -356,7 +364,7 @@ define([
|
||||
{
|
||||
callback(false, 'The File APIs are not fully supported in this browser.');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/* internal methods */
|
||||
|
||||
@ -369,7 +377,8 @@ define([
|
||||
*/
|
||||
layer.estimateTileSize = function(callback)
|
||||
{
|
||||
if(layer._lastTileUrl){
|
||||
if(layer._lastTileUrl)
|
||||
{
|
||||
var url = this.offline.proxyPath? this.offline.proxyPath + "?" + layer._lastTileUrl : layer._lastTileUrl;
|
||||
request.get(url,{
|
||||
handleAs: "text/plain; charset=x-user-defined",
|
||||
@ -400,7 +409,7 @@ define([
|
||||
extent.xmin -= buffer; extent.ymin -= buffer;
|
||||
extent.xmax += buffer; extent.ymax += buffer;
|
||||
return extent;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Helper method that returns an array of tile urls within a given extent and level
|
||||
@ -413,16 +422,15 @@ define([
|
||||
|
||||
level_cell_ids.forEach(function(cell_id)
|
||||
{
|
||||
cells.push(layer.url + "/" + level + "/" + cell_id[1] + "/" + cell_id[0])
|
||||
cells.push(layer.url + "/" + level + "/" + cell_id[1] + "/" + cell_id[0]);
|
||||
}.bind(this));
|
||||
|
||||
return cells;
|
||||
}
|
||||
};
|
||||
|
||||
layer._doNextTile = function(i, cells, reportProgress)
|
||||
{
|
||||
var cell = cells[i];
|
||||
var error;
|
||||
|
||||
this._storeTile(cell.level,cell.row,cell.col, function(success, error)
|
||||
{
|
||||
@ -434,13 +442,17 @@ define([
|
||||
|
||||
var cancelRequested = reportProgress({countNow:i, countMax:cells.length, cell: cell, error: error, finishedDownloading:false});
|
||||
|
||||
if( cancelRequested || i==cells.length-1 )
|
||||
reportProgress({ finishedDownloading: true, cancelRequested: cancelRequested})
|
||||
if( cancelRequested || i === cells.length-1 )
|
||||
{
|
||||
reportProgress({ finishedDownloading: true, cancelRequested: cancelRequested});
|
||||
}
|
||||
else
|
||||
{
|
||||
this._doNextTile(i+1, cells, reportProgress);
|
||||
}
|
||||
|
||||
}.bind(this))
|
||||
}
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
layer._storeTile = function(level,row,col,callback) // callback(success, msg)
|
||||
{
|
||||
@ -456,14 +468,14 @@ define([
|
||||
|
||||
req.onload = function()
|
||||
{
|
||||
if( req.status == 200 && req.responseText != "")
|
||||
if( req.status === 200 && req.responseText !== "")
|
||||
{
|
||||
var img = Base64Utils.wordToBase64(Base64Utils.stringToWord(this.responseText));
|
||||
|
||||
var tile = {
|
||||
url: url,
|
||||
img: img
|
||||
}
|
||||
};
|
||||
|
||||
store.store(tile,callback);
|
||||
}
|
||||
@ -472,12 +484,12 @@ define([
|
||||
console.log("xhr failed for", imgurl);
|
||||
callback(false, req.status + " " + req.statusText + ": " + req.response + " when downloading " + imgurl);
|
||||
}
|
||||
}
|
||||
};
|
||||
req.onerror = function(e)
|
||||
{
|
||||
console.log("xhr failed for", imgurl);
|
||||
callback(false, e);
|
||||
}
|
||||
};
|
||||
req.send(null);
|
||||
};
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
"use strict"
|
||||
"use strict";
|
||||
|
||||
define([
|
||||
"esri/geometry"
|
||||
@ -8,7 +8,7 @@ define([
|
||||
var TilingScheme = function(layer)
|
||||
{
|
||||
this.tileInfo = layer.tileInfo;
|
||||
}
|
||||
};
|
||||
|
||||
TilingScheme.prototype =
|
||||
{
|
||||
@ -37,7 +37,7 @@ define([
|
||||
[x2,y1],
|
||||
[x2,y2],
|
||||
[x1,y2],
|
||||
[x1,y1],
|
||||
[x1,y1]
|
||||
]);
|
||||
return polygon;
|
||||
},
|
||||
@ -56,14 +56,15 @@ define([
|
||||
var cellIds = [];
|
||||
|
||||
for(i=i0; i<=i1; i++)
|
||||
{
|
||||
for(j=j0; j<=j1; j++)
|
||||
{
|
||||
cellIds.push([i,j]);
|
||||
}
|
||||
|
||||
}
|
||||
return cellIds;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return TilingScheme;
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user