Sie könnten eine eigene Komponente definieren, die als Widget zum Verschachteln in der Spalte verwendet wird. Die data des Widgets Säule wäre auf ein Objekt binden, wobei der Prozentsatz jeder Stufe (die bis zu 100% addieren sollen), die wie
{
redPercent: 10,
orangePercent: 20,
bluePercent: 30,
greenPercent: 40
}
Dann wird die neu definierte Komponente den Fortschritt würde verwenden eine tpl sieht anzuzeigen bar - Verwenden Sie CSS, um die prozentualen Breiten richtig einzustellen.
Ext.define('my.StatusBar', {
extend: 'Ext.container.Container',
xtype: 'my-status-bar',
defaultBindProperty: 'statusCounts',
config: {
statusCounts: null
},
updateStatusCounts: function (obj) {
this.getViewModel().set('statusCounts', obj);
},
viewModel: {
data: {
statusCounts: null
}
},
height: 25,
layout: {
type: 'hbox',
align: 'middle'
},
constructor: function (config) {
config.items = [
{
xtype: 'component',
flex: 1,
tpl: [
'<div style="width:100%; display:table;">',
' <tpl if="redPercent"><div style="width: {redPercent}%; display:table-cell; background-color:red;"></div></tpl>',
' <tpl if="orangePercent"><div style="width: {orangePercent}%; display:table-cell; background-color:orange;"></div></tpl>',
' <tpl if="bluePercent"> <div style="width: {bluePercent}%; display:table-cell; background-color:blue;"></div></tpl>',
' <tpl if="greenPercent"><div style="width: {greenPercent}%; display:table-cell; background-color:green;"></div></tpl>',
'</div>'
],
bind: '{statusCounts}'
}
];
this.callParent(arguments);
}
});
Und schließlich würden Sie das Widget Spalte als
{
xtype: 'widgetcolumn',
text: 'Progress',
dataIndex: 'statusCounts',
widget: {
xtype: 'my-status-bar'
}
}
konfigurieren könnten Sie Bootstrap-Fortschrittsbalken gestapelt, verwenden Sie [http://getbootstrap.com/components/#progress-stacked](http:// getbootstrap.com/components/#progress-stacked) –