cancel
Showing results for 
Search instead for 
Did you mean: 

how to customize the list view for "show only different attributes" in compare view

Former Member
0 Kudos

Using product cockpit the products are compared using compare button. In compare view we can show only different attributes of the compared products. Any customization done in editor area for the product attributes works fine in compare view but not in the "Show only different attributes view". Eg. Let's say ProductDescription is of type textArea in Editor area & compare view sections. But the same becomes text box in the Show only different attributes section. Please suggest how both views can be in synch. Is there any customized xml for configurations on show Only different attributes section Please do the needful.

Former Member
0 Kudos

Can anybody take it up as a challenge?

Former Member
0 Kudos

it's urgent please, can anyone..... do the needful

Former Member
0 Kudos

waiting for reply, can anyone....?

Former Member
0 Kudos

Hi Marshall, The same is getting displayed on retrieving the BlackListed products. Please let me know what needs to be done in BlackListed View.

Former Member
0 Kudos

Hi Marshall, any update on this please?. Waiting for your reply.....

Former Member
0 Kudos

Hi Marshall,

Sorry, the same button is displayed in "Last changes" & "Duplicated products" under "Queries" section. Please do the needful... :)

Former Member
0 Kudos

i Marshall, I have one more instance where the "Show only different Attributes" button being shown. Scenario: There is a customized section for visa, which will display the list of Visa content and descriptions. On trying to compare two visa content this button is being enabled. Please let me know which is the browser model that will listen on, so that I can change it accordingly to disable this button as previously done. It should not affect the existing changes whatever suggested. Please do the needful..... Waiting for your reply.

Former Member
0 Kudos

waiting for your reply please.

Former Member
0 Kudos

any update please?

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Anjaneya,

Do the following if you want to hide "Show only different attributes" button in Product cockpit's compare view

1, follow this guide to extend product cockpit https://wiki.hybris.com/display/release5/ycockpit+Template+-+Technical+Guide

2, Add following codes


public class MyCompareMainAreaBrowserComponent extends CompareMainAreaBrowserComponent
{
    public MyCompareMainAreaBrowserComponent(final AbstractAdvancedBrowserModel model, final AbstractContentBrowser contentBrowser)
    {
        super(model, contentBrowser);
    }
    @Override
    protected Div createToolbar()
    {
        final Div toolbar = new Div();
        toolbar.setSclass("compareToolbar");
        final Hbox toolbarBox = new Hbox();
        toolbarBox.setSclass("compareToolbarBox");
        toolbar.appendChild(toolbarBox);
        return toolbar;
    }
}


public class MyCompareMainAreaComponentFactory extends CompareMainAreaComponentFactory
{
    @Override
    public AbstractMainAreaBrowserComponent createInstance(final AdvancedBrowserModel model,
            final AbstractContentBrowser contentBrowser)
    {
        return new MyCompareMainAreaBrowserComponent((AbstractAdvancedBrowserModel) model, contentBrowser);
    }
}


public class MyDefaultProductSearchBrowserModel extends DefaultProductSearchBrowserModel
{
    private List viewModes = null;
    @Override
    public List getAvailableViewModes()
    {
        if (viewModes == null)
        {
            viewModes = new ArrayList();
            viewModes.add(new GridMainAreaComponentFactory());
            viewModes.add(new ListMainAreaComponentFactory());
            viewModes.add(new MyCompareMainAreaComponentFactory());
        }
        return viewModes;
    }
}
3, Finally set bean in the XXX-spring-services.xml
 <alias alias="DefaultProductSearchBrowserModel" name="myDefaultProductSearchBrowserModel" />
 <bean id="myDefaultProductSearchBrowserModel"
     class="org.customizedcompareview.session.impl.MyDefaultProductSearchBrowserModel"
     scope="prototype" parent="defaultDefaultProductSearchBrowserModel">
 </bean>

Answers (6)

Answers (6)

