';
@@ -2085,6 +2085,8 @@ function bindTriggerInputSave(container) {
inputs.forEach(function(el) {
el.removeEventListener('input', _triggerInputHandler);
el.addEventListener('input', _triggerInputHandler);
+ el.removeEventListener('blur', _triggerBlurHandler);
+ el.addEventListener('blur', _triggerBlurHandler);
});
var checks = container.querySelectorAll('input[type="checkbox"], input[type="radio"]');
checks.forEach(function(el) {
@@ -2109,11 +2111,12 @@ function _syncTriggersToData() {
function _triggerInputHandler() {
_syncTriggersToData();
_triggersDirty = true;
+ autoSave();
}
-function saveTriggers() {
+function _triggerBlurHandler() {
_syncTriggersToData();
- _triggersDirty = false;
+ _triggersDirty = true;
saveNow();
}
@@ -2154,21 +2157,28 @@ async function doSavePanel() {
var newDir = dirEl ? dirEl.value : null;
var currentDir = (data.file || '').replace(/^data\/rooms\/?/, '').split('/')[0] || '';
+ var idChanged = false;
+ var dirChanged = false;
if (dirEl && newDir !== currentDir) {
await API.post('/api/rooms/move', {id: id, dir: newDir});
+ dirChanged = true;
}
if (newID !== id) {
await API.post('/api/rooms/rename', {id: id, new_id: newID});
selectedRoom = newID;
id = newID;
+ idChanged = true;
}
await API.put('/api/rooms/' + id, r);
notify('Room #' + id + ' saved', 'success');
_triggersDirty = false;
+ saveTimer = null;
updateUndoBar();
await loadMap();
- selectRoom(id);
+ if (idChanged || dirChanged) {
+ selectRoom(id);
+ }
} catch (e) {
notify('Save failed: ' + extractError(e), 'error');
}
@@ -3423,6 +3433,7 @@ function renderEnterExitTab(r) {
}
switchPanelTab(8);
_triggersDirty = true;
+ autoSave();
};
window._ieRenderOnly = window._ieRenderCurrent;
window._ieSyncAll = ie_syncAllInteractions;
@@ -3431,8 +3442,7 @@ function renderEnterExitTab(r) {
{id: 'on_exit', path: 'on_exit', isArray: true, interactionStyle: true, itemIDAllowed: false, label: 'Trigger'}
];
- var h = '
';
- h += '
On-Enter Triggers
';
+ var h = '
On-Enter Triggers
';
h += '
Fires when a player enters this room. First matching entry wins.
';
h += renderTriggerListHTML(r.on_enter, 'on_enter', 'on_enter', false);
h += '
';
--
cgit v1.2.3