blob: 172e3caeec3f0f1422274cd612d63faaceb9f2f6 [file] [log] [blame]
Matteo Scandolo500e4c42017-08-08 13:05:24 -07001
2<!--
3Copyright 2017-present Open Networking Foundation
4
5Licensed under the Apache License, Version 2.0 (the "License");
6you may not use this file except in compliance with the License.
7You may obtain a copy of the License at
8
9http://www.apache.org/licenses/LICENSE-2.0
10
11Unless required by applicable law or agreed to in writing, software
12distributed under the License is distributed on an "AS IS" BASIS,
13WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14See the License for the specific language governing permissions and
15limitations under the License.
16-->
17
18
Matteo Scandolo710dc152017-04-11 13:54:23 -070019<div ng-show="vm.data.length > 0 && vm.loader == false">
Matteo Scandolo9f87f302016-12-13 18:11:10 -080020 <div class="row" ng-if="vm.config.filter == 'fulltext'">
21 <div class="col-xs-12">
22 <input
23 class="form-control"
24 placeholder="Type to search.."
25 type="text"
26 ng-model="vm.query"/>
27 </div>
28 </div>
Matteo Scandolod62ea792016-12-22 14:02:28 -080029 <div class="table-responsive">
30 <table ng-class="vm.classes">
Matteo Scandolo9f87f302016-12-13 18:11:10 -080031 <thead>
32 <tr>
Matteo Scandolo5d962a32017-08-01 18:16:14 -070033 <th ng-repeat="col in vm.config.columns">
Matteo Scandolo9f87f302016-12-13 18:11:10 -080034 {{col.label}}
Matteo Scandolod62ea792016-12-22 14:02:28 -080035 <div ng-if="vm.config.order">
Matteo Scandolo9f87f302016-12-13 18:11:10 -080036 <a href="" ng-click="vm.orderBy = col.prop; vm.reverse = false">
Matteo Scandolod58d5042016-12-16 16:59:21 -080037 <i class="fa fa-chevron-up"></i>
Matteo Scandolo9f87f302016-12-13 18:11:10 -080038 </a>
39 <a href="" ng-click="vm.orderBy = col.prop; vm.reverse = true">
Matteo Scandolod58d5042016-12-16 16:59:21 -080040 <i class="fa fa-chevron-down"></i>
Matteo Scandolo9f87f302016-12-13 18:11:10 -080041 </a>
Matteo Scandolod62ea792016-12-22 14:02:28 -080042 </div>
Matteo Scandolo9f87f302016-12-13 18:11:10 -080043 </th>
44 <th ng-if="vm.config.actions">Actions:</th>
45 </tr>
46 </thead>
47 <tbody ng-if="vm.config.filter == 'field'">
Matteo Scandoloee655a12016-12-19 15:38:43 -080048 <tr>
Matteo Scandolo5d962a32017-08-01 18:16:14 -070049 <td ng-repeat="col in vm.config.columns">
Matteo Scandoloee655a12016-12-19 15:38:43 -080050 <input
51 ng-if="col.type !== 'boolean' && col.type !== 'array' && col.type !== 'object' && col.type !== 'custom'"
52 class="form-control"
53 placeholder="Type to search by {{col.label}}"
54 type="text"
55 ng-model="vm.query[col.prop]"/>
56 <select
57 ng-if="col.type === 'boolean'"
58 class="form-control"
59 ng-model="vm.query[col.prop]">
60 <option value="">-</option>
61 <option value="true">True</option>
62 <option value="false">False</option>
63 </select>
64 </td>
65 <td ng-if="vm.config.actions"></td>
66 </tr>
Matteo Scandolo9f87f302016-12-13 18:11:10 -080067 </tbody>
68 <tbody>
Matteo Scandolo8b2370c2017-02-02 17:19:07 -080069 <tr ng-repeat="item in vm.data | filter:vm.query | orderBy:vm.orderBy:vm.reverse | pagination:vm.currentPage * vm.config.pagination.pageSize | limitTo: (vm.config.pagination.pageSize || vm.data.length) track by $index">
Matteo Scandolo5d962a32017-08-01 18:16:14 -070070 <td ng-repeat="col in vm.config.columns" xos-link-wrapper>
Matteo Scandolo9f87f302016-12-13 18:11:10 -080071 <span ng-if="!col.type || col.type === 'text'">{{item[col.prop]}}</span>
72 <span ng-if="col.type === 'boolean'">
Matteo Scandolod58d5042016-12-16 16:59:21 -080073 <i class="fa"
74 ng-class="{'fa-ok': item[col.prop], 'fa-remove': !item[col.prop]}">
Matteo Scandolo9f87f302016-12-13 18:11:10 -080075 </i>
76 </span>
77 <span ng-if="col.type === 'date'">
78 {{item[col.prop] | date:'H:mm MMM d, yyyy'}}
79 </span>
80 <span ng-if="col.type === 'array'">
81 {{item[col.prop] | arrayToList}}
82 </span>
83 <span ng-if="col.type === 'object'">
84 <dl class="dl-horizontal">
85 <span ng-repeat="(k,v) in item[col.prop]">
86 <dt>{{k}}</dt>
87 <dd>{{v}}</dd>
88 </span>
89 </dl>
90 </span>
91 <span ng-if="col.type === 'custom'">
Matteo Scandolo04964232017-01-07 12:53:46 -080092 {{item[col.prop + '-formatted']}}
93 <i class="ng-hide">{{col.formatter(item)}}</i>
Matteo Scandolo9f87f302016-12-13 18:11:10 -080094 </span>
95 <span ng-if="col.type === 'icon'">
Matteo Scandolod58d5042016-12-16 16:59:21 -080096 <i class="fa fa-{{col.formatter(item)}}">
Matteo Scandolo9f87f302016-12-13 18:11:10 -080097 </i>
Matteo Scandolo8b2370c2017-02-02 17:19:07 -080098 </span>
99 <div class="xos-table-hover" ng-if="col.hover">
100 <div class="alert alert-info">
101 {{col.hover(item)}}
102 </div>
103 </div>
Matteo Scandolo9f87f302016-12-13 18:11:10 -0800104 </td>
105 <td ng-if="vm.config.actions">
106 <a href=""
107 ng-repeat="action in vm.config.actions"
108 ng-click="action.cb(item)"
109 title="{{action.label}}">
110 <i
Matteo Scandolod58d5042016-12-16 16:59:21 -0800111 class="fa fa-{{action.icon}}"
Matteo Scandolo9f87f302016-12-13 18:11:10 -0800112 style="color: {{action.color}};"></i>
113 </a>
114 </td>
115 </tr>
116 </tbody>
117 </table>
Matteo Scandolo8b2370c2017-02-02 17:19:07 -0800118 <xos-pagination
119 ng-if="vm.config.pagination"
120 page-size="vm.config.pagination.pageSize"
121 total-elements="vm.data.length"
122 change="vm.goToPage">
123 </xos-pagination>
Matteo Scandolod62ea792016-12-22 14:02:28 -0800124 </div>
Matteo Scandolo710dc152017-04-11 13:54:23 -0700125</div>
126<div ng-show="(vm.data.length == 0 || !vm.data) && vm.loader == false">
127 <xos-alert config="{type: 'info'}" show="true">
128 No data to show.
129 </xos-alert>
130</div>
131<div ng-show="vm.loader == true">
132 <div class="loader"></div>
133</div>