// Licensed to Cloudera, Inc. under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. Cloudera, Inc. licenses this file // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /* * jHue HDFS tree plugin * shows a tree HDFS picker, if initialPath is set it pre-populates the path * if home is specified a home link will appear * use attached to an element, ie: * $("#el").jHueHdfsTree({ * initialPath: "/user", * home: "/user/hue" * onPathChange: function (path) { * console.log(path); * } * }); */ (function ($, window, document, undefined) { var pluginName = "jHueHdfsTree", defaults = { home: "", initialPath: "/", onPathChange: function () { }, createFolder: true, labels: { CREATE_FOLDER: "Create folder", FOLDER_NAME: "Folder name", CANCEL: "Cancel", HOME: "Home" } }, STORAGE_PREFIX = "hueFileBrowserLastPathForUser_"; function Plugin(element, options) { this.element = element; if (typeof jHueHdfsTreeGlobals != 'undefined') { var extendedDefaults = $.extend({}, defaults, jHueHdfsTreeGlobals); extendedDefaults.labels = $.extend({}, defaults.labels, jHueHdfsTreeGlobals.labels); this.options = $.extend({}, extendedDefaults, options); if (options != null) { this.options.labels = $.extend({}, extendedDefaults.labels, options.labels); } } else { this.options = $.extend({}, defaults, options); if (options != null) { this.options.labels = $.extend({}, defaults.labels, options.labels); } } this._defaults = defaults; this._name = pluginName; this.lastPath = ""; this.previousPath = ""; this.init(); } Plugin.prototype.init = function (optionalPath) { var _this = this; if (typeof optionalPath != "undefined") { _this.options.initialPath = optionalPath; } var _el = $(_this.element); _el.empty(); _el.addClass("jHueHdfsTree"); if (_this.options.home != ""){ var _homeLink = $("").html(' ' + _this.options.labels.HOME).click(function () { var _path = _this.options.home; _this.options.onPathChange(_path); _this.lastPath = _path; _tree.find("a").removeClass("selected"); var _paths = []; var _re = /\//g; while ((match = _re.exec(_path)) != null) { _paths.push(_path.substr(0, match.index)); } _paths.push(_path); showHdfsLeaf({ paths: _paths, scroll: true }); }); _homeLink.css({ "cursor": "pointer", "position": "fixed", "margin-top": "-10px", "margin-left": "12px", "font-size": "16px", "background-color": "#FFF", "width": "560px" }) } var _tree = $("