init equipment & change-status
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
import {
|
||||
AutocompleteInput,
|
||||
Create,
|
||||
DateInput,
|
||||
ReferenceInput,
|
||||
SelectInput,
|
||||
SimpleForm,
|
||||
TextInput as RaTextInput,
|
||||
} from 'react-admin';
|
||||
import { equipmentStatusChoices, equipmentOptionText } from '../equipment/shared';
|
||||
|
||||
export function ChangeEquipmentStatusCreate() {
|
||||
return (
|
||||
<Create>
|
||||
<SimpleForm>
|
||||
<ReferenceInput source="equipmentId" reference="equipment">
|
||||
<AutocompleteInput
|
||||
label="Оборудование"
|
||||
optionText={equipmentOptionText}
|
||||
filterToQuery={(searchText) => ({ q: searchText })}
|
||||
/>
|
||||
</ReferenceInput>
|
||||
<SelectInput source="newStatus" label="Новый статус" choices={equipmentStatusChoices} required />
|
||||
<DateInput source="date" label="Дата" required />
|
||||
<RaTextInput source="number" label="Номер" />
|
||||
<RaTextInput source="responsible" label="Ответственный" />
|
||||
</SimpleForm>
|
||||
</Create>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
import {
|
||||
AutocompleteInput,
|
||||
DateInput,
|
||||
Edit,
|
||||
ReferenceInput,
|
||||
SelectInput,
|
||||
SimpleForm,
|
||||
TextInput as RaTextInput,
|
||||
} from 'react-admin';
|
||||
import { equipmentStatusChoices, equipmentOptionText } from '../equipment/shared';
|
||||
|
||||
export function ChangeEquipmentStatusEdit() {
|
||||
return (
|
||||
<Edit>
|
||||
<SimpleForm>
|
||||
<ReferenceInput source="equipmentId" reference="equipment">
|
||||
<AutocompleteInput
|
||||
label="Оборудование"
|
||||
optionText={equipmentOptionText}
|
||||
filterToQuery={(searchText) => ({ q: searchText })}
|
||||
/>
|
||||
</ReferenceInput>
|
||||
<SelectInput source="newStatus" label="Новый статус" choices={equipmentStatusChoices} />
|
||||
<DateInput source="date" label="Дата" />
|
||||
<RaTextInput source="number" label="Номер" />
|
||||
<RaTextInput source="responsible" label="Ответственный" />
|
||||
</SimpleForm>
|
||||
</Edit>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
import {
|
||||
Datagrid,
|
||||
DateField,
|
||||
FilterButton,
|
||||
List,
|
||||
ReferenceField,
|
||||
SelectArrayInput,
|
||||
SelectField,
|
||||
TextField,
|
||||
TextInput,
|
||||
TopToolbar,
|
||||
} from 'react-admin';
|
||||
import { equipmentStatusChoices } from '../equipment/shared';
|
||||
|
||||
const statusFilters = [
|
||||
<TextInput key="q" source="q" label="Поиск" alwaysOn />,
|
||||
<TextInput key="equipmentId" source="equipmentId" label="Оборудование" />,
|
||||
<SelectArrayInput key="newStatus" source="newStatus" label="Новый статус" choices={equipmentStatusChoices} />,
|
||||
];
|
||||
|
||||
const ListActions = () => (
|
||||
<TopToolbar>
|
||||
<FilterButton />
|
||||
</TopToolbar>
|
||||
);
|
||||
|
||||
export function ChangeEquipmentStatusList() {
|
||||
return (
|
||||
<List filters={statusFilters} actions={<ListActions />} sort={{ field: 'date', order: 'DESC' }}>
|
||||
<Datagrid rowClick="show">
|
||||
<TextField source="id" />
|
||||
<ReferenceField source="equipmentId" reference="equipment" link="show">
|
||||
<TextField source="name" />
|
||||
</ReferenceField>
|
||||
<SelectField source="newStatus" choices={equipmentStatusChoices} />
|
||||
<TextField source="number" />
|
||||
<DateField source="date" />
|
||||
<TextField source="responsible" />
|
||||
</Datagrid>
|
||||
</List>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import { DateField, ReferenceField, SelectField, Show, SimpleShowLayout, TextField } from 'react-admin';
|
||||
import { equipmentStatusChoices } from '../equipment/shared';
|
||||
|
||||
export function ChangeEquipmentStatusShow() {
|
||||
return (
|
||||
<Show>
|
||||
<SimpleShowLayout>
|
||||
<TextField source="id" />
|
||||
<ReferenceField source="equipmentId" reference="equipment" link="show">
|
||||
<TextField source="name" />
|
||||
</ReferenceField>
|
||||
<SelectField source="newStatus" choices={equipmentStatusChoices} />
|
||||
<TextField source="number" />
|
||||
<DateField source="date" />
|
||||
<TextField source="responsible" />
|
||||
</SimpleShowLayout>
|
||||
</Show>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
export { ChangeEquipmentStatusCreate as EquipmentStatusChangeCreate } from '../change-equipment-status/ChangeEquipmentStatusCreate';
|
||||
@@ -0,0 +1 @@
|
||||
export { ChangeEquipmentStatusEdit as EquipmentStatusChangeEdit } from '../change-equipment-status/ChangeEquipmentStatusEdit';
|
||||
@@ -0,0 +1 @@
|
||||
export { ChangeEquipmentStatusList as EquipmentStatusChangeList } from '../change-equipment-status/ChangeEquipmentStatusList';
|
||||
@@ -0,0 +1 @@
|
||||
export { ChangeEquipmentStatusShow as EquipmentStatusChangeShow } from '../change-equipment-status/ChangeEquipmentStatusShow';
|
||||
24
client/src/resources/equipment/EquipmentCreate.tsx
Normal file
24
client/src/resources/equipment/EquipmentCreate.tsx
Normal file
@@ -0,0 +1,24 @@
|
||||
import { Create, DateInput, SelectInput, SimpleForm, TextInput as RaTextInput } from 'react-admin';
|
||||
import { equipmentStatusChoices } from './shared';
|
||||
|
||||
const equipmentLabels = {
|
||||
dateOfInspection: 'Дата поверки',
|
||||
commissionedAt: 'Дата изготовления',
|
||||
name: 'Название',
|
||||
serialNumber: 'Серийный номер',
|
||||
status: 'Статус',
|
||||
};
|
||||
|
||||
export function EquipmentCreate() {
|
||||
return (
|
||||
<Create>
|
||||
<SimpleForm>
|
||||
<DateInput source="dateOfInspection" label={equipmentLabels.dateOfInspection} />
|
||||
<DateInput source="commissionedAt" label={equipmentLabels.commissionedAt} />
|
||||
<RaTextInput source="name" label={equipmentLabels.name} required />
|
||||
<RaTextInput source="serialNumber" label={equipmentLabels.serialNumber} required />
|
||||
<SelectInput source="status" label={equipmentLabels.status} choices={equipmentStatusChoices} required />
|
||||
</SimpleForm>
|
||||
</Create>
|
||||
);
|
||||
}
|
||||
24
client/src/resources/equipment/EquipmentEdit.tsx
Normal file
24
client/src/resources/equipment/EquipmentEdit.tsx
Normal file
@@ -0,0 +1,24 @@
|
||||
import { DateInput, Edit, SelectInput, SimpleForm, TextInput as RaTextInput } from 'react-admin';
|
||||
import { equipmentStatusChoices } from './shared';
|
||||
|
||||
const equipmentLabels = {
|
||||
dateOfInspection: 'Дата поверки',
|
||||
commissionedAt: 'Дата изготовления',
|
||||
name: 'Название',
|
||||
serialNumber: 'Серийный номер',
|
||||
status: 'Статус',
|
||||
};
|
||||
|
||||
export function EquipmentEdit() {
|
||||
return (
|
||||
<Edit>
|
||||
<SimpleForm>
|
||||
<DateInput source="dateOfInspection" label={equipmentLabels.dateOfInspection} />
|
||||
<DateInput source="commissionedAt" label={equipmentLabels.commissionedAt} />
|
||||
<RaTextInput source="name" label={equipmentLabels.name} />
|
||||
<RaTextInput source="serialNumber" label={equipmentLabels.serialNumber} />
|
||||
<SelectInput source="status" label={equipmentLabels.status} choices={equipmentStatusChoices} />
|
||||
</SimpleForm>
|
||||
</Edit>
|
||||
);
|
||||
}
|
||||
38
client/src/resources/equipment/EquipmentList.tsx
Normal file
38
client/src/resources/equipment/EquipmentList.tsx
Normal file
@@ -0,0 +1,38 @@
|
||||
import {
|
||||
Datagrid,
|
||||
DateField,
|
||||
FilterButton,
|
||||
List,
|
||||
SelectArrayInput,
|
||||
SelectField,
|
||||
TextField,
|
||||
TextInput,
|
||||
TopToolbar,
|
||||
} from 'react-admin';
|
||||
import { equipmentStatusChoices } from './shared';
|
||||
|
||||
const equipmentFilters = [
|
||||
<TextInput key="q" source="q" label="Поиск" alwaysOn />,
|
||||
<SelectArrayInput key="status" source="status" label="Статус" choices={equipmentStatusChoices} />,
|
||||
];
|
||||
|
||||
const ListActions = () => (
|
||||
<TopToolbar>
|
||||
<FilterButton />
|
||||
</TopToolbar>
|
||||
);
|
||||
|
||||
export function EquipmentList() {
|
||||
return (
|
||||
<List filters={equipmentFilters} actions={<ListActions />} sort={{ field: 'name', order: 'ASC' }}>
|
||||
<Datagrid rowClick="show">
|
||||
<TextField source="id" />
|
||||
<TextField source="name" />
|
||||
<TextField source="serialNumber" />
|
||||
<DateField source="dateOfInspection" />
|
||||
<DateField source="commissionedAt" />
|
||||
<SelectField source="status" choices={equipmentStatusChoices} />
|
||||
</Datagrid>
|
||||
</List>
|
||||
);
|
||||
}
|
||||
17
client/src/resources/equipment/EquipmentShow.tsx
Normal file
17
client/src/resources/equipment/EquipmentShow.tsx
Normal file
@@ -0,0 +1,17 @@
|
||||
import { DateField, SelectField, Show, SimpleShowLayout, TextField } from 'react-admin';
|
||||
import { equipmentStatusChoices } from './shared';
|
||||
|
||||
export function EquipmentShow() {
|
||||
return (
|
||||
<Show>
|
||||
<SimpleShowLayout>
|
||||
<TextField source="id" />
|
||||
<TextField source="name" />
|
||||
<TextField source="serialNumber" />
|
||||
<DateField source="dateOfInspection" />
|
||||
<DateField source="commissionedAt" />
|
||||
<SelectField source="status" choices={equipmentStatusChoices} />
|
||||
</SimpleShowLayout>
|
||||
</Show>
|
||||
);
|
||||
}
|
||||
18
client/src/resources/equipment/shared.ts
Normal file
18
client/src/resources/equipment/shared.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
export const equipmentStatusChoices = [
|
||||
{ id: 'Active', name: 'В эксплуатации' },
|
||||
{ id: 'Repair', name: 'В ремонте' },
|
||||
{ id: 'Reserve', name: 'В резерве' },
|
||||
{ id: 'WriteOff', name: 'Списано' },
|
||||
];
|
||||
|
||||
export const equipmentOptionText = (record?: {
|
||||
name?: string;
|
||||
serialNumber?: string;
|
||||
id?: string;
|
||||
}) => {
|
||||
if (!record) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return record.name ?? record.serialNumber ?? record.id ?? '';
|
||||
};
|
||||
Reference in New Issue
Block a user