[elvystrac] r1784 - * upgrade list of users

  • From: elvys@xxxxxxxxxxxxxxxxxxxxxx
  • To: elvystrac@xxxxxxxxxxxxx
  • Date: Thu, 18 Feb 2010 18:02:56 +0100

Author: JirkaM
Date: 2010-02-18 18:02:56 +0100 (Thu, 18 Feb 2010)
New Revision: 1784

Modified:
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserListBean.java
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/labels_cs.properties
   trunk/server/webServer2/WebContent/js/elvys-template.js
   trunk/server/webServer2/WebContent/secured/userrel/listOfUsers.xhtml
   trunk/server/webServer2/WebContent/styles/elvys-template.css
Log:
* upgrade list of users
modified   JavaSource/cz/elvys/webServer/beans/user/UserListBean.java
modified   JavaSource/cz/elvys/webServer/messages/labels_cs.properties
modified   WebContent/js/elvys-template.js
modified   WebContent/secured/userrel/listOfUsers.xhtml
modified   WebContent/styles/elvys-template.css


Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserListBean.java
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserListBean.java
  2010-02-18 16:55:15 UTC (rev 1783)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserListBean.java
  2010-02-18 17:02:56 UTC (rev 1784)
@@ -24,6 +24,7 @@
 import org.hibernate.Transaction;
 
 import cz.elvys.webServer.HIBgen.Company;
+import cz.elvys.webServer.HIBgen.File;
 import cz.elvys.webServer.HIBgen.Role;
 import cz.elvys.webServer.HIBgen.User;
 import cz.elvys.webServer.db.InitSessionFactory;
@@ -34,52 +35,88 @@
 
 /**
  * @author David
- *
+ * 
  */
 public class UserListBean implements Serializable {
        // fields
        private Logger log;
-       
+
        // const
        private static final long serialVersionUID = 8092026699388193893L;
-       
+
        private List<User> users = null;
        private User selectedUser = null;
-       
+
+       // filter variables
+       private String filterValue;
+
        private UserBL userBL;
-       
+
        public UserListBean() {
                log = Logger.getLogger(this.getClass());
                this.userBL = Fact.getUserBL();
-       } 
-       
+       }
+
        public List<User> getUsers() {
                return users;
        }
+
        public void setUsers(List<User> users) {
                this.users = users;
        }
+
        public User getSelectedUser() {
                return selectedUser;
        }
+
        public void setSelectedUser(User selectedUser) {
                this.selectedUser = selectedUser;
        }
-       
+
        /**
         * @return
         */
        public String prepareListOfUsers() {
                UserLoginBean user = BeanManager.getUser();
                int compID = user.getCompanyID();
-               users = userBL.loadAllUsers(compID,user.getCompStr());
+               users = userBL.loadAllUsers(compID, user.getCompStr());
                return "listOfUsers";
        }
-       
-       
+
        public void deleteUser(ActionEvent aev) {
                userBL.deleteUser(selectedUser);
                users.remove(selectedUser);
        }
-       
+
+       /**
+        * Method for filtering list of user in table.
+        * 
+        * @param current
+        * @return
+        */
+       public boolean filterByValue(Object current) {
+               User user = (User) current;
+               if (filterValue == null || filterValue.length() == 0) {
+                       return true;
+               }
+               
+               String filterValueLowerCase = filterValue.toLowerCase();
+               
+               if 
(user.getSurname().toLowerCase().contains(filterValueLowerCase)) { return true; 
}                    
+               if 
(user.getUsername().toLowerCase().contains(filterValueLowerCase)) { return 
true; }
+               if 
(user.getRealname().toLowerCase().contains(filterValueLowerCase)) { return 
true; }
+               if 
(user.getEmail().toLowerCase().contains(filterValueLowerCase)) { return true; } 
             
+               if 
(user.getPhone().toLowerCase().contains(filterValueLowerCase)) { return true; }
+               
+               return false;
+       }
+
+       public String getFilterValue() {
+               return filterValue;
+       }
+
+       public void setFilterValue(String filterValue) {
+               this.filterValue = filterValue;
+       }
+
 }

Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/labels_cs.properties
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/labels_cs.properties
 2010-02-18 16:55:15 UTC (rev 1783)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/labels_cs.properties
 2010-02-18 17:02:56 UTC (rev 1784)
@@ -108,8 +108,10 @@
 user.list.body.surname=P\u0159\u00EDjmen\u00ED
 user.list.body.firstname=Jm\u00E9no
 user.list.body.role=Role
