SAPUI5图表根据变量测量名称

时间:2015-05-01 14:22:40

标签: charts sapui5

我有一张图表,将一年的价值与另一年的价值进行比较'。我想要做的是在度量的定义中使用变量,以便图例显示年份'数字(来自变量)。我尝试将变量分配给' name'图表的配置,但我这样做时出错。目前,我已经展示了“开始年份”#39;和'结束年''但是真的希望它是用户比较的实际年份数。

这是我的控制器中定义度量和提要的部分:

I have two variables that start as the current year and the previous year, but the user can modify those values.
    var startYear = today.getFullYear();
    var endYear = today.getFullYear()-1;

var oDataset = new FlattenedDataset({
    dimensions: [{
        name: "KPI",
        value: "{field}"
        }],
    measures: [{
      name: "Start Year",   <- I tried putting startYear here and below but get errors
      value: "{current}"
    },{
      name: "End Year",       <- tried putting endYear here and below but got errors
      value: "{previous}"
    }],
    data: {
          path: "/bullet",
          filters: [oFilter]
        }
    });

    oVizFrame.setDataset(oDataset);
    oVizFrame.setModel(oModel);

    oVizFrame.setVizProperties({
        plotArea: {
            dataLabel: {
                visible: true,
                formatString: '#,##0'
            },
            colorPalette: ['sapUiChartPaletteSemanticNeutral'],
            gap: {
                visible: true
            }
        },
        valueAxis: {
            title: {
                visible: false,

            }
        },
        legend: {
            title: {
                visible: false
            }
        },
        title: {
            visible: true,
            text: 'Year Comparison'
        }
    });
  var feedValueAxis = new FeedItem({
      'uid': "valueAxis",
      'type': "Measure",
      'values': ["Start Year"]    <- tried putting startYear here but didn't work
    }),
    feedCategoryAxis = new FeedItem({
      'uid': "categoryAxis",
      'type': "Dimension",
      'values': ["KPI"]
    }),
    feedTargetValues = new FeedItem({
      'uid': "targetValues",
      'type': "Measure",
      'values': ["End Year"]       <- tried putting endYear here but got error
    });

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

var startYear = String(today.getFullYear());
var endYear = String(today.getFullYear()-1);
//Please convert the values to string.


var oDataset = new FlattenedDataset({
dimensions: [{
    name: "KPI",
    value: "{field}"
    }],
measures: [{
  name: "Start Year",  
  value: startYear//just put the variable here without quotes
},{
  name: "End Year",     
  value: endYear //likewise
}],
data: {
      path: "/bullet",
      filters: [oFilter]
    }
});

oVizFrame.setDataset(oDataset);
oVizFrame.setModel(oModel);

oVizFrame.setVizProperties({
    plotArea: {
        dataLabel: {
            visible: true,
            formatString: '#,##0'
        },
        colorPalette: ['sapUiChartPaletteSemanticNeutral'],
        gap: {
            visible: true
        }
    },
    valueAxis: {
        title: {
            visible: false,

        }
    },
    legend: {
        title: {
            visible: false
        }
    },
    title: {
        visible: true,
        text: 'Year Comparison'
    }
});
   var feedValueAxis = new FeedItem({
  'uid': "valueAxis",
  'type': "Measure",
  'values': ["Start Year"]    
}),
feedCategoryAxis = new FeedItem({
  'uid': "categoryAxis",
  'type': "Dimension",
  'values': ["KPI"]
}),
feedTargetValues = new FeedItem({
  'uid': "targetValues",
  'type': "Measure",
  'values': ["End Year"]      
});

       //Hope this works.

答案 1 :(得分:0)

我终于让这个工作了 - 我想我还有其他一些问题导致这个问题无法解决,但是一旦我解决了这个问题就行了起来了:

createDataset: function(sPath, sYr, eYr){
    return new sap.viz.ui5.data.FlattenedDataset({
        dimensions: [{
            axis : 1,
            name: "Month",
            value: "{month}"
        }],
        measures: [{              
          name: eYr,          << this contains the year I want in legend
          value: "{current}"
        },{
          name: sYr,          << this contains the year I want in legend
          value: "{previous}"
        }],
        data: {
          path: sPath

        }
    });
},
createFeedItem: function(sYr, eYr) {
    return new FeedItem({
      'uid': "valueAxis",
      'type': "Measure",
      'values': [   sYr, eYr ]          << this contains the year I want in legend, same values as when FlattenedDataSet is created
    });
},

createCatItem: function() {
   return new FeedItem({
      'uid': "categoryAxis",
      'type': "Dimension",
      'values': ["Month"]
    });
},