2 Revīzijas

Autors SHA1 Ziņojums Datums
  Kobus Botha afea08bfe5 Merge branch 'master' of http://192.168.6.188:3000/Provision/UnivateProperties 5 gadus atpakaļ
  Kobus Botha 049c739806 Added Column Chooser 5 gadus atpakaļ

+ 1
- 4
public/index.html Parādīt failu

33
 <script src="lib/easing/easing.min.js"></script>
33
 <script src="lib/easing/easing.min.js"></script>
34
 <script src="lib/owlcarousel/owl.carousel.min.js"></script>
34
 <script src="lib/owlcarousel/owl.carousel.min.js"></script>
35
 <script src="lib/scrollreveal/scrollreveal.min.js"></script>
35
 <script src="lib/scrollreveal/scrollreveal.min.js"></script>
36
-<script src="js/dragndrop.table.columns.js" type="text/javascript"></script>
37
 <script src="js/main.js"></script>
36
 <script src="js/main.js"></script>
38
-<script>
39
-  $('.table').dragableColumns();
40
-</script>
37
+
41
 
38
 
42
 </html>
39
 </html>

+ 7
- 7
src/App.vue Parādīt failu

13
 </template>
13
 </template>
14
 
14
 
15
 <script>
15
 <script>
16
-import SearchTab from './components/shared/searchTab.vue';
17
-import NavBar from './components/shared/navBar.vue';
18
-import FooterSection from './components/shared/footerSection.vue';
16
+import SearchTab from "./components/shared/searchTab.vue";
17
+import NavBar from "./components/shared/navBar.vue";
18
+import FooterSection from "./components/shared/footerSection.vue";
19
 
19
 
20
 export default {
20
 export default {
21
-  name: 'app',
21
+  name: "app",
22
   components: {
22
   components: {
23
     SearchTab,
23
     SearchTab,
24
     NavBar,
24
     NavBar,
25
-    FooterSection,
25
+    FooterSection
26
   },
26
   },
27
   methods: {
27
   methods: {
28
     routerGoTo(goTo) {
28
     routerGoTo(goTo) {
29
       this.$router.push(goTo);
29
       this.$router.push(goTo);
30
-    },
31
-  },
30
+    }
31
+  }
32
 };
32
 };
33
 </script>
33
 </script>
34
 
34
 

+ 19
- 10
src/components/shared/checkItem.vue Parādīt failu

1
 <template>
1
 <template>
2
   <div class="row p-2" @click="checkItem">
2
   <div class="row p-2" @click="checkItem">
3
-    <div class="custom-control custom-checkbox">
4
-      <input type="checkbox" class="custom-control-input" :checked="checked" />
3
+    <div class="custom-control custom-checkbox mar-l-15">
4
+      <input type="checkbox" class="custom-control-input mar-l-15" :checked="Show" />
5
       <label class="custom-control-label">{{title}}</label>
5
       <label class="custom-control-label">{{title}}</label>
6
     </div>
6
     </div>
7
   </div>
7
   </div>
9
 
9
 
10
 <script>
10
 <script>
11
 export default {
11
 export default {
12
-  props: ['title'],
13
-  data() {
14
-    return {
15
-      checked: true,
16
-    };
12
+  props: {
13
+    title: undefined,
14
+    show: {
15
+      default: false
16
+    }
17
   },
17
   },
18
   methods: {
18
   methods: {
19
     checkItem() {
19
     checkItem() {
20
-      this.checked = !this.checked;
21
-      this.$emit('checkItem', this.title, this.checked);
22
-    },
20
+      this.$emit("checkItem", this.title, !this.show);
21
+    }
23
   },
22
   },
23
+  computed: {
24
+    Show() {
25
+      return this.show;
26
+    }
27
+  }
24
 };
28
 };
25
 </script>
29
 </script>
30
+<style>
31
+.mar-l-15 {
32
+  margin-left: 15px;
33
+}
34
+</style>

