diff geotemco/js/Dataloader/Dataloader.js @ 8:8f05c2a84bba

Apply new platin and Add tree layers
author nylin@mpiwg-berlin.mpg.de
date Wed, 07 Oct 2015 11:09:20 +0200
parents 57bde4830927
children
line wrap: on
line diff
--- a/geotemco/js/Dataloader/Dataloader.js	Fri Sep 04 16:16:10 2015 +0200
+++ b/geotemco/js/Dataloader/Dataloader.js	Wed Oct 07 11:09:20 2015 +0200
@@ -55,6 +55,7 @@
 		this.addCSVLoader();
 		this.addLocalKMLLoader();
 		this.addLocalCSVLoader();
+		this.addLocalXLSXLoader();
 		
 		// trigger change event on the select so 
 		// that only the first loader div will be shown
@@ -367,5 +368,61 @@
 		},this));
 
 		$(this.parent.gui.loaders).append(this.localStorageLoaderTab);
-	}
+	},
+	
+	addLocalXLSXLoader : function() {
+		//taken from http://oss.sheetjs.com/js-xlsx/
+		var fixdata = function(data) {
+			var o = "", l = 0, w = 10240;
+			for(; l<data.byteLength/w; ++l) o+=String.fromCharCode.apply(null,new Uint8Array(data.slice(l*w,l*w+w)));
+			o+=String.fromCharCode.apply(null, new Uint8Array(data.slice(o.length)));
+			return o;
+		}
+		
+		$(this.parent.gui.loaderTypeSelect).append("<option value='LocalXLSXLoader'>local XLS/XLSX File</option>");
+		
+		this.LocalXLSXLoader = document.createElement("div");
+		$(this.LocalXLSXLoader).attr("id","LocalXLSXLoader");
+		
+		this.xlsxFile = document.createElement("input");
+		$(this.xlsxFile).attr("type","file");
+		$(this.LocalXLSXLoader).append(this.xlsxFile);
+		
+		this.loadLocalXLSXButton = document.createElement("button");
+		$(this.loadLocalXLSXButton).text("load XLS/XLSX");
+		$(this.LocalXLSXLoader).append(this.loadLocalXLSXButton);
+
+		$(this.loadLocalXLSXButton).click($.proxy(function(){
+			var filelist = $(this.xlsxFile).get(0).files;
+			if (filelist.length > 0){
+				var file = filelist[0];
+				var fileName = file.name;
+				var reader = new FileReader();
+				
+				reader.onloadend = ($.proxy(function(theFile) {
+			        return function(e) {
+			        	var workbook;
+			        	var json;
+			        	if (fileName.toLowerCase().indexOf("xlsx")!=-1){
+			        		workbook = XLSX.read(btoa(fixdata(reader.result)), {type: 'base64'});
+			        		var csv = XLSX.utils.sheet_to_csv(workbook.Sheets[workbook.SheetNames[0]]);
+			        		var json = GeoTemConfig.convertCsv(csv);
+			        	} else {
+			        		workbook = XLS.read(btoa(fixdata(reader.result)), {type: 'base64'});
+			        		var csv = XLS.utils.sheet_to_csv(workbook.Sheets[workbook.SheetNames[0]]);
+			        		var json = GeoTemConfig.convertCsv(csv);
+			        	}
+			        	
+						var dataSet = new Dataset(GeoTemConfig.loadJson(json), fileName);
+						if (dataSet != null)
+							this.distributeDataset(dataSet);			
+			        };
+			    }(file),this));
+
+				reader.readAsArrayBuffer(file);
+			}
+		},this));
+
+		$(this.parent.gui.loaders).append(this.LocalXLSXLoader);
+	},
 };