|
|
@@ -35,6 +35,7 @@
|
|
|
skipEnter: false,
|
|
|
skipScrollEvent: false,
|
|
|
zIndex: 33000,
|
|
|
+ root: "/",
|
|
|
isS3: false
|
|
|
};
|
|
|
|
|
|
@@ -219,28 +220,15 @@
|
|
|
var BASE_PATH = "/filebrowser/view=";
|
|
|
var _currentFiles = [];
|
|
|
|
|
|
- function prepareAutocompletePath(path) {
|
|
|
- if (_this.options.isS3){
|
|
|
- if (path.indexOf('s3a://') === 0){
|
|
|
- path = path.substr(6);
|
|
|
- }
|
|
|
- if (path.indexOf('/') === 0){
|
|
|
- path = path.substr(1);
|
|
|
- }
|
|
|
- return path;
|
|
|
- }
|
|
|
- if (path.indexOf('/') == 0 || /^([a-zA-Z0-9]+):\/\//.test(path))
|
|
|
- return path.substr(0, path.lastIndexOf("/") + 1);
|
|
|
- if (path.indexOf("/") > 0)
|
|
|
- return _this.options.home + path.substr(0, path.lastIndexOf("/"));
|
|
|
- return _this.options.home;
|
|
|
- }
|
|
|
-
|
|
|
function showHdfsAutocomplete(callback) {
|
|
|
- if (_this.options.isS3 && BASE_PATH.indexOf('S3A://') == -1) {
|
|
|
- BASE_PATH += 'S3A://';
|
|
|
+ var base = "";
|
|
|
+ var path = _el.val();
|
|
|
+ var hasScheme = path.indexOf(":/") >= 0;
|
|
|
+ var isRelative = !hasScheme && path.charAt(0) !== "/";
|
|
|
+ if (isRelative && _this.options.root) {
|
|
|
+ base += _this.options.root;
|
|
|
}
|
|
|
- var autocompleteUrl = BASE_PATH + prepareAutocompletePath(_el.val());
|
|
|
+ var autocompleteUrl = BASE_PATH + base + path;
|
|
|
$.getJSON(autocompleteUrl + "?pagesize=1000&format=json", function (data) {
|
|
|
_currentFiles = [];
|
|
|
if (data.error == null) {
|
|
|
@@ -260,23 +248,12 @@
|
|
|
smartTooltipMaker();
|
|
|
e.preventDefault();
|
|
|
var item = $(this).text().trim();
|
|
|
- var path = autocompleteUrl.substring(BASE_PATH.length);
|
|
|
if (item == "..") { // one folder up
|
|
|
- if (_this.options.isS3) {
|
|
|
- path = path.substring(0, path.lastIndexOf("/"));
|
|
|
- }
|
|
|
- _el.val(path.substring(0, path.lastIndexOf("/")));
|
|
|
- }
|
|
|
- else {
|
|
|
- _el.val(path + (path.charAt(path.length - 1) == "/" ? "" : "/") + item);
|
|
|
- }
|
|
|
- if (_this.options.isS3 && _el.val().indexOf('s3a://') === -1) {
|
|
|
- var val = _el.val();
|
|
|
- if (val.indexOf('/') === 0){
|
|
|
- val = val.substr(1);
|
|
|
- }
|
|
|
- _el.val('s3a://' + val);
|
|
|
+ path = path.substring(0, path.lastIndexOf("/"));
|
|
|
+ } else {
|
|
|
+ path = path + (path.charAt(path.length - 1) == "/" ? "" : "/") + item;
|
|
|
}
|
|
|
+ _el.val(base + path);
|
|
|
if ($(this).html().indexOf("folder") > -1) {
|
|
|
_el.val(_el.val() + "/");
|
|
|
_this.options.onPathChange(_el.val());
|