Ajuda com p:schedule

16 respostas
Luciano_Lopes

Pessoal, estou tentando implementar um schedule do prime 2.0 mas o mesmo não funciona. Usei os códigos de exemplo do site mesmo assim não obtive resultados, alguem poderia postar aqui algum exemplo simples para quando clicar no schedule abrir um dialog? Tentei todos os eventos dele mas não funcionaram

16 Respostas

alves.Felipe

tenta ai…

<p:schedule value="#{agendaBean.eventModel}" style="width: 700px;" editable="true" widgetVar="myschedule" draggable="false" resizable="true" eventSelectListener="#{agendaBean.onEventSelect}" dateSelectListener="#{agendaBean.onDateSelect}" eventResizeListener="#{agendaBean.onEventResize}" onEventResizeUpdate="messages" onDateSelectUpdate="eventDetails" onDateSelectComplete="eventDialog.show()" onEventSelectUpdate="eventDetails" onEventSelectComplete="eventDialog.show()" view="month" />
Dialog

<p:dialog widgetVar="eventDialog" header="Event Details" showEffect="clip" hideEffect="clip" width="640" modal="true"> <h:panelGrid id="eventDetails" columns="2"> ...</p:dialog>

Luciano_Lopes

E o bean, como ficaria?

alves.Felipe
private ScheduleModel eventModel;  
get e set
private void consultaAgenda()
	{
		List<Agenda> agendas = aFacade.consultaAgendas(getCodVendedor());
		
		this.eventModel =  new DefaultScheduleModel();  
		
		for(Agenda a:agendas)
		{
			for(AgendaCliente ac:a.getAgendaClientes())
			{
				ScheduleEvent eventAux = new DefaultScheduleEvent(ac.getCodCliente().toString(), a.getDtVisita(), a.getDtVisita());
				eventModel.addEvent(eventAux);
			}
		}
	}
public void onEventSelect(ScheduleEntrySelectEvent selectEvent) 
	{
		if(selectEvent.getScheduleEvent()!=null)
		{
			Integer codCliente = Integer.valueOf(selectEvent.getScheduleEvent().getTitle().trim());
			String razao = aFacade.consultarRazao(codCliente);
			this.codResposta = aFacade.consultarCodResposta(codCliente,selectEvent.getScheduleEvent().getStartDate(), getCodVendedor());
			event = selectEvent.getScheduleEvent();
			event.setId(razao);
		}
	}  

	public void onDateSelect(DateSelectEvent selectEvent) {
		System.out.println("onDateSelect");
		
		targetCliente = new ArrayList<Cliente>();
		dualListClientes = new DualListModel<Cliente>(sourceCliente,targetCliente);
		event = new DefaultScheduleEvent(Math.random() + "", selectEvent.getDate(), selectEvent.getDate());  
	}  

	public void onEventMove(ScheduleEntryMoveEvent event) {
		System.out.println("onEventMove");
		FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Event moved", "Day delta:" + event.getDayDelta() + ", Minute delta:" + event.getMinuteDelta());  

		addMessage(message);  
	}  

	public void onEventResize(ScheduleEntryResizeEvent event) {
		System.out.println("onEventResize");
		FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Event resized", "Day delta:" + event.getDayDelta() + ", Minute delta:" + event.getMinuteDelta());  

		addMessage(message);  
	}
Luciano_Lopes

O código compilou legal mas não acontece nada quando clico no canlendário

alves.Felipe

cara…deve ser algum problema na versão do prime…
atualiza para a versão 3

Luciano_Lopes

O problema é que meu sistema ja ta grandinho e uma das coisas que achei dificuldade para migrar foi na manipulação de informações usando datatable, antes era só criar um list e passar as informações do banco, na versão 3 tem que criar um tipo diferente de lista com as colunas do prime e jogar no html.

alves.Felipe

que estranho… eu uso a versão 3.3 e a unica coisa que precisei alterar foi a definição do prime

xmlns:p="http://primefaces.org/ui"

continuo usando list igual vc…

Luciano_Lopes

