catalog.js 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. function loadCatalog(){
  2. document.getElementById("catalog").innerHTML = "<img class='loader' alt='Loading...' src='/img/layout/control/loader.png'/>";
  3. // Get filter values
  4. var filters = "";
  5. var fName = document.getElementById('filter_name').value;
  6. var fType = document.getElementById('filter_type').value;
  7. var fElement = document.getElementById('filter_element').value;
  8. var fMinStars = document.getElementById('filter_stars_min').value;
  9. var fMaxStars = document.getElementById('filter_stars_max').value;
  10. if (fName && /^\s*$/.test(fName) == false){
  11. filters = filters + "name=" + fName + "&";
  12. }
  13. if (fType && /^\s*$/.test(fType) == false){
  14. filters = filters + "type=" + fType + "&";
  15. }
  16. if (fElement && /^\s*$/.test(fElement) == false){
  17. filters = filters + "element=" + fElement + "&";
  18. }
  19. if (Number.isInteger(fMinStars) && Number.isInteger(fMaxStars) && fMinStars < fMaxStars){
  20. var p = fMinStars;
  21. fMinStars = fMaxStars;
  22. fMaxStars = p;
  23. }
  24. if (Number.isInteger(fMinStars) && fMinStars > 0 && fMinStars < 7){
  25. filters = filters + "minstars=" + fMinStars + "&";
  26. }
  27. if (Number.isInteger(fMaxStars) && fMaxStars > 0 && fMaxStars < 7){
  28. filters = filters + "maxstars=" + fMaxStars + "&";
  29. }
  30. if (filters.length > 0 && filters.slice(-1) == '&'){
  31. filters = filters.slice(0, -1)
  32. }
  33. var req = new XMLHttpRequest();
  34. req.onreadystatechange = function() {
  35. if (this.readyState == 4){
  36. if (this.status == 200){
  37. document.getElementById("catalog").innerHTML = this.responseText;
  38. }
  39. else{
  40. document.getElementById("catalog").innerHTML = "Error getting monster collection (HTTP status " + this.status + ")";
  41. }
  42. }
  43. };
  44. req.open("POST", "/frame/catalog_list/", true);
  45. req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  46. if (filters.length > 0){
  47. req.send(filters);
  48. }
  49. else{
  50. req.send();
  51. }
  52. }
  53. function selectMonster(id) {
  54. if (id == null){
  55. document.getElementById('cover').style.display = 'none';
  56. document.getElementById('cover').style.opacity = '0';
  57. document.getElementById('viewer').style.display = 'none';
  58. document.getElementById('viewer_info').innerHTML = '';
  59. document.getElementById('viewer_info').style_display = 'none';
  60. document.getElementById('viewer_wait').style_display = 'block';
  61. }
  62. else{
  63. document.getElementById('cover').style.display = 'block';
  64. document.getElementById('cover').style.opacity = '0.8';
  65. document.getElementById('viewer').style.display = 'block';
  66. document.getElementById('viewer_info').innerHTML = '';
  67. document.getElementById('viewer_info').style_display = 'none';
  68. document.getElementById('viewer_wait').style_display = 'block';
  69. var req = new XMLHttpRequest();
  70. req.onreadystatechange = function() {
  71. if (this.readyState == 4){
  72. if (this.status == 200) {
  73. document.getElementById('viewer_info').innerHTML = this.responseText;
  74. document.getElementById('viewer_info').style.display = 'block';
  75. document.getElementById('viewer_wait').style.display = 'none';
  76. }
  77. else{
  78. alert("Error selecting monster (HTTP status " + this.status + ")");
  79. selectMonster(null);
  80. }
  81. }
  82. };
  83. req.open("POST", "/frame/catalog/", true);
  84. req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  85. req.send("id=" + id);
  86. }
  87. }