sap.ui.core.Element.extend("custom.barNlineChartControl", { metadata : {
properties : {
"Job" : {type : "string", group : "Misc", defaultValue : null},
"Threshold" : {type : "int", group : "Misc", defaultValue : null},
}
}});
sap.ui.core.Control.extend("control.barNlinechart", {
/* the control API */
metadata : {
aggregations : {
"items" : { type: "custom.barNlineChartControl", multiple : true, singularName : "item"}
},
events: {
"select" : {},
"selectEnd": {}
}
},
//D3 Code below:
onAfterRendering: function() {
var that = this;
/* get the Items aggregation of the control and put the data into an array */
var aItems = this.getItems();
var data = [];
for (var i=0;i<aItems.length;i++){
var oEntry = {};
for (var j in aItems[i].mProperties) {
oEntry[j]=aItems[i].mProperties[j];
}
data.push(oEntry);
}
alert(JSON.stringify(data));
Code of view & SteuerCustom Control Openui5
multiBarLineGraph = new control.barNlinechart({
layoutData: new sap.ui.layout.GridData({span: "L12 M12 S12"}),
items: {
path : "/genericData",
template : new custom.barNlineChartControl({Job:"{Job}",Threshold:"{Threshold}"}),
}
}),
var multiBarData = {
"genericData":[
{
"Job": "Doctor",
"Threshold": 45,
"Hospital1": 30,
"Hospital2": 100,
"Hospital3": 90,
},
{
"Job": "Teacher",
"Threshold": 65,
"School1": 60,
"School2": 75,
},
]};
Wenn der Alarm in d3 Code ausführt I Job & Threshold aber andere Daten von JSON-Array fehlen erhalten, die offensichtlich ist, wie die Eigenschaften hier nur eingestellt Job und Schwelle akzeptieren. Wie der JSON dynamisch ist, wie man ein benutzerdefiniertes Steuerelement schreibt, so dass ich die kompletten Daten zur Kontrolle jedes Mal weitergeben kann, egal wie dynamisch die Daten sind.
Es gibt diesen Fehler Fehler: Fehlende Vorlage oder Factory-Funktion für Aggregation Elemente von Element control.barNlinechart #__ nlinechart0! ' – SiddP
Ja, meine Schuld. Sie müssen eine Eigenschaft anstelle einer Aggregation verwenden. Meine Antwort wurde aktualisiert. – schnoedel
Das hat funktioniert. Vielen Dank! – SiddP