Skip to content

Commit e1ccbae

Browse files
authored
Merge pull request #4049 from appirio-tech/dev
Connect Release 2.10.0
2 parents 20f9169 + d97ca42 commit e1ccbae

File tree

27 files changed

+582
-232
lines changed

27 files changed

+582
-232
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ workflows:
136136
- build-dev
137137
filters:
138138
branches:
139-
only: ['feature/permissions']
139+
only: ['feature/bulk-milestone-updates']
140140

141141
- deployProd:
142142
context : org-global

config/constants/dev.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,5 @@ module.exports = {
4949
TC_SYSTEM_USERID: process.env.DEV_TC_SYSTEM_USERID,
5050
MAINTENANCE_MODE: process.env.DEV_MAINTENANCE_MODE,
5151

52-
TC_CDN_URL: process.env.TC_CDN_URL || 'https://d1aahxkjiobka8.cloudfront.net'
52+
TC_CDN_URL: process.env.TC_CDN_URL
5353
}

config/constants/master.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,5 @@ module.exports = {
4949
TC_SYSTEM_USERID: process.env.PROD_TC_SYSTEM_USERID,
5050
MAINTENANCE_MODE: process.env.PROD_MAINTENANCE_MODE,
5151

52-
TC_CDN_URL: process.env.TC_CDN_URL || 'https://dlxczxztayxv6.cloudfront.net'
52+
TC_CDN_URL: process.env.TC_CDN_URL
5353
}

config/constants/qa.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,5 +48,5 @@ module.exports = {
4848
TC_SYSTEM_USERID: process.env.QA_TC_SYSTEM_USERID,
4949
MAINTENANCE_MODE: process.env.QA_MAINTENANCE_MODE,
5050

51-
TC_CDN_URL: process.env.TC_CDN_URL || 'https://d1aahxkjiobka8.cloudfront.net'
51+
TC_CDN_URL: process.env.TC_CDN_URL
5252
}

package-lock.json

