Search in sources :

Example 16 with Field

use of com.vaadin.v7.ui.Field in project SORMAS-Project by hzi-braunschweig.

the class SampleController method addPathogenTestComponent.

/**
 * @param sampleComponent
 *            to add the pathogen test create component to.
 * @param pathogenTest
 *            the preset values to insert. May be null.
 * @param caseSampleCount
 *            describes how many samples already exist for a case related to the pathogen test's sample (if a case exists, otherwise 0
 *            is valid).
 * @param callback
 *            use it to define additional actions that need to be taken after the pathogen test is saved (e.g. refresh the UI)
 * @return the pathogen test create component added.
 */
public PathogenTestForm addPathogenTestComponent(CommitDiscardWrapperComponent<? extends AbstractSampleForm> sampleComponent, PathogenTestDto pathogenTest, int caseSampleCount, Runnable callback) {
    // add horizontal rule to clearly distinguish the component
    Label horizontalRule = new Label("<br><hr /><br>", ContentMode.HTML);
    horizontalRule.setWidth(100f, Unit.PERCENTAGE);
    sampleComponent.addComponent(horizontalRule, sampleComponent.getComponentCount() - 1);
    PathogenTestForm pathogenTestForm = new PathogenTestForm(sampleComponent.getWrappedComponent().getValue(), true, caseSampleCount, false);
    // prefill fields
    if (pathogenTest != null) {
        pathogenTestForm.setValue(pathogenTest);
        // show typingId field when it has a preset value
        if (pathogenTest.getTypingId() != null && !"".equals(pathogenTest.getTypingId())) {
            pathogenTestForm.getField(PathogenTestDto.TYPING_ID).setVisible(true);
        }
    } else {
        pathogenTestForm.setValue(PathogenTestDto.build(sampleComponent.getWrappedComponent().getValue(), UserProvider.getCurrent().getUser()));
        // remove value invalid for newly created pathogen tests
        ComboBox pathogenTestResultField = pathogenTestForm.getField(PathogenTestDto.TEST_RESULT);
        pathogenTestResultField.removeItem(PathogenTestResultType.NOT_DONE);
        pathogenTestResultField.setValue(PathogenTestResultType.PENDING);
        ComboBox testDiseaseField = pathogenTestForm.getField(PathogenTestDto.TESTED_DISEASE);
        testDiseaseField.setValue(FacadeProvider.getDiseaseConfigurationFacade().getDefaultDisease());
    }
    // setup field updates
    Field testLabField = pathogenTestForm.getField(PathogenTestDto.LAB);
    NullableOptionGroup samplePurposeField = sampleComponent.getWrappedComponent().getField(SampleDto.SAMPLE_PURPOSE);
    Runnable updateTestLabFieldRequired = () -> testLabField.setRequired(!SamplePurpose.INTERNAL.equals(samplePurposeField.getValue()));
    updateTestLabFieldRequired.run();
    samplePurposeField.addValueChangeListener(e -> updateTestLabFieldRequired.run());
    // validate pathogen test create component before saving the sample
    sampleComponent.addFieldGroups(pathogenTestForm.getFieldGroup());
    CommitDiscardWrapperComponent.CommitListener savePathogenTest = () -> {
        ControllerProvider.getPathogenTestController().savePathogenTest(pathogenTestForm.getValue(), null, true, true);
        if (callback != null) {
            callback.run();
        }
    };
    sampleComponent.addCommitListener(savePathogenTest);
    // Discard button configuration
    Button discardButton = ButtonHelper.createButton(I18nProperties.getCaption(Captions.pathogenTestRemove));
    VerticalLayout buttonLayout = new VerticalLayout(discardButton);
    buttonLayout.setComponentAlignment(discardButton, Alignment.TOP_LEFT);
    // add the discard button above the overall discard and commit buttons
    sampleComponent.addComponent(buttonLayout, sampleComponent.getComponentCount() - 1);
    discardButton.addClickListener(o -> {
        sampleComponent.removeComponent(horizontalRule);
        sampleComponent.removeComponent(buttonLayout);
        sampleComponent.removeComponent(pathogenTestForm);
        sampleComponent.removeFieldGroups(pathogenTestForm.getFieldGroup());
        sampleComponent.removeCommitListener(savePathogenTest);
        pathogenTestForm.discard();
    });
    // Country specific configuration
    boolean germanInstance = FacadeProvider.getConfigFacade().isConfiguredCountry(CountryHelper.COUNTRY_CODE_GERMANY);
    pathogenTestForm.getField(PathogenTestDto.REPORT_DATE).setVisible(germanInstance);
    pathogenTestForm.getField(PathogenTestDto.EXTERNAL_ID).setVisible(germanInstance);
    pathogenTestForm.getField(PathogenTestDto.EXTERNAL_ORDER_ID).setVisible(germanInstance);
    pathogenTestForm.getField(PathogenTestDto.VIA_LIMS).setVisible(germanInstance);
    // Sample creation specific configuration
    final DateTimeField sampleDateField = sampleComponent.getWrappedComponent().getField(SampleDto.SAMPLE_DATE_TIME);
    final DateTimeField testDateField = pathogenTestForm.getField(PathogenTestDto.TEST_DATE_TIME);
    testDateField.addValidator(new DateComparisonValidator(testDateField, sampleDateField, false, false, I18nProperties.getValidationError(Validations.afterDate, testDateField.getCaption(), sampleDateField.getCaption())));
    // add the pathogenTestForm above the overall discard and commit buttons
    sampleComponent.addComponent(pathogenTestForm, sampleComponent.getComponentCount() - 1);
    return pathogenTestForm;
}
Also used : NullableOptionGroup(de.symeda.sormas.ui.utils.NullableOptionGroup) ComboBox(com.vaadin.v7.ui.ComboBox) Label(com.vaadin.ui.Label) CommitDiscardWrapperComponent(de.symeda.sormas.ui.utils.CommitDiscardWrapperComponent) DateTimeField(de.symeda.sormas.ui.utils.DateTimeField) DateComparisonValidator(de.symeda.sormas.ui.utils.DateComparisonValidator) Field(com.vaadin.v7.ui.Field) DateTimeField(de.symeda.sormas.ui.utils.DateTimeField) Button(com.vaadin.ui.Button) VerticalLayout(com.vaadin.ui.VerticalLayout)

