With regards to a Gmail-style interface for labeling, got a comment/concern on the SQL.
IIRC, when cherry-picking was implemented (for performance reports), we attempted to compose a WHERE clause that would effect the cherry-pick. This led to some wild WHERE clauses. E.g., consider the following example: +---+----+----+----+---+ |# |A |B |C |D | +---+----+----+----+---+ |1 |1 |2 |3 |4 | |2 |5 |6 |7 |8 | |3 |9 |10 |11 |12 | |4 |28 |10 |11 |12 | |5 |29 |10 |11 |12 | +---+----+----+----+---+ If we want to cherry-pick lines 1, 2 and 3, then our WHERE clause will look like this: SELECT blah blah FROM blah,blah WHERE (A=1 AND B=2 AND C=3 AND D=4) OR (A=5 AND B=6 AND C=7 AND D=8) OR (A=9 AND B=10 AND C=11 AND D=12) We eventually chose do the filtering in PHP on row # since there does not seem to be a good way to filter by row # in SQL. The point being, a nasty WHERE clause *could* lead to a loooong tag operation. Given the above, a good starting point might be to restrict tagging to the following: 1. Allow tagging only on entire reports 2. Allow tagging only on a single row at a time My $0.02. -Ethan On Fri, Aug/24/2007 03:07:54PM, Jeff Squyres wrote: > I volunteered to do this on the call today. Here's my thoughts on > tagging: > > 1. From the client, it would be nice to be able to specify a comma- > delimited list of tags at any phase. Tags would be inherited by > successive phases if not explicitly overridden. E.g., if you specify > a "foo" tag in an MPI get, it'll be used in all phases that use that > MPI get. > > Tags can be specified in one of three forms: > > +foo: means to *add* this tag to the existing/inherited set > -foo: means to *remove* this tag from the existing/inherited set > foo: if any tag does not have a +/- prefix, then the inherited set > is cleared, effectively making the current set of tags be only the > non-prefixed tags and +tags > > For example: > > [MPI Get: AAA] > # + and - have little meaning for MPI Get > tags = foo, bar, baz > > [Test Get: BBB] > # + and - have little meaning for Test Get > tags = yar, fweezle, bozzle > > [Test Build: CCC] > # Test build inherits tags from MPI Get and Test Get > tags = +fa-schizzle, -yar > # Resulting tag set: foo, bar, baz, fweezle, bozzle, fa-schizzle > > [Test build: DDD] > # Override everything > tags = yowza, gurple > # Resulting tag set: yowza, gurple > > 2. For the reporter, I think we only want authenticated users to be > able to create / manipulate tags. Authentication can be via SVN > username / password or the HTTPS submit username / password; I don't > have strong preferences. > > Anyone can query on tags, of course. > > 3. We should have easy "add these results to a tag" and "remove these > results from a tag" operations, similar to GMail/labels. I think the > rule should be that if you can show MPI details (i.e., not the > summary page), you can add/remove tags. Perhaps something as simple > as a text box with two buttons: Add tag, Remove tag. > > 3a. Example: you drill down to a set of test runs. You type in "jeff > results" in the text box and click the "add tag" button. This adds > the tag "jeff results" to all the result rows that are checked (it is > not an error if the "jeff results" tag already exists on some/all of > the result rows). > > 3b. Example: you drill down to a set of test runs. You type in "jeff > results" in the text box and click on the "remove tag" button. This > removes the tag "jeff results" from all the result rows that are > checked (it is not an error if the jeff results" tag is not on some/ > all of the result rows). > > 4. Per Gmail index label listing, it would be nice to see a list of > tags that exist on a given result row. It could be as simple as > adding another show/hide column for the tags on a given result row. > But it gets a little more complicated because one row many represent > many different results -- do we show the union of tags for all the > rollup rows? Maybe we can use different colors / attributes to > represent "this tag exists on *some* of the results in this row" vs. > "this tag exists on *all* of the results in this row"...? > > 4a. If the tags are listed as a column, they should also (of course) > be clickable so that if you click on them, you get the entire set of > results associated with that tag. > > 4b. For every tag on a rollup row, it would be good to be able to say > "apply this tag to every result in this rollup row" (i.e., this tag > had previously only applied to *some* of the results in this rollup > row). This could be displayed as a little "+" icon next to the tag > name, or somesuch. > > 4c. Similarly, for every tag, it would be good to have a "remove this > tag from every result in this row". This could be displayed as a > little "-" icon next to the tag name, or somesuch. > > 4d. Care would need to be taken to ensure that users would not > accidentally click on "+" or "-" icons next to tag names, however. > > 5. There should also be a simple way to: > - see all available tags (perhaps including some kind of > indication of how many results that tag represents) > - completely delete a tag from the entire database > > 6. Tags may span multiple phases (install, build, run). If you click > on a tag that contains results on all three phases, what should > happen? I think it should be context-sensitive: > - If you are in a summary environment, you get a summary table > showing all relevant results. > - If you are in a single phase environment, you see only the > results in that phase (perhaps with a clickable icon to see the > entire summary table with all the tag's results). > > 7. Lots of things can, by default, become tags. E.g., org name and > platform name can become default tags. I.e., results that are > submitted will automatically have the org name and platform name > added to the results as tags. > > -- > Jeff Squyres > Cisco Systems > > _______________________________________________ > mtt-devel mailing list > mtt-de...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/mtt-devel