ConsumptionBarPanel.javaPaquete: org.projectforge.web.wicket.components
Clases: ConsumptionBarPanel
Extiende: Panel
Métodos (2): onClick, getTooltip
Campos (2): serialVersionUID, tooltip
Importaciones: 11 paquetes
package org.projectforge.web.wicket.components;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.projectforge.framework.utils.NumberHelper;
import org.projectforge.web.timesheet.TimesheetListPage;
import org.projectforge.web.wicket.WicketUtils;
import java.math.BigDecimal;
/**
* Muestra una capa div con una barra de porcentaje coloreada.
* @author Kai Reinhard (k.reinhard@micromata.de)
*
*/
public class ConsumptionBarPanel extends Panel
{
private static final long serialVersionUID = -4328646802035960450L;
private final String tooltip;
/**
* @param id
* @param usage
* @param maxValue
* @param taskId
* @param taskNodeFinished Dependiendo de si el nodo de tarea está finalizado o no, los colores son diferentes: p. ej., una barra al 95% usada es verde para
* tareas finalizadas, para las no finalizadas no.
* @param unit
* @param linkEnabled Si es true, el usuario puede hacer clic en esta barra para obtener todas las hojas de tiempo detrás de esta barra.
*/
public ConsumptionBarPanel(final String id, final BigDecimal usage, BigDecimal maxValue, final Long taskId,
final boolean taskNodeFinished, final String unit, final boolean linkEnabled)
{
super(id);
if (NumberHelper.isNotZero(maxValue) == false) {
maxValue = null;
}
@SuppressWarnings("serial")
final Link< Void> showTimesheetsLink = new Link<Void>("sheets") {
@Override
public void onClick()
{
final PageParameters parameters = new PageParameters();
parameters.add(TimesheetListPage.PARAMETER_KEY_CLEAR_ALL, true);
parameters.add(TimesheetListPage.PARAMETER_KEY_STORE_FILTER, false);
parameters.add(TimesheetListPage.PARAMETER_KEY_TASK_ID, taskId);
final TimesheetListPage timesheetListPage = new TimesheetListPage(parameters);
setResponsePage(timesheetListPage);
}
};
showTimesheetsLink.setEnabled(linkEnabled);
add(showTimesheetsLink);
final WebMarkupContainer bar = new WebMarkupContainer("bar");
final Label progressLabel = new Label("progress", new Model<String>(" "));
final int percentage = maxValue != null ? usage.divide(maxValue, 2, BigDecimal.ROUND_HALF_UP).multiply(NumberHelper.HUNDRED).intValue()
: 0;
final int width = percentage <= 100 ? percentage : 10000 / percentage;
bar.add(AttributeModifier.replace("class", "progress"));
if (percentage <= 80 || (taskNodeFinished == true && percentage <= 100)) {
if (percentage > 0) {
bar.add(AttributeModifier.append("class", "progress-done"));
} else {
bar.add(AttributeModifier.append("class", "progress-none"));
progressLabel.setVisible(false);
}
} else if (percentage <= 90) {
bar.add(AttributeModifier.append("class", "progress-80"));
} else if (percentage <= 100) {
bar.add(AttributeModifier.append("class", "progress-90"));
} else if (taskNodeFinished == true && percentage <= 110) {
bar.add(AttributeModifier.append("class", "progress-overbooked-min"));
} else {
bar.add(AttributeModifier.append("class", "progress-overbooked"));
}
if (maxValue == null && (usage == null || usage.compareTo(BigDecimal.ZERO) == 0)) {
bar.setVisible(false);
}
progressLabel.add(AttributeModifier.replace("style", "width: " + width + "%;"));
final StringBuilder buf = new StringBuilder();
buf.append(NumberHelper.getNumberFractionFormat(getLocale(), usage.scale()).format(usage));
if (unit != null) {
buf.append(unit);
}
if (maxValue != null) {
buf.append("/");
buf.append(NumberHelper.getNumberFractionFormat(getLocale(), maxValue.scale()).format(maxValue));
buf.append(unit);
buf.append(" (").append(percentage).append("%)");
}
tooltip = buf.toString();
WicketUtils.addTooltip(bar, tooltip);
showTimesheetsLink.add(bar);
bar.add(progressLabel);
}
/**
* @return el tooltip
*/
public String getTooltip()
{
return tooltip;
}
}
868d6abb7 2025 -> 2026 63081666f Encabezados de archivos fuente: 2024-> 2025. a72903e36 *.java, *.kt: StringBuffer -> StringBuilder. 4c04cfd65 ¡CAMBIO MAYOR! Migración de id's enteros a id's Long (incluyendo fk's, etc.) b6092df09 Derechos de autor 2023 -> 2024