diff --git a/evennia/web/webclient/static/webclient/js/plugins/message_routing.js b/evennia/web/webclient/static/webclient/js/plugins/message_routing.js index 299d5bfd65..e54fdc1e2c 100644 --- a/evennia/web/webclient/static/webclient/js/plugins/message_routing.js +++ b/evennia/web/webclient/static/webclient/js/plugins/message_routing.js @@ -6,39 +6,53 @@ let spawns = (function () { var ignoreDefaultKeydown = false; - var spawnmap = {}; // Mapping of regex/tag-pair + var spawnmap = {}; // { id1: { r:regex, t:tag } } pseudo-array of regex-tag pairs + // + // changes the spawnmap row's contents to the new regex/tag provided, + // this avoids leaving stale regex/tag definitions in the spawnmap var onAlterTag = function (evnt) { - var children = $(evnt.target).parent().children(); - var regex = $(children[0]).val(); - var myval = $(children[1]).val(); + var adult = $(evnt.target).parent(); + var children = adult.children(); + var id = $(adult).data('id'); + var regex = $(children[0]).val();// spaces before/after are valid regex syntax, unfortunately + var mytag = $(children[1]).val().trim(); - if( myval != "" && regex != "" ) { - spawnmap[regex] = myval; + if( mytag != "" && regex != "" ) { + if( !(id in spawnmap) ) { + spawnmap[id] = {}; + } + spawnmap[id]["r"] = regex; + spawnmap[id]["t"] = mytag; localStorage.setItem( "evenniaMessageRoutingSavedState", JSON.stringify(spawnmap) ); - window.plugins["goldenlayout"].addKnownType( myval ); + window.plugins["goldenlayout"].addKnownType( mytag ); } } + // + // deletes the entire regex/tag/delete button row. var onDeleteTag = function (evnt) { var adult = $(evnt.target).parent(); var children = adult.children(); - var regex = $(children[0]).val(); - delete spawnmap[regex]; + var id = $(adult).data('id'); + delete spawnmap[id]; localStorage.setItem( "evenniaMessageRoutingSavedState", JSON.stringify(spawnmap) ); adult.remove(); // remove this set of input boxes/etc from the DOM } + // var onFocusIn = function (evnt) { ignoreDefaultKeydown = true; } + // var onFocusOut = function (evnt) { ignoreDefaultKeydown = false; } - var onNewRegexRow = function (formdiv, regexstring, tagstring) { - var div = $('