-user.list.body.username=U\u017Eivatelsk\u00E9 jm\u00E9no
-user.list.body.edit=\u00DAprava
+user.list.body.username=Login
+user.list.body.phone=Telefon
+user.list.body.email=Email
+user.list.body.edit=Operace
 user.list.body.edit.tooltip=Upravit u\u017Eivatele
 user.list.body.create.tooltip=Vytvo\u0159en\u00ED nov\u00E9ho u\u017Eivatele
 user.list.body.delete=Maz\u00E1n\u00ED
@@ -481,4 +483,7 @@
 report.result.didntShow=nevystaven
 report.result.noShowTitle=Seznam nezobrazen\u00FDch polo\u017Eek
 report.result.emptyResult=Litujeme, ale pro zobrazen\u00ED report\u016F je 
nutn\u00E9 vybrat dokumenty a kiosky
-report.result.emptyResultLink=P\u0159ej\u00EDt na filtr pro zobrazen\u00ED 
reportu
\ No newline at end of file
+report.result.emptyResultLink=P\u0159ej\u00EDt na filtr pro zobrazen\u00ED 
reportu
+
+list.empty=Zadny zaznam
+list.search=Vyhledat
\ No newline at end of file

Modified: trunk/server/webServer2/WebContent/js/elvys-template.js
===================================================================
--- trunk/server/webServer2/WebContent/js/elvys-template.js     2010-02-18 
16:55:15 UTC (rev 1783)
+++ trunk/server/webServer2/WebContent/js/elvys-template.js     2010-02-18 
17:02:56 UTC (rev 1784)
@@ -6,4 +6,19 @@
        
winId=window.open('/webServer2/secured/layoutrel/layoutEdit.jsf','NOVEOKNO',features);
 // open an empty window
        winId.opener=this;
        
+}
+
+
+function setCaretToEnd(e) {
+       var control = $((e.target ? e.target : e.srcElement).id);
+       if (control.createTextRange) {
+               var range = control.createTextRange();
+               range.collapse(false);
+               range.select();
+       } else if (control.setSelectionRange) {
+               control.focus();
+               var length = control.value.length;
+               control.setSelectionRange(length, length);
+       }
+       control.selectionStart = control.selectionEnd = control.value.length;
 }
\ No newline at end of file

Modified: trunk/server/webServer2/WebContent/secured/userrel/listOfUsers.xhtml
===================================================================
--- trunk/server/webServer2/WebContent/secured/userrel/listOfUsers.xhtml        
2010-02-18 16:55:15 UTC (rev 1783)
+++ trunk/server/webServer2/WebContent/secured/userrel/listOfUsers.xhtml        
2010-02-18 17:02:56 UTC (rev 1784)
@@ -1,127 +1,163 @@
 <!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:f="http://java.sun.com/jsf/core";
-      xmlns:ui="http://java.sun.com/jsf/facelets";
+       xmlns:h="http://java.sun.com/jsf/html";
+       xmlns:f="http://java.sun.com/jsf/core";
+       xmlns:ui="http://java.sun.com/jsf/facelets";
        xmlns:a4j="http://richfaces.org/a4j";
        xmlns:rich="http://richfaces.org/rich";>
 
 <ui:composition template="/template/elvys-template.xhtml">
 
-<ui:define name="title">#{lbl['user.list.title']}</ui:define>
-<ui:define name="contentTitle">#{lbl['user.list.body.title']}</ui:define>
-<ui:define name="contentSubTitle"></ui:define>
+       <ui:define name="title">#{lbl['user.list.title']}</ui:define>
+       <ui:define 
name="contentTitle">#{lbl['user.list.body.title']}</ui:define>
+       <ui:define name="contentSubTitle"></ui:define>
 
