@@ -24,12 +24,13 @@ import {
24
24
let origin = new Position ( 0 , 0 ) ;
25
25
26
26
function renderAdvancedCheckboxes ( rowId , perms , advanced , onChange ) {
27
- let get = perms . get ( 'get' ) . get ( rowId ) || perms . get ( 'get' ) . get ( '*' ) ;
28
- let find = perms . get ( 'find' ) . get ( rowId ) || perms . get ( 'find' ) . get ( '*' ) ;
27
+ const get = perms . get ( 'get' ) . get ( rowId ) || perms . get ( 'get' ) . get ( '*' ) ;
28
+ const find = perms . get ( 'find' ) . get ( rowId ) || perms . get ( 'find' ) . get ( '*' ) ;
29
+ const count = perms . get ( 'count' ) . get ( rowId ) || perms . get ( 'count' ) . get ( '*' ) ;
29
30
30
- let create = perms . get ( 'create' ) . get ( rowId ) || perms . get ( 'create' ) . get ( '*' ) ;
31
- let update = perms . get ( 'update' ) . get ( rowId ) || perms . get ( 'update' ) . get ( '*' ) ;
32
- let del = perms . get ( 'delete' ) . get ( rowId ) || perms . get ( 'delete' ) . get ( '*' ) ;
31
+ const create = perms . get ( 'create' ) . get ( rowId ) || perms . get ( 'create' ) . get ( '*' ) ;
32
+ const update = perms . get ( 'update' ) . get ( rowId ) || perms . get ( 'update' ) . get ( '*' ) ;
33
+ const del = perms . get ( 'delete' ) . get ( rowId ) || perms . get ( 'delete' ) . get ( '*' ) ;
33
34
34
35
if ( advanced ) {
35
36
return [
@@ -50,30 +51,38 @@ function renderAdvancedCheckboxes(rowId, perms, advanced, onChange) {
50
51
< Icon name = 'check' width = { 20 } height = { 20 } /> }
51
52
</ div > ,
52
53
< div key = 'fourth' className = { [ styles . check , styles . fourth ] . join ( ' ' ) } >
54
+ { ! perms . get ( 'count' ) . get ( '*' ) || rowId === '*' ?
55
+ < Checkbox
56
+ label = 'Count'
57
+ checked = { perms . get ( 'count' ) . get ( rowId ) }
58
+ onChange = { ( value ) => onChange ( rowId , 'count' , value ) } /> :
59
+ < Icon name = 'check' width = { 20 } height = { 20 } /> }
60
+ </ div > ,
61
+ < div key = 'fifth' className = { [ styles . check , styles . fifth ] . join ( ' ' ) } >
53
62
{ ! perms . get ( 'create' ) . get ( '*' ) || rowId === '*' ?
54
63
< Checkbox
55
64
label = 'Create'
56
65
checked = { perms . get ( 'create' ) . get ( rowId ) }
57
66
onChange = { ( value ) => onChange ( rowId , 'create' , value ) } /> :
58
67
< Icon name = 'check' width = { 20 } height = { 20 } /> }
59
68
</ div > ,
60
- < div key = 'fifth ' className = { [ styles . check , styles . fifth ] . join ( ' ' ) } >
69
+ < div key = 'sixth ' className = { [ styles . check , styles . sixth ] . join ( ' ' ) } >
61
70
{ ! perms . get ( 'update' ) . get ( '*' ) || rowId === '*' ?
62
71
< Checkbox
63
72
label = 'Update'
64
73
checked = { perms . get ( 'update' ) . get ( rowId ) }
65
74
onChange = { ( value ) => onChange ( rowId , 'update' , value ) } /> :
66
75
< Icon name = 'check' width = { 20 } height = { 20 } /> }
67
76
</ div > ,
68
- < div key = 'sixth ' className = { [ styles . check , styles . sixth ] . join ( ' ' ) } >
77
+ < div key = 'seventh ' className = { [ styles . check , styles . seventh ] . join ( ' ' ) } >
69
78
{ ! perms . get ( 'delete' ) . get ( '*' ) || rowId === '*' ?
70
79
< Checkbox
71
80
label = 'Delete'
72
81
checked = { perms . get ( 'delete' ) . get ( rowId ) }
73
82
onChange = { ( value ) => onChange ( rowId , 'delete' , value ) } /> :
74
83
< Icon name = 'check' width = { 20 } height = { 20 } /> }
75
84
</ div > ,
76
- < div key = 'seventh ' className = { [ styles . check , styles . seventh ] . join ( ' ' ) } >
85
+ < div key = 'eighth ' className = { [ styles . check , styles . eighth ] . join ( ' ' ) } >
77
86
{ ! perms . get ( 'addField' ) . get ( '*' ) || rowId === '*' ?
78
87
< Checkbox
79
88
label = 'Add field'
@@ -84,19 +93,19 @@ function renderAdvancedCheckboxes(rowId, perms, advanced, onChange) {
84
93
] ;
85
94
}
86
95
87
- let read = get || find ;
88
- let write = create || update || del ;
89
- let readChecked = get && find ;
90
- let writeChecked = create && update && del ;
96
+ const read = get || find || count ;
97
+ const write = create || update || del ;
98
+ const readChecked = get && find && count ;
99
+ const writeChecked = create && update && del ;
91
100
92
101
return [
93
102
< div key = 'second' className = { [ styles . check , styles . second ] . join ( ' ' ) } >
94
- { ! ( perms . get ( 'get' ) . get ( '*' ) && perms . get ( 'find' ) . get ( '*' ) ) || rowId === '*' ?
103
+ { ! ( perms . get ( 'get' ) . get ( '*' ) && perms . get ( 'find' ) . get ( '*' ) && perms . get ( 'count' ) . get ( '*' ) ) || rowId === '*' ?
95
104
< Checkbox
96
105
label = 'Read'
97
106
checked = { readChecked }
98
107
indeterminate = { ! readChecked && read }
99
- onChange = { ( value ) => onChange ( rowId , [ 'get' , 'find' ] , value ) } /> :
108
+ onChange = { ( value ) => onChange ( rowId , [ 'get' , 'find' , 'count' ] , value ) } /> :
100
109
< Icon name = 'check' width = { 20 } height = { 20 } /> }
101
110
</ div > ,
102
111
< div key = 'third' className = { [ styles . check , styles . third ] . join ( ' ' ) } >
@@ -135,11 +144,13 @@ function renderSimpleCheckboxes(rowId, perms, onChange) {
135
144
}
136
145
137
146
function renderPointerCheckboxes ( rowId , publicPerms , pointerPerms , advanced , onChange ) {
138
- let publicRead = publicPerms . get ( 'get' ) . get ( '*' ) && publicPerms . get ( 'find' ) . get ( '*' ) ;
139
- let publicWrite = publicPerms . get ( 'create' ) . get ( '*' ) &&
140
- publicPerms . get ( 'update' ) . get ( '*' ) &&
141
- publicPerms . get ( 'delete' ) . get ( '*' ) &&
142
- publicPerms . get ( 'addField' ) . get ( '*' ) ;
147
+ const publicRead = publicPerms . get ( 'get' ) . get ( '*' ) &&
148
+ publicPerms . get ( 'find' ) . get ( '*' ) &&
149
+ publicPerms . get ( 'count' ) . get ( '*' )
150
+ const publicWrite = publicPerms . get ( 'create' ) . get ( '*' ) &&
151
+ publicPerms . get ( 'update' ) . get ( '*' ) &&
152
+ publicPerms . get ( 'delete' ) . get ( '*' ) &&
153
+ publicPerms . get ( 'addField' ) . get ( '*' ) ;
143
154
144
155
if ( ! advanced ) {
145
156
return [
@@ -173,12 +184,17 @@ function renderPointerCheckboxes(rowId, publicPerms, pointerPerms, advanced, onC
173
184
< Icon name = 'check' width = { 20 } height = { 20 } />
174
185
</ div >
175
186
) ;
187
+ cols . push (
188
+ < div key = 'fourth' className = { [ styles . check , styles . fourth ] . join ( ' ' ) } >
189
+ < Icon name = 'check' width = { 20 } height = { 20 } />
190
+ </ div >
191
+ ) ;
176
192
} else {
177
193
cols . push (
178
194
< div key = 'read' className = { styles . pointerRead } >
179
195
< div className = { styles . checkboxWrap } >
180
196
< Checkbox
181
- label = 'Get and Find '
197
+ label = 'Get, Find and Count '
182
198
checked = { pointerPerms . get ( 'read' ) }
183
199
onChange = { ( value ) => onChange ( rowId , 'read' , value ) } />
184
200
</ div >
@@ -187,22 +203,22 @@ function renderPointerCheckboxes(rowId, publicPerms, pointerPerms, advanced, onC
187
203
}
188
204
if ( publicWrite ) {
189
205
cols . push (
190
- < div key = 'fourth ' className = { [ styles . check , styles . fourth ] . join ( ' ' ) } >
206
+ < div key = 'fifth ' className = { [ styles . check , styles . fifth ] . join ( ' ' ) } >
191
207
< Icon name = 'check' width = { 20 } height = { 20 } />
192
208
</ div >
193
209
) ;
194
210
cols . push (
195
- < div key = 'fifth ' className = { [ styles . check , styles . fifth ] . join ( ' ' ) } >
211
+ < div key = 'sixth ' className = { [ styles . check , styles . sixth ] . join ( ' ' ) } >
196
212
< Icon name = 'check' width = { 20 } height = { 20 } />
197
213
</ div >
198
214
) ;
199
215
cols . push (
200
- < div key = 'sixth ' className = { [ styles . check , styles . sixth ] . join ( ' ' ) } >
216
+ < div key = 'seventh ' className = { [ styles . check , styles . seventh ] . join ( ' ' ) } >
201
217
< Icon name = 'check' width = { 20 } height = { 20 } />
202
218
</ div >
203
219
) ;
204
220
cols . push (
205
- < div key = 'seventh ' className = { [ styles . check , styles . seventh ] . join ( ' ' ) } >
221
+ < div key = 'eighth ' className = { [ styles . check , styles . eighth ] . join ( ' ' ) } >
206
222
< Icon name = 'check' width = { 20 } height = { 20 } />
207
223
</ div >
208
224
) ;
@@ -244,6 +260,7 @@ export default class PermissionsDialog extends React.Component {
244
260
// Fill any missing fields
245
261
perms . get = perms . get || Map ( ) ;
246
262
perms . find = perms . find || Map ( ) ;
263
+ perms . count = perms . count || Map ( ) ;
247
264
perms . create = perms . create || Map ( ) ;
248
265
perms . update = perms . update || Map ( ) ;
249
266
perms . delete = perms . delete || Map ( ) ;
@@ -329,6 +346,7 @@ export default class PermissionsDialog extends React.Component {
329
346
if ( this . props . advanced ) {
330
347
nextPerms = nextPerms . setIn ( [ 'get' , id ] , true ) ;
331
348
nextPerms = nextPerms . setIn ( [ 'find' , id ] , true ) ;
349
+ nextPerms = nextPerms . setIn ( [ 'count' , id ] , true ) ;
332
350
nextPerms = nextPerms . setIn ( [ 'create' , id ] , true ) ;
333
351
nextPerms = nextPerms . setIn ( [ 'update' , id ] , true ) ;
334
352
nextPerms = nextPerms . setIn ( [ 'delete' , id ] , true ) ;
@@ -398,6 +416,7 @@ export default class PermissionsDialog extends React.Component {
398
416
newPerms = newPerms
399
417
. deleteIn ( [ 'get' , key ] )
400
418
. deleteIn ( [ 'find' , key ] )
419
+ . deleteIn ( [ 'count' , key ] )
401
420
. deleteIn ( [ 'create' , key ] )
402
421
. deleteIn ( [ 'update' , key ] )
403
422
. deleteIn ( [ 'delete' , key ] )
@@ -431,7 +450,7 @@ export default class PermissionsDialog extends React.Component {
431
450
let output = { } ;
432
451
let fields = [ 'read' , 'write' ] ;
433
452
if ( this . props . advanced ) {
434
- fields = [ 'get' , 'find' , 'create' , 'update' , 'delete' , 'addField' ] ;
453
+ fields = [ 'get' , 'find' , 'count' , ' create', 'update' , 'delete' , 'addField' ] ;
435
454
}
436
455
437
456
fields . forEach ( ( field ) => {
0 commit comments