Lines changed: 22 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
},
8585
"dependencies": {
8686
"appirio-tech-react-components": "git+https://github.com/appirio-tech/react-components.git#feature/connectv2",
87-
"axios": "^0.13.1",
87+
"axios": "^0.19.2",
8888
"brace": "^0.11.1",
8989
"classnames": "^2.2.3",
9090
"coffeescript": "^1.12.7",

scripts/permissions-doc/webpack.config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ webpackConfig.module.rules.push({
2121

2222
webpackConfig.plugins = []
2323

24-
console.log('webpackConfig', JSON.stringify(webpackConfig, null, 2))
24+
// Uncomment for debugging the final webpack config
25+
// console.log('webpackConfig', JSON.stringify(webpackConfig, null, 2))
2526

2627
module.exports = webpackConfig

src/actions/loadUser.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ export function loadUserSuccess(dispatch, token) {
5454
currentUser.id = currentUser.userId
5555
currentUser.token = token
5656
}
57+
// uncomment to add admin role to the user for testing admin functionality locally
58+
// currentUser.roles.push('administrator')
5759
if (currentUser) {
5860
getUserProfile(currentUser.handle).then((profile) => {
5961
currentUser = _.assign(currentUser, profile)

src/api/timelines.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,19 @@ export function updateMilestone(timelineId, milestoneId, updatedProps) {
5353
.then(resp => resp.data)
5454
}
5555

56+
/**
57+
* Bulk update milestones
58+
*
59+
* @param {Number} timelineId timeline id
60+
* @param {Array<{}>} milestones the timeline's milestones
61+
*
62+
* @returns {Promise} milestones
63+
*/
64+
export function updateMilestones(timelineId, milestones) {
65+
return axios.patch(`${PROJECTS_API_URL}/v5/timelines/${timelineId}/milestones`, milestones)
66+
.then(resp => resp.data)
67+
}
68+
5669
/**
5770
* Get milestone templates by product template id
5871
*

src/components/ProjectInfo/ProjectInfo.jsx

Lines changed: 41 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ import { SCREEN_BREAKPOINT_MD, PROJECT_STATUS_ACTIVE, PHASE_STATUS_ACTIVE, PHASE
1111
import ReviewProjectButton from '../../projects/detail/components/ReviewProjectButton'
1212
import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip'
1313
import { TOOLTIP_DEFAULT_DELAY } from '../../config/constants'
14+
import { getProjectTemplateByKey } from '../../helpers/templates'
1415

16+
import ProjectTypeIcon from '../../components/ProjectTypeIcon'
1517
import './ProjectInfo.scss'
1618

1719
class ProjectInfo extends Component {
@@ -23,7 +25,7 @@ class ProjectInfo extends Component {
2325
render() {
2426
const { project, currentMemberRole,
2527
onChangeStatus, isSuperUser, phases, onSubmitForReview, isProjectProcessing,
26-
showDeleteConfirm, toggleProjectDelete, onConfirmDelete } = this.props
28+
showDeleteConfirm, toggleProjectDelete, onConfirmDelete, projectTemplates } = this.props
2729

2830
const code = _.get(project, 'details.utm.code', '')
2931

@@ -50,29 +52,47 @@ class ProjectInfo extends Component {
5052
</div>
5153
)
5254

55+
const url = `/projects/${project.id}`
56+
const projectTemplateId = project.templateId
57+
const projectTemplateKey = _.get(project, 'details.products[0]')
58+
const projectTemplate = projectTemplateId
59+
? _.find(projectTemplates, pt => pt.id === projectTemplateId)
60+
: getProjectTemplateByKey(projectTemplates, projectTemplateKey)
61+
// icon for the product, use default generic work project icon for categories which no longer exist now
62+
const productIcon = _.get(projectTemplate, 'icon', 'tech-32px-outline-work-project')
63+
const templateName = _.get(projectTemplate, 'name', null)
64+
const projectType = project.type !== undefined ? project.type[0].toUpperCase() + project.type.substr(1).replace(/_/g, ' ') : null
5365
return (
5466
<div className="project-info">
55-
<div className="project-status">
56-
<div styleName="project-name">{_.unescape(project.name)}</div>
57-
58-
<div styleName="project-status-bottom">
59-
<div className="project-status-time">
60-
Created {moment(project.createdAt).format('MMM DD, YYYY')}
61-
</div>
62-
{!!code &&
63-
<div styleName="tooltip-target-container">
64-
<Tooltip styleName="tooltip" theme="light" tooltipDelay={TOOLTIP_DEFAULT_DELAY}>
65-
<div className="tooltip-target">
66-
<div className="project-status-ref">{_.unescape(code)}</div>
67-
</div>
68-
<div className="tooltip-body">
69-
<div>{_.unescape(code)}</div>
70-
</div>
71-
</Tooltip>
72-
</div>
73-
74-
}
67+
<div className="icon-and-status" >
68+
<div className="item-icon">
69+
<Link to={url} className="spacing">
70+
<div className="project-type-icon" title={templateName ? templateName : projectType}>
71+
<ProjectTypeIcon type={productIcon} />
72+
</div>
73+
</Link>
7574
</div>
75+
<div className="project-status">
76+
<div styleName="project-name">{_.unescape(project.name)}</div>
77+
</div>
78+
</div>
79+
<div styleName="project-status-bottom">
80+
<div className="project-status-time">
81+
Created {moment(project.createdAt).format('MMM DD, YYYY')}
82+
</div>
83+
{!!code &&
84+
<div styleName="tooltip-target-container">
85+
<Tooltip styleName="tooltip" theme="light" tooltipDelay={TOOLTIP_DEFAULT_DELAY}>
86+
<div className="tooltip-target">
87+
<div className="project-status-ref">{_.unescape(code)}</div>
88+
</div>
89+
<div className="tooltip-body">
90+
<div>{_.unescape(code)}</div>
91+
</div>
92+
</Tooltip>
93+
</div>
94+
95+
}
7696
</div>
7797
{showDeleteConfirm && (
7898
<DeleteProjectModal

0 commit comments

Comments
 (0)