From 5835f12b0ed9946008435963bb63031445046752 Mon Sep 17 00:00:00 2001 From: Marios Kranitsas Date: Thu, 17 Feb 2022 14:43:34 +0200 Subject: [PATCH] Updates on Self-Service dashboard --- src/actions/challenges.js | 2 +- .../Description-Field/index.js | 8 +++- src/components/ChallengeEditor/index.js | 2 +- .../ChallengeList/index.js | 17 +++++++- src/containers/Challenges/index.js | 43 +++++++++++-------- 5 files changed, 49 insertions(+), 23 deletions(-) diff --git a/src/actions/challenges.js b/src/actions/challenges.js index 7c7e3d66..943cc558 100644 --- a/src/actions/challenges.js +++ b/src/actions/challenges.js @@ -88,7 +88,7 @@ export function loadChallengesByPage (page, projectId, status, filterChallengeNa } if (selfService) { filters.selfService = true - if (userHandle && filters.status.toUpperCase() !== CHALLENGE_STATUS.DRAFT) { + if (userHandle && filters.status.toUpperCase() !== CHALLENGE_STATUS.DRAFT && filters.status.toUpperCase() !== CHALLENGE_STATUS.NEW) { filters.selfServiceCopilot = userHandle } } diff --git a/src/components/ChallengeEditor/Description-Field/index.js b/src/components/ChallengeEditor/Description-Field/index.js index 0b3c187c..2bdb4235 100644 --- a/src/components/ChallengeEditor/Description-Field/index.js +++ b/src/components/ChallengeEditor/Description-Field/index.js @@ -42,7 +42,13 @@ class DescriptionField extends Component { } }) } else { - this.ref.current.innerHTML = challenge[type] ? marked(challenge[type]) : '' + if (challenge.legacy.selfService) { + const regex = new RegExp('{{[a-zA-Z0-9.]+}}', 'g') + const newDescription = challenge[type] ? challenge[type].replace(regex, 'MISSING DATA FROM INTAKE FORM') : '' + this.ref.current.innerHTML = marked(newDescription) + } else { + this.ref.current.innerHTML = challenge[type] ? marked(challenge[type]) : '' + } } } diff --git a/src/components/ChallengeEditor/index.js b/src/components/ChallengeEditor/index.js index 1f0b67ba..405239a8 100644 --- a/src/components/ChallengeEditor/index.js +++ b/src/components/ChallengeEditor/index.js @@ -1605,7 +1605,7 @@ class ChallengeEditor extends Component { )}
-
Public specification *
+
Public specification*
Access specification templates here
diff --git a/src/components/ChallengesComponent/ChallengeList/index.js b/src/components/ChallengesComponent/ChallengeList/index.js index e739e1d1..88634a4a 100644 --- a/src/components/ChallengesComponent/ChallengeList/index.js +++ b/src/components/ChallengesComponent/ChallengeList/index.js @@ -20,6 +20,7 @@ import Message from '../Message' import { CHALLENGE_STATUS } from '../../../config/constants' +import { checkAdmin } from '../../../util/tc' require('bootstrap/scss/bootstrap.scss') @@ -105,6 +106,9 @@ class ChallengeList extends Component { } getHandle () { + if (checkAdmin(this.props.auth.token)) { + return null + } return this.props.auth && this.props.auth.user ? this.props.auth.user.handle : null } @@ -130,9 +134,11 @@ class ChallengeList extends Component { let selectedTab = 0 switch (status) { case CHALLENGE_STATUS.APPROVED: - case CHALLENGE_STATUS.NEW: selectedTab = 1 break + case CHALLENGE_STATUS.NEW: + selectedTab = selfService ? 3 : 1 + break case CHALLENGE_STATUS.DRAFT: selectedTab = 2 break @@ -194,7 +200,8 @@ class ChallengeList extends Component { break } case 3: { - this.directUpdateSearchParam(searchText, CHALLENGE_STATUS.COMPLETED) + const status = selfService ? CHALLENGE_STATUS.NEW : CHALLENGE_STATUS.COMPLETED + this.directUpdateSearchParam(searchText, status) break } case 4: { @@ -203,12 +210,18 @@ class ChallengeList extends Component { } } }}> + { + selfService &&

Total Challenges: {totalChallenges}

+ } {(selfService ? 'Assigned challenges' : 'Active')} {(selfService ? 'Approved' : 'New')} {this.getStatusTextFunc(selfService)(CHALLENGE_STATUS.DRAFT)} {(!selfService && Completed)} {(!selfService && Cancelled)} + { + selfService && checkAdmin(this.props.auth.token) && Draft + } diff --git a/src/containers/Challenges/index.js b/src/containers/Challenges/index.js index 929403cb..df479e4c 100644 --- a/src/containers/Challenges/index.js +++ b/src/containers/Challenges/index.js @@ -15,6 +15,7 @@ import { loadProject } from '../../actions/projects' import { loadProjects, setActiveProject, resetSidebarActiveParams } from '../../actions/sidebar' import { CHALLENGE_STATUS } from '../../config/constants' import styles from './Challenges.module.scss' +import { checkAdmin } from '../../util/tc' class Challenges extends Component { constructor (props) { @@ -48,7 +49,8 @@ class Challenges extends Component { reloadChallenges (props) { const { activeProjectId, projectDetail: reduxProjectInfo, projectId, challengeProjectId, loadProject, selfService } = props if (activeProjectId !== challengeProjectId || selfService) { - this.props.loadChallengesByPage(1, projectId ? parseInt(projectId) : -1, CHALLENGE_STATUS.ACTIVE, '', selfService) + const isAdmin = checkAdmin(this.props.auth.token) + this.props.loadChallengesByPage(1, projectId ? parseInt(projectId) : -1, CHALLENGE_STATUS.ACTIVE, '', selfService, isAdmin ? null : this.props.auth.user.handle) if (!selfService && (!reduxProjectInfo || `${reduxProjectInfo.id}` !== projectId) ) { loadProject(projectId) @@ -68,6 +70,7 @@ class Challenges extends Component { } render () { + console.log('im here', this.props.auth) const { challenges, isLoading, @@ -103,23 +106,27 @@ class Challenges extends Component { return (
-
- - this.updateProjectName(e.target.value)} - value={searchProjectName} - /> - - -
+ { + !selfService && ( +
+ + this.updateProjectName(e.target.value)} + value={searchProjectName} + /> + + +
+ ) + } { activeProjectId === -1 && !selfService &&
No project selected. Select one below
}