示例#1
0
文件: actions.js 项目: Digma/metabase
const guessVisualization = (
  card: CardObject,
  tableMetadata: Table,
  existingDisplay: ?string = null,
) => {
  const query = Card.getQuery(card);
  if (!query) {
    return;
  }
  const aggregations = Query.getAggregations(query);
  const breakoutFields = Query.getBreakouts(query).map(
    breakout => (Q.getFieldTarget(breakout, tableMetadata) || {}).field,
  );
  if (aggregations.length === 0 && breakoutFields.length === 0) {
    card.display = "table";
  } else if (aggregations.length === 1 && breakoutFields.length === 0) {
    card.display = "scalar";
  } else if (aggregations.length === 1 && breakoutFields.length === 1) {
    if (isState(breakoutFields[0])) {
      card.display = "map";
      card.visualization_settings["map.type"] = "region";
      card.visualization_settings["map.region"] = "us_states";
    } else if (isCountry(breakoutFields[0])) {
      card.display = "map";
      card.visualization_settings["map.type"] = "region";
      card.visualization_settings["map.region"] = "world_countries";
    } else if (isDate(breakoutFields[0])) {
      card.display = getLineAreaBarDisplay("line", existingDisplay);
    } else {
      card.display = getLineAreaBarDisplay("bar", existingDisplay);
    }
  } else if (aggregations.length === 1 && breakoutFields.length === 2) {
    if (!VISUALIZATIONS_TWO_BREAKOUTS.has(card.display)) {
      if (isDate(breakoutFields[0])) {
        card.display = getLineAreaBarDisplay("line", existingDisplay);
      } else if (_.all(breakoutFields, isCoordinate)) {
        card.display = "map";
        card.visualization_settings["map.type"] = "grid";
      } else {
        card.display = "bar";
      }
    }
  } else {
    console.warn("Couldn't guess visualization", card);
    card.display = "table";
  }
};
示例#2
0
 it("should return multiple aggregations", () => {
     expect(Query.getAggregations({ "aggregation": [["count"], ["sum", 1]] })).toEqual([["count"], ["sum", 1]]);
 })
示例#3
0
 it("should return a single aggregation", () => {
     expect(Query.getAggregations({ "aggregation": [["count"]] })).toEqual([["count"]]);
     expect(Query.getAggregations({ "aggregation": ["count"] })).toEqual([["count"]]); // deprecated
 })
示例#4
0
 it("should return an empty list for bare rows", () => {
     expect(Query.getAggregations({})).toEqual([]);
     expect(Query.getAggregations({ "aggregation": [["rows"]] })).toEqual([]);
     expect(Query.getAggregations({ "aggregation": ["rows"] })).toEqual([]); // deprecated
 })