/** * This class manages one side of a `Matrix`. * @private */Ext.define('Ext.data.matrix.Side', { requires: [ 'Ext.data.matrix.Slice' ], /** * @property {Ext.data.matrix.Side} inverse * Reference to the opposite side of the matrix. * @readonly */ constructor: function(matrix, index, role) { var me = this; /** * @property {Ext.data.matrix.Matrix} matrix * @readonly */ me.matrix = matrix; /** * @property {Number} index * Either 0 or 1 which is the index of our id value in an association entry. * @readonly */ me.index = index; /** * @property {Ext.data.schema.Role} role * The role for this side of the matrix. * @readonly */ me.role = role; /** * @property {Object} slices * Keyed by the id for this side of the matrix to yield a `Slice`. * @readonly */ me.slices = {}; }, commit: function() { var slices = this.slices, id; for (id in slices) { slices[id].commit(); } }, get: function(id1, id2) { var me = this, slices = me.slices, slice = slices[id1] || (slices[id1] = new Ext.data.matrix.Slice(me, id1)); return (id2 || id2 === 0) ? slice.members[id2] : slice; }, update: function(id1, id2, state) { var slice = this.get(id1); return slice.update(id2, state); }, updateId: function(oldId, newId) { var slice = this.get(oldId); if (slice) { slice.updateId(newId); } }, destroy: function() { var me = this, slices = me.slices, id; for (id in slices) { slices[id].destroy(); } me.inverse = me.matrix = me.role = me.slices = null; me.callParent(); }});