Billy-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- 87 discussions
23 Aug '10
Author: bbrossaud
Date: 2010-08-23 17:14:47 +0200 (Mon, 23 Aug 2010)
New Revision: 57
Url: http://chorem.org/repositories/revision/billy/57
Log:
addition type in company listbox
Modified:
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanySearchMacro.java
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanySearchMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanySearchMacro.java 2010-08-23 15:06:40 UTC (rev 56)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanySearchMacro.java 2010-08-23 15:14:47 UTC (rev 57)
@@ -98,9 +98,11 @@
final Company company = (Company) data;
final String name = company.getName();
final Checkbox checkbox = new Checkbox(name);
- Listcell cell = new Listcell();
- cell.appendChild(checkbox);
- item.appendChild(cell);
+ Listcell cell1 = new Listcell();
+ cell1.appendChild(checkbox);
+ item.appendChild(cell1);
+ Listcell cell2 = new Listcell(company.getType());
+ item.appendChild(cell2);
checkbox.addEventListener(Events.ON_CHECK, new EventListener() {
@Override
1
0
r56 - in trunk/billy-ui-zk/src/main: java/org/chorem/billy/ui webapp
by bbrossaud@users.chorem.org 23 Aug '10
by bbrossaud@users.chorem.org 23 Aug '10
23 Aug '10
Author: bbrossaud
Date: 2010-08-23 17:06:40 +0200 (Mon, 23 Aug 2010)
New Revision: 56
Url: http://chorem.org/repositories/revision/billy/56
Log:
can delete subcategory
Added:
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryFormController.java
Modified:
trunk/billy-ui-zk/src/main/webapp/subCategoryFormPage.zul
Added: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryFormController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryFormController.java (rev 0)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryFormController.java 2010-08-23 15:06:40 UTC (rev 56)
@@ -0,0 +1,55 @@
+package org.chorem.billy.ui;
+
+import org.chorem.data.bonzoms.SubCategory;
+import org.chorem.data.bonzoms.SubCategoryImpl;
+import org.nuiton.wikitty.WikittyProxy;
+import org.zkoss.zk.ui.Component;
+import org.zkoss.zk.ui.Executions;
+import org.zkoss.zk.ui.event.Events;
+import org.zkoss.zk.ui.util.GenericForwardComposer;
+import org.zkoss.zkplus.databind.AnnotateDataBinder;
+import org.zkoss.zkplus.databind.DataBinder;
+import org.zkoss.zul.Window;
+
+public class SubCategoryFormController extends GenericForwardComposer {
+
+ protected WikittyProxy proxy = ChoremDataProxy.getInstance();
+
+ protected SubCategory subCategory = new SubCategoryImpl();
+
+ public static final String EVENT_ON_SAVE_SUBCATEGORY = "onSaveSubCategory";
+
+ @Override
+ public void doAfterCompose(Component comp) throws Exception {
+ super.doAfterCompose(comp);
+ Window win = (Window) self;
+ win.doModal();
+ win.setPosition("center");
+ String id = Executions.getCurrent().getParameter("subCategoryId");
+ if (id == null) {
+ id = (String) arg.get("subCategoryId");
+ }
+ if (id != null) {
+ subCategory = proxy.restore(SubCategory.class, id);
+ }
+ DataBinder binder = new AnnotateDataBinder(comp);
+ binder.bindBean("composer", this);
+ binder.loadAll();
+ }
+
+ /*
+ * Event
+ */
+ public void onClick$saveSubCategory() {
+ subCategory = proxy.store(subCategory);
+ Events.postEvent(EVENT_ON_SAVE_SUBCATEGORY, this.self, subCategory.getWikittyId());
+ self.detach();
+ }
+
+ /*
+ * Getter
+ */
+ public SubCategory getSubCategory() {
+ return subCategory;
+ }
+}
Modified: trunk/billy-ui-zk/src/main/webapp/subCategoryFormPage.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/subCategoryFormPage.zul 2010-08-23 14:59:35 UTC (rev 55)
+++ trunk/billy-ui-zk/src/main/webapp/subCategoryFormPage.zul 2010-08-23 15:06:40 UTC (rev 56)
@@ -1,6 +1,6 @@
<?page title="new page title" contentType="text/html;charset=UTF-8"?>
-<window closable="true" maximizable="true" sizable="true" height="200px" width="200px" contentStyle="overflow:auto" apply="org.chorem.billy.ui.SubCategoryFormController">
+<window closable="true" maximizable="true" sizable="true" height="220px" width="200px" contentStyle="overflow:auto" apply="org.chorem.billy.ui.SubCategoryFormController">
<caption label="Sub category" />
<groupbox>
<caption label="@{composer.subCategory.name, save-when='saveSubCategory.onClick'}" />
1
0
r55 - in trunk/billy-ui-zk/src/main: java/org/chorem/billy/ui webapp webapp/macros
by bbrossaud@users.chorem.org 23 Aug '10
by bbrossaud@users.chorem.org 23 Aug '10
23 Aug '10
Author: bbrossaud
Date: 2010-08-23 16:59:35 +0200 (Mon, 23 Aug 2010)
New Revision: 55
Url: http://chorem.org/repositories/revision/billy/55
Log:
category and subcategory are in the same page
Added:
trunk/billy-ui-zk/src/main/webapp/subCategoryFormPage.zul
Modified:
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CashController.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryListboxMacro.java
trunk/billy-ui-zk/src/main/webapp/categoryFormPage.zul
trunk/billy-ui-zk/src/main/webapp/macros/subCategoryListboxMacro.zul
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CashController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CashController.java 2010-08-23 10:30:25 UTC (rev 54)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CashController.java 2010-08-23 14:59:35 UTC (rev 55)
@@ -240,7 +240,7 @@
protected void createGrid() throws ParseException {
createHead();
- createRows();
+ createRows();
}
/*
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java 2010-08-23 10:30:25 UTC (rev 54)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java 2010-08-23 14:59:35 UTC (rev 55)
@@ -1,44 +1,21 @@
package org.chorem.billy.ui;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
import org.chorem.data.bonzoms.Category;
import org.chorem.data.bonzoms.CategoryImpl;
-import org.chorem.data.bonzoms.SubCategory;
-import org.chorem.data.bonzoms.SubCategoryImpl;
import org.nuiton.wikitty.WikittyProxy;
import org.zkoss.zk.ui.Component;
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.event.Events;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zkplus.databind.AnnotateDataBinder;
import org.zkoss.zkplus.databind.DataBinder;
-import org.zkoss.zul.Bandbox;
-import org.zkoss.zul.Caption;
-import org.zkoss.zul.Intbox;
-import org.zkoss.zul.Listbox;
-import org.zkoss.zul.Listcell;
-import org.zkoss.zul.Listitem;
-import org.zkoss.zul.ListitemRenderer;
-import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;
public class CategoryFormController extends GenericForwardComposer {
protected WikittyProxy proxy = ChoremDataProxy.getInstance();
-
protected Category category = new CategoryImpl();
- protected SubCategory selectedSubCategory = null;
- protected SubCategoryModel subCategoryModel = new SubCategoryModel();
- protected List<String> removedSubCategories = new ArrayList<String>();
- protected Bandbox categoryBandbox;
- protected Listbox subCategoryListbox;
-
public static final String EVENT_ON_SAVE_CATEGORY = "onSaveCategory";
@Override
@@ -54,155 +31,24 @@
if (categoryId != null) {
category = proxy.restore(Category.class, categoryId);
}
- initSubCategoryModel();
DataBinder binder = new AnnotateDataBinder(comp);
binder.bindBean("composer", this);
binder.loadAll();
}
- protected void initSubCategoryModel() {
- Set<String> ids = category.getSubCategory();
- if (ids != null && !ids.isEmpty()) {
- List<SubCategory> subCategories = proxy.restore(SubCategory.class, new ArrayList<String>(ids));
- if (subCategories != null) {
- subCategories = new ArrayList<SubCategory>(subCategories);
- subCategoryModel.setSubCategories(subCategories);
- selectedSubCategory = subCategories.get(0);
- }
- }
- if (subCategoryModel.getSubCategories().size() == 0) {
- onClick$addSubCategory();
- }
- }
-
- protected void saveSubCategories() {
- List<SubCategory> subcategories = proxy.store(subCategoryModel.getSubCategories());
- for (SubCategory subCategory : subcategories) {
- category.addSubCategory(subCategory.getWikittyId());
- }
- if (!removedSubCategories.isEmpty()) {
- proxy.delete(removedSubCategories);
- for (String id : removedSubCategories) {
- category.removeSubCategory(id);
- }
- }
- }
-
- protected void fillSubCategoryFields() {
- if (selectedSubCategory != null) {
- Caption caption = (Caption) self.getFellow("subCategoryCaption");
- caption.setLabel(selectedSubCategory.getName());
-
- Intbox intbox = (Intbox) self.getFellow("subCategoryOrder");
- intbox.setValue(selectedSubCategory.getOrder());
-
- Textbox textbox = (Textbox) self.getFellow("subCategoryName");
- textbox.setValue(selectedSubCategory.getName());
-
- textbox = (Textbox) self.getFellow("subCategoryAccountNumber");
- textbox.setValue(selectedSubCategory.getAccountNumber());
-
- textbox = (Textbox) self.getFellow("subCategoryTVA");
- textbox.setValue(selectedSubCategory.getTVA());
- }
- }
-
- protected void clearSubCategoryFields() {
- Caption caption = (Caption) self.getFellow("subCategoryCaption");
- caption.setLabel("");
-
- Intbox intbox = (Intbox) self.getFellow("subCategoryOrder");
- intbox.setValue(-1);
-
- Textbox textbox = (Textbox) self.getFellow("subCategoryName");
- textbox.setValue("");
-
- textbox = (Textbox) self.getFellow("subCategoryAccountNumber");
- textbox.setValue("");
-
- textbox = (Textbox) self.getFellow("subCategoryTVA");
- textbox.setValue("");
- }
-
/*
- * Renderers
- */
- public ListitemRenderer getSubCategoryRenderer() {
- return new ListitemRenderer() {
-
- @Override
- public void render(Listitem item, Object data) throws Exception {
- item.setValue(data);
- final SubCategory sub = (SubCategory) data;
- Listcell name = new Listcell(sub.getName());
- item.appendChild(name);
- item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() {
-
- @Override
- public void onEvent(Event event) throws Exception {
- selectedSubCategory = sub;
- fillSubCategoryFields();
- }
- });
- }
- };
- }
-
- /*
* Events
*/
- public void onClick$addSubCategory() {
- selectedSubCategory = new SubCategoryImpl();
- selectedSubCategory.setName("New sub category");
- subCategoryModel.addData(selectedSubCategory);
- fillSubCategoryFields();
- }
-
- public void onClick$saveSubCategory() {
- if (selectedSubCategory != null) {
- int rowIndex = subCategoryModel.indexOf(selectedSubCategory);
- if (rowIndex != -1) {
- subCategoryModel.reloadContent(rowIndex, selectedSubCategory);
- }
- }
- }
-
public void onClick$save() {
- saveSubCategories();
- proxy.store(category);
+ category = proxy.store(category);
Events.postEvent(EVENT_ON_SAVE_CATEGORY, this.self, category.getWikittyId());
this.self.detach();
}
- public void onClick$deleteSubCategory() {
- if (subCategoryListbox.getItemCount() > 1) {
- Listitem item = subCategoryListbox.getSelectedItem();
- if (item != null) {
- SubCategory subCategory = (SubCategory) item.getValue();
- if (subCategory != null) {
- subCategoryModel.removeData(subCategory);
- String version = subCategory.getWikittyVersion();
- if (version != null && !version.equals("0.1")) {
- removedSubCategories.add(subCategory.getWikittyId());
- }
- clearSubCategoryFields();
- }
- }
- }
- }
-
/*
* Getters
*/
- public SubCategoryModel getSubCategoryModel() {
- return subCategoryModel;
- }
-
public Category getCategory() {
return category;
}
-
- public SubCategory getSelectedSubCategory() {
- return selectedSubCategory;
- }
}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryListboxMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryListboxMacro.java 2010-08-23 10:30:25 UTC (rev 54)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryListboxMacro.java 2010-08-23 14:59:35 UTC (rev 55)
@@ -1,21 +1,27 @@
package org.chorem.billy.ui;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.chorem.data.bonzoms.Category;
import org.chorem.data.bonzoms.CategoryImpl;
+import org.chorem.data.bonzoms.ExpenseReportItem;
import org.chorem.data.bonzoms.SubCategory;
import org.nuiton.wikitty.WikittyProxy;
+import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.HtmlMacroComponent;
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.Button;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.ListitemRenderer;
+import org.zkoss.zul.Window;
public class SubCategoryListboxMacro extends HtmlMacroComponent {
@@ -26,20 +32,42 @@
@Override
public void afterCompose() {
super.afterCompose();
-// initButton();
+ initButton();
initListbox();
}
-// protected void initButton() {
-// Toolbarbutton button = (Toolbarbutton) getFellow("newSubCategory");
-// button.addEventListener(Events.ON_CLICK, new EventListener() {
-//
-// @Override
-// public void onEvent(Event event) throws Exception {
-// createSubCategoryFormWindow(null);
-// }
-// });
-// }
+ protected void initButton() {
+ Button button = (Button) getFellow("deleteSubCategory");
+ button.addEventListener(Events.ON_CLICK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ if (subModel.getSize() > 1) {
+ Listbox listbox = (Listbox) getFellow("subCategoryListbox");
+ Listitem item = listbox.getSelectedItem();
+ if (item != null) {
+ SubCategory sub = (SubCategory) item.getValue();
+ if (sub != null) {
+ subModel.removeData(sub);
+ String id = sub.getWikittyId();
+ proxy.delete(id);
+ category.removeSubCategory(id);
+ category = proxy.store(category);
+ listbox.setSelectedIndex(0);
+ }
+ }
+ }
+ }
+ });
+ Button newItem = (Button) getFellow("newSubCategory");
+ newItem.addEventListener(Events.ON_CLICK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ createSubCategoryFormWindow(null);
+ }
+ });
+ }
protected void initListbox() {
initSubCategoryModel();
@@ -66,25 +94,27 @@
}
protected void createSubCategoryFormWindow(String id) {
-// Map<String, Object> map = new HashMap<String, Object>();
-// if (id != null) {
-// map.put("subCategoryId", id);
-// }
-// Window win = (Window) Executions.createComponents("subCategoryFormPage.zul", null, map);
-// win.addEventListener(SubCategoryFormController.EVENT_ON_SAVE_SUBCATEGORY, new EventListener() {
-//
-// @Override
-// public void onEvent(Event event) throws Exception {
-// String id = (String) event.getData();
-// SubCategory sub = proxy.restore(SubCategory.class, id);
-// int rowIndex = subModel.indexOf(sub);
-// if (rowIndex != -1) {
-// subModel.reloadContent(rowIndex);
-// } else {
-// subModel.addData(sub);
-// }
-// }
-// });
+ Map<String, Object> map = new HashMap<String, Object>();
+ if (id != null) {
+ map.put("subCategoryId", id);
+ }
+ Window win = (Window) Executions.createComponents("subCategoryFormPage.zul", null, map);
+ win.addEventListener(SubCategoryFormController.EVENT_ON_SAVE_SUBCATEGORY, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ String id = (String) event.getData();
+ category.addSubCategory(id);
+ SubCategory sub = proxy.restore(SubCategory.class, id);
+ int rowIndex = subModel.indexOf(sub);
+ if (rowIndex != -1) {
+ subModel.reloadContent(rowIndex, sub);
+ } else {
+ subModel.addData(sub);
+ category = proxy.store(category);
+ }
+ }
+ });
}
Modified: trunk/billy-ui-zk/src/main/webapp/categoryFormPage.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/categoryFormPage.zul 2010-08-23 10:30:25 UTC (rev 54)
+++ trunk/billy-ui-zk/src/main/webapp/categoryFormPage.zul 2010-08-23 14:59:35 UTC (rev 55)
@@ -1,66 +1,25 @@
<?page id="contract" title="Contract" cacheable="false" language="xul/html" zscriptLanguage="Java"?>
<?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?>
-<window closable="true" maximizable="true" sizable="true" height="420px" width="460px" contentStyle="overflow:auto" apply="org.chorem.billy.ui.CategoryFormController">
-<caption label="Category" />
- <vbox>
- <separator />
- <groupbox>
- <caption id="categoryCaption" label="@{composer.category.name}" />
- <hbox>
- <space />
- <vbox>
- <label value="Name"/>
- <textbox id="categoryName" value="@{composer.category.name, save-when='save.onClick'}" />
- </vbox>
- <space />
- <vbox>
- <label value="Type" />
- <textbox id="categoryType" value="@{composer.category.type, save-when='save.onClick'}" />
- </vbox>
- </hbox>
- </groupbox>
- <separator />
- <groupbox>
- <caption label="Sub categories" />
- <hbox>
- <vbox>
- <separator />
- <listbox id="subCategoryListbox" autopaging="true" mold="paging" rows="10" width="200px" model="@{composer.subCategoryModel}"
- itemRenderer="@{composer.subCategoryRenderer}">
- <listhead>
- <listheader label="Name" />
- </listhead>
- </listbox>
- <hbox>
- <button id="addSubCategory" label="Add" />
- <button id="deleteSubCategory" label="Delete" />
- </hbox>
- </vbox>
+<window closable="true" maximizable="true" sizable="true" height="230px" width="200px" contentStyle="overflow:auto" apply="org.chorem.billy.ui.CategoryFormController">
+ <caption label="Category" />
+ <separator />
+ <groupbox>
+ <caption id="categoryCaption" label="@{composer.category.name}" />
+ <vbox>
+ <space />
+ <vbox>
+ <label value="Name"/>
+ <textbox id="categoryName" value="@{composer.category.name, save-when='save.onClick'}" />
+ </vbox>
+ <space />
+ <vbox>
+ <label value="Type" />
+ <textbox id="categoryType" value="@{composer.category.type, save-when='save.onClick'}" />
+ </vbox>
+ </vbox>
+ </groupbox>
- <space />
-
- <groupbox>
- <caption id="subCategoryCaption" label="@{composer.selectedSubCategory.name, save-when='saveSubCategory.onClick'}" />
- <vbox>
- <label value="Order"/>
- <intbox id="subCategoryOrder" value="@{composer.selectedSubCategory.order, save-when='saveSubCategory.onClick'}" />
-
- <label value="Name"/>
- <textbox id="subCategoryName" value="@{composer.selectedSubCategory.name, save-when='saveSubCategory.onClick'}" />
-
- <label value="Account number" />
- <textbox id="subCategoryAccountNumber" value="@{composer.selectedSubCategory.accountNumber, save-when='saveSubCategory.onClick'}" />
-
- <label value="TVA" />
- <textbox id="subCategoryTVA" value="@{composer.selectedSubCategory.TVA, save-when='saveSubCategory.onClick'}" />
- <toolbarbutton id="saveSubCategory" label="Save" />
- </vbox>
- </groupbox>
- </hbox>
- </groupbox>
- </vbox>
-
<button id="save" label="Save and quit" />
</window>
\ No newline at end of file
Modified: trunk/billy-ui-zk/src/main/webapp/macros/subCategoryListboxMacro.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/macros/subCategoryListboxMacro.zul 2010-08-23 10:30:25 UTC (rev 54)
+++ trunk/billy-ui-zk/src/main/webapp/macros/subCategoryListboxMacro.zul 2010-08-23 14:59:35 UTC (rev 55)
@@ -1,8 +1,14 @@
<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<zk>
- <listbox id="subCategoryListbox" autopaging="true" mold="paging" rows="20">
- <listhead>
- <listheader label="Name" />
- </listhead>
- </listbox>
+ <vbox>
+ <listbox id="subCategoryListbox" autopaging="true" mold="paging" rows="20">
+ <listhead>
+ <listheader label="Name" />
+ </listhead>
+ </listbox>
+ <hbox>
+ <button id="newSubCategory" label="Add new sub category" />
+ <button id="deleteSubCategory" label="Delete sub category" />
+ </hbox>
+ </vbox>
</zk>
\ No newline at end of file
Added: trunk/billy-ui-zk/src/main/webapp/subCategoryFormPage.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/subCategoryFormPage.zul (rev 0)
+++ trunk/billy-ui-zk/src/main/webapp/subCategoryFormPage.zul 2010-08-23 14:59:35 UTC (rev 55)
@@ -0,0 +1,19 @@
+<?page title="new page title" contentType="text/html;charset=UTF-8"?>
+
+<window closable="true" maximizable="true" sizable="true" height="200px" width="200px" contentStyle="overflow:auto" apply="org.chorem.billy.ui.SubCategoryFormController">
+ <caption label="Sub category" />
+ <groupbox>
+ <caption label="@{composer.subCategory.name, save-when='saveSubCategory.onClick'}" />
+ <vbox>
+ <label value="Name"/>
+ <textbox id="subCategoryName" value="@{composer.subCategory.name, save-when='saveSubCategory.onClick'}" />
+
+ <label value="Account number" />
+ <textbox id="subCategoryAccountNumber" value="@{composer.subCategory.accountNumber, save-when='saveSubCategory.onClick'}" />
+
+ <label value="TVA" />
+ <textbox id="subCategoryTVA" value="@{composer.subCategory.TVA, save-when='saveSubCategory.onClick'}" />
+ </vbox>
+ </groupbox>
+ <button id="saveSubCategory" label="Save" />
+</window>
1
0
r54 - in trunk/billy-ui-zk/src/main: java/org/chorem/billy/ui webapp
by bbrossaud@users.chorem.org 23 Aug '10
by bbrossaud@users.chorem.org 23 Aug '10
23 Aug '10
Author: bbrossaud
Date: 2010-08-23 12:30:25 +0200 (Mon, 23 Aug 2010)
New Revision: 54
Url: http://chorem.org/repositories/revision/billy/54
Log:
changed category display
Modified:
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryModel.java
trunk/billy-ui-zk/src/main/webapp/billy.zul
trunk/billy-ui-zk/src/main/webapp/categoryFormPage.zul
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java 2010-08-19 16:59:02 UTC (rev 53)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java 2010-08-23 10:30:25 UTC (rev 54)
@@ -162,7 +162,7 @@
if (selectedSubCategory != null) {
int rowIndex = subCategoryModel.indexOf(selectedSubCategory);
if (rowIndex != -1) {
- subCategoryModel.reloadContent(rowIndex);
+ subCategoryModel.reloadContent(rowIndex, selectedSubCategory);
}
}
}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryModel.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryModel.java 2010-08-19 16:59:02 UTC (rev 53)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryModel.java 2010-08-23 10:30:25 UTC (rev 54)
@@ -53,7 +53,8 @@
fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval);
}
- public void reloadContent(int rowIndex) {
+ public void reloadContent(int rowIndex, SubCategory sub) {
+ subCategories.set(rowIndex, sub);
fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex);
}
Modified: trunk/billy-ui-zk/src/main/webapp/billy.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/billy.zul 2010-08-19 16:59:02 UTC (rev 53)
+++ trunk/billy-ui-zk/src/main/webapp/billy.zul 2010-08-23 10:30:25 UTC (rev 54)
@@ -7,9 +7,9 @@
<groupbox height="800px" >
<caption label="Menu" />
<vbox>
+ <toolbarbutton id="cash" label="Cash" />
+ <toolbarbutton id="categories" label="Categories" />
<toolbarbutton id="invoices" label="Invoices" />
- <toolbarbutton id="categories" label="Categories" />
- <toolbarbutton id="cash" label="Cash" />
</vbox>
</groupbox>
<vbox id="content" >
Modified: trunk/billy-ui-zk/src/main/webapp/categoryFormPage.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/categoryFormPage.zul 2010-08-19 16:59:02 UTC (rev 53)
+++ trunk/billy-ui-zk/src/main/webapp/categoryFormPage.zul 2010-08-23 10:30:25 UTC (rev 54)
@@ -8,10 +8,6 @@
<groupbox>
<caption id="categoryCaption" label="@{composer.category.name}" />
<hbox>
- <vbox>
- <label value="Order"/>
- <intbox id="categoryOrder" value="@{composer.category.order, save-when='save.onClick'}" />
- </vbox>
<space />
<vbox>
<label value="Name"/>
1
0
r53 - in trunk/billy-ui-zk/src/main: java/org/chorem/billy/ui webapp webapp/WEB-INF webapp/macros
by bbrossaud@users.chorem.org 19 Aug '10
by bbrossaud@users.chorem.org 19 Aug '10
19 Aug '10
Author: bbrossaud
Date: 2010-08-19 18:59:02 +0200 (Thu, 19 Aug 2010)
New Revision: 53
Url: http://chorem.org/repositories/revision/billy/53
Log:
addtion cash
Added:
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryListboxMacro.java
trunk/billy-ui-zk/src/main/webapp/macros/subCategoryListboxMacro.zul
Modified:
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CashController.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryController.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/DateSearchMacro.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryModel.java
trunk/billy-ui-zk/src/main/webapp/WEB-INF/lang-addon.xml
trunk/billy-ui-zk/src/main/webapp/categoryPage.zul
trunk/billy-ui-zk/src/main/webapp/invoiceFormPage.zul
trunk/billy-ui-zk/src/main/webapp/invoicePage.zul
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CashController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CashController.java 2010-08-18 15:18:43 UTC (rev 52)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CashController.java 2010-08-19 16:59:02 UTC (rev 53)
@@ -9,6 +9,8 @@
import java.util.List;
import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.chorem.data.bonzoms.Category;
import org.chorem.data.bonzoms.Company;
import org.chorem.data.bonzoms.Invoice;
@@ -32,22 +34,44 @@
public class CashController extends GenericForwardComposer {
+ private static final Log log = LogFactory.getLog(CashController.class);
+
protected WikittyProxy proxy = ChoremDataProxy.getInstance();
protected Date startDate = new Date();
protected Date endDate = new Date();
+ protected SimpleDateFormat sdfMM = new SimpleDateFormat("MM");
+ protected SimpleDateFormat sdfyyyy = new SimpleDateFormat("yyyy");
+ protected SimpleDateFormat sdfMMyyyy = new SimpleDateFormat("MMyyy");
+
protected Grid cashGrid;
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
+
+ initDates();
}
+ protected void initDates() {
+ Date date = new Date();
+ String year = sdfyyyy.format(date);
+ try {
+ Date start = sdfMMyyyy.parse("01" + year);
+ Date end = sdfMMyyyy.parse("12" + year);
+ Datebox startDate = (Datebox) self.getFellow("startDatebox");
+ startDate.setValue(start);
+ Datebox endDate = (Datebox) self.getFellow("endDatebox");
+ endDate.setValue(end);
+ } catch (ParseException e) {
+ log.warn("Cannot init dates");
+ }
+ }
+
protected int getStartMonth(int currentYear, int startYear) {
int startMonth = 1;
if (startYear == currentYear) {
- SimpleDateFormat sdf = new SimpleDateFormat("MM");
- startMonth = Integer.valueOf(sdf.format(startDate));
+ startMonth = Integer.valueOf(sdfMM.format(startDate));
}
return startMonth;
}
@@ -55,8 +79,7 @@
protected int getEndMonth(int currentYear, int endYear) {
int endMonth = 12;
if (endYear == currentYear) {
- SimpleDateFormat sdf = new SimpleDateFormat("MM");
- endMonth = Integer.valueOf(sdf.format(endDate));
+ endMonth = Integer.valueOf(sdfMM.format(endDate));
}
return endMonth;
}
@@ -74,9 +97,8 @@
}
protected void createHead() {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
- String start = sdf.format(startDate);
- String end = sdf.format(endDate);
+ String start = sdfyyyy.format(startDate);
+ String end = sdfyyyy.format(endDate);
int startYear = Integer.valueOf(start);
int endYear = Integer.valueOf(end);
Columns head = new Columns();
@@ -97,8 +119,7 @@
}
NumberFormat nf = new DecimalFormat("00");
String monthStr = nf.format(m);
- SimpleDateFormat sdf = new SimpleDateFormat("MMyyy");
- return sdf.parse(monthStr + y);
+ return sdfMMyyyy.parse(monthStr + y);
}
protected double createLabelPrice(Date start, Date end, String id, Label label) throws ParseException {
@@ -126,9 +147,8 @@
}
protected void createLabels(Row row, SubCategory sub, List<Double> total) throws ParseException {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
- String start = sdf.format(startDate);
- String end = sdf.format(endDate);
+ String start = sdfyyyy.format(startDate);
+ String end = sdfyyyy.format(endDate);
int startYear = Integer.valueOf(start);
int endYear = Integer.valueOf(end);
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryController.java 2010-08-18 15:18:43 UTC (rev 52)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryController.java 2010-08-19 16:59:02 UTC (rev 53)
@@ -30,6 +30,7 @@
protected CategoryModel categoryModel = new CategoryModel(pageSize);
protected Paging categoryPaging;
+ protected SubCategoryListboxMacro subCategoryListboxMacro;
@Override
public void doAfterCompose(Component comp) throws Exception {
@@ -87,6 +88,13 @@
item.appendChild(cell1);
Listcell cell2 = new Listcell(category.getType());
item.appendChild(cell2);
+ item.addEventListener(Events.ON_CLICK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ subCategoryListboxMacro.setCategory(category);
+ }
+ });
item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() {
@Override
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/DateSearchMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/DateSearchMacro.java 2010-08-18 15:18:43 UTC (rev 52)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/DateSearchMacro.java 2010-08-19 16:59:02 UTC (rev 53)
@@ -1,8 +1,11 @@
package org.chorem.billy.ui;
import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.Date;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.chorem.data.bonzoms.Invoice;
import org.nuiton.wikitty.WikittyUtil;
import org.nuiton.wikitty.search.Search;
@@ -16,6 +19,7 @@
public class DateSearchMacro extends HtmlMacroComponent {
protected int isCheck = 0;
+ private static final Log log = LogFactory.getLog(DateSearchMacro.class);
@Override
public void afterCompose() {
@@ -23,6 +27,7 @@
initPostedCheck();
initExpectedCheck();
initPaymentCheck();
+ initDates();
}
protected void initPostedCheck() {
@@ -73,6 +78,23 @@
});
}
+ protected void initDates() {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+ Date date = new Date();
+ String year = sdf.format(date);
+ sdf.applyPattern("MMyyyy");
+ try {
+ Date start = sdf.parse("01" + year);
+ Date end = sdf.parse("12" + year);
+ Datebox startDate = (Datebox) getFellow("startDate");
+ startDate.setValue(start);
+ Datebox endDate = (Datebox) getFellow("endDate");
+ endDate.setValue(end);
+ } catch (ParseException e) {
+ log.warn("Cannot init dates");
+ }
+ }
+
protected void checkPosted(Date start, Date end, Search search) throws ParseException {
Checkbox check = (Checkbox) getFellow("postedDate");
if (check.isChecked()) {
@@ -118,7 +140,7 @@
}
}
- public void getSearch(Search search) throws ParseException {
+ public void getSearch(Search search) {
if (search == null) {
search = Search.query();
}
@@ -130,9 +152,13 @@
Date end = endDate.getValue();
if (start != null || end != null) {
Search searchDate = search.or();
- checkPosted(start, end, searchDate);
- checkExpected(start, end, searchDate);
- checkPayment(start, end, searchDate);
+ try {
+ checkPosted(start, end, searchDate);
+ checkExpected(start, end, searchDate);
+ checkPayment(start, end, searchDate);
+ } catch (ParseException e) {
+ log.warn("Cannot format date (WikittyUtil)");
+ }
}
}
}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java 2010-08-18 15:18:43 UTC (rev 52)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java 2010-08-19 16:59:02 UTC (rev 53)
@@ -4,6 +4,7 @@
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.chorem.billy.ui.ChoremDataProxy;
@@ -22,6 +23,7 @@
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.event.ForwardEvent;
import org.zkoss.zk.ui.util.GenericForwardComposer;
+import org.zkoss.zul.Label;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.ListitemRenderer;
@@ -43,6 +45,9 @@
protected Paging invoicePaging;
+ protected Label totalHTLabel;
+ protected Label totalTTCLabel;
+
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
@@ -50,9 +55,29 @@
initPaging();
}
+ protected void initTotals(Criteria criteria) {
+ Double totalHT = new Double(0);
+ Double totalTTC = new Double(0);
+ boolean stop = false;
+ for (int index = 0; stop == false; index += 2000) {
+ Criteria newCriteria = criteria.setFirstIndex(index).setEndIndex(index + 2000);
+ List<Invoice> invoices = proxy.findAllByCriteria(Invoice.class, newCriteria).getAll();
+ for (Invoice invoice : invoices) {
+ totalHT += invoice.getHTPrice();
+ totalTTC += invoice.getTTCPrice();
+ }
+ if (invoices.size() < 2000) {
+ stop = true;
+ }
+ }
+ totalHTLabel.setValue(totalHT.toString());
+ totalTTCLabel.setValue(totalTTC.toString());
+ }
+
protected void initInvoiceModel() {
Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Invoice.EXT_INVOICE).criteria();
invoiceModel.setCriteria(criteria);
+ initTotals(criteria);
}
protected void initPaging() {
@@ -226,6 +251,7 @@
categorySearchMacro.getSearch(search);
Criteria criteria = search.criteria();
invoiceModel.setCriteria(criteria);
+ initTotals(criteria);
initPaging();
}
Added: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryListboxMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryListboxMacro.java (rev 0)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryListboxMacro.java 2010-08-19 16:59:02 UTC (rev 53)
@@ -0,0 +1,120 @@
+package org.chorem.billy.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.chorem.data.bonzoms.Category;
+import org.chorem.data.bonzoms.CategoryImpl;
+import org.chorem.data.bonzoms.SubCategory;
+import org.nuiton.wikitty.WikittyProxy;
+import org.zkoss.zk.ui.HtmlMacroComponent;
+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.Listbox;
+import org.zkoss.zul.Listcell;
+import org.zkoss.zul.Listitem;
+import org.zkoss.zul.ListitemRenderer;
+
+public class SubCategoryListboxMacro extends HtmlMacroComponent {
+
+ protected WikittyProxy proxy = ChoremDataProxy.getInstance();
+ protected Category category = new CategoryImpl();
+ protected SubCategoryModel subModel = new SubCategoryModel();
+
+ @Override
+ public void afterCompose() {
+ super.afterCompose();
+// initButton();
+ initListbox();
+ }
+
+// protected void initButton() {
+// Toolbarbutton button = (Toolbarbutton) getFellow("newSubCategory");
+// button.addEventListener(Events.ON_CLICK, new EventListener() {
+//
+// @Override
+// public void onEvent(Event event) throws Exception {
+// createSubCategoryFormWindow(null);
+// }
+// });
+// }
+
+ protected void initListbox() {
+ initSubCategoryModel();
+ Listbox listbox = (Listbox) getFellow("subCategoryListbox");
+ listbox.setModel(subModel);
+ ListitemRenderer renderer = getSubCategoryRenderer();
+ listbox.setItemRenderer(renderer);
+ Set<String> ids = category.getSubCategory();
+ if (ids != null) {
+ List<SubCategory> subs = proxy.restore(SubCategory.class, new ArrayList<String>(ids));
+ subModel.setSubCategories(subs);
+ }
+ }
+
+ protected void initSubCategoryModel() {
+ Set<String> ids = category.getSubCategory();
+ if (ids != null && !ids.isEmpty()) {
+ List<SubCategory> subCategories = proxy.restore(SubCategory.class, new ArrayList<String>(ids));
+ if (subCategories != null) {
+ subCategories = new ArrayList<SubCategory>(subCategories);
+ subModel.setSubCategories(subCategories);
+ }
+ }
+ }
+
+ protected void createSubCategoryFormWindow(String id) {
+// Map<String, Object> map = new HashMap<String, Object>();
+// if (id != null) {
+// map.put("subCategoryId", id);
+// }
+// Window win = (Window) Executions.createComponents("subCategoryFormPage.zul", null, map);
+// win.addEventListener(SubCategoryFormController.EVENT_ON_SAVE_SUBCATEGORY, new EventListener() {
+//
+// @Override
+// public void onEvent(Event event) throws Exception {
+// String id = (String) event.getData();
+// SubCategory sub = proxy.restore(SubCategory.class, id);
+// int rowIndex = subModel.indexOf(sub);
+// if (rowIndex != -1) {
+// subModel.reloadContent(rowIndex);
+// } else {
+// subModel.addData(sub);
+// }
+// }
+// });
+ }
+
+
+ /*
+ * Renderers
+ */
+ protected ListitemRenderer getSubCategoryRenderer() {
+ return new ListitemRenderer() {
+
+ @Override
+ public void render(Listitem item, Object data) throws Exception {
+ item.setValue(data);
+ final SubCategory sub = (SubCategory) data;
+ Listcell name = new Listcell(sub.getName());
+ item.appendChild(name);
+ item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ createSubCategoryFormWindow(sub.getWikittyId());
+ }
+ });
+ }
+ };
+ }
+
+ public void setCategory(Category category) {
+ if (category != null) {
+ this.category = category;
+ initListbox();
+ }
+ }
+}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryModel.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryModel.java 2010-08-18 15:18:43 UTC (rev 52)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/SubCategoryModel.java 2010-08-19 16:59:02 UTC (rev 53)
@@ -3,6 +3,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.chorem.data.bonzoms.Invoice;
import org.chorem.data.bonzoms.SubCategory;
import org.zkoss.zkplus.databind.BindingListModel;
import org.zkoss.zul.AbstractListModel;
@@ -24,7 +25,16 @@
@Override
public int indexOf(Object obj) {
- return subCategories.indexOf(obj);
+ int index = -1;
+ String id = ((SubCategory) obj).getWikittyId();
+ for (SubCategory data : subCategories) {
+ String dataId = data.getWikittyId();
+ if (id.equals(dataId)) {
+ index = subCategories.indexOf(data);
+ break;
+ }
+ }
+ return index;
}
public void setSubCategories(List<SubCategory> subCategories) {
Modified: trunk/billy-ui-zk/src/main/webapp/WEB-INF/lang-addon.xml
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/WEB-INF/lang-addon.xml 2010-08-18 15:18:43 UTC (rev 52)
+++ trunk/billy-ui-zk/src/main/webapp/WEB-INF/lang-addon.xml 2010-08-19 16:59:02 UTC (rev 53)
@@ -49,5 +49,11 @@
<component-class>org.chorem.billy.ui.DateSearchMacro</component-class>
<macro-uri>macros/dateSearchMacro.zul</macro-uri>
</component>
+
+ <component>
+ <component-name>subCategoryListboxMacro</component-name>
+ <component-class>org.chorem.billy.ui.SubCategoryListboxMacro</component-class>
+ <macro-uri>macros/subCategoryListboxMacro.zul</macro-uri>
+ </component>
</language-addon>
Modified: trunk/billy-ui-zk/src/main/webapp/categoryPage.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/categoryPage.zul 2010-08-18 15:18:43 UTC (rev 52)
+++ trunk/billy-ui-zk/src/main/webapp/categoryPage.zul 2010-08-19 16:59:02 UTC (rev 53)
@@ -4,11 +4,20 @@
<window id="category" apply="org.chorem.billy.ui.CategoryController">
Categories: <toolbarbutton id="newCategory" label="Add new category" />
- <listbox id="categoryListbox" rows="20" model="@{category$composer.categoryModel}" itemRenderer="@{category$composer.categoryRenderer}">
- <listhead>
- <listheader label="Name" />
- <listheader label="Type" />
- </listhead>
- </listbox>
- <paging id="categoryPaging" />
+ <hbox>
+ <vbox>
+ <listbox id="categoryListbox" rows="20" model="@{category$composer.categoryModel}" itemRenderer="@{category$composer.categoryRenderer}">
+ <listhead>
+ <listheader label="Name" />
+ <listheader label="Type" />
+ </listhead>
+ </listbox>
+ <paging id="categoryPaging" />
+ </vbox>
+
+ <vbox>
+ <subCategoryListboxMacro id="subCategoryListboxMacro" />
+ </vbox>
+
+ </hbox>
</window>
\ No newline at end of file
Modified: trunk/billy-ui-zk/src/main/webapp/invoiceFormPage.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/invoiceFormPage.zul 2010-08-18 15:18:43 UTC (rev 52)
+++ trunk/billy-ui-zk/src/main/webapp/invoiceFormPage.zul 2010-08-19 16:59:02 UTC (rev 53)
@@ -10,17 +10,18 @@
<hbox>
<vbox>
- <label value="Payment date" />
- <datebox format="dd/MM/yyyy" value="@{composer.invoice.payment, save-when='saveInvoice.onClick'}" />
- <label value="Expected date" />
- <datebox format="dd/MM/yyyy" value="@{composer.invoice.expected, save-when='saveInvoice.onClick'}" />
+
<label value="Posted date" />
<datebox format="dd/MM/yyyy" value="@{composer.invoice.posted, save-when='saveInvoice.onClick'}" />
+ <label value="Expected date" />
+ <datebox format="dd/MM/yyyy" value="@{composer.invoice.expected, save-when='saveInvoice.onClick'}" />
+
+ <label value="Payment date" />
+ <datebox format="dd/MM/yyyy" value="@{composer.invoice.payment, save-when='saveInvoice.onClick'}" />
+
<categoryMacro id="categoryMacro" />
-
<companyMacro id="companyMacro" />
-
<projectMacro id="projectMacro" />
</vbox>
Modified: trunk/billy-ui-zk/src/main/webapp/invoicePage.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/invoicePage.zul 2010-08-18 15:18:43 UTC (rev 52)
+++ trunk/billy-ui-zk/src/main/webapp/invoicePage.zul 2010-08-19 16:59:02 UTC (rev 53)
@@ -3,16 +3,33 @@
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="./invoice"?>
<window id="invoice" apply="org.chorem.billy.ui.InvoiceController">
- <vbox>
- <separator/>
- <dateSearchMacro id="dateSearchMacro" />
- <separator />
- <categorySearchMacro id="categorySearchMacro" />
- <companySearchMacro id="companySearchMacro" />
- <projectSearchMacro id="projectSearchMacro" />
- <button id="searchAll" label="Search" />
- <separator />
- </vbox>
+
+ <hbox>
+ <vbox>
+ <separator/>
+ <dateSearchMacro id="dateSearchMacro" />
+ <separator />
+ <categorySearchMacro id="categorySearchMacro" />
+ <companySearchMacro id="companySearchMacro" />
+ <projectSearchMacro id="projectSearchMacro" />
+ <button id="searchAll" label="Search" />
+ <separator />
+ </vbox>
+
+ <space bar="true" height="200px" spacing="50px"/>
+
+ <vbox>
+ <separator />
+ <hbox>
+ <label value="Total HT :" /> <label id="totalHTLabel"/>
+ </hbox>
+ <separator />
+ <hbox>
+ <label value="Total TTC :" /> <label id="totalTTCLabel"/>
+ </hbox>
+ </vbox>
+
+ </hbox>
Invoices: <toolbarbutton id="newInvoice" label="Add new invoice" />
<listbox id="invoiceListbox" rows="20" model="@{invoice$composer.invoiceModel}" itemRenderer="@{invoice$composer.invoiceRenderer}">
<listhead>
Added: trunk/billy-ui-zk/src/main/webapp/macros/subCategoryListboxMacro.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/macros/subCategoryListboxMacro.zul (rev 0)
+++ trunk/billy-ui-zk/src/main/webapp/macros/subCategoryListboxMacro.zul 2010-08-19 16:59:02 UTC (rev 53)
@@ -0,0 +1,8 @@
+<?page title="new page title" contentType="text/html;charset=UTF-8"?>
+<zk>
+ <listbox id="subCategoryListbox" autopaging="true" mold="paging" rows="20">
+ <listhead>
+ <listheader label="Name" />
+ </listhead>
+ </listbox>
+</zk>
\ No newline at end of file
1
0
r52 - in trunk: . billy-ui-zk/src/main/java/org/chorem/billy/ui billy-ui-zk/src/main/webapp
by bbrossaud@users.chorem.org 18 Aug '10
by bbrossaud@users.chorem.org 18 Aug '10
18 Aug '10
Author: bbrossaud
Date: 2010-08-18 17:18:43 +0200 (Wed, 18 Aug 2010)
New Revision: 52
Url: http://chorem.org/repositories/revision/billy/52
Log:
addition cash
Added:
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CashController.java
trunk/billy-ui-zk/src/main/webapp/cashPage.zul
Modified:
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/BillyController.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java
trunk/billy-ui-zk/src/main/webapp/billy.zul
trunk/pom.xml
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/BillyController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/BillyController.java 2010-08-16 10:15:57 UTC (rev 51)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/BillyController.java 2010-08-18 15:18:43 UTC (rev 52)
@@ -22,4 +22,9 @@
include.setSrc(null);
include.setSrc("categoryPage.zul");
}
+
+ public void onClick$cash() {
+ include.setSrc(null);
+ include.setSrc("cashPage.zul");
+ }
}
Added: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CashController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CashController.java (rev 0)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CashController.java 2010-08-18 15:18:43 UTC (rev 52)
@@ -0,0 +1,242 @@
+package org.chorem.billy.ui;
+
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+import org.chorem.data.bonzoms.Category;
+import org.chorem.data.bonzoms.Company;
+import org.chorem.data.bonzoms.Invoice;
+import org.chorem.data.bonzoms.SubCategory;
+import org.nuiton.wikitty.Criteria;
+import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.WikittyUtil;
+import org.nuiton.wikitty.search.Element;
+import org.nuiton.wikitty.search.Search;
+import org.zkoss.zk.ui.Component;
+import org.zkoss.zk.ui.util.GenericForwardComposer;
+import org.zkoss.zul.Column;
+import org.zkoss.zul.Columns;
+import org.zkoss.zul.Datebox;
+import org.zkoss.zul.Grid;
+import org.zkoss.zul.Group;
+import org.zkoss.zul.Groupfoot;
+import org.zkoss.zul.Label;
+import org.zkoss.zul.Row;
+import org.zkoss.zul.Rows;
+
+public class CashController extends GenericForwardComposer {
+
+ protected WikittyProxy proxy = ChoremDataProxy.getInstance();
+ protected Date startDate = new Date();
+ protected Date endDate = new Date();
+
+ protected Grid cashGrid;
+
+ @Override
+ public void doAfterCompose(Component comp) throws Exception {
+ super.doAfterCompose(comp);
+ }
+
+ protected int getStartMonth(int currentYear, int startYear) {
+ int startMonth = 1;
+ if (startYear == currentYear) {
+ SimpleDateFormat sdf = new SimpleDateFormat("MM");
+ startMonth = Integer.valueOf(sdf.format(startDate));
+ }
+ return startMonth;
+ }
+
+ protected int getEndMonth(int currentYear, int endYear) {
+ int endMonth = 12;
+ if (endYear == currentYear) {
+ SimpleDateFormat sdf = new SimpleDateFormat("MM");
+ endMonth = Integer.valueOf(sdf.format(endDate));
+ }
+ return endMonth;
+ }
+
+ protected void createHeaders(int startYear, int currentYear, int endYear, Columns head) {
+ NumberFormat nf = new DecimalFormat("00");
+ int startMonth = getStartMonth(startYear, currentYear);
+ int endMonth = getEndMonth(currentYear, endYear);
+ while (startMonth <= endMonth) {
+ String label = nf.format(startMonth) + "/" + currentYear;
+ Column header = new Column(label);
+ head.appendChild(header);
+ ++startMonth;
+ }
+ }
+
+ protected void createHead() {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+ String start = sdf.format(startDate);
+ String end = sdf.format(endDate);
+ int startYear = Integer.valueOf(start);
+ int endYear = Integer.valueOf(end);
+ Columns head = new Columns();
+ cashGrid.appendChild(head);
+ Column header = new Column("Categories");
+ head.appendChild(header);
+ for (int currentYear = startYear; currentYear <= endYear; ++currentYear) {
+ createHeaders(startYear, currentYear, endYear, head);
+ }
+ }
+
+ protected Date getDate(int year, final int month) throws ParseException {
+ int m = month;
+ int y = year;
+ if (month > 12) {
+ m = 0;
+ ++y;
+ }
+ NumberFormat nf = new DecimalFormat("00");
+ String monthStr = nf.format(m);
+ SimpleDateFormat sdf = new SimpleDateFormat("MMyyy");
+ return sdf.parse(monthStr + y);
+ }
+
+ protected double createLabelPrice(Date start, Date end, String id, Label label) throws ParseException {
+ Double price = new Double(0);
+ String first = WikittyUtil.formatDate(start);
+ String last = WikittyUtil.formatDate(end);
+ Search search = Search.query().eq(Invoice.FQ_FIELD_INVOICE_SUBCATEGORY, id);
+ search = search.lt(Invoice.FQ_FIELD_INVOICE_PAYMENT, last).ge(Invoice.FQ_FIELD_INVOICE_PAYMENT, first);
+ Criteria criteria = search.criteria();
+ List<Invoice> invoices = proxy.findAllByCriteria(Invoice.class, criteria).getAll();
+ String toolTips = "";
+ for (Invoice invoice : invoices) {
+ Double ttc = invoice.getTTCPrice();
+ Company company = proxy.restore(Company.class, invoice.getCompany());
+ if (company != null) {
+ toolTips += company.getName();
+ }
+ toolTips += " " + invoice.getNumber() + " = " + invoice.getTTCPrice() + " | ";
+ if (ttc != null) {
+ price += ttc;
+ }
+ }
+ label.setTooltiptext(toolTips);
+ return price;
+ }
+
+ protected void createLabels(Row row, SubCategory sub, List<Double> total) throws ParseException {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+ String start = sdf.format(startDate);
+ String end = sdf.format(endDate);
+ int startYear = Integer.valueOf(start);
+ int endYear = Integer.valueOf(end);
+
+ for (int currentYear = startYear; currentYear <= endYear; ++currentYear) {
+
+ int startMonth = getStartMonth(startYear, currentYear);
+ int endMonth = getEndMonth(currentYear, endYear);
+
+ for (int count = 0; startMonth <= endMonth; ++count) {
+ Label label = new Label();
+ Date first = getDate(currentYear, startMonth);
+ Date last = getDate(currentYear, startMonth + 1);
+ Double price = createLabelPrice(first, last, sub.getWikittyId(), label);
+ label.setValue(price.toString());
+ row.appendChild(label);
+ if (total.size() < (count + 1)) {
+ total.add(price);
+ } else {
+ Double tmp = total.get(count);
+ tmp += price;
+ total.set(count, tmp);
+ }
+ ++startMonth;
+ }
+ }
+ }
+
+ protected void createSubRows(List<String> ids, List<Double> total, Rows rows) throws ParseException {
+ List<SubCategory> subs = proxy.restore(SubCategory.class, ids);
+ subs = new ArrayList<SubCategory>(subs);
+ for (SubCategory sub : subs) {
+ Row row = new Row();
+ rows.appendChild(row);
+ Label label = new Label(sub.getName());
+ row.appendChild(label);
+ createLabels(row, sub, total);
+
+ }
+ }
+
+ protected void createRows() throws ParseException {
+ Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Category.EXT_CATEGORY).criteria();
+ criteria = criteria.addSortDescending(Category.FQ_FIELD_CATEGORY_ORDER);
+ List<Category> categories = proxy.findAllByCriteria(Category.class, criteria).getAll();
+ List<Double> total = new ArrayList<Double>();
+ Rows rows = new Rows();
+ cashGrid.appendChild(rows);
+ for (Category category : categories) {
+ Group group = new Group();
+ Label groupLabel = new Label(category.getName());
+ groupLabel.setStyle("font-weight: bold");
+ group.appendChild(groupLabel);
+ rows.appendChild(group);
+ Set<String> ids = category.getSubCategory();
+ if (ids != null) {
+ List<Double> prices = new ArrayList<Double>();
+ createSubRows(new ArrayList<String>(ids), prices, rows);
+ int count = 0;
+ for (Double price : prices) {
+ if (total.size() < (count + 1)) {
+ total.add(price);
+ } else {
+ Double tmp = total.get(count);
+ tmp += price;
+ total.set(count, tmp);
+ }
+ Label label = new Label(price.toString());
+ label.setStyle("font-weight: bold");
+ group.appendChild(label);
+ ++count;
+ }
+ }
+ }
+ createTotal(total, rows);
+ }
+
+ protected void createTotal(List<Double> totals, Rows rows) {
+ Groupfoot foot = new Groupfoot();
+ rows.appendChild(foot);
+ Label label = new Label("Total");
+ label.setStyle("font-weight: bold");
+ foot.appendChild(label);
+ for (Double total : totals) {
+ Label totalLabel = new Label(total.toString());
+ totalLabel.setStyle("font-weight: bold");
+ foot.appendChild(totalLabel);
+ }
+ }
+
+ protected void createGrid() throws ParseException {
+ createHead();
+ createRows();
+ }
+
+ /*
+ * Events
+ */
+ public void onClick$search() throws ParseException {
+ List<?> comps = cashGrid.getChildren();
+ if (comps != null && !comps.isEmpty()) {
+ comps.clear();
+ }
+ Datebox date = (Datebox) self.getFellow("startDatebox");
+ startDate = date.getValue();
+ date = (Datebox) self.getFellow("endDatebox");
+ endDate = date.getValue();
+ if (startDate != null && endDate != null) {
+ createGrid();
+ }
+ }
+}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java 2010-08-16 10:15:57 UTC (rev 51)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java 2010-08-18 15:18:43 UTC (rev 52)
@@ -181,9 +181,9 @@
SubCategory subCategory = (SubCategory) item.getValue();
if (subCategory != null) {
subCategoryModel.removeData(subCategory);
- String id = subCategory.getWikittyId();
- if (id != null && !id.isEmpty()) {
- removedSubCategories.add(id);
+ String version = subCategory.getWikittyVersion();
+ if (version != null && !version.equals("0.1")) {
+ removedSubCategories.add(subCategory.getWikittyId());
}
clearSubCategoryFields();
}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java 2010-08-16 10:15:57 UTC (rev 51)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java 2010-08-18 15:18:43 UTC (rev 52)
@@ -9,8 +9,8 @@
import org.chorem.billy.ui.ChoremDataProxy;
import org.chorem.data.bonzoms.Company;
import org.chorem.data.bonzoms.Invoice;
-import org.chorem.data.bonzoms.Category;
import org.chorem.data.bonzoms.Project;
+import org.chorem.data.bonzoms.SubCategory;
import org.nuiton.wikitty.Criteria;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.search.Element;
@@ -65,10 +65,9 @@
Listcell cell = new Listcell();
String id = invoice.getSubCategory();
if (id != null && !id.isEmpty()) {
- Criteria criteria = Search.query().contains(Category.FQ_FIELD_CATEGORY_SUBCATEGORY, id).criteria();
- Category category = proxy.findByCriteria(Category.class, criteria);
- if (category != null) {
- String name = category.getName();
+ SubCategory sub = proxy.restore(SubCategory.class, id);
+ if (sub != null) {
+ String name = sub.getName();
if (name == null) {
name = "";
}
Modified: trunk/billy-ui-zk/src/main/webapp/billy.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/billy.zul 2010-08-16 10:15:57 UTC (rev 51)
+++ trunk/billy-ui-zk/src/main/webapp/billy.zul 2010-08-18 15:18:43 UTC (rev 52)
@@ -9,6 +9,7 @@
<vbox>
<toolbarbutton id="invoices" label="Invoices" />
<toolbarbutton id="categories" label="Categories" />
+ <toolbarbutton id="cash" label="Cash" />
</vbox>
</groupbox>
<vbox id="content" >
Added: trunk/billy-ui-zk/src/main/webapp/cashPage.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/cashPage.zul (rev 0)
+++ trunk/billy-ui-zk/src/main/webapp/cashPage.zul 2010-08-18 15:18:43 UTC (rev 52)
@@ -0,0 +1,17 @@
+<?page id="Cash" title="Cash" cacheable="false" language="xul/html" zscriptLanguage="Java"?>
+<?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?>
+<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="./cash"?>
+
+<window id="cash" apply="org.chorem.billy.ui.CashController">
+
+ <vbox>
+ <hbox>
+ Start : <datebox id="startDatebox" format="MM/yyyy"/> <space /> <space /> End : <datebox id="endDatebox" format="MM/yyyy" />
+ </hbox>
+ <button id="search" label="Search" />
+ </vbox>
+
+ <grid id="cashGrid">
+ </grid>
+
+</window>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-08-16 10:15:57 UTC (rev 51)
+++ trunk/pom.xml 2010-08-18 15:18:43 UTC (rev 52)
@@ -229,7 +229,7 @@
<platform>chorem.org</platform>
<chorem-data.version>0.1-SNAPSHOT</chorem-data.version>
- <zk.version>5.0.2</zk.version>
+ <zk.version>5.0.3</zk.version>
<wikitty.version>2.1-SNAPSHOT</wikitty.version>
<!-- Nuiton librairies -->
1
0
r51 - in trunk/billy-ui-zk/src/main: java/org/chorem/billy/ui webapp
by bbrossaud@users.chorem.org 16 Aug '10
by bbrossaud@users.chorem.org 16 Aug '10
16 Aug '10
Author: bbrossaud
Date: 2010-08-16 12:15:57 +0200 (Mon, 16 Aug 2010)
New Revision: 51
Url: http://chorem.org/repositories/revision/billy/51
Log:
the invoice search is ready
Modified:
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategorySearchMacro.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanySearchMacro.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/DateSearchMacro.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectSearchMacro.java
trunk/billy-ui-zk/src/main/webapp/invoicePage.zul
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategorySearchMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategorySearchMacro.java 2010-08-13 15:19:56 UTC (rev 50)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategorySearchMacro.java 2010-08-16 10:15:57 UTC (rev 51)
@@ -5,6 +5,7 @@
import java.util.Set;
import org.chorem.data.bonzoms.Category;
+import org.chorem.data.bonzoms.Invoice;
import org.chorem.data.bonzoms.SubCategory;
import org.nuiton.wikitty.Criteria;
import org.nuiton.wikitty.WikittyProxy;
@@ -161,4 +162,16 @@
}
};
}
+
+ public void getSearch(Search search) {
+ if (search == null) {
+ search = Search.query();
+ }
+ if (subCategories.size() > 0) {
+ Search searchSubCategories = search.and().or();
+ for (String id : subCategories) {
+ searchSubCategories = searchSubCategories.eq(Invoice.FQ_FIELD_INVOICE_SUBCATEGORY, id);
+ }
+ }
+ }
}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanySearchMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanySearchMacro.java 2010-08-13 15:19:56 UTC (rev 50)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanySearchMacro.java 2010-08-16 10:15:57 UTC (rev 51)
@@ -4,6 +4,7 @@
import java.util.List;
import org.chorem.data.bonzoms.Company;
+import org.chorem.data.bonzoms.Invoice;
import org.nuiton.wikitty.Criteria;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.search.Element;
@@ -119,4 +120,16 @@
}
};
}
+
+ public void getSearch(Search search) {
+ if (search == null) {
+ search = Search.query();
+ }
+ if (companies.size() > 0) {
+ Search searchCompanies = search.and().or();
+ for (String id : companies) {
+ searchCompanies = searchCompanies.eq(Invoice.FQ_FIELD_INVOICE_COMPANY, id);
+ }
+ }
+ }
}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/DateSearchMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/DateSearchMacro.java 2010-08-13 15:19:56 UTC (rev 50)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/DateSearchMacro.java 2010-08-16 10:15:57 UTC (rev 51)
@@ -1,67 +1,139 @@
package org.chorem.billy.ui;
+import java.text.ParseException;
+import java.util.Date;
+
+import org.chorem.data.bonzoms.Invoice;
+import org.nuiton.wikitty.WikittyUtil;
+import org.nuiton.wikitty.search.Search;
import org.zkoss.zk.ui.HtmlMacroComponent;
+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.Checkbox;
+import org.zkoss.zul.Datebox;
public class DateSearchMacro extends HtmlMacroComponent {
+ protected int isCheck = 0;
+
@Override
public void afterCompose() {
super.afterCompose();
+ initPostedCheck();
+ initExpectedCheck();
+ initPaymentCheck();
}
-// protected boolean checkPosted(Date start, Date end, Search search) throws ParseException {
-// Checkbox check = (Checkbox) getFellow("postedDate");
-// if (!check.isChecked()) {
-// return false;
-// }
-// if (start != null) {
-// String formatDate = WikittyUtil.formatDate(start);
-// search = search.ge(Invoice.FQ_FIELD_INVOICE_POSTED, formatDate);
-// }
-// if (end != null) {
-// String formatDate = WikittyUtil.formatDate(end);
-// search = search.le(Invoice.FQ_FIELD_INVOICE_POSTED, formatDate);
-// }
-// search = search.or();
-// return true;
-// }
-//
-// protected boolean expectedPosted(Date start, Date end, Search search, boolean bool) throws ParseException {
-// Checkbox check = (Checkbox) getFellow("expectedDate");
-// if (!check.isChecked()) {
-// return bool;
-// }
-// if (bool == false) {
-// search = search.or();
-// }
-// if (start != null) {
-// bool = true;
-// String formatDate = WikittyUtil.formatDate(start);
-// search = search.ge(Invoice.FQ_FIELD_INVOICE_POSTED, formatDate);
-// }
-// if (end != null) {
-// String formatDate = WikittyUtil.formatDate(end);
-// search = search.le(Invoice.FQ_FIELD_INVOICE_POSTED, formatDate);
-// }
-// return bool;
-// }
-//
-//
-// public Search getSearch(Search src) {
-// Search search = src;
-// if (search == null) {
-// search = Search.query();
-// }
-// Datebox startDate = (Datebox) getFellow("startDate");
-// Date start = startDate.getValue();
-//
-// Datebox endDate = (Datebox) getFellow("endDate");
-// Date end = endDate.getValue();
-//
-// boolean bool = checkPosted(start, end, search);
-// bool = checkExpected(start, end, search, bool);
-// checkPayment(start, end, search, bool);
-//
-// return search;
-// }
+ protected void initPostedCheck() {
+ Checkbox check = (Checkbox) getFellow("postedDate");
+ check.addEventListener(Events.ON_CHECK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ Checkbox check = (Checkbox) event.getTarget();
+ if (check.isChecked()) {
+ ++isCheck;
+ } else {
+ --isCheck;
+ }
+ }
+ });
+ }
+
+ protected void initExpectedCheck() {
+ Checkbox check = (Checkbox) getFellow("expectedDate");
+ check.addEventListener(Events.ON_CHECK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ Checkbox check = (Checkbox) event.getTarget();
+ if (check.isChecked()) {
+ ++isCheck;
+ } else {
+ --isCheck;
+ }
+ }
+ });
+ }
+
+ protected void initPaymentCheck() {
+ Checkbox check = (Checkbox) getFellow("paymentDate");
+ check.addEventListener(Events.ON_CHECK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ Checkbox check = (Checkbox) event.getTarget();
+ if (check.isChecked()) {
+ ++isCheck;
+ } else {
+ --isCheck;
+ }
+ }
+ });
+ }
+
+ protected void checkPosted(Date start, Date end, Search search) throws ParseException {
+ Checkbox check = (Checkbox) getFellow("postedDate");
+ if (check.isChecked()) {
+ Search postedSearch = search.and();
+ if (start != null) {
+ String formatDate = WikittyUtil.formatDate(start);
+ postedSearch = postedSearch.ge(Invoice.FQ_FIELD_INVOICE_POSTED, formatDate);
+ }
+ if (end != null) {
+ String formatDate = WikittyUtil.formatDate(end);
+ postedSearch = postedSearch.le(Invoice.FQ_FIELD_INVOICE_POSTED, formatDate);
+ }
+ }
+ }
+
+ protected void checkExpected(Date start, Date end, Search search) throws ParseException {
+ Checkbox check = (Checkbox) getFellow("expectedDate");
+ if (check.isChecked()) {
+ Search expectedSearch = search.and();
+ if (start != null) {
+ String formatDate = WikittyUtil.formatDate(start);
+ expectedSearch = expectedSearch.ge(Invoice.FQ_FIELD_INVOICE_EXPECTED, formatDate);
+ }
+ if (end != null) {
+ String formatDate = WikittyUtil.formatDate(end);
+ expectedSearch = expectedSearch.le(Invoice.FQ_FIELD_INVOICE_EXPECTED, formatDate);
+ }
+ }
+ }
+
+ protected void checkPayment(Date start, Date end, Search search) throws ParseException {
+ Checkbox check = (Checkbox) getFellow("paymentDate");
+ if (check.isChecked()) {
+ Search paymentSearch = search.and();
+ if (start != null) {
+ String formatDate = WikittyUtil.formatDate(start);
+ paymentSearch = paymentSearch.ge(Invoice.FQ_FIELD_INVOICE_PAYMENT, formatDate);
+ }
+ if (end != null) {
+ String formatDate = WikittyUtil.formatDate(end);
+ paymentSearch = paymentSearch.le(Invoice.FQ_FIELD_INVOICE_PAYMENT, formatDate);
+ }
+ }
+ }
+
+ public void getSearch(Search search) throws ParseException {
+ if (search == null) {
+ search = Search.query();
+ }
+ if (isCheck > 0) {
+ Datebox startDate = (Datebox) getFellow("startDate");
+ Date start = startDate.getValue();
+
+ Datebox endDate = (Datebox) getFellow("endDate");
+ Date end = endDate.getValue();
+ if (start != null || end != null) {
+ Search searchDate = search.or();
+ checkPosted(start, end, searchDate);
+ checkExpected(start, end, searchDate);
+ checkPayment(start, end, searchDate);
+ }
+ }
+ }
}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java 2010-08-13 15:19:56 UTC (rev 50)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java 2010-08-16 10:15:57 UTC (rev 51)
@@ -1,5 +1,6 @@
package org.chorem.billy.ui;
+import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
@@ -35,6 +36,11 @@
protected WikittyProxy proxy = ChoremDataProxy.getInstance();
protected InvoiceModel invoiceModel = new InvoiceModel(pageSize);
+ protected ProjectSearchMacro projectSearchMacro;
+ protected CompanySearchMacro companySearchMacro;
+ protected CategorySearchMacro categorySearchMacro;
+ protected DateSearchMacro dateSearchMacro;
+
protected Paging invoicePaging;
@Override
@@ -212,6 +218,18 @@
invoiceModel.setActivePage(activePage);
}
+ public void onClick$searchAll() throws ParseException {
+ Search search = Search.query();
+ search = search.eq(Element.ELT_EXTENSION, Invoice.EXT_INVOICE);
+ dateSearchMacro.getSearch(search);
+ projectSearchMacro.getSearch(search);
+ companySearchMacro.getSearch(search);
+ categorySearchMacro.getSearch(search);
+ Criteria criteria = search.criteria();
+ invoiceModel.setCriteria(criteria);
+ initPaging();
+ }
+
/*
* Getters
*/
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectSearchMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectSearchMacro.java 2010-08-13 15:19:56 UTC (rev 50)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectSearchMacro.java 2010-08-16 10:15:57 UTC (rev 51)
@@ -3,6 +3,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.chorem.data.bonzoms.Invoice;
import org.chorem.data.bonzoms.Project;
import org.nuiton.wikitty.Criteria;
import org.nuiton.wikitty.WikittyProxy;
@@ -119,4 +120,16 @@
}
};
}
+
+ public void getSearch(Search search) {
+ if (search == null) {
+ search = Search.query();
+ }
+ if (projects.size() > 0) {
+ Search searchProjects = search.and().or();
+ for (String id : projects) {
+ searchProjects = searchProjects.eq(Invoice.FQ_FIELD_INVOICE_PROJECT, id);
+ }
+ }
+ }
}
Modified: trunk/billy-ui-zk/src/main/webapp/invoicePage.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/invoicePage.zul 2010-08-13 15:19:56 UTC (rev 50)
+++ trunk/billy-ui-zk/src/main/webapp/invoicePage.zul 2010-08-16 10:15:57 UTC (rev 51)
@@ -10,6 +10,7 @@
<categorySearchMacro id="categorySearchMacro" />
<companySearchMacro id="companySearchMacro" />
<projectSearchMacro id="projectSearchMacro" />
+ <button id="searchAll" label="Search" />
<separator />
</vbox>
Invoices: <toolbarbutton id="newInvoice" label="Add new invoice" />
1
0
r50 - in trunk: . billy-ui-zk billy-ui-zk/src/main/java/org/chorem/billy/ui
by bbrossaud@users.chorem.org 13 Aug '10
by bbrossaud@users.chorem.org 13 Aug '10
13 Aug '10
Author: bbrossaud
Date: 2010-08-13 17:19:56 +0200 (Fri, 13 Aug 2010)
New Revision: 50
Url: http://chorem.org/repositories/revision/billy/50
Log:
pagination works well
Modified:
trunk/billy-ui-zk/pom.xml
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryController.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyBandboxMacro.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyModel.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java
trunk/pom.xml
Modified: trunk/billy-ui-zk/pom.xml
===================================================================
--- trunk/billy-ui-zk/pom.xml 2010-08-13 12:14:25 UTC (rev 49)
+++ trunk/billy-ui-zk/pom.xml 2010-08-13 15:19:56 UTC (rev 50)
@@ -74,6 +74,16 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>org.nuiton</groupId>
+ <artifactId>nuiton-utils</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ </dependency>
</dependencies>
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryController.java 2010-08-13 12:14:25 UTC (rev 49)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryController.java 2010-08-13 15:19:56 UTC (rev 50)
@@ -13,6 +13,7 @@
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
+import org.zkoss.zk.ui.event.ForwardEvent;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
@@ -104,8 +105,8 @@
createCategoryFormWindow(null);
}
- public void onPaging$categoryPaging(Event event) {
- PagingEvent pagingEvent = (PagingEvent) event;
+ public void onPaging$categoryPaging(ForwardEvent event) {
+ PagingEvent pagingEvent = (PagingEvent) event.getOrigin();
int activePage = pagingEvent.getActivePage();
categoryModel.setActivePage(activePage);
}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyBandboxMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyBandboxMacro.java 2010-08-13 12:14:25 UTC (rev 49)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyBandboxMacro.java 2010-08-13 15:19:56 UTC (rev 50)
@@ -19,7 +19,7 @@
public class CompanyBandboxMacro extends HtmlMacroComponent {
- private final int pageSize = 5;
+ protected final int pageSize = 5;
protected WikittyProxy proxy = ChoremDataProxy.getInstance();
protected CompanyModel companyModel = new CompanyModel(pageSize);
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyModel.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyModel.java 2010-08-13 12:14:25 UTC (rev 49)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyModel.java 2010-08-13 15:19:56 UTC (rev 50)
@@ -5,7 +5,6 @@
import org.chorem.billy.ui.ChoremDataProxy;
import org.chorem.data.bonzoms.Company;
-import org.chorem.data.bonzoms.Project;
import org.nuiton.wikitty.Criteria;
import org.nuiton.wikitty.PagedResult;
import org.nuiton.wikitty.WikittyProxy;
@@ -40,7 +39,7 @@
@Override
public int indexOf(Object obj) {
int index = -1;
- String id = ((Project) obj).getWikittyId();
+ String id = ((Company) obj).getWikittyId();
for (Company data : companies) {
String dataId = data.getWikittyId();
if (id.equals(dataId)) {
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java 2010-08-13 12:14:25 UTC (rev 49)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java 2010-08-13 15:19:56 UTC (rev 50)
@@ -19,6 +19,7 @@
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
+import org.zkoss.zk.ui.event.ForwardEvent;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
@@ -205,8 +206,8 @@
createInvoiceFormWindow(null);
}
- public void onPaging$invoicePaging(Event event) {
- PagingEvent pagingEvent = (PagingEvent) event;
+ public void onPaging$invoicePaging(ForwardEvent event) {
+ PagingEvent pagingEvent = (PagingEvent) event.getOrigin();
int activePage = pagingEvent.getActivePage();
invoiceModel.setActivePage(activePage);
}
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-08-13 12:14:25 UTC (rev 49)
+++ trunk/pom.xml 2010-08-13 15:19:56 UTC (rev 50)
@@ -102,6 +102,12 @@
<!-- dependencies for billy-zk -->
<dependency>
+ <groupId>org.nuiton</groupId>
+ <artifactId>nuiton-utils</artifactId>
+ <version>${nuiton-utils.version}</version>
+ </dependency>
+
+ <dependency>
<groupId>org.chorem.chorem-data</groupId>
<artifactId>data-bonzoms</artifactId>
<version>${chorem-data.version}</version>
@@ -229,12 +235,13 @@
<!-- Nuiton librairies -->
<topia.version>2.2.0</topia.version>
<generator.version>1.0.0</generator.version>
+ <nuiton-utils.version>1.3.2-SNAPSHOT</nuiton-utils.version>
<!-- ChoReg -->
<choreg.version>1.0.0-alpha-2-SNAPSHOT</choreg.version>
<!-- commons-lang for ToPIA -->
- <lang.version>2.4</lang.version>
+ <lang.version>2.5</lang.version>
<!-- Hibernate for ToPIA -->
<hibernate.version>3.3.1.GA</hibernate.version>
1
0
r49 - in trunk/billy-ui-zk/src/main: java/org/chorem/billy/ui webapp webapp/WEB-INF webapp/macros
by bbrossaud@users.chorem.org 13 Aug '10
by bbrossaud@users.chorem.org 13 Aug '10
13 Aug '10
Author: bbrossaud
Date: 2010-08-13 14:14:25 +0200 (Fri, 13 Aug 2010)
New Revision: 49
Url: http://chorem.org/repositories/revision/billy/49
Log:
addition creation/edition category
Added:
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/BillyController.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryController.java
trunk/billy-ui-zk/src/main/webapp/billy.zul
trunk/billy-ui-zk/src/main/webapp/categoryPage.zul
Modified:
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java
trunk/billy-ui-zk/src/main/webapp/WEB-INF/web.xml
trunk/billy-ui-zk/src/main/webapp/categoryFormPage.zul
trunk/billy-ui-zk/src/main/webapp/invoiceFormPage.zul
trunk/billy-ui-zk/src/main/webapp/invoicePage.zul
trunk/billy-ui-zk/src/main/webapp/macros/dateSearchMacro.zul
Added: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/BillyController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/BillyController.java (rev 0)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/BillyController.java 2010-08-13 12:14:25 UTC (rev 49)
@@ -0,0 +1,25 @@
+package org.chorem.billy.ui;
+
+import org.zkoss.zk.ui.util.GenericForwardComposer;
+import org.zkoss.zul.Include;
+
+/**
+ *
+ * @author bbrossaud
+ */
+public class BillyController extends GenericForwardComposer {
+
+ protected Include include;
+ /*
+ * Events
+ */
+ public void onClick$invoices() {
+ include.setSrc(null);
+ include.setSrc("invoicePage.zul");
+ }
+
+ public void onClick$categories() {
+ include.setSrc(null);
+ include.setSrc("categoryPage.zul");
+ }
+}
Added: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryController.java (rev 0)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryController.java 2010-08-13 12:14:25 UTC (rev 49)
@@ -0,0 +1,120 @@
+package org.chorem.billy.ui;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.chorem.data.bonzoms.Category;
+import org.nuiton.wikitty.Criteria;
+import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.search.Element;
+import org.nuiton.wikitty.search.Search;
+import org.zkoss.zk.ui.Component;
+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.event.Events;
+import org.zkoss.zk.ui.util.GenericForwardComposer;
+import org.zkoss.zul.Listcell;
+import org.zkoss.zul.Listitem;
+import org.zkoss.zul.ListitemRenderer;
+import org.zkoss.zul.Paging;
+import org.zkoss.zul.Window;
+import org.zkoss.zul.event.PagingEvent;
+
+public class CategoryController extends GenericForwardComposer {
+
+ protected final int pageSize = 20;
+
+ protected WikittyProxy proxy = ChoremDataProxy.getInstance();
+ protected CategoryModel categoryModel = new CategoryModel(pageSize);
+
+ protected Paging categoryPaging;
+
+ @Override
+ public void doAfterCompose(Component comp) throws Exception {
+ super.doAfterCompose(comp);
+ initCategoryModel();
+ initPaging();
+ }
+
+ protected void initCategoryModel() {
+ Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Category.EXT_CATEGORY).criteria();
+ categoryModel.setCriteria(criteria);
+ }
+
+ protected void initPaging() {
+ categoryPaging.setPageSize(pageSize);
+ int totalSize = categoryModel.getTotalSize();
+ categoryPaging.setTotalSize(totalSize);
+ }
+
+ protected void createCategoryFormWindow(String id) {
+ Map<String, Object> map = new HashMap<String, Object>();
+ if (id != null) {
+ map.put("categoryId", id);
+ }
+ Window win = (Window) Executions.createComponents("categoryFormPage.zul", null, map);
+ win.addEventListener(CategoryFormController.EVENT_ON_SAVE_CATEGORY, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ String id = (String) event.getData();
+ Category category = proxy.restore(Category.class, id);
+ int rowIndex = categoryModel.indexOf(category);
+ if (rowIndex != -1) {
+ categoryModel.reloadContent(rowIndex);
+ } else {
+ categoryModel.addData(category);
+ }
+ int totalSize = categoryModel.getTotalSize();
+ categoryPaging.setTotalSize(totalSize);
+ }
+ });
+ }
+
+ /*
+ * Renderers
+ */
+ public ListitemRenderer getCategoryRenderer() {
+ return new ListitemRenderer() {
+
+ @Override
+ public void render(Listitem item, Object data) throws Exception {
+ item.setValue(data);
+ final Category category = (Category) data;
+ Listcell cell1 = new Listcell(category.getName());
+ item.appendChild(cell1);
+ Listcell cell2 = new Listcell(category.getType());
+ item.appendChild(cell2);
+ item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ createCategoryFormWindow(category.getWikittyId());
+ }
+ });
+ }
+ };
+ }
+
+ /*
+ * Events
+ */
+ public void onClick$newCategory() {
+ createCategoryFormWindow(null);
+ }
+
+ public void onPaging$categoryPaging(Event event) {
+ PagingEvent pagingEvent = (PagingEvent) event;
+ int activePage = pagingEvent.getActivePage();
+ categoryModel.setActivePage(activePage);
+ }
+
+ /*
+ * Getters
+ */
+ public CategoryModel getCategoryModel() {
+ return categoryModel;
+ }
+
+}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java 2010-08-12 16:37:31 UTC (rev 48)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryFormController.java 2010-08-13 12:14:25 UTC (rev 49)
@@ -70,6 +70,9 @@
selectedSubCategory = subCategories.get(0);
}
}
+ if (subCategoryModel.getSubCategories().size() == 0) {
+ onClick$addSubCategory();
+ }
}
protected void saveSubCategories() {
@@ -172,16 +175,18 @@
}
public void onClick$deleteSubCategory() {
- Listitem item = subCategoryListbox.getSelectedItem();
- if (item != null) {
- SubCategory subCategory = (SubCategory) item.getValue();
- if (subCategory != null) {
- subCategoryModel.removeData(subCategory);
- String id = subCategory.getWikittyId();
- if (id != null && !id.isEmpty()) {
- removedSubCategories.add(id);
+ if (subCategoryListbox.getItemCount() > 1) {
+ Listitem item = subCategoryListbox.getSelectedItem();
+ if (item != null) {
+ SubCategory subCategory = (SubCategory) item.getValue();
+ if (subCategory != null) {
+ subCategoryModel.removeData(subCategory);
+ String id = subCategory.getWikittyId();
+ if (id != null && !id.isEmpty()) {
+ removedSubCategories.add(id);
+ }
+ clearSubCategoryFields();
}
- clearSubCategoryFields();
}
}
}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java 2010-08-12 16:37:31 UTC (rev 48)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java 2010-08-13 12:14:25 UTC (rev 49)
@@ -27,7 +27,7 @@
import org.zkoss.zul.Window;
import org.zkoss.zul.event.PagingEvent;
-public class InvoiceController extends GenericForwardComposer{
+public class InvoiceController extends GenericForwardComposer {
protected final int pageSize = 20;
@@ -127,7 +127,7 @@
Listcell cell = new Listcell();
String str = "-";
if (date != null) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
+ SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
str = sdf.format(date);
}
cell.setLabel(str);
Modified: trunk/billy-ui-zk/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/WEB-INF/web.xml 2010-08-12 16:37:31 UTC (rev 48)
+++ trunk/billy-ui-zk/src/main/webapp/WEB-INF/web.xml 2010-08-13 12:14:25 UTC (rev 49)
@@ -53,7 +53,7 @@
<welcome-file-list>
<welcome-file>index.html</welcome-file>
- <welcome-file>invoicePage.zul</welcome-file>
+ <welcome-file>billy.zul</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
Added: trunk/billy-ui-zk/src/main/webapp/billy.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/billy.zul (rev 0)
+++ trunk/billy-ui-zk/src/main/webapp/billy.zul 2010-08-13 12:14:25 UTC (rev 49)
@@ -0,0 +1,19 @@
+<?page id="billy" title="Billy" cacheable="false" language="xul/html" zscriptLanguage="Java"?>
+<?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?>
+<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="win"?>
+
+<window id="win" title="Billy" border="normal" apply="org.chorem.billy.ui.BillyController">
+ <hbox>
+ <groupbox height="800px" >
+ <caption label="Menu" />
+ <vbox>
+ <toolbarbutton id="invoices" label="Invoices" />
+ <toolbarbutton id="categories" label="Categories" />
+ </vbox>
+ </groupbox>
+ <vbox id="content" >
+ <separator bar="true" />
+ <include id="include" src="invoicePage.zul" />
+ </vbox>
+ </hbox>
+</window>
\ No newline at end of file
Modified: trunk/billy-ui-zk/src/main/webapp/categoryFormPage.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/categoryFormPage.zul 2010-08-12 16:37:31 UTC (rev 48)
+++ trunk/billy-ui-zk/src/main/webapp/categoryFormPage.zul 2010-08-13 12:14:25 UTC (rev 49)
@@ -1,63 +1,68 @@
<?page id="contract" title="Contract" cacheable="false" language="xul/html" zscriptLanguage="Java"?>
<?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?>
-<window closable="true" maximizable="true" sizable="true" height="390px" width="400px" contentStyle="overflow:auto" apply="org.chorem.billy.ui.CategoryFormController">
+<window closable="true" maximizable="true" sizable="true" height="420px" width="460px" contentStyle="overflow:auto" apply="org.chorem.billy.ui.CategoryFormController">
<caption label="Category" />
-
<vbox>
- <hbox>
-
- <groupbox>
- <caption id="categoryCaption" label="@{composer.category.name}" />
+ <separator />
+ <groupbox>
+ <caption id="categoryCaption" label="@{composer.category.name}" />
+ <hbox>
<vbox>
-
<label value="Order"/>
<intbox id="categoryOrder" value="@{composer.category.order, save-when='save.onClick'}" />
-
+ </vbox>
+ <space />
+ <vbox>
<label value="Name"/>
<textbox id="categoryName" value="@{composer.category.name, save-when='save.onClick'}" />
-
+ </vbox>
+ <space />
+ <vbox>
<label value="Type" />
<textbox id="categoryType" value="@{composer.category.type, save-when='save.onClick'}" />
-
</vbox>
- </groupbox>
+ </hbox>
+ </groupbox>
+ <separator />
+ <groupbox>
+ <caption label="Sub categories" />
+ <hbox>
+ <vbox>
+ <separator />
+ <listbox id="subCategoryListbox" autopaging="true" mold="paging" rows="10" width="200px" model="@{composer.subCategoryModel}"
+ itemRenderer="@{composer.subCategoryRenderer}">
+ <listhead>
+ <listheader label="Name" />
+ </listhead>
+ </listbox>
+ <hbox>
+ <button id="addSubCategory" label="Add" />
+ <button id="deleteSubCategory" label="Delete" />
+ </hbox>
+ </vbox>
- </hbox>
+ <space />
+
+ <groupbox>
+ <caption id="subCategoryCaption" label="@{composer.selectedSubCategory.name, save-when='saveSubCategory.onClick'}" />
+ <vbox>
+ <label value="Order"/>
+ <intbox id="subCategoryOrder" value="@{composer.selectedSubCategory.order, save-when='saveSubCategory.onClick'}" />
+
+ <label value="Name"/>
+ <textbox id="subCategoryName" value="@{composer.selectedSubCategory.name, save-when='saveSubCategory.onClick'}" />
- <hbox>
-
- <vbox>
- <listbox autopaging="true" mold="paging" rows="10" width="200px" model="@{composer.subCategoryModel}"
- itemRenderer="@{composer.subCategoryRenderer}">
- <listhead>
- <listheader label="Name" />
- </listhead>
- </listbox>
- <button id="addSubCategory" label="Add sub category" />
- </vbox>
-
- <groupbox>
- <caption id="subCategoryCaption" label="@{composer.selectedSubCategory.name, save-when='saveSubCategory.onClick'}" />
- <vbox>
-
- <label value="Order"/>
- <intbox id="subCategoryOrder" value="@{composer.selectedSubCategory.order, save-when='saveSubCategory.onClick'}" />
-
- <label value="Name"/>
- <textbox id="subCategoryName" value="@{composer.selectedSubCategory.name, save-when='saveSubCategory.onClick'}" />
-
- <label value="Account number" />
- <textbox id="subCategoryAccountNumber" value="@{composer.selectedSubCategory.accountNumber, save-when='saveSubCategory.onClick'}" />
-
- <label value="TVA" />
- <textbox id="subCategoryTVA" value="@{composer.selectedSubCategory.TVA, save-when='saveSubCategory.onClick'}" />
-
- </vbox>
- </groupbox>
- <button id="saveSubCategory" label="Save" />
-
- </hbox>
+ <label value="Account number" />
+ <textbox id="subCategoryAccountNumber" value="@{composer.selectedSubCategory.accountNumber, save-when='saveSubCategory.onClick'}" />
+
+ <label value="TVA" />
+ <textbox id="subCategoryTVA" value="@{composer.selectedSubCategory.TVA, save-when='saveSubCategory.onClick'}" />
+ <toolbarbutton id="saveSubCategory" label="Save" />
+ </vbox>
+ </groupbox>
+ </hbox>
+ </groupbox>
</vbox>
<button id="save" label="Save and quit" />
Added: trunk/billy-ui-zk/src/main/webapp/categoryPage.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/categoryPage.zul (rev 0)
+++ trunk/billy-ui-zk/src/main/webapp/categoryPage.zul 2010-08-13 12:14:25 UTC (rev 49)
@@ -0,0 +1,14 @@
+<?page id="Category" title="Category" cacheable="false" language="xul/html" zscriptLanguage="Java"?>
+<?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?>
+<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="./category"?>
+
+<window id="category" apply="org.chorem.billy.ui.CategoryController">
+ Categories: <toolbarbutton id="newCategory" label="Add new category" />
+ <listbox id="categoryListbox" rows="20" model="@{category$composer.categoryModel}" itemRenderer="@{category$composer.categoryRenderer}">
+ <listhead>
+ <listheader label="Name" />
+ <listheader label="Type" />
+ </listhead>
+ </listbox>
+ <paging id="categoryPaging" />
+</window>
\ No newline at end of file
Modified: trunk/billy-ui-zk/src/main/webapp/invoiceFormPage.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/invoiceFormPage.zul 2010-08-12 16:37:31 UTC (rev 48)
+++ trunk/billy-ui-zk/src/main/webapp/invoiceFormPage.zul 2010-08-13 12:14:25 UTC (rev 49)
@@ -11,11 +11,11 @@
<vbox>
<label value="Payment date" />
- <datebox format="yyyy/MM/dd" value="@{composer.invoice.payment, save-when='saveInvoice.onClick'}" />
+ <datebox format="dd/MM/yyyy" value="@{composer.invoice.payment, save-when='saveInvoice.onClick'}" />
<label value="Expected date" />
- <datebox format="yyyy/MM/dd" value="@{composer.invoice.expected, save-when='saveInvoice.onClick'}" />
+ <datebox format="dd/MM/yyyy" value="@{composer.invoice.expected, save-when='saveInvoice.onClick'}" />
<label value="Posted date" />
- <datebox format="yyyy/MM/dd" value="@{composer.invoice.posted, save-when='saveInvoice.onClick'}" />
+ <datebox format="dd/MM/yyyy" value="@{composer.invoice.posted, save-when='saveInvoice.onClick'}" />
<categoryMacro id="categoryMacro" />
Modified: trunk/billy-ui-zk/src/main/webapp/invoicePage.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/invoicePage.zul 2010-08-12 16:37:31 UTC (rev 48)
+++ trunk/billy-ui-zk/src/main/webapp/invoicePage.zul 2010-08-13 12:14:25 UTC (rev 49)
@@ -1,13 +1,9 @@
<?page id="Invoice" title="Invoice" cacheable="false" language="xul/html" zscriptLanguage="Java"?>
<?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?>
-<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="invoice"?>
+<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="./invoice"?>
-<window id="invoice" title="Invoice" border="normal" apply="org.chorem.billy.ui.InvoiceController">
+<window id="invoice" apply="org.chorem.billy.ui.InvoiceController">
<vbox>
- <toolbarbutton id="newInvoice" label="Add new invoice" />
- </vbox>
- <separator bar="true" />
- <vbox>
<separator/>
<dateSearchMacro id="dateSearchMacro" />
<separator />
@@ -16,20 +12,19 @@
<projectSearchMacro id="projectSearchMacro" />
<separator />
</vbox>
- <vbox>
- <listbox id="invoiceListbox" rows="20" model="@{invoice$composer.invoiceModel}" itemRenderer="@{invoice$composer.invoiceRenderer}">
- <listhead>
- <listheader label="Category"/>
- <listheader label="Client"/>
- <listheader label="Project"/>
- <listheader label="Invoice number"/>
- <listheader label="HT price"/>
- <listheader label="TTC price"/>
- <listheader label="Posted date"/>
- <listheader label="Expected date"/>
- <listheader label="Payment date"/>
- </listhead>
- </listbox>
- <paging id="invoicePaging"/>
- </vbox>
+ Invoices: <toolbarbutton id="newInvoice" label="Add new invoice" />
+ <listbox id="invoiceListbox" rows="20" model="@{invoice$composer.invoiceModel}" itemRenderer="@{invoice$composer.invoiceRenderer}">
+ <listhead>
+ <listheader label="Category"/>
+ <listheader label="Client"/>
+ <listheader label="Project"/>
+ <listheader label="Invoice number"/>
+ <listheader label="HT price"/>
+ <listheader label="TTC price"/>
+ <listheader label="Posted date"/>
+ <listheader label="Expected date"/>
+ <listheader label="Payment date"/>
+ </listhead>
+ </listbox>
+ <paging id="invoicePaging"/>
</window>
\ No newline at end of file
Modified: trunk/billy-ui-zk/src/main/webapp/macros/dateSearchMacro.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/macros/dateSearchMacro.zul 2010-08-12 16:37:31 UTC (rev 48)
+++ trunk/billy-ui-zk/src/main/webapp/macros/dateSearchMacro.zul 2010-08-13 12:14:25 UTC (rev 49)
@@ -1,8 +1,8 @@
<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<zk>
<hbox>
- Start date : <datebox id="startDate" />
- End date : <datebox id="endDate" />
+ Start date : <datebox format="dd/MM/yyyy" id="startDate" />
+ End date : <datebox format="dd/MM/yyyy" id="endDate" />
</hbox>
<separator />
<hbox>
1
0
r48 - in trunk: . billy-ui-zk billy-ui-zk/src/main/java/org/chorem/billy/ui billy-ui-zk/src/main/webapp billy-ui-zk/src/main/webapp/WEB-INF billy-ui-zk/src/main/webapp/macros
by bbrossaud@users.chorem.org 12 Aug '10
by bbrossaud@users.chorem.org 12 Aug '10
12 Aug '10
Author: bbrossaud
Date: 2010-08-12 18:37:31 +0200 (Thu, 12 Aug 2010)
New Revision: 48
Url: http://chorem.org/repositories/revision/billy/48
Log:
all is well but can create the criteria
Added:
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategorySearchMacro.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanySearchMacro.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/DateSearchMacro.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceModel.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectSearchMacro.java
trunk/billy-ui-zk/src/main/webapp/macros/categorySearchMacro.zul
trunk/billy-ui-zk/src/main/webapp/macros/companySearchMacro.zul
trunk/billy-ui-zk/src/main/webapp/macros/dateSearchMacro.zul
trunk/billy-ui-zk/src/main/webapp/macros/projectSearchMacro.zul
Modified:
trunk/
trunk/billy-ui-zk/
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryBandboxMacro.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryModel.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyBandboxMacro.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyModel.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceFormController.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectBandboxMacro.java
trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectModel.java
trunk/billy-ui-zk/src/main/webapp/WEB-INF/lang-addon.xml
trunk/billy-ui-zk/src/main/webapp/invoiceFormPage.zul
trunk/billy-ui-zk/src/main/webapp/invoicePage.zul
trunk/billy-ui-zk/src/main/webapp/macros/companyBandboxMacro.zul
trunk/billy-ui-zk/src/main/webapp/macros/projectBandboxMacro.zul
trunk/pom.xml
Property changes on: trunk
___________________________________________________________________
Modified: svn:ignore
- target
*.ipr
*.iws
*.iml
+ target
*.ipr
*.iws
*.iml
.project
.settings
Property changes on: trunk/billy-ui-zk
___________________________________________________________________
Added: svn:ignore
+ .classpath
.project
target
.settings
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryBandboxMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryBandboxMacro.java 2010-08-11 15:58:53 UTC (rev 47)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryBandboxMacro.java 2010-08-12 16:37:31 UTC (rev 48)
@@ -29,7 +29,7 @@
public class CategoryBandboxMacro extends HtmlMacroComponent {
- private final int pageSize = 2;
+ protected final int pageSize = 2;
protected WikittyProxy proxy = ChoremDataProxy.getInstance();
protected CategoryModel categoryModel = new CategoryModel(pageSize);
@@ -119,12 +119,6 @@
item.setValue(data);
final SubCategory subCategory = (SubCategory) data;
final String name = subCategory.getName();
- String id = subCategory.getWikittyId();
- if (id != null && id.equals(subCategoryId)) {
- Bandbox categoryBandbox = (Bandbox) getFellow("categoryBandbox");
- categoryBandbox.setValue(name);
- categoryBandbox.close();
- }
Listcell cell = new Listcell(name);
item.appendChild(cell);
item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() {
@@ -164,6 +158,17 @@
*/
public void setSubCategoryId(String id) {
subCategoryId = id;
+ if (id != null) {
+ SubCategory subCategory = proxy.restore(SubCategory.class, id);
+ if (subCategory != null) {
+ Bandbox categoryBandbox = (Bandbox) getFellow("categoryBandbox");
+ String name = subCategory.getName();
+ if (name != null) {
+ categoryBandbox.setValue(name);
+ categoryBandbox.close();
+ }
+ }
+ }
}
/*
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryModel.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryModel.java 2010-08-11 15:58:53 UTC (rev 47)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategoryModel.java 2010-08-12 16:37:31 UTC (rev 48)
@@ -26,8 +26,8 @@
@Override
public Object getElementAt(int index) {
- Category Category = categories.get(index);
- return Category;
+ Category category = categories.get(index);
+ return category;
}
@Override
@@ -37,7 +37,7 @@
@Override
public int indexOf(Object obj) {
- int index = 0;
+ int index = -1;
String id = ((Category) obj).getWikittyId();
for (Category data : categories) {
String dataId = data.getWikittyId();
@@ -76,8 +76,9 @@
}
public void reloadContent(int rowIndex) {
- Category Category = categories.get(rowIndex);
- Category = proxy.restore(Category.class, Category.getWikittyId());
+ Category category = categories.get(rowIndex);
+ category = proxy.restore(Category.class, category.getWikittyId());
+ categories.set(rowIndex, category);
fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex);
}
@@ -102,8 +103,8 @@
int first = activePage * pageSize;
int end = first + (pageSize - 1);
Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end);
- List<Category> Categorys = proxy.findAllByCriteria(Category.class, criteria).getAll();
- this.categories = new ArrayList<Category>(Categorys);
+ List<Category> categories = proxy.findAllByCriteria(Category.class, criteria).getAll();
+ this.categories = new ArrayList<Category>(categories);
}
fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1);
}
Added: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategorySearchMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategorySearchMacro.java (rev 0)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CategorySearchMacro.java 2010-08-12 16:37:31 UTC (rev 48)
@@ -0,0 +1,164 @@
+package org.chorem.billy.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.chorem.data.bonzoms.Category;
+import org.chorem.data.bonzoms.SubCategory;
+import org.nuiton.wikitty.Criteria;
+import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.search.Element;
+import org.nuiton.wikitty.search.Search;
+import org.zkoss.zk.ui.HtmlMacroComponent;
+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.Bandbox;
+import org.zkoss.zul.Checkbox;
+import org.zkoss.zul.Grid;
+import org.zkoss.zul.Listbox;
+import org.zkoss.zul.Listcell;
+import org.zkoss.zul.Listhead;
+import org.zkoss.zul.Listheader;
+import org.zkoss.zul.Listitem;
+import org.zkoss.zul.ListitemRenderer;
+import org.zkoss.zul.Paging;
+import org.zkoss.zul.Row;
+import org.zkoss.zul.RowRenderer;
+import org.zkoss.zul.event.PagingEvent;
+
+public class CategorySearchMacro extends HtmlMacroComponent {
+
+ protected final int pageSize = 2;
+
+ protected WikittyProxy proxy = ChoremDataProxy.getInstance();
+ protected CategoryModel categoryModel = new CategoryModel(pageSize);
+ protected List<String> subCategories = new ArrayList<String>();
+
+ @Override
+ public void afterCompose() {
+ super.afterCompose();
+ initPaging();
+ initBandbox();
+ initGrid();
+ }
+
+ protected void initPaging() {
+ Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Category.EXT_CATEGORY).criteria();
+ categoryModel.setCriteria(criteria);
+ int totalSize = categoryModel.getTotalSize();
+ Paging categoryPaging = (Paging) getFellow("categoryPaging");
+ categoryPaging.setTotalSize(totalSize);
+ categoryPaging.setPageSize(pageSize);
+ categoryPaging.addEventListener("onPaging", new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ PagingEvent pagingEvent = (PagingEvent) event;
+ int activePage = pagingEvent.getActivePage();
+ categoryModel.setActivePage(activePage);
+ }
+ });
+ }
+
+ protected void initBandbox() {
+ final Bandbox categoryBandbox = (Bandbox) getFellow("categoryBandbox");
+ categoryBandbox.addEventListener(Events.ON_OK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ String search = categoryBandbox.getValue();
+ Search query = Search.query().eq(Element.ELT_EXTENSION, Category.EXT_CATEGORY);
+ if (search != null && !search.isEmpty()) {
+ query = query.keyword(search);
+ }
+ Criteria criteria = query.criteria();
+ categoryModel.setCriteria(criteria);
+ int totalSize = categoryModel.getTotalSize();
+ Paging categoryPaging = (Paging) getFellow("categoryPaging");
+ categoryPaging.setTotalSize(totalSize);
+ categoryPaging.setActivePage(0);
+ categoryBandbox.open();
+ }
+ });
+ }
+
+ protected void initGrid() {
+ Grid categoryGrid = (Grid) getFellow("categoryGrid");
+ categoryGrid.setModel(categoryModel);
+ RowRenderer renderer = getCategoryRenderer();
+ categoryGrid.setRowRenderer(renderer);
+ }
+
+ /*
+ * Renderer
+ */
+ protected void setSubCategoryHeader(Listbox listbox, Category category) {
+ if (listbox != null) {
+ Listhead head = new Listhead();
+ listbox.appendChild(head);
+ String name = category.getName();
+ if (name == null) {
+ name = "";
+ }
+ Listheader header = new Listheader(name);
+ head.appendChild(header);
+ }
+ }
+
+ protected void createSubCategoryListbox(Listbox listbox, Set<String> subCategoryIds) {
+ if (subCategoryIds != null && !subCategoryIds.isEmpty()) {
+ List<SubCategory> subCategoriesList = proxy.restore(SubCategory.class, new ArrayList<String>(subCategoryIds));
+ SubCategoryModel subCategoryModel = new SubCategoryModel();
+ subCategoryModel.setSubCategories(subCategoriesList);
+ listbox.setModel(subCategoryModel);
+ listbox.setItemRenderer(new ListitemRenderer() {
+
+ @Override
+ public void render(Listitem item, Object data) throws Exception {
+ item.setValue(data);
+ final SubCategory subCategory = (SubCategory) data;
+ final String name = subCategory.getName();
+ final Checkbox checkbox = new Checkbox(name);
+ Listcell cell = new Listcell();
+ cell.appendChild(checkbox);
+ item.appendChild(cell);
+ checkbox.addEventListener(Events.ON_CHECK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ String subCategoryId = subCategory.getWikittyId();
+ if (checkbox.isChecked()) {
+ if (!subCategories.contains(subCategoryId)) {
+ subCategories.add(subCategoryId);
+ }
+ } else {
+ if (subCategories.contains(subCategoryId)) {
+ subCategories.remove(subCategoryId);
+ }
+ }
+ }
+ });
+ }
+ });
+ }
+ }
+
+ public RowRenderer getCategoryRenderer() {
+ return new RowRenderer() {
+
+ @Override
+ public void render(Row row, Object data) throws Exception {
+ row.setValue(data);
+ final Category category = (Category) data;
+ Set<String> subCategoryIds = category.getSubCategory();
+ Listbox listbox = new Listbox();
+ setSubCategoryHeader(listbox, category);
+ createSubCategoryListbox(listbox, subCategoryIds);
+ row.appendChild(listbox);
+
+ }
+ };
+ }
+}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyBandboxMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyBandboxMacro.java 2010-08-11 15:58:53 UTC (rev 47)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyBandboxMacro.java 2010-08-12 16:37:31 UTC (rev 48)
@@ -91,13 +91,7 @@
public void render(Listitem item, Object data) throws Exception {
item.setValue(data);
final Company company = (Company) data;
- final Bandbox companyBandbox = (Bandbox) getFellow("companyBandbox");
- final String id = company.getWikittyId();
final String name = company.getName();
- if (companyId != null && companyId.equals(id)) {
- companyBandbox.setValue(name);
- companyBandbox.close();
- }
Listcell cell1 = new Listcell(name);
Listcell cell2 = new Listcell(company.getType());
item.appendChild(cell1);
@@ -106,7 +100,8 @@
@Override
public void onEvent(Event event) throws Exception {
- companyId = id;
+ companyId = company.getWikittyId();
+ Bandbox companyBandbox = (Bandbox) getFellow("companyBandbox");
companyBandbox.setValue(name);
companyBandbox.close();
}
@@ -120,6 +115,17 @@
*/
public void setCompanyId(String id) {
companyId = id;
+ if (id != null) {
+ Company company = proxy.restore(Company.class, id);
+ if (company != null) {
+ Bandbox companyBandbox = (Bandbox) getFellow("companyBandbox");
+ String name = company.getName();
+ if (name != null) {
+ companyBandbox.setValue(name);
+ companyBandbox.close();
+ }
+ }
+ }
}
/*
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyModel.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyModel.java 2010-08-11 15:58:53 UTC (rev 47)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanyModel.java 2010-08-12 16:37:31 UTC (rev 48)
@@ -39,7 +39,7 @@
@Override
public int indexOf(Object obj) {
- int index = 0;
+ int index = -1;
String id = ((Project) obj).getWikittyId();
for (Company data : companies) {
String dataId = data.getWikittyId();
@@ -80,6 +80,7 @@
public void reloadContent(int rowIndex) {
Company company = companies.get(rowIndex);
company = proxy.restore(Company.class, company.getWikittyId());
+ companies.set(rowIndex, company);
fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex);
}
Added: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanySearchMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanySearchMacro.java (rev 0)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/CompanySearchMacro.java 2010-08-12 16:37:31 UTC (rev 48)
@@ -0,0 +1,122 @@
+package org.chorem.billy.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.chorem.data.bonzoms.Company;
+import org.nuiton.wikitty.Criteria;
+import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.search.Element;
+import org.nuiton.wikitty.search.Search;
+import org.zkoss.zk.ui.HtmlMacroComponent;
+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.Bandbox;
+import org.zkoss.zul.Checkbox;
+import org.zkoss.zul.Listbox;
+import org.zkoss.zul.Listcell;
+import org.zkoss.zul.Listitem;
+import org.zkoss.zul.ListitemRenderer;
+import org.zkoss.zul.Paging;
+import org.zkoss.zul.event.PagingEvent;
+
+public class CompanySearchMacro extends HtmlMacroComponent {
+
+ private final int pageSize = 5;
+
+ protected WikittyProxy proxy = ChoremDataProxy.getInstance();
+ protected CompanyModel companyModel = new CompanyModel(pageSize);
+ protected List<String> companies = new ArrayList<String>();
+
+ @Override
+ public void afterCompose() {
+ super.afterCompose();
+ initPaging();
+ initBandbox();
+ initListbox();
+ }
+
+ protected void initPaging() {
+ Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Company.EXT_COMPANY).criteria();
+ companyModel.setCriteria(criteria);
+
+ int totalSize = companyModel.getTotalSize();
+ Paging companyPaging = (Paging) getFellow("companyPaging");
+ companyPaging.setTotalSize(totalSize);
+ companyPaging.setPageSize(pageSize);
+ companyPaging.addEventListener("onPaging", new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ PagingEvent pagingEvent = (PagingEvent) event;
+ int activePage = pagingEvent.getActivePage();
+ companyModel.setActivePage(activePage);
+ }
+ });
+ }
+
+ protected void initBandbox() {
+ final Bandbox companyBandbox = (Bandbox) getFellow("companyBandbox");
+ companyBandbox.addEventListener(Events.ON_OK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ String search = companyBandbox.getValue();
+ Search query = Search.query().eq(Element.ELT_EXTENSION, Company.EXT_COMPANY);
+ if (search != null && !search.isEmpty()) {
+ query = query.keyword(search);
+ }
+ Criteria criteria = query.criteria();
+ companyModel.setCriteria(criteria);
+ int totalSize = companyModel.getTotalSize();
+ Paging companyPaging = (Paging) getFellow("projectPaging");
+ companyPaging.setTotalSize(totalSize);
+ companyPaging.setActivePage(0);
+ companyBandbox.open();
+ }
+ });
+ }
+
+ protected void initListbox() {
+ Listbox companyListbox = (Listbox) getFellow("companyListbox");
+ companyListbox.setModel(companyModel);
+ ListitemRenderer renderer = getCompanyRenderer();
+ companyListbox.setItemRenderer(renderer);
+ }
+
+ /*
+ * Renderer
+ */
+ public ListitemRenderer getCompanyRenderer() {
+ return new ListitemRenderer() {
+
+ @Override
+ public void render(Listitem item, Object data) throws Exception {
+ item.setValue(data);
+ final Company company = (Company) data;
+ final String name = company.getName();
+ final Checkbox checkbox = new Checkbox(name);
+ Listcell cell = new Listcell();
+ cell.appendChild(checkbox);
+ item.appendChild(cell);
+ checkbox.addEventListener(Events.ON_CHECK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ String companyId = company.getWikittyId();
+ if (checkbox.isChecked()) {
+ if (!companies.contains(companyId)) {
+ companies.add(companyId);
+ }
+ } else {
+ if (companies.contains(companyId)) {
+ companies.remove(companyId);
+ }
+ }
+ }
+ });
+ }
+ };
+ }
+}
Added: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/DateSearchMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/DateSearchMacro.java (rev 0)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/DateSearchMacro.java 2010-08-12 16:37:31 UTC (rev 48)
@@ -0,0 +1,67 @@
+package org.chorem.billy.ui;
+
+import org.zkoss.zk.ui.HtmlMacroComponent;
+
+public class DateSearchMacro extends HtmlMacroComponent {
+
+ @Override
+ public void afterCompose() {
+ super.afterCompose();
+ }
+
+// protected boolean checkPosted(Date start, Date end, Search search) throws ParseException {
+// Checkbox check = (Checkbox) getFellow("postedDate");
+// if (!check.isChecked()) {
+// return false;
+// }
+// if (start != null) {
+// String formatDate = WikittyUtil.formatDate(start);
+// search = search.ge(Invoice.FQ_FIELD_INVOICE_POSTED, formatDate);
+// }
+// if (end != null) {
+// String formatDate = WikittyUtil.formatDate(end);
+// search = search.le(Invoice.FQ_FIELD_INVOICE_POSTED, formatDate);
+// }
+// search = search.or();
+// return true;
+// }
+//
+// protected boolean expectedPosted(Date start, Date end, Search search, boolean bool) throws ParseException {
+// Checkbox check = (Checkbox) getFellow("expectedDate");
+// if (!check.isChecked()) {
+// return bool;
+// }
+// if (bool == false) {
+// search = search.or();
+// }
+// if (start != null) {
+// bool = true;
+// String formatDate = WikittyUtil.formatDate(start);
+// search = search.ge(Invoice.FQ_FIELD_INVOICE_POSTED, formatDate);
+// }
+// if (end != null) {
+// String formatDate = WikittyUtil.formatDate(end);
+// search = search.le(Invoice.FQ_FIELD_INVOICE_POSTED, formatDate);
+// }
+// return bool;
+// }
+//
+//
+// public Search getSearch(Search src) {
+// Search search = src;
+// if (search == null) {
+// search = Search.query();
+// }
+// Datebox startDate = (Datebox) getFellow("startDate");
+// Date start = startDate.getValue();
+//
+// Datebox endDate = (Datebox) getFellow("endDate");
+// Date end = endDate.getValue();
+//
+// boolean bool = checkPosted(start, end, search);
+// bool = checkExpected(start, end, search, bool);
+// checkPayment(start, end, search, bool);
+//
+// return search;
+// }
+}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java 2010-08-11 15:58:53 UTC (rev 47)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceController.java 2010-08-12 16:37:31 UTC (rev 48)
@@ -1,23 +1,220 @@
package org.chorem.billy.ui;
-import java.util.ArrayList;
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
import org.chorem.billy.ui.ChoremDataProxy;
+import org.chorem.data.bonzoms.Company;
+import org.chorem.data.bonzoms.Invoice;
+import org.chorem.data.bonzoms.Category;
import org.chorem.data.bonzoms.Project;
-import org.chorem.data.bonzoms.ProjectImpl;
+import org.nuiton.wikitty.Criteria;
import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.search.Element;
+import org.nuiton.wikitty.search.Search;
+import org.zkoss.zk.ui.Component;
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.event.Events;
import org.zkoss.zk.ui.util.GenericForwardComposer;
+import org.zkoss.zul.Listcell;
+import org.zkoss.zul.Listitem;
+import org.zkoss.zul.ListitemRenderer;
+import org.zkoss.zul.Paging;
+import org.zkoss.zul.Window;
+import org.zkoss.zul.event.PagingEvent;
public class InvoiceController extends GenericForwardComposer{
+ protected final int pageSize = 20;
+
protected WikittyProxy proxy = ChoremDataProxy.getInstance();
+ protected InvoiceModel invoiceModel = new InvoiceModel(pageSize);
+ protected Paging invoicePaging;
+
+ @Override
+ public void doAfterCompose(Component comp) throws Exception {
+ super.doAfterCompose(comp);
+ initInvoiceModel();
+ initPaging();
+ }
+
+ protected void initInvoiceModel() {
+ Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Invoice.EXT_INVOICE).criteria();
+ invoiceModel.setCriteria(criteria);
+ }
+
+ protected void initPaging() {
+ invoicePaging.setPageSize(pageSize);
+ int totalSize = invoiceModel.getTotalSize();
+ invoicePaging.setTotalSize(totalSize);
+ }
+
+ protected Listcell getCategoryCell(Invoice invoice) {
+ Listcell cell = new Listcell();
+ String id = invoice.getSubCategory();
+ if (id != null && !id.isEmpty()) {
+ Criteria criteria = Search.query().contains(Category.FQ_FIELD_CATEGORY_SUBCATEGORY, id).criteria();
+ Category category = proxy.findByCriteria(Category.class, criteria);
+ if (category != null) {
+ String name = category.getName();
+ if (name == null) {
+ name = "";
+ }
+ cell.setLabel(name);
+ }
+ }
+ return cell;
+ }
+
+ protected Listcell getCompanyCell(Invoice invoice) {
+ Listcell cell = new Listcell();
+ String id = invoice.getCompany();
+ if (id != null && !id.isEmpty()) {
+ Company company = proxy.restore(Company.class, id);
+ if (company != null) {
+ String name = company.getName();
+ if (name == null) {
+ name = "";
+ }
+ cell.setLabel(name);
+ }
+ }
+ return cell;
+ }
+
+ protected Listcell getProjectCell(Invoice invoice) {
+ Listcell cell = new Listcell();
+ String id = invoice.getProject();
+ if (id != null && !id.isEmpty()) {
+ Project project = proxy.restore(Project.class, id);
+ if (project != null) {
+ String name = project.getName();
+ if (name == null) {
+ name = "";
+ }
+ cell.setLabel(name);
+ }
+ }
+ return cell;
+ }
+
+ protected Listcell getInvoiceNumberCell(Invoice invoice) {
+ Listcell cell = new Listcell();
+ String number = invoice.getNumber();
+ if (number == null) {
+ number = "";
+ }
+ cell.setLabel(number);
+ return cell;
+ }
+
+ protected Listcell getPriceCell(Double price) {
+ Listcell cell = new Listcell();
+ String str = "-";
+ if (price != null) {
+ str = String.valueOf(price);
+ }
+ cell.setLabel(str);
+ return cell;
+ }
+
+ protected Listcell getDateCell(Date date) {
+ Listcell cell = new Listcell();
+ String str = "-";
+ if (date != null) {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
+ str = sdf.format(date);
+ }
+ cell.setLabel(str);
+ return cell;
+ }
+
+ protected void createInvoiceFormWindow(String id) {
+ Map<String, Object> map = new HashMap<String, Object>();
+ if (id != null) {
+ map.put("invoiceId", id);
+ }
+ Window win = (Window) Executions.createComponents("invoiceFormPage.zul", null, map);
+ win.addEventListener(InvoiceFormController.EVENT_ON_SAVE_INVOICE, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ String id = (String) event.getData();
+ Invoice invoice = proxy.restore(Invoice.class, id);
+ int rowIndex = invoiceModel.indexOf(invoice);
+ if (rowIndex != -1) {
+ invoiceModel.reloadContent(rowIndex);
+ } else {
+ invoiceModel.addData(invoice);
+ }
+ int totalSize = invoiceModel.getTotalSize();
+ invoicePaging.setTotalSize(totalSize);
+ }
+ });
+ }
+
/*
+ * Renderers
+ */
+ public ListitemRenderer getInvoiceRenderer() {
+ return new ListitemRenderer() {
+
+ @Override
+ public void render(Listitem item, Object data) throws Exception {
+ item.setValue(data);
+ final Invoice invoice = (Invoice) data;
+ Listcell cell1 = getCategoryCell(invoice);
+ item.appendChild(cell1);
+ Listcell cell2 = getCompanyCell(invoice);
+ item.appendChild(cell2);
+ Listcell cell3 = getProjectCell(invoice);
+ item.appendChild(cell3);
+ Listcell cell4 = getInvoiceNumberCell(invoice);
+ item.appendChild(cell4);
+ Listcell cell5 = getPriceCell(invoice.getHTPrice());
+ item.appendChild(cell5);
+ Listcell cell6 = getPriceCell(invoice.getTTCPrice());
+ item.appendChild(cell6);
+ Listcell cell7 = getDateCell(invoice.getPosted());
+ item.appendChild(cell7);
+ Listcell cell8 = getDateCell(invoice.getExpected());
+ item.appendChild(cell8);
+ Listcell cell9 = getDateCell(invoice.getPayment());
+ item.appendChild(cell9);
+ item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ createInvoiceFormWindow(invoice.getWikittyId());
+ }
+ });
+ }
+ };
+ }
+
+
+ /*
* Events
*/
public void onClick$newInvoice() {
- Executions.createComponents("invoiceFormPage.zul", null, null);
+ createInvoiceFormWindow(null);
}
+
+ public void onPaging$invoicePaging(Event event) {
+ PagingEvent pagingEvent = (PagingEvent) event;
+ int activePage = pagingEvent.getActivePage();
+ invoiceModel.setActivePage(activePage);
+ }
+
+ /*
+ * Getters
+ */
+ public InvoiceModel getInvoiceModel() {
+ return invoiceModel;
+ }
}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceFormController.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceFormController.java 2010-08-11 15:58:53 UTC (rev 47)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceFormController.java 2010-08-12 16:37:31 UTC (rev 48)
@@ -5,6 +5,7 @@
import org.nuiton.wikitty.WikittyProxy;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
+import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zkplus.databind.AnnotateDataBinder;
import org.zkoss.zkplus.databind.DataBinder;
@@ -64,6 +65,21 @@
}
/*
+ * Events
+ */
+ public void onClick$saveInvoice() {
+ String subCategory = categoryMacro.getSubCategoryId();
+ invoice.setSubCategory(subCategory);
+ String project = projectMacro.getProjectId();
+ invoice.setProject(project);
+ String company = companyMacro.getCompanyId();
+ invoice.setCompany(company);
+ invoice = proxy.store(invoice);
+ Events.postEvent(EVENT_ON_SAVE_INVOICE, this.self, invoice.getWikittyId());
+ self.detach();
+ }
+
+ /*
* Getters
*/
public Invoice getInvoice() {
Added: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceModel.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceModel.java (rev 0)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/InvoiceModel.java 2010-08-12 16:37:31 UTC (rev 48)
@@ -0,0 +1,116 @@
+package org.chorem.billy.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.chorem.data.bonzoms.Invoice;
+import org.nuiton.wikitty.Criteria;
+import org.nuiton.wikitty.PagedResult;
+import org.nuiton.wikitty.WikittyProxy;
+import org.zkoss.zkplus.databind.BindingListModel;
+import org.zkoss.zul.AbstractListModel;
+import org.zkoss.zul.event.ListDataEvent;
+
+public class InvoiceModel extends AbstractListModel implements BindingListModel {
+
+ protected WikittyProxy proxy = ChoremDataProxy.getInstance();
+ protected Criteria criteria = null;
+ protected int activePage = 0;
+ protected int pageSize = 1;
+ protected List<Invoice> invoices = new ArrayList<Invoice>();
+
+ public InvoiceModel(int pageSize) {
+ this.pageSize = pageSize;
+ createList();
+ }
+
+ @Override
+ public Object getElementAt(int index) {
+ Invoice invoice = invoices.get(index);
+ return invoice;
+ }
+
+ @Override
+ public int getSize() {
+ return invoices.size();
+ }
+
+ @Override
+ public int indexOf(Object obj) {
+ int index = -1;
+ String id = ((Invoice) obj).getWikittyId();
+ for (Invoice data : invoices) {
+ String dataId = data.getWikittyId();
+ if (id.equals(dataId)) {
+ index = invoices.indexOf(data);
+ break;
+ }
+ }
+ return index;
+ }
+
+ public int getTotalSize() {
+ if (criteria == null) {
+ return 0;
+ }
+ Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0);
+ PagedResult<Invoice> result = proxy.findAllByCriteria(Invoice.class, criteria);
+ return result.getNumFound();
+ }
+
+ public void addData(Invoice newData) {
+ int listSize = invoices.size();
+ if (listSize < (pageSize)) {
+ invoices.add(newData);
+ }
+ int size = getSize();
+ fireEvent(ListDataEvent.INTERVAL_ADDED, size - 1, size - 1);
+ }
+
+ public void removeData(Invoice data) {
+ int interval = invoices.indexOf(data);
+ if (interval != -1) {
+ invoices.remove(interval);
+ fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval);
+ }
+ }
+
+ public void reloadContent(int rowIndex) {
+ Invoice invoice = invoices.get(rowIndex);
+ invoice = proxy.restore(Invoice.class, invoice.getWikittyId());
+ invoices.set(rowIndex, invoice);
+ fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex);
+ }
+
+ public void reload() {
+ fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1);
+ }
+
+ public Criteria getCriteria() {
+ return criteria;
+ }
+
+ public void setCriteria(Criteria criteria) {
+ if (criteria != null) {
+ this.criteria = criteria;
+ activePage = 0;
+ createList();
+ }
+ }
+
+ protected void createList() {
+ if (criteria != null) {
+ int first = activePage * pageSize;
+ int end = first + (pageSize - 1);
+ Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end);
+ List<Invoice> invoices = proxy.findAllByCriteria(Invoice.class, criteria).getAll();
+ this.invoices = new ArrayList<Invoice>(invoices);
+ }
+ fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1);
+ }
+
+ public void setActivePage(int activePage) {
+ this.activePage = activePage;
+ createList();
+ }
+}
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectBandboxMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectBandboxMacro.java 2010-08-11 15:58:53 UTC (rev 47)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectBandboxMacro.java 2010-08-12 16:37:31 UTC (rev 48)
@@ -90,21 +90,16 @@
@Override
public void render(Listitem item, Object data) throws Exception {
item.setValue(data);
- Project project = (Project) data;
- final Bandbox projectBandbox = (Bandbox) getFellow("projectBandbox");
- final String id = project.getWikittyId();
+ final Project project = (Project) data;
final String name = project.getName();
- if (projectId != null && projectId.equals(id)) {
- projectBandbox.setValue(name);
- projectBandbox.close();
- }
- Listcell cell = new Listcell(project.getName());
+ Listcell cell = new Listcell(name);
item.appendChild(cell);
item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
- projectId = id;
+ projectId = project.getWikittyId();
+ Bandbox projectBandbox = (Bandbox) getFellow("projectBandbox");
projectBandbox.setValue(name);
projectBandbox.close();
}
@@ -118,6 +113,17 @@
*/
public void setProjectId(String id) {
projectId = id;
+ if (id != null) {
+ Project project = proxy.restore(Project.class, id);
+ if (project != null) {
+ Bandbox projectBandbox = (Bandbox) getFellow("projectBandbox");
+ String name = project.getName();
+ if (name != null) {
+ projectBandbox.setValue(name);
+ projectBandbox.close();
+ }
+ }
+ }
}
/*
Modified: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectModel.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectModel.java 2010-08-11 15:58:53 UTC (rev 47)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectModel.java 2010-08-12 16:37:31 UTC (rev 48)
@@ -38,7 +38,7 @@
@Override
public int indexOf(Object obj) {
- int index = 0;
+ int index = -1;
String id = ((Project) obj).getWikittyId();
for (Project data : projects) {
String dataId = data.getWikittyId();
Added: trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectSearchMacro.java
===================================================================
--- trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectSearchMacro.java (rev 0)
+++ trunk/billy-ui-zk/src/main/java/org/chorem/billy/ui/ProjectSearchMacro.java 2010-08-12 16:37:31 UTC (rev 48)
@@ -0,0 +1,122 @@
+package org.chorem.billy.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.chorem.data.bonzoms.Project;
+import org.nuiton.wikitty.Criteria;
+import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.search.Element;
+import org.nuiton.wikitty.search.Search;
+import org.zkoss.zk.ui.HtmlMacroComponent;
+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.Bandbox;
+import org.zkoss.zul.Checkbox;
+import org.zkoss.zul.Listbox;
+import org.zkoss.zul.Listcell;
+import org.zkoss.zul.Listitem;
+import org.zkoss.zul.ListitemRenderer;
+import org.zkoss.zul.Paging;
+import org.zkoss.zul.event.PagingEvent;
+
+public class ProjectSearchMacro extends HtmlMacroComponent {
+
+ private final int pageSize = 5;
+
+ protected WikittyProxy proxy = ChoremDataProxy.getInstance();
+ protected ProjectModel projectModel = new ProjectModel(pageSize);
+ protected List<String> projects = new ArrayList<String>();
+
+ @Override
+ public void afterCompose() {
+ super.afterCompose();
+ initPaging();
+ initBandbox();
+ initListbox();
+ }
+
+ protected void initPaging() {
+ Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Project.EXT_PROJECT).criteria();
+ projectModel.setCriteria(criteria);
+
+ int totalSize = projectModel.getTotalSize();
+ Paging projectPaging = (Paging) getFellow("projectPaging");
+ projectPaging.setTotalSize(totalSize);
+ projectPaging.setPageSize(pageSize);
+ projectPaging.addEventListener("onPaging", new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ PagingEvent pagingEvent = (PagingEvent) event;
+ int activePage = pagingEvent.getActivePage();
+ projectModel.setActivePage(activePage);
+ }
+ });
+ }
+
+ protected void initBandbox() {
+ final Bandbox projectBandbox = (Bandbox) getFellow("projectBandbox");
+ projectBandbox.addEventListener(Events.ON_OK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ String search = projectBandbox.getValue();
+ Search query = Search.query().eq(Element.ELT_EXTENSION, Project.EXT_PROJECT);
+ if (search != null && !search.isEmpty()) {
+ query = query.keyword(search);
+ }
+ Criteria criteria = query.criteria();
+ projectModel.setCriteria(criteria);
+ int totalSize = projectModel.getTotalSize();
+ Paging projectPaging = (Paging) getFellow("projectPaging");
+ projectPaging.setTotalSize(totalSize);
+ projectPaging.setActivePage(0);
+ projectBandbox.open();
+ }
+ });
+ }
+
+ protected void initListbox() {
+ Listbox projectListbox = (Listbox) getFellow("projectListbox");
+ projectListbox.setModel(projectModel);
+ ListitemRenderer renderer = getProjectRenderer();
+ projectListbox.setItemRenderer(renderer);
+ }
+
+ /*
+ * Renderers
+ */
+ public ListitemRenderer getProjectRenderer() {
+ return new ListitemRenderer() {
+
+ @Override
+ public void render(Listitem item, Object data) throws Exception {
+ item.setValue(data);
+ final Project project = (Project) data;
+ final String name = project.getName();
+ final Checkbox checkbox = new Checkbox(name);
+ Listcell cell = new Listcell();
+ cell.appendChild(checkbox);
+ item.appendChild(cell);
+ checkbox.addEventListener(Events.ON_CHECK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ String projectId = project.getWikittyId();
+ if (checkbox.isChecked()) {
+ if (!projects.contains(projectId)) {
+ projects.add(projectId);
+ }
+ } else {
+ if (projects.contains(projectId)) {
+ projects.remove(projectId);
+ }
+ }
+ }
+ });
+ }
+ };
+ }
+}
Modified: trunk/billy-ui-zk/src/main/webapp/WEB-INF/lang-addon.xml
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/WEB-INF/lang-addon.xml 2010-08-11 15:58:53 UTC (rev 47)
+++ trunk/billy-ui-zk/src/main/webapp/WEB-INF/lang-addon.xml 2010-08-12 16:37:31 UTC (rev 48)
@@ -25,5 +25,29 @@
<component-class>org.chorem.billy.ui.CompanyBandboxMacro</component-class>
<macro-uri>macros/companyBandboxMacro.zul</macro-uri>
</component>
+
+ <component>
+ <component-name>companySearchMacro</component-name>
+ <component-class>org.chorem.billy.ui.CompanySearchMacro</component-class>
+ <macro-uri>macros/companySearchMacro.zul</macro-uri>
+ </component>
+
+ <component>
+ <component-name>categorySearchMacro</component-name>
+ <component-class>org.chorem.billy.ui.CategorySearchMacro</component-class>
+ <macro-uri>macros/categorySearchMacro.zul</macro-uri>
+ </component>
+
+ <component>
+ <component-name>projectSearchMacro</component-name>
+ <component-class>org.chorem.billy.ui.ProjectSearchMacro</component-class>
+ <macro-uri>macros/projectSearchMacro.zul</macro-uri>
+ </component>
+
+ <component>
+ <component-name>dateSearchMacro</component-name>
+ <component-class>org.chorem.billy.ui.DateSearchMacro</component-class>
+ <macro-uri>macros/dateSearchMacro.zul</macro-uri>
+ </component>
</language-addon>
Modified: trunk/billy-ui-zk/src/main/webapp/invoiceFormPage.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/invoiceFormPage.zul 2010-08-11 15:58:53 UTC (rev 47)
+++ trunk/billy-ui-zk/src/main/webapp/invoiceFormPage.zul 2010-08-12 16:37:31 UTC (rev 48)
@@ -17,12 +17,12 @@
<label value="Posted date" />
<datebox format="yyyy/MM/dd" value="@{composer.invoice.posted, save-when='saveInvoice.onClick'}" />
+ <categoryMacro id="categoryMacro" />
+
+ <companyMacro id="companyMacro" />
+
<projectMacro id="projectMacro" />
- <companyMacro id="companyMacro" />
-
- <categoryMacro id="categoryMacro" />
-
</vbox>
<space />
Modified: trunk/billy-ui-zk/src/main/webapp/invoicePage.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/invoicePage.zul 2010-08-11 15:58:53 UTC (rev 47)
+++ trunk/billy-ui-zk/src/main/webapp/invoicePage.zul 2010-08-12 16:37:31 UTC (rev 48)
@@ -1,13 +1,35 @@
-<?page id="home" title="HOME" cacheable="false" language="xul/html" zscriptLanguage="Java"?>
+<?page id="Invoice" title="Invoice" cacheable="false" language="xul/html" zscriptLanguage="Java"?>
<?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?>
-<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="win"?>
+<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="invoice"?>
-<window id="win" title="Win" border="normal" apply="org.chorem.billy.ui.InvoiceController">
+<window id="invoice" title="Invoice" border="normal" apply="org.chorem.billy.ui.InvoiceController">
<vbox>
<toolbarbutton id="newInvoice" label="Add new invoice" />
</vbox>
<separator bar="true" />
+ <vbox>
+ <separator/>
+ <dateSearchMacro id="dateSearchMacro" />
+ <separator />
+ <categorySearchMacro id="categorySearchMacro" />
+ <companySearchMacro id="companySearchMacro" />
+ <projectSearchMacro id="projectSearchMacro" />
+ <separator />
+ </vbox>
<vbox>
-
+ <listbox id="invoiceListbox" rows="20" model="@{invoice$composer.invoiceModel}" itemRenderer="@{invoice$composer.invoiceRenderer}">
+ <listhead>
+ <listheader label="Category"/>
+ <listheader label="Client"/>
+ <listheader label="Project"/>
+ <listheader label="Invoice number"/>
+ <listheader label="HT price"/>
+ <listheader label="TTC price"/>
+ <listheader label="Posted date"/>
+ <listheader label="Expected date"/>
+ <listheader label="Payment date"/>
+ </listhead>
+ </listbox>
+ <paging id="invoicePaging"/>
</vbox>
</window>
\ No newline at end of file
Added: trunk/billy-ui-zk/src/main/webapp/macros/categorySearchMacro.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/macros/categorySearchMacro.zul (rev 0)
+++ trunk/billy-ui-zk/src/main/webapp/macros/categorySearchMacro.zul 2010-08-12 16:37:31 UTC (rev 48)
@@ -0,0 +1,15 @@
+<?page title="new page title" contentType="text/html;charset=UTF-8"?>
+<zk>
+ <hbox>
+ Category:
+ <bandbox id="categoryBandbox" mold="rounded">
+ <bandpopup>
+ <vbox>
+ <grid id="categoryGrid" width="200px">
+ </grid>
+ <paging id="categoryPaging" width="200px"/>
+ </vbox>
+ </bandpopup>
+ </bandbox>
+ </hbox>
+</zk>
\ No newline at end of file
Modified: trunk/billy-ui-zk/src/main/webapp/macros/companyBandboxMacro.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/macros/companyBandboxMacro.zul 2010-08-11 15:58:53 UTC (rev 47)
+++ trunk/billy-ui-zk/src/main/webapp/macros/companyBandboxMacro.zul 2010-08-12 16:37:31 UTC (rev 48)
@@ -4,7 +4,7 @@
<bandbox id="companyBandbox" mold="rounded">
<bandpopup>
<vbox>
- <listbox id="companyListbox" width="200px" >
+ <listbox rows="5" id="companyListbox" width="200px" >
<listhead>
<listheader label="Name" />
<listheader label="Type" />
Added: trunk/billy-ui-zk/src/main/webapp/macros/companySearchMacro.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/macros/companySearchMacro.zul (rev 0)
+++ trunk/billy-ui-zk/src/main/webapp/macros/companySearchMacro.zul 2010-08-12 16:37:31 UTC (rev 48)
@@ -0,0 +1,19 @@
+<?page title="new page title" contentType="text/html;charset=UTF-8"?>
+<zk>
+ <hbox>
+ Company:
+ <bandbox id="companyBandbox" mold="rounded">
+ <bandpopup>
+ <vbox>
+ <listbox rows="5" id="companyListbox" width="200px" >
+ <listhead>
+ <listheader label="Name" />
+ <listheader label="Type" />
+ </listhead>
+ </listbox>
+ <paging id="companyPaging" width="200px"/>
+ </vbox>
+ </bandpopup>
+ </bandbox>
+ </hbox>
+</zk>
\ No newline at end of file
Added: trunk/billy-ui-zk/src/main/webapp/macros/dateSearchMacro.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/macros/dateSearchMacro.zul (rev 0)
+++ trunk/billy-ui-zk/src/main/webapp/macros/dateSearchMacro.zul 2010-08-12 16:37:31 UTC (rev 48)
@@ -0,0 +1,14 @@
+<?page title="new page title" contentType="text/html;charset=UTF-8"?>
+<zk>
+ <hbox>
+ Start date : <datebox id="startDate" />
+ End date : <datebox id="endDate" />
+ </hbox>
+ <separator />
+ <hbox>
+ Type:
+ <checkbox label="Posted date" id="postedDate" />
+ <checkbox label="Expected date" id="expectedDate" />
+ <checkbox label="Payment date" id="paymentDate" />
+ </hbox>
+</zk>
\ No newline at end of file
Modified: trunk/billy-ui-zk/src/main/webapp/macros/projectBandboxMacro.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/macros/projectBandboxMacro.zul 2010-08-11 15:58:53 UTC (rev 47)
+++ trunk/billy-ui-zk/src/main/webapp/macros/projectBandboxMacro.zul 2010-08-12 16:37:31 UTC (rev 48)
@@ -4,7 +4,7 @@
<bandbox id="projectBandbox" mold="rounded">
<bandpopup>
<vbox>
- <listbox id="projectListbox" width="200px">
+ <listbox rows="5" id="projectListbox" width="200px">
<listhead>
<listheader label="Name" />
</listhead>
Added: trunk/billy-ui-zk/src/main/webapp/macros/projectSearchMacro.zul
===================================================================
--- trunk/billy-ui-zk/src/main/webapp/macros/projectSearchMacro.zul (rev 0)
+++ trunk/billy-ui-zk/src/main/webapp/macros/projectSearchMacro.zul 2010-08-12 16:37:31 UTC (rev 48)
@@ -0,0 +1,18 @@
+<?page title="new page title" contentType="text/html;charset=UTF-8"?>
+<zk>
+ <hbox>
+ Project:
+ <bandbox id="projectBandbox" mold="rounded">
+ <bandpopup>
+ <vbox>
+ <listbox rows="5" id="projectListbox" width="200px">
+ <listhead>
+ <listheader label="Name" />
+ </listhead>
+ </listbox>
+ <paging id="projectPaging" width="200px"/>
+ </vbox>
+ </bandpopup>
+ </bandbox>
+ </hbox>
+</zk>
\ No newline at end of file
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-08-11 15:58:53 UTC (rev 47)
+++ trunk/pom.xml 2010-08-12 16:37:31 UTC (rev 48)
@@ -138,13 +138,6 @@
</dependency>
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>${junit.version}</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
<groupId>org.nuiton.wikitty</groupId>
<artifactId>wikitty-api</artifactId>
<version>${wikitty.version}</version>
@@ -231,7 +224,7 @@
<chorem-data.version>0.1-SNAPSHOT</chorem-data.version>
<zk.version>5.0.2</zk.version>
- <wikitty.version>2.0</wikitty.version>
+ <wikitty.version>2.1-SNAPSHOT</wikitty.version>
<!-- Nuiton librairies -->
<topia.version>2.2.0</topia.version>
1
0