Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rodrigomarden

Problema com horário de verão no schedule primefaces

Recommended Posts

Criei uma agenda utilizando o schedule-primefaces, mas quando chega o horário de verão essa agenda fica toda bagunçada.

Em alguns outros tópicos, vi a respeito de configurar o horário no java para que se utilize o nosso GMT-3, mas não entendi muito bem como fazer.

 

Alguém poderia me ajudar com uma solução direcionada ao schedule?

Abaixo está o código da minha página, se precisar de algum outro código é só informar que eu posto.

Obrigado.

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Agenda</title>
    </h:head>
    <h:body>
        <h:form id="form">
            <script language="javascript">
                PrimeFaces.locales['pt'] = {
                    closeText: 'Fechar',
                    prevText: 'Anterior',
                    nextText: 'Próximo',
                    currentText: 'Começo',
                    monthNames: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],
                    monthNamesShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],
                    dayNames: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],
                    dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', '---', 'Sáb'],
                    dayNamesMin: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],
                    weekHeader: 'Semana',
                    firstDay: 1,
                    isRTL: false,
                    showMonthAfterYear: false,
                    yearSuffix: '',
                    timeOnlyTitle: 'Só Horas',
                    timeText: 'Tempo',
                    hourText: 'Hora',
                    minuteText: 'Minuto',
                    secondText: 'Segundo',
                    currentText: 'Data Atual',
                            ampm: false,
                    month: 'Mês',
                    week: 'Semana',
                    day: 'Dia',
                    allDayText: 'Todo Dia'
                };
            </script>

            <p:growl id="messages" showDetail="true" />

            <h:panelGrid columns="3">
                <p:commandButton value="Cadastrar Responsável" action="#{agendaController.cadastrarResponsavel()}" ajax="false"/>
                <p:commandButton value="Cadastrar Regional" action="#{agendaController.cadastrarRegional()}" ajax="false"/>
                <p:commandButton value="Cadastrar Resp / Reg" action="#{agendaController.juntarResponsavelRegional()}" ajax="false"/>
                <p:commandButton value="Relatórios" action="#{agendaController.gerarRelatorios()}" ajax="false"/>
                <p:commandButton value="Fechar" action="#{agendaController.redirect()}" ajax="false"/>
            </h:panelGrid>

            <p:schedule id="agenda" value="#{agendaController['eventModel']}"  widgetVar="agenda" locale="pt">
                <p:ajax event="dateSelect" listener="#{agendaController.onDateSelect}" update="detalhes"  oncomplete="eventDialog.show()"/>
                <p:ajax event="eventSelect" listener="#{agendaController.onEventSelect}" update="editPanel" oncomplete="editDialog.show()" />
                <p:ajax event="eventMove" listener="#{agendaController.onEventMove}" update="messages" />
                <p:ajax event="eventResize" listener="#{agendaController.onEventResize}" update="messages" />
            </p:schedule>

            <p:dialog id="editDialog" widgetVar="editDialog" header="Agendamento" showEffect="clip" hideEffect="clip">
                <p:panelGrid id="editPanel" columns="2">
                    <h:outputText value="Responsável:"/>
                    <h:outputText id="responsavel_nome_out" value="#{agendaController.agenda.origem.regionalHasResponsavel.responsavel.nome}"/>

                    <h:outputText value="Regional:"/>
                    <h:outputText id="origem_out" value="#{agendaController.agenda.origem.regionalHasResponsavel.regional.nome}"/>

                    <h:outputText value="Qtde. caixa:"/>
                    <h:outputText id="qtde_caixa_out" value="#{agendaController.agenda.origem.qtdeCaixa}"/>

                    <h:outputText value="Qtde. equipamento:"/>
                    <h:outputText id="qtde_equip_out" value="#{agendaController.agenda.origem.qtdeEquipamento}"/>

                </p:panelGrid>
                <p:commandButton id="deleteButton" actionListener="#{agendaController.deleteEvent}" value="Deletar" update="messages" oncomplete="editDialog.hide();agenda.update();" onclick="editDialog.hide();"/>
            </p:dialog>

            <p:dialog id="eventDialog" widgetVar="eventDialog" header="Agendamento" showEffect="clip" hideEffect="clip">
                <p:panelGrid id="detalhes" columns="2">


                    <p:outputLabel for="responsavel_nome" value="Responsável:"/>
                    <p:selectOneMenu id="responsavel_nome" value="#{agendaController.responsavel}"
                                     converter="responsavelConverter">
                        <p:ajax event="change" listener="#{agendaController.updateRegionalPorResponsavel()}" update="origem, messages"/>
                        <f:selectItems value="#{agendaController.responsaveis}"/>
                    </p:selectOneMenu>

                    <p:outputLabel for="origem" value="Regional:"/>
                    <p:selectOneMenu id="origem" value="#{agendaController.hasResponsavel}"
                                     converter="hasResponsavelConverter">
                        <f:selectItems value="#{agendaController.regionalByResponsavel}"/>
                    </p:selectOneMenu>

                    <p:outputLabel for="qtde_caixa" value="Qtde. caixa:"/>
                    <p:inputText id="qtde_caixa" value="#{agendaController.agenda.origem.qtdeCaixa}" required="true" requiredMessage="A quantidade de caixas é obrigatória." size="5"/>

                    <p:outputLabel for="qtde_equip" value="Qtde. equipamento:"/>
                    <p:inputText id="qtde_equip" value="#{agendaController.agenda.origem.qtdeEquipamento}" required="true" requiredMessage="A quantidade de equipamentos é obrigatória." size="5"/>

                </p:panelGrid>

                <h:panelGrid columns="3">

                    <p:commandButton type="reset" value="Resetar campos" />
                    <p:commandButton id="saveButton" value="Salvar" actionListener="#{agendaController.addEvent}" update="messages"
                                     oncomplete="agenda.update();eventDialog.hide();" onclick="eventDialog.hide();"/>

                </h:panelGrid>

            </p:dialog>

            <p:blockUI block="form" trigger="saveButton">
                LOADING<br />
                <p:graphicImage value="/images/ajax-loader.gif"/>
            </p:blockUI>
            <p:blockUI block="form" trigger="saveButton">
                LOADING<br />
                <p:graphicImage value="/images/ajax-loader.gif"/>
            </p:blockUI>

            <p:blockUI block="form" trigger="deleteButton">
                LOADING<br />
                <p:graphicImage value="/images/ajax-loader.gif"/>
            </p:blockUI>

        </h:form>
    </h:body>
