export function reduceReceiveTickFormat(state, { data }) {
  const scope = Object.keys(data)[0];
  const receivedUpdate = data[scope];
  const oldSettings = state.chartOptions.tickFormatSettings || {};
  let newSettings;

  const getMergedSettings = (scopeName) => Object.assign(
    {},
    defaultTickFormatSettings,
    (oldSettings[scopeName] || {}),
    receivedUpdate
  );

  if ('all' === scope) {
    const globalSettings = getMergedSettings('all');
    newSettings = formatScopes.reduce((acc, { name }) => {
      acc[name] = globalSettings;
      return acc;
    }, {});
  } else {
    newSettings = Object.assign(
      {},
      oldSettings,
      set(scope, getMergedSettings(scope), {})
    );
  }

  // Update tickFormatSettings then applyTickFormatters
  const newState = set('chartOptions.tickFormatSettings', newSettings, state);
  return set(
    'chartOptions',
    applyTickFormatters(newState.chartOptions, newState.chartType.config),
    newState
  );
}
 update: (store) => {
   const data = store.readQuery({ query, variables });
   store.writeQuery({
     query,
     variables,
     data: set(arrayPath, get(arrayPath, data).filter(object => object.id !== id), data),
   });
 },
export function reduceReceiveChartType(state, { data, src }) {
  const { chartType, dataFields } = state;
  const typeChanged = get('config.type', chartType) !== data.config.type;

  if (actionSourceContains(src, 'bootstrap') || !typeChanged) {
    return merge(state, { chartType: cloneDeep(data) });
  }

  let newOptions = applyChartTypeDefaults(data.config, {});

  if ('function' === typeof data.conditionalOpts) {
    newOptions = merge(newOptions, data.conditionalOpts(state));
  }

  // Clear yDomain on chart type change to have a default one generated.
  newOptions = set('yDomain', null, newOptions);

  // Prepopulate labels and xDomain for scatter/bubble charts
  if ('nvd3ScatterMultiSeries' === data.config.dataFormat) {
    const [, xLabel, yLabel] = dataFields;
    newOptions = merge(newOptions, {
      xAxis: {
        axisLabel: xLabel,
      },
      yAxis: {
        axisLabel: yLabel,
        orient: 'top',
      },
    });

    // Set up xDomain if unset
    if ('undefined' === typeof get('chartOptions.xDomain', state)) {
      newOptions = merge(newOptions, {
        xDomain: getXDomain(state.chartData),
      });
    }
  }

  return compose(
    set('chartType', cloneDeep(data)),
    set('chartOptions', mergeWithGlobal(state.chartOptions, newOptions))
  )(state);
}
 return (store, result) => {
   const newObject = get(['data', ...newObjectPath], result);
   const data = store.readQuery({ query, variables });
   const existingObjects = get(arrayPath, data);
   store.writeQuery({
     query,
     variables,
     data: set(arrayPath, [...existingObjects, newObject], data),
   });
 };
  updateFn = newValue => {
    this.setState({
      touched: true
    });

    this.checkErrorsAndWarnings(newValue);

    return this.props.updateData(
      _set(this.props.fieldLocation, newValue === '' ? null : newValue, this.props.data)
    ).then(() => {
      if (this.props.updateSideEffects) {
        return this.props.updateSideEffects(this.props.data);
      }
    });
  };
Example #6
0
module.exports = values => {
  values = values || {};

  const anchorProperties = [
    "fileType",
    "line",
    "lineType",
    "path",
    "srcPath"
  ];
  const parentProperties = ["id"];

  return pipe(
    result => isPlainObject(get("anchor", values)) ?
      set("anchor", filterProperties(anchorProperties, get("anchor", values)), result) :
      result,
    result => isPlainObject(get("parent", values)) ?
      set("parent", filterProperties(parentProperties, get("parent", values)), result) :
      result,
    set("text", get("text", values)),
    Object.seal
  )({});
};
Example #7
0
export function set(object, path, value) {
  return _set(path, value, object);
}
Example #8
0
 (from, to, src) =>
   has(from, src) ? compose(omit(from), set(to, prop(from, src)))(src) : src
Example #9
0
const triggerReducer = (state = {}, input) => {
  let {
    triggers = [],
    groups = null,
    filter = '',
    trigger = undefined,
    sensors = {},
    instances = [],
  } = state;

  state = {
    ...state,
    triggers,
    groups,
    filter,
    trigger,
    sensors,
    instances,
  };

  switch (input.type) {
    case 'FETCH_GROUPS': {
      switch(input.status) {
        case 'success':
          triggers = input.payload;
          trigger = trigger && triggers.find(item => item.ref === trigger.ref);
          groups = makeGroups(triggers, filter);
          break;
        case 'error':
          break;
        default:
          break;
      }

      return {
        ...state,
        triggers,
        groups,
        trigger,
      };
    }

    case 'FETCH_SENSORS': {
      switch(input.status) {
        case 'success':
          sensors = {};
          for (const sensor of input.payload) {
            for (const trigger of sensor.trigger_types) {
              sensors[trigger] = sensor;
            }
          }
          break;
        case 'error':
          break;
        default:
          break;
      }

      return {
        ...state,
        sensors,
      };
    }

    case 'FETCH_INSTANCES': {
      switch(input.status) {
        case 'success':
          instances = input.payload;
          break;
        case 'error':
          break;
        default:
          break;
      }

      return {
        ...state,
        instances,
      };
    }

    case 'FETCH_ENFORCEMENTS': {
      switch(input.status) {
        case 'success':
          const { id } = input;

          const index = findIndex({ id })(instances);

          if (index > -1) {
            instances = set(`[${index}].enforcements`, input.payload)(instances);
          }
          break;
        case 'error':
          break;
        default:
          break;
      }

      return {
        ...state,
        instances,
      };
    }

    case 'TOGGLE_ENABLE': {
      switch(input.status) {
        case 'success':
          for (const trigger of input.payload.trigger_types) {
            sensors = {
              ...sensors,
              [trigger]: {
                ...input.payload,
                ref: sensors[trigger].ref,
              },
            };
          }
          break;
        case 'error':
          break;
        default:
          break;
      }

      return {
        ...state,
        sensors,
      };
    }

    case 'SET_FILTER': {
      filter = input.filter;
      groups = makeGroups(triggers, filter);

      return {
        ...state,
        groups,
        filter,
      };
    }

    default:
      return state;
  }
};
Example #10
0
 result => isPlainObject(get("parent", values)) ?
   set("parent", filterProperties(parentProperties, get("parent", values)), result) :
   result,
Example #11
0
 result => isPlainObject(get("anchor", values)) ?
   set("anchor", filterProperties(anchorProperties, get("anchor", values)), result) :
   result,