Skip to content

Commit 74ddf9e

Browse files
committed
Fixed edit planTypes and blocks
1 parent f719b5e commit 74ddf9e

File tree

5 files changed

+33
-14
lines changed

5 files changed

+33
-14
lines changed

src/serving/components/BulkLessonSchedule.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,12 +175,12 @@ export const BulkLessonSchedule: React.FC<Props> = (props) => {
175175
ministryId: props.ministryId,
176176
planTypeId: props.planTypeId,
177177
serviceDate: entry.date,
178-
name: `${formattedDate} - ${entry.venue!.title}`,
178+
name: `${formattedDate} - ${entry.lesson.title}`,
179179
notes: "",
180180
serviceOrder: true,
181181
providerId: selectedProviderId,
182182
providerPlanId: entry.venue!.path,
183-
providerPlanName: entry.venue!.title,
183+
providerPlanName: entry.lesson.title,
184184
contentType: "provider",
185185
contentId: entry.venue!.id
186186
};

src/serving/components/LessonScheduleEdit.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export const LessonScheduleEdit: React.FC<Props> = (props) => {
2525
// Selected lesson state
2626
const [selectedVenueId, setSelectedVenueId] = useState<string>("");
2727
const [selectedVenueName, setSelectedVenueName] = useState<string>("");
28+
const [selectedLessonName, setSelectedLessonName] = useState<string>("");
2829
const [selectedContentPath, setSelectedContentPath] = useState<string>("");
2930
const [selectedProviderId, setSelectedProviderId] = useState<string>("");
3031

@@ -53,9 +54,10 @@ export const LessonScheduleEdit: React.FC<Props> = (props) => {
5354
setScheduledDate(DateHelper.toDate(e.target.value));
5455
};
5556

56-
const handleLessonSelect = useCallback((venueId: string, venueName?: string, contentPath?: string, providerId?: string) => {
57+
const handleLessonSelect = useCallback((venueId: string, venueName?: string, contentPath?: string, providerId?: string, lessonName?: string) => {
5758
setSelectedVenueId(venueId);
5859
setSelectedVenueName(venueName || "");
60+
setSelectedLessonName(lessonName || "");
5961
setSelectedContentPath(contentPath || "");
6062
setSelectedProviderId(providerId || "");
6163
setShowLessonSelector(false);
@@ -72,7 +74,7 @@ export const LessonScheduleEdit: React.FC<Props> = (props) => {
7274
const handleSave = async () => {
7375
if (validate()) {
7476
const formattedDate = DateHelper.prettyDate(scheduledDate);
75-
const displayName = selectedVenueName || "Lesson";
77+
const displayName = selectedLessonName || selectedVenueName || "Lesson";
7678

7779
const newPlan: PlanInterface = {
7880
ministryId: props.ministryId,

src/serving/components/LessonSelector.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import { useProviderBrowser } from "../hooks/useProviderBrowser";
2323
interface Props {
2424
open: boolean;
2525
onClose: () => void;
26-
onSelect: (contentId: string, contentName?: string, contentPath?: string, providerId?: string) => void;
26+
onSelect: (contentId: string, contentName?: string, contentPath?: string, providerId?: string, lessonName?: string) => void;
2727
returnVenueName?: boolean;
2828
ministryId?: string;
2929
defaultProviderId?: string;
@@ -63,10 +63,11 @@ export const LessonSelector: React.FC<Props> = ({ open, onClose, onSelect, retur
6363
const handleSelect = useCallback(() => {
6464
if (selectedFolder) {
6565
const folderName = returnVenueName ? selectedFolder.title : undefined;
66-
onSelect(selectedFolder.id, folderName, selectedFolder.path, browser.selectedProviderId);
66+
const lessonName = browser.breadcrumbItems.length > 0 ? browser.breadcrumbItems[browser.breadcrumbItems.length - 1].label : undefined;
67+
onSelect(selectedFolder.id, folderName, selectedFolder.path, browser.selectedProviderId, lessonName);
6768
onClose();
6869
}
69-
}, [selectedFolder, returnVenueName, onSelect, onClose, browser.selectedProviderId]);
70+
}, [selectedFolder, returnVenueName, onSelect, onClose, browser.selectedProviderId, browser.breadcrumbItems]);
7071

7172
// Handle provider change
7273
const handleProviderChange = useCallback((providerId: string) => {

src/serving/components/PlanTypeEdit.tsx

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,7 @@ export const PlanTypeEdit: React.FC<Props> = ({ planType, onClose }) => {
1818
setErrors([]);
1919

2020
try {
21-
const isNew = !current.id;
22-
const result = isNew
23-
? await ApiHelper.post("/planTypes", [current], "DoingApi")
24-
: await ApiHelper.post("/planTypes", [current], "DoingApi");
25-
21+
await ApiHelper.post("/planTypes", [current], "DoingApi");
2622
onClose();
2723
} catch (error: any) {
2824
setErrors([error.message || Locale.label("plans.planTypeEdit.errorSaving")]);
@@ -31,6 +27,18 @@ export const PlanTypeEdit: React.FC<Props> = ({ planType, onClose }) => {
3127
setLoading(false);
3228
};
3329

30+
const handleDelete = async () => {
31+
if (!window.confirm(Locale.label("plans.planTypeEdit.confirmDelete") || "Are you sure you want to delete this plan type?")) return;
32+
setLoading(true);
33+
try {
34+
await ApiHelper.delete("/planTypes/" + current.id, "DoingApi");
35+
onClose();
36+
} catch (error: any) {
37+
setErrors([error.message || Locale.label("plans.planTypeEdit.errorDeleting")]);
38+
setLoading(false);
39+
}
40+
};
41+
3442
const handleChange = (field: keyof PlanTypeInterface, value: string) => {
3543
setCurrent(prev => ({ ...prev, [field]: value }));
3644
};
@@ -69,6 +77,11 @@ export const PlanTypeEdit: React.FC<Props> = ({ planType, onClose }) => {
6977
</Box>
7078
</DialogContent>
7179
<DialogActions>
80+
{current.id && (
81+
<Button onClick={handleDelete} disabled={loading} color="error" sx={{ mr: "auto" }}>
82+
{Locale.label("common.delete")}
83+
</Button>
84+
)}
7285
<Button onClick={onClose} disabled={loading}>
7386
{Locale.label("common.cancel")}
7487
</Button>

src/site/BlocksPage.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { JSX } from "react";
33
import { ApiHelper, Loading, PageHeader, UserHelper, Permissions, Locale } from "@churchapps/apphelper";
44
import type { BlockInterface } from "../helpers";
55
import { TableRow, TableCell, Table, TableBody, TableHead, Box, Typography, Stack, Button, Card, Icon } from "@mui/material";
6-
import { SmartButton as BlockIcon, Add as AddIcon, Edit as EditIcon } from "@mui/icons-material";
6+
import { SmartButton as BlockIcon, Add as AddIcon, Edit as EditIcon, Settings as SettingsIcon } from "@mui/icons-material";
77
import { Navigate, Link } from "react-router-dom";
88
import { BlockEdit } from "./components";
99

@@ -93,7 +93,10 @@ export const BlocksPage = () => {
9393
</Stack>
9494
</TableCell>
9595
<TableCell align="right">
96-
<Button size="small" variant="outlined" component={Link} to={`/site/blocks/${block.id}`} startIcon={<EditIcon />} data-testid={`edit-block-${block.id}-button`} sx={{ textTransform: "none", minWidth: "auto" }}>{Locale.label("common.edit")}</Button>
96+
<Stack direction="row" spacing={1} justifyContent="flex-end">
97+
<Button size="small" variant="outlined" component={Link} to={`/site/blocks/${block.id}`} startIcon={<EditIcon />} sx={{ textTransform: "none", minWidth: "auto" }}>{Locale.label("common.edit")}</Button>
98+
<Button size="small" variant="outlined" startIcon={<SettingsIcon />} onClick={() => setEditBlock(block)} data-testid={`rename-block-${block.id}-button`} sx={{ textTransform: "none", minWidth: "auto" }}>{Locale.label("common.rename") || "Rename"}</Button>
99+
</Stack>
97100
</TableCell>
98101
</TableRow>
99102
);

0 commit comments

Comments
 (0)