81 lines
6.8 KiB
HTML
81 lines
6.8 KiB
HTML
<div ux-id="activity-feed" class="full-height" aria-label="{{'common.tabs.activity' | i18n}}" role="region" tabindex="0">
|
|
<div loading-spinner if="state.loadingFeeds" centered="true" overlay="true"></div>
|
|
<div ux-id="activity-filter" ng-if="(parentContext.id || parentContext.reconciliationId) && !state.isNotAuthorized && !isDraft && isFullVersion" class="{{(activityTypeFilters.concat(workinfoTypeFilters) | filter: {selected: true}).length ? 'timeline-widget__menu_filters-applied' : 'timeline-widget__menu'}}" dropdown>
|
|
<button type="button" class="btn_link dropdown-toggle" aria-label="{{'common.tabs.activity' | i18n}} {{'common.button.filter' | i18n}}">
|
|
<i class="icon-ellipsis"></i>
|
|
</button>
|
|
|
|
<ul ux-id="activity-filter-menu" class="dropdown-menu" stop-propagation-event>
|
|
<li class="dropdown-item__header">
|
|
<label for="search-filter">{{'common.placeholder.search' | i18n}}</label>
|
|
</li>
|
|
<li class="dropdown-item_search-bar">
|
|
<i class="icon-search dropdown-item_search-icon"></i>
|
|
<input id="search-filter" ux-id="search-text" type="text" title="{{ searchInputTitle }}" name="searchQueryText" class="dropdown-item_search" placeholder="{{ searchInputTitle }}"
|
|
ng-model="feedModel.activityFeed.params.searchQuery" ng-enter="getActivityFeedItems()" ng-readonly="state.loadingFeeds"/>
|
|
<i ux-id="search-clear" class="icon-cross_circle dropdown-search_item__clear" ng-hide="!feedModel.activityFeed.params.searchQuery" title="{{'common.labels.clearText' | i18n}}"
|
|
role="link" tabindex="0" ng-click="clearSearchText()" ng-enter="clearSearchText()"></i>
|
|
</li>
|
|
|
|
<li ng-if="activityTypeFilters.length && showActivityTypeFilters">
|
|
<div ux-id="activity-types-accord" ng-if="workinfoTypeFilters.length" class="{{!state.filerExpanded ? 'dropdown-item__header_expanded' : 'dropdown-item__header_collapsed'}}"
|
|
ng-click="state.filerExpanded = !state.filerExpanded" ng-enter="state.filerExpanded = !state.filerExpanded" role="link" tabindex="0"
|
|
aria-expanded="{{!state.filerExpanded}}" title="{{ userModel.isAccessibleUser ? ('filter.tree.levelPos' | i18n: [1, ($index+1)]) : '' }}">
|
|
{{'feed.filter.name.showActivityTypes' | i18n}}
|
|
</div>
|
|
|
|
<div ng-if="!workinfoTypeFilters.length" class="dropdown-item__header">{{'feed.filter.name.showActivityTypes' | i18n}}</div>
|
|
<div collapse="state.filerExpanded">
|
|
<div class="dropdown-item__filter-select-control">
|
|
<filter-select-all-control ux-id="activity-types-selectall" filters-config-model="activityTypeFilters" apply-filter="applyFilter()"></filter-select-all-control>
|
|
</div>
|
|
<div ng-repeat="filterItem in activityTypeFilters">
|
|
<div ux-id="{{'activity-types-filter_'+$index}}" class="{{(filterItem.selected) ? 'dropdown-item_selected' : 'dropdown-item'}}" ng-keypress="keyPressOnFilterItem($event, filterItem)" ng-click="applyFilter(filterItem)" ng-enter="applyFilter(filterItem)" role="menuitemcheckbox" tabindex="0"
|
|
aria-checked="{{filterItem.selected}}" title="{{ userModel.isAccessibleUser ? ('filter.tree.levelPos' | i18n: [2, ($index+1)]) : ('feed.filter.optionName.' + filterItem.label | i18n) }}" tabindex="0">
|
|
{{'feed.filter.optionName.' + filterItem.label | i18n }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</li>
|
|
|
|
<li ng-if="workinfoTypeFilters.length && showWorkinfoTypeFilters">
|
|
<div ux-id="workinfo-types-accord" class="{{state.filerExpanded ? 'dropdown-item__header_expanded' : 'dropdown-item__header_collapsed'}}"
|
|
ng-click="state.filerExpanded = !state.filerExpanded" ng-enter="state.filerExpanded = !state.filerExpanded" role="link" tabindex="0">
|
|
{{'feed.filter.name.showWorkinfoTypes' | i18n}}
|
|
</div>
|
|
<div collapse="!state.filerExpanded">
|
|
<div class="dropdown-item__filter-select-control">
|
|
<filter-select-all-control ux-id="workinfo-types-selectall" filters-config-model="workinfoTypeFilters" apply-filter="applyFilter()"></filter-select-all-control>
|
|
</div>
|
|
<div ng-repeat="filterItem in workinfoTypeFilters">
|
|
<div ux-id="{{'workinfo-types-filter_'+$index}}" class="{{(filterItem.selected) ? 'dropdown-item_selected' : 'dropdown-item'}}" ng-keypress="keyPressOnFilterItem($event, filterItem)" ng-click="applyFilter(filterItem)" ng-enter="applyFilter(filterItem)" role="menuitemcheckbox" tabindex="0"
|
|
aria-checked="{{filterItem.selected}}" title="{{ userModel.isAccessibleUser ? ('filter.tree.levelPos' | i18n: [2, ($index+1)]) : (filterItem.label | i18n) }}">
|
|
{{filterItem.label | i18n }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="timeline-feed timeline-feed__inverted" ng-if="(parentContext.id || parentContext.reconciliationId || isDraft) && !state.isNotAuthorized && (feed !== null || isDraft)" infinity-scroll="loadMoreFeeds()">
|
|
<div ng-if="commentable && !inputDisabled" feed-comment-thread="" savenote="saveNote(noteData)" threads="" nesting-level="0" parent-context="parentContext" type="type" is-draft="isDraft" input-disabled="inputDisabled">
|
|
<div ng-if="!state.noteFormIsActive" class="timeline-widget__add-note">
|
|
<input ux-id="add-note-textbox" type="text" title="{{'timeline.note.addNote.placeholder' | i18n}}" class="timeline-widget__add-note-input" placeholder="{{'timeline.note.addNote.placeholder' | i18n}}"
|
|
aria-disabled="{{inputDisabled}}" ng-disabled="inputDisabled">
|
|
</div>
|
|
</div>
|
|
<div class="feed-no_activity" ng-if="!feed.length"> {{'feed.no.activity' | i18n}}</div>
|
|
<!--todo: refactor to work via super-powerful feed-item-renderer-->
|
|
<!--<timeline-item-renderer data="feedItem" expand-item="expandItem(feedItem)" handle-attachment-click="handleAttachmentClick(type,attachment)" handle-like-click="handleLikeClick(feedItem)" handle-add-comment-click="handleAddCommentClick(feedItem)"></timeline-item-renderer>-->
|
|
<timeline-item-renderer ux-id="activity-feed-item_{{$index}}" ng-repeat="feedItem in feed" type="type" parent-context="parentContext" item="feedItem" show-context="showContext(feedItem)"
|
|
expand-item="expandItem(feedItem)" handle-attachment-click="handleAttachmentClick(type, attachment, returnAsBlob, isMyITComment)"
|
|
save-note="saveNote(noteData)" handle-like-click="handleLikeClick(feedItem)" is-unflag-edit-allowed="isUnflagEditAllowed"></timeline-item-renderer>
|
|
<div class="feed__load-more" ng-hide="state.loadingMoreFeeds || state.allFeedsLoaded || state.loadingFeeds || !userModel.isAccessibleUser">
|
|
<button ux-id="load-more-feeds-btn" type="button" ng-click="loadMoreFeeds()" class="small-btn_secondary" aria-expanded="{{ (state.loadingMoreFeeds || state.allFeedsLoaded || state.loadingFeeds || !userModel.isAccessibleUser) }}">{{'common.labels.loadMore'|i18n}}</button>
|
|
</div>
|
|
<div class="feed__loading-spinner" ng-if="state.loadingMoreFeeds">
|
|
<div loading-spinner if="true" centered="true" inline="true"></div>
|
|
</div>
|
|
</div>
|
|
</div> |