Choose Language Hide Translation Bar

Mastering the Art of Scripting Seamless JMP-Like User Interfaces with Structured JSL

I create a lot of user-interfaces using JSL, some simple and some much more complicated, but most do follow similar principles: the scripts use similar templates, they have similar layout on the launcher, reports look similar, etc.

In this presentation, I show how I use JSL to script JMP-like user interfaces, which type of templates I tend to use, and the decisions I make while developing such platforms. I also demonstrate different display boxes, how to create a user interface with JSL, script templates, the decision process I use when scripting user interfaces, and some tips and best practices for JMP scripting.

 

Welcome to my poster presentation regarding building user interfaces using structured JSL. A little bit background. I'm working for more of electronics in Finland and data integration and data science specialist in data integration team. One of my jobs is to create custom JMP applications, and how I create them, or rather how I structure my content in those, is topic for this poster. This was originally supposed to be a paper, so I had to go through it very quickly, but it should be fine.

Let's get started here. I think most important thing in this poster is that you should try to mimic JMP platforms. A reason for this is that users are all very familiar with them. If you can organize your content in similar manner as JMP does, it's much faster for them to start using your tools.

Here, we have a one example of JMP platform. In this case, it's a distribution as it's very simple one. On the left side, we have the launcher and the right side of the report. On the launcher and also in the report, we had icon of window title, JMP organizes content in panel boxes. On the left side, you generate column selectors in filter column selector. Below that, sometimes you have these extra options.

On the middle, you have these buttons. Next two buttons, you have column list boxes, where user can collect the columns they want to analyze or perform actions with. This out-of-box name also tells you what these columns are used for. On the right side, you have the action buttons.

In the reports, the structure is commonly very vertical. In this case, I have statutes as it's easier to see my opinion. Content is in a parent-child structure, a hierarchy structure, and it has been built common with outline boxes with these red triangles. We're trying this type of structure because users can launch architecture and analyzes from this red triangle things here. You have some organization with the content, craft boxes, table boxes, and so on. But this type of structures, users are familiar with,JMP users.

When you are thinking about your tool and your users, think how they will use your tool. For this, you can use storyboards, for example. It doesn't have to look like this diagram here. You can have it in a comic type format if you want. We also has this type of view first, then they click something and next view and so on.

When you are building this, it's helpful to think how JMP platform would work because then back to the familiarity. I won't go through this. This is just an example how it could be done.

Few mockup examples. Quick demonstration or first initial design you could have for your interface. Here, I have very simple paper version. I like to start with this. They're very quick to modify, update if needed, and then you can recreate one, if there's something wrong with this. I usually quickly go to some JMP person. This is very simplistic one, but I can try it out. This works, and this doesn't, and modify, if needed. I can maybe use my template to make a bit more cleaner one to see how it would look in reality.

Next mockup. Similar area, start with paper, then I have used a separate tool. In this case, this is called Excalidraw. Make a mockup. I could have additional notes here and so on and a bit more advanced JMP prototype, demonstration. This is already from the prototype application, but you could do this in part.

Have data filter, then it has some graph builder. This can be totally separate. It has some images from somewhere. If you have just configured this layout, take those images, move them to separate tooling. I will use most likely PowerPoint. It's easy to move them around there. You can structure it there, and then get a better overview what the user interface could look like.

Next, consider having templates and don't forget about user experience. I do have my own templates as scripting style. Why I have these and why I use them is to create apps faster. These are more robust, and they tend to look more professional. One additional note here is I do not design my user interfaces for any larger resolution or rather any smaller than full HD as most users are still using that for larger resolutions.

The user experience. As JMP is very interactive tool, I think it's also important to consider user experience. Not just that interface you have. I have a few examples of bad user experience here. One is model windows. For example, for platform LAN sharing, it's a model window, user cannot go back to the data table and observe which columns they should use. They will first have to close your launcher, close the table, then rerun your launcher again. That's, in my view, a bad experience.

Another one is the windows tend to resize if you have collapsible outline boxes and so on. I try to have static window sizes after the window has been initially created, and then a scroll box is to move around. Last thing here is that they do not hide toolbars and menus from user, because in JMP, you can launch separate platforms. You can have a platform open. Go to your toolbar menu and launch the next platform, which that makes doing analysis much faster.

Comparing my platforms and JMP platforms. On top side, we have JMP platforms. In this case, it's a narrow platform and on bottom line. Quite similar looking here. Left side column selectors and then common listings where user adds them, actions on right side. I think the biggest difference here from the launcher, in this case, is that I have this table name, which is currently being analyzed. In maneuver platforms, I might have the application name also visible, not in this case.

But there I have bigger differences than our reports. I don't have out my boxes, because I already have basically all the options defined for the user. They don't need to access the red triangle menus. In JMP platforms, you want access those. I can use that page boxes and sheet boxes.

I think even the bigger thing is that I can… I do organize my content in horizontal because we have wider screens, and they are tall. Quite a few JMP platforms tend to go very long. I like to make wider because they are small, more estate that way. Also, here, the table is also visible here and application name.

One example application I have here. We're going to have two examples, but I've gone through a little bit. This is basically that script user would run to run my application. I have separated different parts of the script with all, then own responsibilities. Configuration, utilities, and user interface are in their own script for us easier to manage in this way in my opinion.

Then the script. This main script has a initial text if their table open, if the window is already open, and if everything, all of these paths, then the application is running. Depending a little bit on the check, I might throw a model window error to user. For example, if the window is already open, it's not a modal window, I will just bring the application to front, so a user can continue working with that.

Here below is basically the main window after the application has been run. This creates the application window. These have been also separated here into separate expressions. Much easier to manage smaller expressions outside this new window than having very long, it could be hundreds of lines of new window. Difficult to manage usually. These are easier to handle.

Sometimes you might have to do some evaluation and many abilities, but generally, I think this is better. You can find this example from community and a few extra examples from presentation I did in a Finnish user group in 2023.

Some quick summary for this poster. Do mimic JMP platform launches and reports as users are already familiar with them. It's faster for them to get used to your tool. Consider how your user will use your application. Build storyboards, and create mockups to quickly to see how it could look like. Add some template. You can create robust and professional looping application. Get familiar with the most common display boxes and how to organize content in JSL.

As JMP is very interactive tool, do not forget about the user experience because JMP interactive is very important. Consider user experience and that user interface. Thank you.