@Override public void validate(Form<?> form) { final FormComponent<?> formComponent1 = components[0]; final FormComponent<?> fecha = components[1]; if (!(daoService.puedeEntrar( formComponent1.getInput(), (Date) fecha.getConvertedInput(), usuario, "10800000"))) { error(formComponent1, "a key", mensaje); } }
public VistaHorasPage() { final Subject subject = SecurityUtils.getSubject(); this.usuario = this.daoService.getUsuario(subject.getPrincipal().toString()); this.labelDesdeModel = new LoadableDetachableModel<String>() { @Override protected String load() { return desde.toString(); } }; this.fechasModel = new LoadableDetachableModel<List<String>>() { @Override protected List<String> load() { List<String> fechas = new ArrayList<String>(); for (int j = 2005; j < 2014; j++) { for (int i = 1; i < 13; i++) { fechas.add(i + "/" + j); } } return fechas; } }; this.lstUsuariosModel = new LoadableDetachableModel<List<UsuarioListaHoras>>() { @Override protected List<UsuarioListaHoras> load() { return daoService.obtenerHorasUsuarios(desde, hasta, VistaHorasPage.this.sectorGlobal); } }; this.lstUsuariosEnRojoModel = new LoadableDetachableModel<List<UsuarioListaHoras>>() { @Override protected List<UsuarioListaHoras> load() { // List<UsuarioListaHoras> devolver = daoService.obtenerHorasUsuarios(desde, // hasta,VistaHorasPage.this.sectorGlobal); List<UsuarioListaHoras> devolver = VistaHorasPage.this.lstUsuariosModel.getObject(); List<UsuarioListaHoras> itemsToRemove = new ArrayList<UsuarioListaHoras>(); for (UsuarioListaHoras usuarioHoras : devolver) { if (!usuarioHoras.tieneDiaMenorDedicacion(VistaHorasPage.this.desde)) { itemsToRemove.add(usuarioHoras); } } devolver.removeAll(itemsToRemove); return devolver; } }; VistaHorasForm form = new VistaHorasForm("form"); form.setOutputMarkupId(true); add(form); List<Feriado> feriados = daoService.getFeriados(); final List<Date> fechaFeriados = new ArrayList<Date>(); for (Feriado feriado : feriados) { fechaFeriados.add(feriado.getFecha()); } this.listViewContainer = new WebMarkupContainer("listViewContainer"); this.listViewContainer.setOutputMarkupId(true); totales = new double[31]; // for (int i = 0; i < 32; i++) { // totales[i]= new Double(0); // } final PageableListView<UsuarioListaHoras> usuariosHorasListView = new PageableListView<UsuarioListaHoras>("tabla", this.lstUsuariosModel, 1000) { private static final long serialVersionUID = 1L; @Override protected void populateItem(ListItem<UsuarioListaHoras> item) { final UsuarioListaHoras usuarioHoras = item.getModel().getObject(); // // if((item.getIndex() % 2) == 0){ // item.add(new AttributeModifier("class","odd")); // } String nombreCorregido = daoService .getNombreApellido(usuarioHoras.getUsuario()) .replaceAll("ó", "ó") .replaceAll("é", "é") .replaceAll("ñ", "ñ") .replaceAll("á", "á") .replaceAll("Ã", "í"); Label nombre = new Label("apellidoNombre", nombreCorregido); item.add(nombre); Map<Date, Double> colHoras = new HashMap<Date, Double>(); colHoras.putAll(usuarioHoras.getDiaHoras()); LocalDate diaActual = new LocalDate(VistaHorasPage.this.desde); Double totalHoras = new Double(0); for (int j = 1; j <= 31; j++) { Label lbHoras; Double horasDia = new Double(0); horasDia = colHoras.get(diaActual.toDate()); if (horasDia != null) { totales[j - 1] = totales[j - 1] + horasDia; String mensaje = decimal.format(horasDia); totalHoras = totalHoras + horasDia; lbHoras = new Label("contenidoDia" + j, Model.of(mensaje)); lbHoras.add(new AttributeModifier("style", Model.of("display: block; "))); if (fechaFeriados.contains(diaActual.toDate()) || diaActual.getDayOfWeek() == DateTimeConstants.SATURDAY || diaActual.getDayOfWeek() == DateTimeConstants.SUNDAY) { lbHoras.add( new AttributeAppender( "style", Model.of("background-color: rgb(223, 223, 223); height:100%;"))); // background-clip: border-box; background-color: blue; color: white; border: 5px // solid blue; border-radius: 5px; } if (horasDia < usuarioHoras.getDedicacion()) { lbHoras.add(new AttributeAppender("style", Model.of("color:red;"))); } } else if (fechaFeriados.contains(diaActual.toDate()) || diaActual.getDayOfWeek() == DateTimeConstants.SATURDAY || diaActual.getDayOfWeek() == DateTimeConstants.SUNDAY) { lbHoras = new Label("contenidoDia" + j, "0"); lbHoras.add( new AttributeModifier( "style", Model.of("background-color:rgb(223, 223, 223); height:100%;"))); } else { lbHoras = new Label("contenidoDia" + j, "0"); } item.add(lbHoras); diaActual = diaActual.plusDays(1); } // System.out.println(totalHoras); // Model.of(totalHoras) item.add(new Label("totalPersona", Model.of(totalHoras))); }; }; // html dinamico this.titulos = new WebComponent("tituloHtml") { @Override public void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag) { Response response = getRequestCycle().getResponse(); String respuesta = ""; respuesta += "<th class='tablaTitulo' scope='col'>Usuarios</th>"; LocalDate diaActual = new LocalDate(VistaHorasPage.this.desde); for (int i = 1; i < 32; i++) { respuesta += "<th class='tablaTitulo' scope='col' >" + diaActual.getDayOfMonth() + "</th>"; diaActual = diaActual.plusDays(1); } respuesta += "<th class='tablaTitulo' scope='col' > Total </th>"; response.write(respuesta); } }; this.totalesHtml = new WebComponent("totalesHtml") { public void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag) { Response response = getRequestCycle().getResponse(); String respuesta = ""; respuesta += "<td class='tablaTitulo' scope='col'>Totales:</td>"; LocalDate diaActual = new LocalDate(VistaHorasPage.this.desde); for (int i = 1; i < 32; i++) { respuesta += "<td class='tablaTitulo' scope='col' >" + decimal.format(VistaHorasPage.this.totales[i - 1]) + "</td>"; diaActual = diaActual.plusDays(1); } respuesta += "<td class='tablaTitulo' scope='col' > </td>"; response.write(respuesta); for (int i = 0; i < 31; i++) { totales[i] = new Double(0); } }; }; this.listViewContainer.add(titulos); this.listViewContainer.add(totalesHtml); this.listViewContainer.add(usuariosHorasListView); // this.listViewContainer.add(new AjaxPagingNavigator("navigator", usuariosHorasListView)); add(listViewContainer); radioContainer = new WebMarkupContainer("radioContainerUsuarios"); radioContainer.setOutputMarkupId(true); RadioGroup<String> radiog = new RadioGroup<String>("radioGroup", new Model<String>()); Radio<String> mostrarTodas = new Radio<String>("mostrarTodas", Model.of("Todos")); Radio<String> mostrarEnRojo = new Radio<String>("mostrarEnRojo", Model.of("Menor que dedicación")); mostrarTodas.add( new AjaxEventBehavior("onchange") { protected void onEvent(AjaxRequestTarget target) { VistaHorasPage.this.lstUsuariosModel.detach(); VistaHorasPage.this.lstUsuariosEnRojoModel.detach(); usuariosHorasListView.setModel(VistaHorasPage.this.lstUsuariosModel); target.add(VistaHorasPage.this.listViewContainer); } }); mostrarEnRojo.add( new AjaxEventBehavior("onchange") { protected void onEvent(AjaxRequestTarget target) { VistaHorasPage.this.lstUsuariosModel.detach(); VistaHorasPage.this.lstUsuariosEnRojoModel.detach(); usuariosHorasListView.setModel(VistaHorasPage.this.lstUsuariosEnRojoModel); target.add(VistaHorasPage.this.listViewContainer); } }); radiog.add(mostrarTodas); radiog.add(mostrarEnRojo); radioContainer.add(radiog); add(radioContainer); }