X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/54e859c204c3952a8eaf96d2145dfa96c199b934..fe5d65e4e704358fab18d91dae5a97ff7659f5df:/src/views-components/form-fields/search-bar-form-fields.tsx

diff --git a/src/views-components/form-fields/search-bar-form-fields.tsx b/src/views-components/form-fields/search-bar-form-fields.tsx
index fbb2cbac1e..85abbe19f3 100644
--- a/src/views-components/form-fields/search-bar-form-fields.tsx
+++ b/src/views-components/form-fields/search-bar-form-fields.tsx
@@ -3,7 +3,7 @@
 // SPDX-License-Identifier: AGPL-3.0
 
 import * as React from "react";
-import { Field, WrappedFieldProps } from 'redux-form';
+import { Field, WrappedFieldProps, FieldArray, formValues } from 'redux-form';
 import { TextField, DateTextField } from "~/components/text-field/text-field";
 import { CheckboxField } from '~/components/checkbox-field/checkbox-field';
 import { NativeSelectField } from '~/components/select-field/select-field';
@@ -11,17 +11,24 @@ import { ResourceKind } from '~/models/resource';
 import { ClusterObjectType } from '~/models/search-bar';
 import { HomeTreePicker } from '~/views-components/projects-tree-picker/home-tree-picker';
 import { SEARCH_BAR_ADVANCE_FORM_PICKER_ID } from '~/store/search-bar/search-bar-actions';
+import { SearchBarAdvancedPropertiesView } from '~/views-components/search-bar/search-bar-advanced-properties-view';
+import { TreeItem } from "~/components/tree/tree";
+import { ProjectsTreePickerItem } from "~/views-components/projects-tree-picker/generic-projects-tree-picker";
+import { PropertyKeyInput } from '~/views-components/resource-properties-form/property-key-field';
+import { PropertyValueInput, PropertyValueFieldProps } from '~/views-components/resource-properties-form/property-value-field';
+import { VocabularyProp, connectVocabulary } from '~/views-components/resource-properties-form/property-field-common';
+import { compose } from 'redux';
 
 export const SearchBarTypeField = () =>
     <Field
         name='type'
         component={NativeSelectField}
         items={[
-            { key: '', value: 'Any'},
-            { key: ResourceKind.COLLECTION, value: 'Collection'},
+            { key: '', value: 'Any' },
+            { key: ResourceKind.COLLECTION, value: 'Collection' },
             { key: ResourceKind.PROJECT, value: 'Project' },
             { key: ResourceKind.PROCESS, value: 'Process' }
-        ]}/>;
+        ]} />;
 
 export const SearchBarClusterField = () =>
     <Field
@@ -34,52 +41,68 @@ export const SearchBarClusterField = () =>
             { key: ClusterObjectType.PENZBERG, value: 'Penzberg' }
         ]} />;
 
-export const SearchBarProjectField = () => 
+export const SearchBarProjectField = () =>
     <Field
         name='projectUuid'
         component={ProjectsPicker} />;
 
 const ProjectsPicker = (props: WrappedFieldProps) =>
     <div style={{ height: '100px', display: 'flex', flexDirection: 'column', overflow: 'overlay' }}>
-        <HomeTreePicker pickerId={SEARCH_BAR_ADVANCE_FORM_PICKER_ID} />
+        <HomeTreePicker
+            pickerId={SEARCH_BAR_ADVANCE_FORM_PICKER_ID}
+            toggleItemActive={
+                (_: any, { id }: TreeItem<ProjectsTreePickerItem>) => {
+                    props.input.onChange(id);
+                }
+            } />
     </div>;
 
-export const SearchBarTrashField = () => 
+export const SearchBarTrashField = () =>
     <Field
         name='inTrash'
         component={CheckboxField}
         label="In trash" />;
 
-export const SearchBarDataFromField = () => 
+export const SearchBarDateFromField = () =>
     <Field
         name='dateFrom'
         component={DateTextField} />;
 
-export const SearchBarDataToField = () =>
+export const SearchBarDateToField = () =>
     <Field
         name='dateTo'
         component={DateTextField} />;
 
-export const SearchBarKeyField = () => 
-    <Field
-        name='key'
-        component={TextField}
-        label="Key" />;
+export const SearchBarPropertiesField = () =>
+    <FieldArray
+        name="properties"
+        component={SearchBarAdvancedPropertiesView} />;
 
-export const SearchBarValueField = () => 
-    <Field
-        name='value'
-        component={TextField}
-        label="Value" />;
+export const SearchBarKeyField = connectVocabulary(
+    ({ vocabulary }: VocabularyProp) =>
+        <Field
+            name='key'
+            component={PropertyKeyInput}
+            vocabulary={vocabulary} />);
+
+export const SearchBarValueField = compose(
+    connectVocabulary,
+    formValues({ propertyKey: 'key' })
+)(
+    (props: PropertyValueFieldProps) =>
+        <Field
+            name='value'
+            component={PropertyValueInput}
+            {...props} />);
 
-export const SearchBarSaveSearchField = () => 
+export const SearchBarSaveSearchField = () =>
     <Field
         name='saveQuery'
         component={CheckboxField}
-        label="Save search query" />;
+        label="Save query" />;
 
-export const SearchBarQuerySearchField = () => 
+export const SearchBarQuerySearchField = () =>
     <Field
-        name='searchQuery'
+        name='queryName'
         component={TextField}
-        label="Search query name" />;
\ No newline at end of file
+        label="Query name" />;
