Compare commits
5 Commits
31563ed0da
...
74dea1c653
| Author | SHA1 | Date | |
|---|---|---|---|
| 74dea1c653 | |||
| 1645645017 | |||
|
|
47f6ff5ca4 | ||
|
|
bb10d808f8 | ||
|
|
987324f7f1 |
@@ -1,7 +1,6 @@
|
|||||||
#! /usr/bin/env python
|
#! /usr/bin/env python
|
||||||
# pyright: basic
|
# pyright: basic
|
||||||
|
|
||||||
import json
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
@@ -18,6 +17,7 @@ MENU ="""[1] Criar a base de dados
|
|||||||
[6] Guardar como JSON
|
[6] Guardar como JSON
|
||||||
[7] Guardar como CSV
|
[7] Guardar como CSV
|
||||||
[8] Estatísticas
|
[8] Estatísticas
|
||||||
|
[9] Atualizar uma entrada de um evento
|
||||||
|
|
||||||
[Q] Sair
|
[Q] Sair
|
||||||
"""
|
"""
|
||||||
@@ -35,7 +35,7 @@ def guardar_df(df: pd.DataFrame, fname: str) -> bool:
|
|||||||
def guardar_json(df: pd.DataFrame, fname: str) -> bool:
|
def guardar_json(df: pd.DataFrame, fname: str) -> bool:
|
||||||
with open(fname , "w") as fp:
|
with open(fname , "w") as fp:
|
||||||
try:
|
try:
|
||||||
json.dump(df.to_json(), fp)
|
df.to_json(fp)
|
||||||
except:
|
except:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
@@ -67,7 +67,10 @@ def main():
|
|||||||
if fname is None:
|
if fname is None:
|
||||||
fname = "dados.txt"
|
fname = "dados.txt"
|
||||||
|
|
||||||
if _file_exists(fname):
|
if _file_exists(fname) and fname.endswith(".json"):
|
||||||
|
db = pd.read_json(fname)
|
||||||
|
print("Base de dados populada.")
|
||||||
|
elif _file_exists(fname):
|
||||||
db = parser.parse(fname)
|
db = parser.parse(fname)
|
||||||
input("Base de dados populada. Enter para voltar ao menu inicial")
|
input("Base de dados populada. Enter para voltar ao menu inicial")
|
||||||
else:
|
else:
|
||||||
@@ -104,9 +107,17 @@ def main():
|
|||||||
retInfo = "ID do event não encontrado!"
|
retInfo = "ID do event não encontrado!"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
os.system("cls")
|
||||||
table = crud.get_table(db, eid_choice)
|
table = crud.get_table(db, eid_choice)
|
||||||
|
_prettify_event(table)
|
||||||
crud.show_table(table)
|
crud.show_table(table)
|
||||||
row_choice = _get_usr_input("Escolhe a linha a apagar:", int)
|
row_choice = _get_usr_input("Escolhe a linha a apagar:", int)
|
||||||
|
# TODO: balizar a escolha para apenas as linhas do evento em questao
|
||||||
|
row_choice = _get_usr_input("Escolhe a linha a apagar:", int)
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: balizar a escolha para apenas as linhas do evento em questao
|
||||||
|
row_choice = _get_usr_input("Escolhe a linha a apagar: ", int)
|
||||||
db = crud.delete_table_row(db, eid_choice, row_choice)
|
db = crud.delete_table_row(db, eid_choice, row_choice)
|
||||||
new_table = crud.get_table(db, eid_choice)
|
new_table = crud.get_table(db, eid_choice)
|
||||||
crud.show_table(new_table)
|
crud.show_table(new_table)
|
||||||
@@ -134,7 +145,7 @@ def main():
|
|||||||
|
|
||||||
case "6":
|
case "6":
|
||||||
if db is not None:
|
if db is not None:
|
||||||
fname = _get_usr_input("Nome do ficheiro a guardar?")
|
fname = _get_usr_input("Nome do ficheiro a guardar? ")
|
||||||
if fname is None:
|
if fname is None:
|
||||||
fname = "valores.json"
|
fname = "valores.json"
|
||||||
guardar_json(db, fname)
|
guardar_json(db, fname)
|
||||||
@@ -143,7 +154,7 @@ def main():
|
|||||||
|
|
||||||
case "7":
|
case "7":
|
||||||
if db is not None:
|
if db is not None:
|
||||||
fname = _get_usr_input("Nome do ficheiro a guardar?")
|
fname = _get_usr_input("Nome do ficheiro a guardar? ")
|
||||||
if fname is None:
|
if fname is None:
|
||||||
fname = "valores.csv"
|
fname = "valores.csv"
|
||||||
guardar_csv(db, fname)
|
guardar_csv(db, fname)
|
||||||
@@ -156,6 +167,25 @@ def main():
|
|||||||
else:
|
else:
|
||||||
retInfo = "Base de dados não encontrada!"
|
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:
|
||||||
|
table = crud.get_table(db, eid_choice)
|
||||||
|
crud.show_table(table)
|
||||||
|
row_choice = _get_usr_input("Escolhe a linha a atualizar: ", int)
|
||||||
|
new_data = {}
|
||||||
|
for col in crud.TABLE_READ_RET:
|
||||||
|
val = _get_usr_input(f"Novo valor para {col} (Enter para manter o valor atual): ")
|
||||||
|
if val is not None:
|
||||||
|
new_data[col] = val
|
||||||
|
crud.update_table_row(db, row_choice, new_data)
|
||||||
|
|
||||||
case "q":
|
case "q":
|
||||||
isRunning = False
|
isRunning = False
|
||||||
continue
|
continue
|
||||||
@@ -189,6 +219,15 @@ def _get_usr_input(msg:str, asType=str):
|
|||||||
def _prettify_event(df):
|
def _prettify_event(df):
|
||||||
preambleInfo = df.drop_duplicates(subset="ID", keep="first")
|
preambleInfo = df.drop_duplicates(subset="ID", keep="first")
|
||||||
stations = df[["Estacao", "Componente", "Tipo Onda", "Amplitude"]]
|
stations = df[["Estacao", "Componente", "Tipo Onda", "Amplitude"]]
|
||||||
|
info = df.drop_duplicates(subset="Data", keep="first")
|
||||||
|
stations = df[["Estacao", "Componente", "Tipo Onda", "Amplitude"]]
|
||||||
|
data = datetime.fromisoformat(info.Data.values[0]).strftime("%c")
|
||||||
|
print(f"Região: {info["Regiao"].values[0]}\nData: {data}\nLatitude: {info.Lat.values[0]}\nLongitude: {info.Long.values[0]}"
|
||||||
|
+ f"\nProfundidade: {info.Prof.values[0]}\nTipo de evento: {info['Tipo Ev'].values[0]}\n")
|
||||||
|
info = df.drop_duplicates(subset="Data", keep="first")
|
||||||
|
data = datetime.fromisoformat(info.Data.values[0]).strftime("%c")
|
||||||
|
print(f"Região: {info["Regiao"].values[0]}\nData: {data}\nLatitude: {info.Lat.values[0]}\nLongitude: {info.Long.values[0]}"
|
||||||
|
+ f"\nProfundidade: {info.Prof.values[0]}\nTipo de evento: {info['Tipo Ev'].values[0]}\n")
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -61,16 +61,11 @@ def read_table_row(df, event_id, row_number_1):
|
|||||||
info.append(f"{i+1} {col}: {row[col]}")
|
info.append(f"{i+1} {col}: {row[col]}")
|
||||||
return f"Linha {row_number_1:02d} do evento {event_id}:\n" + "\n".join(info)
|
return f"Linha {row_number_1:02d} do evento {event_id}:\n" + "\n".join(info)
|
||||||
|
|
||||||
def update_table_row(df, event_id, row_number_1, new_data):
|
def update_table_row(df, row_line, new_data):
|
||||||
# atualiza uma linha específica da tabela do evento
|
|
||||||
row_number_0 = row_number_1 - 1
|
|
||||||
table = get_table(df, event_id)
|
|
||||||
if row_number_0 < 0 or row_number_0 >= len(table):
|
|
||||||
return f"Linha {row_number_1} não pertence ao evento {event_id}."
|
|
||||||
for key, value in new_data.items():
|
for key, value in new_data.items():
|
||||||
if key in table.columns:
|
if key in df.columns:
|
||||||
df.loc[(df["ID"] == event_id) & (df.index == table.index[row_number_0]), key] = value
|
df.loc[row_line, key] = value
|
||||||
return f"Linha {row_number_1} do evento {event_id} atualizada com sucesso."
|
return f"Linha {row_line} do evento atualizada com sucesso."
|
||||||
|
|
||||||
def update_header(df, event_id, new_data):
|
def update_header(df, event_id, new_data):
|
||||||
# atualiza o header de um evento
|
# atualiza o header de um evento
|
||||||
|
|||||||
Reference in New Issue
Block a user