Редактирование структуры модулей ГитЖС | Editing of GitJS modules' structure
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.

346 lines
12KB

  1. // // // //
  2. СохранитьФлагиФайлаМодуля = мир =>
  3. {
  4. var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort();
  5. var файл = файлы[мир.номерФайлаМодуля];
  6. var флаги = {};
  7. for (var номер = 0; номер < мир.флагиФайлаМодуля.length; ++номер)
  8. {
  9. var флаг = мир.флагиФайлаМодуля[номер];
  10. console.debug("флаг", флаг);
  11. if (флаг == "x")
  12. {
  13. флаги["исполнить"] = true;
  14. }
  15. else if (флаг == "2")
  16. {
  17. флаги["двоичный"] = true;
  18. }
  19. }
  20. мир.редактируемыйМодуль.структура[файл] = флаги;
  21. console.debug("сохранить флаги файла модуля", файл, флаги)
  22. };
  23. // // // //
  24. ОтслеживатьСменуФлаговУФайловМодуля = мир =>
  25. {
  26. var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort();
  27. for (var номер in файлы)
  28. {
  29. const idФлаги = мир.макет.зав.файлыСписокФлаги.replace("%номер%", номер);
  30. const номерФайла = номер;
  31. $(`#${idФлаги}`).on("input", function() {
  32. мир.номерФайлаМодуля = номерФайла;
  33. мир.флагиФайлаМодуля = $(`#${idФлаги}`).val();
  34. мир.уведомить("сменили флаги у файла модуля");
  35. });
  36. }
  37. };
  38. // // // //
  39. СоздатьХранилищеПереименованийФайловМодуля = мир =>
  40. {
  41. мир.переименования = {}
  42. };
  43. // // // //
  44. СохранитьПереименованиеФайловМодуля = мир =>
  45. {
  46. for (var было in мир.переименования)
  47. {
  48. var стало = мир.переименования[было];
  49. мир.редактируемыйМодуль.структура[стало] = мир.редактируемыйМодуль.структура[было];
  50. мир.редактируемыйМодуль.содержимое[стало] = мир.редактируемыйМодуль.содержимое[было];
  51. delete мир.редактируемыйМодуль.структура[было];
  52. delete мир.редактируемыйМодуль.содержимое[было];
  53. }
  54. мир.переименования = {};
  55. };
  56. // // // //
  57. ЗапомнитьПереименованиеФайлаМодуля = мир =>
  58. {
  59. var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort();
  60. var файл = файлы[мир.номерФайлаМодуля];
  61. мир.переименования[файл] = мир.имяФайлаМодуля;
  62. console.debug(`НАДО переименовать '${файл}' в '${мир.имяФайлаМодуля}'`)
  63. };
  64. // // // //
  65. ОтслеживатьПереименованиеФайловМодуля = мир =>
  66. {
  67. var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort();
  68. for (var номер in файлы)
  69. {
  70. const idИмя = мир.макет.зав.файлыСписокИмя.replace("%номер%", номер);
  71. const номерФайла = номер;
  72. $(`#${idИмя}`).on("input", function() {
  73. мир.номерФайлаМодуля = номерФайла;
  74. мир.имяФайлаМодуля = $(`#${idИмя}`).val();
  75. мир.уведомить("переименовали файл модуля");
  76. });
  77. }
  78. };
  79. // // // //
  80. УдалитьФайлМодуля = мир =>
  81. {
  82. var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort();
  83. var файл = файлы[мир.номерФайлаМодуля];
  84. delete мир.редактируемыйМодуль.структура[файл];
  85. delete мир.редактируемыйМодуль.содержимое[файл];
  86. };
  87. // // // //
  88. СпроситьПодтверждениеУдаленияФайлаМодуля = мир =>
  89. {
  90. var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort();
  91. var файл = файлы[мир.номерФайлаМодуля];
  92. $(`#${мир.макет.зав.файлыПодтверждениеУдаленияИмя}`).html(файл);
  93. UIkit.modal($(`#${мир.макет.зав.файлыПодтверждениеУдаления}`)).show();
  94. };
  95. // // // //
  96. СоздатьДиалогПодтвержденияУдаленияФайлаМодуля = мир =>
  97. {
  98. $(`#${мир.макет.константы.содержимое}`).append(`
  99. <div id="${мир.макет.зав.файлыПодтверждениеУдаления}" uk-modal>
  100. <div class="uk-modal-dialog">
  101. <div class="uk-modal-header">
  102. <h2 class="uk-modal-title">Удалить файл? | Delete the file? </h2>
  103. </div>
  104. <div class="uk-modal-body">
  105. <p id="${мир.макет.зав.файлыПодтверждениеУдаленияИмя}"></p>
  106. </div>
  107. <div class="uk-modal-footer uk-text-right">
  108. <button class="uk-button uk-button-default uk-modal-close" type="button">Отмена | Cancel</button>
  109. <button id="${мир.макет.зав.файлыПодтверждениеУдаленияУдалить}" class="uk-button uk-button-danger uk-modal-close" type="button">Удалить | Delete</button>
  110. </div>
  111. </div>
  112. </div>
  113. `);
  114. $(`#${мир.макет.зав.файлыПодтверждениеУдаленияУдалить}`).click(function() {
  115. мир.уведомить("подтвердили удаление файла модуля");
  116. });
  117. };
  118. // // // //
  119. ОтслеживатьУдалениеФайлаМодуля = мир =>
  120. {
  121. var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort();
  122. for (var номер in файлы)
  123. {
  124. var idУдалить = мир.макет.зав.файлыСписокУдалить.replace("%номер%", номер);
  125. const номерФайла = номер;
  126. $(`#${idУдалить}`).click(function() {
  127. мир.номерФайлаМодуля = номерФайла;
  128. мир.уведомить("кнопка удаления файла модуля");
  129. });
  130. }
  131. };
  132. // // // //
  133. ОчиститьИзменениеФайловМодуля = мир =>
  134. {
  135. $(`#${мир.макет.зав.файлыИзменение}`).attr("hidden", true);
  136. };
  137. // // // //
  138. ОтобразитьИзменениеФайловМодуля = мир =>
  139. {
  140. $(`#${мир.макет.зав.файлыИзменение}`).removeAttr("hidden");
  141. };
  142. // // // //
  143. ДобавитьФайлМодуля = мир =>
  144. {
  145. мир.редактируемыйМодуль.структура[мир.имяФайлаМодуля] = {};
  146. мир.редактируемыйМодуль.содержимое[мир.имяФайлаМодуля] = "";
  147. };
  148. // // // //
  149. СообщитьОНаличииДубляФайла = мир =>
  150. {
  151. var сообщение = "Такое имя файла уже существует | Such file name is already present";
  152. UIkit.modal.alert(сообщение);
  153. console.error(сообщение);
  154. };
  155. // // // //
  156. ПроверитьОтсутствиеДубляФайла = мир =>
  157. {
  158. for (var файл in мир.редактируемыйМодуль.структура)
  159. {
  160. if (файл == мир.имяФайлаМодуля)
  161. {
  162. мир.уведомить("дубль файла присутствует");
  163. return;
  164. }
  165. мир.уведомить("дубль файла отсутствует");
  166. }
  167. };
  168. // // // //
  169. ОтслеживатьДобавлениеФайлаМодуля = мир =>
  170. {
  171. $(`#${мир.макет.зав.добавитьФайлКнопка}`).click(function() {
  172. мир.имяФайлаМодуля = $(`#${мир.макет.зав.добавитьФайлИмя}`).val();
  173. мир.уведомить("кнопка добавления файла модуля");
  174. });
  175. };
  176. // // // //
  177. ОтобразитьСписокФайловМодуля = мир =>
  178. {
  179. var список = "";
  180. var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort();
  181. for (var номер in файлы)
  182. {
  183. // Файл.
  184. var файл = файлы[номер];
  185. // Флаги.
  186. var строкаФлагов = "";
  187. var флаги = мир.редактируемыйМодуль.структура[файл];
  188. for (var флаг in флаги)
  189. {
  190. if (флаг == "исполнить")
  191. {
  192. строкаФлагов += "x";
  193. }
  194. else if (флаг == "двоичный")
  195. {
  196. строкаФлагов += "2";
  197. }
  198. }
  199. // id.
  200. var idИмя = мир.макет.зав.файлыСписокИмя.replace("%номер%", номер);
  201. var idФлаги = мир.макет.зав.файлыСписокФлаги.replace("%номер%", номер);
  202. var idУдалить = мир.макет.зав.файлыСписокУдалить.replace("%номер%", номер);
  203. var имяФайла = файл;
  204. if (мир.переименования[файл]) {
  205. имяФайла = мир.переименования[файл];
  206. }
  207. список += `
  208. <tr>
  209. <td>
  210. <input id="${idИмя}" value="${имяФайла}" class="uk-input uk-margin-small" type="text" placeholder="Имя | Name">
  211. </td>
  212. <td>
  213. <input id="${idФлаги}" value="${строкаФлагов}" class="uk-input uk-margin-small" type="text" placeholder="Флаги | Flags">
  214. </td>
  215. <td>
  216. <button id="${idУдалить}" class="uk-button uk-button-danger">
  217. <span uk-icon="minus"></span>
  218. </button>
  219. </td>
  220. </tr>
  221. `;
  222. }
  223. $(`#${мир.макет.зав.файлыСписок}`).html(список);
  224. };
  225. // // // //
  226. ОтобразитьСтруктуруПунктаФайловЗава = мир =>
  227. {
  228. $(`#${мир.макет.константы.содержимое}`).html(`
  229. <div class="зав-отступ">
  230. <div uk-grid style="margin-left: 0px">
  231. <input id="${мир.макет.зав.добавитьФайлИмя}" class="uk-input uk-width-expand" type="text" placeholder="Имя файла | File name">
  232. <button id="${мир.макет.зав.добавитьФайлКнопка}" class="uk-button uk-button-primary uk-width-auto uk-margin-left">Добавить файл | Add a file</button>
  233. </div>
  234. <hr class="uk-divider-icon">
  235. <table class="uk-table uk-table-hover uk-table-divider">
  236. <thead>
  237. <tr>
  238. <th>Файл | File</th>
  239. <th>Флаги | Flags</th>
  240. <th>Действия | Actions</th>
  241. </tr>
  242. </thead>
  243. <tbody id="${мир.макет.зав.файлыСписок}">
  244. </tbody>
  245. </table>
  246. </div>
  247. `);
  248. };
  249. // // // //
  250. ОтобразитьВыборПунктаФайловЗава = мир =>
  251. {
  252. $(`#${мир.макет.зав.файлы}`).addClass("uk-active");
  253. };