Search in sources :

Example 6 with FlexiTableElement

use of org.olat.core.gui.components.form.flexible.elements.FlexiTableElement in project openolat by klemens.

the class HighScoreRunController method initForm.

@Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
    VelocityContainer mainVC = this.flc.getFormItemComponent();
    mainVC.put("loadd3js", new StatisticsComponent("d3loader"));
    if (viewHistogram) {
        VelocityContainer scoreHistogramVC = createVelocityContainer("histogram_score");
        // transfer all scores to velocity container as base data for histogram
        HighScoreRankingResults modifiedData = highScoreManager.processHistogramData(allScores, lowerBorder, upperBorder);
        allScores = modifiedData.getModifiedScores();
        scoreHistogramVC.contextPut("datas", BarSeries.datasToString(allScores));
        // histogram marker for own position
        scoreHistogramVC.contextPut("cutValue", ownIdIndices.size() > 0 ? highScoreManager.calculateHistogramCutvalue(allMembers.get(ownIdIndices.get(0)).getScore(), modifiedData.getClasswidth(), modifiedData.getMin()) : -1000);
        // classwidth to correctly display the histogram
        long classwidth = modifiedData.getClasswidth();
        scoreHistogramVC.contextPut("step", classwidth);
        // find path for ownID image to display in histogram
        UserAvatarMapper mapper = new UserAvatarMapper(false);
        String mapperPath = registerMapper(ureq, mapper);
        String identityMapperPath = mapper.createPathFor(mapperPath, ownIdentity);
        scoreHistogramVC.contextPut("mapperUrl", identityMapperPath);
        mainVC.put("scoreHistogram", scoreHistogramVC);
    }
    if (viewPodium) {
        String[] localizer = { "first", "second", "third" };
        // for clarity and space reasons do not show any portraits if one position has more than 6 persons
        int maxPerson = 6;
        boolean showPortraits = !anonymous && allPodium.get(0).size() <= maxPerson && allPodium.get(1).size() <= maxPerson && allPodium.get(2).size() <= maxPerson;
        for (int i = 0; i < localizer.length; i++) {
            int sizePerPos = allPodium.get(i).size();
            StringBuilder sb = new StringBuilder();
            if (sizePerPos > 2) {
                int reduce = 0;
                // create link if podium has more than 2 entries per rank, entries can be displayed as anonymous
                if (allPodium.get(i).get(0).getIdentity().equals(ownIdentity)) {
                    sb.append(userManager.getUserDisplayName(ownIdentity));
                    ++reduce;
                }
                if (sizePerPos > 6 || anonymous) {
                    mainVC.contextPut("further" + (i + 1), (sizePerPos - reduce) + " " + (reduce == 1 ? translate("highscore.further") : translate("highscore.total")));
                } else {
                    links[i] = LinkFactory.createLink(null, "link" + (i + 1), "cmd", (sizePerPos - reduce) + " " + (reduce == 1 ? translate("highscore.further") : translate("highscore.total")), getTranslator(), mainVC, this, 16);
                }
            } else {
                for (HighScoreTableEntry te : allPodium.get(i)) {
                    if (!anonymous || te.getIdentity().equals(ownIdentity)) {
                        sb.append(userManager.getUserDisplayName(te.getIdentity()));
                        sb.append("<br/>");
                    }
                }
            }
            mainVC.contextPut(localizer[i], sizePerPos > 0 ? sb.toString() : translate("highscore.unavail"));
            mainVC.contextPut("score" + (i + 1), sizePerPos > 0 ? allPodium.get(i).get(0).getScore() : null);
            if (sizePerPos > 0 && showPortraits) {
                // decide whether or not to display id portrait
                mainVC.contextPut("number" + (i + 1), sizePerPos);
                for (int j = 0; j < sizePerPos; j++) {
                    Identity currentID = allPodium.get(i).get(j).getIdentity();
                    boolean choosePortrait = !anonymous || ownIdentity.equals(currentID);
                    DisplayPortraitController portrait = new DisplayPortraitController(ureq, getWindowControl(), currentID, false, choosePortrait, !choosePortrait);
                    listenTo(portrait);
                    Component portraitComponent = portrait.getInitialComponent();
                    mainVC.put("portrait" + (i + 1) + "-" + (j + 1), portraitComponent);
                }
            } else {
                // if amount of people per rank is too large, own id portrait can still be displayed
                for (int j = 0; j < sizePerPos; j++) {
                    Identity currentID = allPodium.get(i).get(j).getIdentity();
                    if (ownIdentity.equals(currentID)) {
                        DisplayPortraitController portrait = new DisplayPortraitController(ureq, getWindowControl(), currentID, true, true, false);
                        listenTo(portrait);
                        mainVC.put("portrait" + (i + 1), portrait.getInitialComponent());
                    }
                }
            }
        }
    }
    if (viewTable) {
        FlexiTableColumnModel tableColumnModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
        tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("highscore.table.header1", HighScoreTableEntry.RANK));
        tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("highscore.table.header2", HighScoreTableEntry.SCORE));
        tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("highscore.table.header3", HighScoreTableEntry.NAME));
        // trim to tableSize
        if (tableSize < allMembers.size()) {
            allMembers.subList(tableSize, allMembers.size()).clear();
        }
        tableDataModel = new FlexiTableDataModelImpl<HighScoreTableEntry>(new HighScoreFlexiTableModel(allMembers, anonymous, translate("highscore.anonymous"), ownIdentity), tableColumnModel);
        FlexiTableElement topTenTable = uifactory.addTableElement(getWindowControl(), "table", tableDataModel, getTranslator(), formLayout);
        topTenTable.setNumOfRowsEnabled(false);
        topTenTable.setCustomizeColumns(false);
        topTenTable.setCssDelegate(new MarkedMemberCssDelegate(false));
        // establish a 2nd table if ownID position is greater than first table's size setting
        if (!ownIdMembers.isEmpty()) {
            tableDataModel2 = new FlexiTableDataModelImpl<HighScoreTableEntry>(new HighScoreFlexiTableModel(ownIdMembers, anonymous, translate("highscore.anonymous"), ownIdentity), tableColumnModel);
            FlexiTableElement tableElement = uifactory.addTableElement(getWindowControl(), "table2", tableDataModel2, getTranslator(), formLayout);
            tableElement.setNumOfRowsEnabled(false);
            tableElement.setCustomizeColumns(false);
            tableElement.setCssDelegate(new MarkedMemberCssDelegate(true));
        }
    }
    if (viewPosition && ownIdIndices.size() > 0) {
        int amountWorse = allScores.length - ownIdIndices.get(0) - 1;
        if (amountWorse > 0) {
            mainVC.contextPut("relposition", translate("highscore.position.inrelation", new String[] { String.valueOf(amountWorse) }));
        }
        int ownRank = highscoreDataModel.getOwnTableEntry().getRank();
        mainVC.contextPut("position", translate("highscore.position.yourposition", new String[] { String.valueOf(ownRank) }));
    }
}
Also used : DisplayPortraitController(org.olat.user.DisplayPortraitController) StatisticsComponent(org.olat.core.gui.components.chart.StatisticsComponent) VelocityContainer(org.olat.core.gui.components.velocity.VelocityContainer) UserAvatarMapper(org.olat.user.UserAvatarMapper) FlexiTableColumnModel(org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel) HighScoreRankingResults(org.olat.course.highscore.model.HighScoreRankingResults) Identity(org.olat.core.id.Identity) StatisticsComponent(org.olat.core.gui.components.chart.StatisticsComponent) Component(org.olat.core.gui.components.Component) DefaultFlexiColumnModel(org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiColumnModel) FlexiTableElement(org.olat.core.gui.components.form.flexible.elements.FlexiTableElement)

