// SPDX-License-Identifier: AGPL-3.0
import * as React from "react";
-import { Field } from "redux-form";
-import { TextField } from "~/components/text-field/text-field";
-import { Checkbox, FormControlLabel } from '@material-ui/core';
+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';
+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={TextField}
- label="Type"/>;
+ component={NativeSelectField}
+ items={[
+ { key: '', value: 'Any' },
+ { key: ResourceKind.COLLECTION, value: 'Collection' },
+ { key: ResourceKind.PROJECT, value: 'Project' },
+ { key: ResourceKind.PROCESS, value: 'Process' }
+ ]} />;
export const SearchBarClusterField = () =>
<Field
name='cluster'
- component={TextField}
- label="Cluster name" />;
+ component={NativeSelectField}
+ items={[
+ { key: '', value: 'Any' },
+ { key: ClusterObjectType.INDIANAPOLIS, value: 'Indianapolis' },
+ { key: ClusterObjectType.KAISERAUGST, value: 'Kaiseraugst' },
+ { key: ClusterObjectType.PENZBERG, value: 'Penzberg' }
+ ]} />;
-export const SearchBarProjectField = () =>
+export const SearchBarProjectField = () =>
<Field
- name='project'
- component={TextField}
- label="Project name" />;
+ name='projectUuid'
+ component={ProjectsPicker} />;
-export const SearchBarTrashField = () =>
- <FormControlLabel
- control={
- <Checkbox
- checked={false}
- value="true"
- color="primary"
- />
- }
- label="In trash" />;
+const ProjectsPicker = (props: WrappedFieldProps) =>
+ <div style={{ height: '100px', display: 'flex', flexDirection: 'column', overflow: 'overlay' }}>
+ <HomeTreePicker
+ pickerId={SEARCH_BAR_ADVANCE_FORM_PICKER_ID}
+ toggleItemActive={
+ (_: any, { id }: TreeItem<ProjectsTreePickerItem>) => {
+ props.input.onChange(id);
+ }
+ } />
+ </div>;
-export const SearchBarDataFromField = () =>
+export const SearchBarTrashField = () =>
<Field
- name='dataFrom'
- component={TextField}
- label="From" />;
+ name='inTrash'
+ component={CheckboxField}
+ label="In trash" />;
-export const SearchBarDataToField = () =>
+export const SearchBarDateFromField = () =>
<Field
- name='dataTo'
- component={TextField}
- label="To" />;
+ name='dateFrom'
+ component={DateTextField} />;
-export const SearchBarKeyField = () =>
+export const SearchBarDateToField = () =>
<Field
- name='key'
- component={TextField}
- label="Key" />;
+ name='dateTo'
+ component={DateTextField} />;
-export const SearchBarValueField = () =>
- <Field
- name='value'
- component={TextField}
- label="Value" />;
+export const SearchBarPropertiesField = () =>
+ <FieldArray
+ name="properties"
+ component={SearchBarAdvancedPropertiesView} />;
-export const SearchBarSaveSearchField = () =>
- <FormControlLabel
- control={
- <Checkbox
- checked={false}
- value="true"
- color="primary"
- />
- }
- label="Save search query" />;
+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 = () =>
+ <Field
+ name='saveQuery'
+ component={CheckboxField}
+ 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" />;