/* global I18n GLOBAL_CONSTANTS InfiniteScroll */ const ExperimnetTable = { selectedId: [], table: '.experiment-table', render: {}, pageSize: GLOBAL_CONSTANTS.DEFAULT_ELEMENTS_PER_PAGE, loadPlaceholder: function() { let placeholder = ''; $.each(Array(this.pageSize), function() { placeholder += $('#experimentTablePlaceholder').html(); }); $(placeholder).insertAfter($(this.table).find('.table-body')); }, appendRows: function(result) { $.each(result, (id, data) => { // Checkbox selector let row = `
`; // Task columns $.each(data, (_i, cell) => { row += `
${ExperimnetTable.render[cell.column_type](cell.data)}
`; }); // Menu row += '
'; $(`
${row}
`).appendTo(`${this.table} .table-body`); }); }, init: function() { var dataUrl = $(this.table).data('my-modules-url'); this.loadPlaceholder(); $.get(dataUrl, (result) => { $(this.table).find('.table-row').remove(); this.appendRows(result.data); InfiniteScroll.init(this.table, { url: dataUrl, eventTarget: window, placeholderTemplate: '#experimentTablePlaceholder', endOfListTemplate: '#experimentTableEndOfList', pageSize: this.pageSize, lastPage: !result.next_page, customResponse: (response) => { this.appendRows(response.data); } }); }); } }; ExperimnetTable.render.task_name = function(data) { return `${data.name}`; }; ExperimnetTable.render.id = function(data) { return data; }; ExperimnetTable.render.due_date = function(data) { return data; }; ExperimnetTable.render.age = function(data) { return data; }; ExperimnetTable.render.results = function(data) { return `${data.count}`; }; ExperimnetTable.render.status = function(data) { return `
${data.name}
`; }; ExperimnetTable.render.assigned = function(data) { let users = ''; $.each(data.users, (_i, user) => { users += ` `; }); if (data.length > 3) { users += ` +${data.length - 3} `; } if (data.manage_url) { users = ` ${users} `; } return users; }; ExperimnetTable.render.tags = function(data) { const value = parseInt(data.tags, 10) === 0 ? I18n.t('experiments.table.add_tag') : data.tags; return `${value}`; }; ExperimnetTable.render.comments = function(data) { return ` ${data.count > 0 ? data.count : '+'} ${data.count_unseen > 0 ? ` ${data.count_unseen} ` : ''} `; }; ExperimnetTable.init();