Former Member
0 Kudos

Hi Anjaneya,

Please add the following codes.

Former Member
0 Kudos

This works fine

Former Member
0 Kudos

Hi Anjaneya

Fix is as following. 1 new class

 public class MyProductNavigationArea extends NavigationArea
 {
     @Override
     public void setSelectedCatalogItems(final Collection<CatalogVersionModel> versions,
             final Collection<CategoryModel> categories, final boolean doubleClicked)
     {
         //This is only ugly hack in order to pass currently selected catalog versions
         UISessionUtils.getCurrentSession().setSelectedCatalogVersions(new ArrayList(versions));
         final BrowserModel b = getPerspective().getBrowserArea().getFocusedBrowser();
         if (b instanceof MyDefaultProductSearchBrowserModel)
         {
             final MyDefaultProductSearchBrowserModel prodSearchBrowser = (MyDefaultProductSearchBrowserModel) b;
             prodSearchBrowser
                     .setSelectedCatalogVersions((versions.isEmpty() && categories.isEmpty()) ? getProductCockpitCatalogService()
                             .getAllCatalogVersions(getSession().getUser()) : versions);
             prodSearchBrowser.setSelectedCategories(categories);
 
 
             fireCatalogItemSelectionChanged(doubleClicked);
         }
         else
         {
             final MyDefaultProductSearchBrowserModel prodSearchBrowser = new MyDefaultProductSearchBrowserModel();
             prodSearchBrowser
                     .setSelectedCatalogVersions((versions.isEmpty() && categories.isEmpty()) ? getProductCockpitCatalogService()
                             .getAllCatalogVersions(getSession().getUser()) : versions);
             prodSearchBrowser.setSelectedCategories(categories);
             prodSearchBrowser.setShowCreateButton(true);
 
             getPerspective().getBrowserArea().replaceBrowser(getPerspective().getBrowserArea().getFocusedBrowser(),
                     prodSearchBrowser);
             fireCatalogItemSelectionChanged(doubleClicked);
         }
     }
 }


2 new methods in MyDefaultProductSearchBrowserModel.java

     @Override
     protected void setSelectedCatalogVersions(final Collection<CatalogVersionModel> selectedCatalogVersions)
     {
         super.setSelectedCatalogVersions(selectedCatalogVersions);
     }
 
     @Override
     protected void setSelectedCategories(final Collection<CategoryModel> selectedCategories)
     {
         super.setSelectedCategories(selectedCategories);
     }

and new config

     <bean id="ProductNavigationArea" class="org.customizedcompareview.session.impl.MyProductNavigationArea" scope="session"
         parent="BaseNavigationArea">
         <!-- <property name="width" value="300px"/> -->
         <property name="sectionModel">
             <ref bean="ProductNavigationAreaModel" />
         </property>
         <property name="sections">
             <list>
                 <ref bean="ProductSpecialCollectionsSection" />
                 <ref bean="ProductCatalogSelectorSection" />
                 <ref bean="ProductQuerySection" />
                 <ref bean="ProductUndoSection" />
                 <ref bean="ProductWorkflowSection" />
             </list>
         </property>
         <property name="infoSlotAttachmentTypes">
             <ref bean="WorkflowAttachmentData" />
         </property>
     </bean>
Former Member
0 Kudos

Thanks Marshall, .......

Former Member
0 Kudos

Hi Marshall, I have one more instance where the "Show only different Attributes" button being shown. Scenario: There is a customized section for visa, which will display the list of Visa content and descriptions. On trying to compare two visa content this button is being enabled. Please let me know which is the browser model that will listen on, so that I can change it accordingly to disable this button as previously done. It should not affect the existing changes whatever suggested. Please do the needful..... Waiting for your reply.

Former Member
0 Kudos

PFA.... for reference

Former Member
0 Kudos

Hi Marshall, waiting for your reply please......

Former Member
0 Kudos

waiting for your reply please.

