Miglioramento JS per gestione input in form AJAX

This commit is contained in:
Dasc3er 2021-03-29 18:31:23 +02:00
parent d572da3314
commit 593c727dde
22 changed files with 412 additions and 355 deletions

11
add.php
View File

@ -80,11 +80,11 @@ if (isAjaxRequest()) {
$(document).ready(function(){
$("#form_'.$id_module.'-'.$id_plugin.'").find("form").submit(function () {
let $form = $(this);
$form.variables = new Object();
$form.variables.id_module = \''.$id_module.'\';
$form.variables.id_plugin = \''.$id_plugin.'\';
submitAjax(this, $form.variables, function(response) {
salvaForm(this, {
id_module: "'.$id_module.'",
id_plugin: "'.$id_plugin.'",
}).then(function(response) {
// Selezione automatica nuovo valore per il select
let select = "#'.get('select').'";
if ($(select).val() !== undefined) {
@ -93,8 +93,7 @@ $(document).ready(function(){
}
$form.closest("div[id^=bs-popup").modal("hide");
});
})
return false;
})

View File

@ -0,0 +1,248 @@
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.r.l.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/**
* @deprecated
* @param form
* @param data
* @param callback
* @param errorCallback
* @returns {*|jQuery}
*/
function submitAjax(form, data, callback, errorCallback) {
let valid = $(form).parsley().validate();
if (!valid) {
return valid;
}
if (!data) data = {};
// Lettura dei contenuti degli input
data = {...getInputsData(form), ...data};
$("#main_loading").show();
content_was_modified = false;
// Fix per gli id di default
data.id_module = data.id_module ? data.id_module : globals.id_module;
data.id_record = data.id_record ? data.id_record : globals.id_record;
data.id_plugin = data.id_plugin ? data.id_plugin : globals.id_plugin;
data.ajax = 1;
prepareForm(form);
// Invio dei dati
$(form).ajaxSubmit({
url: globals.rootdir + "/actions.php",
data: data,
type: "post",
success: function (data) {
let response = data.trim();
// Tentativo di conversione da JSON
try {
response = JSON.parse(response);
} catch (e) {
}
callback(response);
$("#main_loading").fadeOut();
renderMessages();
},
error: function (data) {
$("#main_loading").fadeOut();
toastr["error"](data);
if (errorCallback) errorCallback(data);
}
});
return valid;
}
/**
*
* @param form
*/
function prepareForm(form) {
$(form).find('input:disabled, select:disabled').prop('disabled', false);
let hash = window.location.hash;
if (hash) {
var input = $('<input/>', {
type: 'hidden',
name: 'hash',
value: hash,
});
$(form).append(input);
}
}
/**
* Funzione per la gestione delle animazioni di caricamento sui pulsanti cliccati e appositamente predisposti,
*
* @param button
* @returns {[*, *]}
*/
function buttonLoading(button) {
let $this = $(button);
let result = [
$this.html(),
$this.attr("class")
];
$this.html('<i class="fa fa-spinner fa-pulse fa-fw"></i> Attendere...');
$this.addClass("btn-warning");
$this.prop("disabled", true);
return result;
}
/**
* Funzione per ripristinare un pulsante con animazioni allo stato precedente.
*
* @param button
* @param loadingResult
*/
function buttonRestore(button, loadingResult) {
let $this = $(button);
$this.html(loadingResult[0]);
$this.attr("class", "");
$this.addClass(loadingResult[1]);
$this.prop("disabled", false);
}
/**
* Funzione per salvare i contenuti di un form via AJAX, utilizzando una struttura più recente fondata sull'utilizzo di Promise.
*
* @param button
* @param form
* @param data
* @returns {Promise<unknown>}
*/
function salvaForm(form, data = {}, button = null) {
return new Promise(function (resolve, reject) {
// Caricamento visibile nel pulsante
let restore = buttonLoading(button);
// Messaggio in caso di eventuali errori
let valid = $(form).parsley().validate();
if (!valid) {
swal({
type: "error",
title: globals.translations.ajax.missing.title,
text: globals.translations.ajax.missing.text,
});
buttonRestore(button, restore);
reject();
}
// Gestione grafica di salvataggio
$("#main_loading").show();
content_was_modified = false;
// Lettura dei contenuti degli input
data = {...getInputsData(form), ...data};
data.ajax = 1;
// Fix per gli id di default
data.id_module = data.id_module ? data.id_module : globals.id_module;
data.id_record = data.id_record ? data.id_record : globals.id_record;
data.id_plugin = data.id_plugin ? data.id_plugin : globals.id_plugin;
// Invio dei dati
$.ajax({
url: globals.rootdir + "/actions.php",
data: data,
type: "POST",
success: function (data) {
let response = data.trim();
// Tentativo di conversione da JSON
try {
response = JSON.parse(response);
} catch (e) {
}
// Gestione grafica del successo
$("#main_loading").fadeOut();
renderMessages();
buttonRestore(button, restore);
resolve(response);
},
error: function (data) {
toastr["error"](data);
// Gestione grafica dell'errore
$("#main_loading").fadeOut();
swal({
type: "error",
title: globals.translations.ajax.error.title,
text: globals.translations.ajax.error.text,
});
buttonRestore(button, restore);
reject(data);
}
});
});
}
/**
* Funzione per recuperare come oggetto i contenuti degli input interni a un tag HTML.
*
* @param {HTMLElement|string|jQuery} form
* @returns {{}}
*/
function getInputsData(form) {
let place = $(form);
let data = {};
// Gestione input previsti con sistema JS integrato
let inputs = place.find('.openstamanager-input');
for (const x of inputs) {
const i = input(x);
const name = i.getElement().attr('name');
const value = i.get();
data[name] = value ? value : undefined;
}
// Gestione input HTML standard
let standardInputs = place.find(':input').not('.openstamanager-input').serializeArray();
for (const x of standardInputs) {
data[x.name] = x.value;
}
// Gestione hash dell'URL
let hash = window.location.hash;
if (hash) {
data['hash'] = hash;
}
return data;
}

View File

@ -360,72 +360,6 @@ function getCookie(cname) {
return "";
}
function submitAjax(form, data, callback, errorCallback) {
let valid = $(form).parsley().validate();
if (!valid) {
return valid;
}
if (!data) data = {};
$("#main_loading").show();
content_was_modified = false;
// Fix per gli id di default
data.id_module = data.id_module ? data.id_module : globals.id_module;
data.id_record = data.id_record ? data.id_record : globals.id_record;
data.id_plugin = data.id_plugin ? data.id_plugin : globals.id_plugin;
data.ajax = 1;
prepareForm(form);
// Invio dei dati
$(form).ajaxSubmit({
url: globals.rootdir + "/actions.php",
data: data,
type: "post",
success: function (data) {
let response = data.trim();
// Tentativo di conversione da JSON
try {
response = JSON.parse(response);
} catch (e) {
}
callback(response);
$("#main_loading").fadeOut();
renderMessages();
},
error: function (data) {
$("#main_loading").fadeOut();
toastr["error"](data);
if (errorCallback) errorCallback(data);
}
});
return valid;
}
function prepareForm(form) {
$(form).find('input:disabled, select:disabled').prop('disabled', false);
var hash = window.location.hash;
if (hash) {
var input = $('<input/>', {
type: 'hidden',
name: 'hash',
value: hash,
});
$(form).append(input);
}
}
/**
* Visualizzazione dei messaggi attivi tramite toastr.
*/
@ -457,10 +391,20 @@ function renderMessages() {
});
}
/**
* Rimuove l'hash dall'URL corrente.
*/
function removeHash() {
history.replaceState(null, null, ' ');
}
/**
*
* @param str
* @param find
* @param replace
* @returns {*}
*/
function replaceAll(str, find, replace) {
return str.replace(new RegExp(find, "g"), replace);
}
@ -495,7 +439,7 @@ function restart_inputs() {
*/
function alertPush() {
if ($(window).width() > 1023) {
var i = 0;
let i = 0;
$('.alert-success.push').each(function () {
i++;
@ -524,7 +468,7 @@ function alertPush() {
}
/**
* Fuinzione per l'apertura del messaggi di rimozione elemento standard.
* Funzione per l'apertura del messaggi di rimozione elemento standard.
*
* @param button
* @param title
@ -542,101 +486,6 @@ function confirmDelete(button, title, message) {
})
}
/**
* Funzione per la gestione delle animazioni di caricamento sui pulsanti cliccati e appositamente predisposti,
*
* @param button
* @returns {[*, *]}
*/
function buttonLoading(button) {
var $this = $(button);
var result = [
$this.html(),
$this.attr("class")
];
$this.html('<i class="fa fa-spinner fa-pulse fa-fw"></i> Attendere...');
$this.addClass("btn-warning");
$this.prop("disabled", true);
return result;
}
/**
* Funzione per ripristinare un pulsante con animazioni allo stato precedente.
*
* @param button
* @param loadingResult
*/
function buttonRestore(button, loadingResult) {
var $this = $(button);
$this.html(loadingResult[0]);
$this.attr("class", "");
$this.addClass(loadingResult[1]);
$this.prop("disabled", false);
}
/**
* Funzione per serializzare i contenuti di un form in JSON.
*
* @param form
* @returns {object}
*/
function serializeForm(form) {
let obj = {};
let formData = new FormData(form);
for (let key of formData.keys()) {
obj[key] = formData.get(key);
}
return obj;
}
/**
* Funzione per salvare i contenuti di un form via AJAX, utilizzando una struttura più recente fondata sull'utilizzo di Promise.
*
* @param button
* @param form
* @param data
* @returns {Promise<unknown>}
*/
function salvaForm(button, form, data = {}) {
return new Promise(function (resolve, reject) {
// Caricamento visibile nel pulsante
let restore = buttonLoading(button);
// Messaggio in caso di eventuali errori
let valid = $(form).parsley().validate();
if (!valid) {
swal({
type: "error",
title: globals.translations.ajax.missing.title,
text: globals.translations.ajax.missing.text,
});
buttonRestore(button, restore);
resolve(false);
}
submitAjax(form, data, function (response) {
buttonRestore(button, restore);
resolve(true);
}, function (data) {
swal({
type: "error",
title: globals.translations.ajax.error.title,
text: globals.translations.ajax.error.text,
});
buttonRestore(button, restore);
resolve(false);
});
});
}
/**
* Nasconde una specifica colonna di una tabella indicata.
@ -697,6 +546,7 @@ function hideTableColumn(table, column) {
/**
* Funzione per aggiungere in un *endpoint* il contenuto di uno specifico *template*, effettuando delle sostituzioni di base e inizializzando i campi aggiunti.
*
* @param {string|jQuery|HTMLElement} endpoint_selector
* @param {string|jQuery|HTMLElement} template_selector
* @param {object} replaces

View File

@ -104,13 +104,11 @@ Input.prototype.init = function () {
// Inizializzazione per textarea
else if (this.element.hasClass('autosize') || htmlElement.hasAttribute('maxlength')) {
if (this.element.hasClass('autosize'))
initCompleted = initTextareaInput(htmlElement);
if (htmlElement.hasAttribute('charcounter'))
initCompleted = initCharCounter(htmlElement);
}
// Inizializzazione per select
@ -240,6 +238,11 @@ Input.prototype.getData = function () {
Input.prototype.get = function () {
let value = this.element.val();
// Gestione dei valori per select
if (this.element.hasClass("select-input")) {
value = value ? value : null;
}
// Gestione dei valori per l'editor
if (this.element.hasClass("editor-input")) {
const name = this.element.attr("id");

View File

@ -29,8 +29,7 @@ function initTextareaInput(input) {
function initCharCounter(input) {
let $input = $(input);
if (input.hasAttribute('maxlength')){
if (input.hasAttribute('maxlength')) {
$input.maxlength({
warningClass: "help-block",
limitReachedClass: "help-block text-danger",
@ -45,9 +44,8 @@ function initCharCounter(input) {
threshold: 150
});
}else{
$input.attr('maxlength','65535');
} else {
$input.attr('maxlength', '65535');
$input.maxlength({
warningClass: "help-block",
@ -58,9 +56,7 @@ function initCharCounter(input) {
appendToParent: true,
alwaysShow: true
});
}
return true;
}
@ -77,9 +73,7 @@ function waitCKEditor(input) {
*/
function initEditorInput(input) {
if (window.CKEDITOR && CKEDITOR.status === "loaded") {
$(document).ready(function () {
initCKEditor(input);
})
initCKEditor(input);
} else {
waitCKEditor(input);
}

View File

@ -364,18 +364,15 @@ function gestioneDescrizione(button) {
async function gestioneRiga(button, options) {
// Salvataggio via AJAX
let valid = await salvaForm(button, $("#edit-form"));
await salvaForm("#edit-form", {}, button);
// Lettura titolo e chiusura tooltip
let title = $(button).tooltipster("content");
$(button).tooltipster("close")
// Apertura modal
if (valid) {
// Lettura titolo e chiusura tooltip
let title = $(button).tooltipster("content");
$(button).tooltipster("close")
// Apertura modal
options = options ? options : "is_riga";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}
options = options ? options : "is_riga";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}
/**
@ -524,7 +521,6 @@ $(document).ready(function() {
data_accettazione.data("DateTimePicker").date(e.date);
}
});
});
</script>';
?>

View File

@ -225,16 +225,14 @@ async function modificaRiga(button) {
let type = riga.data("type");
// Salvataggio via AJAX
let valid = await salvaForm(button, $("#edit-form"));
await salvaForm("#edit-form", {}, button);
if (valid) {
// Chiusura tooltip
if ($(button).hasClass("tooltipstered"))
$(button).tooltipster("close");
// Chiusura tooltip
if ($(button).hasClass("tooltipstered"))
$(button).tooltipster("close");
// Apertura modal
openModal("'.tr('Modifica riga').'", "'.$module->fileurl('row-edit.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
}
// Apertura modal
openModal("'.tr('Modifica riga').'", "'.$module->fileurl('row-edit.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
}
function rimuoviRiga(button) {

View File

@ -396,18 +396,15 @@ function gestioneDescrizione(button) {
async function gestioneRiga(button, options) {
// Salvataggio via AJAX
let valid = await salvaForm(button, $("#edit-form"));
await salvaForm("#edit-form", {}, button);
// Lettura titolo e chiusura tooltip
let title = $(button).tooltipster("content");
$(button).tooltipster("close")
// Apertura modal
if (valid) {
// Lettura titolo e chiusura tooltip
let title = $(button).tooltipster("content");
$(button).tooltipster("close")
// Apertura modal
options = options ? options : "is_riga";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}
options = options ? options : "is_riga";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}
/**

View File

@ -283,16 +283,14 @@ async function modificaRiga(button) {
let type = riga.data("type");
// Salvataggio via AJAX
let valid = await salvaForm(button, $("#edit-form"));
await salvaForm("#edit-form", {}, button);
if (valid) {
// Chiusura tooltip
if ($(button).hasClass("tooltipstered"))
$(button).tooltipster("close");
// Chiusura tooltip
if ($(button).hasClass("tooltipstered"))
$(button).tooltipster("close");
// Apertura modal
openModal("'.tr('Modifica riga').'", "'.$module->fileurl('row-edit.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
}
// Apertura modal
openModal("'.tr('Modifica riga').'", "'.$module->fileurl('row-edit.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
}
function rimuoviRiga(button) {

View File

@ -852,18 +852,15 @@ function gestioneDescrizione(button) {
async function gestioneRiga(button, options) {
// Salvataggio via AJAX
let valid = await salvaForm(button, $("#edit-form"));
await salvaForm("#edit-form", {}, button);
// Lettura titolo e chiusura tooltip
let title = $(button).tooltipster("content");
$(button).tooltipster("close")
// Apertura modal
if (valid) {
// Lettura titolo e chiusura tooltip
let title = $(button).tooltipster("content");
$(button).tooltipster("close")
// Apertura modal
options = options ? options : "is_riga";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}
options = options ? options : "is_riga";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}
/**

View File

@ -402,16 +402,14 @@ async function modificaRiga(button) {
let type = riga.data("type");
// Salvataggio via AJAX
let valid = await salvaForm(button, $("#edit-form"));
await salvaForm("#edit-form", {}, button);
if (valid) {
// Chiusura tooltip
if ($(button).hasClass("tooltipstered"))
$(button).tooltipster("close");
// Chiusura tooltip
if ($(button).hasClass("tooltipstered"))
$(button).tooltipster("close");
// Apertura modal
openModal("'.tr('Modifica riga').'", "'.$module->fileurl('row-edit.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
}
// Apertura modal
openModal("'.tr('Modifica riga').'", "'.$module->fileurl('row-edit.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
}
function rimuoviRiga(button) {

View File

@ -154,7 +154,7 @@ switch (post('op')) {
$intervento->id_preventivo = post('idpreventivo');
$intervento->id_contratto = post('idcontratto');
$intervento->id_ordine = post('idordine');
$intervento->richiesta = post('richiesta_add');
$intervento->richiesta = post('richiesta');
$intervento->idsede_destinazione = $idsede_destinazione;
$intervento->data_scadenza = $data_scadenza;

View File

@ -197,7 +197,7 @@ echo '
<div class="row">
<div class="col-md-12">
{[ "type": "ckeditor", "label": "'.tr('Richiesta').'", "name": "richiesta_add", "required": 1, "value": "'.$richiesta.'", "extra": "style=\'max-height:80px;\'" ]}
{[ "type": "ckeditor", "label": "'.tr('Richiesta').'", "name": "richiesta", "id": "richiesta_add", "required": 1, "value": "'.$richiesta.'", "extra": "style=\'max-height:80px;\'" ]}
</div>
</div>';
@ -339,7 +339,7 @@ if (!empty($id_intervento)) {
input("idzona").disable();
input("idtipointervento").disable();
input("idstatointervento").disable();
input("richiesta_add").disable();
input("richiesta").disable();
input("data_richiesta").disable();
});
</script>';
@ -520,10 +520,9 @@ if (filter('orario_fine') !== null) {
}
// Submit dinamico tramite AJAX
let valid = await salvaForm(button, "#add-form", {
let response = await salvaForm("#add-form", {
id_module: "'.$id_module.'", // Fix creazione da Dashboard
});
if (!valid) return;
}, button);
// Se l\'aggiunta intervento proviene dalla scheda di pianificazione ordini di servizio della dashboard, la ricarico
if (ref == "dashboard") {

View File

@ -250,16 +250,14 @@ async function modificaSessione(button) {
var id = riga.data("id");
// Salvataggio via AJAX
let valid = await salvaForm(button, $("#edit-form"));
await salvaForm("#edit-form", {}, button);
if (valid) {
// Chiusura tooltip
if ($(button).hasClass("tooltipstered"))
$(button).tooltipster("close");
// Chiusura tooltip
if ($(button).hasClass("tooltipstered"))
$(button).tooltipster("close");
// Apertura modal
openModal("'.tr('Modifica sessione').'", "'.$module->fileurl('modals/manage_sessione.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&id_sessione=" + id);
}
// Apertura modal
openModal("'.tr('Modifica sessione').'", "'.$module->fileurl('modals/manage_sessione.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&id_sessione=" + id);
}
function calcolaConflittiTecnici() {

View File

@ -530,18 +530,15 @@ function gestioneDescrizione(button) {
async function gestioneRiga(button, options) {
// Salvataggio via AJAX
let valid = await salvaForm(button, $("#edit-form"));
await salvaForm("#edit-form", {}, button);
// Lettura titolo e chiusura tooltip
let title = $(button).tooltipster("content");
$(button).tooltipster("close");
// Apertura modal
if (valid) {
// Lettura titolo e chiusura tooltip
let title = $(button).tooltipster("content");
$(button).tooltipster("close");
// Apertura modal
options = options ? options : "is_riga";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}
options = options ? options : "is_riga";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}
/**

View File

@ -184,16 +184,14 @@ async function modificaRiga(button) {
let type = riga.data("type");
// Salvataggio via AJAX
let valid = await salvaForm(button, $("#edit-form"));
await salvaForm("#edit-form", {}, button);
if (valid) {
// Chiusura tooltip
if ($(button).hasClass("tooltipstered"))
$(button).tooltipster("close");
// Chiusura tooltip
if ($(button).hasClass("tooltipstered"))
$(button).tooltipster("close");
// Apertura modal
openModal("'.tr('Modifica sessione').'", "'.$module->fileurl('row-edit.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
}
// Apertura modal
openModal("'.tr('Modifica sessione').'", "'.$module->fileurl('row-edit.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
}
function rimuoviRiga(button) {

View File

@ -185,60 +185,58 @@ echo '
let qta_input = input("qta");
let tipo_movimento = $("#tipo_movimento").val();
let valid = await salvaForm(button, "#add-form");
await salvaForm("#add-form", {}, button);
if (valid) {
let articolo = $("#idarticolo").selectData();
let articolo = $("#idarticolo").selectData();
let prezzo_acquisto = parseFloat(articolo.prezzo_acquisto);
let prezzo_vendita = parseFloat(articolo.prezzo_vendita);
let prezzo_acquisto = parseFloat(articolo.prezzo_acquisto);
let prezzo_vendita = parseFloat(articolo.prezzo_vendita);
let qta_movimento = qta_input.get();
let qta_movimento = qta_input.get();
let alert_type, icon, text, qta_rimanente;
if (tipo_movimento === "carico") {
alert_type = "alert-success";
icon = "fa-arrow-up";
text = "Carico";
qta_rimanente = parseFloat(articolo.qta) + parseFloat(qta_movimento);
} else if (tipo_movimento === "scarico") {
alert_type = "alert-danger";
icon = "fa-arrow-down";
text = "Scarico";
qta_rimanente = parseFloat(articolo.qta) - parseFloat(qta_movimento);
} else if (tipo_movimento === "spostamento") {
alert_type = "alert-info";
icon = "fa-arrow-down";
text = "Spostamento";
qta_rimanente = parseFloat(articolo.qta);
}
let alert_type, icon, text, qta_rimanente;
if (tipo_movimento === "carico") {
alert_type = "alert-success";
icon = "fa-arrow-up";
text = "Carico";
qta_rimanente = parseFloat(articolo.qta) + parseFloat(qta_movimento);
} else if (tipo_movimento === "scarico") {
alert_type = "alert-danger";
icon = "fa-arrow-down";
text = "Scarico";
qta_rimanente = parseFloat(articolo.qta) - parseFloat(qta_movimento);
} else if (tipo_movimento === "spostamento") {
alert_type = "alert-info";
icon = "fa-arrow-down";
text = "Spostamento";
qta_rimanente = parseFloat(articolo.qta);
}
if (articolo.descrizione) {
let testo = $("#info-articolo").html();
if (articolo.descrizione) {
let testo = $("#info-articolo").html();
testo = testo.replace("|alert-type|", alert_type)
.replace("|icon|", icon)
.replace("|descrizione|", articolo.descrizione)
.replace("|codice|", articolo.codice)
.replace("|misura|", articolo.um)
.replace("|misura|", articolo.um)
.replace("|descrizione-movimento|", text)
.replace("|movimento|", qta_movimento.toLocale())
.replace("|rimanente|", qta_rimanente.toLocale())
.replace("|prezzo_acquisto|", prezzo_acquisto.toLocale())
.replace("|prezzo_vendita|", prezzo_vendita.toLocale());
testo = testo.replace("|alert-type|", alert_type)
.replace("|icon|", icon)
.replace("|descrizione|", articolo.descrizione)
.replace("|codice|", articolo.codice)
.replace("|misura|", articolo.um)
.replace("|misura|", articolo.um)
.replace("|descrizione-movimento|", text)
.replace("|movimento|", qta_movimento.toLocale())
.replace("|rimanente|", qta_rimanente.toLocale())
.replace("|prezzo_acquisto|", prezzo_acquisto.toLocale())
.replace("|prezzo_vendita|", prezzo_vendita.toLocale());
$("#messages").html(testo);
}
$("#messages").html(testo);
}
qta_input.set(1);
$("#causale").trigger("change");
qta_input.set(1);
$("#causale").trigger("change");
if( input("barcode").get() !== "" ){
$("#idarticolo").selectReset();
input("barcode").set("");
$("#barcode").focus();
}
if( input("barcode").get() !== "" ){
$("#idarticolo").selectReset();
input("barcode").set("");
$("#barcode").focus();
}
}
</script>';

View File

@ -94,7 +94,7 @@ if ($module['name'] == 'Ordini cliente') {
}
echo '
</div>
<div class="col-md-3">';
if (!empty($record['idreferente'])) {
echo Plugins::link('Referenti', $record['idanagrafica'], null, null, 'class="pull-right"');
@ -285,18 +285,15 @@ function gestioneDescrizione(button) {
async function gestioneRiga(button, options) {
// Salvataggio via AJAX
let valid = await salvaForm(button, $("#edit-form"));
await salvaForm("#edit-form", {}, button);
// Lettura titolo e chiusura tooltip
let title = $(button).tooltipster("content");
$(button).tooltipster("close")
// Apertura modal
if (valid) {
// Lettura titolo e chiusura tooltip
let title = $(button).tooltipster("content");
$(button).tooltipster("close")
// Apertura modal
options = options ? options : "is_riga";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}
options = options ? options : "is_riga";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}
/**

View File

@ -306,16 +306,14 @@ async function modificaRiga(button) {
let type = riga.data("type");
// Salvataggio via AJAX
let valid = await salvaForm(button, $("#edit-form"));
await salvaForm("#edit-form", {}, button);
if (valid) {
// Chiusura tooltip
if ($(button).hasClass("tooltipstered"))
$(button).tooltipster("close");
// Chiusura tooltip
if ($(button).hasClass("tooltipstered"))
$(button).tooltipster("close");
// Apertura modal
openModal("'.tr('Modifica riga').'", "'.$module->fileurl('row-edit.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
}
// Apertura modal
openModal("'.tr('Modifica riga').'", "'.$module->fileurl('row-edit.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
}
function rimuoviRiga(button) {

View File

@ -292,18 +292,15 @@ function gestioneDescrizione(button) {
async function gestioneRiga(button, options) {
// Salvataggio via AJAX
let valid = await salvaForm(button, $("#edit-form"));
await salvaForm("#edit-form", {}, button);
// Lettura titolo e chiusura tooltip
let title = $(button).tooltipster("content");
$(button).tooltipster("close")
// Apertura modal
if (valid) {
// Lettura titolo e chiusura tooltip
let title = $(button).tooltipster("content");
$(button).tooltipster("close")
// Apertura modal
options = options ? options : "is_riga";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}
options = options ? options : "is_riga";
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
}
/**

View File

@ -251,16 +251,14 @@ async function modificaRiga(button) {
let type = riga.data("type");
// Salvataggio via AJAX
let valid = await salvaForm(button, $("#edit-form"));
await salvaForm("#edit-form", {}, button);
if (valid) {
// Chiusura tooltip
if ($(button).hasClass("tooltipstered"))
$(button).tooltipster("close");
// Chiusura tooltip
if ($(button).hasClass("tooltipstered"))
$(button).tooltipster("close");
// Apertura modal
openModal("'.tr('Modifica riga').'", "'.$module->fileurl('row-edit.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
}
// Apertura modal
openModal("'.tr('Modifica riga').'", "'.$module->fileurl('row-edit.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
}
function rimuoviRiga(button) {

View File

@ -269,8 +269,8 @@ echo '
}
function generaFE(button) {
salvaForm(button, "#edit-form").then(function(valid) {
if (valid) {';
salvaForm("#edit-form", {}, button)
.then(function(valid) {';
if ($generata) {
echo '
@ -294,13 +294,12 @@ echo '
$("#form-xml").submit();';
}
echo '
} else {
}).catch(function() {
swal({
type: "error",
title: "'.tr('Errore').'",
text: "'.tr('Alcuni campi obbligatori non sono stati compilati correttamente').'.",
});
}
});
});
};
</script>';