reducer.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /**
  2. * Created by Jacky.gao on 2016/6/3.
  3. */
  4. import * as ACTIONS from './action.js';
  5. import {combineReducers} from 'redux';
  6. function master(state={}, action) {
  7. switch (action.type){
  8. case ACTIONS.LOAD_MASTER_COMPLETED:
  9. return Object.assign({},state.prototype,{data:action.masterData});
  10. case ACTIONS.DEL_MASTER:
  11. var rowIndex=action.rowIndex;
  12. var newData=[...state.data];
  13. newData.splice(rowIndex,1);
  14. return Object.assign({},state.prototype,{data:newData});
  15. case ACTIONS.ADD_MASTER:
  16. var newData=[...state.data];
  17. newData.push({name:'',clazz:'',type:'Custom',variables:[]});
  18. return Object.assign({},state.prototype,{data:newData});
  19. case ACTIONS.GENERATED_FIELDS:
  20. var newData=[...state.data];
  21. var variables=action.variables;
  22. var rowIndex=action.rowIndex;
  23. var targetData=newData[rowIndex];
  24. var fields=targetData.variables || [];
  25. fields.push(...variables);
  26. targetData.variables=fields;
  27. return Object.assign({},state.prototype,{data:newData});
  28. case ACTIONS.IMPORT_FIELDS:
  29. var newData=[...state.data];
  30. var jsonResult=action.jsonResult;
  31. var variables=jsonResult.variables;
  32. var clazz=jsonResult.clazz;
  33. var rowIndex=action.rowIndex;
  34. var targetData=newData[rowIndex];
  35. var fields=targetData.variables || [];
  36. if(clazz){
  37. targetData.clazz=clazz;
  38. }
  39. fields.push(...variables);
  40. targetData.variables=fields;
  41. return Object.assign({},state.prototype,{data:newData});
  42. case ACTIONS.SAVE:
  43. ACTIONS.saveData(state.data,action.newVersion,action.file);
  44. return state;
  45. default:
  46. return state;
  47. }
  48. };
  49. function slave(state={},action) {
  50. switch (action.type){
  51. case ACTIONS.LOAD_SLAVE_COMPLETE:
  52. return Object.assign({},state.prototype,{data:action.masterRowData});
  53. case ACTIONS.DEL_SLAVE:
  54. var rowIndex=action.rowIndex;
  55. var newData=Object.assign({},state.data);
  56. newData.variables.splice(rowIndex,1);
  57. return Object.assign({},state.prototype,{data:newData});
  58. case ACTIONS.ADD_SLAVE:
  59. var newData=Object.assign({},state.data);
  60. newData.variables.push({name:'',label:'',type:'String'});
  61. return Object.assign({},state.prototype,{data:newData});
  62. default:
  63. return state;
  64. }
  65. };
  66. export default combineReducers({
  67. master,
  68. slave
  69. });