Processing...

Suggested case list:

Using timer to refresh a grid

383guest172.69.33.12125nk0uiMay 7, 2020 7:23:47 AMlink

user model to move item to another listbox

120guest162.158.193.148d0n3krApr 2, 2020 5:28:28 AMlink

Disabled list item row passed to VM-1981

296fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:44 PMlink

Disabled list item row passed to VM-1981

295fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:16 PMlink

Disabled list item row passed to VM-1981

294fatih123160.83.36.13225nk0uiFeb 13, 2018 3:30:44 PMlink

grid sample with ListModel/RowRenderer

816guest80.82.2.1312vah9ajFeb 21, 2017 11:42:21 AMlink

grid sample with ListModel/RowRenderer

809guest175.98.113.1622vah9ajJan 26, 2017 9:19:33 AMlink

grid sample with ListModel/RowRenderer

196guest79.185.142.402vah9ajApr 26, 2014 10:53:57 PMlink

grid sample with ListModel/RowRenderer

195guest79.185.142.402vah9ajApr 26, 2014 10:53:54 PMlink

grid sample with ListModel/RowRenderer

194guest79.185.142.402vah9ajApr 26, 2014 10:53:51 PMlink

grid sample with ListModel/RowRenderer

193guest79.185.142.402vah9ajApr 26, 2014 10:53:48 PMlink

grid sample with ListModel/RowRenderer

192guest79.185.142.402vah9ajApr 26, 2014 10:53:44 PMlink

grid sample with ListModel/RowRenderer

191guest79.185.142.402vah9ajApr 26, 2014 10:53:40 PMlink

Hierarchy table without using ZK PE/EE

1aaknai151.28.135.2131s871daJul 29, 2013 11:02:46 PMlink

grid sample with ListModel/RowRenderer

128aaknai151.28.135.2132vah9ajJul 29, 2013 7:20:00 PMlink

user model to move item to another listbox

1TonyQ114.25.109.94d0n3krApr 21, 2012 10:43:27 AMlink

Using timer to refresh a grid

1TonyQ220.133.44.3725nk0uiFeb 17, 2012 3:17:34 AMlink

Fire a event from child iframe

1TonyQ220.133.44.372eupjotFeb 3, 2012 5:04:52 AMlink

Textbox input restriction sample

1TonyQ72.21.245.2431b3nlr0Dec 20, 2011 10:09:10 AMlink

Test web core taglib in ZUL

1TonyQ198.203.175.175ofqkemDec 17, 2011 3:36:08 AMlink

Latest 10 Fiddles :

constraint binding textbox

3guest172.68.151.16220peldaDec 5, 2025 5:08:19 PMlink

Another new ZK fiddle

2guest172.68.151.16320peldaDec 5, 2025 5:07:51 PMlink

Another new ZK fiddle

1guest172.68.151.16220peldaDec 5, 2025 5:07:32 PMlink

Another new ZK fiddle

1peggypeng172.71.154.99364f4neDec 5, 2025 9:24:31 AMlink

tooltip example

2guest104.22.23.13rc1ntoDec 4, 2025 2:23:45 PMlink

Another new ZK fiddle

1guest172.69.134.2277t7602Dec 4, 2025 1:40:46 PMlink

Another new ZK fiddle

1peggypeng104.22.17.1802df6e3oDec 4, 2025 8:41:29 AMlink

onClose

1peggypeng172.68.87.248j8kd8aDec 3, 2025 4:10:26 AMlink

Another new ZK fiddle

1peggypeng172.69.134.2271rm7f4eNov 26, 2025 3:31:24 AMlink

ZK-5912-Suggestion

2rebeccalai104.22.20.1442qrmiiuNov 26, 2025 2:07:15 AMlink

Survey New main

100DavidTRegenstrief50.90.113.22530n8lfjNov 7, 2016 9:32:42 AMlink

resources

