parcodes.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /**
  2. * ЭЛЕКТРОННЫЙ ЖУРНАЛ «ШКАЛА»: КОДЫ ДОСТУПА К ЖУРНАЛУ ДЛЯ РОДИТЕЛЕЙ
  3. * Copyright © 2019, А.М.Гольдин. Modified BSD License
  4. */
  5. "use strict";
  6. // Получение родительских кодов с сервера и публикация их на странице
  7. // При наличии аргумента - отдается файл с версией для печати
  8. const getParCodes = async () => {
  9. let clName = dqs("#parcClassSel").value;
  10. let apiResp = await apireq("parCodes", [clName]);
  11. if (apiResp == "none") {info(1, "Ошибка на сервере"); return;}
  12. let codes = JSON.parse(apiResp);
  13. // Публикуем таблицу с кодами на странице и готовим данные для печати
  14. let cont =
  15. "<table><tr><th>Фамилия, имя</th><th>Логин</th><th>Код</th></tr>";
  16. let print = '';
  17. for (let s of codes) {
  18. cont += `<tr><td>${s[0]}</td><td>${s[1]}</td><td>${s[2]}</td></tr>`;
  19. print += `${s[0]}. Логин: ${s[1]} Код: ${s[2]}\r\n\r\n---------\r\n\r\n`;
  20. }
  21. cont += "</table>";
  22. dqs("#parcTable").innerHTML = cont;
  23. // Подготавливаем ссылку на версию для печати
  24. let dataLink = new Blob([print], {type: "text/plain"});
  25. dqs("#parcPrint").href = window.URL.createObjectURL(dataLink);
  26. dqs("#parcPrint").download = "parcodes.txt";
  27. }
  28. createSection("parcodes", `
  29. <h3>Коды доступа к журналу для родителей</h3>
  30. <select id="parcClassSel" onChange="getParCodes()"></select>
  31. <div id="parcTable"></div>
  32. <a id="parcPrint">Версия для печати</a>
  33. `);
  34. // Динамически подгружаем контент страницы (имя метода = имени пункта меню!)
  35. getContent.parcodes = async () => {
  36. // Формирование списка классов в селекте (uTutorCls определен в login.js)
  37. let parcSelClInner = '';
  38. for (let cls of uTutorCls) parcSelClInner += `<option>${cls}</option>`;
  39. dqs("#parcClassSel").innerHTML = parcSelClInner;
  40. // Получаем родительские коды для {первого класса в списке классов}
  41. getParCodes();
  42. }