229 messaggi dal 20 novembre 2014
Ciao,
giusto per dare aggiornamenti, sembra funzionare, bisogna solo entrare nell'ottica della funzione ajax un po' contorta che ci sta dietro!
Grazie
229 messaggi dal 20 novembre 2014
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
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
la parte lato server non mi è utile perché non la posso mandare in esecuzione per capire che JSON produce.
Dovresti guardare il pannello "Network" degli strumenti di sviluppo del browser, fare doppioclick sulla richiesta ajax del calendario, e guardare il risultato JSON restituito dal server. Postalo qui, così magari riesco a riprodurre il problema.

ciao,
Moreno

Enjoy learning and just keep making
229 messaggi dal 20 novembre 2014
Sarà sicuramente un fattore di mia ignoranza ma non vedo granchè che possa tornare utile, ho fatto gli screenshot.
Questa è quando carica il calendario:

https://s16.postimg.org/wpzrtabr9/image.jpg

mentre questa è quando clicco su Giorno e dovrei vedere il dettaglio degli orari e le attività

https://s22.postimg.org/e52hnobep/image.jpg

Grazie sempre per la tua disponibilità
229 messaggi dal 20 novembre 2014
Nessuna idea?

ah dimenticavo... la lingua italiana fullcalendar l'ha presa correttamente adesso ho anche i pulsanti in italiano, mi rimane questa roba della data che non capisco.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
dalle immagini si vede una query a ?start=2016-09-26&end=2016-11-07. Clicca su di essa e vai nella scheda "Response" a vedere qual è stata la risposta del server (sarà del contenuto JSON). Copia e incolla qui quel contenuto.

ciao,
Moreno

Enjoy learning and just keep making
229 messaggi dal 20 novembre 2014
Ciao Moreno,
grazie mille per l'aiuto.

Questa è la risposta

[{"id":8,"title":"aa,bb-  casa","start":"2016-10-03","end":"2016-10-03","className":"test","InizioFine":"03/10/2016 15:30:00 - 03/10/2016 17:30:00","Attivita":"ra sga","OpResponsabile":"aa","OpCoinvolti":"bb- ","UnitaOperativa":"casa","Note":null,"allDay":false},{"id":9,"title":"aa,bb-  casa2","start":"2016-10-03","end":"2016-10-03","className":"test","InizioFine":"03/10/2016 12:00:00 - 03/10/2016 14:00:00","Attivita":"Ra ","OpResponsabile":"aa","OpCoinvolti":"bb- ","UnitaOperativa":"casa2","Note":null,"allDay":false},{"id":10,"title":"aa,bb-  casa","start":"2016-10-03","end":"2016-10-03","className":"test","InizioFine":"03/10/2016 16:30:00 - 03/10/2016 17:00:00","Attivita":"Programmazione","OpResponsabile":"aa","OpCoinvolti":"bb- ","UnitaOperativa":"casa","Note":null,"allDay":false},{"id":11,"title":"aa,bb-  casa3","start":"2016-10-03","end":"2016-10-03","className":"test","InizioFine":"03/10/2016 09:00:00 - 03/10/2016 10:00:00","Attivita":"Consulenza ","OpResponsabile":"aa","OpCoinvolti":"bb- ","UnitaOperativa":"casa3","Note":null,"allDay":false}]


sembra che start ed end che dovrebbero essere le variabili che gestiscono data-orario non forniscano proprio l'orario...
229 messaggi dal 20 novembre 2014
Si ti confermo, ho appena provato, lascio la risposta per qualche altro... il problema era esattamente quello!
Praticamente all'oggetto json passavo la data senza l'orario e ovviamente interpretava tutto come 0:00

Grazie mille Moreno per il supporto sempre presente :)
Buona giornata

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.