// 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. var utils = { //take an element with mustache templates as content and re-render renderElement:function(element,data) { element.html(Mustache.render(element.html(), data)); }, renderElements:function(selector,data) { if(selector == null || typeof(selector) == "undefined") selector = ''; $(selector).each(function() { utils._renderElement(this); }); }, renderPage:function(page_selector,data) { return utils.renderElements('.' + PAGE_TEMPLATE_PREFIX + page_selector,data); }, setTitle:function(title) { $('.page-title').text(title); return this; }, getTitle:function() { return $('.page-title').text(); } } function hashToArray(hash) { var keys = Object.keys(hash); var output = []; for(var i=0;i= 0 && location<10) //stupid guess return types[i]; } } catch(error) { } for(var i=0;i= 0 && data.indexOf(b64[i]) <= 10) return types[i]; } return 'type/null'; } function convertTimestamp(timestamp) { var date = new Date(parseInt(timestamp)*1000); return date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds(); } function resetElements() { $(window).unbind('scroll'); $(window).scroll(function(e) { $(".subnav.sticky").each(function() { var padder = $(this).data('padder'), top = $(this).position().top + (padder ? window.scrollY : 0); if(padder && top <= padder.position().top) { $(this).removeClass('subnav-fixed').data('padder').remove(); $(this).removeData('padder'); } else if(!padder && top <= window.scrollY + $('.navbar').outerHeight()) { $(this).addClass('subnav-fixed').data('padder',$('
').insertBefore($(this)).css('height',$(this).outerHeight())); } }); }); app.views.tabledata.searchQuery(''); app.search.cur_input(''); }; function prepForTransport(value) { value = value.replace(/\"/g,'\\\"').replace(/\//g,'\\/'); if(isNaN(parseInt(value)) && value.trim() != '') value = '"' + value + '"'; return encodeURIComponent(value); }; function logGA(postfix) { if(postfix == null) postfix = "" if (typeof trackOnGA == 'function') { trackOnGA('hbase/' + postfix); } }; function getEditablePosition(contentEditable, trimWhitespaceNodes) { var el = contentEditable; if(window.getSelection().getRangeAt(0).startContainer == el) //raw reference for FF fix return 0; var index = window.getSelection().getRangeAt(0).startOffset; //ff var cur_node = window.getSelection().getRangeAt(0).startContainer; //ff while(cur_node != null && cur_node != el) { var cur_sib = cur_node.previousSibling || cur_node.previousElementSibling; while(cur_sib != null) { var val = $(cur_sib).text() || cur_sib.nodeValue; if(typeof val !== "undefined" && val != null) { index += trimWhitespaceNodes ? val.length : val.length; } cur_sib = cur_sib.previousSibling; } cur_node = cur_node.parentNode; } return index; }; function setCursor(node, pos, trimWhitespaceNodes){ var sel = window.getSelection(); var range = document.createRange(); node = function selectNode(node) { var nodes = node.childNodes; if(pos > 0) { for(var i=0; i= pos) { return nodes[i]; } else { pos -= val.length; } } var n = selectNode(nodes[i]); if (n) return n; } } return false; }(node); try { range.setStart(node, pos); range.setEnd(node, pos); range.collapse(true); sel.removeAllRanges(); sel.addRange(range); } catch (err) { } } window.selectIndex = null; var fallback = typeof window.getSelection === "undefined"; ko.bindingHandlers.editableText = { init: function(element, valueAccessor, allBindingsAccessor) { $(element).on('keydown', function() { setTimeout(function() { var modelValue = valueAccessor(); var elementValue = $(element).text(); if (ko.isWriteableObservable(modelValue) && elementValue != modelValue()) { if(!fallback) window.selectIndex = getEditablePosition(element); //firefox does some tricky predictive stuff here modelValue(elementValue); } else { //handle non-observable one-way binding var allBindings = allBindingsAccessor(); if (allBindings['_ko_property_writers'] && allBindings['_ko_property_writers'].htmlValue) allBindings['_ko_property_writers'].htmlValue(elementValue); }}, 1); }); }, update: function(element, valueAccessor) { var value = ko.utils.unwrapObservable(valueAccessor()) || ""; if(value.trim() == "" && !app.search.focused()) { app.search.doBlur(); } else { if(!fallback) { element.innerHTML = app.search.render(value, searchRenderers); if(window.selectIndex != null) { setCursor(element, window.selectIndex); } } } } };