I should be able to define non-immediate input fields on-page, and access them from a _QLButton

(User Story, Investigate , Priority: Critical, Test Status: No automated tests yet , Reported By Justin du Coeur, )
Summary: This needs more design, but the point is letting us implement the search plus checkboxes that Anna has spec'ed for the Arisia Space.
The idea here comes in a couple of pieces:
  • First, I should be able to define an "edit" input that isn't actually attached to a Thing, or even a real Property -- it is just an Input field for a particular Type, with some specified meta-Properties and a name.
  • Second, when I submit a _QLButton, any such Input fields in some context (how do we scope this?) get their current values submitted with the QL, and the QL can use them as bound values.
This way, we could have a Text input that we feed into _search if it is non-Empty, and some checkboxes that we can use _contains on for filtering. Since _QLButton already lets us specify a target, we can then display on the other side of the page, as shown.
If we can get this right, it allows us to build almost arbitrarily-powerful search/filter capabilities, albeit not trivially. It's worth trying to figure out.
I suspect that we should create a new function for this, rather than reusing _edit, both to call it out as very different, and because it doesn't look like it shares all that much top-level code.
Initially, try getting this working with both a text input and a bunch of checkboxes, probably driven from a Restrict to Model, that produces a Set. Those are both very realistic for our needs, and different enough to drive the solution properly.
Need to see how much of the code under HtmlRenderer.doRender() we can reuse.
Could we make this more consistent with the rest of the system if we require use of a Property, but not a Thing? The Property defines all of the layout and such already, and conceptually editing is always in terms of a Property. Those code paths require a DisplayPropVal -- but that already has most of its fields as Options, so it might be okay. Likely worth trying.