*/
import {fetch as fetchTableData} from 'core_table/local/dynamic/repository';
import * as Selectors from 'core_table/local/dynamic/selectors';
+import Events from './local/dynamic/events';
let watching = false;
placeholder.innerHTML = data.html;
tableRoot.replaceWith(...placeholder.childNodes);
- return data;
+ // Update the tableRoot.
+ return getTableFromId(tableRoot.dataset.tableUniqueid);
+ }).then(tableRoot => {
+ tableRoot.dispatchEvent(new CustomEvent(Events.tableContentRefreshed, {
+ bubbles: true,
+ }));
+
+ return tableRoot;
});
};
if (refreshContent) {
return refreshTableContent(tableRoot);
} else {
- return Promise.resolve();
+ return Promise.resolve(tableRoot);
}
};
}
});
};
+
+/**
+ * Fetch the table via its table region id.
+ *
+ * @param {String} tableRegionId
+ * @returns {HTMLElement}
+ */
+export const getTableFromId = tableRegionId => {
+ const tableRoot = document.querySelector(Selectors.main.fromRegionId(tableRegionId));
+
+
+ if (!tableRoot) {
+ // The table is not a dynamic table.
+ throw new Error("The table specified is not a dynamic table and cannot be updated");
+ }
+
+ return tableRoot;
+};
+
+export {
+ Events
+};
--- /dev/null
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Dynamic table selectors.
+ *
+ * @module core_table/local/dynamic/events
+ * @package core_table
+ * @copyright 2020 Andrew Nicols <andrew@nicols.co.uk>
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+const prefixEventName = eventName => `core_table/dynamic:${eventName}`;
+
+export default {
+ tableContentRefreshed: prefixEventName('tableContentRefreshed'),
+};
export default {
main: {
region: '[data-region="core_table/dynamic"]',
+ fromRegionId: regionId => `[data-region="core_table/dynamic"][data-table-uniqueid="${regionId}"]`,
},
table: {
links: {