Figuriamoci se la rognetta non doveva uscire, dunque di default ho messo la visualizzazione mensile e sembra tutto corretto, mentre se vado sulla visualizzazione giornaliera non riesce a convertire l'orario risulta sempre 12:00 e quindi ovviamente me li trovo tutti sulla stessa riga!
Ho provato anche ad aggiungere il timezone come dicei tu ma niente, provo a postare il codice magari mi sai dire dove sta l'inghippo.
<script>
$(document).ready(function () {
var sourceFullView = { url: '/ProgrammazioneAT/GetCalendarioEventi/' };
var sourceSummaryView = { url: '/ProgrammazioneAT/GetCalendarioRiepilogo/' };
var CalLoading = true;
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
defaultView: 'month',
editable: true,
allDaySlot: false,
selectable: true,
slotMinutes: 15,
//lang: 'it',
timezoneParam: "local",
events: '/ProgrammazioneAT/GetCalendarioEventi/',
eventClick: function (calEvent, jsEvent, view) {
alert('Committente: ' + calEvent.Committente
+ "\nUnita Operativa: " + calEvent.UnitaOperativa
+ "\nData Inizio-Fine: " + calEvent.InizioFine
+ "\nAttivita: " + calEvent.Attivita
+ "\nOperatore Responsabile: " + calEvent.OpResponsabile
+ "\nOperatori Coinvolti: " + calEvent.OpCoinvolti
+ "\nNote: " + calEvent.Note
);
},
eventDrop: function (event, dayDelta, minuteDelta, allDay, revertFunc) {
if (confirm("Confirm move?")) {
UpdateEvent(event.id, event.start);
}
else {
revertFunc();
}
},
eventResize: function (event, dayDelta, minuteDelta, revertFunc) {
if (confirm("Confirm change appointment length?")) {
UpdateEvent(event.id, event.start, event.end);
}
else {
revertFunc();
}
},
dayClick: function (date, allDay, jsEvent, view) {
$('#eventTitle').val("");
$('#eventDate').val($.fullCalendar.formatDate(date, 'dd/MM/yyyy'));
$('#eventTime').val($.fullCalendar.formatDate(date, 'HH:mm'));
ShowEventPopup(date);
},
viewRender: function (view, element) {
if (!CalLoading) {
if (view.name == 'month') {
$('#calendar').fullCalendar('removeEventSource', sourceFullView);
$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar('addEventSource', sourceSummaryView);
}
else {
$('#calendar').fullCalendar('removeEventSource', sourceSummaryView);
$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar('addEventSource', sourceFullView);
}
}
}
});
CalLoading = false;
});
$('#btnPopupCancel').click(function () {
ClearPopupFormValues();
$('#popupEventForm').hide();
});
$('#btnPopupSave').click(function () {
$('#popupEventForm').hide();
var dataRow = {
'Title': $('#eventTitle').val(),
'NewEventDate': $('#eventDate').val(),
'NewEventTime': $('#eventTime').val(),
'NewEventDuration': $('#eventDuration').val()
}
ClearPopupFormValues();
$.ajax({
type: 'POST',
url: "/Home/SaveEvent",
data: dataRow,
success: function (response) {
if (response == 'True') {
$('#calendar').fullCalendar('refetchEvents');
alert('New event saved!');
}
else {
alert('Error, could not save event!');
}
}
});
});
function ShowEventPopup(date) {
ClearPopupFormValues();
$('#popupEventForm').show();
$('#eventTitle').focus();
}
function ClearPopupFormValues() {
$('#eventID').val("");
$('#eventTitle').val("");
$('#eventDateTime').val("");
$('#eventDuration').val("");
}
function UpdateEvent(EventID, EventStart, EventEnd) {
var dataRow = {
'ID': EventID,
'NewEventStart': EventStart,
'NewEventEnd': EventEnd
}
$.ajax({
type: 'POST',
url: "/Home/UpdateEvent",
dataType: "json",
contentType: "application/json",
data: JSON.stringify(dataRow)
});
}
</script>
</head>
<body>
<h2>Attività Programmate</h2>
<p>
@Html.ActionLink("Crea Nuova Programmazione", "Create") |
@Html.ActionLink("Visualizzazione Classica", "Index")
</p>
<div class="container">
<div id='calendar' style="width:100%"></div>
</div>
</body>
</html>
mentre questo è il metodo sul controller per prendere i dati (ne ho postato solo uno perchè l'altro è uguale)
public JsonResult GetCalendarioEventi(DateTime start, DateTime end)
{
//var fromDate = ConvertFromUnixTimestamp(start);
//var toDate = ConvertFromUnixTimestamp(end);
DateTime start1 = System.DateTime.Now;
DateTime end1 = System.DateTime.Now.AddDays(10); //vorrei prendere sempre fino a fine mese
var programmazione = (from p in db.ProgrammazioneAT
where p.DataInizio >= start && p.DataInizio <= end && p.Attivo == true
select p).ToList();
//var progr = (from pr in db.ProgrammazioneAT
// select pr).ToList();
List<V_ProgrammazioneAT> ls = new List<V_ProgrammazioneAT>();
foreach (var item in programmazione)
{
//Prendo i committenti
getCommittenti(item.Committente.ToString());
string committente = ViewBag.ClientiDescriz;
//Prendo L'operatore di default
string operatoredefault = (from p in db.Personale
where p.IDPersonale == item.OperatoreResponsabile
select p.NomeUtente).SingleOrDefault();
string operatori = "";
foreach (var itemop in item.OperatoriProgAT)
{
operatori += itemop.nomeUtenteOperatore + " - ";
}
V_ProgrammazioneAT pr = new V_ProgrammazioneAT();
pr.Attivita = item.Attivita;
pr.Attivo = item.Attivo;
pr.DataFine = item.DataFine;
pr.DataInizio = item.DataInizio;
pr.IDProgrammazioneAT = item.IDProgrammazioneAT;
pr.Luogo = item.Luogo;
pr.Modifica = item.Modifica;
pr.Note = item.Note;
pr.NumTecnici = item.NumTecnici;
pr.Utente = item.Utente;
pr.Committente = committente;
pr.OperatoreResponsabile = operatoredefault;
pr.OperatoriCoinvolti = operatori;
ls.Add(pr);
}
var eventList = from e in ls
select new
{
id = e.IDProgrammazioneAT,
//title = e.Committente,
title = e.OperatoreResponsabile + ","+e.OperatoriCoinvolti+" "+e.Luogo,
start = e.DataInizio.ToString("yyyy-MM-dd"), //string date = dt.ToString("MM/dd/yyyy").Replace('-', '/')
end = e.DataFine.ToString("yyyy-MM-dd"),
className = "test", //potrei passare una classe css per i colori
InizioFine = e.DataInizio + " - " + e.DataFine,
Attivita = e.Attivita,
OpResponsabile = e.OperatoreResponsabile,
OpCoinvolti = e.OperatoriCoinvolti,
UnitaOperativa = e.Luogo,
Committente = e.Committente,
Note = e.Note,
allDay = false
};
var rows = eventList.ToArray();
return Json(rows, JsonRequestBehavior.AllowGet);
}
Noterai che ho fatto un casino e sono andato di query al posto di usare le proprietà di navigazione ma purtroppo i committenti vengono letti da un secondo db che tiene con le pinze e quindi ho fatto una SqlConnection che non mi consente di fare operazioni particolari.
Hai idea di cosa maledizione possa essere il problema? Io ho come l'impressione che non rileva i linguaggi che sono in una cartella ma non mi restituisce neppure l'errore sulla console del browser
Grazie Anticipate
Buon Weekend
Ciao