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,
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:
BEGIN OF ty_plugins,
deferred TYPE ty_deferred,
datalabels TYPE ty_datalabels,
autocolors TYPE ty_autocolors_plugin,
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
RETURNING
VALUE(result) TYPE string .
CLASS-METHODS get_js_deferred
RETURNING
VALUE(result) TYPE string .
CLASS-METHODS load_js
IMPORTING
datalabels TYPE abap_bool DEFAULT abap_false
autocolors TYPE abap_bool DEFAULT abap_false
deferred TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(result) TYPE string .
CLASS-METHODS set_js_config
@ -537,6 +549,12 @@ CLASS Z2UI5_CL_CC_CHARTJS IMPLEMENTATION.
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.
result = ``.
ENDMETHOD.
@ -551,7 +569,7 @@ CLASS Z2UI5_CL_CC_CHARTJS IMPLEMENTATION.
DATA lv_libs TYPE string VALUE ``.
result = `debugger;` && |\n| &&
result = `` && |\n| &&
`var libs = ["` && get_js_url( ) && `"];` && |\n|.
IF datalabels = abap_true.
@ -570,6 +588,14 @@ CLASS Z2UI5_CL_CC_CHARTJS IMPLEMENTATION.
lv_libs = lv_libs && `,` && `autocolors`.
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| &&
`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( ).
chartjs_config = chartjs_config && `debugger;`.
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 && `fixJsonLibs(cjs);`.
chartjs_config = chartjs_config && `var el =` && lv_canvas_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.
ENDCLASS.