Dashboard Charting Message: "This chart contains no data"

jherbin
edited February 11, 2022 in Analytics #1
Whats the recommended way to debug the error message, "This chart contains no data"?

In my local Designer, I can preview the dataset values, place them into a table and chart. However, when I try to use that dataset as the source for a chart gadget, I get the "This chart contains no data" error.

Some details about the dataset:
DataSource : Scripted DataSource
Implemented plugin to provide methods for the script to access the data.
Implemented open, and fetch methods of dataset to provide data.

Obviously, there are a few places the problem could live. However, with a message like "This chart contains no data", its tough to determine where the problem is at.

Thanks!
James

Comments

  • rmurphy
    edited December 31, 1969 #2
    The message you are seeing is intended to be a user facing message. The quickest approach in this situation is to implement logging in your plugin and/or your script. I usually just use standard Java IO to write to a file as I'm developing something.

    Rob
  • jherbin
    edited December 31, 1969 #3
    Ok. I will try this approach. Are there properties of the iServer that I need to consider when writing my logging?
  • rmurphy
    edited December 31, 1969 #4
    No, not really. Just make sure the iServer process owner has permission to write to the file location.

    You can implement more robust logging similar to how iServer logs, but for a quick way to figure out what is going on, this is quick and easy.

    I just added a logging framework to the DevShare that I use in these types of situations. You won't use it in the plugin, but it should work in the script.

    http://www.birt-exchange.org/org/devshare/designing-birt-reports/1588-simple-logging-framework/
  • jherbin
    edited December 31, 1969 #5
    I was able to get the logging framework you posted to work in a rpt design.

    How would this translate to data designs that are used in a dashboard?
  • rmurphy
    edited December 31, 1969 #6
    Instead of onPrepare, use the data set's before open. Then close the log in the afterClose. You should still be able to call log() in expressions and scripts.
  • jherbin
    edited December 31, 1969 #7
    Ok. Thank you very much. This has been very helpful. I've been able to get logging and I learned that the iServer is not loading the plugin that provides the methods that the scripted data source calls. Since the scripted data source can't execute the method to get its data, the fetch method is returning null and the gadget are not getting any data.

    now the question becomes....where do I need to place my plugin?

    I've place the plugin jar into these directories on the iServer:

    /opt/app/actuate/AcServer/MyClasses/
    /opt/app/actuate/AcServer/MyClasses/eclipse/plugins/
    /opt/app/actuate/AcServer/acshare/MyClasses/
    /opt/app/actuate/AcServer/jar/BIRT/platform/plugins/
    /opt/app/actuate/AcServer/oda/eclipse/plugins/

    Is this correct?
  • rmurphy
    edited December 31, 1969 #8
    It should be the /AcServer/MyClasses/eclipse/plugins/ directory. Make sure your plugin is not a newer version that used by the iServer. Al make sure all your dependent plugins are defined and you aren't dependent on a different version.