Add a link to foreign keys in AWM

Hi XWiki Community,

I am using XWiki and trying to improve some of my App Within Minutes (AWM) applications/databases.
How is it possible to have a link to foreign keys in LiveTable instead of a single string?

For illustration, I am refering to the Movies an Contributors examples provided with the extension.
The links are intended to be in the red box.
Here is a screenshot for the ListView:

And now the DetailView:

Thank you in advance for your help!

Best Regards,
Luc

Hi all,

I finally found some hints/answers…

For the ListView, it is necessary to use "link"="auto" for ‘databaseList1’ in $columnsProperties:

{{velocity}}
#set ($columnsProperties = {
  'longText1': {"type":"text","filterable":false,"sortable":false,"html":true},
  'doc.title': {"type":"text","size":20,"displayName":"Title","link":"view"},
  'staticList1': {"type":"list","size":10},
  'date1': {"type":"text","size":10,"html":true},
  'databaseList1': {"size":10,"link":"auto"},
  'boolean1': {"type":"text","size":10},
  '_actions': {"sortable":false,"filterable":false,"html":true,"actions":["edit","delete"]}
})
#set ($options = {
  'className': 'Help.Applications.Movies.Code.MoviesClass',
  'translationPrefix': 'movies.livetable.',
  'tagCloud': true,
  'rowCount': 15,
  'maxPages': 10,
  'selectedColumn': 'longText1',
  'defaultOrder': 'asc'
})
#set ($columns = ['longText1', 'doc.title', 'staticList1', 'date1', 'databaseList1', 'boolean1', '_actions'])
#livetable('movies' $columns $columnsProperties $options)
{{/velocity}}

For the DetailView, it is necessary to replace $doc.display('databaseList1') by [[$doc.getValue('databaseList1')]]:

{{velocity}}
{{html wiki="true"}}
#set ($discard = $doc.use('Help.Applications.Movies.Code.MoviesClass'))
(% class="xform" %)
(((
  ; <label#if ($xcontext.action == 'edit') for="Help.Applications.Movies.Code.MoviesClass_0_title1"#end>$escapetool.xml($doc.displayPrettyName('title1', false, false))</label>
  : $doc.display('title1')
  ; <label#if ($xcontext.action == 'edit') for="Help.Applications.Movies.Code.MoviesClass_0_longText1"#end>$escapetool.xml($doc.displayPrettyName('longText1', false, false))</label>
  : $doc.display('longText1')
  ; <label#if ($xcontext.action == 'edit') for="Help.Applications.Movies.Code.MoviesClass_0_staticList1"#end>$escapetool.xml($doc.displayPrettyName('staticList1', false, false))</label>
  : $doc.display('staticList1')
  ; <label#if ($xcontext.action == 'edit') for="Help.Applications.Movies.Code.MoviesClass_0_date1"#end>$escapetool.xml($doc.displayPrettyName('date1', false, false))</label>
  : $doc.display('date1')
  ; <label#if ($xcontext.action == 'edit') for="Help.Applications.Movies.Code.MoviesClass_0_number1"#end>$escapetool.xml($doc.displayPrettyName('number1', false, false))</label>
  : $doc.display('number1')
  #if ($context.display == 'edit')
    ; <label for="Help.Applications.Movies.Code.MoviesClass_0_boolean1">$doc.display('boolean1')$escapetool.xml($doc.displayPrettyName('boolean1', false, false))</label>
  #else
    ; <label#if ($xcontext.action == 'edit') for="Help.Applications.Movies.Code.MoviesClass_0_boolean1"#end>$escapetool.xml($doc.displayPrettyName('boolean1', false, false))</label>
    : $doc.display('boolean1')
  #end
  ; <label#if ($xcontext.action == 'edit') for="Help.Applications.Movies.Code.MoviesClass_0_databaseList1"#end>$escapetool.xml($doc.displayPrettyName('databaseList1', false, false))</label>
  : [[$doc.getValue('databaseList1')]]
  ; <label#if ($xcontext.action == 'edit') for="Help.Applications.Movies.Code.MoviesClass_0_content1"#end>$escapetool.xml($doc.displayPrettyName('content1', false, false))</label>
  : $doc.display('content1')
)))
{{/html}}
{{/velocity}}

These are my investigations, probably you have better solutions. If it is the case, let me know please!
I am wondering why this is not the default behavior, it would need less customization.

Hope it can help others!

Best Regards,
Luc