import gradio as gr
import torch
from score_fincat import score_fincat
from sus_fls import get_sustainability,fls
from Cuad_others import quad,summarize_text,fin_ner
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

def load_questions():
    questions = []
    with open('questionshort.txt') as f:
        questions = f.readlines()
    return questions
questions = load_questions()

answer_main=''     
def mainFun(query,file):
    text=''
    with open(file.name) as f:
        text = f.read()
    answer_main,answer_p=quad(query,file)
    return text,answer_p,summarize_text(answer_main)

def mainFun2(temp):
    return fin_ner(temp.split('Probability:')[0])

def mainFun3(temp):
    return score_fincat(temp.split('Probability:')[0])

def mainFun4(temp):
    return get_sustainability(temp.split('Probability:')[0])
    
def mainFun5(temp):
    return fls(temp.split('Probability:')[0])    


demo = gr.Blocks()
with demo:
    txt_file = gr.File(label='CONTRACT')
    text = gr.Textbox(lines=10)
    selected_ques=gr.Dropdown(choices=questions,label='SEARCH QUERY')
    b1 = gr.Button("Analyze File")
    
    answer = gr.Textbox(lines=2)
    summarize = gr.Textbox(lines=2)
    b1.click(mainFun, inputs=[selected_ques,txt_file], outputs=[text,answer,summarize])
    
    b2=gr.Button("Get NER")
    label_ner = gr.HighlightedText()
    b2.click(mainFun2,inputs=answer,outputs=label_ner)
    
    b3=gr.Button("Get CLAIM")
    label_claim = gr.HighlightedText()
    b3.click(mainFun3,inputs=answer,outputs=label_claim)
    
    b4=gr.Button("Get SUSTAINABILITY")
    label_sus = gr.HighlightedText()
    b4.click(mainFun4,inputs=answer,outputs=label_sus)
    
    b5=gr.Button("Get FLS")
    label_fls = gr.HighlightedText()
    b5.click(mainFun5,inputs=answer,outputs=label_fls)
    
demo.launch()