Former Member
0 Kudos

any update please?

Former Member
0 Kudos

Hi Marshall can you reply please....?

Former Member
0 Kudos

hi sorry for the late reply, please do the following

MyDynamicQueryBrowserModel.java
 public class MyDynamicQueryBrowserModel extends DynamicQueryBrowserModel
 {
     public List<MainAreaComponentFactory> getAvailableViewModes()
     {
         if (viewModes == null)
         {
             viewModes = new ArrayList<MainAreaComponentFactory>();
             viewModes.add(new GridMainAreaComponentFactory());
             viewModes.add(new ListMainAreaComponentFactory());
             viewModes.add(new MyCompareMainAreaComponentFactory());
         }
         return viewModes;
     }
 }

and add following part in MyDefaultProductPerspective.MyNavigationAreaListener

 public void dynamicQuerySelected()
            {
                final MyDynamicQueryBrowserModel dynamicQueryBrowser = new MyDynamicQueryBrowserModel();
                dynamicQueryBrowser.setDynamicQuery(getNavigationArea().getSelectedDynamicQuery().getQuery());
                dynamicQueryBrowser.updateItems();
                getBrowserArea().replaceBrowser(getBrowserArea().getFocusedBrowser(), dynamicQueryBrowser);
            }
Former Member
0 Kudos

Hi Marshall, Thank you very much for the reply. This works fine for the required sections. I have one more issue as, when I compare the products from "last changes" section and go back to the compare the products in any one of the catalogues, I still see the "Show only different attributes" button. I hope some view is being overriding the earlier changes. For the first time when I try to compare the products, in a catalogue this works fine. But the issue is when I go from "last changes" or "duplicated products" to products compare in catalogue. Please do the needful, rest all are fine.

Former Member
0 Kudos

Perfect solution

Former Member
0 Kudos

Hi Marshall,

Sorry, the same button is displayed in "Last changes" & "Duplicated products" under "Queries" section. Please do the needful... :)

Former Member
0 Kudos

Hi Marshall waiting for your reply please.....

Former Member
0 Kudos

finally figured that out. you need to add following codes.

 public class MyCollectionBrowserModel extends CollectionBrowserModel
 {
     @Override
     public List<MainAreaComponentFactory> getAvailableViewModes()
     {
         if (viewModes == null)
         {
             viewModes = new ArrayList<MainAreaComponentFactory>();
             viewModes.add(new GridMainAreaComponentFactory());
             viewModes.add(new MultiTypeListMainAreaComponentFactory());
             viewModes.add(new MyCompareMainAreaComponentFactory());
         }
         return viewModes;
     }
 }

