}
};
+ /*
+ * Focus the first owning library selector in the list of copies.
+ * Timeout is needed to prevent focus shifting before the onKeyUp
+ * handler fires. Otherwise, onKeyUp is called on the lib selector
+ * instead of acqLitAddCopyCount, causing focus to jump to the second
+ * selector.
+ */
+ this.focusCopyLibSelector = function() {
+ setTimeout(function() {
+ var row = dojo.query('tr', self.copyTbody)[0];
+ if (!row) return;
+
+ // The first filteringtreeselect is our owning lib selector
+ // They are sequential, but don't necessarily start with _1,
+ // since rows can be arbitrarily removed.
+ var selector = dojo.query(
+ '[widgetid^="openils_widget_FilteringTreeSelect_"]', row)[0];
+ if (selector) selector.focus();
+ }, 100);
+ }
+
this._drawCopies = function(li) {
var self = this;
- self.firstItemLibSelector = null;
// this button sets the total number of copies for a given lineitem
acqLitAddCopyCount.onClick = function() {
}
}
- // KCLS -- after adding new copies, focus the library
- // selector of the first copy in the list. Add the timeout
- // so prevent focus shifting before the onKeyUp handler fires.
- // Otherwise, onKeyUp is called on the lib selector instead
- // of acqLitAddCopyCount, causing focus to jump to the
- // second selector.
- setTimeout(function() {
- if (self.firstItemLibSelector)
- self.firstItemLibSelector.focus();
- }, 100);
+ // KCLS -- after adding or removing copies, focus the library
+ // selector of the first copy in the list.
+ self.focusCopyLibSelector();
}
// KCLS ---
if (field == 'owning_lib') {
- var nodeId = w.id.replace(/.*(\d+)$/,'$1');
-
- // track the first library selector so we can
- // focus it after generating new copies
- if (nodeId == 1) self.firstItemLibSelector = w;
// User pressing Enter on the ownling library
// selector causes focus to jump to the next
// owning library selector in the list of copies.
dojo.connect(w, 'onKeyUp', function(key) {
if (key.keyCode != 13) return // 13 = Enter
+ var nodeId = w.id.replace(/.*(\d+)$/,'$1');
+
// ID's for like dijits increment by 1.
var nextId = w.id.replace(
/(.*)\d+$/, '$1' + (Number(nodeId) + 1));
if(copy.isnew())
delete this.copyCache[copy.id()];
this.copyTbody.removeChild(row);
+ this.focusCopyLibSelector();
}
this._virtDfaCountsAsList = function() {