+ 125
- 50
src/components/shared/listView.vue Parādīt failu

12
       </div>
12
       </div>
13
       <div class="p-2">
13
       <div class="p-2">
14
         <div class="d-flex flex-row">
14
         <div class="d-flex flex-row">
15
+          <div class="p2" v-if="showColumnChooser">
16
+            <div
17
+              class="btn btn-primary myBackground btn-width cursor-pointer"
18
+              data-toggle="modal"
19
+              data-target="#myModal"
20
+            >Column Chooser</div>
21
+            <div class="col-md-12">
22
+              <div id="myModal" class="modal fade" role="dialog">
23
+                <div class="modal-dialog modal-lg">
24
+                  <!-- Modal content-->
25
+                  <div class="modal-content">
26
+                    <div class="modal-header">
27
+                      <h5>Column Chooser</h5>
28
+                      <button type="button" class="close" data-dismiss="modal">&times;</button>
29
+                    </div>
30
+                    <div style="margin-left:50px; margin-right:50px;margin-bottom:50px;">
31
+                      <ListViewControl :items="allColumn" @checkItem="checkItem" />
32
+                    </div>
33
+                  </div>
34
+                </div>
35
+              </div>
36
+            </div>
37
+          </div>
15
           <div class="p2" v-if="selectedItems.length > 0">
38
           <div class="p2" v-if="selectedItems.length > 0">
16
             <div
39
             <div
17
               class="btn btn-primary myBackground btn-width cursor-pointer"
40
               class="btn btn-primary myBackground btn-width cursor-pointer"
28
     <div v-if="items && items.length > 0" class="table-responsive">
51
     <div v-if="items && items.length > 0" class="table-responsive">
29
       <table
52
       <table
30
         id="table"
53
         id="table"
31
-        :class="{'table table-hover': (1 === 1), 'table-sm': compact, 'table-bordered': bordered, 'table-striped': striped}"
54
+        :class="{'table table-hover': (1 === 1), 'table-sm': compact, 'table-bordered': bordered}"
32
       >
55
       >
33
         <thead>
56
         <thead>
34
           <tr class="dnd-moved">
57
           <tr class="dnd-moved">
115
 </template>
138
 </template>
116
 
139
 
117
 <script>
140
 <script>
118
-import _ from 'lodash';
119
-import ItemsPerPageList from '../../assets/staticData/itemsPerPage';
120
-import BasePagination from './basePagination.vue';
121
-import Alert from './alert.vue';
141
+import _ from "lodash";
142
+import ItemsPerPageList from "../../assets/staticData/itemsPerPage";
143
+import BasePagination from "./basePagination.vue";
144
+import Alert from "./alert.vue";
145
+import ListViewControl from "./listViewControl.vue";
122
 
146
 
