This repository has been archived by the owner on Mar 14, 2018. It is now read-only.
/
DocumentMixin.js
127 lines (114 loc) · 3.95 KB
/
DocumentMixin.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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
var React = require('react');
var classnames = require('classnames');
var bootbox = require('bootbox');
var AppConstants = require('../../constants/AppConstants');
var AddDocumentLinkModalActions = require('../../actions/DocumentSection/AddDocumentLinkModalActions');
var DocumentRequestAPI = require('../../utils/DocumentRequestAPI');
var DocumentRequestStatusAPI = require('../../utils/DocumentRequestStatusAPI');
var DocumentMixin = {
getStatus: function (allegation) {
if (allegation.document_id) {
return 'fulfilled';
}
if (allegation.document_requested) {
if (allegation.document_pending) {
return 'pending';
}
return 'requesting';
}
return 'missing';
},
getStatusObject: function (status) {
return AppConstants.DOCUMENT_STATUS[status];
},
rowClassName: function (allegation) {
return classnames('document pointer', {
requested: allegation.document_requested,
fulfilled: allegation.document_id
});
},
showAddLinkModal: function (crid, e) {
e.preventDefault();
e.stopPropagation();
AddDocumentLinkModalActions.show(crid);
},
putToPending: function (allegation, e) {
e.preventDefault();
e.stopPropagation();
DocumentRequestStatusAPI.putTo(allegation, 'pending');
},
cancelPending: function (allegation, e) {
e.preventDefault();
e.stopPropagation();
DocumentRequestStatusAPI.putTo(allegation, 'requesting');
},
onCancelClick: function (allegation, e) {
e.preventDefault();
e.stopPropagation();
bootbox.confirm('Do you want to cancel document request for #' + allegation.crid, function (yes) {
if (yes) {
DocumentRequestAPI.cancelRequest(allegation);
}
});
},
renderDocumentActions: function (status, allegation) {
switch (status) {
case 'requesting':
return (
<div>
<button className='btn btn-primary' onClick={ this.showAddLinkModal.bind(this, allegation.crid) }>
<i className='fa fa-link'></i> Add
</button>
<button className='btn btn-primary' onClick={ this.putToPending.bind(this, allegation) }>
Request
</button>
<button className='btn btn-cancel' onClick={ this.onCancelClick.bind(this, allegation) }>
<i className='fa fa-times'></i> Cancel
</button>
</div>
);
case 'pending':
return (
<div>
<button className='btn btn-primary' onClick={ this.showAddLinkModal.bind(this, allegation.crid) }>
<i className='fa fa-link'></i> Add
</button>
<button className='btn btn-primary' onClick={ this.cancelPending.bind(this, allegation) }>
Cancel Pending
</button>
<button className='btn btn-cancel' onClick={ this.onCancelClick.bind(this, allegation) }>
<i className='fa fa-times'></i> Cancel
</button>
</div>
);
case 'fulfilled':
return (
<div>
<button className='btn btn-primary inverse' onClick={ this.showAddLinkModal.bind(this, allegation.crid) }>
<i className='fa fa-refresh'></i> Update
</button>
</div>
);
case 'missing':
return (
<div>
<button className='btn btn-primary' onClick={ this.showAddLinkModal.bind(this, allegation.crid) }>
<i className='fa fa-link'></i> Add
</button>
</div>
);
default:
return (
<div>
<button className='btn btn-primary' onClick={ this.showAddLinkModal.bind(this, allegation.crid) }>
<i className='fa fa-link'></i> Add
</button>
<button className='btn btn-cancel' onClick={ this.onCancelClick.bind(this, allegation) }>
<i className='fa fa-times'></i> Cancel
</button>
</div>
);
}
}
};
module.exports = DocumentMixin;