public EffectiveTableColumn(FormTree formTree, TableColumn model) { this.model = model; this.formula = new ParsedFormula(formTree, model.getFormula()); if(model.getLabel().isPresent()) { this.label = model.getLabel().get(); } else { this.label = formula.getLabel(); } format = ColumnFormatFactory.create(model.getId(), formula); width = model.getWidth().or(DEFAULT_COLUMN_WIDTH); }
@Test public void testSubFormExport() { IncidentForm incidentForm = setup.getCatalog().getIncidentForm(); TableModel tableModel = ImmutableTableModel.builder().formId(incidentForm.getFormId()) .addColumns(ImmutableTableColumn.builder() .label("My PCODE") .formula(IncidentForm.PROTECTION_CODE_FIELD_ID.asString()) .build()) .build(); TableViewModel viewModel = new TableViewModel(setup.getFormStore(), tableModel); Observable<ExportViewModel> exportModel = viewModel.computeExportModel( Observable.just(ReferralSubForm.FORM_ID), Observable.just(ExportScope.SELECTED)); Connection<TableModel> exportModelConnection = setup.connect(exportModel.transform(ExportViewModel::getTableModel)); Connection<Boolean> columnLimitConnection = setup.connect(exportModel.transform(ExportViewModel::isColumnLimitExceeded)); System.out.println(Json.stringify(exportModelConnection.assertLoaded().toJson(), 2)); assertThat(exportModelConnection.assertLoaded().getFormId(), equalTo(ReferralSubForm.FORM_ID)); assertThat(exportModelConnection.assertLoaded().getColumns(), hasSize(3)); assertThat(columnLimitConnection.assertLoaded(), equalTo(false)); TableColumn firstColumn = exportModelConnection.assertLoaded().getColumns().get(0); assertThat(firstColumn.getLabel(), equalTo(Optional.of("My PCODE"))); assertThat(firstColumn.getFormula(), equalTo( new CompoundExpr(new SymbolNode(ColumnModel.PARENT_SYMBOL), IncidentForm.PROTECTION_CODE_FIELD_ID).asExpression())); }
public String getId() { return model.getId(); }
@Value.Lazy @Override public JsonValue toJson() { JsonValue object = Json.createObject(); object.put("formId", getFormId().asString()); if(getColumns().size() != 0) { JsonValue columnArray = Json.createArray(); for (TableColumn tableColumn : getColumns()) { columnArray.add(tableColumn.toJson()); } object.put("columns", columnArray); } if (getFilter().isPresent()) { object.put("filter", getFilter().get()); } if (getSorting().size() != 0) { JsonValue columnArray = Json.createArray(); for (SortModel sortModel : getSorting()) { columnArray.add(sortModel.toJson()); } object.put("columns", columnArray); } return object; }
public static TableModel fromJson(JsonValue object) { ImmutableTableModel.Builder model = ImmutableTableModel.builder(); model.formId(ResourceId.valueOf(object.getString("formId"))); if(object.hasKey("columns")) { JsonValue columnArray = object.get("columns"); for (int i = 0; i < columnArray.length(); i++) { model.addColumns(TableColumn.fromJson(columnArray.get(i))); } } if (object.hasKey("filter")) { model.filter(Optional.of(object.getString("filter"))); } else { model.filter(Optional.absent()); } if (object.hasKey("sort")) { JsonValue columnArray = object.get("sort"); for (int i = 0; i < columnArray.length(); i++) { model.addSorting(SortModel.fromJson(columnArray.get(i))); } } return model.build(); } }
@Override public void updateColumnWidth(String columnId, int newWidth) { TableModel model = this.tableModel.get(); List<TableColumn> updatedColumns = new ArrayList<>(); for (TableColumn column : model.getColumns()) { if(column.getId().equals(columnId)) { updatedColumns.add(ImmutableTableColumn.builder().from(column).width(newWidth).build()); } else { updatedColumns.add(column); } } tableModel.updateIfNotSame(ImmutableTableModel.builder() .from(model) .columns(updatedColumns) .build()); }
@Value.Lazy public JsonValue toJson() { JsonValue object = Json.createObject(); object.put("id", getId()); if(getLabel().isPresent()) { object.put("label", getLabel().get()); } if(getWidth().isPresent()) { object.put("width", getWidth().get()); } object.put("formula", getFormula()); return object; }