Disable editable field in H5 list

If you will need to disable a column in an H5 list, you can do this easily by removing the formatter property that is set on the column you would like to be read-only.

You can use getColumns() to get all the columns in the grid. Then loop through these and set the formatter property of the column you would like to update to null. What’s great about this is that you need not worry about when scrolling down and new records were added. These should apply to new rows as well.

Read More »

MITest for Android

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.

Read More »

Refreshing H5 list properly

list and grid refers to exactly the same thing: The list of records shown in an M3 B-Panel program.

H5’s list are built using the SlickGrid.js. It is an open source javascript-based grid framework. If you want to achieve something in relation to a list of an M3 program and no wrapper code is available in H5 scripting, you can rely to SlickGrid‘s documentation. One of this is how to refresh the list when you update a value.

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.

Read More »

Features I wish Custom Lists have

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.

Read More »

Disabling a row in H5

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.

Read More »

M3 Browsable Fields Via H5 Scripting

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.

Read More »