CSIT Fix for SDC-2585
[sdc.git] / catalog-ui / src / app / view-models / workspace / tabs / req-and-capabilities / req-and-capabilities-view.html
1 <!--
2   ~ Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
3   ~
4   ~ Licensed under the Apache License, Version 2.0 (the "License");
5   ~ you may not use this file except in compliance with the License.
6   ~ You may obtain a copy of the License at
7   ~
8   ~      http://www.apache.org/licenses/LICENSE-2.0
9   ~
10   ~ Unless required by applicable law or agreed to in writing, software
11   ~ distributed under the License is distributed on an "AS IS" BASIS,
12   ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   ~ See the License for the specific language governing permissions and
14   ~ limitations under the License.
15 -->
16
17 <div class="workspace-req-and-cap">
18     <div class="tabs">
19         <button data-tests-id="req-tab" data-ng-click="mode='requirements';filterTerms='';" class="tlv-btn" data-ng-class="{'selected':mode=='requirements'}">Requirements({{requirements.length||'0'}})</button>
20         <button data-tests-id="cap-tab" data-ng-click="mode='capabilities';filterTerms='';" class="tlv-btn" data-ng-class="{'selected':mode=='capabilities'}">Capabilities({{capabilities.length||'0'}})</button>
21     </div>
22     <div class="expand-collapse-buttons" data-ng-if="mode=='capabilities'">
23         <span class="sprite-new expand-all" data-ng-click="allCapabilitiesSelected(true)"></span>
24         <span class="sprite-new collapse-all" data-ng-click="allCapabilitiesSelected(false)"></span>
25     </div>
26     <div class="search">
27         <input id="search-box" data-tests-id="search-box"  type="search" placeholder="Search" data-ng-model-options="{debounce: 200}" data-ng-model="filterTerms"/>
28         <div class="search-icon-container">
29             <span class="search-icon sprite-new search-white-icon"></span>
30         </div>
31     </div>
32     <div class="table-container-flex requirements-table" data-ng-if="mode=='requirements'">
33         <div class="table" data-ng-class="{'view-mode': isViewMode()}">
34             <div class="head flex-container">
35                 <div class="table-header head-row hand flex-item" data-ng-repeat="header in requirementsTableHeadersList track by $index" data-ng-click="sort(header.property, requirementsSortTableDefined)">{{header.title}}
36                     <span data-ng-if="requirementsSortTableDefined.sortByField === header.property" class="table-header-sort-arrow" data-ng-class="{'down': requirementsSortTableDefined.reverse, 'up':!requirementsSortTableDefined.reverse}"> </span>
37                 </div>
38             </div>
39
40             <div class="body">
41                 <perfect-scrollbar scroll-y-margin-offset="0" include-padding="true" class="scrollbar-container">
42                     <div data-ng-if="requirements.length === 0" class="no-row-text">
43                         There are no requirements to display
44
45                     </div>
46                     <div data-ng-repeat="req in requirements | orderBy:requirementsSortTableDefined.sortByField:requirementsSortTableDefined.reverse | filter: {filterTerm:filterTerms} track by $index"
47                          class="flex-container data-row" data-tests-id="reqRow">
48
49                         <div class="table-col-general flex-item text" tooltips tooltip-content="{{req.name}}">
50                             <span  data-tests-id="{{req.name}}">{{req.name}}</span>
51                         </div>
52                         <div class="table-col-general flex-item text" tooltips tooltip-content="{{req.capability}}">
53                             <span  data-tests-id="{{req.capability}}">{{req.capability.substring("tosca.capabilities.".length)}}</span>
54                         </div>
55                         <div class="table-col-general flex-item text" tooltips tooltip-content="{{req.node}}">
56                             <span  data-tests-id="{{req.node}}">{{req.node.substring("tosca.nodes.".length)}}</span>
57                         </div>
58                         <div class="table-col-general flex-item text" tooltips tooltip-content="{{req.relationship}}">
59                             <span  data-tests-id="{{req.relationship}}">{{req.relationship.substring("tosca.relationships.".length)}}</span>
60                         </div>
61                         <div class="table-col-general flex-item text" data-tests-id="{{}}" data-ng-bind=""></div>
62                         <div class="table-col-general flex-item text" tooltips tooltip-content="{{req.minOccurrences}},{{req.maxOccurrences}}">
63                             <span  data-tests-id="{{req.minOccurrences}},{{req.maxOccurrences}}">{{req.minOccurrences}},{{req.maxOccurrences}}</span>
64                         </div>
65                     </div>
66                 </perfect-scrollbar>
67             </div>
68
69         </div>
70     </div>
71     <div class="table-container-flex capabilities-table" data-ng-if="mode=='capabilities'">
72         <div class="table" data-ng-class="{'view-mode': isViewMode()}">
73             <div class="head flex-container">
74                 <div class="table-header head-row hand flex-item" data-ng-repeat="header in capabilitiesTableHeadersList track by $index" data-ng-click="sort(header.property, capabilitiesSortTableDefined)">{{header.title}}
75                     <span data-ng-if="capabilitiesSortTableDefined.sortByField === header.property" class="table-header-sort-arrow" data-ng-class="{'down': capabilitiesSortTableDefined.reverse, 'up':!capabilitiesSortTableDefined.reverse}"> </span>
76                 </div>
77             </div>
78
79             <div class="body">
80                 <perfect-scrollbar scroll-y-margin-offset="0" include-padding="true" class="scrollbar-container">
81                     <div data-ng-if="capabilities.length === 0" class="no-row-text">
82                         There are no capabilities to display
83
84                     </div>
85                     <div data-ng-repeat-start="capability in capabilities | orderBy:capabilitiesSortTableDefined.sortByField:capabilitiesSortTableDefined.reverse | filter: {filterTerm:filterTerms} track by $index"
86                          class="flex-container data-row" data-ng-class="{'selected': capability.selected}"
87                          data-ng-click="capability.selected = !capability.selected" data-tests-id="capabilities-table-row">
88
89                         <div class="table-col-general flex-item text" tooltips tooltip-content="{{capability.name}}">
90                             <span class="sprite-new arrow-up-small" data-ng-class="{'opened': capability.selected}"></span>
91                             <span  data-tests-id="{{capability.name}}">{{capability.name}}</span>
92                         </div>
93                         <div class="table-col-general flex-item text" tooltips tooltip-content="{{capability.type}}">
94                             <span  data-tests-id="{{capability.type}}">{{capability.type.replace("tosca.capabilities.","")}}</span>
95                         </div>
96
97                         <div class="table-col-general flex-item text" tooltips tooltip-content="{{capability.description}}">
98                             <span  data-tests-id="{{capability.description}}">{{capability.description}}</span>
99                         </div>
100
101                         <div class="table-col-general flex-item text" tooltips tooltip-content="{{capability.validSourceTypes.join(',')}}">
102                             <span  data-tests-id="{{capability.validSourceTypes.join(',')}}">{{capability.validSourceTypes.join(',')}}</span>
103                         </div>
104
105                         <div class="table-col-general flex-item text" tooltips tooltip-content="{{capability.minOccurrences}},{{capability.maxOccurrences}}">
106                             <span  data-tests-id="{{capability.minOccurrences}},{{capability.maxOccurrences}}">{{capability.minOccurrences}},{{capability.maxOccurrences}}</span>
107                         </div>
108                     </div>
109                     <div data-ng-repeat-end="" data-ng-if="capability.selected" class="item-opened">
110                         <p class="properties-title">Properties</p>
111                         <div class="table-container-flex properties-table">
112                             <div class="table" data-ng-class="{'view-mode': isViewMode()}">
113                                 <div class="head flex-container">
114                                     <div class="table-header head-row hand flex-item" data-ng-repeat="header in capabilityPropertiesTableHeadersList track by $index" data-ng-click="sort(header.property, propertiesSortTableDefined)">{{header.title}}
115                                         <span data-ng-if="propertiesSortTableDefined.sortByField === header.property" class="table-header-sort-arrow" data-ng-class="{'down': propertiesSortTableDefined.reverse, 'up':!propertiesSortTableDefined.reverse}"> </span>
116                                     </div>
117                                 </div>
118
119                                 <div class="body">
120                                         <div data-ng-if="capability.properties.length === 0" class="no-row-text">
121                                             There are no properties to display
122                                         </div>
123                                         <div data-ng-repeat="property in filteredProperties[$parent.$index]=(capability.properties | orderBy:propertiesSortTableDefined.sortByField:propertiesSortTableDefined.reverse) track by $index"
124                                              data-tests-id="propertyRow"
125                                              class="flex-container data-row">
126
127                                             <div class="table-col-general flex-item text" tooltips tooltip-content="{{property.name}}">
128                                                 <a  data-tests-id="{{property.name}}"
129                                                     data-ng-click="updateProperty(property, $parent.$index); $event.stopPropagation();"
130                                                     data-ng-class="{'disabled': isViewMode()}">{{property.name}}</a>
131
132                                             </div>
133
134                                             <div class="table-col-general flex-item text"
135                                                  data-tests-id="{{property.type}}"
136                                                  tooltips tooltip-content="{{property.type}}"
137                                                  data-ng-bind="property.type">
138                                             </div>
139                                             <div class="table-col-general flex-item text"
140                                                  data-tests-id="{{property.schema.property.type}}"
141                                                  tooltips tooltip-content="{{property.schema.property.type}}"
142                                                  data-ng-bind="property.schema.property.type">
143                                             </div>
144                                             <div class="table-col-general flex-item text" tooltips tooltip-content="{{property.description}}">
145                                                 <span data-tests-id="{{property.description}}" data-ng-bind="property.description"></span>
146                                             </div>
147                                         </div>
148                                 </div>
149
150                             </div>
151                         </div>
152                     </div>
153                 </perfect-scrollbar>
154             </div>
155
156         </div>
157     </div>
158 </div>
159