diff --git a/assets/src/bundles/add_forge/create-request.js b/assets/src/bundles/add_forge/create-request.js --- a/assets/src/bundles/add_forge/create-request.js +++ b/assets/src/bundles/add_forge/create-request.js @@ -7,9 +7,17 @@ import {handleFetchError, removeUrlFragment, csrfPost, getHumanReadableDate} from 'utils/functions'; +import userRequestsFilterCheckboxFn from 'utils/requests-filter-checkbox.ejs'; +import {swhSpinnerSrc} from 'utils/constants'; let requestBrowseTable; +const addForgeCheckboxId = 'swh-add-forge-user-filter'; +const userRequestsFilterCheckbox = userRequestsFilterCheckboxFn({ + 'inputId': addForgeCheckboxId, + 'checked': true // by default, display only user requests +}); + export function onCreateRequestPageLoad() { $(document).ready(() => { $('#requestCreateForm').submit(async function(event) { @@ -64,6 +72,7 @@ }); $('#swh-add-forge-requests-list-tab').on('shown.bs.tab', () => { + requestBrowseTable.draw(); window.location.hash = '#browse-requests'; }); @@ -83,13 +92,29 @@ .DataTable({ serverSide: true, processing: true, + language: { + processing: `` + }, retrieve: true, searching: true, info: false, dom: '<<"d-flex justify-content-between align-items-center"f' + - '<"#list-exclude">l>rt<"bottom"ip>>', + '<"#search"><"col-sm-6 text-left user-requests-filter">l>rt<"bottom"ip>>', ajax: { - 'url': Urls.add_forge_request_list_datatables() + 'url': Urls.add_forge_request_list_datatables(), + data: (d) => { + if (swh.webapp.isUserLoggedIn() && $(`#${addForgeCheckboxId}`).prop('checked')) { + d.user_requests_only = '1'; + } + } + }, + fnInitComplete: function() { + if (swh.webapp.isUserLoggedIn()) { + $('div.user-requests-filter').html(userRequestsFilterCheckbox); + $(`#${addForgeCheckboxId}`).on('change', () => { + requestBrowseTable.draw(); + }); + } }, columns: [ { @@ -114,5 +139,4 @@ } ] }); - requestBrowseTable.draw(); } diff --git a/cypress/integration/add-forge-now-request-create.spec.js b/cypress/integration/add-forge-now-request-create.spec.js --- a/cypress/integration/add-forge-now-request-create.spec.js +++ b/cypress/integration/add-forge-now-request-create.spec.js @@ -14,6 +14,26 @@ cy.get('#swh-input-consent-check').click({force: consent === 'on'}); } +describe('Browse requests list tests', function() { + beforeEach(function() { + this.addForgeNowUrl = this.Urls.forge_add(); + }); + + it('should not show user requests filter checkbox for anonymous users', function() { + cy.visit(this.addForgeNowUrl); + cy.get('#swh-add-forge-requests-list-tab').click(); + cy.get('#swh-add-forge-user-filter').should('not.exist'); + }); + + it('should show user requests filter checkbox for authenticated users', function() { + cy.userLogin(); + cy.visit(this.addForgeNowUrl); + cy.get('#swh-add-forge-requests-list-tab').click(); + cy.get('#swh-add-forge-user-filter').should('exist').should('be.checked'); + }); + +}); + describe('Test add-forge-request creation', function() { beforeEach(function() { this.addForgeNowUrl = this.Urls.forge_add();