outlookemailmicrosoft-teamsdiscordmessengercustom-servicesmacoslinuxwindowsinboxwhatsappicloudtweetdeckhipchattelegramhangoutsslackgmailskypefacebook-workplace
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.4 KiB
69 lines
2.4 KiB
/** |
|
* This class manages columns in a `Dashboard`. The primary role here is the `defaultType` |
|
* config which points to `Ext.dashboard.Panel` and the self-destruct mechanism to get |
|
* rid of empty columns. |
|
* @protected |
|
*/ |
|
Ext.define('Ext.dashboard.Column', { |
|
extend: 'Ext.container.Container', |
|
xtype: 'dashboard-column', |
|
|
|
requires: [ |
|
'Ext.layout.container.Anchor', |
|
'Ext.dashboard.Panel' |
|
], |
|
|
|
layout: 'anchor', |
|
|
|
isDashboardColumn : true, |
|
|
|
defaultType: 'dashboard-panel', |
|
|
|
cls: Ext.baseCSSPrefix + 'dashboard-column', |
|
|
|
synthetic: true, // not user-defined |
|
|
|
onRemove: function (dashPanel, isDestroying) { |
|
var me = this, |
|
ownerCt = me.ownerCt, |
|
remainingSiblings, |
|
numRemaining, |
|
totalColumnWidth = 0, |
|
i; |
|
|
|
// If we've just emptied this column. |
|
if (ownerCt && me.items.getCount() === 0) { |
|
// Collect remaining column siblings of the same row, when this one has gone. |
|
remainingSiblings = Ext.Array.filter(ownerCt.query('>' + me.xtype+ '[rowIndex=' + me.rowIndex + ']'), function(c){ |
|
return c !== me; |
|
}); |
|
numRemaining = remainingSiblings.length; |
|
|
|
// If this column is not destroyed, then remove this column (unless it is the last one!) |
|
if (!me.destroying && !me.isDestroyed) { |
|
ownerCt.remove(me); |
|
|
|
// Down to just one column; it must take up full width |
|
if (numRemaining === 1) { |
|
remainingSiblings[0].columnWidth = 1; |
|
} |
|
// If more than one remaining sibling, redistribute columnWidths proportionally so that they |
|
// still total 1.0 |
|
else { |
|
for (i = 0; i < numRemaining; i++) { |
|
totalColumnWidth += remainingSiblings[i].columnWidth || 0; |
|
} |
|
for (i = 0; i < numRemaining; i++) { |
|
remainingSiblings[i].columnWidth = remainingSiblings[i].columnWidth / totalColumnWidth; |
|
} |
|
} |
|
|
|
// Needed if user is *closing* the last portlet in a column as opposed to just dragging it to another place |
|
// The destruction will not force a layout |
|
if (isDestroying) { |
|
ownerCt.updateLayout(); |
|
} |
|
} |
|
} |
|
} |
|
});
|
|
|