Code:
// some warnings never hurts
#include <amxmodx>
// uncomment to remove warnings
// #pragma tabsize 0
#define MACRO_WRITE(%1,%2) for(new i = %1; i < %2; i++){\
write_file(filename, file_content[i]);\
}
#define MACRO_TYPE(%1) write_file(filename,%1);
#define MACRO_STRING(%1,%2,%3) for(new i = 0; i < sizeof(%1); i++){\
formatex(%3, charsmax(%3), "^"%s^", ", %1[i][%2]);\
write_file(filename, %3);\
} write_file(filename, "],");
#define MACRO_NUMBERS(%1,%2,%3) for(new i = 0; i < sizeof(%1); i++){\
formatex(%3, charsmax(%3), "%d, ", %1[i][%2]);\
write_file(filename, %3);\
} write_file(filename, "],");
new const filename[] = "script.js";
new const title[] = "My Pie Chart";
enum _:struct{
struct_name[32],
struct_change,
struct_color[16]
}
new data[][struct] = {
{ "Item 1", 20, "red" },
{ "Item 2", 50, "white" },
{ "Item 3", 30, "black" },
{ "Item 4", 80, "purple" },
{ "Item 5", 60, "brown" },
{ "Item 6", 70, "cyan" }
}
new file_content[][] = {
"var canvas = document.getElementById(^"barChart^");",
"var ctx = canvas.getContext('2d');",
"",
"Chart.defaults.global.defaultFontColor = 'black';",
"Chart.defaults.global.defaultFontSize = 16;",
"",
"var data = {",
"labels: [",
// 0 - 8
"datasets: [",
"{",
"fill: true,",
"backgroundColor: [",
// 8 - 12
"borderColor: ['black', 'black'],",
"borderWidth: [2,2]",
"}",
"]",
"};",
"",
"var options = {",
"title: {",
"display: true,",
// 12 - 21
"position: 'top'",
"},",
"rotation: -0.7 * Math.PI",
"};",
"",
"var myBarChart = new Chart(ctx, {",
"type: 'pie',",
"data: data,",
"options: options",
"});"
// 21 - 31
}
public plugin_init(){
new labels[38];
if (file_exists(filename))
delete_file(filename);
MACRO_WRITE(0, 8)
MACRO_STRING(data, struct_name, labels)
MACRO_WRITE(8, 12)
MACRO_STRING(data, struct_color, labels)
MACRO_TYPE("data: [")
MACRO_NUMBERS(data, struct_change, labels)
MACRO_WRITE(12, 21)
formatex(labels, charsmax(labels), "text: ^"%s^",", title);
MACRO_TYPE(labels)
MACRO_WRITE(21, 31)
}