diff --git a/src/registrar/assets/src/js/getgov/table-edit-member-domains.js b/src/registrar/assets/src/js/getgov/table-edit-member-domains.js index 706f15186..e4d76b953 100644 --- a/src/registrar/assets/src/js/getgov/table-edit-member-domains.js +++ b/src/registrar/assets/src/js/getgov/table-edit-member-domains.js @@ -6,6 +6,11 @@ export class EditMemberDomainsTable extends BaseTable { constructor() { super('edit-member-domain'); this.currentSortBy = 'name'; + this.initialDomainAssignments = []; + this.initialDomainAssignmentsOnlyMember = []; + this.addedDomains = []; + this.removedDomains = []; + this.initializeDomainAssignments(); } getBaseUrl() { return document.getElementById("get_member_domains_edit_json_url"); @@ -13,9 +18,49 @@ export class EditMemberDomainsTable extends BaseTable { getDataObjects(data) { return data.domains; } + getDomainAssignmentSearchParams(portfolio) { + let searchParams = new URLSearchParams(); + let emailValue = this.portfolioElement ? this.portfolioElement.getAttribute('data-email') : null; + let memberIdValue = this.portfolioElement ? this.portfolioElement.getAttribute('data-member-id') : null; + let memberOnly = true; + if (portfolio) + searchParams.append("portfolio", portfolio); + if (emailValue) + searchParams.append("email", emailValue); + if (memberIdValue) + searchParams.append("member_id", memberIdValue); + if (memberOnly) + searchParams.append("member_only", memberOnly); + return searchParams; + } + getSearchParams(page, sortBy, order, searchTerm, status, portfolio) { + let searchParams = super.getSearchParams(page, sortBy, order, searchTerm, status, portfolio); + if (this.addedDomains) + searchParams.append("addedDomainIds", this.addedDomains); + if (this.removedDomains) + searchParams.append("removedDomainIds", this.removedDomains); + return searchParams; + } addRow(dataObject, tbody, customTableOptions) { const domain = dataObject; const row = document.createElement('tr'); + //console.log("initialDomainAssignments: " + this.initialDomainAssignments); + //console.log("testing domain: " + domain.id); + let checked = false; + let disabled = false; + if ( + (this.initialDomainAssignments.includes(domain.id) || + this.addedDomains.map(obj => obj.id).includes(domain.id)) && + !this.removedDomains.map(obj => obj.id).includes(domain.id) + ) { + console.log("checked domain: " + domain.id); + checked = true; + } + if (this.initialDomainAssignmentsOnlyMember.includes(domain.id)) { + console.log("disabled domain: " + domain.id); + disabled = true; + } + row.innerHTML = `
@@ -25,6 +70,8 @@ export class EditMemberDomainsTable extends BaseTable { type="checkbox" name="${domain.name}" value="${domain.id}" + ${checked ? 'checked' : ''} + ${disabled ? 'disabled' : ''} />