luci-base: form.js: reset parent maps on returning from nested section modal
[project/luci.git] / modules / luci-base / htdocs / luci-static / resources / form.js
index eb7a2572d48216482a5bfc845144b4c63b944dc1..6786d3d2345e87fb73c41e689f4123ed0f0ba66f 100644 (file)
@@ -2994,10 +2994,20 @@ var CBITableSection = CBITypedSection.extend(/** @lends LuCI.form.TableSection.p
 
        /** @private */
        handleModalCancel: function(modalMap, ev) {
-               var prevNode = this.getPreviousModalMap();
+               var prevNode = this.getPreviousModalMap(),
+                   resetTasks = Promise.resolve();
 
                if (prevNode) {
-                       var heading = prevNode.parentNode.querySelector('h4');
+                       var heading = prevNode.parentNode.querySelector('h4'),
+                           prevMap = dom.findClassInstance(prevNode);
+
+                       while (prevMap) {
+                               resetTasks = resetTasks
+                                       .then(L.bind(prevMap.load, prevMap))
+                                       .then(L.bind(prevMap.reset, prevMap));
+
+                               prevMap = prevMap.parent;
+                       }
 
                        prevNode.classList.add('flash');
                        prevNode.classList.remove('hidden');
@@ -3014,7 +3024,7 @@ var CBITableSection = CBITypedSection.extend(/** @lends LuCI.form.TableSection.p
                        ui.hideModal();
                }
 
-               return Promise.resolve();
+               return resetTasks;
        },
 
        /** @private */