From 23f9eaecd084c2d32e35e3a756679236d4b6ca8a Mon Sep 17 00:00:00 2001 From: andygup Date: Tue, 1 Apr 2014 15:55:10 -0600 Subject: [PATCH] this works for basic reload --- Gruntfile.js | 57 +++++++++++++++++++++++++--------- manifest.appcache | 60 +++++++++++++++++++++++++---------- package.json | 4 +-- samples/appcache-tiles.html | 62 ++++++++++++++++++------------------- 4 files changed, 118 insertions(+), 65 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 52e27f7..525a772 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -17,23 +17,47 @@ module.exports = function(grunt) { options: { basePath: "./", cache: ["# <%= pkg.name %>, version: <%= pkg.version %>", + "# Home Page", + "samples/appcache-tiles.html", "# ArcGIS API for JavaScript files", - "<%= pkg.baseURL %>/", - "<%= pkg.baseURL %>/init.js", - "<%= pkg.baseURL %>/js/dojo/dojox/gfx/svg.js", - "<%= pkg.baseURL %>/js/dojo/dojo/resources/blank.gif", - "<%= pkg.baseURL %>/js/esri/css/esri.css", - "<%= pkg.baseURL %>/js/esri/nls/jsapi_en-us.js", - "<%= pkg.baseURL %>/js/esri/images/map/logo-sm.png", - "<%= pkg.baseURL %>/js/esri/images/map/logo-med.png", - "<%= pkg.baseURL %>/js/esri/dijit/images/ajax-loader.gif", - "<%= pkg.baseURL %>/js/esri/dijit/images/popup.png", - "http://services.arcgisonline.com/ArcGIS/rest/info?f=json", - "http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer?f=json&callback=dojo.io.script.jsonp_dojoIoScript1._jsonpCallback", + "<%= pkg.optimizedApiURL %>/dojo/dojo.js", + "<%= pkg.optimizedApiURL %>/dojo/main.js", + "<%= pkg.optimizedApiURL %>/dojox/gfx/svg.js", + "<%= pkg.optimizedApiURL %>/dojo/_base/browser.js", + "<%= pkg.optimizedApiURL %>/dojox/gfx/shape.js", + "<%= pkg.optimizedApiURL %>/dojo/nls/dojo_en-us.js", + "<%= pkg.optimizedApiURL %>/dojox/gfx/shape.js", + "<%= pkg.optimizedApiURL %>/dojox/gfx/path.js", + "<%= pkg.optimizedApiURL %>/dojo/request.js", + "<%= pkg.optimizedApiURL %>/dojo/_base/NodeList.js", + "<%= pkg.optimizedApiURL %>/dojo/selector/acme.js", + "<%= pkg.optimizedApiURL %>/dojo/_base/loader.js", + "<%= pkg.optimizedApiURL %>/dojo/request/default.js", + "<%= pkg.optimizedApiURL %>/esri/geometry.js", + "<%= pkg.optimizedApiURL %>/esri/geometry/geodesicUtils.js", + "<%= pkg.optimizedApiURL %>/esri/geometry/normalizeUtils.js", + "<%= pkg.optimizedApiURL %>/esri/dijit/Attribution.js", + "<%= pkg.optimizedApiURL %>/esri/units.js", + "<%= pkg.optimizedApiURL %>/dojo/fx/Toggler.js", + "<%= pkg.arcGISBaseURL %>/js/dojo/dojox/gfx/svg.js", + "<%= pkg.arcGISBaseURL %>/js/dojo/dojo/resources/blank.gif", + "<%= pkg.arcGISBaseURL %>/js/esri/dijit/images/ajax-loader.gif", + "<%= pkg.arcGISBaseURL %>/js/esri/images/map/logo-sm.png", + "<%= pkg.arcGISBaseURL %>/js/esri/images/map/logo-med.png", + "<%= pkg.arcGISBaseURL %>/js/esri/css/esri.css", + "<%= pkg.arcGISBaseURL %>/js/esri/nls/jsapi_en-us.js", + "//services.arcgisonline.com/ArcGIS/rest/info?f=json", + "//static.arcgis.com/attribution/World_Topo_Map?f=json", + "//services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer?f=json&callback=dojo.io.script.jsonp_dojoIoScript1._jsonpCallback", + "# required for web maps", + "<%= pkg.arcGISBaseURL %>/js/esri/dijit/images/ajax-loader.gif", + "<%= pkg.arcGISBaseURL %>/js/esri/dijit/images/popup.png", "# required custom libs", - "js/app.js", - "css/style.css"], - network: ["http://*", "https://*"], + "# /xyz/style.css", + "# /img/1.png"], + network: [ + "*" + ], /*fallback: ["/ /offline.html"],*/ exclude: ["js/jquery.min.js", "vendor/**.sass", "vendor/**/src"], /*preferOnline: true,*/ @@ -43,8 +67,11 @@ module.exports = function(grunt) { src: [ "*.html", /*"js/*.min.js",*/ + "samples/images/*.png", "vendor/IndexedDBShim/dist/*.min.js", + "vendor/offline/offline.min.js", "lib/tiles/*.js", + "utils/*.js" /* "images/*", "css/*.css" diff --git a/manifest.appcache b/manifest.appcache index 89a304b..0bd3b01 100644 --- a/manifest.appcache +++ b/manifest.appcache @@ -1,32 +1,58 @@ CACHE MANIFEST # This manifest was generated by grunt-manifest HTML5 Cache Manifest Generator -# Time: Tue Apr 01 2014 11:36:38 GMT-0600 (MDT) +# Time: Tue Apr 01 2014 15:53:09 GMT-0600 (MDT) CACHE: # manifest-generator, version: 0.0.1 +# Home Page +samples/appcache-tiles.html # ArcGIS API for JavaScript files -//js.arcgis.com/3.8/ -//js.arcgis.com/3.8/init.js -//js.arcgis.com/3.8/js/dojo/dojox/gfx/svg.js -//js.arcgis.com/3.8/js/dojo/dojo/resources/blank.gif -//js.arcgis.com/3.8/js/esri/css/esri.css -//js.arcgis.com/3.8/js/esri/nls/jsapi_en-us.js -//js.arcgis.com/3.8/js/esri/images/map/logo-sm.png -//js.arcgis.com/3.8/js/esri/images/map/logo-med.png -//js.arcgis.com/3.8/js/esri/dijit/images/ajax-loader.gif -//js.arcgis.com/3.8/js/esri/dijit/images/popup.png -http://services.arcgisonline.com/ArcGIS/rest/info?f=json -http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer?f=json&callback=dojo.io.script.jsonp_dojoIoScript1._jsonpCallback +http://jsdev.arcgis.com/o/andygup/appcache1/dojo/dojo.js +http://jsdev.arcgis.com/o/andygup/appcache1/dojo/main.js +http://jsdev.arcgis.com/o/andygup/appcache1/dojox/gfx/svg.js +http://jsdev.arcgis.com/o/andygup/appcache1/dojo/_base/browser.js +http://jsdev.arcgis.com/o/andygup/appcache1/dojox/gfx/shape.js +http://jsdev.arcgis.com/o/andygup/appcache1/dojo/nls/dojo_en-us.js +http://jsdev.arcgis.com/o/andygup/appcache1/dojox/gfx/shape.js +http://jsdev.arcgis.com/o/andygup/appcache1/dojox/gfx/path.js +http://jsdev.arcgis.com/o/andygup/appcache1/dojo/request.js +http://jsdev.arcgis.com/o/andygup/appcache1/dojo/_base/NodeList.js +http://jsdev.arcgis.com/o/andygup/appcache1/dojo/selector/acme.js +http://jsdev.arcgis.com/o/andygup/appcache1/dojo/_base/loader.js +http://jsdev.arcgis.com/o/andygup/appcache1/dojo/request/default.js +http://jsdev.arcgis.com/o/andygup/appcache1/esri/geometry.js +http://jsdev.arcgis.com/o/andygup/appcache1/esri/geometry/geodesicUtils.js +http://jsdev.arcgis.com/o/andygup/appcache1/esri/geometry/normalizeUtils.js +http://jsdev.arcgis.com/o/andygup/appcache1/esri/dijit/Attribution.js +http://jsdev.arcgis.com/o/andygup/appcache1/esri/units.js +http://jsdev.arcgis.com/o/andygup/appcache1/dojo/fx/Toggler.js +http://js.arcgis.com/3.8/js/dojo/dojox/gfx/svg.js +http://js.arcgis.com/3.8/js/dojo/dojo/resources/blank.gif +http://js.arcgis.com/3.8/js/esri/dijit/images/ajax-loader.gif +http://js.arcgis.com/3.8/js/esri/images/map/logo-sm.png +http://js.arcgis.com/3.8/js/esri/images/map/logo-med.png +http://js.arcgis.com/3.8/js/esri/css/esri.css +http://js.arcgis.com/3.8/js/esri/nls/jsapi_en-us.js +//services.arcgisonline.com/ArcGIS/rest/info?f=json +//static.arcgis.com/attribution/World_Topo_Map?f=json +//services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer?f=json&callback=dojo.io.script.jsonp_dojoIoScript1._jsonpCallback +# required for web maps +http://js.arcgis.com/3.8/js/esri/dijit/images/ajax-loader.gif +http://js.arcgis.com/3.8/js/esri/dijit/images/popup.png # required custom libs -js/app.js -css/style.css +# /xyz/style.css +# /img/1.png +samples/images/blue-pin.png +samples/images/red-pin.png vendor/IndexedDBShim/dist/IndexedDBShim.min.js +vendor/offline/offline.min.js lib/tiles/FileSaver.js lib/tiles/base64utils.js lib/tiles/dbStore.js lib/tiles/offlineTilesEnabler.js lib/tiles/tilingScheme.js +utils/appCacheManager.js +utils/debouncer.js NETWORK: -http://* -https://* +* diff --git a/package.json b/package.json index 478c7e2..f37318c 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "https://www.npmjs.org/doc/cli/npm-init.html" ], "name": "manifest-generator", - "optimizedApiURL": "//jsdev.arcgis.com/o/andygup/appcache1", - "arcGISBaseURL":"//js.arcgis.com/3.8", + "optimizedApiURL": "http://jsdev.arcgis.com/o/andygup/appcache1", + "arcGISBaseURL":"http://js.arcgis.com/3.8", "version": "0.0.1", "private": true, "description": "manifest generator project", diff --git a/samples/appcache-tiles.html b/samples/appcache-tiles.html index 31f2e96..b3fb235 100644 --- a/samples/appcache-tiles.html +++ b/samples/appcache-tiles.html @@ -160,20 +160,24 @@ function updateState(){ if(Offline.state === 'up'){ imgOfflineIndicator.src = bluePinPath; - tiles.goOnline(); + baseMapLayer.goOnline(); } else{ imgOfflineIndicator.src = redPinPath; - tiles.goOffline(); + baseMapLayer.goOffline(); } } - function updateOfflineUsage() { - var count = getEstimateTileCount(function(info){ - console.log("COUNT " + info) - tileInfo.innerHTML = "Tile count: " + info.tileCount + "\r\nBytes: " + info.sizeBytes; + var count = getEstimateTileCount(function(info,err){ + if(info != null){ + console.log("COUNT " + info) + tileInfo.innerHTML = "Tile count: " + info.tileCount + "\r\nBytes: " + info.sizeBytes; + } + else{ + console.log("ERROR updateOfflineUsage(): " + JSON.stringify(err)); + } }); } @@ -187,25 +191,31 @@ var level = map.getLevel(); var url = baseMapLayer.getTileUrlsByExtent(extent,level)[0]; baseMapLayer._lastTileUrl = url; - baseMapLayer.estimateTileSize(function(tileSize){ + baseMapLayer.estimateTileSize(function(tileSize,err){ - var totalEstimation = {tileCount:0,sizeBytes:0}; + if(tileSize != null){ + var totalEstimation = {tileCount:0,sizeBytes:0}; - var min = map.getLevel() + minZoomAdjust; - var max = map.getLevel() + maxZoomAdjust; - var maxZoom = Math.min(mMaxZoom, max); //prevent errors by setting the tile layer floor - var minZoom = Math.max(mMinZoom, min); //prevent errors by setting the tile layer ceiling + var min = map.getLevel() + minZoomAdjust; + var max = map.getLevel() + maxZoomAdjust; + var maxZoom = Math.min(mMaxZoom, max); //prevent errors by setting the tile layer floor + var minZoom = Math.max(mMinZoom, min); //prevent errors by setting the tile layer ceiling - for(var level = minZoom; level<= maxZoom; level++) - { - var levelEstimation = baseMapLayer.getLevelEstimation(this.getExtentBuffer(EXTENT_BUFFER,map.extent),level,tileSize); + for(var level = minZoom; level<= maxZoom; level++) + { + var levelEstimation = baseMapLayer.getLevelEstimation(baseMapLayer.getExtentBuffer(EXTENT_BUFFER,map.extent),level,tileSize); - totalEstimation.tileCount += levelEstimation.tileCount; - totalEstimation.sizeBytes += levelEstimation.sizeBytes; + totalEstimation.tileCount += levelEstimation.tileCount; + totalEstimation.sizeBytes += levelEstimation.sizeBytes; + } + + console.log("Size estimate: " + totalEstimation.sizeBytes + ", tile count: " + totalEstimation.tileCount) + callback(totalEstimation,null); + } + else{ + callback(null,err); } - console.log("Size estimate: " + totalEstimation.sizeBytes + ", tile count: " + totalEstimation.tileCount) - callback(totalEstimation); }.bind(this)) } } @@ -276,26 +286,16 @@ btnOnlineOffline.innerHTML = "2. Go Online"; imgOfflineIndicator.src = redPinPath; imgOfflineIndicator.offlineColor = "red"; - goOffline(); + baseMapLayer.goOffline(); } else{ btnOnlineOffline.innerHTML = "2. Go Offline"; imgOfflineIndicator.src = bluePinPath; imgOfflineIndicator.offlineColor = "blue"; - goOnline(); + baseMapLayer.goOnline(); } } - function goOnline() - { - baseMapLayer.goOnline(); - } - - function goOffline() - { - baseMapLayer.goOffline(); - } - function panLeft(){ map.panLeft(); }