| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- // 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.
- ko.bindingHandlers.select2 = {
- init: function (element, valueAccessor, allBindingsAccessor, vm) {
- var options = ko.toJS(valueAccessor()) || {};
- if (typeof valueAccessor().update != "undefined") {
- if (options.type == "user" && viewModel.selectableHadoopUsers().indexOf(options.update) == -1) {
- viewModel.availableHadoopUsers.push({
- username: options.update
- });
- }
- if (options.type == "group") {
- if (options.update instanceof Array) {
- options.update.forEach(function(opt){
- if (viewModel.selectableHadoopGroups().indexOf(opt) == -1){
- viewModel.availableHadoopGroups.push({
- name: opt
- });
- }
- });
- }
- else if (viewModel.selectableHadoopGroups().indexOf(options.update) == -1){
- viewModel.availableHadoopGroups.push({
- name: options.update
- });
- }
- }
- if (options.type == "action" && viewModel.availableActions().indexOf(options.update) == -1) {
- viewModel.availableActions.push(options.update);
- }
- if (options.type == "scope" && viewModel.availablePrivileges().indexOf(options.update) == -1) {
- viewModel.availablePrivileges.push(options.update);
- }
- }
- $(element)
- .select2(options)
- .on("change", function (e) {
- if (typeof e.val != "undefined" && typeof valueAccessor().update != "undefined") {
- valueAccessor().update(e.val);
- }
- })
- .on("select2-open", function () {
- $(".select2-input").off("keyup").data("type", options.type).on("keyup", function (e) {
- if (e.keyCode === 13) {
- var _isArray = options.update instanceof Array;
- var _newVal = $(this).val();
- var _type = $(this).data("type");
- if ($.trim(_newVal) != "") {
- if (_type == "user") {
- viewModel.availableHadoopUsers.push({
- username: _newVal
- });
- }
- if (_type == "group") {
- viewModel.availableHadoopGroups.push({
- name: _newVal
- });
- }
- if (_type == "action") {
- viewModel.availableActions.push(_newVal);
- }
- if (_type == "scope") {
- viewModel.availablePrivileges.push(_newVal);
- }
- if (_isArray){
- var _vals = $(element).select2("val");
- _vals.push(_newVal);
- $(element).select2("val", _vals, true);
- }
- else {
- $(element).select2("val", _newVal, true);
- }
- $(element).select2("close");
- }
- }
- });
- })
- },
- update: function (element, valueAccessor, allBindingsAccessor, vm) {
- if (typeof valueAccessor().update != "undefined") {
- $(element).select2("val", valueAccessor().update());
- }
- }
- };
- ko.bindingHandlers.hivechooser = {
- init: function(element, valueAccessor, allBindingsAccessor, vm) {
- var self = $(element);
- self.val(valueAccessor()());
- function setPathFromAutocomplete(path){
- self.val(path);
- self.blur();
- }
- self.on("blur", function(){
- valueAccessor()(self.val());
- });
- self.jHueHiveAutocomplete({
- skipColumns: true,
- showOnFocus: true,
- home: "/",
- onPathChange: function (path) {
- setPathFromAutocomplete(path);
- },
- onEnter: function (el) {
- setPathFromAutocomplete(el.val());
- }
- });
- }
- }
- ko.bindingHandlers.filechooser = {
- init: function(element, valueAccessor, allBindingsAccessor, vm) {
- var self = $(element);
- self.after(getFileBrowseButton(self, true));
- }
- };
- function getFileBrowseButton(inputElement, selectFolder) {
- return $("<button>").addClass("btn").addClass("fileChooserBtn").text("..").click(function (e) {
- e.preventDefault();
- // check if it's a relative path
- callFileChooser();
- function callFileChooser() {
- var _initialPath = $.trim(inputElement.val()) != "" ? inputElement.val() : "/";
- if (_initialPath.indexOf("hdfs://") > -1){
- _initialPath = _initialPath.substring(7);
- }
- $("#filechooser").jHueFileChooser({
- suppressErrors: true,
- selectFolder: (selectFolder) ? true : false,
- onFolderChoose: function (filePath) {
- handleChoice(filePath);
- if (selectFolder) {
- $("#chooseFile").modal("hide");
- }
- },
- onFileChoose: function (filePath) {
- handleChoice(filePath);
- $("#chooseFile").modal("hide");
- },
- createFolder: false,
- uploadFile: false,
- initialPath: _initialPath,
- errorRedirectPath: "",
- forceRefresh: true
- });
- $("#chooseFile").modal("show");
- }
- function handleChoice(filePath) {
- inputElement.val("hdfs://" + filePath);
- inputElement.change();
- }
- });
- }
- ko.bindingHandlers.tooltip = {
- update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
- var options = ko.utils.unwrapObservable(valueAccessor());
- var self = $(element);
- self.tooltip(options);
- }
- };
|