aboutsummaryrefslogtreecommitdiffstats
path: root/moon_dashboard/moon/static/moon/model
diff options
context:
space:
mode:
Diffstat (limited to 'moon_dashboard/moon/static/moon/model')
-rw-r--r--moon_dashboard/moon/static/moon/model/model.controller.js316
-rw-r--r--moon_dashboard/moon/static/moon/model/model.html139
-rwxr-xr-xmoon_dashboard/moon/static/moon/model/model.service.js291
-rwxr-xr-xmoon_dashboard/moon/static/moon/model/model.service.spec.js288
4 files changed, 0 insertions, 1034 deletions
diff --git a/moon_dashboard/moon/static/moon/model/model.controller.js b/moon_dashboard/moon/static/moon/model/model.controller.js
deleted file mode 100644
index 99a7c7ed..00000000
--- a/moon_dashboard/moon/static/moon/model/model.controller.js
+++ /dev/null
@@ -1,316 +0,0 @@
-(function () {
- 'use strict';
-
- angular
- .module('moon')
- .directive('onReadFile', directive)
- .controller('moon.model.controller', controller);
-
- controller.$inject = ['moon.util.service', 'moon.model.service', 'moon.import.service', 'horizon.framework.widgets.form.ModalFormService'];
-
- directive.$inject = ['$parse'];
-
- function directive($parse) {
- return {
- restrict: 'A',
- scope: false,
- link: function (scope, element, attrs) {
- element.bind('change', function (e) {
-
- var onFileRead = $parse(attrs.onReadFile);
- var reader = new FileReader();
-
- reader.onload = function () {
- var fileContents = reader.result;
- scope.$apply(function () {
- onFileRead(scope, {
- 'contents': fileContents
- });
- });
- };
- reader.readAsText(element[0].files[0]);
- });
- }
- };
- }
-
- var categoryMap = {
- 'subject': {
- addTitle: 'Add Subject Category',
- removeTitleFromMetaRule: 'Are you sure to remove from meta rule this Subject Category?',
- removeTitle: 'Are you sure to remove this Subject Category?',
- listName: 'subject_categories',
- serviceListName: 'subjectCategories'
- },
- 'object': {
- addTitle: 'Add Object Category',
- removeTitleFromMetaRule: 'Are you sure to remove from meta rule this Object Category?',
- removeTitle: 'Are you sure to remove this Object Category?',
- listName: 'object_categories',
- serviceListName: 'objectCategories'
- },
- 'action': {
- addTitle: 'Add Action Category',
- removeTitleFromMetaRule: 'Are you sure to remove from meta rule this Action Category?',
- removeTitle: 'Are you sure to remove this Action Category?',
- listName: 'action_categories',
- serviceListName: 'actionCategories'
- },
- }
-
- function controller(util, modelService, importService, ModalFormService) {
- var self = this;
- self.model = modelService;
- self.showOrphan = false;
- modelService.initialize();
-
- self.importData = function importData(text) {
- horizon.modals.modal_spinner(gettext("Loading"))
- importService.importData(JSON.parse(text)).then(function () {
- modelService.initialize();
- horizon.modals.spinner.modal('hide');
- })
- }
-
- self.createModel = function createModel() {
- var schema = {
- type: "object",
- properties: {
- name: { type: "string", minLength: 2, title: gettext("Name") },
- description: { type: "string", minLength: 2, title: gettext("Description") }
- },
- required: ['name', 'description']
- };
- var model = { name: '', description: '' };
- var config = {
- title: gettext('Create Model'),
- schema: schema,
- form: ['name', { key: 'description', type: 'textarea' }],
- model: model
- };
- ModalFormService.open(config).then(submit);
-
- function submit(form) {
- modelService.createModel(form.model);
- }
- }
-
- self.updateModel = function updateModel(model) {
- var schema = {
- type: "object",
- properties: {
- name: { type: "string", minLength: 2, title: gettext("Name") },
- description: { type: "string", minLength: 2, title: gettext("Description") }
- },
- required: ['name', 'description']
- };
- var config = {
- title: gettext('Update Model'),
- schema: schema,
- form: ['name', { key: 'description', type: 'textarea' }],
- model: angular.copy(model)
- };
- ModalFormService.open(config).then(submit);
-
- function submit(form) {
- modelService.updateModel(form.model);
- }
- }
-
- self.removeModel = function removeModel(model) {
- if (confirm(gettext('Are you sure to delete this Model?')))
- modelService.removeModel(model);
- }
-
- self.createMetaRuleFunction = function createMetaRuleFunction(model, titleMap) {
- return function () {
- var schema = {
- type: "object",
- properties: {
- name: { type: "string", minLength: 2, title: gettext("Name") },
- description: { type: "string", minLength: 2, title: gettext("Description") },
- },
- required: ['name', 'description']
- };
- var metaRule = { name: '', description: '' };
- var config = {
- title: gettext('Create Meta Rule'),
- schema: schema,
- form: [
- 'name',
- { key: 'description', type: 'textarea' }
- ],
- model: metaRule
- };
- ModalFormService.open(config).then(submit);
-
- function submit(form) {
- modelService.createMetaRule(form.model).then(function (metaRule) {
- titleMap.push({ value: metaRule.id, name: metaRule.name })
- model.id = metaRule.id
- })
- }
- }
- }
-
- self.addMetaRule = function addMetaRule(model) {
- var schema = {
- type: "object",
- properties: {
- id: { type: "string", title: gettext("Select a Meta Rule:") }
- },
- required: ['id']
- };
- var titleMap = util.arrayToTitleMap(modelService.metaRules)
- var formModel = { id: null }
- var config = {
- title: gettext('Add Meta Rule'),
- schema: schema,
- form: [
- { key: 'id', type: 'select', titleMap: titleMap },
- {
- key: 'createButton',
- type: 'button',
- title: gettext('Create Meta Rule'),
- icon: 'fa fa-plus',
- onClick: self.createMetaRuleFunction(formModel, titleMap)
- }
- ],
- model: formModel
- };
- if (modelService.metaRules.length == 1) {
- formModel.id = modelService.metaRules[0].id
- }
-
- ModalFormService.open(config).then(submit);
-
- function submit(form) {
- var metaRule = modelService.getMetaRule(form.model.id);
- var modelCopy = angular.copy(model);
- modelCopy.meta_rules.push(metaRule);
- modelService.updateModel(modelCopy);
- }
- }
-
- self.updateMetaRule = function updateMetaRule(metaRule) {
- var schema = {
- type: "object",
- properties: {
- name: { type: "string", minLength: 2, title: gettext("Name") },
- description: { type: "string", minLength: 2, title: gettext("Description") }
- },
- required: ['name', 'description']
- };
- var metaRuleCopy = angular.copy(metaRule);
- var config = {
- title: gettext('Update Meta Rule'),
- schema: schema,
- form: ['name', { key: 'description', type: 'textarea' }],
- model: metaRuleCopy
- };
- ModalFormService.open(config).then(submit);
-
- function submit(form) {
- modelService.updateMetaRule(form.model);
- }
- }
-
- self.removeMetaRuleFromModel = function removeMetaRuleFromModel(model, metaRule) {
- if (confirm(gettext('Are you sure to remove this Meta Rule from model?'))) {
- var modelCopy = angular.copy(model);
- modelCopy.meta_rules.splice(model.meta_rules.indexOf(metaRule), 1);
- modelService.updateModel(modelCopy);
- }
- }
-
- self.removeMetaRule = function removeMetaRule(metaRule) {
- if (confirm(gettext('Are you sure to remove this Meta Rule?'))) {
- modelService.removeMetaRule(metaRule);
- }
- }
-
- self.createCategoryFunction = function createCategoryFunction(type, formModel, titleMap) {
- return function () {
- var schema = {
- type: "object",
- properties: {
- name: { type: "string", minLength: 2, title: gettext("Name") },
- description: { type: "string", minLength: 2, title: gettext("Description") },
- },
- required: ['name', 'description']
- };
- var metaRule = { name: '', description: '' };
- var config = {
- title: gettext('Create Category'),
- schema: schema,
- form: [
- 'name',
- { key: 'description', type: 'textarea' }
- ],
- model: metaRule
- };
- ModalFormService.open(config).then(submit);
-
- function submit(form) {
- modelService.createCategory(type, form.model).then(function (category) {
- titleMap.push({ value: category.id, name: category.name })
- formModel.id = category.id
- })
- }
- }
- }
-
- self.addCategory = function addCategory(type, metaRule) {
- var typeValue = categoryMap[type];
- var schema = {
- type: "object",
- properties: {
- id: { type: "string", title: gettext("Select a Category:") }
- },
- required: ['id']
- };
- var titleMap = util.arrayToTitleMap(modelService[typeValue.serviceListName])
- var formModel = { id: null }
- var config = {
- title: gettext(typeValue.addTitle),
- schema: schema,
- form: [
- { key: 'id', type: 'select', titleMap: titleMap },
- {
- key: 'createButton',
- type: 'button',
- title: gettext('Create Category'),
- icon: 'fa fa-plus',
- onClick: self.createCategoryFunction(type, formModel, titleMap)
- }],
- model: formModel
- };
- ModalFormService.open(config).then(submit);
-
- function submit(form) {
- var category = modelService.getCategory(type, form.model.id);
- var metaRuleCopy = angular.copy(metaRule);
- metaRuleCopy[typeValue.listName].push(category);
- modelService.updateMetaRule(metaRuleCopy)
- }
- }
-
- self.removeCategoryFromMetaRule = function removeCategoryFromMetaRule(type, metaRule, category) {
- var typeValue = categoryMap[type];
- if (confirm(gettext(typeValue.removeTitleFromMetaRule))) {
- var metaRuleCopy = angular.copy(metaRule);
- metaRuleCopy[typeValue.listName].splice(metaRule[typeValue.listName].indexOf(category), 1);
- modelService.updateMetaRule(metaRuleCopy);
- }
- }
-
- self.removeCategory = function removeCategory(type, category) {
- var typeValue = categoryMap[type];
- if (confirm(gettext(typeValue.removeTitle))) {
- modelService.removeCategory(type, category);
- }
- }
-
-
- }
-})(); \ No newline at end of file
diff --git a/moon_dashboard/moon/static/moon/model/model.html b/moon_dashboard/moon/static/moon/model/model.html
deleted file mode 100644
index 97f08910..00000000
--- a/moon_dashboard/moon/static/moon/model/model.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<div ng-controller="moon.model.controller as ctrl">
- <div ng-if="ctrl.model.orphanMetaRules.length
- || ctrl.model.orphanSubjectCategories.length
- || ctrl.model.orphanActionCategories.length
- || ctrl.model.orphanObjectCategories.length" class="alert alert-dismissable alert-warning">
- <button type="button" class="close" data-dismiss="alert" ng-click="ctrl.showOrphan=false">×</button>
- <h4 translate>Warning!</h4>
- <p translate>
- Some metarules or categories are orphan, please check them and delete them if necessary.
- <a href="" ng-click="ctrl.showOrphan=true" ng-show="!ctrl.showOrphan" translate>Show orphans</a>
- <a href="" ng-click="ctrl.showOrphan=false" ng-show="ctrl.showOrphan" translate>Hide orphans</a>
- </p>
- </div>
-
- <div class="row" ng-show="ctrl.showOrphan">
- <div class="list-group col-lg-3" ng-if="ctrl.model.orphanMetaRules.length">
- <h3 class="list-group-item active" translate>Orphan Meta rules</h3>
- <div ng-repeat="metaRule in ctrl.model.orphanMetaRules | orderBy:'name'" class="list-group-item">
- <h4 class="list-group-item-heading inline">{$ metaRule.name $}</h4>
- <button type="button" class="fa fa-trash pull-right" ng-click="ctrl.removeMetaRule(metaRule)" title="{$ 'Remove Meta rule' | translate $}"></button>
- <p class="list-group-item-text">{$ metaRule.description $}</p>
- </div>
- </div>
-
- <div class="list-group col-lg-3" ng-if="ctrl.model.orphanSubjectCategories.length">
- <h3 class="list-group-item active" translate>Orphan Subject categories</h3>
- <div ng-repeat="subject in ctrl.model.orphanSubjectCategories | orderBy:'name'" class="list-group-item">
- <h4 class="list-group-item-heading inline">{$ subject.name $}</h4>
- <button type="button" class="fa fa-trash pull-right" ng-click="ctrl.removeCategory('subject', subject)" title="{$ 'Remove Subject category' | translate $}"></button>
- <p class="list-group-item-text">{$ subject.description $}</p>
- </div>
- </div>
-
- <div class="list-group col-lg-3" ng-if="ctrl.model.orphanObjectCategories.length">
- <h3 class="list-group-item active" translate>Orphan Object categories</h3>
- <div ng-repeat="object in ctrl.model.orphanObjectCategories | orderBy:'name'" class="list-group-item">
- <h4 class="list-group-item-heading inline">{$ object.name $}</h4>
- <button type="button" class="fa fa-trash pull-right" ng-click="ctrl.removeCategory('object', object)" title="{$ 'Remove Object category' | translate $}"></button>
- <p class="list-group-item-text">{$ object.description $}</p>
- </div>
- </div>
-
- <div class="list-group col-lg-3" ng-if="ctrl.model.orphanActionCategories.length">
- <h3 class="list-group-item active" translate>Orphan Action categories</h3>
- <div ng-repeat="action in ctrl.model.orphanActionCategories | orderBy:'name'" class="list-group-item">
- <h4 class="list-group-item-heading inline">{$ action.name $}</h4>
- <button type="button" class="fa fa-trash pull-right" ng-click="ctrl.removeCategory('action', action)" title="{$ 'Remove Action category' | translate $}"></button>
- <p class="list-group-item-text">{$ action.description $}</p>
- </div>
- </div>
- </div>
-
- <div class="clearfix list-group">
- <div class="pull-right">
- <input type="search" class="form-control filter" placeholder="Filter" ng-model="filterText">
- <button type="button" class="btn btn-default" ng-click="ctrl.createModel()">
- <span class="fa fa-plus"></span>
- <translate>Create Model</translate>
- </button>
- <label for="file" class="label-file btn btn-primary">
- <span class="fa fa-upload"></span>
- <translate>Import</translate>
- </label>
- <input id="file" class="input-file" type="file" on-read-file="ctrl.importData(contents)" accept="application/json,.json"/>
- </div>
- </div>
-
-
- <div class="list-group">
- <div ng-repeat="model in ctrl.model.models | orderBy:'name' | filter:filterText " class="list-group-item">
- <h3 class="list-group-item-heading inline">{$ model.name $}</h3>
- <div class="pull-right">
- <button type="button" class="fa fa-trash" ng-click="ctrl.removeModel(model)" title="{$ 'Remove Model' | translate $}"></button>
- <button type="button" class="fa fa-edit" ng-click="ctrl.updateModel(model)" title="{$ 'Edit Model' | translate $}"></button>
- </div>
- <p class="list-group-item-text">{$ model.description $}</p>
- <details class="list-group-item-text">
- <summary>
- <h4 class="inline">{$ model.meta_rules.length $}
- <translate>meta rule(s)</translate>
- </h4>
- <button type="button" class="fa fa-plus " ng-click="ctrl.addMetaRule(model)" title="{$ 'Add Meta Rule' | translate $}"></button>
- </summary>
- <div class="list-group">
- <div ng-repeat="metaRule in model.meta_rules | orderBy:'name'" class="list-group-item">
- <h3 class="list-group-item-heading inline">{$ metaRule.name $}</h3>
- <div class="pull-right">
- <button type="button" class="fa fa-trash" ng-click="ctrl.removeMetaRuleFromModel(model, metaRule)" title="{$ 'Remove Meta Rule' | translate $}"></button>
- <button type="button" class="fa fa-edit" ng-click="ctrl.updateMetaRule(metaRule)" title="{$ 'Edit Meta Rule' | translate $}"></button>
- </div>
- <p class="list-group-item-text">{$ metaRule.description $}</p>
- <p class="list-group-item-text">
- <table class="table categories">
- <thead>
- <tr>
- <th>
- <span translate>Subjects</span>
- <button type="button" class="fa fa-plus pull-right" ng-click="ctrl.addCategory('subject', metaRule)" title="{$ 'Add Subject' | translate $}"></button>
- </th>
- <th>
- <span translate>Objects</span>
- <button type="button" class="fa fa-plus pull-right" ng-click="ctrl.addCategory('object', metaRule)" title="{$ 'Add Object' | translate $}"></button>
- </th>
- <th>
- <span translate>Actions</span>
- <button type="button" class="fa fa-plus pull-right" ng-click="ctrl.addCategory('action', metaRule)" title="{$ 'Add Action' | translate $}"></button>
- </th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <p ng-repeat="category in metaRule.subject_categories">
- <span title="{$ category.description $}">{$ category.name $}</span>
- <button type="button" class="fa fa-trash pull-right" ng-click="ctrl.removeCategoryFromMetaRule('subject', metaRule, category)" title="{$ 'Remove Subject' | translate $}"></button>
- </p>
- </td>
- <td>
- <p ng-repeat="category in metaRule.object_categories">
- <span title="{$ category.description $}">{$ category.name $}</span>
- <button type="button" class="fa fa-trash pull-right" ng-click="ctrl.removeCategoryFromMetaRule('object', metaRule, category)" title="{$ 'Remove Object' | translate $}"></button>
- </p>
- </td>
- <td>
- <p ng-repeat="category in metaRule.action_categories">
- <span title="{$ category.description $}">{$ category.name $}</span>
- <button type="button" class="fa fa-trash pull-right" ng-click="ctrl.removeCategoryFromMetaRule('action', metaRule, category)" title="{$ 'Remove Action' | translate $}"></button>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
- </p>
- </div>
- </div>
- </details>
- </div>
- </div>
-</div> \ No newline at end of file
diff --git a/moon_dashboard/moon/static/moon/model/model.service.js b/moon_dashboard/moon/static/moon/model/model.service.js
deleted file mode 100755
index 986eb6b1..00000000
--- a/moon_dashboard/moon/static/moon/model/model.service.js
+++ /dev/null
@@ -1,291 +0,0 @@
-(function () {
-
- 'use strict';
-
- angular
- .module('moon')
- .factory('moon.model.service', modelService);
-
- modelService.$inject = ['moon.util.service', '$resource', 'moon.URI', '$q'];
-
- function modelService(util, $resource, URI, $q) {
- var host = URI.API;
- var modelResource = $resource(host + '/models/' + ':id', {}, {
- get: { method: 'GET' },
- query: { method: 'GET' },
- create: { method: 'POST' },
- remove: { method: 'DELETE' },
- update: { method: 'PATCH' }
- });
-
- var metaRuleResource = $resource(host + '/meta_rules/' + ':id', {}, {
- query: { method: 'GET' },
- get: { method: 'GET' },
- update: { method: 'PATCH' },
- create: { method: 'POST' },
- remove: { method: 'DELETE' }
- });
-
- var subjectCategoryResource = $resource(host + '/subject_categories/' + ':id', {}, {
- query: { method: 'GET' },
- get: { method: 'GET' },
- create: { method: 'POST' },
- remove: { method: 'DELETE' }
- });
-
- var objectCategoryResource = $resource(host + '/object_categories/' + ':id', {}, {
- query: { method: 'GET' },
- get: { method: 'GET' },
- create: { method: 'POST' },
- remove: { method: 'DELETE' }
- });
-
- var actionCategoryResource = $resource(host + '/action_categories/' + ':id', {}, {
- query: { method: 'GET' },
- get: { method: 'GET' },
- create: { method: 'POST' },
- remove: { method: 'DELETE' }
- });
-
- var modelsMap = {};
- var metaRulesMap = {};
- var subjectCategoriesMap = {};
- var objectCategoriesMap = {};
- var actionCategoriesMap = {};
- var models = [];
- var metaRules = [];
- var orphanMetaRules = [];
- var subjectCategories = [];
- var objectCategories = [];
- var actionCategories = [];
- var orphanSubjectCategories = [];
- var orphanObjectCategories = [];
- var orphanActionCategories = [];
-
- var categoryMap = {
- 'subject': {
- resource: subjectCategoryResource,
- map: subjectCategoriesMap,
- list: subjectCategories,
- listName: 'subject_categories'
- },
- 'object': {
- resource: objectCategoryResource,
- map: objectCategoriesMap,
- list: objectCategories,
- listName: 'object_categories'
- },
- 'action': {
- resource: actionCategoryResource,
- map: actionCategoriesMap,
- list: actionCategories,
- listName: 'action_categories'
- }
- }
-
- function loadModels() {
- var queries = {
- subjectCategories: subjectCategoryResource.query().$promise,
- objectCategories: objectCategoryResource.query().$promise,
- actionCategories: actionCategoryResource.query().$promise,
- metaRules: metaRuleResource.query().$promise,
- models: modelResource.query().$promise,
- }
-
- var result = $q.all(queries).then(function (result) {
- createModels(result.models, result.metaRules, result.subjectCategories, result.objectCategories, result.actionCategories)
- console.log('moon', 'models initialized')
- })
-
- return result;
- }
-
- function createModels(modelsData, metarulesData, subjectCategoriesData, objectCategoriesData, actionCategoriesData) {
- util.cleanObject(modelsMap);
- util.cleanObject(metaRulesMap);
- util.cleanObject(subjectCategoriesMap);
- util.cleanObject(objectCategoriesMap);
- util.cleanObject(actionCategoriesMap);
- models.splice(0, models.length);
- metaRules.splice(0, metaRules.length);
- subjectCategories.splice(0, subjectCategories.length);
- objectCategories.splice(0, objectCategories.length);
- actionCategories.splice(0, actionCategories.length);
- if (subjectCategoriesData.subject_categories) createCategoryInternal('subject', subjectCategoriesData.subject_categories);
- if (objectCategoriesData.object_categories) createCategoryInternal('object', objectCategoriesData.object_categories);
- if (actionCategoriesData.action_categories) createCategoryInternal('action', actionCategoriesData.action_categories);
- if (metarulesData.meta_rules) createMetaRuleInternal(metarulesData.meta_rules);
- if (modelsData.models) createModelInternal(modelsData.models);
- updateOrphan();
- }
-
- function mapModel(model) {
- util.mapIdToItem(model.meta_rules, metaRulesMap);
- }
-
- function createModelInternal(data) {
- return util.createInternal(data, models, modelsMap, mapModel);
- }
-
- function updateModelInternal(data) {
- return util.updateInternal(data, modelsMap, mapModel);
- }
-
- function removeModelInternal(id) {
- return util.removeInternal(id, models, modelsMap);
- }
-
- function mapMetaRule(metaRule) {
- util.mapIdToItem(metaRule.subject_categories, subjectCategoriesMap);
- util.mapIdToItem(metaRule.object_categories, objectCategoriesMap);
- util.mapIdToItem(metaRule.action_categories, actionCategoriesMap);
- }
-
- function createMetaRuleInternal(data) {
- return util.createInternal(data, metaRules, metaRulesMap, mapMetaRule);
- }
-
- function updateMetaRuleInternal(data) {
- return util.updateInternal(data, metaRulesMap, mapMetaRule);
- }
-
- function removeMetaRuleInternal(id) {
- return util.removeInternal(id, metaRules, metaRulesMap);
- }
-
- function createCategoryInternal(type, data) {
- var categoryValue = categoryMap[type];
- return util.createInternal(data, categoryValue.list, categoryValue.map)
- }
-
- function removeCategoryInternal(type, id) {
- var categoryValue = categoryMap[type];
- return util.removeInternal(id, categoryValue.list, categoryValue.map);
- }
-
- function updateOrphan() {
- updateOrphanInternal(metaRules, orphanMetaRules, models, "meta_rules");
- updateOrphanInternal(subjectCategories, orphanSubjectCategories, metaRules, "subject_categories");
- updateOrphanInternal(objectCategories, orphanObjectCategories, metaRules, "object_categories");
- updateOrphanInternal(actionCategories, orphanActionCategories, metaRules, "action_categories");
- }
-
- function updateOrphanInternal(list, orphanList, parentList, childListName) {
- orphanList.splice(0, orphanList.length);
- util.pushAll(orphanList, list);
- for (var i = 0; i < parentList.length; i++) {
- var parent = parentList[i];
- var children = parent[childListName];
- if (children) {
- for (var j = 0; j < children.length; j++) {
- var child = children[j];
- var notOrphanIndex = util.indexOf(orphanList, "id", child.id);
- if (notOrphanIndex >= 0) {
- orphanList.splice(notOrphanIndex, 1);
- }
- }
- }
- }
- }
-
-
- return {
- initialize: loadModels,
- createModels: createModels,
- models: models,
- metaRules: metaRules,
- orphanMetaRules: orphanMetaRules,
- orphanSubjectCategories: orphanSubjectCategories,
- orphanObjectCategories: orphanObjectCategories,
- orphanActionCategories: orphanActionCategories,
- subjectCategories: subjectCategories,
- objectCategories: objectCategories,
- actionCategories: actionCategories,
- getModel: function getModel(id) {
- return modelsMap[id];
- },
- createModel: function createModel(model) {
- model.meta_rules = [];
- modelResource.create(null, model, success, util.displayErrorFunction('Unable to create model'));
-
- function success(data) {
- createModelInternal(data.models);
- util.displaySuccess('Model created');
- }
- },
- removeModel: function removeModel(model) {
- modelResource.remove({ id: model.id }, null, success, util.displayErrorFunction('Unable to remove model'));
-
- function success(data) {
- removeModelInternal(model.id);
- updateOrphan();
- util.displaySuccess('Model removed');
- }
- },
- updateModel: function updateModel(model) {
- util.mapItemToId(model.meta_rules)
- modelResource.update({ id: model.id }, model, success, util.displayErrorFunction('Unable to update model'));
-
- function success(data) {
- updateModelInternal(data.models)
- updateOrphan();
- util.displaySuccess('Model updated');
- }
- },
- getMetaRule: function getMetaRule(id) {
- return metaRulesMap[id];
- },
- createMetaRule: function createMetaRule(metaRule) {
- metaRule.subject_categories = [];
- metaRule.object_categories = [];
- metaRule.action_categories = [];
-
- return metaRuleResource.create(null, metaRule).$promise.then(function (data) {
- util.displaySuccess('Meta Rule created');
- return createMetaRuleInternal(data.meta_rules)[0];
- }, util.displayErrorFunction('Unable to create meta rule'))
- },
- updateMetaRule: function updateMetaRule(metaRule) {
- util.mapItemToId(metaRule.subject_categories);
- util.mapItemToId(metaRule.object_categories);
- util.mapItemToId(metaRule.action_categories);
- metaRuleResource.update({ id: metaRule.id }, metaRule, success, util.displayErrorFunction('Unable to update meta rule'));
-
- function success(data) {
- updateMetaRuleInternal(data.meta_rules);
- updateOrphan();
- util.displaySuccess('Meta Rule updated');
- }
- },
- removeMetaRule: function removeMetaRule(metaRule) {
- metaRuleResource.remove({ id: metaRule.id }, null, success, util.displayErrorFunction('Unable to remove meta rule'));
-
- function success(data) {
- removeMetaRuleInternal(metaRule.id);
- updateOrphan();
- util.displaySuccess('Meta Rule removed');
- }
- },
- getCategory: function getCategory(type, id) {
- return categoryMap[type].map[id];
- },
- createCategory: function createCategory(type, category) {
- var categoryValue = categoryMap[type];
- return categoryValue.resource.create({}, category).$promise.then(function (data) {
- util.displaySuccess('Category created');
- return createCategoryInternal(type, data[categoryValue.listName])[0];
- }, util.displayErrorFunction('Unable to create category'))
- },
- removeCategory: function removeCategory(type, category) {
- var categoryValue = categoryMap[type];
- categoryValue.resource.remove({ id: category.id }, null, success, util.displayErrorFunction('Unable to remove category'));
-
- function success(data) {
- removeCategoryInternal(type, category.id);
- updateOrphan();
- util.displaySuccess('Category removed');
- }
- },
- }
- }
-})(); \ No newline at end of file
diff --git a/moon_dashboard/moon/static/moon/model/model.service.spec.js b/moon_dashboard/moon/static/moon/model/model.service.spec.js
deleted file mode 100755
index 04d47793..00000000
--- a/moon_dashboard/moon/static/moon/model/model.service.spec.js
+++ /dev/null
@@ -1,288 +0,0 @@
-(function () {
- 'use strict';
-
- describe('moon.model.service', function () {
- var service, $httpBackend, URI;
- var modelsData, metaRulesData, subjectCategoriesData, objectCategoriesData, actionCategoriesData;
-
- function initData() {
- modelsData = {
- models:
- { 'modelId1': { name: 'model1', description: 'mDescription1', meta_rules: ['metaRuleId1'] } }
- };
-
- subjectCategoriesData = {
- subject_categories:
- {
- 'subjectCategoryId1': { name: 'subjectCategory1', description: 'scDescription1' },
- 'subjectCategoryId2': { name: 'subjectCategory2', description: 'scDescription2' }
- },
- };
- objectCategoriesData = {
- object_categories:
- {
- 'objectCategoryId1': { name: 'objectCategory1', description: 'ocDescription1' },
- 'objectCategoryId2': { name: 'objectCategory2', description: 'ocDescription2' }
- }
- };
- actionCategoriesData = {
- action_categories:
- {
- 'actionCategoryId1': { name: 'actionCategory1', description: 'acDescription1' },
- 'actionCategoryId2': { name: 'actionCategory2', description: 'acDescription2' }
- }
- };
- metaRulesData = {
- meta_rules:
- {
- 'metaRuleId1': { name: 'metaRule1', description: 'mrDescription1', subject_categories: ['subjectCategoryId1'], object_categories: ['objectCategoryId1'], action_categories: ['actionCategoryId1'] },
- 'metaRuleId2': { name: 'metaRule2', description: 'mrDescription2', subject_categories: [], object_categories: [], action_categories: [] }
- }
- };
- }
-
- beforeEach(module('horizon.app.core'));
- beforeEach(module('horizon.framework'));
- beforeEach(module('moon'));
-
- beforeEach(inject(function ($injector) {
- service = $injector.get('moon.model.service');
- $httpBackend = $injector.get('$httpBackend');
- URI = $injector.get('moon.URI');
- }));
-
- afterEach(function () {
- $httpBackend.verifyNoOutstandingExpectation();
- $httpBackend.verifyNoOutstandingRequest();
- });
-
- it('should initialize', function () {
- initData();
- $httpBackend.expectGET(URI.API + '/subject_categories').respond(200, subjectCategoriesData);
- $httpBackend.expectGET(URI.API + '/object_categories').respond(200, objectCategoriesData);
- $httpBackend.expectGET(URI.API + '/action_categories').respond(200, actionCategoriesData);
- $httpBackend.expectGET(URI.API + '/meta_rules').respond(200, metaRulesData);
- $httpBackend.expectGET(URI.API + '/models').respond(200, modelsData);
-
- service.initialize();
- $httpBackend.flush();
-
- expect(service.models.length).toBe(1);
- var model = service.models[0];
- expect(model.id).toBe('modelId1');
- expect(model.name).toBe('model1');
- expect(model.description).toBe('mDescription1');
-
- expect(service.metaRules.length).toBe(2);
- expect(model.meta_rules.length).toBe(1);
- var metaRule = model.meta_rules[0];
- expect(metaRule.id).toBe('metaRuleId1');
- expect(metaRule.name).toBe('metaRule1');
- expect(metaRule.description).toBe('mrDescription1');
-
- expect(service.subjectCategories.length).toBe(2);
- expect(metaRule.subject_categories.length).toBe(1);
- var subjectCategory = metaRule.subject_categories[0];
- expect(subjectCategory.id).toBe('subjectCategoryId1');
- expect(subjectCategory.name).toBe('subjectCategory1');
- expect(subjectCategory.description).toBe('scDescription1');
-
- expect(service.objectCategories.length).toBe(2);
- expect(metaRule.object_categories.length).toBe(1);
- var objectCategory = metaRule.object_categories[0];
- expect(objectCategory.id).toBe('objectCategoryId1');
- expect(objectCategory.name).toBe('objectCategory1');
- expect(objectCategory.description).toBe('ocDescription1');
-
- expect(service.actionCategories.length).toBe(2);
- expect(metaRule.action_categories.length).toBe(1);
- var actionCategory = metaRule.action_categories[0];
- expect(actionCategory.id).toBe('actionCategoryId1');
- expect(actionCategory.name).toBe('actionCategory1');
- expect(actionCategory.description).toBe('acDescription1');
-
- expect(service.orphanMetaRules.length).toBe(1);
- metaRule = service.orphanMetaRules[0];
- expect(metaRule.id).toBe('metaRuleId2');
- expect(metaRule.name).toBe('metaRule2');
- expect(metaRule.description).toBe('mrDescription2');
-
- expect(service.orphanSubjectCategories.length).toBe(1);
- subjectCategory = service.orphanSubjectCategories[0];
- expect(subjectCategory.id).toBe('subjectCategoryId2');
- expect(subjectCategory.name).toBe('subjectCategory2');
- expect(subjectCategory.description).toBe('scDescription2');
-
- expect(service.orphanObjectCategories.length).toBe(1);
- objectCategory = service.orphanObjectCategories[0];
- expect(objectCategory.id).toBe('objectCategoryId2');
- expect(objectCategory.name).toBe('objectCategory2');
- expect(objectCategory.description).toBe('ocDescription2');
-
- expect(service.orphanActionCategories.length).toBe(1);
- actionCategory = service.orphanActionCategories[0];
- expect(actionCategory.id).toBe('actionCategoryId2');
- expect(actionCategory.name).toBe('actionCategory2');
- expect(actionCategory.description).toBe('acDescription2');
-
- });
-
-
-
- it('should create model', function () {
- var modelCreatedData = {
- models:
- { 'modelId1': { name: 'model1', description: 'mDescription1', meta_rules: [] } }
- };
-
- $httpBackend.expectPOST(URI.API + '/models').respond(200, modelCreatedData);
-
- service.createModel({ name: 'model1', description: 'mDescription1' });
- $httpBackend.flush();
-
- expect(service.models.length).toBe(1);
- var model = service.models[0];
- expect(model.id).toBe('modelId1');
- expect(model.name).toBe('model1');
- expect(model.description).toBe('mDescription1');
- });
-
- it('should remove model', function () {
- initData();
- service.createModels(modelsData, metaRulesData, subjectCategoriesData, objectCategoriesData, actionCategoriesData);
-
- $httpBackend.expectDELETE(URI.API + '/models/modelId1').respond(200);
-
- service.removeModel({ id: 'modelId1' });
- $httpBackend.flush();
-
- expect(service.models.length).toBe(0);
-
- expect(service.orphanMetaRules.length).toBe(2);
- });
-
- it('should update model', function () {
- initData();
- var modelUpdatedData = {
- models:
- { 'modelId1': { name: 'model2', description: 'mDescription2', meta_rules: ['metaRuleId2'] } }
- };
- service.createModels(modelsData, metaRulesData, subjectCategoriesData, objectCategoriesData, actionCategoriesData);
-
- $httpBackend.expectPATCH(URI.API + '/models/modelId1').respond(200, modelUpdatedData);
-
- service.updateModel({ id: 'modelId1', name: 'model2', description: 'mDescription2', meta_rules: service.getMetaRule('metaRuleId2') });
- $httpBackend.flush();
-
- expect(service.models.length).toBe(1);
- var model = service.models[0];
- expect(model.id).toBe('modelId1');
- expect(model.name).toBe('model2');
- expect(model.description).toBe('mDescription2');
-
- expect(model.meta_rules.length).toBe(1);
- var metaRule = model.meta_rules[0];
- expect(metaRule.id).toBe('metaRuleId2');
-
- expect(service.orphanMetaRules.length).toBe(1);
- metaRule = service.orphanMetaRules[0];
- expect(metaRule.id).toBe('metaRuleId1');
- });
-
- it('should create meta rule', function () {
- var metaRuleCreatedData = {
- meta_rules:
- { 'metaRuleId1': { name: 'metaRule1', description: 'mrDescription1' } }
- };
-
- $httpBackend.expectPOST(URI.API + '/meta_rules').respond(200, metaRuleCreatedData);
-
- service.createMetaRule({ name: 'metaRule1', description: 'mrDescription1' });
- $httpBackend.flush();
-
- expect(service.metaRules.length).toBe(1);
- var metaRule = service.metaRules[0];
- expect(metaRule.id).toBe('metaRuleId1');
- expect(metaRule.name).toBe('metaRule1');
- expect(metaRule.description).toBe('mrDescription1');
- });
-
- it('should update meta rule', function () {
- initData();
- var metaRuleUpdatedData = {
- meta_rules:
- { 'metaRuleId1': { name: 'metaRule2', description: 'mrDescription2', subject_categories: ['subjectCategoryId2'], object_categories: ['objectCategoryId2'], action_categories: ['actionCategoryId2'] } }
- };
- service.createModels(modelsData, metaRulesData, subjectCategoriesData, objectCategoriesData, actionCategoriesData);
-
- $httpBackend.expectPATCH(URI.API + '/meta_rules/metaRuleId1').respond(200, metaRuleUpdatedData);
-
- service.updateMetaRule({ id: 'metaRuleId1', name: 'metaRule2', description: 'mrDescription2', subject_categories: [service.getCategory('subject', 'subjectCategoryId2')], object_categories: [service.getCategory('object', 'objectCategoryId2')], action_categories: [service.getCategory('action','actionCategoryId2')] });
- $httpBackend.flush();
-
- var metaRule = service.getMetaRule('metaRuleId1');
- expect(metaRule.id).toBe('metaRuleId1');
- expect(metaRule.name).toBe('metaRule2');
- expect(metaRule.description).toBe('mrDescription2');
-
- expect(service.orphanSubjectCategories.length).toBe(1);
- var subjectCategory = service.orphanSubjectCategories[0];
- expect(subjectCategory.id).toBe('subjectCategoryId1');
-
- expect(service.orphanObjectCategories.length).toBe(1);
- var objectCategory = service.orphanObjectCategories[0];
- expect(objectCategory.id).toBe('objectCategoryId1');
-
- expect(service.orphanActionCategories.length).toBe(1);
- var actionCategory = service.orphanActionCategories[0];
- expect(actionCategory.id).toBe('actionCategoryId1');
- });
-
- it('should remove meta rule', function () {
- initData();
- service.createModels(modelsData, metaRulesData, subjectCategoriesData, objectCategoriesData, actionCategoriesData);
-
- $httpBackend.expectDELETE(URI.API + '/meta_rules/metaRuleId2').respond(200);
-
- service.removeMetaRule(service.getMetaRule('metaRuleId2'));
- $httpBackend.flush();
-
- expect(service.metaRules.length).toBe(1);
- expect(service.orphanMetaRules.length).toBe(0);
- });
-
- it('should create category', function () {
- var categoryCreatedData = {
- subject_categories:
- { 'subjectCategoryId1': { name: 'subjectCategory1', description: 'scDescription1' } }
- };
-
- $httpBackend.expectPOST(URI.API + '/subject_categories').respond(200, categoryCreatedData);
-
- service.createCategory('subject', { name: 'subjectCategory1', description: 'scDescription1' });
- $httpBackend.flush();
-
- expect(service.subjectCategories.length).toBe(1);
- var subjectCategory = service.subjectCategories[0];
- expect(subjectCategory.id).toBe('subjectCategoryId1');
- expect(subjectCategory.name).toBe('subjectCategory1');
- expect(subjectCategory.description).toBe('scDescription1');
- });
-
- it('should remove category', function () {
- initData();
- service.createModels(modelsData, metaRulesData, subjectCategoriesData, objectCategoriesData, actionCategoriesData);
-
- $httpBackend.expectDELETE(URI.API + '/subject_categories/subjectCategoryId2').respond(200);
-
- service.removeCategory('subject', service.getCategory('subject', 'subjectCategoryId2'));
- $httpBackend.flush();
-
- expect(service.subjectCategories.length).toBe(1);
- expect(service.orphanSubjectCategories.length).toBe(0);
- });
-
- });
-
-
-})(); \ No newline at end of file