Example 17 with Field

use of com.vaadin.v7.ui.Field in project SORMAS-Project by hzi-braunschweig.

the class PersonFilterForm method applyDependenciesOnNewValue.

@Override
protected void applyDependenciesOnNewValue(PersonCriteria criteria) {
    final UserDto user = currentUserDto();
    final JurisdictionLevel userJurisdictionLevel = UserRole.getJurisdictionLevel(UserProvider.getCurrent().getUserRoles());
    final ComboBox districtFilter = getField(PersonCriteria.DISTRICT);
    final ComboBox communityFilter = getField(PersonCriteria.COMMUNITY);
    // Get initial field values according to user and criteria
    final RegionReferenceDto region = user.getRegion() == null ? criteria.getRegion() : user.getRegion();
    final DistrictReferenceDto district = user.getDistrict() == null ? criteria.getDistrict() : user.getDistrict();
    final CommunityReferenceDto community = user.getCommunity() == null ? criteria.getCommunity() : user.getCommunity();
    // district
    if (region != null) {
        enableFields(districtFilter);
        districtFilter.addItems(FacadeProvider.getDistrictFacade().getAllActiveByRegion(region.getUuid()));
        // community
        if (district != null) {
            districtFilter.setValue(district);
            communityFilter.addItems(FacadeProvider.getCommunityFacade().getAllActiveByDistrict(district.getUuid()));
            enableFields(communityFilter);
            if (community != null) {
                communityFilter.setValue(community);
            }
        } else {
            clearAndDisableFields(communityFilter);
        }
    } else {
        clearAndDisableFields(districtFilter, communityFilter);
    }
    // Disable fields according to user & jurisdiction
    if (userJurisdictionLevel == JurisdictionLevel.DISTRICT) {
        clearAndDisableFields(districtFilter);
    } else if (userJurisdictionLevel == JurisdictionLevel.COMMUNITY) {
        clearAndDisableFields(districtFilter, communityFilter);
    } else if (userJurisdictionLevel == JurisdictionLevel.HEALTH_FACILITY) {
        clearAndDisableFields(districtFilter, communityFilter);
    }
    ComboBox birthDateDD = getField(PersonCriteria.BIRTHDATE_DD);
    if (getField(PersonCriteria.BIRTHDATE_YYYY).getValue() != null && getField(PersonCriteria.BIRTHDATE_MM).getValue() != null) {
        birthDateDD.addItems(DateHelper.getDaysInMonth((Integer) getField(PersonCriteria.BIRTHDATE_MM).getValue(), (Integer) getField(PersonCriteria.BIRTHDATE_YYYY).getValue()));
        birthDateDD.setEnabled(true);
    } else {
        birthDateDD.clear();
        birthDateDD.setEnabled(false);
    }
}
Also used : CommunityReferenceDto(de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto) RegionReferenceDto(de.symeda.sormas.api.infrastructure.region.RegionReferenceDto) ComboBox(com.vaadin.v7.ui.ComboBox) UserDto(de.symeda.sormas.api.user.UserDto) JurisdictionLevel(de.symeda.sormas.api.user.JurisdictionLevel) DistrictReferenceDto(de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto)

