openstamanager/modules/dashboard/edit.php

728 lines
27 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
include_once __DIR__.'/../../core.php';
// Impostazione filtri di default a tutte le selezioni la prima volta
if (!isset($_SESSION['dashboard']['idtecnici'])) {
$rs = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE deleted_at IS NULL AND descrizione='Tecnico'");
$_SESSION['dashboard']['idtecnici'] = ["'-1'"];
for ($i = 0; $i < count($rs); ++$i) {
$_SESSION['dashboard']['idtecnici'][] = "'".$rs[$i]['id']."'";
}
}
if (!isset($_SESSION['dashboard']['idstatiintervento'])) {
$rs = $dbo->fetchArray('SELECT idstatointervento AS id, descrizione FROM in_statiintervento WHERE deleted_at IS NULL');
$_SESSION['dashboard']['idstatiintervento'] = ["'-1'"];
for ($i = 0; $i < count($rs); ++$i) {
$_SESSION['dashboard']['idstatiintervento'][] = "'".$rs[$i]['id']."'";
}
}
if (!isset($_SESSION['dashboard']['idtipiintervento'])) {
$rs = $dbo->fetchArray('SELECT idtipointervento AS id, descrizione FROM in_tipiintervento');
$_SESSION['dashboard']['idtipiintervento'] = ["'-1'"];
for ($i = 0; $i < count($rs); ++$i) {
$_SESSION['dashboard']['idtipiintervento'][] = "'".$rs[$i]['id']."'";
}
}
if (!isset($_SESSION['dashboard']['idzone'])) {
$rs = $dbo->fetchArray('SELECT id, descrizione FROM an_zone');
$_SESSION['dashboard']['idzone'] = ["'-1'"];
// "Nessuna zona" di default
$_SESSION['dashboard']['idzone'][] = "'0'";
for ($i = 0; $i < count($rs); ++$i) {
$_SESSION['dashboard']['idzone'][] = "'".$rs[$i]['id']."'";
}
}
// Stati intervento
$checks = '';
$count = 0;
$total = 0;
$rs = $dbo->fetchArray('SELECT idstatointervento AS id, descrizione, colore FROM in_statiintervento WHERE deleted_at IS NULL ORDER BY descrizione ASC');
$total = count($rs);
$allchecksstati = '';
for ($i = 0; $i < count($rs); ++$i) {
$attr = '';
foreach ($_SESSION['dashboard']['idstatiintervento'] as $idx => $val) {
if ($val == "'".$rs[$i]['id']."'") {
$attr = 'checked="checked"';
++$count;
}
}
$checks .= "<li><input type='checkbox' id='idstato_".$rs[$i]['id']."' value=\"".$rs[$i]['id'].'" '.$attr." onclick=\"$.when ( session_set_array( 'dashboard,idstatiintervento', '".$rs[$i]['id']."' ) ).promise().then(function( ){ $('#calendar').fullCalendar('refetchEvents'); }); update_counter( 'idstati_count', $('#idstati_ul').find('input:checked').length ); \"> <label for='idstato_".$rs[$i]['id']."'> <span class='badge' style=\"color:".color_inverse($rs[$i]['colore']).'; background:'.$rs[$i]['colore'].';">'.$rs[$i]['descrizione']."</span></label></li>\n";
$allchecksstati .= "session_set_array( 'dashboard,idstatiintervento', '".$rs[$i]['id']."', 0 ); ";
}
if ($count == $total) {
$class = 'btn-success';
} elseif ($count == 0) {
$class = 'btn-danger';
} else {
$class = 'btn-warning';
}
if ($total == 0) {
$class = 'btn-primary disabled';
}
?>
<!-- Filtri -->
<div class="row">
<!-- STATI INTERVENTO -->
<div class="dropdown col-md-3">
<a class="btn <?php echo $class; ?> btn-block" data-toggle="dropdown" href="javascript:;" id="idstati_count"><i class="fa fa-filter"></i> <?php echo tr('Stati intervento'); ?> (<?php echo $count.'/'.$total; ?>) <i class="caret"></i></a>
<ul class="dropdown-menu" role="menu" id="idstati_ul">
<?php echo $checks; ?>
<div class="btn-group pull-right">
<button id="selectallstati" onclick="<?php echo $allchecksstati; ?>" class="btn btn-primary btn-xs" type="button"><?php echo tr('Tutti'); ?></button>
<button id="deselectallstati" class="btn btn-danger btn-xs" type="button"><i class="fa fa-times"></i></button>
</div>
</ul>
</div>
<?php
// Tipi intervento
$checks = '';
$count = 0;
$total = 0;
$rs = $dbo->fetchArray('SELECT idtipointervento AS id, descrizione FROM in_tipiintervento ORDER BY descrizione ASC');
$total = count($rs);
$allcheckstipi = '';
for ($i = 0; $i < count($rs); ++$i) {
$attr = '';
foreach ($_SESSION['dashboard']['idtipiintervento'] as $idx => $val) {
if ($val == "'".$rs[$i]['id']."'") {
$attr = 'checked="checked"';
++$count;
}
}
$checks .= "<li><input type='checkbox' id='idtipo_".$rs[$i]['id']."' value=\"".$rs[$i]['id'].'" '.$attr." onclick=\"$.when ( session_set_array( 'dashboard,idtipiintervento', '".$rs[$i]['id']."' ) ).promise().then(function( ){ $('#calendar').fullCalendar('refetchEvents'); }); update_counter( 'idtipi_count', $('#idtipi_ul').find('input:checked').length ); \"> <label for='idtipo_".$rs[$i]['id']."'> ".$rs[$i]['descrizione']."</label></li>\n";
$allcheckstipi .= "session_set_array( 'dashboard,idtipiintervento', '".$rs[$i]['id']."', 0 ); ";
}
if ($count == $total) {
$class = 'btn-success';
} elseif ($count == 0) {
$class = 'btn-danger';
} else {
$class = 'btn-warning';
}
if ($total == 0) {
$class = 'btn-primary disabled';
}
?>
<!-- TIPI DI INTERVENTO -->
<div class="dropdown col-md-3">
<a class="btn <?php echo $class; ?> btn-block" data-toggle="dropdown" href="javascript:;" id="idtipi_count"><i class="fa fa-filter"></i> <?php echo tr('Tipi intervento'); ?> (<?php echo $count.'/'.$total; ?>) <i class="caret"></i></a>
<ul class="dropdown-menu" role="menu" id="idtipi_ul">
<?php echo $checks; ?>
<div class="btn-group pull-right">
<button id="selectalltipi" onclick="<?php echo $allcheckstipi; ?>" class="btn btn-primary btn-xs" type="button"><?php echo tr('Tutti'); ?></button>
<button id="deselectalltipi" class="btn btn-danger btn-xs" type="button"><i class="fa fa-times"></i></button>
</div>
</ul>
</div>
<?php
// Tecnici
$checks = '';
$count = 0;
$total = 0;
$totale_tecnici = 0; // conteggia tecnici eliminati e non
$rs = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale, colore FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica
LEFT OUTER JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id
WHERE an_anagrafiche.deleted_at IS NULL AND an_tipianagrafiche.descrizione='Tecnico' ".Modules::getAdditionalsQuery('Interventi').' GROUP BY an_anagrafiche.idanagrafica ORDER BY ragione_sociale ASC');
$total = count($rs);
$totale_tecnici += $total;
$allchecktecnici = '';
for ($i = 0; $i < count($rs); ++$i) {
$attr = '';
foreach ($_SESSION['dashboard']['idtecnici'] as $idx => $val) {
if ($val == "'".$rs[$i]['id']."'") {
$attr = 'checked="checked"';
++$count;
}
}
$checks .= "<li><input type='checkbox' id='tech_".$rs[$i]['id']."' value=\"".$rs[$i]['id'].'" '.$attr." onclick=\"$.when ( session_set_array( 'dashboard,idtecnici', '".$rs[$i]['id']."' ) ).promise().then(function( ){ $('#calendar').fullCalendar('refetchEvents'); }); update_counter( 'idtecnici_count', $('#idtecnici_ul').find('input:checked').length ); \"> <label for='tech_".$rs[$i]['id']."'><span class='badge' style=\"color:#000; background:transparent; border: 1px solid ".$rs[$i]['colore'].';">'.$rs[$i]['ragione_sociale']."</span></label></li>\n";
$allchecktecnici .= "session_set_array( 'dashboard,idtecnici', '".$rs[$i]['id']."', 0 ); ";
}
// TECNICI ELIMINATI CON ALMENO 1 INTERVENTO
$rs = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica INNER JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica WHERE deleted_at IS NOT NULL AND descrizione='Tecnico' GROUP BY an_anagrafiche.idanagrafica ORDER BY ragione_sociale ASC");
$total = count($rs);
$totale_tecnici += $total;
if ($total > 0) {
$checks .= "<li><hr>Tecnici eliminati:</li>\n";
for ($i = 0; $i < count($rs); ++$i) {
$attr = '';
foreach ($_SESSION['dashboard']['idtecnici'] as $idx => $val) {
if ($val == "'".$rs[$i]['id']."'") {
$attr = 'checked="checked"';
++$count;
}
}
$checks .= "<li><input type='checkbox' id='tech_".$rs[$i]['id']."' value=\"".$rs[$i]['id'].'" '.$attr." onclick=\"$.when ( session_set_array( 'dashboard,idtecnici', '".$rs[$i]['id']."' ) ).promise().then(function( ){ $('#calendar').fullCalendar('refetchEvents'); }); update_counter( 'idtecnici_count', $('#idtecnici_ul').find('input:checked').length ); \"> <label for='tech_".$rs[$i]['id']."'> ".$rs[$i]['ragione_sociale']."</label></li>\n";
$allchecktecnici .= "session_set_array( 'dashboard,idtecnici', '".$rs[$i]['id']."', 0 ); ";
} // end for
} // end if
if ($count == $totale_tecnici) {
$class = 'btn-success';
} elseif ($count == 0) {
$class = 'btn-danger';
} else {
$class = 'btn-warning';
}
if ($totale_tecnici == 0) {
$class = 'btn-primary disabled';
}
?>
<!-- TECNICI -->
<div class="dropdown col-md-3">
<a class="btn <?php echo $class; ?> btn-block" data-toggle="dropdown" href="javascript:;" id="idtecnici_count"><i class="fa fa-filter"></i> <?php echo tr('Tecnici'); ?> (<?php echo $count.'/'.$totale_tecnici; ?>) <i class="caret"></i></a>
<ul class="dropdown-menu" role="menu" id="idtecnici_ul">
<?php echo $checks; ?>
<div class="btn-group pull-right">
<button id="selectalltecnici" onclick="<?php echo $allchecktecnici; ?>" class="btn btn-primary btn-xs" type="button"><?php echo tr('Tutti'); ?></button>
<button id="deselectalltecnici" class="btn btn-danger btn-xs" type="button"><i class="fa fa-times"></i></button>
</div>
</ul>
</div>
<?php
// Zone
$allcheckzone = null;
$checks = '';
$count = 0;
$total = 0;
$rs = $dbo->fetchArray('(SELECT 0 AS ordine, \'0\' AS id, \'Nessuna zona\' AS descrizione) UNION (SELECT 1 AS ordine, id, descrizione FROM an_zone) ORDER BY ordine, descrizione ASC');
$total = count($rs);
for ($i = 0; $i < count($rs); ++$i) {
$attr = '';
foreach ($_SESSION['dashboard']['idzone'] as $idx => $val) {
if ($val == "'".$rs[$i]['id']."'") {
$attr = 'checked="checked"';
++$count;
}
}
$checks .= "<li><input type='checkbox' id='idzone_".$rs[$i]['id']."' value=\"".$rs[$i]['id'].'" '.$attr." onclick=\"$.when ( session_set_array( 'dashboard,idzone', '".$rs[$i]['id']."' ) ).promise().then(function( ){ $('#calendar').fullCalendar('refetchEvents'); update_counter( 'idzone_count', $('#idzone_ul').find('input:checked').length ); }); \"> <label for='idzone_".$rs[$i]['id']."'> ".$rs[$i]['descrizione']."</label></li>\n";
$allcheckzone = "session_set_array( 'dashboard,idzone', '".$rs[$i]['id']."', 0 ); ";
}
if ($count == $total) {
$class = 'btn-success';
} elseif ($count == 0) {
$class = 'btn-danger';
} else {
$class = 'btn-warning';
}
if ($total == 0) {
$class = 'btn-primary disabled';
}
?>
<!-- ZONE -->
<div class="dropdown col-md-3">
<a class="btn <?php echo $class; ?> btn-block" data-toggle="dropdown" href="javascript:;" id="idzone_count"><i class="fa fa-filter"></i> <?php echo tr('Zone'); ?> (<?php echo $count.'/'.$total; ?>) <i class="caret"></i></a>
<ul class="dropdown-menu" role="menu" id="idzone_ul">
<?php echo $checks; ?>
<div class="btn-group pull-right">
<button id="selectallzone" onclick="<?php echo $allcheckzone; ?>" class="btn btn-primary btn-xs" type="button"><?php echo tr('Tutti'); ?></button>
<button id="deselectallzone" class="btn btn-danger btn-xs" type="button"><i class="fa fa-times"></i></button>
</div>
</ul>
</div>
</div>
<br>
<?php
$qp = 'SELECT MONTH(data_richiesta) AS mese, YEAR(data_richiesta) AS anno FROM (co_promemoria INNER JOIN co_contratti ON co_promemoria.idcontratto=co_contratti.id) INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE is_pianificabile = 1) ) AND idintervento IS NULL
UNION SELECT MONTH(data_scadenza) AS mese, YEAR(data_scadenza) AS anno FROM (co_ordiniservizio INNER JOIN co_contratti ON co_ordiniservizio.idcontratto=co_contratti.id) INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE is_pianificabile = 1) ) AND idintervento IS NULL
UNION SELECT MONTH(data_richiesta) AS mese, YEAR(data_richiesta) AS anno FROM in_interventi INNER JOIN an_anagrafiche ON in_interventi.idanagrafica=an_anagrafiche.idanagrafica WHERE (SELECT COUNT(*) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento = in_interventi.id) = 0 ORDER BY anno,mese';
$rsp = $dbo->fetchArray($qp);
if (!empty($rsp)) {
echo '
<div class="row">
<div class="col-md-10">';
}
echo '
<div id="calendar"></div>';
if (!empty($rsp)) {
echo '
</div>
<div id="external-events" class="hidden-xs hidden-sm col-md-2">
<h4>'.tr('Promemoria da pianificare').'</h4>';
// Controllo pianificazioni mesi precedenti
$qp_old = 'SELECT co_promemoria.id FROM co_promemoria INNER JOIN co_contratti ON co_promemoria.idcontratto=co_contratti.id WHERE idstato IN(SELECT id FROM co_staticontratti WHERE is_pianificabile = 1) AND idintervento IS NULL AND DATE_ADD(co_promemoria.data_richiesta, INTERVAL 1 DAY) <= NOW()
UNION SELECT co_ordiniservizio.id FROM co_ordiniservizio INNER JOIN co_contratti ON co_ordiniservizio.idcontratto=co_contratti.id WHERE idstato IN(SELECT id FROM co_staticontratti WHERE is_pianificabile = 1) AND idintervento IS NULL AND DATE_ADD(co_ordiniservizio.data_scadenza, INTERVAL 1 DAY) <= NOW()
UNION SELECT in_interventi.id FROM in_interventi INNER JOIN an_anagrafiche ON in_interventi.idanagrafica=an_anagrafiche.idanagrafica WHERE (SELECT COUNT(*) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento = in_interventi.id) = 0 AND DATE_ADD(in_interventi.data_richiesta, INTERVAL 1 DAY) <= NOW()';
$rsp_old = $dbo->fetchNum($qp_old);
if ($rsp_old > 0) {
echo '<div class="alert alert-warning alert-dismissible" role="alert"><i class="fa fa-exclamation-triangle"></i><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> '.tr('Ci sono '.$rsp_old.' interventi scaduti da pianificare.').'</div>';
}
$mesi = months();
// Creo un array con tutti i mesi che contengono interventi
$mesi_interventi = [];
for ($i = 0; $i < sizeof($rsp); ++$i) {
$mese_n = $rsp[$i]['mese'].$rsp[$i]['anno'];
$mese_t = $mesi[intval($rsp[$i]['mese'])].' '.$rsp[$i]['anno'];
$mesi_interventi[$mese_n] = $mese_t;
}
// Aggiungo anche il mese corrente
$mesi_interventi[date('m').date('Y')] = $mesi[intval(date('m'))].' '.date('Y');
// Rimuovo i mesi doppi
array_unique($mesi_interventi);
// Ordino l'array per anno
foreach ($mesi_interventi as $key => &$data) {
ksort($data);
}
echo '<select class="superselect" id="select-intreventi-pianificare">';
foreach ($mesi_interventi as $key => $mese_intervento) {
echo '<option value="'.$key.'">'.$mese_intervento.'</option>';
}
echo '</select>';
echo '<div id="interventi-pianificare"></div>';
echo '
</div>
</div>';
}
$vista = setting('Vista dashboard');
if ($vista == 'mese') {
$def = 'month';
} elseif ($vista == 'giorno') {
$def = 'agendaDay';
} else {
$def = 'agendaWeek';
}
?>
<script type="text/javascript">
$('#select-intreventi-pianificare').change(function(){
var mese = $(this).val();
$.get( '<?php echo $rootdir; ?>/modules/dashboard/actions.php', { op: 'load_intreventi', mese: mese }, function(data){
$('#interventi-pianificare').html(data);
$('#external-events .fc-event').each(function() {
$(this).draggable({
zIndex: 999,
revert: true,
revertDuration: 0
});
});
});
});
$(document).ready(function() {
// Seleziono il mese corrente per gli interventi da pianificare
var date = new Date();
var mese;
date.setDate(date.getDate());
//Note: January is 0, February is 1, and so on.
mese = ('0' + (date.getMonth()+1)).slice(-2) + date.getFullYear();
$('#select-intreventi-pianificare option[value='+mese+']').attr('selected','selected').trigger('change');
$.get( '<?php echo $rootdir; ?>/modules/dashboard/actions.php', { op: 'load_intreventi', mese: mese }, function(data){
$('#interventi-pianificare').html(data);
$('#external-events .fc-event').each(function() {
$(this).draggable({
zIndex: 999,
revert: true,
revertDuration: 0
});
});
});
// Comandi seleziona tutti
$('#selectallstati').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function(i) { // loop through each checkbox
this.checked = true;
$.when (session_set_array( 'dashboard,idstatiintervento', this.value, 0 )).promise().then(function() {
$('#calendar').fullCalendar('refetchEvents');
});
i++;
update_counter( 'idstati_count',i);
});
});
$('#selectalltipi').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function(i) { // loop through each checkbox
this.checked = true;
$.when (session_set_array( 'dashboard,idtipiintervento', this.value, 0 )).promise().then(function() {
$('#calendar').fullCalendar('refetchEvents');
});
i++;
update_counter( 'idtipi_count', i);
});
});
$('#selectalltecnici').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function(i) { // loop through each checkbox
this.checked = true;
$.when (session_set_array( 'dashboard,idtecnici', this.value, 0 )).promise().then(function() {
$('#calendar').fullCalendar('refetchEvents');
});
i++;
update_counter( 'idtecnici_count', i);
});
});
$('#selectallzone').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function(i) { // loop through each checkbox
this.checked = true;
$.when (session_set_array( 'dashboard,idzone', this.value, 0 )).promise().then(function() {
$('#calendar').fullCalendar('refetchEvents');
});
i++
update_counter( 'idzone_count', i);
});
});
// Comandi deseleziona tutti
$('#deselectallstati').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function() { // loop through each checkbox
this.checked = false;
$.when (session_set_array( 'dashboard,idstatiintervento', this.value, 1 )).promise().then(function() {
$('#calendar').fullCalendar('refetchEvents');
});
update_counter( 'idstati_count', 0);
});
});
$('#deselectalltipi').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function() { // loop through each checkbox
this.checked = false;
$.when (session_set_array( 'dashboard,idtipiintervento', this.value, 1 )).promise().then(function() {
$('#calendar').fullCalendar('refetchEvents');
});
update_counter( 'idtipi_count', 0);
});
});
$('#deselectalltecnici').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function() { // loop through each checkbox
this.checked = false;
$.when (session_set_array( 'dashboard,idtecnici', this.value, 1 )).promise().then(function() {
$('#calendar').fullCalendar('refetchEvents');
});
update_counter( 'idtecnici_count', 0);
});
});
$('#deselectallzone').click(function(event) {
$(this).parent().parent().find('li input[type=checkbox]').each(function() { // loop through each checkbox
this.checked = false;
$.when (session_set_array( 'dashboard,idzone', this.value, 1 )).promise().then(function() {
$('#calendar').fullCalendar('refetchEvents');
});
update_counter( 'idzone_count', 0);
});
});
// Creazione del calendario
create_calendar();
// Data di default
$('.fc-prev-button, .fc-next-button, .fc-today-button').click(function(){
var date_start = $('#calendar').fullCalendar('getView').start.format('YYYY-MM-DD');
date_start = moment(date_start);
if('<?php echo $def; ?>'=='month'){
if(date_start.date()>1){
date_start = moment(date_start).add(1, 'M').startOf('month');
}
}
date_start = date_start.format('YYYY-MM-DD');
setCookie('calendar_date_start', date_start, 365);
});
calendar_date_start = getCookie('calendar_date_start');
if (calendar_date_start!='')
$('#calendar').fullCalendar( 'gotoDate', calendar_date_start );
});
function create_calendar(){
$('#external-events .fc-event').each(function() {
// store data so the calendar knows to render an event upon drop
$(this).data('event', {
title: $.trim($(this).text()), // use the element's text as the event title
stick: false // maintain when user navigates (see docs on the renderEvent method)
});
// make the event draggable using jQuery UI
$(this).draggable({
zIndex: 999,
revert: true, // will cause the event to go back to its
revertDuration: 0 // original position after the drag
});
});
var calendar = $('#calendar').fullCalendar({
locale: globals.locale,
<?php
$domenica = setting('Visualizzare la domenica sul calendario');
if (empty($domenica)) {
echo '
hiddenDays: [ 0 ],';
}
?>
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
timeFormat: 'H:mm',
slotLabelFormat: "H:mm",
slotDuration: '00:15:00',
defaultView: '<?php echo $def; ?>',
<?php
echo "
minTime: '".setting('Inizio orario lavorativo')."',
maxTime: '".((setting('Fine orario lavorativo') == '00:00') ?: '23:59:59')."',
";
?>
lazyFetching: true,
selectHelper: true,
eventLimit: false, // allow "more" link when too many events
allDaySlot: false,
loading: function(isLoading, view) {
if(isLoading) {
$('#tiny-loader').fadeIn();
} else {
$('#tiny-loader').hide();
}
},
<?php
if (Modules::getPermission('Interventi') == 'rw') {
?>
droppable: true,
drop: function(date, jsEvent, ui, resourceId) {
data = moment(date).format("YYYY-MM-DD");
ora_dal = moment(date).format("HH:mm");
ora_al = moment(date).add(1, 'hours').format("HH:mm");
ref = $(this).data('ref');
if (ref == 'ordine') {
name = 'idordineservizio';
} else if (ref == 'promemoria') {
name = 'idcontratto_riga';
} else {
name = 'id_intervento';
}
launch_modal('<?php echo tr('Pianifica intervento'); ?>', globals.rootdir + '/add.php?id_module=<?php echo Modules::get('Interventi')['id']; ?>&data='+data+'&orario_inizio='+ora_dal+'&orario_fine='+ora_al+'&ref=dashboard&idcontratto=' + $(this).data('idcontratto') + '&' + name + '=' + $(this).data('id'), 1);
$(this).remove();
$('#bs-popup').on('hidden.bs.modal', function () {
$('#calendar').fullCalendar('refetchEvents');
});
},
selectable: true,
select: function(start, end, allDay) {
data = moment(start).format("YYYY-MM-DD");
ora_dal = moment(start).format("HH:mm");
ora_al = moment(end).format("HH:mm");
launch_modal('<?php echo tr('Aggiungi intervento'); ?>', globals.rootdir + '/add.php?id_module=<?php echo Modules::get('Interventi')['id']; ?>&ref=dashboard&data='+data+'&orario_inizio='+ora_dal+'&orario_fine='+ora_al, 1 );
$('#calendar').fullCalendar('unselect');
},
editable: true,
eventDrop: function(event,dayDelta,minuteDelta,revertFunc) {
$.get(globals.rootdir + "/modules/dashboard/actions.php?op=update_intervento&id="+event.id+"&idintervento="+event.idintervento+"&timeStart="+moment(event.start).format("YYYY-MM-DD HH:mm")+"&timeEnd="+moment(event.end).format("YYYY-MM-DD HH:mm"), function(data,response){
if( response=="success" ){
data = $.trim(data);
if( data!="ok" ){
alert(data);
$('#calendar').fullCalendar('refetchEvents');
revertFunc();
}
else{
return false;
}
}
});
},
eventResize: function(event,dayDelta,minuteDelta,revertFunc) {
$.get(globals.rootdir + "/modules/dashboard/actions.php?op=update_intervento&id="+event.id+"&idintervento="+event.idintervento+"&timeStart="+moment(event.start).format("YYYY-MM-DD HH:mm")+"&timeEnd="+moment(event.end).format("YYYY-MM-DD HH:mm"), function(data,response){
if( response=="success" ){
data = $.trim(data);
if(data != "ok"){
alert(data);
$('#calendar').fullCalendar('refetchEvents');
revertFunc();
}
else{
return false;
}
}
});
},
<?php
}
?>
eventAfterRender: function(event, element) {
element.find('.fc-title').html(event.title);
element.data('idintervento', event.idintervento);
<?php
if (setting('Utilizzare i tooltip sul calendario') == '1') {
?>
element.mouseover( function(){
if( !element.hasClass('tooltipstered') ){
$(this).data('idintervento', event.idintervento );
$.get(globals.rootdir + "/modules/dashboard/actions.php?op=get_more_info&id="+$(this).data('idintervento'), function(data,response){
if( response=="success" ){
data = $.trim(data);
if( data!="ok" ){
element.tooltipster({
content: data,
animation: 'grow',
contentAsHTML: true,
hideOnClick: true,
onlyOne: true,
speed: 200,
delay: 100,
maxWidth: 400,
theme: 'tooltipster-shadow',
touchDevices: true,
trigger: 'hover',
position: 'left'
});
}
else{
return false;
}
$('#calendar').fullCalendar('option', 'contentHeight', 'auto');
}
});
}
});
<?php
}
?>
},
events: {
url: globals.rootdir + "/modules/dashboard/actions.php?op=get_current_month",
type: 'GET',
error: function() {
alert('<?php echo tr('Errore durante la creazione degli eventi'); ?>');
}
}
});
}
</script>