mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-01-29 07:02:41 +01:00
Miglioramento JS per gestione input in form AJAX
This commit is contained in:
parent
d572da3314
commit
593c727dde
11
add.php
11
add.php
@ -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;
|
||||
})
|
||||
|
248
assets/src/js/functions/form.js
Normal file
248
assets/src/js/functions/form.js
Normal 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;
|
||||
}
|
@ -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
|
||||
|
@ -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");
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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>';
|
||||
?>
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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") {
|
||||
|
@ -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() {
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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) {
|
||||
|
@ -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>';
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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) {
|
||||
|
@ -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>';
|
||||
|
Loading…
x
Reference in New Issue
Block a user