src/jiji/model/graphing/graph_factory.rb
# frozen_string_literal: true
module Jiji::Model::Graphing
class GraphFactory
def initialize(backtest = nil, saving_interval = 60) #:nodoc:
@backtest = backtest
@saving_interval = saving_interval
@graphs = {}
end
# グラフを作成します。
#
# @rsi_graph = graph_factory.create('RSI',
# :line, :average, ['#666699'], [30, 70])
#
# label:: グラフの名前
# type:: グラフの種類。:rate. :line のいずれかを指定します。
# aggregation_type:: グラフの集計種別 :average, :first, :last
# のいずれかを指定します。
# colors:: グラフの色を配列で指定します 例) ["#003344", "#003355"]
# axises:: 軸ラベルを指定します。 例) [30, 70]
def create(label, type = :line, aggregation_type = :first,
colors = [], axises = [])
return @graphs[label] if @graphs.include?(label)
graph = Graph.get_or_create(label,
type, colors, axises, aggregation_type, @backtest)
graph.setup_data_savers(@saving_interval)
@graphs[label] = graph
graph
end
def create_balance_graph #:nodoc:
create('口座資産', :balance, :last)
end
def save_data(time) #:nodoc:
@graphs.values.each do |g|
g.save_data(time)
end
end
end
end