123
 export default {
147
 export default {
124
   components: {
148
   components: {
125
     BasePagination,
149
     BasePagination,
126
     Alert,
150
     Alert,
151
+    ListViewControl
127
   },
152
   },
128
   mounted() {
153
   mounted() {
129
     try {
154
     try {
135
     } catch (error) {
160
     } catch (error) {
136
       throw error;
161
       throw error;
137
     }
162
     }
163
+    this.getInitColumn();
138
   },
164
   },
139
   props: {
165
   props: {
140
     compact: {
166
     compact: {
141
-      default: true,
167
+      default: true
142
     },
168
     },
143
     allowSelect: {
169
     allowSelect: {
144
-      default: true,
170
+      default: true
145
     },
171
     },
146
     allowMultipleSelect: {
172
     allowMultipleSelect: {
147
-      default: false,
173
+      default: false
148
     },
174
     },
149
     hideSearch: {
175
     hideSearch: {
150
-      default: false,
176
+      default: false
151
     },
177
     },
152
     showNew: {
178
     showNew: {
153
-      default: true,
179
+      default: true
154
     },
180
     },
155
     items: undefined,
181
     items: undefined,
156
     editable: {
182
     editable: {
157
-      default: false,
183
+      default: false
158
     },
184
     },
159
     deleteable: {
185
     deleteable: {
160
-      default: false,
186
+      default: false
161
     },
187
     },
162
     columnCount: {
188
     columnCount: {
163
-      default: 6,
189
+      default: 6
164
     },
190
     },
165
     showPager: {
191
     showPager: {
166
-      default: true,
192
+      default: true
167
     },
193
     },
168
     title: {
194
     title: {
169
-      default: undefined,
195
+      default: undefined
170
     },
196
     },
171
     sortKey: {
197
     sortKey: {
172
-      default: 'id',
198
+      default: "id"
173
     },
199
     },
174
     hideItemCount: {
200
     hideItemCount: {
175
-      default: false,
201
+      default: false
176
     },
202
     },
177
 
203
 
178
     currentPage: {
204
     currentPage: {
179
-      default: 1,
205
+      default: 1
180
     },
206
     },
181
     bordered: {
207
     bordered: {
182
-      default: true,
208
+      default: true
183
     },
209
     },
184
     striped: {
210
     striped: {
185
-      default: true,
211
+      default: true
186
     },
212
     },
213
+    showColumnChooser: {
214
+      default: true
215
+    }
187
   },
216
   },
188
   data() {
217
   data() {
189
     return {
218
     return {
190
       hover: -1,
219
       hover: -1,
191
       selectedItems: [],
220
       selectedItems: [],
192
       showControl: false,
221
       showControl: false,
222
+      sortKey: "",
193
       reverse: false,
223
       reverse: false,
194
-      searchItem: '',
224
+      searchItem: "",
195
       visibleItemsPerPageCount: 20,
225
       visibleItemsPerPageCount: 20,
196
       itemsPerPageList: ItemsPerPageList,
226
       itemsPerPageList: ItemsPerPageList,
227
+      visibleColumn: [],
228
+      allColumn: []
197
     };
229
     };
198
   },
230
   },
199
   methods: {
231
   methods: {
232
+    checkItem(column, show) {
233
+      const list = [];
234
+      for (var i in this.allColumn) {
235
+        let item = this.allColumn[i];
236
+        if (item && item.column === column) {
237
+          item.show = show;
238
+        }
239
+        list.push(item);
240
+      }
241
+      this.allColumn = list;
242
+    },
243
+    getInitColumn() {
244
+      const list = [];
245
+      const listAll = [];
246
+      if (this.items) {
247
+        for (const i in Object.keys(this.items)) {
248
+          const item = this.items[i];
249
+          for (const o in Object.keys(item)) {
250
+            if (
251
+              !listAll.includes(Object.keys(item)[o]) &&
252
+              !Array.isArray(Object.values(item)[o])
253
+            ) {
254
+              const columnName = Object.keys(item)[o];
255
+              if (!listAll.some(x => x.column === columnName))
256
+                listAll.push({
257
+                  column: columnName,
258
+                  show: _.filter(listAll, x => x.show).length < this.columnCount
259
+                });
260
+            }
261
+          }
262
+        }
263
+      }
264
+      this.allColumn = listAll;
265
+    },
200
     onClearSelected() {
266
     onClearSelected() {
201
       this.selectedItems = [];
267
       this.selectedItems = [];
202
-      this.$emit('onClearSelected');
268
+      this.$emit("onClearSelected");
203
     },
269
     },
204
     isSelected(i) {
270
     isSelected(i) {
205
       const ind = this.getActualIndex(i);
271
       const ind = this.getActualIndex(i);
206
       return _.some(this.selectedItems, x => x === ind);
272
       return _.some(this.selectedItems, x => x === ind);
207
     },
273
     },
208
     onNew() {
274
     onNew() {
209
-      this.$emit('onNew');
275
+      this.$emit("onNew");
210
     },
276
     },
211
     isObject(item) {
277
     isObject(item) {
212
       return !!item && item.constructor === Object;
278
       return !!item && item.constructor === Object;
213
     },
279
     },
214
     onEdit(item) {
280
     onEdit(item) {
215
-      this.$emit('onEdit', item);
281
+      this.$emit("onEdit", item);
216
     },
282
     },
217
     onDelete(item) {
283
     onDelete(item) {
218
-      this.$emit('onDelete', item);
284
+      this.$emit("onDelete", item);
219
     },
285
     },
220
     onRowClick(item, i) {
286
     onRowClick(item, i) {
221
       const ind = this.getActualIndex(i);
287
       const ind = this.getActualIndex(i);
227
         }
293
         }
228
         this.selectedItems.push(ind);
294
         this.selectedItems.push(ind);
229
       }
295
       }
230
-      this.$emit('onRowClick', this.selectedItems);
296
+      this.$emit("onRowClick", this.selectedItems);
231
     },
297
     },
