[Bug-13855]Perspective Layout bug in Chrome

My gateway is running the 8.01 stable build.

I am loading 3 embedded views inside a flex frame. Each view has a table inside it that is populated by a SQL Query.

The tables load properly on Edge and Firefox. They look like this on Chrome.

I have another screen that has a table on it where I am dynamically loading data into the table with a python script (historic tag data source) and it’s working fine in Chrome.

The tables that are laying out funny are populated by a stored procedure call form MS SQL Server. I’m not sure if that impacts how it displays but it seems that it wouldn’t. I suspect it has to do with populating a table control that lives inside an embedded view.

The datetime Input control also crashes the perspective session if you click it from Chrome. Basically, you click, nothing happens, time passes and then it tells you it crashed and asks if you want to reload the page.

It works on Firefox and Edge.

What version of Chrome are you using? We test on Chrome (primarily, even) and I don’t think we’ve encountered any of those issues.

Version 74.0.3729.131 (Official Build) (64-bit)

I can provide server access in pm if that is helpful. It’s a pilot project.

I’m using Chrome 74 right now and looking into the DateTime Input issue, but I don’t see any issue. Could you provide the view.json file for the View in question?

I’ll PM you the details. Some customer stuff present in the data.

Definitely a bug. it looks like setting a property on the Table should work for a workaround for now.

In Table.props.style, add a new property value: display, and give it a value of flex. That should get you working in the short-term while we determine a fix.

1 Like

I just found what I think is another reproducible bug in the DateTime Input control.

The customer wanted it to prevent them from entering a date in the future. I put this property change script that simply sets the date back to current date if they enter a future date.

if currentValue > system.date.toMillis(system.date.now()):
	self.props.value = system.date.toMillis(system.date.now())	

currentValue does not appear to be the last entered value. Maybe I misunderstand what the property is supposed to be. If you put that script on a valueChanged event it just runs away with a property update loop.

This script worked.
if self.props.value > system.date.toMillis(system.date.now()):
self.props.value = system.date.toMillis(system.date.now())

Anyway, wanted to pass that on in case it’s related to the crash when I click on the control. I was actually seeing this run away on more than just Chrome so it could be completely unrelated.

Did you try logging currentValue to see what you were getting? If it’s a qualified value, then I would expect a QualifiedValue object to always be greater than some time value.

I don’t know python so I am muddling my way through it. how do I write a value to the log?

logger = system.util.getLogger('DESIREDLOCALIZEDLOGNAME')
logger.info('New value: {0}'.format(currentValue))

BUT… this will usually coerce the value, so you’ll end up seeing currentValue.value in the log.
If you supply the previous logging, but attempt to log str(type(currentValue)), you’l see that it is indeed a BasicQualifiedValue.

TLDR; instead of currentValue, use currentValue.value.

Oh crap… I remember that from training. yeah, I know what you’re talking about. I was doing it wrong. That was a few years ago and I haven’t had to use it in a while. Sorry to waste your time.

It’s never a waste.

I can confirm the issue with tables only displaying the header in Chrome 74 using build 8.0.1.
The display: flex property doesn’t fix the issue for me.

When I change the height property here to anything other than 0px, it actually shows the row data.

Yes, we already opened a bug for it.