Skip to content

Commit

Permalink
Clean up
Browse files Browse the repository at this point in the history
Signed-off-by: Aaron Chong <[email protected]>
  • Loading branch information
aaronchongth committed Jun 4, 2024
1 parent 01139aa commit 1069946
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 77 deletions.
100 changes: 29 additions & 71 deletions packages/react-components/lib/tasks/create-task.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ import {
ComposeCleanTaskForm,
DefaultComposeCleanTaskDefinition,
makeComposeCleanTaskBookingLabel,
makeDefaultComposeCleanTaskDescription,
} from './types/compose-clean';
import {
DefaultCustomComposeTaskDefinition,
Expand All @@ -60,25 +59,23 @@ import {
makeDeliveryTaskBookingLabel,
} from './types/delivery';
import {
DefaultDeliveryPickupTaskDefinition,
DefaultDeliveryAreaPickupTaskDefinition,
DefaultDeliverySequentialLotPickupTaskDefinition,
DeliveryCustomTaskForm,
DeliveryCustomTaskDescription,
DeliveryPickupTaskDescription,
DeliveryPickupTaskForm,
makeDefaultDeliveryCustomTaskDescription,
makeDefaultDeliveryPickupTaskDescription,
makeDeliveryCustomTaskBookingLabel,
makeDeliveryPickupTaskBookingLabel,
DefaultDeliveryPickupTaskDefinition,
DefaultDeliverySequentialLotPickupTaskDefinition,
DefaultDeliveryAreaPickupTaskDefinition,
} from './types/delivery-custom';
import {
makeDefaultPatrolTask,
makePatrolTaskBookingLabel,
DefaultPatrolTaskDefinition,
PatrolTaskDescription,
PatrolTaskForm,
} from './types/patrol';
import { getDefaultTaskDescription, getTaskRequestCategory } from './types/utils';
import {
getTaskBookingLabelFromTaskRequest,
serializeTaskBookingLabel,
Expand All @@ -93,7 +90,7 @@ export interface TaskDefinition {
// If no task definition id is found in a past task (scheduled or favorite)
const DefaultTaskDefinitionId = DefaultCustomComposeTaskDefinition.taskDefinitionId;

type TaskDescription =
export type TaskDescription =
| DeliveryPickupTaskDescription
| DeliveryCustomTaskDescription
| PatrolTaskDescription
Expand Down Expand Up @@ -197,45 +194,9 @@ function FavoriteTask({
);
}

function defaultTaskDescription(taskDefinitionId: string): TaskDescription | undefined {
switch (taskDefinitionId) {
case DefaultDeliveryPickupTaskDefinition.taskDefinitionId:
return makeDefaultDeliveryPickupTaskDescription();
case DefaultDeliverySequentialLotPickupTaskDefinition.taskDefinitionId:
case DefaultDeliveryAreaPickupTaskDefinition.taskDefinitionId:
return makeDefaultDeliveryCustomTaskDescription(taskDefinitionId);
case DefaultPatrolTaskDefinition.taskDefinitionId:
return makeDefaultPatrolTask();
case DefaultDeliveryTaskDefinition.taskDefinitionId:
return makeDefaultDeliveryTaskDescription();
case DefaultComposeCleanTaskDefinition.taskDefinitionId:
return makeDefaultComposeCleanTaskDescription();
default:
return undefined;
}
}

// TODO: Move this into task defintion as well. To consider moving
// description.category into task definition too.
function taskRequestCategory(taskDefinitionId: string): string | undefined {
switch (taskDefinitionId) {
case DefaultPatrolTaskDefinition.taskDefinitionId:
case DefaultDeliveryTaskDefinition.taskDefinitionId:
return taskDefinitionId;
case DefaultDeliveryPickupTaskDefinition.taskDefinitionId:
case DefaultDeliverySequentialLotPickupTaskDefinition.taskDefinitionId:
case DefaultDeliveryAreaPickupTaskDefinition.taskDefinitionId:
case DefaultComposeCleanTaskDefinition.taskDefinitionId:
case DefaultCustomComposeTaskDefinition.taskDefinitionId:
return 'compose';
default:
return undefined;
}
}

function defaultTaskRequest(taskDefinitionId: string): TaskRequest {
const category = taskRequestCategory(taskDefinitionId);
const description = defaultTaskDescription(taskDefinitionId);
const category = getTaskRequestCategory(taskDefinitionId);
const description = getDefaultTaskDescription(taskDefinitionId);

return {
category: category ?? 'compose',
Expand Down Expand Up @@ -568,25 +529,22 @@ export function CreateTaskForm({
}
};
const handleTaskTypeChange = (ev: React.ChangeEvent<HTMLInputElement>) => {
const newType = ev.target.value;
console.log(`handleTaskTypeChange ${newType}`);
setTaskDefinitionId(newType);
const newTaskDefinitionId = ev.target.value;
setTaskDefinitionId(newTaskDefinitionId);

if (newType === 'custom_compose') {
taskRequest.category = 'custom_compose';
taskRequest.description = '';
} else {
const newDesc = defaultTaskDescription(newType);
if (newDesc === undefined) {
return;
}
taskRequest.description = newDesc;
const category =
getTaskRequestCategory(newTaskDefinitionId) ??
DefaultCustomComposeTaskDefinition.requestCategory;
taskRequest.category = category;

const primaryTaskCategories = ['patrol', 'delivery'];
const category = primaryTaskCategories.includes(newType) ? newType : 'compose';
taskRequest.category = category;
const description = getDefaultTaskDescription(newTaskDefinitionId) ?? '';
taskRequest.description = description;

setFavoriteTaskBuffer({ ...favoriteTaskBuffer, category, description: newDesc });
if (
newTaskDefinitionId !== DefaultCustomComposeTaskDefinition.taskDefinitionId &&
typeof description === 'object'
) {
setFavoriteTaskBuffer({ ...favoriteTaskBuffer, category, description });
}
};

Expand All @@ -607,10 +565,10 @@ export function CreateTaskForm({
request.requester = requester;
request.unix_millis_request_time = Date.now();

if (taskDefinitionId === 'custom_compose') {
if (taskDefinitionId === DefaultCustomComposeTaskDefinition.taskDefinitionId) {
try {
const obj = JSON.parse(request.description);
request.category = 'compose';
request.category = DefaultCustomComposeTaskDefinition.requestCategory;
request.description = obj;
} catch (e) {
console.error('Invalid custom compose task description');
Expand All @@ -623,23 +581,23 @@ export function CreateTaskForm({
try {
let requestBookingLabel: TaskBookingLabel | null = null;
switch (taskDefinitionId) {
case 'delivery_pickup':
case DefaultDeliveryPickupTaskDefinition.taskDefinitionId:
requestBookingLabel = makeDeliveryPickupTaskBookingLabel(request.description);
break;
case 'delivery_sequential_lot_pickup':
case 'delivery_area_pickup':
case DefaultDeliverySequentialLotPickupTaskDefinition.taskDefinitionId:
case DefaultDeliveryAreaPickupTaskDefinition.taskDefinitionId:
requestBookingLabel = makeDeliveryCustomTaskBookingLabel(request.description);
break;
case 'patrol':
case DefaultPatrolTaskDefinition.taskDefinitionId:
requestBookingLabel = makePatrolTaskBookingLabel(request.description);
break;
case 'delivery':
case DefaultDeliveryTaskDefinition.taskDefinitionId:
requestBookingLabel = makeDeliveryTaskBookingLabel(request.description);
break;
case 'clean':
case DefaultComposeCleanTaskDefinition.taskDefinitionId:
requestBookingLabel = makeComposeCleanTaskBookingLabel(request.description);
break;
case 'custom_compose':
case DefaultCustomComposeTaskDefinition.taskDefinitionId:
requestBookingLabel = makeCustomComposeTaskBookingLabel();
break;
}
Expand Down
2 changes: 1 addition & 1 deletion packages/react-components/lib/tasks/types/patrol.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export const isPatrolTaskDescriptionValid = (taskDescription: PatrolTaskDescript
return taskDescription.rounds > 0;
};

export function makeDefaultPatrolTask(): PatrolTaskDescription {
export function makeDefaultPatrolTaskDescription(): PatrolTaskDescription {
return {
places: [],
rounds: 1,
Expand Down
60 changes: 55 additions & 5 deletions packages/react-components/lib/tasks/types/utils.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,34 @@
import { TaskRequest } from 'api-client';
import { DefaultPatrolTaskDefinition, makePatrolTaskShortDescription } from './patrol';
import {
DefaultPatrolTaskDefinition,
makePatrolTaskShortDescription,
makeDefaultPatrolTaskDescription,
} from './patrol';
import {
DefaultDeliveryAreaPickupTaskDefinition,
DefaultDeliveryPickupTaskDefinition,
DefaultDeliverySequentialLotPickupTaskDefinition,
makeDeliveryPickupTaskShortDescription,
makeDeliveryCustomTaskShortDescription,
makeDefaultDeliveryCustomTaskDescription,
makeDefaultDeliveryPickupTaskDescription,
} from './delivery-custom';
import { getTaskBookingLabelFromTaskRequest } from '../task-booking-label-utils';
import {
DefaultComposeCleanTaskDefinition,
makeComposeCleanTaskShortDescription,
makeDefaultComposeCleanTaskDescription,
} from './compose-clean';
import { DefaultDeliveryTaskDefinition, makeDeliveryTaskShortDescription } from './delivery';
import {
makeDeliveryPickupTaskShortDescription,
makeDeliveryCustomTaskShortDescription,
} from './delivery-custom';
DefaultDeliveryTaskDefinition,
makeDeliveryTaskShortDescription,
makeDefaultDeliveryTaskDescription,
} from './delivery';
import {
DefaultCustomComposeTaskDefinition,
makeCustomComposeTaskShortDescription,
} from './custom-compose';
import { TaskDefinition, TaskDescription } from '../create-task';

export function isNonEmptyString(value: string): boolean {
return value.length > 0;
Expand All @@ -45,6 +55,17 @@ function rawStringFromJsonRequest(taskRequest: TaskRequest): string | undefined
}
}

export const TaskDefinitionMap: Record<string, TaskDefinition> = {
[DefaultComposeCleanTaskDefinition.taskDefinitionId]: DefaultComposeCleanTaskDefinition,
[DefaultDeliveryPickupTaskDefinition.taskDefinitionId]: DefaultDeliveryPickupTaskDefinition,
[DefaultDeliverySequentialLotPickupTaskDefinition.taskDefinitionId]:
DefaultDeliverySequentialLotPickupTaskDefinition,
[DefaultDeliveryAreaPickupTaskDefinition.taskDefinitionId]:
DefaultDeliveryAreaPickupTaskDefinition,
[DefaultDeliveryTaskDefinition.taskDefinitionId]: DefaultDeliveryTaskDefinition,
[DefaultPatrolTaskDefinition.taskDefinitionId]: DefaultPatrolTaskDefinition,
};

export function getShortDescription(
taskRequest: TaskRequest,
taskDisplayName?: string,
Expand Down Expand Up @@ -73,3 +94,32 @@ export function getShortDescription(
return `[Unknown] type "${taskRequest.description.category}"`;
}
}

export function getDefaultTaskDescription(
taskDefinitionId: string,
): TaskDescription | string | undefined {
switch (taskDefinitionId) {
case DefaultComposeCleanTaskDefinition.taskDefinitionId:
return makeDefaultComposeCleanTaskDescription();
case DefaultDeliveryPickupTaskDefinition.taskDefinitionId:
return makeDefaultDeliveryPickupTaskDescription();
case DefaultDeliverySequentialLotPickupTaskDefinition.taskDefinitionId:
case DefaultDeliveryAreaPickupTaskDefinition.taskDefinitionId:
return makeDefaultDeliveryCustomTaskDescription(taskDefinitionId);
case DefaultDeliveryTaskDefinition.taskDefinitionId:
return makeDefaultDeliveryTaskDescription();
case DefaultPatrolTaskDefinition.taskDefinitionId:
return makeDefaultPatrolTaskDescription();
case DefaultCustomComposeTaskDefinition.taskDefinitionId:
return '';
default:
return undefined;
}
}

export function getTaskRequestCategory(taskDefinitionId: string): string | undefined {
if (taskDefinitionId in TaskDefinitionMap) {
return TaskDefinitionMap[taskDefinitionId].requestCategory;
}
return undefined;
}

0 comments on commit 1069946

Please sign in to comment.