tool
extends ScatterChartBase
class_name LineChart

# [Linechart] - General purpose node for Line Charts
# A line chart or line plot or line graph or curve chart is a type of chart which
# displays information as a series of data points called 'markers'
# connected by straight line segments.
# It is a basic type of chart common in many fields. It is similar to a scatter plot
# except that the measurement points are ordered (typically by their x-axis value)
# and joined with straight line segments.
# A line chart is often used to visualize a trend in data over intervals of time -
# a time series - thus the line is often drawn chronologically.
# In these cases they are known as run charts.
# Source: Wikipedia

func build_property_list():
	.build_property_list()
	
	#Find first element of Chart Display
	var position
	for i in property_list.size():
		if property_list[i]["name"].find("Chart_Style") != -1: #Found
			position = i
			break
		
	property_list.insert(position + 2, #I want it to be below point shape and function colors
	{
		"hint": PROPERTY_HINT_RANGE,
		"hint_string": "1, 100, 1",
		"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
		"name": "Chart_Style/function_line_width",
		"type": TYPE_INT
	})


func _get_property_list():
	property_list[0].name = "LineChart"
	return property_list


func _draw():
	draw_grid()
	draw_chart_outlines()
	if show_points:
		draw_points()
	draw_lines()
	draw_treshold()


func draw_lines():
	for function in point_values.size():
		for function_point in range(1, point_values[function].size()):
			draw_line(
				point_positions[function][function_point - 1],
				point_positions[function][function_point],
				function_colors[function],
				function_line_width, 
				false)
