Great. Thanks for sharing this.
You could simplify the querying by using, as well as or instead, a String-type user attribute (perhaps ‘Status
’?) pre-populated with suggested values, e.g. “Applied;Shortlisted;Interviewed
”. A string attribute can only hold one value, so its value can’t—for instance—be both ‘Applied’ and ‘Interviewed’; it mist be one or the other. By using suggested values and setting the attribute’s value either by the Displayed Attributes value pop-up list or directly via action (i.e. no error-prone manual typing) you don’t need to maintain 3 (4?) boolean values and ensure one of the set is true at any time.
Or if you want to know the steps completed (perhaps for a dashboard/report) you could set true
each boolean step completed whilst $Status holds the current stage of progress.
The good think is such suggestion can be adopted without massive effort. You early use of prototypes will repay you in this regard. Remember prototypes can do more than set visual features. Think of a prototype as an easy way to configure and/or find a group of notes with a common purpose. It’s easy to overlook the find (query) aspect. Being able to query just by the single term $Prototype=="Position"
might thus find notes all over the outline (i.e. in different maps) and not obviously associated.
Tip: give prototypes a name you’ll never use for a note. ‘Position’ might easily crop up as a note. The most common method used is to use a prefix character (e.g. an asterisk, a lowercase ‘p’). That way, the actual prototype won’t use the same $name value as actual ‘content’ in your document. As
when you see it or type it in code the intent/meaning is much clearer.What if you made an existing note into a prototype early on, e.g. in the actual map? No problem:
- duplicate the item and un-set the $IsPrototype for one of the two notes, e.g. via the Properties Inspector’s Prototype tab.
- move the prototype note to your prototypes folder and remove any customisations particular to only the note you just copied. Give the prototype a distinctive name.
- now back in the original location, set the originally copied not to use the new prototype. For any values you want to inherit, reset those attribute’s values
Doing the above is quicker/simpler than all that text makes it sound.