Редактирование структуры модулей ГитЖС | Editing of GitJS modules' structure
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

346 lignes
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. };