基于条件

时间:2017-12-02 04:27:46

标签: javascript xml sapui5 gantt-chart

如何根据绑定的json模型中的属性值设置甘特图形状的填充颜色?

这是我用来配置sap.gantt.config.Shape的代码: -

var oRectangle = new sap.gantt.config.Shape({
    key: "Rectangle",
    shapeDataName: "schedule",
    shapeClassName: "sap.gantt.shape.Rectangle",
    shapeProperties: {
        time: "{startTime}",
        endTime: "{endTime}",
        height: 32,
        fill: "green",
        title: "{name}",
        level: 0
    }
});

我想解决的用例是: -

如果有4个或更多时间表,则用绿色填充形状,否则填充黄色。

我已经尝试过表达式绑定,如:

fill: "{= ${data>/schedule}.length > 4 ? 'green' : 'yellow' }"

但是没有给出任何结果,并用默认的黑色填充形状。

还有其他方法可以实现吗?

另外,有没有一种方法可以在XML视图中配置甘特图形状,而不是在控制器中进行所有这些配置?

1 个答案:

答案 0 :(得分:0)

从形状定义中删除属性。 在定义oRectangle之前,请输入以下代码段:

sap.ui.define(["sap/gantt/shape/Rectangle"], function (Rectangle) {
        var shapeRectangle = Rectangle.extend("sap.test.shapeRectangle");
            shapeRectangle.prototype.getFill = function (oRawData) {
                return oRawData.color;
        };

    return shapeRectangle;
}, true);

之后,您必须为数据模型中的订单提供与startTime,endTime等相同级别的属性颜色...