Пользовательский интерфейс Маджонга | 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.

178 lines
4.9KB

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