{
// if value was non-null and had a listener attached before, and a full value update was
// received from server, this key is set; if newValue is non-null, it will automatically get the old
// value's listeners registered to itself
// NOTE: it might be easier to rely just on a shallow $watch of the foundset value (to catch even the
// null to non-null scenario that you still need) and not use NOTIFY_FULL_VALUE_CHANGED at all
foundsetTypeConstants.NOTIFY_FULL_VALUE_CHANGED: { oldValue : ..., newValue : ... },
// the following keys appear if each of these got updated from server; the names of those
// constants suggest what it was that changed; oldValue and newValue are the values for what changed
// (e.g. new server size and old server size) so not the whole foundset property new/old value
foundsetTypeConstants.NOTIFY_SERVER_SIZE_CHANGED: { oldValue : ..., newValue : ... },
foundsetTypeConstants.NOTIFY_HAS_MORE_ROWS_CHANGED: { oldValue : ..., newValue : ... },
foundsetTypeConstants.NOTIFY_MULTI_SELECT_CHANGED: { oldValue : ..., newValue : ... },
foundsetTypeConstants.NOTIFY_COLUMN_FORMATS_CHANGED: { oldValue : ..., newValue : ... },
foundsetTypeConstants.NOTIFY_SORT_COLUMNS_CHANGED: { oldValue : ..., newValue : ... },
foundsetTypeConstants.NOTIFY_SELECTED_ROW_INDEXES_CHANGED: { oldValue : ..., newValue : ... },
foundsetTypeConstants.NOTIFY_VIEW_PORT_START_INDEX_CHANGED: { oldValue : ..., newValue : ... },
foundsetTypeConstants.NOTIFY_VIEW_PORT_SIZE_CHANGED: { oldValue : ..., newValue : ... },
foundsetTypeConstants.NOTIFY_VIEW_PORT_ROWS_COMPLETELY_CHANGED: { oldValue : ..., newValue : ... },
// if we received add/remove/change operations on a set of rows from the viewport, this key
// will be set; as seen below, it contains "updates" which is an array that holds a sequence of
// granular update operations to the viewport; the array will hold one or more granular add or remove
// or update operations;
// all the "startIndex" and "endIndex" values below are relative to the viewport's state after all
// previous updates in the array were already processed (so they are NOT relative to the initial state);
// indexes are 0 based
foundsetTypeConstants.NOTIFY_VIEW_PORT_ROW_UPDATES_RECEIVED: {
updates : [
{
type : foundsetTypeConstants.ROWS_CHANGED,
startIndex : ...,
endIndex : ...
},
{
// when an INSERT happened but viewport size remained the same, it is
// possible that some of the rows that were previously at the end of the viewport
// slided out of it; "removedFromVPEnd" gives the number of such rows that were removed
// from the end of the viewport due to the insert operation;
// NOTE: insert signifies an insert into the client viewport, not necessarily
// an insert in the foundset itself; for example calling "loadExtraRecordsAsync"
// can result in an insert notification + bigger viewport size notification,
// with removedFromVPEnd = 0
type : foundsetTypeConstants.ROWS_INSERTED,
startIndex : ...,
endIndex : ...,
removedFromVPEnd : ...
},
{
// when a DELETE happened inside the viewport but there were more rows available in the
// foundset after current viewport, it is possible that some of those rows
// slided into the viewport; "appendedToVPEnd " gives the number of such rows
// that were appended to the end of the viewport due to the DELETE operation
// NOTE: delete signifies a delete from the client viewport, not necessarily
// a delete in the foundset itself; for example calling "loadLessRecordsAsync" can
// result in a delete notification + smaller viewport size notification,
// with appendedToVPEnd = 0
type : foundsetTypeConstants.ROWS_DELETED,
startIndex : ...,
endIndex : ...,
appendedToVPEnd : ...
}
]
}
} |