Example 18 with Field

use of com.vaadin.v7.ui.Field in project SORMAS-Project by hzi-braunschweig.

the class ExpressionProcessorTest method testConfigureExpressionFieldsWithTooltip.

@Test
public void testConfigureExpressionFieldsWithTooltip() {
    expressionProcessor.configureExpressionFieldsWithTooltip();
    final TextField field = (TextField) campaignFormBuilder.getFields().get("childrenLivingInHouses");
    assertThat(field.getDescription(), is("Calculated based on: Number of < 5 years children vaccinated based on recall"));
    final TextField fieldRecall = (TextField) campaignFormBuilder.getFields().get("childrenVaccinatedRecall");
    assertThat(fieldRecall.getDescription(), isEmptyOrNullString());
}
Also used : TextField(com.vaadin.v7.ui.TextField) Test(org.junit.Test)

Example 19 with Field

use of com.vaadin.v7.ui.Field in project SORMAS-Project by hzi-braunschweig.

the class VaccinationEditForm method addFields.

@Override
protected void addFields() {
    addField(VaccinationDto.REPORT_DATE).setRequired(true);
    addField(VaccinationDto.REPORTING_USER).setReadOnly(true);
    addField(VaccinationDto.VACCINATION_DATE);
    Field vaccineName = addField(VaccinationDto.VACCINE_NAME);
    addField(VaccinationDto.OTHER_VACCINE_NAME);
    Field vaccineManufacturer = addField(VaccinationDto.VACCINE_MANUFACTURER);
    addField(VaccinationDto.OTHER_VACCINE_MANUFACTURER);
    vaccineName.addValueChangeListener(e -> {
        Vaccine vaccine = (Vaccine) e.getProperty().getValue();
        if (vaccine != null) {
            vaccineManufacturer.setValue(vaccine.getManufacturer());
        }
    });
    addField(VaccinationDto.VACCINE_TYPE);
    addField(VaccinationDto.VACCINATION_INFO_SOURCE);
    addField(VaccinationDto.VACCINE_DOSE);
    addField(VaccinationDto.VACCINE_INN);
    addField(VaccinationDto.VACCINE_UNII_CODE);
    addField(VaccinationDto.VACCINE_BATCH_NUMBER);
    addField(VaccinationDto.VACCINE_ATC_CODE);
    FieldHelper.setVisibleWhen(getFieldGroup(), VaccinationDto.OTHER_VACCINE_NAME, VaccinationDto.VACCINE_NAME, Collections.singletonList(Vaccine.OTHER), true);
    FieldHelper.setVisibleWhen(getFieldGroup(), VaccinationDto.OTHER_VACCINE_MANUFACTURER, VaccinationDto.VACCINE_MANUFACTURER, Collections.singletonList(VaccineManufacturer.OTHER), true);
    addField(VaccinationDto.PREGNANT);
    addField(VaccinationDto.TRIMESTER);
    addField(VaccinationDto.HEALTH_CONDITIONS, HealthConditionsForm.class).setCaption(null);
    initializeVisibilitiesAndAllowedVisibilities();
    if (isVisibleAllowed(VaccinationDto.PREGNANT)) {
        FieldHelper.setVisibleWhen(getFieldGroup(), VaccinationDto.TRIMESTER, VaccinationDto.PREGNANT, Collections.singletonList(YesNoUnknown.YES), true);
    }
}
Also used : Field(com.vaadin.v7.ui.Field) HealthConditionsForm(de.symeda.sormas.ui.clinicalcourse.HealthConditionsForm) Vaccine(de.symeda.sormas.api.caze.Vaccine)

