From: Vásáry Dániel Date: Sun, 3 Mar 2024 22:32:48 +0000 (+0100) Subject: Projects view complex filter X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=cefa91c13e38557329bfc098075449b5ebd091ac;p=sly-crm.git Projects view complex filter --- diff --git a/sly-crm-db/migrations/scripts/029_actual_to_projectstatus.sql b/sly-crm-db/migrations/scripts/029_actual_to_projectstatus.sql new file mode 100644 index 0000000..c7153be --- /dev/null +++ b/sly-crm-db/migrations/scripts/029_actual_to_projectstatus.sql @@ -0,0 +1,12 @@ +-- // add actual to project_status +-- Migration SQL that makes the change goes here. + +ALTER TABLE project_status + ADD COLUMN actual SMALLINT NOT NULL DEFAULT 1; + +-- //@UNDO +-- SQL to undo the change goes here. + +ALTER TABLE project_status + DROP COLUMN actual; +CALL SYSPROC.ADMIN_CMD('REORG TABLE project_status'); diff --git a/sly-crm-db/src/main/java/hu/user/lis/db/ProjectStatus.java b/sly-crm-db/src/main/java/hu/user/lis/db/ProjectStatus.java index 3ccdc94..c619a67 100644 --- a/sly-crm-db/src/main/java/hu/user/lis/db/ProjectStatus.java +++ b/sly-crm-db/src/main/java/hu/user/lis/db/ProjectStatus.java @@ -18,7 +18,9 @@ public class ProjectStatus extends IdEntity { private String name; - private boolean active; - private int order; + + private boolean active; + + private boolean actual; } diff --git a/sly-crm-db/src/main/java/hu/user/lis/db/repository/ProjectRepositorySearch.java b/sly-crm-db/src/main/java/hu/user/lis/db/repository/ProjectRepositorySearch.java index fc93c46..a329e53 100644 --- a/sly-crm-db/src/main/java/hu/user/lis/db/repository/ProjectRepositorySearch.java +++ b/sly-crm-db/src/main/java/hu/user/lis/db/repository/ProjectRepositorySearch.java @@ -1,11 +1,16 @@ package hu.user.lis.db.repository; import hu.user.lis.db.Project; +import hu.user.lis.db.repository.filter.ProjectFilter; import org.springframework.data.domain.Pageable; import java.util.List; public interface ProjectRepositorySearch { + List search(ProjectFilter filter); + + long count(ProjectFilter filter); + List search(String partialSearch, List projectIds, boolean filterShowActive, boolean filterShowInActive, Pageable pageable); long count(String partialSearch, List projectIds, boolean filterShowActive, boolean filterShowInActive); diff --git a/sly-crm-db/src/main/java/hu/user/lis/db/repository/ProjectRepositorySearchImpl.java b/sly-crm-db/src/main/java/hu/user/lis/db/repository/ProjectRepositorySearchImpl.java index 0c79056..b1192e2 100644 --- a/sly-crm-db/src/main/java/hu/user/lis/db/repository/ProjectRepositorySearchImpl.java +++ b/sly-crm-db/src/main/java/hu/user/lis/db/repository/ProjectRepositorySearchImpl.java @@ -1,6 +1,7 @@ package hu.user.lis.db.repository; import hu.user.lis.db.Project; +import hu.user.lis.db.repository.filter.ProjectFilter; import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.data.domain.Pageable; @@ -16,6 +17,7 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import java.util.ArrayList; import java.util.List; +import java.util.Objects; @Repository public class ProjectRepositorySearchImpl implements ProjectRepositorySearch { @@ -43,6 +45,61 @@ public class ProjectRepositorySearchImpl implements ProjectRepositorySearch { return predicates.toArray(new Predicate[]{}); } + Predicate[] getPredicates(CriteriaBuilder cb, Root root, ProjectFilter filter) { + List predicates = new ArrayList<>(); + if (StringUtils.isNotBlank(filter.getPartialSearch())) { + List orPredicates = new ArrayList<>(); + orPredicates.add(cb.like(cb.lower(root.get("name")), "%" + filter.getPartialSearch().toLowerCase() + "%")); + orPredicates.add(cb.like(cb.lower(root.get("humanId")), "%" + filter.getPartialSearch().toLowerCase() + "%")); + orPredicates.add(cb.like(cb.lower(root.join("partner").get("name")), "%" + filter.getPartialSearch().toLowerCase() + "%")); + predicates.add(cb.or(orPredicates.toArray(new Predicate[]{}))); + } + if (!ListUtils.emptyIfNull(filter.getProjectIds()).isEmpty()) { + predicates.add(root.get("id").in(filter.getProjectIds())); + } + if (filter.isFilterShowActive() && !filter.isFilterShowInActive()) { + predicates.add(cb.isTrue(root.get("active"))); + } + if (filter.isFilterShowInActive() && !filter.isFilterShowActive()) { + predicates.add(cb.isFalse(root.get("active"))); + } + if (filter.isActual()) { + predicates.add(cb.isTrue(root.join("projectStatus").get("active"))); + } + if (Objects.nonNull(filter.getPartner())) { + predicates.add(cb.equal(root.get("partner"), filter.getPartner())); + } + if (Objects.nonNull(filter.getStatus())) { + predicates.add(cb.equal(root.get("projectStatus"), filter.getStatus())); + } + return predicates.toArray(new Predicate[]{}); + } + + @Override + public List search(ProjectFilter filter) { + CriteriaBuilder cb = entityManager.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(Project.class); + Root root = cq.from(Project.class); + + cq.where(getPredicates(cb, root, filter)); + cq.orderBy(QueryUtils.toOrders(filter.getPageable().getSort(), root, cb)); + TypedQuery query = entityManager.createQuery(cq); + query.setMaxResults(filter.getPageable().getPageSize()); + query.setFirstResult(filter.getPageable().getPageSize() * filter.getPageable().getPageNumber()); + return query.getResultList(); + } + + @Override + public long count(ProjectFilter filter) { + CriteriaBuilder cb = entityManager.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(Long.class); + Root root = cq.from(Project.class); + + cq.select(cb.count(root)); + cq.where(getPredicates(cb, root, filter)); + return entityManager.createQuery(cq).getSingleResult(); + } + @Override public List search(String partialSearch, List projectIds, boolean filterShowActive, boolean filterShowInActive, Pageable pageable) { CriteriaBuilder cb = entityManager.getCriteriaBuilder(); diff --git a/sly-crm-db/src/main/java/hu/user/lis/db/repository/filter/ActiveFilter.java b/sly-crm-db/src/main/java/hu/user/lis/db/repository/filter/ActiveFilter.java new file mode 100644 index 0000000..d5fb79f --- /dev/null +++ b/sly-crm-db/src/main/java/hu/user/lis/db/repository/filter/ActiveFilter.java @@ -0,0 +1,20 @@ +package hu.user.lis.db.repository.filter; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +@Getter +@Setter +@SuperBuilder +@ToString +public class ActiveFilter extends PageableFilter { + + private boolean filterShowInActive; + + private boolean filterShowActive; + + private boolean filterShowBoth; + +} diff --git a/sly-crm-db/src/main/java/hu/user/lis/db/repository/filter/InvoiceFilter.java b/sly-crm-db/src/main/java/hu/user/lis/db/repository/filter/InvoiceFilter.java index 14914d7..c1a24af 100644 --- a/sly-crm-db/src/main/java/hu/user/lis/db/repository/filter/InvoiceFilter.java +++ b/sly-crm-db/src/main/java/hu/user/lis/db/repository/filter/InvoiceFilter.java @@ -3,16 +3,18 @@ package hu.user.lis.db.repository.filter; import hu.user.lis.db.InvoiceStatus; import hu.user.lis.db.Partner; import hu.user.lis.db.Project; -import lombok.*; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.SuperBuilder; import java.util.Date; + @Getter @Setter -@Builder +@SuperBuilder @ToString -@NoArgsConstructor -@AllArgsConstructor public class InvoiceFilter extends PageableFilter { private Partner partner; diff --git a/sly-crm-db/src/main/java/hu/user/lis/db/repository/filter/PageableFilter.java b/sly-crm-db/src/main/java/hu/user/lis/db/repository/filter/PageableFilter.java index 43a2dbc..50e0f86 100644 --- a/sly-crm-db/src/main/java/hu/user/lis/db/repository/filter/PageableFilter.java +++ b/sly-crm-db/src/main/java/hu/user/lis/db/repository/filter/PageableFilter.java @@ -2,10 +2,12 @@ package hu.user.lis.db.repository.filter; import lombok.Getter; import lombok.Setter; +import lombok.experimental.SuperBuilder; import org.springframework.data.domain.Pageable; @Getter @Setter +@SuperBuilder public class PageableFilter { private Pageable pageable; } diff --git a/sly-crm-db/src/main/java/hu/user/lis/db/repository/filter/ProjectFilter.java b/sly-crm-db/src/main/java/hu/user/lis/db/repository/filter/ProjectFilter.java new file mode 100644 index 0000000..8aa7199 --- /dev/null +++ b/sly-crm-db/src/main/java/hu/user/lis/db/repository/filter/ProjectFilter.java @@ -0,0 +1,28 @@ +package hu.user.lis.db.repository.filter; + +import hu.user.lis.db.Partner; +import hu.user.lis.db.ProjectStatus; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +@Getter +@Setter +@SuperBuilder +@ToString +public class ProjectFilter extends ActiveFilter { + + private Partner partner; + + private ProjectStatus status; + + private boolean actual; + + private String partialSearch; + + private List projectIds; + +} diff --git a/sly-crm-ui/src/main/java/hu/user/lis/ui/data/ProjectsDataModel.java b/sly-crm-ui/src/main/java/hu/user/lis/ui/data/ProjectsDataModel.java index b1a4a17..0675113 100644 --- a/sly-crm-ui/src/main/java/hu/user/lis/ui/data/ProjectsDataModel.java +++ b/sly-crm-ui/src/main/java/hu/user/lis/ui/data/ProjectsDataModel.java @@ -5,6 +5,7 @@ import hu.user.lis.db.Project; import hu.user.lis.db.ProjectStatus; import hu.user.lis.db.repository.InvoiceRepository; import hu.user.lis.db.repository.ProjectRepository; +import hu.user.lis.db.repository.filter.ProjectFilter; import hu.user.lis.service.data.EntityDataService; import hu.user.lis.ui.data.common.CachedSpringDataModel; import lombok.extern.log4j.Log4j2; @@ -40,6 +41,8 @@ public class ProjectsDataModel extends CachedSpringDataModel { @Autowired EntityDataService projectDataService; + private ProjectFilter filter; + private String partialName; private boolean listAll; @@ -56,20 +59,25 @@ public class ProjectsDataModel extends CachedSpringDataModel { @Override public List getResultSet(int page, int pageSize, FieldComparator sortComparator) { Pageable pageable = createPageable(page, pageSize, sortComparator); - List result = listAll ? projectRepository.findAll() : - projectRepository.search(partialName, null, filterShowActive, filterShowInActive, pageable); - return result; + Optional.ofNullable(filter).ifPresent(f -> f.setPageable(pageable)); + return Objects.isNull(filter) ? projectRepository.findAll(pageable).getContent() : projectRepository.search(filter); } @Override public int getResultSetCount() { - long result = listAll ? projectRepository.count() : - projectRepository.count(partialName, null, filterShowActive, filterShowInActive); + long result = Objects.isNull(filter) ? projectRepository.count() : projectRepository.count(filter); return (int) result; } + + public void search(ProjectFilter filter) { + log.info("Searching projects using filter: {}", filter); + this.filter = filter; + super.reset(); + } + public void search(String partialName) { - log.info("Searching partner using filters: name LIKE {}", partialName); + log.info("Searching projects using filters: name LIKE {}", partialName); listAll = false; this.partialName = partialName; super.reset(); diff --git a/sly-crm-ui/src/main/java/hu/user/lis/ui/data/common/CachedDataModel.java b/sly-crm-ui/src/main/java/hu/user/lis/ui/data/common/CachedDataModel.java index ca047ac..c1250fb 100644 --- a/sly-crm-ui/src/main/java/hu/user/lis/ui/data/common/CachedDataModel.java +++ b/sly-crm-ui/src/main/java/hu/user/lis/ui/data/common/CachedDataModel.java @@ -199,6 +199,7 @@ public abstract class CachedDataModel extends ListModelList { String timestamp = DateTimeFormatter.ofPattern("yyyyMMdd-HHmmss").format(LocalDateTime.now()); Path destinationTempPath = Paths.get(applicationUIProperties.getExportTempPath(), String.format("%s-%s.xlsx", getShortName(), timestamp)); int resultSetCount = getResultSetCount(); + log.info("Result total count is {}", resultSetCount); if (resultSetCount == 0) { Messagebox.show("Nincs exportálható adat."); return; diff --git a/sly-crm-ui/src/main/java/hu/user/lis/ui/session/SessionSettings.java b/sly-crm-ui/src/main/java/hu/user/lis/ui/session/SessionSettings.java index efb5809..5fcbebb 100644 --- a/sly-crm-ui/src/main/java/hu/user/lis/ui/session/SessionSettings.java +++ b/sly-crm-ui/src/main/java/hu/user/lis/ui/session/SessionSettings.java @@ -4,6 +4,7 @@ import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Service; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.Sessions; +import org.zkoss.zul.theme.Themes; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; @@ -17,6 +18,14 @@ public class SessionSettings { log.info("SessionSettings created"); } + public void applyTheme(String theme) { +// HttpServletResponse response = (HttpServletResponse) Executions.getCurrent().getNativeResponse(); + //ez a zk alapertelmezett tema cookie Cookie[] cookies = request.getCookies(); +// Cookie themeCookie = new Cookie("zktheme", theme); +// response.addCookie(themeCookie); + Themes.setTheme(Executions.getCurrent(), theme); + } + private HttpServletRequest getNativeRequest() { return (HttpServletRequest) Executions.getCurrent().getNativeRequest(); } @@ -47,7 +56,6 @@ public class SessionSettings { return getNativeSession().getId(); } - public void setAttribute(String name, Object obj) { HttpSession session = getNativeSession(); if (Objects.isNull(session)) { diff --git a/sly-crm-ui/src/main/java/hu/user/lis/ui/view/IndexViewModel.java b/sly-crm-ui/src/main/java/hu/user/lis/ui/view/IndexViewModel.java index d24589d..f3c9b3d 100644 --- a/sly-crm-ui/src/main/java/hu/user/lis/ui/view/IndexViewModel.java +++ b/sly-crm-ui/src/main/java/hu/user/lis/ui/view/IndexViewModel.java @@ -21,6 +21,7 @@ import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.Destroy; import org.zkoss.bind.annotation.Init; import org.zkoss.lang.Strings; +import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.select.annotation.VariableResolver; @@ -239,4 +240,9 @@ public class IndexViewModel implements EventListener { }); } + @Command + public void applyTheme(@BindingParam("name") String name) { + sessionSettings.applyTheme(name); + Executions.getCurrent().sendRedirect(Strings.EMPTY); + } } diff --git a/sly-crm-ui/src/main/java/hu/user/lis/ui/view/InvoicesViewModel.java b/sly-crm-ui/src/main/java/hu/user/lis/ui/view/InvoicesViewModel.java index ce7500a..6e83d04 100644 --- a/sly-crm-ui/src/main/java/hu/user/lis/ui/view/InvoicesViewModel.java +++ b/sly-crm-ui/src/main/java/hu/user/lis/ui/view/InvoicesViewModel.java @@ -13,8 +13,10 @@ import hu.user.lis.ui.event.EventBus; import hu.user.lis.ui.event.SaveEntityEvent; import hu.user.lis.ui.view.common.EntityViewModel; import lombok.Getter; +import lombok.Setter; import lombok.extern.log4j.Log4j2; import org.springframework.transaction.annotation.Transactional; +import org.zkoss.bind.BindContext; import org.zkoss.bind.BindUtils; import org.zkoss.bind.PropertyChangeEvent; import org.zkoss.bind.annotation.*; @@ -30,6 +32,10 @@ public class InvoicesViewModel extends EntityViewModel implements Event @Getter private InvoiceFilter invoiceFilter; + @Getter + @Setter + private boolean showPartner; + @WireVariable private EventBus eventBus; @@ -97,9 +103,9 @@ public class InvoicesViewModel extends EntityViewModel implements Event } @Command - public void setIncoming(@BindingParam("incoming") boolean value) { + public void setIncoming(@ContextParam(ContextType.BIND_CONTEXT) BindContext ctx, @BindingParam("incoming") boolean value) { invoiceFilter.setIncoming(value); - BindUtils.postNotifyChange(null, null, invoiceFilter, "incoming"); + BindUtils.postNotifyChange(invoiceFilter, "incoming"); } @Command @@ -108,9 +114,9 @@ public class InvoicesViewModel extends EntityViewModel implements Event } @Override - public void onEvent(Event evt) throws Exception { - if (evt instanceof PropertyChangeEvent) { - PropertyChangeEvent propertyEvent = (PropertyChangeEvent) evt; + public void onEvent(Event event) throws Exception { + if (event instanceof PropertyChangeEvent) { + PropertyChangeEvent propertyEvent = (PropertyChangeEvent) event; // (this.equals(propertyEvent.getBase()) && propertyEvent.getProperty().startsWith("invoiceFilter"))) if (invoiceFilter.equals(propertyEvent.getBase())) { log.info("Refresh needed, {} changed", propertyEvent.getProperty()); diff --git a/sly-crm-ui/src/main/java/hu/user/lis/ui/view/ProjectsViewModel.java b/sly-crm-ui/src/main/java/hu/user/lis/ui/view/ProjectsViewModel.java index 818bd96..cf62b00 100644 --- a/sly-crm-ui/src/main/java/hu/user/lis/ui/view/ProjectsViewModel.java +++ b/sly-crm-ui/src/main/java/hu/user/lis/ui/view/ProjectsViewModel.java @@ -1,9 +1,13 @@ package hu.user.lis.ui.view; +import hu.user.lis.db.Partner; import hu.user.lis.db.Project; +import hu.user.lis.db.repository.filter.ActiveFilter; +import hu.user.lis.db.repository.filter.ProjectFilter; import hu.user.lis.ui.Constants; import hu.user.lis.ui.data.ProjectsDataModel; import hu.user.lis.ui.data.common.CachedSpringDataModel; +import hu.user.lis.ui.editor.selector.EntitySelectorRouter; import hu.user.lis.ui.event.EventBus; import hu.user.lis.ui.event.SaveEntityEvent; import hu.user.lis.ui.view.common.FilterActiveViewModel; @@ -11,9 +15,9 @@ import hu.user.lis.workflow.invoice.service.WorkflowManagerService; import lombok.Getter; import lombok.extern.log4j.Log4j2; import org.zkoss.bind.BindUtils; -import org.zkoss.bind.annotation.Command; -import org.zkoss.bind.annotation.Destroy; -import org.zkoss.bind.annotation.Init; +import org.zkoss.bind.PropertyChangeEvent; +import org.zkoss.bind.annotation.*; +import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.select.annotation.WireVariable; @@ -26,15 +30,24 @@ import java.util.Objects; @Log4j2 -public class ProjectsViewModel extends FilterActiveViewModel implements EventListener { +public class ProjectsViewModel extends FilterActiveViewModel implements EventListener { @WireVariable @Getter private ProjectsDataModel projectsDataModel; @WireVariable private EventBus eventBus; + + @Getter + @WireVariable + private EntitySelectorRouter entitySelectorRouter; + @WireVariable private WorkflowManagerService workflowManagerService; + public ProjectFilter getProjectFilter() { + return (ProjectFilter) super.getActiveFilter(); + } + @Override protected CachedSpringDataModel getDataModel() { return projectsDataModel; @@ -50,6 +63,8 @@ public class ProjectsViewModel extends FilterActiveViewModel implements public void init() { super.init(); eventBus.register(this); + eventBus.registerForBinding(this); + addColumns(Arrays.asList( "humanId,Azonosító,ascending,left,true", "partner.name,Ügyfél,natural,left,true", @@ -63,6 +78,20 @@ public class ProjectsViewModel extends FilterActiveViewModel implements )); } + @Override + @AfterCompose + public void onAfterCompose(@ContextParam(ContextType.VIEW) Component view) { + entitySelectorRouter.configureSelector(Partner.class, this, "partnerFilter.partner"); + } + + protected ActiveFilter createFilter() { + return ProjectFilter.builder() + .filterShowActive(true) + .filterShowInActive(false) + .actual(true) + .build(); + } + public void saveEntity(SaveEntityEvent event) { } @@ -70,11 +99,13 @@ public class ProjectsViewModel extends FilterActiveViewModel implements protected void refresh() { projectsDataModel.clearSelection(); setSelectedEntity(null); - if (isFilterShowBoth()) { - projectsDataModel.search(true, true); - } else { - projectsDataModel.search(isFilterShowActive(), isFilterShowInActive()); - } + projectsDataModel.search(getProjectFilter()); +// if (isFilterShowBoth()) { +// projectsDataModel.search(true, true); +// } else { +// projectsDataModel.search(isFilterShowActive(), isFilterShowInActive()); +// } + BindUtils.postNotifyChange(this, "selectedEntity"); } @@ -100,6 +131,15 @@ public class ProjectsViewModel extends FilterActiveViewModel implements refresh(); projectsDataModel.addToSelection(formDocument); } + if (event instanceof PropertyChangeEvent) { + PropertyChangeEvent propertyEvent = (PropertyChangeEvent) event; +// (this.equals(propertyEvent.getBase()) && propertyEvent.getProperty().startsWith("invoiceFilter"))) + if (getProjectFilter().equals(propertyEvent.getBase())) { + log.info("Refresh needed, {} changed", propertyEvent.getProperty()); + refresh(); + } + } + } @Destroy diff --git a/sly-crm-ui/src/main/java/hu/user/lis/ui/view/common/FilterActiveViewModel.java b/sly-crm-ui/src/main/java/hu/user/lis/ui/view/common/FilterActiveViewModel.java index 5412710..274ee91 100644 --- a/sly-crm-ui/src/main/java/hu/user/lis/ui/view/common/FilterActiveViewModel.java +++ b/sly-crm-ui/src/main/java/hu/user/lis/ui/view/common/FilterActiveViewModel.java @@ -1,5 +1,7 @@ package hu.user.lis.ui.view.common; +import hu.user.lis.db.repository.filter.ActiveFilter; +import lombok.Getter; import lombok.extern.log4j.Log4j2; import org.zkoss.bind.annotation.Init; import org.zkoss.bind.annotation.NotifyChange; @@ -9,53 +11,56 @@ import java.io.Serializable; @Log4j2 public abstract class FilterActiveViewModel extends EntityViewModel { - boolean filterShowInActive; - boolean filterShowActive; - - boolean filterShowBoth; + @Getter + ActiveFilter activeFilter; protected abstract void refresh(); @Init public void init() { super.init(); + activeFilter = createFilter(); setFilterShowActive(true); } + protected ActiveFilter createFilter() { + return ActiveFilter.builder().build(); + } + public boolean isFilterShowActive() { - return filterShowActive; + return activeFilter.isFilterShowActive(); } @NotifyChange({"filterShowActive", "filterShowInActive", "filterShowBoth"}) public void setFilterShowActive(boolean filterShowActive) { - this.filterShowBoth = false; - this.filterShowInActive = false; - this.filterShowActive = filterShowActive; + activeFilter.setFilterShowBoth(false); + activeFilter.setFilterShowInActive(false); + activeFilter.setFilterShowActive(true); refresh(); } public boolean isFilterShowInActive() { - return filterShowInActive; + return activeFilter.isFilterShowInActive(); } @NotifyChange({"filterShowActive", "filterShowInActive", "filterShowBoth"}) public void setFilterShowInActive(boolean filterShowInActive) { - this.filterShowBoth = false; - this.filterShowActive = false; - this.filterShowInActive = filterShowInActive; + activeFilter.setFilterShowBoth(false); + activeFilter.setFilterShowActive(false); + activeFilter.setFilterShowInActive(true); refresh(); } public boolean isFilterShowBoth() { - return this.filterShowBoth; + return activeFilter.isFilterShowBoth(); } @NotifyChange({"filterShowActive", "filterShowInActive", "filterShowBoth"}) public void setFilterShowBoth(boolean filterShowBoth) { - this.filterShowActive = false; - this.filterShowInActive = false; - this.filterShowBoth = filterShowBoth; + activeFilter.setFilterShowBoth(true); + activeFilter.setFilterShowActive(false); + activeFilter.setFilterShowInActive(false); refresh(); } diff --git a/sly-crm-ui/src/main/resources/metainfo/zk/zk.xml b/sly-crm-ui/src/main/resources/metainfo/zk/zk.xml index c9600d9..c645c80 100644 --- a/sly-crm-ui/src/main/resources/metainfo/zk/zk.xml +++ b/sly-crm-ui/src/main/resources/metainfo/zk/zk.xml @@ -54,12 +54,12 @@ 10240 - - org.zkoss.theme.preferred - silvertail - - - + + + + + + org.zkoss.zul.grid.rod false diff --git a/sly-crm-ui/src/main/resources/web/index.zul b/sly-crm-ui/src/main/resources/web/index.zul index 9ce151b..9370c85 100644 --- a/sly-crm-ui/src/main/resources/web/index.zul +++ b/sly-crm-ui/src/main/resources/web/index.zul @@ -53,6 +53,16 @@ Messagebox.show("Coming soon!", "Information", Messagebox.OK, Messagebox.INFORMATION); ]]> + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + - + - - - - + + + + + - + + + + + + + + + - - + + + + + + +
diff --git a/sly-crm-ui/src/main/resources/web/projects.zul b/sly-crm-ui/src/main/resources/web/projects.zul index b1b3310..36d108b 100644 --- a/sly-crm-ui/src/main/resources/web/projects.zul +++ b/sly-crm-ui/src/main/resources/web/projects.zul @@ -1,3 +1,4 @@ + @@ -20,14 +21,30 @@ - - - - - + + + + + + + + + + + + + + + + + + +
diff --git a/sly-crm-ui/src/main/resources/web/settings.zul b/sly-crm-ui/src/main/resources/web/settings.zul index 51fe949..cd21eda 100644 --- a/sly-crm-ui/src/main/resources/web/settings.zul +++ b/sly-crm-ui/src/main/resources/web/settings.zul @@ -34,6 +34,7 @@ +