883 lines
30 KiB
PHP
883 lines
30 KiB
PHP
|
var isMobile = {
|
||
|
Android: function() {
|
||
|
return navigator.userAgent.match(/Android/i);
|
||
|
},
|
||
|
BlackBerry: function() {
|
||
|
return navigator.userAgent.match(/BlackBerry/i);
|
||
|
},
|
||
|
iOS: function() {
|
||
|
return navigator.userAgent.match(/iPhone|iPad|iPod/i);
|
||
|
},
|
||
|
Opera: function() {
|
||
|
return navigator.userAgent.match(/Opera Mini/i);
|
||
|
},
|
||
|
Windows: function() {
|
||
|
return navigator.userAgent.match(/IEMobile/i);
|
||
|
},
|
||
|
any: function() {
|
||
|
return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
|
||
|
}
|
||
|
};
|
||
|
|
||
|
//Aggiunta main loading all\'unload del body
|
||
|
window.onbeforeunload = function() {
|
||
|
$('#mini-loader').hide();
|
||
|
$('#main_loading').show();
|
||
|
};
|
||
|
|
||
|
$(window).load(function() {
|
||
|
$('#main_loading').fadeOut();
|
||
|
});
|
||
|
|
||
|
<?php
|
||
|
$skip_permissions = true;
|
||
|
include_once(__DIR__."/../core.php");
|
||
|
if(isUserAutenticated()) {
|
||
|
?>
|
||
|
$(document).ready(function() {
|
||
|
//Orologio
|
||
|
clock();
|
||
|
|
||
|
//Calendario principale
|
||
|
$('#daterange').daterangepicker({
|
||
|
ranges: {
|
||
|
'<?php echo _("Oggi") ?>': [moment(), moment()],
|
||
|
'<?php echo _("Ieri") ?>': [moment().subtract('days', 1), moment().subtract('days', 1)],
|
||
|
'<?php echo _("Ultimi 7 giorni") ?>': [moment().subtract('days', 6), moment()],
|
||
|
'<?php echo _("Ultimi 30 giorni") ?>': [moment().subtract('days', 29), moment()],
|
||
|
'<?php echo _("Questo mese") ?>': [moment().startOf('month'), moment().endOf('month')],
|
||
|
'<?php echo _("Mese scorso") ?>': [moment().subtract('month', 1).startOf('month'), moment().subtract('month', 1).endOf('month')],
|
||
|
"<?php echo _("Quest'anno") ?>": [moment().startOf('year'), moment().endOf('year')],
|
||
|
'<?php echo _("Anno scorso") ?>': [moment().subtract('year', 1).startOf('year'), moment().subtract('year', 1).endOf('year')]
|
||
|
},
|
||
|
locale: {
|
||
|
format: 'DD/MM/YYYY',
|
||
|
separator: " - ",
|
||
|
applyLabel: '<?php echo _("Applica") ?>',
|
||
|
cancelLabel: '<?php echo _("Annulla") ?>',
|
||
|
fromLabel: '<?php echo _("Da") ?>',
|
||
|
toLabel: '<?php echo _("A") ?>',
|
||
|
customRangeLabel: '<?php echo _("Personalizzato") ?>',
|
||
|
monthNames: ['<?php echo _("Gennaio") ?>','<?php echo _("Febbraio") ?>','<?php echo _("Marzo") ?>','<?php echo _("Aprile") ?>','<?php echo _("Maggio") ?>','<?php echo _("Giugno") ?>','<?php echo _("Luglio") ?>','<?php echo _("Agosto") ?>','<?php echo _("Settembre") ?>','<?php echo _("Ottobre") ?>','<?php echo _("Novembre") ?>','<?php echo _("Dicembre") ?>'],
|
||
|
daysOfWeek: ['<?php echo _("Do") ?>','<?php echo _("Lu") ?>','<?php echo _("Ma") ?>','<?php echo _("Me") ?>','<?php echo _("Gi") ?>','<?php echo _("Ve") ?>','<?php echo _("Sa") ?>'],
|
||
|
"firstDay": 1
|
||
|
},
|
||
|
startDate: '<?php echo date("d/m/Y", strtotime($_SESSION['period_start'])) ?>',
|
||
|
endDate: '<?php echo date("d/m/Y", strtotime($_SESSION['period_end'])) ?>',
|
||
|
applyClass: 'btn btn-app btn-sm',
|
||
|
cancelClass: 'btn btn-danger btn-sm'
|
||
|
},
|
||
|
function(start, end) {
|
||
|
//Submit period and refresh page
|
||
|
$.get('<?php echo $rootdir; ?>/core.php?period_start=' + start.format('YYYY-MM-DD') + '&period_end=' + end.format('YYYY-MM-DD'), function() {
|
||
|
location.href = location.href;
|
||
|
});
|
||
|
}
|
||
|
);
|
||
|
|
||
|
$('.ask').on('click', function(){
|
||
|
var msg = "<?php echo _("Eliminare questo elemento?"); ?>";
|
||
|
if($(this).data("msg") != undefined) var msg = $(this).data("msg");
|
||
|
|
||
|
if(confirm(msg)){
|
||
|
var position= "";
|
||
|
if($(this).data("position") != undefined) position = $(this).data("position");
|
||
|
|
||
|
location.href = $(this).data("href") + "&op=" + $(this).data("op") + "&id=" + $(this).data("id");
|
||
|
}
|
||
|
});
|
||
|
|
||
|
//Sidebar
|
||
|
$('.sidebar-menu > li.treeview i.fa-angle-left').click(function(e) {
|
||
|
e.preventDefault();
|
||
|
$(this).find('ul').stop().slideDown();
|
||
|
});
|
||
|
|
||
|
$('.sidebar-menu > li.treeview i.fa-angle-down').click(function(e) {
|
||
|
e.preventDefault();
|
||
|
$(this).find('ul').stop().slideUp();
|
||
|
});
|
||
|
|
||
|
$menulist = $('.treeview-menu > li.active');
|
||
|
for (i = 0; i < $menulist.length; i++) {
|
||
|
$list = jQuery($menulist[i]);
|
||
|
$list.parent().show().parent().addClass('active');
|
||
|
$list.parent().parent().find('i.fa-angle-left').removeClass('fa-angle-left').addClass('fa-angle-down');
|
||
|
}
|
||
|
<?php if( get_var("Nascondere la barra sinistra di default") == "1" ){ ?>
|
||
|
|
||
|
$(".sidebar-offcanvas").addClass('collapse-left');
|
||
|
$(".content-wrapper").addClass('strech');
|
||
|
<?php } ?>
|
||
|
|
||
|
//Menu ordinabile
|
||
|
$(".sidebar-menu").sortable({
|
||
|
cursor: 'move',
|
||
|
|
||
|
stop: function(event, ui) {
|
||
|
var order = $(this).sortable('toArray').toString();
|
||
|
|
||
|
$.post("<?php echo $rootdir; ?>/modules/aggiornamenti/actions.php?id_module=<?php echo $modules_info['Aggiornamenti']['id'] ?>", {
|
||
|
op: 'sortmodules',
|
||
|
ids: order
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
|
||
|
//Tabs
|
||
|
$('#tabs').tabs();
|
||
|
|
||
|
if ((location.hash).substr(0, 5) == '#tab_') {
|
||
|
setTimeout(function() {
|
||
|
window.scrollTo(0, 0);
|
||
|
}, 1);
|
||
|
}
|
||
|
|
||
|
$('.nav-pills a').click(function(e) {
|
||
|
e.preventDefault();
|
||
|
$(this).tab('show');
|
||
|
})
|
||
|
|
||
|
//Entra nel tab indicato al caricamento della pagina
|
||
|
var hash = window.location.hash;
|
||
|
if (hash != '') $('ul.nav a[href="' + hash + '"]').tab('show');
|
||
|
|
||
|
//Aggiunta nell'URL del nome tab su cui tornare dopo il submit
|
||
|
$('form').on('submit', function() {
|
||
|
id = $(this).closest('.tab-pane.active').attr('id');
|
||
|
|
||
|
if (id != '' || id != undefined) {
|
||
|
$(this).attr('action', $(this).attr('action') + '#' + id);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
//Messaggio di avviso salvataggio a comparsa sulla destra solo nella versione a desktop intero
|
||
|
if ($(window).width() > 1023) {
|
||
|
var i = 0;
|
||
|
|
||
|
$('.alert-success').each(function() {
|
||
|
i++;
|
||
|
tops = 60 * i + 95;
|
||
|
|
||
|
$(this).css({
|
||
|
'position': 'fixed',
|
||
|
'z-index': 3,
|
||
|
'top': -100,
|
||
|
'right': 10,
|
||
|
'opacity': 1
|
||
|
}).delay(1000).animate({
|
||
|
'top': tops,
|
||
|
'opacity': 1
|
||
|
}).delay(3000).animate({
|
||
|
'top': -100,
|
||
|
'opacity': 0
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
//Nascondo la notifica se passo sopra col mouse
|
||
|
$('.alert-success').on('mouseover', function(){
|
||
|
$(this).stop().animate({
|
||
|
'top': -100,
|
||
|
'opacity': 0
|
||
|
});
|
||
|
});
|
||
|
|
||
|
$('.widget').mouseover(function(e) {
|
||
|
e.preventDefault();
|
||
|
start_widgets($("#widget-controller_top, #widget-controller_right"));
|
||
|
});
|
||
|
|
||
|
backtotop_button();
|
||
|
|
||
|
//Barra di ricerca
|
||
|
//JQuery-UI Autocomplete wrapper
|
||
|
$.widget("custom.catcomplete", $.ui.autocomplete, {
|
||
|
_renderMenu: function(ul, items) {
|
||
|
if (items[0].value == undefined) {
|
||
|
$('#supersearch').removeClass('wait');
|
||
|
ul.html('');
|
||
|
} else {
|
||
|
var that = this,
|
||
|
currentCategory = "";
|
||
|
|
||
|
ul.addClass('ui-autocomplete-scrollable');
|
||
|
|
||
|
$.each(items, function(index, item) {
|
||
|
|
||
|
if (item.category != currentCategory) {
|
||
|
ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>");
|
||
|
currentCategory = item.category;
|
||
|
}
|
||
|
|
||
|
that._renderItemData(ul, item);
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
|
||
|
_renderItem: function(ul, item) {
|
||
|
return $("<li>")
|
||
|
.append("<a href='" + item.link + "' title='Clicca per aprire'><b>" + item.value + "</b><br/>" + item.label + "</a>")
|
||
|
.appendTo(ul);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$('#supersearch').keyup(function() {
|
||
|
$(document).ajaxStop();
|
||
|
|
||
|
if ($(this).val() == '') {
|
||
|
$(this).removeClass('wait');
|
||
|
} else {
|
||
|
$(this).addClass('wait');
|
||
|
}
|
||
|
});
|
||
|
|
||
|
//Configurazione supersearch
|
||
|
$('#supersearch').catcomplete({
|
||
|
html: true,
|
||
|
source: function(request, response) {
|
||
|
$.ajax({
|
||
|
url: '<?php echo $rootdir ?>/ajax_autocomplete.php?op=supersearch&module=*',
|
||
|
async: false,
|
||
|
dataType: "json",
|
||
|
data: {
|
||
|
term: request.term
|
||
|
},
|
||
|
|
||
|
complete: function(jqXHR) {
|
||
|
$('#supersearch').removeClass('wait');
|
||
|
},
|
||
|
|
||
|
success: function(data) {
|
||
|
if (data == null) {
|
||
|
response($.map(['a'], function(item) {
|
||
|
return false;
|
||
|
}));
|
||
|
} else {
|
||
|
response($.map(data, function(item) {
|
||
|
labels = (item.labels).toString();
|
||
|
labels = labels.replace('<br/>,', '<br/>');
|
||
|
|
||
|
return {
|
||
|
label: labels,
|
||
|
category: item.category,
|
||
|
link: item.link,
|
||
|
value: item.title
|
||
|
}
|
||
|
}));
|
||
|
}
|
||
|
},
|
||
|
|
||
|
minLength: 2,
|
||
|
|
||
|
select: function(event, ui) {
|
||
|
location.href = ui.link;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
//Widgets ordinabili
|
||
|
function start_widgets($widgets) {
|
||
|
cls = new Array();
|
||
|
|
||
|
for (i = 0; i < $widgets.length; i++) {
|
||
|
$widget = jQuery($widgets[i]);
|
||
|
|
||
|
list_name = ($widget.attr('id')).replace('widget-', '');
|
||
|
|
||
|
//Salvo le classi del primo elemento di ogni lista
|
||
|
cls[list_name] = $widget.find('li:first').attr('class');
|
||
|
|
||
|
$widget.sortable({
|
||
|
items: 'li',
|
||
|
cursor: 'move',
|
||
|
dropOnEmpty: true,
|
||
|
connectWith: '.widget',
|
||
|
scroll: true,
|
||
|
helper : 'clone',
|
||
|
start: function(event, ui) {
|
||
|
//Salvo la lista da cui proviene il drag
|
||
|
src_list = ($(this).attr('id')).replace('widget-', '');
|
||
|
|
||
|
//Evidenzio le aree dei widget
|
||
|
$('.widget').addClass('bordered').sortable('refreshPositions');
|
||
|
},
|
||
|
stop: function(event, ui) {
|
||
|
//Rimuovo l'evidenziazione dell'area widget
|
||
|
$('.widget').removeClass('bordered');
|
||
|
|
||
|
//Salvo la lista su cui ho eseguito il drop
|
||
|
dst_list = (ui.item.parent().attr('id')).replace('widget-', '');
|
||
|
var new_class = "";
|
||
|
|
||
|
var order = $(this).sortable('toArray').toString();
|
||
|
$.post("<?php echo $rootdir; ?>/modules/aggiornamenti/actions.php?id_module=<?php echo $modules_info['Aggiornamenti']['id'] ?>", {
|
||
|
op: 'updatewidget',
|
||
|
location: dst_list,
|
||
|
id_module: globals.id_module,
|
||
|
class: new_class,
|
||
|
id: ui.item.attr('id')
|
||
|
});
|
||
|
|
||
|
$.post("<?php echo $rootdir; ?>/modules/aggiornamenti/actions.php?id_module=<?php echo $modules_info['Aggiornamenti']['id'] ?>", {
|
||
|
op: 'sortwidget',
|
||
|
location: dst_list,
|
||
|
ids: order,
|
||
|
id_module: globals.id_module,
|
||
|
class: new_class
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//Modal
|
||
|
function launch_modal(title, href, init_modal=1, id='#bs-popup') {
|
||
|
$('html').addClass('modal-open');
|
||
|
|
||
|
$(id).on('hidden.bs.modal', function() {
|
||
|
$('html').removeClass('modal-open');
|
||
|
$(this).data('modal', null);
|
||
|
});
|
||
|
|
||
|
//Lettura contenuto div
|
||
|
if (href.substr(0, 1) == '#') {
|
||
|
data = $(href).html();
|
||
|
|
||
|
$(id).html(
|
||
|
'<div class="modal-dialog modal-lg">' +
|
||
|
' <div class="modal-content">' +
|
||
|
' <div class="modal-header bg-light-blue">' +
|
||
|
' <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only"><?php echo _("Chiudi") ?></span></button>' +
|
||
|
' <h4 class="modal-title"><i class="fa fa-pencil"></i> ' + title + '</h4>' +
|
||
|
' </div>' +
|
||
|
' <div class="modal-body">' + data + '</div>'
|
||
|
);
|
||
|
if (init_modal == 1) {
|
||
|
$(id).modal('show');
|
||
|
}
|
||
|
} else {
|
||
|
$.get(href, function(data, response) {
|
||
|
if (response == 'success') {
|
||
|
|
||
|
$(id).html(
|
||
|
'<div class="modal-dialog modal-lg">' +
|
||
|
' <div class="modal-content">' +
|
||
|
' <div class="modal-header bg-light-blue">' +
|
||
|
' <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only"><?php echo _("Chiudi") ?></span></button>' +
|
||
|
' <h4 class="modal-title"><i class="fa fa-pencil"></i> ' + title + '</h4>' +
|
||
|
' </div>' +
|
||
|
' <div class="modal-body">' + data + '</div>'
|
||
|
);
|
||
|
if (init_modal == 1) {
|
||
|
$(id).modal('show');
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
//Datatable
|
||
|
function start_datatables() {
|
||
|
var scroll = $(window).height() - $('.main-footer').height() - $('.nav-tabs-custom').height() - parseInt($('.nav-tabs-custom').css('margin-bottom'))*10 - $("#widget-controller_top").height();
|
||
|
if(scroll < 300) scroll = 300;
|
||
|
|
||
|
//Controlla che la tabella non sia già inizializzata
|
||
|
if(!$.fn.DataTable.isDataTable('#main-records')){
|
||
|
//Parametri di ricerca da url o sessione
|
||
|
var search = getUrlVars();
|
||
|
<?php
|
||
|
$array = array();
|
||
|
if(isset($_SESSION['id_module'])){
|
||
|
foreach($_SESSION as $idx1 => $arr2){
|
||
|
if( $idx1 == "module_".$_SESSION['id_module'] ){
|
||
|
foreach( $arr2 as $field => $value ){
|
||
|
if( $value != '' ){
|
||
|
$field_name = str_replace( "search_", "", $field );
|
||
|
echo '
|
||
|
if(search["search_'.str_replace("__", "_", $field_name).'"] == undefined) {
|
||
|
search.push("search_'.str_replace("__", "_", $field_name).'");
|
||
|
search["search_'.str_replace("__", "_", $field_name).'"] = "'.$value.'";
|
||
|
}';
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
?>
|
||
|
var res = [];
|
||
|
$("#main-records th").each(function(){
|
||
|
var id = $(this).attr('id').replace("th_", "");
|
||
|
var done = false;
|
||
|
search.forEach(function(item, index, array){
|
||
|
if(item == "search_"+id.replace("__", "_")) {
|
||
|
res.push({ "sSearch" : array[item] });
|
||
|
done = true;
|
||
|
}
|
||
|
});
|
||
|
if(!done) res.push({ "sSearch" : "" });
|
||
|
});
|
||
|
var sum;
|
||
|
var id_module = $('#main-records').data('idmodule');
|
||
|
var table = $("#main-records").DataTable({
|
||
|
language: {
|
||
|
url: "<?php echo $js ?>/i18n/datatables/jquery.datatables.lang-<?php echo $lang ?>.min.js"
|
||
|
},
|
||
|
autoWidth: true,
|
||
|
dom: "ti",
|
||
|
serverSide: true,
|
||
|
ordering: true,
|
||
|
searching: true,
|
||
|
aaSorting: [],
|
||
|
aoSearchCols: res,
|
||
|
scrollY: scroll,
|
||
|
scrollX: '100%',
|
||
|
scroller: {
|
||
|
loadingIndicator: true
|
||
|
},
|
||
|
ajax: {
|
||
|
url: "ajax_dataload.php?id_module="+id_module,
|
||
|
type: 'GET',
|
||
|
dataSrc: function(data){
|
||
|
sum = data;
|
||
|
return data.data;
|
||
|
}
|
||
|
},
|
||
|
initComplete: function() {
|
||
|
this.api().columns('.search').every( function () {
|
||
|
var column = this;
|
||
|
$("<br><input type='text' class='form-control' placeholder='<?php echo _("Filtra") ?>...'><i class='deleteicon fa fa-times fa-2x hide'></i>")
|
||
|
.appendTo(column.header())
|
||
|
.on( 'keyup change', function (e) {
|
||
|
if (e.which != 9) {
|
||
|
if ($(this).val() == '') {
|
||
|
if($(this).parent().data("slow") != undefined) $("#slow").remove();
|
||
|
$(this).removeClass('input-searching');
|
||
|
$(this).next('.deleteicon').addClass('hide');
|
||
|
}
|
||
|
else {
|
||
|
if($(this).parent().data("slow") != undefined && $("#slow").length == 0){
|
||
|
$("#main-records_info").parent().append('<span class="text-danger" id="slow"><i class="fa fa-refresh fa-spin"></i> <?php echo _("La ricerca potrebbe richiedere del tempo."); ?></span>');
|
||
|
}
|
||
|
$(this).addClass('input-searching');
|
||
|
$(this).next('.deleteicon').removeClass('hide');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
idx1 = 'module_'+( $('#main-records').data('idmodule') );
|
||
|
idx2 = 'search_'+( $(this).parent().attr('id') ).replace('th_', '');
|
||
|
|
||
|
//Imposto delle sessioni per le ricerche del modulo e del campo specificatsi
|
||
|
session_set( idx1+','+idx2, $(this).val(), 0 );
|
||
|
|
||
|
column
|
||
|
.search(this.value)
|
||
|
.draw();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
//Disabilito l'ordinamento al click sull'<input>
|
||
|
$("thead input, .deleteicon").click(function(e) {
|
||
|
stopTableSorting(e);
|
||
|
});
|
||
|
|
||
|
$('.deleteicon').on("click", function(e) {
|
||
|
reset($(this).parent().attr("id").replace("th_", ""));
|
||
|
});
|
||
|
|
||
|
//Se ho impostato una ricerca da URL filtro quei campi, altrimenti uso i campi della sessione
|
||
|
getUrlVars().forEach(function(item, index, arr) {
|
||
|
$('#th_'+item.replace("search_", "").replace("_", "__")+' input').val(arr[item]).trigger('keyup');
|
||
|
});
|
||
|
|
||
|
<?php
|
||
|
if(isset($_SESSION['id_module'])){
|
||
|
foreach( $_SESSION as $idx1 => $arr2 ){
|
||
|
if( $idx1 == "module_".$_SESSION['id_module'] ){
|
||
|
foreach( $arr2 as $field => $value ){
|
||
|
if( $value != '' ){
|
||
|
$field_name = str_replace( "search_", "", $field );
|
||
|
echo "
|
||
|
if($('#th_".$field_name." input').val() == '') $('#th_".$field_name." input').val( \"".$value."\" ).trigger('keyup');\n";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
?>
|
||
|
},
|
||
|
drawCallback: function(){
|
||
|
$(".dataTables_sizing .deleteicon").addClass('hide');
|
||
|
|
||
|
$("[data-background]").each(function(){
|
||
|
$(this).parent().css("background", $(this).data("background"));
|
||
|
});
|
||
|
|
||
|
$("[data-link]").each(function(){
|
||
|
$(this).parent().not('.bound').addClass('bound').click(function(event) {
|
||
|
if (event.ctrlKey) {
|
||
|
window.open($(this).find("[data-link]").data('link'));
|
||
|
} else {
|
||
|
location.href = $(this).find("[data-link]").data('link');
|
||
|
}
|
||
|
});
|
||
|
$(this).parent().addClass("clickable");
|
||
|
});
|
||
|
|
||
|
$("[data-color]").each(function(){
|
||
|
$(this).parent().css("color", $(this).data("color"));
|
||
|
});
|
||
|
},
|
||
|
footerCallback: function ( row, data, start, end, display ) {
|
||
|
var i =0;
|
||
|
this.api().columns().every( function () {
|
||
|
if(sum.summable[i] != undefined){
|
||
|
$(this.footer()).addClass("text-right");
|
||
|
$(this.footer()).html(sum.summable[i]);
|
||
|
}
|
||
|
else $(this.footer()).html(" ");
|
||
|
i++;
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//Select
|
||
|
function start_superselect(){
|
||
|
//Statico
|
||
|
$('.superselect').each( function(){
|
||
|
$this = $(this);
|
||
|
$(this).select2({
|
||
|
theme: "bootstrap",
|
||
|
language: "it",
|
||
|
width: '100%',
|
||
|
allowClear: true,
|
||
|
escapeMarkup: function (text) { return text; }
|
||
|
});
|
||
|
});
|
||
|
|
||
|
//Dinamico (AJAX, per tabelle con molti record)
|
||
|
$('.superselectajax').each( function(){
|
||
|
$this = $(this);
|
||
|
$(this).select2({
|
||
|
theme: "bootstrap",
|
||
|
language: "it",
|
||
|
allowClear: true,
|
||
|
escapeMarkup: function (text) { return text; },
|
||
|
ajax: {
|
||
|
url: "<?php echo $rootdir ?>/ajax_select2.php?op=" + $this.data('source'),
|
||
|
dataType: 'json',
|
||
|
delay: 250,
|
||
|
data: function (params) {
|
||
|
return {
|
||
|
q: params.term // search term
|
||
|
}
|
||
|
},
|
||
|
processResults: function (data) {
|
||
|
// parse the results into the format expected by Select2.
|
||
|
// since we are using custom formatting functions we do not need to
|
||
|
// alter the remote JSON data
|
||
|
if($this.val() == "" || $this.val() == null){
|
||
|
data.forEach(function (item, index){
|
||
|
if(item.selected != undefined && item.selected != ""){
|
||
|
$this.append('<option value="' + item.id + '">' + item.text + '</option>').val(item.id).trigger('change');
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
return {
|
||
|
results: data
|
||
|
}
|
||
|
},
|
||
|
cache: false
|
||
|
},
|
||
|
width: '100%'
|
||
|
});
|
||
|
});
|
||
|
|
||
|
$(".select2-selection__rendered").attr("title", "");
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Aggiorna un <select> creato con select2 impostando un valore di default
|
||
|
*/
|
||
|
function set_default_select( dst_obj, option_value, option_label ){
|
||
|
$(dst_obj).find('option').remove();
|
||
|
$(dst_obj).append('<option>');
|
||
|
$option = $(dst_obj).find('option');
|
||
|
$option.val( option_value );
|
||
|
$option.html( option_label );
|
||
|
$option.prop('selected', true);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Ottengo l'object corretto per leggere gli attributi di una <option> generata da select2 (viene generata in 2 modi diversi!)
|
||
|
*/
|
||
|
function select2_get_data( obj, item ){
|
||
|
$select_obj = obj.select2('data');
|
||
|
|
||
|
if( $select_obj[0] == undefined ){
|
||
|
return undefined;
|
||
|
} else {
|
||
|
if( $select_obj[0].selected == false ){
|
||
|
return $select_obj[0];
|
||
|
} else {
|
||
|
return $select_obj[0].element.dataset;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
//Inputmask
|
||
|
function start_inputmask() {
|
||
|
//Inizializzazione cifre decimali a X decimali
|
||
|
$inputmasks = $('.inputmask-decimal');
|
||
|
|
||
|
var decimali = <?php echo get_var("Cifre decimali"); ?>;
|
||
|
|
||
|
for (i = 0; i < $inputmasks.length; i++) {
|
||
|
$inputmask = jQuery($inputmasks[i]);
|
||
|
|
||
|
new_value = $inputmask.val().replace(',', '.');
|
||
|
new_value = parseFloat(new_value);
|
||
|
new_value = new_value.toFixed(decimali);
|
||
|
new_value = new_value.replace('.', ',');
|
||
|
$inputmask.val(new_value);
|
||
|
}
|
||
|
|
||
|
//Input mask
|
||
|
if (isMobile.any()) {
|
||
|
$('.inputmask-decimal, .inputmask-integer').each(function() {
|
||
|
val = $(this).val();
|
||
|
val = val.replace(',', '.');
|
||
|
$(this).attr('type', 'tel').val(val);
|
||
|
});
|
||
|
} else {
|
||
|
$(".date-mask").inputmask("dd/mm/yyyy", {
|
||
|
"placeholder": "dd/mm/yyyy"
|
||
|
});
|
||
|
$("[data-mask]").inputmask();
|
||
|
$('.inputmask-decimal').inputmask("decimal", {
|
||
|
"radixPoint": ",",
|
||
|
"digits": decimali
|
||
|
});
|
||
|
$('.inputmask-integer').inputmask("decimal", {
|
||
|
"radixPoint": ",",
|
||
|
"digits": 0
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function start_timepicker() {
|
||
|
$(".time-mask").timepicker({
|
||
|
minuteStep: 5,
|
||
|
showInputs: false,
|
||
|
disableFocus: true,
|
||
|
showMeridian: false,
|
||
|
defaultTime: false
|
||
|
}).on('show.timepicker', function(e) {
|
||
|
$(".glyphicon-chevron-up").removeClass("glyphicon glyphicon-chevron-up").addClass("fa fa-chevron-up");
|
||
|
$(".glyphicon-chevron-down").removeClass("glyphicon glyphicon-chevron-down").addClass("fa fa-chevron-down");
|
||
|
});
|
||
|
}
|
||
|
/*
|
||
|
Funzione per far scrollare la pagina fino a un id + focus e offset
|
||
|
es: ScrollToAndFocus ('id',0,'','Attenzione');
|
||
|
*/
|
||
|
function ScrollToAndFocus(id, offset, focus, messaggio) {
|
||
|
$('html,body').animate({
|
||
|
scrollTop: $('#' + id).offset().top + offset
|
||
|
}, 'slow', function() {
|
||
|
if (messaggio != '') {
|
||
|
alert(messaggio);
|
||
|
messaggio = '';
|
||
|
};
|
||
|
if (focus != '') {
|
||
|
$('#' + focus).focus();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function session_keep_alive() {
|
||
|
$.get('<?php echo $rootdir; ?>/core.php');
|
||
|
};
|
||
|
|
||
|
function force_decimal(n) {
|
||
|
n = n.replace( ":", "." );
|
||
|
n = n.replace(",", ".");
|
||
|
return parseFloat(n);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Ritorna il numero n come decimale con la virgola al posto del punto
|
||
|
*/
|
||
|
function decimals_with_commas(n, n_decimals) {
|
||
|
n = parseFloat(n);
|
||
|
n = n.toFixed(n_decimals);
|
||
|
n = n.toString();
|
||
|
n = n.replace('.', ',');
|
||
|
|
||
|
return n;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Ritorna un array associativo con i parametri passati via GET
|
||
|
*/
|
||
|
function getUrlVars(url = '') {
|
||
|
var vars = [],
|
||
|
hash;
|
||
|
if (url == '')
|
||
|
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
|
||
|
else
|
||
|
var hashes = url.slice(url.indexOf('?') + 1).split('&');
|
||
|
for (var i = 0; i < hashes.length; i++) {
|
||
|
hash = hashes[i].split('=');
|
||
|
vars.push(hash[0]);
|
||
|
vars[hash[0]] = hash[1];
|
||
|
}
|
||
|
|
||
|
return vars;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
Data e ora aggiornate
|
||
|
*/
|
||
|
function clock() {
|
||
|
var now = new Date();
|
||
|
now.getHours() < 10 ? h = "0" + now.getHours() : h = now.getHours();
|
||
|
now.getMinutes() < 10 ? m = "0" + now.getMinutes() : m = now.getMinutes();
|
||
|
now.getSeconds() < 10 ? s = "0" + now.getSeconds() : s = now.getSeconds();
|
||
|
now.getDate() < 10 ? dd = "0" + now.getDate() : dd = now.getDate();
|
||
|
(now.getMonth() + 1) < 10 ? mm = "0" + (now.getMonth() + 1) : mm = (now.getMonth() + 1);
|
||
|
yy = now.getFullYear();
|
||
|
|
||
|
var outStr = dd + '/' + mm + '/' + yy + ' ' + h + ':' + m + ':' + s;
|
||
|
$('#datetime').html(outStr);
|
||
|
setTimeout('clock()', 1000);
|
||
|
}
|
||
|
|
||
|
function stopTableSorting(e) {
|
||
|
if (!e) var e = window.event
|
||
|
e.cancelBubble = true;
|
||
|
if (e.stopPropagation) e.stopPropagation();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Funzione per impostare un valore ad un array in $_SESSION
|
||
|
*/
|
||
|
function session_set_array(session_array, value, inversed) {
|
||
|
if (inversed == undefined) {
|
||
|
inversed = 1;
|
||
|
}
|
||
|
|
||
|
$.get("<?php echo $rootdir ?>/ajax.php?op=session_set_array&session=" + session_array + "&value=" + value + "&inversed=" + inversed);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Funzione per impostare un valore ad una sessione
|
||
|
*/
|
||
|
function session_set(session_array, value, clear) {
|
||
|
if (clear == undefined) {
|
||
|
clear = 1;
|
||
|
}
|
||
|
|
||
|
$.get("<?php echo $rootdir ?>/ajax.php?op=session_set&session=" + session_array + "&value=" + value + "&clear=" + clear);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Funzione per gestire i contatori testuali nel formato x/total.
|
||
|
* Viene dato un id del campo da verificare come input, viene letto il testo nella forma [0-9]/[0-9] e viene fatto
|
||
|
* il replate del primo numero in base a quanti elementi sono stati trovati (valore passato per parametro)
|
||
|
*/
|
||
|
function update_counter(id, new_value) {
|
||
|
new_text = $('#' + id).html();
|
||
|
|
||
|
//Estraggo parte numerica (formato x/total)
|
||
|
pattern = /([^0-9]+)([0-9]+)\/([0-9]+)([^0-9]+)/;
|
||
|
new_text = new_text.replace(pattern, "$1" + new_value + "/$3$4");
|
||
|
|
||
|
//Estraggo totale (parte numerica dopo lo slash /)
|
||
|
matches = pattern.exec(new_text);
|
||
|
total = matches[3];
|
||
|
|
||
|
$('#' + id).html(new_text);
|
||
|
|
||
|
if (new_value == total) {
|
||
|
$('#' + id).removeClass('btn-warning').removeClass('btn-danger').addClass('btn-success');
|
||
|
} else if (new_value == 0) {
|
||
|
$('#' + id).removeClass('btn-warning').removeClass('btn-success').addClass('btn-danger');
|
||
|
} else {
|
||
|
$('#' + id).removeClass('btn-success').removeClass('btn-danger').addClass('btn-warning');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function backtotop_button() {
|
||
|
// browser window scroll (in pixels) after which the "back to top" link is shown
|
||
|
var offset = 10,
|
||
|
|
||
|
//browser window scroll (in pixels) after which the "back to top" link opacity is reduced
|
||
|
offset_opacity = 100,
|
||
|
|
||
|
//duration of the top scrolling animation (in ms)
|
||
|
scroll_top_duration = 700,
|
||
|
|
||
|
//grab the "back to top" link
|
||
|
$back_to_top = $('#back-to-top');
|
||
|
|
||
|
//hide or show the "back to top" link
|
||
|
$(window).scroll(function() {
|
||
|
($(this).scrollTop() > offset) ? $back_to_top.addClass('cd-is-visible'): $back_to_top.removeClass('cd-is-visible cd-fade-out');
|
||
|
if ($(this).scrollTop() > offset_opacity) {
|
||
|
$back_to_top.addClass('cd-fade-out');
|
||
|
}
|
||
|
});
|
||
|
|
||
|
//smooth scroll to top
|
||
|
$back_to_top.on('click', function(event) {
|
||
|
event.preventDefault();
|
||
|
$('body,html').animate({
|
||
|
scrollTop: 0,
|
||
|
}, scroll_top_duration);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
Number.prototype.formatMoney = function(c, d, t) {
|
||
|
var n = this,
|
||
|
c = isNaN(c = Math.abs(c)) ? 2 : c,
|
||
|
d = d == undefined ? "." : d,
|
||
|
t = t == undefined ? "," : t,
|
||
|
s = n < 0 ? "-" : "",
|
||
|
i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "",
|
||
|
j = (j = i.length) > 3 ? j % 3 : 0;
|
||
|
|
||
|
return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
|
||
|
}
|
||
|
|
||
|
function reset(type = ''){
|
||
|
if(type == '') $('[id^=th_] input').val('').trigger( 'keyup' );
|
||
|
else $('[id^=th_'+type+'] input').val('').trigger( 'keyup' );
|
||
|
}
|
||
|
|
||
|
function equalHeight(selector){
|
||
|
$(selector).css("min-height", 0);
|
||
|
|
||
|
var maxHeight = 0;
|
||
|
$(selector).each(function(){
|
||
|
var thisH = $(this).outerHeight();
|
||
|
if (thisH > maxHeight) { maxHeight = thisH; }
|
||
|
});
|
||
|
|
||
|
$(selector).css("min-height", maxHeight);
|
||
|
|
||
|
$(window).on("resize", function(){
|
||
|
equalHeight(selector);
|
||
|
});
|
||
|
}
|
||
|
<?php
|
||
|
}
|
||
|
?>
|