-<ui:define name="contentBody">
-       <h:form>
-               <rich:panel id="listOfUsersPanel">
-               <f:facet name="header">#{lbl['user.list.body.title']}</f:facet>
-                       <h:panelGrid id="listOfUsers">
-                               <rich:dataTable value="#{usersBean.users}" 
var="user_iterator" rows="10"
-                               width="600" reRender="datascroller" 
sortMode="multi">
-                                       <h:column>
-                                               <f:facet 
name="header">#{lbl['user.list.body.id']}</f:facet>
-                                               <h:outputText 
value="#{user_iterator.id}"/>
-                                       </h:column>
-                                       <h:column>
-                                               <f:facet 
name="header">#{lbl['user.list.body.company']}</f:facet>
-                                               <h:outputText 
value="#{user_iterator.company.name}"/>
-                                       </h:column>
-                                       
-                                       <rich:column 
sortBy="#{user_iterator.surname}">
-                                               <f:facet 
name="header">#{lbl['user.list.body.surname']}</f:facet>
-                                               <h:outputText 
value="#{user_iterator.surname}"/>
-                                       </rich:column>
-                                       
-                                       <rich:column 
sortBy="#{user_iterator.realname}">
-                                               <f:facet 
name="header">#{lbl['user.list.body.firstname']}</f:facet>
-                                               <h:outputText 
value="#{user_iterator.realname}"/>
-                                       </rich:column>
-                                       <h:column>
-                                               <f:facet 
name="header">#{lbl['user.list.body.role']}</f:facet>
-                                               <h:outputText 
value="#{user_iterator.role.role}"/>
-                                       </h:column>
-                                       <h:column>
-                                               <f:facet 
name="header">#{lbl['user.list.body.username']}</f:facet>
-                                               <h:outputText 
value="#{user_iterator.username}"/>
-                                       </h:column>
-                                       
-                                       <!-- EDIT/UPDATE -->
-                                       <h:column>
-                                               <f:facet 
name="header">#{lbl['user.list.body.edit']}</f:facet>
-                                               <a4j:commandButton id="EditUser"
-                                                               
image="/images/icons/edit.png"
-                                                               
action="#{usersBean.prepareUpdateUserForm}">
-                                                       
<f:setPropertyActionListener value="#{user_iterator}" 
target="#{usersBean.selectedUser}" />
-                                                       
<f:setPropertyActionListener value="${true}" target="#{usersBean.updating}" />
-                                               </a4j:commandButton>
-                                               <rich:toolTip for="EditUser">
-                                                       <h:outputText 
value="#{lbl['user.list.body.edit.tooltip']}"/>
-                                               </rich:toolTip>
-                                       </h:column>
-                                       
-                                       <!-- DELETE -->
-                                       <h:column>
-                                               <f:facet 
name="header">#{lbl['user.list.body.delete']}</f:facet>
-                                               <a4j:commandButton 
id="DeleteUser"
-                                                                       
rendered="#{user.user.id!=user_iterator.id and !user_iterator.system}"
-                                                                       
reRender="DeleteUserModalContent" 
-                                                                       
oncomplete="Richfaces.showModalPanel('DeleteUserModal',{left:300, top:300})"
-                                                                       
image="/images/icons/delete.gif">
-                                                       
<f:setPropertyActionListener value="#{user_iterator}" 
target="#{usersBean.selectedUser}" />
-                                               </a4j:commandButton>
-                                               <rich:toolTip for="DeleteUser">
-                                                       <h:outputText 
value="#{lbl['user.list.body.delete.tooltip']}"/>
-                                               </rich:toolTip>
-                                       </h:column>
-                                       
-                                       <!-- CREATE -->
-                                       <h:column>
+       <ui:define name="contentBody">
+               <h:form>
+                       <rich:panel id="listOfUsersPanel">
+                               <f:facet 
name="header">#{lbl['user.list.body.title']}</f:facet>                 
+                               <h:panelGrid id="listOfUsers">
+                                       <rich:extendedDataTable 
value="#{usersBean.users}"
+                                               var="user_iterator" rows="10" 
height="364px;"                                           
+                                               enableContextMenu="false" 
id="tableListOfUsers"
+                                               reRender="datascroller" 
sortMode="single"
+                                               
noDataLabel="#{lbl['list.empty']}"
+                                               
width="#{(6+(user.user.system?1:0))*110}px"
+                                               align="center"
+                                               >
+       
                                                <f:facet name="header">
-                                                       <h:panelGroup>
-                                                               
<a4j:commandButton id="CreateNewUser"
-                                                                               
image="/images/icons/create.png"
-                                                                               
action="#{usersBean.prepareCreateUserForm}">
-                                                                       
<f:setPropertyActionListener value="${false}" target="#{usersBean.updating}" />
-                                                               
</a4j:commandButton>
-                                                               <rich:toolTip 
for="CreateNewUser">
-                                                                       
<h:outputText value="#{lbl['user.list.body.create.tooltip']}"/>
-                                                               </rich:toolTip>
-                                                       </h:panelGroup>
-                                               </f:facet>
-                                       </h:column>
-                                       <f:facet name="footer">
-                                               <rich:datascroller 
id="datascroller" renderIfSinglePage="false" immediate="true"/>
-                                       </f:facet>
-                               </rich:dataTable>
-                       </h:panelGrid>
-               </rich:panel>
-       </h:form>
+                                                       <rich:columnGroup>
+                                                               <rich:column 
colspan="#{6+(user.user.system?1:0)}">
+                                                                       <div 
class="controlPanel">
+                                                                               
<h:panelGroup>
+                                                                               
        <a4j:commandButton id="CreateNewUser"