</html>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Rodrigo,

 

estou criando um agendamento médico com o schedule, mais tenho algumas duvidas ainda, você poderia postar a sua classe  AgendaController para eu dar uma olhada nela, desde já, muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
package com.controller;

import com.dao.AgendaDAO;
import com.dao.RegionalHasResponsavelDAO;
import com.dao.ResponsavelDAO;
import com.dao.UsuarioDAO;
import com.model.Agenda;
import com.model.RegionalHasResponsavel;
import com.model.Responsavel;
import java.io.IOException;
import java.io.Serializable;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.primefaces.event.SelectEvent;
import org.primefaces.event.ScheduleEntryMoveEvent;
import org.primefaces.event.ScheduleEntryResizeEvent;
import org.primefaces.model.DefaultScheduleEvent;
import org.primefaces.model.DefaultScheduleModel;
import org.primefaces.model.ScheduleEvent;
import org.primefaces.model.ScheduleModel;

/**
 *
 * @author ranishot
 */
@ManagedBean
@ViewScoped
public class AgendaController implements Serializable {

    private ScheduleModel eventModel;
    private DefaultScheduleEvent event;
    private AgendaDAO agendaDAO;
    private Agenda agenda;
    private Date date;
    private List<RegionalHasResponsavel> list;
    private List<Responsavel> responsaveisList;
    private Responsavel responsavel;
    private ResponsavelDAO responsavelDAO;
    private RegionalHasResponsavelDAO hasResponsavelDAO;
    private RegionalHasResponsavel hasResponsavel;

