ui: Add a job creation date filter to job list
We regularly get hammered by queries for jobs matching a certain name.
Almost no one wants to look at all jobs since the start of time. So, add
a job created filter that defaults to the last week.
BUG=chromium:685424
TEST=manual testing on local afe; verified that the resulting db queries
limit the job list search within the bounds given.
Change-Id: I5f2229b81e7511fb717409a7657d44f887b58fa2
Reviewed-on: https://chromium-review.googlesource.com/462120
Commit-Ready: Prathmesh Prabhu <pprabhu@chromium.org>
Tested-by: Prathmesh Prabhu <pprabhu@chromium.org>
Reviewed-by: Xixuan Wu <xixuan@chromium.org>
diff --git a/frontend/client/src/autotest/afe/JobListView.java b/frontend/client/src/autotest/afe/JobListView.java
index 1d416d7..d658228 100644
--- a/frontend/client/src/autotest/afe/JobListView.java
+++ b/frontend/client/src/autotest/afe/JobListView.java
@@ -2,6 +2,7 @@
import autotest.common.SimpleCallback;
import autotest.common.CustomHistory.HistoryToken;
+import autotest.common.table.DatetimeSegmentFilter;
import autotest.common.table.Filter;
import autotest.common.table.RadioButtonSetFilter;
import autotest.common.table.SearchFilter;
@@ -17,6 +18,7 @@
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONBoolean;
import com.google.gwt.json.client.JSONObject;
+import com.google.gwt.json.client.JSONString;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.HTMLPanel;
@@ -54,6 +56,7 @@
private JobTypeFilter jobTypeFilter;
private Filter ownerFilter;
private SearchFilter nameFilter;
+ private JobStartingDatetimeFilter startingDatetimeFilter;
private SelectionManager selectionManager;
interface JobSelectListener {
@@ -94,6 +97,26 @@
}
}
+ static class JobStartingDatetimeFilter extends DatetimeSegmentFilter {
+ @Override
+ public void addParams(JSONObject params) {
+ String start_time = startDatetimeBox.getText();
+ if (start_time == "") {
+ setStartTimeToPlaceHolderValue();
+ start_time = startDatetimeBox.getText();
+ }
+ params.put("created_on__gt", new JSONString(start_time));
+
+ String end_time = endDatetimeBox.getText();
+ if (start_time == "") {
+ setEndTimeToPlaceHolderValue();
+ end_time = endDatetimeBox.getText();
+ }
+ params.put("created_on__lt", new JSONString(end_time));
+ }
+
+ }
+
public void abortSelectedJobs() {
Set<JSONObject> selectedSet = selectionManager.getSelectedObjects();
if (selectedSet.isEmpty()) {
@@ -114,7 +137,7 @@
}
});
}
-
+
@Override
public String getElementId() {
return "job_list";
@@ -129,7 +152,7 @@
public JobListView(JobSelectListener listener) {
selectListener = listener;
}
-
+
@Override
public void initialize() {
super.initialize();
@@ -144,22 +167,22 @@
public void onTableRefreshed() {}
});
-
+
tableDecorator = new TableDecorator(jobTable);
tableDecorator.addPaginators();
selectionManager = tableDecorator.addSelectionManager(false);
jobTable.setWidgetFactory(selectionManager);
tableDecorator.addTableActionsPanel(this, true);
addWidget(tableDecorator, "job_table");
-
+
ownerFilter = new JobOwnerFilter("owner");
jobTable.addFilter(ownerFilter);
addWidget(ownerFilter.getWidget(), "user_list");
-
+
nameFilter = new SearchFilter("name", "Filter", false);
jobTable.addFilter(nameFilter);
addWidget(nameFilter.getWidget(), "jl_name_search");
-
+
jobStateFilter = new JobStateFilter();
for (int i = 0; i < STATUS_RADIO_BUTTON_COUNT; i++)
jobStateFilter.addRadioButon(statusRadioButtonLabels[i]);
@@ -188,6 +211,10 @@
"Sub jobs: jobs with a parent jobs. "),
"job_type_tooltip");
addWidget(jobTypeFilter.getWidget(), "job_type_controls");
+
+ startingDatetimeFilter = new JobStartingDatetimeFilter();
+ jobTable.addFilter(startingDatetimeFilter);
+ addWidget(startingDatetimeFilter.getWidget(), "job_starting_datetime_controls");
}
@Override
@@ -199,7 +226,7 @@
typeHistoryTokens[jobTypeFilter.getSelectedButtonIndex()]);
return arguments;
}
-
+
@Override
public void handleHistoryArguments(Map<String, String> arguments) {
String stateFilter = arguments.get("state_filter");
diff --git a/frontend/client/src/autotest/public/AfeClient.html b/frontend/client/src/autotest/public/AfeClient.html
index c94e5e3..ab1b1ea 100644
--- a/frontend/client/src/autotest/public/AfeClient.html
+++ b/frontend/client/src/autotest/public/AfeClient.html
@@ -52,6 +52,9 @@
<tr>
<td>Name:</td><td id="jl_name_search"></td>
</tr>
+ <tr>
+ <td>Job starting time:</td><td id="job_starting_datetime_controls"></td>
+ </tr>
</table>
<div id="job_table"></div>
</div>