From aa5d877a6b8f908bd379b30b8abaef95b0eaeecf Mon Sep 17 00:00:00 2001 From: rashmi73 Date: Thu, 4 Jul 2019 11:49:22 +0530 Subject: [PATCH 01/18] issue 3104 fix --- .../ProjectPlanEmpty/ProjectPlanEmpty.jsx | 24 +++++++++++++------ .../containers/ProjectPlanContainer.jsx | 2 +- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/projects/detail/components/ProjectPlanEmpty/ProjectPlanEmpty.jsx b/src/projects/detail/components/ProjectPlanEmpty/ProjectPlanEmpty.jsx index 2d075780d..27c7c30cd 100644 --- a/src/projects/detail/components/ProjectPlanEmpty/ProjectPlanEmpty.jsx +++ b/src/projects/detail/components/ProjectPlanEmpty/ProjectPlanEmpty.jsx @@ -5,12 +5,22 @@ import React from 'react' import './ProjectPlanEmpty.scss' -const ProjectPlanEmpty = () => ( -
-

Welcome to your project plan

-

Thank you for submitting your project requirements. In the next 24h someone from our team will reach out to you to discuss the project details with you so we can build the detailed project plan. Until then stand back and relax, we're working hard on your information.

-

If you feel like you have more things to send over, or want to reach out to us, please drop us a line at connect@topcoder.com. Thanks!

-
-) +const ProjectPlanEmpty = ({ isManageUser }) => { + + return isManageUser ? ( +
+

Build Your Project Plan

+

Build your project plan in Connect to reflect delivery progress to the customer. Begin by clicking the "Add Phase" button, select the template that best matches your need, and modify the phase title and milestone dates prior to publishing to the customer.

+

Important Note: To move the project into 'Active' status, you must set at least one phase in Connect's Project Plan to be in 'Planned' status, which signifies to customers that delivery planning and execution has begun.

+

If you feel like you have more things to send over, or want to reach out to us, please drop us a line at connect@topcoder.com. Thanks!

+
+ ) : ( +
+

Welcome to your project plan

+

Thank you for submitting your project requirements. In the next 24h someone from our team will reach out to you to discuss the project details with you so we can build the detailed project plan. Until then stand back and relax, we're working hard on your information.

+

If you feel like you have more things to send over, or want to reach out to us, please drop us a line at connect@topcoder.com. Thanks!

+
+ ) +} export default ProjectPlanEmpty diff --git a/src/projects/detail/containers/ProjectPlanContainer.jsx b/src/projects/detail/containers/ProjectPlanContainer.jsx index 697567eb2..9668bfd5c 100644 --- a/src/projects/detail/containers/ProjectPlanContainer.jsx +++ b/src/projects/detail/containers/ProjectPlanContainer.jsx @@ -162,7 +162,7 @@ class ProjectPlanContainer extends React.Component { }} /> ) : ( - + )} {isProjectLive && checkPermission(PERMISSIONS.EDIT_PROJECT_PLAN, project, phases) && !isLoadingPhases && (
Add New Phase From d2de5189fa2c8eb3b634051bbca24b06ba60d0f4 Mon Sep 17 00:00:00 2001 From: Nahid Mahbub Date: Thu, 4 Jul 2019 13:59:35 +0600 Subject: [PATCH 02/18] issues-3130: Clear error message in delete --- src/routes/metadata/components/TemplateForm.jsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/routes/metadata/components/TemplateForm.jsx b/src/routes/metadata/components/TemplateForm.jsx index 735f53b4c..acfd340ca 100644 --- a/src/routes/metadata/components/TemplateForm.jsx +++ b/src/routes/metadata/components/TemplateForm.jsx @@ -290,6 +290,9 @@ class TemplateForm extends Component { showDelete() { this.setState({ showDeleteConfirm: true, + forcedError: { + verifyPrimaryKeyValue: null, + } }) } From db23a97457e2e2f8d3276d53d3cd82ff538639f2 Mon Sep 17 00:00:00 2001 From: Sukma Nugraha Date: Thu, 4 Jul 2019 18:44:27 +0700 Subject: [PATCH 03/18] Fix template reducer to show error message when failed on creating new product category. --- src/reducers/templates.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/reducers/templates.js b/src/reducers/templates.js index 2235c1ff7..0b9c8ebd5 100644 --- a/src/reducers/templates.js +++ b/src/reducers/templates.js @@ -25,6 +25,7 @@ import { CREATE_PROJECT_TEMPLATE_SUCCESS, CREATE_PRODUCT_TEMPLATE_PENDING, CREATE_PROJECT_TYPE_PENDING, + CREATE_PRODUCT_CATEGORY_FAILURE, CREATE_PRODUCT_TEMPLATE_FAILURE, CREATE_PROJECT_TYPE_FAILURE, CREATE_PRODUCT_TEMPLATE_SUCCESS, @@ -167,6 +168,7 @@ export default function(state = initialState, action) { } case ADD_PROJECTS_METADATA_FAILURE: case CREATE_PROJECT_TEMPLATE_FAILURE: + case CREATE_PRODUCT_CATEGORY_FAILURE: case CREATE_PRODUCT_TEMPLATE_FAILURE: case CREATE_PROJECT_TYPE_FAILURE: case CREATE_MILESTONE_TEMPLATE_FAILURE: From 25bd2dfaca14323c01d1882ef7f848f2022e09b9 Mon Sep 17 00:00:00 2001 From: sumitdaga Date: Thu, 4 Jul 2019 17:28:10 +0530 Subject: [PATCH 04/18] fix for issue-3059 --- src/projects/detail/ProjectDetail.jsx | 5 ++++- src/projects/detail/containers/TeamManagementContainer.jsx | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/projects/detail/ProjectDetail.jsx b/src/projects/detail/ProjectDetail.jsx index 5bc2c3769..cf41a607f 100644 --- a/src/projects/detail/ProjectDetail.jsx +++ b/src/projects/detail/ProjectDetail.jsx @@ -8,6 +8,7 @@ import { renderComponent, branch, compose, withProps } from 'recompose' import { loadProjectDashboard } from '../actions/projectDashboard' import { clearLoadedProject } from '../actions/project' import { acceptOrRefuseInvite } from '../actions/projectMember' +import { loadProjects } from '../actions/loadProjects' import { LOAD_PROJECT_FAILURE, PROJECT_ROLE_CUSTOMER, PROJECT_ROLE_OWNER, @@ -163,6 +164,8 @@ class ProjectDetail extends Component { status: isJoining ? PROJECT_MEMBER_INVITE_STATUS_ACCEPTED : PROJECT_MEMBER_INVITE_STATUS_REFUSED }).then(() => { if(!isJoining) { + // navigate to project listing and reload projects + this.props.loadProjects({ sort: 'updatedAt desc' }) this.props.history.push('/projects/') } else { this.props.loadProjectDashboard(this.props.match.params.projectId) @@ -229,7 +232,7 @@ const mapStateToProps = ({projectState, projectDashboard, loadUser, productsTime } } -const mapDispatchToProps = { loadProjectDashboard, clearLoadedProject, acceptOrRefuseInvite } +const mapDispatchToProps = { loadProjectDashboard, clearLoadedProject, acceptOrRefuseInvite, loadProjects } ProjectDetail.propTypes = { project: PropTypes.object, diff --git a/src/projects/detail/containers/TeamManagementContainer.jsx b/src/projects/detail/containers/TeamManagementContainer.jsx index 3923f25c7..f6f4bfae7 100644 --- a/src/projects/detail/containers/TeamManagementContainer.jsx +++ b/src/projects/detail/containers/TeamManagementContainer.jsx @@ -28,6 +28,7 @@ import { removeProjectMember, updateProjectMember } from '../../actions/projectMember' +import { loadProjects } from '../../actions/loadProjects' class TeamManagementContainer extends Component { @@ -61,7 +62,8 @@ class TeamManagementContainer extends Component { _.findIndex(nextProps.members, m => m.userId === this.props.currentUser.userId) === -1 ) { - // navigate to project listing + // navigate to project listing and reload projects + this.props.loadProjects({ sort: 'updatedAt desc' }) this.props.history.push('/projects/') } const {processingInvites} = this.props @@ -252,6 +254,7 @@ const mapDispatchToProps = { deleteTopcoderMemberInvite, acceptOrRefuseInvite, reloadProjectMembers, + loadProjects, } TeamManagementContainer.propTypes = { From 0de0390a7f6afa3f0e4915612ea74dfbe2557cfb Mon Sep 17 00:00:00 2001 From: prakashdurlabhji Date: Thu, 4 Jul 2019 20:23:44 +0530 Subject: [PATCH 05/18] issue 3126 fix --- src/projects/reducers/project.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/projects/reducers/project.js b/src/projects/reducers/project.js index 8d9ebaa5a..e90c5e021 100644 --- a/src/projects/reducers/project.js +++ b/src/projects/reducers/project.js @@ -337,6 +337,7 @@ export const projectState = function (state=initialState, action) { ...action.payload, budget: _.cloneDeep(state.project.budget), duration: _.cloneDeep(state.project.duration), + invites: _.cloneDeep(state.project.invites), } return Object.assign({}, state, { From 726333a3c56c3fba5b5caee317106337a78a6228 Mon Sep 17 00:00:00 2001 From: PrakashDurlabhji Date: Thu, 4 Jul 2019 21:15:18 +0530 Subject: [PATCH 06/18] Update projects.js --- src/api/projects.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/projects.js b/src/api/projects.js index 3510ca29d..c5dba1524 100644 --- a/src/api/projects.js +++ b/src/api/projects.js @@ -4,7 +4,7 @@ import { TC_API_URL, PROJECTS_API_URL, PROJECTS_LIST_PER_PAGE } from '../config/ export function getProjects(criteria, pageNum) { // add default params - const includeFields = ['id', 'name', 'description', 'members', 'status', 'type', 'actualPrice', 'estimatedPrice', 'createdAt', 'updatedAt', 'createdBy', 'updatedBy', 'details', 'lastActivityAt', 'lastActivityUserId', 'version'] + const includeFields = ['id', 'name', 'description', 'members', 'status', 'type', 'actualPrice', 'estimatedPrice', 'createdAt', 'updatedAt', 'createdBy', 'updatedBy', 'details', 'lastActivityAt', 'lastActivityUserId', 'version', 'templateId'] const params = { limit: PROJECTS_LIST_PER_PAGE, offset: (pageNum - 1) * PROJECTS_LIST_PER_PAGE, From 380770c6589892e0009360bc755e9c3a3b356536 Mon Sep 17 00:00:00 2001 From: sumitdaga Date: Fri, 5 Jul 2019 15:02:35 +0530 Subject: [PATCH 07/18] fix for issue 3147 --- .../detail/components/Accordion/Accordion.jsx | 12 +++++++++++- .../detail/components/Accordion/Accordion.scss | 9 ++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/projects/detail/components/Accordion/Accordion.jsx b/src/projects/detail/components/Accordion/Accordion.jsx index 4c3b8f500..cc1cbd971 100644 --- a/src/projects/detail/components/Accordion/Accordion.jsx +++ b/src/projects/detail/components/Accordion/Accordion.jsx @@ -11,6 +11,9 @@ import cn from 'classnames' import IconX from '../../../../assets/icons/ui-x-mark.svg' import IconCarretDown from '../../../../assets/icons/arrow-6px-carret-down-normal.svg' +import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip' +import { TOOLTIP_DEFAULT_DELAY } from '../../../../config/constants' + import './Accordion.scss' /** @@ -132,7 +135,14 @@ class Accordion extends React.Component { return (