2016-09-06 74 views
0

我已经创建了此用户界面宏(仍在开发中),并将其包含在用户界面页面中,并且没有任何问题;但是,当我尝试通过PA仪表板将UI宏包含到动态内容块中时,它不会呈现任何内容?ServiceNow动态内容块问题

完整代码宏(试试看):

<?xml version="1.0" encoding="utf-8" ?> 
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null"> 

<script language="javascript" src="/scripts/prototype-adapter.jsx" /> 
<script language="javascript" src="/scripts/GlideV2ChartingIncludes.jsx" /> 
    <g:evaluate> 
    var time = []; 
    var newIncidents = []; 
    var resIncidents = []; 
    var incidentsJson = '['; 
    var gr = GlideRecord('sys_trend'); 
    gr.addQuery('name', 'New Incidents'); 
    gr.query(); 
    while(gr.next()){ 

    newIncidents.push(gr.value.toString()); 
    incidentsJson += '{"y": '+parseInt(gr.value.toString(), 10)+', "name": "'+gr.collected+'"}',; 
    } 
    newIncidents = newIncidents.join(','); 
    incidentsJson = incidentsJson.slice(0,-1); 
     incidentsJson += ']'; 
    </g:evaluate> 
<script> 
    var incidentsJson = '${incidentsJson}'; 
    var incidents = "${newIncidents}"; 
    var I = incidents.split(','); 
    for(var i=0; i != I.length; i++) { 
    I[i] = parseInt(I[i], 10); 
    } 

document.observe("dom:loaded", function() { 
    var chart1 = new Highcharts.Chart({ 
    chart: { 
    renderTo: 'newchart', 
    type: 'line' 
    }, 
      title: { 
      text: 'Backlog Growth', 
      x: -20 //center 
     }, 

     xAxis: { 
      categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
       'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
     }, 
     yAxis: { 
      title: { 
       text: 'Growth' 
      }, 
      plotLines: [{ 
       value: 0, 
       width: 1, 
       color: '#808080' 
      }] 
     }, 
     tooltip: { 
      valueSuffix: '#' 
     }, 
     legend: { 
      layout: 'vertical', 
      align: 'right', 
      verticalAlign: 'middle', 
      borderWidth: 0 
     }, 
     series: [{ 
      name: 'Incidents', 
      data: [{"y": 29, "name": "2016-09-04 21:57:21"},{"y": 28, "name": "2016-09-05 21:57:22"}] 
    }, { 
    name: 'Requested Items', 
    data: [{"y": 50, "name": "2016-09-04 21:57:21"},{"y": 25, "name": "2016-09-05 21:57:22"}] 
    }, { 
    name: 'Demands', 
    data: [{"y": 10, "name": "2016-09-04 21:57:21"},{"y": 5, "name": "2016-09-05 21:57:22"}] 

     }] 
    }); 
}); 
</script> 
<div class="container-fluid"> 
<div id="highwrapper" style="width: 500px; height: 400px; position:relative;"> 
    <div id="newchart" style="min-width: 500px; height: 400px; margin: 20; position:absolute;top:0px;left:0px;"></div> 

</div> 
    </div> 
</j:jelly> 

代码在UI页面或内容区块包括:

<?xml version="1.0" encoding="utf-8" ?> 
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null"> 
    <g:macro_invoke macro="custom_backlog_line_chart"/> 
</j:jelly> 

工作得很好,当我的“实战”中一个UI页面,但当我在仪表板中的动态内容块小部件中使用它时,我会得到空白小部件。

另外如果有人能弄清楚为什么我不能将$ {incidentsJson}传递给我的系列:data:在我的图表中,这也会非常有用!现在我正在硬编码json输出是什么来显示图表。如果我尝试将它传递给数据:我得到一个空白图表...

我只是试图

series: [{ 
      name: 'Incidents', 
      data: incidentsJson 
    }, 

我的jsfiddle测试的Highcharts.com网站,我可以JSON数组分配给var和将它传递给系列没有问题,但在SN中无法做到。

在此先感谢!

########更新

好吧,我发现两个问题1是一个错位的逗号。

incidentsJson += '{"y": '+parseInt(gr.value.toString(), 10)+', "name": "'+gr.collected+'"}',; 

我不小心把它放在''之外,所以它应该看起来像这样。

incidentsJson += '{"y": '+parseInt(gr.value.toString(), 10)+', "name": "'+gr.collected+'"},'; 

第二个问题是将评估变量传递给脚本部分不应包含在''中。

var incidentsJson = '${incidentsJson}'; RIGHT var incidentsJson = ${incidentsJson};

接下来我能够通过incidentsJson的数据系列。

series: [{ 
      name: 'Incidents', 
      data: incidentsJson 
     }, 

这里是输出

enter image description here

+0

我能不过来渲染图,仍然无法传递到图表数据系列 –

+0

你确定你有正确的数据格式的变量? –

+0

嗨yes文档声明它可以处理一个对象,字符串或整数。但事实证明,我有一个错位的逗号和引号。 –

回答

0

好了,所以我发现了两个问题,1是一个错位逗号这里。

incidentsJson += '{"y": '+parseInt(gr.value.toString(), 10)+', "name": "'+gr.collected+'"}',; 

我不小心把它放在''之外,所以它应该看起来像这样。

incidentsJson += '{"y": '+parseInt(gr.value.toString(), 10)+', "name": "'+gr.collected+'"},'; 

第二个问题是将评估变量传递给脚本部分不应包含在''中。

var incidentsJson = '${incidentsJson}'; RIGHT var incidentsJson = ${incidentsJson};

接下来我能够通过incidentsJson的数据系列。

series: [{ 
      name: 'Incidents', 
      data: incidentsJson 
     }, 

输出

enter image description here