- Progress

Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
Dave Richer
2024-04-09 16:32:26 -04:00
parent 15c9529885
commit 6b9269eb2d
8 changed files with 29 additions and 145 deletions

View File

@@ -1,21 +1,3 @@
// Original Version
// exports.default = {
// printWidth: 120,
// useTabs: false,
// tabWidth: 2,
// trailingComma: 'es5',
// semi: true,
// singleQuote: false,
// bracketSpacing: true,
// arrowParens: 'always',
// jsxSingleQuote: false,
// bracketSameLine: false,
// endOfLine: 'lf',
// importOrder: ['^@core/(.*)$', '^@server/(.*)$', '^@ui/(.*)$', '^[./]'],
// importOrderSeparation: true,
// importOrderSortSpecifiers: true,
// };
// Modified Version (Works with current Changeset, minus files modified recently)
const config = {
printWidth: 120,
@@ -35,24 +17,3 @@ const config = {
};
module.exports = config;
// The warnings you're seeing are because the options importOrder, importOrderSeparation, and importOrderSortSpecifiers are not recognized by Prettier. These options are specific to the @trivago/prettier-plugin-sort-imports plugin, which you have removed from your Prettier configuration. To resolve these warnings, you should remove these options from your .prettierrc.js file. Here's how your updated .prettierrc.js file should look:
// const config = {
// printWidth: 120,
// useTabs: false,
// tabWidth: 2,
// trailingComma: "es5",
// semi: true,
// singleQuote: true,
// bracketSpacing: true,
// arrowParens: "always",
// jsxSingleQuote: false,
// bracketSameLine: false,
// endOfLine: "lf",
// importOrder: ["^@core/(.*)$", "^@server/(.*)$", "^@ui/(.*)$", "^[./]"],
// importOrderSeparation: true,
// importOrderSortSpecifiers: true
// };
//
// module.exports = config;

View File

@@ -138,7 +138,7 @@ export function JobLinesExpander({ jobline, jobid, bodyshop, currentUser }) {
parentJobId={jobid}
relationshipType={"joblineid"}
relationshipId={jobline.id}
query={QUERY_JOBLINE_TASKS_PAGINATED}
query={{ QUERY_JOBLINE_TASKS_PAGINATED }}
titleTranslation="tasks.titles.job_tasks"
/>
</Col>

View File

@@ -4,7 +4,7 @@ import { useMutation, useQuery } from "@apollo/client";
import { MUTATION_TOGGLE_TASK_COMPLETED, MUTATION_TOGGLE_TASK_DELETED } from "../../graphql/tasks.queries.js";
import { pageLimit } from "../../utils/config.js";
import AlertComponent from "../alert/alert.component.jsx";
import React, { useEffect } from "react";
import React from "react";
import TaskListComponent from "./task-list.component.jsx";
import { notification } from "antd";
import { useTranslation } from "react-i18next";
@@ -27,7 +27,7 @@ export default function TaskListContainer({
const searchParams = queryString.parse(useLocation().search);
const { page, sortcolumn, sortorder, deleted, completed, mine } = searchParams;
const dispatch = useDispatch();
const { loading, error, data, refetch } = useQuery(query, {
const { loading, error, data, refetch } = useQuery(query[Object.keys(query)[0]], {
fetchPolicy: "network-only",
nextFetchPolicy: "network-only",
variables: {
@@ -46,21 +46,6 @@ export default function TaskListContainer({
}
});
/**
* Refetch tasks when a task is updated
*/
useEffect(() => {
const handleTaskUpdated = async (event) => {
await refetch().catch((e) => `Something went wrong fetching tasks: ${e.message || ""}`);
};
window.addEventListener("taskUpdated", handleTaskUpdated);
// Clean up the event listener when the component is unmounted.
return () => {
window.removeEventListener("taskUpdated", handleTaskUpdated);
};
}, [refetch]);
/**
* Toggle task completed mutation
*/
@@ -80,7 +65,8 @@ export default function TaskListContainer({
id: id,
completed: !currentStatus,
completed_at: completed_at
}
},
refetchQueries: [Object.keys(query)[0], "GET_JOB_BY_PK"]
});
if (!toggledTask.errors) {
@@ -95,11 +81,6 @@ export default function TaskListContainer({
);
}
window.dispatchEvent(
new CustomEvent("taskUpdated", {
detail: { message: "A task has been completed." }
})
);
notification["success"]({
message: t("tasks.successes.completed")
});
@@ -130,7 +111,8 @@ export default function TaskListContainer({
id: id,
deleted: !currentStatus,
deleted_at: deleted_at
}
},
refetchQueries: [Object.keys(query)[0], "GET_JOB_BY_PK"]
});
if (!toggledTask.errors) {
dispatch(
@@ -144,16 +126,10 @@ export default function TaskListContainer({
);
}
window.dispatchEvent(
new CustomEvent("taskUpdated", {
detail: { message: "A task has been deleted." }
})
);
notification["success"]({
message: t("tasks.successes.deleted")
});
} catch (err) {
console.dir(err);
notification["error"]({
message: t("tasks.failures.deleted")
});

View File

@@ -154,12 +154,6 @@ export function TaskUpsertModalContainer({ bodyshop, currentUser, taskUpsert, to
);
}
window.dispatchEvent(
new CustomEvent("taskUpdated", {
detail: { message: "A task has been created or edited." }
})
);
notification["success"]({
message: t("tasks.successes.updated")
});
@@ -179,6 +173,15 @@ export function TaskUpsertModalContainer({ bodyshop, currentUser, taskUpsert, to
bodyshopid: bodyshop.id
}
]
},
update(cache, { data }) {
cache.modify({
fields: {
tasks(cached) {
return [...data?.insert_tasks?.returning, ...cached];
}
}
});
}
});
@@ -222,12 +225,6 @@ export function TaskUpsertModalContainer({ bodyshop, currentUser, taskUpsert, to
console.error(`Something went wrong sending email to Assigned party on Task edit. ${e.message || ""}`)
);
window.dispatchEvent(
new CustomEvent("taskUpdated", {
detail: { message: "A task has been created or edited." }
})
);
notification["success"]({
message: t("tasks.successes.created")
});

View File

@@ -327,13 +327,10 @@ export const QUERY_MY_TASKS_PAGINATED = gql`
* @type {DocumentNode}
*/
export const MUTATION_TOGGLE_TASK_COMPLETED = gql`
${PARTIAL_TASK_FIELDS}
mutation MUTATION_TOGGLE_TASK_COMPLETED($id: uuid!, $completed: Boolean!, $completed_at: timestamptz) {
update_tasks_by_pk(pk_columns: { id: $id }, _set: { completed: $completed, completed_at: $completed_at }) {
id
title
completed
completed_at
jobid
...TaskFields
}
}
`;
@@ -343,13 +340,10 @@ export const MUTATION_TOGGLE_TASK_COMPLETED = gql`
* @type {DocumentNode}
*/
export const MUTATION_TOGGLE_TASK_DELETED = gql`
${PARTIAL_TASK_FIELDS}
mutation MUTATION_TOGGLE_TASK_DELETED($id: uuid!, $deleted: Boolean!, $deleted_at: timestamptz) {
update_tasks_by_pk(pk_columns: { id: $id }, _set: { deleted: $deleted, deleted_at: $deleted_at }) {
id
title
deleted
deleted_at
jobid
...TaskFields
}
}
`;
@@ -359,27 +353,11 @@ export const MUTATION_TOGGLE_TASK_DELETED = gql`
* @type {DocumentNode}
*/
export const MUTATION_INSERT_NEW_TASK = gql`
${PARTIAL_TASK_FIELDS}
mutation MUTATION_INSERT_NEW_TASK($taskInput: [tasks_insert_input!]!) {
insert_tasks(objects: $taskInput) {
returning {
id
created_at
updated_at
title
description
deleted
deleted_at
due_date
created_by
assigned_to
completed
completed_at
remind_at
priority
jobid
joblineid
partsorderid
billid
...TaskFields
}
}
}
@@ -390,27 +368,11 @@ export const MUTATION_INSERT_NEW_TASK = gql`
* @type {DocumentNode}
*/
export const MUTATION_UPDATE_TASK = gql`
${PARTIAL_TASK_FIELDS}
mutation MUTATION_UPDATE_TASK($taskId: uuid!, $task: tasks_set_input!) {
update_tasks(where: { id: { _eq: $taskId } }, _set: $task) {
returning {
id
created_at
updated_at
title
description
deleted
deleted_at
due_date
created_by
assigned_to
completed
completed_at
remind_at
priority
jobid
joblineid
partsorderid
billid
...TaskFields
}
}
}

View File

@@ -104,18 +104,6 @@ export function JobsDetailPage({
form.resetFields();
}, [form, job]);
useEffect(() => {
const handleTaskUpdated = async (event) => {
await refetch().catch((e) => `Something went wrong fetching tasks: ${e.message || ""}`);
};
window.addEventListener("taskUpdated", handleTaskUpdated);
// Clean up the event listener when the component is unmounted.
return () => {
window.removeEventListener("taskUpdated", handleTaskUpdated);
};
}, [refetch]);
//useKeyboardSaveShortcut(form.submit);
const handleFinish = async (values) => {
@@ -410,7 +398,7 @@ export function JobsDetailPage({
bodyshop={bodyshop}
relationshipType={"jobid"}
relationshipId={job.id}
query={QUERY_JOB_TASKS_PAGINATED}
query={{ QUERY_JOB_TASKS_PAGINATED }}
titleTranslation="tasks.titles.job_tasks"
showRo={false}
/>

View File

@@ -23,7 +23,7 @@ const mapDispatchToProps = (dispatch) => ({
setTaskUpsertContext: (context) => dispatch(setModalContext({ context, modal: "taskUpsert" }))
});
export function MyTasksPageContainer({
export function AllTasksPageContainer({
bodyshop,
currentUser,
setBreadcrumbs,
@@ -67,4 +67,4 @@ export function MyTasksPageContainer({
return <TasksPageComponent type={TaskPageTypes.ALL_TASKS} currentUser={currentUser} bodyshop={bodyshop} />;
}
export default connect(mapStateToProps, mapDispatchToProps)(MyTasksPageContainer);
export default connect(mapStateToProps, mapDispatchToProps)(AllTasksPageContainer);

View File

@@ -11,7 +11,7 @@ export default function TasksPageComponent({ bodyshop, currentUser, type }) {
onlyMine={true}
relationshipId={currentUser.email}
relationshipType={"user"}
query={QUERY_MY_TASKS_PAGINATED}
query={{ QUERY_MY_TASKS_PAGINATED }}
bodyshop={bodyshop}
titleTranslation={"tasks.titles.my_tasks"}
currentUser={currentUser}
@@ -20,7 +20,7 @@ export default function TasksPageComponent({ bodyshop, currentUser, type }) {
case taskPageTypes.ALL_TASKS:
return (
<TaskListContainer
query={QUERY_ALL_TASKS_PAGINATED}
query={{ QUERY_ALL_TASKS_PAGINATED }}
bodyshop={bodyshop}
titleTranslation={"tasks.titles.all_tasks"}
currentUser={currentUser}