Widgets were a great addition to Memento, but they didn't extend the library itself (much), so I haven't bothered to learn much about them.
But now, with 5.1, we have an embedded object field type. Now that's really interesting! It sounds great, but what does it really enable us to do that we couldn't do before? I checked Help, and nothing was said about embedded objects.
So, I started playing with them. I created a library with a Name field identifying a person. I then added an embedded object field for Siblings, Parents, Children, & Grandchildren. For each of them, I used a Name (Text) attribute and a Birthdate (Date) attribute.
The main thing I noticed was that there are fewer attribute types than there are field types, so what's not allowed in an embedded object? The following types can only be in fields, not in EO attributes...
Calculation, JavaScript, Button, Lookup, Image, Audio, Barcode, Signature, Rich Text, Link to File, Link to Entry, List, Tree, Tags, Color, User, and of course, Embedded Object types.
Since an EO can't be an attribute of an EO, we can't use them to build a tree structure of EOs or entries. Without Calculation, JavaScript, Button, or Lookup, we can't calculate things or look up things in other libraries. The most interesting thing is that we can hyperlink.
So what can we do that we couldn't do before? As I see it, we can avoid Link to Entry fields by building a single library that is a set of entries each of which can contain object, or things with a limited number of relatively simple attributes.
So, what is it best used for? Well, I can imagine a Communities library, where each entry is for a community, like a forum, blog, or mailing list, and the fields would include a community name, maybe a bit of other info, and an embedded object for each member, with its email address, maybe phone number, etc.
Or a Products library, where each entry is for a product series and an EO for each product model in the series.
Or any other reference data where there's a primary definition of a set of things each of which consists of a set of subordinate things, but you can go only one level down, and the second level is far more limited in what it can contain.
JavaScript fields, actions, triggers, & Button fields can work on an entry-by-entry basis, but not on an EO by EO basis. Like a trigger script that can loop through links of a many-to-many Link to Entry field, a trigger script could loop through the EOs of an entry.
I'm sure some of you have given it some thought as well. What have you learned, and what ideas do you have for use of Embedded Object fields?