add issue tasks.

This commit is contained in:
2020-05-10 20:50:18 +02:00
parent 3039dc1879
commit 47d8a027da
21 changed files with 598 additions and 15 deletions
+6 -2
View File
@@ -18,10 +18,14 @@ type Issue {
project: Project
"The issue's owner/creator."
owner: User
"The issue assignee."
"The issue's assignee."
assignee: User
"The issue status."
"Current status of the issue."
status: ProjectStatus!
"Issue tasks."
tasks(filter: IssueTaskFilter): [IssueTask!]!
#"Logs related to this issue."
#logs: [Log!]!
}
input IssueFilter {
+98
View File
@@ -0,0 +1,98 @@
"""
An issue task is a the main part of an issue. They contain estimates, and which activity
is to be performed. They don't get their own page in UI and should have all their information
presented in a concise manner.
"""
type IssueTask {
"The issue task ID."
id: String!
"The time when the task was created."
createdTime: Time!
"The time when the task was updated."
updatedTime: Time!
"The time when the task is due."
dueTime: Time
"A name for the task."
name: String!
"A short description of the task."
description: String!
"The estimated time."
estimatedTime: Duration!
"The estimated units."
estimatedUnits: Int
"A multiplier for the points earned."
pointsMultiplier: Float!
"Parent issue."
issue: Issue!
"Activity the task performs."
activity: Activity!
"The status of this task."
status: ProjectStatus!
#"Logs related to this task."
#logs: [Log!]!
"Remaining time from the logs."
remainingTime: Duration!
"Remaining units (if countable)"
remainingUnits: Int
}
"""
A subset of the filter for Issue.tasks
"""
input IssueTaskFilter {
"The activity IDs to limit the task list with."
activityIds: [String!]
"The lowest stage (inclusive)."
minStage: Int
"The highest stage (inclusive)."
maxStage: Int
}
"""
Input for the createIssueTask mutation.
"""
input IssueTaskCreateInput {
"The issue ID to parent to."
issueId: String!
"The activity ID this task is about."
activityId: String!
"The name of the task."
name: String!
"The description of the task."
description: String!
"Estimated time to perform the task."
estimatedTime: Duration!
"Task status."
statusName: String!
"Estimate an amount of units. This is required for issues with a countable activity."
estimatedUnits: Int
"Set an optional multiplier for the issue."
pointsMultiplier: Float
}
"""
Input for the editIssueTask mutation.
"""
input IssueTaskEditInput {
"The issue task to edit."
issueTaskId: String!
"Update the status."
setStatusName: String
"Set the name."
setName: String
"Set description."
setDescription: String
"Set estimated time."
setEstimatedTime: Duration
"Set estimated units."
setEstimatedUnits: Int
"Set points multiplier."
setPointsMultiplier: Float
"Set due time."
setDueTime: Time
}
+10
View File
@@ -9,9 +9,19 @@ type Mutation {
"Edit an activity."
editActivity(input: ActivityEditInput!): Activity!
# ITEM
# ISSUE
"Create a new issue."
createIssue(input: IssueCreateInput!): Issue!
# ISSUE TASK
"Create a new issue task."
createIssueTask(input: IssueTaskCreateInput!): IssueTask!
"Edit an issue task."
editIssueTask(input: IssueTaskEditInput!): IssueTask!
# ISSUE ITEM
# LOG
# USER
"Log in."
+1
View File
@@ -29,6 +29,7 @@ type ProjectPermission {
user: User
}
"The project's statuses for issues and issue tasks."
type ProjectStatus {
"The stage of the status. 0=inactive, 1=pending, 2=active, 3=review, 4=completed, 5=failed, 6=postponed"
stage: Int!
+10 -1
View File
@@ -1 +1,10 @@
scalar Time
"""
A ISO3339 timestamp.
"""
scalar Time
"""
Duration in milliseconds. It will output as an integer, but can be supplied as a float, integer
or a string accepted by the Go time.Duration parser.
"""
scalar Duration