232
     getActualIndex(index) {
298
     getActualIndex(index) {
233
       return (this.currentPage - 1) * this.visibleItemsPerPageCount + index;
299
       return (this.currentPage - 1) * this.visibleItemsPerPageCount + index;
252
     async pageChangeHandle(value) {
318
     async pageChangeHandle(value) {
253
       console.log(value);
319
       console.log(value);
254
       switch (value) {
320
       switch (value) {
255
-        case 'next':
321
+        case "next":
256
           this.currentPage += 1;
322
           this.currentPage += 1;
257
           break;
323
           break;
258
-        case 'previous':
324
+        case "previous":
259
           this.currentPage -= 1;
325
           this.currentPage -= 1;
260
           break;
326
           break;
261
         default:
327
         default:
266
       if (this.currentPage !== 1) {
332
       if (this.currentPage !== 1) {
267
         this.currentPage = 1;
333
         this.currentPage = 1;
268
       }
334
       }
269
-    },
335
+    }
270
   },
336
   },
271
   computed: {
337
   computed: {
272
     ListWidth() {
338
     ListWidth() {
273
       if (this.showControl) {
339
       if (this.showControl) {
274
-        return 'col-md-9';
340
+        return "col-md-9";
275
       }
341
       }
276
-      return 'col-md-12';
342
+      return "col-md-12";
277
     },
343
     },
278
     SortDirection() {
344
     SortDirection() {
279
-      return this.reverse ? 'desc' : 'asc';
345
+      return this.reverse ? "desc" : "asc";
280
     },
346
     },
281
     PageCount() {
347
     PageCount() {
282
       return this.visibleItemsPerPageCount !== 0
348
       return this.visibleItemsPerPageCount !== 0
284
         : 1;
350
         : 1;
285
     },
351
     },
286
     Columns() {
352
     Columns() {
353
+      const listColumns = [];
354
+      if (!this.allColumn || this.allColumn.length === 0) {
355
+        this.getInitColumn();
356
+      }
357
+      const list = _.filter(this.allColumn, x => x.show);
358
+      for (const i in list) {
359
+        const item = list[i];
360
+        if (item) {
361
+          listColumns.push(item.column);
362
+        }
363
+      }
364
+      return listColumns;
365
+    },
366
+    AllColumns() {
287
       const list = [];
367
       const list = [];
288
       if (this.items) {
368
       if (this.items) {
289
-        for (const i in Object.keys(this.items)) {
290
-          const item = this.items[i];
291
-          for (const o in Object.keys(item)) {
292
-            if (
293
-              !list.includes(Object.keys(item)[o])
294
-              && !Array.isArray(Object.values(item)[o])
295
-            ) {
296
-              if (list.length < this.columnCount) {
297
-                list.push(Object.keys(item)[o]);
298
-              }
299
-            }
300
-          }
301
-        }
302
       }
369
       }
303
       return list;
370
       return list;
304
     },
371
     },
305
     FilteredItems() {
372
     FilteredItems() {
306
-      const list = _.filter(this.items, item => Object.values(item).some(
307
-          i => JSON.stringify(i)
373
+      const list = _.filter(this.items, item =>
374
+        Object.values(item).some(
375
+          i =>
376
+            JSON.stringify(i)
308
               .toLowerCase()
377
               .toLowerCase()
309
-              .indexOf(this.searchItem.toLowerCase()) > -1,
310
-        ),);
378
+              .indexOf(this.searchItem.toLowerCase()) > -1
379
+        )
380
+      );
311
       return _.orderBy(list, this.sortKey, this.SortDirection);
381
       return _.orderBy(list, this.sortKey, this.SortDirection);
312
     },
382
     },
313
     DisplayItems() {
383
     DisplayItems() {
319
       }
389
       }
320
       return list.slice(startSlice, endSlice);
390
       return list.slice(startSlice, endSlice);
321
     },
391
     },
322
-  },
392
+    GetAllColumn() {}
393
+  }
323
 };