    public AgendaController() {
        // Criando a sessão manualmente, porque por algum motivo, ainda desconhecido
        // o JSF não consegue criar a sessão antes da resposta ser submetida
        // da primeira vez, o que faz ele chamar o construtor duas vezes, se não
        // for criado a sessão.
        
        event = new DefaultScheduleEvent();
        eventModel = new DefaultScheduleModel();
        agenda = new Agenda();
        date = new Date(System.currentTimeMillis());
        responsavel = new Responsavel();

        agendaDAO = new AgendaDAO();

        List<Agenda> tmp = agendaDAO.getAllData();
        agendaDAO.close();

        for (int i = 0; i < tmp.size(); i++) {
            Agenda a = tmp.get(i);
            DefaultScheduleEvent eventTmp = new DefaultScheduleEvent(" " + a.getOrigem().getRegionalHasResponsavel().getResponsavel().getNome() + "\n\n" + a.getOrigem().getRegionalHasResponsavel().getRegional().getNome() +"\n\n"+ a.getOrigem().getQtdeEquipamento(), a.getData(), new Date(a.getData().getTime()), a);
            eventModel.addEvent(eventTmp);
        }
    }

    public void addEvent(ActionEvent e) {
        if (event.getId() == null) {
            UsuarioDAO usuarioDAO = new UsuarioDAO();
            agenda.setUsuario(usuarioDAO.getData(1));
            usuarioDAO.close();
            agendaDAO = new AgendaDAO();
            agenda.getOrigem().setRegionalHasResponsavel(hasResponsavel);
            Timestamp tmpData = new Timestamp(date.getTime());
            agenda.setData(tmpData);
            event.setTitle(" " + hasResponsavel.getResponsavel().getNome() + "\n\n" + hasResponsavel.getRegional().getNome() + "\n\n" + agenda.getOrigem().getQtdeEquipamento());
            event.setStartDate(tmpData);
            event.setEndDate(new Date(date.getTime()));
            event.setData(agenda);
            boolean result = agendaDAO.insertData(agenda);
            if (result) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Adicionado", "Um novo evento foi adicionado com sucesso"));
                agenda.setId(agendaDAO.getLastInsertId());
                eventModel.addEvent(event);
            } else {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Erro", "Houve um erro ao cadastrar o evento, tente novamente ou procure suporte."));
            }
            event = new DefaultScheduleEvent();
        } else {
            UsuarioDAO usuarioDAO = new UsuarioDAO();
            agenda.setUsuario(usuarioDAO.getData(1));
            usuarioDAO.close();
            agendaDAO = new AgendaDAO();
            agenda.getOrigem().setRegionalHasResponsavel(hasResponsavel);
            agenda.setData(new Timestamp(date.getTime()));
            event.setTitle(hasResponsavel.getResponsavel().getNome() + ", regional " + hasResponsavel.getRegional().getNome());
            event.setData(date);
            event.setStartDate(date);
            event.setEndDate(new Date(date.getTime()));
            event.setData(agenda);
            boolean result = agendaDAO.updateData(agenda);
            if (result) {
                eventModel.updateEvent(event);
            }
            event = new DefaultScheduleEvent();
        }
        agendaDAO.close();
    }

    public ScheduleModel getEventModel() {
        return eventModel;
    }

    public void setEventModel(ScheduleModel eventModel) {
        this.eventModel = eventModel;
    }

    public DefaultScheduleEvent getEvent() {
        return event;
    }

    public void setEvent(DefaultScheduleEvent event) {
        this.event = event;
    }

    public Agenda getAgenda() {
        return agenda;
    }

    public void setAgenda(Agenda agenda) {
        this.agenda = agenda;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public List<RegionalHasResponsavel> getList() {
        return list;
    }

    public void setList(List<RegionalHasResponsavel> list) {
        this.list = list;
    }

    public RegionalHasResponsavel getHasResponsavel() {
        return hasResponsavel;
    }

    public void setHasResponsavel(RegionalHasResponsavel hasResponsavel) {
        this.hasResponsavel = hasResponsavel;
    }

    public List<Responsavel> getResponsaveisList() {
        return responsaveisList;
    }

    public void setResponsaveisList(List<Responsavel> responsaveisList) {
        this.responsaveisList = responsaveisList;
    }

    public Responsavel getResponsavel() {
        return responsavel;
    }

    public void setResponsavel(Responsavel responsavel) {
        this.responsavel = responsavel;
    }

    public void onDateSelect(SelectEvent e) {
        responsavel = new Responsavel();
        agenda = new Agenda();
        date = (Date)e.getObject();
        System.out.println(DateFormat.getDateInstance().format(date));
    }

    public void onEventSelect(SelectEvent e) {
        event = (DefaultScheduleEvent) e.getObject();
        this.agenda = (Agenda) event.getData();
    }

    public void onEventMove(ScheduleEntryMoveEvent event) {
        if (event.getScheduleEvent().getId() != null) {
            ScheduleEvent defaultEvent = event.getScheduleEvent();
            agenda = (Agenda) defaultEvent.getData();
            agendaDAO = new AgendaDAO();
            boolean result = agendaDAO.updateData(agenda);
            agendaDAO.close();
            if (result) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Sucesso", "A data do evento foi atualizada com sucesso."));
                return;
            } else {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Erro", "Houve um erro ao atualizar a data, pressione F5 para atualiza a página, caso o erro insista, procure suporte."));
                return;
            }

        } else {
            FacesContext.getCurrentInstance().addMessage(FacesMessage.SEVERITY_INFO.toString(), new FacesMessage("Erro", "Aconteceu algo inesperado, o evento é nulo ? :| lol Procure o Ranis, e informe isso."));
        }

    }

    public void onEventResize(ScheduleEntryResizeEvent event) {
        FacesContext.getCurrentInstance().addMessage(FacesMessage.SEVERITY_INFO.toString(), new FacesMessage("Evento", "Redimensionado. Minute: " + event.getMinuteDelta() + ", Day: " + event.getDayDelta()));
    }

    public void deleteEvent(ActionEvent e) {
        if (event.getId() == null) {
            FacesContext.getCurrentInstance().addMessage(FacesMessage.SEVERITY_INFO.toString(), new FacesMessage("Operação inválida", "Selecione um evento para deletar."));
            return;
        } else {
            agendaDAO = new AgendaDAO();
            agenda = (Agenda) event.getData();
            boolean result = agendaDAO.deleteData(agenda);
            if (result) {
                eventModel.deleteEvent(event);
                FacesContext.getCurrentInstance().addMessage(FacesMessage.SEVERITY_INFO.toString(), new FacesMessage("Sucesso", "O evento foi apagado com sucesso."));
            } else {
                FacesContext.getCurrentInstance().addMessage(FacesMessage.SEVERITY_INFO.toString(), new FacesMessage("Falha", "Houve um erro ao apagar, tente atualizar a página ou procure suporte."));
            }
            event = new DefaultScheduleEvent();
            agendaDAO.close();
            return;
        }
    }

    public SelectItem[] getRegionalByResponsavel() {
        hasResponsavelDAO = new RegionalHasResponsavelDAO();
        list = hasResponsavelDAO.getAllDataByResponsavel(responsavel);
        hasResponsavelDAO.close();
        if (list.size() > 0) {
            hasResponsavel = list.get(0);
        }
        SelectItem[] itens = new SelectItem[list.size()];
        int i = 0;
        for (RegionalHasResponsavel model : list) {
            itens[i++] = new SelectItem(model, model.getRegional().getNome());
        }
        return itens;
    }

    public SelectItem[] getResponsaveis() {
        responsavelDAO = new ResponsavelDAO();
        responsaveisList = responsavelDAO.getAllData();
        responsavelDAO.close();
        if (responsavel.getId() == 0 && responsaveisList.size() > 0) {
            responsavel = responsaveisList.get(0);
        }
        SelectItem[] itens = new SelectItem[responsaveisList.size()];
        int i = 0;
        for (Responsavel model : responsaveisList) {
            itens[i++] = new SelectItem(model, model.getNome());
        }

        return itens;
    }

    public void updateRegionalPorResponsavel() {
        hasResponsavelDAO = new RegionalHasResponsavelDAO();
        list = hasResponsavelDAO.getAllDataByResponsavel(responsavel);
        hasResponsavelDAO.close();
    }

    public String cadastrarRegional() {
        return "createRegional";
    }

    public String cadastrarResponsavel() {
        return "createResponsible";

    }

    public String juntarResponsavelRegional() {
        return "JoinResponsibleRegional";

    }

    public String gerarRelatorios() {
        return "relatorio";

    }

    public void redirect() {
        HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
        try {
            response.sendRedirect("http://pxx/Lo");
        } catch (IOException ex) {
            Logger.getLogger(AgendaController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Alessandro Bodão
      Salve galerinha, passando pra mostrar pra vocês o novo projeto de marca que a Jatobá Estúdio desenvolveu, espero que gostem.   https://www.behance.net/gallery/166555627/Fernanda-Pinheiro-Nutricionista-Esportiva
    • Por Alessandro Bodão
      Boa noite irmandade!
       
      Ando reparando de alguns anos pra cá, uma forte tendência em que sites bem dinâmicos e interativos transitam de uma página pra outra sem que a outra página se quer passe por um processo de carregamento, você clica, simplesmente acontece algumas transições nos elementos da página, e de repente, você está em outra página, outro url. De forma suave, nada é carregado, apenas algo acontece e você já está em outra página.
       
      Gostaria de saber como isso é feito pra aplicar em um site que estou desenvolvendo, se é algum framework, alguma ferramenta além do JavaScript...
       
      Trouxe um belo exemplo: https://www.traffic.productions/
       
      Se você chegou até aqui, agradeço desde já!
    • Por ment0r
      Bom dia pessoal, tudo bem?
       
      Fiz um sistema de venda simples, no qual o usuário digita o produto, preço, quantidade e forma de pagamento e tudo isso é gravado no banco. Está acontecendo o seguinte: o php está 1h adiantado em relação ao relógio, então quando o cliente cadastra uma venda depois das 23h, a venda é lançada pro dia seguinte.
       
      Já usei o date_default_timezone_set('America/Sao_Paulo'). O sistema não grava a hora que a venda é feito, o grande problema é a questão das vendas entre 23h e 0h, pelo motivo já citado acima.
       
      Alguém sabe corrigir esse problema? Desde já, muito obrigado.
    • Por Alessandro Bodão
      Fala rapaziada! Tudo legal?
       
      Estou desenvolvendo um site onde coloquei uma espécie de 'relógio' nele, onde as pessoas veem que horas são, os minutos e segundos vão atualizando automático. Até aí tudo certo...
       
      No header do site tem um título principal (h1) que começa dando bom dia. Como as pessoas vão acessar o site em horários diferentes, tive a ideia do texto atualizar automaticamente pra boa tarde ou boa noite, relativo ao intervalo de tempo do relógio, mas não sou tão bom ainda com javascript. 
    • Por Alessandro Bodão
      Fala rapaziada! Tudo legal?
       
      Estou desenvolvendo um site onde coloquei uma espécie de 'relógio' nele, onde as pessoas veem que horas são, os minutos e segundos vão atualizando automático. Até aí tudo certo...
       
      No header do site tem um título principal (h1) que começa dando bom dia. Como as pessoas vão acessar o site em horários diferentes, tive a ideia do texto atualizar automaticamente pra boa tarde ou boa noite, relativo ao intervalo de tempo do relógio, mas não sou tão bom ainda com javascript. 
       
      Como eu poderia fazer isso?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.