Prevent display configuration changes from overwriting in-progress edits.

This commit is contained in:
Patrick Fairbank
2020-03-29 17:31:41 -07:00
parent d9437403e9
commit 6cef7112ae
3 changed files with 23 additions and 3 deletions

View File

@@ -105,3 +105,6 @@ td[data-plc-value="true"] {
width: 110px;
text-align: left;
}
input[data-changed="true"], select[data-changed="true"] {
border: 2px solid #f00;
}

View File

@@ -5,6 +5,7 @@
var displayTemplate = Handlebars.compile($("#displayTemplate").html());
var websocket;
var fieldsChanged = false;
var configureDisplay = function(displayId) {
// Convert configuration string into map.
@@ -14,6 +15,7 @@ var configureDisplay = function(displayId) {
configurationMap[keyValuePair[0]] = keyValuePair[1];
});
fieldsChanged = false;
websocket.send("configureDisplay", {
Id: displayId,
Nickname: $("#displayNickname" + displayId).val(),
@@ -34,8 +36,19 @@ var reloadAllDisplays = function() {
websocket.send("reloadAllDisplays");
};
// Register that an input element has been modified by the user to avoid overwriting with a server update.
var markChanged = function(element) {
fieldsChanged = true;
element.setAttribute("data-changed", true);
};
// Handles a websocket message to refresh the display list.
var handleDisplayConfiguration = function(data) {
if (fieldsChanged) {
// Don't overwrite anything if the user has made unsaved changes.
return;
}
$("#displayContainer").empty();
$.each(data, function(displayId, display) {

View File

@@ -34,16 +34,20 @@
<td>{{"{{DisplayConfiguration.Id}}"}}</td>
<td>{{"{{ConnectionCount}}"}}</td>
<td>{{"{{IpAddress}}"}}</td>
<td><input type="text" id="displayNickname{{"{{DisplayConfiguration.Id}}"}}" size="30" /></td>
<td>
<select id="displayType{{"{{DisplayConfiguration.Id}}"}}">
<input type="text" id="displayNickname{{"{{DisplayConfiguration.Id}}"}}" size="30"
oninput="markChanged(this);" />
</td>
<td>
<select id="displayType{{"{{DisplayConfiguration.Id}}"}}" onchange="markChanged(this);">
{{range $type, $typeName := .DisplayTypeNames}}
<option value="{{$type}}">{{$typeName}}</option>
{{end}}
</select>
</td>
<td>
<input type="text" id="displayConfiguration{{"{{DisplayConfiguration.Id}}"}}" size="50" />
<input type="text" id="displayConfiguration{{"{{DisplayConfiguration.Id}}"}}" size="50"
oninput="markChanged(this);" />
</td>
<td>
<button type="button" class="btn btn-info btn-xs" title="Save Changes"