You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ol...@apache.org on 2016/04/09 12:15:21 UTC
[25/61] [abbrv] [partial] ambari git commit: AMBARI-15679. Initial
commit for LogSearch service definition (oleewre)
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7294694/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone-pageable/js/backbone-pageable.min.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone-pageable/js/backbone-pageable.min.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone-pageable/js/backbone-pageable.min.js
new file mode 100644
index 0000000..78f32fd
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone-pageable/js/backbone-pageable.min.js
@@ -0,0 +1,8 @@
+/*
+ backbone-pageable 1.3.2
+ http://github.com/wyuenho/backbone-pageable
+
+ Copyright (c) 2013 Jimmy Yuen Ho Wong
+ Licensed under the MIT @license.
+*/
+!function(a){if("object"==typeof exports)module.exports=a(require("underscore"),require("backbone"));else if("function"==typeof define&&define.amd)define(["underscore","backbone"],a);else if("undefined"!=typeof _&&"undefined"!=typeof Backbone){var b=Backbone.PageableCollection,c=a(_,Backbone);Backbone.PageableCollection.noConflict=function(){return Backbone.PageableCollection=b,c}}}(function(a,b){"use strict";function c(b,c){if(!a.isNumber(b)||a.isNaN(b)||!a.isFinite(b)||~~b!==b)throw new TypeError("`"+c+"` must be a finite integer");return b}function d(a){for(var b,c,d,e,f={},g=decodeURIComponent,h=a.split("&"),i=0,j=h.length;j>i;i++){var k=h[i];b=k.split("="),c=b[0],d=b[1]||!0,c=g(c),e=f[c],n(e)?e.push(d):f[c]=e?[e,d]:d}return f}var e=a.extend,f=a.omit,g=a.clone,h=a.each,i=a.pick,j=a.contains,k=a.isEmpty,l=a.pairs,m=a.invert,n=a.isArray,o=a.isFunction,p=a.isObject,q=a.keys,r=a.isUndefined,s=a.result,t=Math.ceil,u=Math.floor,v=Math.max,w=b.Collection.prototype,x=/[\s'"]/g,y=/[<>\s'
"]/g,z=b.PageableCollection=b.Collection.extend({state:{firstPage:1,lastPage:null,currentPage:null,pageSize:25,totalPages:null,totalRecords:null,sortKey:null,order:-1},mode:"server",queryParams:{currentPage:"page",pageSize:"per_page",totalPages:"total_pages",totalRecords:"total_entries",sortKey:"sort_by",order:"order",directions:{"-1":"asc",1:"desc"}},constructor:function(a,c){b.Collection.apply(this,arguments),c=c||{};var d=this.mode=c.mode||this.mode||A.mode,f=e({},A.queryParams,this.queryParams,c.queryParams||{});f.directions=e({},A.queryParams.directions,this.queryParams.directions,f.directions||{}),this.queryParams=f;var h=this.state=e({},A.state,this.state,c.state||{});h.currentPage=null==h.currentPage?h.firstPage:h.currentPage,n(a)||(a=a?[a]:[]),"server"==d||null!=h.totalRecords||k(a)||(h.totalRecords=a.length),this.switchMode(d,e({fetch:!1,resetState:!1,models:a},c));var i=c.comparator;if(h.sortKey&&!i&&this.setSorting(h.sortKey,h.order,c),"server"!=d){var j=this.fullCollect
ion;i&&c.full&&(delete this.comparator,j.comparator=i),c.full&&j.sort(),a&&!k(a)&&(this.getPage(h.currentPage),a.splice.apply(a,[0,a.length].concat(this.models)))}this._initState=g(this.state)},_makeFullCollection:function(a,c){var d,e,f,g=["url","model","sync","comparator"],h=this.constructor.prototype,i={};for(d=0,e=g.length;e>d;d++)f=g[d],r(h[f])||(i[f]=h[f]);var j=new(b.Collection.extend(i))(a,c);for(d=0,e=g.length;e>d;d++)f=g[d],this[f]!==h[f]&&(j[f]=this[f]);return j},_makeCollectionEventHandler:function(a,b){return function(c,d,f,i){var j=a._handlers;h(q(j),function(c){var d=j[c];a.off(c,d),b.off(c,d)});var k=g(a.state),l=k.firstPage,m=0===l?k.currentPage:k.currentPage-1,n=k.pageSize,o=m*n,p=o+n;if("add"==c){var s,u,v,w,i=i||{};if(f==b)u=b.indexOf(d),u>=o&&p>u&&(w=a,s=v=u-o);else{s=a.indexOf(d),u=o+s,w=b;var v=r(i.at)?u:i.at+o}if(++k.totalRecords,a.state=a._checkState(k),w){w.add(d,e({},i||{},{at:v}));var x=s>=n?d:!r(i.at)&&p>v&&a.length>n?a.at(n):null;if(x){var y=f._events.a
dd||[],z={onAdd:!0};if(y.length){var A=y[y.length-1],B=A.callback;A.callback=function(){try{B.apply(this,arguments),a.remove(x,z)}finally{A.callback=B}}}else a.remove(x,z)}}}if("remove"==c)if(i.onAdd)delete i.onAdd;else{if(--k.totalRecords){var C=k.totalPages=t(k.totalRecords/n);k.lastPage=0===l?C-1:C,k.currentPage>C&&(k.currentPage=k.lastPage)}else k.totalRecords=null,k.totalPages=null;a.state=a._checkState(k);var D,E=i.index;f==a?((D=b.at(p))&&a.push(D),b.remove(d)):E>=o&&p>E&&(a.remove(d),D=b.at(m*(n+E)),D&&a.push(D))}if("reset"==c)if(i=f,f=d,f===a&&null==i.from&&null==i.to){var F=b.models.slice(0,o),G=b.models.slice(o+a.models.length);b.reset(F.concat(a.models).concat(G),i)}else f===b&&((k.totalRecords=b.models.length)||(k.totalRecords=null,k.totalPages=null),"client"==a.mode&&(k.lastPage=k.currentPage=k.firstPage),a.state=a._checkState(k),a.reset(b.models.slice(o,p),e({},i,{parse:!1})));"sort"==c&&(i=f,f=d,f===b&&a.reset(b.models.slice(o,p),e({},i,{parse:!1}))),h(q(j),function(
c){var d=j[c];h([a,b],function(a){a.on(c,d);var b=a._events[c]||[];b.unshift(b.pop())})})}},_checkState:function(a){var b=this.mode,d=this.links,e=a.totalRecords,f=a.pageSize,g=a.currentPage,h=a.firstPage,i=a.totalPages;if(null!=e&&null!=f&&null!=g&&null!=h&&("infinite"==b?d:!0)){if(e=c(e,"totalRecords"),f=c(f,"pageSize"),g=c(g,"currentPage"),h=c(h,"firstPage"),1>f)throw new RangeError("`pageSize` must be >= 1");if(i=a.totalPages=t(e/f),0>h||h>1)throw new RangeError("`firstPage must be 0 or 1`");if(a.lastPage=0===h?v(0,i-1):i,"infinite"==b){if(!d[g+""])throw new RangeError("No link found for page "+g)}else if(h>g||i>0&&(h?g>i:g>=i))throw new RangeError("`currentPage` must be firstPage <= currentPage "+(h?">":">=")+" totalPages if "+h+"-based. Got "+g+".")}return a},setPageSize:function(a,b){a=c(a,"pageSize"),b=b||{first:!1};var d=this.state,g=t(d.totalRecords/a),h=g?v(d.firstPage,u(g*(d.firstPage?d.currentPage:d.currentPage+1)/d.totalPages)):d.firstPage;return d=this.state=this._che
ckState(e({},d,{pageSize:a,currentPage:b.first?d.firstPage:h,totalPages:g})),this.getPage(d.currentPage,f(b,["first"]))},switchMode:function(b,c){if(!j(["server","client","infinite"],b))throw new TypeError('`mode` must be one of "server", "client" or "infinite"');c=c||{fetch:!0,resetState:!0};var d=this.state=c.resetState?g(this._initState):this._checkState(e({},this.state));this.mode=b;var i,k=this,l=this.fullCollection,m=this._handlers=this._handlers||{};if("server"==b||l)"server"==b&&l&&(h(q(m),function(a){i=m[a],k.off(a,i),l.off(a,i)}),delete this._handlers,this._fullComparator=l.comparator,delete this.fullCollection);else{l=this._makeFullCollection(c.models||[]),l.pageableCollection=this,this.fullCollection=l;var n=this._makeCollectionEventHandler(this,l);h(["add","remove","reset","sort"],function(b){m[b]=i=a.bind(n,{},b),k.on(b,i),l.on(b,i)}),l.comparator=this._fullComparator}if("infinite"==b)for(var o=this.links={},p=d.firstPage,r=t(d.totalRecords/d.pageSize),s=0===p?v(0,r-1)
:r||p,u=d.firstPage;s>=u;u++)o[u]=this.url;else this.links&&delete this.links;return c.fetch?this.fetch(f(c,"fetch","resetState")):this},hasPrevious:function(){var a=this.state,b=a.currentPage;return"infinite"!=this.mode?b>a.firstPage:!!this.links[b-1]},hasNext:function(){var a=this.state,b=this.state.currentPage;return"infinite"!=this.mode?b<a.lastPage:!!this.links[b+1]},getFirstPage:function(a){return this.getPage("first",a)},getPreviousPage:function(a){return this.getPage("prev",a)},getNextPage:function(a){return this.getPage("next",a)},getLastPage:function(a){return this.getPage("last",a)},getPage:function(a,b){var d=this.mode,g=this.fullCollection;b=b||{fetch:!1};var h=this.state,i=h.firstPage,j=h.currentPage,l=h.lastPage,m=h.pageSize,n=a;switch(a){case"first":n=i;break;case"prev":n=j-1;break;case"next":n=j+1;break;case"last":n=l;break;default:n=c(a,"index")}this.state=this._checkState(e({},h,{currentPage:n})),b.from=j,b.to=n;var o=(0===i?n:n-1)*m,p=g&&g.length?g.models.slice(o
,o+m):[];return"client"!=d&&("infinite"!=d||k(p))||b.fetch?("infinite"==d&&(b.url=this.links[n]),this.fetch(f(b,"fetch"))):this.reset(p,f(b,"fetch"))},getPageByOffset:function(a,b){if(0>a)throw new RangeError("`offset must be > 0`");a=c(a);var d=u(a/this.state.pageSize);return 0!==this.state.firstPage&&d++,d>this.state.lastPage&&(d=this.state.lastPage),this.getPage(d,b)},sync:function(a,c,d){var f=this;if("infinite"==f.mode){var g=d.success,h=f.state.currentPage;d.success=function(a,b,c){var i=f.links,j=f.parseLinks(a,e({xhr:c},d));j.first&&(i[f.state.firstPage]=j.first),j.prev&&(i[h-1]=j.prev),j.next&&(i[h+1]=j.next),g&&g(a,b,c)}}return(w.sync||b.sync).call(f,a,c,d)},parseLinks:function(a,b){var c={},e=b.xhr.getResponseHeader("Link");if(e){var f=["first","prev","previous","next","last"];h(e.split(","),function(a){var b=a.split(";"),d=b[0].replace(y,""),e=b.slice(1);h(e,function(a){var b=a.split("="),e=b[0].replace(x,""),g=b[1].replace(x,"");"rel"==e&&j(f,g)&&("previous"==g?c.prev=d
:c[g]=d)})});var i,k,l=c.last||"";if(k=(i=l.indexOf("?"))?l.slice(i+1):""){var m=d(k),n=g(this.state),o=this.queryParams,p=n.pageSize,q=1*m[o.totalRecords],r=1*m[o.currentPage],s=m[o.totalPages];q||(r?q=(0===n.firstPage?r+1:r)*p:s&&(q=s*p)),q&&(n.totalRecords=q),this.state=this._checkState(n)}}return delete c.last,c},parse:function(a,b){var c=this.parseState(a,g(this.queryParams),g(this.state),b);return c&&(this.state=this._checkState(e({},this.state,c))),this.parseRecords(a,b)},parseState:function(b,c,d){if(b&&2===b.length&&p(b[0])&&n(b[1])){var e=g(d),i=b[0];return h(l(f(c,"directions")),function(b){var c=b[0],d=b[1],f=i[d];r(f)||a.isNull(f)||(e[c]=i[d])}),i.order&&(e.order=1*m(c.directions)[i.order]),e}},parseRecords:function(a){return a&&2===a.length&&p(a[0])&&n(a[1])?a[1]:a},fetch:function(a){a=a||{};var b=this._checkState(this.state),c=this.mode;"infinite"!=c||a.url||(a.url=this.links[b.currentPage]);var h=a.data||{},j=s(a,"url")||s(this,"url")||"",k=j.indexOf("?");-1!=k&&(e(h
,d(j.slice(k+1))),j=j.slice(0,k)),a.url=j,a.data=h;var m,n,p,t,u="client"==this.mode?i(this.queryParams,"sortKey","order"):f(i(this.queryParams,q(A.queryParams)),"directions"),v=l(u),x=g(this);for(m=0;m<v.length;m++)n=v[m],p=n[0],t=n[1],t=o(t)?t.call(x):t,null!=b[p]&&null!=t&&(h[t]=b[p]);b.sortKey&&b.order?h[u.order]=this.queryParams.directions[b.order+""]:b.sortKey||delete h[u.order];var y=l(f(this.queryParams,q(A.queryParams)));for(m=0;m<y.length;m++)n=y[m],t=n[1],t=o(t)?t.call(x):t,null!=t&&(h[n[0]]=t);if("server"!=c){var z=this,B=this.fullCollection,C=a.success;return a.success=function(b,d,f){f=f||{},r(a.silent)?delete f.silent:f.silent=a.silent;var g=b.models;"client"==c?B.reset(g,f):B.add(g,e({at:B.length},f)),C&&C(b,d,f)},w.fetch.call(z,e({},a,{silent:!0}))}return w.fetch.call(this,a)},_makeComparator:function(a,b,c){var d=this.state;return a=a||d.sortKey,b=b||d.order,a&&b?(c||(c=function(a,b){return a.get(b)}),function(d,e){var f,g=c(d,a),h=c(e,a);return 1===b&&(f=g,g=h,h=f
),g===h?0:h>g?-1:1}):void 0},setSorting:function(a,b,c){var d=this.state;d.sortKey=a,d.order=b=b||d.order;var f=this.fullCollection,g=!1,h=!1;a||(g=h=!0);var i=this.mode;c=e({side:"client"==i?i:"server",full:!0},c);var j=this._makeComparator(a,b,c.sortValue),k=c.full,l=c.side;return"client"==l?k?(f&&(f.comparator=j),g=!0):(this.comparator=j,h=!0):"server"!=l||k||(this.comparator=j),g&&delete this.comparator,h&&f&&delete f.comparator,this}}),A=z.prototype;return z});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7294694/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.babysitter/js/backbone.babysitter.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.babysitter/js/backbone.babysitter.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.babysitter/js/backbone.babysitter.js
new file mode 100644
index 0000000..a182eda
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.babysitter/js/backbone.babysitter.js
@@ -0,0 +1,178 @@
+// Backbone.BabySitter
+// -------------------
+// v0.0.6
+//
+// Copyright (c)2013 Derick Bailey, Muted Solutions, LLC.
+// Distributed under MIT license
+//
+// http://github.com/babysitterjs/backbone.babysitter
+
+(function (root, factory) {
+ if (typeof exports === 'object') {
+
+ var underscore = require('underscore');
+ var backbone = require('backbone');
+
+ module.exports = factory(underscore, backbone);
+
+ } else if (typeof define === 'function' && define.amd) {
+
+ define(['underscore', 'backbone'], factory);
+
+ }
+}(this, function (_, Backbone) {
+ "option strict";
+
+ // Backbone.ChildViewContainer
+// ---------------------------
+//
+// Provide a container to store, retrieve and
+// shut down child views.
+
+Backbone.ChildViewContainer = (function(Backbone, _){
+
+ // Container Constructor
+ // ---------------------
+
+ var Container = function(views){
+ this._views = {};
+ this._indexByModel = {};
+ this._indexByCustom = {};
+ this._updateLength();
+
+ _.each(views, this.add, this);
+ };
+
+ // Container Methods
+ // -----------------
+
+ _.extend(Container.prototype, {
+
+ // Add a view to this container. Stores the view
+ // by `cid` and makes it searchable by the model
+ // cid (and model itself). Optionally specify
+ // a custom key to store an retrieve the view.
+ add: function(view, customIndex){
+ var viewCid = view.cid;
+
+ // store the view
+ this._views[viewCid] = view;
+
+ // index it by model
+ if (view.model){
+ this._indexByModel[view.model.cid] = viewCid;
+ }
+
+ // index by custom
+ if (customIndex){
+ this._indexByCustom[customIndex] = viewCid;
+ }
+
+ this._updateLength();
+ },
+
+ // Find a view by the model that was attached to
+ // it. Uses the model's `cid` to find it.
+ findByModel: function(model){
+ return this.findByModelCid(model.cid);
+ },
+
+ // Find a view by the `cid` of the model that was attached to
+ // it. Uses the model's `cid` to find the view `cid` and
+ // retrieve the view using it.
+ findByModelCid: function(modelCid){
+ var viewCid = this._indexByModel[modelCid];
+ return this.findByCid(viewCid);
+ },
+
+ // Find a view by a custom indexer.
+ findByCustom: function(index){
+ var viewCid = this._indexByCustom[index];
+ return this.findByCid(viewCid);
+ },
+
+ // Find by index. This is not guaranteed to be a
+ // stable index.
+ findByIndex: function(index){
+ return _.values(this._views)[index];
+ },
+
+ // retrieve a view by it's `cid` directly
+ findByCid: function(cid){
+ return this._views[cid];
+ },
+
+ // Remove a view
+ remove: function(view){
+ var viewCid = view.cid;
+
+ // delete model index
+ if (view.model){
+ delete this._indexByModel[view.model.cid];
+ }
+
+ // delete custom index
+ _.any(this._indexByCustom, function(cid, key) {
+ if (cid === viewCid) {
+ delete this._indexByCustom[key];
+ return true;
+ }
+ }, this);
+
+ // remove the view from the container
+ delete this._views[viewCid];
+
+ // update the length
+ this._updateLength();
+ },
+
+ // Call a method on every view in the container,
+ // passing parameters to the call method one at a
+ // time, like `function.call`.
+ call: function(method){
+ this.apply(method, _.tail(arguments));
+ },
+
+ // Apply a method on every view in the container,
+ // passing parameters to the call method one at a
+ // time, like `function.apply`.
+ apply: function(method, args){
+ _.each(this._views, function(view){
+ if (_.isFunction(view[method])){
+ view[method].apply(view, args || []);
+ }
+ });
+ },
+
+ // Update the `.length` attribute on this container
+ _updateLength: function(){
+ this.length = _.size(this._views);
+ }
+ });
+
+ // Borrowing this code from Backbone.Collection:
+ // http://backbonejs.org/docs/backbone.html#section-106
+ //
+ // Mix in methods from Underscore, for iteration, and other
+ // collection related features.
+ var methods = ['forEach', 'each', 'map', 'find', 'detect', 'filter',
+ 'select', 'reject', 'every', 'all', 'some', 'any', 'include',
+ 'contains', 'invoke', 'toArray', 'first', 'initial', 'rest',
+ 'last', 'without', 'isEmpty', 'pluck'];
+
+ _.each(methods, function(method) {
+ Container.prototype[method] = function() {
+ var views = _.values(this._views);
+ var args = [views].concat(_.toArray(arguments));
+ return _[method].apply(_, args);
+ };
+ });
+
+ // return the public API
+ return Container;
+})(Backbone, _);
+
+ return Backbone.ChildViewContainer;
+
+}));
+
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7294694/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.babysitter/js/backbone.babysitter.min.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.babysitter/js/backbone.babysitter.min.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.babysitter/js/backbone.babysitter.min.js
new file mode 100644
index 0000000..78355c8
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.babysitter/js/backbone.babysitter.min.js
@@ -0,0 +1,10 @@
+// Backbone.BabySitter
+// -------------------
+// v0.0.6
+//
+// Copyright (c)2013 Derick Bailey, Muted Solutions, LLC.
+// Distributed under MIT license
+//
+// http://github.com/babysitterjs/backbone.babysitter
+
+(function(i,e){if("object"==typeof exports){var t=require("underscore"),n=require("backbone");module.exports=e(t,n)}else"function"==typeof define&&define.amd&&define(["underscore","backbone"],e)})(this,function(i,e){"option strict";return e.ChildViewContainer=function(i,e){var t=function(i){this._views={},this._indexByModel={},this._indexByCustom={},this._updateLength(),e.each(i,this.add,this)};e.extend(t.prototype,{add:function(i,e){var t=i.cid;this._views[t]=i,i.model&&(this._indexByModel[i.model.cid]=t),e&&(this._indexByCustom[e]=t),this._updateLength()},findByModel:function(i){return this.findByModelCid(i.cid)},findByModelCid:function(i){var e=this._indexByModel[i];return this.findByCid(e)},findByCustom:function(i){var e=this._indexByCustom[i];return this.findByCid(e)},findByIndex:function(i){return e.values(this._views)[i]},findByCid:function(i){return this._views[i]},remove:function(i){var t=i.cid;i.model&&delete this._indexByModel[i.model.cid],e.any(this._indexByCustom,functi
on(i,e){return i===t?(delete this._indexByCustom[e],!0):void 0},this),delete this._views[t],this._updateLength()},call:function(i){this.apply(i,e.tail(arguments))},apply:function(i,t){e.each(this._views,function(n){e.isFunction(n[i])&&n[i].apply(n,t||[])})},_updateLength:function(){this.length=e.size(this._views)}});var n=["forEach","each","map","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","toArray","first","initial","rest","last","without","isEmpty","pluck"];return e.each(n,function(i){t.prototype[i]=function(){var t=e.values(this._views),n=[t].concat(e.toArray(arguments));return e[i].apply(e,n)}}),t}(e,i),e.ChildViewContainer});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7294694/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.bootstrap-modal/js/backbone.bootstrap-modal.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.bootstrap-modal/js/backbone.bootstrap-modal.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.bootstrap-modal/js/backbone.bootstrap-modal.js
new file mode 100644
index 0000000..6cd05b0
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.bootstrap-modal/js/backbone.bootstrap-modal.js
@@ -0,0 +1,275 @@
+/**
+ * Bootstrap Modal wrapper for use with Backbone.
+ *
+ * Takes care of instantiation, manages multiple modals,
+ * adds several options and removes the element from the DOM when closed
+ *
+ * @author Charles Davison <ch...@powmedia.co.uk>
+ *
+ * Events:
+ * shown: Fired when the modal has finished animating in
+ * hidden: Fired when the modal has finished animating out
+ * cancel: The user dismissed the modal
+ * ok: The user clicked OK
+ */
+(function($, _, Backbone) {
+
+ //Set custom template settings
+ var _interpolateBackup = _.templateSettings;
+ _.templateSettings = {
+ interpolate: /\{\{(.+?)\}\}/g,
+ evaluate: /<%([\s\S]+?)%>/g
+ }
+
+ var template = _.template('\
+ <% if (title) { %>\
+ <div class="modal-header">\
+ <% if (allowCancel) { %>\
+ <a class="close">×</a>\
+ <% } %>\
+ <h3>{{title}}</h3>\
+ </div>\
+ <% } %>\
+ <div class="modal-body">{{content}}</div>\
+ <div class="modal-footer">\
+ <% if (allowCancel) { %>\
+ <% if (cancelText) { %>\
+ <a href="#" class="btn cancel">{{cancelText}}</a>\
+ <% } %>\
+ <% } %>\
+ <a href="#" class="btn ok btn-primary">{{okText}}</a>\
+ </div>\
+ ');
+
+ //Reset to users' template settings
+ _.templateSettings = _interpolateBackup;
+
+
+ var Modal = Backbone.View.extend({
+
+ className: 'modal',
+
+ events: {
+ 'click .close': function(event) {
+ event.preventDefault();
+
+ this.trigger('cancel');
+
+ if (this.options.content && this.options.content.trigger) {
+ this.options.content.trigger('cancel', this);
+ }
+ },
+ 'click .cancel': function(event) {
+ event.preventDefault();
+
+ this.trigger('cancel');
+
+ if (this.options.content && this.options.content.trigger) {
+ this.options.content.trigger('cancel', this);
+ }
+ },
+ 'click .ok': function(event) {
+ event.preventDefault();
+
+ this.trigger('ok');
+
+ if (this.options.content && this.options.content.trigger) {
+ this.options.content.trigger('ok', this);
+ }
+
+ if (this.options.okCloses) {
+ this.close();
+ }
+ }
+ },
+
+ /**
+ * Creates an instance of a Bootstrap Modal
+ *
+ * @see http://twitter.github.com/bootstrap/javascript.html#modals
+ *
+ * @param {Object} options
+ * @param {String|View} [options.content] Modal content. Default: none
+ * @param {String} [options.title] Title. Default: none
+ * @param {String} [options.okText] Text for the OK button. Default: 'OK'
+ * @param {String} [options.cancelText] Text for the cancel button. Default: 'Cancel'. If passed a falsey value, the button will be removed
+ * @param {Boolean} [options.allowCancel Whether the modal can be closed, other than by pressing OK. Default: true
+ * @param {Boolean} [options.escape] Whether the 'esc' key can dismiss the modal. Default: true, but false if options.cancellable is true
+ * @param {Boolean} [options.animate] Whether to animate in/out. Default: false
+ * @param {Function} [options.template] Compiled underscore template to override the default one
+ */
+ initialize: function(options) {
+ this.options = _.extend({
+ title: null,
+ okText: 'OK',
+ focusOk: true,
+ okCloses: true,
+ cancelText: 'Cancel',
+ allowCancel: true,
+ escape: true,
+ animate: false,
+ template: template
+ }, options);
+ },
+
+ /**
+ * Creates the DOM element
+ *
+ * @api private
+ */
+ render: function() {
+ var $el = this.$el,
+ options = this.options,
+ content = options.content;
+
+ //Create the modal container
+ $el.html(options.template(options));
+
+ var $content = this.$content = $el.find('.modal-body')
+
+ //Insert the main content if it's a view
+ if (content.$el) {
+ content.render();
+ $el.find('.modal-body').html(content.$el);
+ }
+
+ if (options.animate) $el.addClass('fade');
+
+ this.isRendered = true;
+
+ return this;
+ },
+
+ /**
+ * Renders and shows the modal
+ *
+ * @param {Function} [cb] Optional callback that runs only when OK is pressed.
+ */
+ open: function(cb) {
+ if (!this.isRendered) this.render();
+
+ var self = this,
+ $el = this.$el;
+
+ //Create it
+ $el.modal(_.extend({
+ keyboard: this.options.allowCancel,
+ backdrop: this.options.allowCancel ? true : 'static'
+ }, this.options.modalOptions));
+
+ //Focus OK button
+ $el.one('shown', function() {
+ if (self.options.focusOk) {
+ $el.find('.btn.ok').focus();
+ }
+
+ if (self.options.content && self.options.content.trigger) {
+ self.options.content.trigger('shown', self);
+ }
+
+ self.trigger('shown');
+ });
+
+ //Adjust the modal and backdrop z-index; for dealing with multiple modals
+ var numModals = Modal.count,
+ $backdrop = $('.modal-backdrop:eq('+numModals+')'),
+ backdropIndex = parseInt($backdrop.css('z-index'),10),
+ elIndex = parseInt($backdrop.css('z-index'), 10);
+
+ $backdrop.css('z-index', backdropIndex + numModals);
+ this.$el.css('z-index', elIndex + numModals);
+
+ if (this.options.allowCancel) {
+ $backdrop.one('click', function() {
+ if (self.options.content && self.options.content.trigger) {
+ self.options.content.trigger('cancel', self);
+ }
+
+ self.trigger('cancel');
+ });
+
+ $(document).one('keyup.dismiss.modal', function (e) {
+ e.which == 27 && self.trigger('cancel');
+
+ if (self.options.content && self.options.content.trigger) {
+ e.which == 27 && self.options.content.trigger('shown', self);
+ }
+ });
+ }
+
+ this.on('cancel', function() {
+ self.close();
+ });
+
+ Modal.count++;
+
+ //Run callback on OK if provided
+ if (cb) {
+ self.on('ok', cb);
+ }
+
+ return this;
+ },
+
+ /**
+ * Closes the modal
+ */
+ close: function() {
+ var self = this,
+ $el = this.$el;
+
+ //Check if the modal should stay open
+ if (this._preventClose) {
+ this._preventClose = false;
+ return;
+ }
+
+ $el.one('hidden', function() {
+ self.remove();
+
+ if (self.options.content && self.options.content.trigger) {
+ self.options.content.trigger('hidden', self);
+ }
+
+ self.trigger('hidden');
+ });
+
+ $el.modal('hide');
+
+ Modal.count--;
+ },
+
+ /**
+ * Stop the modal from closing.
+ * Can be called from within a 'close' or 'ok' event listener.
+ */
+ preventClose: function() {
+ this._preventClose = true;
+ }
+ }, {
+ //STATICS
+
+ //The number of modals on display
+ count: 0
+ });
+
+
+ //EXPORTS
+ //CommonJS
+ if (typeof require == 'function' && typeof module !== 'undefined' && exports) {
+ module.exports = Modal;
+ }
+
+ //AMD / RequireJS
+ if (typeof define === 'function' && define.amd) {
+ return define(function() {
+ Backbone.BootstrapModal = Modal;
+ })
+ }
+
+ //Regular; add to Backbone.Bootstrap.Modal
+ else {
+ Backbone.BootstrapModal = Modal;
+ }
+
+})(jQuery, _, Backbone);
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7294694/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.localstorage/backbone.localStorage.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.localstorage/backbone.localStorage.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.localstorage/backbone.localStorage.js
new file mode 100644
index 0000000..4446d4a
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/backbone.localstorage/backbone.localStorage.js
@@ -0,0 +1,222 @@
+/**
+ * Backbone localStorage Adapter
+ * Version 1.1.7
+ *
+ * https://github.com/jeromegn/Backbone.localStorage
+ */
+(function (root, factory) {
+ if (typeof exports === 'object' && typeof require === 'function') {
+ module.exports = factory(require("underscore"), require("backbone"));
+ } else if (typeof define === "function" && define.amd) {
+ // AMD. Register as an anonymous module.
+ define(["underscore","backbone"], function(_, Backbone) {
+ // Use global variables if the locals are undefined.
+ return factory(_ || root._, Backbone || root.Backbone);
+ });
+ } else {
+ // RequireJS isn't being used. Assume underscore and backbone are loaded in <script> tags
+ factory(_, Backbone);
+ }
+}(this, function(_, Backbone) {
+// A simple module to replace `Backbone.sync` with *localStorage*-based
+// persistence. Models are given GUIDS, and saved into a JSON object. Simple
+// as that.
+
+// Hold reference to Underscore.js and Backbone.js in the closure in order
+// to make things work even if they are removed from the global namespace
+
+// Generate four random hex digits.
+function S4() {
+ return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
+};
+
+// Generate a pseudo-GUID by concatenating random hexadecimal.
+function guid() {
+ return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
+};
+
+// Our Store is represented by a single JS object in *localStorage*. Create it
+// with a meaningful name, like the name you'd give a table.
+// window.Store is deprectated, use Backbone.LocalStorage instead
+Backbone.LocalStorage = window.Store = function(name) {
+ if( !this.localStorage ) {
+ throw "Backbone.localStorage: Environment does not support localStorage."
+ }
+ this.name = name;
+ var store = this.localStorage().getItem(this.name);
+ this.records = (store && store.split(",")) || [];
+};
+
+_.extend(Backbone.LocalStorage.prototype, {
+
+ // Save the current state of the **Store** to *localStorage*.
+ save: function() {
+ this.localStorage().setItem(this.name, this.records.join(","));
+ },
+
+ // Add a model, giving it a (hopefully)-unique GUID, if it doesn't already
+ // have an id of it's own.
+ create: function(model) {
+ if (!model.id) {
+ model.id = guid();
+ model.set(model.idAttribute, model.id);
+ }
+ this.localStorage().setItem(this.name+"-"+model.id, JSON.stringify(model));
+ this.records.push(model.id.toString());
+ this.save();
+ return this.find(model);
+ },
+
+ // Update a model by replacing its copy in `this.data`.
+ update: function(model) {
+ this.localStorage().setItem(this.name+"-"+model.id, JSON.stringify(model));
+ if (!_.include(this.records, model.id.toString()))
+ this.records.push(model.id.toString()); this.save();
+ return this.find(model);
+ },
+
+ // Retrieve a model from `this.data` by id.
+ find: function(model) {
+ return this.jsonData(this.localStorage().getItem(this.name+"-"+model.id));
+ },
+
+ // Return the array of all models currently in storage.
+ findAll: function() {
+ // Lodash removed _#chain in v1.0.0-rc.1
+ return (_.chain || _)(this.records)
+ .map(function(id){
+ return this.jsonData(this.localStorage().getItem(this.name+"-"+id));
+ }, this)
+ .compact()
+ .value();
+ },
+
+ // Delete a model from `this.data`, returning it.
+ destroy: function(model) {
+ if (model.isNew())
+ return false
+ this.localStorage().removeItem(this.name+"-"+model.id);
+ this.records = _.reject(this.records, function(id){
+ return id === model.id.toString();
+ });
+ this.save();
+ return model;
+ },
+
+ localStorage: function() {
+ return localStorage;
+ },
+
+ // fix for "illegal access" error on Android when JSON.parse is passed null
+ jsonData: function (data) {
+ return data && JSON.parse(data);
+ },
+
+ // Clear localStorage for specific collection.
+ _clear: function() {
+ var local = this.localStorage(),
+ itemRe = new RegExp("^" + this.name + "-");
+
+ // Remove id-tracking item (e.g., "foo").
+ local.removeItem(this.name);
+
+ // Lodash removed _#chain in v1.0.0-rc.1
+ // Match all data items (e.g., "foo-ID") and remove.
+ (_.chain || _)(local).keys()
+ .filter(function (k) { return itemRe.test(k); })
+ .each(function (k) { local.removeItem(k); });
+
+ this.records.length = 0;
+ },
+
+ // Size of localStorage.
+ _storageSize: function() {
+ return this.localStorage().length;
+ }
+
+});
+
+// localSync delegate to the model or collection's
+// *localStorage* property, which should be an instance of `Store`.
+// window.Store.sync and Backbone.localSync is deprecated, use Backbone.LocalStorage.sync instead
+Backbone.LocalStorage.sync = window.Store.sync = Backbone.localSync = function(method, model, options) {
+ var store = model.localStorage || model.collection.localStorage;
+
+ var resp, errorMessage, syncDfd = Backbone.$.Deferred && Backbone.$.Deferred(); //If $ is having Deferred - use it.
+
+ try {
+
+ switch (method) {
+ case "read":
+ resp = model.id != undefined ? store.find(model) : store.findAll();
+ break;
+ case "create":
+ resp = store.create(model);
+ break;
+ case "update":
+ resp = store.update(model);
+ break;
+ case "delete":
+ resp = store.destroy(model);
+ break;
+ }
+
+ } catch(error) {
+ if (error.code === 22 && store._storageSize() === 0)
+ errorMessage = "Private browsing is unsupported";
+ else
+ errorMessage = error.message;
+ }
+
+ if (resp) {
+ if (options && options.success) {
+ if (Backbone.VERSION === "0.9.10") {
+ options.success(model, resp, options);
+ } else {
+ options.success(resp);
+ }
+ }
+ if (syncDfd) {
+ syncDfd.resolve(resp);
+ }
+
+ } else {
+ errorMessage = errorMessage ? errorMessage
+ : "Record Not Found";
+
+ if (options && options.error)
+ if (Backbone.VERSION === "0.9.10") {
+ options.error(model, errorMessage, options);
+ } else {
+ options.error(errorMessage);
+ }
+
+ if (syncDfd)
+ syncDfd.reject(errorMessage);
+ }
+
+ // add compatibility with $.ajax
+ // always execute callback for success and error
+ if (options && options.complete) options.complete(resp);
+
+ return syncDfd && syncDfd.promise();
+};
+
+Backbone.ajaxSync = Backbone.sync;
+
+Backbone.getSyncMethod = function(model) {
+ if(model.localStorage || (model.collection && model.collection.localStorage)) {
+ return Backbone.localSync;
+ }
+
+ return Backbone.ajaxSync;
+};
+
+// Override 'Backbone.sync' to default to localSync,
+// the original 'Backbone.sync' is still available in 'Backbone.ajaxSync'
+Backbone.sync = function(method, model, options) {
+ return Backbone.getSyncMethod(model).apply(this, [method, model, options]);
+};
+
+return Backbone.LocalStorage;
+}));