diff options
Diffstat (limited to 'moon_dashboard/moon/static/moon/model')
-rw-r--r-- | moon_dashboard/moon/static/moon/model/model.controller.js | 316 | ||||
-rw-r--r-- | moon_dashboard/moon/static/moon/model/model.html | 139 | ||||
-rwxr-xr-x | moon_dashboard/moon/static/moon/model/model.service.js | 291 | ||||
-rwxr-xr-x | moon_dashboard/moon/static/moon/model/model.service.spec.js | 288 |
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 |