@@ -15,7 +15,7 @@ import CCol from '../src/components/grid/CCol'
15
15
16
16
storiesOf ( 'CDataTable' , module )
17
17
. addDecorator ( withKnobs )
18
- . add ( 'single ' , ( ) => {
18
+ . add ( 'Standard example ' , ( ) => {
19
19
20
20
const items = [
21
21
{ username : 'Samppa Nori' , registered : '2012/01/01' , role : 'Member' , status : 'Active' } ,
@@ -241,4 +241,92 @@ storiesOf('CDataTable', module)
241
241
</CCol>
242
242
`
243
243
}
244
+ } ) . add ( 'Custom example' , ( ) => {
245
+ return {
246
+ components : { CCol, CCard, CCardBody, CDataTable, CIcon } ,
247
+ data : function ( ) {
248
+ return {
249
+ items : [
250
+ { username : 'Samppa Nori' , registered : { date : '2012/01/01' , timestamp : 1325376000000 } , role : 'Member' , status : 'Active' } ,
251
+ { username : 'Estavan Lykos' , registered : { date : '2012/02/01' , timestamp : 1328054400000 } , role : 'Staff' , status : 'Banned' } ,
252
+ { username : 'Chetan Mohamed' , registered : { date : '2012/02/01' , timestamp : 1328054400000 } , role : 'Admin' , status : 'Inactive' } ,
253
+ { username : 'Derick Maximinus' , registered : { date : '2012/03/01' , timestamp : 1330560000000 } , role : 'Member' , status : 'Pending' } ,
254
+ { username : 'Friderik Dávid' , registered : { date : '2012/01/21' , timestamp : 1327104000000 } , role : 'Staff' , status : 'Active' } ,
255
+ ] ,
256
+ fields : [
257
+ 'username' ,
258
+ { key : 'registeredTimestamp' , label : 'Registered' } ,
259
+ 'role' ,
260
+ 'status'
261
+ ] ,
262
+ startDate : 1325376000000 ,
263
+ endDate : 1330560000000
264
+ }
265
+ } ,
266
+ computed : {
267
+ computedItems ( ) {
268
+ return this . items . map ( item => {
269
+ return {
270
+ ...item ,
271
+ registeredTimestamp : item . registered . timestamp ,
272
+ registeredDate : item . registered . date
273
+ }
274
+ } )
275
+ } ,
276
+ dateFilteredItems ( ) {
277
+ return this . computedItems . filter ( item => {
278
+ const date = item . registeredTimestamp
279
+ return date >= this . startDate && date <= this . endDate
280
+ } )
281
+ }
282
+ } ,
283
+ methods : {
284
+ setDateFilter ( e , end ) {
285
+ if ( end ) {
286
+ this . endDate = new Date ( e . target . value ) . getTime ( )
287
+ } else {
288
+ this . startDate = new Date ( e . target . value ) . getTime ( )
289
+ }
290
+ }
291
+ } ,
292
+ template :`
293
+ <CCol lg="12" xs="12">
294
+ <CCard>
295
+ <CCardBody>
296
+ <CCardBody>
297
+ <CDataTable
298
+ :items="dateFilteredItems"
299
+ :fields="fields"
300
+ sorter
301
+ column-filter
302
+ hover
303
+ >
304
+ <template #registeredTimestamp-filter="{item}">
305
+ From:
306
+ <input
307
+ type="date"
308
+ :value="new Date(startDate).toISOString().substr(0, 10)"
309
+ @change="setDateFilter"
310
+ class="mr-2"
311
+ />
312
+ To:
313
+ <input
314
+ type="date"
315
+ :value="new Date(endDate).toISOString().substr(0, 10)"
316
+ @change="e => setDateFilter(e, 'end')"
317
+ />
318
+ </template>
319
+ <template #registeredTimestamp="{item}">
320
+ <td>
321
+ {{ item.registeredDate }}
322
+ </td>
323
+ </template>
324
+ </CDataTable>
325
+ </CCardBody>
326
+
327
+ </CCardBody>
328
+ </CCard>
329
+ </CCol>
330
+ `
331
+ }
244
332
} )
0 commit comments