+                                                                               
                image="/images/icons/create.png"
+                                                                               
                action="#{userEditBean.prepareCreateUserForm}">
+                                                                               
                <f:setPropertyActionListener value="${false}"
+                                                                               
                        target="#{userEditBean.updating}" />
+                                                                               
        </a4j:commandButton>
+                                                                               
        <rich:toolTip for="CreateNewUser">
+                                                                               
                <h:outputText value="#{lbl['user.list.body.create.tooltip']}" />
+                                                                               
        </rich:toolTip>
+                                                                               
</h:panelGroup>
+                                                                       </div>
+                                                                       <div 
class="searchPanel">
+                                                                               
#{lbl['list.search']} :
+                                                                               
<h:inputText value="#{usersBean.filterValue}" id="input">
+                                                                               
        <a4j:support event="onkeyup" reRender="listOfUsers"
+                                                                               
                ignoreDupResponses="true" requestDelay="700"
+                                                                               
                oncomplete="setCaretToEnd(event);" />
+                                                                               
</h:inputText>
+                                                                       </div>
+                                                               </rich:column>  
                                                        
+                                                       </rich:columnGroup>
+                                               </f:facet>                      
                        
+                                               
+                                               <rich:column 
sortBy="#{user_iterator.company.name}" width="110px"
+                                                       
rendered="#{user.user.system}">
+                                                       <f:facet name="header">
+                                                               
#{lbl['user.list.body.company']}                                                
                                                                                
+                                                       </f:facet>
+                                                       <h:outputText 
value="#{user_iterator.company.name}" />
+                                               </rich:column>
+
+                                               <rich:column width="140px"
+                                                       
filterMethod="#{usersBean.filterByValue}" 
+                                                       
sortBy="#{user_iterator.surname}">
+                                                       <f:facet 
name="header">#{lbl['user.list.body.firstname']}</f:facet>
+                                                       <h:outputText 
value="#{user_iterator.surname} #{user_iterator.realname}" />
+                                               </rich:column>
+
+                                               <rich:column width="60px" 
sortBy="#{user_iterator.role.role}">
+                                                       <f:facet 
name="header">#{lbl['user.list.body.role']}</f:facet>
+                                                       <h:outputText 
value="#{user_iterator.role.role}" />
+                                               </rich:column>
+                                               <rich:column width="100px" 
sortBy="#{user_iterator.username}">
+                                                       <f:facet 
name="header">#{lbl['user.list.body.username']}</f:facet>
+                                                       <h:outputText 
value="#{user_iterator.username}" />
+                                               </rich:column>
+
+                                               <rich:column  width="180px" 
sortBy="#{user_iterator.email}">
+                                                       <f:facet 
name="header">#{lbl['user.list.body.email']}</f:facet>
+                                                       <h:outputText 
value="#{user_iterator.email}" />
+                                               </rich:column>
+
+                                               <rich:column width="90px" 
sortBy="#{user_iterator.phone}">
+                                                       <f:facet 
name="header">#{lbl['user.list.body.phone']}</f:facet>
+                                                       <h:outputText 
value="#{user_iterator.phone}" />
+                                               </rich:column>
+                                               
+                                               <rich:column width="90px">
+                                                       <f:facet 
name="header">#{lbl['user.list.body.edit']}</f:facet>
+                                                       <div 
class="list-operations-main">
+                                                               <div 
class="list-operations-item">
+                                                                       
<a4j:commandButton id="EditUser" image="/images/icons/edit.png"
+                                                                               
action="#{userEditBean.prepareUpdateUserForm}">
+                                                                               
<f:setPropertyActionListener value="#{user_iterator}"
+                                                                               
        target="#{userEditBean.selectedUser}" />
+                                                                               
<f:setPropertyActionListener value="${true}"
+                                                                               
        target="#{userEditBean.updating}" />
+                                                                       
</a4j:commandButton>
+                                                                       
<rich:toolTip for="EditUser" direction="bottom-left">
+                                                                               
<h:outputText value="#{lbl['user.list.body.edit.tooltip']}" />
+                                                                       
</rich:toolTip>
+                                                               </div>
        
+                                                               <!-- DELETE -->
        
