From 61315b27158d1ee0c1b349bf653a1d627298eb89 Mon Sep 17 00:00:00 2001 From: Ajeyakrishna Date: Mon, 20 Nov 2023 17:18:23 +0530 Subject: [PATCH 1/5] feat : adds pagination and integrates pagination api --- __tests__/taskRequests/taskRequest.test.js | 97 ++++++-- mock-data/taskRequests/index.js | 41 ++-- taskRequests/constants.js | 28 ++- taskRequests/index.html | 95 ++++---- taskRequests/script.js | 253 ++++++++++++++------- taskRequests/style.css | 62 +++-- taskRequests/util.js | 44 +++- utils.js | 24 ++ 8 files changed, 445 insertions(+), 199 deletions(-) diff --git a/__tests__/taskRequests/taskRequest.test.js b/__tests__/taskRequests/taskRequest.test.js index d30a4ee3..dabd6c36 100644 --- a/__tests__/taskRequests/taskRequest.test.js +++ b/__tests__/taskRequests/taskRequest.test.js @@ -12,7 +12,7 @@ describe('Task Requests', () => { jest.setTimeout(60000); - beforeAll(async () => { + beforeEach(async () => { browser = await puppeteer.launch({ headless: 'new', ignoreHTTPSErrors: true, @@ -27,7 +27,9 @@ describe('Task Requests', () => { page.on('request', (request) => { if ( request.url() === `${API_BASE_URL}/taskRequests` || - request.url() === `${API_BASE_URL}/taskRequests?dev=true` + request.url() === `${API_BASE_URL}/taskRequests?dev=true` || + request.url() === + `${API_BASE_URL}/taskRequests?size=20&q=status%3Apending+sort%3Acreated-asc&dev=true` ) { request.respond({ status: 200, @@ -39,16 +41,31 @@ describe('Task Requests', () => { 'Access-Control-Allow-Headers': 'Content-Type, Authorization', }, }); + } else if ( + request.url() === + `${API_BASE_URL}/taskRequests?size=20&q=status%3Aapproved++sort%3Acreated-asc&dev=true` + ) { + const list = []; + for (let i = 0; i < 20; i++) { + list.push(fetchedTaskRequests[0]); + } + request.respond({ + status: 200, + contentType: 'application/json', + body: JSON.stringify({ + data: list, + next: '/taskRequests?size=20&q=status%3Aapproved++sort%3Acreated-asc&dev=true', + }), + }); } else { request.continue(); } }); - await page.goto(`${SITE_URL}/taskRequests`); await page.waitForNetworkIdle(); }); - afterAll(async () => { + afterEach(async () => { await browser.close(); }); @@ -68,11 +85,6 @@ describe('Task Requests', () => { expect(purpose).toMatch(/test purpose/i); }); describe('Filter Modal', () => { - beforeAll(async () => { - await page.goto(`${SITE_URL}/taskRequests/?dev=true`); - await page.waitForNetworkIdle(); - }); - it('should be hidden initially', async () => { const modal = await page.$('.filter-modal'); expect( @@ -84,28 +96,59 @@ describe('Task Requests', () => { const modal = await page.$('.filter-modal'); const filterHead = await page.$('.filter-head'); const filterContainer = await page.$('.filters-container'); - expect(filterHead).toBeTruthy(); expect(filterContainer).toBeTruthy(); - await page.click('#filter-button'); expect(modal).not.toBeNull(); expect( await modal.evaluate((el) => el.classList.contains('hidden')), ).toBe(false); - await page.mouse.click(20, 20); expect( await modal.evaluate((el) => el.classList.contains('hidden')), ).toBe(true); }); + + it('checks if PENDING is checked by default', async () => { + const filterButton = await page.$('#filter-button'); + await filterButton.click(); + await page.waitForSelector('.filter-modal'); + const activeFilter = await page.$('input[value="PENDING"]'); + const currentState = await activeFilter.getProperty('checked'); + const isChecked = await currentState.jsonValue(); + expect(isChecked).toBe(true); + }); + + it('Selecting filters and clicking on apply should filter task request list', async () => { + await page.click('#filter-button'); + await page.click('input[value="PENDING"]'); + await page.click('input[value="APPROVED"]'); + await page.click('#apply-filter-button'); + await page.waitForNetworkIdle(); + const cardsList = await page.$$('.taskRequest__card'); + expect(cardsList).not.toBeNull(); + expect(cardsList.length).toBeGreaterThanOrEqual(0); + }); + + it('clears the filter when the Clear button is clicked', async () => { + const filterButton = await page.$('#filter-button'); + await filterButton.click(); + await page.waitForSelector('.filter-modal'); + const activeFilter = await page.$('input[value="APPROVED"]'); + await activeFilter.click(); + const clearButton = await page.$('.filter-modal #clear-button'); + await clearButton.click(); + await page.waitForSelector('.filter-modal', { hidden: true }); + const currentState = await activeFilter.getProperty('checked'); + const isChecked = await currentState.jsonValue(); + expect(isChecked).toBe(false); + }); }); describe('Sort Modal', () => { it('should be hidden initially', async () => { const sortModal = await page.$('.sort-modal'); - const assigneButton = await page.$('#ASSIGNEE_COUNT'); - + const assigneButton = await page.$('#REQUESTORS_COUNT_ASC'); expect( await sortModal.evaluate((el) => el.classList.contains('hidden')), ).toBe(true); @@ -114,7 +157,7 @@ describe('Task Requests', () => { it('should toggle visibility sort modal by clicking the sort button and selecting an option', async () => { const sortModal = await page.$('.sort-modal'); - const assigneButton = await page.$('#ASSIGNEE_COUNT'); + const assigneButton = await page.$('#REQUESTORS_COUNT_ASC'); const sortHead = await page.$('.sort-head'); const sortContainer = await page.$('.sorts-container'); @@ -122,7 +165,7 @@ describe('Task Requests', () => { expect(sortContainer).toBeTruthy(); await page.click('.sort-button'); - await page.click('#ASSIGNEE_COUNT'); + await page.click('#REQUESTORS_COUNT_ASC'); expect( await assigneButton.evaluate((el) => el.classList.contains('selected'), @@ -131,9 +174,8 @@ describe('Task Requests', () => { expect( await sortModal.evaluate((el) => el.classList.contains('hidden')), ).toBe(true); - await page.click('.sort-button'); - await page.click('#ASSIGNEE_COUNT'); + await page.click('#REQUESTORS_COUNT_ASC'); expect( await assigneButton.evaluate((el) => el.classList.contains('selected'), @@ -144,6 +186,25 @@ describe('Task Requests', () => { ).toBe(true); }); }); + + it('Checks that new items are loaded when scrolled to the bottom', async () => { + await page.click('#filter-button'); + await page.click('input[value="PENDING"]'); + await page.click('input[value="APPROVED"]'); + await page.click('#apply-filter-button'); + await page.waitForNetworkIdle(); + let taskRequestList = await page.$$('.taskRequest__card'); + expect(taskRequestList.length).toBe(20); + await page.evaluate(() => { + const element = document.querySelector('.virtual'); + if (element) { + element.scrollIntoView({ behavior: 'auto' }); + } + }); + await page.waitForNetworkIdle(); + taskRequestList = await page.$$('.taskRequest__card'); + expect(taskRequestList.length).toBe(40); + }); }); }); diff --git a/mock-data/taskRequests/index.js b/mock-data/taskRequests/index.js index d0b25e07..ad2a545a 100644 --- a/mock-data/taskRequests/index.js +++ b/mock-data/taskRequests/index.js @@ -14,27 +14,14 @@ const fetchedTaskRequests = [ priority: 'HIGH', status: 'ASSIGNED', }, - requestors: [ + users: [ { - userExists: true, - user: { - id: 'V4rqL1aDecNGoa1IxiCu', - incompleteUserDetails: false, - discordId: '12345', - roles: { - archived: false, - }, - linkedin_id: 'uiram', - last_name: 'Raghunathan', - yoe: '5', - github_display_name: 'Sriram', - company_name: 'Juniper networks ', - github_id: '19sriram', - designation: 'Front end engineer', - twitter_id: '19sriram', - first_name: 'Sriram', - username: '19sriram', - }, + proposedStartDate: 1700304616479, + proposedDeadline: 1700909416479, + userId: 'eChYAP0kUwLo4wQ1gqMV', + status: 'PENDING', + username: 'ajeyak', + first_name: 'Test first_name', }, ], }, @@ -47,23 +34,21 @@ const individualTaskReqDetail = { lastModifiedAt: 1698837978463, requestType: 'ASSIGNMENT', createdBy: 'randhir', - requestors: ['SooJK37gzjIZfFNH0tlL'], lastModifiedBy: 'randhir', taskTitle: 'sample golang task s402', externalIssueUrl: 'https://api.github.com/repos/Real-Dev-Squad/website-backend/issues/1310', taskId: '44SwDPe1r6AgoOtWq8EN', - approvedTo: 'SooJK37gzjIZfFNH0tlL', users: [ { proposedStartDate: 1698684354000, proposedDeadline: 1699142400000, description: 'code change 3 days , testing - 2 days. total - 5 days', userId: 'SooJK37gzjIZfFNH0tlL', - status: 'APPROVED', + status: 'PENDING', }, ], - status: 'APPROVED', + status: 'PENDING', id: 'dM5wwD9QsiTzi7eG7Oq5', url: 'http://localhost:3000/taskRequests/dM5wwD9QsiTzi7eG7Oq5', }, @@ -142,6 +127,14 @@ const urlMappings = { userInformation, 'https://staging-api.realdevsquad.com/users/userId/SooJK37gzjIZfFNH0tlL': userInformation, + 'https://staging-api.realdevsquad.com/taskRequests?action=approve': + fetchedTaskRequests, + 'https://api.realdevsquad.com/taskRequests?action=approve': + fetchedTaskRequests, + 'https://staging-api.realdevsquad.com/taskRequests?action=reject': + fetchedTaskRequests, + 'https://api.realdevsquad.com/taskRequests?action=reject': + fetchedTaskRequests, }; module.exports = { diff --git a/taskRequests/constants.js b/taskRequests/constants.js index a8499b4f..ca84f255 100644 --- a/taskRequests/constants.js +++ b/taskRequests/constants.js @@ -3,26 +3,44 @@ const taskRequestStatus = { APPROVED: 'APPROVED', }; const DEV_FEATURE_FLAG = 'dev'; +const DEFAULT_PAGE_SIZE = 20; +const Status = { + APPROVED: 'approved', + PENDING: 'pending', + DENIED: 'denied', +}; + +const Order = { + REQUESTORS_COUNT_ASC: { requestors: 'asc' }, + REQUESTORS_COUNT_DESC: { requestors: 'desc' }, + CREATED_TIME_DESC: { created: 'desc' }, + CREATED_TIME_ASC: { created: 'asc' }, +}; const FILTER_MODAL = 'filter-modal'; const FILTER_BUTTON = 'filter-button'; const APPLY_FILTER_BUTTON = 'apply-filter-button'; const SEARCH_ELEMENT = 'assignee-search'; const SORT_BUTTON = '.sort-button'; -const OLD_FILTER = '.container__filters'; +const CLEAR_BUTTON = 'clear-button'; const FILTER_CONTAINER = '.sort-filters'; const SORT_MODAL = 'sort-modal'; -const ASSIGNEE_COUNT = 'ASSIGNEE_COUNT'; -const ASSIGNEE_DESC = 'ASSIGNEE_COUNT-desc'; -const CREATED_TIME = 'CREATED_TIME'; -const CREATED_TIME_DESC = 'CREATED_TIME-desc'; +const ASSIGNEE_COUNT = 'REQUESTORS_COUNT_ASC'; +const ASSIGNEE_DESC = 'REQUESTORS_COUNT_DESC'; +const CREATED_TIME = 'CREATED_TIME_ASC'; +const CREATED_TIME_DESC = 'CREATED_TIME_DESC'; const BACKDROP = '.backdrop'; +const LAST_ELEMENT_CONTAINER = '.virtual'; const MessageStatus = { SUCCESS: 'SUCCESS', ERROR: 'ERROR', }; +const TaskRequestAction = { + APPROVE: 'approve', + REJECT: 'reject', +}; const ErrorMessages = { UNAUTHENTICATED: 'You are unauthenticated to view this section, please login!', diff --git a/taskRequests/index.html b/taskRequests/index.html index 1d3aacbf..0ff3523e 100644 --- a/taskRequests/index.html +++ b/taskRequests/index.html @@ -17,6 +17,7 @@ + @@ -33,63 +34,53 @@
-

Task Request

-
- -
- -
- -
-
-

Requestors

-
    -
      -
    • -
    • -
    • -
    • -
    - +
  • +
  • +
  • +
  • + +
    +
    +
    +
    diff --git a/taskRequests/details/script.js b/taskRequests/details/script.js index dcaf5a49..55f5b36b 100644 --- a/taskRequests/details/script.js +++ b/taskRequests/details/script.js @@ -3,6 +3,7 @@ const API_BASE_URL = window.API_BASE_URL; let taskRequest; const taskRequestSkeleton = document.querySelector('.taskRequest__skeleton'); +const container = document.querySelector('.container'); const taskSkeleton = document.querySelector('.task__skeleton'); const requestorSkeleton = document.querySelector( '.requestors__container__list__skeleton', @@ -12,7 +13,7 @@ const taskRequestContainer = document.getElementById('task-request-details'); const taskContainer = document.getElementById('task-details'); const toast = document.getElementById('toast_task_details'); const requestorsContainer = document.getElementById('requestors-details'); - +const rejectButton = document.getElementById('reject-button'); const taskRequestId = new URLSearchParams(window.location.search).get('id'); history.pushState({}, '', window.location.href); const errorMessage = @@ -41,6 +42,7 @@ function renderTaskRequestDetails(taskRequest) { createCustomElement({ tagName: 'span', textContent: taskRequest?.status, + id: 'taskRequest__status_text', class: [ 'taskRequest__status__chip', `taskRequest__status__chip--${taskRequest?.status?.toLowerCase()}`, @@ -66,6 +68,16 @@ function renderTaskRequestDetails(taskRequest) { ); } +function updateStatus(status) { + const statusText = document.getElementById('taskRequest__status_text'); + statusText.classList = []; + statusText.classList.add('taskRequest__status__chip'); + statusText.classList.add( + `taskRequest__status__chip--${status?.toLowerCase()}`, + ); + statusText.textContent = status; +} + async function renderTaskDetails(taskRequest) { const { taskId, taskTitle } = taskRequest; try { @@ -147,9 +159,12 @@ function getAvatar(user) { }); } -async function approveTaskRequest(userId) { +async function updateTaskRequest(action, userId) { + const removeSpinner = addSpinner(container); + container.classList.add('container-disabled'); try { - const res = await fetch(`${API_BASE_URL}/taskRequests/approve`, { + const queryParams = new URLSearchParams({ action: action }); + const res = await fetch(`${API_BASE_URL}/taskRequests?${queryParams}`, { credentials: 'include', method: 'PATCH', body: JSON.stringify({ @@ -162,22 +177,28 @@ async function approveTaskRequest(userId) { }); if (res.ok) { - showToast('Task Approved Successfully', 'success'); + showToast('Task updated Successfully', 'success'); taskRequest = await fetchTaskRequest(); requestorsContainer.innerHTML = ''; - renderRequestors(taskRequest?.requestors); + updateStatus(taskRequest.status); + renderRequestors(taskRequest); + renderRejectButton(taskRequest); + return res; } else { showToast(errorMessage, 'failure'); } } catch (e) { showToast(errorMessage, 'failure'); console.error(e); + } finally { + removeSpinner(); + container.classList.remove('container-disabled'); } } function getActionButton(requestor) { if (taskRequest?.status === taskRequestStatus.APPROVED) { - if (taskRequest?.approvedTo === requestor?.user?.id) { + if (taskRequest.approvedTo === requestor?.user?.id) { return createCustomElement({ tagName: 'p', textContent: 'Approved', @@ -192,17 +213,22 @@ function getActionButton(requestor) { textContent: 'Approve', class: 'requestors__conatainer__list__button', eventListeners: [ - { event: 'click', func: () => approveTaskRequest(requestor.user?.id) }, + { + event: 'click', + func: () => + updateTaskRequest(TaskRequestAction.APPROVE, requestor.user?.id), + }, ], }); } -async function renderRequestors(requestors) { +async function renderRequestors(taskRequest) { + const requestors = taskRequest?.users; requestorSkeleton.classList.remove('hidden'); const data = await Promise.all( requestors.map((requestor) => { - return fetch(`${API_BASE_URL}/users/userId/${requestor}`).then((res) => - res.json(), + return fetch(`${API_BASE_URL}/users/userId/${requestor.userId}`).then( + (res) => res.json(), ); }), ); @@ -223,22 +249,35 @@ async function renderRequestors(requestors) { child: [getAvatar(requestor)], }), createCustomElement({ - tagName: 'p', - textContent: requestor.user?.first_name, + tagName: 'div', + class: 'requestors__container__list__userDetails__info', + child: [ + createCustomElement({ + tagName: 'p', + class: 'info__name', + textContent: requestor.user?.first_name, + }), + createCustomElement({ + tagName: 'a', + textContent: 'details>', + class: 'info__more', + eventListeners: [ + { + event: 'click', + func: () => populateModalContent(index), + }, + ], + }), + ], }), ], }), - getActionButton(requestor), + taskRequest.status !== 'DENIED' ? getActionButton(requestor) : '', ], }); const avatarDiv = userDetailsDiv.querySelector( '.requestors__container__list__userDetails__avatar', ); - const firstNameParagraph = userDetailsDiv.querySelector('p'); - avatarDiv.addEventListener('click', () => populateModalContent(index)); - firstNameParagraph.addEventListener('click', () => - populateModalContent(index), - ); requestorsContainer.append(userDetailsDiv); }); } @@ -249,19 +288,34 @@ async function fetchTaskRequest() { }); const { data } = await res.json(); + const approvedTo = data.users + .filter((user) => user.status === 'APPROVED') + ?.map((user) => user.userId)?.[0]; + data.approvedTo = approvedTo; return data; } +const renderRejectButton = (taskRequest) => { + if (taskRequest?.status !== 'PENDING') { + rejectButton.disabled = true; + } + rejectButton.addEventListener('click', async () => { + const res = await updateTaskRequest(TaskRequestAction.REJECT); + if (res?.ok) { + rejectButton.disabled = true; + } + }); +}; const renderTaskRequest = async () => { taskRequestSkeleton.classList.remove('hidden'); taskContainer.classList.remove('hidden'); try { taskRequest = await fetchTaskRequest(); taskRequestSkeleton.classList.add('hidden'); - + renderRejectButton(taskRequest); renderTaskRequestDetails(taskRequest); renderTaskDetails(taskRequest); - renderRequestors(taskRequest?.requestors); + renderRequestors(taskRequest); } catch (e) { console.error(e); } diff --git a/taskRequests/details/style.css b/taskRequests/details/style.css index 5bb7fd76..75aa18e1 100644 --- a/taskRequests/details/style.css +++ b/taskRequests/details/style.css @@ -8,12 +8,15 @@ --color-warn-background: #fcf1e0; --color-white: white; --color-rds-blue: #1d1283; + --color-blue-light: #1d1283af; --color-black: #000; --color-gray-shade: #aaa; --color-red-variant1: #f43030; --color-black-shade-70percent: rgba(0, 0, 0, 0.7); --color-light-gray: #f4f4f4; --color-gray-variant2: #888; + --color-red-light: #fadee0; + --color-red-variant2: #ae1820; } body { @@ -59,6 +62,14 @@ body { display: grid; grid-template-columns: repeat(12, 1fr); } +.container-disabled { + opacity: 50%; + pointer-events: none; +} + +.request-details { + grid-column: auto / span 4; +} .taskRequest { padding: 1rem; @@ -103,6 +114,10 @@ body { background: var(--color-warn-background); color: var(--color-warn); } +.taskRequest__status__chip--denied { + background: var(--color-red-light); + color: var(--color-red-variant2); +} .taskRequest__status__chip--tag { background: var(--color-gray-light); color: var(--color-gray); @@ -165,7 +180,6 @@ body { } .requestors { - grid-column: auto / span 4; padding: 1rem; align-self: flex-start; border-left: solid 1px rgba(0, 0, 0, 0.1); @@ -202,6 +216,22 @@ body { .requestors__container__list li:nth-child(even) { background: #eee; } +.info__name { + margin: 0; +} +.info__more { + margin: 0; + margin-top: 2px; + display: block; + width: 100%; + text-align: end; + font-size: 0.7rem; + color: var(--color-rds-blue); + cursor: pointer; +} +.info__more:hover { + color: var(--color-blue-light); +} .requestors__conatainer__list__button { padding: 0.375rem 0.5rem; background: #fff; @@ -225,11 +255,16 @@ body { font-weight: 600; } .reject__container { - text-align: center; + display: flex; + justify-content: end; + margin-top: 2.5rem; + padding: 1rem; + min-width: 8rem; } -.requestors__container__reject__button { +.request-details__reject__button { padding: 0.375rem 0.5rem; width: 80%; + max-width: 10rem; background: var(--color-white); border: solid 1px var(--color-red-variant1); font-weight: 700; @@ -239,12 +274,17 @@ body { border-radius: 0.25rem; cursor: pointer; } -.requestors__container__reject__button:hover { +.request-details__reject__button:hover { color: var(--color-white); background: var(--color-red-variant1); transition: 0.3s ease-in-out; } - +.request-details__reject__button:disabled { + color: var(--color-gray-variant2); + background: transparent; + border: solid 1px var(--color-gray-variant2); + pointer-events: none; +} .circular-image { border-radius: 50%; max-width: 100%; @@ -266,7 +306,19 @@ body { align-items: center; flex-direction: column; } - +.spinner { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 2.5rem; + height: 2.5rem; + border: 9px solid transparent; + border-top: 9px solid var(--color-rds-blue); + border-radius: 50%; + z-index: 100; + animation: spin 1s linear infinite; +} #toast_task_details { position: absolute; top: 90%; @@ -280,6 +332,26 @@ body { flex-direction: column; } +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + + 100% { + -webkit-transform: rotate(360deg); + } +} + +@keyframes spin { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} + @keyframes skeleton { 0% { background: hsl(0, 0%, 75%); From 7d202441a2dcef3b34a2e55c86d83e04f68a20b7 Mon Sep 17 00:00:00 2001 From: Ajeyakrishna Date: Mon, 20 Nov 2023 20:26:37 +0530 Subject: [PATCH 3/5] fix: failing tests --- mock-data/taskRequests/index.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/mock-data/taskRequests/index.js b/mock-data/taskRequests/index.js index ad2a545a..810b7a6f 100644 --- a/mock-data/taskRequests/index.js +++ b/mock-data/taskRequests/index.js @@ -24,6 +24,29 @@ const fetchedTaskRequests = [ first_name: 'Test first_name', }, ], + requestors: [ + { + userExists: true, + user: { + id: 'V4rqL1aDecNGoa1IxiCu', + incompleteUserDetails: false, + discordId: '12345', + roles: { + archived: false, + }, + linkedin_id: 'uiram', + last_name: 'Raghunathan', + yoe: '5', + github_display_name: 'Sriram', + company_name: 'Juniper networks ', + github_id: '19sriram', + designation: 'Front end engineer', + twitter_id: '19sriram', + first_name: 'Sriram', + username: '19sriram', + }, + }, + ], }, ]; @@ -34,11 +57,13 @@ const individualTaskReqDetail = { lastModifiedAt: 1698837978463, requestType: 'ASSIGNMENT', createdBy: 'randhir', + requestors: ['SooJK37gzjIZfFNH0tlL'], lastModifiedBy: 'randhir', taskTitle: 'sample golang task s402', externalIssueUrl: 'https://api.github.com/repos/Real-Dev-Squad/website-backend/issues/1310', taskId: '44SwDPe1r6AgoOtWq8EN', + approvedTo: 'SooJK37gzjIZfFNH0tlL', users: [ { proposedStartDate: 1698684354000, From 0a1ad557e440b0eac55b2ac0240998db45310d3d Mon Sep 17 00:00:00 2001 From: Ajeyakrishna Date: Mon, 20 Nov 2023 20:28:57 +0530 Subject: [PATCH 4/5] chore: remove unnecessary mock data --- mock-data/taskRequests/index.js | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/mock-data/taskRequests/index.js b/mock-data/taskRequests/index.js index 810b7a6f..ad2a545a 100644 --- a/mock-data/taskRequests/index.js +++ b/mock-data/taskRequests/index.js @@ -24,29 +24,6 @@ const fetchedTaskRequests = [ first_name: 'Test first_name', }, ], - requestors: [ - { - userExists: true, - user: { - id: 'V4rqL1aDecNGoa1IxiCu', - incompleteUserDetails: false, - discordId: '12345', - roles: { - archived: false, - }, - linkedin_id: 'uiram', - last_name: 'Raghunathan', - yoe: '5', - github_display_name: 'Sriram', - company_name: 'Juniper networks ', - github_id: '19sriram', - designation: 'Front end engineer', - twitter_id: '19sriram', - first_name: 'Sriram', - username: '19sriram', - }, - }, - ], }, ]; @@ -57,13 +34,11 @@ const individualTaskReqDetail = { lastModifiedAt: 1698837978463, requestType: 'ASSIGNMENT', createdBy: 'randhir', - requestors: ['SooJK37gzjIZfFNH0tlL'], lastModifiedBy: 'randhir', taskTitle: 'sample golang task s402', externalIssueUrl: 'https://api.github.com/repos/Real-Dev-Squad/website-backend/issues/1310', taskId: '44SwDPe1r6AgoOtWq8EN', - approvedTo: 'SooJK37gzjIZfFNH0tlL', users: [ { proposedStartDate: 1698684354000, From 9b13b61c98460f3da44f8280804ae5d74313cde0 Mon Sep 17 00:00:00 2001 From: Ajeyakrishna Date: Mon, 27 Nov 2023 10:20:16 +0530 Subject: [PATCH 5/5] chore: minor css fixes --- taskRequests/details/style.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/taskRequests/details/style.css b/taskRequests/details/style.css index 75aa18e1..2bed0762 100644 --- a/taskRequests/details/style.css +++ b/taskRequests/details/style.css @@ -242,6 +242,7 @@ body { color: #19805e; border-radius: 0.25rem; cursor: pointer; + margin-left: 1rem; } .requestors__conatainer__list__button:hover { color: var(--color-white); @@ -253,6 +254,7 @@ body { border: none; color: #c3c3c3; font-weight: 600; + margin-left: 1rem; } .reject__container { display: flex; @@ -395,6 +397,9 @@ body { .taskRequest__skeleton__subtitle { max-width: 40%; } + .request-details { + grid-column: auto; + } } .requestor_details_modal_content {