diff --git a/docs/schema-table.md b/docs/schema-table.md
index 0649731..4e22b98 100644
--- a/docs/schema-table.md
+++ b/docs/schema-table.md
@@ -36,7 +36,6 @@ Reference data for where plants live.
| `id` | `int` | Yes | Primary key |
| `name` | `string` | Yes | User-facing location name |
| `notes` | `string` | No | Optional details |
-| `is_enabled` | `bool` | Yes | Whether the location is available for new assignments |
## `CareAction`
@@ -47,7 +46,6 @@ A reusable care verb, such as water, prune, fertilize, inspect, or repot.
| `id` | `int` | Yes | Primary key |
| `name` | `string` | Yes | User-facing action name |
| `description` | `string` | No | Optional explanation |
-| `is_enabled` | `bool` | Yes | Whether the action is available for use |
## `ActionResource`
@@ -57,9 +55,7 @@ A resource used while performing care.
| - | - | - | - |
| `id` | `int` | Yes | Primary key |
| `name` | `string` | Yes | Resource name |
-| `category` | `string` | No | Optional grouping, such as `Fertilizer`, `Medium`, `Treatment`, `Equipment`, or `Container` |
| `notes` | `string` | No | Optional details |
-| `is_enabled` | `bool` | Yes | Whether the resource is available for use |
## `CareActivity`
@@ -70,7 +66,6 @@ A configurable care activity made from one or more care actions.
| `id` | `int` | Yes | Primary key |
| `name` | `string` | Yes | User-facing activity name |
| `notes` | `string` | No | Optional details |
-| `is_enabled` | `bool` | Yes | Whether the activity is available for schedules and logs |
## `CareActivityAction`
@@ -114,7 +109,6 @@ A per-plant recurring schedule for one care activity. Scheduler is the UI owner
| `ends_mode` | `string` | Yes | `on` or `after` |
| `ends_on` | `date` | No | End date when `ends_mode` is `on` |
| `ends_after_occurrences` | `int` | No | Occurrence limit when `ends_mode` is `after` |
-| `is_enabled` | `bool` | Yes | Whether this schedule contributes to care tasks |
## `ActionLog`
@@ -150,7 +144,6 @@ A reusable plant flag.
| `id` | `int` | Yes | Primary key |
| `name` | `string` | Yes | Flag name |
| `color` | `string` | Yes | Display color |
-| `is_enabled` | `bool` | Yes | Whether the flag can be assigned |
## `PlantFlag`
diff --git a/plant-manager-web/src/App.tsx b/plant-manager-web/src/App.tsx
index a24c2a8..07d9d76 100644
--- a/plant-manager-web/src/App.tsx
+++ b/plant-manager-web/src/App.tsx
@@ -167,6 +167,76 @@ export function App() {
}
}
+ async function loadLocations() {
+ const locationsResponse = await getPlantLocations();
+
+ setError(null);
+ setPlantLocations(locationsResponse);
+ }
+
+ async function loadPlants() {
+ const plantsResponse = await getPlants();
+
+ setError(null);
+ setPlants(plantsResponse);
+ }
+
+ async function loadPlantsAndCareTasks() {
+ const [plantsResponse, tasksResponse] = await Promise.all([
+ getPlants(),
+ getCareTasks(),
+ ]);
+
+ setError(null);
+ setPlants(plantsResponse);
+ setCareTasks(tasksResponse);
+ }
+
+ async function loadTaxaAndPlants() {
+ const [plantsResponse, taxaResponse] = await Promise.all([
+ getPlants(),
+ getPlantTaxa(),
+ ]);
+
+ setError(null);
+ setPlants(plantsResponse);
+ setPlantTaxa(taxaResponse);
+ }
+
+ async function loadFlagsAndPlants() {
+ const [plantsResponse, flagsResponse] = await Promise.all([
+ getPlants(),
+ getPlantFlags(),
+ ]);
+
+ setError(null);
+ setPlants(plantsResponse);
+ setPlantFlagDefinitions(flagsResponse);
+ }
+
+ async function loadCareModel() {
+ const [
+ plantsResponse,
+ tasksResponse,
+ actionsResponse,
+ resourcesResponse,
+ activitiesResponse,
+ ] = await Promise.all([
+ getPlants(),
+ getCareTasks(),
+ getCareActions(),
+ getActionResources(),
+ getCareActivities(),
+ ]);
+
+ setError(null);
+ setPlants(plantsResponse);
+ setCareTasks(tasksResponse);
+ setCareActions(actionsResponse);
+ setActionResources(resourcesResponse);
+ setCareActivities(activitiesResponse);
+ }
+
useEffect(() => {
queueMicrotask(() => {
void loadDashboard();
@@ -201,15 +271,15 @@ export function App() {
setTaxonForm((current) => ({ ...current, [field]: value }));
}
- function updateLocationForm(field: keyof LocationFormState, value: string | boolean) {
+ function updateLocationForm(field: keyof LocationFormState, value: string) {
setLocationForm((current) => ({ ...current, [field]: value }));
}
- function updateActionForm(field: keyof ActionFormState, value: string | boolean) {
+ function updateActionForm(field: keyof ActionFormState, value: string) {
setActionForm((current) => ({ ...current, [field]: value }));
}
- function updateResourceForm(field: keyof ResourceFormState, value: string | boolean) {
+ function updateResourceForm(field: keyof ResourceFormState, value: string) {
setResourceForm((current) => ({ ...current, [field]: value }));
}
@@ -217,7 +287,7 @@ export function App() {
setActivityForm((current) => ({ ...current, [field]: value }));
}
- function updateFlagDefinitionForm(field: keyof FlagDefinitionFormState, value: string | boolean) {
+ function updateFlagDefinitionForm(field: keyof FlagDefinitionFormState, value: string) {
setFlagDefinitionForm((current) => ({ ...current, [field]: value }));
}
@@ -227,7 +297,7 @@ export function App() {
function updateBulkScheduleForm(
field: keyof BulkScheduleFormState,
- value: string | boolean | string[],
+ value: string | string[],
) {
setBulkScheduleForm((current) => ({ ...current, [field]: value }));
}
@@ -414,7 +484,7 @@ export function App() {
await updatePlant(editingPlantId, payload);
}
cancelEditing();
- await loadDashboard();
+ await loadPlantsAndCareTasks();
} catch {
setError('Could not save the plant.');
} finally {
@@ -438,7 +508,7 @@ export function App() {
locationId: nextValues.locationId === undefined ? selectedPlant.locationId : nextValues.locationId,
careSchedules: null,
});
- await loadDashboard();
+ await loadPlants();
} catch {
setError('Could not update the plant assignment.');
} finally {
@@ -474,7 +544,7 @@ export function App() {
if (editingPlantId === plant.id) {
cancelEditing();
}
- await loadDashboard();
+ await loadPlantsAndCareTasks();
} catch {
setError('Could not delete the plant.');
} finally {
@@ -497,7 +567,7 @@ export function App() {
await updatePlantTaxon(editingTaxonId, payload);
}
cancelEditingTaxon();
- await loadDashboard();
+ await loadTaxaAndPlants();
} catch {
setError('Could not save the taxon.');
} finally {
@@ -517,7 +587,7 @@ export function App() {
if (editingTaxonId === taxon.id) {
cancelEditingTaxon();
}
- await loadDashboard();
+ await loadTaxaAndPlants();
} catch {
setError('Could not delete the taxon. It may still be used by a plant.');
} finally {
@@ -540,7 +610,7 @@ export function App() {
await updatePlantLocation(editingLocationId, payload);
}
cancelEditingLocation();
- await loadDashboard();
+ await loadLocations();
} catch {
setError('Could not save the location.');
} finally {
@@ -549,7 +619,7 @@ export function App() {
}
async function removeLocation(location: PlantLocation) {
- const confirmed = window.confirm(`Delete ${location.name}? Locations in use will be disabled instead.`);
+ const confirmed = window.confirm(`Delete ${location.name}? Locations assigned to plants cannot be deleted.`);
if (!confirmed) {
return;
}
@@ -560,10 +630,10 @@ export function App() {
if (editingLocationId === location.id) {
cancelEditingLocation();
}
- await loadDashboard();
+ await loadLocations();
} catch {
- await loadDashboard();
- setError('Could not delete the location. If it is in use, it was disabled instead.');
+ await loadLocations();
+ setError('Could not delete the location. It may still be assigned to a plant.');
} finally {
setIsSaving(false);
}
@@ -584,7 +654,7 @@ export function App() {
await updateCareAction(editingActionId, payload);
}
cancelEditingAction();
- await loadDashboard();
+ await loadCareModel();
} catch {
setError('Could not save the action.');
} finally {
@@ -593,7 +663,7 @@ export function App() {
}
async function removeAction(action: CareAction) {
- const confirmed = window.confirm(`Delete ${action.name}? Actions with care history will be disabled instead.`);
+ const confirmed = window.confirm(`Delete ${action.name}? Actions with care history cannot be deleted.`);
if (!confirmed) {
return;
}
@@ -604,10 +674,10 @@ export function App() {
if (editingActionId === action.id) {
cancelEditingAction();
}
- await loadDashboard();
+ await loadCareModel();
} catch {
- await loadDashboard();
- setError('Could not delete the action. If it has care history, it was disabled instead.');
+ await loadCareModel();
+ setError('Could not delete the action. It may still have care history.');
} finally {
setIsSaving(false);
}
@@ -628,7 +698,7 @@ export function App() {
await updateActionResource(editingResourceId, payload);
}
cancelEditingResource();
- await loadDashboard();
+ await loadCareModel();
} catch {
setError('Could not save the resource.');
} finally {
@@ -648,7 +718,7 @@ export function App() {
if (editingResourceId === resource.id) {
cancelEditingResource();
}
- await loadDashboard();
+ await loadCareModel();
} catch {
setError('Could not delete the resource.');
} finally {
@@ -671,7 +741,7 @@ export function App() {
await updateCareActivity(editingActivityId, payload);
}
cancelEditingActivity();
- await loadDashboard();
+ await loadCareModel();
} catch {
setError('Could not save the activity.');
} finally {
@@ -680,7 +750,7 @@ export function App() {
}
async function removeActivity(activity: CareActivity) {
- const confirmed = window.confirm(`Delete ${activity.name}? Activities in use will be disabled instead.`);
+ const confirmed = window.confirm(`Delete ${activity.name}? Activities in use cannot be deleted.`);
if (!confirmed) {
return;
}
@@ -691,10 +761,10 @@ export function App() {
if (editingActivityId === activity.id) {
cancelEditingActivity();
}
- await loadDashboard();
+ await loadCareModel();
} catch {
- await loadDashboard();
- setError('Could not delete the activity. If it is in use, it was disabled instead.');
+ await loadCareModel();
+ setError('Could not delete the activity. It may still be in use.');
} finally {
setIsSaving(false);
}
@@ -715,7 +785,7 @@ export function App() {
await updatePlantFlag(editingFlagDefinitionId, payload);
}
cancelEditingFlagDefinition();
- await loadDashboard();
+ await loadFlagsAndPlants();
} catch {
setError('Could not save the plant flag.');
} finally {
@@ -733,7 +803,7 @@ export function App() {
try {
await savePlantCareSchedulesBulk(toBulkSchedulePayload(bulkScheduleForm));
setBulkScheduleForm(emptyBulkScheduleForm);
- await loadDashboard();
+ await loadPlantsAndCareTasks();
} catch {
setError('Could not apply the care schedule.');
} finally {
@@ -751,7 +821,7 @@ export function App() {
try {
await removePlantCareSchedulesBulk(toBulkSchedulePayload(bulkScheduleForm));
setBulkScheduleForm(emptyBulkScheduleForm);
- await loadDashboard();
+ await loadPlantsAndCareTasks();
} catch {
setError('Could not remove the care schedule.');
} finally {
@@ -760,7 +830,7 @@ export function App() {
}
async function removeFlagDefinition(flag: PlantFlagDefinition) {
- const confirmed = window.confirm(`Delete ${flag.name}? Flags assigned to plants will be disabled instead.`);
+ const confirmed = window.confirm(`Delete ${flag.name}? Flags assigned to plants cannot be deleted.`);
if (!confirmed) {
return;
}
@@ -771,10 +841,10 @@ export function App() {
if (editingFlagDefinitionId === flag.id) {
cancelEditingFlagDefinition();
}
- await loadDashboard();
+ await loadFlagsAndPlants();
} catch {
- await loadDashboard();
- setError('Could not delete the flag. If it is assigned to plants, it was disabled instead.');
+ await loadFlagsAndPlants();
+ setError('Could not delete the flag. It may still be assigned to a plant.');
} finally {
setIsSaving(false);
}
@@ -790,7 +860,7 @@ export function App() {
try {
await assignPlantFlag(selectedPlantId, toPlantFlagPayload(plantFlagForm));
setPlantFlagForm(emptyPlantFlagForm);
- await loadDashboard();
+ await loadPlants();
} catch {
setError('Could not attach the plant flag.');
} finally {
@@ -806,7 +876,7 @@ export function App() {
setIsSaving(true);
try {
await resolvePlantFlag(selectedPlantId, flag.id);
- await loadDashboard();
+ await loadPlants();
} catch {
setError('Could not resolve the plant flag.');
} finally {
@@ -827,7 +897,7 @@ export function App() {
setIsSaving(true);
try {
await removePlantFlagAssignment(selectedPlantId, flag.id);
- await loadDashboard();
+ await loadPlants();
} catch {
setError('Could not remove the plant flag.');
} finally {
@@ -845,7 +915,7 @@ export function App() {
notes: '',
resources: [],
});
- await loadDashboard();
+ await loadPlantsAndCareTasks();
} catch {
setError('Could not log the care task.');
} finally {
@@ -874,7 +944,7 @@ export function App() {
notes: '',
resources: [],
});
- await loadDashboard();
+ await loadPlantsAndCareTasks();
} catch {
setError('Could not log the due tasks.');
} finally {
@@ -985,11 +1055,11 @@ export function App() {
Catalog Status
{dueCount} due
- {plantLocations.filter((location) => location.isEnabled).length} active locations
- {careActivities.filter((activity) => activity.isEnabled).length} active activities
- {careActions.filter((action) => action.isEnabled).length} active actions
- {actionResources.filter((resource) => resource.isEnabled).length} active resources
- {plantFlagDefinitions.filter((flag) => flag.isEnabled).length} active flags
+ {plantLocations.length} locations
+ {careActivities.length} activities
+ {careActions.length} actions
+ {actionResources.length} resources
+ {plantFlagDefinitions.length} flags
diff --git a/plant-manager-web/src/components/ActionsView.tsx b/plant-manager-web/src/components/ActionsView.tsx
index c8743b4..7389883 100644
--- a/plant-manager-web/src/components/ActionsView.tsx
+++ b/plant-manager-web/src/components/ActionsView.tsx
@@ -15,7 +15,7 @@ type ActionsViewProps = {
onCloseDetail: () => void;
onDelete: (action: CareAction) => void;
onEdit: (action: CareAction) => void;
- onFieldChange: (field: keyof ActionFormState, value: string | boolean) => void;
+ onFieldChange: (field: keyof ActionFormState, value: string) => void;
onNew: () => void;
onOpenDetail: (action: CareAction) => void;
onSave: () => void;
@@ -39,15 +39,13 @@ export function ActionsView({
onOpenDetail,
onSave,
}: ActionsViewProps) {
- const enabledCount = actions.filter((action) => action.isEnabled).length;
-
return (
<>
Care menu
- {isLoading ? 'Loading actions' : `${enabledCount} actions enabled`}
+ {isLoading ? 'Loading actions' : `${actions.length} actions`}
{error ?? 'Configure the care actions available when logging plant work.'}
@@ -78,10 +76,6 @@ export function ActionsView({
Description
{selectedAction.description ?? 'No description'}
-
- Status
- {selectedAction.isEnabled ? 'Enabled' : 'Disabled'}
-
) : null}
@@ -113,14 +107,6 @@ export function ActionsView({
onChange={(event) => onFieldChange('description', event.target.value)}
/>
-
@@ -151,8 +137,6 @@ export function ActionsView({
{action.name}
{action.description ?? 'No description'}
- {' - '}
- {action.isEnabled ? 'Enabled' : 'Disabled'}
diff --git a/plant-manager-web/src/components/ActivitiesView.tsx b/plant-manager-web/src/components/ActivitiesView.tsx
index 704534a..2c789e8 100644
--- a/plant-manager-web/src/components/ActivitiesView.tsx
+++ b/plant-manager-web/src/components/ActivitiesView.tsx
@@ -46,10 +46,6 @@ export function ActivitiesView({
onSave,
resources,
}: ActivitiesViewProps) {
- const enabledCount = activities.filter((activity) => activity.isEnabled).length;
- const enabledActions = actions.filter((action) => action.isEnabled);
- const enabledResources = resources.filter((resource) => resource.isEnabled);
-
function updateAction(index: number, nextAction: ActivityFormState['actions'][number]) {
onFieldChange(
'actions',
@@ -77,7 +73,7 @@ export function ActivitiesView({
Care activities
- {isLoading ? 'Loading activities' : `${enabledCount} activities enabled`}
+ {isLoading ? 'Loading activities' : `${activities.length} activities`}
{error ?? 'Configure reusable care bundles with actions and per-action resources.'}
@@ -108,10 +104,6 @@ export function ActivitiesView({
Notes
{selectedActivity.notes ?? 'No notes'}
-
- Status
- {selectedActivity.isEnabled ? 'Enabled' : 'Disabled'}
-
{selectedActivity.actions.length === 0 ? (
@@ -192,7 +184,7 @@ export function ActivitiesView({
)}
>
- {enabledActions
+ {actions
.filter((action) => !selectedActionIds.has(String(action.id)))
.map((action) => (
- {enabledResources
+ {resources
.filter((resource) => !selectedResourceIds.has(String(resource.id)))
.map((resource) => (
@@ -391,7 +375,7 @@ export function ActivitiesView({
{activity.name}
-
{formatActivitySummary(activity)} - {activity.isEnabled ? 'Enabled' : 'Disabled'}
+
{formatActivitySummary(activity)}
onOpenDetail(activity)}>
diff --git a/plant-manager-web/src/components/FlagsView.tsx b/plant-manager-web/src/components/FlagsView.tsx
index afd5a8d..4583a56 100644
--- a/plant-manager-web/src/components/FlagsView.tsx
+++ b/plant-manager-web/src/components/FlagsView.tsx
@@ -15,7 +15,7 @@ type FlagsViewProps = {
onCloseDetail: () => void;
onDelete: (flag: PlantFlagDefinition) => void;
onEdit: (flag: PlantFlagDefinition) => void;
- onFieldChange: (field: keyof FlagDefinitionFormState, value: string | boolean) => void;
+ onFieldChange: (field: keyof FlagDefinitionFormState, value: string) => void;
onNew: () => void;
onOpenDetail: (flag: PlantFlagDefinition) => void;
onSave: () => void;
@@ -39,15 +39,13 @@ export function FlagsView({
onOpenDetail,
onSave,
}: FlagsViewProps) {
- const enabledCount = flags.filter((flag) => flag.isEnabled).length;
-
return (
<>
Plant flags
- {isLoading ? 'Loading flags' : `${enabledCount} flags enabled`}
+ {isLoading ? 'Loading flags' : `${flags.length} flags`}
{error ?? 'Configure reusable flags for plants.'}
@@ -82,10 +80,6 @@ export function FlagsView({
-
- Status
- {selectedFlag.isEnabled ? 'Enabled' : 'Disabled'}
-
) : null}
@@ -118,14 +112,6 @@ export function FlagsView({
onChange={(event) => onFieldChange('color', event.target.value)}
/>
-
@@ -154,7 +140,6 @@ export function FlagsView({
{flag.name}
-
{flag.isEnabled ? 'Enabled' : 'Disabled'}
diff --git a/plant-manager-web/src/components/LocationsView.tsx b/plant-manager-web/src/components/LocationsView.tsx
index d6b0f77..aebd105 100644
--- a/plant-manager-web/src/components/LocationsView.tsx
+++ b/plant-manager-web/src/components/LocationsView.tsx
@@ -15,7 +15,7 @@ type LocationsViewProps = {
onCloseDetail: () => void;
onDelete: (location: PlantLocation) => void;
onEdit: (location: PlantLocation) => void;
- onFieldChange: (field: keyof LocationFormState, value: string | boolean) => void;
+ onFieldChange: (field: keyof LocationFormState, value: string) => void;
onNew: () => void;
onOpenDetail: (location: PlantLocation) => void;
onSave: () => void;
@@ -39,15 +39,13 @@ export function LocationsView({
onOpenDetail,
onSave,
}: LocationsViewProps) {
- const enabledCount = locations.filter((location) => location.isEnabled).length;
-
return (
<>
Location library
- {isLoading ? 'Loading locations' : `${enabledCount} locations enabled`}
+ {isLoading ? 'Loading locations' : `${locations.length} locations`}
{error ?? 'Create and maintain the places where plants live.'}
@@ -78,10 +76,6 @@ export function LocationsView({
Notes
{selectedLocation.notes ?? 'No notes'}
-
- Status
- {selectedLocation.isEnabled ? 'Enabled' : 'Disabled'}
-
) : null}
@@ -113,14 +107,6 @@ export function LocationsView({
onChange={(event) => onFieldChange('notes', event.target.value)}
/>
-
@@ -151,8 +137,6 @@ export function LocationsView({
{location.name}
{location.notes ?? 'No notes'}
- {' - '}
- {location.isEnabled ? 'Enabled' : 'Disabled'}
diff --git a/plant-manager-web/src/components/PlantManagementView.tsx b/plant-manager-web/src/components/PlantManagementView.tsx
index 240200d..6f9ad8e 100644
--- a/plant-manager-web/src/components/PlantManagementView.tsx
+++ b/plant-manager-web/src/components/PlantManagementView.tsx
@@ -48,9 +48,6 @@ export function PlantManagementView({
onSetLocation,
onSetTaxon,
}: PlantManagementViewProps) {
- const enabledFlags = plantFlagDefinitions.filter((flag) => flag.isEnabled);
- const enabledLocations = plantLocations.filter((location) =>
- location.isEnabled || location.id === selectedPlant?.locationId);
const selectedTaxon = plantTaxa.find((taxon) => taxon.id === selectedPlant?.taxonId);
const selectedLocation = plantLocations.find((location) => location.id === selectedPlant?.locationId);
const activeFlags = selectedPlant?.flags.filter((flag) => flag.resolvedOn === null) ?? [];
@@ -148,9 +145,9 @@ export function PlantManagementView({
onChange={(event) => onSetLocation(event.target.value)}
>
- {enabledLocations.map((location) => (
+ {plantLocations.map((location) => (
))}
@@ -162,10 +159,6 @@ export function PlantManagementView({
Location
{selectedLocation.name}
-
- Status
- {selectedLocation.isEnabled ? 'Enabled' : 'Disabled'}
-
{selectedLocation.notes ? (
Notes
@@ -202,7 +195,7 @@ export function PlantManagementView({
onChange={(event) => onFieldChange('plantFlagDefinitionId', event.target.value)}
>
- {enabledFlags.map((flag) => (
+ {plantFlagDefinitions.map((flag) => (
diff --git a/plant-manager-web/src/components/ResourcesView.tsx b/plant-manager-web/src/components/ResourcesView.tsx
index 478c1cf..81c87e9 100644
--- a/plant-manager-web/src/components/ResourcesView.tsx
+++ b/plant-manager-web/src/components/ResourcesView.tsx
@@ -14,7 +14,7 @@ type ResourcesViewProps = {
onCloseDetail: () => void;
onDelete: (resource: ActionResource) => void;
onEdit: (resource: ActionResource) => void;
- onFieldChange: (field: keyof ResourceFormState, value: string | boolean) => void;
+ onFieldChange: (field: keyof ResourceFormState, value: string) => void;
onNew: () => void;
onOpenDetail: (resource: ActionResource) => void;
onSave: () => void;
@@ -39,15 +39,13 @@ export function ResourcesView({
onSave,
resources,
}: ResourcesViewProps) {
- const enabledCount = resources.filter((resource) => resource.isEnabled).length;
-
return (
<>
Resource library
- {isLoading ? 'Loading resources' : `${enabledCount} resources enabled`}
+ {isLoading ? 'Loading resources' : `${resources.length} resources`}
{error ?? 'Configure materials, products, tools, and containers used during care.'}
@@ -74,18 +72,10 @@ export function ResourcesView({
-
- Category
- {selectedResource.category ?? 'Uncategorized'}
-
Notes
{selectedResource.notes ?? 'No notes'}
-
- Status
- {selectedResource.isEnabled ? 'Enabled' : 'Disabled'}
-
) : null}
@@ -110,13 +100,6 @@ export function ResourcesView({
onChange={(event) => onFieldChange('name', event.target.value)}
/>
-
-
@@ -161,11 +136,7 @@ export function ResourcesView({
{resource.name}
- {resource.category ?? 'Uncategorized'}
- {' - '}
{resource.notes ?? 'No notes'}
- {' - '}
- {resource.isEnabled ? 'Enabled' : 'Disabled'}
diff --git a/plant-manager-web/src/components/SchedulesView.tsx b/plant-manager-web/src/components/SchedulesView.tsx
index 6b79f9d..770d2f9 100644
--- a/plant-manager-web/src/components/SchedulesView.tsx
+++ b/plant-manager-web/src/components/SchedulesView.tsx
@@ -10,7 +10,7 @@ type SchedulesViewProps = {
isLoading: boolean;
isSaving: boolean;
plants: Plant[];
- onFieldChange: (field: keyof BulkScheduleFormState, value: string | boolean | string[]) => void;
+ onFieldChange: (field: keyof BulkScheduleFormState, value: string | string[]) => void;
onRemove: () => void;
onSave: () => void;
};
@@ -46,7 +46,6 @@ export function SchedulesView({
onSave,
}: SchedulesViewProps) {
const [plantQuery, setPlantQuery] = useState('');
- const enabledActivities = activities.filter((activity) => activity.isEnabled);
const visiblePlants = useMemo(
() => filterPlants(plants, plantQuery),
[plants, plantQuery],
@@ -93,7 +92,7 @@ export function SchedulesView({
onChange={(event) => onFieldChange('careActivityId', event.target.value)}
>
- {enabledActivities.map((activity) => (
+ {activities.map((activity) => (
@@ -109,15 +108,6 @@ export function SchedulesView({
onChange={(event) => onFieldChange('scheduledFor', event.target.value)}
/>
-