diff --git a/frontend/app/scripts/controllers/case/CaseProceduresCtrl.js b/frontend/app/scripts/controllers/case/CaseProceduresCtrl.js index eb8882dc05..1624b4aaac 100644 --- a/frontend/app/scripts/controllers/case/CaseProceduresCtrl.js +++ b/frontend/app/scripts/controllers/case/CaseProceduresCtrl.js @@ -34,7 +34,7 @@ }); }; - this.showProcedure = function(procedure) { + this.addProcedure = function(procedure) { var modalInstance = $uibModal.open({ animation: true, templateUrl: 'views/partials/case/procedures/add-procedure.modal.html', @@ -91,7 +91,7 @@ {'_name': 'getCase', "idOrName": self.caseId}, {'_name': 'procedures'} ], - extraData: ['pattern'] + extraData: ['pattern', 'patternParent'] }); }; diff --git a/frontend/app/scripts/controllers/case/procedure/AddProcedureModalCtrl.js b/frontend/app/scripts/controllers/case/procedure/AddProcedureModalCtrl.js index a4a90a56ba..a0eb17c6a4 100644 --- a/frontend/app/scripts/controllers/case/procedure/AddProcedureModalCtrl.js +++ b/frontend/app/scripts/controllers/case/procedure/AddProcedureModalCtrl.js @@ -14,7 +14,9 @@ }; this.cancel = function() { - $rootScope.markdownEditorObjects.procedure.hidePreview(); + if($rootScope.markdownEditorObjects.procedure) { + $rootScope.markdownEditorObjects.procedure.hidePreview(); + } $uibModalInstance.dismiss(); }; diff --git a/frontend/app/scripts/services/api/AttackPatternSrv.js b/frontend/app/scripts/services/api/AttackPatternSrv.js index 53fc54ccd3..bf1188e902 100644 --- a/frontend/app/scripts/services/api/AttackPatternSrv.js +++ b/frontend/app/scripts/services/api/AttackPatternSrv.js @@ -107,11 +107,6 @@ { _field: 'revoked', _value: false - }, - { - _not: { - _contains: 'parent' - } } ] }, @@ -119,9 +114,14 @@ page: { from: 0, to: 100, - extraData: ['children'] + extraData: ['parent'] } }).then(function(techniques) { + + _.each(techniques, function(technique) { + technique.isSubTechnique = !!technique.extraData.parent; + }); + self.tacticsCache[tactic] = techniques; defer.resolve(techniques); diff --git a/frontend/app/styles/case.css b/frontend/app/styles/case.css index e552d0d14f..839531f7eb 100644 --- a/frontend/app/styles/case.css +++ b/frontend/app/styles/case.css @@ -95,12 +95,3 @@ pre.error-trace { white-space: pre-wrap; background-color: #f9f1f1; } - -.procedure-techniques-list { - height: 200px; - overflow-y: scroll; - border-radius: 0; - box-shadow: none; - border: 1px solid #d2d6de; - -} diff --git a/frontend/app/styles/procedure.css b/frontend/app/styles/procedure.css index 0830b99657..e74f2059cd 100644 --- a/frontend/app/styles/procedure.css +++ b/frontend/app/styles/procedure.css @@ -4,7 +4,7 @@ } .ttp-tactic { - width: 200px; + width: 250px; vertical-align: middle; } .ttp-name { @@ -78,3 +78,47 @@ font-weight: bold; padding: 10px; } + +.procedure-techniques-list { + /* height: 400px; + overflow-y: scroll; */ + border-radius: 0; + box-shadow: none; + border: 1px solid #d2d6de; +} + +.procedure-techniques-list .tooltip { + width: 600px; + text-align: left; +} +.procedure-techniques-list .tooltip-inner { + max-width: 100%; + text-align: left; +} + +.procedure-techniques-list .procedure-techniques-item { + display: block; + padding: 2px 5px; +} + +.procedure-techniques-list .procedure-techniques-item:hover { + background-color: #f5f5f5; +} + +.procedure-techniques-list .procedure-techniques-item.active, +.procedure-techniques-list .procedure-techniques-item.active:hover { + background-color: #3c8dbc; + color: #fff; +} + +.procedure-techniques-list .procedure-techniques-item.active a{ + color: #fff; +} + +.procedure-technique { + display: block; +} + +.procedure-technique.sub-technique { + margin-left: 30px; +} diff --git a/frontend/app/views/partials/case/case.procedures.html b/frontend/app/views/partials/case/case.procedures.html index 9546bee7b9..a89cf3a6db 100644 --- a/frontend/app/views/partials/case/case.procedures.html +++ b/frontend/app/views/partials/case/case.procedures.html @@ -66,14 +66,14 @@
This field is required.
+This field is required.
+The field is required.
+This field is required.
This field is required.
+ + + +This field is required.
The field is required.
-