Hi Isomorphic,
please see this modified builtinds sample:
animals.ds.xml:
It seems, that escapeHTML in the ds.xml for the field "information" is not applied, or something other weird happens.
To reproduce the issue:
1. Start the sample, and go to the Developer Console.
2. Go to the DataSources tab.
3. select "animals"
4. click "Add Record"
5.set:
Animal = newAnimal/or something else
Scientific Name = newAnimal
Life Span = 50/or something else
Endangered Status = Threatened/or something else
Diet= 34/or something else
Interesting Facts = <yxc<yc<c bfbvfb rvvbb bf <-- this value is the important one
6. safe the record
7. reload the page
8. Now You can see, that the Grid draws and expands the detail field "information" but nothing is inside. I would expect that "<yxc<yc<c bfbvfb rvvbb bf" is shown there.
9. If You click now on "Show Print Preview" the Print Preview Window opens as expected, but still no value in the detail field.
10. Now the weird thing: Right Click on the detail field and chose "inspect".
11. In the DevTools (I'm using Google Chrome) in the "Elements" Tab you see the following if you expand the div with the style class "gridHover"
So I dont know whats going on under the hood there, but this seems wrong to me.
I think its something related to the hover and for that I could think about, applying a HoverCustomizer and override the hoverHTML method, BUT the method "setDetailField" on the ListGrid level allows only a String as parameter, so I have no chance to apply the HoverCustomizer. I could maybe configure the field and add it as hidden field then to the ListGrid. But that seems redundant and not wanted to me. So please have a look at this.
SmartClient Version: v12.0p_2019-08-18/PowerEdition Deployment (built 2019-08-18)
Tested Browsers:
Kind Regards
please see this modified builtinds sample:
Code:
package com.smartgwt.sample.client; import java.util.ArrayList; import java.util.List; import com.google.gwt.core.client.EntryPoint; import com.smartgwt.client.core.KeyIdentifier; import com.smartgwt.client.data.Criteria; import com.smartgwt.client.data.DSCallback; import com.smartgwt.client.data.DSRequest; import com.smartgwt.client.data.DSResponse; import com.smartgwt.client.data.DataSource; import com.smartgwt.client.types.ExpansionMode; import com.smartgwt.client.util.Page; import com.smartgwt.client.util.PageKeyHandler; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.IButton; import com.smartgwt.client.widgets.Window; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; /** * Entry point classes define <code>onModuleLoad()</code>. */ public class BuiltInDS implements EntryPoint { /** * This is the entry point method. */ public void onModuleLoad() { KeyIdentifier debugKey = new KeyIdentifier(); debugKey.setCtrlKey(true); debugKey.setKeyName("D"); Page.registerKey(debugKey, new PageKeyHandler() { public void execute(String keyName) { SC.showConsole(); } }); ListGrid animalsList = new ListGrid(); animalsList.setDataSource(DataSource.get("animals")); animalsList.setWidth(500); animalsList.setHeight(350); animalsList.setAlternateRecordStyles(true); animalsList.setCanExpandRecords(true); animalsList.setAutoFetchData(false); animalsList.setExpansionMode(ExpansionMode.DETAIL_FIELD); animalsList.setDetailField("information"); ListGridField nameField = new ListGridField("scientificName"); ListGridField dietField = new ListGridField("diet"); ListGridField commonNameField = new ListGridField("commonName"); animalsList.setFields(nameField, dietField, commonNameField); animalsList.fetchData(new Criteria("scientificName", "newAnimal"), new DSCallback() { @Override public void execute(DSResponse dsResponse, Object data, DSRequest dsRequest) { // TODO Auto-generated method stub animalsList.expandRecords(animalsList.getRecords()); } }); final VLayout mainLayout = new VLayout(); mainLayout.setMembersMargin(5); IButton buttonPreview = new IButton(); buttonPreview.setWidth(150); buttonPreview.setTitle("Show Print Preview"); buttonPreview.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { final Window printProperties = new Window() { { setIsModal(true); setWidth("50%"); setAutoCenter(true); } }; Canvas.showPrintPreview(new Object[] { mainLayout }, null, null, null, printProperties, null); } }); HLayout hLayout = new HLayout(); hLayout.setMembersMargin(5); hLayout.setMembers(buttonPdf, buttonPreview); mainLayout.addMembers(animalsList, hLayout); mainLayout.draw(); } }
Code:
<DataSource ID="animals" serverType="sql" tableName="animals" testFileName="animals.data.xml" > <fields> <field name="commonName" title="Animal" type="text"/> <field name="scientificName" title="Scientific Name" type="text" primaryKey="true" required="true"/> <field name="lifeSpan" title="Life Span" type="integer"/> <field name="status" title="Endangered Status" type="text"> <valueMap> <value>Threatened</value> <value>Endangered</value> <value>Not Endangered</value> <value>Not currently listed</value> <value>May become threatened</value> <value>Protected</value> </valueMap> </field> <field name="diet" title="Diet" type="text"/> <field name="information" title="Interesting Facts" type="text" length="1000" escapeHTML="true"/> <field name="picture" title="Picture" type="image" detail="true" imageURLPrefix="/isomorphic/system/reference/inlineExamples/tiles/images/"/> </fields> </DataSource>
To reproduce the issue:
1. Start the sample, and go to the Developer Console.
2. Go to the DataSources tab.
3. select "animals"
4. click "Add Record"
5.set:
Animal = newAnimal/or something else
Scientific Name = newAnimal
Life Span = 50/or something else
Endangered Status = Threatened/or something else
Diet= 34/or something else
Interesting Facts = <yxc<yc<c bfbvfb rvvbb bf <-- this value is the important one
6. safe the record
7. reload the page
8. Now You can see, that the Grid draws and expands the detail field "information" but nothing is inside. I would expect that "<yxc<yc<c bfbvfb rvvbb bf" is shown there.
9. If You click now on "Show Print Preview" the Print Preview Window opens as expected, but still no value in the detail field.
10. Now the weird thing: Right Click on the detail field and chose "inspect".
11. In the DevTools (I'm using Google Chrome) in the "Elements" Tab you see the following if you expand the div with the style class "gridHover"
So I dont know whats going on under the hood there, but this seems wrong to me.
I think its something related to the hover and for that I could think about, applying a HoverCustomizer and override the hoverHTML method, BUT the method "setDetailField" on the ListGrid level allows only a String as parameter, so I have no chance to apply the HoverCustomizer. I could maybe configure the field and add it as hidden field then to the ListGrid. But that seems redundant and not wanted to me. So please have a look at this.
SmartClient Version: v12.0p_2019-08-18/PowerEdition Deployment (built 2019-08-18)
Tested Browsers:
- Google Chrome 76.0.3809.100
- Firefox Quantum 68.0.1
Kind Regards
Comment