Home Reference Source Test Repository

src/utils.js

/**
 * Created by Chyroc on 17/1/15.
 */
import _ from 'lodash'

/**
 * @ignore
 */
function splitTopConfig (config) {
  return _.omitBy(config, _.isObject)
}

/**
 * @ignore
 */
function splitInputsConfig (configs) {
  const inputConfig = {}
  _.map(configs, (config) => {
    _.map(config.inputs, (input) => {
      const nameSplit = input.name.split('.')
      _.set(inputConfig, nameSplit[1], input.value || null)
    })
  })
  return inputConfig
}

/**
 * split link config.
 *
 * @param linkInfo
 * @returns {{}}
 */
export function splitLinkConfig (linkInfo) {
  const topConfig = splitTopConfig(_.get(linkInfo, 'links[0]'))
  const otherConfig = splitInputsConfig(_.get(linkInfo, 'links[0].link-config-values.configs'))
  const linkConfig = {}
  _.map({
    ...topConfig,
    ...otherConfig
  }, (value, key) => _.set(linkConfig, _.camelCase(key), _.isString(value) ? decodeURIComponent(value) : value))
  return linkConfig
}

/**
 * split job config.
 *
 * @param jobInfo
 * @returns {{}}
 */
export function splitJobConfig (jobInfo) {
  const topConfig = splitTopConfig(_.get(jobInfo, 'jobs[0]'))
  const fromLinkConfig = splitInputsConfig(_.get(jobInfo, 'jobs[0].from-config-values.configs'))
  const toLinkConfig = splitInputsConfig(_.get(jobInfo, 'jobs[0].to-config-values.configs'))
  const driverConfig = splitInputsConfig(_.get(jobInfo, 'jobs[0].driver-config-values.configs'))
  const jobConfig = {}
  _.map({
    ..._.mapKeys(topConfig, (value, key) => `top_${key}`),
    ..._.mapKeys(driverConfig, (value, key) => `driver_${key}`),
    ..._.mapKeys(fromLinkConfig, (value, key) => `from_${key}`),
    ..._.mapKeys(toLinkConfig, (value, key) => `to_${key}`)
  }, (value, key) => _.set(jobConfig, _.camelCase(key), _.isString(value) ? decodeURIComponent(value) : value))
  return jobConfig
}