Unfinished support for file import

pull/54/merge
Candid Dauth 2016-10-11 10:40:09 +03:00
rodzic e46ef278f7
commit 025dd61d89
5 zmienionych plików z 81 dodań i 13 usunięć

Wyświetl plik

@ -0,0 +1,47 @@
(function(fp, $, ng, undefined) {
fp.app.factory("fpMapImport", function($q) {
return function(map) {
var fileEl = $('<input type="file" multiple="multiple">').css("display", "none").appendTo("body");
fileEl.one("change", function() {
fpMapImport.importFiles(fileEl.prop("files"));
});
map.el.on("dragenter", false);
map.el.on("dragover", false);
map.el.on("drop", function(e) {
e.preventDefault();
fpMapImport.importFiles(e.originalEvent.dataTransfer.files);
});
var fpMapImport = {
openImportDialog: function() {
fileEl.click();
},
importFiles: function(files) {
var readers = [ ];
for(var i=0; i<files.length; i++) {
readers.push($q(function(resolve, reject) {
var reader = new FileReader();
reader.onload = function(e) {
resolve(e.target.result);
};
reader.readAsText(files[i]);
}));
}
$q.all(readers).then(function(files) {
map.searchUi.showFiles(files);
});
}
};
return fpMapImport;
}
});
})(FacilPad, jQuery, angular);

Wyświetl plik

@ -9,7 +9,7 @@
};
});
fp.app.factory("fpMap", function(fpUtils, fpSocket, fpMapMessages, fpMapMarkers, $templateCache, $compile, fpMapLines, fpMapTypes, fpMapViews, $rootScope, fpMapPad, fpMapToolbox, $timeout, fpMapLegend, fpMapSearch, fpMapGpx, fpMapAbout, $sce, L) {
fp.app.factory("fpMap", function(fpUtils, fpSocket, fpMapMessages, fpMapMarkers, $templateCache, $compile, fpMapLines, fpMapTypes, fpMapViews, $rootScope, fpMapPad, fpMapToolbox, $timeout, fpMapLegend, fpMapSearch, fpMapGpx, fpMapAbout, $sce, L, fpMapImport) {
var maps = { };
var ret = { };
@ -27,6 +27,7 @@
function Map(el, id, padId) {
var map = this;
map.el = el;
map.mapEvents = $rootScope.$new(true); /* Event types: click, layerchange */
map.socket = fpSocket(padId);
@ -260,9 +261,10 @@
map.gpxUi = fpMapGpx(map);
map.toolboxUi = fpMapToolbox(map);
map.aboutUi = fpMapAbout(map);
map.importUi = fpMapImport(map);
map.searchUi = fpMapSearch(map);
fpMapLegend(map);
fpMapSearch(map);
var loadedWatcher = map.socket.$watch("loaded", function(loaded) {
if(loaded) {

Wyświetl plik

@ -7,17 +7,7 @@
scope.searchResults = null;
scope.search = function() {
scope.searchResults = null;
if(scope.searchString.trim() != "") {
map.loadStart();
fpNameFinder.find(scope.searchString).then(function(results) {
map.loadEnd();
scope.searchResults = results;
if(results.length > 0)
scope.showResult(results[0]);
});
}
fpMapSearch.search();
};
scope.showResult = function(result) {
@ -30,6 +20,30 @@
var el = $($templateCache.get("map/search/search.html")).insertAfter(map.map.getContainer());
$compile(el)(scope);
scope.$evalAsync(); // $compile only replaces variables on next digest
var fpMapSearch = {
search: function(query) {
if(query != null)
scope.searchString = query;
scope.searchResults = null;
if(scope.searchString.trim() != "") {
map.loadStart();
fpNameFinder.find(scope.searchString).then(function(results) {
map.loadEnd();
scope.searchResults = results;
if(results.length > 0)
scope.showResult(results[0]);
});
}
},
showFiles: function(files) {
console.log("showFiles", files);
}
};
return fpMapSearch;
};
});

Wyświetl plik

@ -38,6 +38,7 @@
<a href="javascript:" id="toolbox-tools-dropdown" uib-dropdown-toggle role="button">Tools <span class="caret"></span></a>
<ul uib-dropdown-menu aria-labelledby="toolbox-layers-dropdown" class="dropdown-menu-right">
<!--<li ng-if="!readonly"><a href="javascript:" ng-click="openDialog('copy-pad-dialog')">Copy pad</a></li>-->
<!--<li><a href="javascript:" ng-click="importFile()">Import File</a></li>-->
<li><a href="javascript:" ng-click="exportGpx()">Export GPX</a></li>
<li><a href="javascript:" ng-click="showTable()">View as table</a></li>
<li ng-if="!readonly"><a href="javascript:" ng-click="editPadSettings()">Settings</a></li>

Wyświetl plik

@ -33,6 +33,10 @@
scope.showTable = fpTable.showTable.bind(fpTable);
scope.importFile = function() {
map.importUi.openImportDialog();
};
scope.exportGpx = map.gpxUi.exportGpx.bind(map.gpxUi);
scope.showAbout = function() {