AggregationRowConfig<ProgressDto> totalSummary = new AggregationRowConfig<ProgressDto>();
totalSummary.setHtml(ProgressDto.DATE, messages.totalSituation());
for( int i = 0 ; i < ids.length ; i++ ) {
SummaryColumnConfig column = new SummaryColumnConfig();
final String columnId = ids[i];
column.setId(columnId);
column.setHeader(headers[i]);
column.setAlignment(horizontalAlignments[0]);
column.setMenuDisabled(true);
column.setWidth(columnsWidth[i]);
columns.add(column);
if( ProgressDto.MOIS.equalsIgnoreCase(columnId) || ProgressDto.MOIS2.equalsIgnoreCase(columnId) ) {
//Mois = Giá trị zone culmulé ( cùng dòng ) - giá tri zone cumulé của dòng truớc nó
column.setRenderer(new GridCellRenderer<ProgressDto>() {
@Override
public Object render(ProgressDto model, String property, ColumnData config, int rowIndex, int colIndex,
ListStore<ProgressDto> store, Grid<ProgressDto> grid) {
double result = 0.0;
if( rowIndex == 0 ) {
if( ProgressDto.MOIS.equalsIgnoreCase(columnId) ) {
result = model.getCumule();
}
else {
result = model.getCumule2();
}
if(ProgressDto.MOIS.equalsIgnoreCase(columnId))
progressGrid.getStore().getModels().get(rowIndex).setMois(result);
else
progressGrid.getStore().getModels().get(rowIndex).setMois2(result);
}
else {
ProgressDto previousModel = grid.getStore().getAt(rowIndex - 1);
if( ProgressDto.MOIS.equalsIgnoreCase(columnId) ) {
result = model.getCumule() - previousModel.getCumule();
}
else {
result = model.getCumule2() - previousModel.getCumule2();
}
if(ProgressDto.MOIS.equalsIgnoreCase(columnId))
progressGrid.getStore().getModels().get(rowIndex).setMois(result);
else
progressGrid.getStore().getModels().get(rowIndex).setMois2(result);
}
return result;
}
});
//Total summary columns
totalSummary.setSummaryFormat(columnId, NumberFormat.getCurrencyFormat());
totalSummary.setSummaryType(columnId, new SummaryType<Double>() {
@Override
public Double render(Object v, ModelData m, String field, Map<String, Object> data) {
double sumMois = 0.0;
double sumMois2 = 0.0;
double sumCumule = 0.0;
double sumCumule2 = 0.0;
ProgressDto progressDto = null;
for(int i = 0 ; i < progressGrid.getStore().getModels().size() ; i++){
progressDto = progressGrid.getStore().getModels().get(i);
sumMois += progressDto.getMois();
sumMois2 += progressDto.getMois2();
sumCumule = progressDto.getCumule();
sumCumule2 = progressDto.getCumule2();
cumule = progressDto.getCumule() + Constants.SEPRATE + progressDto.getCumule2();
}
//For Report
mois = sumMois + Constants.SEPRATE + sumMois2;
txt_advancement_mois.setValue(mois);
txttotalsituation.setValue(sumCumule + Constants.SEPRATE + sumMois + Constants.SEPRATE + sumCumule2 + Constants.SEPRATE + sumMois2);
//End
if(columnId.equalsIgnoreCase(ProgressDto.MOIS))
return sumMois;
return sumMois2;
}
});
//totalSummary.setSummaryType(columnId, SummaryType.SUM);
}
else if( ProgressDto.CUMULE.equalsIgnoreCase(columnId) || ProgressDto.CUMULE2.equalsIgnoreCase(columnId) ) { //Display value of last row only
totalSummary.setSummaryFormat(columnId, NumberFormat.getCurrencyFormat());
totalSummary.setSummaryType(columnId, new SummaryType<Double>() {
@Override
public Double render(Object v, ModelData m, String field, Map<String, Object> data) {
Object obj = m.get(field);
if( obj != null ) {
return ((Number) obj).doubleValue();
}
return 0.0;
}
});
}
}
//End
ColumnModel cm = new ColumnModel(columns);
cm.addAggregationRow(totalSummary);
ColumnConfig column = cm.getColumn(0);
column.setRenderer(createDeleteButtonRenderer());
column = cm.getColumn(1);
column.setRenderer(new GridCellRenderer<ProgressDto>() {
@Override
public Object render(ProgressDto model, String property, ColumnData config, int rowIndex, int colIndex,
ListStore<ProgressDto> store, Grid<ProgressDto> grid) {
return rowIndex + 1;
}
});
column = cm.getColumn(2);
column.setRenderer(createTextFieldRenderer(column.getWidth() - PADDING_2));
column.setEditor(new CellEditor(createTextField(MAX_LENGTH_3)));
column = cm.getColumn(3);
column.setRenderer(createDateRenderer(column.getWidth() - PADDING_2));
column = cm.getColumn(4);
column.setRenderer(createNumberRenderer(column.getWidth() - PADDING_2));
column.setEditor(new CellEditor(createNumberField(null)));
column = cm.getColumn(5);
column.setNumberFormat(NumberFormat.getFormat(NUMBER_FORMAT));
column = cm.getColumn(6);
column.setRenderer(createNumberRenderer(column.getWidth() - PADDING_2));
column.setEditor(new CellEditor(createNumberField(null)));
column = cm.getColumn(7);
column.setNumberFormat(NumberFormat.getFormat(NUMBER_FORMAT));
cm.addHeaderGroup(0, 4, new HeaderGroupConfig(messages.avancement(), 1, 2));
cm.addHeaderGroup(0, 6, new HeaderGroupConfig(messages.retenues(), 1, 2));
ListStore<ProgressDto> store = new ListStore<ProgressDto>();