I have been wanting to get my hands on Google’s Flutter framework ever since their release 2 years ago but i waited out until I know the framework is mature enough. Or maybe it was just my lazy ass that took 2 years to actually commit on this.
Anyway, i finally got my chance to play around with it and decided that for my first app, it would be a good entry level challenge to create a mobile version of M3’s api tester or as we call it, MITest. If i think now, i would say that the most challenging part for me was not learning new programming language (Dart) and framework (Flutter), but the User Interface and User Experience of the application. I was not blessed with these skills so I had to put extra work for this part during the development. I remember I spent 4 hours just trying to figure out how to create a hexagon in Figma O_o.
list and grid refers to exactly the same thing: The list of records shown in an M3 B-Panel program.
By default if you update a value in the list programmatically, it will not automatically reflect on the view. You need to refresh the grid so that it will update what is being shown on the screen. In H5’s Script Developer’s Guide, specifically the sample script for Custom column, the way to refresh the list is by executing these codes:
let columns = list.getColumns();
Sure it gets what it needs to be done, but i think this is not the optimal way to do it.
Custom list is a really useful tool in M3 extensibilities. It allows us to create views and apis that would not be possible with just MDBREADMI. We can get multiple data from different tables in single view by utilizing the Related table feature. The filter and selection fields gives us a lot of flexibility on how to retrieve specific set of data. We can also create are own sorting options and subsequently change the filter options we can use. You can also utilize Enterprise search should you want to.
But from time to time there are requirements, that even with all this capabilities, would be really difficult to pull off. Here are some features that I wish exist in H5’s Custom list.
Widgets are small applications that lives inside Infor Ming.le Homepages. Essentially a “homepage” is a collection of one or more widgets. You can find official guidelines here on working with widgets.
The latest widget sdk version can be found here. As of this writing, the version is 1.0.32.
This one may be too simple if the question was asked to the people responsible for the code of H5 client. But as for me who is but a user of H5 I had to dig in to their minified source codes to figure out how to disable a row on a list panel.
So I start by debugging inforDataGrid‘s code to see how disabling a row is currently done. I was looking for a flag or property that is needed to be set. In my mind it should be easy to locate the correct line of code to find this since after all, inforDataGrid should hold all the things involving list panels in H5. After hours of editing grid’s column and row properties to match the code’s expectation, I was still unsuccessful in disabling a row.
Whenever I want to do a quick check on how to implement a specific requirement in H5 scripting, I just use the browser’s (non-internet explorer) console to play around and explore the functionalities. By opening the browser’s Developer Tools we can start exploring structure of H5 client’s code and give as an idea on the functionalities we can use.
Two years ago I had a requirement to make a field in CRS624/G browsable via H5 scripting. I managed to achieve this by using an external tool called jsGrid(http://js-grid.com/).
Then about a week ago, i learned from a colleague that the script I created was adopted and used by other consultants, being implemented on other environments. It got me to thinking in revisiting my code see if there is anything in there that can be improved.
Following entry was created for old versions of H5 where MIService is not yet available
In our previous post, we saw how we can execute MI transaction in H5 using the MIUtiltool utility tool we created. In this post we will be expanding on this tool to include a helper in retrieving output fields on the executed transaction.
Let’s look back on the transaction we’ve executed
let miTrans = new MIUtilTool.Transact("CRS530MI");
miTrans.execute("LstEmployee", this.onSuccess, this.onFail);