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

445 lignes
16KB

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