Specification Audit
Active Version | v2.0 | CDAP >= v3.0 | Initial Version |
---|---|---|---|
Dev Version | v2.1 | CDAP > 3.4 | Adding label to metadata section to display better plugin names. CDAP-5340 |
...
‘Groups’ refers to collection of configurations of a plugin. An example structure of a configuration JSON would look like this - Sample JSON
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "metadata": {...}, "inputs": null, "configuration-groups": [ {group1}, {group2}, ... ], "output": [ {configuration-output-1}, {configuration-output-2}, ... ] } |
...
In the above mentioned sample JSON, fields 1 & 2 are configurations of CustomPlugin defined in the backend. We could now configure them in the JSON so that it gets easier to use view/edit them in hydrator.
Configurations for a field
Configurations of a field are the set of properties that we define in the JSON, that governs what/how that particular plugin field gets rendered in hydrator.
...
label - Label for the field. For instance a field coming from the backend like time.ticks.sec could be labelled as ‘Time in Seconds’.
widget-attributes - Attribute/values required by the widget. For instance, list of values for select widget or a default value for a number-textbox. More details should be available in widgets list section.
plugin-function - Function available for the plugin. For instance, Database batchsource plugin have a getSchema endpoint method. output-property signify the plugin property that will get updated from this plugin-function action.
From the above explanation we could enhance the above mentioned sample JSON to something like this,
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "configuration-groups": [ { "label": "My Group Title", "properties": [ { "name": "Field1", "widget-type": "numberbox", "widget-attributes": { "default": "1" }, "plugin-function": { "method": "POST", "endpoint": "getSchema", "output-property": "schema" } }, { "name": "Field2", "widget-type": "json-editor" } ] } ], "output": [ {output-property1} {output-property2} ... ] } |
Widgets
A widget in UI represents a component that we could use to set the value of a property of a plugin. It could be anything representable in HTML. For instance if our CustomPlugin has a property that requires a JSON value, we could use a json-editor to set value to it. A widget, in general, is a component that we can use to represent a property of a plugin to attach a value to it. The following are the list of widgets that we right now have in CDAP that could be readily be used.
Widget-type | Description | Attributes | Output data type | Sample JSON | |||||||
textbox | Default html textbox to enter any string | default | string |
| |||||||
number | Default html number textbox. Can enter only valid numbers. | default, min, max. (default should be between min and max) | int |
| |||||||
passwordbox | Default html password box. | NA | string |
| |||||||
datetime | Date time picker. Used to set date (in string) for any property | default, format (format could be ISO, long, short or full format dates.Reference | string |
| |||||||
csv | Comma separated values. Each value is entered in a separate box | delimiter (allows to change the delimiter to be any other symbol apart from ‘,’) | comma-separated string |
| |||||||
json-editor | Json editor to pretty-print and auto format JSON while typing | default | string |
| |||||||
javascript-editor, python-editor | An editor to write Javscript or Python as a value for a property. | default | string |
| |||||||
keyvalue | A key-value editor which allows you to construct map. | string |
| ||||||||
select | A html dropdown with a list of values. Allows to choose one from the list. | values, default | string |
|
Versioning
...