105 lines
6.9 KiB
HTML
105 lines
6.9 KiB
HTML
<div ux-id="release-plan-item-list">
|
|
<div class="release-plan__list-header">{{'create.release.releasePlan.itemList.instruction' | i18n}}</div>
|
|
|
|
<div loading-spinner if="state.dataIsLoading" centered="true" overlay="true"></div>
|
|
|
|
<div class="release-plan__button-groups">
|
|
<div class="release-plan__milestone-filter" dropdown>
|
|
<button ux-id="milestone-filter-btn" type="button" class="btn_link dropdown-toggle">
|
|
<i class="icon-filter"></i> {{'common.button.filter' | i18n}}
|
|
</button>
|
|
<ul class="dropdown-menu" prevent-click-event>
|
|
<li class="dropdown-item__header">
|
|
<label>{{'create.release.releasePlan.filter.showMilestone' | i18n}}</label>
|
|
</li>
|
|
<li class="dropdown-item__filter-select-control">
|
|
<span class="pull-left">
|
|
<div>
|
|
<button ux-id="select-all" type="button" class="dropdown-item_filter-btn-link" ng-click="selectAll(true)" ng-enter="selectAll(true)" ng-if="getSelectedFiltersList().length < milestoneFilters.length">{{'filter.control.selectAll' | i18n}}</button>
|
|
<button ux-id="select-none" type="button" class="dropdown-item_filter-btn-link" ng-click="selectAll(false)" ng-enter="selectAll(false)" ng-if="getSelectedFiltersList().length == milestoneFilters.length">{{'filter.control.selectNone' | i18n}}</button>
|
|
</div>
|
|
</span>
|
|
</li>
|
|
<li ng-repeat="filterItem in milestoneFilters">
|
|
<div ux-id="apply-filter_{{::filterItem.name || 'none'}}" class="{{(filterItem.selected) ? 'dropdown-item_selected' : 'dropdown-item'}}" ng-click="applyFilter(filterItem)" ng-enter="applyFilter(filterItem)" role="menuitemcheckbox" tabindex="0"
|
|
aria-checked="{{filterItem.selected}}" title="{{filterItem.label}}">
|
|
{{filterItem.label}}
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="release-plan__sequence-save-buttons" ng-if="ticket.accessMappings.manifestEditAllowed">
|
|
<button ux-id="save-sequence-btn" type="button" class="btn_primary create-ticket__action-btn" ng-disabled="!dirty" ng-click="saveSequence()" ng-enter="saveSequence()">
|
|
{{ 'common.button.save' | i18n }}
|
|
</button>
|
|
<button ux-id="revert-btn" type="button" class="btn_secondary" ng-disabled="!dirty" ng-click="onRevertClick()">
|
|
{{ 'common.button.revert' | i18n }}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div ux-id="plan-group_{{$index}}" class="release-plan__milestone-groups" ng-if="!state.dataIsLoading" ng-repeat="releasePlanGroup in releasePlanGroups" ng-show="releasePlanGroup.length">
|
|
<span tabindex="0" class="release-plan__milestone-group__label" ng-if="!releasePlanGroup[0].realObject.releaseMilestone">{{'create.release.wizard.milestone.label' | i18n}}: {{'common.labels.noneSet' | i18n}}</span>
|
|
<span tabindex="0" class="release-plan__milestone-group__label" aria-label="{{'create.release.wizard.milestone.label' | i18n}} {{releasePlanGroup[0].realObject.releaseMilestone | localizeLabel: 'milestone': 'release'}}" ng-if="releasePlanGroup[0].realObject.releaseMilestone">{{'create.release.wizard.milestone.label' | i18n}}: {{releasePlanGroup[0].realObject.releaseMilestone | localizeLabel: 'milestone': 'release'}}</span>
|
|
<div class="profile-relation__release-plan-container" ui-sortable="parentSortableOptions" ng-model="releasePlanGroup">
|
|
<div ux-id="plan-item_{{$index}}" ng-repeat="releasePlanItem in releasePlanGroup" claa="task-parent-item-container">
|
|
<div class="profile-relation__item-task-container">
|
|
<div class="profile-relation__item profile-relation__item-task clearfix">
|
|
<div class="profile-relation__item-task-col profile-relation__item-task-col1">
|
|
<i class="icon-dots"></i>
|
|
</div>
|
|
<div class="profile-relation__item-task-col profile-relation__item-task-col2">
|
|
<input ux-id="item-sequence" type="text" ng-model="releasePlanItem.realObject.sequence" class="profile-relation__item-task-seq-input"
|
|
aria-label="{{releasePlanItem.id}} {{'common.labels.sequence' | i18n}} {{releasePlanItem.realObject.sequence}}"
|
|
ng-focus="setFocus($event)" ng-change="updateItemsSequence(releasePlanItem)">
|
|
</div>
|
|
<div class="profile-relation__item-task-col3" ui-sref="activity({id: releasePlanItem.id})" target={{target}} tabindex="0"
|
|
ng-class="{'profile-relation__item-task-details' : true}">
|
|
<div class="profile-relation__item-task-icon" ng-class="'icon-'+releasePlanItem.type"></div>
|
|
<div id="taskContentInfo_{{::releasePlanItem.id}}" class="release-plan__item-details clearfix">
|
|
<div class="col-sm-4">
|
|
<a ux-id="display-id" entity-profile-link="releasePlanItem" target={{target}}>{{releasePlanItem.displayId}}</a>
|
|
<div ux-id="description" class="nowrap-line">{{releasePlanItem.desc}}</div>
|
|
|
|
<div class="release-plan-item__milestone-dropdown dropdown">
|
|
<span class="chart__group-label">{{ 'create.release.wizard.milestone.label' | i18n }}:</span>
|
|
<button ux-id="item-milestone" type="button" class="btn_link dropdown-toggle"> {{releasePlanItem.realObject.releaseMilestone | localizeLabel: 'milestone': 'release'}} <i class="icon-angle_down"></i></button>
|
|
<ul class="dropdown-menu dropdown-menu-right">
|
|
<li class="dropdown-item__header">
|
|
<label>{{ 'console.filter.name.milestones' | i18n }}:</label>
|
|
</li>
|
|
<li ux-id="option_{{::milestone.name}}" ng-repeat="milestone in milestones"><a class="dropdown-item" role="menuitem" ng-click="updateMilestone(milestone, releasePlanItem)">{{::milestone.label}}</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-sm-3">
|
|
<div ng-if="releasePlanItem.realObject.assignee.fullName">
|
|
{{'common.labels.assignedTo' | i18n}}:
|
|
<a ux-id="assignee-name" ng-if="releasePlanItem.realObject.assignee.fullName" href="#/person/{{releasePlanItem.realObject.assignee.loginId | escape}}">{{releasePlanItem.realObject.assignee.fullName}}</a>
|
|
</div>
|
|
<div>{{'common.labels.status' | i18n}}: <span ux-id="status" class="label-value">{{releasePlanItem.realObject.status.value | localizeLabel: 'status':'activity'}}</span></div>
|
|
</div>
|
|
|
|
<div class="col-sm-3">
|
|
<div>{{'create.ticket.scheduled.start.time' | i18n}}: <span ux-id="scheduled-start" class="label-value">{{(releasePlanItem.realObject.scheduledStartDate | date:'mediumDate')}}</span></div>
|
|
<div>{{'create.ticket.scheduled.end.time' | i18n}}: <span ux-id="scheduled-end" class="label-value">{{(releasePlanItem.realObject.scheduledEndDate | date:'mediumDate')}}</span></div>
|
|
</div>
|
|
</div>
|
|
<div class="profile-relation__remove" ng-if="ticket.accessMappings.manifestEditAllowed">
|
|
<i ux-id="remove-item-btn" ng-click="removeItem({item: releasePlanItem, event: $event})"
|
|
ng-enter="removeItem({item: releasePlanItem, event: $event})"
|
|
title="{{'common.button.remove' | i18n}}"
|
|
class="icon-cross"
|
|
role="link"
|
|
tabindex="0">
|
|
</i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div> |