You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by ke...@apache.org on 2014/10/08 21:58:36 UTC

[14/51] [partial] Serve HTTP assets out of a standard classpath root.

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/05129ed5/3rdparty/javascript/bower_components/momentjs/readme.md
----------------------------------------------------------------------
diff --git a/3rdparty/javascript/bower_components/momentjs/readme.md b/3rdparty/javascript/bower_components/momentjs/readme.md
deleted file mode 100644
index ae685ba..0000000
--- a/3rdparty/javascript/bower_components/momentjs/readme.md
+++ /dev/null
@@ -1,349 +0,0 @@
-A lightweight javascript date library for parsing, validating, manipulating, and formatting dates.
-
-# [Documentation](http://momentjs.com/docs/)
-
-Upgrading to 2.0.0
-==================
-
-There are a number of small backwards incompatible changes with version 2.0.0.
-
-[See them and their descriptions here](https://gist.github.com/timrwood/e72f2eef320ed9e37c51#backwards-incompatible-changes)
-
-Changed language ordinal method to return the number + ordinal instead of just the ordinal.
-
-Changed two digit year parsing cutoff to match strptime.
-
-Removed `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`.
-
-Removed `moment.humanizeDuration()` in favor of `moment.duration().humanize()`.
-
-Removed the lang data objects from the top level namespace.
-
-Duplicate `Date` passed to `moment()` instead of referencing it.
-
-Travis Build Status
-===================
-
-Develop [![Build Status](https://travis-ci.org/moment/moment.png?branch=develop)](https://travis-ci.org/moment/moment)
-
-Master [![Build Status](https://travis-ci.org/moment/moment.png?branch=master)](https://travis-ci.org/moment/moment)
-
-For developers
-==============
-
-You need [node](http://nodejs.org/), use [nvm](https://github.com/creationix/nvm) or [nenv](https://github.com/ryuone/nenv) to install it.
-
-Then, in your shell
-
-```bash
-git clone https://github.com/moment/moment.git
-cd moment
-npm install -g grunt-cli
-npm install
-git checkout develop  # all patches against develop branch, please!
-grunt                 # this runs tests and jshint
-```
-
-Changelog
-=========
-
-### 2.5.1
-
-* languages
-  * [#1392](https://github.com/moment/moment/issues/1392) Armenian (hy-am)
-
-* bugfixes
-  * [#1429](https://github.com/moment/moment/issues/1429) fixes [#1423](https://github.com/moment/moment/issues/1423) weird chrome-32 bug with js object creation
-  * [#1421](https://github.com/moment/moment/issues/1421) remove html entities from Welsh
-  * [#1418](https://github.com/moment/moment/issues/1418) fixes [#1401](https://github.com/moment/moment/issues/1401) improved non-padded tokens in strict matching
-  * [#1417](https://github.com/moment/moment/issues/1417) fixes [#1404](https://github.com/moment/moment/issues/1404) handle buggy moment object created by property cloning
-  * [#1398](https://github.com/moment/moment/issues/1398) fixes [#1397](https://github.com/moment/moment/issues/1397) fix Arabic-like week number parsing
-  * [#1396](https://github.com/moment/moment/issues/1396) add leftZeroFill(4) to GGGG and gggg formats
-  * [#1373](https://github.com/moment/moment/issues/1373) use lowercase for months and days in Catalan
-
-* testing
-  * [#1374](https://github.com/moment/moment/issues/1374) run tests on multiple browser/os combos via SauceLabs and Travis
-
-### 2.5.0 [See changelog](https://gist.github.com/ichernev/8104451)
-
-* New languages
-  * Luxemburish (lb) [1247](https://github.com/moment/moment/issues/1247)
-  * Serbian (rs) [1319](https://github.com/moment/moment/issues/1319)
-  * Tamil (ta) [1324](https://github.com/moment/moment/issues/1324)
-  * Macedonian (mk) [1337](https://github.com/moment/moment/issues/1337)
-
-* Features
-  * [1311](https://github.com/moment/moment/issues/1311) Add quarter getter and format token `Q`
-  * [1303](https://github.com/moment/moment/issues/1303) strict parsing now respects number of digits per token (fix [1196](https://github.com/moment/moment/issues/1196))
-  * 0d30bb7 add jspm support
-  * [1347](https://github.com/moment/moment/issues/1347) improve zone parsing
-  * [1362](https://github.com/moment/moment/issues/1362) support merideam parsing in Korean
-
-* 22 bugfixes
-
-### 2.4.0
-
-* **Deprecate** globally exported moment, will be removed in next major
-* New languages
-  * Farose (fo) [#1206](https://github.com/moment/moment/issues/1206)
-  * Tagalog/Filipino (tl-ph) [#1197](https://github.com/moment/moment/issues/1197)
-  * Welsh (cy) [#1215](https://github.com/moment/moment/issues/1215)
-* Bugfixes
-  * properly handle Z at the end of iso RegExp [#1187](https://github.com/moment/moment/issues/1187)
-  * chinese meridian time improvements [#1076](https://github.com/moment/moment/issues/1076)
-  * fix language tests [#1177](https://github.com/moment/moment/issues/1177)
-  * remove some failing tests (that should have never existed :))
-    [#1185](https://github.com/moment/moment/issues/1185)
-    [#1183](https://github.com/moment/moment/issues/1183)
-  * handle russian noun cases in weird cases [#1195](https://github.com/moment/moment/issues/1195)
-
-### 2.3.1
-
-Removed a trailing comma [1169] and fixed a bug with `months`, `weekdays` getters [#1171](https://github.com/moment/moment/issues/1171).
-
-### 2.3.0 [See changelog](https://gist.github.com/ichernev/6864354)
-
-Changed isValid, added strict parsing.
-Week tokens parsing.
-
-### 2.2.1
-
-Fixed bug in string prototype test.
-Updated authors and contributors.
-
-### 2.2.0 [See changelog](https://gist.github.com/ichernev/00f837a9baf46a3565e4)
-
-Added bower support.
-
-Language files now use UMD.
-
-Creating moment defaults to current date/month/year.
-
-Added a bundle of moment and all language files.
-
-### 2.1.0 [See changelog](https://gist.github.com/timrwood/b8c2d90d528eddb53ab5)
-
-Added better week support.
-
-Added ability to set offset with `moment#zone`.
-
-Added ability to set month or weekday from a string.
-
-Added `moment#min` and `moment#max`
-
-### 2.0.0 [See changelog](https://gist.github.com/timrwood/e72f2eef320ed9e37c51)
-
-Added short form localized tokens.
-
-Added ability to define language a string should be parsed in.
-
-Added support for reversed add/subtract arguments.
-
-Added support for `endOf('week')` and `startOf('week')`.
-
-Fixed the logic for `moment#diff(Moment, 'months')` and `moment#diff(Moment, 'years')`
-
-`moment#diff` now floors instead of rounds.
-
-Normalized `moment#toString`.
-
-Added `isSame`, `isAfter`, and `isBefore` methods.
-
-Added better week support.
-
-Added `moment#toJSON`
-
-Bugfix: Fixed parsing of first century dates
-
-Bugfix: Parsing 10Sep2001 should work as expected
-
-Bugfix: Fixed wierdness with `moment.utc()` parsing.
-
-Changed language ordinal method to return the number + ordinal instead of just the ordinal.
-
-Changed two digit year parsing cutoff to match strptime.
-
-Removed `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`.
-
-Removed `moment.humanizeDuration()` in favor of `moment.duration().humanize()`.
-
-Removed the lang data objects from the top level namespace.
-
-Duplicate `Date` passed to `moment()` instead of referencing it.
-
-### 1.7.2 [See discussion](https://github.com/timrwood/moment/issues/456)
-
-Bugfixes
-
-### 1.7.1 [See discussion](https://github.com/timrwood/moment/issues/384)
-
-Bugfixes
-
-### 1.7.0 [See discussion](https://github.com/timrwood/moment/issues/288)
-
-Added `moment.fn.endOf()` and `moment.fn.startOf()`.
-
-Added validation via `moment.fn.isValid()`.
-
-Made formatting method 3x faster. http://jsperf.com/momentjs-cached-format-functions
-
-Add support for month/weekday callbacks in `moment.fn.format()`
-
-Added instance specific languages.
-
-Added two letter weekday abbreviations with the formatting token `dd`.
-
-Various language updates.
-
-Various bugfixes.
-
-### 1.6.0 [See discussion](https://github.com/timrwood/moment/pull/268)
-
-Added Durations.
-
-Revamped parser to support parsing non-separated strings (YYYYMMDD vs YYYY-MM-DD).
-
-Added support for millisecond parsing and formatting tokens (S SS SSS)
-
-Added a getter for `moment.lang()`
-
-Various bugfixes.
-
-There are a few things deprecated in the 1.6.0 release.
-
-1. The format tokens `z` and `zz` (timezone abbreviations like EST CST MST etc) will no longer be supported. Due to inconsistent browser support, we are unable to consistently produce this value. See [this issue](https://github.com/timrwood/moment/issues/162) for more background.
-
-2. The method `moment.fn.native` is deprecated in favor of `moment.fn.toDate`. There continue to be issues with Google Closure Compiler throwing errors when using `native`, even in valid instances.
-
-3. The way to customize am/pm strings is being changed. This would only affect you if you created a custom language file. For more information, see [this issue](https://github.com/timrwood/moment/pull/222).
-
-### 1.5.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=10&page=1&state=closed)
-
-Added UTC mode.
-
-Added automatic ISO8601 parsing.
-
-Various bugfixes.
-
-### 1.4.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=8&state=closed)
-
-Added `moment.fn.toDate` as a replacement for `moment.fn.native`.
-
-Added `moment.fn.sod` and `moment.fn.eod` to get the start and end of day.
-
-Various bugfixes.
-
-### 1.3.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=7&state=closed)
-
-Added support for parsing month names in the current language.
-
-Added escape blocks for parsing tokens.
-
-Added `moment.fn.calendar` to format strings like 'Today 2:30 PM', 'Tomorrow 1:25 AM', and 'Last Sunday 4:30 AM'.
-
-Added `moment.fn.day` as a setter.
-
-Various bugfixes
-
-### 1.2.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=4&state=closed)
-
-Added timezones to parser and formatter.
-
-Added `moment.fn.isDST`.
-
-Added `moment.fn.zone` to get the timezone offset in minutes.
-
-### 1.1.2 [See milestone](https://github.com/timrwood/moment/issues?milestone=6&state=closed)
-
-Various bugfixes
-
-### 1.1.1 [See milestone](https://github.com/timrwood/moment/issues?milestone=5&state=closed)
-
-Added time specific diffs (months, days, hours, etc)
-
-### 1.1.0
-
-Added `moment.fn.format` localized masks. 'L LL LLL LLLL' [issue 29](https://github.com/timrwood/moment/pull/29)
-
-Fixed [issue 31](https://github.com/timrwood/moment/pull/31).
-
-### 1.0.1
-
-Added `moment.version` to get the current version.
-
-Removed `window !== undefined` when checking if module exists to support browserify. [issue 25](https://github.com/timrwood/moment/pull/25)
-
-### 1.0.0
-
-Added convenience methods for getting and setting date parts.
-
-Added better support for `moment.add()`.
-
-Added better lang support in NodeJS.
-
-Renamed library from underscore.date to Moment.js
-
-### 0.6.1
-
-Added Portuguese, Italian, and French language support
-
-### 0.6.0
-
-Added _date.lang() support.
-Added support for passing multiple formats to try to parse a date. _date("07-10-1986", ["MM-DD-YYYY", "YYYY-MM-DD"]);
-Made parse from string and single format 25% faster.
-
-### 0.5.2
-
-Bugfix for [issue 8](https://github.com/timrwood/underscore.date/pull/8) and [issue 9](https://github.com/timrwood/underscore.date/pull/9).
-
-### 0.5.1
-
-Bugfix for [issue 5](https://github.com/timrwood/underscore.date/pull/5).
-
-### 0.5.0
-
-Dropped the redundant `_date.date()` in favor of `_date()`.
-Removed `_date.now()`, as it is a duplicate of `_date()` with no parameters.
-Removed `_date.isLeapYear(yearNumber)`. Use `_date([yearNumber]).isLeapYear()` instead.
-Exposed customization options through the `_date.relativeTime`, `_date.weekdays`, `_date.weekdaysShort`, `_date.months`, `_date.monthsShort`, and `_date.ordinal` variables instead of the `_date.customize()` function.
-
-### 0.4.1
-
-Added date input formats for input strings.
-
-### 0.4.0
-
-Added underscore.date to npm. Removed dependencies on underscore.
-
-### 0.3.2
-
-Added `'z'` and `'zz'` to `_.date().format()`. Cleaned up some redundant code to trim off some bytes.
-
-### 0.3.1
-
-Cleaned up the namespace. Moved all date manipulation and display functions to the _.date() object.
-
-### 0.3.0
-
-Switched to the Underscore methodology of not mucking with the native objects' prototypes.
-Made chaining possible.
-
-### 0.2.1
-
-Changed date names to be a more pseudo standardized 'dddd, MMMM Do YYYY, h:mm:ss a'.
-Added `Date.prototype` functions `add`, `subtract`, `isdst`, and `isleapyear`.
-
-### 0.2.0
-
-Changed function names to be more concise.
-Changed date format from php date format to custom format.
-
-### 0.1.0
-
-Initial release
-
-License
-=======
-
-Moment.js is freely distributable under the terms of the MIT license.

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/05129ed5/3rdparty/javascript/bower_components/smart-table/.bower.json
----------------------------------------------------------------------
diff --git a/3rdparty/javascript/bower_components/smart-table/.bower.json b/3rdparty/javascript/bower_components/smart-table/.bower.json
deleted file mode 100644
index 62fe029..0000000
--- a/3rdparty/javascript/bower_components/smart-table/.bower.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "name": "Smart-Table",
-  "homepage": "https://github.com/lorenzofox3/Smart-Table",
-  "_release": "ca3e2d53e8",
-  "_resolution": {
-    "type": "branch",
-    "branch": "master",
-    "commit": "ca3e2d53e880ce59c487230bc35b61dfe9cf6c96"
-  },
-  "_source": "git://github.com/lorenzofox3/Smart-Table.git",
-  "_target": "*",
-  "_originalSource": "git://github.com/lorenzofox3/Smart-Table",
-  "_direct": true
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/05129ed5/3rdparty/javascript/bower_components/smart-table/.gitignore
----------------------------------------------------------------------
diff --git a/3rdparty/javascript/bower_components/smart-table/.gitignore b/3rdparty/javascript/bower_components/smart-table/.gitignore
deleted file mode 100644
index b8121a2..0000000
--- a/3rdparty/javascript/bower_components/smart-table/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-**/.DS_Store
-nbproject
-manifest.mf
-build.xml
-
-.project
-.settings
-.idea/*

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/05129ed5/3rdparty/javascript/bower_components/smart-table/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/3rdparty/javascript/bower_components/smart-table/CHANGELOG.md b/3rdparty/javascript/bower_components/smart-table/CHANGELOG.md
deleted file mode 100644
index bd39939..0000000
--- a/3rdparty/javascript/bower_components/smart-table/CHANGELOG.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# The Change log across the different versions
-
-## V0.1.0
-
-* table markup: it is a table and follows the semantic of an HTML table.
-* manage your layout: you can choose the number of columns and how the should be mapped to your data model
-* format data: you can choose how the data are formatted within a given column:
-    * by giving your own format function
-    * using one of the built-in angular filters
-* Sort data
-    * using your own algorithm
-    * using the 'orderBy' angular algorithm: in this case you'll be able to provide predicates as explained in [orderBy filter documentation](http://docs.angularjs.org/api/ng.filter:orderBy)
-* Filter data
-    * using a global search input box
-    * using the controller API to filter according to a particular column
-* Select data row(s) according to different modes:
-    * single: one row selected at the time
-    * multiple: many row selected at the time. In this case you can also add a selection column with checkboxes
-* Simple style: you can easily give class name to all the cells of a given column and to the header as well
-* template cell:
-    * you can provide template for a given column header (it will be compiled so that you can attach directves to it)
-    * same for the data cells
-* Edit cells: you can make cells editable and specify a type for the input so that validation rules, etc will be applied
-* Client side pagination : you can choose the number of rows you want to display and use the [angular-ui.bootstrap](http://angular-ui.github.io/bootstrap/) pagination directive to navigate.
-* All the directives of the table use the table controller API. It means that you can easily change the templates and directives but still using the API to perform any operation
-
-## V0.1.1
-
-* change build if you want to change the interpolation symbol ({{ }}) thanks to [ccapndave](https://github.com/ccapndave)
-* the update dataRow is now provided my the table controller
-* emit event when :
-    * `selectionChange`
-    * `udpateDataRow`
-    * `pageChange`
-
-## v0.1.2
-* support multi-level object in column config like `map:'myNestedObject.subProperties`
-* change pagination directive name to avoid collision with angular-ui.bootstrap [popalexandruvasile](https://github.com/popalexandruvasile)
-* make module IE8 compatible. [pheuter](https://github.com/pheuter)
-    
-## v0.1.3
-* reset the selectionAll state on page change
-
-## v0.1.4
-* fix sync issue with the content of an item and its smart-table row
-
-## v0.1.5
-* add the clear column functionality
-
-## v0.1.6
-* modify filter to be compatible with 1.2.X branch
-
-## v0.1.7
-* ability to pass a rowFunction (thanks to [pheuter](https://github.com/lorenzofox3/Smart-Table/pull/57))
-
-## v0.1.8 
-* allow for HTML formatted cell contents: see pull request from TNGPS https://github.com/lorenzofox3/Smart-Table/pull/80
-
-## v0.1.9
-* fix sort ascent/descent definition
-* merge pull request from [morrog](https://github.com/morrog) about db click issue
-
-## v0.2.0
-breaking change:
-* sort column has now 3 states ascend->descend->back to natural order
-
-## v0.2.1
-* make pagination markup "Twitter bootstrap 3" friendly

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/05129ed5/3rdparty/javascript/bower_components/smart-table/GruntFile.js
----------------------------------------------------------------------
diff --git a/3rdparty/javascript/bower_components/smart-table/GruntFile.js b/3rdparty/javascript/bower_components/smart-table/GruntFile.js
deleted file mode 100644
index 092191a..0000000
--- a/3rdparty/javascript/bower_components/smart-table/GruntFile.js
+++ /dev/null
@@ -1,73 +0,0 @@
-module.exports = function (grunt) {
-
-    grunt.initConfig({
-        pkg: grunt.file.readJSON('package.json'),
-        src: {
-            js: ['smart-table-module/js/*.js'],
-            html: ['smart-table-module/partials/*.html']
-        },
-        concat: {
-            options: {
-            },
-            dist: {
-                src: ['<%= src.js %>'],
-                dest: './<%= pkg.name %>.debug.js'
-            }
-        },
-        "regex-replace": {
-            dist: {
-                src: ['<%= pkg.name %>.debug.js'],
-                actions: [
-                    {
-                        search: '\{\{',
-                        replace: "<%= grunt.option('startSymbol') %>",
-                        flags: "g"
-                    },
-                    {
-                        search: '\}\}',
-                        replace: "<%= grunt.option('endSymbol') %>",
-                        flags: "g"
-                    }
-                ]
-            }
-        },
-        html2js: {
-            options: {
-                base: 'smart-table-module',
-                module: 'smartTable.templates'
-            },
-            smartTable: {
-                src: [ '<%= src.html %>' ],
-                dest: 'smart-table-module/js/Template.js'
-            }
-        },
-        clean: {
-            test: ['test_out']
-        },
-        copy: {
-            refApp: {
-                src: ['<%= pkg.name %>.debug.js'],
-                dest: 'example-app/js/'
-            }
-        },
-        uglify: {
-            main: {
-                src: ['<%= pkg.name %>.debug.js'],
-                dest: '<%= pkg.name %>.min.js'
-            }
-        }
-    });
-    grunt.loadNpmTasks('grunt-contrib-concat');
-    grunt.loadNpmTasks('grunt-contrib-clean');
-    grunt.loadNpmTasks('grunt-contrib-copy');
-    grunt.loadNpmTasks('grunt-contrib-uglify');
-    grunt.loadNpmTasks('grunt-html2js');
-    grunt.loadNpmTasks('grunt-regex-replace');
-    grunt.registerTask('refApp', ['html2js:smartTable', 'concat', 'copy:refApp']);
-    grunt.registerTask('build', function() {
-        grunt.task.run('html2js:smartTable');
-        grunt.task.run('concat');
-        if (grunt.option('startSymbol') && grunt.option('endSymbol')) grunt.task.run('regex-replace');
-        grunt.task.run('uglify');
-    });
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/05129ed5/3rdparty/javascript/bower_components/smart-table/README.md
----------------------------------------------------------------------
diff --git a/3rdparty/javascript/bower_components/smart-table/README.md b/3rdparty/javascript/bower_components/smart-table/README.md
deleted file mode 100644
index 3849e7d..0000000
--- a/3rdparty/javascript/bower_components/smart-table/README.md
+++ /dev/null
@@ -1,119 +0,0 @@
-# Smart Table— an easy to use table/grid 
-
-This project is a lightweight table/grid builder. It is meant to be easy configurable but also easy customisable
-(if you want to use it as a base for your own grid development). In The current version (0.1.0) the features are
-
-* table markup: it is a table and follows the semantic of an HTML table.
-* manage your layout: you can choose the number of columns and how the should be mapped to your data model
-* format data: you can choose how the data are formatted within a given column:
-    * by giving your own format function
-    * using one of the built-in angular filters
-* Sort data
-    * using your own algorithm
-    * using the 'orderBy' angular algorithm: in this case you'll be able to provide predicates as explained in [orderBy filter documentation](http://docs.angularjs.org/api/ng.filter:orderBy)
-* Filter data
-    * using a global search input box
-    * using the controller API to filter according to a particular column
-* Select data row(s) according to different modes:
-    * single: one row selected at the time
-    * multiple: many row selected at the time. In this case you can also add a selection column with checkboxes
-* Simple style: you can easily give class name to all the cells of a given column and to the header as well
-* template cell:
-    * you can provide template for a given column header (it will be compiled so that you can attach directves to it)
-    * same for the data cells
-* Edit cells: you can make cells editable and specify a type for the input so that validation rules, etc will be applied
-* Client side pagination : you can choose the number of rows you want to display and use the [angular-ui.bootstrap](http://angular-ui.github.io/bootstrap/) pagination directive to navigate.
-* All the directives of the table use the table controller API. It means that you can easily change the templates and directives but still using the API to perform any operation
-
-You'll find running examples and more documentation at [the demo website](http://lorenzofox3.github.io/smart-table-website/)
-
-## How to use Smart-Table
-
-* You can clone the repository: the source code will be under smart-table-module directory.
-* You can add the Smart-Table.min.js file to your application and then add the module `smartTable.table` to your own app module. The build includes all the template in the $templateCache
-so you need only this file.
-* use [bower](https://github.com/bower/bower) and run the command `bower install smart-table`
-
-## Smart Table for developers
-
-### the branches
-
-* The [master](https://github.com/lorenzofox3/Smart-Table) branch is the main branch where you can find stable/tested code for a fully client side table module.
-* The [cowboy](https://github.com/lorenzofox3/Smart-Table/tree/cowboy) branch is where we add some modifications on the `Directives.js` file. This part is not tested and is more an "experimental" branch
-* The [server-partial](https://github.com/lorenzofox3/Smart-Table/tree/server-partial) branch:
-I have quite a few times been asked :
-
-> " I have a huge set of data which I want to be loaded in the browser only on demand, how can I do that ?"
-
-This is somehow `server-side pagination`. You load the data on demand but keep the rest of the logic on the client side (sort,filter,...)
-This branch show you how to turn smart-table to be able to have this particular flow (~10 lines to change)
-* The [server-sample](https://github.com/lorenzofox3/Smart-Table/tree/server-sample) branch:
-This time is a small example on how to change smart-table to have the whole logic (sort, filter, ...) on the server side, and be able
-to send particular queries to the server (with proper filter value, sort value, etc)
-
-### How does Smart-Table work ?
-
-If you want to adapt smart-table to your own flow, it is really easy. But first you should understand how it works, so you will know what to change to customise it.
-
-The `Table.js` file is the key. When you bind a dataCollection to the smart table directive
-```html
-<smart-table rows="dataCollection" columns="myColumns"></smart-table>
-```
-the table controller (Table.js) will have access to this data collection through the scope. This controller provides an API which table child directives (`Directives.js`) will be able to call.
-Through this API calls, the controller will perform some operations on the dataCollection (sort,filter, etc) to build a subset of dataCollection (displayedCollection) which is the actual displayed data.
-Most of the API method simply change table controller or scope variables and then call the `pipe` function which will actually chain the operations to build the subset (displayedCollection) and regarding to the updated
-local/scope variables. The `Column.js` simply wraps (and add some required properties) to your column configuration to expose it to the table child directives through the scope.
-
-So, at the end you don't even have to use the provided directives and build yours if you want a special behavior.
-
-###The build process
-
-1. install [node.js] (http://nodejs.org/) and run `npm install` to install the required node modules.
-2. the build tasks are [Grunt](http://gruntjs.com/).
-* if you run `grunt build` it will perform the following operations:
-    * transform the template (.html) files into an angular module and load them in the [$templateCache](http://docs.angularjs.org/api/ng.$templateCache) (it will result with the `Template.js` file.
-    * concatenate all the source files into a single one (Smart-Table.debug.js)
-    * minify the debug file so you have a production ready file (Smart-Table.min.js)
-* if you run `grunt refApp` the two first steps are the same that the build task, but at the end it will simply copy
-the Smart-Table.debug.js into the example-app folder (see below)
-
-### The example app
-The example app is a running example of the smart-table in action.
-To run it :
-1. use node to run `scripts/web-server.js`
-2. In your browser go to http://localhost:<port>/example-app/index.html
-
-### Running unit tests
-
-Unit tests are provided for all the code except for Directive.js file which is a bit more experimental.
-Tests can be run with [Testacular](http://karma-runner.github.io/0.8/index.html): you'll find the config file under config folder. Note, the coverage is done by [Istanbul.js](http://gotwarlost.github.io/istanbul/)
-        
-## License
-
-Smart Table module is under MIT license:
-
-> Copyright (C) 2013 Laurent Renard.
->
-> Permission is hereby granted, free of charge, to any person
-> obtaining a copy of this software and associated documentation files
-> (the "Software"), to deal in the Software without restriction,
-> including without limitation the rights to use, copy, modify, merge,
-> publish, distribute, sublicense, and/or sell copies of the Software,
-> and to permit persons to whom the Software is furnished to do so,
-> subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be
-> included in all copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-> BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-> ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-> CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-> SOFTWARE.
-
-## Contact
-
-For more information on Smart Table, please contact the author at laurent34azerty@gmail.com

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/05129ed5/3rdparty/javascript/bower_components/smart-table/Smart-Table.debug.js
----------------------------------------------------------------------
diff --git a/3rdparty/javascript/bower_components/smart-table/Smart-Table.debug.js b/3rdparty/javascript/bower_components/smart-table/Smart-Table.debug.js
deleted file mode 100644
index e453e7d..0000000
--- a/3rdparty/javascript/bower_components/smart-table/Smart-Table.debug.js
+++ /dev/null
@@ -1,953 +0,0 @@
-/* Column module */
-
-(function (global, angular) {
-    "use strict";
-    var smartTableColumnModule = angular.module('smartTable.column', ['smartTable.templateUrlList']).constant('DefaultColumnConfiguration', {
-        isSortable: true,
-        isEditable: false,
-        type: 'text',
-
-
-        //it is useless to have that empty strings, but it reminds what is available
-        headerTemplateUrl: '',
-        map: '',
-        label: '',
-        sortPredicate: '',
-        formatFunction: '',
-        formatParameter: '',
-        filterPredicate: '',
-        cellTemplateUrl: '',
-        headerClass: '',
-        cellClass: ''
-    });
-
-    function ColumnProvider(DefaultColumnConfiguration, templateUrlList) {
-
-        function Column(config) {
-            if (!(this instanceof Column)) {
-                return new Column(config);
-            }
-            angular.extend(this, config);
-        }
-
-        this.setDefaultOption = function (option) {
-            angular.extend(Column.prototype, option);
-        };
-
-        DefaultColumnConfiguration.headerTemplateUrl = templateUrlList.defaultHeader;
-        this.setDefaultOption(DefaultColumnConfiguration);
-
-        this.$get = function () {
-            return Column;
-        };
-    }
-
-    ColumnProvider.$inject = ['DefaultColumnConfiguration', 'templateUrlList'];
-    smartTableColumnModule.provider('Column', ColumnProvider);
-
-    //make it global so it can be tested
-    global.ColumnProvider = ColumnProvider;
-})(window, angular);
-
-
-
-/* Directives */
-(function (angular) {
-    "use strict";
-    angular.module('smartTable.directives', ['smartTable.templateUrlList', 'smartTable.templates'])
-        .directive('smartTable', ['templateUrlList', 'DefaultTableConfiguration', function (templateList, defaultConfig) {
-            return {
-                restrict: 'EA',
-                scope: {
-                    columnCollection: '=columns',
-                    dataCollection: '=rows',
-                    config: '='
-                },
-                replace: 'true',
-                templateUrl: templateList.smartTable,
-                controller: 'TableCtrl',
-                link: function (scope, element, attr, ctrl) {
-
-                    var templateObject;
-
-                    scope.$watch('config', function (config) {
-                        var newConfig = angular.extend({}, defaultConfig, config),
-                            length = scope.columns !== undefined ? scope.columns.length : 0;
-
-                        ctrl.setGlobalConfig(newConfig);
-
-                        //remove the checkbox column if needed
-                        if (newConfig.selectionMode !== 'multiple' || newConfig.displaySelectionCheckbox !== true) {
-                            for (var i = length - 1; i >= 0; i--) {
-                                if (scope.columns[i].isSelectionColumn === true) {
-                                    ctrl.removeColumn(i);
-                                }
-                            }
-                        } else {
-                            //add selection box column if required
-                            ctrl.insertColumn({cellTemplateUrl: templateList.selectionCheckbox, headerTemplateUrl: templateList.selectAllCheckbox, isSelectionColumn: true}, 0);
-                        }
-                    }, true);
-
-                    //insert columns from column config
-                    scope.$watch('columnCollection', function (oldValue, newValue) {
-
-                        ctrl.clearColumns();
-
-                        if (scope.columnCollection) {
-                            for (var i = 0, l = scope.columnCollection.length; i < l; i++) {
-                                ctrl.insertColumn(scope.columnCollection[i]);
-                            }
-                        } else {
-                            //or guess data Structure
-                            if (scope.dataCollection && scope.dataCollection.length > 0) {
-                                templateObject = scope.dataCollection[0];
-                                angular.forEach(templateObject, function (value, key) {
-                                    if (key[0] != '$') {
-                                        ctrl.insertColumn({label: key, map: key});
-                                    }
-                                });
-                            }
-                        }
-                    }, true);
-
-                    //if item are added or removed into the data model from outside the grid
-                    scope.$watch('dataCollection.length', function (oldValue, newValue) {
-                        if (oldValue !== newValue) {
-                            ctrl.sortBy();//it will trigger the refresh... some hack ?
-                        }
-                    });
-                }
-            };
-        }])
-        //just to be able to select the row
-        .directive('smartTableDataRow', function () {
-
-            return {
-                require: '^smartTable',
-                restrict: 'C',
-                link: function (scope, element, attr, ctrl) {
-                    
-                    var _config;
-                    if ((_config = scope.config) != null) {
-                        if (typeof _config.rowFunction === "function") {
-                            _config.rowFunction(scope, element, attr, ctrl);
-                        }
-                    }
-                    
-                    element.bind('click', function () {
-                        scope.$apply(function () {
-                            ctrl.toggleSelection(scope.dataRow);
-                        })
-                    });
-                }
-            };
-        })
-        //header cell with sorting functionality or put a checkbox if this column is a selection column
-        .directive('smartTableHeaderCell',function () {
-            return {
-                restrict: 'C',
-                require: '^smartTable',
-                link: function (scope, element, attr, ctrl) {
-                    element.bind('click', function () {
-                        scope.$apply(function () {
-                            ctrl.sortBy(scope.column);
-                        });
-                    })
-                }
-            };
-        }).directive('smartTableSelectAll', function () {
-            return {
-                restrict: 'C',
-                require: '^smartTable',
-                link: function (scope, element, attr, ctrl) {
-                    element.bind('click', function (event) {
-                        ctrl.toggleSelectionAll(element[0].checked === true);
-                    })
-                }
-            };
-        })
-        //credit to Valentyn shybanov : http://stackoverflow.com/questions/14544741/angularjs-directive-to-stoppropagation
-        .directive('stopEvent', function () {
-            return {
-                restrict: 'A',
-                link: function (scope, element, attr) {
-                    element.bind(attr.stopEvent, function (e) {
-                        e.stopPropagation();
-                    });
-                }
-            }
-        })
-        //the global filter
-        .directive('smartTableGlobalSearch', ['templateUrlList', function (templateList) {
-            return {
-                restrict: 'C',
-                require: '^smartTable',
-                scope: {
-                    columnSpan: '@'
-                },
-                templateUrl: templateList.smartTableGlobalSearch,
-                replace: false,
-                link: function (scope, element, attr, ctrl) {
-
-                    scope.searchValue = '';
-
-                    scope.$watch('searchValue', function (value) {
-                        //todo perf improvement only filter on blur ?
-                        ctrl.search(value);
-                    });
-                }
-            }
-        }])
-        //a customisable cell (see templateUrl) and editable
-        //TODO check with the ng-include strategy
-        .directive('smartTableDataCell', ['$filter', '$http', '$templateCache', '$compile', '$parse', function (filter, http, templateCache, compile, parse) {
-            return {
-                restrict: 'C',
-                link: function (scope, element) {
-                    var
-                        column = scope.column,
-                        isSimpleCell = !column.isEditable,
-                        row = scope.dataRow,
-                        format = filter('format'),
-                        getter = parse(column.map),
-                        childScope;
-
-                    //can be useful for child directives
-                    scope.$watch('dataRow', function (value) {
-                        scope.formatedValue = format(getter(row), column.formatFunction, column.formatParameter);
-                        if (isSimpleCell === true) {
-                            element.html(scope.formatedValue);
-                        }
-                    }, true);
-
-                    function defaultContent() {
-                        if (column.isEditable) {
-                            element.html('<div editable-cell="" row="dataRow" column="column" type="column.type"></div>');
-                            compile(element.contents())(scope);
-                        } else {
-                            element.html(scope.formatedValue);
-                        }
-                    }
-
-                    scope.$watch('column.cellTemplateUrl', function (value) {
-
-                        if (value) {
-                            //we have to load the template (and cache it) : a kind of ngInclude
-                            http.get(value, {cache: templateCache}).success(function (response) {
-
-                                isSimpleCell = false;
-
-                                //create a scope
-                                childScope = scope.$new();
-                                //compile the element with its new content and new scope
-                                element.html(response);
-                                compile(element.contents())(childScope);
-                            }).error(defaultContent);
-
-                        } else {
-                            defaultContent();
-                        }
-                    });
-                }
-            };
-        }])
-        //directive that allows type to be bound in input
-        .directive('inputType', function () {
-            return {
-                restrict: 'A',
-                priority: 1,
-                link: function (scope, ielement, iattr) {
-                    //force the type to be set before inputDirective is called
-                    var type = scope.$eval(iattr.type);
-                    iattr.$set('type', type);
-                }
-            };
-        })
-        //an editable content in the context of a cell (see row, column)
-        .directive('editableCell', ['templateUrlList', '$parse', function (templateList, parse) {
-            return {
-                restrict: 'EA',
-                require: '^smartTable',
-                templateUrl: templateList.editableCell,
-                scope: {
-                    row: '=',
-                    column: '=',
-                    type: '='
-                },
-                replace: true,
-                link: function (scope, element, attrs, ctrl) {
-                    var form = angular.element(element.children()[1]),
-                        input = angular.element(form.children()[0]),
-                        getter = parse(scope.column.map);
-
-                    //init values
-                    scope.isEditMode = false;
-                    scope.$watch('row', function () {
-                        scope.value = getter(scope.row);
-                    }, true);
-
-
-                    scope.submit = function () {
-                        //update model if valid
-                        if (scope.myForm.$valid === true) {
-                            ctrl.updateDataRow(scope.row, scope.column.map, scope.value);
-                            ctrl.sortBy();//it will trigger the refresh...  (ie it will sort, filter, etc with the new value)
-                        }
-                        scope.toggleEditMode();
-                    };
-
-                    scope.toggleEditMode = function () {
-                        scope.value = getter(scope.row);
-                        scope.isEditMode = scope.isEditMode !== true;
-                    };
-
-                    scope.$watch('isEditMode', function (newValue) {
-                        if (newValue === true) {
-                            input[0].select();
-                            input[0].focus();
-                        }
-                    });
-
-                    input.bind('blur', function () {
-                        scope.$apply(function () {
-                            scope.submit();
-                        });
-                    });
-                }
-            };
-        }]);
-})(angular);
-
-/* Filters */
-(function (angular) {
-    "use strict";
-    angular.module('smartTable.filters', []).
-        constant('DefaultFilters', ['currency', 'date', 'json', 'lowercase', 'number', 'uppercase']).
-        filter('format', ['$filter', 'DefaultFilters', function (filter, defaultfilters) {
-            return function (value, formatFunction, filterParameter) {
-
-                var returnFunction;
-
-                if (formatFunction && angular.isFunction(formatFunction)) {
-                    returnFunction = formatFunction;
-                } else {
-                    returnFunction = defaultfilters.indexOf(formatFunction) !== -1 ? filter(formatFunction) : function (value) {
-                        return value;
-                    };
-                }
-                return returnFunction(value, filterParameter);
-            };
-        }]);
-})(angular);
-
-
-/*table module */
-
-(function (angular) {
-    "use strict";
-    angular.module('smartTable.table', ['smartTable.column', 'smartTable.utilities', 'smartTable.directives', 'smartTable.filters', 'ui.bootstrap.pagination.smartTable'])
-        .constant('DefaultTableConfiguration', {
-            selectionMode: 'none',
-            isGlobalSearchActivated: false,
-            displaySelectionCheckbox: false,
-            isPaginationEnabled: true,
-            itemsByPage: 10,
-            maxSize: 5,
-
-            //just to remind available option
-            sortAlgorithm: '',
-            filterAlgorithm: ''
-        })
-        .controller('TableCtrl', ['$scope', 'Column', '$filter', '$parse', 'ArrayUtility', 'DefaultTableConfiguration', function (scope, Column, filter, parse, arrayUtility, defaultConfig) {
-
-            scope.columns = [];
-            scope.dataCollection = scope.dataCollection || [];
-            scope.displayedCollection = []; //init empty array so that if pagination is enabled, it does not spoil performances
-            scope.numberOfPages = calculateNumberOfPages(scope.dataCollection);
-            scope.currentPage = 1;
-            scope.holder = {isAllSelected: false};
-
-            var predicate = {},
-                lastColumnSort;
-
-            function isAllSelected() {
-                var i,
-                    l = scope.displayedCollection.length;
-                for (i = 0; i < l; i++) {
-                    if (scope.displayedCollection[i].isSelected !== true) {
-                        return false;
-                    }
-                }
-                return true;
-            }
-
-            function calculateNumberOfPages(array) {
-
-                if (!angular.isArray(array) || array.length === 0 || scope.itemsByPage < 1) {
-                    return 1;
-                }
-                return Math.ceil(array.length / scope.itemsByPage);
-            }
-
-            function sortDataRow(array, column) {
-                var sortAlgo = (scope.sortAlgorithm && angular.isFunction(scope.sortAlgorithm)) === true ? scope.sortAlgorithm : filter('orderBy');
-                if (column && !(column.reverse === undefined)) {
-                    return arrayUtility.sort(array, sortAlgo, column.sortPredicate, column.reverse);
-                } else {
-                    return array;
-                }
-            }
-
-            function selectDataRow(array, selectionMode, index, select) {
-
-                var dataRow, oldValue;
-
-                if ((!angular.isArray(array)) || (selectionMode !== 'multiple' && selectionMode !== 'single')) {
-                    return;
-                }
-
-                if (index >= 0 && index < array.length) {
-                    dataRow = array[index];
-                    if (selectionMode === 'single') {
-                        //unselect all the others
-                        for (var i = 0, l = array.length; i < l; i++) {
-                            oldValue = array[i].isSelected;
-                            array[i].isSelected = false;
-                            if (oldValue === true) {
-                                scope.$emit('selectionChange', {item: array[i]});
-                            }
-                        }
-                    }
-                    dataRow.isSelected = select;
-                    scope.holder.isAllSelected = isAllSelected();
-                    scope.$emit('selectionChange', {item: dataRow});
-                }
-            }
-
-            /**
-             * set the config (config parameters will be available through scope
-             * @param config
-             */
-            this.setGlobalConfig = function (config) {
-                angular.extend(scope, defaultConfig, config);
-            };
-
-            /**
-             * change the current page displayed
-             * @param page
-             */
-            this.changePage = function (page) {
-                var oldPage = scope.currentPage;
-                if (angular.isNumber(page.page)) {
-                    scope.currentPage = page.page;
-                    scope.displayedCollection = this.pipe(scope.dataCollection);
-                    scope.holder.isAllSelected = isAllSelected();
-                    scope.$emit('changePage', {oldValue: oldPage, newValue: scope.currentPage});
-                }
-            };
-
-            /**
-             * set column as the column used to sort the data (if it is already the case, it will change the reverse value)
-             * @method sortBy
-             * @param column
-             */
-            this.sortBy = function (column) {
-                var index = scope.columns.indexOf(column);
-                if (index !== -1) {
-                    if (column.isSortable === true) {
-                        // reset the last column used
-                        if (lastColumnSort && lastColumnSort !== column) {
-                            lastColumnSort.reverse = undefined;
-                        }
-                        column.sortPredicate = column.sortPredicate || column.map;
-
-                        if (column.reverse === undefined) {
-                            column.reverse = false;
-                        }
-                        else if (column.reverse === false) {
-                            column.reverse = true;
-                        }
-                        else {
-                            column.reverse = undefined;
-                        }
-
-                        lastColumnSort = column;
-                    }
-                }
-
-                scope.displayedCollection = this.pipe(scope.dataCollection);
-            };
-
-            /**
-             * set the filter predicate used for searching
-             * @param input
-             * @param column
-             */
-            this.search = function (input, column) {
-
-                //update column and global predicate
-                if (column && scope.columns.indexOf(column) !== -1) {
-                    predicate[column.map] = input;
-                } else {
-                    predicate = {$: input};
-                }
-                scope.displayedCollection = this.pipe(scope.dataCollection);
-            };
-
-            /**
-             * combine sort, search and limitTo operations on an array,
-             * @param array
-             * @returns Array, an array result of the operations on input array
-             */
-            this.pipe = function (array) {
-                var filterAlgo = (scope.filterAlgorithm && angular.isFunction(scope.filterAlgorithm)) === true ? scope.filterAlgorithm : filter('filter'),
-                    output;
-                //filter and sort are commutative
-                output = sortDataRow(arrayUtility.filter(array, filterAlgo, predicate), lastColumnSort);
-                scope.numberOfPages = calculateNumberOfPages(output);
-                return scope.isPaginationEnabled ? arrayUtility.fromTo(output, (scope.currentPage - 1) * scope.itemsByPage, scope.itemsByPage) : output;
-            };
-
-            /*////////////
-             Column API
-             ///////////*/
-
-
-            /**
-             * insert a new column in scope.collection at index or push at the end if no index
-             * @param columnConfig column configuration used to instantiate the new Column
-             * @param index where to insert the column (at the end if not specified)
-             */
-            this.insertColumn = function (columnConfig, index) {
-                var column = new Column(columnConfig);
-                arrayUtility.insertAt(scope.columns, index, column);
-            };
-
-            /**
-             * remove the column at columnIndex from scope.columns
-             * @param columnIndex index of the column to be removed
-             */
-            this.removeColumn = function (columnIndex) {
-                arrayUtility.removeAt(scope.columns, columnIndex);
-            };
-
-            /**
-             * move column located at oldIndex to the newIndex in scope.columns
-             * @param oldIndex index of the column before it is moved
-             * @param newIndex index of the column after the column is moved
-             */
-            this.moveColumn = function (oldIndex, newIndex) {
-                arrayUtility.moveAt(scope.columns, oldIndex, newIndex);
-            };
-
-            /**
-             * remove all columns
-             */
-            this.clearColumns = function () {
-                scope.columns.length = 0;
-            };
-
-            /*///////////
-             ROW API
-             */
-
-            /**
-             * select or unselect the item of the displayedCollection with the selection mode set in the scope
-             * @param dataRow
-             */
-            this.toggleSelection = function (dataRow) {
-                var index = scope.dataCollection.indexOf(dataRow);
-                if (index !== -1) {
-                    selectDataRow(scope.dataCollection, scope.selectionMode, index, dataRow.isSelected !== true);
-                }
-            };
-
-            /**
-             * select/unselect all the currently displayed rows
-             * @param value if true select, else unselect
-             */
-            this.toggleSelectionAll = function (value) {
-                var i = 0,
-                    l = scope.displayedCollection.length;
-
-                if (scope.selectionMode !== 'multiple') {
-                    return;
-                }
-                for (; i < l; i++) {
-                    selectDataRow(scope.displayedCollection, scope.selectionMode, i, value === true);
-                }
-            };
-
-            /**
-             * remove the item at index rowIndex from the displayed collection
-             * @param rowIndex
-             * @returns {*} item just removed or undefined
-             */
-            this.removeDataRow = function (rowIndex) {
-                var toRemove = arrayUtility.removeAt(scope.displayedCollection, rowIndex);
-                arrayUtility.removeAt(scope.dataCollection, scope.dataCollection.indexOf(toRemove));
-            };
-
-            /**
-             * move an item from oldIndex to newIndex in displayedCollection
-             * @param oldIndex
-             * @param newIndex
-             */
-            this.moveDataRow = function (oldIndex, newIndex) {
-                arrayUtility.moveAt(scope.displayedCollection, oldIndex, newIndex);
-            };
-
-            /**
-             * update the model, it can be a non existing yet property
-             * @param dataRow the dataRow to update
-             * @param propertyName the property on the dataRow ojbect to update
-             * @param newValue the value to set
-             */
-            this.updateDataRow = function (dataRow, propertyName, newValue) {
-                var index = scope.displayedCollection.indexOf(dataRow),
-                    getter = parse(propertyName),
-                    setter = getter.assign,
-                    oldValue;
-                if (index !== -1) {
-                    oldValue = getter(scope.displayedCollection[index]);
-                    if (oldValue !== newValue) {
-                        setter(scope.displayedCollection[index], newValue);
-                        scope.$emit('updateDataRow', {item: scope.displayedCollection[index]});
-                    }
-                }
-            };
-        }]);
-})(angular);
-
-
-
-angular.module('smartTable.templates', ['partials/defaultCell.html', 'partials/defaultHeader.html', 'partials/editableCell.html', 'partials/globalSearchCell.html', 'partials/pagination.html', 'partials/selectAllCheckbox.html', 'partials/selectionCheckbox.html', 'partials/smartTable.html']);
-
-angular.module("partials/defaultCell.html", []).run(["$templateCache", function($templateCache) {
-  $templateCache.put("partials/defaultCell.html",
-    "{{formatedValue}}");
-}]);
-
-angular.module("partials/defaultHeader.html", []).run(["$templateCache", function($templateCache) {
-  $templateCache.put("partials/defaultHeader.html",
-    "<span class=\"header-content\" ng-class=\"{'sort-ascent':column.reverse==false,'sort-descent':column.reverse==true}\">{{column.label}}</span>");
-}]);
-
-angular.module("partials/editableCell.html", []).run(["$templateCache", function($templateCache) {
-  $templateCache.put("partials/editableCell.html",
-    "<div ng-dblclick=\"isEditMode || toggleEditMode($event)\">\n" +
-    "    <span ng-hide=\"isEditMode\">{{value | format:column.formatFunction:column.formatParameter}}</span>\n" +
-    "\n" +
-    "    <form ng-submit=\"submit()\" ng-show=\"isEditMode\" name=\"myForm\">\n" +
-    "        <input name=\"myInput\" ng-model=\"value\" type=\"type\" input-type/>\n" +
-    "    </form>\n" +
-    "</div>");
-}]);
-
-angular.module("partials/globalSearchCell.html", []).run(["$templateCache", function($templateCache) {
-  $templateCache.put("partials/globalSearchCell.html",
-    "<label>Search :</label>\n" +
-    "<input type=\"text\" ng-model=\"searchValue\"/>");
-}]);
-
-angular.module("partials/pagination.html", []).run(["$templateCache", function($templateCache) {
-  $templateCache.put("partials/pagination.html",
-    "<div class=\"pagination\">\n" +
-    "    <ul class=\"pagination\">\n" +
-    "        <li ng-repeat=\"page in pages\" ng-class=\"{active: page.active, disabled: page.disabled}\"><a\n" +
-    "                ng-click=\"selectPage(page.number)\">{{page.text}}</a></li>\n" +
-    "    </ul>\n" +
-    "</div> ");
-}]);
-
-angular.module("partials/selectAllCheckbox.html", []).run(["$templateCache", function($templateCache) {
-  $templateCache.put("partials/selectAllCheckbox.html",
-    "<input class=\"smart-table-select-all\"  type=\"checkbox\" ng-model=\"holder.isAllSelected\"/>");
-}]);
-
-angular.module("partials/selectionCheckbox.html", []).run(["$templateCache", function($templateCache) {
-  $templateCache.put("partials/selectionCheckbox.html",
-    "<input type=\"checkbox\" ng-model=\"dataRow.isSelected\" stop-event=\"click\"/>");
-}]);
-
-angular.module("partials/smartTable.html", []).run(["$templateCache", function($templateCache) {
-  $templateCache.put("partials/smartTable.html",
-    "<table class=\"smart-table\">\n" +
-    "    <thead>\n" +
-    "    <tr class=\"smart-table-global-search-row\" ng-show=\"isGlobalSearchActivated\">\n" +
-    "        <td class=\"smart-table-global-search\" column-span=\"{{columns.length}}\" colspan=\"{{columnSpan}}\">\n" +
-    "        </td>\n" +
-    "    </tr>\n" +
-    "    <tr class=\"smart-table-header-row\">\n" +
-    "        <th ng-repeat=\"column in columns\" ng-include=\"column.headerTemplateUrl\"\n" +
-    "            class=\"smart-table-header-cell {{column.headerClass}}\" scope=\"col\">\n" +
-    "        </th>\n" +
-    "    </tr>\n" +
-    "    </thead>\n" +
-    "    <tbody>\n" +
-    "    <tr ng-repeat=\"dataRow in displayedCollection\" ng-class=\"{selected:dataRow.isSelected}\"\n" +
-    "        class=\"smart-table-data-row\">\n" +
-    "        <td ng-repeat=\"column in columns\" class=\"smart-table-data-cell {{column.cellClass}}\"></td>\n" +
-    "    </tr>\n" +
-    "    </tbody>\n" +
-    "    <tfoot ng-show=\"isPaginationEnabled\">\n" +
-    "    <tr class=\"smart-table-footer-row\">\n" +
-    "        <td colspan=\"{{columns.length}}\">\n" +
-    "            <div pagination-smart-table=\"\" num-pages=\"numberOfPages\" max-size=\"maxSize\" current-page=\"currentPage\"></div>\n" +
-    "        </td>\n" +
-    "    </tr>\n" +
-    "    </tfoot>\n" +
-    "</table>\n" +
-    "\n" +
-    "\n" +
-    "");
-}]);
-
-(function (angular) {
-    "use strict";
-    angular.module('smartTable.templateUrlList', [])
-        .constant('templateUrlList', {
-            smartTable: 'partials/smartTable.html',
-            smartTableGlobalSearch: 'partials/globalSearchCell.html',
-            editableCell: 'partials/editableCell.html',
-            selectionCheckbox: 'partials/selectionCheckbox.html',
-            selectAllCheckbox: 'partials/selectAllCheckbox.html',
-            defaultHeader: 'partials/defaultHeader.html',
-            pagination: 'partials/pagination.html'
-        });
-})(angular);
-
-
-(function (angular) {
-    "use strict";
-    angular.module('smartTable.utilities', [])
-
-        .factory('ArrayUtility', function () {
-
-            /**
-             * remove the item at index from arrayRef and return the removed item
-             * @param arrayRef
-             * @param index
-             * @returns {*}
-             */
-            var removeAt = function (arrayRef, index) {
-                    if (index >= 0 && index < arrayRef.length) {
-                        return arrayRef.splice(index, 1)[0];
-                    }
-                },
-
-                /**
-                 * insert item in arrayRef at index or a the end if index is wrong
-                 * @param arrayRef
-                 * @param index
-                 * @param item
-                 */
-                insertAt = function (arrayRef, index, item) {
-                    if (index >= 0 && index < arrayRef.length) {
-                        arrayRef.splice(index, 0, item);
-                    } else {
-                        arrayRef.push(item);
-                    }
-                },
-
-                /**
-                 * move the item at oldIndex to newIndex in arrayRef
-                 * @param arrayRef
-                 * @param oldIndex
-                 * @param newIndex
-                 */
-                moveAt = function (arrayRef, oldIndex, newIndex) {
-                    var elementToMove;
-                    if (oldIndex >= 0 && oldIndex < arrayRef.length && newIndex >= 0 && newIndex < arrayRef.length) {
-                        elementToMove = arrayRef.splice(oldIndex, 1)[0];
-                        arrayRef.splice(newIndex, 0, elementToMove);
-                    }
-                },
-
-                /**
-                 * sort arrayRef according to sortAlgorithm following predicate and reverse
-                 * @param arrayRef
-                 * @param sortAlgorithm
-                 * @param predicate
-                 * @param reverse
-                 * @returns {*}
-                 */
-                sort = function (arrayRef, sortAlgorithm, predicate, reverse) {
-
-                    if (!sortAlgorithm || !angular.isFunction(sortAlgorithm)) {
-                        return arrayRef;
-                    } else {
-                        return sortAlgorithm(arrayRef, predicate, reverse === true);//excpet if reverse is true it will take it as false
-                    }
-                },
-
-                /**
-                 * filter arrayRef according with filterAlgorithm and predicate
-                 * @param arrayRef
-                 * @param filterAlgorithm
-                 * @param predicate
-                 * @returns {*}
-                 */
-                filter = function (arrayRef, filterAlgorithm, predicate) {
-                    if (!filterAlgorithm || !angular.isFunction(filterAlgorithm)) {
-                        return arrayRef;
-                    } else {
-                        return filterAlgorithm(arrayRef, predicate);
-                    }
-                },
-
-                /**
-                 * return an array, part of array ref starting at min and the size of length
-                 * @param arrayRef
-                 * @param min
-                 * @param length
-                 * @returns {*}
-                 */
-                fromTo = function (arrayRef, min, length) {
-
-                    var out = [],
-                        limit,
-                        start;
-
-                    if (!angular.isArray(arrayRef)) {
-                        return arrayRef;
-                    }
-
-                    start = Math.max(min, 0);
-                    start = Math.min(start, (arrayRef.length - 1) > 0 ? arrayRef.length - 1 : 0);
-
-                    length = Math.max(0, length);
-                    limit = Math.min(start + length, arrayRef.length);
-
-                    for (var i = start; i < limit; i++) {
-                        out.push(arrayRef[i]);
-                    }
-                    return out;
-                };
-
-
-            return {
-                removeAt: removeAt,
-                insertAt: insertAt,
-                moveAt: moveAt,
-                sort: sort,
-                filter: filter,
-                fromTo: fromTo
-            };
-        });
-})(angular);
-
-
-
-(function (angular) {
-    angular.module('ui.bootstrap.pagination.smartTable', ['smartTable.templateUrlList'])
-
-        .constant('paginationConfig', {
-            boundaryLinks: false,
-            directionLinks: true,
-            firstText: 'First',
-            previousText: '<',
-            nextText: '>',
-            lastText: 'Last'
-        })
-
-        .directive('paginationSmartTable', ['paginationConfig', 'templateUrlList', function (paginationConfig, templateUrlList) {
-            return {
-                restrict: 'EA',
-                require: '^smartTable',
-                scope: {
-                    numPages: '=',
-                    currentPage: '=',
-                    maxSize: '='
-                },
-                templateUrl: templateUrlList.pagination,
-                replace: true,
-                link: function (scope, element, attrs, ctrl) {
-
-                    // Setup configuration parameters
-                    var boundaryLinks = angular.isDefined(attrs.boundaryLinks) ? scope.$eval(attrs.boundaryLinks) : paginationConfig.boundaryLinks;
-                    var directionLinks = angular.isDefined(attrs.directionLinks) ? scope.$eval(attrs.directionLinks) : paginationConfig.directionLinks;
-                    var firstText = angular.isDefined(attrs.firstText) ? attrs.firstText : paginationConfig.firstText;
-                    var previousText = angular.isDefined(attrs.previousText) ? attrs.previousText : paginationConfig.previousText;
-                    var nextText = angular.isDefined(attrs.nextText) ? attrs.nextText : paginationConfig.nextText;
-                    var lastText = angular.isDefined(attrs.lastText) ? attrs.lastText : paginationConfig.lastText;
-
-                    // Create page object used in template
-                    function makePage(number, text, isActive, isDisabled) {
-                        return {
-                            number: number,
-                            text: text,
-                            active: isActive,
-                            disabled: isDisabled
-                        };
-                    }
-
-                    scope.$watch('numPages + currentPage + maxSize', function () {
-                        scope.pages = [];
-
-                        // Default page limits
-                        var startPage = 1, endPage = scope.numPages;
-
-                        // recompute if maxSize
-                        if (scope.maxSize && scope.maxSize < scope.numPages) {
-                            startPage = Math.max(scope.currentPage - Math.floor(scope.maxSize / 2), 1);
-                            endPage = startPage + scope.maxSize - 1;
-
-                            // Adjust if limit is exceeded
-                            if (endPage > scope.numPages) {
-                                endPage = scope.numPages;
-                                startPage = endPage - scope.maxSize + 1;
-                            }
-                        }
-
-                        // Add page number links
-                        for (var number = startPage; number <= endPage; number++) {
-                            var page = makePage(number, number, scope.isActive(number), false);
-                            scope.pages.push(page);
-                        }
-
-                        // Add previous & next links
-                        if (directionLinks) {
-                            var previousPage = makePage(scope.currentPage - 1, previousText, false, scope.noPrevious());
-                            scope.pages.unshift(previousPage);
-
-                            var nextPage = makePage(scope.currentPage + 1, nextText, false, scope.noNext());
-                            scope.pages.push(nextPage);
-                        }
-
-                        // Add first & last links
-                        if (boundaryLinks) {
-                            var firstPage = makePage(1, firstText, false, scope.noPrevious());
-                            scope.pages.unshift(firstPage);
-
-                            var lastPage = makePage(scope.numPages, lastText, false, scope.noNext());
-                            scope.pages.push(lastPage);
-                        }
-
-
-                        if (scope.currentPage > scope.numPages) {
-                            scope.selectPage(scope.numPages);
-                        }
-                    });
-                    scope.noPrevious = function () {
-                        return scope.currentPage === 1;
-                    };
-                    scope.noNext = function () {
-                        return scope.currentPage === scope.numPages;
-                    };
-                    scope.isActive = function (page) {
-                        return scope.currentPage === page;
-                    };
-
-                    scope.selectPage = function (page) {
-                        if (!scope.isActive(page) && page > 0 && page <= scope.numPages) {
-                            scope.currentPage = page;
-                            ctrl.changePage({ page: page });
-                        }
-                    };
-                }
-            };
-        }]);
-})(angular);
-

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/05129ed5/3rdparty/javascript/bower_components/smart-table/Smart-Table.min.js
----------------------------------------------------------------------
diff --git a/3rdparty/javascript/bower_components/smart-table/Smart-Table.min.js b/3rdparty/javascript/bower_components/smart-table/Smart-Table.min.js
deleted file mode 100644
index 47e43ad..0000000
--- a/3rdparty/javascript/bower_components/smart-table/Smart-Table.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(a,b){"use strict";function c(a,c){function d(a){return this instanceof d?(b.extend(this,a),void 0):new d(a)}this.setDefaultOption=function(a){b.extend(d.prototype,a)},a.headerTemplateUrl=c.defaultHeader,this.setDefaultOption(a),this.$get=function(){return d}}var d=b.module("smartTable.column",["smartTable.templateUrlList"]).constant("DefaultColumnConfiguration",{isSortable:!0,isEditable:!1,type:"text",headerTemplateUrl:"",map:"",label:"",sortPredicate:"",formatFunction:"",formatParameter:"",filterPredicate:"",cellTemplateUrl:"",headerClass:"",cellClass:""});c.$inject=["DefaultColumnConfiguration","templateUrlList"],d.provider("Column",c),a.ColumnProvider=c}(window,angular),function(a){"use strict";a.module("smartTable.directives",["smartTable.templateUrlList","smartTable.templates"]).directive("smartTable",["templateUrlList","DefaultTableConfiguration",function(b,c){return{restrict:"EA",scope:{columnCollection:"=columns",dataCollection:"=rows",config:"="},replace:"true",te
 mplateUrl:b.smartTable,controller:"TableCtrl",link:function(d,e,f,g){var h;d.$watch("config",function(e){var f=a.extend({},c,e),h=void 0!==d.columns?d.columns.length:0;if(g.setGlobalConfig(f),"multiple"!==f.selectionMode||f.displaySelectionCheckbox!==!0)for(var i=h-1;i>=0;i--)d.columns[i].isSelectionColumn===!0&&g.removeColumn(i);else g.insertColumn({cellTemplateUrl:b.selectionCheckbox,headerTemplateUrl:b.selectAllCheckbox,isSelectionColumn:!0},0)},!0),d.$watch("columnCollection",function(){if(g.clearColumns(),d.columnCollection)for(var b=0,c=d.columnCollection.length;c>b;b++)g.insertColumn(d.columnCollection[b]);else d.dataCollection&&d.dataCollection.length>0&&(h=d.dataCollection[0],a.forEach(h,function(a,b){"$"!=b[0]&&g.insertColumn({label:b,map:b})}))},!0),d.$watch("dataCollection.length",function(a,b){a!==b&&g.sortBy()})}}}]).directive("smartTableDataRow",function(){return{require:"^smartTable",restrict:"C",link:function(a,b,c,d){var e;null!=(e=a.config)&&"function"==typeof e.r
 owFunction&&e.rowFunction(a,b,c,d),b.bind("click",function(){a.$apply(function(){d.toggleSelection(a.dataRow)})})}}}).directive("smartTableHeaderCell",function(){return{restrict:"C",require:"^smartTable",link:function(a,b,c,d){b.bind("click",function(){a.$apply(function(){d.sortBy(a.column)})})}}}).directive("smartTableSelectAll",function(){return{restrict:"C",require:"^smartTable",link:function(a,b,c,d){b.bind("click",function(){d.toggleSelectionAll(b[0].checked===!0)})}}}).directive("stopEvent",function(){return{restrict:"A",link:function(a,b,c){b.bind(c.stopEvent,function(a){a.stopPropagation()})}}}).directive("smartTableGlobalSearch",["templateUrlList",function(a){return{restrict:"C",require:"^smartTable",scope:{columnSpan:"@"},templateUrl:a.smartTableGlobalSearch,replace:!1,link:function(a,b,c,d){a.searchValue="",a.$watch("searchValue",function(a){d.search(a)})}}}]).directive("smartTableDataCell",["$filter","$http","$templateCache","$compile","$parse",function(a,b,c,d,e){return
 {restrict:"C",link:function(f,g){function h(){j.isEditable?(g.html('<div editable-cell="" row="dataRow" column="column" type="column.type"></div>'),d(g.contents())(f)):g.html(f.formatedValue)}var i,j=f.column,k=!j.isEditable,l=f.dataRow,m=a("format"),n=e(j.map);f.$watch("dataRow",function(){f.formatedValue=m(n(l),j.formatFunction,j.formatParameter),k===!0&&g.html(f.formatedValue)},!0),f.$watch("column.cellTemplateUrl",function(a){a?b.get(a,{cache:c}).success(function(a){k=!1,i=f.$new(),g.html(a),d(g.contents())(i)}).error(h):h()})}}}]).directive("inputType",function(){return{restrict:"A",priority:1,link:function(a,b,c){var d=a.$eval(c.type);c.$set("type",d)}}}).directive("editableCell",["templateUrlList","$parse",function(b,c){return{restrict:"EA",require:"^smartTable",templateUrl:b.editableCell,scope:{row:"=",column:"=",type:"="},replace:!0,link:function(b,d,e,f){var g=a.element(d.children()[1]),h=a.element(g.children()[0]),i=c(b.column.map);b.isEditMode=!1,b.$watch("row",function(
 ){b.value=i(b.row)},!0),b.submit=function(){b.myForm.$valid===!0&&(f.updateDataRow(b.row,b.column.map,b.value),f.sortBy()),b.toggleEditMode()},b.toggleEditMode=function(){b.value=i(b.row),b.isEditMode=b.isEditMode!==!0},b.$watch("isEditMode",function(a){a===!0&&(h[0].select(),h[0].focus())}),h.bind("blur",function(){b.$apply(function(){b.submit()})})}}}])}(angular),function(a){"use strict";a.module("smartTable.filters",[]).constant("DefaultFilters",["currency","date","json","lowercase","number","uppercase"]).filter("format",["$filter","DefaultFilters",function(b,c){return function(d,e,f){var g;return g=e&&a.isFunction(e)?e:-1!==c.indexOf(e)?b(e):function(a){return a},g(d,f)}}])}(angular),function(a){"use strict";a.module("smartTable.table",["smartTable.column","smartTable.utilities","smartTable.directives","smartTable.filters","ui.bootstrap.pagination.smartTable"]).constant("DefaultTableConfiguration",{selectionMode:"none",isGlobalSearchActivated:!1,displaySelectionCheckbox:!1,isPag
 inationEnabled:!0,itemsByPage:10,maxSize:5,sortAlgorithm:"",filterAlgorithm:""}).controller("TableCtrl",["$scope","Column","$filter","$parse","ArrayUtility","DefaultTableConfiguration",function(b,c,d,e,f,g){function h(){var a,c=b.displayedCollection.length;for(a=0;c>a;a++)if(b.displayedCollection[a].isSelected!==!0)return!1;return!0}function i(c){return!a.isArray(c)||0===c.length||b.itemsByPage<1?1:Math.ceil(c.length/b.itemsByPage)}function j(c,e){var g=(b.sortAlgorithm&&a.isFunction(b.sortAlgorithm))===!0?b.sortAlgorithm:d("orderBy");return e&&void 0!==e.reverse?f.sort(c,g,e.sortPredicate,e.reverse):c}function k(c,d,e,f){var g,i;if(a.isArray(c)&&("multiple"===d||"single"===d)&&e>=0&&e<c.length){if(g=c[e],"single"===d)for(var j=0,k=c.length;k>j;j++)i=c[j].isSelected,c[j].isSelected=!1,i===!0&&b.$emit("selectionChange",{item:c[j]});g.isSelected=f,b.holder.isAllSelected=h(),b.$emit("selectionChange",{item:g})}}b.columns=[],b.dataCollection=b.dataCollection||[],b.displayedCollection=[]
 ,b.numberOfPages=i(b.dataCollection),b.currentPage=1,b.holder={isAllSelected:!1};var l,m={};this.setGlobalConfig=function(c){a.extend(b,g,c)},this.changePage=function(c){var d=b.currentPage;a.isNumber(c.page)&&(b.currentPage=c.page,b.displayedCollection=this.pipe(b.dataCollection),b.holder.isAllSelected=h(),b.$emit("changePage",{oldValue:d,newValue:b.currentPage}))},this.sortBy=function(a){var c=b.columns.indexOf(a);-1!==c&&a.isSortable===!0&&(l&&l!==a&&(l.reverse=void 0),a.sortPredicate=a.sortPredicate||a.map,a.reverse=void 0===a.reverse?!1:a.reverse===!1?!0:void 0,l=a),b.displayedCollection=this.pipe(b.dataCollection)},this.search=function(a,c){c&&-1!==b.columns.indexOf(c)?m[c.map]=a:m={$:a},b.displayedCollection=this.pipe(b.dataCollection)},this.pipe=function(c){var e,g=(b.filterAlgorithm&&a.isFunction(b.filterAlgorithm))===!0?b.filterAlgorithm:d("filter");return e=j(f.filter(c,g,m),l),b.numberOfPages=i(e),b.isPaginationEnabled?f.fromTo(e,(b.currentPage-1)*b.itemsByPage,b.itemsBy
 Page):e},this.insertColumn=function(a,d){var e=new c(a);f.insertAt(b.columns,d,e)},this.removeColumn=function(a){f.removeAt(b.columns,a)},this.moveColumn=function(a,c){f.moveAt(b.columns,a,c)},this.clearColumns=function(){b.columns.length=0},this.toggleSelection=function(a){var c=b.dataCollection.indexOf(a);-1!==c&&k(b.dataCollection,b.selectionMode,c,a.isSelected!==!0)},this.toggleSelectionAll=function(a){var c=0,d=b.displayedCollection.length;if("multiple"===b.selectionMode)for(;d>c;c++)k(b.displayedCollection,b.selectionMode,c,a===!0)},this.removeDataRow=function(a){var c=f.removeAt(b.displayedCollection,a);f.removeAt(b.dataCollection,b.dataCollection.indexOf(c))},this.moveDataRow=function(a,c){f.moveAt(b.displayedCollection,a,c)},this.updateDataRow=function(a,c,d){var f,g=b.displayedCollection.indexOf(a),h=e(c),i=h.assign;-1!==g&&(f=h(b.displayedCollection[g]),f!==d&&(i(b.displayedCollection[g],d),b.$emit("updateDataRow",{item:b.displayedCollection[g]})))}}])}(angular),angular.m
 odule("smartTable.templates",["partials/defaultCell.html","partials/defaultHeader.html","partials/editableCell.html","partials/globalSearchCell.html","partials/pagination.html","partials/selectAllCheckbox.html","partials/selectionCheckbox.html","partials/smartTable.html"]),angular.module("partials/defaultCell.html",[]).run(["$templateCache",function(a){a.put("partials/defaultCell.html","{{formatedValue}}")}]),angular.module("partials/defaultHeader.html",[]).run(["$templateCache",function(a){a.put("partials/defaultHeader.html","<span class=\"header-content\" ng-class=\"{'sort-ascent':column.reverse==false,'sort-descent':column.reverse==true}\">{{column.label}}</span>")}]),angular.module("partials/editableCell.html",[]).run(["$templateCache",function(a){a.put("partials/editableCell.html",'<div ng-dblclick="isEditMode || toggleEditMode($event)">\n    <span ng-hide="isEditMode">{{value | format:column.formatFunction:column.formatParameter}}</span>\n\n    <form ng-submit="submit()" ng-sh
 ow="isEditMode" name="myForm">\n        <input name="myInput" ng-model="value" type="type" input-type/>\n    </form>\n</div>')}]),angular.module("partials/globalSearchCell.html",[]).run(["$templateCache",function(a){a.put("partials/globalSearchCell.html",'<label>Search :</label>\n<input type="text" ng-model="searchValue"/>')}]),angular.module("partials/pagination.html",[]).run(["$templateCache",function(a){a.put("partials/pagination.html",'<div class="pagination">\n    <ul class="pagination">\n        <li ng-repeat="page in pages" ng-class="{active: page.active, disabled: page.disabled}"><a\n                ng-click="selectPage(page.number)">{{page.text}}</a></li>\n    </ul>\n</div> ')}]),angular.module("partials/selectAllCheckbox.html",[]).run(["$templateCache",function(a){a.put("partials/selectAllCheckbox.html",'<input class="smart-table-select-all"  type="checkbox" ng-model="holder.isAllSelected"/>')}]),angular.module("partials/selectionCheckbox.html",[]).run(["$templateCache",fu
 nction(a){a.put("partials/selectionCheckbox.html",'<input type="checkbox" ng-model="dataRow.isSelected" stop-event="click"/>')}]),angular.module("partials/smartTable.html",[]).run(["$templateCache",function(a){a.put("partials/smartTable.html",'<table class="smart-table">\n    <thead>\n    <tr class="smart-table-global-search-row" ng-show="isGlobalSearchActivated">\n        <td class="smart-table-global-search" column-span="{{columns.length}}" colspan="{{columnSpan}}">\n        </td>\n    </tr>\n    <tr class="smart-table-header-row">\n        <th ng-repeat="column in columns" ng-include="column.headerTemplateUrl"\n            class="smart-table-header-cell {{column.headerClass}}" scope="col">\n        </th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr ng-repeat="dataRow in displayedCollection" ng-class="{selected:dataRow.isSelected}"\n        class="smart-table-data-row">\n        <td ng-repeat="column in columns" class="smart-table-data-cell {{column.cellClass}}"></td>\n    </tr>
 \n    </tbody>\n    <tfoot ng-show="isPaginationEnabled">\n    <tr class="smart-table-footer-row">\n        <td colspan="{{columns.length}}">\n            <div pagination-smart-table="" num-pages="numberOfPages" max-size="maxSize" current-page="currentPage"></div>\n        </td>\n    </tr>\n    </tfoot>\n</table>\n\n\n')}]),function(a){"use strict";a.module("smartTable.templateUrlList",[]).constant("templateUrlList",{smartTable:"partials/smartTable.html",smartTableGlobalSearch:"partials/globalSearchCell.html",editableCell:"partials/editableCell.html",selectionCheckbox:"partials/selectionCheckbox.html",selectAllCheckbox:"partials/selectAllCheckbox.html",defaultHeader:"partials/defaultHeader.html",pagination:"partials/pagination.html"})}(angular),function(a){"use strict";a.module("smartTable.utilities",[]).factory("ArrayUtility",function(){var b=function(a,b){return b>=0&&b<a.length?a.splice(b,1)[0]:void 0},c=function(a,b,c){b>=0&&b<a.length?a.splice(b,0,c):a.push(c)},d=function(a,b,c
 ){var d;b>=0&&b<a.length&&c>=0&&c<a.length&&(d=a.splice(b,1)[0],a.splice(c,0,d))},e=function(b,c,d,e){return c&&a.isFunction(c)?c(b,d,e===!0):b},f=function(b,c,d){return c&&a.isFunction(c)?c(b,d):b},g=function(b,c,d){var e,f,g=[];if(!a.isArray(b))return b;f=Math.max(c,0),f=Math.min(f,b.length-1>0?b.length-1:0),d=Math.max(0,d),e=Math.min(f+d,b.length);for(var h=f;e>h;h++)g.push(b[h]);return g};return{removeAt:b,insertAt:c,moveAt:d,sort:e,filter:f,fromTo:g}})}(angular),function(a){a.module("ui.bootstrap.pagination.smartTable",["smartTable.templateUrlList"]).constant("paginationConfig",{boundaryLinks:!1,directionLinks:!0,firstText:"First",previousText:"<",nextText:">",lastText:"Last"}).directive("paginationSmartTable",["paginationConfig","templateUrlList",function(b,c){return{restrict:"EA",require:"^smartTable",scope:{numPages:"=",currentPage:"=",maxSize:"="},templateUrl:c.pagination,replace:!0,link:function(c,d,e,f){function g(a,b,c,d){return{number:a,text:b,active:c,disabled:d}}var h
 =a.isDefined(e.boundaryLinks)?c.$eval(e.boundaryLinks):b.boundaryLinks,i=a.isDefined(e.directionLinks)?c.$eval(e.directionLinks):b.directionLinks,j=a.isDefined(e.firstText)?e.firstText:b.firstText,k=a.isDefined(e.previousText)?e.previousText:b.previousText,l=a.isDefined(e.nextText)?e.nextText:b.nextText,m=a.isDefined(e.lastText)?e.lastText:b.lastText;c.$watch("numPages + currentPage + maxSize",function(){c.pages=[];var a=1,b=c.numPages;c.maxSize&&c.maxSize<c.numPages&&(a=Math.max(c.currentPage-Math.floor(c.maxSize/2),1),b=a+c.maxSize-1,b>c.numPages&&(b=c.numPages,a=b-c.maxSize+1));for(var d=a;b>=d;d++){var e=g(d,d,c.isActive(d),!1);c.pages.push(e)}if(i){var f=g(c.currentPage-1,k,!1,c.noPrevious());c.pages.unshift(f);var n=g(c.currentPage+1,l,!1,c.noNext());c.pages.push(n)}if(h){var o=g(1,j,!1,c.noPrevious());c.pages.unshift(o);var p=g(c.numPages,m,!1,c.noNext());c.pages.push(p)}c.currentPage>c.numPages&&c.selectPage(c.numPages)}),c.noPrevious=function(){return 1===c.currentPage},c.n
 oNext=function(){return c.currentPage===c.numPages},c.isActive=function(a){return c.currentPage===a},c.selectPage=function(a){!c.isActive(a)&&a>0&&a<=c.numPages&&(c.currentPage=a,f.changePage({page:a}))}}}}])}(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/05129ed5/3rdparty/javascript/bower_components/smart-table/config/karma-e2e.conf.js
----------------------------------------------------------------------
diff --git a/3rdparty/javascript/bower_components/smart-table/config/karma-e2e.conf.js b/3rdparty/javascript/bower_components/smart-table/config/karma-e2e.conf.js
deleted file mode 100644
index 70001a5..0000000
--- a/3rdparty/javascript/bower_components/smart-table/config/karma-e2e.conf.js
+++ /dev/null
@@ -1,22 +0,0 @@
-basePath = '../';
-
-files = [
-    ANGULAR_SCENARIO,
-    ANGULAR_SCENARIO_ADAPTER,
-    'test/e2e/**/*.js'
-];
-
-autoWatch = false;
-
-browsers = ['Chrome'];
-
-singleRun = true;
-
-proxies = {
-    '/': 'http://localhost:8000/'
-};
-
-junitReporter = {
-    outputFile: 'test_out/e2e.xml',
-    suite: 'e2e'
-};

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/05129ed5/3rdparty/javascript/bower_components/smart-table/config/karma.conf.js
----------------------------------------------------------------------
diff --git a/3rdparty/javascript/bower_components/smart-table/config/karma.conf.js b/3rdparty/javascript/bower_components/smart-table/config/karma.conf.js
deleted file mode 100644
index b6a953d..0000000
--- a/3rdparty/javascript/bower_components/smart-table/config/karma.conf.js
+++ /dev/null
@@ -1,43 +0,0 @@
-module.exports = function (config) {
-    config.set({
-
-        basePath: '../',
-
-        files: [
-            'smart-table-module/lib/angular/angular.js',
-            'test/lib/angular/angular-mocks.js',
-            'smart-table-module/js/*.js',
-            'test/unit/*.js'
-        ],
-
-        frameworks: ['jasmine'],
-
-        autoWatch: false,
-
-        browsers: ['Chrome'],
-
-
-        preprocessors: {
-            'smart-table-module/js/Column.js': 'coverage',
-            'smart-table-module/js/Table.js': 'coverage',
-            'smart-table-module/js/Utilities.js': 'coverage',
-            'smart-table-module/js/Filters.js': 'coverage',
-            'smart-table-module/js/Directives.js': 'coverage'
-        },
-
-        reporters: ['progress', 'coverage'],
-
-
-        junitReporter: {
-            outputFile: 'test_out/unit.xml',
-            suite: 'unit'
-        },
-
-        coverageReporter: {
-            type: 'html',
-            dir: 'test_out/'
-        }
-
-    });
-};
-

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/05129ed5/3rdparty/javascript/bower_components/smart-table/example-app/css/app.css
----------------------------------------------------------------------
diff --git a/3rdparty/javascript/bower_components/smart-table/example-app/css/app.css b/3rdparty/javascript/bower_components/smart-table/example-app/css/app.css
deleted file mode 100644
index bf72043..0000000
--- a/3rdparty/javascript/bower_components/smart-table/example-app/css/app.css
+++ /dev/null
@@ -1,62 +0,0 @@
-/* app css stylesheet */
-
-.menu {
-    list-style: none;
-    border-bottom: 0.1em solid black;
-    margin-bottom: 2em;
-    padding: 0 0 0.5em;
-}
-
-.menu:before {
-    content: "[";
-}
-
-.menu:after {
-    content: "]";
-}
-
-.menu > li {
-    display: inline;
-}
-
-.menu > li:before {
-    content: "|";
-    padding-right: 0.3em;
-}
-
-.menu > li:nth-child(1):before {
-    content: "";
-    padding: 0;
-}
-
-.smart-table-data-row.selected {
-    background: darkgray;
-}
-
-.header-content:before {
-    content: ' ';
-    position: relative;
-    left: -5px;
-}
-
-.sort-ascent:before {
-    content: "\25B4";
-}
-
-.sort-descent:before {
-    content: "\25BE";
-}
-
-.pagination {
-    text-align: center;
-    cursor: pointer;
-}
-
-.smart-table th {
-    width: 120px;
-    padding: 0 20px;
-}
-
-
-
-