Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 46.14 KB | None | 0 0
  1. const {
  2. quadrosDB
  3. } = require(`../Database/index.js`), Util = require('../Util/index.js'), pug = require('pug');
  4.  
  5. let append = $(pug.renderFile(`${pathviews}/Modules/Board.pug`));
  6.  
  7. setTimeout(() => {
  8. initQuadros();
  9. }, 10);
  10.  
  11. function initQuadros() {
  12. $('.quadros-list-container').remove();
  13. quadrosDB.get('quadros').value().forEach(quadro => {
  14. $('#quadros-warpper-list > .quadros-add').before(addQuadro(quadro));
  15. });
  16. $('.quadros-list-container').first().trigger("click");
  17.  
  18. // Quadros
  19. $('.js-quadros-add').click((event) => {
  20. if ($('.js-quadros-add').hasClass("is-idle")) {
  21. $('.js-quadros-add').removeClass("is-idle");
  22. $(".js-quadros-name-input").focus();
  23. $(".js-quadros-name-input").trigger("click");
  24. }
  25. });
  26.  
  27. $('.quadros-input-container > div').click((event) => {
  28. let t = $('.js-quadros-name-input').val();
  29.  
  30. if (t == "") {
  31.  
  32. } else {
  33. let q = {
  34. name: t,
  35. id: Util.createID(10),
  36. lists: []
  37. };
  38.  
  39. $('#quadros-warpper-list > .quadros-add').before(addQuadro(q));
  40. quadrosDB.get('quadros').push(q).write();
  41. $('.js-quadros-name-input').val('');
  42. setTimeout(() => {
  43. reloadQuadro();
  44. }, 50);
  45. }
  46. })
  47.  
  48. $('.js-quadros-name-input').focusout(() => {
  49. setTimeout(() => {
  50. if (!$('.js-quadros-add').hasClass("is-idle")) {
  51. $('.js-quadros-add').addClass("is-idle");
  52. }
  53. }, 200);
  54. });
  55.  
  56. reloadQuadro();
  57. }
  58.  
  59. function reloadQuadro() {
  60. quadrosDB.get('quadros').value().forEach(quadro => {
  61. if (quadro.id == $('.quadros-list-container.active').attr('quadro-id')) {
  62. $('#scrollbar-ui-moving').children().remove();
  63. $('#scrollbar-ui-moving').append(`
  64. <div class="warpper-list" id="warpper-list-add">
  65. <div class="list-add is-idle">
  66. <span>Adicionar outra lista</span>
  67. <div class="list-add-input-container">
  68. <textarea class="js-list-add-name-input" spellcheck="false" dir="auto" maxlength="512" style="overflow: hidden; word-wrap: break-word; height: 25px;"></textarea>
  69. <div>
  70. <span>Salvar</span>
  71. </div>
  72. </div>
  73. </div>
  74. </div>
  75. `).find('.list-add').click(() => {
  76. if ($('.list-add').hasClass("is-idle")) {
  77. $('.list-add').removeClass("is-idle");
  78. $(".js-list-add-name-input").focus();
  79. $(".js-list-add-name-input").trigger("click");
  80. }
  81. }).parents('#warpper-list-add').find('.list-add-input-container > div').click((event) => {
  82. let t = $('.js-list-add-name-input').val(),
  83. list = quadrosDB.get('quadros').find({
  84. id: $('.quadros-list-container.active').attr('quadro-id')
  85. }).get('lists');
  86.  
  87. if (t == "") {
  88.  
  89. } else {
  90. let l = {
  91. name: t,
  92. id: Util.createID(10),
  93. cards: []
  94. };
  95.  
  96. $('#scrollbar-ui-moving > #warpper-list-add').before(addList(l));
  97. $('.js-list-add-name-input').val('');
  98. list.push(l).write();
  99. }
  100. }).parents('#warpper-list-add').find('.js-list-add-name-input').focusout(() => {
  101. setTimeout(() => {
  102. if (!$('.list-add').hasClass("is-idle")) {
  103. $('.list-add').addClass("is-idle");
  104. }
  105. }, 200);
  106. });
  107.  
  108. quadro.lists.forEach(list => {
  109. let list_append = addList(list);
  110.  
  111. list.cards.forEach(card => {
  112. list_append.find('.list-content').append(addCard(card));
  113. });
  114.  
  115. $('#scrollbar-ui-moving > #warpper-list-add').before(list_append);
  116. });
  117. }
  118. });
  119. }
  120.  
  121. function addQuadro(quadro) {
  122. return $(`
  123. <div class="quadros-list-container is-idle" quadro-id="${quadro.id}">
  124. <span class="quadro-name">${quadro.name}</span>
  125. <textarea class="quadros-name-input js-quadro-name-input" spellcheck="false" dir="auto" maxlength="512" style="overflow: hidden; word-wrap: break-word; height: 25px;">${quadro.name}</textarea>
  126. </div>
  127. `).click((event) => {
  128. if ($(event.currentTarget).hasClass('active')) return;
  129. $('.quadros-list-container').removeClass('active');
  130. $(event.currentTarget).addClass('active');
  131. setTimeout(() => {
  132. reloadQuadro();
  133. }, 50);
  134. }).mouseup(function (event) {
  135. switch (event.which) {
  136. case 3:
  137. setTimeout(() => {
  138. if ($('#right-mouse-options').length == 0) {
  139. $('.doom').append(`<div id="right-mouse-options" style="left: auto; right: auto; bottom: auto; top: auto; pointer-events: auto;"></div>`);
  140. } else if ($('#right-mouse-options').length > 0) {
  141. if ($('#right-mouse-options').children().length > 0) {
  142. $('#right-mouse-options').children().remove();
  143. }
  144. }
  145.  
  146. let item_playlist = $(this);
  147. let lite = [{
  148. id: "remove-quadro-boards",
  149. text: "Deletar quadro",
  150. generator: function () {
  151. quadrosDB.get('quadros').remove({
  152. id: $(event.currentTarget).attr('quadro-id')
  153. }).write();
  154.  
  155. $('#scrollbar-ui-moving').children().remove();
  156. if ($(event.currentTarget).next('.quadros-list-container').length != 0) {
  157. $(event.currentTarget).next('.quadros-list-container').trigger("click");
  158. } else {
  159. $(event.currentTarget).prev('.quadros-list-container').trigger("click");
  160. }
  161. $(event.currentTarget).remove();
  162. $('#right-mouse-options').remove();
  163. }
  164. }, {
  165. id: "rename-quadro-boards",
  166. text: "Renomear quadro",
  167. generator: function () {
  168. if ($(event.currentTarget).hasClass("is-idle")) {
  169. $(event.currentTarget).removeClass("is-idle");
  170. $(event.currentTarget).find(".js-quadro-name-input").focus();
  171. $(event.currentTarget).find(".js-quadro-name-input").trigger("click");
  172. }
  173.  
  174. $('#right-mouse-options').remove();
  175. }
  176. }];
  177. lite.forEach((value, index, array) => {
  178. $('#right-mouse-options').append(`<div class="options-item" id="${value.id}"><span>${value.text}</span></div>`);
  179. $(`#${value.id}`).click(value.generator);
  180. });
  181.  
  182. if ($('#right-mouse-options').children().length > 0) {
  183. if ((event.clientX + $('#right-mouse-options').outerWidth(true)) > $('#document-body').width()) {
  184. $('#right-mouse-options').css('left', `auto`);
  185. $('#right-mouse-options').css('right', `0px`);
  186. } else {
  187. $('#right-mouse-options').css('left', `${event.clientX}px`);
  188. $('#right-mouse-options').css('right', `auto`);
  189. }
  190. if ((event.clientY + $('#right-mouse-options').outerHeight(true)) > $('#document-body').height()) {
  191. $('#right-mouse-options').css('bottom', `0px`);
  192. $('#right-mouse-options').css('top', `auto`);
  193. } else {
  194. $('#right-mouse-options').css('bottom', `auto`);
  195. $('#right-mouse-options').css('top', `${event.clientY}px`);
  196. }
  197. } else if ($('#right-mouse-options').children().length <= 0) {
  198. $('#right-mouse-options').remove();
  199. }
  200. }, 100);
  201. break;
  202. default:
  203. console.log('You have a strange Mouse!');
  204. break;
  205. }
  206. }).find('.js-quadro-name-input').keydown((event) => {
  207. if (event.keyCode == 13) {
  208. if (!$(event.currentTarget).parent().hasClass("is-idle")) {
  209. $(event.currentTarget).parent().addClass("is-idle");
  210. }
  211. var quadro = quadrosDB.get('quadros').find({
  212. id: $(event.currentTarget).parent().attr('quadro-id')
  213. });
  214.  
  215. quadro.set('name', $(event.currentTarget).val()).write();
  216. $(event.currentTarget).parent().children('.quadro-name').text($(event.currentTarget).val());
  217. }
  218. }).focusout(event => {
  219. setTimeout(() => {
  220. if (!$(event.currentTarget).parent().hasClass("is-idle")) {
  221. $(event.currentTarget).parent().addClass("is-idle");
  222. }
  223. }, 200);
  224. }).parents('.quadros-list-container').trigger("click");
  225. }
  226.  
  227. function addList(list) {
  228. return $(`
  229. <div class="warpper-list" list-id="${list.id}">
  230. <div style="height: 100%; display: flex; position: absolute; border-right: 1px solid #ffc430; border-bottom: 1px solid #ffc430;">
  231. <div class="list-container">
  232. <div class="list-header is-idle">
  233. <div class="list-header-target editing-target"></div>
  234. <span class="list-header-name editing-target">${list.name}</span>
  235. <textarea class="list-header-name-input js-list-name-input" spellcheck="false" dir="auto" maxlength="512" style="overflow: hidden; word-wrap: break-word; height: 25px;">${list.name}</textarea>
  236. </div>
  237. <div class="list-content"></div>
  238. <div class="card-options animation-default">
  239. <div class="card-options-checklist is-idle animation-default" style="width: 0px; opacity: 0;">
  240. <span>Checklist</span>
  241. <div class="card-options-checklist-input-container">
  242. <textarea class="js-card-options-checklist-name-input" spellcheck="false" dir="auto" maxlength="512" style="overflow: hidden; word-wrap: break-word; height: 25px;"></textarea>
  243. <div>
  244. <span>Salvar</span>
  245. </div>
  246. </div>
  247. </div>
  248. </div>
  249. <a class="list-add-card is-idle">
  250. <span class="list-add-card-text">Adicionar outro cartão</span>
  251. <div class="list-add-card-input-container">
  252. <textarea class="js-list-add-card-name-input" spellcheck="false" dir="auto" maxlength="512" style="overflow: hidden; word-wrap: break-word; height: 25px;"></textarea>
  253. <div>
  254. <span>Salvar</span>
  255. </div>
  256. </div>
  257. </a>
  258. </div>
  259. </div>
  260. </div>
  261. `).find('.list-header-target').mouseup(event => {
  262. switch (event.which) {
  263. case 3:
  264. setTimeout(() => {
  265. if ($('#right-mouse-options').length == 0) {
  266. $('.doom').append(`<div id="right-mouse-options" style="left: auto; right: auto; bottom: auto; top: auto; pointer-events: auto;"></div>`);
  267. } else if ($('#right-mouse-options').length > 0) {
  268. if ($('#right-mouse-options').children().length > 0) {
  269. $('#right-mouse-options').children().remove();
  270. }
  271. }
  272.  
  273. let item_playlist = $(this);
  274. let lite = [{
  275. id: "remove-list-boards",
  276. text: "Deletar lista",
  277. generator: function () {
  278. quadrosDB.get('quadros').find({
  279. id: $('.quadros-list-container.active').attr('quadro-id')
  280. }).get('lists').remove({
  281. id: $(event.currentTarget).parents('.warpper-list').attr('list-id')
  282. }).write();
  283.  
  284. $(event.currentTarget).parents('.warpper-list').remove();
  285. $('#right-mouse-options').remove();
  286. }
  287. }, {
  288. id: "rename-list-boards",
  289. text: "Renomear lista",
  290. generator: function () {
  291. if ($(event.currentTarget).parents('.list-header').hasClass("is-idle")) {
  292. $(event.currentTarget).parents('.list-header').removeClass("is-idle");
  293. $(event.currentTarget).parent().children().filter('.js-list-name-input').focus();
  294. $(event.currentTarget).parent().children().filter('.js-list-name-input').trigger("click");
  295. }
  296.  
  297. $('#right-mouse-options').remove();
  298. }
  299. }];
  300. lite.forEach((value, index, array) => {
  301. $('#right-mouse-options').append(`<div class="options-item" id="${value.id}"><span>${value.text}</span></div>`);
  302. $(`#${value.id}`).click(value.generator);
  303. });
  304.  
  305. if ($('#right-mouse-options').children().length > 0) {
  306. if ((event.clientX + $('#right-mouse-options').outerWidth(true)) > $('#document-body').width()) {
  307. $('#right-mouse-options').css('left', `auto`);
  308. $('#right-mouse-options').css('right', `0px`);
  309. } else {
  310. $('#right-mouse-options').css('left', `${event.clientX}px`);
  311. $('#right-mouse-options').css('right', `auto`);
  312. }
  313. if ((event.clientY + $('#right-mouse-options').outerHeight(true)) > $('#document-body').height()) {
  314. $('#right-mouse-options').css('bottom', `0px`);
  315. $('#right-mouse-options').css('top', `auto`);
  316. } else {
  317. $('#right-mouse-options').css('bottom', `auto`);
  318. $('#right-mouse-options').css('top', `${event.clientY}px`);
  319. }
  320. } else if ($('#right-mouse-options').children().length <= 0) {
  321. $('#right-mouse-options').remove();
  322. }
  323. }, 100);
  324. break;
  325. default:
  326. console.log('You have a strange Mouse!');
  327. break;
  328. }
  329. }).mousedown(event => {
  330.  
  331. }).mousemove(event => {
  332.  
  333. }).parents('.warpper-list').find('.js-list-name-input').keydown((event) => {
  334. if (event.keyCode == 13) {
  335. if (!$(event.currentTarget).parents().filter('.list-header').hasClass("is-idle")) {
  336. $(event.currentTarget).parents().filter('.list-header').addClass("is-idle");
  337. }
  338. var list = quadrosDB.get('quadros').find({
  339. id: $('.quadros-list-container.active').attr('quadro-id')
  340. }).get('lists').find({
  341. id: $(event.currentTarget).parents().filter('.warpper-list').attr('list-id')
  342. });
  343.  
  344. list.set('name', $(event.currentTarget).val()).write();
  345. $(event.currentTarget).parents().children('.list-header-name').text($(event.currentTarget).val());
  346. }
  347. }).parents('.warpper-list').find('.js-list-name-input').focusout(event => {
  348. setTimeout(() => {
  349. if (!$(event.currentTarget).parents().filter('.list-header').hasClass("is-idle")) {
  350. $(event.currentTarget).parents().filter('.list-header').addClass("is-idle");
  351. }
  352. }, 200);
  353. }).parents('.warpper-list').find('.list-add-card').click(() => {
  354. if ($(event.currentTarget).hasClass("is-idle")) {
  355. $(event.currentTarget).removeClass("is-idle");
  356. $(event.currentTarget).find(".js-list-add-card-name-input").focus();
  357. $(event.currentTarget).find(".js-list-add-card-name-input").trigger("click");
  358. }
  359. }).parents('.warpper-list').find('.list-add-card-input-container > div').click(event => {
  360. let t = $(event.currentTarget).parents('.warpper-list').find('.js-list-add-card-name-input').val(),
  361. card = quadrosDB.get('quadros').find({
  362. id: $('.quadros-list-container.active').attr('quadro-id')
  363. }).get('lists').find({
  364. id: $(event.currentTarget).parents('.warpper-list').attr('list-id')
  365. }).get('cards')
  366.  
  367. if (t == "") {
  368.  
  369. } else {
  370. let c = {
  371. name: t,
  372. id: Util.createID(10),
  373. descripition: "",
  374. checklist: []
  375. };
  376.  
  377. $(event.currentTarget).parents('.warpper-list').find('.list-content').append(addCard(c));
  378. $(event.currentTarget).parents('.warpper-list').find('.js-list-add-card-name-input').val('');
  379. card.push(c).write();
  380. }
  381. }).parents('.warpper-list').find('.js-list-add-card-name-input').focusout(event => {
  382. setTimeout(() => {
  383. if (!$(event.currentTarget).parents('.list-add-card').hasClass("is-idle")) {
  384. $(event.currentTarget).parents('.list-add-card').addClass("is-idle");
  385. }
  386. }, 200);
  387. }).parents('.warpper-list').find('.card-options > .card-options-checklist').click((event) => {
  388. if ($(event.currentTarget).hasClass("is-idle")) {
  389. $(event.currentTarget).removeClass("is-idle");
  390. $(event.currentTarget).find(".js-card-options-checklist-name-input").focus();
  391. $(event.currentTarget).find(".js-card-options-checklist-name-input").trigger("click");
  392. let currentWidth = $(event.currentTarget).width(),
  393. autoWidth = $(event.currentTarget).css('width', 'auto').width(),
  394. currentHeight = $(event.currentTarget).height(),
  395. autoHeight = $(event.currentTarget).css('height', 'auto').height();
  396.  
  397. $(event.currentTarget).css('width', currentWidth).css('width', autoWidth).css('height', currentHeight).css('height', autoHeight);
  398. }
  399. }).find('.card-options-checklist-input-container > div').click(event => {
  400. let current = $(event.currentTarget),
  401. parent = current.parents('.card-options-checklist'),
  402. list_container = current.parents('.list-container'),
  403. t = current.parents('.warpper-list').find('.js-card-options-checklist-name-input').val(),
  404. checklist = quadrosDB.get('quadros').find({
  405. id: $('.quadros-list-container.active').attr('quadro-id')
  406. }).get('lists').find({
  407. id: current.parents('.warpper-list').attr('list-id')
  408. }).get('cards').find({
  409. id: current.parents('.warpper-list').find('.list-card.active').attr('card-id')
  410. }).get('checklist');
  411.  
  412. if (t == "") {
  413.  
  414. } else {
  415. let c = {
  416. name: t,
  417. id: Util.createID(10),
  418. itens: []
  419. };
  420.  
  421. setTimeout(() => {
  422. for (let i = list_container.children('.card-options').children().length - 1; i >= 0; i--) {
  423. const card_options = $(list_container.children('.card-options').children()[i]);
  424. setTimeout(() => {
  425. card_options.css('width', '0px');
  426. card_options.css('opacity', '0');
  427. }, 1000 * (i / 4));
  428. }
  429. }, 400);
  430.  
  431. current.parents('.warpper-list').find('.list-card.active').find('.list-card-checklist').append(addChecklist(c));
  432. current.parents('.warpper-list').find('.card-options').find('.js-card-options-checklist-name-input').val('');
  433. checklist.push(c).write();
  434. }
  435. }).parents('.card-options-checklist-input-container').find('.js-card-options-checklist-name-input').focusout(event => {
  436. setTimeout(() => {
  437. if (!$(event.currentTarget).parents('.card-options-checklist').hasClass("is-idle")) {
  438. $(event.currentTarget).parents('.card-options-checklist').addClass("is-idle");
  439. let currentWidth = $(event.currentTarget).parents('.card-options-checklist').width(),
  440. autoWidth = $(event.currentTarget).parents('.card-options-checklist').css('width', 'auto').width(),
  441. currentHeight = $(event.currentTarget).parents('.card-options-checklist').height(),
  442. autoHeight = $(event.currentTarget).parents('.card-options-checklist').css('height', 'auto').height();
  443.  
  444. $(event.currentTarget).parents('.card-options-checklist').css('width', currentWidth).css('width', autoWidth).css('height', currentHeight).css('height', autoHeight);
  445. }
  446. }, 200);
  447. }).parents('.warpper-list');
  448. }
  449.  
  450. function addCard(card) {
  451. return $(`
  452. <div class="list-card" card-id="${card.id}">
  453. <div class="list-header-target js-editing-target"></div>
  454. <div style="display: flex;">
  455. <div class="list-card-details">
  456. <div class="list-card-tag"></div>
  457. <span class="list-card-title">${card.name}</span>
  458. </div>
  459. <div class="card-header-options">
  460. <div class="spinner-ellipsis">
  461. <span class="spinner-item"></span>
  462. <span class="spinner-item"></span>
  463. <span class="spinner-item"></span>
  464. </div>
  465. </div>
  466. </div>
  467. <div class="card-content animation-default"></div>
  468. </div>
  469. `).find('.list-card-details').mouseup((event) => {
  470. switch (event.which) {
  471. case 1:
  472. let current = $(event.currentTarget),
  473. parent = current.parents('.list-card'),
  474. list_container = current.parents('.list-container'),
  475. scrollbar = list_container.parents('#scrollbar-ui-moving'),
  476. if_check = false;
  477.  
  478. for (let i = 0; i < scrollbar.length; i++) {
  479. for (let i = scrollbar.find('.card-options').children().length - 1; i >= 0; i--) {
  480. const card_options = $(scrollbar.find('.card-options').children()[i]);
  481. setTimeout(() => {
  482. card_options.css('width', '0px');
  483. card_options.css('opacity', '0');
  484. }, 1000 * (i / 4));
  485. }
  486. }
  487. if (parent.hasClass('active')) {
  488. parent.children('.card-content').children().remove();
  489. if_check = true;
  490. }
  491. scrollbar.find('.card-header-options').removeClass('active');
  492. $('.list-card.active').removeClass('active');
  493. setTimeout(() => {
  494. $('.list-card').children('.card-content').children().remove();
  495. }, 400);
  496. if (if_check) return;
  497.  
  498. parent.children('.card-content').append(`
  499. <div class="typing-3ghGH5" style="margin: 10px 0;">
  500. <span class="ellipsis-5J65IO">
  501. <span class="spinner-inner spinner-pulsing-ellipsis">
  502. <span class="spinner-item"></span>
  503. <span class="spinner-item"></span>
  504. <span class="spinner-item"></span>
  505. <span class="spinner-item"></span>
  506. <span class="spinner-item"></span>
  507. <span class="spinner-item"></span>
  508. </span>
  509. </span>
  510. </div>
  511. `);
  512. parent.addClass('active');
  513. list_container.children('.card-options').children().addClass('disable');
  514. setTimeout(() => {
  515. let card = quadrosDB.get('quadros').find({
  516. id: $('.quadros-list-container.active').attr('quadro-id')
  517. }).get('lists').find({
  518. id: current.parents('.warpper-list').attr('list-id')
  519. }).get('cards').find({
  520. id: parent.attr('card-id')
  521. }).value();
  522.  
  523. parent.children('.card-content').children().remove();
  524. parent.children('.card-content').append(`
  525. <div class="list-card-descripition is-idle">
  526. <span class="list-card-descripition-text ${card.descripition == '' ? 'no-descripition' : ''}" title="${card.descripition}">${card.descripition == '' ? 'Sem descrição' : card.descripition}</span>
  527. <textarea class="list-card-descripition-input js-card-descripition-input" spellcheck="false" dir="auto" maxlength="512" style="overflow: hidden; word-wrap: break-word; height: 16px;">${card.descripition}</textarea>
  528. </div>
  529. <div class="list-card-checklist"></div>
  530. `).find('.list-card-descripition').click((event) => {
  531. if ($(event.currentTarget).hasClass("is-idle")) {
  532. $(event.currentTarget).removeClass("is-idle");
  533. $(event.currentTarget).find(".js-card-descripition-input").focus();
  534. $(event.currentTarget).find(".js-card-descripition-input").trigger("click");
  535. }
  536. }).find('.js-card-descripition-input').keydown((event) => {
  537. if (event.keyCode == 13) {
  538. if (!$(event.currentTarget).parent().hasClass("is-idle")) {
  539. $(event.currentTarget).parent().addClass("is-idle");
  540. }
  541. let card = quadrosDB.get('quadros').find({
  542. id: $('.quadros-list-container.active').attr('quadro-id')
  543. }).get('lists').find({
  544. id: current.parents('.warpper-list').attr('list-id')
  545. }).get('cards').find({
  546. id: parent.attr('card-id')
  547. });
  548.  
  549. card.set('descripition', $(event.currentTarget).val()).write();
  550. if ($(event.currentTarget).val() == "") {
  551. $(event.currentTarget).parent().children('.list-card-descripition-text').text("Sem descrição");
  552. $(event.currentTarget).parent().children('.list-card-descripition-text').addClass('no-descripition');
  553. $(event.currentTarget).parent().children('.list-card-descripition-text').attr('title', '');
  554. } else {
  555. $(event.currentTarget).parent().children('.list-card-descripition-text').text($(event.currentTarget).val());
  556. $(event.currentTarget).parent().children('.list-card-descripition-text').removeClass('no-descripition');
  557. $(event.currentTarget).parent().children('.list-card-descripition-text').attr('title', $(event.currentTarget).val());
  558. }
  559. }
  560. }).focusout(event => {
  561. if (!$(event.currentTarget).parent().hasClass("is-idle")) {
  562. $(event.currentTarget).parent().addClass("is-idle");
  563. }
  564. });
  565.  
  566. for (let i = 0; i < card.checklist.length; i++) {
  567. const checklist = card.checklist[i];
  568. let check = addChecklist(checklist),
  569. nnn = {
  570. f: 0,
  571. v: 0
  572. };
  573.  
  574. for (let i = 0; i < checklist.itens.length; i++) {
  575. const item = checklist.itens[i];
  576. if (item.check) {
  577. nnn.v++;
  578. } else {
  579. nnn.f++;
  580. }
  581. check.find('.checklist-itens-container').append(addCheck(item))
  582. }
  583. check.find('.checklist-progress').css('width', `${(nnn.v / (nnn.v + nnn.f)) * 100}%`);
  584. parent.find('.list-card-checklist').append(check);
  585. }
  586.  
  587. list_container.children('.card-options').children().removeClass('disable');
  588. }, 400);
  589. break;
  590. case 3:
  591. setTimeout(() => {
  592. if ($('#right-mouse-options').length == 0) {
  593. $('.doom').append(`<div id="right-mouse-options" style="left: auto; right: auto; bottom: auto; top: auto; pointer-events: auto;"></div>`);
  594. } else if ($('#right-mouse-options').length > 0) {
  595. if ($('#right-mouse-options').children().length > 0) {
  596. $('#right-mouse-options').children().remove();
  597. }
  598. }
  599.  
  600. let item_playlist = $(this);
  601. let lite = [{
  602. id: "remove-card-boards",
  603. text: "Deletar cartão",
  604. generator: function () {
  605. let current = $(event.currentTarget),
  606. parent = current.parents('.list-card'),
  607. list_container = current.parents('.list-container');
  608.  
  609. quadrosDB.get('quadros').find({
  610. id: $('.quadros-list-container.active').attr('quadro-id')
  611. }).get('lists').find({
  612. id: current.parents('.warpper-list').attr('list-id')
  613. }).get('cards').remove({
  614. id: parent.attr('card-id')
  615. }).write();
  616.  
  617. parent.remove();
  618. if ($(event.currentTarget).parent().hasClass('active')) {
  619. for (let i = list_container.children('.card-options').children().length - 1; i >= 0; i--) {
  620. const card_options = $(list_container.children('.card-options').children()[i]);
  621. setTimeout(() => {
  622. card_options.css('width', '0px');
  623. card_options.css('opacity', '0');
  624. }, 1000 * (i / 4));
  625. }
  626. return;
  627. }
  628. setTimeout(() => {
  629. if ($('.list-card').length == 0) return;
  630. list_container.children('.card-options').css('left', `${($('.list-card.active').length != 0 ? $('.list-card.active') : $('.list-card').first()).parents('.list-container').offset().left + ($('.list-card.active').length != 0 ? $('.list-card.active') : $('.list-card').first()).parents('.list-container').width()}px`);
  631. list_container.children('.card-options').css('top', `${($('.list-card.active').length != 0 ? $('.list-card.active') : $('.list-card').first()).offset().top}px`);
  632. }, 400);
  633. $('#right-mouse-options').remove();
  634. }
  635. }];
  636. lite.forEach((value, index, array) => {
  637. $('#right-mouse-options').append(`<div class="options-item" id="${value.id}"><span>${value.text}</span></div>`);
  638. $(`#${value.id}`).click(value.generator);
  639. });
  640.  
  641. if ($('#right-mouse-options').children().length > 0) {
  642. if ((event.clientX + $('#right-mouse-options').outerWidth(true)) > $('#document-body').width()) {
  643. $('#right-mouse-options').css('left', `auto`);
  644. $('#right-mouse-options').css('right', `0px`);
  645. } else {
  646. $('#right-mouse-options').css('left', `${event.clientX}px`);
  647. $('#right-mouse-options').css('right', `auto`);
  648. }
  649. if ((event.clientY + $('#right-mouse-options').outerHeight(true)) > $('#document-body').height()) {
  650. $('#right-mouse-options').css('bottom', `0px`);
  651. $('#right-mouse-options').css('top', `auto`);
  652. } else {
  653. $('#right-mouse-options').css('bottom', `auto`);
  654. $('#right-mouse-options').css('top', `${event.clientY}px`);
  655. }
  656. } else if ($('#right-mouse-options').children().length <= 0) {
  657. $('#right-mouse-options').remove();
  658. }
  659. }, 100);
  660. break;
  661. default:
  662. console.log('You have a strange Mouse!');
  663. break;
  664. }
  665. }).parents('.list-card').find('.card-header-options').click((event) => {
  666. let current = $(event.currentTarget),
  667. parent = current.parents('.list-card'),
  668. list_container = parent.parents('.list-container');
  669.  
  670. if (current.hasClass('active')) {
  671. current.removeClass('active');
  672. for (let i = list_container.children('.card-options').children().length - 1; i >= 0; i--) {
  673. const card_options = $(list_container.children('.card-options').children()[i]);
  674. setTimeout(() => {
  675. card_options.css('width', '0px');
  676. card_options.css('opacity', '0');
  677. }, 1000 * (i / 4));
  678. }
  679. } else {
  680. current.addClass('active');
  681. list_container.children('.card-options').css('left', `${parent.parents('.list-container').offset().left + parent.parents('.list-container').width()}px`);
  682. list_container.children('.card-options').css('top', `${parent.offset().top}px`);
  683. for (let i = 0; i < list_container.children('.card-options').children().length; i++) {
  684. const card_options = $(list_container.children('.card-options').children()[i]);
  685. setTimeout(() => {
  686. let currentWidth = card_options.width(),
  687. autoWidth = card_options.css('width', 'auto').width(),
  688. currentHeight = card_options.height(),
  689. autoHeight = card_options.css('height', 'auto').height();
  690.  
  691. card_options.css('width', currentWidth).css('width', autoWidth).css('height', currentHeight).css('height', autoHeight);
  692. card_options.css('opacity', '1');
  693. }, 1000 * (i / 4));
  694. }
  695. }
  696. }).parents('.list-card');
  697. }
  698.  
  699. function addChecklist(checklist) {
  700. return $(`
  701. <div class="checklist-card" checklist-id="${checklist.id}">
  702. <div class="checklist-progressbar">
  703. <div class="checklist-progress animation-default" style="width: 0%;"></div>
  704. </div>
  705. <div class="checklist-top">
  706. <div class="checklist-name is-idle">
  707. <span class="checklist-name-text">${checklist.name}</span>
  708. <textarea class="checklist-name-input js-checklist-name-input" spellcheck="false" dir="auto" maxlength="512" style="overflow: hidden; word-wrap: break-word; height: 18px;">${checklist.name}</textarea>
  709. </div>
  710. <div class="js-checklist-delete-handle">Excluir</div>
  711. </div>
  712. <div class="checklist-itens-container"></div>
  713. <div class="checklist-add-check is-idle">
  714. <span>Adicionar item</span>
  715. <div class="checklist-add-check-input-container">
  716. <textarea class="js-checklist-add-check-name-input" spellcheck="false" dir="auto" maxlength="512" style="overflow: hidden; word-wrap: break-word; height: 25px;"></textarea>
  717. <div>
  718. <span>Salvar</span>
  719. </div>
  720. </div>
  721. </div>
  722. </div>
  723. `).find('.js-checklist-delete-handle').click((event) => {
  724. let current = $(event.currentTarget),
  725. parent = current.parents('.checklist-card'),
  726. checklist = quadrosDB.get('quadros').find({
  727. id: $('.quadros-list-container.active').attr('quadro-id')
  728. }).get('lists').find({
  729. id: current.parents('.warpper-list').attr('list-id')
  730. }).get('cards').find({
  731. id: current.parents('.warpper-list').find('.list-card.active').attr('card-id')
  732. }).get('checklist');
  733.  
  734. checklist.remove({
  735. id: parent.attr('checklist-id')
  736. }).write();
  737. parent.remove();
  738. }).parents('.checklist-card').find('.checklist-add-check').click((event) => {
  739. if ($(event.currentTarget).hasClass("is-idle")) {
  740. $(event.currentTarget).removeClass("is-idle");
  741. $(event.currentTarget).find(".js-checklist-add-check-name-input").focus();
  742. $(event.currentTarget).find(".js-checklist-add-check-name-input").trigger("click");
  743. }
  744. }).find('.js-checklist-add-check-name-input').focusout(event => {
  745. setTimeout(() => {
  746. if (!$(event.currentTarget).parents('.checklist-add-check').hasClass("is-idle")) {
  747. $(event.currentTarget).parents('.checklist-add-check').addClass("is-idle");
  748. }
  749. }, 200);
  750. }).parent().find('div').click(event => {
  751. let current = $(event.currentTarget),
  752. parent = current.parents('.checklist-card'),
  753. t = parent.find('.js-checklist-add-check-name-input').val(),
  754. checklist = quadrosDB.get('quadros').find({
  755. id: $('.quadros-list-container.active').attr('quadro-id')
  756. }).get('lists').find({
  757. id: current.parents('.warpper-list').attr('list-id')
  758. }).get('cards').find({
  759. id: current.parents('.warpper-list').find('.list-card.active').attr('card-id')
  760. }).get('checklist').find({
  761. id: parent.attr('checklist-id')
  762. }).get('itens');
  763.  
  764. if (t == "") {
  765.  
  766. } else {
  767. let c = {
  768. name: t,
  769. id: Util.createID(10),
  770. check: false
  771. };
  772.  
  773. parent.find('.checklist-itens-container').append(addCheck(c));
  774. parent.find('.js-checklist-add-check-name-input').val('');
  775. checklist.push(c).write();
  776. parent.find('.checklist-progress').css('width', `${(checklist.filter({ check: true }).value().length / checklist.value().length) * 100}%`);
  777. }
  778. }).parents('.checklist-card').find('.checklist-top').children('.checklist-name').click((event) => {
  779. if ($(event.currentTarget).hasClass("is-idle")) {
  780. $(event.currentTarget).removeClass("is-idle");
  781. $(event.currentTarget).find(".js-checklist-name-input").focus();
  782. $(event.currentTarget).find(".js-checklist-name-input").trigger("click");
  783. }
  784. }).parents('.checklist-card').find('.js-checklist-name-input').focusout(event => {
  785. if (!$(event.currentTarget).parents('.checklist-name').hasClass("is-idle")) {
  786. $(event.currentTarget).parents('.checklist-name').addClass("is-idle");
  787. }
  788. }).keydown((event) => {
  789. if (event.keyCode == 13) {
  790. let current = $(event.currentTarget),
  791. parent = current.parents('.checklist-card'),
  792. checklist = quadrosDB.get('quadros').find({
  793. id: $('.quadros-list-container.active').attr('quadro-id')
  794. }).get('lists').find({
  795. id: current.parents('.warpper-list').attr('list-id')
  796. }).get('cards').find({
  797. id: current.parents('.warpper-list').find('.list-card.active').attr('card-id')
  798. }).get('checklist').find({
  799. id: parent.attr('checklist-id')
  800. });
  801.  
  802. if (!current.parent().hasClass("is-idle")) {
  803. current.parent().addClass("is-idle");
  804. }
  805.  
  806. checklist.set('name', current.val()).write();
  807. current.parent().children('.checklist-name-text').text(current.val());
  808. }
  809. }).parents('.checklist-card');
  810. }
  811.  
  812. function addCheck(check) {
  813. return $(`
  814. <div>
  815. <div class="check-item ${check.check ? 'checked' : ''}" check-id="${check.id}">
  816. <div class="check-item-toggle">
  817. <input class="tci tci-check" id="cb-check-itens-toggle-${check.id}" ${check.check ? 'checked=""' : ''} type="checkbox">
  818. <label class="tci-btn" for="cb-check-itens-toggle-${check.id}"></label>
  819. </div>
  820. <div class="check-name is-idle">
  821. <span class="check-name-text">${check.name}</span>
  822. <textarea class="check-name-input js-check-name-input" spellcheck="false" dir="auto" maxlength="512" style="overflow: hidden; word-wrap: break-word; height: 18px;">${check.name}</textarea>
  823. </div>
  824. </div>
  825. <div class="check-item-close">
  826. <svg width="12" height="12" viewBox="0 0 12 12">
  827. <polygon fill="#2c2c2c" fill-rule="evenodd" points="11 1.576 6.583 6 11 10.424 10.424 11 6 6.583 1.576 11 1 10.424 5.417 6 1 1.576 1.576 1 6 5.417 10.424 1"></polygon>
  828. </svg>
  829. </div>
  830. </div>
  831. `).find(`label.tci-btn`).click((event) => {
  832. let current = $(event.target).parent().children(`input`),
  833. parent = current.parents('.checklist-card'),
  834. check = quadrosDB.get('quadros').find({
  835. id: $('.quadros-list-container.active').attr('quadro-id')
  836. }).get('lists').find({
  837. id: current.parents('.warpper-list').attr('list-id')
  838. }).get('cards').find({
  839. id: current.parents('.warpper-list').find('.list-card.active').attr('card-id')
  840. }).get('checklist').find({
  841. id: parent.attr('checklist-id')
  842. }).get('itens');
  843.  
  844. if (current[0].checked) {
  845. current.parents('.check-item').removeClass("checked");
  846. check.find({
  847. id: current.parents('.check-item').attr('check-id')
  848. }).assign({
  849. "check": false
  850. }).write();
  851. } else {
  852. current.parents('.check-item').addClass("checked");
  853. check.find({
  854. id: current.parents('.check-item').attr('check-id')
  855. }).assign({
  856. "check": true
  857. }).write();
  858. }
  859. parent.find('.checklist-progress').css('width', `${(check.filter({ check: true }).value().length / check.value().length) * 100}%`);
  860. }).parents('.check-item').find('.check-name').click((event) => {
  861. if ($(event.currentTarget).hasClass("is-idle")) {
  862. $(event.currentTarget).removeClass("is-idle");
  863. $(event.currentTarget).find(".js-check-name-input").focus();
  864. $(event.currentTarget).find(".js-check-name-input").trigger("click");
  865. }
  866. }).find('.js-check-name-input').keydown((event) => {
  867. if (event.keyCode == 13) {
  868. let current = $(event.currentTarget),
  869. parent = current.parents('.checklist-card'),
  870. checklist = quadrosDB.get('quadros').find({
  871. id: $('.quadros-list-container.active').attr('quadro-id')
  872. }).get('lists').find({
  873. id: current.parents('.warpper-list').attr('list-id')
  874. }).get('cards').find({
  875. id: current.parents('.warpper-list').find('.list-card.active').attr('card-id')
  876. }).get('checklist').find({
  877. id: parent.attr('checklist-id')
  878. }).get('itens').find({
  879. id: current.parents('.check-item').attr('check-id')
  880. });
  881.  
  882. if (!current.parent().hasClass("is-idle")) {
  883. current.parent().addClass("is-idle");
  884. }
  885.  
  886. checklist.set('name', current.val()).write();
  887. current.parent().children('.check-name-text').text(current.val());
  888. }
  889. }).focusout(event => {
  890. if (!$(event.currentTarget).parent().hasClass("is-idle")) {
  891. $(event.currentTarget).parent().addClass("is-idle");
  892. }
  893. }).parents('.check-item').parent().find('.check-item-close').click((event) => {
  894. let current = $(event.currentTarget),
  895. parent = current.parents('.checklist-card'),
  896. checklist = quadrosDB.get('quadros').find({
  897. id: $('.quadros-list-container.active').attr('quadro-id')
  898. }).get('lists').find({
  899. id: current.parents('.warpper-list').attr('list-id')
  900. }).get('cards').find({
  901. id: current.parents('.warpper-list').find('.list-card.active').attr('card-id')
  902. }).get('checklist').find({
  903. id: parent.attr('checklist-id')
  904. }).get('itens');
  905.  
  906. checklist.remove({
  907. id: current.parent().find('.check-item').attr('check-id')
  908. }).write();
  909. current.parent().find('.check-item').parent().remove();
  910. parent.find('.checklist-progress').css('width', `${isNaN((checklist.filter({ check: true }).value().length / checklist.value().length) * 100) ? 0 : (checklist.filter({ check: true }).value().length / checklist.value().length) * 100}%`);
  911. }).parent();
  912. }
  913.  
  914. console.log('[module] Boards OK!');
  915.  
  916. module.exports = append;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement