http://git-wip-us.apache.org/repos/asf/aurora/blob/96c834a2/3rdparty/javascript/scheduler/assets/bower_components/momentjs/readme.md
----------------------------------------------------------------------
diff --git 
a/3rdparty/javascript/scheduler/assets/bower_components/momentjs/readme.md 
b/3rdparty/javascript/scheduler/assets/bower_components/momentjs/readme.md
deleted file mode 100644
index ae685ba..0000000
--- a/3rdparty/javascript/scheduler/assets/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/aurora/blob/96c834a2/3rdparty/javascript/scheduler/assets/bower_components/smart-table/.bower.json
----------------------------------------------------------------------
diff --git 
a/3rdparty/javascript/scheduler/assets/bower_components/smart-table/.bower.json 
b/3rdparty/javascript/scheduler/assets/bower_components/smart-table/.bower.json
deleted file mode 100644
index 62fe029..0000000
--- 
a/3rdparty/javascript/scheduler/assets/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/aurora/blob/96c834a2/3rdparty/javascript/scheduler/assets/bower_components/smart-table/.gitignore
----------------------------------------------------------------------
diff --git 
a/3rdparty/javascript/scheduler/assets/bower_components/smart-table/.gitignore 
b/3rdparty/javascript/scheduler/assets/bower_components/smart-table/.gitignore
deleted file mode 100644
index b8121a2..0000000
--- 
a/3rdparty/javascript/scheduler/assets/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/aurora/blob/96c834a2/3rdparty/javascript/scheduler/assets/bower_components/smart-table/CHANGELOG.md
----------------------------------------------------------------------
diff --git 
a/3rdparty/javascript/scheduler/assets/bower_components/smart-table/CHANGELOG.md
 
b/3rdparty/javascript/scheduler/assets/bower_components/smart-table/CHANGELOG.md
deleted file mode 100644
index bd39939..0000000
--- 
a/3rdparty/javascript/scheduler/assets/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/aurora/blob/96c834a2/3rdparty/javascript/scheduler/assets/bower_components/smart-table/GruntFile.js
----------------------------------------------------------------------
diff --git 
a/3rdparty/javascript/scheduler/assets/bower_components/smart-table/GruntFile.js
 
b/3rdparty/javascript/scheduler/assets/bower_components/smart-table/GruntFile.js
deleted file mode 100644
index 092191a..0000000
--- 
a/3rdparty/javascript/scheduler/assets/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/aurora/blob/96c834a2/3rdparty/javascript/scheduler/assets/bower_components/smart-table/README.md
----------------------------------------------------------------------
diff --git 
a/3rdparty/javascript/scheduler/assets/bower_components/smart-table/README.md 
b/3rdparty/javascript/scheduler/assets/bower_components/smart-table/README.md
deleted file mode 100644
index 3849e7d..0000000
--- 
a/3rdparty/javascript/scheduler/assets/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 
[email protected]

http://git-wip-us.apache.org/repos/asf/aurora/blob/96c834a2/3rdparty/javascript/scheduler/assets/bower_components/smart-table/Smart-Table.debug.js
----------------------------------------------------------------------
diff --git 
a/3rdparty/javascript/scheduler/assets/bower_components/smart-table/Smart-Table.debug.js
 
b/3rdparty/javascript/scheduler/assets/bower_components/smart-table/Smart-Table.debug.js
deleted file mode 100644
index e453e7d..0000000
--- 
a/3rdparty/javascript/scheduler/assets/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/aurora/blob/96c834a2/3rdparty/javascript/scheduler/assets/bower_components/smart-table/Smart-Table.min.js
----------------------------------------------------------------------
diff --git 
a/3rdparty/javascript/scheduler/assets/bower_components/smart-table/Smart-Table.min.js
 
b/3rdparty/javascript/scheduler/assets/bower_components/smart-table/Smart-Table.min.js
deleted file mode 100644
index 47e43ad..0000000
--- 
a/3rdparty/javascript/scheduler/assets/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/aurora/blob/96c834a2/3rdparty/javascript/scheduler/assets/bower_components/smart-table/config/karma-e2e.conf.js
----------------------------------------------------------------------
diff --git 
a/3rdparty/javascript/scheduler/assets/bower_components/smart-table/config/karma-e2e.conf.js
 
b/3rdparty/javascript/scheduler/assets/bower_components/smart-table/config/karma-e2e.conf.js
deleted file mode 100644
index 70001a5..0000000
--- 
a/3rdparty/javascript/scheduler/assets/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/aurora/blob/96c834a2/3rdparty/javascript/scheduler/assets/bower_components/smart-table/config/karma.conf.js
----------------------------------------------------------------------
diff --git 
a/3rdparty/javascript/scheduler/assets/bower_components/smart-table/config/karma.conf.js
 
b/3rdparty/javascript/scheduler/assets/bower_components/smart-table/config/karma.conf.js
deleted file mode 100644
index b6a953d..0000000
--- 
a/3rdparty/javascript/scheduler/assets/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/aurora/blob/96c834a2/3rdparty/javascript/scheduler/assets/bower_components/smart-table/example-app/css/app.css
----------------------------------------------------------------------
diff --git 
a/3rdparty/javascript/scheduler/assets/bower_components/smart-table/example-app/css/app.css
 
b/3rdparty/javascript/scheduler/assets/bower_components/smart-table/example-app/css/app.css
deleted file mode 100644
index bf72043..0000000
--- 
a/3rdparty/javascript/scheduler/assets/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;
-}
-
-
-
-

Reply via email to