index.zulzul<zk> <window border="normal" id="thewindow" title="hello" > <div id="eproSurveyChannelDiv"> <label id="channelTitle" value="ePro Survey Channel" style="font-family: Calibri,Candara,Segoe,'Segoe UI',Optima,Arial,sans-serif; font-size:20px; color:#777;"/> <tabbox id="tb" width="100%" height="380px" mold="accordion"> <tabs> <tab label="Fhir Questionannaire" /> <tab label="RedCAP Survey" /> <tab label="ePro Custom Survey" /> </tabs> <tabpanels> <tabpanel> <div id="fhirQuestionnaireDiv" apply="pkg$.FhirQuestionnaireComposer"> <label value="Choose a Fhir Questionnaire you would like to be filled out by the patient."/> <listbox id="fhirQuestionnaireList" model="${fhirQuestionnaireDiv$composer.fhirQuestionnaireListModel}" multiple="true"> <listhead> <listheader label="Survey Identifier"/> <listheader label="Code"/> <listheader label="Description"/> </listhead> <template name="model"> <listitem> <listcell label="${each.identifier}"/> <listcell label="${each.code}"/> <listcell label="${each.desc}"/> </listitem> </template> </listbox> </div> </tabpanel> <tabpanel> <div id="redcapSurveyDiv" > <!-- apply="pkg$.RedCapComposer"> --> <label value="Choose a RedCap Survey you would like to be filled out by the patient."/> <listbox id="redcapSurveyList" model="${redcapSurveyDiv$composer.redcapSurveyListModel}" multiple="true"> <listhead> <listheader label="Account"/> <listheader label="Project"/> <listheader label="Survey"/> </listhead> <template name="model"> <listitem> <listcell label="${each.account}"/> <listcell label="${each.project}"/> <listcell label="${each.survey}"/> </listitem> </template> </listbox> </div> </tabpanel> <tabpanel> <div id="eProSurveyDiv" apply="pkg$.EproComposer"> <div id="eproSurveyRuleSurveySetDiv" visible="true"> <separator orient="horizontal" spacing="15px;"/> <label value="Forms that have been added into this rule's survey set" sclass="raveInputLabel" /> <separator orient="horizontal" spacing="7px;"/> <tree id="eproSurveyRuleFormComponentTree" width="600px" SizedByContent="true" multiple="true" checkmark="true" model="${eproSurveyDiv$composer.treeModel}"> <treecols sizable="true"> <treecol width="500px" label="Name" /> <treecol width="100px" label="Type" /> </treecols> <template name="model"> <treeitem> <treerow> <treecell label="${each.data['name']}"/> <treecell label="${each.data['type']}"/> </treerow> </treeitem> </template> </tree> <separator orient="horizontal" spacing="7px;"/> <a label="Remove selected forms" id="eproSurveyChannel_removeFormBtn" sclass="raveStandardLink" /> </div> <vlayout sclass="left" id="eproSurveyOptions" style="margin-top:10px; padding-bottom:20px; overflow-x:hidden;"> <label value="Choose a form to view/add" sclass="raveInputLabel"/> <combobox id="allForumCombobox" autodrop="true" width="300px" sclass="raveCombo" style="margin-left:25px;" /> </vlayout> <hlayout style="margin-top:7px; margin-bottom:7px;"> <image id="eproSurveyChannel_addFormOpenClpsImg" src="~./org/regenstrief/ui/component/fhir/rave/zul/style/plusminus.png" /> <label value="View form details" sclass="raveInputLabel" /> </hlayout> <div id="eproSurveyFormTreeDiv" visible="true" style="margin:7px;"> <tree id="eproSurveyFormTree" width="600px" SizedByContent="true" multiple="true"> <treecols sizable="true"> <treecol width="500px" label="Name" /> <treecol width="100px" label="Type" /> </treecols> </tree> <separator orient="horizontal" spacing="7px;"/> <a label="Add" id="eproSurveyChannel_addFormBtn" sclass="save" /> </div> <hlayout style="margin-top:7px; margin-bottom:7px;"> <image id="eproSurveyChannel_collapseOpenCustomFormImg" src="~./org/regenstrief/ui/component/fhir/rave/zul/style/plusminus.png" /> <label value="Custom Form" sclass="raveInputLabel"/> </hlayout> <div id="eproSurveyCustomFormDiv" style="border:thin solid #ddd;width:100%; margin:7px; padding:7px; " visible="true"> <vlayout style="width:100%"> <label value="New form name" sclass="raveInputLabel"/> <textbox id="eproSurveyCustomFormNameTextbox" sclass="raveWonderbarLookingTextboxWithoutCombo" rows="1" width="300px"/> <separator orient="horizontal" spacing="7px;"/> <a label="Create Form" id="eproSurveyChannel_customFormAddBtn" sclass="save" /> <separator orient="horizontal" spacing="7px;"/> <tree id="eproSurveyCustomFormComponentTree" width="600px" SizedByContent="true" multiple="false"> <treecols sizable="true"> <treecol width="500px" label="Name" /> <treecol width="100px" label="Type" /> </treecols> </tree> <separator orient="horizontal" spacing="7px;"/> <hlayout> <a label="Edit Selected Form" id="eproSurveyChannel_customFormQuestionEditBtn" sclass="raveStandardLink " /> <a label="Add selected custom form into rule survey set" id="eproSurveyChannel_addCustomFormBtn" sclass="save" /> </hlayout> <div id="eproSurveyChannel_customFormEditDiv" visible="true"> <hlayout> <vlayout style="padding-top:10px; height:370px;"> <textbox id="allQuestionSearchTxtbx" sclass="raveWonderbarLookingTextbox" style="left:0;" width="285px" /> <listbox zclass="rave-z-listbox" id="eproSurveyAllQuestionListBox" width="300px" multiple="false" mold="paging" pageSize="10" vflex="true" /> </vlayout> <vlayout id="questionViewAnswerVlayout" /> </hlayout> <label value="Answer required? " sclass="raveInputLabel"/> <radiogroup id="addingQuestionAnsTypRGP"> <radio label="Answer required" value="Y" checked="true"/> <radio label="Anser NOT required" value="N"/> </radiogroup> <separator orient="horizontal" spacing="7px;"/> <label value="Max Answer: " sclass="raveInputLabel"/> <intbox id="addingQuestionAnsMaxNmb" width="30px"/> <separator orient="horizontal" spacing="7px;"/> <a label="Add Selected Question" id="eproSurveyChannel_customFormQuestionAddBtn" sclass="raveStandardLink " /> <separator orient="horizontal" spacing="7px;"/> <vlayout id="eproEditCustomFormVlayout"> <label id="selectedEditCustomFormNameLable" sclass="raveInputLabel"/> </vlayout> <separator orient="horizontal" spacing="7px;"/> <a label="Save Edited Form" id="eproSurveyChannel_customFormQuestionSaveBtn" sclass="save" /> </div> </vlayout> </div> <hlayout style="margin-top:7px; margin-bottom:7px;"> <image id="eproSurveyChannel_openClpsCustomQuestionImg" src="~./org/regenstrief/ui/component/fhir/rave/zul/style/plusminus.png" /> <label value="Custom question/answer Section" sclass="raveInputLabel"/> </hlayout> <include src="eproQuestionnaireBuilderComponent.zul" id="eproQuestionBuilder" visible="true" /> <!-- --> <div style="padding-top:25px;" align="bottom" width="100%" height="45%"> <hlayout> <a sclass="primary" id="saveBtn">Save Channel</a> <a label="Cancel" id="cancelBtn" sclass="secondary" /> </hlayout> </div> </div> </tabpanel> </tabpanels> </tabbox> </div> </window> </zk> EproComposer.javajavaimport org.zkoss.zk.ui.*; import org.zkoss.zk.ui.event.*; import org.zkoss.zk.ui.util.*; import org.zkoss.zk.ui.ext.*; import org.zkoss.zk.au.*; import org.zkoss.zk.au.out.*; import org.zkoss.zul.*; import java.util.*; public class EproComposer extends GenericForwardComposer { Tree eproSurveyRuleFormComponentTree; public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); } public void onClick$btn(Event e) throws InterruptedException{ Messagebox.show("Hi btn"); } protected DefaultTreeModel<DefaultTreeNode<QuestionnaireNodeData>> createTreeModel() { List<DefaultTreeNode<QuestionnaireNodeData>> nodeList = new ArrayList<DefaultTreeNode<QuestionnaireNodeData>>(); QuestionnaireNodeData n1Adata = new QuestionnaireNodeData(); n1Adata.put("name", "question 1"); n1Adata.put("type", "loinc"); DefaultTreeNode<QuestionnaireNodeData> n1A = new DefaultTreeNode<QuestionnaireNodeData>(n1Adata); QuestionnaireNodeData n1Bdata = new QuestionnaireNodeData(); n1Bdata.put("name", "question 2"); n1Bdata.put("type", "loinc"); DefaultTreeNode<QuestionnaireNodeData> n1B = new DefaultTreeNode<QuestionnaireNodeData>(n1Bdata); List<DefaultTreeNode<QuestionnaireNodeData>> qNodeList = new ArrayList<DefaultTreeNode<QuestionnaireNodeData>>(); qNodeList.add(n1A); qNodeList.add(n1B); QuestionnaireNodeData n1data = new QuestionnaireNodeData(); n1data.put("name", "Loinc Survey 1"); n1data.put("type", " - "); DefaultTreeNode<QuestionnaireNodeData> n1 = new DefaultTreeNode<QuestionnaireNodeData>(n1data, qNodeList); nodeList.add(n1); QuestionnaireNodeData ndata = new QuestionnaireNodeData(); ndata.put("name", "Surveys"); ndata.put("type", " - "); DefaultTreeNode<QuestionnaireNodeData> n = new DefaultTreeNode<QuestionnaireNodeData>(ndata, nodeList); return new DefaultTreeModel(n); } public TreeModel getTreeModel() { return createTreeModel(); } } class QuestionnaireNodeData extends HashMap<String,String> { } eproQuestionnaireBuilderComponent.zulzul<zk> <div id="eproSurveyCustomQADiv" style="border:thin solid #ddd;width:100%;"> <vlayout style="width:100%; height:450px; padding-left:7px; padding-right:7px;"> <hlayout> <vlayout style="padding-top:15px; height:430px;"> <label value="Existing edittable questions" sclass="raveInputLabel"/> <textbox id="questionSearchTxtbx" sclass="raveWonderbarLookingTextbox" style="left:0; padding-bottom:5px; " width="430px" /> <tree id="edittableQuestionListTree" width="450px" SizedByContent="true" multiple="false" mold="paging" pageSize="15" rows="15" style="margin-top:15px;"> <treecols sizable="true"> <treecol width="350px" label="Name" /> <treecol width="100px" label="Type" /> </treecols> </tree> </vlayout> <separator orient="vertical" spacing="5px;"/> <vlayout style="padding-top:10px; height:430px;"> <vlayout id="edittingQuestionVlayout" visible="true"> <!--DT "false">--> <label id="edittingQuestionNameTitleLabel" value="Question name: " sclass="raveInputLabel" /> <label id="edittingQuestionNameLable" /> <label id="edittingQuestionAnsLstTitleLabel" value="Answer List ID: " sclass="raveInputLabel" /> <label value="Double click answer list or drag/drop in here to add/change answer list" sclass="raveInputLabelSmall" /> <label id="edittingQuestionAnsLstLabel" /> <a label="Save question" id="customQuestionSaveBtn" sclass="save" /> </vlayout> <label value="New question text" sclass="raveInputLabel"/> <textbox id="newQustionTxtbox" sclass="raveWonderbarLookingTextbox" style="left:0;" width="300px" /> <a label="Add question" id="eproCustomQuestionAddBtn" sclass="save" /> </vlayout> </hlayout> </vlayout> <!-- --> <!-- <vlayout style="width:100%; height:400px;border:thin solid #ddd;"> --> <vlayout style="width:100%; height:450px; padding-left:7px; padding-right:7px;"> <hlayout> <vlayout style="padding-top:15px; height:430px;"> <label value="Existing answer list" sclass="raveInputLabel"/> <textbox id="ansListSearchTxtbx" sclass="raveWonderbarLookingTextbox" style="left:0; padding-bottom:5px; " width="430px" /> <hlayout> <label value="Filter by edittable answer list:" sclass="raveInputLabel"/> <radiogroup id="filterByEditableAnsLst"> <radio label="All" value="ALL" checked="true"/> <radio label="Edittable answer list" value="EDITTABLE"/> </radiogroup> </hlayout> <tree id="eproSurveyAnswerListTree" width="450px" SizedByContent="true" multiple="false" mold="paging" pageSize="15" rows="15" style="margin-top:15px;"> <treecols sizable="true"> <treecol width="350px" label="AnswerListId" /> <treecol width="100px" label="Type" /> </treecols> </tree> </vlayout> <separator orient="vertical" spacing="5px;"/> <vlayout style="padding-top:10px; height:430px;"> <label value="New answer list name" sclass="raveInputLabel"/> <textbox id="addNewAnsListTxtbox" sclass="raveWonderbarLookingTextbox" style="left:0;" width="300px" /> <label value="New answer list description" sclass="raveInputLabel"/> <textbox id="addNewAnsListDescbox" sclass="raveWonderbarLookingTextbox" style="left:0;" width="300px" /> <a label="Add" id="eproCustomAnsListAddBtn" sclass="save" /> </vlayout> </hlayout> </vlayout> <separator orient="vertical" spacing="10px;"/> <a label="Edit Selected Answer List" id="ansLstEditBtn" sclass="raveStandardLink " /> <div id="ansLstEditDiv" visible="true" style="border:thin solid #ddd; padding-left: 7px; padding-right:7px;"> <!--DT visible="false"--> <vlayout style="width:100%; height:420px;"> <hlayout> <vlayout style="padding-top:10px; height:400px;"> <label value="Existing answer string" sclass="raveInputLabel"/> <textbox id="allAnsStringSearchTxtbx" sclass="raveWonderbarLookingTextbox" style="left:0;" width="380px" /> <listbox zclass="rave-z-listbox" id="eproSurveyAllAnsStringBox" width="400px" multiple="false" mold="paging" pageSize="10" vflex="true" /> </vlayout> <separator orient="vertical" spacing="5px;"/> <vlayout style="padding-top:10px; height:370px;"> <label value="New answer string" sclass="raveInputLabel"/> <textbox id="addNewAnsStringTxtbox" sclass="raveWonderbarLookingTextbox" style="left:0;" width="300px" /> <a label="Add" id="eproCustomAnsStringAddBtn" sclass="save" style="margin-top:15px;" /> </vlayout> </hlayout> </vlayout> <separator orient="horizontal" spacing="10px;"/> <a label="Add Selected Answer" id="editAnsLstAnswerAddBtn" sclass="raveStandardLink " /> <vlayout id="editAnsLstVlayout"> <hlayout> <label value="Editting list id" sclass="raveInputLabel"/> <label id="editAnsLstIdLabel" sclass="raveInputLabel"/> </hlayout> <hlayout> <label value="Editting list name" sclass="raveInputLabel"/> <label id="editAnsLstNameLabel" sclass="raveInputLabel"/> </hlayout> <hlayout> <label value="Editting list description" sclass="raveInputLabel"/> <label id="editAnsLstDescLabel" sclass="raveInputLabel"/> </hlayout> <hlayout> <label value="Editting list code system" sclass="raveInputLabel"/> <label id="editAnsLstCodeSysLabel" sclass="raveInputLabel"/> </hlayout> </vlayout> <hlayout style="padding-top:10px;"> <vlayout id="ansLstViewAnswerVlayout"> </vlayout> </hlayout> <separator orient="horizontal" spacing="10px;"/> <a label="Save Edited Answer List" id="editAnserListSaveBtn" sclass="primary" /> </div> <!-- --> <!-- <a label="Collapse Edit Answer List Section" id="answerListEditClpBtn" sclass="raveStandardLinkCollapse raveStandardLink " /> --> </div> </zk> FhirQuestionnaireComposer.javajavaimport org.zkoss.zk.ui.*; import org.zkoss.zk.ui.event.*; import org.zkoss.zk.ui.util.*; import org.zkoss.zk.ui.ext.*; import org.zkoss.zk.au.*; import org.zkoss.zk.au.out.*; import org.zkoss.zul.*; import java.util.*; public class FhirQuestionnaireComposer extends GenericForwardComposer{ public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); } public void onClick$btn(Event e) throws InterruptedException{ Messagebox.show("Hi btn"); } public ListModel getFhirQuestionnaireListModel() { FhirQuestionnaireModel model = new FhirQuestionnaireModel(); FhirQuestionnaire quest1 = new FhirQuestionnaire("234234-23423", "14223+23234234234", "some survey1"); FhirQuestionnaire quest2 = new FhirQuestionnaire("234234-23423", "14223+23234234234", "some survey2"); FhirQuestionnaire quest3 = new FhirQuestionnaire("234234-23423", "14223+23234234234", "some survey3"); FhirQuestionnaire quest4 = new FhirQuestionnaire("234234-23423", "14223+23234234234", "some survey4"); model.add(quest1); model.add(quest2); model.add(quest3); model.add(quest4); return model; } } class FhirQuestionnaireModel extends AbstractListModel<FhirQuestionnaire> { List<FhirQuestionnaire> data = new ArrayList<FhirQuestionnaire>(); public int getSize() { return data.size(); } public FhirQuestionnaire getElementAt(int index) { return data.get(index); } public void add(FhirQuestionnaire item) { data.add(item); } } FhirQuestionnaire.javajavaimport org.zkoss.zk.ui.*; import org.zkoss.zk.ui.event.*; import org.zkoss.zk.ui.util.*; import org.zkoss.zk.ui.ext.*; import org.zkoss.zk.au.*; import org.zkoss.zk.au.out.*; import org.zkoss.zul.*; public class FhirQuestionnaire { public String identifier; public String code; public String desc; public FhirQuestionnaire(String identifier, String code, String desc) { this.identifier=identifier; this.code=code; this.desc=desc; } public String getIdentifier() { return identifier; } public String getCode() { return code; } public String getDesc() { return desc; } } RedCapComposer.javajavaimport org.zkoss.zk.ui.*; import org.zkoss.zk.ui.event.*; import org.zkoss.zk.ui.util.*; import org.zkoss.zk.ui.ext.*; import org.zkoss.zk.au.*; import org.zkoss.zk.au.out.*; import org.zkoss.zul.*; import java.util.*; public class RedCapComposer extends GenericForwardComposer{ public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); } public void onClick$btn(Event e) throws InterruptedException{ Messagebox.show("Hi btn"); } public RedCapSurveyModel getRedCapSurveyModel() { RedCapSurveyModel model = new RedCapSurveyModel(); model.add(new RedCapSurvey("acct1", "prj1", "survey1")); model.add(new RedCapSurvey("acct1", "prj1", "survey2")); model.add(new RedCapSurvey("acct1", "prj1", "survey3")); model.add(new RedCapSurvey("acct2", "prj1", "survey1")); model.add(new RedCapSurvey("acct2", "prj1", "survey2")); model.add(new RedCapSurvey("acct2", "prj1", "survey3")); model.add(new RedCapSurvey("acct2", "prj2", "survey1")); return model; } } class RedCapSurveyModel extends AbstractListModel<RedCapSurvey> { List<RedCapSurvey> data = new ArrayList<RedCapSurvey>(); public int getSize() { return data.size(); } public RedCapSurvey getElementAt(int index) { return data.get(index); } void add(RedCapSurvey survey) { data.add(survey); } }RedCapSurvey.javajavaimport org.zkoss.zk.ui.*; import org.zkoss.zk.ui.event.*; import org.zkoss.zk.ui.util.*; import org.zkoss.zk.ui.ext.*; import org.zkoss.zk.au.*; import org.zkoss.zk.au.out.*; import org.zkoss.zul.*; public class RedCapSurvey { String account; String project; String survey; public RedCapSurvey(String account, String project, String survey) { this.account=account; this.project=project; this.survey=survey; } public String getAccount() { return account; } public String getProject() { return project; } public String getSurvey() { return survey; } }