# frozen_string_literal: true module Cryptum # This plugin is used to Refresh the Cryptum console UI module UI module SignalEngine # Supported Method Parameters:: # Cryptum::UI::Candle.refresh( # order_book: 'required - Order Book Data Structure', # event: 'required - Event from Coinbase Web Socket' # ) public_class_method def self.refresh(opts = {}) signal_engine_win = opts[:signal_engine_win] indicator_status = opts[:indicator_status] color = :white color = indicator_status.market_trend[:color] if indicator_status.market_trend indicator_status.last_action_signal = indicator_status.action_signal case color when :green signal_color = :green action_signal = :sell when :yellow signal_color = :yellow action_signal = :hold when :red signal_color = :cyan action_signal = :buy else signal_color = :white action_signal = :skip end action_signal_out = "SIGNAL >>> #{action_signal.to_s.upcase} <<< ENGINE" # TODO: Everything Above this Line Needs to be Indicators ^ # UI col_just1 = (Curses.cols - Cryptum::UI.col_first) - 1 col_just4 = Curses.cols - Cryptum::UI.col_fourth # ROW 1 out_line_no = 0 Cryptum::UI.line( ui_win: signal_engine_win, out_line_no: out_line_no ) # ROW 2 out_line_no += 1 signal_engine_win.setpos(out_line_no, Cryptum::UI.col_first) signal_engine_win.clrtoeol Cryptum::UI.colorize( ui_win: signal_engine_win, color: signal_color, style: :reverse, string: ''.ljust(col_just1, ' ') ) signal_engine_win.setpos( out_line_no, Cryptum::UI.col_center(str: action_signal_out) ) Cryptum::UI.colorize( ui_win: signal_engine_win, color: signal_color, style: :reverse, string: action_signal_out ) signal_engine_win.setpos(out_line_no, Cryptum::UI.col_fourth) Cryptum::UI.colorize( ui_win: signal_engine_win, color: signal_color, style: :reverse, string: ''.ljust(col_just4, ' ') ) signal_engine_win.refresh indicator_status.action_signal = action_signal indicator_status rescue Interrupt # Exit Gracefully if CTRL+C is Pressed During Session Cryptum::UI::Exit.gracefully rescue StandardError => e raise e end # Display Usage for this Module public_class_method def self.help puts "USAGE: #{self}.refresh( order_book: 'required - Order Book Data Structure', event: 'required - Event from Coinbase Web Socket' ) " end end end end