Menu

Custom dashboards – limitations and problems

eric24V
2023-11-24
2023-11-29
  • eric24V

    eric24V - 2023-11-24

    Hello,

    I wrote an extension which contains several new menu entries which lead to custom dashboards with the following aims in mind:

    • to automatically provide identical dashboards to my colleagues, no need for them to do any manual import of dashboards or creation of shortcuts
    • no need for my colleagues to do any further modifications like configuring lists of object list dashlets
    • dashboards shall be exactly tailored to our needs and processes

    Therefore, I’d highly appreciate to have the following new features:
    The ability to predefine individually per object list dashlet, independent of the class’s default definition:

    • the selection of columns
    • the order of columns
    • the sorting
    • the sorting by several columns (e.g. 1. organization ascending, 2. status descending and so on)

    In my opinion, the usability of custom dashboards highly depends on a preselection of relevant information to be effective in daily use. To give two examples:
    A dashlet for listing devices for lending (e.g. some notebooks) needs a very different selection and sorting of columns than users expect when they look for all PCs under configuration management > overview > end user devices > pc.
    A dashlet showing a selection of DocumentNote to present a kind of Wiki / knowledge base needs other columns and sorting than a list of special forms / notes for a certain purpose like e.g. weekly meeting reports.

    When creating an object list dashlet and a badge with filter dashlet, based on the following OQL, I came across some problems (v3.0.2).

    SELECT DocumentNote, CMDBChangeOp FROM CMDBChangeOp
    JOIN CMDBChange ON CMDBChangeOp.change = CMDBChange.id
    JOIN DocumentNote ON CMDBChangeOp.objkey = DocumentNote.id
    JOIN User ON CMDBChange.user_id = User.id
    JOIN Person ON User.contactid = Person.id
    WHERE CMDBChangeOp.finalclass="CMDBChangeOpCreate" AND User.contactid = :current_contact_id AND DocumentNote.documenttype_name != "Wiki"
    
    • From class CMDBChangeOp I only want to see column “date” but column “Change Operation (Link)” cannot be unselected.
    • In menu “list configuration” I can’t sort by column “date” of class CMDBChangeOp. It’s not applied when I click ok. When I sort by date in the table header of the dashlet it does sort by date but the setting can’t be saved.
    • As soon as a modification via “configure this list…” is done, the names of some columns change to the names of their class or their alias in OQL. E.g. “Change-Operation” changes to “CMDBChangeOp” or “co”. The names switch back after reloading the page.
    • When I click on a “badge with filter” dashlet the search filter is prefilled with “Document type name contains Wiki” but the OQL says not equals (!=) “Wiki”.
     

    Last edit: eric24V 2023-11-24
  • Vincent @ Combodo

    Thanks Eric, for those feedback. We know that the dashlets can be improve. I take note of the information that you would like to add to the dashlet list XML definition:

    the selection of columns
    the order of columns
    the sorting
    the sorting by several columns (e.g. 1. organization ascending, 2. status descending and so on)
    

    I also take not of some bugs in the "configure this list" feature
    * N°5815 - Configure this list : allow to remove friendlyname column = “Change Operation (Link)” in your example
    * N°3033 - Add capability to sort on several attributes on a list

    I cannot reply about the "badge with filter" dashlet, as this is not a Combodo dashlet

     
  • Jeffrey Bostoen

    Jeffrey Bostoen - 2023-11-24

    You could also look into the Report Generator concept -> https://github.com/jbostoen/itop-jb-report-generator . You'd still need to create the reports once, manually.

     
  • eric24V

    eric24V - 2023-11-29

    Thank you, Vincent, for taking note of my hints.

    The issue with the filter menu showing “Document type name contains” whereas the OQL says not equals (!=) also appears in an OQLMenuNode based on the given query. I assume the basic problem is that OQL allows to create some conditions that can’t be done with the filter buttons of object lists.
    I found that splitting the OQL into several queries, one per condition, and uniting them with “UNION” command results in a filter that instead of trying to represent the OQLs conditions is not prefilled and let’s you filter inside of the result set given by the OQL which is my desired behavior in this case:

    SELECT DocumentNote
    WHERE documenttype_name != "Wiki"
    UNION
    SELECT DocumentNote
    WHERE ISNULL(documenttype_name)
    

    Another little something I came across concerning object lists is that the plus icon to create objects disappears from the menu when the source oql selects more than one class. A possibility to define the desired class to create could help.

    Later I wanted to add not only the creator but the date of last modification to the OQL. As there are multiple modifications per object the OQL gives many undesired lines that I can’t filter out with something like sql rownumber command. The approach of writing an extension and adding “creator” and “modificationdate” field to the class as described here
    https://www.itophub.io/wiki/page?id=3_1_0:customization:tracking-creator
    solved the problem. I attached the code, which is hopefully correct. Maybe it’s helpful for someone.

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.