Skip to content

Commit ac6c25c

Browse files
Add FilterBookByBuyDateAction and FilterBookByPublishDateAction for date-based filtering
1 parent d296f71 commit ac6c25c

2 files changed

Lines changed: 58 additions & 0 deletions

File tree

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package mybookstore.actions;
2+
3+
import mybookstore.domain.Book;
4+
import tools.dynamia.actions.InstallAction;
5+
import tools.dynamia.crud.AbstractCrudAction;
6+
import tools.dynamia.crud.CrudActionEvent;
7+
import tools.dynamia.ui.UIMessages;
8+
9+
import java.time.LocalDate;
10+
11+
@InstallAction
12+
public class FilterBookByBuyDateAction extends AbstractCrudAction {
13+
14+
public FilterBookByBuyDateAction() {
15+
setName("Filter By Buy Date");
16+
setApplicableClass(Book.class);
17+
setImage("calendar");
18+
setType("primary");
19+
setPosition(1);
20+
}
21+
22+
@Override
23+
public void actionPerformed(CrudActionEvent evt) {
24+
UIMessages.showInput("Select Buy Date", LocalDate.class, date -> {
25+
if (date != null) {
26+
evt.getController().setParemeter("buyDate", date); //set parameter with the selected date
27+
evt.getController().doQuery(); //execute query with the new parameter
28+
}
29+
});
30+
}
31+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package mybookstore.actions;
2+
3+
import mybookstore.domain.Book;
4+
import tools.dynamia.actions.InstallAction;
5+
import tools.dynamia.commons.LocalDateRange;
6+
import tools.dynamia.crud.AbstractCrudAction;
7+
import tools.dynamia.crud.CrudActionEvent;
8+
import tools.dynamia.domain.query.QueryConditions;
9+
import tools.dynamia.zk.actions.LocalDateboxRangeActionRenderer;
10+
11+
@InstallAction
12+
public class FilterBookByPublishDateAction extends AbstractCrudAction {
13+
14+
public FilterBookByPublishDateAction() {
15+
setRenderer(new LocalDateboxRangeActionRenderer()); //use a renderer that provides a date range input
16+
setApplicableClass(Book.class);
17+
setAlwaysVisible(true);
18+
}
19+
20+
@Override
21+
public void actionPerformed(CrudActionEvent evt) {
22+
if(evt.getData() instanceof LocalDateRange dateRange && !dateRange.isNull()){
23+
evt.getController().setParemeter("publishDate", QueryConditions.between(dateRange)); //set parameter with a between condition
24+
evt.getController().doQuery(); //execute query with the new parameter
25+
}
26+
}
27+
}

0 commit comments

Comments
 (0)