Hello everyone. This sprint we've focused on laying a lot of ground work. While this is not immediately visible, it enables to do start working on a lot of features.
As always, we've made a demo for you: try it here. Before trying it out, press 'Clear Cache' on the login screen.
We'll keep you updated regularly about Universal's progress.
Beta build
Like with every blog, we've released a beta build so you can test Universal out for yourself. Don't forget the documentation and be sure to keep the following in mind:
- Universal isn't actively tested on the internet browser Edge at the moment. Edge will be updated to use Chromium, which greatly changes the way it works under the hood. Once this is done, we will be testing on Edge too.
- Universal must be deployed on the same server as Indicium or it should be an allowed origin in appsettings.json.
- Universal only works with version 2019.1 and up of the Thinkwise Platform.
- Furthermore, make sure you run all hotfixes on the IAM and SF that you plan to use for Universal.
- Make sure you are on the latest version of Indicium Universal.
Tree (Attribute-based)
We've implemented the tree component. This version works for attribute-based trees, hierarchical trees (parent-child relations) will be implemented later. So what's the difference between the two?
An attribute tree creates a level in the tree per column. So if you have table with employees, and sort on the column department. You'd get a node for each department, with all the employees in that department below it.
A hierarchical tree creates a level for each relation. If you have the same table with employee, you'd group the data on manager_id
. You'd get a node for each manager, with all the employees they manage below it.
It looks like this:

The styling of the tree will be looked at next. Think icons, margins, conditional layouts etc.
Ground work
This sprint we've been working on a lot of ground work. Ground work is perhaps the most important part of implementing new features, but it unfortunately isn't very visible. We still didn't want to keep this from you so you'll know what to expect soon.
Cube chart
We're preparing to add cube charts. This sprint we've researched what information we'll need from the Thinkwise Platform and in what form to create charts. We also researched what components we might be able to use. We eventually came up with a shortlist and made Proof of Concepts for each.
Tiles menu
We've created the underlying architecture to be able to create tiles menu. We now have the definition of tiles menu's available and prepared the current menu for the upcoming change.
Tab navigation in the screen
We already have tab navigation on the root level of the screen, now we have the architecture to support any type of tab navigation. We have the structure of each tab available and store what each tab looks like. With this change we can start building any tab component, anywhere on the screen.
Details
When we encounter a detail in a tab page, we now show a button to open it in a new document. We created the underlying architecture and state to show the actual detail itself.
Unit tests
In the past three weeks we've added another 34
unit test cases to the components and inner workings of Universal. This brings us up to 1165
test cases in total.
Lots of minor fixes/tasks
Miscellaneous
- Added support for Thinkwise Platform 2020.1
- The correct hour is now shown when DateTime values have high millisecond precision
UI/UX
- Fixed radio buttons misalignment
- Changed the label for the dark mode toggle in the User Preferences menu
Technical
- Refactored all actions to be type-safe
What we'll be working on next sprint
We're working towards a version with all essential features. For next sprint this means building on the ground work we've laid in this sprint:
- Hierarchical tree component and styling the trees
- Figuring out how to fetch the data for cube views and loading the cube view definitions
- Showing details in the screen, rather than a button to open a new document
- Implementing all tabpages
- Creating a component that loads other web applications into Universal
- Testing and completing the work done on the wildcard day. More on this in the next blog