mirror of
https://github.com/roleypoly/roleypoly-v1.git
synced 2025-06-17 02:29:10 +00:00
finish drag and drop system
This commit is contained in:
parent
e36be9e381
commit
7806219464
19 changed files with 465 additions and 90 deletions
|
@ -3,6 +3,7 @@ import { combineReducers } from 'redux'
|
|||
import servers from './servers'
|
||||
import user from './user'
|
||||
import rolePicker from './role-picker'
|
||||
import roleEditor from './role-editor'
|
||||
import { routerMiddleware } from 'react-router-redux'
|
||||
// import roles from './roles'
|
||||
|
||||
|
@ -15,6 +16,7 @@ const appState = (state = initialState, { type, data }) => {
|
|||
switch (type) {
|
||||
case Symbol.for('app ready'):
|
||||
return {
|
||||
...state,
|
||||
ready: true,
|
||||
fade: false
|
||||
}
|
||||
|
@ -36,7 +38,8 @@ const rootReducer = combineReducers({
|
|||
user,
|
||||
router: routerMiddleware,
|
||||
// roles,
|
||||
rolePicker
|
||||
rolePicker,
|
||||
roleEditor
|
||||
})
|
||||
|
||||
export default rootReducer
|
||||
|
|
43
UI/src/reducers/role-editor.js
Normal file
43
UI/src/reducers/role-editor.js
Normal file
|
@ -0,0 +1,43 @@
|
|||
import { Map, OrderedMap, fromJS } from 'immutable'
|
||||
|
||||
const initialState = Map({
|
||||
viewMap: OrderedMap({})
|
||||
})
|
||||
|
||||
const reducer = (state = initialState, { type, data }) => {
|
||||
switch (type) {
|
||||
case Symbol.for('re: setup'):
|
||||
const { viewMap, ...rest } = data
|
||||
return Map({ viewMap: OrderedMap(viewMap), ...rest })
|
||||
|
||||
case Symbol.for('re: set category'):
|
||||
return state.setIn(['viewMap', data.name], Map(data))
|
||||
|
||||
case Symbol.for('re: delete category'):
|
||||
return state.deleteIn(['viewMap', data])
|
||||
|
||||
case Symbol.for('re: switch category mode'):
|
||||
return state.setIn(['viewMap', data.name, 'mode'], data.mode)
|
||||
|
||||
case Symbol.for('re: add role to category'):
|
||||
const category = state.getIn(['viewMap', data.name])
|
||||
return state.setIn(['viewMap', data.name],
|
||||
category
|
||||
.set('roles', category.get('roles').add(data.role.get('id')))
|
||||
.set('roles_map', category.get('roles_map').add(data.role))
|
||||
)
|
||||
|
||||
case Symbol.for('re: remove role from category'):
|
||||
const rmCat = state.getIn(['viewMap', data.name])
|
||||
return state.setIn(['viewMap', data.name],
|
||||
rmCat
|
||||
.set('roles', rmCat.get('roles').filterNot(r => r === data.role.get('id')))
|
||||
.set('roles_map', rmCat.get('roles_map').filterNot(r => r.get('id') === data.role.get('id')))
|
||||
)
|
||||
|
||||
default:
|
||||
return state
|
||||
}
|
||||
}
|
||||
|
||||
export default reducer
|
Loading…
Add table
Add a link
Reference in a new issue