chratjs cc (#764)

This commit is contained in:
choper725 2024-01-06 22:16:13 +02:00 committed by GitHub
parent 8940321987
commit cdcbe78224
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -241,8 +241,16 @@ CLASS z2ui5_cl_cc_chartjs DEFINITION
propagate TYPE abap_bool, propagate TYPE abap_bool,
END OF ty_filler . END OF ty_filler .
TYPES:
BEGIN OF ty_deferred,
delay TYPE i,
x_offset TYPE string,
y_offset TYPE string,
END OF ty_deferred.
TYPES: TYPES:
BEGIN OF ty_plugins, BEGIN OF ty_plugins,
deferred TYPE ty_deferred,
datalabels TYPE ty_datalabels, datalabels TYPE ty_datalabels,
autocolors TYPE ty_autocolors_plugin, autocolors TYPE ty_autocolors_plugin,
custom_canvas_background_color TYPE ty_custom_canvas_bg_color, custom_canvas_background_color TYPE ty_custom_canvas_bg_color,
@ -501,10 +509,14 @@ CLASS z2ui5_cl_cc_chartjs DEFINITION
CLASS-METHODS get_js_autocolors CLASS-METHODS get_js_autocolors
RETURNING RETURNING
VALUE(result) TYPE string . VALUE(result) TYPE string .
CLASS-METHODS get_js_deferred
RETURNING
VALUE(result) TYPE string .
CLASS-METHODS load_js CLASS-METHODS load_js
IMPORTING IMPORTING
datalabels TYPE abap_bool DEFAULT abap_false datalabels TYPE abap_bool DEFAULT abap_false
autocolors TYPE abap_bool DEFAULT abap_false autocolors TYPE abap_bool DEFAULT abap_false
deferred TYPE abap_bool DEFAULT abap_false
RETURNING RETURNING
VALUE(result) TYPE string . VALUE(result) TYPE string .
CLASS-METHODS set_js_config CLASS-METHODS set_js_config
@ -537,6 +549,12 @@ CLASS Z2UI5_CL_CC_CHARTJS IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD get_js_deferred.
"chartjs-plugin-datalabels must be loaded after the Chart.js library!
result = `https://cdn.jsdelivr.net/npm/chartjs-plugin-deferred@2.0.0/dist/chartjs-plugin-deferred.min.js`.
ENDMETHOD.
METHOD get_js_local. METHOD get_js_local.
result = ``. result = ``.
ENDMETHOD. ENDMETHOD.
@ -551,7 +569,7 @@ CLASS Z2UI5_CL_CC_CHARTJS IMPLEMENTATION.
DATA lv_libs TYPE string VALUE ``. DATA lv_libs TYPE string VALUE ``.
result = `debugger;` && |\n| && result = `` && |\n| &&
`var libs = ["` && get_js_url( ) && `"];` && |\n|. `var libs = ["` && get_js_url( ) && `"];` && |\n|.
IF datalabels = abap_true. IF datalabels = abap_true.
@ -570,6 +588,14 @@ CLASS Z2UI5_CL_CC_CHARTJS IMPLEMENTATION.
lv_libs = lv_libs && `,` && `autocolors`. lv_libs = lv_libs && `,` && `autocolors`.
ENDIF. ENDIF.
ENDIF. ENDIF.
IF deferred = abap_true.
result = result && `libs.push("` && get_js_deferred( ) && `");` && |\n|.
IF lv_libs IS INITIAL.
lv_libs = lv_libs && `ChartDeferred`.
ELSE.
lv_libs = lv_libs && `,` && `ChartDeferred`.
ENDIF.
ENDIF.
result = result && `` && |\n| && result = result && `` && |\n| &&
`var fixJsonLibs = function(data){` && |\n| && `var fixJsonLibs = function(data){` && |\n| &&
@ -650,11 +676,13 @@ CLASS Z2UI5_CL_CC_CHARTJS IMPLEMENTATION.
lv_guid = z2ui5_cl_util_func=>func_get_uuid_22( ). lv_guid = z2ui5_cl_util_func=>func_get_uuid_22( ).
chartjs_config = chartjs_config && `debugger;`. chartjs_config = chartjs_config && `debugger;`.
chartjs_config = chartjs_config && `try { var autocolors = window['chartjs-plugin-autocolors']; } catch (err){};`. chartjs_config = chartjs_config && `try { var autocolors = window['chartjs-plugin-autocolors']; } catch (err){};`.
chartjs_config = chartjs_config && `try { var chartdeferred = window['chartjs-plugin-deferred']; } catch (err){};`.
chartjs_config = chartjs_config && `var cjs = ` && json_config && `;`. chartjs_config = chartjs_config && `var cjs = ` && json_config && `;`.
chartjs_config = chartjs_config && `fixJsonLibs(cjs);`. chartjs_config = chartjs_config && `fixJsonLibs(cjs);`.
chartjs_config = chartjs_config && `var el =` && lv_canvas_el && `;`. chartjs_config = chartjs_config && `var el =` && lv_canvas_el && `;`.
chartjs_config = chartjs_config && `var ctx_` && lv_guid && ` = $('#' + el);`. chartjs_config = chartjs_config && `var ctx_` && lv_guid && ` = $('#' + el);`.
chartjs_config = chartjs_config && `var chart = new Chart( ctx_` && lv_guid && `, cjs );`. * chartjs_config = chartjs_config && `var chart = new Chart( ctx_` && lv_guid && `, cjs );`.
chartjs_config = chartjs_config && `var ` && canvas_id && ` = new Chart( ctx_` && lv_guid && `, cjs );`.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.