/** * * @author pquiring */ import java.util.*; import javaforce.SQL; import javaforce.webui.*; import javaforce.controls.*; import javaforce.*; public class ReportsPanel extends Panel { public ReportsPanel() { Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH) + 1; int day = c.get(Calendar.DAY_OF_MONTH); int hh = c.get(Calendar.HOUR_OF_DAY); int mm = c.get(Calendar.MINUTE); int ss = c.get(Calendar.SECOND); String date = String.format("%04d-%02d-%02d", year, month, day); String time = String.format("%02d:%02d:%02d", hh, mm, ss); Row row = new Row(); add(row); back = new Button("Back"); back.addClickListener((m, comp) -> { comp.getClient().setPanel(new MainPanel()); }); row.add(back); row.add(new Label("Tag")); tags = new ComboBox(); tags.setWidth("200px"); row.add(tags); row.add(new Label("Start Date")); date_start = new TextField(date); row.add(date_start); row.add(new Label("Start Time")); time_start = new TextField("00:00:00"); row.add(time_start); row.add(new Label("End Date")); date_end = new TextField(date); row.add(date_end); row.add(new Label("End Time")); time_end = new TextField(time); row.add(time_end); execute = new Button("View Report"); execute.addClickListener((m, comp) -> { update(); }); row.add(execute); report = new TextArea(""); report.addClass("pad"); add(report); loadTags(); } public ComboBox tags; public TextField date_start, time_start; public TextField date_end, time_end; public Button back, execute; public TextArea report; public Tag list[]; private String getTag(String id) { for(int a=0;a<list.length;a++) { String tid = (String)list[a].getData("id"); if (tid.equals(id)) { return list[a].toString(); } } return "?tag.id=" + id; } private void update() { int idx = tags.getSelectedIndex(); if (idx == -1) { JFLog.log("no tag selected for report"); return; } String query; String start = date_start.getText() + " " + time_start.getText(); String end = date_end.getText() + " " + time_end.getText(); String name; if (idx == 0) { //all tags query = "select id,value,when from history where when >= " + SQL.quote(start) + " and when <=" + SQL.quote(end); name = "All tags"; } else { Tag tag = list[idx-1]; query = "select id,value,when from history where id=" + tag.getData("id") + " and when >= " + SQL.quote(start) + " and when <=" + SQL.quote(end); name = tag.tag; } String data[][] = Service.queryHistory(query); StringBuilder sb = new StringBuilder(); for(int a=0;a<data.length;a++) { for(int b=0;b<data[a].length;b++) { if (b > 0) sb.append(","); if (b == 0) { sb.append(getTag(data[a][b])); //convert id to tag name } else { sb.append(data[a][b]); } } sb.append("\r\n"); } sb.append("End of report:" + name); report.setText(sb.toString()); } public void loadTags() { list = Service.getTags(); tags.clear(); tags.add("*", "All tags"); for(int a=0;a<list.length;a++) { String url = list[a].toString(); tags.add("i" + a, url); } } }