453f68a7ec83945ff0a3a8f50aae1d6a282dc9c9
[portal.git] / ecomp-portal-FE-common / client / app / views / widget-onboarding / widget-details-dialog / widget-details.modal.html
1 <!--
2   ============LICENSE_START==========================================
3   ONAP Portal
4   ===================================================================
5   Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6   ===================================================================
7  
8   Unless otherwise specified, all software contained herein is licensed
9   under the Apache License, Version 2.0 (the "License");
10   you may not use this software except in compliance with the License.
11   You may obtain a copy of the License at
12  
13               http://www.apache.org/licenses/LICENSE-2.0
14  
15   Unless required by applicable law or agreed to in writing, software
16   distributed under the License is distributed on an "AS IS" BASIS,
17   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18   See the License for the specific language governing permissions and
19   limitations under the License.
20  
21   Unless otherwise specified, all documentation contained herein is licensed
22   under the Creative Commons License, Attribution 4.0 Intl. (the "License");
23   you may not use this documentation except in compliance with the License.
24   You may obtain a copy of the License at
25  
26               https://creativecommons.org/licenses/by/4.0/
27  
28   Unless required by applicable law or agreed to in writing, documentation
29   distributed under the License is distributed on an "AS IS" BASIS,
30   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31   See the License for the specific language governing permissions and
32   limitations under the License.
33  
34   ============LICENSE_END============================================
35  
36   ECOMP is a trademark and service mark of AT&T Intellectual Property.
37   -->
38 <div class="widget-details-modal">
39
40                 <div class="b2b-modal-header">
41                         <h2 class="widget-title" id="widgets-details-title">Widget Details</h2>
42
43                         <div class="corner-button in">
44                                 <button type="button" class="close" aria-label="Close"
45                                         ng-click="$dismiss('cancel')"></button>
46                         </div>
47                 </div>
48
49                 <div class="b2b-modal-body">
50                 <div class="widget-properties-main"
51                 scroll-top="widgetOnboardingDetails.scrollApi">
52                 <form id="widgets-details-form" name="widgetForm" novalidate
53                         autocomplete="off">
54
55                         <div class="item required">
56                                 <div class="item-label">Widget Name</div>
57                                 <input id="widgets-details-input-name" class="table-search-field"
58                                         type="text" ng-model="widgetOnboardingDetails.widget.name"
59                                         ng-change="widgetOnboardingDetails.updateWidgetName()" name="name"
60                                         ng-pattern="/^[\w -]*$/" maxlength="100"
61                                         ng-disabled="widgetOnboardingDetails.isEditMode" required />
62
63                                 <div class="error-container"
64                                         ng-show="(widgetOnboardingDetails.emptyWidgetName || widgetForm.name.$dirty) && !widgetOnboardingDetails.duplicatedName">
65                                         <div id="widgets-details-input-name-conflict" class="err-message">Name
66                                                 not available - choose different name</div>
67                                 </div>
68
69                                 <div class="error-container"
70                                         ng-show="(widgetOnboardingDetails.emptyWidgetName || widgetForm.name.$dirty) && widgetOnboardingDetails.duplicatedName">
71                                         <div ng-messages="widgetForm.name.$error" class="error-container">
72                                                 <small id="widgets-details-input-name-required"
73                                                         class="err-message" ng-message="required">Widget Name is
74                                                         required</small> <small id="widgets-details-input-name-pattern"
75                                                         class="err-message" ng-message="pattern">Widget Name must
76                                                         be letters, numbers, space, dash or underscore</small>
77                                         </div>
78                                 </div>
79                         </div>
80
81                         <div class="item">
82                                 <div class="item-label">Widget Description</div>
83                                 <!-- <input id="widgets-details-input-description" class="input-field"
84                                         type="text" ng-model="widgetOnboardingDetails.widget.desc"
85                                         name="desc" maxlength="200" /> -->
86                                         <textarea b2b-reset b2b-reset-textarea id="widgets-details-input-desc"
87                                                 name="desc" type="text" ng-model="widgetOnboardingDetails.widget.desc"  maxlength="200"         ></textarea>
88                         </div>
89
90                         <div class="item">
91                                 <div class="item-label">Service Endpoint</div>
92                                 <div class="table-dropdown" >
93                                                         <select id="widgets-details-input-endpoint-url" name="url" b2b-dropdown placeholder-text="Select Microservice Endpoint" ng-model="widgetOnboardingDetails.widget.serviceURL" ng-disabled="widgetOnboardingDetails.isEditMode" >
94                                                 <option b2b-dropdown-list option-repeat="service in widgetOnboardingDetails.availableServices" value="{{service.id}}">{{service.option}}</option>
95                                             </select>
96                                                 </div>
97                         </div>
98
99                         <div class="widget-property">
100                                 <label for="widget-checkbox-app-is-enabled" class="checkbox">
101                                         <input type="checkbox"
102                                         ng-model="widgetOnboardingDetails.widget.allUser"
103                                         id="widget-checkbox-app-is-enabled"> <i class="skin"></i>
104                                         <span class="property-label checkbox-label">Allow all user
105                                                 access</span>
106                                 </label>
107                         </div>
108
109                         <div class="item required"
110                                 ng-show="!widgetOnboardingDetails.widget.allUser">
111                                 <div class="item-label">Application Name</div>
112                                 <div>
113                                         <multiple-select id="widget-applications" unique-data="{{$index}}"
114                                                 placeholder="Select Applications"
115                                                 ng-model="widgetOnboardingDetails.availableApps"
116                                                 on-change="widgetOnboardingDetails.appUpdate()" name-attr="name"
117                                                 value-attr="isSelected"> </multiple-select>
118                                 </div>
119                                 <div class="error-container"
120                                         ng-show="widgetOnboardingDetails.appCounter == 0">
121                                         <div id="widgets-details-input-name-conflict" class="err-message">Please
122                                                 select at least one Application</div>
123                                 </div>
124                         </div>
125
126                         <div class="item" ng-show="!widgetOnboardingDetails.widget.allUser">
127                                 <div ng-show="widgetOnboardingDetails.hasSelectedApp"
128                                         class="item-label">User Role Name</div>
129                                 <div ng-repeat="appRoles in widgetOnboardingDetails.availableApps"
130                                         id="roles-{{appRoles.roles.split(' ').join('-')}}">
131                                         <div class="item required">
132                                                 <div class="app-item-left" ng-show="appRoles.isSelected">{{appRoles.name}}</div>
133                                                 <div class="app-item-right" ng-show="appRoles.isSelected">
134                                                         <multiple-select id="widget-roles-by-application"
135                                                                 unique-data="{{$index}}" placeholder="Select Roles"
136                                                                 ng-model="appRoles.roles" name-attr="name"
137                                                                 on-change="widgetOnboardingDetails.roleUpdate(appRoles)"
138                                                                 value-attr="isSelected"></multiple-select>
139                                                         <div class="error-container" ng-show="!appRoles.roleSelected">
140                                                                 <div id="widgets-details-input-name-conflict"
141                                                                         class="err-message">Please select at least one role</div>
142                                                         </div>
143                                                 </div>
144                                         </div>
145                                 </div>
146                         </div>
147
148                         <div class="item required">
149                                 <div class="item-label">Upload Widget</div>
150                                 <div>
151                                         <input id="widget-onboarding-details-upload-file"
152                                                 file-model="widgetOnboardingDetails.widget.file" type="file"
153                                                 class="widget-onboarding-details-upload-file ht" />
154
155
156                                         <div class="error-container"
157                                                 ng-show="widgetOnboardingDetails.widget.file == undefined && !widgetOnboardingDetails.isEditMode">
158                                                 <div class="err-message">Please upload your widget (.zip)</div>
159                                         </div>
160                                 </div>
161                         </div>
162                 </form>
163         </div>
164                         </div>
165                         <br>
166                         <div class="b2b-modal-footer">
167                                 <div class="cta-button-group cta-modal-footer-flex">                                            
168                                         <span class="ecomp-save-spinner" ng-show="widgetOnboardingDetails.isSaving"></span>
169                                         <button id="widgets-details-save-button" class="btn btn-alt btn-small"  ng-class="{disabled: widgetOnboardingDetails.widget.name == undefined || !widgetOnboardingDetails.duplicatedName 
170                                         || (!widgetOnboardingDetails.widget.allUser && widgetOnboardingDetails.appCounter == 0) || (widgetOnboardingDetails.widget.file == undefined && !widgetOnboardingDetails.isEditMode)
171                                         || (!widgetOnboardingDetails.widget.allUser && !widgetOnboardingDetails.allRoleSelected) || (widgetOnboardingDetails.widget.saving)}"
172                                         ng-click="widgetOnboardingDetails.saveChanges()">Save</button>                          
173                                         <button class="btn btn-alt btn-small" id="widgets-details-cancel-button" ng-click="$dismiss('cancel')">Cancel</button>  
174                                 </div>
175                         </div>
176                         
177                         
178                         
179                         
180
181 </div>