History log of /external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
a397e604073b2c8d77aab5b97fe8966dcfd40a24 11-Jun-2010 jamesren <jamesren@592f7852-d20e-0410-864c-8624ca9c26a4> Add a listener to the embedded spreadsheet, to open the full TKO results
interface upon click.

Signed-off-by: James Ren <jamesren@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@4596 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
8a7f36583afe076a7198d1b34fe109aa491dc277 06-May-2010 jamesren <jamesren@592f7852-d20e-0410-864c-8624ca9c26a4> Remove SimpleHyperlink and replace with Anchor, which is a built-in class that
does the same thing.

Signed-off-by: James Ren <jamesren@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@4480 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
b852bce914dc3ae05b26f3655bfb437ffed001be 07-Apr-2010 jamesren <jamesren@592f7852-d20e-0410-864c-8624ca9c26a4> Adding the GWT framework for the Test Planner.

This adds a new application to the GWT frontend, but does not link to it
from the other frontends yet. I don't anticipate anyone to be using this
just yet. Once the project reaches the point where I can release a working
prototype, I will create user documentation for it and send an announcement.

Signed-off-by: James Ren <jamesren@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@4378 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
1c4d2394fbe949fef83661a25cfe9a32bf8569aa 12-Jan-2010 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Slightly more useful drilldown ordering for spreadsheet view. This avoids an "infinite loop" case where there's more than one result of the same test name in a single job tag.

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@4104 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
8b0ea2285c1327a686ff0b6ab245915e7fd20094 23-Dec-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Overhaul how we deal with related data in TKO -- test labels, test attributes, machine labels, and iteration results.

This has proven one of the trickiest areas of TKO. The first foray into this area was machine label headers, an early feature request implemented in a pretty ad-hoc manner in spreadsheet view which allowed them to be used as header fields. (Ironically, this was closest to the right approach on the server side, but I didn't appreciate it at the time. The original client-side implementation was a mess.) Next was filtering on test attributes and test labels, implemented with the include_labels, exclude_labels, include_attributes_where, and exclude_attributes_where options. This server-side implementation supported filtering but not viewing, grouping or sorting at all. Furthermore, even the filtering support was weak -- it only supporting ORing of inclusion requests and ANDing of exclusion requests. The client-side implementation was still pretty messy but was moving towards correctness. Finally, support was recently added for viewing iteration results in table view, but
grouping and filtering were excluded since they would've been very difficult to fit into the design. This was again a limited server-side approach, though the client-side implementation continued improving, albeit still using the trouble "generator items" in the mutliple list selector widget.

When I started working on support for test iterations and attributes in TKO table view, I finally hit upon the right server-side approach: specify the attributes that you're interested in, have the server perform a separate JOIN for each one, so that there's now a new column for each one, NULL if the attribute didn't exist and having the attribute's value if it did. Once it's created as a normal column, the user can do selection, grouping, sorting and filtering using the regular mechanisms. Everything just works. (For labels, it's slightly different, since whether or not a label is attached to a test is a boolean value. I opted to have the column's value be either NULL or the name of the label.)

Well, not quite perfectly. MySQL lets us define column aliases in a SELECT which are then usable in GROUP BY and ORDER BY. They aren't however, usable in the WHERE clause, because certain select expressions may not exist at the time the WHERE is applied. (Our expressions happen to be fine, but MySQL will have none of it.) There's absolutely no way I can see to define aliases for use in the WHERE clause. And unfortunately, our current interface allows users to provide a WHERE clause directly, so we can't perform translations or substitutions. As a result, filtering must be performed a little differently for these fields. You can't just say <field_name> = "<value>", like you can for most fields. For test attributes and iteration results, you say <field_name>.value = "<value>". For test labels and machine labels, you say <field_name>.id IS [NOT] NULL.

The first part of this CL is changing the server to use this new approach. get_test_views() now accepts test_label_fields, test_attribute_fields, machine_label_fields, and iteration_result_fields parameters, which allow the user to add extra fields based on these data types.

At the same time, I've changed how the TKO web clients deals with these data types in a way that mirrors the new way of handling these features on the server. There is now a global widget for adding custom fields based on any of the four data types. Once one is created, it can be used just like any other field in spreadsheet view, table view, and the global condition. This vastly simplifies most pieces of the code that previously dealt with these features, and it greatly expands the available space of features. Where we formerly had spreadsheet grouping/filtering on machine labels, table viewing of iteration results, and limited filtering on test labels and attributes, we now have viewing, grouping sorting, and filtering on all four.

High-level changes involved:

Server side
* added code to TestViewManager to handle the new options for creating fields, documented them, and documented that these options are supported and the rest are deprecated (we can probably delete them but we should check, they might be in use)
* added thorough unit tests for all of the above. on a side note, i discovered a neat feature of SQLite where you can add any function you've defined at a callable function from SQL statements. I used this to add some functions emulating MySQL-only functions. This could be used to good effect elsewhere, but this CL is big enough :)
* got rid of now-obsolete code for machine_label_headers option and iteration views

Client side:
* made HeaderFields immutable. Mutable HeaderFields turned out to be way too much of a nightmare. Users can specify values for ParameterizedFields at creation time, and if they want to modify them, they can delete and add.
* made all parts of the application (namely SpreadsheetView (both header selectors), TableView, and CommonPanel) use a single global HeaderFieldCollection
* changed ParameterizedFieldListPresenter to handle the new job of allowing creation and deletion of any kind of ParameterizedField. This new widget replaces the label/attribute filtering widget in the CommonPanel -- I got rid of all the code for that widget.
* removed the now-obsolete code for "generator items" in the MultiListSelectPresenter.
* finally made TableView use HeaderSelect. Since HeaderSelect plays a more significant role and it's role is more unified, it made sense to finally do this (TableView was previously duplicating logic from HeaderSelect, which was only used in SpreadsheetView). Since the HeaderSelect used in TableView is much simpler than the one used in SpreadsheetView, I extracted a new class SpreadsheetHeaderSelect, using composition rather than inheritance (it didn't really follow an is-a relationship).

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@4049 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
e299d4603ca85fb3fea2bfbac52c16c66475ac1f 23-Nov-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Do not allow empty global filter in Spreadsheet view or Table view.

