You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by yu...@apache.org on 2012/12/09 12:53:23 UTC
svn commit: r1418895 [5/5] - in /incubator/ambari/branches/AMBARI-666: ./
ambari-web/ ambari-web/app/ ambari-web/app/assets/data/alerts/
ambari-web/app/assets/data/background_operations/
ambari-web/app/assets/data/dashboard/ ambari-web/app/assets/data/...
Added: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/test.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/test.js?rev=1418895&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/test.js (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/test.js Sun Dec 9 11:53:15 2012
@@ -0,0 +1,24 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 App = require('app');
+
+App.MainTestView = Em.View.extend({
+ templateName: require('templates/main/test'),
+ services: App.Service1.find()
+});
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step2_view.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step2_view.js?rev=1418895&r1=1418894&r2=1418895&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step2_view.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step2_view.js Sun Dec 9 11:53:15 2012
@@ -19,6 +19,27 @@
var App = require('app');
+App.SshKeyFileUploader = Ember.View.extend({
+ template:Ember.Handlebars.compile('<input type="file" />'),
+
+ change: function (e) {
+ self=this;
+ if (e.target.files && e.target.files.length == 1) {
+ var file = e.target.files[0];
+ var reader = new FileReader();
+
+ reader.onload = (function(theFile) {
+ return function(e) {
+ $('#sshKey').html(e.target.result);
+ //$('.sshKey-file-view').html(e.target.result);
+ self.set("controller.content.sshKey", e.target.result);
+ };
+ })(file);
+ reader.readAsText(file);
+ }
+ }
+});
+
App.WizardStep2View = Em.View.extend({
templateName: require('templates/wizard/step2'),
@@ -38,7 +59,24 @@ App.WizardStep2View = Em.View.extend({
} else {
this.set('hostNameErr', true);
}
- }.observes('controller.hostNameEmptyError', 'controller.hostNameNotRequiredErr', 'controller.hostNameErr')
+ }.observes('controller.hostNameEmptyError', 'controller.hostNameNotRequiredErr', 'controller.hostNameErr'),
+
+ sshKeyState: function(){
+ return this.get("controller").get("content.manualInstall");
+ }.property("controller.content.manualInstall"),
+
+ sshKeyClass:function() {
+ //alert(this.get("isFileApi"))
+ return (this.get("isFileApi")) ? "hide" : "" ;
+ }.property("isFileApi"),
+
+ isFileApi: function () {
+ return (window.File && window.FileReader && window.FileList) ? true : false ;
+ }.property(),
+
+ sshKeyPreviewClass: function() {
+ return (this.get('controller.content.sshKey').trim() != '') ? 'sshKey-file-view help-inline' : 'hidden';
+ }.property('controller.content.sshKey')
});
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/config.coffee
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/config.coffee?rev=1418895&r1=1418894&r2=1418895&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/config.coffee (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/config.coffee Sun Dec 9 11:53:15 2012
@@ -39,6 +39,7 @@ exports.config =
'vendor/scripts/ember-data-latest.js',
'vendor/scripts/ember-i18n-1.2.0.js',
'vendor/scripts/bootstrap.js',
+ 'vendor/scripts/bootstrap-combobox.js'
'vendor/scripts/d3.v2.js',
'vendor/scripts/sinon-1.4.2.js',
'vendor/scripts/cubism.v1.js',
@@ -66,6 +67,7 @@ exports.config =
'vendor/styles/font-awesome-ie7.css',
'vendor/styles/cubism.css',
'vendor/styles/rickshaw.css'
+ 'vendor/styles/bootstrap-combobox.css'
]
templates:
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/package.json
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/package.json?rev=1418895&r1=1418894&r2=1418895&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/package.json (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/package.json Sun Dec 9 11:53:15 2012
@@ -19,8 +19,7 @@
"uglify-js-brunch": ">= 1.0 < 1.5",
"clean-css-brunch": ">= 1.0 < 1.5",
"ember-handlebars-brunch": "git://github.com/icholy/ember-handlebars-brunch.git",
- "less-brunch": "git://github.com/brunch/less-brunch.git",
- "d3": ">=2.10.3"
+ "less-brunch": "git://github.com/brunch/less-brunch.git"
},
"devDependencies": {
"mocha": "0.14.0",
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/pom.xml
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/pom.xml?rev=1418895&r1=1418894&r2=1418895&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/pom.xml (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/pom.xml Sun Dec 9 11:53:15 2012
@@ -16,7 +16,7 @@
<artifactId>ambari-web</artifactId>
<packaging>pom</packaging>
<name>Ambari Web</name>
- <version>1.0.3-SNAPSHOT</version>
+ <version>1.0.3</version>
<description>Ambari Web</description>
<dependencies>
<dependency>
Added: incubator/ambari/branches/AMBARI-666/ambari-web/vendor/scripts/bootstrap-combobox.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/vendor/scripts/bootstrap-combobox.js?rev=1418895&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/vendor/scripts/bootstrap-combobox.js (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/vendor/scripts/bootstrap-combobox.js Sun Dec 9 11:53:15 2012
@@ -0,0 +1,217 @@
+/* =============================================================
+ * bootstrap-combobox.js v1.0.0
+ * =============================================================
+ * Copyright 2012 Daniel Farrell
+ *
+ * Licensed 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.
+ * ============================================================ */
+
+!function ($) {
+
+ "use strict"
+
+ var Combobox = function (element, options) {
+ this.options = $.extend({}, $.fn.combobox.defaults, options)
+ this.$container = this.setup(element)
+ this.$element = this.$container.find('input')
+ this.$button = this.$container.find('.dropdown-toggle')
+ this.$target = this.$container.find('select')
+ this.matcher = this.options.matcher || this.matcher
+ this.sorter = this.options.sorter || this.sorter
+ this.highlighter = this.options.highlighter || this.highlighter
+ this.$menu = $(this.options.menu).appendTo('body')
+ this.placeholder = this.options.placeholder || this.$target.attr('data-placeholder')
+ this.$element.attr('placeholder', this.placeholder)
+ this.shown = false
+ this.selected = false
+ this.refresh()
+ this.listen()
+ }
+
+ /* NOTE: COMBOBOX EXTENDS BOOTSTRAP-TYPEAHEAD.js
+ ========================================== */
+
+ Combobox.prototype = $.extend({}, $.fn.typeahead.Constructor.prototype, {
+
+ constructor:Combobox, setup:function (element) {
+ var select = $(element)
+ , combobox = $(this.options.template)
+ select.before(combobox)
+ select.detach()
+ combobox.append(select)
+ return combobox
+ },
+ parse:function () {
+ var map = {}
+ , source = []
+ , selected = false
+ this.$target.find('option').each(function () {
+ var option = $(this)
+ map[option.text()] = option.val()
+ source.push(option.text())
+ if (option.attr('selected')) selected = option.html()
+ })
+ this.map = map
+ if (selected) {
+ this.$element.val(selected)
+ this.$container.addClass('combobox-selected')
+ this.selected = true
+ }
+ return source
+ },
+ toggle:function () {
+ if (this.$container.hasClass('combobox-selected')) {
+ this.clearTarget()
+ this.$element.val('').focus()
+ } else {
+ if (this.shown) {
+ this.hide()
+ } else {
+ this.lookup()
+ }
+ }
+ },
+ clearTarget:function () {
+ this.$target.val('')
+ this.$container.removeClass('combobox-selected')
+ this.selected = false
+ this.$target.trigger('change')
+ },
+ refresh:function () {
+ this.source = this.parse()
+ this.options.items = this.source.length
+ }
+
+ // modified typeahead function adding container and target handling
+ , select:function () {
+ var val = this.$menu.find('.active').attr('data-value')
+ this.$element.val(val)
+ this.$container.addClass('combobox-selected')
+ this.$target.val(this.map[val])
+ this.$target.trigger('change')
+ this.selected = true
+ return this.hide()
+ }
+
+ // modified typeahead function removing the blank handling
+ , lookup:function (event) {
+ var that = this
+ , items
+ , q
+
+ this.query = this.$element.val()
+
+ items = $.grep(this.source, function (item) {
+ if (that.matcher(item)) return item
+ })
+
+ items = this.sorter(items)
+
+ if (!items.length) {
+ return this.shown ? this.hide() : this
+ }
+
+ return this.render(items.slice(0, this.options.items)).show()
+ }
+
+ // modified typeahead function adding button handling
+ , listen:function () {
+ this.$element
+ .on('blur', $.proxy(this.blur, this))
+ .on('keypress', $.proxy(this.keypress, this))
+ .on('keyup', $.proxy(this.keyup, this))
+
+ if ($.browser.webkit || $.browser.msie) {
+ this.$element.on('keydown', $.proxy(this.keypress, this))
+ }
+
+ this.$menu
+ .on('click', $.proxy(this.click, this))
+ .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
+
+ this.$button
+ .on('click', $.proxy(this.toggle, this))
+ }
+
+ // modified typeahead function to clear on type and prevent on moving around
+ , keyup:function (e) {
+ switch (e.keyCode) {
+ case 40: // down arrow
+ case 39: // right arrow
+ case 38: // up arrow
+ case 37: // left arrow
+ case 36: // home
+ case 35: // end
+ case 16: // shift
+ break
+
+ case 9: // tab
+ case 13: // enter
+ if (!this.shown) return
+ this.select()
+ break
+
+ case 27: // escape
+ if (!this.shown) return
+ this.hide()
+ break
+
+ default:
+ this.clearTarget()
+ this.lookup()
+ }
+
+ e.stopPropagation()
+ e.preventDefault()
+ }
+
+ // modified typeahead function to only hide menu if it is visible
+ , blur:function (e) {
+ var that = this
+ e.stopPropagation()
+ e.preventDefault()
+ var val = this.$element.val()
+ if (!this.selected && val != "") {
+ this.$element.val("")
+ this.$target.val("").trigger('change')
+ }
+ if (this.shown) {
+ setTimeout(function () {
+ that.hide()
+ }, 150)
+ }
+ }
+ })
+
+ /* COMBOBOX PLUGIN DEFINITION
+ * =========================== */
+
+ $.fn.combobox = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('combobox')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('combobox', (data = new Combobox(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.combobox.defaults = {
+ template:'<div class="combobox-container"><input type="text" autocomplete="off" /><button class="add-on btn dropdown-toggle" data-dropdown="dropdown"><span class="caret"/><span class="combobox-clear"><i class="icon-remove"/></span></button></div>',
+ menu:'<ul class="typeahead typeahead-long dropdown-menu"></ul>',
+ item:'<li><a href="#"></a></li>', placeholder:null
+ }
+
+ $.fn.combobox.Constructor = Combobox
+
+}(window.jQuery);
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/vendor/scripts/jquery.dataTables.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/vendor/scripts/jquery.dataTables.js?rev=1418895&r1=1418894&r2=1418895&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/vendor/scripts/jquery.dataTables.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/vendor/scripts/jquery.dataTables.js Sun Dec 9 11:53:15 2012
@@ -745,7 +745,7 @@
};
}
else if (typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1)) {
- /* If there is a . in the source string then the data source is in a
+ /* If there is a . in the source string then the data source is in a
* nested object so we loop over the data for each level to get the next
* level down. On each loop we test for undefined, and if found immediately
* return. This allows entire objects to be missing and sDefaultContent to
@@ -1336,9 +1336,9 @@
_fnCallbackFire(oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],
_fnGetDataMaster(oSettings), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ]);
- /*
+ /*
* Need to remove any old row from the display - note we can't just empty the tbody using
- * $().html('') since this will unbind the jQuery event handlers (even although the node
+ * $().html('') since this will unbind the jQuery event handlers (even although the node
* still exists!) - equally we can't use innerHTML, since IE throws an exception.
*/
var
@@ -1422,7 +1422,7 @@
var nHolding = $('<div></div>')[0];
oSettings.nTable.parentNode.insertBefore(nHolding, oSettings.nTable);
- /*
+ /*
* All DataTables are wrapped in a div
*/
oSettings.nTableWrapper = $('<div id="' + oSettings.sTableId + '_wrapper" class="' + oSettings.oClasses.sWrapper + '" role="grid"></div>')[0];
@@ -1590,7 +1590,7 @@
iColspan = (!iColspan || iColspan === 0 || iColspan === 1) ? 1 : iColspan;
iRowspan = (!iRowspan || iRowspan === 0 || iRowspan === 1) ? 1 : iRowspan;
- /* There might be colspan cells already in this row, so shift our target
+ /* There might be colspan cells already in this row, so shift our target
* accordingly
*/
iColShifted = fnShiftCol(aLayout, i, iColumn);
@@ -2015,7 +2015,7 @@
}
else {
/*
- * We are starting a new search or the new search string is smaller
+ * We are starting a new search or the new search string is smaller
* then the old one (i.e. delete). Search from the master array
*/
if (oSettings.aiDisplay.length == oSettings.aiDisplayMaster.length ||
@@ -2028,7 +2028,7 @@
_fnBuildSearchArray(oSettings, 1);
/* Search through all records to populate the search array
- * The the oSettings.aiDisplayMaster and asDataSearch arrays have 1 to 1
+ * The the oSettings.aiDisplayMaster and asDataSearch arrays have 1 to 1
* mapping
*/
for (i = 0; i < oSettings.aiDisplayMaster.length; i++) {
@@ -2505,7 +2505,7 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Note that most of the paging logic is done in
+ * Note that most of the paging logic is done in
* DataTable.ext.oPagination
*/
@@ -2927,11 +2927,11 @@
* set the width based on the real headers
*/
- // Apply all styles in one pass. Invalidates layout only once because we don't read any
+ // Apply all styles in one pass. Invalidates layout only once because we don't read any
// DOM properties.
_fnApplyToChildren(zeroOut, anHeadSizers);
- // Read all widths in next pass. Forces layout only once because we do not change
+ // Read all widths in next pass. Forces layout only once because we do not change
// any DOM properties.
_fnApplyToChildren(function (nSizer) {
aApplied.push(_fnStringToCss($(nSizer).width()));
@@ -3165,8 +3165,8 @@
}
}
- /* If the number of columns in the DOM equals the number that we have to process in
- * DataTables, then we can use the offsets that are created by the web-browser. No custom
+ /* If the number of columns in the DOM equals the number that we have to process in
+ * DataTables, then we can use the offsets that are created by the web-browser. No custom
* sizes can be set in order for this to happen, nor scrolling used
*/
if (iColums == oHeaders.length && iUserInputs === 0 && iVisibleColumns == iColums &&
@@ -3275,7 +3275,7 @@
oNodes = _fnGetUniqueThs(oSettings, $('thead', nCalcTmp)[0]);
}
- /* Browsers need a bit of a hand when a width is assigned to any columns when
+ /* Browsers need a bit of a hand when a width is assigned to any columns when
* x-scrolling as they tend to collapse the table to the min-width, even if
* we sent the column widths. So we need to keep track of what the table width
* should be by summing the user given values, and the automatic values
@@ -3542,7 +3542,7 @@
* return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
* }
* Basically we have a test for each sorting column, if the data in that column is equal,
- * test the next column. If all columns match, then we use a numeric sort on the row
+ * test the next column. If all columns match, then we use a numeric sort on the row
* positions in the original data array to provide a stable sort.
*/
oSettings.aiDisplayMaster.sort(function (a, b) {
@@ -3635,14 +3635,14 @@
/*
* This is a little bit odd I admit... I declare a temporary function inside the scope of
- * _fnBuildHead and the click handler in order that the code presented here can be used
- * twice - once for when bProcessing is enabled, and another time for when it is
+ * _fnBuildHead and the click handler in order that the code presented here can be used
+ * twice - once for when bProcessing is enabled, and another time for when it is
* disabled, as we need to perform slightly different actions.
- * Basically the issue here is that the Javascript engine in modern browsers don't
+ * Basically the issue here is that the Javascript engine in modern browsers don't
* appear to allow the rendering engine to update the display while it is still executing
- * it's thread (well - it does but only after long intervals). This means that the
+ * it's thread (well - it does but only after long intervals). This means that the
* 'processing' display doesn't appear for a table sort. To break the js thread up a bit
- * I force an execution break by using setTimeout - but this breaks the expected
+ * I force an execution break by using setTimeout - but this breaks the expected
* thread continuation for the end-developer's point of view (their code would execute
* too early), so we only do it when we absolutely have to.
*/
@@ -3791,11 +3791,11 @@
}
}
- /*
+ /*
* Apply the required classes to the table body
* Note that this is given as a feature switch since it can significantly slow down a sort
* on large data sets (adding and removing of classes is always slow at the best of times..)
- * Further to this, note that this code is admittedly fairly ugly. It could be made a lot
+ * Further to this, note that this code is admittedly fairly ugly. It could be made a lot
* simpler using jQuery selectors and add/removeClass, but that is significantly slower
* (on the order of 5 times slower) - hence the direct DOM manipulation here.
* Note that for deferred drawing we do use jQuery - the reason being that taking the first
@@ -3948,7 +3948,7 @@
var date = new Date();
date.setTime(date.getTime() + (iSecs * 1000));
- /*
+ /*
* Shocking but true - it would appear IE has major issues with having the path not having
* a trailing slash on it. We need the cookie to be available based on the path, so we
* have to append the file name to the cookie name. Appalling. Thanks to vex for adding the
@@ -4502,10 +4502,10 @@
* $(document).ready(function() {
* var oTable = $('#example').dataTable();
*
- * // Filter to 'Webkit' and get all data for
+ * // Filter to 'Webkit' and get all data for
* oTable.fnFilter('Webkit');
* var data = oTable._('tr', {"filter": "applied"});
- *
+ *
* // Do something with the data
* alert( data.length+" rows matched the filter" );
* } );
@@ -4556,7 +4556,7 @@
* giCount+".3",
* giCount+".4" ]
* );
- *
+ *
* giCount++;
* }
*/
@@ -4612,7 +4612,7 @@
* "sScrollY": "200px",
* "bPaginate": false
* } );
- *
+ *
* $(window).bind('resize', function () {
* oTable.fnAdjustColumnSizing();
* } );
@@ -4640,7 +4640,7 @@
* @example
* $(document).ready(function() {
* var oTable = $('#example').dataTable();
- *
+ *
* // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)
* oTable.fnClearTable();
* } );
@@ -4666,7 +4666,7 @@
* @example
* $(document).ready(function() {
* var oTable;
- *
+ *
* // 'open' an information row when a row is clicked on
* $('#example tbody tr').click( function () {
* if ( oTable.fnIsOpen(this) ) {
@@ -4675,7 +4675,7 @@
* oTable.fnOpen( this, "Temporary row opened", "info_row" );
* }
* } );
- *
+ *
* oTable = $('#example').dataTable();
* } );
*/
@@ -4710,7 +4710,7 @@
* @example
* $(document).ready(function() {
* var oTable = $('#example').dataTable();
- *
+ *
* // Immediately remove the first row
* oTable.fnDeleteRow( 0 );
* } );
@@ -4896,7 +4896,7 @@
* @example
* $(document).ready(function() {
* var oTable = $('#example').dataTable();
- *
+ *
* // Re-draw the table - you wouldn't want to do it here, but it's an example :-)
* oTable.fnDraw();
* } );
@@ -4926,7 +4926,7 @@
* @example
* $(document).ready(function() {
* var oTable = $('#example').dataTable();
- *
+ *
* // Sometime later - filter...
* oTable.fnFilter( 'test string' );
* } );
@@ -5066,7 +5066,7 @@
* @example
* $(document).ready(function() {
* var oTable = $('#example').dataTable();
- *
+ *
* // Get the nodes from the table
* var nNodes = oTable.fnGetNodes( );
* } );
@@ -5096,15 +5096,15 @@
* $('#example tbody td').click( function () {
* // Get the position of the current data from the node
* var aPos = oTable.fnGetPosition( this );
- *
+ *
* // Get the data array for this row
* var aData = oTable.fnGetData( aPos[0] );
- *
+ *
* // Update the data array and return the value
* aData[ aPos[1] ] = 'clicked';
* this.innerHTML = 'clicked';
* } );
- *
+ *
* // Init DataTables
* oTable = $('#example').dataTable();
* } );
@@ -5134,7 +5134,7 @@
* @example
* $(document).ready(function() {
* var oTable;
- *
+ *
* // 'open' an information row when a row is clicked on
* $('#example tbody tr').click( function () {
* if ( oTable.fnIsOpen(this) ) {
@@ -5143,7 +5143,7 @@
* oTable.fnOpen( this, "Temporary row opened", "info_row" );
* }
* } );
- *
+ *
* oTable = $('#example').dataTable();
* } );
*/
@@ -5176,7 +5176,7 @@
* @example
* $(document).ready(function() {
* var oTable;
- *
+ *
* // 'open' an information row when a row is clicked on
* $('#example tbody tr').click( function () {
* if ( oTable.fnIsOpen(this) ) {
@@ -5185,7 +5185,7 @@
* oTable.fnOpen( this, "Temporary row opened", "info_row" );
* }
* } );
- *
+ *
* oTable = $('#example').dataTable();
* } );
*/
@@ -5266,7 +5266,7 @@
* @example
* $(document).ready(function() {
* var oTable = $('#example').dataTable();
- *
+ *
* // Hide the second column after initialisation
* oTable.fnSetColumnVis( 1, false );
* } );
@@ -5345,8 +5345,8 @@
oSettings.aoOpenRows[i].nTr.colSpan = _fnVisbleColumns(oSettings);
}
- /* Do a redraw incase anything depending on the table columns needs it
- * (built-in: scrolling)
+ /* Do a redraw incase anything depending on the table columns needs it
+ * (built-in: scrolling)
*/
if (bRedraw === undefined || bRedraw) {
_fnAdjustColumnSizing(oSettings);
@@ -5367,7 +5367,7 @@
* $(document).ready(function() {
* var oTable = $('#example').dataTable();
* var oSettings = oTable.fnSettings();
- *
+ *
* // Show an example parameter from the settings
* alert( oSettings._iDisplayStart );
* } );
@@ -5386,7 +5386,7 @@
* @example
* $(document).ready(function() {
* var oTable = $('#example').dataTable();
- *
+ *
* // Sort immediately with columns 0 and 1
* oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );
* } );
@@ -5408,7 +5408,7 @@
* @example
* $(document).ready(function() {
* var oTable = $('#example').dataTable();
- *
+ *
* // Sort on column 1, when 'sorter' is clicked on
* oTable.fnSortListener( document.getElementById('sorter'), 1 );
* } );
@@ -5434,10 +5434,10 @@
*
* @example
* $(document).ready(function() {
- * var oTable = $('#example').dataTable();
- * oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell
- * oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], 1, 0 ); // Row
- * } );
+ * var oTable = $('#example').dataTable();
+ * oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell
+ * oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], 1, 0 ); // Row
+ * } );
*/
this.fnUpdate = function (mData, mRow, iColumn, bRedraw, bAction) {
var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
@@ -5795,8 +5795,8 @@
}
if (oInit.bJQueryUI) {
- /* Use the JUI classes object for display. You could clone the oStdClasses object if
- * you want to have multiple tables with multiple independent classes
+ /* Use the JUI classes object for display. You could clone the oStdClasses object if
+ * you want to have multiple tables with multiple independent classes
*/
$.extend(oSettings.oClasses, DataTable.ext.oJUIClasses);
@@ -5842,7 +5842,7 @@
/* Language definitions */
if (oInit.oLanguage.sUrl !== "") {
/* Get the language definitions from a file - because this Ajax call makes the language
- * get async to the remainder of this function we use bInitHandedOff to indicate that
+ * get async to the remainder of this function we use bInitHandedOff to indicate that
* _fnInitialise will be fired by the returned Ajax handler, rather than the constructor
*/
oSettings.oLanguage.sUrl = oInit.oLanguage.sUrl;
Added: incubator/ambari/branches/AMBARI-666/ambari-web/vendor/scripts/jquery.periodic.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/vendor/scripts/jquery.periodic.js?rev=1418895&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/vendor/scripts/jquery.periodic.js (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/vendor/scripts/jquery.periodic.js Sun Dec 9 11:53:15 2012
@@ -0,0 +1,198 @@
+/*!
+ * jQuery periodic plugin
+ *
+ * Copyright 2010, Tom Anderson
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ */
+
+jQuery.periodic = function (options, callback) {
+
+ // if the first argument is a function then assume the options aren't being passed
+ if (jQuery.isFunction(options)) {
+ callback = options;
+ options = {};
+ }
+
+ // Merge passed settings with default values
+ var settings = jQuery.extend({}, jQuery.periodic.defaults, {
+ ajax_complete : ajaxComplete,
+ increment : increment,
+ reset : reset,
+ cancel : cancel
+ }, options);
+
+ // bookkeeping variables
+ settings.cur_period = settings.period;
+ settings.tid = false;
+ var prev_ajax_response = '';
+
+ run();
+
+ // return settings so user can tweak them externally
+ return settings;
+
+ // run (or restart if already running) the looping construct
+ function run() {
+ // clear/stop existing timer (multiple calls to run() won't result in multiple timers)
+ cancel();
+ // let it rip!
+ settings.tid = setTimeout(function() {
+ // set the context (this) for the callback to the settings object
+ callback.call(settings);
+
+ // compute the next value for cur_period
+ increment();
+
+ // queue up the next run
+ if(settings.tid)
+ run();
+ }, settings.cur_period);
+ }
+
+ // utility function for use with ajax calls
+ function ajaxComplete(xhr, status) {
+ if (status === 'success' && prev_ajax_response !== xhr.responseText) {
+ // reset the period whenever the response changes
+ prev_ajax_response = xhr.responseText;
+ reset();
+ }
+ }
+
+ // compute the next delay
+ function increment() {
+ settings.cur_period *= settings.decay;
+ if (settings.cur_period < settings.period) {
+ // don't let it drop below the minimum
+ reset();
+ } else if (settings.cur_period > settings.max_period) {
+ settings.cur_period = settings.max_period;
+ if (settings.on_max !== undefined) {
+ // call the user-supplied callback if we reach max_period
+ settings.on_max.call(settings);
+ }
+ }
+ }
+
+ function reset() {
+ settings.cur_period = settings.period;
+ // restart with the new timeout
+ run();
+ }
+
+ function cancel() {
+ clearTimeout(settings.tid);
+ settings.tid = null;
+ }
+
+ // other functions we might want to implement
+ function pause() {}
+ function resume() {}
+ function log() {}
+};
+
+jQuery.periodic.defaults = {
+ period : 4000, // 4 sec.
+ max_period : 1800000, // 30 min.
+ decay : 1.5, // time period multiplier
+ on_max : undefined // called if max_period is reached
+};
+/*!
+ * jQuery periodic plugin
+ *
+ * Copyright 2010, Tom Anderson
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ */
+
+jQuery.periodic = function (options, callback) {
+
+ // if the first argument is a function then assume the options aren't being passed
+ if (jQuery.isFunction(options)) {
+ callback = options;
+ options = {};
+ }
+
+ // Merge passed settings with default values
+ var settings = jQuery.extend({}, jQuery.periodic.defaults, {
+ ajax_complete : ajaxComplete,
+ increment : increment,
+ reset : reset,
+ cancel : cancel
+ }, options);
+
+ // bookkeeping variables
+ settings.cur_period = settings.period;
+ settings.tid = false;
+ var prev_ajax_response = '';
+
+ run();
+
+ // return settings so user can tweak them externally
+ return settings;
+
+ // run (or restart if already running) the looping construct
+ function run() {
+ // clear/stop existing timer (multiple calls to run() won't result in multiple timers)
+ cancel();
+ // let it rip!
+ settings.tid = setTimeout(function() {
+ // set the context (this) for the callback to the settings object
+ callback.call(settings);
+
+ // compute the next value for cur_period
+ increment();
+
+ // queue up the next run
+ if(settings.tid)
+ run();
+ }, settings.cur_period);
+ }
+
+ // utility function for use with ajax calls
+ function ajaxComplete(xhr, status) {
+ if (status === 'success' && prev_ajax_response !== xhr.responseText) {
+ // reset the period whenever the response changes
+ prev_ajax_response = xhr.responseText;
+ reset();
+ }
+ }
+
+ // compute the next delay
+ function increment() {
+ settings.cur_period *= settings.decay;
+ if (settings.cur_period < settings.period) {
+ // don't let it drop below the minimum
+ reset();
+ } else if (settings.cur_period > settings.max_period) {
+ settings.cur_period = settings.max_period;
+ if (settings.on_max !== undefined) {
+ // call the user-supplied callback if we reach max_period
+ settings.on_max.call(settings);
+ }
+ }
+ }
+
+ function reset() {
+ settings.cur_period = settings.period;
+ // restart with the new timeout
+ run();
+ }
+
+ function cancel() {
+ clearTimeout(settings.tid);
+ settings.tid = null;
+ }
+
+ // other functions we might want to implement
+ function pause() {}
+ function resume() {}
+ function log() {}
+};
+
+jQuery.periodic.defaults = {
+ period : 4000, // 4 sec.
+ max_period : 1800000, // 30 min.
+ decay : 1.5, // time period multiplier
+ on_max : undefined // called if max_period is reached
+};
\ No newline at end of file
Added: incubator/ambari/branches/AMBARI-666/ambari-web/vendor/styles/bootstrap-combobox.css
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/vendor/styles/bootstrap-combobox.css?rev=1418895&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/vendor/styles/bootstrap-combobox.css (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/vendor/styles/bootstrap-combobox.css Sun Dec 9 11:53:15 2012
@@ -0,0 +1,180 @@
+.combobox-container {
+ margin-bottom: 5px;
+ *zoom: 1;
+}
+
+.combobox-container:before,
+.combobox-container:after {
+ display: table;
+ content: "";
+}
+
+.combobox-container:after {
+ clear: both;
+}
+
+.combobox-container input,
+.combobox-container .uneditable-input {
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+
+.combobox-container input:focus,
+.combobox-container .uneditable-input:focus {
+ position: relative;
+ z-index: 2;
+}
+
+.combobox-container .uneditable-input {
+ border-left-color: #ccc;
+}
+
+.combobox-container .add-on {
+ float: left;
+ display: block;
+ width: auto;
+ min-width: 16px;
+ height: 18px;
+ margin-right: -1px;
+ padding: 4px 5px;
+ font-weight: normal;
+ line-height: 18px;
+ color: #999999;
+ text-align: center;
+ text-shadow: 0 1px 0 #ffffff;
+ background-color: #f5f5f5;
+ border: 1px solid #ccc;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+
+.combobox-container .active {
+ background-color: #a9dba9;
+ border-color: #46a546;
+}
+
+.combobox-container input,
+.combobox-container .uneditable-input {
+ float: left;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+
+.combobox-container .uneditable-input {
+ border-left-color: #eee;
+ border-right-color: #ccc;
+}
+
+.combobox-container .add-on {
+ margin-right: 0;
+ margin-left: -1px;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+
+.combobox-container input:first-child {
+ *margin-left: -160px;
+}
+
+.combobox-container input:first-child + .add-on {
+ *margin-left: -21px;
+}
+
+.combobox-container select {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ border: 0;
+ padding: 0;
+ margin: 0;
+ text-indent: -99999px;
+ *text-indent: 0;
+}
+
+.form-search .combobox-container,
+.form-inline .combobox-container {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: top;
+}
+
+.form-search .combobox-container .add-on,
+.form-inline .combobox-container .add-on {
+ vertical-align: middle;
+}
+
+.combobox-selected .combobox-clear {
+ display: inline-block;
+}
+
+.combobox-selected .caret {
+ display: none;
+}
+
+.combobox-clear {
+ display: none;
+ width: 14px;
+ height: 14px;
+ line-height: 14px;
+ vertical-align: top;
+ opacity: 0.3;
+ filter: alpha(opacity = 30);
+}
+
+.dropdown:hover .combobox-clear,
+.open.dropdown .combobox-clear {
+ opacity: 1;
+ filter: alpha(opacity = 100);
+}
+
+.btn .combobox-clear {
+ margin-top: 1px;
+ margin-left: 1px;
+}
+
+.btn:hover .combobox-clear,
+.open.btn-group .combobox-clear {
+ opacity: 1;
+ filter: alpha(opacity = 100);
+}
+
+.typeahead-long {
+ max-height: 300px;
+ overflow-y: auto;
+}
+
+.control-group.error .combobox-container .add-on {
+ color: #B94A48;
+ border-color: #B94A48;
+}
+
+.control-group.error .combobox-container .caret {
+ border-top-color: #B94A48;
+}
+
+.control-group.warning .combobox-container .add-on {
+ color: #C09853;
+ border-color: #C09853;
+}
+
+.control-group.warning .combobox-container .caret {
+ border-top-color: #C09853;
+}
+
+.control-group.success .combobox-container .add-on {
+ color: #468847;
+ border-color: #468847;
+}
+
+.control-group.success .combobox-container .caret {
+ border-top-color: #468847;
+}
+
+.combobox-container button.add-on {
+ height: 30px;
+ width: 30px;
+}
\ No newline at end of file