Very nice Anders, thank you. Is the standardtext field necessary? Why not
just have a tiddler $:/view/book which can be transcluded via a
ViewTemplate onto any tiddler with tiddlertype=book?
On Friday, 16 April 2021 at 13:20:51 UTC+1 Anjar wrote:
> Hi Si,
>
> Thank you for clarification; however, I think the approach is still valid
> and demonstrated how it works, and with minor adjustments you can have
> field templates across source types;
>
> (1) Make tiddlers with
> - title starting with "$:/template",
> - a field tiddlertype, for example tiddlertype: book,
> - a field standardtext, for example standardtext: {{||$:/view/book}}, and
> - required (empty) fields, for example booktitle and genre
>
> (2) Make
> - title starting with "$:/fieldtemplate", and
> - text with how the field should be edited, eg.
> -- A tiddler $:/fieldtemplate/booktitle with text: Title: <$edit-text
> field="booktitle" />
> -- A tiddler $:/fieldtemplate/genre with text: Genre: <$select
> field="genre"><option>Horror</option><option>Poetry</option><option>Screenplay</option></$select>
>
> (3) The add/edit tiddler can be
> \define tiddlername() {{!!tiddlertype}}: <<now "YYYY-0MM-0DD 0hh:0mm:0ss"
> >>
> \define fieldtiddler() $:/fieldtemplate/$(currentFieldTiddler)$
>
> <$list filter="[title[$:/temp/edit]!has[text]]">
> <$list filter="[prefix[$:/template]]">
> <$button>
> <$wikify name=newtiddlername text=<<tiddlername>> >
> <$action-createtiddler $basetitle=<<newtiddlername>>
> text={{!!standardtext}} tiddlertype={{!!tiddlertype}} />
> <$action-setfield $tiddler="$:/temp/edit" text=<<newtiddlername>> />
> </$wikify>
> Create {{!!tiddlertype}} Tiddler
> </$button>
> </$list>
> </$list>
> <$list filter="[title[$:/temp/edit]has[text]get[text]]"
> variable="edittiddler">
> <$set name=tiddlertype filter="[title<edittiddler>get[tiddlertype]]">
> <$list
> filter="[prefix[$:/template]tiddlertype<tiddlertype>fields:exclude[list
> title text tags created modified]]" variable="currentFieldTiddler">
> <$tiddler tiddler=<<edittiddler>> >
> <$transclude tiddler=<<fieldtiddler>> mode="block"/>
> </$tiddler>
> </$list>
> </$set>
> <$button>
> <$action-deletetiddler $tiddler="$:/temp/edit"/>
> Ok
> </$button>
> </$list>
>
> Now, the form is populated with the corresponding fieldtemplates derived
> from the fields in the tiddler template. If the same field name is used in
> another tiddler template, the same field template is used
>
> I provide a working example so that you, but most importantly others who
> perhaps is searching for similar solutions, can test and play around
>
> Best,
> Anders
>
> fredag 16. april 2021 kl. 13:18:39 UTC+2 skrev si:
>
>> @Anders The disadvantage of your approach is that you have to manually
>> create a form for every type of source, many of which will share fields
>> with one another. The reason I asked about the best way to associate
>> source-types with their required fields is to avoid this problem. If you
>> know which fields you want for a particular source-type, it should be
>> possible to automatically generate a form/table for adding new sources.
>> Just to be clear I wasn't asking for help on how to actually generate the
>> forms, just on the best way to associate source-types with their required
>> fields.
>>
>> @Sjaak Your point did occur to me, though I am not sure that I will
>> personally need any different data-entry-methods. I think it would be
>> possible to add the information about how the data for a field should be
>> entered within the tiddler that represents the field itself. For example
>> "Book" could in some way be associated with a tiddler representing the
>> field "format". Then the "format" tiddler could have its own field
>> containing something like
>> <$select><option>Paperback</option><option>Hardback</option></$select>.
>> This should give you enough information to generate forms with custom
>> data-entry-methods, and apply them to any source-type without having to
>> re-write any code.
>>
>> On Thursday, 15 April 2021 at 23:40:59 UTC+1 Anjar wrote:
>>
>>> Hei Sjaak,
>>>
>>> I think a similar approach can be useful;
>>>
>>> (1) Make tiddlers with
>>> - title starting with "$:/template",
>>> - a field tiddlertype, for example tiddlertype: book, and
>>> - a field standardtext, for example standardtext: {{||$:/view/book}}
>>>
>>> (2) This time, the template contains the form you want to use, for
>>> example, $:/template/book can contain
>>> |Composer: |<$edit-text field="composer" /> |
>>> |Title: |<$edit-text field="musictitle" /> |
>>> |Genre: |<$select
>>> field="genre"><option>Horror</option><option>Poetry</option><option>Screenplay</option></$select>
>>>
>>> |
>>>
>>> (3) Make a new tiddler with the content:
>>> \define tiddlername() {{!!tiddlertype}}: <<now "YYYY-0MM-0DD
>>> 0hh:0mm:0ss" >>
>>>
>>> <$list filter="[title[$:/temp/edit]!has[text]]">
>>> <$list filter="[prefix[$:/template]]">
>>> <$button>
>>> <$wikify name=newtiddlername text=<<tiddlername>> >
>>> <$action-createtiddler $basetitle=<<newtiddlername>>
>>> tiddlertype={{!!tiddlertype}} text={{!!standardtext}} />
>>> <$action-setfield $tiddler="$:/temp/edit" text=<<newtiddlername>> />
>>> </$wikify>
>>> Create {{!!tiddlertype}} Tiddler
>>> </$button>
>>> </$list>
>>> </$list>
>>> <$list filter="[title[$:/temp/edit]has[text]get[text]]">
>>> <$tiddler tiddler=<<currentTiddler>> >
>>> <$set name=edittitle
>>> filter="[prefix[$:/template]tiddlertype{!!tiddlertype}]">
>>> <$transclude tiddler=<<edittitle>> mode="block"/>
>>> </$set>
>>> </$tiddler>
>>> <$button>
>>> <$action-deletetiddler $tiddler="$:/temp/edit"/>
>>> Ok
>>> </$button>
>>> </$list>
>>>
>>> The latter tiddler will be your interface and new tiddlers are added in
>>> the background. They will have the standardtext as text, and you edit them
>>> directly from the interface tiddler using the form from the template tiddler
>>>
>>> Best,
>>> Anders
>>>
>>> torsdag 15. april 2021 kl. 20:55:29 UTC+2 skrev [email protected]:
>>>
>>>> Hi Si,
>>>>
>>>> I have been thinking about an approach like yours but have not
>>>> implemented anything yet. It seems important to me that some fields may be
>>>> of a different kind than just text to be entered. Like choosing from a
>>>> list
>>>> of options (with f.i. the select widget or radio widget).
>>>> My 2 cts.
>>>>
>>>> Greetings,
>>>> Sjaak
>>>>
>>>> On Thursday, April 15, 2021 at 4:27:48 PM UTC+2 Anjar wrote:
>>>>
>>>>> Hi Si,
>>>>>
>>>>> Have a look at this post:
>>>>> https://groups.google.com/g/tiddlywiki/c/Q3vU6tnPffI/m/WNguU1p6BwAJ
>>>>>
>>>>> It's about using premade templates to create new tiddlers; you can of
>>>>> course add a form if you prefer that, instead of editing the new tiddler
>>>>> directly
>>>>>
>>>>> Best,
>>>>> Anders
>>>>>
>>>>> torsdag 15. april 2021 kl. 16:06:52 UTC+2 skrev si:
>>>>>
>>>>>> @Springer Thanks for your reply.
>>>>>>
>>>>>> >>> The lovely thing is that you can filter on a tag (or any other
>>>>>> filter condition), to see a column for each of the fields you care about
>>>>>> for that tag (or filter condition), with a row for each tiddler that
>>>>>> fits
>>>>>> the condition (and the ability to "clone" new rows into existence).
>>>>>>
>>>>>> How do you tell TiddlyWiki which fields to associate with each
>>>>>> reference-type? So for example you were to add a tiddler with the tag
>>>>>> "Book", you would want your table to give you the option to add fields
>>>>>> like
>>>>>> "author", "title" etc. If you had a tiddler tagged "Movie" you might
>>>>>> want
>>>>>> "director", "year" etc. My question is about the best way to associate a
>>>>>> particular type of source with the particular fields that it requires.
>>>>>> On Wednesday, 14 April 2021 at 21:10:07 UTC+1 springer wrote:
>>>>>>
>>>>>>> Si, I highly recommend checking out all the RefNotes resources
>>>>>>> (active here recently, contributed by Mohammad).
>>>>>>>
>>>>>>> My own approach is to use a DYNAMIC TABLE (Mohammad's Shiraz) for
>>>>>>> each reference-type. The lovely thing is that you can filter on a tag
>>>>>>> (or
>>>>>>> any other filter condition), to see a column for each of the fields you
>>>>>>> care about for that tag (or filter condition), with a row for each
>>>>>>> tiddler
>>>>>>> that fits the condition (and the ability to "clone" new rows into
>>>>>>> existence). Then you don't have a separate challenge of generating
>>>>>>> forms.
>>>>>>> Unless you really want to. ;)
>>>>>>>
>>>>>>> -Springer
>>>>>>> On Wednesday, April 14, 2021 at 3:03:02 PM UTC-4 si wrote:
>>>>>>>
>>>>>>>> I use TiddlyWiki to manage sources (books, movies etc), and I want
>>>>>>>> to create an easy way to add tiddlers for individual sources.
>>>>>>>>
>>>>>>>> I have decided to add tiddlers that represent a "source-type", and
>>>>>>>> then use it to generate a form that allows me to enter metadata for a
>>>>>>>> new
>>>>>>>> source. For example I might have a source type "Book", which is used
>>>>>>>> to
>>>>>>>> generate a form like this:
>>>>>>>>
>>>>>>>> Title: ...
>>>>>>>> Author: ...
>>>>>>>> Year: ...
>>>>>>>>
>>>>>>>> While "Movie" might have a form like this:
>>>>>>>>
>>>>>>>> Title: ...
>>>>>>>> Director: ...
>>>>>>>> Producer: ...
>>>>>>>>
>>>>>>>> Obviously I need to associate the required metadata-fields with
>>>>>>>> their source-type. I can think of two ways to do this:
>>>>>>>>
>>>>>>>> - Add a field to each tiddler type called "required-fields"
>>>>>>>> which lists the required metadata-fields.
>>>>>>>> - Create separate tiddlers for each possible metadata-field,
>>>>>>>> then tag them with any source-type that requires them.
>>>>>>>>
>>>>>>>> It's not obvious to me that there is any functional difference
>>>>>>>> between these two options, but if I make a bad choice it will be
>>>>>>>> difficult
>>>>>>>> to change down the line. So my question is: *Is there a reason
>>>>>>>> that one of these approaches is better than the other?*
>>>>>>>>
>>>>>>>> Thanks in advance for you help.
>>>>>>>>
>>>>>>>
--
You received this message because you are subscribed to the Google Groups
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/tiddlywiki/7d5ef636-f4f1-4a46-8097-def685223cc2n%40googlegroups.com.