Added new modules to help prevent Cross Site Request Forgery
[sdnc/oam.git] / admportal / views / mobility / vnfProfile.ejs
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4   <meta charset="UTF-8" />
5   <meta http-equiv="X-UA-Compatible" content="IE=edge">
6   <% include ../partials/head %>
7   <% include ../partials/header %>
8   <script type="text/javascript" src="/javascripts/admportal.js" async></script>
9   <title>SDN-C AdminPortal</title>
10 <script class="init">
11     $(document).ready(function() {
12     $('#vnf_profile').DataTable( {
13         "order": [[ 0, "asc" ]]
14     } );
15 } );
16 </script>
17
18 </head>
19 <body>
20
21 <div class="well well-sm">
22 <h3>VNF Profile </h3>
23 </div>
24
25 <% if ( typeof result != 'undefined' ) {
26                 if (result.code.length > 0) { 
27                         if ( result.code == 'success' ) { %>
28                                 <div class='alert alert-success' role='alert'>
29                                 <%
30                                 for ( x in result.msg ){ %>
31                                         <div><%= result.msg[x] %></div>
32                                 <% } %>
33                                 </div>
34                         <% } else { %> 
35                                 <div class='alert alert-danger' role='danger'>
36                                 <%
37                                 for ( x in result.msg ){ %>
38                                         <div><%= result.msg[x] %></div>
39                                 <% } %>
40                                 </div>
41                         <% } %>
42                 <% } %>
43 <% } %>
44
45 <% if( typeof privilege != 'undefined'){
46     var priv = privilege.privilege;
47 } else {
48     var priv = 'A';
49 } %>
50
51
52 <div class="container-fluid">
53
54         <% if (priv == 'A'){ %>
55         <div class="actions" style="padding:15px 0px;">
56     <button class="btn btn-primary btn-md" data-toggle="modal" data-target="#add_vnf_profile">
57       Add VNF Profile
58     </button>
59         </div>
60         <% } %>
61
62         <table id="vnf_profile" class="table table-hover table-condensed">
63       <thead>
64         <tr>
65                   <th>*VNF_TYPE</th>
66                   <th>AVAILABILITY_ZONE_COUNT</th>
67                   <th>EQUIPMENT_ROLE</th>
68                   <% if(priv == 'A'){ %>
69           <th>Action</th>
70           <% } %>
71         </tr>
72       </thead>
73       <tbody>
74                 <% rows.forEach( function(row) { %>
75         <tr>
76             <td><%= row.vnf_type %></td>
77             <td><%= row.availability_zone_count %></td>
78             <td><%= row.equipment_role %></td>
79                         <% if(priv == 'A' ) { %>
80             <td>
81                                 <button type="button" class="btn btn-default btn-xs"
82                    onclick="deleteVnfProfile('<%= row.vnf_type %>');">Delete</button>
83             </td>
84             <% } %>
85         </tr>
86                 <% }); %>
87       </tbody>
88     </table>
89
90         <% if(priv == 'A'){ %>
91         <div class="actions" style="padding:0px 25px;">
92         <form method="POST" action="/mobility/uploadVnfProfile" enctype="multipart/form-data">
93                 <input type="hidden" name="_csrf" value="<%= privilege.csrfToken %>" />
94                 <div class="form-group">
95                 <label for="dest">File input</label>
96                 <input name="filename" type="file" id="dest">
97                 <p class="help-block">Choose a file to upload.</p>
98                 </div>
99         <button type="button" class="btn btn-default"
100                 onclick="uploadFile(this.form);">Upload File</button>
101         </form>
102         </div>
103         <% } %>
104 </div>
105
106 <% include ../partials/vnf_profile %>
107 <footer>
108     <% include ../partials/footer %>
109 </footer>
110
111 <script type="text/javascript">
112
113 function addVnfProfile(form)
114 {
115         var errorMsg='';
116         var vnf_type='';
117         var availability_zone_count='';
118         var equipment_role='';
119
120         if ( form.name == 'addForm' )
121         {
122                 vnf_type = form.nf_vnf_type;
123                 availability_zone_count = form.nf_availability_zone_count;
124                 equipment_role = form.nf_equipment_role;
125         }
126
127         if ( (vnf_type.value == null) || (vnf_type.value == "") || isblank(vnf_type.value) )
128         {
129                 errorMsg += 'VNF Type is required.<br>';
130         }
131         if ( (availability_zone_count.value == null) || (availability_zone_count.value == "") || isblank(availability_zone_count.value) )
132         {
133                 errorMsg += 'Availability Zone Count is a required field.<br>';
134         }
135         if ( (equipment_role.value == null) || (equipment_role.value == "") || isblank(equipment_role.value) )
136         {
137                 errorMsg += 'Equipment Role is a required field.<br>';
138         }
139         if( errorMsg.length > 0 ) {
140                 bootbox.alert(errorMsg);
141                 return;
142         }
143         if ( availability_zone_count.value.length > 0 && !isDigit(availability_zone_count.value) )
144     {
145         bootbox.alert('Availability Zone Count must be a number.');
146         return;
147     }
148         form.submit();
149 }
150
151 function deleteVnfProfile(vnf_type) {
152
153     bootbox.confirm({
154         message: "Are you sure you want to delete VNF_PROFILE [" + vnf_type + "]",
155         callback: function(result) {
156             if ( result )
157             {
158                                 location.assign("/mobility/deleteVnfProfile?vnf_type=" + vnf_type);
159
160             }
161             return;
162         },
163         buttons: {
164             cancel: {
165                 label: "Cancel"
166             },
167             confirm: {
168                 label: "Yes"
169             }
170         }
171     });
172 }
173
174 </script>
175
176 </body>
177 </html>
178