Skip to content

Commit

Permalink
Improved changing environments:
Browse files Browse the repository at this point in the history
* Avoid old data
* Refresh views on environment change or tab activation
  • Loading branch information
thfries committed Jul 17, 2022
1 parent 2b92486 commit 4d1b314
Show file tree
Hide file tree
Showing 8 changed files with 128 additions and 72 deletions.
2 changes: 0 additions & 2 deletions ui/main.js
Expand Up @@ -89,6 +89,4 @@ document.addEventListener('DOMContentLoaded', async function() {
}
});
});

SearchFilter.performLastSearch();
});
28 changes: 20 additions & 8 deletions ui/modules/connections/connections.js
Expand Up @@ -66,7 +66,7 @@ export function ready() {
loadConnectionTemplates();

dom.buttonLoadConnections.onclick = loadConnections;
dom.tabConnections.onclick = loadConnections;
dom.tabConnections.onclick = onTabActivated;

dom.buttonCreateConnection.onclick = () => {
const newConnection = JSON.parse(JSON.stringify(
Expand Down Expand Up @@ -145,8 +145,10 @@ export function ready() {
API.callConnectionsAPI('retrieveConnectionLogs', (response) => {
connectionLogs = response.connectionLogs;
response.connectionLogs.forEach((entry) => {
Utils.addTableRow(dom.tbodyConnectionLogs, entry.timestamp, false, false, entry.type, entry.level);
const timestampDisplay = entry.timestamp.replace('T', ' ').replace('Z', '').replace('.', ' ');
Utils.addTableRow(dom.tbodyConnectionLogs, timestampDisplay, false, false, entry.type, entry.level);
});
dom.tbodyConnectionLogs.scrollTop = dom.tbodyConnectionLogs.scrollHeight - dom.tbodyConnectionLogs.clientHeight;
},
dom.inputConnectionId.value);
};
Expand Down Expand Up @@ -221,12 +223,6 @@ function loadConnections() {
});
};

function onEnvironmentChanged() {
if (dom.collapseConnections.classList.contains('show')) {
loadConnections();
}
}

function loadConnectionTemplates() {
fetch('templates/connectionTemplates.json')
.then((response) => {
Expand All @@ -239,4 +235,20 @@ function loadConnectionTemplates() {
});
}

let viewDirty = false;

function onTabActivated() {
if (viewDirty) {
loadConnections();
viewDirty = false;
}
}

function onEnvironmentChanged() {
if (dom.collapseConnections.classList.contains('show')) {
loadConnections();
} else {
viewDirty = true;
}
}

49 changes: 25 additions & 24 deletions ui/modules/environments/environments.js
Expand Up @@ -51,11 +51,11 @@ export function addChangeListener(observer) {
observers.push(observer);
}

function notifyAll() {
function notifyAll(modifiedField) {
// Notify Authorization first to set right auth header
Authorization.onEnvironmentChanged();
Authorization.onEnvironmentChanged(modifiedField);
// Notify others
observers.forEach(observer => observer.call());
observers.forEach(observer => observer.call(null, modifiedField));
}

export function ready() {
Expand Down Expand Up @@ -115,30 +115,37 @@ export function ready() {
environmentsJsonChanged();
}

export function environmentsJsonChanged() {
export function environmentsJsonChanged(modifiedField) {
localStorage.setItem('ditto-ui-env', JSON.stringify(environments));

updateEnvSelector();
updateEnvEditors();
updateEnvTable();

notifyAll();
}
notifyAll(modifiedField);

function updateEnvSelector() {
let activeEnvironment = dom.environmentSelector.value;
if (!activeEnvironment || !environments[activeEnvironment]) {
activeEnvironment = Object.keys(environments)[0];
};
function updateEnvSelector() {
let activeEnvironment = dom.environmentSelector.value;
if (!activeEnvironment || !environments[activeEnvironment]) {
activeEnvironment = Object.keys(environments)[0];
};

dom.environmentSelector.innerHTML = '';
Object.keys(environments).forEach((key) => {
let option = document.createElement('option');
option.text = key;
dom.environmentSelector.add(option);
});
dom.environmentSelector.innerHTML = '';
Object.keys(environments).forEach((key) => {
let option = document.createElement('option');
option.text = key;
dom.environmentSelector.add(option);
});

dom.environmentSelector.value = activeEnvironment;
dom.environmentSelector.value = activeEnvironment;
}

function updateEnvTable() {
dom.tbodyEnvironments.innerHTML = '';
Object.keys(environments).forEach((key) => {
Utils.addTableRow(dom.tbodyEnvironments, key, key === dom.inputEnvironmentName.value);
});
}
}

function updateEnvEditors() {
Expand All @@ -153,9 +160,3 @@ function updateEnvEditors() {
}
}

function updateEnvTable() {
dom.tbodyEnvironments.innerHTML = '';
Object.keys(environments).forEach((key) => {
Utils.addTableRow(dom.tbodyEnvironments, key, key === dom.inputEnvironmentName.value);
});
}
2 changes: 1 addition & 1 deletion ui/modules/things/attributes.js
Expand Up @@ -69,7 +69,7 @@ function updateAttributesTable() {
dom.attributesTable.innerHTML = '';
let count = 0;
let thingHasAttribute = false;
if (Things.theThing.attributes) {
if (Things.theThing && Things.theThing.attributes) {
Object.keys(Things.theThing.attributes).forEach((path) => {
if (path === dom.attributePath.value) {
dom.attributeValue.value = attributeToString(Things.theThing.attributes[path]);
Expand Down
2 changes: 1 addition & 1 deletion ui/modules/things/features.js
Expand Up @@ -175,7 +175,7 @@ function onThingChanged(thing) {
dom.featuresTable.innerHTML = '';
let count = 0;
let thingHasFeature = false;
if (thing.features) {
if (thing && thing.features) {
for (const key of Object.keys(thing.features)) {
if (key === dom.theFeatureId.value) {
refreshFeature(thing, key);
Expand Down
15 changes: 7 additions & 8 deletions ui/modules/things/fields.js
Expand Up @@ -13,7 +13,6 @@

import * as Environments from '../environments/environments.js';
import * as Utils from '../utils.js';
import * as SearchFilter from './searchFilter.js';

let theFieldIndex = -1;

Expand Down Expand Up @@ -63,7 +62,7 @@ export async function ready() {
});

dom.fieldsModal.addEventListener('hide.bs.modal', () => {
SearchFilter.performLastSearch();
Environments.environmentsJsonChanged();
});

document.getElementById('fieldUpdate').onclick = () => {
Expand All @@ -76,7 +75,7 @@ export async function ready() {

selectedField.path = dom.fieldPath.value;
selectedField.label = dom.fieldLabel.value;
Environments.environmentsJsonChanged();
updateFieldList();
};

document.getElementById('fieldCreate').onclick = () => {
Expand All @@ -90,14 +89,14 @@ export async function ready() {
path: dom.fieldPath.value,
label: dom.fieldPath.value.split('/').slice(-1)[0],
});
Environments.environmentsJsonChanged();
updateFieldList();
};

document.getElementById('fieldDelete').onclick = () => {
Utils.assert(theFieldIndex >= 0, 'No field selected');

Environments.current().fieldList.splice(theFieldIndex, 1);
Environments.environmentsJsonChanged();
updateFieldList();
theFieldIndex = -1;
};

Expand All @@ -109,7 +108,7 @@ export async function ready() {
Environments.current().fieldList.splice(theFieldIndex, 1);
theFieldIndex--;
Environments.current().fieldList.splice(theFieldIndex, 0, movedItem);
Environments.environmentsJsonChanged();
updateFieldList();
};

document.getElementById('fieldDown').onclick = () => {
Expand All @@ -120,7 +119,7 @@ export async function ready() {
Environments.current().fieldList.splice(theFieldIndex, 1);
theFieldIndex++;
Environments.current().fieldList.splice(theFieldIndex, 0, movedItem);
Environments.environmentsJsonChanged();
updateFieldList();
};
};

Expand Down Expand Up @@ -181,6 +180,6 @@ function updateFieldList() {
*/
function toggleFieldActiveEventHandler(evt) {
Environments.current().fieldList[evt.target.id].active = evt.target.checked;
Environments.environmentsJsonChanged();
updateFieldList();
};

2 changes: 1 addition & 1 deletion ui/modules/things/searchFilter.js
Expand Up @@ -158,7 +158,7 @@ function toggleFilterFavourite(filter) {
} else {
Environments.current().filterList.push(filter);
}
Environments.environmentsJsonChanged();
Environments.environmentsJsonChanged('filterList');
return true;
};

Expand Down

0 comments on commit 4d1b314

Please sign in to comment.