- Fixed MacOS release and moved UCL site into repository Reviewed-on: #3 Co-authored-by: Leon Mika <lmika@lmika.org> Co-committed-by: Leon Mika <lmika@lmika.org>
		
			
				
	
	
		
			75 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| module: ext
 | |
| docs: |
 | |
|   Provides access to the extension points scripts can used to extend the functionality of Dynamo-Browse.
 | |
|   
 | |
|   This module is only available for scripts loaded using the [load-script]() command.  
 | |
| symbols:
 | |
|   - name: command
 | |
|     syntax: ext.command(name, fn)
 | |
|     docs: |
 | |
|       Defines a new command, which can be invoked by entering _name_ within the main view mode.
 | |
|       The parameter _fn_ must be a function, which will be executed when the _name_ command is entered
 | |
|       while in view mode.
 | |
|       
 | |
|       The command can accept arguments, which will be passed in to the parameters of _fn_. The number
 | |
|       of command arguments must match the number of parameters, except for any function arguments with
 | |
|       a default value.      
 | |
|     example: |
 | |
|       ext.command("add", func(x, y) {
 | |
|         sum := x + y
 | |
|         ui.print("x + y = ", sum)
 | |
|       })      
 | |
|   - name: related_items
 | |
|     syntax: ext.related_items(table, fn)
 | |
|     docs: |
 | |
|       Defines a "related item" for a table. These act as quick jumps between tables.
 | |
|       When the user presses Shift+O, all the related item functions that match the given
 | |
|       table will be evaluated. Each one is to return zero or more related queries, which are presented
 | |
|       to the user as a list. When the user selects one, the query will be evaluated and the result set will
 | |
|       be shown.
 | |
|       
 | |
|       The _table_ parameter is the name of the table of the related items managed by this function.
 | |
|       If the last character of the table is `*`, then _table_ will be treated as a name prefix.
 | |
|       
 | |
|       The _fn_ will produce a list of queries that are related to a given item. The function takes the currently
 | |
|       selected item as the argument, and is expected to produce a list of maps, with each map having the following
 | |
|       fields:
 | |
|         
 | |
|       - `label`: The label to use for the picker option
 | |
|       - `query`: The query expression that will run when the option is chosen
 | |
|       - `table`: The table to run the query over. If not set, the current table will be used
 | |
|       - `args`: A map of query placeholder values
 | |
|       - `on_select`: An optional function that will run in place of a predefined query. If set, the `query` field will
 | |
|         be ignored.      
 | |
|     example: |
 | |
|       ext.related_items("user-account", func(item) {
 | |
|         return [
 | |
|           {
 | |
|             "label": "Customer",
 | |
|             "table": "billing",
 | |
|             "query": "email=$email",
 | |
|             "args": {"email": item.attr("email")},
 | |
|           },
 | |
|         ]
 | |
|       })	          
 | |
|   - name: key_binding
 | |
|     syntax: ext.key_binding(name, options, fn)
 | |
|     docs: |
 | |
|       Defines a new key binding, which can be invoked while viewing the table.
 | |
|       
 | |
|       The _name_ parameter defines the binding name. The binding names will be prefixed with
 | |
|       `ext.<script_basename>`. This name can be used with the [rebind]() command.
 | |
|       
 | |
|       The _option_ parameter defines a map of options. The only valid option is
 | |
|       `default`, which is the default key to use for this binding. If unset, the binding will
 | |
|       have no key binding and can only be bound using the [rebind]() command.
 | |
|       
 | |
|       The _fn_ parameter is the function that will be invoked when the key is pressed.
 | |
|       It must accept no parameters.      
 | |
|     example: |
 | |
|       // Script name: sayhello.tm
 | |
|       //
 | |
|       // This binding can be rebound with the command "rebind ext.sayhello.hello <key>"
 | |
|       ext.key_binding("hello", {"default": "H"}, func() {
 | |
|         ui.print("Hello")
 | |
|       })       |