mirror of
https://github.com/Relintai/pandemonium_engine_easy_charts.git
synced 2025-02-26 17:24:21 +01:00
fix .instance() and RadarChart scene
This commit is contained in:
parent
c7ab170ceb
commit
20dc80b4b6
@ -15,260 +15,260 @@ distinct correlations, trade-offs, and a multitude of other comparative measures
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
func _get_property_list():
|
func _get_property_list():
|
||||||
return [
|
return [
|
||||||
# Chart Properties
|
# Chart Properties
|
||||||
{
|
{
|
||||||
"hint": PROPERTY_HINT_NONE,
|
"hint": PROPERTY_HINT_NONE,
|
||||||
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
||||||
"name": "Chart_Properties/are_values_columns",
|
"name": "Chart_Properties/are_values_columns",
|
||||||
"type": TYPE_BOOL
|
"type": TYPE_BOOL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hint": PROPERTY_HINT_RANGE,
|
"hint": PROPERTY_HINT_RANGE,
|
||||||
"hint_string": "-1,100,1",
|
"hint_string": "-1,100,1",
|
||||||
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
||||||
"name": "Chart_Properties/labels_index",
|
"name": "Chart_Properties/labels_index",
|
||||||
"type": TYPE_INT
|
"type": TYPE_INT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hint": PROPERTY_HINT_RANGE,
|
"hint": PROPERTY_HINT_RANGE,
|
||||||
"hint_string": "-1,100,1",
|
"hint_string": "-1,100,1",
|
||||||
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
||||||
"name": "Chart_Properties/function_names_index",
|
"name": "Chart_Properties/function_names_index",
|
||||||
"type": TYPE_INT
|
"type": TYPE_INT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hint": PROPERTY_HINT_NONE,
|
"hint": PROPERTY_HINT_NONE,
|
||||||
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
||||||
"name": "Chart_Properties/use_height_as_radius",
|
"name": "Chart_Properties/use_height_as_radius",
|
||||||
"type": TYPE_BOOL
|
"type": TYPE_BOOL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hint": PROPERTY_HINT_RANGE,
|
"hint": PROPERTY_HINT_RANGE,
|
||||||
"hint_string": "0,2000",
|
"hint_string": "0,2000",
|
||||||
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
||||||
"name": "Chart_Properties/radius",
|
"name": "Chart_Properties/radius",
|
||||||
"type": TYPE_REAL
|
"type": TYPE_REAL
|
||||||
},
|
},
|
||||||
|
|
||||||
# Chart Display
|
# Chart Display
|
||||||
{
|
{
|
||||||
"hint": PROPERTY_HINT_RANGE,
|
"hint": PROPERTY_HINT_RANGE,
|
||||||
"hint_string": "0.1,100",
|
"hint_string": "0.1,100",
|
||||||
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
||||||
"name": "Chart_Display/full_scale",
|
"name": "Chart_Display/full_scale",
|
||||||
"type": TYPE_REAL
|
"type": TYPE_REAL
|
||||||
},
|
},
|
||||||
|
|
||||||
# Chart Style
|
# Chart Style
|
||||||
{
|
{
|
||||||
"hint": 24,
|
"hint": 24,
|
||||||
"hint_string": "%d/%d:%s"%[TYPE_INT, PROPERTY_HINT_ENUM,
|
"hint_string": "%d/%d:%s"%[TYPE_INT, PROPERTY_HINT_ENUM,
|
||||||
PoolStringArray(Point.SHAPES.keys()).join(",")],
|
PoolStringArray(Point.SHAPES.keys()).join(",")],
|
||||||
"name": "Chart_Style/points_shape",
|
"name": "Chart_Style/points_shape",
|
||||||
"type": TYPE_ARRAY,
|
"type": TYPE_ARRAY,
|
||||||
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE
|
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hint": PROPERTY_HINT_NONE,
|
"hint": PROPERTY_HINT_NONE,
|
||||||
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
||||||
"name": "Chart_Style/function_colors",
|
"name": "Chart_Style/function_colors",
|
||||||
"type": TYPE_COLOR_ARRAY
|
"type": TYPE_COLOR_ARRAY
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hint": PROPERTY_HINT_NONE,
|
"hint": PROPERTY_HINT_NONE,
|
||||||
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
||||||
"name": "Chart_Style/outline_color",
|
"name": "Chart_Style/outline_color",
|
||||||
"type": TYPE_COLOR
|
"type": TYPE_COLOR
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hint": PROPERTY_HINT_NONE,
|
"hint": PROPERTY_HINT_NONE,
|
||||||
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
||||||
"name": "Chart_Style/grid_color",
|
"name": "Chart_Style/grid_color",
|
||||||
"type": TYPE_COLOR
|
"type": TYPE_COLOR
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"class_name": "Font",
|
"class_name": "Font",
|
||||||
"hint": PROPERTY_HINT_RESOURCE_TYPE,
|
"hint": PROPERTY_HINT_RESOURCE_TYPE,
|
||||||
"hint_string": "Font",
|
"hint_string": "Font",
|
||||||
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
||||||
"name": "Chart_Style/font",
|
"name": "Chart_Style/font",
|
||||||
"type": TYPE_OBJECT
|
"type": TYPE_OBJECT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"class_name": "Font",
|
"class_name": "Font",
|
||||||
"hint": PROPERTY_HINT_RESOURCE_TYPE,
|
"hint": PROPERTY_HINT_RESOURCE_TYPE,
|
||||||
"hint_string": "Font",
|
"hint_string": "Font",
|
||||||
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
||||||
"name": "Chart_Style/bold_font",
|
"name": "Chart_Style/bold_font",
|
||||||
"type": TYPE_OBJECT
|
"type": TYPE_OBJECT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hint": PROPERTY_HINT_NONE,
|
"hint": PROPERTY_HINT_NONE,
|
||||||
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
||||||
"name": "Chart_Style/font_color",
|
"name": "Chart_Style/font_color",
|
||||||
"type": TYPE_COLOR
|
"type": TYPE_COLOR
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hint": PROPERTY_HINT_ENUM,
|
"hint": PROPERTY_HINT_ENUM,
|
||||||
"hint_string": PoolStringArray(ECUtilities.templates.keys()).join(","),
|
"hint_string": PoolStringArray(ECUtilities.templates.keys()).join(","),
|
||||||
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
||||||
"name": "Chart_Style/template",
|
"name": "Chart_Style/template",
|
||||||
"type": TYPE_INT
|
"type": TYPE_INT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hint": PROPERTY_HINT_RANGE,
|
"hint": PROPERTY_HINT_RANGE,
|
||||||
"hint_string": "0,360",
|
"hint_string": "0,360",
|
||||||
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
|
||||||
"name": "Chart_Modifiers/rotation",
|
"name": "Chart_Modifiers/rotation",
|
||||||
"type": TYPE_REAL
|
"type": TYPE_REAL
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
func structure_data(database : Array):
|
func structure_data(database : Array):
|
||||||
# @x_values_index can be either a column or a row relative to x values
|
# @x_values_index can be either a column or a row relative to x values
|
||||||
# @y_values can be either a column or a row relative to y values
|
# @y_values can be either a column or a row relative to y values
|
||||||
are_values_columns = invert_chart != are_values_columns
|
are_values_columns = invert_chart != are_values_columns
|
||||||
match are_values_columns:
|
match are_values_columns:
|
||||||
true:
|
true:
|
||||||
for row in database.size():
|
for row in database.size():
|
||||||
var t_row : Array = []
|
var t_row : Array = []
|
||||||
for column in database[row].size():
|
for column in database[row].size():
|
||||||
if row == labels_index:
|
if row == labels_index:
|
||||||
if column == function_names_index:
|
if column == function_names_index:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
x_labels.append(database[row][column])
|
x_labels.append(database[row][column])
|
||||||
else:
|
else:
|
||||||
if column == function_names_index:
|
if column == function_names_index:
|
||||||
y_labels.append(database[row][column])
|
y_labels.append(database[row][column])
|
||||||
else:
|
else:
|
||||||
if typeof(database[row][column]) == TYPE_INT or typeof(database[row][column]) == TYPE_REAL:
|
if typeof(database[row][column]) == TYPE_INT or typeof(database[row][column]) == TYPE_REAL:
|
||||||
t_row.append(database[row][column] as float)
|
t_row.append(database[row][column] as float)
|
||||||
else:
|
else:
|
||||||
t_row.append(database[row][column].replace(",", ".") as float)
|
t_row.append(database[row][column].replace(",", ".") as float)
|
||||||
if not t_row.empty():
|
if not t_row.empty():
|
||||||
x_datas.append(t_row)
|
x_datas.append(t_row)
|
||||||
false:
|
false:
|
||||||
for row in database.size():
|
for row in database.size():
|
||||||
if row == function_names_index:
|
if row == function_names_index:
|
||||||
y_labels = database[row] as PoolStringArray
|
y_labels = database[row] as PoolStringArray
|
||||||
|
|
||||||
var x_temp_datas : PoolRealArray = []
|
var x_temp_datas : PoolRealArray = []
|
||||||
for column in database[row].size():
|
for column in database[row].size():
|
||||||
if column == labels_index:
|
if column == labels_index:
|
||||||
x_labels.append(database[row][column] as String)
|
x_labels.append(database[row][column] as String)
|
||||||
else:
|
else:
|
||||||
x_temp_datas.append(database[row][column] as float)
|
x_temp_datas.append(database[row][column] as float)
|
||||||
x_datas.append(x_temp_datas)
|
x_datas.append(x_temp_datas)
|
||||||
|
|
||||||
|
|
||||||
if labels_index == -1 :
|
if labels_index == -1 :
|
||||||
for data in x_datas[0].size():
|
for data in x_datas[0].size():
|
||||||
x_labels.append("Element %s" % data)
|
x_labels.append("Element %s" % data)
|
||||||
|
|
||||||
if function_names_index == -1 :
|
if function_names_index == -1 :
|
||||||
for data in x_datas.size():
|
for data in x_datas.size():
|
||||||
y_labels.append("Function %s" % data)
|
y_labels.append("Function %s" % data)
|
||||||
|
|
||||||
func build_chart():
|
func build_chart():
|
||||||
SIZE = get_size()
|
SIZE = get_size()
|
||||||
origin = OFFSET + SIZE/2
|
origin = OFFSET + SIZE/2
|
||||||
|
|
||||||
var radar_polygon : Array
|
var radar_polygon : Array
|
||||||
|
|
||||||
func calculate_pass() :
|
func calculate_pass() :
|
||||||
var ordered_max : Array
|
var ordered_max : Array
|
||||||
for data in x_datas :
|
for data in x_datas :
|
||||||
var ordered_data : Array = data.duplicate()
|
var ordered_data : Array = data.duplicate()
|
||||||
ordered_data.sort()
|
ordered_data.sort()
|
||||||
ordered_max.append(ordered_data.pop_back())
|
ordered_max.append(ordered_data.pop_back())
|
||||||
ordered_max.sort()
|
ordered_max.sort()
|
||||||
var max_value : float = ordered_max.pop_back()
|
var max_value : float = ordered_max.pop_back()
|
||||||
var dist = full_scale * pow(10.0,str(max_value).length()-2)
|
var dist = full_scale * pow(10.0,str(max_value).length()-2)
|
||||||
var multi = 0
|
var multi = 0
|
||||||
var value = dist * multi
|
var value = dist * multi
|
||||||
x_chors.append(value as String)
|
x_chors.append(value as String)
|
||||||
while value < max_value:
|
while value < max_value:
|
||||||
multi+=1
|
multi+=1
|
||||||
value = dist * multi
|
value = dist * multi
|
||||||
x_chors.append(value as String)
|
x_chors.append(value as String)
|
||||||
|
|
||||||
func calculate_coordinates():
|
func calculate_coordinates():
|
||||||
for chor in x_chors.size():
|
for chor in x_chors.size():
|
||||||
var inner_polyline : PoolVector2Array
|
var inner_polyline : PoolVector2Array
|
||||||
var scalar_factor : float = (x_chors[chor] as float/x_chors.back() as float)
|
var scalar_factor : float = (x_chors[chor] as float/x_chors.back() as float)
|
||||||
for function in functions:
|
for function in functions:
|
||||||
var angle : float = ((2 * PI * function) / functions) - PI /2 + deg2rad(rotation)
|
var angle : float = ((2 * PI * function) / functions) - PI /2 + deg2rad(rotation)
|
||||||
var x_coordinate : float = (radius if (not use_height_as_radius and radius<SIZE.y/2) else SIZE.y/2) * scalar_factor * cos(angle) + origin.x
|
var x_coordinate : float = (radius if (not use_height_as_radius and radius<SIZE.y/2) else SIZE.y/2) * scalar_factor * cos(angle) + origin.x
|
||||||
var y_coordinate : float = (radius if (not use_height_as_radius and radius<SIZE.y/2) else SIZE.y/2) * scalar_factor * sin(angle) + origin.y
|
var y_coordinate : float = (radius if (not use_height_as_radius and radius<SIZE.y/2) else SIZE.y/2) * scalar_factor * sin(angle) + origin.y
|
||||||
inner_polyline.append(Vector2(x_coordinate, y_coordinate))
|
inner_polyline.append(Vector2(x_coordinate, y_coordinate))
|
||||||
inner_polyline.append(inner_polyline[0])
|
inner_polyline.append(inner_polyline[0])
|
||||||
radar_polygon.append(inner_polyline)
|
radar_polygon.append(inner_polyline)
|
||||||
|
|
||||||
for datas in x_datas:
|
for datas in x_datas:
|
||||||
var function_positions : PoolVector2Array
|
var function_positions : PoolVector2Array
|
||||||
var function_values : Array
|
var function_values : Array
|
||||||
for data in datas.size():
|
for data in datas.size():
|
||||||
var scalar_factor : float = datas[data] /( x_chors.back() as float)
|
var scalar_factor : float = datas[data] /( x_chors.back() as float)
|
||||||
var angle : float = ((2 * PI * data) / datas.size()) - PI/2 + deg2rad(rotation)
|
var angle : float = ((2 * PI * data) / datas.size()) - PI/2 + deg2rad(rotation)
|
||||||
var x_coordinate : float = (radius if (not use_height_as_radius and radius<SIZE.y/2) else SIZE.y/2) * scalar_factor * cos(angle) + origin.x
|
var x_coordinate : float = (radius if (not use_height_as_radius and radius<SIZE.y/2) else SIZE.y/2) * scalar_factor * cos(angle) + origin.x
|
||||||
var y_coordinate : float = (radius if (not use_height_as_radius and radius<SIZE.y/2) else SIZE.y/2) * scalar_factor * sin(angle) + origin.y
|
var y_coordinate : float = (radius if (not use_height_as_radius and radius<SIZE.y/2) else SIZE.y/2) * scalar_factor * sin(angle) + origin.y
|
||||||
function_positions.append(Vector2(x_coordinate,y_coordinate))
|
function_positions.append(Vector2(x_coordinate,y_coordinate))
|
||||||
function_values.append([x_labels[data], datas[data]])
|
function_values.append([x_labels[data], datas[data]])
|
||||||
function_positions.append(function_positions[0])
|
function_positions.append(function_positions[0])
|
||||||
point_positions.append(function_positions)
|
point_positions.append(function_positions)
|
||||||
point_values.append(function_values)
|
point_values.append(function_values)
|
||||||
|
|
||||||
func _draw():
|
func _draw():
|
||||||
if Engine.editor_hint:
|
if Engine.editor_hint:
|
||||||
return
|
return
|
||||||
|
|
||||||
clean_points()
|
clean_points()
|
||||||
draw_grid()
|
draw_grid()
|
||||||
|
|
||||||
for function in point_positions.size():
|
for function in point_positions.size():
|
||||||
var function_color : Color = function_colors[function]
|
var function_color : Color = function_colors[function]
|
||||||
draw_polygon(point_positions[function], [Color(function_color.r, function_color.g, function_color.b, 0.2)],[],null,null,true)
|
draw_polygon(point_positions[function], [Color(function_color.r, function_color.g, function_color.b, 0.2)],[],null,null,true)
|
||||||
draw_polyline(point_positions[function], function_color, 2,true)
|
draw_polyline(point_positions[function], function_color, 2,true)
|
||||||
|
|
||||||
for _function in point_values.size():
|
for _function in point_values.size():
|
||||||
var PointContainer : Control = Control.new()
|
var PointContainer : Control = Control.new()
|
||||||
Points.add_child(PointContainer)
|
Points.add_child(PointContainer)
|
||||||
|
|
||||||
for function_point in point_values[_function].size():
|
for function_point in point_values[_function].size():
|
||||||
var point : Point = point_node.instance()
|
var point : Point = point_node.instance()
|
||||||
point.connect("_point_pressed",self,"point_pressed")
|
point.connect("_point_pressed",self,"point_pressed")
|
||||||
point.connect("_mouse_entered",self,"show_data")
|
point.connect("_mouse_entered",self,"show_data")
|
||||||
point.connect("_mouse_exited",self,"hide_data")
|
point.connect("_mouse_exited",self,"hide_data")
|
||||||
|
|
||||||
point.create_point(points_shape[_function], function_colors[_function],
|
point.create_point(points_shape[_function], function_colors[_function],
|
||||||
Color.white, point_positions[_function][function_point],
|
Color.white, point_positions[_function][function_point],
|
||||||
point.format_value(point_values[_function][function_point], false, false),
|
point.format_value(point_values[_function][function_point], false, false),
|
||||||
y_labels[_function])
|
y_labels[_function])
|
||||||
|
|
||||||
PointContainer.add_child(point)
|
PointContainer.add_child(point)
|
||||||
|
|
||||||
func draw_grid():
|
func draw_grid():
|
||||||
for polyline in radar_polygon:
|
for polyline in radar_polygon:
|
||||||
draw_polyline(polyline, grid_color, 1, true)
|
draw_polyline(polyline, grid_color, 1, true)
|
||||||
var text : String = x_chors[radar_polygon.find(polyline)] as String
|
var text : String = x_chors[radar_polygon.find(polyline)] as String
|
||||||
draw_string(font, polyline[0] - Vector2(font.get_string_size(text).x/2,-5), text, font_color)
|
draw_string(font, polyline[0] - Vector2(font.get_string_size(text).x/2,-5), text, font_color)
|
||||||
|
|
||||||
if not radar_polygon.empty():
|
if not radar_polygon.empty():
|
||||||
draw_polyline(radar_polygon[radar_polygon.size()-1], outline_color, 1, true)
|
draw_polyline(radar_polygon[radar_polygon.size()-1], outline_color, 1, true)
|
||||||
|
|
||||||
for label in x_labels.size():
|
for label in x_labels.size():
|
||||||
var point_array : PoolVector2Array = radar_polygon[radar_polygon.size()-1]
|
var point_array : PoolVector2Array = radar_polygon[radar_polygon.size()-1]
|
||||||
draw_line(origin, point_array[label], grid_color, 1, true)
|
draw_line(origin, point_array[label], grid_color, 1, true)
|
||||||
|
|
||||||
if point_array[label].x != origin.x:
|
if point_array[label].x != origin.x:
|
||||||
draw_string(font, point_array[label] - (Vector2(font.get_string_size(x_labels[label]).x+10,(5 if point_array[label].y <= origin.y else -10)) if point_array[label].x <= origin.x else - Vector2(10,(-5 if point_array[label].y <= origin.y else 10))), x_labels[label], font_color)
|
draw_string(font, point_array[label] - (Vector2(font.get_string_size(x_labels[label]).x+10,(5 if point_array[label].y <= origin.y else -10)) if point_array[label].x <= origin.x else - Vector2(10,(-5 if point_array[label].y <= origin.y else 10))), x_labels[label], font_color)
|
||||||
else:
|
else:
|
||||||
draw_string(font, point_array[label] - (Vector2(font.get_string_size(x_labels[label]).x/2, 10) if point_array[label].y < origin.x else - Vector2(font.get_string_size(x_labels[label]).x/2, 5)), x_labels[label], font_color)
|
draw_string(font, point_array[label] - (Vector2(font.get_string_size(x_labels[label]).x/2, 10) if point_array[label].y < origin.x else - Vector2(font.get_string_size(x_labels[label]).x/2, 5)), x_labels[label], font_color)
|
||||||
|
|
||||||
func create_legend():
|
func create_legend():
|
||||||
pass
|
pass
|
||||||
# legend.clear()
|
# legend.clear()
|
||||||
# for function in functions:
|
# for function in functions:
|
||||||
# var function_legend = FunctionLegend.instance()
|
# var function_legend = FunctionLegend.instance()
|
||||||
@ -282,5 +282,5 @@ func create_legend():
|
|||||||
# legend.append(function_legend)
|
# legend.append(function_legend)
|
||||||
|
|
||||||
func count_functions():
|
func count_functions():
|
||||||
if x_labels.size():
|
if x_labels.size():
|
||||||
functions = x_labels.size()
|
functions = x_labels.size()
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
[gd_scene load_steps=3 format=2]
|
[gd_scene load_steps=3 format=2]
|
||||||
|
|
||||||
<<<<<<<< HEAD:addons/easy_charts/ControlChart/RadarChart/radar_chart.tscn
|
|
||||||
[ext_resource path="res://addons/easy_charts/Utilities/Point/point_data.tscn" type="PackedScene" id=1]
|
|
||||||
[ext_resource path="res://addons/easy_charts/ControlChart/RadarChart/radar_chart.gd" type="Script" id=2]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[sub_resource type="Theme" id=1]
|
|
||||||
========
|
|
||||||
[ext_resource path="res://addons/easy_charts/control_charts/RadarChart/radar_chart.gd" type="Script" id=1]
|
[ext_resource path="res://addons/easy_charts/control_charts/RadarChart/radar_chart.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://addons/easy_charts/utilities/containers/data_tooltip/data_tooltip.tscn" type="PackedScene" id=2]
|
[ext_resource path="res://addons/easy_charts/utilities/containers/data_tooltip/data_tooltip.tscn" type="PackedScene" id=2]
|
||||||
>>>>>>>> dev:addons/easy_charts/control_charts/RadarChart/radar_chart.tscn
|
|
||||||
|
|
||||||
[node name="RadarChart" type="Control"]
|
[node name="RadarChart" type="Control"]
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@ -83,7 +74,7 @@ __meta__ = {
|
|||||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||||
|
|
||||||
[node name="DataTooltip" parent="CanvasLayer" instance=ExtResource( 2 )]
|
[node name="DataTooltip" parent="CanvasLayer" instance=ExtResource( 2 )]
|
||||||
margin_left = -473.792
|
margin_left = -15.644
|
||||||
margin_top = 853.111
|
margin_top = -15.8509
|
||||||
margin_right = -473.928
|
margin_right = -15.78
|
||||||
margin_bottom = 853.911
|
margin_bottom = -15.0509
|
||||||
|
@ -148,8 +148,9 @@ var property_list: Array = []
|
|||||||
|
|
||||||
# !! API v2
|
# !! API v2
|
||||||
static func instance(chart_type : int):
|
static func instance(chart_type : int):
|
||||||
var chart_t : String = ECUtilities.get_chart_type(chart_type)
|
var chart_t : Array = ECUtilities.get_chart_type(chart_type)
|
||||||
var chart : String = "res://addons/easy_charts/%s/%s.tscn" % [chart_t, chart_t]
|
"res://addons/easy_charts/control_charts/RadarChart/radar_chart.tscn"
|
||||||
|
var chart : String = "res://addons/easy_charts/control_charts/%s/%s.tscn" % [chart_t[0], chart_t[1]]
|
||||||
return load(chart).instance()
|
return load(chart).instance()
|
||||||
|
|
||||||
# .......................... Properties Manager ....................................
|
# .......................... Properties Manager ....................................
|
||||||
|
@ -6,11 +6,11 @@ var alphabet : String = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
|
|||||||
var plugin_name : String = "Easy Charts"
|
var plugin_name : String = "Easy Charts"
|
||||||
var templates : Dictionary = {}
|
var templates : Dictionary = {}
|
||||||
var chart_types : Dictionary = {
|
var chart_types : Dictionary = {
|
||||||
0:"LineChart",
|
0:["LineChart","line_chart"],
|
||||||
1:"ColumnChart",
|
1:["ColumnChart","column_chart"],
|
||||||
2:"ScatterChart",
|
2:["ScatterChart","scatter_chart"],
|
||||||
3:"RadarChart",
|
3:["RadarChart","radar_chart"],
|
||||||
4:"PieChart"
|
4:["PieChart","pie_chart"]
|
||||||
}
|
}
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
@ -33,7 +33,7 @@ func _load_templates() -> Dictionary:
|
|||||||
func get_template(template_index : int):
|
func get_template(template_index : int):
|
||||||
return templates.get(templates.keys()[template_index])
|
return templates.get(templates.keys()[template_index])
|
||||||
|
|
||||||
func get_chart_type(chart_type : int):
|
func get_chart_type(chart_type : int) -> Array:
|
||||||
return chart_types.get(chart_types.keys()[chart_type])
|
return chart_types.get(chart_types.keys()[chart_type])
|
||||||
|
|
||||||
func get_letter_index(index : int) -> String:
|
func get_letter_index(index : int) -> String:
|
||||||
|
Loading…
Reference in New Issue
Block a user