SHARE
TWEET

Untitled

a guest Feb 23rd, 2019 57 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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;
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top