Hi, I am struggling to get a power table to display the on screen keyboard when the client is in touch mode. I have discovered that if i disable the extension function for isCellEditable, the on screen keyboard will display just fine, but as soon as the isCellEditable extension function is enabled I can no longer get the on screen keyboard to show.
Ignition version 8.1.24
Might want to involve support. Sounds like a bug, but they can look over your shoulder to see any non-obvious factors.
When I read this question yesterday, I experimented with ways to script the on screen keyboard visible from the onCellEdited extension function. While I was able to do this, I didn't find a way to do it that is acceptable. The words I would use to describe the user experience would be laggy and buggy with special emphasis on the word laggy.
...but this work was done blindly without any knowledge of what's being accomplished by your table. Are you certain that there isn't a problem with your onCellEdited script? If this is a bug, it could be some time before IA can fix it, and in the interim, you will need a work around. Do you want to explore moving the onCellEdited functionality somewhere else? Can you share the script? Can you share what qualifies a cell to be editable?
The most basic case worked fine for me.
I added a power table, set it up with test data. I went into the column attributes dataset and set the string column editable. Then I implemented onCellEdited
to update the value in the dataset and had isCellEditable
simply return true.
Then, clicking on the column I set editable (a string column) popped up a touchscreen keyboard and I was able to edit the value in the table.
As Phil said, there's a lot of possible variables here, but I don't think the core functionality is broken. There's special logic in the code so that the default table editor is aware of touchscreen mode.
It seems the issue was due to not having the "editable" property for column attributes set. I was under the impression that setting that to true would make the cell editable under all conditions, where using the isCellEditable function would set that parameter conditionally. It was my misunderstanding that the isCellEditable function is on a cell by cell basis. I didn't want to check the editable property because I assumed that would make the entire column editable where I am working to determine editability on a row by row basis.
More annoyingly, my table has a dynamic number of columns. Specifically I am querying SQL to build a table which will return data for every day of a selected month where each column is a day. So some months will have 30 or 31 (or 28). Luckily, I was able to put the designer in preview mode to select a month with 31 days, exit preview mode, then go in to the table customizer and change all columns to editable. My isCellEditable script is used to determine if logged in users have the appropriate user roles to edit specific rows of the table. This still works even when all columns are set to editable.
So, my issue is resolved! The main thing to note from this post is that checking the editable property does not necessarily make the entire column editable if there is a further script determining if a cell is editable. More so, the editable property is a requirement in order for the on screen keyboard to display when in touch mode, however you can choose to not check the editable property and cells can still be editable via a traditional keyboard when only using the isCellEditable extension function to determine editability.