HRListPage.javaПакет: org.projectforge.web.humanresources
Классы: HRListPage
Расширяет: AbstractListPage
Реализует: ISelectCallerPage
Методы (25): init, recreateDataTable, populateItem, populateItem, populateItem, onClick, populateItem, populateItem, onClick, populateItem, addListEntry, addLabel, addBottomPanel, isVisible, recreateBottomPanel, newListForm, getHRViewData, buildList, getBaseDao, cancelSelection, select, unselect, refresh, providesOwnRebuildDatabaseIndex, ownRebuildDatabaseIndex
Поля (4): serialVersionUID, hrViewData, resourceLinkPanel, weekMillis
Импорты: 29 пакетов
package org.projectforge.web.humanresources;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.projectforge.business.fibu.KundeDO;
import org.projectforge.business.fibu.ProjektDO;
import org.projectforge.business.humanresources.*;
import org.projectforge.framework.persistence.api.ReindexSettings;
import org.projectforge.framework.persistence.database.DatabaseDao;
import org.projectforge.framework.time.PFDateTime;
import org.projectforge.framework.time.PFDay;
import org.projectforge.framework.utils.NumberFormatter;
import org.projectforge.framework.utils.NumberHelper;
import org.projectforge.web.WicketSupport;
import org.projectforge.web.fibu.ISelectCallerPage;
import org.projectforge.web.timesheet.TimesheetListPage;
import org.projectforge.web.user.UserPropertyColumn;
import org.projectforge.web.wicket.*;
import org.projectforge.web.wicket.flowlayout.DivPanel;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
/**
* @author Mario Groß (m.gross@micromata.de)
* @author Kai Reinhard (k.reinhard@micromata.de)
*/
@ListPage(editPage = HRPlanningEditPage.class)
public class HRListPage extends AbstractListPage<HRListForm, HRViewDao, HRViewUserData> implements ISelectCallerPage {
private static final long serialVersionUID = -718881597957595460L;
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(HRListPage.class);
private HRViewData hrViewData;
private HRListResourceLinkPanel resourceLinkPanel;
private Long weekMillis;
public HRListPage(final PageParameters parameters) {
super(parameters, "hr.planning");
}
@Override
protected void init() {
recreateDataTable();
recreateBottomPanel();
}
@SuppressWarnings("serial")
private void recreateDataTable() {
final LocalDate date = form.getSearchFilter().getStartDay();
weekMillis = date != null ? PFDateTime.from(date).getBeginOfWeek().getEpochMilli() : null;
if (dataTable != null) {
form.remove(dataTable);
}
final List<IColumn<HRViewUserData, String>> columns = new ArrayList<IColumn<HRViewUserData, String>>();
final CellItemListener<HRViewUserData> cellItemListener = new CellItemListener<HRViewUserData>() {
@Override
public void populateItem(final Item<ICellPopulator<HRViewUserData>> item, final String componentId,
final IModel<HRViewUserData> rowModel) {
final HRViewUserData entry = rowModel.getObject();
appendCssClasses(item, entry.getPlanningId(), entry.isDeleted());
}
};
columns.add(new UserPropertyColumn<HRViewUserData>(getUserGroupCache(), getString("timesheet.user"),
"user.fullname", "user",
cellItemListener) {
@Override
public void populateItem(final Item<ICellPopulator<HRViewUserData>> item, final String componentId,
final IModel<HRViewUserData> rowModel) {
final Long planningId = rowModel.getObject().getPlanningId();
final String[] params;
if (planningId == null) {
// Предустановка полей для добавления новой записи:
final Long userId = rowModel.getObject().getUserId();
params = new String[]{WebConstants.PARAMETER_USER_ID, userId != null ? String.valueOf(userId) : null,
WebConstants.PARAMETER_DATE, weekMillis != null ? String.valueOf(weekMillis) : null};
} else {
params = null;
}
item.add(new ListSelectActionPanel(componentId, rowModel, HRPlanningEditPage.class, planningId, HRListPage.this,
getLabelString(rowModel), params));
cellItemListener.populateItem(item, componentId, rowModel);
addRowClick(item);
}
});
columns.add(new CellItemListenerPropertyColumn<HRViewUserData>(getString("sum"), "plannedDaysSum", "plannedDaysSum",
cellItemListener) {
@Override
public void populateItem(final Item<ICellPopulator<HRViewUserData>> item, final String componentId,
final IModel<HRViewUserData> rowModel) {
final HRViewUserData userData = rowModel.getObject();
final HRFilter filter = form.getSearchFilter();
addListEntry(item, componentId, userData.getPlannedDaysSum(), userData.getActualDaysSum(),
new Link<Object>("actualDaysLink") {
@Override
public void onClick() {
// Перенаправление на страницу списка табелей и отображение соответствующих табелей.
final PageParameters parameters = new PageParameters();
parameters.add(TimesheetListPage.PARAMETER_KEY_STORE_FILTER, false);
parameters.add(TimesheetListPage.PARAMETER_KEY_START_TIME, PFDateTime.from(filter.getStartDay()).getBeginOfDay().getEpochMilli());
parameters.add(TimesheetListPage.PARAMETER_KEY_STOP_TIME, PFDateTime.from(filter.getStopDay()).getEpochMilli());
parameters.add(TimesheetListPage.PARAMETER_KEY_USER_ID, userData.getUserId());
final TimesheetListPage timesheetListPage = new TimesheetListPage(parameters);
setResponsePage(timesheetListPage);
}
});
item.add(AttributeModifier.append("style", new Model<String>("text-align: right;")));
// ... (сокращено, всего 324 строки)
868d6abb7 2025 -> 2026 63081666f Заголовки исходных файлов: 2024 -> 2025. b810d1c78 Миграция в процессе... (все тесты всех пакетов: OK). 3785f8347 Миграция в процессе... a72903e36 *.java, *.kt: StringBuffer -> StringBuilder.