Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for creating multiple beds #5413

Merged
merged 37 commits into from
Aug 2, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
d452a48
Merge pull request #1 from coronasafe/develop
siddnikh May 21, 2022
1195279
Merge branch 'coronasafe:develop' into develop
siddnikh May 22, 2022
57b5d38
Merge pull request #2 from coronasafe/develop
siddnikh May 30, 2022
7b8c8a6
Merge pull request #3 from coronasafe/develop
siddnikh Jun 5, 2022
4e93866
Merge pull request #4 from coronasafe/develop
siddnikh Jun 20, 2022
bf0f583
Merge pull request #5 from coronasafe/develop
siddnikh Jun 23, 2022
2afbb09
Merge pull request #6 from coronasafe/develop
siddnikh Jun 23, 2022
1999a8c
Merge pull request #7 from coronasafe/develop
siddnikh Jun 23, 2022
0115ac3
Merge pull request #8 from coronasafe/develop
siddnikh Jul 9, 2022
5c38998
Merge pull request #9 from coronasafe/develop
siddnikh Jul 30, 2022
50077ef
Merge pull request #10 from coronasafe/develop
siddnikh Aug 8, 2022
8a7a123
Merge pull request #11 from coronasafe/develop
siddnikh Aug 27, 2022
ad6c76c
Merge pull request #12 from coronasafe/develop
siddnikh Sep 27, 2022
9437221
Merge pull request #13 from coronasafe/develop
siddnikh Oct 14, 2022
986ae40
Merge pull request #14 from coronasafe/develop
siddnikh Oct 29, 2022
f33550f
Merge pull request #15 from coronasafe/develop
siddnikh Nov 27, 2022
82dfd78
Merge pull request #16 from coronasafe/develop
siddnikh Dec 5, 2022
a950a01
Merge pull request #17 from coronasafe/develop
siddnikh Dec 16, 2022
7617325
Merge pull request #18 from coronasafe/develop
siddnikh Jan 3, 2023
6480afe
Merge pull request #19 from coronasafe/develop
siddnikh Jan 11, 2023
c2ae785
Merge pull request #20 from coronasafe/develop
siddnikh Jan 24, 2023
518af00
Merge branch 'develop' of https://github.com/siddnikh/care_fe into de…
siddnikh Apr 25, 2023
37c9534
Merge branch 'develop' of https://github.com/siddnikh/care_fe into de…
siddnikh Apr 25, 2023
0da6fd1
Added support for creating multiple beds for facility
siddnikh Apr 26, 2023
7bc87a4
Merge branch 'develop' into issue#5402
siddnikh Apr 26, 2023
432b623
Minor fixes
siddnikh May 16, 2023
66b4ddb
Merge branch 'develop' into issue#5402
siddnikh May 16, 2023
320a90c
Modified to allow creation of upto 100 beds
siddnikh Jul 11, 2023
95d8707
Merge branch 'issue#5402' of https://github.com/siddnikh/care_fe into…
siddnikh Jul 11, 2023
2f4c5a3
Merge branch 'develop' into issue#5402
siddnikh Jul 11, 2023
c57a046
Merge branch 'develop' into issue#5402
nihal467 Jul 18, 2023
c2bba60
Merge branch 'develop' into issue#5402
rithviknishad Jul 19, 2023
64b44f1
fix conflicts
rithviknishad Jul 19, 2023
7037407
Merge branch 'develop' into issue#5402
rithviknishad Jul 24, 2023
764b152
fix hidden label and required
rithviknishad Jul 24, 2023
b41da6b
Merge branch 'develop' into issue#5402
rithviknishad Aug 1, 2023
9157e66
Merge branch 'develop' into issue#5402
nihal467 Aug 1, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
145 changes: 90 additions & 55 deletions src/Components/Facility/AddBedForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
updateFacilityBed,
} from "../../Redux/actions";
import * as Notification from "../../Utils/Notifications.js";
import CheckBoxFormField from "../Form/FormFields/CheckBoxFormField";
import { SelectFormField } from "../Form/FormFields/SelectFormField";
import { LOCATION_BED_TYPES } from "../../Common/constants";
import { navigate } from "raviger";
Expand All @@ -35,14 +36,17 @@ export const AddBedForm = (props: BedFormProps) => {
const [facilityName, setFacilityName] = useState("");
const [locationName, setLocationName] = useState("");
const [bedName, setBedName] = useState("");
const [multipleBeds, setMultipleBeds] = useState(false);
const [numberOfBeds, setNumberOfBeds] = useState(1); //default = 1
const [errors, setErrors] = useState({
name: "",
description: "",
bedType: "",
numberOfBeds: "",
});

const headerText = !bedId ? "Add Bed" : "Update Bed";
const buttonText = !bedId ? "Add Bed" : "Update Bed";
const buttonText = !bedId ? "Add Bed(s)" : "Update Bed";

useEffect(() => {
async function fetchFacilityLocationAndBed() {
Expand All @@ -65,6 +69,7 @@ export const AddBedForm = (props: BedFormProps) => {
setBedName(res?.data?.name || "");
setDescription(res?.data?.description || "");
setBedType(res?.data?.bed_type || "");
setNumberOfBeds(res?.data?.number_of_beds || "");
}
setIsLoading(false);
}
Expand All @@ -75,6 +80,7 @@ export const AddBedForm = (props: BedFormProps) => {
name: string;
description: string;
bed_type: string;
number_of_beds: number;
}) => {
let isValid = true;
if (!data.name) {
Expand All @@ -85,6 +91,24 @@ export const AddBedForm = (props: BedFormProps) => {
isValid = false;
setErrors((prev) => ({ ...prev, bedType: "Please select a bed type" }));
}
if (multipleBeds === false) {
setNumberOfBeds(1);
}
if (data.number_of_beds < 1) {
isValid = false;
setErrors((prev) => ({
...prev,
numberOfBeds: "Please enter a number larger than 0.",
}));

if (data.number_of_beds > 100) {
isValid = false;
setErrors((prev) => ({
...prev,
numberOfBeds: "Please enter a number smaller than or equal to 100.",
}));
}
}

return isValid;
};
Expand All @@ -101,6 +125,7 @@ export const AddBedForm = (props: BedFormProps) => {
name,
description,
bed_type: bedType,
number_of_beds: numberOfBeds,
};

if (!validateInputs(data)) return;
Expand All @@ -116,7 +141,7 @@ export const AddBedForm = (props: BedFormProps) => {
if (res && (res.status === 201 || res.status === 200)) {
const notificationMessage = bedId
? "Bed updated successfully"
: "Bed created successfully";
: "Bed(s) created successfully";

navigate(`/facility/${facilityId}/location/${locationId}/beds`, {
replace: true,
Expand Down Expand Up @@ -150,59 +175,69 @@ export const AddBedForm = (props: BedFormProps) => {
}),
}}
>
<div className="mt-10">
<Card>
<form onSubmit={(e) => handleSubmit(e)}>
<div className="md:p-4">
<div className="mt-2 grid grid-cols-1 gap-4">
<div>
<TextFormField
name="name"
type="text"
label="Name"
id="name"
required
value={name}
onChange={(e) => setName(e.value)}
error={errors.name}
/>
</div>
<div>
<TextAreaFormField
rows={5}
label="Description"
name="description"
value={description}
onChange={(e) => setDescription(e.value)}
error={errors.description}
/>
</div>
<div>
<SelectFormField
id="bed-type"
name="bed_type"
label="Bed Type"
required
options={LOCATION_BED_TYPES}
optionValue={(bedType) => bedType.id}
optionLabel={(bed) => bed.name}
value={bedType}
onChange={({ value }) => {
setBedType(value);
}}
error={errors.bedType}
/>
</div>

<div className="flex flex-col gap-3 sm:flex-row sm:justify-between">
<Cancel onClick={handleCancel} />
<Submit onClick={handleSubmit} label={buttonText} />
</div>
</div>
</div>
</form>
</Card>
</div>
<Card className="mt-10 lg:p-6">
<form onSubmit={(e) => handleSubmit(e)}>
<TextFormField
name="name"
type="text"
label="Name"
id="name"
required
value={name}
onChange={(e) => setName(e.value)}
error={errors.name}
/>
<TextAreaFormField
rows={5}
label="Description"
name="description"
value={description}
onChange={(e) => setDescription(e.value)}
error={errors.description}
/>

<SelectFormField
id="bed-type"
className="w-full"
name="bed_type"
label="Bed Type"
required
options={LOCATION_BED_TYPES}
optionLabel={(option) => option.name}
optionValue={(option) => option.id}
value={bedType}
onChange={(e) => setBedType(e.value)}
error={errors.bedType}
/>

{!bedId && (
<>
<CheckBoxFormField
label="Do you want to make multiple beds?"
onChange={() => {
setMultipleBeds(!multipleBeds);
if (!multipleBeds) setNumberOfBeds(1);
}}
name={"multipleBeds"}
/>
<TextFormField
name="number_of_beds"
disabled={!multipleBeds}
label="Number of beds"
type="number"
value={numberOfBeds.toString()}
min={1}
max={100}
onChange={(e) => setNumberOfBeds(Number(e.value))}
/>
</>
)}
<div className="mt-4 flex flex-col gap-3 sm:flex-row sm:justify-end">
<Cancel onClick={handleCancel} />
<Submit onClick={handleSubmit} label={buttonText} />
</div>
</form>
</Card>
</Page>
</div>
);
Expand Down
2 changes: 1 addition & 1 deletion src/Components/Facility/BedManagement.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ export const BedManagement = (props: BedManagementProps) => {
authorizeFor={NonReadOnlyUsers}
>
<CareIcon className="care-l-plus text-lg" />
Add New Bed
Add New Bed(s)
</ButtonV2>
</div>
{bed}
Expand Down
2 changes: 1 addition & 1 deletion src/style/CAREUI.css
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
}

.cui-dropdown-base {
@apply z-40 w-full rounded-b-md xl:rounded-lg shadow-lg overflow-auto max-h-96 bg-gray-100 divide-y divide-gray-300 ring-1 ring-gray-400 focus:outline-none
@apply z-40 w-full rounded-b-md xl:rounded-b-lg shadow-lg overflow-auto max-h-96 bg-gray-100 divide-y divide-gray-300 ring-1 ring-gray-400 focus:outline-none
}

.cui-card {
Expand Down
Loading