SmartIT_Extensions/BMC/smart-it-full/views/change/ci-relations.html

152 lines
8.7 KiB
HTML

<div>
<div class="ci-search__header">{{'create.change.wizard.ci.search' | i18n}}</div>
<div class="ci-search__panel">
<div class="ci-search-section" ng-repeat="search in model.searches">
<div class="ci-search-section__summary">
<div class="ci-search-section__count">
<h1>{{search.totalMatchCount || '0'}}</h1>
<h3>{{'create.change.wizard.cis' | i18n}}</h3>
<button type="button" ng-if="search.results.length" class="btn_no-fill ci-search-section__results-toggle" ng-click="toggleResultsGrid(search)" tabindex="0">
<i ng-class="{'icon-plus' : !search.showResults}"></i>
<span>{{(search.showResults? 'create.change.wizard.ci.hide' : 'create.change.wizard.ci.select') | i18n}}</span>
</button>
</div>
<div class="ci_search-section_search_bar">
<div class="search_bar">
<form>
<label class="control-label">&nbsp;</label>
<input type="text" class="assign-search" ng-model="search.searchKeywords" title="{{ (changeMetadata.systemConfigurations.isExclude_TAG_and_CI_ID ? 'create.change.wizard.ci.search.bar.isExcludedTag' :'create.change.wizard.ci.search.bar.isIncludedTag') | i18n}}" placeholder="{{ (changeMetadata.systemConfigurations.isExclude_TAG_and_CI_ID ? 'create.change.wizard.ci.search.bar.isExcludedTag' :'create.change.wizard.ci.search.bar.isIncludedTag') | i18n}}" ng-enter="searchCIs(search)" auto-focus />
</form>
<div class="ci-search-section__filters">
<search-filter filter-config="filterConfig" config="search.config" selected-filters="search.selectedFilters" search-keywords="search.searchKeywords" label="create.change.wizard.ci.addFilter" hide-pills="false" hide-closeicon="search.isSearching" display-limit="4" auto-focus></search-filter>
</div>
</div>
<div class="ci-search-section__relate_unrelate_section">
<div class="ci-search-section__action dropdown-input dropdown ci-search-section__relate_btn" ng-if="search.selectedCount">
<button type="button" class="dropdown-input__button btn_primary dropdown-toggle">
{{'create.change.wizard.ci.link' | i18n}} ({{search.allQueryResultsSelected ? search.totalMatchCount : search.selectedCount}})
</button>
<ul class="dropdown-menu">
<li ng-repeat="relation in selections.relations">
<div ng-click="linkCIs(search, relation)" class="dropdown-item" role="menuitem" tabindex="0">
{{'common.relationship.type.' + relation | i18n}}
</div>
</li>
</ul>
</div>
<div class="ci-search-section__action ci-search-section__unrelate_btn" ng-if="search.selectedCount">
<button type="button" class="btn_secondary" ng-click="unlinkCIs(search)">{{'create.change.wizard.ci.unlink' | i18n}} ({{search.selectedCount}})</button>
</div>
</div>
<div class="ci-search-section__action-panel">
<div class="ci-search-section__searchBtn">
<button type="button" class="btn_secondary"
ng-disabled="(search.selectedFilters.length === 0 && search.searchKeywords.length === 0) || search.isSearching"
ng-click="searchCIs(search)">
{{'create.change.wizard.ci.performSearch' | i18n}}
</button>
<div loading-spinner if="search.isSearching" inline="true" centered="true" overlay="true"></div>
</div>
</div>
<div class="ci-search-section__save_presets" ng-if="search.selectedFilters.length > 0 || search.searchKeywords.length > 0">
<button type="button" class="btn_secondary" ng-click="savePresets(search, showCINameAsLink)">{{'create.change.wizard.ci.save.preset.button' | i18n}}</button>
</div>
</div>
<div class="ci-search-section__selected-count" ng-class="{'ci-search-section__selected-count_zero':search.linkedCount != null && search.linkedCount>=0, 'ci-search-section__selected-count_nonzero': search.linkedCount>0}" ng-if="search.linkedCount != null && search.linkedCount>=0">
<div class="icon-angle_right ci-search-section__selected-count_arrow" ng-click="toggleResultsGrid(search)" ng-enter="toggleResultsGrid(search)"
ng-class="{'icon-angle_right' : !search.showResults, 'icon-angle_down': search.showResults}" tabindex="0" aria-label="Toggle Results" role="link"></div>
<h1>{{search.linkedCount}}</h1>
<h5>{{'create.change.wizard.cis.linked' | i18n}}</h5>
</div>
</div>
<div class="ci-search-section__results" ng-if="search.showResults">
<div class="ci-search-selection__info" ng-if="search.allVisibleItemsSelected && !search.allQueryResultsSelected && search.totalMatchCount > search.results.length">
<span>{{'change.configurationItems.selectedCIsAmount.text' | i18n:search.selectedCount}}</span>
<span class="ci-search-selection__all-items-selector" ng-click="selectAllItemsInThisQuery(search,true)" ng-enter="selectAllItemsInThisQuery(search,true)" tabindex="0">{{"change.configurationItems.selectAllCIs.text" | i18n:search.totalMatchCount}}</span>
</div>
<div class="ci-search-selection__info" ng-if="search.allVisibleItemsSelected && search.allQueryResultsSelected">
<span>{{"change.configurationItems.allItemsAreSelected" | i18n:search.selectedCount}}</span>
<span class="ci-search-selection__all-items-selector" ng-click="selectAllItemsInThisQuery(search,false)" ng-enter="selectAllItemsInThisQuery(search,false)" tabindex="0">{{"change.configurationItems.clearSelection" | i18n}}</span>
</div>
<div ng-if="!userModel.isAccessibleUser" class="tc__list">
<div loading-spinner if="search.dataLoading" centered="true" overlay="true"></div>
<!--EW--><div class="gridStyle" ng-grid="search.gridOptions" ng-style="setGridWidth"></div>
</div>
<div ng-if="userModel.isAccessibleUser" class="tc__accessible">
<table>
<tbody>
<tr>
<th scope="col" id="ciselection">
<input type="checkbox" ng-model="selectAll" ng-change="selectAllCIs(search, selectAll, 'table')"
title="{{'filter.control.selectAll' | i18n}}" />
</th>
<th ng-repeat="column in search.tableColumns" ng-if="column.visible" scope="col">
<a ng-if="column.attributeName != 'type'" href ng-click="sortColumn(search, column)">
{{column.displayName | i18n}}
<i ng-class="{'icon-triangle_up' : column.sortOrder=='ASC', 'icon-triangle_down': column.sortOrder=='DESC'}"></i>
</a>
<div class="ci-search-section_linked_type_column" ng-if="column.attributeName == 'type'">
{{column.displayName | i18n}}
</div>
</th>
<th scope="col" id="cirelations" class="ci-search-section_linked">
{{'create.change.wizard.ci.linked' | i18n}}
</th>
</tr>
<tr ng-repeat="item in search.results" ng-class="{'row-selected': item.selected}" tabindex="0">
<td headers="ciselection">
<input type="checkbox" ng-model="item.selected" ng-change="selectCI(search, item, 'table')"
title="{{'common.button.select' | i18n}} {{item.name}}" />
</td>
<td headers="ciname">
{{item.name}}
</td>
<td headers="classid">
{{item.id}}
</td>
<td headers="type">
{{item.type}}
</td>
<td headers="cistatus">
{{item.status.value}}
</td>
<td headers="serialnumber">
{{item.assetExtension.serialNumber}}
</td>
<td headers="sitename">
{{item.site.name}}
</td>
<td headers="productname">
{{item.product.name}}
</td>
<td headers="cirelations">
<div class="tag_removable" ng-repeat="tag in item.relations">
{{'common.relationship.type.' + tag | i18n}}
<i class="icon-cross tag__remove" ng-click="removeLink(search, item, tag)" ng-enter="removeLink(search, item, tag)"
title="{{'common.button.remove' | i18n}}"
aria-label="{{'common.button.remove' | i18n}} {{'common.relationship.type.' + tag | i18n}} {{'resourceSlice.linkedItem.label' | i18n}}" role="link" tabindex="0"></i>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div ng-if="search.totalMatchCount > 100 && search.totalMatchCount > search.results.length" class="ci-search-section__show-more">
<a ng-if="!search.isSearching" ng-click="showMoreCIs(search)" ng-enter="showMoreCIs(search)" tabindex="0">
<span>{{"common.labels.showMore" | i18n}}</span>
</a>
</div>
</div>
</div>
<div>
<button type="button" class="btn_secondary ci-search-section__add_query" ng-click="addAdditionalQuery($event)">{{'create.change.wizard.ci.addQuery' | i18n}}</button>
</div>
<div class="ci-related-section" ng-if="currentRelatedCIs.length">
<div class="ci-related__header">{{'create.change.wizard.ci.template' | i18n}}</div>
<div ng-grid="relatedCIgridOtions" ng-style="getTableStyle()"></div>
</div>
</div>
</div>