Example 7 with FlexiTableElement

use of org.olat.core.gui.components.form.flexible.elements.FlexiTableElement in project openolat by klemens.

the class ImportMemberOverviewIdentitiesController method initForm.

@Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
    formLayout.setElementCssClass("o_sel_user_import_overview");
    if (notfounds != null && !notfounds.isEmpty()) {
        String page = velocity_root + "/warn_notfound.html";
        FormLayoutContainer warnLayout = FormLayoutContainer.createCustomFormLayout("warnNotFounds", getTranslator(), page);
        warnLayout.setRootForm(mainForm);
        formLayout.add(warnLayout);
        StringBuilder sb = new StringBuilder();
        for (String notfound : notfounds) {
            if (sb.length() > 0)
                sb.append(", ");
            sb.append(notfound);
        }
        String msg = translate("user.notfound", new String[] { sb.toString() });
        addToRunContext("notFounds", sb.toString());
        warnLayout.contextPut("notFounds", msg);
    }
    // add the table
    FlexiTableColumnModel tableColumnModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
    int colIndex = 0;
    if (isAdministrativeUser) {
        tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.user.login", colIndex++));
    }
    List<UserPropertyHandler> userPropertyHandlers = userManager.getUserPropertyHandlersFor(usageIdentifyer, isAdministrativeUser);
    List<UserPropertyHandler> resultingPropertyHandlers = new ArrayList<>();
    // followed by the users fields
    for (int i = 0; i < userPropertyHandlers.size(); i++) {
        UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(i);
        boolean visible = UserManager.getInstance().isMandatoryUserProperty(usageIdentifyer, userPropertyHandler);
        if (visible) {
            resultingPropertyHandlers.add(userPropertyHandler);
            tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(userPropertyHandler.i18nColumnDescriptorLabelKey(), colIndex++));
        }
    }
    Translator myTrans = userManager.getPropertyHandlerTranslator(getTranslator());
    ImportMemberOverviewDataModel userTableModel = new ImportMemberOverviewDataModel(oks, resultingPropertyHandlers, isAdministrativeUser, getLocale(), tableColumnModel);
    FlexiTableElement tableEl = uifactory.addTableElement(getWindowControl(), "users", userTableModel, myTrans, formLayout);
    tableEl.setCustomizeColumns(false);
}
Also used : ArrayList(java.util.ArrayList) FormLayoutContainer(org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer) Translator(org.olat.core.gui.translator.Translator) FlexiTableColumnModel(org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel) DefaultFlexiColumnModel(org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiColumnModel) UserPropertyHandler(org.olat.user.propertyhandlers.UserPropertyHandler) FlexiTableElement(org.olat.core.gui.components.form.flexible.elements.FlexiTableElement)

