Facebook
From Torrid Horse, 5 Years ago, written in JavaScript.
Embed
Download Paste or View Raw
Hits: 211
  1. window.addEventListener('DOMContentLoaded',function(){
  2.         $('.chosen-select').chosen({width: '70%',
  3.                                                                 no_results_text: "Nie znaleziono"});
  4.         const source = 'index.php?format=raw&option=com_admin_sender&task=';
  5.         const stop  = document.getElementById('select');
  6.         function getData(e,upd){
  7.                 var id = e.target.id;
  8.                 if (upd == 'start') {
  9.                         id = id;
  10.                 }
  11.                 else if(upd =='update'){
  12.                         id = e.target.id.replace('_','');              
  13.                 }
  14.                 var select_id = '_'+id;
  15.                 var values = $("#"+select_id).chosen().val();
  16.                 if (id == 'select') {
  17.                         var date = document.getElementById('date').value;
  18.                 }
  19.                 if (upd == 'start') {
  20.                         add(values,date);
  21.                 }
  22.                 else{
  23.                         update(values,id);
  24.                 }
  25.         }
  26.         function connectString(attr){
  27.                 switch(attr){
  28.                         case 'GEN_RD':
  29.                                 return 'Generowanie raportów';
  30.                                 break;
  31.                         case 'SEND_RD':
  32.                                 return 'Wysyłka raportów';
  33.                                 break;
  34.                         case 'GEN_NAL':
  35.                                 return 'Generowanie należności';
  36.                                 break;
  37.                         case 'SEND_NAL_SMS':
  38.                                 return 'Wysyłka należności sms';
  39.                                 break;
  40.                         case 'SEND_NAL_MAIL':
  41.                                 return 'Wysyłka należności mailem';                         
  42.                 }
  43.         }
  44.         function getSelection(selected){
  45.                 var select_array = new Array();
  46.                 var pattern_array = ['GEN_RD','SEND_RD','GEN_NAL','SEND_NAL_SMS','SEND_NAL_MAIL'];
  47.                 var result_array = new Array();
  48.                 select_array = selected.split(',');
  49.                 for (var i = 0;i<=pattern_array.length-1;i++){
  50.                         result_array[i] = '<option value=''+pattern_array[i]+''';
  51.                         for (var j = 0;j<=select_array.length-1;j++){
  52.                                 if (pattern_array[i] == select_array[j]) {
  53.                                         result_array[i]+=' selected='selected'';
  54.                                 }      
  55.                         }
  56.                         result_array[i] += '>'+connectString(pattern_array[i]) + '</option>';
  57.                 }
  58.                 return result_array;
  59.         }
  60.         function createRows(res){
  61.                 selection = getSelection(res.blocked_actions);
  62.                 if (res.active == true) {
  63.                         var is_check ='checked='checked'';
  64.                 }
  65.                 else{
  66.                         var is_check = '';
  67.                 }
  68.                 let rows_array = ['<td><input class='row-date date' id='date_'+res.id+'' disbaled='disbaled' readonly='readonly' type='text' value=''+res.date+''></td>','<td><select data-placeholder='Wybierz co wstrzymać' multiple class='chosen-select' id='_'+res.id+''>'+selection.join()+'</select></td>','<td><button data-id=''+res.id+'' class='rem'>Usuń</button>'];
  69.                 return rows_array.join().replace(/,/g,'');
  70.         }      
  71.         function addRowsToArray(res){
  72.                 var result = JSON.parse(res);
  73.                 const target = document.getElementById('target');
  74.                 for (let i =0; i<=result.length-1;i++){
  75.                          var row = document.createElement('tr');
  76.                          row.id = result[i].id;
  77.                          row.innerHTML = createRows(result[i]);
  78.                          if (target.hasChildNodes()) {
  79.                                 target.insertBefore(row,target.childNodes[0]);
  80.                          }
  81.                          else{
  82.                                 target.appendChild(row);
  83.                          }
  84.                 }
  85.                 addEvents(null);
  86.         }
  87.         function removeRow(id){
  88.                 let tr = document.getElementById(parseInt(id));
  89.                 tr.parentNode.removeChild(tr);
  90.         }
  91.         function get(){
  92.                 var task ='get';
  93.                 ajax(source+task,'start');
  94.         }
  95.         function add(select_val,date_val){
  96.                 var task = 'add&date='+date_val+'&select='+select_val;
  97.                 ajax(source+task,'add');
  98.         }
  99.         function update(select_val,id){
  100.                 var task = 'update&select='+select_val+'&id='+id;
  101.                 ajax(source+task,'update');
  102.         }
  103.         function del(e){
  104.                 var id = 'del&id='+e.target.dataset.id;
  105.                 ajax(source+id,'del');
  106.         }
  107.         function ajax(what,param){
  108.                 var ajax =new XMLHttpRequest();
  109.                 ajax.onreadystatechange = function() {
  110.                 if (this.readyState == 4 && this.status == 200) {
  111.                         switch (param){
  112.                                 case 'start':
  113.                                         addRowsToArray(this.responseText);
  114.                                         break;
  115.                                 case 'add':
  116.                                         addRowsToArray(this.responseText);     
  117.                                         break;
  118.                                 case 'del':
  119.                                         removeRow(this.responseText);  
  120.                                         break;
  121.                         }
  122.                 }
  123.                 };
  124.                 ajax.open('GET', what, true);
  125.                 ajax.send();
  126.         }
  127.         function addEvents(stop){
  128.                 if(stop){
  129.                         stop.addEventListener('click', e => {
  130.                                 e.preventDefault();
  131.                                 getData(e,'start');
  132.                         });
  133.                 }else{
  134.                         var del_btn = document.getElementsByClassName('rem');
  135.                         $('.chosen-select').chosen({width: "100%",
  136.                                                                          no_results_text: "Nie znaleziono"});
  137.                         $('.chosen-select').on('change', e => getData(e,'update'));
  138.                         for (let i = 0;i<=del_btn.length-1;i++){
  139.                                 del_btn[i].addEventListener('click',e => del(e));
  140.                         }      
  141.                 }
  142.         }
  143.         addEvents(stop);
  144.         get();
  145. });    
  146.