Example 20 with Field

use of com.vaadin.v7.ui.Field in project SORMAS-Project by hzi-braunschweig.

the class ContactDataForm method updateFollowUpStatusComponents.

@SuppressWarnings("unchecked")
private void updateFollowUpStatusComponents() {
    getContent().removeComponent(CANCEL_OR_RESUME_FOLLOW_UP_BTN_LOC);
    getContent().removeComponent(LOST_FOLLOW_UP_BTN_LOC);
    Field<FollowUpStatus> statusField = (Field<FollowUpStatus>) getField(ContactDto.FOLLOW_UP_STATUS);
    boolean followUpVisible = getValue() != null && statusField.isVisible();
    if (followUpVisible && UserProvider.getCurrent().hasUserRight(UserRight.CONTACT_EDIT)) {
        FollowUpStatus followUpStatus = statusField.getValue();
        tfExpectedFollowUpUntilDate.setVisible(followUpStatus != FollowUpStatus.NO_FOLLOW_UP);
        boolean followUpCanceledOrLost = followUpStatus == FollowUpStatus.CANCELED || followUpStatus == FollowUpStatus.LOST;
        cbOverwriteFollowUpUntil.setReadOnly(followUpCanceledOrLost);
        dfFollowUpUntil.setReadOnly(followUpCanceledOrLost || Boolean.TRUE != cbOverwriteFollowUpUntil.getValue());
        if (followUpStatus == FollowUpStatus.FOLLOW_UP) {
            Button cancelButton = ButtonHelper.createButton(Captions.contactCancelFollowUp, event -> {
                setFollowUpStatus(FollowUpStatus.CANCELED);
            });
            cancelButton.setWidth(100, Unit.PERCENTAGE);
            getContent().addComponent(cancelButton, CANCEL_OR_RESUME_FOLLOW_UP_BTN_LOC);
            Button lostButton = ButtonHelper.createButton(Captions.contactLostToFollowUp, event -> {
                setFollowUpStatus(FollowUpStatus.LOST);
            });
            lostButton.setWidth(100, Unit.PERCENTAGE);
            getContent().addComponent(lostButton, LOST_FOLLOW_UP_BTN_LOC);
        } else if (followUpStatus == FollowUpStatus.CANCELED || followUpStatus == FollowUpStatus.LOST) {
            Button resumeButton = ButtonHelper.createButton(Captions.contactResumeFollowUp, event -> {
                setFollowUpStatus(FollowUpStatus.FOLLOW_UP);
            }, CssStyles.FORCE_CAPTION);
            resumeButton.setWidth(100, Unit.PERCENTAGE);
            getContent().addComponent(resumeButton, CANCEL_OR_RESUME_FOLLOW_UP_BTN_LOC);
        }
    }
}
Also used : FollowUpStatus(de.symeda.sormas.api.contact.FollowUpStatus) FeatureType(de.symeda.sormas.api.feature.FeatureType) HealthConditionsForm(de.symeda.sormas.ui.clinicalcourse.HealthConditionsForm) AbstractEditForm(de.symeda.sormas.ui.utils.AbstractEditForm) LAYOUT_COL_HIDE_INVSIBLE(de.symeda.sormas.ui.utils.CssStyles.LAYOUT_COL_HIDE_INVSIBLE) H3(de.symeda.sormas.ui.utils.CssStyles.H3) Arrays(java.util.Arrays) ContactRelation(de.symeda.sormas.api.contact.ContactRelation) ValidationUtils(de.symeda.sormas.ui.utils.ValidationUtils) AbstractField(com.vaadin.v7.ui.AbstractField) Date(java.util.Date) CheckBox(com.vaadin.v7.ui.CheckBox) EndOfQuarantineReason(de.symeda.sormas.api.contact.EndOfQuarantineReason) I18nProperties(de.symeda.sormas.api.i18n.I18nProperties) TracingApp(de.symeda.sormas.api.contact.TracingApp) ContactProximity(de.symeda.sormas.api.contact.ContactProximity) ControllerProvider(de.symeda.sormas.ui.ControllerProvider) YesNoUnknown(de.symeda.sormas.api.utils.YesNoUnknown) CssStyles(de.symeda.sormas.ui.utils.CssStyles) VSPACE_3(de.symeda.sormas.ui.utils.CssStyles.VSPACE_3) FORCE_CAPTION(de.symeda.sormas.ui.utils.CssStyles.FORCE_CAPTION) UserProvider(de.symeda.sormas.ui.UserProvider) ValoTheme(com.vaadin.ui.themes.ValoTheme) Property(com.vaadin.v7.data.Property) ViewMode(de.symeda.sormas.ui.utils.ViewMode) ComboBox(com.vaadin.v7.ui.ComboBox) Link(com.vaadin.ui.Link) CaseDataDto(de.symeda.sormas.api.caze.CaseDataDto) Field(com.vaadin.v7.ui.Field) FieldHelper(de.symeda.sormas.ui.utils.FieldHelper) ContactClassification(de.symeda.sormas.api.contact.ContactClassification) Sets(com.google.common.collect.Sets) List(java.util.List) ContactDto(de.symeda.sormas.api.contact.ContactDto) TextField(com.vaadin.v7.ui.TextField) Descriptions(de.symeda.sormas.api.i18n.Descriptions) UiFieldAccessCheckers(de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers) RegionReferenceDto(de.symeda.sormas.api.infrastructure.region.RegionReferenceDto) DateComparisonValidator(de.symeda.sormas.ui.utils.DateComparisonValidator) FollowUpPeriodDto(de.symeda.sormas.api.followup.FollowUpPeriodDto) VaadinUiUtil(de.symeda.sormas.ui.utils.VaadinUiUtil) LABEL_WHITE_SPACE_NORMAL(de.symeda.sormas.ui.utils.CssStyles.LABEL_WHITE_SPACE_NORMAL) FacadeProvider(de.symeda.sormas.api.FacadeProvider) DateHelper(de.symeda.sormas.api.utils.DateHelper) ErrorLevel(com.vaadin.shared.ui.ErrorLevel) Converter(com.vaadin.v7.data.util.converter.Converter) ArrayList(java.util.ArrayList) CaseReferenceDto(de.symeda.sormas.api.caze.CaseReferenceDto) QuarantineType(de.symeda.sormas.api.contact.QuarantineType) LayoutUtil.loc(de.symeda.sormas.ui.utils.LayoutUtil.loc) LayoutUtil.locCss(de.symeda.sormas.ui.utils.LayoutUtil.locCss) Resolution(com.vaadin.v7.shared.ui.datefield.Resolution) Label(com.vaadin.ui.Label) CountryHelper(de.symeda.sormas.api.CountryHelper) NullableOptionGroup(de.symeda.sormas.ui.utils.NullableOptionGroup) LayoutUtil.fluidRowLocs(de.symeda.sormas.ui.utils.LayoutUtil.fluidRowLocs) DateField(com.vaadin.v7.ui.DateField) ButtonHelper(de.symeda.sormas.ui.utils.ButtonHelper) ContactIdentificationSource(de.symeda.sormas.api.contact.ContactIdentificationSource) Validations(de.symeda.sormas.api.i18n.Validations) DistrictReferenceDto(de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto) ContactLogic(de.symeda.sormas.api.contact.ContactLogic) ErrorMessage(com.vaadin.server.ErrorMessage) Captions(de.symeda.sormas.api.i18n.Captions) ExtendedReduced(de.symeda.sormas.api.utils.ExtendedReduced) UserRight(de.symeda.sormas.api.user.UserRight) Button(com.vaadin.ui.Button) LayoutUtil(de.symeda.sormas.ui.utils.LayoutUtil) Disease(de.symeda.sormas.api.Disease) DateRangeValidator(com.vaadin.v7.data.validator.DateRangeValidator) TextArea(com.vaadin.v7.ui.TextArea) ContactCategory(de.symeda.sormas.api.contact.ContactCategory) FollowUpLogic(de.symeda.sormas.api.followup.FollowUpLogic) DiseasesConfiguration(de.symeda.sormas.api.utils.Diseases.DiseasesConfiguration) ContactReferenceDto(de.symeda.sormas.api.contact.ContactReferenceDto) FeatureTypeProperty(de.symeda.sormas.api.feature.FeatureTypeProperty) FieldVisibilityCheckers(de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers) Strings(de.symeda.sormas.api.i18n.Strings) Collections(java.util.Collections) AbstractField(com.vaadin.v7.ui.AbstractField) Field(com.vaadin.v7.ui.Field) TextField(com.vaadin.v7.ui.TextField) DateField(com.vaadin.v7.ui.DateField) FollowUpStatus(de.symeda.sormas.api.contact.FollowUpStatus) Button(com.vaadin.ui.Button)

