I will take a look at this tomorrow.

Jeff
On MondayMar 2, 2009, at 5:18 AM, Tom Locke wrote:

>
> Thanks Bryan, this looks very useful.
>
> The menu option is not actually "New Object" but rather "New
> Product" (ow whatever the model is), right?
>
> I think it might be better (clearer to the user) to have something
> more like a prompt ("Select one...") as the first option, have the
> field-list hidden by default, and have "New Whatever" as the last
> option? Hmm then again it could get buried if the list is long. I'm
> just thinking that the option to chose an existing object might not be
> noticed. Can anyone think of any good examples of this type of UI
> they've seen on the web?
>
> Tom
>
> On 1 Mar 2009, at 23:14, Bryan Larsen wrote:
>
>>
>> I've tried to take one of the tags I'm using it in the class and
>> generalize it to contribute back.  I have a couple of issues.
>>
>> The tag itself is select-one-or-field-list.   It's simply a select- 
>> one
>> and a field-list for the same object.  If "New Object" is selected,
>> the field-list is displayed, otherwise it is disabled & hidden.
>>
>> Here's the tag itself:
>>
>> <def tag="select-one-or-field-list">
>> <div class="select-one-or-field-list">
>>   <select-one include-none blank-message="&'New
>> '+this_field.titleize" class="select-one-or-field-list-select" merge
>> param />
>>   <field-list param />
>> </div>
>> </def>
>>
>> and the javascript:
>>
>> (function() {
>>   function selectChanged(el) {
>>       if(el.value) {
>>           $(el).siblings().each(function(elc) {
>>               $(elc).setStyle({display: 'none'});
>>           });
>>           $(el).adjacent('input,select,textarea,button').each
>> (function(elc) {
>>               elc.disabled = true;
>>           });
>>       } else {
>>           $(el).siblings().each(function(elc) {
>>               // FIXME: assumption of block display
>>               $(elc).setStyle({display: 'block'});
>>           });
>>           // FIXME: maybe some inputs were previously disabled
>>           $(el).adjacent('input,select,textarea,button').each
>> (function(elc) {
>>               elc.disabled = false;
>>           });
>>       }
>>   }
>>
>>   new HoboBehavior("div.select-one-or-field-list", {
>>       events: {
>>           "> select.select-one-or-field-list-select": {
>>               ":change": 'eventSelectChanged'
>>           }
>>       },
>>
>>       eventSelectChanged: function(ev, el) {
>>           Event.stop(ev);
>>           selectChanged(el);
>>       }
>>   });
>>
>>   document.observe("dom:loaded", function() {
>>       $$("select.select-one-or-field-list-select").each(function(el)
>> {
>>           selectChanged(el);
>>       });
>>   });
>> })();
>>
>> Issues:
>>
>> 1)  This doesn't work when the belongs-to is nil, I need to add <%
>> this.patient = Patient.new if this.patient.nil? %> in front of my
>> <select-one-or-field-list:patient /> invocation.
>>
>> 2) When the select-one-or-field-list invocation is inside of an  
>> input-
>> many, it's possible to get into a messed up state.  For instance, if
>> you have two elements, and the top one has a selection and the bottom
>> one is on "new" and you click the "+", the new selection contains the
>> selection from the top element, but fields are displayed and copied
>> from the second field-list.  I believe that this may be a bug in
>> input-
>> many rather than my code.
>>
>> Bryan
>>>
>
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Hobo 
Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/hobousers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to