Hello everyone,
Hope you are well.
I am planning to conduct a daily diary study lasting 10 working days and I am looking to incorporate Highcharts in the project. More specifically, I plan to use Highcharts as an incentive for participants by providing a feedback at the end of the study with a visual chart that documents the trajectory of their psychological wellbeing over the course of the week.
However, I am facing an issue especially with the Javascript portion of Highcharts as I have received these messages:
Warning: The PHP keyword const is not allowed within PHP code.
The PHP code contains invalid function calls or keywords. It was ignored.
The specific chart I would like to use is called the “Ajax loaded data, clickable points” and the following is how I have input the relevant codes into my questionnaire:
HTML
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/data.js"></script>
<script src="https://code.highcharts.com/modules/series-label.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://code.highcharts.com/modules/export-data.js"></script>
<script src="https://code.highcharts.com/modules/accessibility.js"></script>
<figure class="highcharts-figure">
<div id="container"></div>
<p class="highcharts-description">
Chart showing data loaded dynamically. The individual data points can
be clicked to display more information.
</p>
</figure>
PHP
library(highcharts);
Highcharts.addEvent(Highcharts.Point, 'click', function () {
if (this.series.options.className.indexOf('popup-on-click') !== -1) {
const chart = this.series.chart;
const date = Highcharts.dateFormat('%A, %b %e, %Y', this.x);
const text = `<b>${date}</b><br/>${this.y} ${this.series.name}`;
const anchorX = this.plotX + this.series.xAxis.pos;
const anchorY = this.plotY + this.series.yAxis.pos;
const align = anchorX < chart.chartWidth - 200 ? 'left' : 'right';
const x = align === 'left' ? anchorX + 10 : anchorX - 10;
const y = anchorY - 30;
if (!chart.sticky) {
chart.sticky = chart.renderer
.label(text, x, y, 'callout', anchorX, anchorY)
.attr({
align,
fill: 'rgba(0, 0, 0, 0.75)',
padding: 10,
zIndex: 7 // Above series, below tooltip
})
.css({
color: 'white'
})
.on('click', function () {
chart.sticky = chart.sticky.destroy();
})
.add();
} else {
chart.sticky
.attr({ align, text })
.animate({ anchorX, anchorY, x, y }, { duration: 250 });
}
}
});
Highcharts.chart('container', {
chart: {
scrollablePlotArea: {
minWidth: 700
}
},
data: {
csvURL: 'https://cdn.jsdelivr.net/gh/highcharts/highcharts@v7.0.0/samples/data/analytics.csv',
beforeParse: function (csv) {
return csv.replace(/\n\n/g, '\n');
}
},
title: {
text: 'Daily sessions at www.highcharts.com'
},
subtitle: {
text: 'Source: Google Analytics'
},
xAxis: {
tickInterval: 7 * 24 * 3600 * 1000, // one week
tickWidth: 0,
gridLineWidth: 1,
labels: {
align: 'left',
x: 3,
y: -3
}
},
yAxis: [{ // left y axis
title: {
text: null
},
labels: {
align: 'left',
x: 3,
y: 16,
format: '{value:.,0f}'
},
showFirstLabel: false
}, { // right y axis
linkedTo: 0,
gridLineWidth: 0,
opposite: true,
title: {
text: null
},
labels: {
align: 'right',
x: -3,
y: 16,
format: '{value:.,0f}'
},
showFirstLabel: false
}],
legend: {
align: 'left',
verticalAlign: 'top',
borderWidth: 0
},
tooltip: {
shared: true,
crosshairs: true
},
plotOptions: {
series: {
cursor: 'pointer',
className: 'popup-on-click',
marker: {
lineWidth: 1
}
}
},
series: [{
name: 'All sessions',
lineWidth: 4,
marker: {
radius: 4
}
}, {
name: 'New users'
}]
});
Furthermore, I would also like to know how do I load the relevant data from my questionnaire onto this chart and display it to participants by the end of my study?
Please could anyone kindly help me on this? Thank you so much!