From b44f61bcf465b9c11caa9c92f99690d01dce7ce7 Mon Sep 17 00:00:00 2001 From: elgekko Date: Mon, 17 Apr 2023 10:22:49 +0200 Subject: [PATCH] Main page, partner list, partner editor modifications --- lis-app/pom.xml | 1 + .../src/main/java/hu/user/lis/db/Partner.java | 10 +- lis-services/pom.xml | 8 + .../lis/services/data/PartnerService.java | 9 + .../lis/services/data/PartnerServiceImpl.java | 34 ++- lis-ui/pom.xml | 5 - .../hu/user/lis/ui/data/CachedDataModel.java | 6 +- .../hu/user/lis/ui/data/FormDocument.java | 6 +- .../user/lis/ui/data/PartnersDataModel.java | 29 ++- .../main/java/hu/user/lis/ui/form/Field.java | 240 ------------------ .../hu/user/lis/ui/form/FormValidator.java | 14 - .../hu/user/lis/ui/view/AsyncBaseModel.java | 43 ++++ .../hu/user/lis/ui/view/IndexViewModel.java | 5 - .../user/lis/ui/view/PartnerEditorModel.java | 20 +- .../user/lis/ui/view/PartnersViewModel.java | 151 ++++++++--- .../user/lis/ui/view/SuppliersViewModel.java | 4 - .../main/java/hu/user/lis/ui/view/UITask.java | 5 + lis-ui/src/main/resources/metainfo/zk/zk.xml | 4 +- .../src/main/resources/web/fields/address.zul | 22 -- .../main/resources/web/fields/agreement.zul | 7 - .../src/main/resources/web/fields/check.zul | 8 - .../main/resources/web/fields/checkgroup.zul | 14 - .../src/main/resources/web/fields/company.zul | 19 -- .../resources/web/fields/current-date.zul | 16 -- lis-ui/src/main/resources/web/fields/date.zul | 9 - .../main/resources/web/fields/deadline.zul | 11 - .../src/main/resources/web/fields/domain.zul | 14 - .../src/main/resources/web/fields/double.zul | 9 - .../main/resources/web/fields/field-label.zul | 4 +- .../main/resources/web/fields/freeperson.zul | 21 -- .../resources/web/fields/inline-radio.zul | 8 +- .../main/resources/web/fields/location.zul | 16 -- .../resources/web/fields/nobornperson.zul | 21 -- .../src/main/resources/web/fields/number.zul | 16 -- .../main/resources/web/fields/person-name.zul | 14 - .../src/main/resources/web/fields/person.zul | 21 -- .../main/resources/web/fields/publicplace.zul | 9 - .../src/main/resources/web/fields/radio.zul | 7 - .../main/resources/web/fields/radiodate.zul | 15 -- .../main/resources/web/fields/radiodouble.zul | 15 -- .../main/resources/web/fields/radiogroup.zul | 14 - .../main/resources/web/fields/radionumber.zul | 15 -- lis-ui/src/main/resources/web/fields/rate.zul | 13 - .../main/resources/web/fields/settlement.zul | 9 - .../main/resources/web/fields/signature.zul | 10 - .../src/main/resources/web/fields/stamp.zul | 8 - .../main/resources/web/fields/textarea.zul | 4 - .../web/fields/title-deed-content.zul | 11 - .../main/resources/web/fields/title-deed.zul | 5 - .../src/main/resources/web/fields/zipcode.zul | 11 - lis-ui/src/main/resources/web/index.zul | 8 +- lis-ui/src/main/resources/web/partner.zul | 39 ++- lis-ui/src/main/resources/web/partners.zul | 20 +- pom.xml | 9 +- 54 files changed, 296 insertions(+), 770 deletions(-) delete mode 100644 lis-ui/src/main/java/hu/user/lis/ui/form/Field.java delete mode 100644 lis-ui/src/main/java/hu/user/lis/ui/form/FormValidator.java create mode 100644 lis-ui/src/main/java/hu/user/lis/ui/view/AsyncBaseModel.java create mode 100644 lis-ui/src/main/java/hu/user/lis/ui/view/UITask.java delete mode 100644 lis-ui/src/main/resources/web/fields/address.zul delete mode 100644 lis-ui/src/main/resources/web/fields/agreement.zul delete mode 100644 lis-ui/src/main/resources/web/fields/check.zul delete mode 100644 lis-ui/src/main/resources/web/fields/checkgroup.zul delete mode 100644 lis-ui/src/main/resources/web/fields/company.zul delete mode 100644 lis-ui/src/main/resources/web/fields/current-date.zul delete mode 100644 lis-ui/src/main/resources/web/fields/date.zul delete mode 100644 lis-ui/src/main/resources/web/fields/deadline.zul delete mode 100644 lis-ui/src/main/resources/web/fields/domain.zul delete mode 100644 lis-ui/src/main/resources/web/fields/double.zul delete mode 100644 lis-ui/src/main/resources/web/fields/freeperson.zul delete mode 100644 lis-ui/src/main/resources/web/fields/location.zul delete mode 100644 lis-ui/src/main/resources/web/fields/nobornperson.zul delete mode 100644 lis-ui/src/main/resources/web/fields/number.zul delete mode 100644 lis-ui/src/main/resources/web/fields/person-name.zul delete mode 100644 lis-ui/src/main/resources/web/fields/person.zul delete mode 100644 lis-ui/src/main/resources/web/fields/publicplace.zul delete mode 100644 lis-ui/src/main/resources/web/fields/radio.zul delete mode 100644 lis-ui/src/main/resources/web/fields/radiodate.zul delete mode 100644 lis-ui/src/main/resources/web/fields/radiodouble.zul delete mode 100644 lis-ui/src/main/resources/web/fields/radiogroup.zul delete mode 100644 lis-ui/src/main/resources/web/fields/radionumber.zul delete mode 100644 lis-ui/src/main/resources/web/fields/rate.zul delete mode 100644 lis-ui/src/main/resources/web/fields/settlement.zul delete mode 100644 lis-ui/src/main/resources/web/fields/signature.zul delete mode 100644 lis-ui/src/main/resources/web/fields/stamp.zul delete mode 100644 lis-ui/src/main/resources/web/fields/textarea.zul delete mode 100644 lis-ui/src/main/resources/web/fields/title-deed-content.zul delete mode 100644 lis-ui/src/main/resources/web/fields/title-deed.zul delete mode 100644 lis-ui/src/main/resources/web/fields/zipcode.zul diff --git a/lis-app/pom.xml b/lis-app/pom.xml index d691406..24ffec7 100644 --- a/lis-app/pom.xml +++ b/lis-app/pom.xml @@ -4,6 +4,7 @@ 4.0.0 hu.user lis-app + 0.0.2-SNAPSHOT hu.user lis diff --git a/lis-db/src/main/java/hu/user/lis/db/Partner.java b/lis-db/src/main/java/hu/user/lis/db/Partner.java index 6031731..ac903d6 100644 --- a/lis-db/src/main/java/hu/user/lis/db/Partner.java +++ b/lis-db/src/main/java/hu/user/lis/db/Partner.java @@ -1,22 +1,16 @@ package hu.user.lis.db; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.Setter; +import lombok.*; @Getter @Setter @Builder @AllArgsConstructor +@NoArgsConstructor public class Partner { String id; String name; String vatNr; String address; boolean active; - - public static class PartnerBuilder { - private boolean active = true; - } } diff --git a/lis-services/pom.xml b/lis-services/pom.xml index 24159d9..da1d43b 100644 --- a/lis-services/pom.xml +++ b/lis-services/pom.xml @@ -33,5 +33,13 @@ org.springframework spring-context + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.core + jackson-databind + diff --git a/lis-services/src/main/java/hu/user/lis/services/data/PartnerService.java b/lis-services/src/main/java/hu/user/lis/services/data/PartnerService.java index 5363fa3..48c801a 100644 --- a/lis-services/src/main/java/hu/user/lis/services/data/PartnerService.java +++ b/lis-services/src/main/java/hu/user/lis/services/data/PartnerService.java @@ -1,9 +1,18 @@ package hu.user.lis.services.data; +import com.fasterxml.jackson.core.JsonProcessingException; import hu.user.lis.db.Partner; import java.util.List; public interface PartnerService { List getAll(); + + Partner createNew(); + + void add(Partner partner); + + Partner copy(Partner selectedPartner) throws JsonProcessingException; + + void replace(Partner selectedPartner, Partner editPartner); } diff --git a/lis-services/src/main/java/hu/user/lis/services/data/PartnerServiceImpl.java b/lis-services/src/main/java/hu/user/lis/services/data/PartnerServiceImpl.java index 60ddcf3..dc59f2b 100644 --- a/lis-services/src/main/java/hu/user/lis/services/data/PartnerServiceImpl.java +++ b/lis-services/src/main/java/hu/user/lis/services/data/PartnerServiceImpl.java @@ -1,8 +1,11 @@ package hu.user.lis.services.data; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.github.javafaker.Faker; import hu.user.lis.db.Partner; import org.apache.commons.lang3.RandomStringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -12,6 +15,9 @@ import java.util.List; public class PartnerServiceImpl implements PartnerService { private List partners; + @Autowired + ObjectMapper mapper; + @Override public List getAll() { if (partners == null) { @@ -20,6 +26,32 @@ public class PartnerServiceImpl implements PartnerService { return partners; } + @Override + public Partner createNew() { + String id = RandomStringUtils.random(8, "0123456789abcdef"); + return Partner.builder().id(id).active(true).build(); + } + + @Override + public void add(Partner partner) { + partners.add(partner); + } + + @Override + public Partner copy(Partner selectedPartner) throws JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + String json = mapper.writeValueAsString(selectedPartner); + return mapper.readValue(json, Partner.class); + } + + @Override + public void replace(Partner selectedPartner, Partner editPartner) { + Partner partnerInList = partners.stream().filter(p -> p.getId().equals(selectedPartner.getId())).findFirst().get(); + partners.remove(partnerInList); + //partners.remove(selectedPartner); + partners.add(editPartner); + } + private List generate() { List result = new ArrayList<>(); Faker faker = new Faker(); @@ -29,7 +61,7 @@ public class PartnerServiceImpl implements PartnerService { String vatNr = RandomStringUtils.random(12, "0123456789"); String address = String.format("%s %s, %s street %s", faker.address().zipCode(), faker.address().city(), faker.address().streetName(), faker.address().buildingNumber()); - Partner partner = Partner.builder().id(id).name(name).vatNr(vatNr).address(address).build(); + Partner partner = Partner.builder().active(true).id(id).name(name).vatNr(vatNr).address(address).build(); result.add(partner); } return result; diff --git a/lis-ui/pom.xml b/lis-ui/pom.xml index b461fcb..f5c7e8d 100644 --- a/lis-ui/pom.xml +++ b/lis-ui/pom.xml @@ -105,10 +105,5 @@ lis-services 0.0.1-SNAPSHOT - - org.springframework.boot - spring-boot-devtools - true - \ No newline at end of file diff --git a/lis-ui/src/main/java/hu/user/lis/ui/data/CachedDataModel.java b/lis-ui/src/main/java/hu/user/lis/ui/data/CachedDataModel.java index 8929998..2c15a11 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/data/CachedDataModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/data/CachedDataModel.java @@ -2,13 +2,9 @@ package hu.user.lis.ui.data; import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Component; -import org.zkoss.zk.ui.event.Event; -import org.zkoss.zk.ui.event.EventListener; -import org.zkoss.zk.ui.event.Events; import org.zkoss.zul.FieldComparator; import org.zkoss.zul.ListModelList; -import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; import java.util.List; @@ -130,5 +126,5 @@ public abstract class CachedDataModel extends ListModelList { log.info("Sort {} {}", sortComparator.getOrderBy(), ascending); reset(); } +} -} \ No newline at end of file diff --git a/lis-ui/src/main/java/hu/user/lis/ui/data/FormDocument.java b/lis-ui/src/main/java/hu/user/lis/ui/data/FormDocument.java index 6653d35..ce8613c 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/data/FormDocument.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/data/FormDocument.java @@ -9,10 +9,10 @@ import org.zkoss.lang.Strings; @Builder @Log4j2 -public class FormDocument extends JSONObject { - private T data; +public class FormDocument extends JSONObject { + private Object data; - public FormDocument setData(T data) { + public FormDocument setData(Object data) { try { ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(data); diff --git a/lis-ui/src/main/java/hu/user/lis/ui/data/PartnersDataModel.java b/lis-ui/src/main/java/hu/user/lis/ui/data/PartnersDataModel.java index 6de36e1..6dc7031 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/data/PartnersDataModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/data/PartnersDataModel.java @@ -2,6 +2,7 @@ package hu.user.lis.ui.data; import hu.user.lis.db.Partner; import hu.user.lis.services.data.PartnerService; +import lombok.Getter; import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -23,12 +24,16 @@ public class PartnersDataModel extends CachedDataModel { private String partialAddress; private String partialVatNr; private boolean listAll; + + @Getter @Autowired PartnerService partnerService; + private boolean filterShowInActive; + private boolean filterShowActive; private boolean canExecuteSearch() { - boolean result = listAll || + boolean result = listAll || filterShowActive || filterShowInActive || StringUtils.isNotBlank(partialName) || StringUtils.isNotBlank(partialVatNr) || StringUtils.isNotBlank(partialAddress); @@ -57,6 +62,15 @@ public class PartnersDataModel extends CachedDataModel { result = false; } } + + if (!filterShowActive && partner.isActive()) { + result = false; + } + + if (!filterShowInActive && !partner.isActive()) { + result = false; + } + return result; } @@ -65,8 +79,8 @@ public class PartnersDataModel extends CachedDataModel { List result = null; if (canExecuteSearch()) { result = partnerService.getAll().stream() - .sorted(Comparator.comparing(Partner::getName)) .filter(s -> filter(s)) + .sorted(Comparator.comparing(Partner::getName, String.CASE_INSENSITIVE_ORDER)) .collect(Collectors.toList()); } return result; @@ -94,6 +108,17 @@ public class PartnersDataModel extends CachedDataModel { BindUtils.postNotifyChange(null, null, this, "*"); } + + public void search(boolean filterShowActive, boolean filterShowInActive) { + log.info("Searching partner using filters: filterShowActive {}, filterShowInActive {}", + filterShowActive, filterShowInActive); + this.filterShowActive = filterShowActive; + this.filterShowInActive = filterShowInActive; + listAll = false; + super.reset(); + BindUtils.postNotifyChange(null, null, this, "*"); + } + public void listAll() { log.info("List all partners"); listAll = true; diff --git a/lis-ui/src/main/java/hu/user/lis/ui/form/Field.java b/lis-ui/src/main/java/hu/user/lis/ui/form/Field.java deleted file mode 100644 index c5c2a1d..0000000 --- a/lis-ui/src/main/java/hu/user/lis/ui/form/Field.java +++ /dev/null @@ -1,240 +0,0 @@ -package hu.user.lis.ui.form; - -import org.zkoss.zk.ui.Component; -import org.zkoss.zul.Include; - -public class Field extends Include { - public static final String FIELD_POSTFIX_ERROR = "_error"; - public static final String FIELD_POSTFIX_DATA = "_data"; - public static final String FIELD_POSTFIX_UNIT = "_unit"; - - public static class Address extends Field { - public Address() { - super(); - setSrc("~./fields/address.zul"); - } - } - - public static class Agreement extends Field { - public Agreement() { - super(); - setSrc("~./fields/agreement.zul"); - } - } - - public static class Check extends Field { - public Check() { - super(); - setSrc("~./fields/check.zul"); - } - } - - public static class CheckGroup extends Field { - public CheckGroup() { - super(); - setSrc("~./fields/checkgroup.zul"); - } - } - - public static class Company extends Field { - public Company() { - super(); - setSrc("~./fields/company.zul"); - } - } - - public static class CurrentDate extends Field { - public CurrentDate() { - super(); - setSrc("~./fields/current-date.zul"); - } - } - - public static class Date extends Field { - public Date() { - super(); - setSrc("~./fields/date.zul"); - } - } - - public static class Deadline extends Field { - public Deadline() { - super(); - setSrc("~./fields/deadline.zul"); - } - } - - public static class Domain extends Field { - public Domain() { - super(); - setSrc("~./fields/domain.zul"); - } - } - - public static class Double extends Field { - public Double() { - super(); - setSrc("~./fields/double.zul"); - } - } - - public static class FreePerson extends Field { - public FreePerson() { - super(); - setSrc("~./fields/freeperson.zul"); - } - } - - public static class InlineRadio extends Field { - public InlineRadio() { - super(); - setSrc("~./fields/inline-radio.zul"); - } - } - - public static class Location extends Field { - public Location() { - super(); - setSrc("~./fields/location.zul"); - } - } - - public static class NoBornPerson extends Field { - public NoBornPerson() { - super(); - setSrc("~./fields/nobornperson.zul"); - } - } - - public static class Number extends Field { - public Number() { - super(); - setSrc("~./fields/number.zul"); - } - } - - public static class Person extends Field { - public Person() { - super(); - setSrc("~./fields/person.zul"); - } - } - - public static class PersonName extends Field { - public PersonName() { - super(); - setSrc("~./fields/person-name.zul"); - } - } - - public static class Radio extends Field { - public Radio() { - super(); - setSrc("~./fields/radio.zul"); - } - } - - public static class RadioDate extends Field { - public RadioDate() { - super(); - setSrc("~./fields/radiodate.zul"); - } - } - - public static class RadioDouble extends Field { - public RadioDouble() { - super(); - setSrc("~./fields/radiodouble.zul"); - } - } - - public static class RadioGroup extends Field { - public RadioGroup() { - super(); - setSrc("~./fields/radiogroup.zul"); - } - } - - public static class RadioNumber extends Field { - public RadioNumber() { - super(); - setSrc("~./fields/radionumber.zul"); - } - } - - public static class Rate extends Field { - public Rate() { - super(); - setSrc("~./fields/rate.zul"); - } - } - - public static class Settlement extends Field { - public Settlement() { - super(); - setSrc("~./fields/settlement.zul"); - } - } - - public static class Signature extends Field { - public Signature() { - super(); - setSrc("~./fields/signature.zul"); - } - } - - public static class Stamp extends Field { - public Stamp() { - super(); - setSrc("~./fields/stamp.zul"); - } - } - - public static class Text extends Field { - public Text() { - super(); - setSrc("~./fields/text.zul"); - } - } - - public static class TextArea extends Field { - public TextArea() { - super(); - setSrc("~./fields/textarea.zul"); - } - } - - public static class TitleDeed extends Field { - public TitleDeed() { - super(); - setSrc("~./fields/title-deed.zul"); - } - } - - public static class ZipCode extends Field { - public ZipCode() { - super(); - setSrc("~./fields/zipcode.zul"); - } - } - - private void set(String name, Object value) { - setAttribute(name, value, Component.SPACE_SCOPE); - } - - @Override - public void setDynamicProperty(String name, Object value) { - super.setDynamicProperty(name, value); - // a dinamikus parametereket letoljuk az egesz szkopon + letrehozunk technikai - // parametereket - // ezek az include altal behuzott Composit-okban cimezhetoek pl. ${field} - set(name, value); - if ("field".equals(name)) { - String field = (String) value; - set("errorField", field + FIELD_POSTFIX_ERROR); - set("dataField", field + FIELD_POSTFIX_DATA); - set("unitField", field + FIELD_POSTFIX_UNIT); - } - } - -} diff --git a/lis-ui/src/main/java/hu/user/lis/ui/form/FormValidator.java b/lis-ui/src/main/java/hu/user/lis/ui/form/FormValidator.java deleted file mode 100644 index de13c84..0000000 --- a/lis-ui/src/main/java/hu/user/lis/ui/form/FormValidator.java +++ /dev/null @@ -1,14 +0,0 @@ -package hu.user.lis.ui.form; - -import lombok.extern.log4j.Log4j2; -import org.springframework.stereotype.Service; -import org.zkoss.bind.ValidationContext; -import org.zkoss.bind.validator.AbstractValidator; - -@Service -@Log4j2 -public class FormValidator extends AbstractValidator { - @Override - public void validate(ValidationContext ctx) { - } -} diff --git a/lis-ui/src/main/java/hu/user/lis/ui/view/AsyncBaseModel.java b/lis-ui/src/main/java/hu/user/lis/ui/view/AsyncBaseModel.java new file mode 100644 index 0000000..051ea26 --- /dev/null +++ b/lis-ui/src/main/java/hu/user/lis/ui/view/AsyncBaseModel.java @@ -0,0 +1,43 @@ +package hu.user.lis.ui.view; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.zkoss.bind.BindUtils; +import org.zkoss.bind.annotation.Command; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class AsyncBaseModel { + private static final Logger logger = LogManager.getLogger(); + private List uiTasks = new ArrayList<>(); + + protected void doKeepAlive() { + + } + + protected void notifyChange(String... names) { + List nameList = Arrays.asList(names); + nameList.forEach(name -> BindUtils.postNotifyChange(null, null, this, name)); + } + + protected void registerTask(UITask task) { + synchronized (uiTasks) { + uiTasks.add(task); + } + } + + @Command + public void uiTick() { + // logger.info("{} tick {}", this.getClass().getSimpleName(), System.currentTimeMillis()); + doKeepAlive(); + synchronized (uiTasks) { + for (UITask task : uiTasks) { + task.execute(); + } + uiTasks.clear(); + } + } + +} diff --git a/lis-ui/src/main/java/hu/user/lis/ui/view/IndexViewModel.java b/lis-ui/src/main/java/hu/user/lis/ui/view/IndexViewModel.java index e252c7d..16f8ea2 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/view/IndexViewModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/view/IndexViewModel.java @@ -4,7 +4,6 @@ import lombok.Getter; import lombok.Setter; import lombok.extern.log4j.Log4j2; import org.springframework.boot.info.BuildProperties; -import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.Init; import org.zkoss.zk.ui.select.annotation.VariableResolver; import org.zkoss.zk.ui.select.annotation.WireVariable; @@ -25,8 +24,4 @@ public class IndexViewModel { log.info("Init"); } - @Command - public void search() { - - } } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/view/PartnerEditorModel.java b/lis-ui/src/main/java/hu/user/lis/ui/view/PartnerEditorModel.java index 20cb7db..a884519 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/view/PartnerEditorModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/view/PartnerEditorModel.java @@ -1,15 +1,13 @@ package hu.user.lis.ui.view; import hu.user.lis.db.Partner; -import hu.user.lis.ui.data.FormDocument; -import hu.user.lis.ui.form.FormValidator; import lombok.Getter; import lombok.Setter; import lombok.extern.log4j.Log4j2; -import org.springframework.beans.factory.annotation.Autowired; import org.zkoss.bind.annotation.BindingParam; import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.Init; +import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.select.annotation.VariableResolver; @@ -21,26 +19,13 @@ import org.zkoss.zul.Window; @Setter @VariableResolver(DelegatingVariableResolver.class) public class PartnerEditorModel { - private FormDocument formDocument; private boolean canEdit; private Partner selectedPartner; - @Autowired - FormValidator formValidator; @Init public void init() { log.info("Initialized"); - //TODO atnevezni, mert forditva mukodik - setCanEdit(true); - } - - public String getFieldStyle(String field, String baseStyle) { -// Object error = getFormDocument().get(field + FIELD_POSTFIX_ERROR); -// if (error != null && (boolean) error) -// return baseStyle + " " + ERROR; -// else -// return baseStyle; - return baseStyle; + selectedPartner = (Partner) Executions.getCurrent().getArg().get("formDocument"); } @Command @@ -48,4 +33,5 @@ public class PartnerEditorModel { Event closeEvent = new Event("onClose", target, select ? selectedPartner : null); Events.postEvent(closeEvent); } + } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/view/PartnersViewModel.java b/lis-ui/src/main/java/hu/user/lis/ui/view/PartnersViewModel.java index a88aad7..966a306 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/view/PartnersViewModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/view/PartnersViewModel.java @@ -1,82 +1,161 @@ package hu.user.lis.ui.view; +import com.fasterxml.jackson.core.JsonProcessingException; import hu.user.lis.db.Partner; -import hu.user.lis.ui.data.FormDocument; import hu.user.lis.ui.data.PartnersDataModel; -import hu.user.lis.ui.form.FormValidator; import lombok.Getter; -import lombok.Setter; import lombok.extern.log4j.Log4j2; -import org.springframework.beans.factory.annotation.Autowired; -import org.zkoss.bind.annotation.Command; -import org.zkoss.bind.annotation.Init; -import org.zkoss.bind.annotation.NotifyChange; +import org.zkoss.bind.annotation.*; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Executions; +import org.zkoss.zk.ui.select.Selectors; import org.zkoss.zk.ui.select.annotation.VariableResolver; +import org.zkoss.zk.ui.select.annotation.Wire; import org.zkoss.zk.ui.select.annotation.WireVariable; import org.zkoss.zkplus.spring.DelegatingVariableResolver; +import org.zkoss.zul.Listbox; +import org.zkoss.zul.Window; +import java.util.Collections; import java.util.Set; @Log4j2 -@Getter -@Setter @VariableResolver(DelegatingVariableResolver.class) -public class PartnersViewModel { - private FormDocument formDocument; - private boolean canEdit; - private String partialName; - private String partialVatNr; - private String partialAddress; +public class PartnersViewModel extends AsyncBaseModel { + @Getter private Partner selectedPartner; @WireVariable + @Getter PartnersDataModel partnersDataModel; - @Autowired - FormValidator formValidator; + private boolean filterShowInActive; + private boolean filterShowActive; + private boolean filterShowBoth; + + @Wire + Listbox partnersList; + + @AfterCompose + public void onAfterCompose(@ContextParam(ContextType.VIEW) Component view) { + Selectors.wireComponents(view, this, false); + Selectors.wireEventListeners(view, this); + } @Init public void init() { log.info("Initialized"); - //TODO atnevezni, mert forditva mukodik - setCanEdit(true); - partnersDataModel.listAll(); + setFilterShowActive(true); } - public String getFieldStyle(String field, String baseStyle) { -// Object error = getFormDocument().get(field + FIELD_POSTFIX_ERROR); -// if (error != null && (boolean) error) -// return baseStyle + " " + ERROR; -// else -// return baseStyle; - return baseStyle; + private void refresh() { + if (filterShowBoth) { + partnersDataModel.search(true, true); + } else { + partnersDataModel.search(filterShowActive, filterShowInActive); + } } @Command - @NotifyChange("formDocument") + @NotifyChange("selectedPartner") public void search() { partnersDataModel.clearSelection(); - formDocument = null; - partnersDataModel.search(partialName, partialVatNr, partialAddress); + selectedPartner = null; + //partnersDataModel.search(partialName, partialVatNr, partialAddress); } @Command - @NotifyChange("formDocument") + @NotifyChange("selectedPartner") public void onListSelection() { - formDocument = null; selectedPartner = null; Set selections = partnersDataModel.getSelection(); if (selections.iterator().hasNext()) { selectedPartner = selections.iterator().next(); - formDocument = FormDocument.builder().build() - .setData(selectedPartner); - log.info("Selected {}", formDocument); + log.info("Selected {}", selectedPartner); } } + @Command + public void onAfterRenderPartners() { + } + @Command public void onAddNew() { + String page = "~./partner.zul"; + Partner editPartner = partnersDataModel.getPartnerService().createNew(); + Window partnerWindow = (Window) Executions.createComponents(page, null, + Collections.singletonMap("formDocument", editPartner)); + partnerWindow.addEventListener("onClose", e -> { + if (e.getData() != null) { + log.info("Partner popup result {}", e.getData()); + partnersDataModel.getPartnerService().add(editPartner); + partnersDataModel.clearSelection(); + refresh(); + partnersDataModel.addToSelection(editPartner); +// Optional listItem = partnersList.getItems().stream() +// .filter(li -> ((Partner) li.getValue()).getId().equals(editPartner.getId())) +// .findFirst(); +// if (listItem.isPresent()) { +// Clients.scrollIntoView(listItem.get()); +// } +// registerTask(() -> { +// }); + } + }); + partnerWindow.doModal(); } @Command - public void onEdit() { + public void onEdit() throws JsonProcessingException { + String page = "~./partner.zul"; + Partner editPartner = partnersDataModel.getPartnerService().copy(selectedPartner); + Window partnerWindow = (Window) Executions.createComponents(page, null, + Collections.singletonMap("formDocument", editPartner)); + partnerWindow.addEventListener("onClose", e -> { + if (e.getData() != null) { + log.info("Partner popup result {}", e.getData()); + selectedPartner = (Partner) e.getData(); + partnersDataModel.getPartnerService().replace(selectedPartner, editPartner); + partnersDataModel.clearSelection(); + refresh(); + partnersDataModel.addToSelection(editPartner); + } + }); + partnerWindow.doModal(); + } + + + public boolean isFilterShowInActive() { + return filterShowInActive; + } + + @NotifyChange({"filterShowActive", "filterShowInActive", "filterShowBoth"}) + public void setFilterShowInActive(boolean filterShowInActive) { + this.filterShowBoth = false; + this.filterShowActive = false; + this.filterShowInActive = filterShowInActive; + refresh(); + } + + public boolean isFilterShowActive() { + return filterShowActive; + } + + @NotifyChange({"filterShowActive", "filterShowInActive", "filterShowBoth"}) + public void setFilterShowActive(boolean filterShowActive) { + this.filterShowBoth = false; + this.filterShowInActive = false; + this.filterShowActive = filterShowActive; + refresh(); + } + + public boolean isFilterShowBoth() { + return this.filterShowBoth; + } + + @NotifyChange({"filterShowActive", "filterShowInActive", "filterShowBoth"}) + public void setFilterShowBoth(boolean filterShowBoth) { + this.filterShowActive = false; + this.filterShowInActive = false; + this.filterShowBoth = filterShowBoth; + refresh(); } } diff --git a/lis-ui/src/main/java/hu/user/lis/ui/view/SuppliersViewModel.java b/lis-ui/src/main/java/hu/user/lis/ui/view/SuppliersViewModel.java index fcd3d99..bfed189 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/view/SuppliersViewModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/view/SuppliersViewModel.java @@ -3,11 +3,9 @@ package hu.user.lis.ui.view; import hu.user.lis.db.Supplier; import hu.user.lis.ui.data.FormDocument; import hu.user.lis.ui.data.SuppliersDataModel; -import hu.user.lis.ui.form.FormValidator; import lombok.Getter; import lombok.Setter; import lombok.extern.log4j.Log4j2; -import org.springframework.beans.factory.annotation.Autowired; import org.zkoss.bind.annotation.BindingParam; import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.Init; @@ -34,8 +32,6 @@ public class SuppliersViewModel { private Supplier selectedSupplier; @WireVariable SuppliersDataModel suppliersDataModel; - @Autowired - FormValidator formValidator; @Init public void init() { diff --git a/lis-ui/src/main/java/hu/user/lis/ui/view/UITask.java b/lis-ui/src/main/java/hu/user/lis/ui/view/UITask.java new file mode 100644 index 0000000..6f2f784 --- /dev/null +++ b/lis-ui/src/main/java/hu/user/lis/ui/view/UITask.java @@ -0,0 +1,5 @@ +package hu.user.lis.ui.view; + +public interface UITask { + void execute(); +} \ No newline at end of file diff --git a/lis-ui/src/main/resources/metainfo/zk/zk.xml b/lis-ui/src/main/resources/metainfo/zk/zk.xml index 0396154..e332e56 100644 --- a/lis-ui/src/main/resources/metainfo/zk/zk.xml +++ b/lis-ui/src/main/resources/metainfo/zk/zk.xml @@ -10,7 +10,7 @@ org.zkoss.zul.grid.rod - true + false org.zkoss.zul.grid.autohidePaging @@ -18,7 +18,7 @@ org.zkoss.zul.listbox.rod - true + false org.zkoss.zul.listbox.autohidePaging diff --git a/lis-ui/src/main/resources/web/fields/address.zul b/lis-ui/src/main/resources/web/fields/address.zul deleted file mode 100644 index 8ab15c0..0000000 --- a/lis-ui/src/main/resources/web/fields/address.zul +++ /dev/null @@ -1,22 +0,0 @@ - - - - - -
-
- - - - - -
-
- - - - -
-
\ No newline at end of file diff --git a/lis-ui/src/main/resources/web/fields/agreement.zul b/lis-ui/src/main/resources/web/fields/agreement.zul deleted file mode 100644 index 0b9626a..0000000 --- a/lis-ui/src/main/resources/web/fields/agreement.zul +++ /dev/null @@ -1,7 +0,0 @@ -
-
- -
-
\ No newline at end of file diff --git a/lis-ui/src/main/resources/web/fields/check.zul b/lis-ui/src/main/resources/web/fields/check.zul deleted file mode 100644 index f77eb53..0000000 --- a/lis-ui/src/main/resources/web/fields/check.zul +++ /dev/null @@ -1,8 +0,0 @@ -
-
- -
- -
diff --git a/lis-ui/src/main/resources/web/fields/checkgroup.zul b/lis-ui/src/main/resources/web/fields/checkgroup.zul deleted file mode 100644 index 5c46be2..0000000 --- a/lis-ui/src/main/resources/web/fields/checkgroup.zul +++ /dev/null @@ -1,14 +0,0 @@ -
-
- -
-
- - - - - -
-
diff --git a/lis-ui/src/main/resources/web/fields/company.zul b/lis-ui/src/main/resources/web/fields/company.zul deleted file mode 100644 index fb3d7d6..0000000 --- a/lis-ui/src/main/resources/web/fields/company.zul +++ /dev/null @@ -1,19 +0,0 @@ - - - - -
-
- - -
-
-
- - -
-
- - -
-
\ No newline at end of file diff --git a/lis-ui/src/main/resources/web/fields/current-date.zul b/lis-ui/src/main/resources/web/fields/current-date.zul deleted file mode 100644 index d0bca4d..0000000 --- a/lis-ui/src/main/resources/web/fields/current-date.zul +++ /dev/null @@ -1,16 +0,0 @@ -
-
diff --git a/lis-ui/src/main/resources/web/fields/date.zul b/lis-ui/src/main/resources/web/fields/date.zul deleted file mode 100644 index 04b2998..0000000 --- a/lis-ui/src/main/resources/web/fields/date.zul +++ /dev/null @@ -1,9 +0,0 @@ -
-
- -
-
- -
-
diff --git a/lis-ui/src/main/resources/web/fields/deadline.zul b/lis-ui/src/main/resources/web/fields/deadline.zul deleted file mode 100644 index 22216dc..0000000 --- a/lis-ui/src/main/resources/web/fields/deadline.zul +++ /dev/null @@ -1,11 +0,0 @@ - - - - -
- - - -
\ No newline at end of file diff --git a/lis-ui/src/main/resources/web/fields/domain.zul b/lis-ui/src/main/resources/web/fields/domain.zul deleted file mode 100644 index 3025172..0000000 --- a/lis-ui/src/main/resources/web/fields/domain.zul +++ /dev/null @@ -1,14 +0,0 @@ -
-
- -
-
- - - - -
-
\ No newline at end of file diff --git a/lis-ui/src/main/resources/web/fields/double.zul b/lis-ui/src/main/resources/web/fields/double.zul deleted file mode 100644 index 8bd04d5..0000000 --- a/lis-ui/src/main/resources/web/fields/double.zul +++ /dev/null @@ -1,9 +0,0 @@ -
-
- -
-
- -
-
\ No newline at end of file diff --git a/lis-ui/src/main/resources/web/fields/field-label.zul b/lis-ui/src/main/resources/web/fields/field-label.zul index d05d418..299f1ad 100644 --- a/lis-ui/src/main/resources/web/fields/field-label.zul +++ b/lis-ui/src/main/resources/web/fields/field-label.zul @@ -1,3 +1,3 @@ -
-