Estranho, poderia postar alguma datatable sua (xhtml) para eu ver como você faz?

alves.Felipe
esta ai:
<h:form id="Form" prependId="true">
				<p:growl id="growl" autoUpdate="true" />
				<div style="width: 650px;">
				<p:panel header="Fornecedores" >
					<p:dataTable id="pdtFornecedores" var="obj" value="#{fornecedorMBean.fornecedores}" style="width:100%" emptyMessage="Sem fornecedores cadastrados.">
							
							<p:column style="width:100px">
								<f:facet name="header">
									<h:outputText value="#{requestScope.msg.label_empresa}" />
								</f:facet>
									<h:outputText value="#{obj.nome}" />
							</p:column>
							<p:column >
								<f:facet name="header">
									<h:outputText value="#{requestScope.msg.label_descricao}" />
								</f:facet>
									<h:outputText value="#{obj.descricao}" />
							</p:column>
							<p:column style="width:100px">
								<f:facet name="header">
									<h:outputText value="#{requestScope.msg.label_contato}" />
								</f:facet>
										<h:outputText value="#{obj.contato}" />
							</p:column>
							<p:column style="width:120px">
								<f:facet name="header">
									<h:outputText value="#{requestScope.msg.label_fone}" />
								</f:facet>
										<h:outputText value="#{obj.fone}" />
							</p:column>
							<p:column style="width:70px">
								<f:facet name="header">
									<h:outputText value="#{requestScope.msg.label_acao}" />
								</f:facet>
									<div>
									  <p:commandLink  action="#{fornecedorMBean.exibirAlterar()}" process="@this" ajax="false" title="Alterar">
										<h:graphicImage value="/pages/pub/img/edit-icon16.png" />
										<f:param name="idFornecedor" value="#{obj.id}"/>
						            </p:commandLink>
						            &nbsp;
						            <p:commandLink  action="#{fornecedorMBean.obtemObjRemover(obj)}"  oncomplete="confirmation.show()" title="Excluir">
						            	<h:graphicImage value="/pages/pub/img/DeleteRed16.png" />
						            </p:commandLink>
						            </div>
							</p:column>
						</p:dataTable>
				</p:panel>
				</div>
				 	<p:confirmDialog message="Deseja realmente remover o registro?" header="Confirmação" severity="alert" widgetVar="confirmation">  
				        <p:commandButton value="Sim" update="@form" oncomplete="confirmation.hide()" action="#{fornecedorMBean.excluir()}" />  
				        <p:commandButton value="Não" onclick="confirmation.hide()" type="button" />   
				    </p:confirmDialog>  
			</h:form>
bean
public List<Fornecedor> getFornecedores()
	{
		if(fornecedores == null)
		{
			consultarFornecedores();
		}
		return fornecedores;
	}
Luciano_Lopes

Ah, você usa o botão abrir dentro do datatable com um commandlink, eu uso um botão externo, sera que é esse o problema?

alves.Felipe

como que vc usa externo, se o var esta dentro do datatable…??
não entendi

Luciano_Lopes

Usando o get do meu objeto, ai dou um update no botão e abro o dialog.Te como me informar seu email/msn por MP?

alves.Felipe

o meu e-mail é esse que esta cadastrado ai…

Luciano_Lopes

Estou fazendo essa forma:

<h:form>
            <p:schedule widgetVar="myshedule">
                <p:ajax event="dateSelect" oncomplete="dados.show()"/>
        </p:schedule>
        </h:form>
        <p:dialog widgetVar="dados" modal="true">
            
        </p:dialog>

Mas esta retornando esse erro:

<p:ajax> Parent not an instance of ClientBehaviorHolder: org.primefaces.component.schedule.Schedule@4f4373
alves.Felipe

se vc fizer como te passei la em cima pode ser que funcione

Luciano_Lopes

Estou tentando migrar para o prime 3, só que um problema que estou passando é que adiciono um registro no banco atravez de um botão e depois eu chamo um dialog, só que os dados não atualizam no form

Criado 7 de novembro de 2012
Ultima resposta 8 de nov. de 2012
Respostas 16
Participantes 2