Example 8 with FlexiTableElement

use of org.olat.core.gui.components.form.flexible.elements.FlexiTableElement in project OpenOLAT by OpenOLAT.

the class EditMembershipController method initForm.

@Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
    if (formLayout instanceof FormLayoutContainer) {
        FormLayoutContainer layoutCont = (FormLayoutContainer) formLayout;
        String name = repoEntry == null ? businessGroup.getName() : repoEntry.getDisplayname();
        name = StringHelper.escapeHtml(name);
        String title = translate("edit.member.title", new String[] { name });
        layoutCont.contextPut("editTitle", title);
    }
    // repository entry rights
    if (repoEntry != null) {
        String[] repoValues = new String[] { translate("role.repo.owner"), translate("role.repo.tutor"), translate("role.repo.participant") };
        boolean managed = RepositoryEntryManagedFlag.isManaged(repoEntry, RepositoryEntryManagedFlag.membersmanagement) && !overrideManaged;
        repoRightsEl = uifactory.addCheckboxesVertical("repoRights", null, formLayout, repoRightsKeys, repoValues, 1);
        repoRightsEl.setEnabled(!managed);
        if (member != null) {
            RepoPermission repoPermission = PermissionHelper.getPermission(repoEntry, member, memberships);
            repoRightsEl.select("owner", repoPermission.isOwner());
            repoRightsEl.select("tutor", repoPermission.isTutor());
            repoRightsEl.select("participant", repoPermission.isParticipant());
        }
    }
    // group rights
    FlexiTableColumnModel tableColumnModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
    tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.header.groups", 0));
    tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.header.tutorsCount", 1));
    tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.header.participantsCount", 2));
    tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, "table.header.freePlace", 3, false, null, FlexiColumnModel.ALIGNMENT_LEFT, new TextFlexiCellRenderer(EscapeMode.none)));
    tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.header.tutors", 4));
    tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.header.participants", 5));
    tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.header.waitingList", 6));
    tableDataModel = new EditMemberTableDataModel(Collections.<MemberOption>emptyList(), tableColumnModel);
    FlexiTableElement tableEl = uifactory.addTableElement(getWindowControl(), "groupList", tableDataModel, getTranslator(), formLayout);
    tableEl.setCustomizeColumns(false);
    if (withButtons) {
        FormLayoutContainer buttonLayout = FormLayoutContainer.createButtonLayout("buttonLayout", getTranslator());
        formLayout.add(buttonLayout);
        buttonLayout.setRootForm(mainForm);
        uifactory.addFormSubmitButton("ok", buttonLayout);
        uifactory.addFormCancelButton("cancel", buttonLayout, ureq, getWindowControl());
    }
}
Also used : RepoPermission(org.olat.course.member.PermissionHelper.RepoPermission) FormLayoutContainer(org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer) FlexiTableColumnModel(org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel) TextFlexiCellRenderer(org.olat.core.gui.components.form.flexible.impl.elements.table.TextFlexiCellRenderer) DefaultFlexiColumnModel(org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiColumnModel) FlexiTableElement(org.olat.core.gui.components.form.flexible.elements.FlexiTableElement)

