Пользовательский интерфейс Маджонга | Mahjong user interface
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

152 lines
4.1KB

  1. // // // //
  2. ОтобразитьВыбраннуюТемуВТаблице = мир =>
  3. {
  4. var таблица = мир.окна.темы.таблица;
  5. // Очистить выбор.
  6. for (var номер in таблица.строки)
  7. {
  8. var элемент = таблица.элемент(номер);
  9. элемент.removeClass("выбранный-элемент-таблицы");
  10. }
  11. // Задать выбор.
  12. var элемент = таблица.элемент(мир.номерВыбраннойТемы);
  13. элемент.addClass("выбранный-элемент-таблицы");
  14. };
  15. // // // //
  16. ЗадатьНомерВыбраннойТемыЕслиНеЗадан = мир =>
  17. {
  18. if (мир.номерВыбраннойТемы)
  19. {
  20. return;
  21. }
  22. // Нужно для случая отображения выбранной темы сразу после пуска.
  23. const строки = мир.окна.темы.таблица.строки;
  24. for (var номер in строки)
  25. {
  26. var название = строки[номер][1];
  27. if (название == мир.выбраннаяТема)
  28. {
  29. мир.номерВыбраннойТемы = номер;
  30. return;
  31. }
  32. }
  33. }
  34. // // // //
  35. ОтслеживатьВыборТемы = мир =>
  36. {
  37. const строки = мир.окна.темы.таблица.строки;
  38. мир.окна.темы.таблица.выбор = (номер) =>
  39. {
  40. мир.выбраннаяТема = строки[номер][1];
  41. мир.номерВыбраннойТемы = номер;
  42. мир.уведомить("выбрали тему");
  43. };
  44. };
  45. // // // //
  46. ЗадатьСписокТемФишек = мир =>
  47. {
  48. var темы = Object.keys(мир.реестрТемФишек).sort();
  49. var список = [];
  50. for (var номер in темы)
  51. {
  52. var число = Number(номер) + 1;
  53. var название = темы[номер];
  54. список.push([число, название]);
  55. }
  56. мир.окна.темы.таблица.задатьЗаголовки(["№", "Название ⚬ 标题 ⚬ Name"]);
  57. мир.окна.темы.таблица.задатьСтроки(список);
  58. };
  59. // // // //
  60. ПлавноСкрытьОкноТем = мир =>
  61. {
  62. мир.окна.темы.плавно.скрыть();
  63. };
  64. // // // //
  65. ПлавноПоказатьОкноТем = мир =>
  66. {
  67. мир.окна.темы.плавно.отобразить();
  68. };
  69. // // // //
  70. ЗадатьВидОкнаТем = мир =>
  71. {
  72. var вид = document.createElement("style");
  73. document.head.appendChild(вид);
  74. вид.innerHTML = `
  75. #скрыть-темы
  76. {
  77. position: fixed;
  78. right: 0.5em;
  79. top: 0.5em;
  80. }
  81. `;
  82. };
  83. // // // //
  84. СоздатьОкноТем = мир =>
  85. {
  86. var окно = document.createElement("div");
  87. окно.id = "окно-темы";
  88. окно.style.display = "none";
  89. окно.classList.add("окно-с-отступами");
  90. document.body.appendChild(окно);
  91. мир.окна.темы = {
  92. "указатель": окно.id,
  93. "элемент": окно,
  94. "плавно": new ПлавноОтобразитьСкрыть(окно),
  95. "список": `${окно.id}-список`,
  96. };
  97. окно.innerHTML = `
  98. <center>
  99. <span class="uk-text-large">Темы</span>
  100. ⚬ <span class="uk-text-large uk-text-bold">主题</span> ⚬
  101. <span class="uk-text-large">Themes</span>
  102. </center>
  103. <div class="прокрутка ширина-по-содержимому">
  104. <table id="${мир.окна.темы.список}" class="uk-table uk-table-divider"></table>
  105. </div>
  106. <a id="скрыть-темы" uk-icon="icon: close; ratio: 2"></a>
  107. `;
  108. мир.окна.темы.таблица = new Таблица(мир.окна.темы.список);
  109. $("#скрыть-темы").click(function() {
  110. мир.уведомить("кнопка скрыть темы");
  111. });
  112. };