Signed-off-by: James Ren <jamesren@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3970 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
3f2110914421a50e509e619e6e876e0af096144c 19-Nov-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Fix the "swap" link in TKO spreadsheet view, at least partially. It was completely broken and now it works except when machine label headers are active. I did it in a way that moves towards a more correct design, by introducing a State class for the HeaderSelect presenter, which sort of acts as a model class. Nonetheless, I performed a minimal refactoring necessary to accomplish the goal cleanly. Possible next steps would be:
* introduce a State object for the ParameterizedFieldListPresenter, and make HeaderSelect.State include an instance of that state. This, if done properly, would fix the above-mentioned remaining bug with swapping.
* move functionality to the State object that belongs there. addHistoryArguments() and handleHistoryArguments are two examples. It could also use accessors/mutators for its fields.
* change the interface of HeaderSelect to get rid of all the state accessors/mutators. Rather, there should be one pair of getter/setter for the saved state. Clients should perform other actions on the State object itself.

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3958 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
b9c6617bdc063b3b4aa760a0a45190ee069139fd 13-Nov-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Modify DynamicTableSelectionListener so that when select "none" is clicked, only deselect items matching the current filters. This turned out to be considerably trickier than i thought, because in order to do this properly and efficiently, it has to work like this: when "none" is clicked, make an RPC call for all the currently filtered items that fall within the currently selected set. We do this by making a new request to the table's active DataSource with the current filtering params plus a list of selected item IDs. There are two problems here:

1) Not all tables show DB objects -- in particular, the host detail view table when "show verifies/repairs/cleanups" is selected, and the TKO table view when grouping is active. For these tables, there's no way to filter on selected items by ID. Fortunately, these tables also happen to not be prone to the original issue, because they can't be filtered. So I added some code to only apply this new logic to tables that have active user-controlled filters. This is pretty ugly from a design point of view, but I had to take a practical approach -- it works, the code is clean, and I couldn't think of any workable alternatives.

