|
|
@@ -34,6 +34,7 @@ type Props = { |
|
|
|
addVersion: (analysis: string, version: string) => Promise<*>, |
|
|
|
analysis: Analysis, |
|
|
|
canAdmin: boolean, |
|
|
|
canDeleteAnalyses: boolean, |
|
|
|
canCreateVersion: boolean, |
|
|
|
changeEvent: (event: string, name: string) => Promise<*>, |
|
|
|
deleteAnalysis: (analysis: string) => Promise<*>, |
|
|
@@ -56,6 +57,11 @@ export default class ProjectActivityAnalysis extends React.PureComponent { |
|
|
|
const { date, events } = analysis; |
|
|
|
const analysisTitle = translate('project_activity.analysis'); |
|
|
|
const hasVersion = events.find(event => event.category === 'VERSION') != null; |
|
|
|
|
|
|
|
const canAddVersion = canAdmin && !hasVersion && this.props.canCreateVersion; |
|
|
|
const canAddEvent = canAdmin; |
|
|
|
const canDeleteAnalyses = this.props.canDeleteAnalyses && !isFirst; |
|
|
|
|
|
|
|
return ( |
|
|
|
<li |
|
|
|
className={classNames('project-activity-analysis clearfix', { |
|
|
@@ -70,7 +76,7 @@ export default class ProjectActivityAnalysis extends React.PureComponent { |
|
|
|
</div> |
|
|
|
<div className="project-activity-analysis-icon big-spacer-right" title={analysisTitle} /> |
|
|
|
|
|
|
|
{canAdmin && ( |
|
|
|
{(canAddVersion || canAddEvent || canDeleteAnalyses) && ( |
|
|
|
<div className="project-activity-analysis-actions spacer-left"> |
|
|
|
<div className="dropdown display-inline-block"> |
|
|
|
<button |
|
|
@@ -80,8 +86,7 @@ export default class ProjectActivityAnalysis extends React.PureComponent { |
|
|
|
<SettingsIcon size={12} style={{ marginTop: 3 }} /> <i className="icon-dropdown" /> |
|
|
|
</button> |
|
|
|
<ul className="dropdown-menu dropdown-menu-right"> |
|
|
|
{!hasVersion && |
|
|
|
this.props.canCreateVersion && ( |
|
|
|
{canAddVersion && ( |
|
|
|
<li> |
|
|
|
<AddEventForm |
|
|
|
addEvent={this.props.addVersion} |
|
|
@@ -90,15 +95,18 @@ export default class ProjectActivityAnalysis extends React.PureComponent { |
|
|
|
/> |
|
|
|
</li> |
|
|
|
)} |
|
|
|
<li> |
|
|
|
<AddEventForm |
|
|
|
addEvent={this.props.addCustomEvent} |
|
|
|
analysis={analysis} |
|
|
|
addEventButtonText="project_activity.add_custom_event" |
|
|
|
/> |
|
|
|
</li> |
|
|
|
{!isFirst && <li role="separator" className="divider" />} |
|
|
|
{!isFirst && ( |
|
|
|
{canAddEvent && ( |
|
|
|
<li> |
|
|
|
<AddEventForm |
|
|
|
addEvent={this.props.addCustomEvent} |
|
|
|
analysis={analysis} |
|
|
|
addEventButtonText="project_activity.add_custom_event" |
|
|
|
/> |
|
|
|
</li> |
|
|
|
)} |
|
|
|
{(canAddVersion || canAddEvent) && |
|
|
|
canDeleteAnalyses && <li role="separator" className="divider" />} |
|
|
|
{canDeleteAnalyses && ( |
|
|
|
<li> |
|
|
|
<RemoveAnalysisForm |
|
|
|
analysis={analysis} |
|
|
@@ -115,6 +123,7 @@ export default class ProjectActivityAnalysis extends React.PureComponent { |
|
|
|
<Events |
|
|
|
analysis={analysis.key} |
|
|
|
canAdmin={canAdmin} |
|
|
|
canDeleteAnalyses={this.props.canDeleteAnalyses} |
|
|
|
changeEvent={this.props.changeEvent} |
|
|
|
deleteEvent={this.props.deleteEvent} |
|
|
|
events={events} |