Aggregations

TextField (com.vaadin.v7.ui.TextField)36 Field (com.vaadin.v7.ui.Field)34 ComboBox (com.vaadin.v7.ui.ComboBox)32 AbstractField (com.vaadin.v7.ui.AbstractField)23 DateField (com.vaadin.v7.ui.DateField)20 Label (com.vaadin.ui.Label)19 Disease (de.symeda.sormas.api.Disease)15 FacadeProvider (de.symeda.sormas.api.FacadeProvider)15 DistrictReferenceDto (de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto)15 FieldVisibilityCheckers (de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers)15 NullableOptionGroup (de.symeda.sormas.ui.utils.NullableOptionGroup)15 I18nProperties (de.symeda.sormas.api.i18n.I18nProperties)14 Strings (de.symeda.sormas.api.i18n.Strings)14 AbstractEditForm (de.symeda.sormas.ui.utils.AbstractEditForm)14 DateComparisonValidator (de.symeda.sormas.ui.utils.DateComparisonValidator)14 FieldHelper (de.symeda.sormas.ui.utils.FieldHelper)14 LayoutUtil.fluidRowLocs (de.symeda.sormas.ui.utils.LayoutUtil.fluidRowLocs)14 Collections (java.util.Collections)14 Button (com.vaadin.ui.Button)13 CssStyles (de.symeda.sormas.ui.utils.CssStyles)13