BannerApp.java

package sk.iway.iwcm.components.banner;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import lombok.Getter;
import lombok.Setter;
import sk.iway.iwcm.components.WebjetComponentAbstract;
import sk.iway.iwcm.system.annotations.WebjetAppStore;
import sk.iway.iwcm.system.annotations.WebjetComponent;
import sk.iway.iwcm.system.datatable.DataTableColumnType;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumn;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnEditor;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnEditorAttr;
import sk.iway.iwcm.editor.rest.ComponentRequest;
import sk.iway.iwcm.system.datatable.OptionDto;

import javax.servlet.http.HttpServletRequest;

import sk.iway.iwcm.Constants;
import sk.iway.iwcm.Identity;
import sk.iway.iwcm.components.banner.model.BannerGroupBean;
import sk.iway.iwcm.system.datatable.annotations.DataTableTab;
import sk.iway.iwcm.system.datatable.annotations.DataTableTabs;

@WebjetComponent("sk.iway.iwcm.components.banner.BannerApp")
@WebjetAppStore(
    nameKey = "components.banner.title",
    descKey = "components.banner.desc",
    itemKey= "menuBanner",
    imagePath = "/components/banner/editoricon.png",
    galleryImages = "/components/banner/",
    componentPath = "/components/banner/banner.jsp",
    customHtml = "/apps/banner/admin/editor-component.html"
)
@DataTableTabs(tabs = {
    @DataTableTab(id = "basic", title = "components.universalComponentDialog.title", selected = true),
    @DataTableTab(id = "advanced", title = "editor.tab.advanced", content = ""),
    @DataTableTab(id = "componentIframeWindowTabList", title = "components.banner.list_of_banners", content = ""),
    @DataTableTab(id = "componentIframeWindowTabStats", title = "components.banner.banners_stat", content = "")
})
@Getter
@Setter
public class BannerApp extends WebjetComponentAbstract {
    @DataTableColumn(
        inputType = DataTableColumnType.SELECT,
        tab = "basic",
        title="components.banner.select_group"
    )
    private String group;

    @DataTableColumn(
        inputType = DataTableColumnType.CHECKBOX,
        title = "components.banner.active",
        tab = "basic",
        editor = {
        @DataTableColumnEditor(
            attr = {
                @DataTableColumnEditorAttr(key = "unselectedValue", value = "")
            },
            options = {
                @DataTableColumnEditorAttr(key = "", value = "enabled"),
            })
        }
    )
    private String status = "enabled";

    @DataTableColumn(
        inputType = DataTableColumnType.RADIO,
        title = "components.banner.display_mode",
        tab = "basic",
        editor = {
            @DataTableColumnEditor(
                options = {
                    @DataTableColumnEditorAttr(key = "components.banner.display_mode_1", value = "1"),
                    @DataTableColumnEditorAttr(key = "components.banner.display_mode_2", value = "2"),
                    @DataTableColumnEditorAttr(key = "components.banner.display_mode_3", value = "3"),
                    @DataTableColumnEditorAttr(key = "components.banner.display_mode_4", value = "4"),
                    @DataTableColumnEditorAttr(key = "components.banner.display_mode_5", value = "5")
                }
            )
        }
    )
    private String displayMode = "1";

    @DataTableColumn(
        inputType = DataTableColumnType.NUMBER,
        tab = "basic",
        title="components.banner.banner_index")
    private Integer bannerIndex;

    @DataTableColumn(
        inputType = DataTableColumnType.STATIC_TEXT,
        tab = "basic",
        title="components.banner.jedinecny_index"
    )
    private String explain;

    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        tab = "advanced",
        title="components.banner.videoWrapperClass",
        editor = {
            @DataTableColumnEditor(attr = {
                @DataTableColumnEditorAttr(key = "data-dt-field-headline", value = "components.video.title") })
        }
    )
    private String videoWrapperClass;

    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        tab = "advanced",
        title="components.banner.jumbotronVideoClass"
    )
    private String jumbotronVideoClass;

    @DataTableColumn(
        inputType = DataTableColumnType.BOOLEAN_TEXT,
        title = "components.banner.show_in_iframe",
        tab = "advanced",
        editor = {
            @DataTableColumnEditor(attr = {
                @DataTableColumnEditorAttr(key = "data-dt-field-headline", value = "components.forum.type_iframe") })
        }
    )
    private Boolean showInIframe = false;

    @DataTableColumn(
        inputType = DataTableColumnType.NUMBER,
        tab = "advanced",
        title="components.banner.refresh_rate"
    )
    private Integer refreshRate = 0;

    @DataTableColumn(
        inputType = DataTableColumnType.STATIC_TEXT,
        tab = "advanced",
        title="components.banner.refresh_rate_desc"
    )
    private String explain2;

    @DataTableColumn(
        inputType = DataTableColumnType.NUMBER,
        tab = "advanced",
        title="components.banner.iframe_width")
    private Integer iframeWidth;

    @DataTableColumn(
        inputType = DataTableColumnType.NUMBER,
        tab = "advanced",
        title="components.banner.iframe_height")
    private Integer iframeHeight;

    @DataTableColumn(inputType = DataTableColumnType.IFRAME, tab = "componentIframeWindowTabList", title=" ")
    private String iframe  = "/apps/banner/admin/";

    @DataTableColumn(inputType = DataTableColumnType.IFRAME, tab = "componentIframeWindowTabStats", title=" ")
    private String iframe2  = "/apps/banner/admin/banner-stat/";


    @Override
    public Map<String, List<OptionDto>> getAppOptions(ComponentRequest componentRequest, HttpServletRequest request) {
        Map<String, List<OptionDto>> options = new HashMap<>();

        List<OptionDto> groupOptions = new ArrayList<>();

        Identity user = (Identity) request.getSession().getAttribute(Constants.USER_KEY);
        List<BannerGroupBean> banners = (List<BannerGroupBean>) BannerDB.getBannerGroupsByUserAllowedCategories(user.getUserId());
        for (BannerGroupBean banner : banners){
            String bannerGroup = banner.getBannerGroup();
            groupOptions.add(new OptionDto(bannerGroup, bannerGroup, null));
        }

        options.put("group", groupOptions);

        return options;
    }

}