Skip to content

Commit

Permalink
Fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
OllieJC committed Aug 5, 2021
1 parent 6a94f22 commit 7b5087f
Show file tree
Hide file tree
Showing 7 changed files with 873 additions and 27 deletions.
Binary file removed images/fork_me.png
Binary file not shown.
16 changes: 13 additions & 3 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -100,12 +100,12 @@
<span class="label-report"></span>
</a>
</li>
<li class="nav-item">
<!--li class="nav-item">
<a href="#settings" onclick="load_window(this)" class="nav-link">
<svg class="bi me-2" width="16" height="16"><use xlink:href="#gear-fill"/></svg>
<span class="label-settings"></span>
</a>
</li>
</li-->
</ul>
</div>
</div>
Expand Down Expand Up @@ -213,6 +213,14 @@ <h2 class="label-threatbox"></h2>
<div class="grid-square five-five"></div>
</div>
</div>
<div>
<h2 class="label-threatactors"></h2>
<div>
<div id="actorsList">
N/A
</div>
</div>
</div>
<div>
<h2 class="label-ttps"></h2>
<div>
Expand Down Expand Up @@ -250,6 +258,7 @@ <h1 class="label-threatactors"></h1>
</tbody>
</table>
</div>
<button type="button" class="btn btn-primary" onclick="new_actor()"><span class="label-new_actor"></span></button>
</div>
<div id="window-threatactorlibrary" class="window-hidden">
<h1 class="label-threatactorlibrary"></h1>
Expand Down Expand Up @@ -290,6 +299,8 @@ <h5 class="modal-title" id="actorModalLabel"></h5>
</div>
<div class="modal-body" id="actorModalBody">

<input type="hidden" id="hidActorType" value=""></input>

<div class="mb-3">
<label for="taGroup" class="form-label"><span class="label-actor-groupid"></span></label>
<input type="text" class="form-control" id="taGroup"></input>
Expand Down Expand Up @@ -393,7 +404,6 @@ <h2 class="accordion-header" id="flush-headingOne">


<script src="js/bootstrap.bundle.min.js"></script>
<script src="js/masonry.pkgd.min.js"></script>
<script src="js/js-yaml.js"></script>
<script src="js/main.js"></script>
</body>
Expand Down
104 changes: 95 additions & 9 deletions js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,10 @@ const language_labels = {
"select_novelty": "Select Novelty",
"aka": "Also known as:",
"import_actor": "Import into assessment",
"new_actor": "New Actor",
"edit_actor": "Edit Actor",
"delete_actor": "Delete Actor",
"deleted_actor_success": "Successfully deleted",
"view_actor_details": "View actor details",
"okay": "Okay",
"close": "Close",
Expand Down Expand Up @@ -151,6 +154,9 @@ function save_project_details() {
}

function reset() {
document.getElementById("inputName").value = "";
document.getElementById("inputNotes").value = "";
project_details_need_saving();
loadTbat();
render_actors();
plot_actors();
Expand Down Expand Up @@ -566,6 +572,13 @@ function render_actors() {
editButton.innerText = load_label("edit_actor");
btnEle.appendChild(editButton);

const delButton = document.createElement("button");
delButton.setAttribute("class", "btn btn-warning");
delButton.setAttribute("data-actor", actorName);
delButton.onclick = function(){delete_actor(this)};
delButton.innerText = load_label("delete_actor");
btnEle.appendChild(delButton);

tbody.appendChild(tr);

counter += 1;
Expand All @@ -576,18 +589,49 @@ function render_actors() {
set_imported_actors();
}

function clear_actor_modal() {
document.getElementById("hidActorType").value = "";
document.getElementById("actorModalLabel").innerText = "";
document.getElementById("taGroup").value = "";
document.getElementById("taNotes").value = "";

const chkIntentions = document.getElementsByName("intentions");
for (var i = 0; i < chkIntentions.length; i++) {
chkIntentions[i].checked = false;
}

for (var i = 0; i < 4; i++) {
const v = ["intent", "willingness", "capability", "novelty"];
document.getElementsByClassName(`form-${v[i]}`)[0].value = "na";
}

const chkboxes = document.getElementsByClassName("ttp-checkboxes");
for (var i = 0; i < chkboxes.length; i++) {
chkboxes[i].checked = false;
}
}

function new_actor() {
clear_actor_modal();
document.getElementById("hidActorType").value = "new";
document.getElementById("actorModalLabel").innerText = load_label("new_actor");
actorModal.show();
}

function edit_actor(sender) {
clear_actor_modal();

const actorName = sender.getAttribute("data-actor");

const a = tbat.actors[actorName];

document.getElementById("hidActorType").value = "edit";
document.getElementById("actorModalLabel").innerText = actorName;
document.getElementById("taGroup").value = actorName;
document.getElementById("taNotes").value = a.description;

const chkIntentions = document.getElementsByName("intentions");
for (var i = 0; i < chkIntentions.length; i++) {
chkIntentions[i].checked = false;
if (typeof(a.intentions) != "undefined") {
if (a.intentions.indexOf(chkIntentions[i].value) > -1) {
chkIntentions[i].checked = true;
Expand All @@ -604,11 +648,6 @@ function edit_actor(sender) {
document.getElementsByClassName(`form-${v[i]}`)[0].value = vts;
}

const chkboxes = document.getElementsByClassName("ttp-checkboxes");
for (var i = 0; i < chkboxes.length; i++) {
chkboxes[i].checked = false;
}

for (var i = 0; i < a.ttps.length; i++) {
const eid = chkExtId(a.ttps[i]);
const chkBox = document.getElementById(eid);
Expand All @@ -620,9 +659,26 @@ function edit_actor(sender) {
actorModal.show();
}

function delete_actor(sender) {
const actorName = sender.getAttribute("data-actor");
delete(tbat.actors[actorName]);

notification(
load_label("delete_actor"),
load_label("deleted_actor_success") + " " + actorName
);

render_actors();
plot_actors();
}

function save_actor() {
const currentActor = document.getElementById("actorModalLabel").innerText;
delete(tbat.actors[currentActor]);
const actorType = document.getElementById("hidActorType").value;

if (actorType == "edit") {
const currentActor = document.getElementById("actorModalLabel").innerText;
delete(tbat.actors[currentActor]);
}

const newActor = document.getElementById("taGroup").value;
tbat.actors[newActor] = {};
Expand Down Expand Up @@ -750,10 +806,17 @@ function load_actor_details(sender) {
mitHeader.innerText = load_label("mitigations");
apdiv.appendChild(mitHeader);

var mitCount = 0;
const mitUl = document.createElement("ul");
for (var y = 0; y < ttp.mitigations.length; y++) {
const m = cti.mitigations[ttp.mitigations[y]];

if (typeof(m) == "undefined") {
continue;
}

mitCount += 1;

const mitLi = document.createElement("li");

const mita = document.createElement("a");
Expand All @@ -769,7 +832,9 @@ function load_actor_details(sender) {
}
mitUl.appendChild(mitLi);
}
apdiv.appendChild(mitUl);
if (mitCount > 0) {
apdiv.appendChild(mitUl);
}
}

liap.appendChild(apdiv);
Expand Down Expand Up @@ -810,6 +875,9 @@ function plot_actors() {
document.getElementsByClassName("grid-square")[i].innerHTML = "";
}

const actorsList = document.getElementById("actorsList");
actorsList.innerHTML = "";

const ttpList = document.getElementById("ttpList");
ttpList.innerHTML = "";

Expand All @@ -820,6 +888,11 @@ function plot_actors() {
const actorName = actorNames[i];
const a = tbat.actors[actorName];

const actorDiv = document.createElement("div");
const actorHeader = document.createElement("h3");
actorHeader.innerText = actorName;
actorDiv.appendChild(actorHeader);

var validCount = 0;
for (var vs = 0; vs < 4; vs++) {
var vts = "";
Expand All @@ -838,6 +911,18 @@ function plot_actors() {
const overall_capability = parseInt(a.capability) + parseInt(a.novelty);
const score = overall_intent * overall_capability;

const scorep = document.createElement("p");
scorep.innerText = load_label("intent") + ": " + overall_intent;
scorep.innerText += " " + load_label("capability") + ": " + overall_capability;
scorep.innerText += " " + load_label("score") + ": " + score;
actorDiv.appendChild(scorep);

if (typeof(a.description) != "undefined" && a.description != "") {
const descp = document.createElement("p");
descp.innerText = a.description;
actorDiv.appendChild(descp);
}

if (typeof(a.ttps) != "undefined") {
for (var t = 0; t < a.ttps.length; t++) {
const ttpName = a.ttps[t];
Expand Down Expand Up @@ -899,6 +984,7 @@ function plot_actors() {
new_actor.innerText = actorName;

document.getElementsByClassName(actor_class)[0].appendChild(new_actor);
actorsList.appendChild(actorDiv);
}
}

Expand Down
9 changes: 0 additions & 9 deletions js/masonry.pkgd.min.js

This file was deleted.

6 changes: 0 additions & 6 deletions test/fixtures/example.yaml

This file was deleted.

Loading

0 comments on commit 7b5087f

Please sign in to comment.