mirror of
https://github.com/jjbrunton/Sauci.git
synced 2026-11-02 02:19:43 +00:00
Update
This commit is contained in:
1 parent
358c2be0ee
commit
b10eae1bf3
26 files changed
+2509
-53
No files matched your search
@@ -0,0 +1,64 @@
|
||||
import {
|
||||
List,
|
||||
Datagrid,
|
||||
TextField,
|
||||
DateField,
|
||||
FunctionField,
|
||||
SelectInput,
|
||||
TextInput,
|
||||
DateInput,
|
||||
} from 'react-admin';
|
||||
|
||||
const auditLogFilters = [
|
||||
<TextInput key="table" label="Table" source="table_name" alwaysOn />,
|
||||
<SelectInput
|
||||
key="action"
|
||||
source="action"
|
||||
choices={[
|
||||
{ id: 'INSERT', name: 'Create' },
|
||||
{ id: 'UPDATE', name: 'Update' },
|
||||
{ id: 'DELETE', name: 'Delete' },
|
||||
]}
|
||||
/>,
|
||||
<DateInput key="from" source="created_at@gte" label="From Date" />,
|
||||
<DateInput key="to" source="created_at@lte" label="To Date" />,
|
||||
];
|
||||
|
||||
export const AuditLogList = () => (
|
||||
<List
|
||||
filters={auditLogFilters}
|
||||
sort={{ field: 'created_at', order: 'DESC' }}
|
||||
>
|
||||
<Datagrid bulkActionButtons={false}>
|
||||
<DateField source="created_at" showTime label="Timestamp" />
|
||||
<TextField source="table_name" label="Table" />
|
||||
<FunctionField
|
||||
label="Action"
|
||||
render={(record: { action: string }) => {
|
||||
const actionMap: Record<string, string> = {
|
||||
INSERT: 'Create',
|
||||
UPDATE: 'Update',
|
||||
DELETE: 'Delete',
|
||||
};
|
||||
return actionMap[record.action] || record.action;
|
||||
}}
|
||||
/>
|
||||
<TextField source="record_id" label="Record ID" />
|
||||
<TextField source="admin_role" label="Role" />
|
||||
<FunctionField
|
||||
label="Changed Fields"
|
||||
render={(record: { changed_fields?: string[] }) =>
|
||||
record.changed_fields?.join(', ') || '-'
|
||||
}
|
||||
/>
|
||||
<FunctionField
|
||||
label="Summary"
|
||||
render={(record: { action: string; changed_fields?: string[] }) => {
|
||||
if (record.action === 'INSERT') return 'New record created';
|
||||
if (record.action === 'DELETE') return 'Record deleted';
|
||||
return `${record.changed_fields?.length || 0} fields changed`;
|
||||
}}
|
||||
/>
|
||||
</Datagrid>
|
||||
</List>
|
||||
);
|
||||
@@ -0,0 +1,21 @@
|
||||
import {
|
||||
List,
|
||||
Datagrid,
|
||||
TextField,
|
||||
DateField,
|
||||
TextInput,
|
||||
} from 'react-admin';
|
||||
|
||||
const coupleFilters = [
|
||||
<TextInput key="invite" label="Invite Code" source="invite_code" alwaysOn />,
|
||||
];
|
||||
|
||||
export const CoupleList = () => (
|
||||
<List filters={coupleFilters}>
|
||||
<Datagrid bulkActionButtons={false}>
|
||||
<TextField source="id" label="Couple ID" />
|
||||
<TextField source="invite_code" label="Invite Code" />
|
||||
<DateField source="created_at" label="Created" />
|
||||
</Datagrid>
|
||||
</List>
|
||||
);
|
||||
@@ -0,0 +1,59 @@
|
||||
import {
|
||||
Show,
|
||||
SimpleShowLayout,
|
||||
TextField,
|
||||
DateField,
|
||||
ReferenceField,
|
||||
ReferenceManyField,
|
||||
List,
|
||||
Datagrid,
|
||||
BooleanField,
|
||||
Labeled,
|
||||
} from 'react-admin';
|
||||
|
||||
export const MatchShow = () => (
|
||||
<Show>
|
||||
<SimpleShowLayout>
|
||||
<TextField source="id" label="Match ID" />
|
||||
<ReferenceField source="question_id" reference="questions" label="Question">
|
||||
<TextField source="text" />
|
||||
</ReferenceField>
|
||||
<TextField source="match_type" />
|
||||
<BooleanField source="is_new" label="Unread" />
|
||||
<DateField source="created_at" />
|
||||
|
||||
<Labeled label="Chat Messages" fullWidth>
|
||||
<ReferenceManyField
|
||||
reference="messages"
|
||||
target="match_id"
|
||||
sort={{ field: 'created_at', order: 'ASC' }}
|
||||
>
|
||||
<Datagrid bulkActionButtons={false}>
|
||||
<ReferenceField source="user_id" reference="profiles" link={false}>
|
||||
<TextField source="name" />
|
||||
</ReferenceField>
|
||||
<TextField source="content" label="Message" />
|
||||
<DateField source="created_at" showTime label="Sent" />
|
||||
<DateField source="read_at" showTime label="Read" emptyText="-" />
|
||||
</Datagrid>
|
||||
</ReferenceManyField>
|
||||
</Labeled>
|
||||
</SimpleShowLayout>
|
||||
</Show>
|
||||
);
|
||||
|
||||
export const MatchList = () => (
|
||||
<List>
|
||||
<Datagrid rowClick="show" bulkActionButtons={false}>
|
||||
<ReferenceField source="couple_id" reference="couples" link={false}>
|
||||
<TextField source="id" />
|
||||
</ReferenceField>
|
||||
<ReferenceField source="question_id" reference="questions">
|
||||
<TextField source="text" />
|
||||
</ReferenceField>
|
||||
<TextField source="match_type" />
|
||||
<BooleanField source="is_new" label="Unread" />
|
||||
<DateField source="created_at" />
|
||||
</Datagrid>
|
||||
</List>
|
||||
);
|
||||
@@ -0,0 +1,25 @@
|
||||
import {
|
||||
List,
|
||||
Datagrid,
|
||||
TextField,
|
||||
DateField,
|
||||
ReferenceField,
|
||||
TextInput,
|
||||
} from 'react-admin';
|
||||
|
||||
const messageFilters = [
|
||||
<TextInput key="content" label="Search content" source="content@ilike" alwaysOn />,
|
||||
];
|
||||
|
||||
export const MessageList = () => (
|
||||
<List filters={messageFilters} sort={{ field: 'created_at', order: 'DESC' }}>
|
||||
<Datagrid bulkActionButtons={false}>
|
||||
<ReferenceField source="user_id" reference="profiles" label="Sender">
|
||||
<TextField source="name" />
|
||||
</ReferenceField>
|
||||
<TextField source="content" />
|
||||
<DateField source="created_at" showTime label="Sent At" />
|
||||
<DateField source="read_at" showTime label="Read At" />
|
||||
</Datagrid>
|
||||
</List>
|
||||
);
|
||||
@@ -1,12 +1,29 @@
|
||||
import { List, Datagrid, TextField, BooleanField, DateField, ReferenceField } from 'react-admin';
|
||||
import {
|
||||
List,
|
||||
Datagrid,
|
||||
TextField,
|
||||
BooleanField,
|
||||
DateField,
|
||||
ReferenceField,
|
||||
Edit,
|
||||
SimpleForm,
|
||||
TextInput,
|
||||
BooleanInput,
|
||||
ReferenceInput,
|
||||
SelectInput,
|
||||
Show,
|
||||
SimpleShowLayout,
|
||||
ReferenceManyField,
|
||||
useRecordContext,
|
||||
TabbedShowLayout,
|
||||
} from 'react-admin';
|
||||
|
||||
export const ProfileList = () => (
|
||||
<List>
|
||||
<Datagrid>
|
||||
<Datagrid rowClick="show">
|
||||
<TextField source="name" />
|
||||
<TextField source="email" />
|
||||
<BooleanField source="is_premium" />
|
||||
<ReferenceField source="couple_id" reference="couples">
|
||||
<ReferenceField source="couple_id" reference="couples" link={false}>
|
||||
<TextField source="id" />
|
||||
</ReferenceField>
|
||||
<DateField source="created_at" />
|
||||
@@ -14,9 +31,71 @@ export const ProfileList = () => (
|
||||
</List>
|
||||
);
|
||||
|
||||
export const ProfileShow = () => (
|
||||
<Show>
|
||||
<TabbedShowLayout>
|
||||
<TabbedShowLayout.Tab label="Profile">
|
||||
<TextField source="id" />
|
||||
<TextField source="name" />
|
||||
<BooleanField source="is_premium" />
|
||||
<ReferenceField source="couple_id" reference="couples">
|
||||
<TextField source="invite_code" />
|
||||
</ReferenceField>
|
||||
<DateField source="created_at" />
|
||||
</TabbedShowLayout.Tab>
|
||||
|
||||
<TabbedShowLayout.Tab label="Matches & Chats">
|
||||
<ReferenceManyField
|
||||
label="Matches"
|
||||
reference="matches"
|
||||
target="couple_id"
|
||||
source="couple_id"
|
||||
>
|
||||
<Datagrid rowClick="show" bulkActionButtons={false}>
|
||||
<ReferenceField source="question_id" reference="questions">
|
||||
<TextField source="text" />
|
||||
</ReferenceField>
|
||||
<TextField source="match_type" />
|
||||
<BooleanField source="is_new" label="Unread" />
|
||||
<DateField source="created_at" />
|
||||
</Datagrid>
|
||||
</ReferenceManyField>
|
||||
</TabbedShowLayout.Tab>
|
||||
|
||||
<TabbedShowLayout.Tab label="Responses">
|
||||
<ReferenceManyField
|
||||
label="Responses"
|
||||
reference="responses"
|
||||
target="user_id"
|
||||
>
|
||||
<Datagrid bulkActionButtons={false}>
|
||||
<ReferenceField source="question_id" reference="questions">
|
||||
<TextField source="text" />
|
||||
</ReferenceField>
|
||||
<TextField source="answer" />
|
||||
<DateField source="created_at" />
|
||||
</Datagrid>
|
||||
</ReferenceManyField>
|
||||
</TabbedShowLayout.Tab>
|
||||
</TabbedShowLayout>
|
||||
</Show>
|
||||
);
|
||||
|
||||
export const ProfileEdit = () => (
|
||||
<Edit>
|
||||
<SimpleForm>
|
||||
<TextInput source="name" />
|
||||
<BooleanInput source="is_premium" label="Premium Status" />
|
||||
<ReferenceInput source="couple_id" reference="couples">
|
||||
<SelectInput optionText="id" />
|
||||
</ReferenceInput>
|
||||
</SimpleForm>
|
||||
</Edit>
|
||||
);
|
||||
|
||||
export const ResponseList = () => (
|
||||
<List>
|
||||
<Datagrid>
|
||||
<Datagrid bulkActionButtons={false}>
|
||||
<ReferenceField source="user_id" reference="profiles">
|
||||
<TextField source="name" />
|
||||
</ReferenceField>
|
||||
|
||||
Reference in new issue
Block a user