Newer
Older
import * as React from "react";
import {
Admin,
Resource,
List,
Datagrid,
Filter,
FilterProps,
SearchInput,
TextField,
NumberField,
Edit,
SimpleForm,
TextInput,
NumberInput,
} from "react-admin";
import { client } from "@logilab/cwclientlibjs";
import { formHelpers } from "./formHelpers";
<Show {...props}>
<SimpleShowLayout>
<TextField source="id" />
<TextField source="name" />
<TextField source="postal_address" />
<ReferenceField label="City" link="show" reference="City" source="is_in">
<TextField source="name" />
</ReferenceField>
<NumberField source="longitude" />
<NumberField source="latitude" />
</SimpleShowLayout>
</Show>
);
const MuseumEdit = (props: EditProps) => {
const inputProps = formHelpers["Museum"].getInputProps;
return (
<Edit {...props}>
<SimpleForm>
<NumberField source="id" />
<TextInput {...inputProps("name")} />
<NumberInput {...inputProps("latitude")} />
<NumberInput {...inputProps("longitude")} />
<TextInput {...inputProps("postal_address")} />
</SimpleForm>
</Edit>
);
};
const MuseumCreate = (props: CreateProps) => {
const inputProps = formHelpers["Museum"].getInputProps;
return (
<Create {...props}>
<SimpleForm>
<TextInput {...inputProps("name")} />
<NumberInput {...inputProps("latitude")} />
<NumberInput {...inputProps("longitude")} />
<TextInput {...inputProps("postal_address")} />
<ReferenceInput
label="City"
source="is_in"
reference="City"
sort={{ field: "name", order: "ASC" }}
filterToQuery={(text: string) => ({ name: text })}
>
<AutocompleteInput optionText="name" />
</ReferenceInput>
</SimpleForm>
</Create>
);
};
const MuseumFilter = (props: Omit<FilterProps, "children">) => (
<Filter {...props}>
<SearchInput source="name" alwaysOn />
</Filter>
);
<List {...props} filters={<MuseumFilter />}>
<NumberField source="id" />
<TextField source="name" />
<NumberField source="latitude" />
<NumberField source="longitude" />
<TextField source="postal_address" />
</Datagrid>
</List>
);
<List {...props}>
<Datagrid rowClick="show">
<TextField source="name" />
</Datagrid>
</List>
);
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
const CityEdit = (props: ListProps) => {
const inputProps = formHelpers["City"].getInputProps;
return (
<Edit {...props}>
<SimpleForm>
<TextInput {...inputProps("name")} />
<NumberInput {...inputProps("zip_code")} />
<TextInput {...inputProps("country")} />
</SimpleForm>
</Edit>
);
};
const CityCreate = (props: ListProps) => {
const inputProps = formHelpers["City"].getInputProps;
return (
<Create {...props}>
<SimpleForm>
<TextInput {...inputProps("name")} />
<NumberInput {...inputProps("zip_code")} />
<TextInput {...inputProps("country")} />
</SimpleForm>
</Create>
);
};
<Show {...props}>
<SimpleShowLayout>
<TextField source="name" />
<ReferenceArrayField
label="Museum"
reference="Museum"
source="reverse_is_in"
>
</Datagrid>
</ReferenceArrayField>
</SimpleShowLayout>
</Show>
);
const httpClient = new client.CwSimpleHttpClient("http://localhost:8080", true);
const rqlClient = new client.CwRqlClient(httpClient);
const dataProvider = createDataProvider(rqlClient, schema);
const App = (): JSX.Element => (
{
// authProvider={authProvider}
// use cwclientlibjs to get list of CWETypes
// and add one <Resource per type
}
<Resource
name="City"
list={CityList}
show={CityShow}
edit={CityEdit}
create={CityCreate}
/>
</Admin>
);
export default App;