Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Info

To kick off your experience, we highly recommend diving into our Quick Start application. The Gantt widget, by its nature, involves quite a bit of setup but with our quick start you can get started within minuted (link).

Minimal configuration

...

We highly recommend getting started from the quick start application (link). Here the domain model is already configured. You can copy this to modify it to your needs.

Info

A note on ID’s. The quickstart application uses Autonumbers for Id's but you can use a other attribute types as well. This might be preferable if you plan to import and export data for example.

Gantt context

First, we need to create a context object for the Gantt widget. Below are the minimum attributes required in most situations.

...

When creating a context entity TaskId, ResourceId, TaskParentId, TaskName, SyncRequest and SyncResponse are required. Make sure the SyncRequest and SyncResponse attributes are set to unlimited.

Make sure the widget is in a dataview that contains a context object with these attributes.

Tasks

...

Define the datasource for you tasks and set appropriate edit rights. Please note that disabling edit/reorder rights here will only disable the widget interaction. Real validation should always be done server side.

Task settings

Edit rights can also be specified on a task level under task settings (e.g. by an expression with the task as input). But they can also simply be set to true or false. Global task edit rights will have precedence over these specific deletable, movable and resizable rights that can be set on a task level.

Info

Please not that you will need to refresh the task entity to update any changes made in Mendix to the deletable, moveable and resizable properties. It’s good practice to refresh the entity only when needed. Especially when dealing with large amounts of data.

Task Styling

Use this expression to set global or conditional CSS classes to style your tasks.

Task mapping

...

In the mapping tab you need to map the right attributes of your task entity to the widget.

Dependencies

...

For optimal performance it’s recommended to use an from and to id attribute on the dependency object it self however this is not required.

Synchronisation

...

A Gantt widget is a complex component. One change can trigger a scala of updates. Furthermore You might want to rollback a change based on several factors. To allow this kind of behavior and to get around some of the Mendix pluggable widget API limitations the Gantt widget employs a custom sync. This has various implications. For one you do not need to refresh the entire list of objects just to refresh a single value in that list (which is the case for other Mendix widgets). As you can imagine, this greatly improves performance for large datasets. It might however take some getting used to so we recommend you take a look at our quick start application to see this in action.

License

To try out the Gantt widget locally on your pc or even in a Mendix sandbox environment doesn’t require a license. However, a production build will.

It is also not required to have a license when the app is in production and the Gantt widget is not used on any pages. You can simply supply an empty variable or constant, etc. in this case.

...

chat-demo.mp4

Getting started

Utilizing the chat functionality is an out-of-the-box experience, with a few requirements to begin.

  1. Start by downloading the module from the Marketplace.

  2. Then, download the dependencies as mentioned in the 'Dependencies' section.

  3. Add the 'ASU_Websockets' microflow to your main application after startup microflow (from the Bizzomate websockets module).

  4. Place Snippet “SNIP_BizzomateWebsockets“ from Bizzomate websockets in your main layout (it should be in the layout of every page that needs chat).

  5. Configure the security settings as per your requirements.

  6. Finally, add the snippet 'SNIP_Chat_And_Channel' to your desired page, and you're all set to go!

  7. (Optional) if you want to create a single chat see the examples folder on how to create a new chat progmatically

    image-20240510-082644.pngImage Added

Dependencies

  • Bizzomate websockets

Optional dependencies

  • Encryption

    • Only required when encryption is enabled. Encryption actions can be removed otherwise.

  • Icons collection Atlas and Atlas_Filled (will be in your project by default if you have Atlas_Core)

    • Can be replaced with your own icons in the snippets

Module roles suggestions

Bizzomate websockets

Make sure every userrole that uses chat has a “user” userrole in BizzomateWebsockets

User

The module offers various module roles that can be assigned to user roles according to your preferences. To be able to chat you’ll need the user role: ReadWrite_OwnChats. From there you can add additional privilages as needed:

  • Actions_CreateNewChats

  • Actions_DeleteOwnChats

  • Actions_WriteOwnAvatar

  • Actions_WriteOwnUsername

Administrator

There are also some admin privilages:

  • Read_AllMessages - Like the name implies, you’ll be able to read all messages of all users

  • Read(Write)_AllOtherData - This is all non message data. It’s a useful for admins to allow them to read and write data that is not AVG sensitive.

  • Config - Useful for Administrators (e.g. manage scheduled events)

...

License

Experimenting with the Chat widget locally on your PC or within a Mendix sandbox environment doesn't require a license. However, a license is required for a production build.

Additionally, a license is unnecessary when the app is in production but the Chat widget isn't utilized on any pages. In such instances, you can merely provide an empty variable or constant.

...

Regarding multi instance apps

At present, our chat component does not support multi-instance applications. This limitation arises from the nature of WebSockets, which are inherently stateful, while multi-instance applications necessitate a stateless server environment. Currently, the Mendix platform does not offer any workarounds to address this incompatibility.

Additionally, our widget relies on "Mendix widget" placeholders that allow Mendix widgets to be embedded within elements like message content. Unfortunately, this feature is not supported by the REST API, further complicating potential solutions.

We are investigating potential solutions and workarounds to support multi-instance applications in the future.