Merge branch 'MDL-68506-master' of git://github.com/andrewnicols/moodle
authorJun Pataleta <jun@moodle.com>
Fri, 1 May 2020 03:20:21 +0000 (11:20 +0800)
committerJun Pataleta <jun@moodle.com>
Fri, 1 May 2020 03:20:21 +0000 (11:20 +0800)
1  2 
lib/table/amd/build/dynamic.min.js
lib/table/amd/build/dynamic.min.js.map
lib/table/amd/src/dynamic.js

index 4054b65,6b39495..69210d8
Binary files differ
index 7334d4e,f0f92e5..9f3aae9
Binary files differ
@@@ -23,6 -23,7 +23,7 @@@
   */
  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;
  
@@@ -78,7 -79,6 +79,7 @@@ export const refreshTableContent = tabl
              lastinitial: tableRoot.dataset.tableLastInitial,
              pageNumber: tableRoot.dataset.tablePageNumber,
              pageSize: tableRoot.dataset.tablePageSize,
 +            hiddenColumns: JSON.parse(tableRoot.dataset.tableHiddenColumns),
          }
      )
      .then(data => {
          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;
      });
  };
  
@@@ -98,7 -105,6 +106,7 @@@ export const updateTable = (tableRoot, 
      lastInitial = null,
      pageNumber = null,
      pageSize = null,
 +    hiddenColumns = null,
  } = {}, refreshContent = true) => {
      checkTableIsDynamic(tableRoot);
  
          tableRoot.dataset.tableFilters = JSON.stringify(filters);
      }
  
 +    // Update hidden columns.
 +    if (hiddenColumns) {
 +        tableRoot.dataset.tableHiddenColumns = JSON.stringify(hiddenColumns);
 +    }
 +
      // Refresh.
      if (refreshContent) {
          return refreshTableContent(tableRoot);
      } else {
-         return Promise.resolve();
+         return Promise.resolve(tableRoot);
      }
  };
  
@@@ -210,34 -211,6 +218,34 @@@ export const setFirstInitial = (tableRo
  export const setLastInitial = (tableRoot, lastInitial, refreshContent = true) =>
      updateTable(tableRoot, {lastInitial}, refreshContent);
  
 +/**
 + * Hide a column in the participants table.
 + *
 + * @param {HTMLElement} tableRoot
 + * @param {String} columnToHide
 + * @param {Bool} refreshContent
 + */
 +export const hideColumn = (tableRoot, columnToHide, refreshContent = true) => {
 +    const hiddenColumns = JSON.parse(tableRoot.dataset.tableHiddenColumns);
 +    hiddenColumns.push(columnToHide);
 +
 +    updateTable(tableRoot, {hiddenColumns}, refreshContent);
 +};
 +
 +/**
 + * Make a hidden column visible in the participants table.
 + *
 + * @param {HTMLElement} tableRoot
 + * @param {String} columnToShow
 + * @param {Bool} refreshContent
 + */
 +export const showColumn = (tableRoot, columnToShow, refreshContent = true) => {
 +    let hiddenColumns = JSON.parse(tableRoot.dataset.tableHiddenColumns);
 +    hiddenColumns = hiddenColumns.filter(columnName => columnName !== columnToShow);
 +
 +    updateTable(tableRoot, {hiddenColumns}, refreshContent);
 +};
 +
  /**
   * Set up listeners to handle table updates.
   */
@@@ -282,26 -255,11 +290,26 @@@ export const init = () => 
  
              setPageNumber(tableRoot, pageItem.dataset.pageNumber);
          }
 +
 +        const hide = e.target.closest(Selectors.table.links.hide);
 +        if (hide) {
 +            e.preventDefault();
 +
 +            hideColumn(tableRoot, hide.dataset.column);
 +        }
 +
 +        const show = e.target.closest(Selectors.table.links.show);
 +        if (show) {
 +            e.preventDefault();
 +
 +            showColumn(tableRoot, show.dataset.column);
 +        }
 +
      });
  };
  
  /**
-  * Fetch the table via its table region id
+  * Fetch the table via its table region id.
   *
   * @param {String} tableRegionId
   * @returns {HTMLElement}
@@@ -317,3 -275,7 +325,7 @@@ export const getTableFromId = tableRegi
  
      return tableRoot;
  };
+ export {
+     Events
+ };