UNPKG

nyx_server

Version:

Node内容发布

128 lines (115 loc) 4.11 kB
import * as types from '../constants/ActionTypes'; var columnFormInit = { name:{value:"" , error:""}, descr:{value:"" , error:""} }; var initState = { roots:[], columnIdMap:{}, templateIdMap:{}, currentSelected : null, //当前选择的栏目或模板 createColumnResult : null, //创建栏目 openAddColumnState : false, //创建栏目对话框状态 columnFormData : columnFormInit }; export default function columns(state =initState , action){ var type = action.type; switch(type){ case types.CURRENT_SELECTED : return _.assign({} , state , {currentSelected: action.payload}) case types.LOAD_CHILDREN_COLUMNS : return processColumn(state , action); case types.LOAD_COLUMN_TEMPLATE: //处理栏目对应的模板 return processTemplates(state , action); case types.CREATE_COLUMN: return addColumn(state , action); case types.OPEN_ADD_COLUMN: return openAddColumn(state , action); case types.CLEAN_ADD_COLUMN_STATE: return cleanAddColumnState(state , action); case types.SET_COLUMN_FROM_FIELD: return setColumnFormData(state , action); }; return state; } function addColumn(state , action){ if(action.error == true){ var _state = _.cloneDeep(state); _state.createColumnResult = action.payload.message; return _state; }else{ var _state = processColumn(state , action) _state.createColumnResult = null; _state.openAddColumnState = false; _state.columnFormData = columnFormInit; return _state; } } function setColumnFormData(state , action){ var _state = _.cloneDeep(state); var fieldName = action.payload.fieldName; var value = action.payload.value; var error = action.payload.error; _state.columnFormData[action.payload.fieldName] = {value:value,error:error}; return _state; } function openAddColumn(state,action){ var _state = _.cloneDeep(state); _state.openAddColumnState = action.payload.opened; return _state; } function cleanAddColumnState(state , action){ var _state = _.cloneDeep(state); _state.openAddColumnState = false; _state.createColumnResult = null; _state.columnForm = columnFormInit; return _state; } function processColumn(state , action) { var _state = _.cloneDeep(state); var _columns = action.payload.columns; if(!Array.isArray(_columns)){ _columns = [_columns]; } var roots = _state.roots; var columnIdMap = _state.columnIdMap; _columns.forEach(column => { var parentId = column.parentId; column.type = "column"; columnIdMap[column.id] = column; if (!parentId) { if (!(roots.indexOf(column.id) >= 0)) { roots.push(column.id); } } else { var parent = columnIdMap[parentId]; parent.loaded = true; parent.columnChildren = parent.columnChildren || []; if (!(parent.columnChildren.indexOf(column.id) >= 0)) { //如果已经存在就不用加载了 parent.columnChildren.push(column.id); } } }); return _state; } function processTemplates(state, action) { var _state = _.cloneDeep(state); var columnId = action.payload.columnId; var templates = action.payload.templates; var columnIdMap = _state.columnIdMap; var templateIdMap = _state.templateIdMap; var column = columnIdMap[columnId]; templates.forEach(function(template) { template.type = "template"; template.id = template.name; templateIdMap[template.name] = template; template.name = template.label || template.name; template.path = template.matchPath; column.loaded = true; column.templateChildren = column.columnChildren || []; if (!column.templateChildren.indexOf(template.id) >= 0) { //如果已经存在就不用加载了 column.templateChildren.push(template.id); } }); return _state; }