[
https://issues.apache.org/jira/browse/AIRAVATA-3324?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Marcus Christie resolved AIRAVATA-3324.
---------------------------------------
Resolution: Fixed
> Custom input editor: autocomplete input editor
> ----------------------------------------------
>
> Key: AIRAVATA-3324
> URL: https://issues.apache.org/jira/browse/AIRAVATA-3324
> Project: Airavata
> Issue Type: New Feature
> Components: Django Portal
> Reporter: Marcus Christie
> Assignee: Marcus Christie
> Priority: Major
>
> Create an autocomplete input editor that allows user to type and get
> autocompleted matching results in a dropdown. Selecting a dropdown item
> populates the input editor with that value.
> The frontend component will make HTTP requests to a configured URL to fetch
> matching results for the currently entered search string. It's up to the
> backed URL to determine from where to get the matching results, for example,
> it could retrieve them from a database or file or a third party service.
> h3. Configuring autocomplete input editor
> {code}
> {
> "editor": {
> "ui-component-id": "autocomplete-input-editor",
> "config": {
> "url": "/custom/search/"
> }
> }
> }
> {code}
> h3. Backend URL contract
> - URL is called with query parameter {{search}} with value of whatever the
> user has currently typed
> - URL should return a JSON response with a {{search}} key and the value of
> that key used for the search and an {{results}} key with a list matching
> results, limited to the top 10. Each result should have a {{text}} key with
> the text displayed to the user and a {{value}} key which is the value applied
> to the experiment input if selected. For example:
> {code}
> {
> "search": "mammal",
> "results": [
> {
> "text": "Horse",
> "value": "horse"
> },
> {
> "text": "Mouse",
> "value": "mouse"
> }
> ]
> }
> {code}
> - URL can also be called with query parameter {{exact}} with a value that was
> previously returned. This call is made by the UI to retrieve the "text" value
> to display to the user for this value. The JSON response should be similar to
> the above except that it should only have one result:
> {code}
> {
> "search": "horse",
> "results": [
> {
> "text": "Horse",
> "value": "horse"
> }
> ]
> }
> {code}
> - If the {{exact}} query parameter is specified and there is no match for
> that value, the JSON response should have HTTP status 404. The error reason
> can be added to the "detail" key of the response body, for example:
> {code}
> {
> "detail": "No matching value was found."
> }
> {code}
> h5. TODO
> - [x] Load search results as user types
> - [x] do we need a search mode where it searches for a unique value? This way
> the text to display could be queried for when re-editing.
> - [x] load the text for a unique value when re-editing
> - [x] get url from input metadata
> - [x] better UI for displaying/cancelling selected value
> - [x] simplify contract for looking up a value by id
> - [x] debounce updates to the search string?
> - [x] documentation
--
This message was sent by Atlassian Jira
(v8.3.4#803005)