NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

itne1/tickets.js

Client-side část logiky

JavaScript

// Add button (and handler) to every part in list
function initParts(identifier, partsElement) {
  var partsElements = partsElement.getElementsByTagName('li');
  Array.prototype.forEach.call(partsElements, function(partElement) {
    var id = partElement.dataset.id;
    var button = document.createElement('button');
    button.innerText = 'smazat';
    button.addEventListener('click', function() {
      removePart(identifier, id);
    });
    partElement.appendChild(button);
  });
}

function loadParts(identifier) {
  var ticketElement = document.getElementById(identifier);
  var partsElement = ticketElement.getElementsByClassName('parts')[0];
  var ticket_id = ticketElement.dataset.id;
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState === 4) {
      if (this.status === 200) {
        partsElement.innerHTML = this.response;
        initParts(identifier, partsElement);
        console.log('Parts loaded.');
      } else {
        partsElement.className = 'error';
        console.log(this.response);
        alert(this.response);
      }
    }
  };
  xhttp.open('GET', './parts.php?ticket_id=' + ticket_id, true);
  xhttp.send();
}

function addPart(ticket_identifier) {
  var ticketElement = document.getElementById(ticket_identifier);
  var ticketId = ticketElement.dataset.id;
  var partElement = ticketElement.getElementsByTagName('form')[0];
  var partName = partElement.querySelector('[name=part_name]').value;
  var partPrice = partElement.querySelector('[name=part_price]').value;
  var data = 'action=add&ticket_id=' + ticketId + '&part_name=' + partName +
      '&part_price=' + partPrice;
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState === 4) {
      if (this.status === 200) {
        console.log(this.response);
        partElement.reset();
        loadParts(ticket_identifier);
      } else {
        console.log(this.response);
        alert(this.response);
      }
    }
  };
  xhttp.open(partElement.method, partElement.action, true);
  xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  xhttp.send(data);
}

function removePart(identifier, partId) {
  var data = 'action=remove&part_id=' + partId;
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState === 4) {
      if (this.status === 200) {
        console.log(this.response);
        loadParts(identifier);
      } else {
        console.log(this.response);
      }
      alert(this.response);
    }
  };
  xhttp.open('POST', 'parts.php', true);
  xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  xhttp.send(data);
}

function initializeTicket(identifier) {
  var ticketElement = document.getElementById(identifier);
  if (ticketElement) {
    var partElement = ticketElement.getElementsByTagName('form')[0];
    partElement.addEventListener('submit', function(event) {
      event.preventDefault();
      addPart(identifier);
    });
    loadParts(identifier);
  }
}

document.addEventListener('DOMContentLoaded', function() {
  initializeTicket('ticket');
});

Neformátovaný

Přidáno: 8.7.2017
Expirace: Neuvedeno

Avatar
Autor: Jakub Žák
Aktivity