2016-01-28 1 views
2

Я разрабатываю веб-страницу с APEX 5. Я хочу показать AnyChart типа, который не включен в параметры региона диаграммы APEX, например. диаграммы областей или диаграммы маркера. У меня было много идей, но я не мог заставить его работать. Кто-нибудь преуспел в показе пользовательских AnyCharts на страницах APEX с помощью стандартного JavaScript-API AnyChart или XML?AnyChart APEX5 Интеграция

Я пробовал использовать как XML, так и JavaScript, вызываемые из динамического действия на загрузке страницы. Но я не мог найти правильную конфигурацию, она никогда не срабатывала. Я был бы рад, если бы у кого-то был пример действующей интеграции AnyChart, я бы хотел знать, что разместить где и когда.

ответ

1

Мы используем пользовательский AnyChart XML на большинстве наших диаграмм. Но мы используем его с Application Proccesses.

HTML код:

<span id="chartSpan"> </span> 

JS код выглядит следующим образом:

для добавления элемента (пути изменения соответственно):

var chart = new AnyGantt('/i422/flashchart/anygantt_4/swf/AnyGantt.swf'); 

chart.addEventListener('resourceSelect', onResourceSelect); 
chart.addEventListener('periodSelect', onPeriodSelect); 
chart.addEventListener('periodEditingEnd', onPeriodEdit); 

chart.width = "100%"; 
chart.height = "70%"; 
chart.write("chartSpan"); 

Для загрузки данных:

apex.server.process ("GEN_XML_AJAXDATA_PROJECT", { 
    pageItems: "#P28_PROJECTID", 
    x01: $v('P28_PROJECTID'), 
    x02: 'another parameter', 
    }, { 
    dataType: "text" 
    , success: function(pData) { 
    xmlData = pData; 
    //flash = AnyGantt._charts.chart__0;  
    flash = chart; 

    flash.setXMLDataFromString(xmlData); 
// do something 

}); 

Процесс нанесения "GEN_XML_AJAXDATA_PROJECT" (shortend):

declare 
l_data clob; 
l_chart_data_xml varchar2(32767); 

l_amt integer := 4000; 
l_pos integer := 1; 
l_buf varchar2(32000); 


begin 

sys.htp.htbuf_len := 63; 

dbms_lob.createtemporary(l_data, FALSE, dbms_lob.session); 
dbms_lob.open(l_data, dbms_lob.lob_readwrite); 


--add your xml data code here 
l_chart_data_xml := '<anygantt> <settings> 
<navigation enabled="True" position="Top" size="30"> 
</navigation> 
<editing allow_edit="true"> 
    <rounding> 
    <date unit="Week" step="1" /> 
    </rounding> 
</editing>'; 
dbms_lob.writeappend(l_data, length(l_chart_data_xml), l_chart_data_xml); 

IF apex_application.g_x02 = 'false' THEN 
End; 
    for resrow in (SELECT apex_application.g_x01 AS CSVLINE FROM DUAL) loop 
    l_chart_data_xml := resrow.CSVLINE||chr(13)||chr(10); 
end loop; 

l_chart_data_xml := '</resource_chart>' || chr(10) || '</anygantt>'; 
dbms_lob.writeappend(l_data, length(l_chart_data_xml), l_chart_data_xml); 


loop 
    begin 
     dbms_lob.read(l_data, l_amt, l_pos, l_buf); 
     l_pos := l_pos + l_amt; 
     l_amt := 4000; 

     sys.htp.prn(l_buf); 

     exception 
     when no_data_found then 
      exit; 
    end; 
end loop; 


dbms_lob.close(l_data); 
if l_data is not null then 
    dbms_lob.freetemporary(l_data); 
end if; 

end; 

Я настоятельно советую использовать опции разработчика Chrome для отладки ответ AJAX. С этим вы в свое время считаете свои проблемы: Chrome Developer OPtions

+0

большое спасибо. Я собираюсь взглянуть на него и попытаться приспособить его к моим потребностям. Вернусь к тебе. – User42

Смежные вопросы