Ejemplo n.º 1
0
function computeQueryParams(linkView, stripDefaultValues) {
  var helperParameters = linkView.parameters,
      queryParamsObject = get(linkView, 'queryParamsObject'),
      suppliedParams = {};

  if (queryParamsObject) {
    merge(suppliedParams, queryParamsObject.values);
  }

  var resolvedParams = get(linkView, 'resolvedParams'),
      router = get(linkView, 'router'),
      routeName = resolvedParams[0],
      paramsForRoute = router._queryParamsFor(routeName),
      qps = paramsForRoute.qps,
      paramsForRecognizer = {};

  // We need to collect all non-default query params for this route.
  for (var i = 0, len = qps.length; i < len; ++i) {
    var qp = qps[i];

    // Check if the link-to provides a value for this qp.
    var providedType = null, value;
    if (qp.prop in suppliedParams) {
      value = suppliedParams[qp.prop];
      providedType = queryParamsObject.types[qp.prop];
      delete suppliedParams[qp.prop];
    } else if (qp.urlKey in suppliedParams) {
      value = suppliedParams[qp.urlKey];
      providedType = queryParamsObject.types[qp.urlKey];
      delete suppliedParams[qp.urlKey];
    }

    if (providedType) {
      if (providedType === 'ID') {
        var normalizedPath = EmberHandlebars.normalizePath(helperParameters.context, value, helperParameters.options.data);
        value = EmberHandlebars.get(normalizedPath.root, normalizedPath.path, helperParameters.options);
      }

      value = qp.route.serializeQueryParam(value, qp.urlKey, qp.type);
    } else {
      value = qp.svalue;
    }

    if (stripDefaultValues && value === qp.sdef) {
      continue;
    }

    paramsForRecognizer[qp.urlKey] = value;
  }

  return paramsForRecognizer;
}
Ejemplo n.º 2
0
function getResolvedQueryParams(linkView, targetRouteName) {
  var helperParameters = linkView.parameters,
      queryParamsObject = linkView.queryParamsObject,
      resolvedQueryParams = {};

  if (!queryParamsObject) { return resolvedQueryParams; }
  var rawParams = queryParamsObject.values;

  for (var key in rawParams) {
    if (!rawParams.hasOwnProperty(key)) { continue; }

    var value = rawParams[key],
        type = queryParamsObject.types[key];

    if (type === 'ID') {
      var normalizedPath = getNormalizedPath(value, helperParameters);
      value = EmberHandlebars.get(normalizedPath.root, normalizedPath.path, helperParameters.options);
    }
    resolvedQueryParams[key] = value;
  }
  return resolvedQueryParams;
}