OpenProject is the leading open source project management software.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
openproject/public/templates/timelines/tree.html

65 lines
2.4 KiB

<tr ng-repeat="node in nodes"
ng-class="{
'tl-first-row': $first,
'tl-last-row': $last,
'tl-grouping': timeline.isGrouping(),
'tl-project-row': node.payload.node.payload.identifier === 'projects'
}"
ng-show="node.ancestors | ancestorsExpanded">
<td ng-if="timeline.isGrouping() && node.payload.identifier === 'projects' && node.level === 0 && node.group !== nodes[$index-1].group" class="tl-grouping" colspan="{{timeline.options.columns.length + 1}}">
<span class="tl-word-ellipsis">
{{timeline.escape(node.payload.getFirstLevelGroupingName())}}
</span>
</td>
<td tree-node
ng-class="[
'tl-first-column',
'tl-indent-' + node.level,
node.childNodes.length > 0 && (node.isExpanded() && 'tl-expanded' || 'tl-collapsed')
]">
<a ng-click="node.expanded = !node.expanded" ng-show="node.childNodes.length > 0">
{{node.expanded && '-' || '+'}}
</a>
<span class="tl-word-ellipsis">
<span>
<a title="{{timeline.i18n('timelines.change')}}"
ng-class="{
'icon tl-icon-added': node.payload.identifier === 'planning_elements' && node.payload.isNewlyAdded(),
'icon tl-icon-deleted': node.payload.identifier === 'planning_elements' && node.payload.isDeleted(),
'icon tl-icon-changed': node.payload.identifier === 'planning_elements' && node.payload.hasAlternateDates()
}" />
</span>
<span>
<a data-modal title="{{node.text}}" ng-class="{'tl-discreet-link': true, 'tl-project': node.payload.node.payload.identifier === 'projects'}">
{{node.text}}
</a>
</span>
</span>
</td>
<td option-column ng-repeat="option in timeline.options.columns">
<span class="tl-historical" ng-show="isDateOption(option) && node.payload.does_historical_differ(option)">
<a href="javascript://" title="{{timeline.i18n('timelines.change')}}"
ng-class="[
'icon',
'tl-icon-' + (node.payload | historicalDateKind:option)
]">
{{node.payload.historical()[option] || timeline.i18n('timelines.empty')}}
</a>
<br/>
</span>
<span ng-class="[
'tl-column',
isDateOption(option) && 'tl-current',
isDateOption(option) && node.payload.does_historical_differ(option) && 'tl-' + (node.payload | historicalDateKind:option)
]">
{{node.payload | getOptionColumn:option}}
</span>
</td>
</tr>