394
 };
324
 </script>
395
 </script>
325
 <style scoped>
396
 <style scoped>
333
   text-decoration: none;
404
   text-decoration: none;
334
   color: #333333;
405
   color: #333333;
335
 }
406
 }
407
+.table-striped > tbody > tr:nth-child(2n + 1) > td,
408
+.table-striped > tbody > tr:nth-child(2n + 1) > th {
409
+  background-color: rgba(225, 225, 225, 0.8);
410
+}
336
 .active {
411
 .active {
337
   background-color: rgba(255, 255, 255, 0.5);
412
   background-color: rgba(255, 255, 255, 0.5);
338
   cursor: pointer;
413
   cursor: pointer;

+ 37
- 8
src/components/shared/listViewControl.vue Parādīt failu

1
 <template>
1
 <template>
2
-  <div>
3
-    <div v-for="item in items" :key="item">
4
-      <CheckItem :title="item" @checkItem="changeColumn" />
2
+  <div class="container">
3
+    <div class="offset-3 col-md-6">
4
+      <input v-model="searchItem" class="form-control" placeholder="Search...." />
5
+    </div>
6
+    <hr />
7
+    <div class="row">
8
+      <div v-for="item in items" :key="item" class="col-md-4">
9
+        <div :class="{'inSearch': isInSelected(item)}">
10
+          <CheckItem :title="item.column" :show="item.show" @checkItem="checkItem" />
11
+        </div>
12
+      </div>
5
     </div>
13
     </div>
6
   </div>
14
   </div>
7
 </template>
15
 </template>
8
 <script>
16
 <script>
9
-import CheckItem from './checkItem.vue';
17
+import CheckItem from "./checkItem.vue";
10
 
18
 
11
 export default {
19
 export default {
12
   components: {
20
   components: {
13
-    CheckItem,
21
+    CheckItem
22
+  },
23
+  data() {
24
+    return {
25
+      searchItem: undefined
26
+    };
14
   },
27
   },
15
   props: {
28
   props: {
16
-    items: undefined,
29
+    items: undefined
17
   },
30
   },
18
   methods: {
31
   methods: {
19
-    changeColumn(title, checked) {
20
-      this.$emit('changeColumn', title, checked);
32
+    isInSelected(i) {
33
+      if (this.searchItem && this.searchItem.length > 0) {
34
+        return (
35
+          i.column.toLowerCase().indexOf(this.searchItem.toLowerCase()) > -1
36
+        );
37
+      }
38
+      return false;
21
     },
39
     },
40
+    checkItem(column, show) {
41
+      this.$emit("checkItem", column, show);
42
+    }
22
   },
43
   },
44
+  computed: {}
23
 };
45
 };
24
 </script>
46
 </script>
47
+<style>
48
+.inSearch {
49
+  border: 1px solid rgba(50, 50, 50, 0.5);
50
+  border-radius: 10px;
51
+  background-color: rgba(225, 225, 225, 0.6);
52
+}
53
+</style>

Notiek ielāde…
Atcelt
Saglabāt