# -*- encoding:utf-8 -*-
"""量化振幅分析工具图形可视化"""

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import ipywidgets as widgets
from IPython.display import display

from ..UtilBu import ABuKLUtil
from ..WidgetBu.ABuWGToolBase import WidgetToolBase, multi_fetch_symbol_analyse

__author__ = '阿布'
__weixin__ = 'abu_quant'


# noinspection PyUnusedLocal
class WidgetDATool(WidgetToolBase):
    """振幅分析界面"""

    def __init__(self, tool_set):
        """初始化数据分析界面"""
        super(WidgetDATool, self).__init__(tool_set)

        da_list = []
        tip_label1 = widgets.Label(u'分析目标需要在\'分析设置\'中选择', layout=self.label_layout)
        tip_label2 = widgets.Label(u'需要设置多个分析目标进行对比', layout=self.label_layout)
        da_list.append(tip_label1)
        da_list.append(tip_label2)

        date_week_wave_bt = widgets.Button(description=u'交易日震幅对比分析', layout=widgets.Layout(width='98%'),
                                           button_style='info')
        date_week_wave_bt.on_click(self.date_week_wave)
        da_list.append(date_week_wave_bt)

        p_change_stats_bt = widgets.Button(description=u'交易日涨跌对比分析', layout=widgets.Layout(width='98%'),
                                           button_style='info')
        p_change_stats_bt.on_click(self.p_change_stats)
        da_list.append(p_change_stats_bt)

        wave_change_rate_bt = widgets.Button(description=u'振幅统计套利条件分析', layout=widgets.Layout(width='98%'),
                                             button_style='info')
        wave_change_rate_bt.on_click(self.wave_change_rate)
        da_list.append(wave_change_rate_bt)

        date_week_win_bt = widgets.Button(description=u'交易日涨跌概率分析', layout=widgets.Layout(width='98%'),
                                          button_style='info')
        date_week_win_bt.on_click(self.date_week_win)
        da_list.append(date_week_win_bt)

        bcut_change_vc_bt = widgets.Button(description=u'交易日涨跌区间分析(预定区间)', layout=widgets.Layout(width='98%'),
                                           button_style='info')
        bcut_change_vc_bt.on_click(self.bcut_change_vc)
        da_list.append(bcut_change_vc_bt)

        qcut_change_vc_bt = widgets.Button(description=u'交易日涨跌区间分析(不定区间)', layout=widgets.Layout(width='98%'),
                                           button_style='info')
        qcut_change_vc_bt.on_click(self.qcut_change_vc)
        da_list.append(qcut_change_vc_bt)

        self.widget = widgets.VBox(da_list, layout=widgets.Layout(width='58%'))

    @multi_fetch_symbol_analyse
    def qcut_change_vc(self, kl_dict, bt):
        """交易日涨跌区间分析(不定区间)action"""
        display(ABuKLUtil.qcut_change_vc(kl_dict))

    @multi_fetch_symbol_analyse
    def bcut_change_vc(self, kl_dict, bt):
        """交易日涨跌区间分析(预定区间)action"""
        display(ABuKLUtil.bcut_change_vc(kl_dict))

    @multi_fetch_symbol_analyse
    def date_week_win(self, kl_dict, bt):
        """交易日涨跌概率分析action"""
        display(ABuKLUtil.date_week_win(kl_dict))

    @multi_fetch_symbol_analyse
    def wave_change_rate(self, kl_dict, bt):
        """振幅统计套利条件分析action"""
        ABuKLUtil.wave_change_rate(kl_dict)

    @multi_fetch_symbol_analyse
    def date_week_wave(self, kl_dict, bt):
        """交易日震幅对比分析action"""
        display(ABuKLUtil.date_week_wave(kl_dict))

    @multi_fetch_symbol_analyse
    def p_change_stats(self, kl_dict, bt):
        """交易日涨跌对比分析action"""
        ABuKLUtil.p_change_stats(kl_dict)