From 0ad3e56e78aa153ca0afec378dab9401a8c2dfe5 Mon Sep 17 00:00:00 2001 From: Javier Abadia Date: Mon, 16 Dec 2013 15:50:45 +0100 Subject: [PATCH 01/17] one more server --- tiles/proxy.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tiles/proxy.php b/tiles/proxy.php index 3ebc95b..45c05b9 100755 --- a/tiles/proxy.php +++ b/tiles/proxy.php @@ -42,9 +42,10 @@ array( 'url' => 'http://tiles4.arcgis.com/tiles/', 'matchAll' => true, 'token' => '' ), array( 'url' => 'http://www.mapabase.es/ArcGIS/', 'matchAll' => true, 'token' => '' ), array( 'url' => 'http://server.arcgisonline.com/ArcGIS/rest/services/', 'matchAll' => true, 'token' => '' ), - array( 'url' => 'http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/', 'matchAll' => true, 'token' => '' ), array( 'url' => 'http://services.arcgisonline.com/ArcGIS/rest/services/', 'matchAll' => true, 'token' => '' ), + array( 'url' => 'http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/', 'matchAll' => true, 'token' => '' ), array( 'url' => 'http://sampleserver2.arcgisonline.com/ArcGIS/rest/services/', 'matchAll' => true, 'token' => '' ), + array( 'url' => 'http://sampleserver5.arcgisonline.com/ArcGIS/rest/services/', 'matchAll' => true, 'token' => '' ), array( 'url' => 'http://sampleserver1a.arcgisonline.com/arcgisoutput/', 'matchAll' => true, 'token' => '' ), array( 'url' => 'http://sampleserver1b.arcgisonline.com/arcgisoutput/', 'matchAll' => true, 'token' => '' ), array( 'url' => 'http://sampleserver1c.arcgisonline.com/arcgisoutput/', 'matchAll' => true, 'token' => '' ) From 01588f71bb822b052c8ce19cf4f1739740ad6956 Mon Sep 17 00:00:00 2001 From: Javier Abadia Date: Mon, 16 Dec 2013 15:50:57 +0100 Subject: [PATCH 02/17] more issues to work on --- tiles/ISSUES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tiles/ISSUES.md b/tiles/ISSUES.md index dece3ba..9067397 100644 --- a/tiles/ISSUES.md +++ b/tiles/ISSUES.md @@ -18,7 +18,9 @@ - [x] test iPad/iPhone **DONE**, it works! - [ ] unit testing +- [ ] update README.md - [ ] better tile estimation and limits +- [ ] keep on downloading tiles even if one of them fails - [ ] allow naming caches? - [ ] more general proxy.php From b8c9f4ccac626a461150ea3995e2b7f9b5b9abca Mon Sep 17 00:00:00 2001 From: Javier Abadia Date: Mon, 16 Dec 2013 17:07:03 +0100 Subject: [PATCH 03/17] better error handling when indexeddb is not supported --- tiles/ISSUES.md | 1 + tiles/main.js | 5 +++++ tiles/src/offlineEnabler.js | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tiles/ISSUES.md b/tiles/ISSUES.md index 9067397..b7695fc 100644 --- a/tiles/ISSUES.md +++ b/tiles/ISSUES.md @@ -21,6 +21,7 @@ - [ ] update README.md - [ ] better tile estimation and limits - [ ] keep on downloading tiles even if one of them fails +- [ ] add message telling that something failed while initing the indexedDB - [ ] allow naming caches? - [ ] more general proxy.php diff --git a/tiles/main.js b/tiles/main.js index 3c9ba65..26e516a 100644 --- a/tiles/main.js +++ b/tiles/main.js @@ -136,6 +136,11 @@ require(["esri/map", else { dojo.byId('prepare-for-offline-btn').disabled = true; + dojo.byId('delete-all-tiles-btn').disabled = true; + dojo.byId('go-offline-btn').disabled = true; + dojo.byId('go-online-btn').disabled = true; + dojo.byId('update-offline-usage').disabled = true; + dojo.byId('show-stored-tiles').disabled = true; esri.hide(dojo.byId('downloading-ui')); /* JAMI: TODO add message telling that something failed while initing the indexedDB */ } diff --git a/tiles/src/offlineEnabler.js b/tiles/src/offlineEnabler.js index 83960cf..4ad03a2 100644 --- a/tiles/src/offlineEnabler.js +++ b/tiles/src/offlineEnabler.js @@ -37,7 +37,7 @@ define([ store: new DbStore() }; - if( layer.offline.store.isSupported() ) + if( /*false &&*/ layer.offline.store.isSupported() ) layer.offline.store.init(callback); else return callback(false, "indexedDB not supported"); From 86cb30b3080b039395693cd9c88c7d3aa19e548c Mon Sep 17 00:00:00 2001 From: Javier Abadia Date: Sun, 15 Dec 2013 22:54:04 +0100 Subject: [PATCH 04/17] moved jasmine lib to \vendor directory --- test/jasmine/SpecRunner.html | 8 ++++---- {test/jasmine/lib => vendor}/jasmine-1.3.1/MIT.LICENSE | 0 .../jasmine/lib => vendor}/jasmine-1.3.1/jasmine-html.js | 0 {test/jasmine/lib => vendor}/jasmine-1.3.1/jasmine.css | 0 {test/jasmine/lib => vendor}/jasmine-1.3.1/jasmine.js | 0 5 files changed, 4 insertions(+), 4 deletions(-) rename {test/jasmine/lib => vendor}/jasmine-1.3.1/MIT.LICENSE (100%) rename {test/jasmine/lib => vendor}/jasmine-1.3.1/jasmine-html.js (100%) rename {test/jasmine/lib => vendor}/jasmine-1.3.1/jasmine.css (100%) rename {test/jasmine/lib => vendor}/jasmine-1.3.1/jasmine.js (100%) diff --git a/test/jasmine/SpecRunner.html b/test/jasmine/SpecRunner.html index 25d3261..ea45da3 100755 --- a/test/jasmine/SpecRunner.html +++ b/test/jasmine/SpecRunner.html @@ -4,10 +4,10 @@ Jasmine Spec Runner - - - - + + + + diff --git a/test/jasmine/lib/jasmine-1.3.1/MIT.LICENSE b/vendor/jasmine-1.3.1/MIT.LICENSE similarity index 100% rename from test/jasmine/lib/jasmine-1.3.1/MIT.LICENSE rename to vendor/jasmine-1.3.1/MIT.LICENSE diff --git a/test/jasmine/lib/jasmine-1.3.1/jasmine-html.js b/vendor/jasmine-1.3.1/jasmine-html.js similarity index 100% rename from test/jasmine/lib/jasmine-1.3.1/jasmine-html.js rename to vendor/jasmine-1.3.1/jasmine-html.js diff --git a/test/jasmine/lib/jasmine-1.3.1/jasmine.css b/vendor/jasmine-1.3.1/jasmine.css similarity index 100% rename from test/jasmine/lib/jasmine-1.3.1/jasmine.css rename to vendor/jasmine-1.3.1/jasmine.css diff --git a/test/jasmine/lib/jasmine-1.3.1/jasmine.js b/vendor/jasmine-1.3.1/jasmine.js similarity index 100% rename from test/jasmine/lib/jasmine-1.3.1/jasmine.js rename to vendor/jasmine-1.3.1/jasmine.js From 5df313661e46c71b1c7c95596e1dc60d43944534 Mon Sep 17 00:00:00 2001 From: Javier Abadia Date: Sun, 15 Dec 2013 23:25:08 +0100 Subject: [PATCH 05/17] change module loading to allow unit testing --- test/jasmine/SpecRunner.tiles.html | 60 +++++++++++++++++++++++++ test/jasmine/spec/offlineEnablerSpec.js | 19 ++++++++ tiles/index.html | 7 +++ tiles/main.js | 2 +- tiles/{src => tiles}/base64utils.js | 0 tiles/{src => tiles}/dbStore.js | 0 tiles/{src => tiles}/offlineEnabler.js | 8 ++-- tiles/{src => tiles}/tilingScheme.js | 0 8 files changed, 91 insertions(+), 5 deletions(-) create mode 100755 test/jasmine/SpecRunner.tiles.html create mode 100644 test/jasmine/spec/offlineEnablerSpec.js rename tiles/{src => tiles}/base64utils.js (100%) rename tiles/{src => tiles}/dbStore.js (100%) rename tiles/{src => tiles}/offlineEnabler.js (97%) rename tiles/{src => tiles}/tilingScheme.js (100%) diff --git a/test/jasmine/SpecRunner.tiles.html b/test/jasmine/SpecRunner.tiles.html new file mode 100755 index 0000000..85b3062 --- /dev/null +++ b/test/jasmine/SpecRunner.tiles.html @@ -0,0 +1,60 @@ + + + + Jasmine Spec Runner - Tiles + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/jasmine/spec/offlineEnablerSpec.js b/test/jasmine/spec/offlineEnablerSpec.js new file mode 100644 index 0000000..ab6d990 --- /dev/null +++ b/test/jasmine/spec/offlineEnablerSpec.js @@ -0,0 +1,19 @@ +"use strict" + +describe("offline enabler library", function() +{ + it("extends the tiled layer object", function() + { + + }); + + it("can go offline", function() + { + + }); + + it("delete all tiles", function() + { + + }); +}); \ No newline at end of file diff --git a/tiles/index.html b/tiles/index.html index b700e59..eac80df 100644 --- a/tiles/index.html +++ b/tiles/index.html @@ -134,6 +134,13 @@ + + + diff --git a/tiles/main.js b/tiles/main.js index 26e516a..b8b3c29 100644 --- a/tiles/main.js +++ b/tiles/main.js @@ -12,7 +12,7 @@ require(["esri/map", "dojo/dom", "dojo/on", "dojo/query", "../vendor/bootstrap-map-js/src/js/bootstrapmap.js", "esri/urlUtils", "esri/geometry/webMercatorUtils", - "/offline/tiles/src/offlineEnabler.js", + "tiles/offlineEnabler", "dojo/dom-construct", "dojo/domReady!"], function(Map, GraphicsLayer, Graphic, SimpleFillSymbol, diff --git a/tiles/src/base64utils.js b/tiles/tiles/base64utils.js similarity index 100% rename from tiles/src/base64utils.js rename to tiles/tiles/base64utils.js diff --git a/tiles/src/dbStore.js b/tiles/tiles/dbStore.js similarity index 100% rename from tiles/src/dbStore.js rename to tiles/tiles/dbStore.js diff --git a/tiles/src/offlineEnabler.js b/tiles/tiles/offlineEnabler.js similarity index 97% rename from tiles/src/offlineEnabler.js rename to tiles/tiles/offlineEnabler.js index 4ad03a2..f0e84d3 100644 --- a/tiles/src/offlineEnabler.js +++ b/tiles/tiles/offlineEnabler.js @@ -3,9 +3,9 @@ define([ "dojo/query", "esri/geometry", - "/offline//tiles/src/base64utils.js", - "/offline/tiles/src/dbStore.js", - "/offline/tiles/src/tilingScheme.js" + "tiles/base64utils", + "tiles/dbStore", + "tiles/tilingScheme" ], function(query, geometry,Base64Utils,DbStore,TilingScheme) { return { @@ -178,7 +178,7 @@ define([ url = url.split('?')[0]; /* download the tile */ - var imgurl = "../tiles/proxy.php?" + url; + var imgurl = "proxy.php?" + url; var req = new XMLHttpRequest(); req.open("GET", imgurl, true); req.overrideMimeType("text/plain; charset=x-user-defined"); // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest?redirectlocale=en-US&redirectslug=DOM%2FXMLHttpRequest%2FUsing_XMLHttpRequest#Handling_binary_data diff --git a/tiles/src/tilingScheme.js b/tiles/tiles/tilingScheme.js similarity index 100% rename from tiles/src/tilingScheme.js rename to tiles/tiles/tilingScheme.js From d2b4daa6c4de6b61cf8cf541cde50094a1bc512c Mon Sep 17 00:00:00 2001 From: Javier Abadia Date: Tue, 17 Dec 2013 00:18:16 +0100 Subject: [PATCH 06/17] started writing some unit tests --- test/jasmine/SpecRunner.tiles.html | 77 ++++++++++++++++++------- test/jasmine/spec/offlineEnablerSpec.js | 12 +++- 2 files changed, 65 insertions(+), 24 deletions(-) diff --git a/test/jasmine/SpecRunner.tiles.html b/test/jasmine/SpecRunner.tiles.html index 85b3062..fa92634 100755 --- a/test/jasmine/SpecRunner.tiles.html +++ b/test/jasmine/SpecRunner.tiles.html @@ -19,42 +19,75 @@ - - - +
diff --git a/test/jasmine/spec/offlineEnablerSpec.js b/test/jasmine/spec/offlineEnablerSpec.js index ab6d990..a27c3f3 100644 --- a/test/jasmine/spec/offlineEnablerSpec.js +++ b/test/jasmine/spec/offlineEnablerSpec.js @@ -2,14 +2,22 @@ describe("offline enabler library", function() { + it("validate map", function() + { + expect(g_map.id).toEqual("map"); + expect(g_map).toEqual(jasmine.any(Object)); + }); + it("extends the tiled layer object", function() { - + expect(g_basemapLayer.goOffline).toBeUndefined(); + g_offlineEnabler.extend(g_basemapLayer); + expect(g_basemapLayer.goOffline).not.toBeUndefined(); }); it("can go offline", function() { - + }); it("delete all tiles", function() From d827470635a67f06ba5f11843043591c1f4b7835 Mon Sep 17 00:00:00 2001 From: Javier Abadia Date: Tue, 17 Dec 2013 23:38:17 +0100 Subject: [PATCH 07/17] completed some specs --- test/jasmine/spec/offlineEnablerSpec.js | 71 +++++++++++++++++++++++-- 1 file changed, 67 insertions(+), 4 deletions(-) diff --git a/test/jasmine/spec/offlineEnablerSpec.js b/test/jasmine/spec/offlineEnablerSpec.js index a27c3f3..209dad2 100644 --- a/test/jasmine/spec/offlineEnablerSpec.js +++ b/test/jasmine/spec/offlineEnablerSpec.js @@ -2,26 +2,89 @@ describe("offline enabler library", function() { + var initCompleted = false; + it("validate map", function() { - expect(g_map.id).toEqual("map"); expect(g_map).toEqual(jasmine.any(Object)); + expect(g_map.id).toEqual("map"); }); + it("validate tiled layer", function() + { + expect(g_basemapLayer).toEqual(jasmine.any(Object)); + expect(g_basemapLayer.tileInfo).toEqual(jasmine.any(Object)); + }); + + it("extends the tiled layer object", function() { expect(g_basemapLayer.goOffline).toBeUndefined(); - g_offlineEnabler.extend(g_basemapLayer); - expect(g_basemapLayer.goOffline).not.toBeUndefined(); + g_offlineEnabler.extend(g_basemapLayer,function(success) + { + expect(success).toEqual(true); + expect(g_basemapLayer.goOffline).toEqual(jasmine.any(Function)); + expect(g_basemapLayer.goOnline).toEqual(jasmine.any(Function)); + expect(g_basemapLayer.getTileUrl).toEqual(jasmine.any(Function)); + expect(g_basemapLayer._getTileUrl).toEqual(jasmine.any(Function)); + expect(g_basemapLayer.prepareForOffline).toEqual(jasmine.any(Function)); + expect(g_basemapLayer.storeTile).toEqual(jasmine.any(Function)); + expect(g_basemapLayer.deleteAllTiles).toEqual(jasmine.any(Function)); + expect(g_basemapLayer.offline).toEqual(jasmine.any(Object)); + expect(g_basemapLayer.offline.store).toEqual(jasmine.any(Object)); + + initCompleted = true; + }); }); it("can go offline", function() { - + expect(g_basemapLayer.goOffline).toEqual(jasmine.any(Function)); + expect(g_basemapLayer.offline.online).toEqual(true); + g_basemapLayer.goOffline(); + expect(g_basemapLayer.offline.online).toEqual(false); }); + it("can go online", function() + { + expect(g_basemapLayer.goOffline).toEqual(jasmine.any(Function)); + expect(g_basemapLayer.offline.online).toEqual(false); + g_basemapLayer.goOnline(); + expect(g_basemapLayer.offline.online).toEqual(true); + }) + it("delete all tiles", function() { + waitsFor(function(){ return initCompleted; }); + runs(function() + { + g_basemapLayer.deleteAllTiles(function(success) + { + expect(success).toEqual(true); + g_basemapLayer.getOfflineUsage(function(usage) + { + expect(usage.tileCount).toEqual(0); + }); + }); + }); }); + + /* + it("stores one tile", function() + { + g_basemapLayer.getOfflineUsage(function(usage) + { + expect(usage.tileCount).toEqual(0); + g_basemapLayer.storeTile(14,6177,8023, function(success) + { + expect(success).toEqual(true); + g_basemapLayer.getOfflineUsage(function(usage) + { + expect(usage.tileCount).toEqual(1); + }); + }); + }); + }); + */ }); \ No newline at end of file From 40c1b50dbd1997a4fc3556baf7582c36b08fb2d7 Mon Sep 17 00:00:00 2001 From: Javier Abadia Date: Tue, 17 Dec 2013 23:49:33 +0100 Subject: [PATCH 08/17] allow configuration of proxy path --- tiles/tiles/offlineEnabler.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tiles/tiles/offlineEnabler.js b/tiles/tiles/offlineEnabler.js index f0e84d3..0fe87a2 100644 --- a/tiles/tiles/offlineEnabler.js +++ b/tiles/tiles/offlineEnabler.js @@ -34,7 +34,8 @@ define([ layer._getTileUrl = layer.getTileUrl; layer.offline = { online: true, - store: new DbStore() + store: new DbStore(), + proxyPath: "proxy.php" }; if( /*false &&*/ layer.offline.store.isSupported() ) @@ -178,7 +179,7 @@ define([ url = url.split('?')[0]; /* download the tile */ - var imgurl = "proxy.php?" + url; + var imgurl = this.offline.proxyPath + "?" + url; var req = new XMLHttpRequest(); req.open("GET", imgurl, true); req.overrideMimeType("text/plain; charset=x-user-defined"); // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest?redirectlocale=en-US&redirectslug=DOM%2FXMLHttpRequest%2FUsing_XMLHttpRequest#Handling_binary_data From 31f6ef00bfb42a38dd5393e995b7b0e8b11e955a Mon Sep 17 00:00:00 2001 From: Javier Abadia Date: Tue, 17 Dec 2013 23:49:55 +0100 Subject: [PATCH 09/17] more unit testing --- test/jasmine/spec/offlineEnablerSpec.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/test/jasmine/spec/offlineEnablerSpec.js b/test/jasmine/spec/offlineEnablerSpec.js index 209dad2..7dbb231 100644 --- a/test/jasmine/spec/offlineEnablerSpec.js +++ b/test/jasmine/spec/offlineEnablerSpec.js @@ -16,7 +16,6 @@ describe("offline enabler library", function() expect(g_basemapLayer.tileInfo).toEqual(jasmine.any(Object)); }); - it("extends the tiled layer object", function() { expect(g_basemapLayer.goOffline).toBeUndefined(); @@ -33,12 +32,15 @@ describe("offline enabler library", function() expect(g_basemapLayer.offline).toEqual(jasmine.any(Object)); expect(g_basemapLayer.offline.store).toEqual(jasmine.any(Object)); + g_basemapLayer.offline.proxyPath = "../../tiles/proxy.php"; initCompleted = true; }); }); it("can go offline", function() { + waitsFor(function(){ return initCompleted; }); + expect(g_basemapLayer.goOffline).toEqual(jasmine.any(Function)); expect(g_basemapLayer.offline.online).toEqual(true); g_basemapLayer.goOffline(); @@ -47,6 +49,8 @@ describe("offline enabler library", function() it("can go online", function() { + waitsFor(function(){ return initCompleted; }); + expect(g_basemapLayer.goOffline).toEqual(jasmine.any(Function)); expect(g_basemapLayer.offline.online).toEqual(false); g_basemapLayer.goOnline(); @@ -70,9 +74,10 @@ describe("offline enabler library", function() }); }); - /* it("stores one tile", function() { + waitsFor(function(){ return initCompleted; }); + g_basemapLayer.getOfflineUsage(function(usage) { expect(usage.tileCount).toEqual(0); @@ -86,5 +91,6 @@ describe("offline enabler library", function() }); }); }); - */ + + }); \ No newline at end of file From d5eb92c06e57cb665b581c30e5e49645db90f45c Mon Sep 17 00:00:00 2001 From: Javier Abadia Date: Wed, 18 Dec 2013 23:31:09 +0100 Subject: [PATCH 10/17] reorganized files and paths to make tests work --- tiles/{src => tiles}/Blob.js | 0 tiles/{src => tiles}/FileSaver.js | 0 tiles/tiles/dbStore.js | 2 +- tiles/{src => tiles}/phoneGapConnector.js | 0 4 files changed, 1 insertion(+), 1 deletion(-) rename tiles/{src => tiles}/Blob.js (100%) rename tiles/{src => tiles}/FileSaver.js (100%) rename tiles/{src => tiles}/phoneGapConnector.js (100%) diff --git a/tiles/src/Blob.js b/tiles/tiles/Blob.js similarity index 100% rename from tiles/src/Blob.js rename to tiles/tiles/Blob.js diff --git a/tiles/src/FileSaver.js b/tiles/tiles/FileSaver.js similarity index 100% rename from tiles/src/FileSaver.js rename to tiles/tiles/FileSaver.js diff --git a/tiles/tiles/dbStore.js b/tiles/tiles/dbStore.js index 2217d6d..668aa32 100644 --- a/tiles/tiles/dbStore.js +++ b/tiles/tiles/dbStore.js @@ -6,7 +6,7 @@ * Author: Andy Gup (@agup) * Contributor: Javier Abadia (@javierabadia) */ -define(["/offline/tiles/src/phoneGapConnector.js"],function(phonegap) +define(["tiles/phoneGapConnector"],function(phonegap) { var DbStore = function() { diff --git a/tiles/src/phoneGapConnector.js b/tiles/tiles/phoneGapConnector.js similarity index 100% rename from tiles/src/phoneGapConnector.js rename to tiles/tiles/phoneGapConnector.js From e11bca136df124477e9e77874d22209d075b9cf1 Mon Sep 17 00:00:00 2001 From: Javier Abadia Date: Thu, 19 Dec 2013 23:25:47 +0100 Subject: [PATCH 11/17] more tests --- test/jasmine/spec/offlineEnablerSpec.js | 100 ++++++++++++++++++++---- 1 file changed, 84 insertions(+), 16 deletions(-) diff --git a/test/jasmine/spec/offlineEnablerSpec.js b/test/jasmine/spec/offlineEnablerSpec.js index 7dbb231..0870523 100644 --- a/test/jasmine/spec/offlineEnablerSpec.js +++ b/test/jasmine/spec/offlineEnablerSpec.js @@ -41,20 +41,26 @@ describe("offline enabler library", function() { waitsFor(function(){ return initCompleted; }); - expect(g_basemapLayer.goOffline).toEqual(jasmine.any(Function)); - expect(g_basemapLayer.offline.online).toEqual(true); - g_basemapLayer.goOffline(); - expect(g_basemapLayer.offline.online).toEqual(false); + runs(function() + { + expect(g_basemapLayer.goOffline).toEqual(jasmine.any(Function)); + expect(g_basemapLayer.offline.online).toEqual(true); + g_basemapLayer.goOffline(); + expect(g_basemapLayer.offline.online).toEqual(false); + }); }); it("can go online", function() { waitsFor(function(){ return initCompleted; }); - expect(g_basemapLayer.goOffline).toEqual(jasmine.any(Function)); - expect(g_basemapLayer.offline.online).toEqual(false); - g_basemapLayer.goOnline(); - expect(g_basemapLayer.offline.online).toEqual(true); + runs(function() + { + expect(g_basemapLayer.goOffline).toEqual(jasmine.any(Function)); + expect(g_basemapLayer.offline.online).toEqual(false); + g_basemapLayer.goOnline(); + expect(g_basemapLayer.offline.online).toEqual(true); + }); }) it("delete all tiles", function() @@ -78,19 +84,81 @@ describe("offline enabler library", function() { waitsFor(function(){ return initCompleted; }); - g_basemapLayer.getOfflineUsage(function(usage) - { - expect(usage.tileCount).toEqual(0); - g_basemapLayer.storeTile(14,6177,8023, function(success) + runs(function() + { + g_basemapLayer.getOfflineUsage(function(usage) { - expect(success).toEqual(true); - g_basemapLayer.getOfflineUsage(function(usage) + expect(usage.tileCount).toEqual(0); + g_basemapLayer.storeTile(14,6177,8023, function(success) { - expect(usage.tileCount).toEqual(1); + expect(success).toEqual(true); + g_basemapLayer.getOfflineUsage(function(usage) + { + expect(usage.tileCount).toEqual(1); + }); }); }); + }) + }); + + it("gets level estimation", function() + { + waitsFor(function(){ return initCompleted; }); + + runs(function() + { + require(["esri/geometry/Extent"],function(Extent) + { + var extent = new Extent({"xmin":-822542.2830377579,"ymin":4580841.761960262,"xmax":94702.05638410954,"ymax":5131188.365613382,"spatialReference":{"wkid":102100}}); + var tileSize = g_basemapLayer.estimateTileSize(); + var estimation = g_basemapLayer.getLevelEstimation(extent,10); + expect(estimation.tileCount).toEqual(375); + expect(estimation.sizeBytes).toEqual(estimation.tileCount * tileSize); + var estimation = g_basemapLayer.getLevelEstimation(extent,8); + expect(estimation.tileCount).toEqual(28); + expect(estimation.sizeBytes).toEqual(estimation.tileCount * tileSize); + var estimation = g_basemapLayer.getLevelEstimation(extent,2); + expect(estimation.tileCount).toEqual(2); + expect(estimation.sizeBytes).toEqual(estimation.tileCount * tileSize); + }); }); }); - + /* + it("prepares the layer for offline usage", function() + { + var finished = false; + + runs(function() + { + require(["esri/geometry/Extent"], function(Extent) + { + g_basemapLayer.deleteAllTiles(function(success) + { + var extent = new Extent({"xmin":-822542.2830377579,"ymin":4580841.761960262,"xmax":94702.05638410954,"ymax":5131188.365613382,"spatialReference":{"wkid":102100}}); + var reportProgress = jasmine.createSpy(); + var finishedDownloading = function(err) + { + console.log("finishedDownloading"); + expect(err).not.toBeTruthy(); + expect(reportProgress).toHaveBeenCalled(); + expect(reportProgress.callCount).toEqual(21); // 28 + + g_basemapLayer.getOfflineUsage(function(usage) + { + expect(usage.tileCount).toEqual(28); + finished = true; + }); + } + + console.log("preparing"); + g_basemapLayer.prepareForOffline(8,8,extent,reportProgress, finishedDownloading); + console.log("prepared"); + }); + }); + }); + + waitsFor(function(){ return finished; }); + }); + */ }); \ No newline at end of file From f7eb1a7e8098b2bceb4fc9f149d7a4e92a0169f6 Mon Sep 17 00:00:00 2001 From: Javier Abadia Date: Fri, 20 Dec 2013 22:48:23 +0100 Subject: [PATCH 12/17] changed default webmap (it can be overridden via url param webmap=xxxx) --- tiles/main.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tiles/main.js b/tiles/main.js index b8b3c29..554cde5 100644 --- a/tiles/main.js +++ b/tiles/main.js @@ -36,8 +36,7 @@ require(["esri/map", function loadWebmap(webmapid) { - //webmapid = webmapid || "1d2a47c27ffc433fa4a278841544f427"; //for testing only - webmapid = webmapid || "f58996878ac24702afef792e52a07e55"; + webmapid = webmapid || "bbc1a04a3eca4430be144d7a08b43a17"; // Get new webmap and extract map and map parts var mapDeferred = esriUtils.createMap(webmapid, "mapDiv", { mapOptions: { From 79cb1df073946664d05a1dd5e59171cd6627122f Mon Sep 17 00:00:00 2001 From: Javier Abadia Date: Fri, 20 Dec 2013 23:03:46 +0100 Subject: [PATCH 13/17] included map description --- tiles/index.html | 1 + tiles/main.js | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tiles/index.html b/tiles/index.html index eac80df..4e06bd7 100644 --- a/tiles/index.html +++ b/tiles/index.html @@ -56,6 +56,7 @@

Map:[none]

+

[none]

diff --git a/tiles/main.js b/tiles/main.js index 554cde5..286d85a 100644 --- a/tiles/main.js +++ b/tiles/main.js @@ -53,8 +53,9 @@ require(["esri/map", // Bind to map BootstrapMap.bindTo(map); - // Add title + // Add title and description dom.byId("mapTitle").innerHTML = response.itemInfo.item.title; + dom.byId("mapDescription").innerHTML = response.itemInfo.item.snippet; if(map.loaded) { From 9bf4371915903f1b1ecdfc57873025e282bb2cc2 Mon Sep 17 00:00:00 2001 From: Javier Abadia Date: Fri, 20 Dec 2013 23:45:45 +0100 Subject: [PATCH 14/17] async testing --- .gitmodules | 3 + test/jasmine/SpecRunner.tiles.html | 1 + test/jasmine/spec/offlineEnablerSpec.js | 171 ++++++++++-------------- tiles/ISSUES.md | 2 +- vendor/jasmine.async | 1 + 5 files changed, 77 insertions(+), 101 deletions(-) create mode 160000 vendor/jasmine.async diff --git a/.gitmodules b/.gitmodules index 9059e8a..7d99113 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "vendor/IndexedDBShim"] path = vendor/IndexedDBShim url = https://github.com/axemclion/IndexedDBShim +[submodule "vendor/jasmine.async"] + path = vendor/jasmine.async + url = https://github.com/derickbailey/jasmine.async.git diff --git a/test/jasmine/SpecRunner.tiles.html b/test/jasmine/SpecRunner.tiles.html index fa92634..2b6101a 100755 --- a/test/jasmine/SpecRunner.tiles.html +++ b/test/jasmine/SpecRunner.tiles.html @@ -8,6 +8,7 @@ +