- function toggleOptions() {
- var name = $(this).val(),
- $valField = $(this).closest('tr').find('.api-param-value');
- if (options[name]) {
- $valField.val('').select2({
- multiple: true,
+ function renderValueField() {
+ var $row = $(this).closest('tr'),
+ name = $('input.api-param-name', $row).val(),
+ operator = $('.api-param-op', $row).val(),
+ operatorType = $.inArray(operator, MULTI) > -1 ? 'multi' : ($.inArray(operator, BOOL) > -1 ? 'bool' : 'single'),
+ $valField = $('input.api-param-value', $row),
+ currentVal = $valField.val();
+ // Boolean fields only have 1 possible value
+ if (operatorType == 'bool') {
+ if ($valField.data('select2')) {
+ $valField.select2('destroy');
+ }
+ $valField.css('visibility', 'hidden').val('1');
+ return;
+ }
+ $valField.css('visibility', '');
+ // Option list input
+ if (options[name] && $.inArray(operator, TEXT) < 0) {
+ // Reset value before switching to a select from something else
+ if ($(this).is('.api-param-name') || !$valField.data('select2')) {
+ $valField.val('');
+ }
+ // When switching from multi-select to single select
+ else if (operatorType == 'single' && currentVal.indexOf(',') > -1) {
+ $valField.val(currentVal.split(',')[0]);
+ }
+ $valField.select2({
+ multiple: (operatorType === 'multi'),