Browse Source

Se modidfico la pantalla para mostrar los tickets, se añadio la columna de estado del ticket ademas se ajusto para que ocupara todo el espacio y tambien para que mostrara todos los tickets existentes no solo 25 como al principio, ademas se hizo un ajuste en la pantalla de LOGIN se cambio un texto

pull/1/head
parent
commit
f332f97bcb
4 changed files with 39 additions and 18 deletions
  1. +29
    -16
      src/main/java/com/example/application/api/RedmineClient.java
  2. +7
    -1
      src/main/java/com/example/application/models/Ticket.java
  3. +1
    -1
      src/main/java/com/example/application/views/login/LoginView.java
  4. +2
    -0
      src/main/java/com/example/application/views/tickets/MisTicketsView.java

+ 29
- 16
src/main/java/com/example/application/api/RedmineClient.java View File

@ -20,26 +20,38 @@ public class RedmineClient {
private static final String REDMINE_URL = "http://localhost:3000"; private static final String REDMINE_URL = "http://localhost:3000";
private static final String API_KEY = "cf3be6168e66c99892c6212ea0bc64e8ab1c6848"; private static final String API_KEY = "cf3be6168e66c99892c6212ea0bc64e8ab1c6848";
private static final int PAGE_SIZE = 25;
public List<Ticket> getTickets() { public List<Ticket> getTickets() {
List<Ticket> tickets = new ArrayList<>(); List<Ticket> tickets = new ArrayList<>();
HttpClient client = HttpClient.newHttpClient(); HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(REDMINE_URL + "/issues.json"))
.header("Content-Type", "application/json")
.header("X-Redmine-API-Key", API_KEY)
.build();
try {
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
String responseBody = response.body();
tickets = parseTickets(responseBody);
} else {
System.err.println("Error en la respuesta: " + response.statusCode());
int offset = 0;
while (true) {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(REDMINE_URL + "/issues.json?limit=" + PAGE_SIZE + "&offset=" + offset))
.header("Content-Type", "application/json")
.header("X-Redmine-API-Key", API_KEY)
.build();
try {
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
String responseBody = response.body();
List<Ticket> pageTickets = parseTickets(responseBody);
tickets.addAll(pageTickets);
if (pageTickets.size() < PAGE_SIZE) {
break;
}
offset += PAGE_SIZE;
} else {
System.err.println("Error en la respuesta: " + response.statusCode());
break;
}
} catch (Exception e) {
e.printStackTrace();
break;
} }
} catch (Exception e) {
e.printStackTrace();
} }
return tickets; return tickets;
} }
@ -53,7 +65,8 @@ public class RedmineClient {
int id = issue.get("id").getAsInt(); int id = issue.get("id").getAsInt();
String subject = issue.get("subject").getAsString(); String subject = issue.get("subject").getAsString();
String description = issue.has("description") ? issue.get("description").getAsString() : ""; String description = issue.has("description") ? issue.get("description").getAsString() : "";
tickets.add(new Ticket(id, subject, description));
String status = issue.getAsJsonObject("status").get("name").getAsString();
tickets.add(new Ticket(id, subject, description, status));
} }
return tickets; return tickets;
} }


+ 7
- 1
src/main/java/com/example/application/models/Ticket.java View File

@ -7,11 +7,13 @@ public class Ticket {
private int id; private int id;
private String subject; private String subject;
private String description; private String description;
private String status;
public Ticket(int id, String subject, String description) {
public Ticket(int id, String subject, String description, String status) {
this.id = id; this.id = id;
this.subject = subject; this.subject = subject;
this.description = description; this.description = description;
this.status = status;
} }
public int getId() { public int getId() {
@ -25,4 +27,8 @@ public class Ticket {
public String getDescription() { public String getDescription() {
return description; return description;
} }
public String getStatus() {
return status;
}
} }

+ 1
- 1
src/main/java/com/example/application/views/login/LoginView.java View File

@ -28,7 +28,7 @@ public class LoginView extends VerticalLayout implements BeforeEnterObserver {
LoginI18n i18n = LoginI18n.createDefault(); LoginI18n i18n = LoginI18n.createDefault();
LoginI18n.Form i18nFormulario = i18n.getForm(); LoginI18n.Form i18nFormulario = i18n.getForm();
i18nFormulario.setTitle("Bienvenidos");
i18nFormulario.setTitle("Sistema de Soporte Técnico Gcia. de T.I");
i18nFormulario.setUsername("Usuario"); i18nFormulario.setUsername("Usuario");
i18nFormulario.setPassword("Contraseña"); i18nFormulario.setPassword("Contraseña");
i18nFormulario.setSubmit("Iniciar sesion"); i18nFormulario.setSubmit("Iniciar sesion");


+ 2
- 0
src/main/java/com/example/application/views/tickets/MisTicketsView.java View File

@ -26,6 +26,8 @@ public class MisTicketsView extends VerticalLayout {
.setWidth("4em").setFlexGrow(0).setTextAlign(ColumnTextAlign.CENTER); .setWidth("4em").setFlexGrow(0).setTextAlign(ColumnTextAlign.CENTER);
grid.addColumn(Ticket::getSubject).setHeader("Asunto") grid.addColumn(Ticket::getSubject).setHeader("Asunto")
.setAutoWidth(true).setFlexGrow(0); .setAutoWidth(true).setFlexGrow(0);
grid.addColumn(Ticket::getStatus).setHeader("Estdo")
.setWidth("7em").setFlexGrow(0);
grid.addColumn(Ticket::getDescription).setHeader("Description") grid.addColumn(Ticket::getDescription).setHeader("Description")
.setFlexGrow(1); .setFlexGrow(1);


Loading…
Cancel
Save