Example 9 with FlexiTableElement

use of org.olat.core.gui.components.form.flexible.elements.FlexiTableElement in project OpenOLAT by OpenOLAT.

the class ImportMemberOverviewIdentitiesController method initForm.

@Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
    formLayout.setElementCssClass("o_sel_user_import_overview");
    if (notfounds != null && !notfounds.isEmpty()) {
        String page = velocity_root + "/warn_notfound.html";
        FormLayoutContainer warnLayout = FormLayoutContainer.createCustomFormLayout("warnNotFounds", getTranslator(), page);
        warnLayout.setRootForm(mainForm);
        formLayout.add(warnLayout);
        StringBuilder sb = new StringBuilder();
        for (String notfound : notfounds) {
            if (sb.length() > 0)
                sb.append(", ");
            sb.append(notfound);
        }
        String msg = translate("user.notfound", new String[] { sb.toString() });
        addToRunContext("notFounds", sb.toString());
        warnLayout.contextPut("notFounds", msg);
    }
    // add the table
    FlexiTableColumnModel tableColumnModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
    int colIndex = 0;
    if (isAdministrativeUser) {
        tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.user.login", colIndex++));
    }
    List<UserPropertyHandler> userPropertyHandlers = userManager.getUserPropertyHandlersFor(usageIdentifyer, isAdministrativeUser);
    List<UserPropertyHandler> resultingPropertyHandlers = new ArrayList<>();
    // followed by the users fields
    for (int i = 0; i < userPropertyHandlers.size(); i++) {
        UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(i);
        boolean visible = UserManager.getInstance().isMandatoryUserProperty(usageIdentifyer, userPropertyHandler);
        if (visible) {
            resultingPropertyHandlers.add(userPropertyHandler);
            tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(userPropertyHandler.i18nColumnDescriptorLabelKey(), colIndex++));
        }
    }
    Translator myTrans = userManager.getPropertyHandlerTranslator(getTranslator());
    ImportMemberOverviewDataModel userTableModel = new ImportMemberOverviewDataModel(oks, resultingPropertyHandlers, isAdministrativeUser, getLocale(), tableColumnModel);
    FlexiTableElement tableEl = uifactory.addTableElement(getWindowControl(), "users", userTableModel, myTrans, formLayout);
    tableEl.setCustomizeColumns(false);
}
Also used : ArrayList(java.util.ArrayList) FormLayoutContainer(org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer) Translator(org.olat.core.gui.translator.Translator) FlexiTableColumnModel(org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel) DefaultFlexiColumnModel(org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiColumnModel) UserPropertyHandler(org.olat.user.propertyhandlers.UserPropertyHandler) FlexiTableElement(org.olat.core.gui.components.form.flexible.elements.FlexiTableElement)