and

 public class MyDefaultProductPerspective extends ProductPerspective
 {
     private final MyNavigationAreaListener navListener = new MyNavigationAreaListener(this);
 
     @Override
     protected NavigationAreaListener getNavigationAreaListener()
     {
         return this.navListener;
     }
 
     private class MyNavigationAreaListener extends DefaultNavigationAreaListener implements ProductNavigationAreaListener
     {
         public MyNavigationAreaListener(final BaseUICockpitPerspective perspective)
         {
             super(perspective);
         }
 
         @Override
         public void catalogItemSelectionChanged(final boolean doubleClicked)
         {
             if (getBrowserArea() != null)
             {
                 final BrowserModel browserModel = getBrowserArea().getFocusedBrowser();
                 if (browserModel instanceof SearchBrowserModel)
                 {
                     final SearchBrowserModel searchBrowser = (SearchBrowserModel) browserModel;
                     searchBrowser.setRootType(getTypeService().getObjectTemplate(ProductModel._TYPECODE));
                     searchBrowser.setSimpleQuery("");
                     getNavigationArea().update();
                     if (!CockpitBrowserAreaAutoSearchConfigurationUtil.isAutomaticSearchDisabled(Executions.getCurrent()))
                     {
                         searchBrowser.updateItems(0);
                     }
                 }
             }
         }
 
         @Override
         protected SearchBrowserModel getSearchBrowserModel()
         {
             final BrowserModelFactory factory = (BrowserModelFactory) SpringUtil.getBean(BrowserModelFactory.BEAN_ID);
             return (SearchBrowserModel) factory.createBrowserModel(ProductcockpitConstants.PRODUCT_SEARCH_BROWSER_MODEL);
         }
 
         @Override
         public void collectionSelected()
         {
             final CollectionBrowserModel collectionBrowserModel = new MyCollectionBrowserModel();
             if (getNavigationArea().getSelectedCollection().getObjectCollection() instanceof ObjectCollectionImpl)
             {
                 final CockpitObjectAbstractCollectionModel collectionModel = UISessionUtils.getCurrentSession().getModelService()
                         .get(getNavigationArea().getSelectedCollection().getObjectCollection().getPK());
                 ((ObjectCollectionImpl) getNavigationArea().getSelectedCollection().getObjectCollection()).setLabel(collectionModel
                         .getLabel());
             }
             collectionBrowserModel.setCollection(getNavigationArea().getSelectedCollection().getObjectCollection());
             getBrowserArea().replaceBrowser(getBrowserArea().getFocusedBrowser(), collectionBrowserModel);
 
             collectionBrowserModel.updateItems();
         }
 
         @Override
         public void collectionDoubleClicked()
         {
             final CollectionBrowserModel collectionBrowserModel = new MyCollectionBrowserModel();
 
             collectionBrowserModel.setCollection(getNavigationArea().getSelectedCollection().getObjectCollection());
             collectionBrowserModel.updateItems();
             getBrowserArea().show(collectionBrowserModel);
 
         }
     }
 }

add add new bean

 <alias name="MyDefaultProductPerspective" alias="ProductPerspective" />
 <bean id="MyDefaultProductPerspective" class="org.customizedcompareview.session.impl.MyDefaultProductPerspective" scope="session" parent="defaultProductPerspective" />
 






Former Member
0 Kudos

Thanks Marshall, It worked perfectly :). Big kudos to you.

Former Member
0 Kudos

The same button is displayed in "Last changes" & "Duplicated products" under "Queries" section. Please do the needful... :) waiting for your reply .................

Former Member
0 Kudos

Hi Marshall,

please do the needful, waiting for your reply.......

Former Member
0 Kudos

Heloooo please do the needful....

Former Member
0 Kudos

Checked source but looks like ootb configuration can't fix this.

Former Member
0 Kudos

is there any other alternate solution please?

Former Member
0 Kudos

is there any separate view xml in this case....?

Former Member
0 Kudos

no, in so far as i know, no any xml configuration in this case and looks like the customization is not supposed to be easy... I also don't think it deserves customization since wysiwyg editor is available in the default compare view and finding different attributes is not that hard.

Former Member
0 Kudos

Hi Marshall, can we provide any user access rights to this view so that all the attributes of a product must be read only for the specified user groups. or can we disable the button "Show only different attributes"? Please do the needful.

Former Member
0 Kudos

don't think access right can work easily in this case, maybe disabling the button is the most feasible way for your purpose.

Former Member
0 Kudos

Thanks for the response Marshall, how can the button be disabled? Please help me out.

Former Member
0 Kudos

how to hide the button please?

Former Member
0 Kudos

the customization takes some time, i'll let you know after i finish

Former Member
0 Kudos

Thanks Marshall, It's working thankyou..... 🙂 I already did in the same manner....

Former Member
0 Kudos

Hi Marshall, The same is getting displayed on retrieving the BlackListed products. Please let me know what needs to be done in BlackListed View.

Former Member
0 Kudos

Hi Marshall waiting for your reply please.....

Former Member
0 Kudos

Hi Marshall, please do the needful...

Former Member
0 Kudos

Hi Marshall,

please do the needful, waiting for your reply.......