modalcontainer.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Net;
  4. using System.Text;
  5. using System.Web;
  6. namespace FastReport.Web
  7. {
  8. partial class WebReport
  9. {
  10. private const string validation = @"
  11. var pageSelector = document.getElementById('PageSelector');
  12. var pageRange = pageSelector ? pageSelector.value : '';
  13. var validationRegex = new RegExp(""^(\\s*\\d+\\s*\\-\\s*\\d+\\s*,?|\\s*\\d+\\s*,?)+$"");
  14. if(!validationRegex.test(pageRange) && pageRange !== """"){
  15. return;
  16. }";
  17. private const string template_pscustom =
  18. @" const pageRange = input.value.trim();
  19. const validationRegex = /^(\s*\d+\s*-\s*\d+\s*,?|\s*\d+\s*,?)+$/;
  20. let isError = false;
  21. let numbers = [];
  22. if (pageRange) {
  23. numbers = pageRange.match(/(-\d+|\d+)(,\d+)*(\.\d+)*/g) || [];
  24. numbers = numbers.map(n => Number(n.replace(/,/g, '')));
  25. numbers.forEach(elem => {
  26. if (elem > AllPages.value) {
  27. isError = true;
  28. }
  29. });
  30. }
  31. if (validationRegex.test(pageRange) || pageRange === """") {
  32. PageSelector = `&PageRange=PageNumbers&PageNumbers=${PageSelectorInput[0].value}`;
  33. OnFirst[0].classList.remove('activeButton');
  34. OnAll[0].classList.remove('activeButton');
  35. input.classList.remove('input-error');
  36. okButton.classList.remove(""fr-webreport-popup-disabled-button"");
  37. okButton.disabled = isError;
  38. } else {
  39. input.classList.add('input-error');
  40. okButton.classList.add(""fr-webreport-popup-disabled-button"");
  41. okButton.disabled = true;
  42. }
  43. ";
  44. private const string template_modalcontainerscript =
  45. @" var but = document.querySelectorAll('.fr-webreport-settings-btn');
  46. var modalOverlay = document.querySelector('.modalcontainer-overlay');
  47. var modalBtnsSubmit = document.querySelectorAll('.fr-webreport-popup-content-btn-submit');
  48. var activebtn = document.querySelectorAll('.fr-webreport-popup-content-export-parameters-button');
  49. var modals = document.querySelectorAll('.modalcontainer');
  50. var okButton = document.getElementById('okButton');
  51. var input = document.getElementById('PageSelector');
  52. modalBtnsSubmit.forEach((el) => {
  53. el.addEventListener('click', (e) => {
  54. modalOverlay.classList.remove('modalcontainer-overlay--visible');
  55. modals.forEach((el) => {
  56. el.classList.remove('modalcontainer--visible');
  57. });
  58. });
  59. });
  60. but.forEach((el) => {
  61. el.addEventListener('click', (e) => {
  62. let path = e.currentTarget.getAttribute('data-path');
  63. modals.forEach((el) => {
  64. el.classList.remove('modalcontainer--visible');
  65. });
  66. });
  67. });
  68. modalOverlay.addEventListener('click', (e) => {
  69. if (e.target == modalOverlay || e.target == modalBtnsSubmit) {
  70. modalOverlay.classList.remove('modalcontainer-overlay--visible');
  71. modals.forEach((el) => {
  72. el.innerHTML = '';
  73. el.classList.remove('modalcontainer--visible');
  74. });
  75. }
  76. });
  77. activebtn.forEach((el) => {
  78. el.addEventListener('click', (e) => {
  79. {
  80. if(el.getAttribute('name') != 'OnRgbClick' && el.getAttribute('name') != 'OnCmykClick'){{
  81. el.classList.toggle('activeButton');
  82. }}
  83. }
  84. });
  85. });
  86. var PageSelector = '&PageRange=All';
  87. var OnAll = document.getElementsByName('OnAllClick');
  88. var OnFirst = document.getElementsByName('OnFirstClick');
  89. var PageSelectorInput = document.getElementsByName('PageSelectorInput');
  90. function OnFirstClick() {
  91. for (var i = 0; i < PageSelectorInput.length; i++) {
  92. PageSelectorInput[i].value = CurrentPage.value;
  93. }
  94. for (var i = 0; i < OnAll.length; i++) {
  95. OnAll[i].classList.remove('activeButton');
  96. }
  97. PageSelectorInput[0].value = CurrentPage.value;
  98. OnAll[0].classList.remove('activeButton');
  99. PageSelector = '&PageRange=PageNumbers&PageNumbers=' + CurrentPage.value;
  100. okButton.disabled = false;
  101. okButton.classList.remove(""fr-webreport-popup-disabled-button"");
  102. input.classList.remove('input-error');
  103. }
  104. function OnAllClick() {
  105. PageSelectorInput[0].value = '1 - ' + AllPages.value;
  106. OnFirst[0].classList.remove('activeButton');
  107. PageSelector = '&PageRange=All';
  108. okButton.disabled = false;
  109. okButton.classList.remove(""fr-webreport-popup-disabled-button"");
  110. input.classList.remove('input-error');
  111. }
  112. var PSFirst = '';
  113. var PSLast = ''
  114. var CustomPagesArray";
  115. string template_modalcontainer()
  116. {
  117. var templateModalContainer = $@"
  118. <div class=""modalcontainers"">
  119. <div class=""modalcontainer-overlay"">
  120. <script>
  121. setTimeout(function () {{
  122. {template_FR}.getExportSettings();
  123. }}, 100);
  124. </script>
  125. <div class = ""content-modalcontainer""></div>
  126. </div>
  127. </div>";
  128. return templateModalContainer;
  129. }
  130. }
  131. }