$dashboardId = Tools::getSecureGETStringValue('dashboardId');
 if (!isset($_SESSION[PluginDataProviderInterface::SESSION_ID . $dashboardId])) {
     $logger->error("PluginDataProvider not set (dashboardId = {$dashboardId}");
     Tools::sendBadRequest("PluginDataProvider not set");
 }
 $pluginDataProvider = unserialize($_SESSION[PluginDataProviderInterface::SESSION_ID . $dashboardId]);
 if (FALSE == $pluginDataProvider) {
     $logger->error("PluginDataProvider unserialize error (dashboardId = {$dashboardId}");
     Tools::sendBadRequest("PluginDataProvider unserialize error");
 }
 $smartyHelper = new SmartyHelper();
 if ('getHelloWorldIndicator' == $action) {
     $startTimestamp = Tools::date2timestamp(Tools::getSecureGETStringValue("helloWorld_startdate"));
     // update dataProvider
     $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_START_TIMESTAMP, $startTimestamp);
     $indicator = new HelloWorldIndicator($pluginDataProvider);
     $indicator->execute();
     $data = $indicator->getSmartyVariablesForAjax();
     // construct the html table
     foreach ($data as $smartyKey => $smartyVariable) {
         $smartyHelper->assign($smartyKey, $smartyVariable);
         #$logger->debug("key $smartyKey = ".var_export($smartyVariable, true));
     }
     $html = $smartyHelper->fetch(HelloWorldIndicator::getSmartySubFilename());
     $data['helloWorld_htmlContent'] = $html;
     // return html & chart data
     $jsonData = json_encode($data);
     echo $jsonData;
 } else {
     Tools::sendNotFoundAccess();
 }
 /**
  * Initialize static variables
  * @static
  */
 public static function staticInit()
 {
     self::$logger = Logger::getLogger(__CLASS__);
     self::$domains = array(self::DOMAIN_COMMAND, self::DOMAIN_TEAM, self::DOMAIN_USER, self::DOMAIN_PROJECT, self::DOMAIN_COMMAND_SET, self::DOMAIN_SERVICE_CONTRACT, self::DOMAIN_ADMIN);
     self::$categories = array(self::CATEGORY_QUALITY);
 }