extended logs

This commit is contained in:
Nicolás Sánchez 2024-12-23 21:37:44 -03:00
parent 687e66c742
commit f49776bc4b
2 changed files with 70 additions and 3 deletions

View File

@ -356,6 +356,44 @@ public class InstanceInterface {
}
public static String getAllLogs(String exchange, boolean retry) throws IOException {
//200 lines hard limit
Request logRequest = new Request.Builder()
.url(API_BASE_URL + "/statistics_server/fetch_full_log?exchange_name=" + exchange)
.header("X-API-KEY", API_KEY)
.build();
try (Response logResponse = httpClient.newCall(logRequest).execute()) {
if (!logResponse.isSuccessful()) {
if (logResponse.code() == 503 && retry) {
return getAllLogs(exchange,false);
}
throw new IOException("Unexpected code " + logResponse);
}
String dealsResponseBody = logResponse.body().string();
JsonElement jsonElement = JsonParser.parseString(dealsResponseBody);
if (!jsonElement.isJsonObject()) {
System.err.println("The parsed JSON response is not a JsonObject.");
return null;
}
JsonObject jsonObject = jsonElement.getAsJsonObject();
if (!jsonObject.has("line")) {
System.err.println("The parsed JSON response does not contain the last_lines key.");
return null;
}
JsonArray logsArray = jsonObject.getAsJsonArray("line");
List<String> logList = new ArrayList<>();
for (int i = logsArray.size()-1; i >= 0; i--) {
logList.add(logsArray.get(i).getAsString());
}
return String.join("\n", logList);
}
}
private static double gibSoSize(double orderSize, int n, double safetyOrderScale) {
double targetOrderSize = orderSize;
for (int i = 0; i < n; i++) {

View File

@ -317,7 +317,7 @@ public class HomeFragment extends Fragment {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.today_this_month_details) {
// Implement as in profit_report.py
// TODO: Implement as is profit_report.py
return true;
}
return false;
@ -382,8 +382,7 @@ public class HomeFragment extends Fragment {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.log_details) {
// Handle the "Details..." option
// For example, navigate to a details fragment
fetchAllLogs(exchange);
return true;
}
return false;
@ -392,6 +391,18 @@ public class HomeFragment extends Fragment {
popupMenu.show();
}
private void fetchAllLogs(String exchange) {
new Thread(() -> {
try {
String result = InstanceInterface.getAllLogs(exchange, true);
new Handler(Looper.getMainLooper()).post(() -> showExtendedLogsDialog(exchange, result));
} catch (IOException e) {
e.printStackTrace();
new Handler(Looper.getMainLooper()).post(() -> Toast.makeText(getContext(), "Failed to fetch missing pairs", Toast.LENGTH_SHORT).show());
}
}).start();
}
// Adds a plus sign if the percentage is positive
private String formatPercentage(double value) {
if (value>=0) {
@ -550,6 +561,24 @@ public class HomeFragment extends Fragment {
}
private void showExtendedLogsDialog(String exchange, String result) {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
LayoutInflater inflater = LayoutInflater.from(getContext());
// Reuse trades_detail_dialog layout
View customLayout = inflater.inflate(R.layout.trades_detail_dialog, null);
TextView titleTextView = customLayout.findViewById(R.id.trades_details_title);
TextView detailsTextView = customLayout.findViewById(R.id.trades_details_content);
String title = exchange + "log";
titleTextView.setText(title);
detailsTextView.setText(result);
builder.setView(customLayout);
builder.setPositiveButton("OK", null);
builder.show();
}
private void showInstanceDetailsDialog(InstanceInterface.InstanceGlobalStatsData result) {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle(result.getName() + " details");