-
Notifications
You must be signed in to change notification settings - Fork 149
/
Copy pathpersist.js
80 lines (64 loc) · 1.82 KB
/
persist.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
var React = require('react')
var Emitter = require('wildemitter')
var ReactPivot = require('../load')
var rows = require('./data.json')
var dimensions = [
{title: 'Last Name', value: 'lastName'},
{
title: 'Transaction Type',
value: function(row) { return (row.transaction || {}).type },
template: function(value) {
return '<a href="http://google.com/?q='+value+'">'+value+'</a>'
}
}
]
var reduce = function(row, memo) {
memo.count = (memo.count || 0) + 1
memo.amountTotal = (memo.amountTotal || 0) + parseFloat(row.transaction.amount)
return memo
}
var calculations = [
{
title: 'Amount', value: 'amountTotal',
template: function(val, row) { return '$' + val.toFixed(2) }
},
{
title: 'Avg Amount',
value: function(memo) { return memo.amountTotal / memo.count },
template: function(val, row) { return '$' + val.toFixed(2) },
className: 'alignRight'
}
]
var persisted = JSON.parse(localStorage.rpPersisted || '{}')
var bus = new Emitter
var rp = ReactPivot(document.body, {
rows: rows,
dimensions: dimensions,
reduce: reduce,
calculations: calculations,
activeDimensions: persisted.activeDimensions || ['Transaction Type'],
sortBy: persisted.sortBy,
sortDir: persisted.sortDir,
solo: persisted.solo,
hiddenColumns: persisted.hiddenColumns,
eventBus: bus
})
bus.on('activeDimensions', function(activeDimensions) {
persist('activeDimensions', activeDimensions)
})
bus.on('sortBy', function(sortBy) {
persist('sortBy', sortBy)
})
bus.on('sortDir', function(sortDir) {
persist('sortDir', sortDir)
})
bus.on('hiddenColumns', function(hiddenColumns) {
persist('hiddenColumns', hiddenColumns)
})
bus.on('solo', function(solo) {
persist('solo', solo)
})
function persist (prop, val) {
persisted[prop] = val
localStorage.rpPersisted = JSON.stringify(persisted)
}