http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/d37643b0/eagle-webservice/src/main/resources/eagleSecurity.xml ---------------------------------------------------------------------- diff --git a/eagle-webservice/src/main/resources/eagleSecurity.xml b/eagle-webservice/src/main/resources/eagleSecurity.xml index 2b106b3..b8683dc 100644 --- a/eagle-webservice/src/main/resources/eagleSecurity.xml +++ b/eagle-webservice/src/main/resources/eagleSecurity.xml @@ -28,6 +28,8 @@ <scr:http-basic entry-point-ref="unauthorisedEntryPoint"/> <scr:intercept-url pattern="/rest/entities" method="POST" access="hasRole('ROLE_ADMIN')" /> <scr:intercept-url pattern="/rest/entities/delete" method="POST" access="hasRole('ROLE_ADMIN')" /> + <scr:intercept-url pattern="/rest/module/*" method="DELETE" access="hasRole('ROLE_ADMIN')" /> + <scr:intercept-url pattern="/rest/module/*" method="POST" access="hasRole('ROLE_ADMIN')" /> <scr:intercept-url pattern="/rest/list" method="POST" access="hasRole('ROLE_ADMIN')" /> <scr:intercept-url pattern="/rest/status" method="GET" access="permitAll" /> <scr:intercept-url pattern="/rest/*" access="isAuthenticated()" /> @@ -82,7 +84,7 @@ <scr:user-service> <!-- user admin has role ADMIN, user eagle has role USER, both have password "secret" --> <scr:user name="eagle" password="$2a$10$TwALMRHpSetDaeTurg9rj.DnIdOde4fkQGBSPG3fVqtH.G5ZH8sQK" authorities="ROLE_USER" /> - <scr:user name="admin" password="$2a$10$TwALMRHpSetDaeTurg9rj.DnIdOde4fkQGBSPG3fVqtH.G5ZH8sQK" authorities="ROLE_ADMIN, ROLE_USER" /> + <scr:user name="admin" password="$2a$10$TwALMRHpSetDaeTurg9rj.DnIdOde4fkQGBSPG3fVqtH.G5ZH8sQK" authorities="ROLE_ADMIN" /> </scr:user-service> <scr:password-encoder ref="passwordEncoder" /> </scr:authentication-provider>
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/d37643b0/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 index a32b1da..d547ad6 100644 --- a/eagle-webservice/src/main/webapp/Gruntfile.js +++ b/eagle-webservice/src/main/webapp/Gruntfile.js @@ -45,6 +45,9 @@ module.exports = function (grunt) { concat: { app: { src: [ + 'app/public/js/srv/main.js', + 'app/public/js/srv/**.js', + 'app/public/js/app.js', 'app/public/js/app.*.js', @@ -54,7 +57,7 @@ module.exports = function (grunt) { 'app/public/js/components/**.js', 'app/public/js/components/**/**.js', - 'app/public/js/ctrl/damController.js', + 'app/public/js/ctrl/main.js', 'app/public/js/ctrl/*.js', ], dest: 'tmp/public/js/scripts.js' @@ -89,14 +92,24 @@ module.exports = function (grunt) { options: { mangle: false }, - src: 'tmp/public/js/scripts.js', - dest: 'tmp/public/js/scripts.min.js' - } + files: [ + { + src: 'tmp/public/js/scripts.js', + dest: 'tmp/public/js/scripts.min.js' + }, + { + expand: true, + src: '**/*.js', + dest: 'tmp/feature', + cwd: 'app/public/feature' + } + ] + }, }, cssmin: { ui: { files: { - 'tmp/public/css/styles.css': ['app/public/css/main.css'] + 'tmp/public/css/styles.css': ['app/public/css/main.css', 'app/public/css/animation.css'] } } }, @@ -107,6 +120,11 @@ module.exports = function (grunt) { } }, copy: { + feature: { + files: [ + {expand: true, cwd: 'app/', src: ['public/feature/**'], dest: 'tmp'} + ] + }, ui: { files: [ {expand: true, cwd: 'tmp/', src: ['**'], dest: 'ui'}, @@ -133,6 +151,7 @@ module.exports = function (grunt) { // Clean Env 'clean:build', // Compress JS + 'copy:feature', 'concat:app', 'regex-replace:strict', 'uglify', @@ -142,7 +161,7 @@ module.exports = function (grunt) { 'concat:css', // Pass HTML Resources 'htmlrefs', - 'copy', + 'copy:ui', // Clean Env 'clean:tmp', ]); http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/d37643b0/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 index 82b543f..f3d61a4 100644 --- a/eagle-webservice/src/main/webapp/app/index.html +++ b/eagle-webservice/src/main/webapp/app/index.html @@ -30,72 +30,63 @@ <!-- 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="../node_modules/zombiej-bootstrap-components/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/zombiej-nvd3/build/nv.d3.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" /> + <link href="public/css/animation.css" rel="stylesheet" type="text/css" media="screen"> + <link href="../node_modules/bootstrap/dist/css/bootstrap.css" rel="stylesheet" type="text/css" media="screen"> + <link href="../node_modules/zombiej-bootstrap-components/bootstrap-components/css/bootstrap-components.css" rel="stylesheet" type="text/css" media="screen"> + <link href="../node_modules/zombiej-nvd3/build/nv.d3.css" rel="stylesheet" type="text/css" /> + <link href="../node_modules/font-awesome/css/font-awesome.css" rel="stylesheet" type="text/css" /> + <link href="../node_modules/admin-lte/dist/css/AdminLTE.css" rel="stylesheet" type="text/css" /> + <link href="../node_modules/admin-lte/dist/css/skins/skin-blue.css" rel="stylesheet" type="text/css" /> <!-- endref --> </head> - <body class="skin-blue sidebar-mini" ng-class="{'no-sidebar' : globalContent.hideSidebar}"> + <body class="skin-blue sidebar-mini" ng-class="{'no-sidebar' : PageConfig.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> + <span class="logo-mini"><img src="public/images/favicon_white.png" /></span> + <span class="logo-lg">Apache Eagle</span> </a> <!-- Header Navbar: style can be found in header.less --> <nav class="navbar navbar-static-top" role="navigation"> <!-- Sidebar toggle button--> - <a ng-hide="globalContent.hideSidebar" class="sidebar-toggle" data-toggle="offcanvas" role="button"> + <a ng-hide="PageConfig.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"> + <li class="dropdown" ng-show="!PageConfig.hideSite && !PageConfig.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}} + {{Site.current().tags.site}} <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}} + <li ng-repeat="_site in Site.list" ng-if="_site.enabled"> + <a ng-click="Site.current(_site);"> + <span class="fa fa-database"></span> {{_site.tags.site}} </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"> + <li class="dropdown" ng-show="PageConfig.lockSite"> <a> <i class="fa fa-server"></i> - {{site.current().name}} + {{Site.current().tags.site}} </a> </li> <!-- User --> - <li class="dropdown user user-menu" ng-hide="globalContent.hideUser"> + <li class="dropdown user user-menu" ng-hide="PageConfig.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}} + {{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"> @@ -103,14 +94,17 @@ <span class="fa fa-user" alt="User Image"></span> </span> <p> - {{auth.userProfile.username}} + {{Auth.userProfile.username}} <small> - <span ng-repeat="role in auth.userProfile.authorities">{{role.authority}} </span> + <span ng-repeat="role in Auth.userProfile.authorities">{{role.authority}} </span> </small> </p> </li> <!-- Menu Footer--> <li class="user-footer"> + <div class="pull-left" ng-if="Auth.isRole('ROLE_ADMIN')"> + <a href="#/config/site" class="btn btn-default btn-flat">Configuration</a> + </div> <div class="pull-right"> <a ng-click="logout();" class="btn btn-default btn-flat">Sign out</a> </div> @@ -119,16 +113,45 @@ </li> </ul> </div> + + <!-- Applications --> + <div ng-hide="PageConfig.hideApplication"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#moduleMenu"> + <span class="sr-only">Toggle navigation</span> + <span class="fa fa-map"></span> + </button> + <div class="collapse navbar-collapse" id="moduleMenu"> + <ul class="nav navbar-nav"> + <li ng-repeat="_grp in Site.current().applicationGroupList" ng-if="_grp.enabledList.length" + class="dropdown" ng-class="{active: Application.current().groupName === _grp.name}"> + <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> + {{_grp.name}} + </a> + <ul class="dropdown-menu"> + <li ng-repeat="_app in _grp.enabledList"> + <a ng-click="Application.current(_app);"> + <span class="fa fa-cubes"></span> {{_app.displayName}} + </a> + </li> + </ul> + </li> + </ul> + </div> + </div> </nav> </header> <!-- =============================================== --> <!-- Left side column. contains the side bar --> - <aside class="main-sidebar" ng-hide="globalContent.hideSidebar"> + <aside class="main-sidebar" ng-hide="PageConfig.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)"> + <li class="header"> + {{Application.current().groupName || 'Application'}} > + {{Application.current().displayName || 'Features'}} + </li> + <li ng-repeat="page in PageConfig.navConfig.pageList track by $index" ng-class="getNavClass(page)" ng-show="getNavVisible(page)"> <a href="{{page.url}}"> <i class="fa fa-{{page.icon}}"></i> <span>{{page.title}}</span> </a> @@ -142,17 +165,18 @@ <!-- 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"> + <section class="content-header" ng-hide="PageConfig.hideSidebar"> <h1> - <span class="pageTitle">{{globalContent.pageTitle}}</span> - <small class="pageSubTitle">{{globalContent.pageSubTitle}}</small> + <span class="pageTitle">{{PageConfig.pageTitle}}</span> + <small class="pageSubTitle">{{PageConfig.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}} + <li ng-repeat="navPath in PageConfig.navPath"> + <a ng-href="#{{navPath.path}}"> + <span class="fa fa-home" ng-if="$first"></span> + {{navPath.title || navPath.path}} </a> </li> </ol> @@ -160,7 +184,9 @@ <!-- Main content --> <section class="content"> - <div id="content" ng-view></div> + <div id="content"> + <div ui-view></div> + </div> </section><!-- /.content --> </div><!-- /.content-wrapper --> </div><!-- ./wrapper --> @@ -176,12 +202,23 @@ <script src="../node_modules/angular/angular.js"></script> <script src="../node_modules/angular-resource/angular-resource.js"></script> <script src="../node_modules/angular-route/angular-route.js"></script> - <script src="../node_modules/angular-cookies/angular-cookies.js"></script> + <script src="../node_modules/angular-animate/angular-animate.js"></script> <script src="../node_modules/angular-ui-bootstrap/ui-bootstrap-tpls.js"></script> + <script src="../node_modules/angular-ui-router/release/angular-ui-router.js"></script> <script src="../node_modules/d3/d3.js"></script> <script src="../node_modules/zombiej-nvd3/build/nv.d3.js"></script> - + <!-- Service --> + <script src="public/js/srv/main.js" type="text/javascript" charset="utf-8"></script> + <script src="public/js/srv/applicationSrv.js" type="text/javascript" charset="utf-8"></script> + <script src="public/js/srv/authorizationSrv.js" type="text/javascript" charset="utf-8"></script> + <script src="public/js/srv/entitiesSrv.js" type="text/javascript" charset="utf-8"></script> + <script src="public/js/srv/siteSrv.js" type="text/javascript" charset="utf-8"></script> + <script src="public/js/srv/pageSrv.js" type="text/javascript" charset="utf-8"></script> + <script src="public/js/srv/wrapStateSrv.js" type="text/javascript" charset="utf-8"></script> + <script src="public/js/srv/uiSrv.js" type="text/javascript" charset="utf-8"></script> + + <!-- Application --> <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> @@ -189,6 +226,7 @@ <script src="public/js/common.js" type="text/javascript" charset="utf-8"></script> + <!-- Components --> <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> @@ -196,15 +234,10 @@ <script src="public/js/components/charts/line3d.js" type="text/javascript" charset="utf-8"></script> <script src="public/js/components/nvd3.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> + <!-- Controllers --> + <script src="public/js/ctrl/main.js" type="text/javascript" charset="utf-8"></script> <script src="public/js/ctrl/authController.js" type="text/javascript" charset="utf-8"></script> + <script src="public/js/ctrl/configurationController.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/d37643b0/eagle-webservice/src/main/webapp/app/partials/config/application.html ---------------------------------------------------------------------- diff --git a/eagle-webservice/src/main/webapp/app/partials/config/application.html b/eagle-webservice/src/main/webapp/app/partials/config/application.html new file mode 100644 index 0000000..5c5b09e --- /dev/null +++ b/eagle-webservice/src/main/webapp/app/partials/config/application.html @@ -0,0 +1,103 @@ +<div class="box box-info"> + <div class="box-header with-border"> + <h3 class="box-title"> + <span class="fa fa-cogs"></span> + Configuration + </h3> + </div><!-- /.box-header --> + + <div class="box-body"> + <div class="row"> + <div class="col-md-3"> + <ul class="nav nav-pills nav-stacked"> + <li class="disabled"><a>Application</a></li> + <li role="presentation" ng-repeat="_application in Application.list track by $index" ng-class="{active: application === _application}"> + <a ng-click="setApplication(_application)"> + <span class="fa fa-server"></span> + {{_application.tags.application}} + <span ng-if="_application.alias">({{_application.alias}})</span> + </a> + </li> + + <li> + <a class="text-light-blue" ng-click="newApplication()" ng-disabled="_pageLock"> + <span class="fa fa-plus-square"></span> + New Application + </a> + </li> + </ul> + </div> + + <div class="col-md-9"> + <a class="pull-right btn btn-danger btn-xs" ng-click="deleteApplication(application)" ng-disabled="_pageLock"> + <span class="fa fa-trash-o"></span> + Delete Application + </a> + + <!-- Title --> + <h3 class="guideline"> + Application + <small>{{application.tags.application}}</small> + </h3> + <hr/> + + <!-- Config --> + <div class="form-group"> + <label for="displayName">Display Name</label> + <input type="text" class="form-control" id="displayName" placeholder="(Optional) Display name." ng-model="applications[application.tags.application].alias"> + </div> + <div class="form-group"> + <label for="applicationGroup">Group</label> + <input type="text" class="form-control" id="applicationGroup" placeholder="(Optional) Group name" ng-model="applications[application.tags.application].group"> + </div> + <div class="form-group"> + <label for="applicationDescription">Description</label> + <textarea id="applicationDescription" class="form-control" placeholder="(Optional) Application description" rows="2" ng-model="applications[application.tags.application].desc"></textarea> + </div> + <div class="form-group"> + <label for="applicationConfiguration">Configuration</label> + <span class="text-danger">{{configCheck(applications[application.tags.application].config)}}</span> + <textarea id="applicationConfiguration" class="form-control" placeholder="Application configuration. Feature can read this " rows="5" ng-model="applications[application.tags.application].config"></textarea> + </div> + + <!-- Feature --> + <label>* Feature</label> + <div class="row"> + <div class="col-sm-6"> + <h1 class="text-muted text-center" ng-show="applications[application.tags.application].features.length === 0">No feature in using</h1> + <ul class="products-list product-list-in-box fixed-height" ng-show="applications[application.tags.application].features.length !== 0"> + <li class="item" ng-repeat="feature in applications[application.tags.application].features track by $index" ng-class="{active: _feature === feature}"> + <div class="product-operation"> + <a class="fa fa-chevron-up" ng-click="moveFeature(feature, applications[application.tags.application].features, -1)"></a> + <a class="fa fa-chevron-down" ng-click="moveFeature(feature, applications[application.tags.application].features, 1)"></a> + </div> + <div class="product-info"> + <a class="fa fa-times pull-right" ng-click="removeFeature(feature, applications[application.tags.application])"></a> + <span class="product-title">{{feature}}</span> + <span class="product-description">{{Application.featureList.set[feature].desc}}</span> + </div> + </li> + </ul> + </div> + <div class="col-sm-6"> + <ul class="products-list product-list-in-box fixed-height"> + <li class="item" ng-repeat="feature in applications[application.tags.application].optionalFeatures track by $index"> + <button class="btn btn-lg btn-primary pull-left" ng-click="addFeature(feature, applications[application.tags.application])" ng-disabled="_pageLock"> + <span class="fa fa-star-o"></span> + </button> + <div class="product-info"> + <span class="product-title">{{feature}}</span> + <span class="product-description">{{Application.featureList.set[feature].desc}}</span> + </div> + </li> + </ul> + </div> + </div> + </div> + </div> + </div><!-- /.box-body --> + + <div class="box-footer clearfix"> + <button class="btn btn-primary" ng-click="saveAll()" ng-disabled="_pageLock">Save All</button> + </div> +</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/d37643b0/eagle-webservice/src/main/webapp/app/partials/config/feature.html ---------------------------------------------------------------------- diff --git a/eagle-webservice/src/main/webapp/app/partials/config/feature.html b/eagle-webservice/src/main/webapp/app/partials/config/feature.html new file mode 100644 index 0000000..3088883 --- /dev/null +++ b/eagle-webservice/src/main/webapp/app/partials/config/feature.html @@ -0,0 +1,64 @@ +<div class="box box-info"> + <div class="box-header with-border"> + <h3 class="box-title"> + <span class="fa fa-cogs"></span> + Configuration + </h3> + </div><!-- /.box-header --> + + <div class="box-body"> + <div class="row"> + <div class="col-md-3"> + <ul class="nav nav-pills nav-stacked"> + <li class="disabled"> + <a>Feature</a> + </li> + <li role="presentation" ng-repeat="_feature in Application.featureList" ng-class="{active: feature === _feature}"> + <a ng-click="setFeature(_feature)"> + <span class="fa fa-leaf" ng-class="{'text-danger': _feature._loaded === false}" uib-tooltip="Module load failed!" tooltip-enable="_feature._loaded === false"></span> + {{_feature.tags.feature}} + </a> + </li> + <li> + <a class="text-light-blue" ng-click="newFeature()" ng-disabled="_pageLock"> + <span class="fa fa-plus-square"></span> + New Feature + </a> + </li> + </ul> + </div> + + <div class="col-md-9"> + <a class="pull-right btn btn-danger btn-xs" ng-click="deleteFeature(feature)" ng-disabled="_pageLock"> + <span class="fa fa-trash-o"></span> + Delete Feature + </a> + + <h3 class="guideline"> + <span class="fa fa-exclamation-triangle text-danger" uib-tooltip="Module load failed!" ng-show="feature._loaded === false"></span> + {{feature.tags.feature}} + </h3> + <hr/> + + <p class="text text-muted"> + Will load the start up file <code>controller.js</code> from <code>public/feature/{{feature.tags.feature}}</code>. + If you are developing customized feature, please reference provided feature. + </p> + + <!-- Config --> + <div class="form-group"> + <label for="featureVersion">Version</label> + <input id="featureVersion" type="text" class="form-control" placeholder="(Optional) Feature version." ng-model="features[feature.tags.feature].version"> + </div> + <div class="form-group"> + <label for="featureDescription">Description</label> + <textarea id="featureDescription" class="form-control" placeholder="(Optional) Feature description." rows="10" ng-model="features[feature.tags.feature].desc"></textarea> + </div> + </div> + </div> + </div><!-- /.box-body --> + + <div class="box-footer clearfix"> + <button class="btn btn-primary" ng-click="saveAll()" ng-disabled="_pageLock">Save All</button> + </div> +</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/d37643b0/eagle-webservice/src/main/webapp/app/partials/config/site.html ---------------------------------------------------------------------- diff --git a/eagle-webservice/src/main/webapp/app/partials/config/site.html b/eagle-webservice/src/main/webapp/app/partials/config/site.html new file mode 100644 index 0000000..1d792d9 --- /dev/null +++ b/eagle-webservice/src/main/webapp/app/partials/config/site.html @@ -0,0 +1,94 @@ +<div class="box box-info"> + <div class="box-header with-border"> + <h3 class="box-title"> + <span class="fa fa-cogs"></span> + Configuration + </h3> + </div><!-- /.box-header --> + + <div class="box-body"> + <div class="row"> + <div class="col-md-3"> + <ul class="nav nav-pills nav-stacked"> + <li class="disabled"><a>Site</a></li> + <li role="presentation" ng-repeat="_site in Site.list track by $index" ng-class="{active: site === _site}"> + <a ng-click="setSite(_site)"> + <span class="fa fa-server"></span> + {{_site.tags.site}} + </a> + </li> + + <li> + <a class="text-light-blue" ng-click="newSite()" ng-disabled="_pageLock"> + <span class="fa fa-plus-square"></span> + New Site + </a> + </li> + </ul> + </div> + + <div class="col-md-9"> + <a class="pull-right btn btn-danger btn-xs" ng-click="deleteSite(site)" ng-disabled="_pageLock"> + <span class="fa fa-trash-o"></span> + Delete Site + </a> + + <!-- Title --> + <h3 class="guideline"> + Site + <small>{{site.tags.site}}</small> + </h3> + <hr/> + + <!-- Config --> + <div class="checkbox"> + <label> + <input type="checkbox" ng-checked="sites[site.tags.site].enabled" ng-click="sites[site.tags.site].enabled = !sites[site.tags.site].enabled"> + <strong>Enabled</strong> + </label> + </div> + <hr/> + + <!-- Application --> + <label>* Application</label> + <div class="row"> + <div class="col-sm-6"> + <h1 class="text-muted text-center" ng-show="sites[site.tags.site].applications.length === 0">No application in using</h1> + <ul class="products-list product-list-in-box fixed-height" ng-show="sites[site.tags.site].applications.length !== 0"> + <li class="item" ng-repeat="application in sites[site.tags.site].applications track by $index" ng-class="{active: _application === application}"> + <div class="product-operation single"> + <span class="fa fa-cubes"></span> + </div> + <div class="product-info"> + <a class="fa fa-times pull-right" ng-click="removeApplication(application, sites[site.tags.site])"></a> + <span class="product-title"> + <a class="fa fa-cog" ng-click="setApplication(application)"></a> + {{application.tags.application}} + </span> + <span class="product-description">{{Application.list.set[application.tags.application].desc}}</span> + </div> + </li> + </ul> + </div> + <div class="col-sm-6"> + <ul class="products-list product-list-in-box fixed-height"> + <li class="item" ng-repeat="application in sites[site.tags.site].optionalApplications track by $index"> + <button class="btn btn-lg btn-primary pull-left" ng-click="addApplication(application, sites[site.tags.site])" ng-disabled="_pageLock"> + <span class="fa fa-star-o"></span> + </button> + <div class="product-info"> + <span class="product-title">{{application.tags.application}}</span> + <span class="product-description">{{Application.list.set[application.tags.application].desc}}</span> + </div> + </li> + </ul> + </div> + </div> + </div> + </div> + </div><!-- /.box-body --> + + <div class="box-footer clearfix"> + <button class="btn btn-primary" ng-click="saveAll()" ng-disabled="_pageLock">Save All</button> + </div> +</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/d37643b0/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 deleted file mode 100644 index 9b0ec01..0000000 --- a/eagle-webservice/src/main/webapp/app/partials/dam/alertDetail.html +++ /dev/null @@ -1,61 +0,0 @@ -<!-- - 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/d37643b0/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 deleted file mode 100644 index d5492ca..0000000 --- a/eagle-webservice/src/main/webapp/app/partials/dam/alertList.html +++ /dev/null @@ -1,83 +0,0 @@ -<!-- - 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/d37643b0/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 deleted file mode 100644 index 0e2287c..0000000 --- a/eagle-webservice/src/main/webapp/app/partials/dam/login.html +++ /dev/null @@ -1,49 +0,0 @@ -<!-- - 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/d37643b0/eagle-webservice/src/main/webapp/app/partials/dam/nvd3.html ---------------------------------------------------------------------- diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/nvd3.html b/eagle-webservice/src/main/webapp/app/partials/dam/nvd3.html deleted file mode 100644 index 1a0196d..0000000 --- a/eagle-webservice/src/main/webapp/app/partials/dam/nvd3.html +++ /dev/null @@ -1,19 +0,0 @@ -<style> - .nvd3-chart-cntr > h3 { - text-align: center; - } - - .nvd3-chart-cntr > svg { - height: 300px; - } -</style> - -<button class="btn btn-primary" ng-click="randomChartData()">Random</button> -<button class="btn btn-primary" ng-click="chart = 'column'">To Column</button> -<button class="btn btn-primary" ng-click="chart = 'line'">To Line</button> -<button class="btn btn-primary" ng-click="chart = 'area'">To Area</button> -<button class="btn btn-primary" ng-click="chart = 'pie'">To Pie</button> -<button class="btn btn-warning" ng-click="chartConfig.xType = 'number'">Number</button> -<button class="btn btn-warning" ng-click="chartConfig.xType = 'time'">Time</button> - -<div nvd3="data" data-title="Test" data-chart="{{chart}}" data-watching="true" data-config="chartConfig" class="nvd3-chart-cntr"></div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/d37643b0/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 deleted file mode 100644 index 9540ac6..0000000 --- a/eagle-webservice/src/main/webapp/app/partials/dam/policyDetail.html +++ /dev/null @@ -1,171 +0,0 @@ -<!-- - 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"> - <div nvd3="policyEvalSeries" data-title="Policy Eval Count" data-config="chartConfig" class="nvd3-chart-cntr"></div> - </div> - <div class="col-xs-6"> - <div nvd3="policyEvalFailSeries" data-title="Policy Eval Fail Count" data-config="chartConfig" class="nvd3-chart-cntr"></div> - </div> - <div class="col-xs-6"> - <div nvd3="alertSeries" data-title="Alert Count" data-config="chartConfig" class="nvd3-chart-cntr"></div> - </div> - <div class="col-xs-6"> - <div nvd3="alertFailSeries" data-title="Alert Fail Count" data-config="chartConfig" class="nvd3-chart-cntr"></div> - </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/d37643b0/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 deleted file mode 100644 index 038a590..0000000 --- a/eagle-webservice/src/main/webapp/app/partials/dam/policyEdit.html +++ /dev/null @@ -1,359 +0,0 @@ -<!-- - 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', 'sum']">{{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 class="col-md-4"> - <div class="form-group"> - <label for="window">Alias (Optional)</label> - <input type="text" class="form-control" ng-model="policy.__.groupAggAlias" placeholder="Default: aggValue" /> - </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-ea...@company1.com" placeholder="Enter Sender. e.g. sen...@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. us...@example.com, us...@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/d37643b0/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 deleted file mode 100644 index 376a513..0000000 --- a/eagle-webservice/src/main/webapp/app/partials/dam/policyList.html +++ /dev/null @@ -1,98 +0,0 @@ -<!-- - 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/d37643b0/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 deleted file mode 100644 index b00bbaf..0000000 --- a/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity.html +++ /dev/null @@ -1,32 +0,0 @@ -<!-- - 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="nav-tabs-custom"> - <!-- Tabs within a box --> - <ul class="nav nav-tabs pull-right ui-sortable-handle"> - <li ng-repeat="entity in config.list" ng-class="{active: dataSrc.name === entity.name}"> - <a ng-click="site.url('/dam/sensitivity/' + entity.name)">{{entity.name}}</a> - </li> - <li class="pull-left header"><i class="fa fa-folder-open"></i> Sensitivity Broswer</li> - </ul> - <div class="tab-content"> - <!-- Morris chart - Sales --> - <div class="tab-pane active"> - <ng-include src="'partials/dam/sensitivity/' + dataSrc.type + '.html?_=' + ajaxId"></ng-include> - </div> - </div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/d37643b0/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity/folder.html ---------------------------------------------------------------------- diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity/folder.html b/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity/folder.html deleted file mode 100644 index 1827eac..0000000 --- a/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity/folder.html +++ /dev/null @@ -1,110 +0,0 @@ -<!-- - 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 ng-controller="sensitivityViewFolderCtrl"> - <ul class="list-inline path"> - <li>Path:</li> - <li ng-repeat="unit in pathUnitList"> - <a ng-click="updateItems(unit.path)" class="label bg-black">{{unit.name}}</a> - </li> - </ul> - - <table class="table table-bordered"> - <thead> - <tr> - <th width="15%">File Name</th> - <th width="10%">Owner</th> - <th width="10%">Group</th> - <th>Sensitivity Type</th> - <th width="10" ng-show="auth.isRole('ROLE_ADMIN')"> </th> - </tr> - </thead> - <tbody> - <tr ng-show="items._promise.$$state.status !== 1"> - <td colspan="5"> - <span class="fa fa-refresh fa-spin"> </span> - Loading... - </td> - </tr> - <tr ng-show="items._promise.$$state.status === 1 && !items.length"> - <td colspan="5"> - <span class="fa fa-exclamation-triangle"> </span> - Empty Folder - </td> - </tr> - <tr ng-repeat="item in items" ng-class="{warning : item.sensitiveType}"> - <td> - <span ng-show="!item.isdir"> - <span class="fa fa-file"> </span> - {{getFileName(item)}} - </span> - <a ng-show="item.isdir" ng-click="updateItems(item.resource)"> - <span class="fa fa-folder"> </span> - {{getFileName(item)}} - </a> - - <span class="pull-right" ng-show="item.childSensitiveTypes.length"> - <span class="fa fa-dot-circle-o text-muted" uib-tooltip="Contain child sensitivity defination"> </span> - </span> - </td> - <td>{{item.owner}}</td> - <td>{{item.group}}</td> - <td>{{item.sensitiveType}}</td> - <td ng-show="auth.isRole('ROLE_ADMIN')"> - <button class="fa fa-eye btn btn-primary btn-xs" ng-click="markSensitivity(item)" ng-show="!item.sensitiveType" - uib-tooltip="Mark as sensitivity data" tooltip-animation="false" tooltip-placement="left"> </button> - <button class="fa fa-eye-slash btn btn-warning btn-xs" ng-click="unmarkSensitivity(item)" ng-show="item.sensitiveType" - uib-tooltip="Remove the sensitivity mark" tooltip-animation="false" tooltip-placement="left"> </button> - </td> - </tr> - </tbody> - </table> - - - <!-- Modal: Create / Edit site --> - <div class="modal fade" id="sensitivityMDL" tabindex="-1" role="dialog"> - <div class="modal-dialog" role="document"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-label="Close"> - <span aria-hidden="true">×</span> - </button> - <h4 class="modal-title">Mark Sensitivity Data</h4> - </div> - <div class="modal-body"> - <div class="form-group"> - <label>Resource</label> - <input type="text" readonly="readonly" class="form-control" ng-model="_markItem.tags.filedir" /> - </div> - <div class="form-group"> - <label>* Sensitivity Type</label> - <input type="text" class="form-control" ng-model="_markItem.sensitivityType" id="sensitiveType" /> - </div> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"> - Close - </button> - <button type="button" class="btn btn-primary" ng-click="confirmUpateSensitivity()" ng-disabled="!_markItem.sensitivityType"> - Update - </button> - </div> - </div> - </div> - </div> - -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/d37643b0/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity/table.html ---------------------------------------------------------------------- diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity/table.html b/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity/table.html deleted file mode 100644 index baa824c..0000000 --- a/eagle-webservice/src/main/webapp/app/partials/dam/sensitivity/table.html +++ /dev/null @@ -1,150 +0,0 @@ -<!-- - 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 ng-controller="sensitivityViewTableCtrl"> - <p ng-show="databases._promise.$$state.status !== 1"> - <span class="fa fa-refresh fa-spin"> </span> - Loading... - </p> - - <div ng-show="databases._promise.$$state.status === 1" class="row"> - <div class="col-md-4"> - <label> - Databases - ({{databases.length}}) - </label> - <ul class="tree tree-bordered" style="max-height: 500px; overflow-y: auto;"> - <li ng-repeat="db in databases"> - <span class="tree-item box-clickable text-primary" ng-click="db.show = !db.show; loadTables(db);"> - <span ng-class="{'text-warning' : db.sensitiveType}"> - <span class="fa fa-database"> </span> - {{db.database}} - <span ng-show="db.tables._promise.$$state.status === 1">({{db.tables.length}})</span> - - <span ng-show="auth.isRole('ROLE_ADMIN')"> - <a class="fa fa-eye text-muted hover" ng-click="markSensitivity(db, $event)" ng-show="!db.sensitiveType" - uib-tooltip="Mark as sensitivity data" tooltip-animation="false" tooltip-placement="right"></a> - <a class="fa fa-eye-slash text-muted hover" ng-click="unmarkSensitivity(db, $event)" ng-show="db.sensitiveType" - uib-tooltip="Remove the sensitivity mark" tooltip-animation="false" tooltip-placement="right"></a> - </span> - - <span class="pull-right" ng-show="db.childSensitiveTypes.length"> - <span class="fa fa-dot-circle-o" uib-tooltip="Contain child sensitivity defination" tooltip-placement="right" tooltip-append-to-body="true"> </span> - </span> - <span ng-show="db.sensitiveType" class="pull-right">[{{db.sensitiveType}}]</span> - </span> - </span> - <ul ng-show="db.show"> - <li ng-show="db.tables._promise.$$state.status !== 1"> - <span> - <span class="fa fa-refresh fa-spin"> </span> - Loading... - </span> - </li> - <li ng-repeat="tb in db.tables" ng-class="{active : tb === table}"> - <span class="tree-item box-clickable text-primary" ng-click="loadColumns(db, tb)"> - <span ng-class="{'text-warning' : tb.sensitiveType}"> - <span class="fa fa-table"> </span> - {{tb.table}} - - <span ng-show="auth.isRole('ROLE_ADMIN')"> - <a class="fa fa-eye text-muted hover" ng-click="markSensitivity(tb, $event)" ng-show="!tb.sensitiveType" - uib-tooltip="Mark as sensitivity data" tooltip-animation="false" tooltip-placement="right"></a> - <a class="fa fa-eye-slash text-muted hover" ng-click="unmarkSensitivity(tb, $event)" ng-show="tb.sensitiveType" - uib-tooltip="Remove the sensitivity mark" tooltip-animation="false" tooltip-placement="right"></a> - </span> - - <span class="pull-right" ng-show="tb.childSensitiveTypes.length"> - <span class="fa fa-dot-circle-o" uib-tooltip="Contain child sensitivity defination" tooltip-placement="right" tooltip-append-to-body="true"> </span> - </span> - <span ng-show="tb.sensitiveType" class="pull-right">[{{tb.sensitiveType}}]</span> - </span> - </span> - </li> - </ul> - </li> - </ul> - </div> - <div class="col-md-8"> - <label ng-show="table">Route: {{table.database}} > {{table.table}}</label> - <p ng-show="table && table.columns._promise.$$state.status !== 1"> - <span class="fa fa-refresh fa-spin"> </span> - Loading... - </p> - <div ng-show="table && table.columns._promise.$$state.status === 1"> - <table class="table table-bordered"> - <thead> - <tr> - <th width="40%">Column Name</th> - <th>Sensitivity Type</th> - <th width="10" ng-show="auth.isRole('ROLE_ADMIN')"> </th> - </tr> - </thead> - <tbody> - <tr ng-repeat="col in table.columns" ng-class="{warning : col.sensitiveType}"> - <td>{{col.column}}</td> - <td>{{col.sensitiveType}}</td> - <td ng-show="auth.isRole('ROLE_ADMIN')"> - <button class="fa fa-eye btn btn-primary btn-xs" ng-click="markSensitivity(col)" ng-show="!col.sensitiveType" - uib-tooltip="Mark as sensitivity data" tooltip-animation="false" tooltip-placement="left"> </button> - <button class="fa fa-eye-slash btn btn-warning btn-xs" ng-click="unmarkSensitivity(col)" ng-show="col.sensitiveType" - uib-tooltip="Remove the sensitivity mark" tooltip-animation="false" tooltip-placement="left"> </button> - </td> - </tr> - </tbody> - </table> - </div> - </div> - </div> - - - - - - - <!-- Modal: Create / Edit site --> - <div class="modal fade" id="sensitivityMDL" tabindex="-1" role="dialog"> - <div class="modal-dialog" role="document"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-label="Close"> - <span aria-hidden="true">×</span> - </button> - <h4 class="modal-title">Mark Sensitivity Data</h4> - </div> - <div class="modal-body"> - <div class="form-group"> - <label>Resource</label> - <input type="text" readonly="readonly" class="form-control" ng-model="_markItem.tags[dataSrc.keys[0]]" /> - </div> - <div class="form-group"> - <label>* Sensitivity Type</label> - <input type="text" class="form-control" ng-model="_markItem.sensitivityType" id="sensitiveType" /> - </div> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"> - Close - </button> - <button type="button" class="btn btn-primary" ng-click="confirmUpateSensitivity()" ng-disabled="!_markItem.sensitivityType"> - Update - </button> - </div> - </div> - </div> - </div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/d37643b0/eagle-webservice/src/main/webapp/app/partials/dam/sensitivitySummary.html ---------------------------------------------------------------------- diff --git a/eagle-webservice/src/main/webapp/app/partials/dam/sensitivitySummary.html b/eagle-webservice/src/main/webapp/app/partials/dam/sensitivitySummary.html deleted file mode 100644 index 3dfe103..0000000 --- a/eagle-webservice/src/main/webapp/app/partials/dam/sensitivitySummary.html +++ /dev/null @@ -1,143 +0,0 @@ -<!-- - 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="row"> - <div class="col-md-4" ng-repeat="entity in config.list"> - <div class="info-box bg-aqua box-clickable"> - <span class="info-box-icon" ng-click="site.url('/dam/sensitivity/' + entity.name)"><i class="fa fa-suitcase"></i></span> - <div class="info-box-content"> - <div class="pull-right btn-group" ng-show="auth.isRole('ROLE_ADMIN')"> - <a class="fa fa-cog config" data-toggle="dropdown"></a> - <ul class="dropdown-menu" role="menu"> - <li> - <a ng-click="showImportEditor(entity);"><span class="fa fa-cloud-upload"></span>Import</a> - </li> - <li class="divider"></li> - <li> - <a ng-click="showManagementEditor(entity);"><span class="fa fa-list"></span>Management</a> - </li> - </ul> - </div> - - <div ng-click="site.url('/dam/sensitivity/' + entity.name)"> - <span class="info-box-text text-large">{{entity.name}}</span> - <!--span class="info-box-number"> - <small>Connected</small> - </span--> - <div class="progress"> - <div class="progress-bar"></div> - </div> - <span class="progress-description"> - <span class="fa fa-refresh fa-spin" ng-hide="entity.statisitc._promise.$$state.status === 1"></span> - <span ng-show="entity.statisitc._promise.$$state.status === 1">{{entity.statisitc[0].value[0] || 0}}</span> - sensitivity items - </span> - </div> - </div><!-- /.info-box-content --> - </div> - </div> -</div> - -<!-- Modal: Create sensitivity --> -<div class="modal fade" id="sensitivityMDL" tabindex="-1" role="dialog"> - <div class="modal-dialog" role="document"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-label="Close" ng-disabled="_sensitivityLock"> - <span aria-hidden="true">×</span> - </button> - <h4 class="modal-title">Import Sensitivity Data</h4> - </div> - <div class="modal-body"> - <div tabs data-inner="true" selected="_sensitivityImportType"> - <div pane data-title="By Text"> - <div class="form-group"> - <label>* Sensitivity Data</label> - <textarea class="form-control" placeholder="Json format here..." rows="10" id="sensitivityData" ng-model="_parent._sensitivityData" ng-disabled="_parent._sensitivityLock"></textarea> - </div> - </div> - <div pane data-title="By File"> - <input type="file" file filepath="_parent._sensitivityFile" id="sensitivityFile" ng-disabled="_parent._sensitivityLock" /> - </div> - </div> - - </div> - <div class="modal-footer"> - <p class="text-danger pull-left">{{_sensitivityError}}</p> - - <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="_sensitivityLock"> - Close - </button> - <button type="button" class="btn btn-primary" ng-click="confirmImport()" - ng-disabled="!importCheck()"> - Import - </button> - </div> - </div> - </div> -</div> - -<!-- Modal: Manage sensitivity --> -<div class="modal fade" id="sensitivityListMDL" tabindex="-1" role="dialog"> - <div class="modal-dialog" role="document"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-label="Close" ng-disabled="_sensitivityLock"> - <span aria-hidden="true">×</span> - </button> - <h4 class="modal-title">Sensitivity List</h4> - </div> - <div class="modal-body"> - <p ng-show="_sensitivitySource.list._promise.$$state.status !== 1"> - <span class="fa fa-refresh fa-spin"> </span> - Loading... - </p> - - <div sorttable source="_sensitivitySource.list" ng-show="_sensitivitySource.list._promise.$$state.status === 1"> - <table class="table table-bordered" ng-non-bindable> - <thead> - <tr> - <!--th width="10"></th--> - <th ng-repeat="key in _parent._sensitivitySource.keys">{{key}}</th> - <th width="10"> </th> - </tr> - </thead> - <tbody> - <tr> - <!--td> - <input type="checkbox" ng-checked="item.selected" ng-click="item.selected = !item.selected"> - </td--> - <td ng-repeat="key in _parent._sensitivitySource.keys">{{item.tags[key] || item[key]}}</td> - <td> - <a ng-click="_parent.deleteItem(item)">Delete</a> - </td> - </tr> - </tbody> - </table> - </div> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-danger pull-left" ng-click="deleteAll(_sensitivitySource)"> - Delete All - </button> - <button type="button" class="btn btn-default" data-dismiss="modal"> - Close - </button> - </div> - </div> - </div> -</div> \ No newline at end of file