(back|front)end: add ability to filter by projectId
This commit is contained in:
parent
fd85056711
commit
12403a6029
5 changed files with 20 additions and 11 deletions
|
@ -5,6 +5,7 @@ module Twenty::GraphQL::Type
|
|||
end
|
||||
field :tasks, [Task], null: false do
|
||||
argument :status, TaskStatus
|
||||
argument :project_id, Int, required: false
|
||||
end
|
||||
field :projects, [Project], null: false
|
||||
|
||||
|
@ -12,10 +13,11 @@ module Twenty::GraphQL::Type
|
|||
Twenty::Task.find_by(id: task_id)
|
||||
end
|
||||
|
||||
def tasks(status:)
|
||||
Twenty::Task
|
||||
def tasks(status:, project_id: nil)
|
||||
tasks = Twenty::Task
|
||||
.where(status:)
|
||||
.order(updated_at: :desc)
|
||||
project_id ? tasks.where(project_id:) : tasks
|
||||
end
|
||||
|
||||
def projects
|
||||
|
|
|
@ -44,7 +44,7 @@ type Project {
|
|||
type Query {
|
||||
findTask(taskId: Int!): Task
|
||||
projects: [Project!]!
|
||||
tasks(status: TaskStatus!): [Task!]!
|
||||
tasks(projectId: Int, status: TaskStatus!): [Task!]!
|
||||
}
|
||||
|
||||
type Task {
|
||||
|
|
|
@ -1,17 +1,23 @@
|
|||
import React, { useEffect } from "react";
|
||||
import React, { useEffect, useContext } from "react";
|
||||
import { ParamContext } from "/Context";
|
||||
import { NavBar } from "/components/NavBar";
|
||||
import { Group } from "/components/Group";
|
||||
import { TaskStatus } from "/types/schema";
|
||||
import { TaskStatus, Maybe } from "/types/schema";
|
||||
import { useTasks } from "/hooks/queries/useTasks";
|
||||
|
||||
export function Tasks() {
|
||||
const params = useContext(ParamContext);
|
||||
const projectId: Maybe<Number> = params.projectId
|
||||
? parseInt(params.projectId)
|
||||
: null;
|
||||
|
||||
useEffect(() => {
|
||||
document.title = "Tasks";
|
||||
}, []);
|
||||
|
||||
const getTasks = (status: TaskStatus) => {
|
||||
return () => {
|
||||
return useTasks({ variables: { status } });
|
||||
return useTasks({ variables: { status, projectId } });
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@ import { useQuery, gql } from "@apollo/client";
|
|||
import { Task } from "/types/schema";
|
||||
|
||||
export const GET_TASKS = gql`
|
||||
query GetTasks($status: TaskStatus!) {
|
||||
tasks(status: $status) {
|
||||
query GetTasks($status: TaskStatus!, $projectId: Int) {
|
||||
tasks(status: $status, projectId: $projectId) {
|
||||
id
|
||||
title
|
||||
status
|
||||
|
|
|
@ -80,14 +80,14 @@ export type Project = {
|
|||
id: Scalars["Int"]["output"];
|
||||
name: Scalars["String"]["output"];
|
||||
path: Scalars["String"]["output"];
|
||||
tasks: Task[];
|
||||
tasks: Array<Task>;
|
||||
};
|
||||
|
||||
export type Query = {
|
||||
__typename?: "Query";
|
||||
findTask?: Maybe<Task>;
|
||||
projects: Project[];
|
||||
tasks: Task[];
|
||||
projects: Array<Project>;
|
||||
tasks: Array<Task>;
|
||||
};
|
||||
|
||||
export type QueryFindTaskArgs = {
|
||||
|
@ -95,6 +95,7 @@ export type QueryFindTaskArgs = {
|
|||
};
|
||||
|
||||
export type QueryTasksArgs = {
|
||||
projectId?: InputMaybe<Scalars["Int"]["input"]>;
|
||||
status: TaskStatus;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue