add kanban
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
@tool
|
||||
extends "kanban_resource.gd"
|
||||
|
||||
## Data of a task.
|
||||
|
||||
|
||||
const __Step := preload("step.gd")
|
||||
|
||||
var title: String:
|
||||
set(value):
|
||||
title = value
|
||||
__notify_changed()
|
||||
|
||||
var description: String:
|
||||
set(value):
|
||||
description = value
|
||||
__notify_changed()
|
||||
|
||||
var category: String:
|
||||
set(value):
|
||||
category = value
|
||||
__notify_changed()
|
||||
|
||||
var steps: Array[__Step]:
|
||||
get:
|
||||
return steps.duplicate()
|
||||
set(value):
|
||||
steps = value
|
||||
__notify_changed()
|
||||
|
||||
|
||||
func _init(p_title: String = "", p_description: String = "", p_category: String = "", p_steps: Array[__Step] = []) -> void:
|
||||
title = p_title
|
||||
description = p_description
|
||||
category = p_category
|
||||
steps = p_steps
|
||||
super._init()
|
||||
|
||||
|
||||
func add_step(step: __Step, silent: bool = false) -> void:
|
||||
var new_steps = steps
|
||||
new_steps.append(step)
|
||||
steps = new_steps
|
||||
step.changed.connect(__notify_changed)
|
||||
if not silent:
|
||||
__notify_changed()
|
||||
|
||||
|
||||
func to_json() -> Dictionary:
|
||||
var s: Array[Dictionary] = []
|
||||
for step in steps:
|
||||
s.append(step.to_json())
|
||||
|
||||
return {
|
||||
"title": title,
|
||||
"description": description,
|
||||
"category": category,
|
||||
"steps": s,
|
||||
}
|
||||
|
||||
|
||||
func from_json(json: Dictionary) -> void:
|
||||
if json.has("title"):
|
||||
title = json["title"]
|
||||
else:
|
||||
push_warning("Loading incomplete json data which is missing a title.")
|
||||
|
||||
if json.has("description"):
|
||||
description = json["description"]
|
||||
else:
|
||||
push_warning("Loading incomplete json data which is missing a description.")
|
||||
|
||||
if json.has("category"):
|
||||
category = json["category"]
|
||||
else:
|
||||
push_warning("Loading incomplete json data which is missing a category.")
|
||||
|
||||
if json.has("steps"):
|
||||
var s: Array[__Step] = []
|
||||
for step in json["steps"]:
|
||||
s.append(__Step.new())
|
||||
s[-1].from_json(step)
|
||||
s[-1].changed.connect(__notify_changed)
|
||||
steps = s
|
||||
else:
|
||||
push_warning("Loading incomplete json data which is missing steps.")
|
||||
Reference in New Issue
Block a user