Guest User

Untitled

a guest
Nov 17th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. const getRange = (start, end) => {
  2. let list = []
  3. if (start <= end) {
  4. for (let i = start; i <= end; i++)
  5. list.push(i)
  6. }
  7. return list
  8. }
  9.  
  10. const RepeatableField = (fields, prefix) => ({
  11.  
  12. expand: (num) =>
  13. getRange(1, num)
  14. .reduce((obj, num) => {
  15. obj[prefix + num] = Object.assign({}, fields)
  16. return obj
  17. }, {}),
  18.  
  19. expandDependsOn (num, field) {
  20. const original = this.expand(num)
  21. const keys = Object.keys(original)
  22.  
  23. return keys.reduce((obj, key, index) => {
  24. obj[key].dependsOn = {
  25. [field]: getRange(index + 1, num)
  26. }
  27. return obj
  28. }, original)
  29. },
  30.  
  31. flatten: (original) =>
  32. Object.keys(original).reduce((obj, key) => {
  33. if (key.indexOf(prefix) === 0) {
  34. obj[prefix].push(original[key])
  35. } else {
  36. obj[key] = original[key]
  37. }
  38. return obj
  39. }, {
  40. [prefix]: []
  41. })())
  42.  
  43. })
Add Comment
Please, Sign In to add comment