from service.dataPageService import getDataIntro
from service.homePageService import introData
from utils import sqlConnect


def getHelpData():
    connect = sqlConnect.MySQLConnection()
    # database overview => do
    do_intro = getDataIntro()
    bar_data = getSiteData()
    feature_intro = introData()
    result = {
        'do_intro': do_intro,
        'bar_data': bar_data,
        'feature_intro': feature_intro
    }
    return result


def getSiteData():
    connect = sqlConnect.MySQLConnection()
    sql_intro = 'SELECT * FROM mbodymap_intro ORDER BY run_num DESC LIMIT 10'
    intro = connect.query(sql_intro)
    trace_name = ['Qualified runs', 'Failed runs', 'To be processed']
    x_data = []
    y_q = []
    y_f = []
    y_p = []
    for item_x in intro:
        x_data.append(item_x['BodySite'])
    for item in intro:
        y_q.append(item['QC_1_num'])
        y_f.append(item['QC_0_num'])
        y_p.append(item['run_num'] - item['loaded_run_num'])
    trace_1 = {
        'y': x_data,
        'x': y_q,
        'name': trace_name[0],
        'orientation': 'h',
        'type': 'bar'
    }
    trace_2 = {
        'y': x_data,
        'x': y_f,
        'name': trace_name[1],
        'orientation': 'h',
        'type': 'bar'
    }
    trace_3 = {
        'y': x_data,
        'x': y_p,
        'name': trace_name[2],
        'orientation': 'h',
        'type': 'bar'
    }
    intro_data = [trace_1, trace_2, trace_3]
    return intro_data
