var rec_selector_block = document.getElementById("record_selector_block");
var rec_selectors = document.getElementsByClassName("result_record_selector");
+ var record_cart_count_el = document.getElementById('record_cart_count');
+ var selected_records_count_el = document.getElementById('selected_records_count');
+ var select_all_records_el = document.getElementById('select_all_records');
+ var clear_selected_records_el = document.getElementById('clear_selected_records');
var mylist = [];
+ function initialize() {
+ var req = new window.XMLHttpRequest();
+ req.open('GET', '/eg/opac/api/mylist/retrieve');
+ if (('responseType' in req) && (req.responseType = 'json')) {
+ req.onload = function (evt) {
+ var result = req.response;
+ handleUpdate(result);
+ syncPageState();
+ }
+ } else {
+ // IE 10/11
+ req.onload = function (evt) {
+ var result = JSON.parse(req.responseText);
+ handleUpdate(result);
+ syncPageState();
+ }
+ }
+ req.send();
+ }
+ initialize();
+
+ function syncPageState() {
+ [].forEach.call(rec_selectors, function(el) {
+ el.checked = mylist.includes(parseInt(el.value));
+ if (el.checked) {
+ adjustLegacyControlsVis('checked', el.value);
+ } else {
+ adjustLegacyControlsVis('unchecked', el.value);
+ }
+ toggleRowHighlighting(el);
+ });
+ }
+
function handleUpdate(result) {
if (result) {
mylist = result.mylist;
- document.getElementById('selected_records_count').innerHTML = mylist.length;
- document.getElementById('record_cart_count').innerHTML = mylist.length;
+ if (selected_records_count_el) {
+ selected_records_count_el.innerHTML = mylist.length;
+ }
+ if (record_cart_count_el) {
+ record_cart_count_el.innerHTML = mylist.length;
+ }
checkMaxCartSize();
}
}
}
function adjustLegacyControlsVis(op, rec) {
- if (op == 'add') {
+ if (op == 'add' || op == 'checked') {
var t;
if (t = document.getElementById('mylist_add_' + rec)) t.classList.add('hidden');
if (t = document.getElementById('mylist_delete_' + rec)) t.classList.remove('hidden');
- } else {
+ } else if (op == 'delete' || op == 'unchecked') {
if (t = document.getElementById('mylist_add_' + rec)) t.classList.remove('hidden');
if (t = document.getElementById('mylist_delete_' + rec)) t.classList.add('hidden');
}
}
function checkMaxCartSize() {
- if ((typeof max_cart_size === 'undefined') || !max_cart_size) return;
- var current_size = parseInt(document.getElementById('selected_records_count').innerHTML);
+ if ((typeof max_cart_size === 'undefined') || !max_cart_size || !mylist.length) return;
+ var alertel = document.getElementById('hit_selected_record_limit');
[].forEach.call(rec_selectors, function(el) {
- if (!el.checked) el.disabled = (current_size >= max_cart_size);
+ if (!el.checked) el.disabled = (mylist.length >= max_cart_size);
});
- var alertel = document.getElementById('hit_selected_record_limit');
- if (current_size >= max_cart_size) {
- alertel.classList.remove('hidden');
- if (!document.getElementById('select_all_records').checked) {
- document.getElementById('select_all_records').disabled = true;
+ if (mylist.length >= max_cart_size) {
+ if (alertel) alertel.classList.remove('hidden');
+ if (select_all_records_el && !select_all_records_el.checked) {
+ select_all_records_el.disabled = true;
}
} else {
- alertel.classList.add('hidden');
- document.getElementById('select_all_records').disabled = false;
+ if (alertel) alertel.classList.add('hidden');
+ if (select_all_records_el) select_all_records_el.disabled = false;
}
}
mungeList('delete', this.value);
adjustLegacyControlsVis('delete', this.value);
}
- toggleRowHighlighting(this);
+ toggleRowHighlighting(el);
}, false);
el.classList.remove("hidden");
if (!el.checked) all_checked = false;
});
- if (all_checked) {
- document.getElementById('select_all_records').checked = true;
+ if (rec_selectors.length && all_checked && select_all_records_el) {
+ select_all_records_el.checked = true;
}
- checkMaxCartSize();
function deselectSelectedOnPage() {
var to_del = [];
}
}
- document.getElementById('select_all_records').addEventListener('click', function() {
- if (this.checked) {
- // adding
- var to_add = [];
- [].forEach.call(rec_selectors, function(el) {
- if (!el.checked) {
- el.checked = true;
- adjustLegacyControlsVis('add', el.value);
- toggleRowHighlighting(el);
- to_add.push(el.value);
+ if (select_all_records_el) {
+ select_all_records_el.addEventListener('click', function() {
+ if (this.checked) {
+ // adding
+ var to_add = [];
+ [].forEach.call(rec_selectors, function(el) {
+ if (!el.checked) {
+ el.checked = true;
+ adjustLegacyControlsVis('add', el.value);
+ toggleRowHighlighting(el);
+ to_add.push(el.value);
+ }
+ });
+ if (to_add.length > 0) {
+ mungeList('add', to_add);
}
- });
- if (to_add.length > 0) {
- mungeList('add', to_add);
+ } else {
+ // deleting
+ deselectSelectedOnPage();
}
- } else {
- // deleting
- deselectSelectedOnPage();
- }
- });
+ });
+ }
- document.getElementById('clear_selected_records').addEventListener('click', function() {
- deselectSelectedOnPage();
- document.getElementById('select_all_records').checked = false;
- });
+ if (clear_selected_records_el) {
+ clear_selected_records_el.addEventListener('click', function() {
+ deselectSelectedOnPage();
+ if (select_all_records_el) select_all_records_el.checked = false;
+ });
+ }
})();