2) The DataSource interface was poorly designed such that an RpcDataSource was stateful (and mutated every time a new request was made), so there was no way to make a new request on a DataSource without messing up its state and therefore potentially messing up the table using it. To get around this, I redesigned the interface to use a separate Query objects. Now, both the DataSource and the Query objects are immutable, and making a separate query for the "select none" operation is easy. (This actually also encouraged a change to DynamicTable to be much more efficient by avoiding many unnecessary get_num_*() calls.)

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3941 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
4cd4763a855d8eb7d25fd4963babc432eb4d25e6 12-Oct-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Remove deprecated uses of TableListener, and implement proper
oncontextmenu handling

Signed-off-by: James Ren <jamesren@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3828 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
227a7a1d0484dcfa4c6d996a1c10e95437d059ef 18-Sep-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> OK, one more refactoring -- this time, make TableView use HeaderFields (something I've wanted to do for a long time, there has been a TODO at the top of TableView for ages) and consolidate a lot more logic. Part of this was in the introduction of a new HeaderFieldCollection class, the rest was simple consolidation due to common use of HeaderField.

TableView and HeaderSelect still duplicate a lot of logic, sadly, although it's not immediately obvious from the code at this point. Eventually I'll fully consolidate those, but at this point I think I'm ready to implement the iteration view feature that I've been working towards the whole time.

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3753 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
7f2b0e15c5928ea2914d078e385ca717d078c6d5 17-Sep-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Removed deprecated uses of isChecked/setChecked.

(Depends on [PATCH] Removed deprecated ChangeListener uses.)

Signed-off-by: James Ren <jamesren@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3738 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
0d92da0fe19a095fc5678c4159e6a1756df65e48 17-Sep-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Removed deprecated ChangeListener uses.

(Depends on [PATCH] Removed the uses of some deprecated classes)

Signed-off-by: James Ren <jamesren@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3737 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
79a7b0d387aac103fc1d125353eefa361030452a 17-Sep-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Removed the uses of the following deprecated classes:

DisclosureEvent
DisclosureHandler
FocusListener
KeyboardListener
TabListener
PopupListener
SuggestionEvent
SuggestionHandler
ScrollListener
WindowResizeListener

Signed-off-by: James Ren <jamesren@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3735 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
a5e4d84c9616b0a987e904d3b1d1d3fd9ca1be86 11-Sep-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Removed deprecated ClickListener uses.

Mostly trivial changes. The only significant change was in
autotest.common.ui.SimpleHyperlink.

Signed-off-by: James Ren <jamesren@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3709 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
e463a8a926964673c2517bfef5ac394206b106c6 08-Sep-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Add default drilldown behavior. Drilldown from new fields (like job queued day) was broken because they weren't added to the drilldown map; it's best to just have a default and not allow things to break like that.

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3669 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
d9e04c1a7950691cc348e70fa2470f8c414ae94f 08-Sep-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Refactor code related to double list selecting widgets used in both SpreadsheetView and TableView. This will facilitate code reuse and extension for the feature to include test iterations/attributes in table view. It will also make unit testing possible and provides cleaner organization of the code.

The major effort here is to refactor the DoubleListSelector and HeaderSelect classes according to the Passive View pattern. There are passive view classes for the double list itself (DoubleListSelector, which will be renamed in a future CL to DoubleListSelectDisplay) and for the spreadsheet header selection UI (HeaderSelectorView, which I think I'll also rename to HeaderSelectorDisplay). There is a new class, MultiListSelectPresenter, which incorporates the presentation logic from DoubleListSelector as well as some of the logic from HeaderSelect related to switch between a single and double list. The remaining code in HeaderSelect was modified to use a MultiListSelectPresenter as much as possible, retaining only the code specific to the spreadsheet header selection (and the management of machine label headers will likely be extracted and generalized too, since that sort of thing will be necessary for test attributes/iterations). Finally, small modifications to Spreadsheet
View and TableView were required to have them use the new interfaces.

This change also introduces the ToggleLink widget, consolidating logic that had been applied in multiple places previously.

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3667 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
9e494cc00c53f9dd0fabec3ef675cb874a9130ad 31-Aug-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Change how we construct the basic page layout in AFE and TKO. The TabView class was sneaking around with RootPanels and DOM elements, effectively doing what HTMLPanel was intended to do in a naughty way. GWT 1.5 was naive enough to let that go on behind its back (although it wasn't safe), but GWT 1.6 won't have any of it (read: assertion errors). So change TabView to use an HTMLPanel properly, and change all the views to construct their layouts the new, nice way.

More info, in an old email from Joel Webber: http://markmail.org/message/xliklhgn5vvuibm4#query:%22A%20widget%20that%20has%20an%20existing%20parent%20widget%20may%20not%20be%20added%20to%20the%20detach%20list%22+page:1+mid:xliklhgn5vvuibm4+state:results

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3630 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
194a59d6976a5dbd5b464fb2b14ceb089f91c050 09-Jun-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Modify TKO Spreadsheet View's "Export to CSV" function to handle
selection of cell content. Also fixed history token handling to handle
content value customization.

Additionally, fixed history token handling of the "latest only latest
test per cell" checkbox in the TKO Spreadsheet View.

Risk: low
Visibility: medium (functionality change)

Signed-off-by: James Ren <jamesren@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3228 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
77401f351bd4ef6b6af99e46a9f905b161062574 26-May-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Allow all TestView fields to be displayed in cell contents in
Spreadsheet View.

Risk: low
Visibility: medium (UI change)

Signed-off-by: James Ren <jamesren@google.com>

http://test.kernel.org/cgi-bin/mailman/listinfo/autotest


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3175 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
37059dfb50063124bce014d3217e3610499d917f 08-May-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> CSV support for TKO table view.
* make RpcDataSource record the last RPC call params, since that's much easier than reconstructing it as I was doing for SpreadsheetVIew
* make TableDecorator support an Export CSV link, and make TableView use it
* add onExportCsv to Table View, plus some minor refactorings there that happened along the way
* generalize CSV code from SpreadsheetView and extract to TkoUtils
* add new CsvEncoder classes for table view
* change logic to decide which CsvEncoder to use -- simply dispatching off of method name isn't good enough, since both spreadsheet and table views use get_status_counts
* add new unit tests for the three kinds of table view

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3096 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
f6348c999bc60ee048510c8e28f74f944a32d97c 05-May-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> When the user performs a whole-table action in TKO spreadsheet view, make sure we obey the "show only latest test per cell" checkbox. This isn't an issue for actions on particular cells, because we already use the test IDs since the cells are single-test cells. But whole table actions use a different code path.

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3090 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
3d6ae118f69717e68bc15b9aed7b6a6c7dd9bab0 02-May-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Export CSV support for spreadsheet view.
* new Django view, handle_csv(), with a new URLconf, /new_tko/server/csv/
* new module csv_encoder with logic to encode the results of an RPC call into CSV format
* logic in csv_encoder to convert results of get_status_counts() (or get_latest_tests()) into CSV, when called from spreadsheet view
* added optional "Export to CSV" link to TableActionsPanel, and made SpreadsheetView use it with a handler to call the /csv/ entry point with the current query info

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3086 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
9f4500a294eea35dce003cee41c558fcde3eb09f 27-Apr-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Last few changes necessary to make first embeddable graphs work
* add EmbeddedTkoClient GWT entry point + associated scripts, GWT XML, launch configuration, apache config
* added EmbeddedTkoClientTest.html, a simple demonstration/test of using embedded widgets
* modify TabView to no longer be a Composite, but instead have a getWidget element. this allows us to defer any DOM manipulation to initialize() and therefore avoid executing it at all in the embedded case. the introduction of code to TabView.initialize() (it was previous abstract) required adding a super.initalize() call to *all* subclasses, and there are a lot, hence the large number of files in this change.
* added Plot.getNativeProxy(), generating a native JS object that acts as a proxy to the GWT Plot object
* extend JsonRpcProxy to allow use of PaddedJsonRpcProxys
* remove debug prints from PaddedJsonRpcProxy
* fix a little bug where a return statement was missing from Plot.showDrilldown()

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3039 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
c674d3ea684f75f3e05f5834b598050eb1c8856d 12-Mar-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Support opening drilldown results in a new tab/window from spreadsheet and table views. When drilling down in spreadsheet and table views, either into a group or into test details for a single test, the user can open the resulting page in a new tab/window by control-clicking. I included what I believe is the proper code to support middle-clicking as well, but I could not see any browser support. I tried the GWT hosted mode browser and FF2 on linux, and FF3 and windows. I changed the cell selection combo to shift-click (I don't think anyone uses that feature anyway :-/).

The main technical challenge here was this: state is spread throughout a number of classes that make up the UI for spreadsheet and table views. Code for generating the history tokens is spread throughout those classes as well, using the state in each class. In order to open results in a new tab, the code needs to generate the history token for the new state while leaving the current UI unmodified. It would do this by calling functions to modify application state appropriately, then generate the new history token, and then revert to the previous application state before opening the new token in a new tab. However, since the UI widgets and state variables were all intertwined and spread throughout the code, this was impossible to do as the code was -- when we made calls to setup the new application state, the displayed UI would be modified.

To solve this, I modified a number of classes to implement updateStateFromView() and updateViewFromState() methods, making the separation between state and view more well-defined and explicitly controlled. I ensured that all state-modifying functions don't modify the view at all, and I made sure the history-generating functions only use state variables. Then I was able to make the code setup a new state, generate the new history token, and restore the old state without any visible changes in the UI.

I also modified CustomHistory and clients so that history tokens passing into and out of CustomHistory are dictionaries instead of strings. I find this a bit cleaner and (more importantly) it allows CustomHistory to safely check for token equality (checking strings is unsafe because ordering could change while content remains the same, thanks to the nondeterminism of iterating over a Map).

Signed-off-by: Steve Howard <showard@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2876 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
313ab769319f56b940a2784cc0cbdebd005c5799 25-Feb-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Make the "Triage failures" button obey the "show only latest test per cell" filter. This is a bit of a tricky issue because the table view doesn't have a concept of cells, so the option can't carry directly over. I've made it simply add a big SQL filter "AND test_idx IN (...)" where ... is a giant list of all the test IDs displayed in the spreadsheet. I don't think it's ideal but it should work well, at least for now.

Signed-off-by: Steve Howard <showard@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2818 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
aac13a7fbd2d380e98f088b89fb57cb4fa3cf853 17-Feb-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> When clicking "Triage failures", only include failed results.

Signed-off-by: Steve Howard <showard@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2812 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
f248952e42ea33c34e41a49817e50f98c65c2716 24-Oct-2008 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Add feature to make spreadsheet header fields from combinations of machine labels. The user can create as many different machine-label-based fields as she wishes. For each field, she can enter a list of labels to be included. The field will then group on each combination of those labels.

-added new HeaderField abstract class with two implementations - SimpleHeaderField for normal fields and MachineLabelField for the new machine label fields
-made HeaderSelect capable of creating MachineLabelFields. In single header mode, selecting "Machine labels..." creates one, and deselecting it destroys it. In multiple header mode, each time "Machine labels..." is selected a new machine labels field is created, and deselecting one destroys it.
-made HeaderSelect display text boxes for each MachineLabelField for the user to input the label list.
-created HeaderSelect.addQueryParameters, moved fixed value logic into it (from SpreadsheetView.java), and put logic for machine label header in it.
-made TestGroupDataSource accept raw query parameters, and updated SpreadsheetDataProcessor to pass it through.
-modified SpreadsheetView to use HeaderFields throughout. Eventually other code (such as TableView) should be made to use them.
-added capability for ConditionTestSet to accept raw condition pieces. Eventually it will only work this way and I'll get rid of the field setting logic, since that's been moved to SimpleHeaderField.
-added ExtendedListBox class containing a bunch of utilities for ListBoxes that I've wanted for a long time. Several other parts of the code (DoubleListSelector, some of the graphing stuff) should be changes to use these utilities eventually.
-added ChangeListener support to DoubleListSelector
-made rpc interface accept a new "machine_label_headers" parameters, and added logic to tko_rpc_utils.py to construct SQL for machine label headers
-modified TestView manager to support a join into host labels



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2331 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
9dbdcda5104991cbf344ea5cba1aa58e1af444f3 14-Oct-2008 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Add feature to abort individual host queue entries the job detail and host detail pages. Performed a few other cleanups along the way.
-refactor TableActionsPanel, extract separate TableSelectionPanel
-make TableDecorator support a SelectionManager and a TableActionsPanel (or selection panel or other such control) just above the paginator. this makes it really easy to add selection capability, selection checkboxes, and an actions menu to any table.
-refactor TableDecorator in general since it kinda sucked
-change all existing code that does table selection to use the new TableDecorator support. this include job list view, the create job host selector (which now uses the common selection links instead of its old buttons), and tko.TableView.
-add selection support + a bulk abort action to the tables in job detail view and host detail view. this itself was easy given the above refactorings.


git-svn-id: http://test.kernel.org/svn/autotest/trunk@2283 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
8a6eb0cf5777dded2354408e8007d9223e813c92 01-Oct-2008 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> add support for showing only the latest test run per cell in spreadsheet mode. this involved some extensive refactorings on both the client and server which then made the actual change quite simple.

Refactorings:
-refactored group querying code in TempManager to be much more general (it's no longer oriented around fetching COUNT(*)). it also now returns dicts instead of raw rows.
-refactored much of the logic from the group-related RPCs into GroupDataProcessor, which now handles almost all the work, again in a more general fashion
-made group RPCs always return a sample test index with each group; this allows the client to drill down to single-test groups without having to make an extra query to get the test index (it also makes the latest test feature easier to implement)
-refactor TestSet to support a new getTestIndex method for single test sets
-added new SingleTestSet class for single test sets, and made TestSet creation code use this instead of ConditionTestSet
-made ConditionTestSet always be for multiple tests
-changed drilldown code to use TestSet.getTestIndex() to avoid making an extra RPC call (in both spreadsheet and table views)
-got rid fo TkoUtils.getTestId, which is no longer needed since test IDs are passed down with the groups

New features:
-added get_latest_tests RPC to get the latest test per group, but still return information in the same format as get_status_counts
-added "show only latest test per cell" to spreadsheet view, made it control the RPC that gets called, and added history support for it

About the get_latest_tests RPC - it uses two rather simple SQL queries and some processing in Python. I tried six different ways of computing this information, some using a single SQL query to do everything and some doing everything in Python, and this approach was by far the fastest.

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@2216 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
8c9b839c2f5073a755952a8a865a04db3b2d4547 30-Sep-2008 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> add primitive support for fixed header values. fixed headers can be given as a comma- or whitespace-separated list of values. they will serve to both limit to results to the given values (something that could just as well be done with the WHERE clause, but I figured people would want this behavior) + force all given values to be included, even if it causes empty rows.
* add support to GroupDataProcessor + relevant RPCs in Django to support fixed header values, but *only* for single headers (i.e. no composite header support)
* add text box to GWT spreadsheet UI, accessible only in single-header mode. box accepts comma- or whitespace-separated list of values.
* add necessary code to process fixed headers + pass them to server, and to store in history URL



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2204 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
e732ee7d450b11261c82df0950fde8e02f839b26 23-Sep-2008 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> -added capability to have site-specific urlconfs in TKO Django server
-added ClassFactory and SiteClassFactory to autotest.tko package to allow site-specific modifications to TKO. made some changes to the AFE [Site]ClassFactory files (reducing visibility)
-added get_detailed_test_views RPC which includes information about labels and attributes associated with a test
-made changes to model_logic.py to make fewer assumptions about models. these were basically bugs in model_logic.py that weren't exposed until i started doing fancier queries on TKO models.
-made list_objects capable of accepting a field list
-changed JsonRpcProxy to contain base URLs instead of full RPC urls; this way, other components (graphing, jlog) can use them (and i made graphing use this URL, which fixes a bug in the embedded URL generation)
-added RealHyperlink widget to common.ui package, representing a plain old hyperlink to another page (as opposed to Hyperlink and SimpleHyperlink, which are intended to be handling by the GWT code). this eases dynamic updates of the link href and allows setting visibility, styles, and all the other good stuff that comes along with using Widgets.



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2191 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
64aeecdec485192241e5377b3fa5ac7cf57a0c12 19-Sep-2008 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> -add feature to filter on test attributes in TKO
-new server arguments "include_attributes_where" and "exclude_attributes_where" for filtering on test attributes
-refactor joining code in TKO models.py to support test attributes joining
-add new UI to CommonPanel.java to filter on test attributes. some of the UI code was written in a general way so that in the future it could be merged with some of the graphing UI code.
-modified TestSets and code that uses them to fix two bugs - first, TestSets didn't contain all the relevant filtering information (only the SQL clause), and second, the SQL clause would build up incorrectly during drilldown



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2177 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
ce12f55f4530950f7fc6ddc73d1867ebb954d356 19-Sep-2008 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Attached is a large patch for a powerful and flexible new graphing system for new TKO. This system subsumes all the previous kernel graphing scripts under the tko/ directory and is capable of much more. These wiki pages document usage of the new system and give an idea of what it's capable of:

http://autotest.kernel.org/wiki/MetricsPlot
http://autotest.kernel.org/wiki/MachineQualHistograms

Feel free to try it out and please let us know if you run into any trouble.

This system is the work of our summer intern James Ren. Thank you for all your fantastic work, James!

From: James Ren <jamesren@stanford.edu>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2171 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
d50ffb4b0ef514fb969d53b82e23ab41d4d3812e 04-Sep-2008 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> -add easy invalidation functionality
-add "show invalidated tests" option to common panel, disabled by default
-made client submit "exclude_labels" option to exclude invalid tests. this required somewhat widespread changes because it means the global condition is no longer just a SQL string but now a collection of parameters
-add "invalidate tests" option to spreadsheet/table context menu, and button to test detail view. it's really just a shortcut to add the "invalidated" label.
-added logic to the server to handle "exclude_labels" option. it was done in this generic way because in the future i plan to add a UI to exclude any label or labels.
-force test label names to be unique
-fix a bug in logic to determine all labels assigned to a set of tests
-got rid of auto-refresh when changing between spreadsheet and table after the condition had changed

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@2099 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
3b8563acf345e8327fb3f0cb4b96869ce55f5080 03-Sep-2008 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Change mouse selection events to include ctrl-click and meta-click (which is command-click on the mac and windows-click on windows, but the former is the important one).



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2085 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
0281350135d1216c722e1d6fb85044f505c2319b 20-Aug-2008 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> -rewrite most of the label management code to be much more efficient
-ensure label modifications always act on the right set of tests, by ensuring the GWT client uses the right SQL condition



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2017 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
21085f22a3c616ff12bf80b997187a00e44f851b 19-Aug-2008 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> -fix bug with drilldown on null headers
-make spreadsheet view ignore TEST_NA entries

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@2012 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
0c31bc5ef2ecdf8edf19468e1a373520110f5bc6 08-Aug-2008 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Make query controls collapsible in spreadsheet and table views. This should help enable better use of screen real estate, especially in spreadsheet view.


git-svn-id: http://test.kernel.org/svn/autotest/trunk@1965 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java
35444864c7b6f49865a7e17aa0052987b72e4728 08-Aug-2008 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Initial checkin of new TKO interface.



git-svn-id: http://test.kernel.org/svn/autotest/trunk@1959 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/frontend/client/src/autotest/tko/SpreadsheetView.java