You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
221 lines
10 KiB
SQL
221 lines
10 KiB
SQL
FUNCTION d3_force__render( p_region IN apex_plugin.t_region
|
|
, p_plugin IN apex_plugin.t_plugin
|
|
, p_is_printer_friendly IN BOOLEAN )
|
|
RETURN apex_plugin.t_region_render_result
|
|
IS
|
|
v_configuration_object apex_application_page_regions.attribute_02%TYPE := p_region.attribute_02;
|
|
v_custom_styles apex_application_page_regions.attribute_03%TYPE := p_region.attribute_03;
|
|
v_region_static_id VARCHAR2( 100 );
|
|
BEGIN
|
|
v_region_static_id := apex_plugin_util.escape( p_region.static_id, TRUE );
|
|
|
|
apex_css.add_file( p_name => 'd3-force-'
|
|
, p_directory => p_plugin.file_prefix
|
|
, p_version => '3.1.0' );
|
|
|
|
apex_javascript.add_library( p_name => 'ResizeObserver-'
|
|
, p_directory => p_plugin.file_prefix
|
|
, p_version => '1.5.0'
|
|
, p_check_to_add_minified => TRUE );
|
|
|
|
apex_javascript.add_library( p_name => 'd3-'
|
|
, p_directory => p_plugin.file_prefix
|
|
, p_version => '3.5.6'
|
|
, p_check_to_add_minified => TRUE );
|
|
|
|
apex_javascript.add_library( p_name => 'd3-force-'
|
|
, p_directory => p_plugin.file_prefix
|
|
, p_version => '3.1.0'
|
|
, p_check_to_add_minified => TRUE );
|
|
|
|
HTP.p( CASE
|
|
WHEN v_custom_styles IS NOT NULL THEN
|
|
'<style>' || v_custom_styles || '</style>' || CHR( 10 )
|
|
END
|
|
|| '<svg></svg>'
|
|
|| CHR( 10 ) );
|
|
|
|
apex_javascript.add_onload_code( --> initialize chart function
|
|
'd3_force_'
|
|
|| v_region_static_id --> we need to use a global var - that is the reason to NOT use the var keyword
|
|
|| ' = netGobrechtsD3Force('
|
|
--> domContainerId:
|
|
|| apex_javascript.add_value( v_region_static_id, TRUE )
|
|
--> options:
|
|
|| CASE
|
|
WHEN v_configuration_object IS NOT NULL THEN
|
|
v_configuration_object
|
|
ELSE
|
|
'null'
|
|
END
|
|
|| ', '
|
|
--> apexPluginId:
|
|
|| apex_javascript.add_value( apex_plugin.get_ajax_identifier
|
|
, TRUE )
|
|
--> apexPageItemsToSubmit:
|
|
|| apex_javascript.add_value( p_region.ajax_items_to_submit
|
|
, FALSE )
|
|
|| ')'
|
|
|| CASE WHEN v( 'DEBUG' ) = 'YES' THEN '.debug(true)' END
|
|
|| CASE
|
|
WHEN p_region.attribute_09 IS NOT NULL THEN
|
|
'.positions(' || p_region.attribute_09 || ')'
|
|
END
|
|
|| CASE
|
|
WHEN p_region.attribute_04 IS NOT NULL THEN
|
|
'.onNodeClickFunction('
|
|
|| p_region.attribute_04
|
|
|| ')'
|
|
END
|
|
|| CASE
|
|
WHEN p_region.attribute_05 IS NOT NULL THEN
|
|
'.onNodeDblclickFunction('
|
|
|| p_region.attribute_05
|
|
|| ')'
|
|
END
|
|
|| CASE
|
|
WHEN p_region.attribute_06 IS NOT NULL THEN
|
|
'.onNodeContextmenuFunction('
|
|
|| p_region.attribute_06
|
|
|| ')'
|
|
END
|
|
|| CASE
|
|
WHEN p_region.attribute_12 IS NOT NULL THEN
|
|
'.onLinkClickFunction('
|
|
|| p_region.attribute_12
|
|
|| ')'
|
|
END
|
|
|| CASE
|
|
WHEN p_region.attribute_07 IS NOT NULL THEN
|
|
'.onNodeMouseenterFunction('
|
|
|| p_region.attribute_07
|
|
|| ')'
|
|
END
|
|
|| CASE
|
|
WHEN p_region.attribute_08 IS NOT NULL THEN
|
|
'.onNodeMouseleaveFunction('
|
|
|| p_region.attribute_08
|
|
|| ')'
|
|
END
|
|
|| CASE
|
|
WHEN p_region.attribute_10 IS NOT NULL THEN
|
|
'.onLassoStartFunction('
|
|
|| p_region.attribute_10
|
|
|| ')'
|
|
END
|
|
|| CASE
|
|
WHEN p_region.attribute_11 IS NOT NULL THEN
|
|
'.onLassoEndFunction('
|
|
|| p_region.attribute_11
|
|
|| ')'
|
|
END
|
|
|| CASE
|
|
WHEN p_region.attribute_13 IS NOT NULL THEN
|
|
'.onForceStartFunction('
|
|
|| p_region.attribute_13
|
|
|| ')'
|
|
END
|
|
|| CASE
|
|
WHEN p_region.attribute_14 IS NOT NULL THEN
|
|
'.onForceEndFunction('
|
|
|| p_region.attribute_14
|
|
|| ')'
|
|
END
|
|
|| CASE
|
|
WHEN p_region.attribute_15 IS NOT NULL THEN
|
|
'.onRenderEndFunction('
|
|
|| p_region.attribute_15
|
|
|| ')'
|
|
END
|
|
|| CASE
|
|
WHEN p_region.attribute_16 IS NOT NULL THEN
|
|
'.onResizeFunction('
|
|
|| p_region.attribute_16
|
|
|| ')'
|
|
END
|
|
--> start the visualization
|
|
|| '.start();' );
|
|
RETURN NULL;
|
|
END d3_force__render;
|
|
|
|
FUNCTION d3_force__ajax( p_region IN apex_plugin.t_region, p_plugin IN apex_plugin.t_plugin )
|
|
RETURN apex_plugin.t_region_ajax_result
|
|
IS
|
|
v_clob CLOB;
|
|
v_binds DBMS_SQL.varchar2_table;
|
|
v_cur INTEGER;
|
|
v_ret INTEGER;
|
|
BEGIN
|
|
IF p_region.source IS NOT NULL THEN
|
|
v_binds := wwv_flow_utilities.get_binds( p_region.source );
|
|
v_cur := DBMS_SQL.open_cursor;
|
|
DBMS_SQL.parse( c => v_cur, statement => REGEXP_REPLACE(p_region.source,';\s*$',''), language_flag => DBMS_SQL.native );
|
|
|
|
IF v_binds.COUNT > 0 THEN
|
|
FOR i IN v_binds.FIRST .. v_binds.LAST LOOP
|
|
DBMS_SQL.bind_variable( v_cur
|
|
, v_binds( i )
|
|
, APEX_UTIL.get_session_state( SUBSTR( v_binds( i ), 2 ) ) );
|
|
END LOOP;
|
|
END IF;
|
|
|
|
DBMS_SQL.define_column( c => v_cur, position => 1, column => v_clob );
|
|
v_ret := DBMS_SQL.execute( c => v_cur );
|
|
|
|
WHILE DBMS_SQL.fetch_rows( v_cur ) > 0 LOOP
|
|
DBMS_SQL.COLUMN_VALUE( v_cur, 1, v_clob );
|
|
END LOOP;
|
|
|
|
DBMS_SQL.close_cursor( v_cur );
|
|
|
|
IF sys.DBMS_LOB.getlength( v_clob ) > 0 THEN
|
|
DECLARE
|
|
v_len PLS_INTEGER;
|
|
v_pos PLS_INTEGER := 1;
|
|
v_amo PLS_INTEGER := 4000;
|
|
v_chu VARCHAR2( 32767 );
|
|
BEGIN
|
|
v_len := DBMS_LOB.getlength( v_clob );
|
|
|
|
WHILE v_pos <= v_len LOOP
|
|
v_amo := LEAST( v_amo, v_len - ( v_pos - 1 ) );
|
|
v_chu := DBMS_LOB.SUBSTR( v_clob, v_amo, v_pos );
|
|
v_pos := v_pos + v_amo;
|
|
HTP.prn( v_chu );
|
|
END LOOP;
|
|
END;
|
|
ELSE
|
|
HTP.prn( 'query_returned_no_data' ); --> prn prints without newline
|
|
END IF;
|
|
ELSE
|
|
HTP.prn( 'no_query_defined' );
|
|
END IF;
|
|
|
|
--> Free the temp LOB, if necessary
|
|
BEGIN
|
|
DBMS_LOB.freetemporary( v_clob );
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
NULL;
|
|
END;
|
|
|
|
RETURN NULL;
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
--> Close the cursor, if open
|
|
BEGIN
|
|
IF v_cur IS NOT NULL
|
|
AND DBMS_SQL.is_open( v_cur ) THEN
|
|
DBMS_SQL.close_cursor( v_cur );
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
NULL;
|
|
END;
|
|
|
|
apex_debug.MESSAGE( SQLERRM );
|
|
--> Write error back to the Browser
|
|
HTP.prn( SQLERRM );
|
|
RETURN NULL;
|
|
END d3_force__ajax;
|