diff --git a/README.md b/README.md index d274256..6ab2f7c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## Release Information -- **Version**: 1.0.0 Preview +- **Version**: 1.0.1 Preview - **Certified**: No diff --git a/widget/info.json b/widget/info.json index 35079a2..63df3ad 100644 --- a/widget/info.json +++ b/widget/info.json @@ -2,9 +2,10 @@ "name": "mitreAttackSpread", "title": "MITRE ATT&CK Alert Incident Spread", "subTitle": "Detailed table view of Alerts and Incidents linked to MITRE ATT&CK records", - "version": "1.0.0", + "version": "1.0.1", "published_date": "1676526096", "metadata": { + "help_online":"https://github.com/fortinet-fortisoar/widget-mitre-attack-spread/blob/release/1.0.1/README.md", "description": "Provides a consolidated look into Alert and Incident threats under MITRE ATT&CK records. Requires MITRE ATT&CK Enrichment Framework installed and MITRE ATT&CK records ingested into FortiSOAR via MITRE ATT&CK Connector.", "pages": [ "Dashboard", diff --git a/widget/view.controller.js b/widget/view.controller.js index 1d28e6c..0d01b25 100644 --- a/widget/view.controller.js +++ b/widget/view.controller.js @@ -81,7 +81,7 @@ } }; - + if ($scope.config.incidentsQuery != undefined && $scope.config.incidentsQuery.filters.length != 0) { var old_incidents_filter = {"logic": $scope.incidents.query.logic, "filters": $scope.incidents.query.filters}; $scope.incidents.query.logic = "AND"; @@ -184,6 +184,7 @@ $scope.related_tactics = []; $scope.currentUser = usersService.getCurrentUser(); $scope.currentTheme = 'dark'; + $scope.changeMatrix = changeMatrix; $scope.globalRefresh = globalRefresh; $scope.hide_all = false; @@ -200,6 +201,10 @@ 'TA0038', 'TA0039', 'TA0108', 'TA0104', 'TA0110', 'TA0111', 'TA0103', 'TA0102', // ics 'TA0109', 'TA0100', 'TA0101', 'TA0107', 'TA0106', 'TA0105']; + $scope.enterprise_list = $scope.tactics_order.slice(0, 14); + $scope.mobile_list = $scope.tactics_order.slice(14, 28); + $scope.ics_list = $scope.tactics_order.slice(28); + $scope.selected_list = $scope.enterprise_list; init(); @@ -291,7 +296,7 @@ angular.forEach($scope.subtechniquesRecords, function (subtechnique_record) { if (subtechnique_record.parentTechnique != null) { // need this check otherwise it breaks the loop if (technique['@id'] == subtechnique_record.parentTechnique) { - // requires subtechnique object to be cloned + // requires subtechnique object to be cloned // otherwise clicking on one toggle shows/hides alerts and incidents across all duplicates technique._subtechniques.push(structuredClone(subtechnique_record)); } @@ -528,6 +533,18 @@ $state.go(state, params); } + function changeMatrix(selectedMatrix) { + if (selectedMatrix === 'mobile') { + $scope.selected_list = $scope.mobile_list; + } + else if (selectedMatrix === 'ics') { + $scope.selected_list = $scope.ics_list; + } + else { + $scope.selected_list = $scope.enterprise_list; + } + } + function globalRefresh() { init(); } diff --git a/widget/view.html b/widget/view.html index f7a5d7f..9d378b8 100644 --- a/widget/view.html +++ b/widget/view.html @@ -3,8 +3,18 @@