-       <rich:modalPanel id="DeleteUserModal" minHeight="100" minWidth="200"
-               height="150" width="200" zindex="2000">
-               <center>
-               <h:form id="DeleteUserModalContent">
-                       
<b><h:outputText>#{lbl['user.list.body.delete.tooltip.question']}</h:outputText></b>
 
-                       <br/>
-                       <h:outputText 
value="#{usersBean.selectedUser.surname}:"/>
-                       <br/>
-                       <h:panelGrid columns="2">
-                               <a4j:commandButton 
value="#{lbl['user.list.body.delete.tooltip.yes']}" 
-                                       
onclick="Richfaces.hideModalPanel('DeleteUserModal')"
-                                       
actionListener="#{usersBean.deleteUser}" 
-                                       reRender="listOfUsers">
-                               </a4j:commandButton>
-                               <a4j:commandButton 
value="#{lbl['user.list.body.delete.tooltip.no']}"
-                                       
onclick="Richfaces.hideModalPanel('DeleteUserModal')"
-                                       reRender="listOfUsers"/>
-                       </h:panelGrid>
+                                                               <div 
class="list-operations-item">
+                                                                       
<a4j:commandButton id="DeleteUser"
+                                                                               
rendered="#{user.user.id!=user_iterator.id and !user_iterator.system}"
+                                                                               
reRender="DeleteUserModalContent"
+                                                                               
oncomplete="Richfaces.showModalPanel('DeleteUserModal',{left:300, top:300})"
+                                                                               
image="/images/icons/delete.gif">
+                                                                               
<f:setPropertyActionListener value="#{user_iterator}"
+                                                                               
        target="#{usersBean.selectedUser}" />
+                                                                       
</a4j:commandButton>
+                                                                       
<rich:toolTip for="DeleteUser"  direction="bottom-left">
+                                                                               
<h:outputText value="#{lbl['user.list.body.delete.tooltip']}" />
+                                                                       
</rich:toolTip>
+                                                               </div>
+                                                       </div>
+                                               </rich:column>
+
+                                               
+                                               
+       
+                                               <f:facet name="footer">
+                                                       <rich:datascroller 
id="datascroller" renderIfSinglePage="false"
+                                                               
immediate="true" />
+                                               </f:facet>
+                                       </rich:extendedDataTable>
+                               
+                               </h:panelGrid>
+                       </rich:panel>                   
                </h:form>
-               </center>
-       </rich:modalPanel>
-</ui:define>
 
 
+               <rich:modalPanel id="DeleteUserModal" minHeight="100" 
minWidth="200"
+                       height="150" width="200" zindex="2000">
+                       <center><h:form id="DeleteUserModalContent">
+                               
<b><h:outputText>#{lbl['user.list.body.delete.tooltip.question']}</h:outputText></b>
+                               <br />
+                               <h:outputText 
value="#{usersBean.selectedUser.surname}:" />
+                               <br />
+                               <h:panelGrid columns="2">
+                                       <a4j:commandButton
+                                               
value="#{lbl['user.list.body.delete.tooltip.yes']}"
+                                               
onclick="Richfaces.hideModalPanel('DeleteUserModal')"
+                                               
actionListener="#{usersBean.deleteUser}" reRender="listOfUsers">
+                                       </a4j:commandButton>
+                                       <a4j:commandButton
+                                               
value="#{lbl['user.list.body.delete.tooltip.no']}"
+                                               
onclick="Richfaces.hideModalPanel('DeleteUserModal')"
+                                               reRender="listOfUsers" />
+                               </h:panelGrid>
+                       </h:form></center>
+               </rich:modalPanel>
+       </ui:define>
+
+
 </ui:composition>
-</html>  
+</html>

Modified: trunk/server/webServer2/WebContent/styles/elvys-template.css
===================================================================
--- trunk/server/webServer2/WebContent/styles/elvys-template.css        
2010-02-18 16:55:15 UTC (rev 1783)
+++ trunk/server/webServer2/WebContent/styles/elvys-template.css        
2010-02-18 17:02:56 UTC (rev 1784)
@@ -106,8 +106,30 @@
        text-align: right;      
 }
 .list-operations-item {
-       margin-right: 5px;
+       margin-right:15px;
+       width:10px;
+       float:right;
+}
+
+div.searchPanel {
+       float:right;
+       width:250px;
+       text-align:right;       
+}
+
+div.searchPanel input {
+       padding-left:3px;       
+}
+
+div.controlPanel {
+       float:left;
+}
        
+div.controlPanel input {
+       padding:0px;
+       border:1px solid #A4D800;
 }
+       
+       
 
 


Other related posts:

  • » [elvystrac] r1784 - * upgrade list of users - elvys