aboutsummaryrefslogtreecommitdiffstats
path: root/moonv4/moon_gui/static/app/policy/edit/parameter/rules
diff options
context:
space:
mode:
Diffstat (limited to 'moonv4/moon_gui/static/app/policy/edit/parameter/rules')
-rw-r--r--moonv4/moon_gui/static/app/policy/edit/parameter/rules/rules-list.tpl.html148
-rw-r--r--moonv4/moon_gui/static/app/policy/edit/parameter/rules/rules.list.dir.js88
2 files changed, 158 insertions, 78 deletions
diff --git a/moonv4/moon_gui/static/app/policy/edit/parameter/rules/rules-list.tpl.html b/moonv4/moon_gui/static/app/policy/edit/parameter/rules/rules-list.tpl.html
index 3ec54239..76ac4365 100644
--- a/moonv4/moon_gui/static/app/policy/edit/parameter/rules/rules-list.tpl.html
+++ b/moonv4/moon_gui/static/app/policy/edit/parameter/rules/rules-list.tpl.html
@@ -1,79 +1,74 @@
<div>
- <div class="row">
- <div class="table-responsive" data-role="table">
+ <div class="panel panel-default">
- <table class="table table-striped table-hover" ng-table="list.table">
+ <div class="panel-heading">
- <thead>
+ <h4 data-translate="moon.policy.rules.edit.title">List of associated Subjects</h4>
- <tr>
+ </div>
+
+ <div class="panel-body">
- <th class="customTables sortable"
- ng-class="{ 'sort-asc': list.table.isSortBy('name', 'asc'), 'sort-desc': list.table.isSortBy('name', 'desc') }"
- ng-click="list.table.sorting('name', list.table.isSortBy('name', 'asc') ? 'desc' : 'asc')">
- <div data-translate="moon.policy.rules.list.table.id">Id</div>
- </th>
+ <div class="table-responsive" data-role="table">
- <th class="customTables sortable"
- ng-class="{ 'sort-asc': list.table.isSortBy('description', 'asc'), 'sort-desc': list.table.isSortBy('description', 'desc') }"
- ng-click="list.table.sorting('description', list.table.isSortBy('description', 'asc') ? 'desc' : 'asc')">
- <div data-translate="moon.policy.rules.list.table.metaRule">Meta Rule</div>
- </th>
+ <table class="table table-striped table-hover" ng-table="list.table">
- <th class="customTables sortable"
- ng-class="{ 'sort-asc': list.table.isSortBy('enabled', 'asc'), 'sort-desc': list.table.isSortBy('enabled', 'desc') }"
- ng-click="list.table.sorting('enabled', list.table.isSortBy('enabled', 'asc') ? 'desc' : 'asc')">
- <div data-translate="moon.policy.rules.list.table.enabled">Enabled</div>
- </th>
+ <thead>
- <th class="customTables sortable"
- ng-class="{ 'sort-asc': list.table.isSortBy('enabled', 'asc'), 'sort-desc': list.table.isSortBy('enabled', 'desc') }"
- ng-click="list.table.sorting('enabled', list.table.isSortBy('enabled', 'asc') ? 'desc' : 'asc')">
- <div data-translate="moon.policy.rules.list.table.rule">Rule</div>
- </th>
- </tr>
+ <tr>
- </thead>
+ <th class="customTables sortable"
+ ng-class="{ 'sort-asc': list.table.isSortBy('description', 'asc'), 'sort-desc': list.table.isSortBy('description', 'desc') }"
+ ng-click="list.table.sorting('description', list.table.isSortBy('description', 'asc') ? 'desc' : 'asc')">
+ <div data-translate="moon.policy.rules.list.table.metaRule">Meta Rule</div>
+ </th>
- <moon-loader ng-if="list.loadingRules"></moon-loader>
+ <th class="customTables sortable">
+ <div data-translate="moon.policy.rules.list.table.rule">Rule</div>
+ </th>
- <tbody ng-if="!list.loadingRules && !list.hasRules()">
- <tr>
- <td colspan="2"><span data-translate="moon.policy.rules.list.table.notFound">There is no Rules</span></td>
+ <th class="customTables sortable">
+ <div data-translate="moon.policy.rules.list.table.instructions">Instruction</div>
+ </th>
+
+ <th class="customTables sortable">
+ <div data-translate="moon.policy.rules.list.table.action.title">Actions</div>
+ </th>
</tr>
- </tbody>
- <tbody ng-if="!list.loadingRules && list.hasRules()">
+ </thead>
- <tr ng-repeat="aRule in $data | filter:list.search.find | orderBy:sort:reverse">
- <td ng-bind="aRule.id"></td>
+ <moon-loader ng-if="list.loadingRules"></moon-loader>
- <td>
- <span ng-if="!list.getMetaRuleFromRule(aRule)">
- <moon-loader ng-if="!list.getMetaRuleFromRule(aRule)" ></moon-loader>
- <em data-translate="moon.policy.rules.list.table.loading.metaRule">Loading </em>
- </span>
+ <tbody ng-if="!list.loadingRules && !list.hasRules()">
+ <tr>
+ <td colspan="4"><span data-translate="moon.policy.rules.list.table.notFound">There is no Rules</span></td>
+ </tr>
+ </tbody>
- <span ng-if="list.getMetaRuleFromRule(aRule)">
- <span ng-bind="aRule.meta_rule.name"></span>
- </span>
- </td>
+ <tbody ng-if="!list.loadingRules && list.hasRules()">
- <td>
- <span ng-if="aRule.enabled" class="glyphicon glyphicon-ok"></span>
- <span ng-if="!aRule.enabled" class="glyphicon glyphicon-remove"></span>
- </td>
+ <tr ng-repeat="aRule in $data | filter:list.search.find | orderBy:sort:reverse">
+ <td>
+ <span ng-if="!list.getMetaRuleFromRule(aRule)">
+ <moon-loader ng-if="!list.getMetaRuleFromRule(aRule)" ></moon-loader>
+ <em data-translate="moon.policy.rules.list.table.loading.metaRule">Loading </em>
+ </span>
- <td >
+ <span ng-if="list.getMetaRuleFromRule(aRule)">
+ <span ng-bind="aRule.meta_rule.name"></span>
+ </span>
+ </td>
- <span ng-if="!list.getMetaRuleFromRule(aRule)">
- <moon-loader ng-if="!list.getMetaRuleFromRule(aRule)" ></moon-loader>
- <em data-translate="moon.policy.rules.list.table.loading.metaRule">Loading </em>
- </span>
+ <td>
+ <span ng-if="!list.getMetaRuleFromRule(aRule)">
+ <moon-loader ng-if="!list.getMetaRuleFromRule(aRule)" ></moon-loader>
+ <em data-translate="moon.policy.rules.list.table.loading.metaRule">Loading </em>
+ </span>
- <span ng-if="list.getMetaRuleFromRule(aRule)" ng-repeat="(key, value) in aRule.rule">
+ <span ng-if="list.getMetaRuleFromRule(aRule)" ng-repeat="(key, value) in aRule.rule">
<span ng-if="!list.getCategoryFromRuleIndex(key, aRule)">
<moon-loader ng-if="!list.getCategoryFromRuleIndex(key, aRule)" ></moon-loader>
@@ -87,13 +82,50 @@
</span>
- </td>
+ </td>
+
+ <td>
+ <pre ng-bind="aRule.instructions | json "></pre>
+ </td>
+
+ <td>
+
+ <a href="" ng-if="!aRule.loader" ng-click="list.deleteRules(aRule)" >
+ <span class="glyphicon glyphicon-transfer"></span>
+ <span class="control-label" data-translate="moon.policy.rules.list.table.action.delete">Delete</span>
+ </a>
+
+ <div ng-if="aRule.loader">
+
+ <moon-loader></moon-loader>
- </tr>
+ </div>
+
+ </td>
+
+ </tr>
+
+ </tbody>
+
+ </table>
+
+ </div>
+
+ </div>
+
+ </div>
+
+ <div ng-if="list.editMode" class="panel panel-default">
+
+ <div class="panel-heading">
+
+ <h4 data-translate="moon.policy.rules.edit.action.add.title">Add a Rules</h4>
+
+ </div>
- </tbody>
+ <div class="panel-body">.
- </table>
+ <moon-rules-edit policy="list.policy"></moon-rules-edit>
</div>
diff --git a/moonv4/moon_gui/static/app/policy/edit/parameter/rules/rules.list.dir.js b/moonv4/moon_gui/static/app/policy/edit/parameter/rules/rules.list.dir.js
index 98e1d62b..5c3e7457 100644
--- a/moonv4/moon_gui/static/app/policy/edit/parameter/rules/rules.list.dir.js
+++ b/moonv4/moon_gui/static/app/policy/edit/parameter/rules/rules.list.dir.js
@@ -28,13 +28,14 @@
.module('moon')
.controller('moonRulesListController', moonRulesListController);
- moonRulesListController.$inject = [ 'NgTableParams', '$filter', 'metaRuleService', 'ruleService', 'dataService'];
+ moonRulesListController.$inject = [ '$scope', '$rootScope', 'NgTableParams', '$filter', 'metaRuleService', 'rulesService', 'dataService', '$translate', 'alertService' ];
- function moonRulesListController( NgTableParams, $filter, metaRuleService, ruleService, dataService) {
+ function moonRulesListController( $scope, $rootScope, NgTableParams, $filter, metaRuleService, rulesService, dataService, $translate, alertService ) {
var list = this;
list.rules = [];
+ list.editMode = $scope.list.editMode;
list.loadingRules = true;
@@ -43,6 +44,7 @@
list.getRules = getRules;
list.hasRules = hasRules;
list.refreshRules = refreshRules;
+ list.deleteRules = deleteRules;
list.getMetaRuleFromRule = getMetaRuleFromRule;
list.getCategoryFromRuleIndex = getCategoryFromRuleIndex;
@@ -55,41 +57,40 @@
function activate(){
-
newRulesTable();
manageRules();
+
}
+ var rootListeners = {
+ 'event:createRulesFromDataRulesSuccess': $rootScope.$on('event:createRulesFromDataRulesSuccess', addRulesToList)
- function manageRules(){
+ };
+
+ _.each(rootListeners, function(unbind){
+ $scope.$on('$destroy', rootListeners[unbind]);
+ });
- ruleService.findAllFromPolicyWithCallback(list.policy.id, function(data){
+ function manageRules(){
- console.log('rules');
- console.log(data);
+ rulesService.findAllFromPolicyWithCallback(list.policy.id, function(data){
list.rules = data;
list.loadingRules = false;
refreshRules();
+
});
}
-
-
-
-
function newRulesTable() {
list.table = new NgTableParams({
page: 1, // show first page
- count: 10, // count per page
- sorting: {
- name: 'asc' // initial sorting
- }
+ count: 10 // count per page
}, {
@@ -134,7 +135,12 @@
/**
- * Prerequisite : meta Rule should be completely loaded
+ * Prerequisite : meta Rule must be completely loader
+ * Depending on the meta_rule, the rule array will be filled by subject(s), object(s) or an action(s)
+ * the only way to know if rule[i] contains a subject/object/action is to check
+ * how many subject/object/action are associated to a MetaRule
+ * For example if the associated MetaRule contains 2 subjects, 1 object and 2 actions
+ * then the 2 first elements of rule array are 2 subject, the third one will be an object, and the 2 last will be action
* @param index
* @param rule
*/
@@ -145,7 +151,7 @@
rule.rule_value = Array.apply(null, new Array(rule.rule.length)).map(function(){
return {
category: {}
- }
+ };
});
}
@@ -200,10 +206,11 @@
rule.rule_value[index].callCategoryInProgress = false;
rule.rule_value[index].category = {
name : 'ERROR'
- }
+ };
}
}
+
// if the call is in progress return false
return false;
}
@@ -220,7 +227,7 @@
var ind = index + 1;
- return rule.meta_rule.subject_categories.length < ind && ind <= ( rule.meta_rule.object_categories.length + rule.meta_rule.subject_categories.length );
+ return rule.meta_rule.subject_categories.length < ind && ind <= ( rule.meta_rule.object_categories.length + rule.meta_rule.subject_categories.length );
}
@@ -240,7 +247,6 @@
return list.getRules().length > 0;
}
-
/**
* Refresh the table
*/
@@ -249,6 +255,48 @@
list.table.reload();
}
+ function addRulesToList(event, rules){
+ list.rules.push(rules);
+ refreshRules();
+ }
+
+ /**
+ * Delete
+ */
+ function deleteRules(rules){
+
+ rules.loader = true;
+
+ rulesService.delete(rules.id, list.policy.id, deleteRulesSuccess, deleteRulesError );
+
+ function deleteRulesSuccess(){
+
+ $translate('moon.policy.rules.edit.action.add.delete.success').then( function(translatedValue) {
+ alertService.alertSuccess(translatedValue);
+ });
+
+ removeRulesFromList(rules);
+ refreshRules();
+
+ rules.loader = false;
+
+ }
+
+ function deleteRulesError(reason){
+
+ $translate('moon.policy.rules.edit.action.add.delete.success', {reason: reason.message}).then( function(translatedValue) {
+ alertService.alertError(translatedValue);
+ });
+
+ rules.loader = false;
+
+ }
+
+ }
+
+ function removeRulesFromList(rules){
+ list.rules = _.without(list.rules, rules);
+ }
}
})(); \ No newline at end of file