nyx_server
Version:
Node内容发布
128 lines (115 loc) • 4.11 kB
JavaScript
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;
}