import os
from tools import edit_list

def file_to_txy(filename):  #returnerer en t, x og y verdier fra en fil som kommer fra tracker
    with open('data_files/'+filename, 'r') as file:
        lines = file.readlines()
        t_list = []
        x_list = []
        y_list = []

        for line in lines[2:]:
            try:
                t, x, y = [float(i.replace(',','.')) for i in line.split()]
                t_list.append(t)
                x_list.append(x)
                y_list.append(y)
            except ValueError:
                pass

    return t_list, x_list, y_list

def file_to_tTheta(filename): #returnerer t og vinkelutslag fra tracker
    import numpy as np
    with open('data_files/' + filename, 'r') as file:
        with open('data_files/' + filename, 'r') as file:
            lines = file.readlines()
            t_list = []
            theta_list = []

            for line in lines[2:]:
                t, x, y = [float(x) for x in line.split()]
                theta = np.arctan(x/y)/3.14

                t_list.append(t)
                theta_list.append(theta)

        return t_list, theta_list

def txy_to_file(filename,t,x,y):    #tar inn t,x,y verdier, skriver til en fil.
    name,suffix = filename.split('.')
    suffix = '.' + suffix
    if os.path.isfile('data_files/'+filename): #sørger for at man ikke overskriver en fil med uhell
        i = 2
        while os.path.isfile('data_files/'+name+'_'+str(i)+suffix):
            i+=1
        filename = name + '_' + str(i)+suffix
    with open('data_files/'+filename, 'w') as file:
        file.write('mass_A \n t    x    y \n')
        for i in range(len(t)):
            file.write(str(t[i])+'  '+str(x[i])+'   '+str(y[i])+'\n')

    print('listene er skrevet til data_files/', filename, sep='')

def cut_data_points(i): #klipper datafil nummer i ved første positive ekstrema langs x-aksen
    t, x, y = file_to_txy('centered_' + str(i) + '.txt')
    ekstrema_list = edit_list.find_ekstrema(x)
    for ekstrema in ekstrema_list:
        if ekstrema[0] > 0 and ekstrema[0] < 0.4:
            print(ekstrema)
            ekstrema_index = ekstrema[1]
            break

    cut_x = x[ekstrema_index:]
    cut_y = y[ekstrema_index:]
    cut_t = t[ekstrema_index:]
    adj_t = edit_list.adjust_t0(cut_t)

    txy_to_file('klippet_' + str(i) + '.txt', adj_t, cut_x, cut_y)

def center_data_points(i): #sentrerer origo i datafil nummer i

    t, x, y = file_to_txy('fors_' + str(i) + '.txt')
    cent_x, cent_y = edit_list.origo_to_center(x, y)
    adj_t = edit_list.adjust_t0(t)

    txy_to_file('centered_' + str(i) + '.txt', adj_t, cent_x, cent_y)