mirror of https://github.com/itflow-org/itflow
95 lines
3.2 KiB
JavaScript
95 lines
3.2 KiB
JavaScript
/*
|
|
* LISTENERS
|
|
*/
|
|
|
|
// Modal loaded listener - populate client select
|
|
const changeClientModalLoad = document.getElementById('clientChangeTicketModalLoad');
|
|
changeClientModalLoad.addEventListener('click', function() {
|
|
populateChangeClientModal_Clients();
|
|
})
|
|
|
|
// Client selected listener - populate contact select
|
|
// We seem to have to use jQuery to listen for events, as the client input is a select2 component?
|
|
const clientSelectDropdown = document.getElementById("changeClientSelect");
|
|
$(clientSelectDropdown).on('select2:select', function (e) {
|
|
let client_id = $(this).find(':selected').val();
|
|
populateChangeClientModal_Contacts(client_id);
|
|
});
|
|
|
|
|
|
/*
|
|
* FUNCTIONS
|
|
*/
|
|
|
|
// Populate client list function
|
|
function populateChangeClientModal_Clients() {
|
|
|
|
// Get current client ID
|
|
let current_client_id = document.getElementById("client_id").value;
|
|
|
|
// Send a GET request to ajax.php as ajax.php?get_active_clients=true
|
|
jQuery.get(
|
|
"ajax.php",
|
|
{get_active_clients: 'true'},
|
|
function(data) {
|
|
|
|
// If we get a response from ajax.php, parse it as JSON
|
|
const response = JSON.parse(data);
|
|
|
|
// Access the data for clients (multiple)
|
|
const clients = response.clients;
|
|
|
|
// Client dropdown already defined in listeners as clientSelectDropdown
|
|
|
|
// Clear dropdown
|
|
let i, L = clientSelectDropdown.options.length - 1;
|
|
for (i = L; i >= 0; i--) {
|
|
clientSelectDropdown.remove(i);
|
|
}
|
|
clientSelectDropdown[clientSelectDropdown.length] = new Option('- Client -', '0');
|
|
|
|
// Populate dropdown
|
|
clients.forEach(client => {
|
|
if (parseInt(current_client_id) !== parseInt(client.client_id)) {
|
|
// Show clients returned (excluding the current client ID - we can't change a ticket client to itself)
|
|
clientSelectDropdown[clientSelectDropdown.length] = new Option(client.client_name, client.client_id);
|
|
}
|
|
});
|
|
|
|
}
|
|
);
|
|
}
|
|
|
|
// Populate client contact function (after a client is selected)
|
|
function populateChangeClientModal_Contacts(client_id) {
|
|
// Send a GET request to ajax.php as ajax.php?get_client_contacts=true&client_id=NUM
|
|
jQuery.get(
|
|
"ajax.php",
|
|
{get_client_contacts: 'true', client_id: client_id},
|
|
function(data) {
|
|
|
|
// If we get a response from ajax.php, parse it as JSON
|
|
const response = JSON.parse(data);
|
|
|
|
// Access the data for contacts (multiple)
|
|
const contacts = response.contacts;
|
|
|
|
// Contacts dropdown
|
|
const contactSelectDropdown = document.getElementById("changeContactSelect");
|
|
|
|
// Clear Category dropdown
|
|
let i, L = contactSelectDropdown.options.length - 1;
|
|
for (i = L; i >= 0; i--) {
|
|
contactSelectDropdown.remove(i);
|
|
}
|
|
contactSelectDropdown[contactSelectDropdown.length] = new Option('- Contact -', '0');
|
|
|
|
// Populate dropdown
|
|
contacts.forEach(contact => {
|
|
contactSelectDropdown[contactSelectDropdown.length] = new Option(contact.contact_name, contact.contact_id);
|
|
});
|
|
|
|
}
|
|
);
|
|
}
|