use of org.openforis.collect.metamodel.ui.UIOptions in project collect by openforis.
the class CollectEarthBalloonGenerator method createEnumeratedEntityComponent.
private CEComponent createEnumeratedEntityComponent(EntityDefinition def) {
String label = def.getLabel(Type.INSTANCE, language);
if (label == null && !isDefaultLanguage()) {
label = def.getLabel(Type.INSTANCE);
}
if (label == null) {
label = def.getName();
}
UIOptions uiOptions = survey.getUIOptions();
String tableTooltip = def.getDescription(language);
CEEnumeratedEntityTable ceTable = new CEEnumeratedEntityTable(def.getName(), label, tableTooltip);
for (NodeDefinition child : def.getChildDefinitions()) {
if (!uiOptions.isHidden(child)) {
String heading = child.getLabel(Type.INSTANCE, language);
if (heading == null && !isDefaultLanguage()) {
heading = child.getLabel(Type.INSTANCE);
}
if (heading == null) {
heading = child.getName();
}
ceTable.addHeading(heading);
}
}
CodeAttributeDefinition enumeratingCodeAttribute = def.getEnumeratingKeyCodeAttribute();
CodeListService codeListService = def.getSurvey().getContext().getCodeListService();
List<CodeListItem> codeItems = codeListService.loadRootItems(enumeratingCodeAttribute.getList());
int codeItemIdx = 0;
for (CodeListItem item : codeItems) {
String key = item.getCode();
String itemLabel = CEComponentHTMLFormatter.getItemLabel(item, language);
String tooltip = CEComponentHTMLFormatter.getDescription(item, language);
CETableRow row = new CETableRow(key, itemLabel, tooltip);
for (NodeDefinition child : def.getChildDefinitions()) {
if (!uiOptions.isHidden(child)) {
row.addChild(createComponent(child, codeItemIdx + 1));
}
}
ceTable.addRow(row);
codeItemIdx++;
}
return ceTable;
}
use of org.openforis.collect.metamodel.ui.UIOptions in project collect by openforis.
the class EditableListOfNodesVM method getTemplateName.
public String getTemplateName(NodeDefinition nodeDefn) {
if (nodeDefn instanceof EntityDefinition) {
if (nodeDefn.isMultiple()) {
UIOptions uiOpts = getUIOptions();
Layout layout = uiOpts.getLayout((EntityDefinition) nodeDefn);
switch(layout) {
case FORM:
return "multiple_entity_form";
default:
return "multiple_entity_table";
}
} else {
return "entity";
}
} else {
return "attribute";
}
}
use of org.openforis.collect.metamodel.ui.UIOptions in project collect by openforis.
the class SurveyCreator method createTemporarySimpleSurvey.
private CollectSurvey createTemporarySimpleSurvey(String name, List<SimpleCodeList> simpleCodeLists) {
CollectSurvey survey = surveyManager.createTemporarySurvey(name, languageCode);
for (int codeListIdx = 0; codeListIdx < simpleCodeLists.size(); codeListIdx++) {
SimpleCodeList simpleCodeList = simpleCodeLists.get(codeListIdx);
CodeList codeList = survey.createCodeList();
codeList.setName("values_" + (codeListIdx + 1));
codeList.setLabel(CodeListLabel.Type.ITEM, survey.getDefaultLanguage(), simpleCodeList.getName());
List<ListItem> items = simpleCodeList.getItems();
for (int itemIdx = 0; itemIdx < items.size(); itemIdx++) {
ListItem paramItem = items.get(itemIdx);
CodeListItem item = codeList.createItem(1);
// specified code or item index
item.setCode(ObjectUtils.defaultIfNull(paramItem.getCode(), String.valueOf(itemIdx + 1)));
item.setLabel(languageCode, paramItem.getLabel());
item.setColor(paramItem.getColor());
codeList.addItem(item);
}
survey.addCodeList(codeList);
}
Schema schema = survey.getSchema();
EntityDefinition rootEntityDef = schema.createEntityDefinition();
rootEntityDef.setName(singleAttributeSurveyRootEntityName);
schema.addRootEntityDefinition(rootEntityDef);
CodeAttributeDefinition idAttrDef = schema.createCodeAttributeDefinition();
idAttrDef.setName(singleAttributeSurveyKeyAttributeName);
idAttrDef.setKey(true);
idAttrDef.setList(survey.getSamplingDesignCodeList());
rootEntityDef.addChildDefinition(idAttrDef);
TextAttributeDefinition operatorAttrDef = schema.createTextAttributeDefinition();
operatorAttrDef.setName(singleAttributeSurveyOperatorAttributeName);
operatorAttrDef.setKey(true);
operatorAttrDef.setLabel(Type.INSTANCE, languageCode, singleAttributeSurveyOperatorAttributeLabel);
survey.getAnnotations().setMeasurementAttribute(operatorAttrDef, true);
rootEntityDef.addChildDefinition(operatorAttrDef);
EntityDefinition secondLevelEntityDef = schema.createEntityDefinition();
secondLevelEntityDef.setName(singleAttributeSurveySecondLevelEntityName);
secondLevelEntityDef.setMultiple(true);
rootEntityDef.addChildDefinition(secondLevelEntityDef);
CodeAttributeDefinition secondLevelIdAttrDef = schema.createCodeAttributeDefinition();
secondLevelIdAttrDef.setName(singleAttributeSurveySecondLevelIdAttributeName);
secondLevelIdAttrDef.setKey(true);
secondLevelIdAttrDef.setList(survey.getSamplingDesignCodeList());
secondLevelIdAttrDef.setParentCodeAttributeDefinition(idAttrDef);
secondLevelEntityDef.addChildDefinition(secondLevelIdAttrDef);
for (int i = 0; i < simpleCodeLists.size(); i++) {
String codeListName = "values_" + (i + 1);
CodeList codeList = survey.getCodeList(codeListName);
CodeAttributeDefinition valueAttrDef = schema.createCodeAttributeDefinition();
valueAttrDef.setName(codeListName);
valueAttrDef.setList(codeList);
secondLevelEntityDef.addChildDefinition(valueAttrDef);
}
// create root tab set
UIOptions uiOptions = survey.getUIOptions();
UITabSet rootTabSet = uiOptions.createRootTabSet((EntityDefinition) rootEntityDef);
UITab mainTab = uiOptions.getMainTab(rootTabSet);
mainTab.setLabel(languageCode, singleAttributeSurveyTabLabel);
UIConfiguration uiConfiguration = new UIOptionsMigrator().migrateToUIConfiguration(uiOptions);
survey.setUIConfiguration(uiConfiguration);
SurveyObjectsGenerator surveyObjectsGenerator = new SurveyObjectsGenerator();
surveyObjectsGenerator.addPredefinedObjects(survey);
if (survey.getSamplingDesignCodeList() == null) {
survey.addSamplingDesignCodeList();
}
return survey;
}
use of org.openforis.collect.metamodel.ui.UIOptions in project collect by openforis.
the class AttributeDefinitionProxy method getVisibleFieldIndexes.
@ExternalizedProperty
public List<Integer> getVisibleFieldIndexes() {
List<Integer> result = new ArrayList<Integer>();
UIOptions uiOptions = getUIOptions();
String[] fieldNames = uiOptions.getVisibleFields(attributeDefinition);
for (String fieldName : fieldNames) {
int fieldIdx = attributeDefinition.getFieldNames().indexOf(fieldName);
if (fieldIdx < 0) {
throw new IllegalStateException(String.format("Field %s not found in attribute definition %s", fieldName, attributeDefinition.getName()));
}
result.add(fieldIdx);
}
return result;
}
Aggregations