Author: DavidK Date: 2010-02-21 19:26:56 +0100 (Sun, 21 Feb 2010) New Revision: 1810 Modified: trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/filerel/FileListComponentBean.java trunk/server/webServer2/WebContent/secured/components/file/fileListComponent.xhtml trunk/server/webServer2/WebContent/secured/components/file/fileListModalComponent.xhtml trunk/server/webServer2/WebContent/secured/plug/planningModalDynamic.xhtml trunk/server/webServer2/WebContent/styles/components/file/fileListComponent.css trunk/server/webServer2/WebContent/styles/components/file/fileListModalComponent.css Log: sorting/filtering on file table added Modified: trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/filerel/FileListComponentBean.java =================================================================== --- trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/filerel/FileListComponentBean.java 2010-02-21 17:31:06 UTC (rev 1809) +++ trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/filerel/FileListComponentBean.java 2010-02-21 18:26:56 UTC (rev 1810) @@ -12,6 +12,7 @@ import cz.elvys.commons.utils.CommonUtils; import cz.elvys.webServer.HIBgen.Document; +import cz.elvys.webServer.HIBgen.File; import cz.elvys.webServer.HIBgen.FileType; import cz.elvys.webServer.beans.user.UserLoginBean; import cz.elvys.webServer.utils.faces.BeanManager; @@ -50,6 +51,8 @@ private List<SelectItem> fileTypesToSelect = null; // selected fileType field private String selectedFileType = null; + // filter value + private String filterValue; // other fields private FileManagerBL fileManagerBL = null; @@ -130,10 +133,18 @@ this.allowedFileTypes = allowedFileTypes; } + public String getFilterValue() { + return filterValue; + } + public void setFilterValue(String filterValue) { + this.filterValue = filterValue; + } + + // initialize { fileManagerBL = Fact.getFileManagerBL(); @@ -283,7 +294,35 @@ invalidate(); } - + /** + * Method used in the table-filter on the view page + * @param value expects that value is of cz.elvys.webServer.HIBgen.File type + * @return true if object (row) meets filter rules, otherwise false + */ + public boolean filterByValue(Object value) { + if (filterValue == null || filterValue.equals("")) { + // filter empty + return true; + } + if (!(value instanceof File)) { + // bad type of data + return false; + } + File file = (File) value; + + String filt = filterValue.toLowerCase(); + + if (file.getOrigName().toLowerCase().contains(filt) || + file.getDescription().toLowerCase().contains(filt) || + file.getUser().getRealname().toLowerCase().contains(filt) || + file.getUser().getSurname().toLowerCase().contains(filt) || + file.getUser().getUsername().toLowerCase().contains(filt)) { + return true; + } + + + return false; + } /** Modified: trunk/server/webServer2/WebContent/secured/components/file/fileListComponent.xhtml =================================================================== --- trunk/server/webServer2/WebContent/secured/components/file/fileListComponent.xhtml 2010-02-21 17:31:06 UTC (rev 1809) +++ trunk/server/webServer2/WebContent/secured/components/file/fileListComponent.xhtml 2010-02-21 18:26:56 UTC (rev 1810) @@ -71,39 +71,74 @@ <h:form id="FileListComponent" styleClass="file-list-component"> <h:panelGroup id="fileListAreaAll" styleClass="file-list-area-all"> - <h:panelGroup id="fileListButtons" styleClass="file-list-buttons"> - <h:selectOneRadio id="fileTypes" - value="#{fileListComponentBean.selectedFileType}"> - <f:selectItems value="#{fileListComponentBean.fileTypesToSelect}"/> - <a4j:support - event="onclick" - reRender="fileListAreaAll" - immediate="false" - actionListener="#{fileListComponentBean.prepareDataNoRedirection}"/> - </h:selectOneRadio> - </h:panelGroup> <rich:dataTable id="fileList" value="#{fileListComponentBean.files}" rows="10" var="file" - width="700" styleClass="file-table" - columnClasses="fileList-table-column-class"> - + sortMode="single" + reRender="fileListButtons, searchPanel" + columnClasses="fileList-table-column-class" + columnsWidth="250,50,150,75,250,100"> + + + <f:facet name="header"> + <rich:columnGroup> + <rich:column colspan="6"> + <div class="controlPanel"> + <h:panelGroup rendered="#{showUploadIcon}"> + <h:commandButton id="UploadNew" + image="/images/icons/create.png" + immediate="true" + action="#{fileUploadBean.prepareUploadComponent}"> + </h:commandButton> + <rich:toolTip for="UploadNew"> + <h:outputText value="#{lbl['file.list.component.uploadnew']}"/> + </rich:toolTip> + </h:panelGroup> + </div> + <h:panelGroup id="fileListButtons" styleClass="file-list-buttons"> + <h:selectOneRadio id="fileTypes" + value="#{fileListComponentBean.selectedFileType}"> + <f:selectItems value="#{fileListComponentBean.fileTypesToSelect}"/> + <a4j:support + event="onclick" + reRender="fileListAreaAll" + immediate="false" + actionListener="#{fileListComponentBean.prepareDataNoRedirection}"/> + </h:selectOneRadio> + </h:panelGroup> + + + <div class="searchPanel"> + #{lbl['list.search']} : + <h:inputText value="#{fileListComponentBean.filterValue}" id="input"> + <a4j:support event="onkeyup" reRender="fileList" + ignoreDupResponses="true" requestDelay="700" + oncomplete="setCaretToEnd(event);" /> + </h:inputText> + </div> + </rich:column> + </rich:columnGroup> + </f:facet> + + <!-- <h:column rendered="true"> <f:facet name="header">#{lbl['file.list.component.id']}</f:facet> <h:outputText value="#{file.id}" /> </h:column> --> - <h:column> + <rich:column + filterMethod="#{fileListComponentBean.filterByValue}" + sortBy="#{file.origName}"> <f:facet name="header">#{lbl['file.list.component.name']}</f:facet> <h:graphicImage id="document" url="/images/documents/pdf.png" rendered="#{file.fileType.type == 'document'}"/> <h:graphicImage id="video" url="/images/documents/video.gif" rendered="#{file.fileType.type == 'video'}"/> <h:outputText value=" #{file.origName}" /> - </h:column> + </rich:column> <h:column> <f:facet name="header">#{lbl['file.list.component.length']}</f:facet> <h:outputText value="#{file.pageCount} #{lbl['file.list.component.length.pages']}" rendered="#{file.fileType.type == 'document'}"/> @@ -112,14 +147,16 @@ </h:outputText> <!-- --> </h:column> - <h:column> + <rich:column + sortBy="#{file.user.surname}"> <f:facet name="header">#{lbl['file.list.component.user']}</f:facet> <elvys:userLabel id="usrLbl" value="#{file.user}"/> - </h:column> - <h:column> + </rich:column> + <rich:column + sortBy="#{file.uploaded}"> <f:facet name="header">#{lbl['file.list.component.time']}</f:facet> <elvys:dateTimeLabel id="UploadDate" value="#{file.uploaded}"/> - </h:column> + </rich:column> <h:column> <f:facet name="header"> <h:outputText value="#{lbl['file.list.component.note']}" /> @@ -189,21 +226,7 @@ </div> </h:column> - <!-- UPLOAD NEW --> - <h:column rendered="#{showUploadIcon}"> - <f:facet name="header"> - <h:panelGroup> - <h:commandButton id="UploadNew" - image="/images/icons/create.png" - immediate="true" - action="#{fileUploadBean.prepareUploadComponent}"> - </h:commandButton> - <rich:toolTip for="UploadNew"> - <h:outputText value="#{lbl['file.list.component.uploadnew']}"/> - </rich:toolTip> - </h:panelGroup> - </f:facet> - </h:column> + <!-- FOOTER --> <f:facet name="footer"> <rich:datascroller renderIfSinglePage="false" immediate="true"/> </f:facet> @@ -212,6 +235,7 @@ <f:param value="#{file.origName}" name="origName" /> <f:param value="#{file.id}" name="id" /> </rich:componentControl> + </rich:dataTable> </h:panelGroup> <br style="clear:both;"/> Modified: trunk/server/webServer2/WebContent/secured/components/file/fileListModalComponent.xhtml =================================================================== --- trunk/server/webServer2/WebContent/secured/components/file/fileListModalComponent.xhtml 2010-02-21 17:31:06 UTC (rev 1809) +++ trunk/server/webServer2/WebContent/secured/components/file/fileListModalComponent.xhtml 2010-02-21 18:26:56 UTC (rev 1810) @@ -54,7 +54,7 @@ <!-- MODAL WINDOW --> <rich:modalPanel id="#{modalWinId}" autosized="true" minHeight="200" - minWidth="200" zindex="2000"> + minWidth="950" zindex="2000"> <f:facet name="header"> <h:outputText value="#{modalWinHeader}" /> </f:facet> Modified: trunk/server/webServer2/WebContent/secured/plug/planningModalDynamic.xhtml =================================================================== --- trunk/server/webServer2/WebContent/secured/plug/planningModalDynamic.xhtml 2010-02-21 17:31:06 UTC (rev 1809) +++ trunk/server/webServer2/WebContent/secured/plug/planningModalDynamic.xhtml 2010-02-21 18:26:56 UTC (rev 1810) @@ -12,7 +12,7 @@ <br/> <h:inputTextarea id="DynamicPlanningTextField_input" value="#{planningModalDynamicBean.formData.text}" - style="width: 100%;" + style="width: 90%;" rows="5"/> <a4j:outputPanel ajaxRendered="true"> <h:message id="DynamicPlanningTextField_error" Modified: trunk/server/webServer2/WebContent/styles/components/file/fileListComponent.css =================================================================== --- trunk/server/webServer2/WebContent/styles/components/file/fileListComponent.css 2010-02-21 17:31:06 UTC (rev 1809) +++ trunk/server/webServer2/WebContent/styles/components/file/fileListComponent.css 2010-02-21 18:26:56 UTC (rev 1810) @@ -3,7 +3,12 @@ } +.file-list-buttons { + float: left; + padding-left: 10px; +} + .file-list-area-all { } Modified: trunk/server/webServer2/WebContent/styles/components/file/fileListModalComponent.css =================================================================== --- trunk/server/webServer2/WebContent/styles/components/file/fileListModalComponent.css 2010-02-21 17:31:06 UTC (rev 1809) +++ trunk/server/webServer2/WebContent/styles/components/file/fileListModalComponent.css 2010-02-21 18:26:56 UTC (rev 1810) @@ -19,6 +19,5 @@ .modal-body-with-list { float: left; - width: 800px; - height: 600px; + } \ No newline at end of file