Example 10 with FlexiTableElement

use of org.olat.core.gui.components.form.flexible.elements.FlexiTableElement in project openolat by klemens.

the class MembersOverviewIdentitiesController method initForm.

@Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
    formLayout.setElementCssClass("o_sel_user_import_overview");
    if (notfounds != null && !notfounds.isEmpty()) {
        String page = velocity_root + "/warn_notfound.html";
        FormLayoutContainer warnLayout = FormLayoutContainer.createCustomFormLayout("warnNotFounds", getTranslator(), page);
        warnLayout.setRootForm(mainForm);
        formLayout.add(warnLayout);
        StringBuilder sb = new StringBuilder();
        for (String notfound : notfounds) {
            if (sb.length() > 0)
                sb.append(", ");
            sb.append(notfound);
        }
        String msg = translate("user.notfound", new String[] { sb.toString() });
        addToRunContext("notFounds", sb.toString());
        warnLayout.contextPut("notFounds", msg);
    }
    // add the table
    FlexiTableColumnModel tableColumnModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
    int colIndex = 0;
    if (isAdministrativeUser) {
        tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.user.login", colIndex++));
    }
    List<UserPropertyHandler> userPropertyHandlers = userManager.getUserPropertyHandlersFor(USER_PROPS_ID, isAdministrativeUser);
    List<UserPropertyHandler> resultingPropertyHandlers = new ArrayList<UserPropertyHandler>();
    // followed by the users fields
    for (int i = 0; i < userPropertyHandlers.size(); i++) {
        UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(i);
        boolean visible = UserManager.getInstance().isMandatoryUserProperty(USER_PROPS_ID, userPropertyHandler);
        if (visible) {
            resultingPropertyHandlers.add(userPropertyHandler);
            tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(userPropertyHandler.i18nColumnDescriptorLabelKey(), colIndex++));
        }
    }
    Translator myTrans = userManager.getPropertyHandlerTranslator(getTranslator());
    MembersOverviewDataModel userTableModel = new MembersOverviewDataModel(oks, resultingPropertyHandlers, isAdministrativeUser, getLocale(), tableColumnModel);
    FlexiTableElement tableEl = uifactory.addTableElement(getWindowControl(), "users", userTableModel, myTrans, formLayout);
    tableEl.setCustomizeColumns(false);
}
Also used : ArrayList(java.util.ArrayList) FormLayoutContainer(org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer) Translator(org.olat.core.gui.translator.Translator) FlexiTableColumnModel(org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel) DefaultFlexiColumnModel(org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiColumnModel) UserPropertyHandler(org.olat.user.propertyhandlers.UserPropertyHandler) FlexiTableElement(org.olat.core.gui.components.form.flexible.elements.FlexiTableElement)

Aggregations

FlexiTableElement (org.olat.core.gui.components.form.flexible.elements.FlexiTableElement)10 DefaultFlexiColumnModel (org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiColumnModel)10 FlexiTableColumnModel (org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel)10 FormLayoutContainer (org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer)8 ArrayList (java.util.ArrayList)4 Translator (org.olat.core.gui.translator.Translator)4 UserPropertyHandler (org.olat.user.propertyhandlers.UserPropertyHandler)4 Component (org.olat.core.gui.components.Component)2 StatisticsComponent (org.olat.core.gui.components.chart.StatisticsComponent)2 TextFlexiCellRenderer (org.olat.core.gui.components.form.flexible.impl.elements.table.TextFlexiCellRenderer)2 VelocityContainer (org.olat.core.gui.components.velocity.VelocityContainer)2 Identity (org.olat.core.id.Identity)2 BulkAssessmentSettings (org.olat.course.assessment.model.BulkAssessmentSettings)2 HighScoreRankingResults (org.olat.course.highscore.model.HighScoreRankingResults)2 RepoPermission (org.olat.course.member.PermissionHelper.RepoPermission)2 AssessableCourseNode (org.olat.course.nodes.AssessableCourseNode)2 DisplayPortraitController (org.olat.user.DisplayPortraitController)2 UserAvatarMapper (org.olat.user.UserAvatarMapper)2