Created
April 13, 2016 14:47
-
-
Save DanisHack/2f6db9de436f6b1e9c07048933731c36 to your computer and use it in GitHub Desktop.
Traverse folder directive in angularJS
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
angular.module('traverse.folder', []) | |
.factory('folderTraverse', ['$http', '$log', '$q', '$timeout', function(http, log, q, timeout){ | |
var filesInFolder = []; | |
var traversalAPI = {}; | |
traversalAPI.getFiles = function(dataTransfer){ | |
var defer = q.defer(); | |
if(dataTransfer && dataTransfer.items){ | |
var items = dataTransfer.items; | |
var length = items.length; | |
console.log("=== len ---", length); | |
//for(var i = 0; i < length; i++){ | |
var entry = items[0]; | |
if(entry.getAsEntry){ //Standard HTML5 API | |
entry = entry.getAsEntry(); | |
console.log("-- getAsEntry --", entry); | |
} | |
else if(entry.webkitGetAsEntry){ //WebKit implementation of HTML5 API. | |
entry = entry.webkitGetAsEntry(); | |
console.log("-- webkitGetAsEntry --", entry); | |
} | |
var promise = traversalAPI.traverseFileTree(entry); | |
promise.then(function(data){ | |
defer.resolve(data); | |
}, function(err){ | |
defer.reject(err); | |
}); | |
//} | |
} | |
return defer.promise; | |
} | |
traversalAPI.traverseFileTree = function(item, path){ | |
var defer = q.defer(); | |
path = path || ""; | |
if (item.isFile) { | |
// Get file | |
console.log("item", item); | |
item.file(function(file) { | |
//console.log("File:", path + file.name); | |
traversalAPI.filesInFolder.push(path+file.name); | |
defer.resolve('done') | |
}); | |
} | |
else if (item.isDirectory) { | |
// Get folder contents | |
var dirReader = item.createReader(); | |
dirReader.readEntries(function(entries) { | |
console.log("--- dir count --", entries.length); | |
//checkDirItems(entries, 0); | |
for (var i=0; i < entries.length; i++) { | |
console.log("--- entries ---", entries[i], item.name); | |
var promise = traversalAPI.traverseFileTree(entries[i], path + item.name + "/"); | |
promise.then(function(data){ | |
defer.resolve(data) | |
}, function(err){ | |
defer.reject(err); | |
}); | |
} | |
}); | |
} | |
return defer.promise; | |
} | |
return traversalAPI | |
}]); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment