+
+ `;
+
+ const toastContainer = document.getElementById("toast_container");
+ toastContainer.innerHTML = toastHTML + toastContainer.innerHTML;
+
+ let toast = new bootstrap.Toast(document.getElementById(random_id_string));
+ toast.show();
+
+ jQuery(document).ready(function($) {
+ $(`#${random_id_string}`).on('shown.bs.toast', function() {
+ $(`#${random_id_string} > .progress > .progress-bar`).each(function(i) {
+ // Todo: Create time variable from Toast
+ let displayTime = $('.toast').attr('data-bs-delay');
+ $(this).animate({
+ width: $(this).attr('aria-valuenow') + '%'
+ });
+ $(this).css({
+ webkittransition: 'width '+displayTime+'ms ease-in-out',
+ moztransition: 'width '+displayTime+'ms ease-in-out',
+ otransition: 'width '+displayTime+'ms ease-in-out',
+ transition: 'width '+displayTime+'ms ease-in-out'
+ });
+ // $(this).prop('Counter', 0).animate({
+ // Counter: $(this).attr('aria-valuenow')
+ // }, {
+ // duration: 8000,
+ // step: function(now) {
+ // $(this).closest(".toast")
+ // .find(".progressbar-number")
+ // .text(Math.ceil(now));
+ // }
+ // });
+ });
+ });
+ })
+
+ setTimeout(function () {
+ let toast = new bootstrap.Toast(document.getElementById(random_id_string));
+ toast.dispose();
+
+ setTimeout(function () {
+ toastContainer.removeChild(document.getElementById(random_id_string));
+ }, 100);
+
+ }, parseInt($('.toast').attr('data-bs-delay'), 10) + 400);
+
+}
\ No newline at end of file
diff --git a/MINDFulPluto/src/static/scripts/UpdateCommandCell.js b/MINDFulPluto/src/static/scripts/UpdateCommandCell.js
new file mode 100644
index 0000000..5445b9b
--- /dev/null
+++ b/MINDFulPluto/src/static/scripts/UpdateCommandCell.js
@@ -0,0 +1,8 @@
+function sendIntentCommand(command) {
+ const intentCommandTextField = document.getElementById('intentCommandTextField');
+
+ intentCommandTextField.value = command;
+ intentCommandTextField.dispatchEvent(new CustomEvent("input"));
+
+ console.log("Sent intent command: " + command);
+}
\ No newline at end of file
diff --git a/MINDFulPluto/src/static/scripts/UpdateIntentTable.js b/MINDFulPluto/src/static/scripts/UpdateIntentTable.js
new file mode 100644
index 0000000..81f150e
--- /dev/null
+++ b/MINDFulPluto/src/static/scripts/UpdateIntentTable.js
@@ -0,0 +1,261 @@
+function updateIntentTable(intent_names, intent_configs, intent_toplogies, intent_states) {
+ const buttonStates = {
+ "uncompiled": {
+ "remove": "",
+ "compile": "",
+ "uncompile": "disabled",
+ "install": "disabled",
+ "uninstall": "disabled"
+ },
+ "compiled": {
+ "remove": "disabled",
+ "compile": "disabled",
+ "uncompile": "",
+ "install": "",
+ "uninstall": "disabled"
+ },
+ "installed": {
+ "remove": "disabled",
+ "compile": "disabled",
+ "uncompile": "disabled",
+ "install": "disabled",
+ "uninstall": ""
+ }
+ }
+
+
+
+ //find intent list
+ let intent_list = document.querySelector("#intent_selection_select");
+
+ //find out which option was selected in intent_list
+ let selected_value = intent_list.value;
+
+ //clear intent list except first option
+ while (intent_list.options.length > 1) {
+ intent_list.remove(1);
+ }
+
+ //add intents to intent list
+ intent_names.forEach((intent, i) => {
+ let option = document.createElement("option");
+ option.value = intent;
+ option.innerHTML = intent;
+ //check if intent was selected
+ if (selected_value != undefined) {
+ if (selected_value == intent) {
+ option.selected = true;
+ }
+ }
+ intent_list.appendChild(option);
+ });
+ console.log("updated intent list with selected intent: " + selected_value);
+
+ //---------update intent-table---------
+
+ console.log(intent_states);
+ let intent_table = document.querySelector(".table > tbody");
+
+ //clear all
+ ${heading}
+ 0 seconds ago
+
+
+
+
+
+
+ ${message}
+
+