You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eagle.apache.org by ha...@apache.org on 2015/11/30 03:51:14 UTC
[40/44] incubator-eagle git commit: update pom using npm to install
web deps
update pom using npm to install web deps
Project: http://git-wip-us.apache.org/repos/asf/incubator-eagle/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-eagle/commit/2c3005c9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-eagle/tree/2c3005c9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-eagle/diff/2c3005c9
Branch: refs/heads/master
Commit: 2c3005c99e7182d719755a5d61305c1627d9ce82
Parents: 5bffdfd
Author: jiljiang <ji...@ebay.com>
Authored: Thu Nov 26 02:27:17 2015 +0000
Committer: jiljiang <ji...@ebay.com>
Committed: Thu Nov 26 02:27:17 2015 +0000
----------------------------------------------------------------------
LICENSE | 8 +-
eagle-webservice/.gitignore | 3 +
eagle-webservice/pom.xml | 493 +-
eagle-webservice/src/main/webapp/Gruntfile.js | 131 +
eagle-webservice/src/main/webapp/README.md | 4 +
eagle-webservice/src/main/webapp/app/index.html | 216 +
.../webapp/app/partials/dam/alertDetail.html | 61 +
.../main/webapp/app/partials/dam/alertList.html | 83 +
.../src/main/webapp/app/partials/dam/login.html | 49 +
.../webapp/app/partials/dam/policyDetail.html | 171 +
.../webapp/app/partials/dam/policyEdit.html | 352 +
.../webapp/app/partials/dam/policyList.html | 98 +
.../webapp/app/partials/dam/sensitivity.html | 22 +
.../app/partials/dam/sensitivity/HDFS.html | 110 +
.../app/partials/dam/sensitivity/Hive.html | 150 +
.../app/partials/dam/sensitivitySummary.html | 143 +
.../main/webapp/app/partials/dam/siteList.html | 162 +
.../webapp/app/partials/dam/streamList.html | 178 +
.../main/webapp/app/partials/dam/summary.html | 45 +
.../app/partials/dam/userProfileDetail.html | 86 +
.../app/partials/dam/userProfileList.html | 138 +
.../css/bootstrap-components.css | 395 +
.../css/bootstrap-components.min.css | 1 +
.../js/bootstrap-components.js | 1712 ++++
.../js/bootstrap-components.min.js | 8 +
.../public/assets/flot/jquery.flot.legend.js | 107 +
.../public/assets/flot/jquery.flot.tooltip.js | 381 +
.../src/main/webapp/app/public/css/main.css | 553 +
.../main/webapp/app/public/images/favicon.png | Bin 0 -> 4209 bytes
.../src/main/webapp/app/public/js/app.config.js | 75 +
.../src/main/webapp/app/public/js/app.js | 684 ++
.../src/main/webapp/app/public/js/app.time.js | 55 +
.../src/main/webapp/app/public/js/app.ui.js | 66 +
.../src/main/webapp/app/public/js/common.js | 211 +
.../webapp/app/public/js/components/charts.js | 188 +
.../app/public/js/components/charts/bar.js | 290 +
.../app/public/js/components/charts/line3d.js | 345 +
.../webapp/app/public/js/components/file.js | 49 +
.../webapp/app/public/js/components/main.js | 20 +
.../app/public/js/components/sortTable.js | 112 +
.../webapp/app/public/js/components/tabs.js | 107 +
.../app/public/js/ctrl/alertController.js | 126 +
.../webapp/app/public/js/ctrl/authController.js | 63 +
.../webapp/app/public/js/ctrl/damController.js | 109 +
.../app/public/js/ctrl/policyController.js | 885 ++
.../app/public/js/ctrl/sensitivityController.js | 389 +
.../webapp/app/public/js/ctrl/siteController.js | 209 +
.../app/public/js/ctrl/streamController.js | 207 +
.../app/public/js/ctrl/userProfileController.js | 258 +
eagle-webservice/src/main/webapp/grunt.json | 46 +
eagle-webservice/src/main/webapp/index.html | 215 +-
eagle-webservice/src/main/webapp/package.json | 47 +
.../main/webapp/partials/dam/alertDetail.html | 61 -
.../src/main/webapp/partials/dam/alertList.html | 83 -
.../src/main/webapp/partials/dam/login.html | 31 -
.../main/webapp/partials/dam/policyDetail.html | 171 -
.../main/webapp/partials/dam/policyEdit.html | 352 -
.../main/webapp/partials/dam/policyList.html | 98 -
.../main/webapp/partials/dam/sensitivity.html | 22 -
.../webapp/partials/dam/sensitivity/HDFS.html | 110 -
.../webapp/partials/dam/sensitivity/Hive.html | 150 -
.../webapp/partials/dam/sensitivitySummary.html | 143 -
.../src/main/webapp/partials/dam/siteList.html | 162 -
.../main/webapp/partials/dam/streamList.html | 178 -
.../src/main/webapp/partials/dam/summary.html | 45 -
.../webapp/partials/dam/userProfileDetail.html | 86 -
.../webapp/partials/dam/userProfileList.html | 138 -
...1oPJhLKp0zdtTvoM40tgx99jmYGv_xzYuwd1rU.woff2 | Bin 12264 -> 0 bytes
...1oPJhLKp0zdtTvoM7YHq4FgHI02B8rPccK0FJQ.woff2 | Bin 4584 -> 0 bytes
...1oPJhLKp0zdtTvoMxgy2Fsj5sj3EzlXpqVXRKo.woff2 | Bin 13980 -> 0 bytes
...1aHBYDBqgeIAH2zlC2Q8seG17bfDXYR_jUsrzg.woff2 | Bin 12336 -> 0 bytes
...1aHBYDBqgeIAH2zlNOAHFN6BivSraYkjhveRHY.woff2 | Bin 4504 -> 0 bytes
...1aHBYDBqgeIAH2zlNV_2ngZ8dMf8fLgjYEouxg.woff2 | Bin 14308 -> 0 bytes
...K8qsXbIeTHTrnQH6CzM2XYAq8cDhaXsrN8WXcA.woff2 | Bin 4596 -> 0 bytes
...K8qsXbIeTHTrnQH6E78GtRp3lhchupCJNw8t58.woff2 | Bin 4556 -> 0 bytes
...K8qsXbIeTHTrnQH6GQKuzMuncr0JB710wa2dPI.woff2 | Bin 13716 -> 0 bytes
...K8qsXbIeTHTrnQH6Lpx497t94oDua8KfAL9f-E.woff2 | Bin 12196 -> 0 bytes
...K8qsXbIeTHTrnQH6MAjkyiewWYrWZc50I8hK7I.woff2 | Bin 13772 -> 0 bytes
...K8qsXbIeTHTrnQH6OXKTZYPNtG1yMB_YJSqlic.woff2 | Bin 12228 -> 0 bytes
...cfmlt9b38dHJxOBGCOFnW3Jk0f09zW_Yln67Ac.woff2 | Bin 13992 -> 0 bytes
...cfmlt9b38dHJxOBGClYwVOhDRq2vbpGRTZ7bbs.woff2 | Bin 4512 -> 0 bytes
...cfmlt9b38dHJxOBGDRVvBvQIc1z78c__uoBcyI.woff2 | Bin 12396 -> 0 bytes
...cfmlt9b38dHJxOBGD_j0nMiB9fPhg_k1wdK2h0.woff2 | Bin 4588 -> 0 bytes
...cfmlt9b38dHJxOBGDovqjS_dXPZszO_XltPdNg.woff2 | Bin 4432 -> 0 bytes
...cfmlt9b38dHJxOBGEo0As1BFRXtCDhS66znb_k.woff2 | Bin 13892 -> 0 bytes
...cfmlt9b38dHJxOBGFKFh1TDTPrUZWzVp6FtpG8.woff2 | Bin 12384 -> 0 bytes
...cfmlt9b38dHJxOBGFxe-GPfKKFmiXaJ_Q0GFr8.woff2 | Bin 12244 -> 0 bytes
...cfmlt9b38dHJxOBGOode0-EuMkY--TSyExeINg.woff2 | Bin 14308 -> 0 bytes
.../assets/adminLTE/dist/assets/googleapi.css | 168 -
.../assets/adminLTE/dist/css/AdminLTE.min.css | 7 -
.../adminLTE/dist/css/skins/skin-blue.min.css | 1 -
.../public/assets/adminLTE/dist/js/app.min.js | 13 -
.../assets/angular/angular-animate.min.js | 52 -
.../assets/angular/angular-animate.min.js.map | 8 -
.../assets/angular/angular-cookies.min.js | 9 -
.../assets/angular/angular-cookies.min.js.map | 8 -
.../assets/angular/angular-resource.min.js | 13 -
.../assets/angular/angular-resource.min.js.map | 8 -
.../public/assets/angular/angular-route.min.js | 15 -
.../assets/angular/angular-route.min.js.map | 8 -
.../webapp/public/assets/angular/angular.min.js | 290 -
.../public/assets/angular/angular.min.js.map | 8 -
.../assets/angular/ui-bootstrap-tpls-0.13.4.js | 5837 -----------
.../angular/ui-bootstrap-tpls-0.13.4.min.js | 10 -
.../css/bootstrap-components.css | 395 -
.../css/bootstrap-components.min.css | 1 -
.../js/bootstrap-components.js | 1712 ----
.../js/bootstrap-components.min.js | 8 -
.../assets/bootstrap/css/bootstrap-theme.css | 476 -
.../bootstrap/css/bootstrap-theme.css.map | 1 -
.../bootstrap/css/bootstrap-theme.min.css | 5 -
.../public/assets/bootstrap/css/bootstrap.css | 6584 ------------
.../assets/bootstrap/css/bootstrap.css.map | 1 -
.../assets/bootstrap/css/bootstrap.min.css | 5 -
.../fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes
.../fonts/glyphicons-halflings-regular.svg | 288 -
.../fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes
.../fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes
.../fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes
.../public/assets/bootstrap/js/bootstrap.js | 2317 -----
.../public/assets/bootstrap/js/bootstrap.min.js | 7 -
.../webapp/public/assets/bootstrap/js/npm.js | 13 -
.../src/main/webapp/public/assets/d3/d3.js | 9503 ------------------
.../src/main/webapp/public/assets/d3/d3.min.js | 5 -
.../public/assets/fastclick/fastclick.min.js | 1 -
.../webapp/public/assets/flot/excanvas.min.js | 1 -
.../webapp/public/assets/flot/jquery-ui.min.js | 6 -
.../assets/flot/jquery.colorhelpers.min.js | 1 -
.../assets/flot/jquery.flot.canvas.min.js | 7 -
.../assets/flot/jquery.flot.categories.min.js | 7 -
.../assets/flot/jquery.flot.crosshair.min.js | 7 -
.../assets/flot/jquery.flot.errorbars.min.js | 7 -
.../assets/flot/jquery.flot.fillbetween.min.js | 7 -
.../public/assets/flot/jquery.flot.image.min.js | 7 -
.../public/assets/flot/jquery.flot.legend.js | 107 -
.../public/assets/flot/jquery.flot.min.js | 8 -
.../assets/flot/jquery.flot.navigate.min.js | 7 -
.../public/assets/flot/jquery.flot.pie.min.js | 7 -
.../assets/flot/jquery.flot.resize.min.js | 7 -
.../assets/flot/jquery.flot.selection.min.js | 7 -
.../public/assets/flot/jquery.flot.stack.min.js | 7 -
.../assets/flot/jquery.flot.symbol.min.js | 7 -
.../assets/flot/jquery.flot.threshold.min.js | 7 -
.../public/assets/flot/jquery.flot.time.min.js | 7 -
.../public/assets/flot/jquery.flot.tooltip.js | 381 -
.../font-awesome/css/font-awesome.min.css | 4 -
.../assets/font-awesome/fonts/FontAwesome.otf | Bin 106260 -> 0 bytes
.../font-awesome/fonts/fontawesome-webfont.eot | Bin 68875 -> 0 bytes
.../font-awesome/fonts/fontawesome-webfont.svg | 640 --
.../font-awesome/fonts/fontawesome-webfont.ttf | Bin 138204 -> 0 bytes
.../font-awesome/fonts/fontawesome-webfont.woff | Bin 81284 -> 0 bytes
.../fonts/fontawesome-webfont.woff2 | Bin 64464 -> 0 bytes
.../public/assets/jquery/jquery-1.11.3.min.js | 5 -
.../public/assets/jquery/jquery-1.11.3.min.map | 1 -
.../assets/jquery/jquery.slimscroll.min.js | 1 -
.../moment/moment-timezone-with-data.min.js | 7 -
.../assets/moment/moment-with-locales.min.js | 79 -
.../main/webapp/public/css/alerts/policy.css | 61 -
.../webapp/public/css/alerts/policylist.css | 22 -
.../webapp/public/css/alerts/policyview.css | 30 -
.../webapp/public/css/alerts/streamlist.css | 23 -
.../main/webapp/public/css/dashboards/adhoc.css | 58 -
.../main/webapp/public/css/dashboards/view.css | 18 -
.../src/main/webapp/public/css/main.css | 553 -
.../src/main/webapp/public/images/favicon.png | Bin 4209 -> 0 bytes
.../src/main/webapp/public/js/app.js | 682 --
.../src/main/webapp/public/js/app.time.js | 55 -
.../src/main/webapp/public/js/app.ui.js | 66 -
.../src/main/webapp/public/js/common.js | 211 -
.../main/webapp/public/js/components/charts.js | 188 -
.../webapp/public/js/components/charts/bar.js | 290 -
.../public/js/components/charts/line3d.js | 345 -
.../main/webapp/public/js/components/file.js | 49 -
.../main/webapp/public/js/components/main.js | 20 -
.../webapp/public/js/components/sortTable.js | 112 -
.../main/webapp/public/js/components/tabs.js | 107 -
.../src/main/webapp/public/js/config.js | 77 -
.../webapp/public/js/ctrl/alertController.js | 126 -
.../webapp/public/js/ctrl/authController.js | 63 -
.../main/webapp/public/js/ctrl/damController.js | 109 -
.../webapp/public/js/ctrl/policyController.js | 885 --
.../public/js/ctrl/sensitivityController.js | 389 -
.../webapp/public/js/ctrl/siteController.js | 209 -
.../webapp/public/js/ctrl/streamController.js | 207 -
.../public/js/ctrl/userProfileController.js | 258 -
eagle-webservice/ui-build.sh | 42 +
186 files changed, 10213 insertions(+), 36604 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/LICENSE
----------------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
index d194c1a..b474223 100755
--- a/LICENSE
+++ b/LICENSE
@@ -213,4 +213,10 @@ For AdminLTE:
==============================================================================
This product bundles AdminLTE, which is available under a
"MIT" license. For details, see
-https://github.com/almasaeed2010/AdminLTE/blob/master/LICENSE.
\ No newline at end of file
+https://github.com/almasaeed2010/AdminLTE/blob/master/LICENSE.
+
+==============================================================================
+For Google Fonts: Source Sans Pro
+==============================================================================
+This product bundles "Google Fonts: Source Sans Pro", which is available under a "SIL Open Font License, 1.1" license.
+For details, see https://www.google.com/fonts/attribution and http://scripts.sil.org/OFL
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/.gitignore
----------------------------------------------------------------------
diff --git a/eagle-webservice/.gitignore b/eagle-webservice/.gitignore
index 09e3bc9..b875523 100644
--- a/eagle-webservice/.gitignore
+++ b/eagle-webservice/.gitignore
@@ -1,2 +1,5 @@
/bin/
/target/
+node_modules
+ui
+tmp
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/pom.xml
----------------------------------------------------------------------
diff --git a/eagle-webservice/pom.xml b/eagle-webservice/pom.xml
index 1acce45..9c3a71e 100644
--- a/eagle-webservice/pom.xml
+++ b/eagle-webservice/pom.xml
@@ -1,20 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one or more
- ~ contributor license agreements. See the NOTICE file distributed with
- ~ this work for additional information regarding copyright ownership.
- ~ The ASF licenses this file to You under the Apache License, Version 2.0
- ~ (the "License"); you may not use this file except in compliance with
- ~ the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
+<!-- ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with ~
+ this work for additional information regarding copyright ownership. ~ The
+ ASF licenses this file to You under the Apache License, Version 2.0 ~ (the
+ "License"); you may not use this file except in compliance with ~ the License.
+ You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~ ~ Unless required by applicable law or agreed to in writing, software ~
+ distributed under the License is distributed on an "AS IS" BASIS, ~ WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the
+ License for the specific language governing permissions and ~ limitations
+ under the License. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
@@ -23,239 +18,269 @@
<groupId>eagle</groupId>
<artifactId>eagle-parent</artifactId>
<version>0.3.0</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
- <artifactId>eagle-webservice</artifactId>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>eagle-webservice</artifactId>
<packaging>war</packaging>
<name>eagle-webservice</name>
<dependencies>
- <dependency>
- <groupId>eagle</groupId>
- <artifactId>eagle-service-base</artifactId>
- <version>${project.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>log4j-over-slf4j</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
<dependency>
<groupId>eagle</groupId>
- <artifactId>eagle-storage-hbase</artifactId>
- <version>${project.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>log4j-over-slf4j</artifactId>
- </exclusion>
- </exclusions>
+ <artifactId>eagle-service-base</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
- <!-- jersey needs asm3, so use extcos 0.3b-->
- <dependency>
- <groupId>net.sf.extcos</groupId>
- <artifactId>extcos</artifactId>
- <version>${extcos3.version}</version>
- </dependency>
-
- <dependency>
- <groupId>eagle</groupId>
- <artifactId>eagle-security-hbase-web</artifactId>
- <version>${project.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.ow2.asm</groupId>
- <artifactId>asm-all</artifactId>
- </exclusion>
- <exclusion>
- <groupId>asm</groupId>
- <artifactId>asm</artifactId>
- </exclusion>
- <exclusion>
- <groupId>asm</groupId>
- <artifactId>asm-all</artifactId>
- </exclusion>
- <exclusion>
- <groupId>asm</groupId>
- <artifactId>asm-commons</artifactId>
- </exclusion>
- <exclusion>
- <groupId>asm</groupId>
- <artifactId>asm-tree</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>eagle</groupId>
- <artifactId>eagle-security-hive-web</artifactId>
- <version>${project.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.ow2.asm</groupId>
- <artifactId>asm-all</artifactId>
- </exclusion>
- <exclusion>
- <groupId>asm</groupId>
- <artifactId>asm</artifactId>
- </exclusion>
- <exclusion>
- <groupId>asm</groupId>
- <artifactId>asm-all</artifactId>
- </exclusion>
- <exclusion>
- <groupId>asm</groupId>
- <artifactId>asm-commons</artifactId>
- </exclusion>
- <exclusion>
- <groupId>asm</groupId>
- <artifactId>asm-tree</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <dependency>
- <groupId>eagle</groupId>
- <artifactId>eagle-security-hdfs-web</artifactId>
- <version>${project.version}</version>
- </dependency>
+ <dependency>
+ <groupId>eagle</groupId>
+ <artifactId>eagle-storage-hbase</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
- <!-- eagle user profile common dependency-->
- <dependency>
- <groupId>eagle</groupId>
- <artifactId>eagle-security-userprofile-common</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat-catalina</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>eagle</groupId>
- <artifactId>eagle-machinelearning-base</artifactId>
- <version>${project.version}</version>
- </dependency>
+ <!-- jersey needs asm3, so use extcos 0.3b -->
+ <dependency>
+ <groupId>net.sf.extcos</groupId>
+ <artifactId>extcos</artifactId>
+ <version>${extcos3.version}</version>
+ </dependency>
- <dependency>
- <groupId>eagle</groupId>
- <artifactId>eagle-alert-base</artifactId>
- <version>${project.version}</version>
+ <dependency>
+ <groupId>eagle</groupId>
+ <artifactId>eagle-security-hbase-web</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.ow2.asm</groupId>
+ <artifactId>asm-all</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>asm</groupId>
+ <artifactId>asm</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>asm</groupId>
+ <artifactId>asm-all</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>asm</groupId>
+ <artifactId>asm-commons</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>asm</groupId>
+ <artifactId>asm-tree</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>eagle</groupId>
+ <artifactId>eagle-security-hive-web</artifactId>
+ <version>${project.version}</version>
<exclusions>
- <exclusion>
- <groupId>org.apache.storm</groupId>
- <artifactId>storm-core</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>eagle</groupId>
- <artifactId>eagle-alert-service</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.wso2.siddhi</groupId>
- <artifactId>siddhi-core</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.wso2.siddhi</groupId>
- <artifactId>siddhi-extension-string</artifactId>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
+ <exclusion>
+ <groupId>org.ow2.asm</groupId>
+ <artifactId>asm-all</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>asm</groupId>
+ <artifactId>asm</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>asm</groupId>
+ <artifactId>asm-all</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>asm</groupId>
+ <artifactId>asm-commons</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>asm</groupId>
+ <artifactId>asm-tree</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
- <!-- Spring framework -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- <version>${spring.framework.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>${spring.framework.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-jdbc</artifactId>
- <version>${spring.framework.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <version>${spring.framework.version}</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>${spring.framework.version}</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-aop</artifactId>
- <version>${spring.framework.version}</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>${spring.framework.version}</version>
- </dependency>
+ <dependency>
+ <groupId>eagle</groupId>
+ <artifactId>eagle-security-hdfs-web</artifactId>
+ <version>${project.version}</version>
+ </dependency>
- <!-- Spring Security -->
- <dependency>
- <groupId>org.springframework.security</groupId>
- <artifactId>spring-security-core</artifactId>
- <version>${spring.framework.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.security</groupId>
- <artifactId>spring-security-web</artifactId>
- <version>${spring.framework.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.security</groupId>
- <artifactId>spring-security-config</artifactId>
- <version>${spring.framework.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.security</groupId>
- <artifactId>spring-security-acl</artifactId>
- <version>${spring.framework.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.security</groupId>
- <artifactId>spring-security-ldap</artifactId>
- <version>${spring.framework.version}</version>
- </dependency>
+ <!-- eagle user profile common dependency -->
+ <dependency>
+ <groupId>eagle</groupId>
+ <artifactId>eagle-security-userprofile-common</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-catalina</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>eagle</groupId>
+ <artifactId>eagle-machinelearning-base</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>eagle</groupId>
+ <artifactId>eagle-alert-base</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.storm</groupId>
+ <artifactId>storm-core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>eagle</groupId>
+ <artifactId>eagle-alert-service</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.wso2.siddhi</groupId>
+ <artifactId>siddhi-core</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.wso2.siddhi</groupId>
+ <artifactId>siddhi-extension-string</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!-- Spring framework -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <version>${spring.framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-webmvc</artifactId>
+ <version>${spring.framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ <version>${spring.framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ <version>${spring.framework.version}</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ <version>${spring.framework.version}</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aop</artifactId>
+ <version>${spring.framework.version}</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <version>${spring.framework.version}</version>
+ </dependency>
- </dependencies>
+ <!-- Spring Security -->
+ <dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-core</artifactId>
+ <version>${spring.framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-web</artifactId>
+ <version>${spring.framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-config</artifactId>
+ <version>${spring.framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-acl</artifactId>
+ <version>${spring.framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-ldap</artifactId>
+ <version>${spring.framework.version}</version>
+ </dependency>
+ </dependencies>
- <build>
- <finalName>eagle-service</finalName>
- <plugins>
- <plugin>
- <groupId>org.apache.tomcat.maven</groupId>
- <artifactId>tomcat7-maven-plugin</artifactId>
- <configuration>
- <path>eagle-service</path>
- </configuration>
- </plugin>
- </plugins>
- </build>
+ <build>
+ <finalName>eagle-service</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tomcat.maven</groupId>
+ <artifactId>tomcat7-maven-plugin</artifactId>
+ <configuration>
+ <path>eagle-service</path>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>exec-ui-install</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <executable>bash</executable>
+ <arguments>
+ <argument>${basedir}/ui-build.sh</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.6</version>
+ <configuration>
+ <packagingExcludes>
+ app/,
+ node_modules/,
+ grunt.json,
+ Gruntfile.js,
+ package.json
+ </packagingExcludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
</project>
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/Gruntfile.js
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/Gruntfile.js b/eagle-webservice/src/main/webapp/Gruntfile.js
new file mode 100644
index 0000000..14fc777
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/Gruntfile.js
@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+'use strict';
+
+module.exports = function (grunt) {
+ // Project configuration.
+ grunt.initConfig({
+ pkg: grunt.file.readJSON('package.json'),
+ config: grunt.file.readJSON('grunt.json'),
+
+ clean: {
+ build: ['ui/', 'tmp/'],
+ tmp: ['tmp/'],
+ ui: ['ui/'],
+ },
+ concat: {
+ app: {
+ src: [
+ 'app/public/js/app.js',
+ 'app/public/js/app.*.js',
+
+ 'app/public/js/common.js',
+
+ 'app/public/js/components/main.js',
+ 'app/public/js/components/**.js',
+
+ 'app/public/js/ctrl/damController.js',
+ 'app/public/js/ctrl/*.js',
+ ],
+ dest: 'tmp/public/js/scripts.js'
+ },
+ js: '<%= config.concat.js %>',
+ css: {
+ options: {
+ process: function(src, filepath) {
+ return "@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic);" +
+ src.replace('@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic);', '');
+ }
+ },
+ src: '<%= config.concat.css.src %>',
+ dest: '<%= config.concat.css.dest %>',
+ }
+ },
+ 'regex-replace': {
+ strict: {
+ src: ['tmp/public/js/scripts.js'],
+ actions: [
+ {
+ name: 'use strict',
+ search: '\\\'use strict\\\';?',
+ replace: '',
+ flags: 'gmi'
+ }
+ ]
+ },
+ },
+ uglify: {
+ ui: {
+ options: {
+ mangle: false
+ },
+ src: 'tmp/public/js/scripts.js',
+ dest: 'tmp/public/js/scripts.min.js'
+ }
+ },
+ cssmin: {
+ ui: {
+ files: {
+ 'tmp/public/css/styles.css': ['app/public/css/main.css']
+ }
+ }
+ },
+ htmlrefs: {
+ ui: {
+ src: 'app/index.html',
+ dest: "tmp/index.html",
+ }
+ },
+ copy: {
+ ui: {
+ files: [
+ {expand: true, cwd: 'tmp/', src: ['**'], dest: 'ui'},
+ {expand: true, cwd: 'app/', src: ['public/images/**', 'partials/**'], dest: 'ui'},
+ {expand: true, cwd: 'node_modules/font-awesome/', src: ['fonts/**'], dest: 'ui/public'},
+ {expand: true, cwd: 'node_modules/bootstrap/', src: ['fonts/**'], dest: 'ui/public'},
+ ]
+ }
+ }
+ });
+
+ grunt.loadNpmTasks('grunt-contrib-clean');
+ grunt.loadNpmTasks('grunt-contrib-concat');
+ grunt.loadNpmTasks('grunt-contrib-uglify');
+ grunt.loadNpmTasks('grunt-contrib-cssmin');
+ grunt.loadNpmTasks('grunt-htmlrefs');
+ grunt.loadNpmTasks('grunt-regex-replace');
+ grunt.loadNpmTasks('grunt-contrib-copy');
+
+ grunt.registerTask('default', [
+ // Clean Env
+ 'clean:build',
+ // Compress JS
+ 'concat:app',
+ 'regex-replace:strict',
+ 'uglify',
+ 'concat:js',
+ // Compress CSS
+ 'cssmin',
+ 'concat:css',
+ // Pass HTML Resources
+ 'htmlrefs',
+ 'copy',
+ // Clean Env
+ 'clean:tmp',
+ ]);
+};
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/README.md
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/README.md b/eagle-webservice/src/main/webapp/README.md
new file mode 100644
index 0000000..b4168d5
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/README.md
@@ -0,0 +1,4 @@
+Apache Eagle Web APP
+==
+
+Web client for Apache Eagle
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/index.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/index.html b/eagle-webservice/src/main/webapp/app/index.html
new file mode 100644
index 0000000..cc7d344
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/index.html
@@ -0,0 +1,216 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<html ng-app="eagleApp" ng-controller="MainCtrl">
+ <head>
+ <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta charset="UTF-8">
+ <meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'>
+ <link rel="shortcut icon" href="public/images/favicon.png">
+
+ <title>Eagle</title>
+ <link rel="shortcut icon" type="image/png" href="public/images/favicon.png">
+
+ <!-- ref:css public/css/styles.min.css -->
+ <link href="public/css/main.css" rel="stylesheet" type="text/css" media="screen">
+ <link href="../node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" type="text/css" media="screen">
+ <link href="public/assets/bootstrap-components/css/bootstrap-components.min.css" rel="stylesheet" type="text/css" media="screen">
+ <link href="../node_modules/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
+ <link href="../node_modules/admin-lte/dist/css/AdminLTE.min.css" rel="stylesheet" type="text/css" />
+ <link href="../node_modules/admin-lte/dist/css/skins/skin-blue.min.css" rel="stylesheet" type="text/css" />
+ <!-- endref -->
+ </head>
+ <body class="skin-blue sidebar-mini" ng-class="{'no-sidebar' : globalContent.hideSidebar}">
+ <!-- Site wrapper -->
+ <div class="wrapper">
+ <header class="main-header">
+ <a href="#/" class="logo">
+ <span class="logo-mini">DAM</span>
+ <span class="logo-lg">Eagle <small>Data Activity Monitoring</small></span>
+ </a>
+ <!-- Header Navbar: style can be found in header.less -->
+ <nav class="navbar navbar-static-top" role="navigation">
+ <!-- Sidebar toggle button-->
+ <a href="#" ng-hide="globalContent.hideSidebar" class="sidebar-toggle" data-toggle="offcanvas" role="button">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </a>
+ <div class="navbar-custom-menu">
+ <ul class="nav navbar-nav">
+ <!-- Site -->
+ <li class="dropdown" ng-show="!globalContent.hideSite && !globalContent.lockSite">
+ <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
+ <i class="fa fa-server"></i>
+ {{site.current().name}}
+ <i class="fa fa-caret-down"></i>
+ </a>
+ <ul class="dropdown-menu">
+ <li ng-repeat="sites in site.list">
+ <a ng-click="site.current(sites);">
+ <span class="fa fa-database"></span> {{sites.name}}
+ </a>
+ </li>
+ <!--li role="separator" class="divider"></li>
+ <li>
+ <a href="#/dam/siteList"><span class="fa fa-cog"></span>Config Sites</a>
+ </li-->
+ </ul>
+ </li>
+ <li class="dropdown" ng-show="globalContent.lockSite">
+ <a>
+ <i class="fa fa-server"></i>
+ {{site.current().name}}
+ </a>
+ </li>
+
+ <!-- User -->
+ <li class="dropdown user user-menu" ng-hide="globalContent.hideUser">
+ <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
+ <i class="fa fa-user"></i>
+ {{auth.userProfile.username}}
+ </a>
+ <!--ul class="dropdown-menu">
+ <li>
+ <a ng-click="logout();">
+ <span class="fa fa-sign-out"></span> Logout
+ </a>
+ </li>
+ </ul-->
+ <ul class="dropdown-menu">
+ <!-- User image -->
+ <li class="user-header">
+ <span class="img-circle">
+ <span class="fa fa-user" alt="User Image"></span>
+ </span>
+ <p>
+ {{auth.userProfile.username}}
+ <small>
+ <span ng-repeat="role in auth.userProfile.authorities">{{role.authority}} </span>
+ </small>
+ </p>
+ </li>
+ <!-- Menu Footer-->
+ <li class="user-footer">
+ <div class="pull-right">
+ <a ng-click="logout();" class="btn btn-default btn-flat">Sign out</a>
+ </div>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ </nav>
+ </header>
+
+ <!-- =============================================== -->
+ <!-- Left side column. contains the side bar -->
+ <aside class="main-sidebar" ng-hide="globalContent.hideSidebar">
+ <!-- side bar: style can be found in sidebar.less -->
+ <section class="sidebar">
+ <ul class="sidebar-menu">
+ <li ng-repeat="page in globalContent.pageList" ng-class="getNavClass(page)" ng-show="getNavVisible(page)">
+ <a href="{{page.url}}">
+ <i class="fa fa-{{page.icon}}"></i> <span>{{page.title}}</span>
+ </a>
+ </li>
+ </ul>
+ </section>
+ <!-- /.sidebar -->
+ </aside>
+
+ <!-- =============================================== -->
+ <!-- Right side column. Contains the navbar and content of the page -->
+ <div class="content-wrapper">
+ <!-- Content Header (Page header) -->
+ <section class="content-header" ng-hide="globalContent.hideSidebar">
+ <h1>
+ <span class="pageTitle">{{globalContent.pageTitle}}</span>
+ <small class="pageSubTitle">{{globalContent.pageSubTitle}}</small>
+ </h1>
+
+ <ol class="breadcrumb">
+ <li ng-repeat="nav in globalContent.navPath">
+ <a ng-href="{{$last ? '' : globalContent.navMapping[nav]}}">
+ <span class="fa fa-home" ng-show="$first"></span>
+ {{nav}}
+ </a>
+ </li>
+ </ol>
+ </section>
+
+ <!-- Main content -->
+ <section class="content">
+ <div id="content" ng-view></div>
+ </section><!-- /.content -->
+ </div><!-- /.content-wrapper -->
+ </div><!-- ./wrapper -->
+
+ <!-- ref:js public/js/doc.js -->
+ <script src="../node_modules/jquery/dist/jquery.min.js"></script>
+ <script src="../node_modules/jquery-slimscroll/jquery.slimscroll.min.js"></script>
+ <script src="../node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
+ <script src="public/assets/bootstrap-components/js/bootstrap-components.min.js"></script>
+ <script src="../node_modules/moment/min/moment-with-locales.min.js"></script>
+ <script src="../node_modules/moment-timezone/builds/moment-timezone-with-data.min.js"></script>
+ <script src="../node_modules/admin-lte/dist/js/app.min.js"></script>
+ <script src="../node_modules/angular/angular.min.js"></script>
+ <script src="../node_modules/angular-resource/angular-resource.min.js"></script>
+ <script src="../node_modules/angular-route/angular-route.min.js"></script>
+ <script src="../node_modules/angular-cookies/angular-cookies.min.js"></script>
+ <script src="../node_modules/angular-ui-bootstrap/ui-bootstrap-tpls.min.js"></script>
+ <script src="../node_modules/Flot/jquery.flot.min.js"></script>
+ <script src="../node_modules/Flot/jquery.flot.stack.min.js"></script>
+ <script src="../node_modules/Flot/jquery.flot.pie.min.js"></script>
+ <script src="../node_modules/Flot/jquery.flot.time.min.js"></script>
+ <script src="../node_modules/Flot/jquery.flot.crosshair.min.js"></script>
+ <script src="public/assets/flot/jquery.flot.tooltip.js"></script>
+ <script src="public/assets/flot/jquery.flot.legend.js"></script>
+ <script src="../node_modules/d3/d3.min.js"></script>
+
+
+ <script src="public/js/app.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/app.ui.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/app.time.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/app.config.js" type="text/javascript" charset="utf-8"></script>
+
+ <script src="public/js/common.js" type="text/javascript" charset="utf-8"></script>
+
+ <script src="public/js/components/main.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/components/sortTable.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/components/tabs.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/components/file.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/components/charts.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/components/charts/bar.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/components/charts/line3d.js" type="text/javascript" charset="utf-8"></script>
+
+
+ <script src="public/js/ctrl/damController.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/ctrl/policyController.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/ctrl/siteController.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/ctrl/streamController.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/ctrl/alertController.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/ctrl/sensitivityController.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/ctrl/userProfileController.js" type="text/javascript" charset="utf-8"></script>
+ <script src="public/js/ctrl/authController.js" type="text/javascript" charset="utf-8"></script>
+ <!-- endref -->
+ </body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/partials/dam/alertDetail.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/alertDetail.html b/eagle-webservice/src/main/webapp/app/partials/dam/alertDetail.html
new file mode 100644
index 0000000..9b0ec01
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/partials/dam/alertDetail.html
@@ -0,0 +1,61 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<div class="box box-info">
+ <div class="box-header with-border">
+ <h3 class="box-title" id="policyId">
+ {{alert.tags.policyId}}
+ <small>{{common.format.date(alert.timestamp)}}</small>
+ </h3>
+ </div><!-- /.box-header -->
+
+ <div class="box-body">
+ <a class="btn btn-primary pull-right" href="#/dam/policyDetail/?policy={{alert.tags.policyId}}&site={{alert.tags.site}}&executor={{alert.tags.alertExecutorId}}">View Policy</a>
+
+ <div class="inline-group">
+ <dl><dt>Site</dt><dd>{{alert.tags.site}}</dd></dl>
+ <dl><dt>Data Source</dt><dd>{{alert.tags.dataSource}}</dd></dl>
+ </div>
+ <div class="inline-group">
+ <dl><dt>Alert Time</dt><dd>{{common.format.date(alert.timestamp)}}</dd></dl>
+ <dl><dt>Message Time</dt><dd>{{common.format.date(alert.alertContext.properties.timestamp)}}</dd></dl>
+ </div>
+ <!--div class="inline-group">
+ <dl><dt>Severity</dt><dd>{{alert.alertContext.properties.severity}}</dd></dl>
+ </div-->
+ <div class="inline-group">
+ <dl><dt>Stream Name</dt><dd>{{alert.tags.sourceStreams}}</dd></dl>
+ </div>
+ <div class="inline-group">
+ <dl><dt>Alert Source</dt><dd>{{alert.tags.alertSource}}</dd></dl>
+ </div>
+ <div class="inline-group">
+ <dl><dt>User</dt><dd>{{alert.alertContext.properties.user}}</dd></dl>
+ <dl><dt>Host</dt><dd>{{alert.alertContext.properties.host}}</dd></dl>
+ </div>
+ <div class="inline-group">
+ <dl><dt>Event</dt><dd>{{alert.alertContext.properties.alertEvent}}</dd></dl>
+ </div>
+ <div class="inline-group">
+ <dl><dt>Message</dt><dd>{{alert.alertContext.properties.alertMessage}}</dd></dl>
+ </div>
+ </div><!-- /.box-body -->
+
+ <div class="overlay" ng-hide="alertList._promise.$$state.status === 1;">
+ <i class="fa fa-refresh fa-spin"></i>
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/partials/dam/alertList.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/alertList.html b/eagle-webservice/src/main/webapp/app/partials/dam/alertList.html
new file mode 100644
index 0000000..d5492ca
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/partials/dam/alertList.html
@@ -0,0 +1,83 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<div class="box box-primary">
+ <div class="box-header with-border">
+ <i class="fa fa-list-alt"> </i>
+ <h3 class="box-title">
+ {{dataSource || "All Alerts"}}
+ <div class="btn-group">
+ <button class="btn btn-box-tool dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+ <i class="fa fa-caret-down"></i>
+ </button>
+ <ul id="programList" class="dropdown-menu" role="menu">
+ <li ng-repeat="dataSrc in site.current().dataSrcList">
+ <a href="#/dam/alertList/{{dataSrc.tags.dataSource}}">{{dataSrc.tags.dataSource}}</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#/dam/alertList">All Policy List</a>
+ </li>
+ </ul>
+ </div>
+ </h3>
+ </div>
+ <div class="box-body">
+ <p ng-show="!alertList.ready">
+ <span class="fa fa-refresh fa-spin"> </span>
+ Loading...
+ </p>
+
+ <div sorttable source="alertList" sort="-timestamp">
+ <table class="table table-bordered" ng-non-bindable>
+ <thead>
+ <tr>
+ <th width="170" sortpath="timestamp">Alert Time</th>
+ <th width="170" sortpath="alertContext.properties.timestamp">Message Time</th>
+ <th width="105" sortpath="tags.dataSource">Data Source</th>
+ <!--th width="70" sortpath="severity">Type</th-->
+ <th width="150" sortpath="tags.policyId">Policy Name</th>
+ <th width="60" sortpath="alertContext.properties.user">User</th>
+ <th width="150" sortpath="alertContext.properties.host">Host</th>
+ <th sortpath="alertContext.properties.emailMessage">Description</th>
+ <th width="50"> </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr ng-class="{info : item.__new}">
+ <td>{{common.format.date(item.timestamp)}}</td>
+ <td>{{common.format.date(item.alertContext.properties.timestamp)}}</td>
+ <td>{{item.tags.dataSource}}</td>
+ <!--td>{{item.severity}}</td-->
+ <td class="text-nowrap">
+ <a class="fa fa-share-square-o" ng-show="item.tags.policyId"
+ href="#/dam/policyDetail/?policy={{item.tags.policyId}}&site={{item.tags.site}}&executor={{item.tags.alertExecutorId}}"> </a>
+ {{item.tags.policyId}}
+ </td>
+ <td>{{item.alertContext.properties.user}}</td>
+ <td>{{item.alertContext.properties.host}}</td>
+ <td>{{item.alertContext.properties.alertMessage}}</td>
+ <td><a href="#/dam/alertDetail/{{item.encodedRowkey}}">Detail</a></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ </div>
+ <!--div class="box-footer clearfix">
+ </div-->
+</div>
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/partials/dam/login.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/login.html b/eagle-webservice/src/main/webapp/app/partials/dam/login.html
new file mode 100644
index 0000000..0e2287c
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/partials/dam/login.html
@@ -0,0 +1,49 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<div class="login-box">
+ <div class="login-logo">
+ <a href="#/"> Data Activity Monitoring </a>
+ </div>
+ <!-- /.login-logo -->
+ <div class="login-box-body">
+ <p class="login-box-msg">Sign in to start your session</p>
+ <div class="form-group has-feedback">
+ <input type="text" class="form-control" placeholder="User Name" ng-model="username" ng-keypress="login($event)" autocomplete="off" id="username">
+ <span class="glyphicon glyphicon-user form-control-feedback"></span>
+ </div>
+ <div class="form-group has-feedback">
+ <input type="password" class="form-control" placeholder="Password" ng-model="password" ng-keypress="login($event)">
+ <span class="glyphicon glyphicon-lock form-control-feedback"></span>
+ </div>
+ <div class="row">
+ <div class="col-xs-8">
+ <!--div class="checkbox">
+ <label> <input type="checkbox" /> Remember Me
+ </label>
+ </div-->
+ </div>
+ <!-- /.col -->
+ <div class="col-xs-4">
+ <button class="btn btn-primary btn-block btn-flat" ng-click="login($event, true)" ng-disabled="lock">Sign In</button>
+ </div>
+ <!-- /.col -->
+ </div>
+ </div>
+ <!-- /.login-box-body -->
+</div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/partials/dam/policyDetail.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/policyDetail.html b/eagle-webservice/src/main/webapp/app/partials/dam/policyDetail.html
new file mode 100644
index 0000000..5587ae0
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/partials/dam/policyDetail.html
@@ -0,0 +1,171 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<div class="box box-info">
+ <div class="box-header with-border">
+ <h3 class="box-title">
+ {{policy.tags.policyId}}
+ <small>{{policy.tags.site}}</small>
+ </h3>
+ </div><!-- /.box-header -->
+
+ <div class="box-body">
+ <div class="row">
+ <div class="col-xs-8">
+ <div class="inline-group">
+ <dl><dt>Data Source</dt><dd>{{policy.tags.dataSource}}</dd></dl>
+ <dl><dt>Status</dt><dd>
+ <span ng-show="policy.enabled" class="text-muted"><i class="fa fa-square text-green"></i> Enabled</span>
+ <span ng-show="!policy.enabled" class="text-muted"><i class="fa fa-square text-muted"></i> Disabled</span>
+ </dd></dl>
+ </div>
+ <div class="inline-group">
+ <dl><dt>Description</dt><dd>{{policy.desc}}</dd></dl>
+ </div>
+ <div class="inline-group">
+ <dl><dt>Alert</dt><dd>
+ <a href="mailto:{{mail}}" ng-repeat="mail in policy.__mailList track by $index" style="margin-right: 10px;">{{mail}}</a>
+ </dd></dl>
+ </div>
+ </div>
+ <div class="col-xs-4 text-right" ng-show="auth.isRole('ROLE_ADMIN')">
+ <a class="btn btn-primary" href="#/dam/policyEdit/{{policy.encodedRowkey}}">Edit</a>
+ <button class="btn btn-warning" ng-show="!policy.enabled" ng-click="updatePolicyStatus(policy, true)">Enable</button>
+ <button class="btn btn-warning" ng-show="policy.enabled" ng-click="updatePolicyStatus(policy, false)">Disable</button>
+ <button class="btn btn-danger" ng-click="deletePolicy(policy)">Delete</button>
+ </div>
+ </div>
+ </div><!-- /.box-body -->
+
+ <div class="overlay" ng-hide="policyList._promise.$$state.status === 1;">
+ <i class="fa fa-refresh fa-spin"></i>
+ </div>
+
+ <div class="box-footer clearfix">
+ <a data-toggle="collapse" href="[data-id='query']">
+ View Query
+ </a>
+ <div data-id="query" class="collapse in">
+ <pre>{{policy.__expression}}</pre>
+ </div>
+ </div>
+</div>
+
+<div class="nav-tabs-custom">
+ <ul class="nav nav-tabs">
+ <li class="active">
+ <a href="[data-id='visualization']" data-toggle="tab">Visualization</a>
+ </li>
+ <li>
+ <a href="[data-id='statistics']" data-toggle="tab">Statistics</a>
+ </li>
+ <li>
+ <a href="[data-id='alerts']" data-toggle="tab">Alerts</a>
+ </li>
+ </ul>
+ <div class="tab-content">
+ <div class="tab-pane active" data-id="visualization">
+ <div class="row">
+ <div class="col-xs-6">
+ <chart title="Policy Eval Count" data="policyEvalSeries"></chart>
+ </div>
+ <div class="col-xs-6">
+ <chart title="Policy Eval Fail Count" data="policyEvalFailSeries"></chart>
+ </div>
+ <div class="col-xs-6">
+ <chart title="Alert Count" data="alertSeries"></chart>
+ </div>
+ <div class="col-xs-6">
+ <chart title="Alert Fail Count" data="alertFailSeries"></chart>
+ </div>
+ </div>
+ </div><!-- /.tab-pane -->
+
+ <div class="tab-pane" data-id="statistics">
+ <div class="row">
+ <div class="col-xs-3">
+ <div class="info-box bg-aqua">
+ <span class="info-box-icon"><i class="fa fa-bookmark-o"></i></span>
+ <div class="info-box-content">
+ <span class="info-box-text">Policy Eval Count</span>
+ <span class="info-box-number">{{common.array.sum(policyEvalSeries, "1")}} <small>(Monthly)</small></span>
+ <span class="info-box-number">{{policyEvalSeries[policyEvalSeries.length - 1][1]}} <small>(Daily)</small></span>
+ </div><!-- /.info-box-content -->
+ </div>
+ </div>
+ <div class="col-xs-3">
+ <div class="info-box bg-red">
+ <span class="info-box-icon"><i class="fa fa-bookmark-o"></i></span>
+ <div class="info-box-content">
+ <span class="info-box-text">Policy Eval Fail Count</span>
+ <span class="info-box-number">{{common.array.sum(policyEvalFailSeries, "1")}} <small>(Monthly)</small></span>
+ <span class="info-box-number">{{policyEvalFailSeries[policyEvalFailSeries.length - 1][1]}} <small>(Daily)</small></span>
+ </div><!-- /.info-box-content -->
+ </div>
+ </div>
+ <div class="col-xs-3">
+ <div class="info-box bg-aqua">
+ <span class="info-box-icon"><i class="fa fa-bookmark-o"></i></span>
+ <div class="info-box-content">
+ <span class="info-box-text">Alert Count</span>
+ <span class="info-box-number">{{common.array.sum(alertSeries, "1")}} <small>(Monthly)</small></span>
+ <span class="info-box-number">{{alertSeries[alertSeries.length - 1][1]}} <small>(Daily)</small></span>
+ </div><!-- /.info-box-content -->
+ </div>
+ </div>
+ <div class="col-xs-3">
+ <div class="info-box bg-red">
+ <span class="info-box-icon"><i class="fa fa-bookmark-o"></i></span>
+ <div class="info-box-content">
+ <span class="info-box-text">Alert Fail Count</span>
+ <span class="info-box-number">{{common.array.sum(alertFailSeries, "1")}} <small>(Monthly)</small></span>
+ <span class="info-box-number">{{alertFailSeries[alertFailSeries.length - 1][1]}} <small>(Daily)</small></span>
+ </div><!-- /.info-box-content -->
+ </div>
+ </div>
+ </div>
+ </div><!-- /.tab-pane -->
+
+ <div class="tab-pane" data-id="alerts">
+ <div sorttable source="alertList" sort="-timestamp">
+ <table class="table table-bordered" ng-non-bindable>
+ <thead>
+ <tr>
+ <th width="170" sortpath="timestamp">Alert Time</th>
+ <th width="170" sortpath="alertContext.properties.timestamp">Message Time</th>
+ <th width="60" sortpath="alertContext.properties.user">User</th>
+ <th width="150" sortpath="alertContext.properties.host">Host</th>
+ <th sortpath="alertContext.properties.emailMessage">Description</th>
+ <th width="50"> </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr ng-class="{info : item.__new}">
+ <td>{{common.format.date(item.timestamp)}}</td>
+ <td>{{common.format.date(item.alertContext.properties.timestamp)}}</td>
+ <td>{{item.alertContext.properties.user}}</td>
+ <td>{{item.alertContext.properties.host}}</td>
+ <td>{{item.alertContext.properties.alertMessage}}</td>
+ <td><a href="#/dam/alertDetail/{{item.encodedRowkey}}">Detail</a></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div><!-- /.tab-pane -->
+
+ </div><!-- /.tab-content -->
+</div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/partials/dam/policyEdit.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/policyEdit.html b/eagle-webservice/src/main/webapp/app/partials/dam/policyEdit.html
new file mode 100644
index 0000000..11f029e
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/partials/dam/policyEdit.html
@@ -0,0 +1,352 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<div class="progress active" ng-show="!streamReady">
+ <div class="progress-bar progress-bar-primary progress-bar-striped" style="width: 100%">
+ </div>
+</div>
+
+<!-- Step navigation -->
+<div ng-show="streamReady">
+ <div class="row step-cntr">
+ <div class="col-md-3" ng-repeat="step in steps">
+ <div class="step" ng-class="stepSelect($index + 1)">
+ <h1>{{$index + 1}}</h1>
+ <h2>Step {{$index + 1}}</h2>
+ <p title="{{step.title}}">{{step.title}}</p>
+ </div>
+ </div>
+ </div>
+
+ <!-- Step container -->
+ <div class="box box-info">
+ <div class="box-header with-border">
+ <h3 class="box-title">Step {{step}} - {{steps[step - 1].title}}</h3>
+ </div><!-- /.box-header -->
+
+ <div class="box-body">
+ <!-- ---------------------- Step Body Start ---------------------- -->
+
+ <!-- Step 1: Data Source -->
+ <div ng-show="step === 1">
+ <div class="form-group">
+ <label>Select Data Source</label>
+ <select class="form-control" ng-model="policy.tags.dataSource">
+ <option ng-repeat="dataSource in site.current().dataSrcList" ng-hide="dataSource.hide" value="{{dataSource.tags.dataSource}}">{{dataSource.desc || dataSource.tags.dataSource}}</option>
+ </select>
+ </div>
+ </div>
+
+ <!-- Step 2: Stream -->
+ <div ng-show="step === 2">
+ <div class="pull-right" ng-show="policy.__.advanced === undefined">
+ <span class="text-muted">or</span>
+ <a ng-click="policy.__.advanced = true;">Advanced</a>
+ </div>
+
+ <div class="form-group">
+ <label>Select Stream</label>
+ <select class="form-control" ng-model="policy.__.streamName" ng-show="!policy.__.advanced">
+ <option ng-repeat="stream in dataSources[policy.tags.dataSource]">{{stream.tags.streamName}}</option>
+ </select>
+ <select class="form-control" ng-show="policy.__.advanced" disabled="disabled">
+ <option>[Advanced Mode]</option>
+ </select>
+ </div>
+
+ <div class="checkbox" ng-show="policy.__.advanced !== undefined">
+ <label>
+ <input type="checkbox" ng-model="policy.__.advanced">
+ Advanced Mode
+ </label>
+ </div>
+ </div>
+
+ <!-- Step 3: Define Alert Policy -->
+ <div ng-show="step === 3 && !policy.__.advanced">
+ <!-- Criteria -->
+ <div>
+ <label>Match Criteria</label>
+ <a ng-click="collapse('.panel-group')">expand / collapse all</a>
+
+ <div class="panel-group panel-group-sm" role="tablist">
+ <div class="panel panel-default"
+ ng-repeat="meta in _stream.metas"
+ ng-init="op = '=='; val = null; type = (meta.attrType || '').toLowerCase();">
+ <div class="panel-heading" role="tab">
+ <h4 class="panel-title">
+ <span class="bg-navy disabled color-palette pull-right">
+ {{parseConditionDesc(meta.tags.attrName)}}
+ </span>
+
+ <a role="button" data-toggle="collapse" href="[data-name='{{meta.tags.attrName}}']" class="collapsed">
+ <span class="fa fa-square" ng-class="hasCondition(meta.tags.attrName, type) ? 'text-green' : 'text-muted'"> </span>
+ {{meta.attrDisplayName || meta.tags.attrName}}
+ <span class="fa fa-question-circle" ng-show="meta.attrDescription"
+ uib-tooltip="{{meta.attrDescription}}" tooltip-placement="right" tooltip-animation="false"> </span>
+ </a>
+ </h4>
+ </div>
+ <div data-name="{{meta.tags.attrName}}" data-type="{{meta.attrType}}" role="tabpanel" class="collapse">
+ <div class="panel-body">
+ <ul ng-show="type !== 'bool'">
+ <li ng-repeat="cond in policy.__.conditions[meta.tags.attrName]">
+ [<a ng-click="policy.__.conditions[meta.tags.attrName].splice($index, 1)">X</a>]
+ {{cond.toString()}}
+ </li>
+ </ul>
+
+ <!-- String -->
+ <div ng-if="type == 'string'">
+ <div class="input-group" style="max-width: 450px;">
+ <div class="input-group-btn">
+ <select class="form-control" ng-model="op">
+ <option ng-repeat="mark in ['==','!=','contains','regex']">{{mark}}</option>
+ </select>
+ </div>
+
+ <!-- With resolver -->
+ <input type="text" class="form-control" autocomplete="off" ng-model="val" ng-show="meta.attrValueResolver"
+ ng-keypress="conditionPress($event, meta.tags.attrName, op, val, type)"
+ uib-typeahead="item for item in resolverTypeahead($viewValue, meta.attrValueResolver)">
+ <!-- Without resolver -->
+ <input type="text" class="form-control" autocomplete="off" ng-model="val" ng-show="!meta.attrValueResolver"
+ ng-keypress="conditionPress($event, meta.tags.attrName, op, val, type)">
+
+ <span class="input-group-btn">
+ <button class="btn btn-info btn-flat" type="button" ng-click="addCondition(meta.tags.attrName, op, val, type);val=null;">Add</button>
+ </span>
+ </div>
+ </div>
+
+ <!-- Number -->
+ <div ng-if="type == 'long' || type == 'integer' || type == 'number' || type == 'double' || type == 'float'">
+ <div class="input-group" style="max-width: 450px;">
+ <div class="input-group-btn">
+ <select class="form-control" ng-model="op">
+ <option ng-repeat="mark in ['==','!=','>','>=','<','<=']">{{mark}}</option>
+ </select>
+ </div>
+
+ <input type="number" class="form-control" autocomplete="off" placeholder="Number Only..." ng-model="val" ng-keypress="conditionPress($event, meta.tags.attrName, op, val, type)">
+ <span class="input-group-btn">
+ <button class="btn btn-info btn-flat" type="button" ng-click="addCondition(meta.tags.attrName, op, val, type) ? val=null : void(0);">Add</button>
+ </span>
+ </div>
+ </div>
+
+ <!-- Boolean -->
+ <div ng-if="type == 'bool'" ng-init="policy.__.conditions[meta.tags.attrName] = policy.__.conditions[meta.tags.attrName] || [_CondUnit(meta.tags.attrName, '==', 'none', 'bool')]">
+ <select class="form-control" ng-model="policy.__.conditions[meta.tags.attrName][0].val" style="max-width: 100px;">
+ <option ng-repeat="bool in ['none','true','false']">{{bool}}</option>
+ </select>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <!-- Window -->
+ <div class="checkbox">
+ <label>
+ <input type="checkbox" ng-checked="policy.__.windowConfig" ng-click="policy.__.windowConfig = !policy.__.windowConfig"> Slide Window
+ </label>
+ </div>
+ <div ng-show="policy.__.windowConfig">
+ <div class="row">
+ <div class="col-md-4">
+ <div class="form-group">
+ <label for="window">Window</label>
+ <select class="form-control" ng-model="policy.__.window"
+ uib-tooltip="{{getWindow().description}}" tooltip-animation="false">
+ <option ng-repeat="item in config.window" value="{{item.type}}">{{item.title}}</option>
+ </select>
+ </div>
+ </div>
+
+ <!-- fields -->
+ <div class="col-md-4" ng-repeat="field in getWindow().fields" ng-init="field.val = field.val || (field.defaultValue || '');" ng-hide="field.hide">
+ <div class="form-group" ng-class="{'has-warning' : !field.val || !field.val.match(field.regex)}">
+ <label for="window">Window - {{field.title}}</label>
+ <input type="text" class="form-control" autocomplete="off" placeholder="{{field.description}}" ng-model="field.val" title="{{field.description}}">
+ </div>
+ </div>
+ </div>
+
+ <!-- Aggregation -->
+ <div class="row">
+ <div class="col-md-4">
+ <div class="form-group" ng-class="{'text-yellow' : (policy.__.groupAgg && !policy.__.groupAggPath)}">
+ <label for="window">Aggregation</label>
+ <div class="input-group">
+ <div class="input-group-btn">
+ <select class="form-control" ng-model="policy.__.groupAgg" ng-change="updateGroupAgg()">
+ <option ng-repeat="op in ['max','min','avg','count']">{{op}}</option>
+ </select>
+ </div>
+ <select class="form-control" ng-model="policy.__.groupAggPath" ng-class="{'has-warning' : !policy.__.groupAggPath}" id="groupAggPath"
+ ng-show="policy.__.groupAgg" ng-disabled="policy.__.groupAgg === 'count'">
+ <option ng-repeat="meta in groupAggPathList()">{{meta.tags.attrName}}</option>
+ </select>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-md-4">
+ <div class="form-group" ng-class="{'text-yellow' : (!policy.__.groupCondOp || !policy.__.groupCondVal)}">
+ <label for="window">Condition</label>
+ <div class="input-group">
+ <div class="input-group-btn">
+ <select class="form-control" ng-model="policy.__.groupCondOp" ng-class="{'has-warning' : !policy.__.groupCondOp}">
+ <option ng-repeat="op in ['>','<','>=','<=','==']">{{op}}</option>
+ </select>
+ </div>
+ <input type="text" class="form-control" ng-model="policy.__.groupCondVal" ng-class="{'has-warning' : !policy.__.groupCondVal}" />
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <!-- Group -->
+ <div class="row">
+ <div class="col-md-4">
+ <div class="form-group">
+ <label for="window">Group By</label>
+ <select class="form-control" ng-model="policy.__.group">
+ <option value="">None</option>
+ <option ng-repeat="meta in _stream.metas">{{meta.tags.attrName}}</option>
+ </select>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <!-- Step 3: Define Alert Policy -->
+ <div ng-show="step === 3 && policy.__.advanced">
+ <div class="form-group">
+ <label>Query Expression</label>
+ <textarea class="form-control" ng-model="policy.__._expression"
+ placeholder="Query expression. e.g. from hdfsAuditLogEventStream[(cmd=='open') and (host=='localhost' or host=='127.0.0.1')]#window.time(2 sec) select * insert into outputStream;" rows="5"></textarea>
+ </div>
+ </div>
+
+ <!-- Step 4: Email Notification -->
+ <div ng-show="step === 4">
+ <div class="row">
+ <div class="col-xs-4">
+ <div class="form-group" ng-class="{'has-warning' : !policy.tags.policyId}">
+ <label>Policy Name</label>
+ <input type="text" class="form-control" placeholder="" ng-model="policy.tags.policyId" ng-disabled="!create">
+ </div>
+ </div>
+ <div class="col-xs-3">
+ <div class="form-group">
+ <label>
+ Alert De-Dup Interval(min)
+ <span class="fa fa-question-circle" uib-tooltip="Same type alert will be De-dup in configured interval"> </span>
+ </label>
+ <input type="number" class="form-control" ng-model="policy.__.dedupe.alertDedupIntervalMin" placeholder="[Minute] Number only. Suggestion: 720">
+ </div>
+ </div>
+ <div class="col-xs-3">
+ <div class="form-group">
+ <label>
+ Email De-Dup Interval(min)
+ <span class="fa fa-question-circle" uib-tooltip="The minimun time interval of email"> </span>
+ </label>
+ <input type="number" class="form-control" ng-model="policy.__.dedupe.emailDedupIntervalMin" placeholder="[Minute] Number only. Suggestion: 1440">
+ </div>
+ </div>
+ <div class="col-xs-2">
+ <div class="form-group">
+ <label>
+ Enabled
+ </label>
+ <p>
+ <input type="checkbox" checked="checked" ng-model="policy.enabled">
+ </p>
+ </div>
+ </div>
+ </div>
+
+ <div>
+ <a data-toggle="collapse" href="[data-id='advancedDeDup']">Advanced De-Dup</a>
+ <div data-id='advancedDeDup' class="collapse">
+ <label>
+ De-Dup Key
+ <span class="fa fa-question-circle" uib-tooltip="Type of grouping alerts. If you don't know how to config, leave it default."> </span>
+ </label>
+ <div class="form-group">
+ <div class="checkbox" ng-repeat="meta in _stream.metas" ng-init="create ? policy.__._dedupTags[meta.tags.attrName] = !!meta.usedAsTag : void(0);">
+ <label>
+ <input type="checkbox" ng-model="policy.__._dedupTags[meta.tags.attrName]">
+ {{meta.tags.attrName}}
+ </label>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <hr/>
+
+ <div class="form-group">
+ <label>Sender</label>
+ <input type="text" class="form-control" value="noreply-hadoop-eagle@company1.com" placeholder="Enter Sender. e.g. sender@eaxmple.com" ng-model="policy.__.notification[0].sender">
+ </div>
+ <div class="form-group">
+ <label>Recipients</label>
+ <input type="text" class="form-control" placeholder="Enter Recipients. Split with ','. e.g. usera@example.com, userb@example.com" ng-model="policy.__.notification[0].recipients">
+ </div>
+ <div class="form-group">
+ <label>Subject</label>
+ <input type="text" class="form-control" placeholder="Enter Subject" ng-model="policy.__.notification[0].subject">
+ </div>
+ <div class="form-group">
+ <label>Description</label>
+ <textarea class="form-control" placeholder="Policy description" ng-model="policy.desc"></textarea>
+ </div>
+
+ <a data-toggle="collapse" href="[data-id='policyQuery']">
+ View Query
+ </a>
+ <div class="collapse in" data-id="policyQuery">
+ <pre>{{toQuery()}}</pre>
+ </div>
+ </div>
+
+ <!-- ----------------------- Step Body End ----------------------- -->
+ </div><!-- /.box-body -->
+
+ <div class="overlay" ng-hide="stepReady(step)">
+ <span class="fa fa-refresh fa-spin"> </span>
+ </div>
+
+ <div class="box-footer text-right">
+ <button class="btn btn-info" ng-show="step > 1" ng-click="changeStep(step, step - 1, false)" ng-disabled="lock">
+ Prev <span class="fa fa-arrow-circle-o-left"> </span>
+ </button>
+ <button class="btn btn-info" ng-show="step < steps.length" ng-click="changeStep(step, step + 1)" ng-disabled="checkNextable(step) || lock">
+ Next <span class="fa fa-arrow-circle-o-right"> </span>
+ </button>
+ <button class="btn btn-info" ng-show="step === steps.length" ng-click="finishPolicy()" ng-disabled="checkNextable(step) || lock">
+ Done <span class="fa fa-check-circle-o"> </span>
+ </button>
+ </div>
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/partials/dam/policyList.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/policyList.html b/eagle-webservice/src/main/webapp/app/partials/dam/policyList.html
new file mode 100644
index 0000000..376a513
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/partials/dam/policyList.html
@@ -0,0 +1,98 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<div class="box box-primary">
+ <div class="box-header with-border">
+ <i class="fa fa-list-alt"> </i>
+ <h3 class="box-title">
+ {{dataSource.desc || dataSource.tags.dataSource || "All Policies"}}
+ <div class="btn-group">
+ <button class="btn btn-box-tool dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+ <i class="fa fa-caret-down"></i>
+ </button>
+ <ul id="programList" class="dropdown-menu" role="menu">
+ <li ng-repeat="dataSrc in site.current().dataSrcList" ng-hide="dataSrc.hide">
+ <a href="#/dam/policyList/{{dataSrc.tags.dataSource}}">{{dataSrc.desc || dataSrc.tags.dataSource}}</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#/dam/policyList">All Policy List</a>
+ </li>
+ </ul>
+ </div>
+ </h3>
+ </div>
+ <div class="box-body">
+ <div class="row">
+ <div class="col-xs-3">
+ <div class="search-box">
+ <input type="search" class="form-control input-sm" placeholder="Search" ng-model="search" />
+ <span class="fa fa-search"> </span>
+ </div>
+ </div>
+ <div class="col-xs-6">
+ <div class="inline-group form-inline text-muted">
+ <dl><dt><i class="fa fa-square text-green"> </i></dt><dd>Enabled</dd></dl>
+ <dl><dt><i class="fa fa-square text-muted"> </i></dt><dd>Disabled</dd></dl>
+ </div>
+ </div>
+ <div class="col-xs-3 text-right">
+ <a class="btn btn-primary" href="#/dam/policyCreate/{{!dataSource ? '' : '?dataSrc=' + dataSource.tags.dataSource}}" ng-show="auth.isRole('ROLE_ADMIN')">
+ New Policy
+ <i class="fa fa-plus-circle"> </i>
+ </a>
+ </div>
+ </div>
+
+ <p ng-show="policyList._promise.$$state.status !== 1">
+ <span class="fa fa-refresh fa-spin"> </span>
+ Loading...
+ </p>
+
+ <div sorttable source="policyList" ng-show="policyList._promise.$$state.status === 1" search="false" searchfunc="searchFunc">
+ <table class="table table-bordered" ng-non-bindable>
+ <thead>
+ <tr>
+ <th width="30" sortpath="enabled"> </th>
+ <th width="200" sortpath="tags.policyId">Policy Name</th>
+ <th sortpath="desc">Description</th>
+ <th width="150" sortpath="owner">Owner</th>
+ <th width="170" sortpath="lastModifiedDate">Last Modified</th>
+ <th width="95" ng-show="_parent.auth.isRole('ROLE_ADMIN')">Action</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><span class='fa fa-square' ng-class="item.enabled ? 'text-green' : 'text-muted'"> </span></td>
+ <td><a href="#/dam/policyDetail/{{item.encodedRowkey}}">{{item.tags.policyId}}</a></td>
+ <td>{{item.desc}}</td>
+ <td>{{item.owner}}</td>
+ <td>{{common.format.date(item.lastModifiedDate) || "-"}}</td>
+ <td ng-show="_parent.auth.isRole('ROLE_ADMIN')">
+ <a class="fa fa-pencil btn btn-default btn-xs" uib-tooltip="Edit" tooltip-animation="false" href="#/dam/policyEdit/{{item.encodedRowkey}}"> </a>
+ <button class="fa fa-play sm btn btn-default btn-xs" uib-tooltip="Enable" tooltip-animation="false" ng-show="!item.enabled" ng-click="_parent.updatePolicyStatus(item, true)"> </button>
+ <button class="fa fa-pause sm btn btn-default btn-xs" uib-tooltip="Disable" tooltip-animation="false" ng-show="item.enabled" ng-click="_parent.updatePolicyStatus(item, false)"> </button>
+ <button class="rm fa fa-trash-o btn btn-danger btn-xs" uib-tooltip="Delete" tooltip-animation="false" ng-click="_parent.deletePolicy(item)"> </button>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <!--div class="box-footer clearfix">
+ </div-->
+</div>
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/2c3005c9/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity.html
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity.html b/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity.html
new file mode 100644
index 0000000..af73ee4
--- /dev/null
+++ b/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity.html
@@ -0,0 +1,22 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<div tabs icon="folder-open" data-title="Sensitivity Broswer" selected="type">
+ <div pane ng-repeat="entity in sensitivityList" data-title="{{entity.name}}">
+ <ng-include src="'partials/dam/sensitivity/' + entity.name + '.html?_=' + ajaxId"></ng-include>
+ </div>
+</div>
\ No newline at end of file