Find a pad in the drive
This commit is contained in:
parent
b238f4c3d3
commit
8bdc8415ab
@ -119,6 +119,10 @@ define([
|
|||||||
return filesOp.getStructure();
|
return filesOp.getStructure();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ret.replaceHref = function (o, n) {
|
||||||
|
return filesOp.replaceHref(o, n);
|
||||||
|
};
|
||||||
|
|
||||||
var changeHandlers = ret.changeHandlers = [];
|
var changeHandlers = ret.changeHandlers = [];
|
||||||
|
|
||||||
ret.change = function (f) {};
|
ret.change = function (f) {};
|
||||||
|
|||||||
@ -423,6 +423,8 @@ define([
|
|||||||
|
|
||||||
var ret = {};
|
var ret = {};
|
||||||
|
|
||||||
|
if (!href) { return ret; }
|
||||||
|
|
||||||
if (!/^https*:\/\//.test(href)) {
|
if (!/^https*:\/\//.test(href)) {
|
||||||
var idx = href.indexOf('/#');
|
var idx = href.indexOf('/#');
|
||||||
ret.type = href.slice(1, idx);
|
ret.type = href.slice(1, idx);
|
||||||
|
|||||||
@ -242,6 +242,90 @@ define([
|
|||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var _findFileInRoot = function (path, href) {
|
||||||
|
if (path[0] !== ROOT) { return []; }
|
||||||
|
var paths = [];
|
||||||
|
var root = exp.findElement(files, path);
|
||||||
|
|
||||||
|
var addPaths = function (p) {
|
||||||
|
if (paths.indexOf(p) === -1) {
|
||||||
|
paths.push(p);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (isFile(root)) {
|
||||||
|
if (compareFiles(href, root[e])) {
|
||||||
|
if (paths.indexOf(path) === -1) {
|
||||||
|
paths.push(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return paths;
|
||||||
|
}
|
||||||
|
for (var e in root) {
|
||||||
|
if (!isFile(root[e])) {
|
||||||
|
var nPath = path.slice();
|
||||||
|
nPath.push(e);
|
||||||
|
_findFileInRoot(nPath, href).forEach(addPaths);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return paths;
|
||||||
|
};
|
||||||
|
var _findFileInArray = function (rootName, href) {
|
||||||
|
var unsorted = files[rootName].slice();
|
||||||
|
var ret = [];
|
||||||
|
var i = -1;
|
||||||
|
while ((i = unsorted.indexOf(href, i+1)) != -1){
|
||||||
|
ret.push([rootName, i]);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
var _findFileInTrash = function (path, href) {
|
||||||
|
var root = exp.findElement(files, path);
|
||||||
|
var paths = [];
|
||||||
|
var addPaths = function (p) {
|
||||||
|
if (paths.indexOf(p) === -1) {
|
||||||
|
paths.push(p);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (path.length === 1) {
|
||||||
|
Object.keys(root).forEach(function (key) {
|
||||||
|
var arr = root[key];
|
||||||
|
if (!Array.isArray(arr)) { return; }
|
||||||
|
var nPath = path.slice();
|
||||||
|
nPath.push(key);
|
||||||
|
_findFileInTrash(nPath, href).forEach(addPaths);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (path.length === 2) {
|
||||||
|
if (!Array.isArray(root)) { return []; }
|
||||||
|
root.forEach(function (el, i) {
|
||||||
|
var nPath = path.slice();
|
||||||
|
nPath.push(i);
|
||||||
|
nPath.push('element');
|
||||||
|
if (isFile(el.element)) {
|
||||||
|
if (compareFiles(href, el.element)) {
|
||||||
|
addPaths(nPath);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_findFileInTrash(nPath, href).forEach(addPaths);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (path.length >= 4) {
|
||||||
|
_findFileInRoot(path, href).forEach(addPaths);
|
||||||
|
}
|
||||||
|
return paths;
|
||||||
|
};
|
||||||
|
var findFile = exp.findFile = function (href) {
|
||||||
|
var rootpaths = _findFileInRoot([ROOT], href);
|
||||||
|
var unsortedpaths = _findFileInHrefArray(UNSORTED, href);
|
||||||
|
var templatepaths = _findFileInHrefArray(TEMPLATE, href);
|
||||||
|
var trashpaths = _findFileInTrash([TRASH], href);
|
||||||
|
// TODO return concat all
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// Remove the selected 'href' from the tree located at 'path', and push its locations to the 'paths' array
|
// Remove the selected 'href' from the tree located at 'path', and push its locations to the 'paths' array
|
||||||
var removeFileFromRoot = function (path, href) {
|
var removeFileFromRoot = function (path, href) {
|
||||||
var paths = [];
|
var paths = [];
|
||||||
@ -802,6 +886,42 @@ define([
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var replaceFile = function (path, o, n) {
|
||||||
|
var root = exp.findElement(files, path);
|
||||||
|
|
||||||
|
if (isFile(root)) { return; }
|
||||||
|
for (var e in root) {
|
||||||
|
if (isFile(root[e])) {
|
||||||
|
if (compareFiles(o, root[e])) {
|
||||||
|
root[e] = n;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var nPath = path.slice();
|
||||||
|
nPath.push(e);
|
||||||
|
replaceFile(nPath, o, n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Replace a href by a stronger one everywhere in the drive (except FILES_DATA)
|
||||||
|
var replaceHref = exp.replaceHref = function (o, n) {
|
||||||
|
replaceFile([ROOT], o, n);
|
||||||
|
var i = files[UNSORTED].indexOf(o);
|
||||||
|
if (i !== -1) {
|
||||||
|
files[UNSORTED].splice(i, 1);
|
||||||
|
files[UNSORTED].push(n);
|
||||||
|
}
|
||||||
|
var j = files[TEMPLATE].indexOf(o);
|
||||||
|
if (j !== -1) {
|
||||||
|
files[TEMPLATE].splice(j, 1);
|
||||||
|
files[TEMPLATE].push(n);
|
||||||
|
}
|
||||||
|
var k = getTrashFiles().indexOf(o);
|
||||||
|
if (k !== -1) {
|
||||||
|
// TODO?
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// addTemplate is called when we want to add a new pad, never visited, to the templates list
|
// addTemplate is called when we want to add a new pad, never visited, to the templates list
|
||||||
// first, we must add it to FILES_DATA, so the input has to be an fileDAta object
|
// first, we must add it to FILES_DATA, so the input has to be an fileDAta object
|
||||||
var addTemplate = exp.addTemplate = function (fileData) {
|
var addTemplate = exp.addTemplate = function (fileData) {
|
||||||
|
|||||||
@ -112,6 +112,7 @@ span.fa-folder-open {
|
|||||||
#tree li > span.element-row {
|
#tree li > span.element-row {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
#tree li > span.element-row:not(.selected):hover {
|
#tree li > span.element-row:not(.selected):hover {
|
||||||
background-color: #eee;
|
background-color: #eee;
|
||||||
|
|||||||
@ -146,6 +146,7 @@ span {
|
|||||||
& > span.element-row {
|
& > span.element-row {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
& > span.element-row:not(.selected):hover {
|
& > span.element-row:not(.selected):hover {
|
||||||
background-color: @drive-hover;
|
background-color: @drive-hover;
|
||||||
|
|||||||
@ -1164,7 +1164,7 @@ define([
|
|||||||
var e = useData ? element : filesOp.getFileData(element);
|
var e = useData ? element : filesOp.getFileData(element);
|
||||||
if (!e) {
|
if (!e) {
|
||||||
e = {
|
e = {
|
||||||
href : el,
|
href : element,
|
||||||
title : Messages.fm_noname,
|
title : Messages.fm_noname,
|
||||||
atime : 0,
|
atime : 0,
|
||||||
ctime : 0
|
ctime : 0
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user