6
6
7
7
import React from 'react'
8
8
import { inject , observer } from 'mobx-react'
9
- import R from 'ramda'
10
9
import ReactTooltip from 'react-tooltip'
11
10
12
- import { ICON_CMD } from '../../config '
11
+ import { UserCell , Button , Space , Icon } from '../../components '
13
12
14
- import {
15
- UserCell ,
16
- Button ,
17
- Space ,
18
- Icon ,
19
- CommunityMatrix ,
20
- } from '../../components'
13
+ import { Wrapper , Divider , ActionBtns } from './styles'
21
14
22
- import {
23
- Wrapper ,
24
- Divider ,
25
- PermissionWrapper ,
26
- PerItem ,
27
- PerTitle ,
28
- CheckIcon ,
29
- ActionBtns ,
30
- } from './styles'
15
+ import CommunityList from './CommunityList'
16
+ import PermissionList from './PermissionList'
31
17
32
- import {
33
- uid ,
34
- makeDebugger ,
35
- storePlug ,
36
- isEmptyNil ,
37
- isObject ,
38
- maybe ,
39
- mapKey ,
40
- mapValue ,
41
- objToArray ,
42
- } from '../../utils'
18
+ import { makeDebugger , storePlug } from '../../utils'
43
19
import * as logic from './logic'
44
20
45
21
/* eslint-disable no-unused-vars */
46
22
const debug = makeDebugger ( 'C:PermissionEditor' )
47
23
/* eslint-enable no-unused-vars */
48
24
49
- const valueIsObj = v => isObject ( v )
50
- const valueIsNotObj = R . complement ( valueIsObj )
51
-
52
- const getManagedCommunitiesRaws = userRules => {
53
- const userRulesByCommunities = R . filter ( valueIsObj , JSON . parse ( userRules ) )
54
- const ckeys = R . keys ( userRulesByCommunities )
55
-
56
- return ckeys
57
- }
58
-
59
- const CommunitiesMatrix = ( { data, userRules, activeRaw} ) => {
60
- if ( ! data ) return < div />
61
- userRules = isEmptyNil ( userRules ) ?'{}' :userRules
62
-
63
- const managerdRaws = getManagedCommunitiesRaws ( userRules )
64
-
65
- return (
66
- < CommunityMatrix
67
- data = { data }
68
- onSelect = { logic . communitySelect }
69
- onAddOnSelect = { logic . communityAddOnSelect }
70
- activeRaw = { activeRaw }
71
- lens = { managerdRaws }
72
- />
73
- )
74
- }
75
-
76
- const CheckMark = ( { active} ) => {
77
- return < CheckIcon src = { `${ ICON_CMD } /check.svg` } active = { active } />
78
- }
79
-
80
- const getJson = value => {
81
- return isEmptyNil ( value ) ?{ } :JSON . parse ( value )
82
- }
83
-
84
- const getCurUserRules = ( data , curView , activeRaw ) => {
85
- const userPermissions = JSON . parse ( data )
86
- const userRulesByCommunities = R . filter ( valueIsObj , userPermissions )
87
-
88
- if ( curView === 'general' ) {
89
- return R . pickBy ( valueIsNotObj , userPermissions )
90
- }
91
-
92
- return maybe ( userRulesByCommunities [ activeRaw ] , { } )
93
- }
94
-
95
- const PermissionList = ( {
96
- data,
97
- allRules,
98
- selectRules,
99
- curView,
100
- activeRaw,
101
- } ) => {
102
- data = isEmptyNil ( data ) ?'{}' :data
103
-
104
- const curUserRules = getCurUserRules ( data , curView , activeRaw )
105
- const selectGeneralRules = R . filter ( valueIsNotObj , selectRules )
106
- const selectCommunityRules = R . filter ( valueIsObj , selectRules )
107
-
108
- const curAllRules =
109
- curView === 'general'
110
- ?getJson ( allRules . general )
111
- :getJson ( allRules . community )
112
-
113
- const curSelectRules =
114
- curView === 'general' ?selectGeneralRules :selectCommunityRules [ activeRaw ]
115
-
116
- const curActiveRules = R . merge ( curUserRules , curSelectRules )
117
- const ruleArray = objToArray ( R . merge ( curAllRules , curActiveRules ) )
118
-
119
- return (
120
- < PermissionWrapper >
121
- < React . Fragment >
122
- { ruleArray . map ( p => (
123
- < PerItem key = { uid . gen ( ) } onClick = { logic . onRuleClick . bind ( this , p ) } >
124
- < PerTitle > { mapKey ( p ) } </ PerTitle > < CheckMark active = { mapValue ( p ) } />
125
- </ PerItem >
126
- ) ) }
127
- </ React . Fragment >
128
- </ PermissionWrapper >
129
- )
130
- }
131
-
132
25
class PermissionEditorContainer extends React . Component {
133
26
componentWillMount ( ) {
134
27
const { permissionEditor} = this . props
@@ -161,7 +54,7 @@ class PermissionEditorContainer extends React.Component {
161
54
< h2 > 权限编辑</ h2 >
162
55
< Divider />
163
56
164
- < CommunitiesMatrix
57
+ < CommunityList
165
58
data = { pagedCommunitiesData }
166
59
userRules = { cmsPassportString }
167
60
allRules = { allRulesData . cms . community }
@@ -182,7 +75,6 @@ class PermissionEditorContainer extends React.Component {
182
75
id = "permission_editor"
183
76
delayShow = { 1000 }
184
77
/>
185
- < br />
186
78
< Divider />
187
79
< ActionBtns >
188
80
< Button type = "primary" ghost onClick = { logic . onCancle } >