Compare commits

..

4 Commits

Author SHA1 Message Date
4da96e8e74 Merge 2025-11-11 14:11:20 -01:00
smolsbs
ec17137f4b Merge pull request #5 from aulojor/main
Json formatado, Criação de rows com baliza, baliza para deleção de rows, tempo adicionado ao TABLE_RET
2025-11-11 13:55:08 -01:00
aulojor
6826941c55 feat: criação de entrada e balizas para linhas, adicionar tempo à visualização 2025-11-11 13:27:29 -01:00
aulojor
12d23d2c0c feat: identar o output do json 2025-11-11 12:34:14 -01:00
2 changed files with 64 additions and 10 deletions

View File

@@ -18,6 +18,7 @@ MENU ="""[1] Criar a base de dados
[6] Guardar como JSON
[7] Guardar como CSV
[8] Estatísticas
[9] Criar uma entrada
[Q] Sair
"""
@@ -35,7 +36,7 @@ def guardar_df(df: pd.DataFrame, fname: str) -> bool:
def guardar_json(df: pd.DataFrame, fname: str) -> bool:
with open(fname , "w") as fp:
try:
df.to_json(fp)
df.to_json(fp, indent=4)
except:
return False
return True
@@ -128,12 +129,11 @@ def main():
row_choice = _get_usr_input("Escolhe a linha a apagar:", int)
# TODO: balizar a escolha para apenas as linhas do evento em questao
db = crud.delete_table_row(db, eid_choice, row_choice)
db, msg = crud.delete_table_row(db, eid_choice, row_choice)
new_table = crud.get_table(db, eid_choice)
crud.show_table(new_table)
print(f"Linha {row_choice} apagada com sucesso!")
print(msg)
input()
else:
retInfo = "Base de dados não encontrada!"
@@ -178,6 +178,30 @@ def main():
else:
retInfo = "Base de dados não encontrada!"
case "9":
if db is not None:
crud.read_ids(db)
eid_choice = _get_usr_input("Escolhe o ID: ", int)
if not _event_exists(db, eid_choice):
retInfo = "ID do event não encontrado!"
else:
os.system("cls")
table = crud.get_table(db, eid_choice)
_prettify_event(table)
crud.show_table(table)
insertion_point = _get_usr_input("Posição da nova linha: ", int)
# TODO: balizar a escolha para apenas as linhas do evento em questao
db, msg = crud.create_table_row(db, eid_choice, insertion_point)
new_table = crud.get_table(db, eid_choice)
crud.show_table(new_table)
print(msg)
input()
else:
retInfo = "Base de dados não encontrada!"
case "q":
isRunning = False
continue

View File

@@ -9,7 +9,7 @@ pd.set_option('display.width', 150)
# -- globals
HEADER_COLS = ["Data", "Distancia", "Tipo Ev", "Lat", "Long", "Prof", "Magnitudes"]
TABLE_READ_RET = ["Estacao","Componente","", "Amplitude"]
TABLE_READ_RET = ["Estacao", "Hora", "Min", "Seg", "Componente", "Amplitude"]
# -- helper funcs
@@ -95,8 +95,16 @@ def delete_event(df, event_id):
def delete_table_row(df, event_id, row_number):
# Apaga uma linha específica da tabela do evento
# Cria uma nova linha vazia no dataframe na posição insertion_point
matching_indices = df.index[df['ID'] == event_id].tolist()
first_event_row = matching_indices[0]
last_event_row = matching_indices[-1]
if row_number < first_event_row or row_number > last_event_row:
return df, f"Erro: A posição a apagar, {row_number} está fora do intervalo permitido para o evento {event_id}."
new_df = df.drop([row_number]).reset_index(drop=True)
return new_df
return new_df, f"Linha {row_choice} apagada com sucesso!"
def create_blank_event(df, event_id):
@@ -113,7 +121,32 @@ def create_blank_event(df, event_id):
return new_df
def create_table_row(df, event_id, row_number_1):
def create_table_row(df, event_id, insertion_point):
# Cria uma nova linha vazia no dataframe na posição insertion_point
matching_indices = df.index[df['ID'] == event_id].tolist()
first_event_row = matching_indices[0]
last_event_row = matching_indices[-1]
if insertion_point < first_event_row or insertion_point > last_event_row + 1:
return df, f"Erro: A posição de inserção {insertion_point} está fora do intervalo permitido para o evento {event_id}"
new_row_df = pd.DataFrame(columns=df.columns, index=[0])
new_row_df['ID'] = event_id
new_row_df = new_row_df.fillna(0)
new_row_df = new_row_df.astype(df.dtypes)
df_before = df.iloc[:insertion_point]
df_after = df.iloc[insertion_point:]
new_df = pd.concat([df_before, new_row_df, df_after], ignore_index=True)
return new_df, f"Linha inserida com sucesso na posição {insertion_point}"
def create_entire_database() -> pd.DataFrame:
pass
def create_table_row_old(df, event_id, row_number_1):
event_rows = df[df["ID"] == event_id]
if event_rows.empty:
return df, f"Erro: Evento com ID {event_id} não encontrado."
@@ -136,6 +169,3 @@ def create_table_row(df, event_id, row_number_1):
return new_df, f"Linha inserida com sucesso na posição {row_number_1} do evento {event_id}."
def create_entire_database() -> pd.DataFrame:
pass