How to get index of clicked point in scatter plot - highcharts

How to get index of an clicked point in scatter plot
$(function () {
$('#container').highcharts({
chart: {
type: 'scatter',
zoomType: 'xy'
},
title: {
text: 'Height Versus Weight of 507 Individuals by Gender'
},
subtitle: {
text: 'Source: Heinz 2003'
},
xAxis: {
title: {
enabled: true,
text: 'Height (cm)'
},
startOnTick: true,
endOnTick: true,
showLastLabel: true
},
yAxis: {
title: {
text: 'Weight (kg)'
}
},
legend: {
layout: 'vertical',
align: 'left',
verticalAlign: 'top',
x: 100,
y: 70,
floating: true,
backgroundColor: '#FFFFFF',
borderWidth: 1
},
plotOptions: {
scatter: {
marker: {
radius: 5,
states: {
hover: {
enabled: true,
lineColor: 'rgb(100,100,100)'
}
}
},
point: {
events: {
click: function (event) {
alert('X: ' + this.x);
alert('Index : ' + this.value);
}
}
},
states: {
hover: {
marker: {
enabled: false
}
}
},
tooltip: {
headerFormat: '<b>{series.name}</b><br>',
pointFormat: '{point.x} cm, {point.y} kg'
}
}
},
series: [{
name: 'Female',
color: 'rgba(223, 83, 83, .5)',
data: [[161.2, 51.6], [167.5, 59.0], [159.5, 49.2], [157.0, 63.0], [155.8, 53.6],
[170.0, 59.0], [159.1, 47.6], [166.0, 69.8], [176.2, 66.8], [160.2, 75.2],
[172.5, 55.2], [170.9, 54.2], [172.9, 62.5], [153.4, 42.0], [160.0, 50.0],
[147.2, 49.8], [168.2, 49.2], [175.0, 73.2], [157.0, 47.8], [167.6, 68.8],
[159.5, 50.6], [175.0, 82.5], [166.8, 57.2], [176.5, 87.8], [170.2, 72.8],
[174.0, 54.5], [173.0, 59.8], [179.9, 67.3], [170.5, 67.8], [160.0, 47.0],
[154.4, 46.2], [162.0, 55.0], [176.5, 83.0], [160.0, 54.4], [152.0, 45.8],
[162.1, 53.6], [170.0, 73.2], [160.2, 52.1], [161.3, 67.9], [166.4, 56.6],
[168.9, 62.3], [163.8, 58.5], [167.6, 54.5], [160.0, 50.2], [161.3, 60.3],
[167.6, 58.3], [165.1, 56.2], [160.0, 50.2], [170.0, 72.9], [157.5, 59.8],
[167.6, 61.0], [160.7, 69.1], [163.2, 55.9], [152.4, 46.5], [157.5, 54.3],
[168.3, 54.8], [180.3, 60.7], [165.5, 60.0], [165.0, 62.0], [164.5, 60.3],
[156.0, 52.7], [160.0, 74.3], [163.0, 62.0], [165.7, 73.1], [161.0, 80.0],
[162.0, 54.7], [166.0, 53.2], [174.0, 75.7], [172.7, 61.1], [167.6, 55.7],
[151.1, 48.7], [164.5, 52.3], [163.5, 50.0], [152.0, 59.3], [169.0, 62.5],
[164.0, 55.7], [161.2, 54.8], [155.0, 45.9], [170.0, 70.6], [176.2, 67.2],
[170.0, 69.4], [162.5, 58.2], [170.3, 64.8], [164.1, 71.6], [169.5, 52.8],
[163.2, 59.8], [154.5, 49.0], [159.8, 50.0], [173.2, 69.2], [170.0, 55.9],
[161.4, 63.4], [169.0, 58.2], [166.2, 58.6], [159.4, 45.7], [162.5, 52.2],
[159.0, 48.6], [162.8, 57.8], [159.0, 55.6], [179.8, 66.8], [162.9, 59.4],
[161.0, 53.6], [151.1, 73.2], [168.2, 53.4], [168.9, 69.0], [173.2, 58.4],
[171.8, 56.2], [178.0, 70.6], [164.3, 59.8], [163.0, 72.0], [168.5, 65.2],
[166.8, 56.6], [172.7, 105.2], [163.5, 51.8], [169.4, 63.4], [167.8, 59.0],
[159.5, 47.6], [167.6, 63.0], [161.2, 55.2], [160.0, 45.0], [163.2, 54.0],
[162.2, 50.2], [161.3, 60.2], [149.5, 44.8], [157.5, 58.8], [163.2, 56.4],
[172.7, 62.0], [155.0, 49.2], [156.5, 67.2], [164.0, 53.8], [160.9, 54.4],
[162.8, 58.0], [167.0, 59.8], [160.0, 54.8], [160.0, 43.2], [168.9, 60.5],
[158.2, 46.4], [156.0, 64.4], [160.0, 48.8], [167.1, 62.2], [158.0, 55.5],
[167.6, 57.8], [156.0, 54.6], [162.1, 59.2], [173.4, 52.7], [159.8, 53.2],
[170.5, 64.5], [159.2, 51.8], [157.5, 56.0], [161.3, 63.6], [162.6, 63.2],
[160.0, 59.5], [168.9, 56.8], [165.1, 64.1], [162.6, 50.0], [165.1, 72.3],
[166.4, 55.0], [160.0, 55.9], [152.4, 60.4], [170.2, 69.1], [162.6, 84.5],
[170.2, 55.9], [158.8, 55.5], [172.7, 69.5], [167.6, 76.4], [162.6, 61.4],
[167.6, 65.9], [156.2, 58.6], [175.2, 66.8], [172.1, 56.6], [162.6, 58.6],
[160.0, 55.9], [165.1, 59.1], [182.9, 81.8], [166.4, 70.7], [165.1, 56.8],
[177.8, 60.0], [165.1, 58.2], [175.3, 72.7], [154.9, 54.1], [158.8, 49.1],
[172.7, 75.9], [168.9, 55.0], [161.3, 57.3], [167.6, 55.0], [165.1, 65.5],
[175.3, 65.5], [157.5, 48.6], [163.8, 58.6], [167.6, 63.6], [165.1, 55.2],
[165.1, 62.7], [168.9, 56.6], [162.6, 53.9], [164.5, 63.2], [176.5, 73.6],
[168.9, 62.0], [175.3, 63.6], [159.4, 53.2], [160.0, 53.4], [170.2, 55.0],
[162.6, 70.5], [167.6, 54.5], [162.6, 54.5], [160.7, 55.9], [160.0, 59.0],
[157.5, 63.6], [162.6, 54.5], [152.4, 47.3], [170.2, 67.7], [165.1, 80.9],
[172.7, 70.5], [165.1, 60.9], [170.2, 63.6], [170.2, 54.5], [170.2, 59.1],
[161.3, 70.5], [167.6, 52.7], [167.6, 62.7], [165.1, 86.3], [162.6, 66.4],
[152.4, 67.3], [168.9, 63.0], [170.2, 73.6], [175.2, 62.3], [175.2, 57.7],
[160.0, 55.4], [165.1, 104.1], [174.0, 55.5], [170.2, 77.3], [160.0, 80.5],
[167.6, 64.5], [167.6, 72.3], [167.6, 61.4], [154.9, 58.2], [162.6, 81.8],
[175.3, 63.6], [171.4, 53.4], [157.5, 54.5], [165.1, 53.6], [160.0, 60.0],
[174.0, 73.6], [162.6, 61.4], [174.0, 55.5], [162.6, 63.6], [161.3, 60.9],
[156.2, 60.0], [149.9, 46.8], [169.5, 57.3], [160.0, 64.1], [175.3, 63.6],
[169.5, 67.3], [160.0, 75.5], [172.7, 68.2], [162.6, 61.4], [157.5, 76.8],
[176.5, 71.8], [164.4, 55.5], [160.7, 48.6], [174.0, 66.4], [163.8, 67.3]]
}, {
name: 'Male',
color: 'rgba(119, 152, 191, .5)',
data: [[174.0, 65.6], [175.3, 71.8], [193.5, 80.7], [186.5, 72.6], [187.2, 78.8],
[181.5, 74.8], [184.0, 86.4], [184.5, 78.4], [175.0, 62.0], [184.0, 81.6],
[180.0, 76.6], [177.8, 83.6], [192.0, 90.0], [176.0, 74.6], [174.0, 71.0],
[184.0, 79.6], [192.7, 93.8], [171.5, 70.0], [173.0, 72.4], [176.0, 85.9],
[176.0, 78.8], [180.5, 77.8], [172.7, 66.2], [176.0, 86.4], [173.5, 81.8],
[178.0, 89.6], [180.3, 82.8], [180.3, 76.4], [164.5, 63.2], [173.0, 60.9],
[183.5, 74.8], [175.5, 70.0], [188.0, 72.4], [189.2, 84.1], [172.8, 69.1],
[170.0, 59.5], [182.0, 67.2], [170.0, 61.3], [177.8, 68.6], [184.2, 80.1],
[186.7, 87.8], [171.4, 84.7], [172.7, 73.4], [175.3, 72.1], [180.3, 82.6],
[182.9, 88.7], [188.0, 84.1], [177.2, 94.1], [172.1, 74.9], [167.0, 59.1],
[169.5, 75.6], [174.0, 86.2], [172.7, 75.3], [182.2, 87.1], [164.1, 55.2],
[163.0, 57.0], [171.5, 61.4], [184.2, 76.8], [174.0, 86.8], [174.0, 72.2],
[177.0, 71.6], [186.0, 84.8], [167.0, 68.2], [171.8, 66.1], [182.0, 72.0],
[167.0, 64.6], [177.8, 74.8], [164.5, 70.0], [192.0, 101.6], [175.5, 63.2],
[171.2, 79.1], [181.6, 78.9], [167.4, 67.7], [181.1, 66.0], [177.0, 68.2],
[174.5, 63.9], [177.5, 72.0], [170.5, 56.8], [182.4, 74.5], [197.1, 90.9],
[180.1, 93.0], [175.5, 80.9], [180.6, 72.7], [184.4, 68.0], [175.5, 70.9],
[180.6, 72.5], [177.0, 72.5], [177.1, 83.4], [181.6, 75.5], [176.5, 73.0],
[175.0, 70.2], [174.0, 73.4], [165.1, 70.5], [177.0, 68.9], [192.0, 102.3],
[176.5, 68.4], [169.4, 65.9], [182.1, 75.7], [179.8, 84.5], [175.3, 87.7],
[184.9, 86.4], [177.3, 73.2], [167.4, 53.9], [178.1, 72.0], [168.9, 55.5],
[157.2, 58.4], [180.3, 83.2], [170.2, 72.7], [177.8, 64.1], [172.7, 72.3],
[165.1, 65.0], [186.7, 86.4], [165.1, 65.0], [174.0, 88.6], [175.3, 84.1],
[185.4, 66.8], [177.8, 75.5], [180.3, 93.2], [180.3, 82.7], [177.8, 58.0],
[177.8, 79.5], [177.8, 78.6], [177.8, 71.8], [177.8, 116.4], [163.8, 72.2],
[188.0, 83.6], [198.1, 85.5], [175.3, 90.9], [166.4, 85.9], [190.5, 89.1],
[166.4, 75.0], [177.8, 77.7], [179.7, 86.4], [172.7, 90.9], [190.5, 73.6],
[185.4, 76.4], [168.9, 69.1], [167.6, 84.5], [175.3, 64.5], [170.2, 69.1],
[190.5, 108.6], [177.8, 86.4], [190.5, 80.9], [177.8, 87.7], [184.2, 94.5],
[176.5, 80.2], [177.8, 72.0], [180.3, 71.4], [171.4, 72.7], [172.7, 84.1],
[172.7, 76.8], [177.8, 63.6], [177.8, 80.9], [182.9, 80.9], [170.2, 85.5],
[167.6, 68.6], [175.3, 67.7], [165.1, 66.4], [185.4, 102.3], [181.6, 70.5],
[172.7, 95.9], [190.5, 84.1], [179.1, 87.3], [175.3, 71.8], [170.2, 65.9],
[193.0, 95.9], [171.4, 91.4], [177.8, 81.8], [177.8, 96.8], [167.6, 69.1],
[167.6, 82.7], [180.3, 75.5], [182.9, 79.5], [176.5, 73.6], [186.7, 91.8],
[188.0, 84.1], [188.0, 85.9], [177.8, 81.8], [174.0, 82.5], [177.8, 80.5],
[171.4, 70.0], [185.4, 81.8], [185.4, 84.1], [188.0, 90.5], [188.0, 91.4],
[182.9, 89.1], [176.5, 85.0], [175.3, 69.1], [175.3, 73.6], [188.0, 80.5],
[188.0, 82.7], [175.3, 86.4], [170.5, 67.7], [179.1, 92.7], [177.8, 93.6],
[175.3, 70.9], [182.9, 75.0], [170.8, 93.2], [188.0, 93.2], [180.3, 77.7],
[177.8, 61.4], [185.4, 94.1], [168.9, 75.0], [185.4, 83.6], [180.3, 85.5],
[174.0, 73.9], [167.6, 66.8], [182.9, 87.3], [160.0, 72.3], [180.3, 88.6],
[167.6, 75.5], [186.7, 101.4], [175.3, 91.1], [175.3, 67.3], [175.9, 77.7],
[175.3, 81.8], [179.1, 75.5], [181.6, 84.5], [177.8, 76.6], [182.9, 85.0],
[177.8, 102.5], [184.2, 77.3], [179.1, 71.8], [176.5, 87.9], [188.0, 94.3],
[174.0, 70.9], [167.6, 64.5], [170.2, 77.3], [167.6, 72.3], [188.0, 87.3],
[174.0, 80.0], [176.5, 82.3], [180.3, 73.6], [167.6, 74.1], [188.0, 85.9],
[180.3, 73.2], [167.6, 76.3], [183.0, 65.9], [183.0, 90.9], [179.1, 89.1],
[170.2, 62.3], [177.8, 82.7], [179.1, 79.1], [190.5, 98.2], [177.8, 84.1],
[180.3, 83.2], [180.3, 83.2]]
}]
});
});
For Demo http://jsfiddle.net/KQ6Uk/6/

Points are not indexed in Highcharts. You can change format from array: [x, y] to object: {x: x, y:y, index}. Then in callback you can access that property: this.options.myIndex.

Related

when exporting from highcharts, the self added image turned to be a square with "?", why?

https://jsfiddle.net/BlackLabel/w9vq7p3d/
In the links above, It add a image which url is "https://www.highcharts.com/samples/graphics/sun.png". and it works well, when exporting, I can get the correct output with this image.
but when I move the same png to my site, such as "https://www.example.com/sun.png". when exporting, the sun.png turned to be a square with "?".
Why, how to fix it?
Highcharts.chart('container', {
chart: {
type: 'scatter',
events: {
render() {
const chart = this,
renderer = chart.renderer,
width = 30;
// Delete groups
if (chart.customImgGroup) {
chart.customImgGroup.destroy();
}
// Create groups
chart.customImgGroup = renderer.g('customImgGroup').add();
// Render texts
chart.renderer.image('https://www.highcharts.com/samples/graphics/sun.png',chart.plotLeft + chart.plotSizeX - width, 50, width, 30)
.add(chart.customImgGroup);
}
}
},
plotOptions: {
scatter: {
marker: {
radius: 5,
states: {
hover: {
enabled: true,
lineColor: 'rgb(100,100,100)'
}
}
},
states: {
hover: {
marker: {
enabled: false
}
}
}
}
},
series: [{
name: 'Female',
color: 'rgba(223, 83, 83, .5)',
data: [
[161.2, 51.6],
[167.5, 59.0],
[159.5, 49.2],
[157.0, 63.0],
[155.8, 53.6],
[170.0, 59.0],
[159.1, 47.6],
[166.0, 69.8],
[176.2, 66.8],
[160.2, 75.2],
[172.5, 55.2],
[170.9, 54.2],
[172.9, 62.5],
[153.4, 42.0],
[160.0, 50.0],
[147.2, 49.8],
[168.2, 49.2],
[175.0, 73.2],
[157.0, 47.8],
[167.6, 68.8],
[159.5, 50.6],
[175.0, 82.5],
[166.8, 57.2],
[176.5, 87.8],
[170.2, 72.8],
[174.0, 54.5],
[173.0, 59.8],
[179.9, 67.3],
[170.5, 67.8],
[160.0, 47.0],
[154.4, 46.2],
[162.0, 55.0],
[176.5, 83.0],
[160.0, 54.4],
[152.0, 45.8],
[162.1, 53.6],
[170.0, 73.2],
[160.2, 52.1],
[161.3, 67.9],
[166.4, 56.6],
[168.9, 62.3],
[163.8, 58.5],
[167.6, 54.5],
[160.0, 50.2],
[161.3, 60.3],
[167.6, 58.3],
[165.1, 56.2],
[160.0, 50.2],
[170.0, 72.9],
[157.5, 59.8],
[167.6, 61.0],
[160.7, 69.1],
[163.2, 55.9],
[152.4, 46.5],
[157.5, 54.3],
[168.3, 54.8],
[180.3, 60.7],
[165.5, 60.0],
[165.0, 62.0],
[164.5, 60.3],
[156.0, 52.7],
[160.0, 74.3],
[163.0, 62.0],
[165.7, 73.1],
[161.0, 80.0],
[162.0, 54.7],
[166.0, 53.2],
[174.0, 75.7],
[172.7, 61.1],
[167.6, 55.7],
[151.1, 48.7],
[164.5, 52.3],
[163.5, 50.0],
[152.0, 59.3],
[169.0, 62.5],
[164.0, 55.7],
[161.2, 54.8],
[155.0, 45.9],
[170.0, 70.6],
[176.2, 67.2],
[170.0, 69.4],
[162.5, 58.2],
[170.3, 64.8],
[164.1, 71.6],
[169.5, 52.8],
[163.2, 59.8],
[154.5, 49.0],
[159.8, 50.0],
[173.2, 69.2],
[170.0, 55.9],
[161.4, 63.4],
[169.0, 58.2],
[166.2, 58.6],
[159.4, 45.7],
[162.5, 52.2],
[159.0, 48.6],
[162.8, 57.8],
[159.0, 55.6],
[179.8, 66.8],
[162.9, 59.4],
[161.0, 53.6],
[151.1, 73.2],
[168.2, 53.4],
[168.9, 69.0],
[173.2, 58.4],
[171.8, 56.2],
[178.0, 70.6],
[164.3, 59.8],
[163.0, 72.0],
[168.5, 65.2],
[166.8, 56.6],
[172.7, 105.2],
[163.5, 51.8],
[169.4, 63.4],
[167.8, 59.0],
[159.5, 47.6],
[167.6, 63.0],
[161.2, 55.2],
[160.0, 45.0],
[163.2, 54.0],
[162.2, 50.2],
[161.3, 60.2],
[149.5, 44.8],
[157.5, 58.8],
[163.2, 56.4],
[172.7, 62.0],
[155.0, 49.2],
[156.5, 67.2],
[164.0, 53.8],
[160.9, 54.4],
[162.8, 58.0],
[167.0, 59.8],
[160.0, 54.8],
[160.0, 43.2],
[168.9, 60.5],
[158.2, 46.4],
[156.0, 64.4],
[160.0, 48.8],
[167.1, 62.2],
[158.0, 55.5],
[167.6, 57.8],
[156.0, 54.6],
[162.1, 59.2],
[173.4, 52.7],
[159.8, 53.2],
[170.5, 64.5],
[159.2, 51.8],
[157.5, 56.0],
[161.3, 63.6],
[162.6, 63.2],
[160.0, 59.5],
[168.9, 56.8],
[165.1, 64.1],
[162.6, 50.0],
[165.1, 72.3],
[166.4, 55.0],
[160.0, 55.9],
[152.4, 60.4],
[170.2, 69.1],
[162.6, 84.5],
[170.2, 55.9],
[158.8, 55.5],
[172.7, 69.5],
[167.6, 76.4],
[162.6, 61.4],
[167.6, 65.9],
[156.2, 58.6],
[175.2, 66.8],
[172.1, 56.6],
[162.6, 58.6],
[160.0, 55.9],
[165.1, 59.1],
[182.9, 81.8],
[166.4, 70.7],
[165.1, 56.8],
[177.8, 60.0],
[165.1, 58.2],
[175.3, 72.7],
[154.9, 54.1],
[158.8, 49.1],
[172.7, 75.9],
[168.9, 55.0],
[161.3, 57.3],
[167.6, 55.0],
[165.1, 65.5],
[175.3, 65.5],
[157.5, 48.6],
[163.8, 58.6],
[167.6, 63.6],
[165.1, 55.2],
[165.1, 62.7],
[168.9, 56.6],
[162.6, 53.9],
[164.5, 63.2],
[176.5, 73.6],
[168.9, 62.0],
[175.3, 63.6],
[159.4, 53.2],
[160.0, 53.4],
[170.2, 55.0],
[162.6, 70.5],
[167.6, 54.5],
[162.6, 54.5],
[160.7, 55.9],
[160.0, 59.0],
[157.5, 63.6],
[162.6, 54.5],
[152.4, 47.3],
[170.2, 67.7],
[165.1, 80.9],
[172.7, 70.5],
[165.1, 60.9],
[170.2, 63.6],
[170.2, 54.5],
[170.2, 59.1],
[161.3, 70.5],
[167.6, 52.7],
[167.6, 62.7],
[165.1, 86.3],
[162.6, 66.4],
[152.4, 67.3],
[168.9, 63.0],
[170.2, 73.6],
[175.2, 62.3],
[175.2, 57.7],
[160.0, 55.4],
[165.1, 104.1],
[174.0, 55.5],
[170.2, 77.3],
[160.0, 80.5],
[167.6, 64.5],
[167.6, 72.3],
[167.6, 61.4],
[154.9, 58.2],
[162.6, 81.8],
[175.3, 63.6],
[171.4, 53.4],
[157.5, 54.5],
[165.1, 53.6],
[160.0, 60.0],
[174.0, 73.6],
[162.6, 61.4],
[174.0, 55.5],
[162.6, 63.6],
[161.3, 60.9],
[156.2, 60.0],
[149.9, 46.8],
[169.5, 57.3],
[160.0, 64.1],
[175.3, 63.6],
[169.5, 67.3],
[160.0, 75.5],
[172.7, 68.2],
[162.6, 61.4],
[157.5, 76.8],
[176.5, 71.8],
[164.4, 55.5],
[160.7, 48.6],
[174.0, 66.4],
[163.8, 67.3]
]
}, {
name: 'Male',
color: 'rgba(119, 152, 191, .5)',
data: [
[174.0, 65.6],
[175.3, 71.8],
[193.5, 80.7],
[186.5, 72.6],
[187.2, 78.8],
[181.5, 74.8],
[184.0, 86.4],
[184.5, 78.4],
[175.0, 62.0],
[184.0, 81.6],
[180.0, 76.6],
[177.8, 83.6],
[192.0, 90.0],
[176.0, 74.6],
[174.0, 71.0],
[184.0, 79.6],
[192.7, 93.8],
[171.5, 70.0],
[173.0, 72.4],
[176.0, 85.9],
[176.0, 78.8],
[180.5, 77.8],
[172.7, 66.2],
[176.0, 86.4],
[173.5, 81.8],
[178.0, 89.6],
[180.3, 82.8],
[180.3, 76.4],
[164.5, 63.2],
[173.0, 60.9],
[183.5, 74.8],
[175.5, 70.0],
[188.0, 72.4],
[189.2, 84.1],
[172.8, 69.1],
[170.0, 59.5],
[182.0, 67.2],
[170.0, 61.3],
[177.8, 68.6],
[184.2, 80.1],
[186.7, 87.8],
[171.4, 84.7],
[172.7, 73.4],
[175.3, 72.1],
[180.3, 82.6],
[182.9, 88.7],
[188.0, 84.1],
[177.2, 94.1],
[172.1, 74.9],
[167.0, 59.1],
[169.5, 75.6],
[174.0, 86.2],
[172.7, 75.3],
[182.2, 87.1],
[164.1, 55.2],
[163.0, 57.0],
[171.5, 61.4],
[184.2, 76.8],
[174.0, 86.8],
[174.0, 72.2],
[177.0, 71.6],
[186.0, 84.8],
[167.0, 68.2],
[171.8, 66.1],
[182.0, 72.0],
[167.0, 64.6],
[177.8, 74.8],
[164.5, 70.0],
[192.0, 101.6],
[175.5, 63.2],
[171.2, 79.1],
[181.6, 78.9],
[167.4, 67.7],
[181.1, 66.0],
[177.0, 68.2],
[174.5, 63.9],
[177.5, 72.0],
[170.5, 56.8],
[182.4, 74.5],
[197.1, 90.9],
[180.1, 93.0],
[175.5, 80.9],
[180.6, 72.7],
[184.4, 68.0],
[175.5, 70.9],
[180.6, 72.5],
[177.0, 72.5],
[177.1, 83.4],
[181.6, 75.5],
[176.5, 73.0],
[175.0, 70.2],
[174.0, 73.4],
[165.1, 70.5],
[177.0, 68.9],
[192.0, 102.3],
[176.5, 68.4],
[169.4, 65.9],
[182.1, 75.7],
[179.8, 84.5],
[175.3, 87.7],
[184.9, 86.4],
[177.3, 73.2],
[167.4, 53.9],
[178.1, 72.0],
[168.9, 55.5],
[157.2, 58.4],
[180.3, 83.2],
[170.2, 72.7],
[177.8, 64.1],
[172.7, 72.3],
[165.1, 65.0],
[186.7, 86.4],
[165.1, 65.0],
[174.0, 88.6],
[175.3, 84.1],
[185.4, 66.8],
[177.8, 75.5],
[180.3, 93.2],
[180.3, 82.7],
[177.8, 58.0],
[177.8, 79.5],
[177.8, 78.6],
[177.8, 71.8],
[177.8, 116.4],
[163.8, 72.2],
[188.0, 83.6],
[198.1, 85.5],
[175.3, 90.9],
[166.4, 85.9],
[190.5, 89.1],
[166.4, 75.0],
[177.8, 77.7],
[179.7, 86.4],
[172.7, 90.9],
[190.5, 73.6],
[185.4, 76.4],
[168.9, 69.1],
[167.6, 84.5],
[175.3, 64.5],
[170.2, 69.1],
[190.5, 108.6],
[177.8, 86.4],
[190.5, 80.9],
[177.8, 87.7],
[184.2, 94.5],
[176.5, 80.2],
[177.8, 72.0],
[180.3, 71.4],
[171.4, 72.7],
[172.7, 84.1],
[172.7, 76.8],
[177.8, 63.6],
[177.8, 80.9],
[182.9, 80.9],
[170.2, 85.5],
[167.6, 68.6],
[175.3, 67.7],
[165.1, 66.4],
[185.4, 102.3],
[181.6, 70.5],
[172.7, 95.9],
[190.5, 84.1],
[179.1, 87.3],
[175.3, 71.8],
[170.2, 65.9],
[193.0, 95.9],
[171.4, 91.4],
[177.8, 81.8],
[177.8, 96.8],
[167.6, 69.1],
[167.6, 82.7],
[180.3, 75.5],
[182.9, 79.5],
[176.5, 73.6],
[186.7, 91.8],
[188.0, 84.1],
[188.0, 85.9],
[177.8, 81.8],
[174.0, 82.5],
[177.8, 80.5],
[171.4, 70.0],
[185.4, 81.8],
[185.4, 84.1],
[188.0, 90.5],
[188.0, 91.4],
[182.9, 89.1],
[176.5, 85.0],
[175.3, 69.1],
[175.3, 73.6],
[188.0, 80.5],
[188.0, 82.7],
[175.3, 86.4],
[170.5, 67.7],
[179.1, 92.7],
[177.8, 93.6],
[175.3, 70.9],
[182.9, 75.0],
[170.8, 93.2],
[188.0, 93.2],
[180.3, 77.7],
[177.8, 61.4],
[185.4, 94.1],
[168.9, 75.0],
[185.4, 83.6],
[180.3, 85.5],
[174.0, 73.9],
[167.6, 66.8],
[182.9, 87.3],
[160.0, 72.3],
[180.3, 88.6],
[167.6, 75.5],
[186.7, 101.4],
[175.3, 91.1],
[175.3, 67.3],
[175.9, 77.7],
[175.3, 81.8],
[179.1, 75.5],
[181.6, 84.5],
[177.8, 76.6],
[182.9, 85.0],
[177.8, 102.5],
[184.2, 77.3],
[179.1, 71.8],
[176.5, 87.9],
[188.0, 94.3],
[174.0, 70.9],
[167.6, 64.5],
[170.2, 77.3],
[167.6, 72.3],
[188.0, 87.3],
[174.0, 80.0],
[176.5, 82.3],
[180.3, 73.6],
[167.6, 74.1],
[188.0, 85.9],
[180.3, 73.2],
[167.6, 76.3],
[183.0, 65.9],
[183.0, 90.9],
[179.1, 89.1],
[170.2, 62.3],
[177.8, 82.7],
[179.1, 79.1],
[190.5, 98.2],
[177.8, 84.1],
[180.3, 83.2],
[180.3, 83.2]
]
}]
});
<script src="https://code.highcharts.com/highcharts.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>
<div id="container"></div>

How to parse multi-level nested Array JSON and show it in SwiftUI's outline-group?

The below code is the JSON file which will be coming from server . We want to save it locally in core-data(or other db) and then show it in tableview/stackview or webview if possible.
[{
"book_title": "સત્સંગિજીવન સાગર મંથન",
"is_live": false,
"user_can_copy": true,
"book_content": [
{
"title": "સત્સંગિજીવન માહાત્મ્ય",
"type": "title",
"child": [
{
"title": "૦૧. પૂર્વભૂમિકા",
"type": "title",
"child": [
{
"title": "૦૧. મંગલાચરણ",
"type": "title",
"child": [
{
"title": "<p>સતતં નિજમૂર્તિ ચિન્તકાનામ્, અધિક શ્વેત મનોહર પ્રકાશે ।<br />હૃદિ દર્શિત રમ્ય દિવ્યરૂપં, ભગવન્તં તમહં હરિં નમામિ ।।</p><h3 style='text-align: center;'><strong>( </strong><strong>અર્થ</strong><strong> )</strong></h3><p style='text-align: justify;'> “હંમેશાં પોતાની મૂર્તિનું ચિંતન કરનારા, ભક્તજનોના હૃદય કમળમાં જણાતા અત્યંત શ્વેત મનોહર પ્રકાશવાળા, અક્ષર બ્રહ્મમાં જેમણે બતાવ્યું છે દિવ્યરૂપ એવા ભગવાન શ્રીહરિને હું નમસ્કાર કરું છું.”</p><p style='text-align: justify;'> અનંતકોટિ બ્રહ્માંડોના ઉત્પત્તિના કારણ તથા અનંત ઐશ્વર્ય યુક્ત એવા પૂર્ણપુરુષોત્તમ શ્રી સ્વામિનારાયણ મહાપ્રભુજી તથા આપણા (ઉદ્ધવ) સંપ્રદાયના આદ્ય સ્થાપક ઉદ્ધવાવતાર શ્રી રામાનંદસ્વામી તથા જેની શિષ્ય પરંપરાગતમાં મને શિષ્ય બનવાનો સુલભ અવસર પ્રાપ્ત થયો છે, જેઓને ખુદ સ્વામિનારાયણ ભગવાન ગુરુ તરીકે માનીને મર્યાદા રાખતા અને જેઓને સત્સંગની 'મા' તરીકેનું બિરુદ આપી શ્રીહરિજીએ બહુમાન કર્યું હતું, એવા સર્વગુણે સંપન્ન મારા આદિ ગુરુ સદ્ગુરુ શ્રી મુક્તાનંદ સ્વામી તથા મૂળ અક્ષરમૂર્તિ યોગીરાજ સદ્ગુરુ ગોપાળાનંદ સ્વામી તથા જેઓને ખુદ શ્રીજી મહારાજે પોતાને સ્થાને બેસાડી સંપ્રદાયની ધુરા સોંપી આચાર્યપદ અર્પણ કર્યું છે એવા, સંતોનો અપાર મહિમા સમજનારા અને ગૃહસ્થાશ્રમમાં હોવા છતાં નિષ્કામી વ્રતને ધારણ કરનાર એવા પ. પૂ. ધ. ધુ. ૧૦૦૮ આચાર્ય શ્રી રઘુવીરજી મહારાજ તથા ધ્યાનના અંગવાળા અને આત્મનિષ્ઠાને સાંગોપાંગ જીવનમાં ઉતારનારા પ.પૂ.ધ.ધુ.૧૦૦૮ આચાર્યશ્રી અયોધ્યાપ્રસાદજી મહારાજ તથા સર્વે મહાન સંતો અને મહાન ભક્તોના ચરણોમાં વંદના કરી 'ગ્રંથરાજ શ્રીમદ્ સત્સંગિજીવન' માંથી મારી અલ્પમતિ અનુસાર મંથન કરી સાર રૂપ ઘી શોધવા માટે જઇ રહ્યો છું.</p>",
"type": "content",
"child": null
}
]
},
{
"title": "૦૨. ભારતની દુર્દશા",
"type": "title",
"child": [
{
"title": "<p style='text-align: justify;'> હે વહાલા ભક્તો ! બસો વર્ષ પહેલાં અઢારમાં સૈકામાં અંધાધૂંધી અતિ ચાલી રહી હતી. ભક્તિના નામે ભ્રષ્ટાચાર, ધર્મના નામે ધતિંગ અને જ્ઞાનના ગુમાનમાં મસ્ત બની ધર્મગુરુઓ ભોળા મુમુક્ષુઓને છેતરતા હતા.<br /> વૈરાગ્યની કેવળ વાતો કરીને વૈરાગીઓ વિલાસી બની ગયા હતા. વિદ્વાનો સત્શાસ્ત્રોના અવળા અર્થો કરીને લોકોને ભરમાવી રહ્યા હતા. દુષ્ટોનું ચારેબાજુ જોર વધી રહ્યું હતું. રાજાઓ અન્યાયી થઇ ગયા હતા, તેઓ પ્રજાની દાદ-ફરિયાદ સાંભળતા ન હતા. ચોર-લૂંટારાઓનો ત્રાસ સર્વત્ર વ્યાપી ગયો હતો. નિર્દોષ નાની બાલિકાઓને દૂધ પીતી કરવાના નિમિષે ક્રૂરપણે દૂધમાં ડૂબાડી મારી નાખવામાં આવતી હતી. પતિ મૃત્યુ પામે તો તેની પાછળ તેમની પત્નીઓને પરાણે પકડીને ચિતામાં બેસાડી જીવતી સળગાવી દેવામાં આવતી હતી. નિર્દોષ પશુઓને યજ્ઞના નામે મારવામાં આવતા હતા. પોતાની રસ લોલુપતાને કારણે દારુ-માંસનું નૈવદ્ય, દેવ-દેવીઓ આગળ કરવામાં આવતું હતું. ભેખમાં ભગવાન રહેલા છે આવું સમજાવી ભોળી સ્ત્રીઓને પોતાનો મહિમા સમજાવી વામમાર્ગીઓ અને ધર્મગુરુઓ શીયળભ્રષ્ટ કરી વ્યભિચાર કરતા હતા.<br /> સત્તાની સાઠમારીમાં લોકોના જીવ અધ્ધર રહેતા અને 'સૂંડલે ઉચાળા' જેવી તેમની સ્થિતિ હતી. રાજકીય, આર્થિક કે સામાજીક ક્ષેત્રે સમગ્ર ભારતનું ચિત્ર ધૂંધળું હતું.<br /> ગુજરાત અને સૌરાષ્ટ્રની ભૂમિમાં તો કેર વર્તી રહ્યો હતો. કર્નલ વોકર ઇ. સ. ૧૮૦૭ માં સૌરાષ્ટ્રમાં આવ્યા ત્યારે સારાયે સૌરાષ્ટ્રમાં અંધાધૂંધી અને અરાજકતા વ્યાપેલાં હતાં. દર વર્ષે ખંડણી ઉઘરાવવા આવતા મરાઠા લશ્કરો ખુલ્લેઆમ લૂંટ ચલાવતા હતા. ('હિસ્ટરી ઓફ કાઠિયાવાડ'ના આધારે)<br /> ધાર્મિક ક્ષેત્રે પણ ભારતની દુર્દશા ઓછી ન હતી. આજ સમયમાં સંન્યાસીઓ પ્રજાને માર્ગદર્શન આપવાને બદલે પ્રજા ઉપર આફતોનો વરસાદ વરસાવતા હતા. ભારતની ભોળી, અજ્ઞાન અને વ્હેમીપ્રજા તેમનામાં ગુરુભાવ રાખી, તેમની પાસેથી અર્થ અને કામની આશા સેવી તેમની જંગાલિયતને પોષતી હતી. આ જમાતનો ઇતિહાસ વિચિત્ર છે. ઠેઠ કાબૂલથી માંડીને તિબેટ ના દક્ષિણ ભાગ સુધીના પ્રદેશ ઉપર જાણે તેમણે સત્તા જમાવી હોય તેવું લાગતું હતું. તે બાવાઓ ગામડાઓમાંથી અને શહેરોમાંથી તંદુરસ્ત બાળકોનું અપહરણ કરીને પોતાના શિષ્યો બનાવતા હતા. તથા જાત્રાને બહાને ગામોગામ ફરતા હતા. (ધી સંન્યાસિસ ઓફ મૈમનસિંહ ' પા.-૨૨)<br /> વૈદિક ધર્મના તમામ નિયમોને અવગણિને મદ્ય, માંસ અને મૈથુનમાં સૌ આસક્ત બની ગયા હતા. વામ માર્ગ, ચોળિયો માર્ગ અને શક્તિ પંથ વગેરે પંથો વ્યભિચારની પ્રવૃતિમાં જ મોક્ષ માનતા હતા અને મનાવતા પણ હતા. ગુજરાતમાં મુખ્યત્વે શૈવ, વૈષ્ણવ, જૈન અને શાક્ત એ સંપ્રદાયો જોરમાં પ્રચલિત હતા. તેમાંપણ શાક્ત મત વધારે પ્રસરતો હતો. આ અરસામાં મહેમદાવાદમાં એક બ્રાહ્મણના ઘરમાંથી મહાજને ૬૦ મણ માંસ કઢાવ્યું હતું. તે સમયનું વર્ણન નિષ્કુળાનંદ સ્વામી લખે છે કે-</p><h3 style='text-align: center;'>(ચોપાઇ)</h3><p style='text-align: justify;'>  અસત્ય ગુરુએ અવળું બતાવી, દીધો અધર્મ ધર્મ ઠરાવી ।<br />  રાજા ઉન્મત થઇ અપાર, કર્યો સત્ય ધર્મનો સંહાર ।।<br />  આપે પાપ કરે અણલેખે, તેમ પ્રજા કરે દેખા દેખે ।<br />  નરનારી નિયમમાં નથી, કહીએ તેની ભૂંડાઇ શું કથી ।।<br />  ત્યાગી ગૃહી તજી નિજધર્મ, વિષય સારુ કરે છે વિકર્મ ।<br />  નરનારી અપાર છે કામી, કરે ગોત્રમાં ગમન હરામી ।।</p><p style='text-align: right;'>(ભ.-ચિ.-પ્ર-૬-૭)</p><p style='text-align: justify;'> હે ભક્તો ! આવા રાજકીય અને ધાર્મિક અંધાધૂંધીના સમયમાં ગુજરાત અને સૌરાષ્ટ્રનું નવનિર્માણ કરવાનું કામ કેટલું દુષ્કર હતું તેનો સહેજે ખ્યાલ આવી જાય છે. તો આવા ઘોર કળિયુગમાં સ્વયં પૂર્ણ પુરુષોત્તમ શ્રી સ્વામિનારાયણ ભગવાન આ પૃથ્વી ઉપર ઉત્તર પ્રદેશમાં ગોંડા જીલ્લાના છપૈયા ગામમાં પ્રગટ થઇને ૧૧, વર્ષ ૩ માસ અને ૧ દિવસની ઉંમરે ઘરનો ત્યાગ કરી, ૭ વર્ષ ૧ માસ અને ૧૧ દિવસ વન વિચરણ કરી ગુજરાત અને સૌરાષ્ટ્રમાં પધારી સદ્ધર્મનું સ્થાપન કરી મુમુક્ષુઓને યમપુરીના માર્ગે જતા બચાવી લીધા હતા. તેથી તો ત્રિભુવનભાઇ વ્યાસે લખ્યું છે કે-</p><h3 style='text-align: center;'>(છંદ)</h3><p>“ઘોર કલિકાલના દોર છૂટ્યા અને દુષ્ટતાનું બધે જોર વ્યાપ્યું,<br />ભક્તિ સદ્ધર્મના માર્ગ રુંધી દિધા, કર્મ નિષ્કામનું મૂળ કાપ્યું ।,<br />વેદ સત્શાસ્ત્રના અર્થ અવળા કર્યા, પંડિતોએ પાપમાર્ગે જઇને,<br />ધન્ય હો ધર્મધ્વજ રોપિયો એ સમે, સ્વામિનારાયણે પ્રગટ થઇને. ।।”૧<br />“મંત્ર મૂઠ ચોટને કામણો ટુમણો, દેવ દૂગરા ભૂવાને ભરાડી,<br />ભૂતને પલિત જીન ડાકિણી શાકિણી, પીડતા તા પ્રજાને અનાડી ।<br />ઠગ ધુતારા અને જાદુ કીમયા ગરા, ડારતા લોકને પેંધી જઇને,<br />ધન્ય હો ધર્મધ્વજ રોપિયો એ સમે, સ્વામિનારાયણે પ્રગટ થઇને.।।” ૨</p>",
"type": "content",
"child": null
}
]
},
{
"title": "૦૩. લીલા શુંકામ કહેવાય ?",
"type": "title",
"child": [
{
"title": "<p style='text-align: justify;'> હે ભક્તો ! પરમાત્માએ પ્રગટ થઇ બાળલીલા કરી, વનમાં વિચરણ કર્યું, સૌરાષ્ટ્રમાં પધાર્યા અને ત્યાંથી અનેક ગામડાઓમાં પધારી જે જે લીલાઓ કરી તે તે લીલાઓના મુખ્ય મુખ્ય પ્રસંગો શતાનંદસ્વામીએ લખ્યા તે ગ્રંથનું નામ છે 'સત્સંગિ જીવન. તો તે ગ્રંથના કઠિન શબ્દો સરળ ભાષામાં તેના સાર રૂપે પ્રસંગોપાત્ અનેક દ્રષ્ટાંતો સહિત આપણે સાંભળીએ અને જીવનમાં ઉતારીએ.</p><p style='text-align: justify;'> ભગવાન પૃથ્વી ઉપર પધારી જે જે ક્રિયાઓ કરે છે તેને લીલા કહેવાય છે અને મનુષ્ય જે જે ક્રિયાઓ કરે છે તે તે ક્રિયાઓને કર્મ કહેવાય છે. કારણકે - ભગવાન જે જે ક્રિયાઓ કરે છે તે તે ક્રિયાઓ પોતાની ઇંદ્રિયોને લાડ લડાવવા માટે નથી કરતા, જ્યારે મનુષ્ય જે જે ક્રિયાઓ કરે છે તે તે ક્રિયાઓ ઇંદ્રિયોની ઇચ્છા પૂર્ણ કરવા માટે કરે છે. ભગવાન ક્રિયાઓ કરે છે તેતો ભક્તોની ઇચ્છાઓ પૂર્ણ કરવા માટે કરે છે. ભગવાન જે જે ક્રિયાઓ કરે છે તે તેનું કર્મફળ તેઓને ભોગવવું પડતું નથી, પરંતુ મનુષ્ય ક્રિયાઓ કરે છે તેનું કર્મફળ તેને અવશ્ય ભોગવવું પડે છે. તથા ભગવાન જે જે ક્રિયાઓ કરે છે તેની પાછળ નિસ્વાર્થ હોય છે, જ્યારે મનુષ્ય જે જે ક્રિયાઓ કરે છે તેની પાછળ સ્વાર્થ હોય છે. અને ભગવાન પ્રગટ થાય છે તેની પાછળ અનેક રહસ્યો છુપાયેલા હોય છે, જ્યારે મનુષ્ય જન્મે છે તેતો પોતાના પ્રારબ્ધ કર્મને ભોગવવા માટેજ જન્મે છે. તો આ રીતે પરમાત્માની ક્રિયાનું અને જીવાત્માની ક્રિયાનું કારણ જુદું હોય છે, તે માટે જ પરમાત્મા જે કરે તેને લીલા કહેવાય છે.</p>",
"type": "content",
"child": null
}
]
},
{
"title": "૦૪. પરમાત્માને પ્રગટ થવાના હેતુઓ",
"type": "title",
"child": [
{
"title": "<p style='text-align: justify;'> હે ભક્તો ! આપણે હવે જોઇએ, ચોવિશ અવતારોને પ્રગટ થવાના હેતુઓ -<br /><strong>(૧)</strong> સનકાદિક :- નૈષ્ઠિક ઉર્ધ્વરેતા બ્રહ્મચર્યનું સ્થાપન કરવા.<br /><strong>(૨)</strong> વરાહ :- હિરણ્યાક્ષ દૈત્ય પૃથ્વીને પાતાળમાં લઇ ગયો હતો, તેથી તે દૈત્યને મારવા અને પૃથ્વીને પાતાળમાંથી ઉપર લાવવા.<br /><strong>(૩)</strong> યજ્ઞ :- સંસારના જીવોને યજ્ઞકર્મ શીખવવા માટે.<br /><strong>(૪)</strong> હયગ્રીવ :- વેદનું રક્ષણ કરવા (તેઓના નાકમાંથી વેદવાણી ઉત્પન્ન થઇ હતી. ભા.-દ્વિ.-અ.-૭મો.) તથા મધુ અને કૈટભ નામના અસુરો થકી બ્રહ્માજીની રક્ષા કરવા.<br /><strong>(૫)</strong> નર-નારાયણ :- ભારતમાં રહેલા મુમુક્ષુ જીવોના કલ્યાણ માટે તપ કરવા તથા સહસ્ત્રકુંચી નામના દૈત્યને મારવા.<br /><strong>(૬)</strong> નૃસિંહ :- હિરણ્યકશિપુને મારવા તથા પ્રહલાદજીની રક્ષા કરવા.<br /><strong>(૭)</strong> કપિલ :- કર્દમઋષિ અને દેવહૂતિની ઇચ્છા પૂર્ણ કરવા અને સાંખ્ય શાસ્ત્રનું જ્ઞાન દેવા.<br /><strong>(૮)</strong> દત્તાત્રેય :- અત્રિઋષિ અને અનસૂયાને પુત્રનું સુખ દેવા તથા ત્યાગ અને યોગ દેખાડવાને અર્થે લક્ષ લઇ ચોવિશ ગુરુકરી બોધદેવા.<br /><strong>(૯)</strong> ઋષભદેવ :- ત્યાગીઓને શિખામણ દેવા કે 'જગતથી નિસ્પૃહ રહો'.<br /><strong>(૧૦)</strong> પૃથુ :- પ્રજાઓનું રક્ષણ કરવા તથા રસરહિત પૃથ્વીને રસાળ કરવા.<br /><strong>(૧૧)</strong> મચ્છ :- સત્યવ્રત રાજાનું રક્ષણ કરવા અને શંખાસુર દૈત્યને મારી બ્રહ્માજીને વેદ પાછા લાવી દેવા.<br /><strong>(૧૨)</strong> કચ્છ :- સમુદ્રમંથન વખતે મંદ્રાચળ પર્વતને પીઠ ઉપર રાખવા.<br /><strong>(૧૩)</strong> ધન્વંતરી :- અમૃતનો ઘડો સમુદ્રમાંથી લઇ દેવતાઓને આપવા તથા ઔષધિઓના નામ,ગુણ અને ઉપયોગ બતાવવા.<br /><strong>(૧૪)</strong> હરિ :- મગરમચ્છ થકી હાથીનું રક્ષણ કરવા.<br /><strong>(૧૫)</strong> નારદ :- નારદ પંચરાત્રનું જ્ઞાન આપવા અને ભક્તિનો પ્રચાર કરવા.<br /><strong>(૧૬)</strong> વામન :- ઇન્દ્રને ત્રિલોકીનું રાજ્ય પાછું અપાવવા.<br /><strong>(૧૭)</strong> હંસ :- સનકાદિકોને તથા નારદજીને જ્ઞાન આપવા.<br /><strong>(૧૮)</strong> નારાયણ :- ધ્રુવજીને દર્શન દેવા.<br /><strong>(૧૯)</strong> પરશુરામ :- આસુરી વૃતિવાળા ક્ષત્રિઓને મારવા.<br /><strong>(૨૦)</strong> રામ :- રાવણ આદિક રાક્ષસોને મારવા અને બીજાં ઘણાં કારણે.<br /><strong>(૨૧)</strong> વ્યાસ :- લોકો સરળતાથી સમજી શકે તે માટે વેદના વિભાગો કરવા તથા પુરાણોની રચના કરવા.<br /><strong>(૨૨)</strong> શ્રીકૃષ્ણ :- કંસાદિક દુષ્ટોને મારવા અને પ્રેમીઓની ઇચ્છા પૂર્ણ કરવા.<br /><strong>(૨૩)</strong> બુદ્ધ :- અસુરોને મોહ ઉપજાવી અહિંસા ધર્મનું સ્થાપન કરવા.<br /><strong>(૨૪)</strong> કલ્કિ :- અધર્મનો નાશ કરી સત્યુગના ધર્મો સ્થાપવા (થશે.)<br /> હે ભક્તો ! આ રીતે દરેક મન્વંતરોમાં પરમાત્મા અવતાર લે છે, પરંતુ તેની પાછળ કંઇક કારણ છુપાયેલું હોય છે. તે માટે જ પ્રભુની તમામ ક્રિયાને લીલા કહેવામા આવે છે.તો પરમાત્માની ક્રિયાને લીલા શું કામ કહેવાય, તેનો તમોને ખ્યાલ આવી ગયો હશે.</p><p style='text-align: center;'><strong>(રાગઃ પૂર્વછાયો)</strong></p><p style='text-align: justify;'>હરિ કથા હવે આદરુ, સદમતિ શ્રોતા જે સાંભળે ।<br />સુણતા તે સુખ ઉપજે, વળી તાપ તનના તે ટળે ।।<br />સર્વે સંત સુજાણને, હું પ્રથમ લાગી પાય ।<br />આદરુ આ ગ્રંથને, જેમા વિઘન કોઇ ન થાય ।।<br />સારી કથા સુંદર અતિ, હું કહું કરી વિસ્તાર ।<br />જે જન મન દઇ સાંભળે, તે ઉતરે ભવજળપાર ।।<br />પ્રગટ પુરુષોતમના, ચરિત્ર પવિત્ર કહું અતિ ।<br />શ્રવણ દઇ જે સાંભળે, થાય તેની નિર્મળ મતિ ।।<br />એવી કથા આદરતા, અતિ ઉમંગ છે મારે અંગે ।<br />અંગમા આનંદ ઉલટ્યો, જાણું કયારે કહું ઉછરંગે ।।<br />અતિ હર્ષછે અંતરે, વળી આનંદ આવ્યો છે અંગમાં ।<br />સુંદર ચરિત્ર શ્રીહરિતણા, કહું હવે હું ઉમંગમાં ।।</p><p style='text-align: right;'>(ભક્તચિંતામણિ)</p>",
"type": "content",
"child": null
}
]
}
]
}
,
{
"title": "૦૨. ગ્રંથ મહિમા",
"type": "title",
"child": [
{
"title": "૦૧. સત્સંગિજીવન માહાત્મ્ય",
"type": "title",
"child": [
{
"title": "<p style='text-align: justify;'> હે ભક્તો ! સ્વામિનારાયણ ભગવાને પૃથ્વી ઉપર પધારીને જે જે લીલાઓ કરી, તે તે લીલાઓને સદ્ગુરુ શતાનંદસ્વામીએ સારરૂપે મુખ્ય મુખ્ય લખી તે ગ્રંથનું નામ છે 'સત્સંગિ જીવન'. તે સત્સંગિ જીવનનો મહિમા સદ્ગુરુ મુક્તાનંદસ્વામીએ નવ અધ્યાયમાં લખ્યો છે, તે હું સંક્ષેપમાં લખું છું.</p><p style='text-align: justify;'> મુક્તાનંદસ્વામીએ આ ગ્રંથનો મહિમા લખ્યો છે તેની પાછળનું કારણ એ છે કે- મુમુક્ષુઓને, આ શાસ્ત્ર કેટલું મહાન છે તેનો ખ્યાલ આવે. જેમકે, કોઇ પણ વ્યક્તિ ગમે તેટલી મહાન સત્તાધીશ હોય, બળવાન હોય, સંગીતકાર હોય, ખેલાડી હોય કે પછી મોટો બેરીસ્ટર હોય; તે તમામ લોકો આપણી સાથે બેસીને વાત કરતા હોય, ખાતાં હોય, પીતાં હોય અને સુતાં હોય, પરંતુ જ્યાં સુધી તેઓની ખરી ઓળખાણ નથી થઇ ત્યાં સુધી તેઓની સાથેના સહવાસથી અહો અહો પણું નહિ જણાય તથા આનંદ નહિ થાય.- પરંતુ જ્યારે આપણને ખ્યાલ આવે કે- “આ વ્યક્તિ તો અમેરિકાના પ્રેસિડેન્ટ છે. જેની સાથે હું વાત કરુ છું તેતો સૂપર સ્ટાર ખેલાડી છે. મારી બાજુમાં બેઠેલા સુપ્રીમકોર્ટના ન્યાયાધીશ છે. આવું જાણ્યા પછી તેઓ પ્રત્યેનું અહોઅહોપણું અને અંતરના ભાવ બીજી રીતના થઇ જાય છે. આની પાછળનું કારણ શું ? માણસતો તેના તેજ છે, તો પછી થોડીવારમાંજ આટલું બધું કેમ પરિવર્તન થઇ ગયું ? તો તેની પાછળનું જો કોઇ કારણ હોય તો તેજ છે કે તેઓની મોટાઇ (મહિમા) આપણે સમજી ગયા છીએ, આપણને જ્ઞાન થઇ ગયું કે, આ વ્યક્તિ તો આખા દેશનો પ્રમુખ છે, આખા દેશમાં આની સત્તા ચાલે છે. અરે ! આ તો જજ સાહેબ છે ! તે જે ચુકાદો આપે તેજ પ્રમાણે સજા કરી શકાય છે.”</p><p style='text-align: justify;'> હે ભક્તો ! તેવીજ રીતે આ સત્સંગિ જીવન શાસ્ત્ર પણ પ્રથમ તો એક બીજા સામાન્ય પુસ્તક જેવું જ જોનારાઓને લાગે, તેથી તે શાસ્ત્ર વાંચવામાં મુમુક્ષુઓનું મન ન લાગે, અને તેનું અધ્યયન કરવાની તેઓને ઇચ્છા જ ન થાય, તથા ભાવ ન જાગે તેમ જ પૂજ્ય બુદ્ધિ પણ ન થાય,- કારણકે તે શાસ્ત્રનો મહિમા તેઓએ જાણ્યો નથી. જેમ દેશના સત્તાધીશોની ઓળખાણ જ્યાં સુધી આપણને થઇ ન હતી ત્યાં સુધી તેઓને આપણે સામાન્ય વ્યક્તિ જેવા સમજતા હતા, પરંતુ બીજા માણસે તેઓની ઓળખાણ આપી ત્યારે આપણને તે વ્યક્તિ પ્રત્યે સામાન્ય મનુષ્યની બુદ્ધિ હતી તે જતી રહી. તેજ રીતે સત્સંગિ જીવન શાસ્ત્ર બીજા સામાન્ય પુસ્તક જેવું જ, જોવાથી લાગે, પરંતુ તેની ઓળખાણ મુક્તાનંદસ્વામી જેવા મહાપુરુષ કરાવે ત્યારે જ તે શાસ્ત્ર વાંચવાની ઇચ્છા થાય છે અને તેમાં પૂજ્યબુદ્ધિ થાય છે.</p>",
"type": "content",
"child": null
}
]
},
{
"title": "૦૨. હીરાનું દષ્ટાંત્",
"type": "title",
"child": [
{
"title": "<p style='text-align: justify;'> હે ભક્તો ! દ્રષ્ટાંત્ વિના સિદ્ધાંત્ બરાબર સમજાતો નથી, માટે એક પ્રસંગ સાંભળો. એક ભરવાડ હતો. એક દિવસ ઘેટાં-બકરાં લઇને જંગલમાંથી તે ઘેર આવતો હતો. ત્યારે રસ્તામાં એક નદી આવી તેથી તેમાં પશુઓને પાણી પાયું અને પોતે પીતો હતો, ત્યાં તેની નજર એક ચમકદાર પથ્થર ઉપર પડી, એટલે તેને લઇ લીધો અને બકરીના ગળે બાંધ્યો.</p><p style='text-align: justify;'> પછી તે એક દિવસ બકરાં ચારવા જતો હતો ત્યારે ગામના કપૂરચંદશેઠ સામા મળ્યા અને તેમણે આ ચમકતો પથ્થર જોયો, તેથી દસ રૂપિયા આપીને ખરીદી લીધો. પછી તેને લઇને શહેરમાં ગયા અને ઝવેરીને બતાવ્યો. ઝવેરી તો ઓળખી ગયો કે, “આ પથ્થર તો સાચો હીરો છે.” તેથી તેમણે એક હજાર રૂપિયા આપી ખરીદી લીધો. પછી તેણે મુંબઇ જઇને મોટા ઝવેરીને બતાવ્યો, તો તેણે લાખ રૂપિયામાં લીધો. ત્યાર પછી તે ઝવેરીએ હોંગકોંગ કે બેલજીયમ જેવા મોટા નગરમાં જઇ એક કરોડમાં વેચ્યો. પછી તે ઝવેરી પેરીસ અને ન્યુયોર્ક જેવા નગરોમાં ગયો અને તે અણમોલ હીરાને એક અબજ રૂપિયામાં વેચ્યો. આ રીતે જેમ જેમ હીરો આગળ ગયો તેમ તેમ તેની કિંમત પણ વધતી ગઇ.</p><p style='text-align: justify;'> હે ભક્તો ! તમોને સમજાઇ ગયું હશે કે એક જ હીરો, તેનો તે હીરો, છતાં પણ તેની કિંમત દસ રૂપિયાથી લઇને અબજો રૂપિયા સુધી થઇ ! તો તેનું કારણ શું ? તો તેનું જો કોઇ કારણ હોય તો એ છે કે હીરાના પારખનારામાં ફેર હતો.</p><p style='text-align: justify;'> આ દ્રષ્ટાંતનો સિદ્ધાંત એ બતાવે છે કે, સત્સંગિ જીવન શાસ્ત્ર તો એનું એજ છે, પરંતુ મહિમા સમજનારાઓમાં ફેર છે. જેમ મોટા વિદેશના ઝવેરીઓએ તે હીરાની કિંમત અબજ રૂપિયા કરી અને ગામડાના વાણિયે દસ રૂપિયા કરી; એજ રીતે આપણે પણ શાસ્ત્રો અને પુરાણોના રાજારૂપ સત્સંગિ જીવનરૂપી હીરાનું મૂલ્ય ગામડાના વણીક જેવું સમજીએ છીએ અને મુક્તાનંદસ્વામી તેની કિંમત વિદેશના ઝવેરી જેવી સમજે છે.</p><p style='text-align: justify;'> માનીલ્યો કે કોઇ વ્યકિતને સાચા હીરા પારખવાની કળા જાણવી હોય તો તેને ગામડાના વાણિયા પાસે જવું જોઇએ કે પછી મોટા ઝવેરી પાસે ? તો તુરંત આપણે કહીંશું કે ગામડાનો વણીક પૂરેપૂરી પરખ કયાં જાણે છે ? તે તો અણમોલ હીરાને દસ રૂપિયાનો જાણે છે; માટે ખરેખરી પિછાન જો હીરાની જાણવી હોય તો પરદેશનાં ઝવેરી પાસે જ જવું પડે. એજ રીતે આ સત્સંગિ જીવનનો મહિમા જેવો છે તેવો સમજવો હોય તો તે મુક્તાનંદસ્વામીના મુખથી જ સાંભળવો જોઈએ. તેથી જ હવે આપણે સ્વામીના મુખારવિંદથી આ ગ્રંથના મહિમાનું મધુરપાન કરીને કૃતાર્થ બનીએ.</p>",
"type": "content",
"child": null
}
]
},
{
"title": "૦૩. ગ્રંથ મહિમા",
"type": "title",
"child": [
{
"title": "<p style='text-align: center;'><strong>અધ્યાય - ૧ લો</strong></p><p style='text-align: center;'>ચાલુ પ્રસંગ - ગ્રંથ મહિમા</p><p style='text-align: justify;'>સત્સંગિ જીવનનો મહિમા લખતા પહેલા, મુક્તાનંદસ્વામી મંગલાચરણ કરે છે</p><p style='text-align: center;'>(શાર્દૂલવિક્રીડિતવૃત્ત)</p><p style='text-align: justify;'>જુષ્ટો મુક્તગણૈર્નિજાક્ષરપદે, દિવ્યાકૃતિઃ સાદરં;<br />યો ભક્તૌ પ્રકટીબભૂવ દયયા, ધર્માજ્જન શ્રેયસે ।<br />અત્રોન્મૂલયિતું ત્વધર્મમવિતું, સાધૂંશ્ચ ધર્મં શુભં;<br />ધ્યાયે તં હરિમીશ્વરેશ્વરમહં, સદ્બુદ્ધિદં સર્વદા ।।૧।।</p><p style='text-align: center;'>(અર્થ)</p><p style='text-align: justify;'> “જે સર્વ ઇશ્વરોના પણ ઇશ્વર, પરબ્રહ્મ પુરુષોત્તમ નારાયણ, પોતાના અક્ષરધામમાં અપ્રાકૃત દિવ્ય સ્વરૂપને ધારી, મુક્તોના મંડળોએ સેવ્યા છે જેમને એવા, અર્થાત્ અનંતકોટિ મુક્તો જેઓની અખંડ સેવા કરી રહ્યા છે, તેજ ભગવાન દયા કરીને આ પૃથ્વી ઉપર ખૂબ અધર્મ વધી ગયો હતો તેનો નાશ કરવા અને ધર્મનું રક્ષણ કરવા તથા સંતો-ભક્તોનું રક્ષણ કરવા ધર્મદેવ અને ભક્તિદેવી થકી પ્રગટ થયા તેમજ સારી બુદ્ધિને આપનારા એવા શ્રીહરિજીનું હું ધ્યાન કરુ છું.”</p><p style='text-align: justify;'> તે દયાળુ પ્રભુએ ભાવિ મુમુક્ષુઓના મોક્ષને માટે શતાનંદ સ્વામી પાસે સત્સંગિજીવન ગ્રંથ બનાવડાવ્યો, તેનું માહાત્મ્ય હું શ્રીહરિજી અને એકાંતિક ભક્તોની પ્રસન્નતા માટે લખું છું.</p><p style='text-align: justify;'> શ્રીજી મહારાજ સ્વધામ પધાર્યા પછી એક સમયે, દાદાખાચરના દરબારમાં ગોપીનાથજી મહારાજના મંદિર વિષે એક મોટી સભા થઈ હતી. તે સભામાં બન્ને આચાર્યો, સંતો, પાર્ષદો અને હરિભક્તો બેઠા હતા. તે સમયમાં ત્યાં શતાનંદસ્વામી પધાર્યા, તેથી સભામાં બેઠેલા દરેકે તેઓનું સ્વાગત કર્યું અને સુંદર આસન ઉપર બેસાડ્યા.</p><p style='text-align: justify;'> ત્યાર પછી રઘુવીરજી મહારાજ અને અયોધ્યાપ્રસાદજી મહારાજ બન્ને આચાર્યોએ શતાનંદસ્વામીને વિનંતી કરીને કહ્યું : “હે સ્વામી ! તમોએ શ્રીહરિજીની આજ્ઞાથી સત્સંગિજીવન નામનો ગ્રંથ બનાવ્યો છે, તો તમારા મુખ થકી તે ગ્રંથ અમો સાંભળવા ઈચ્છીએ છીએ. કેમ જે આપ જેવા મહાન્ વક્તાના મુખ થકી અમારા જેવા શ્રોતાઓને ક્યારે સાંભળવાનો સુયોગ પ્રાપ્ત થાય? અને મનુષ્ય જન્મ તેઓનો જ સફળ થયો ગણાય કે, જેઓએ શ્રીહરિજીની દિવ્ય કથાને સાંભળવાનો લ્હાવો લીધો છે.“ “યદત્ર જન્મ સાફલ્યં કથાનાં શ્રવણાત્ હરેઃ ।।૧૧।।”</p><p style='text-align: justify;'> હે ભક્તો ! સદ્ગુરુ આધારાનંદ સ્વામીએ પણ 'હરિચરિત્રામૃત સાગર' એ ગ્રંથમાં આ પ્રસંગ વર્ણવ્યો છે કે -</p><p style='text-align: center;'>(હરિગીત છંદ )</p><p style='text-align: justify;'>ધર્મવંશી સંત હરિજન, મિલે અપરમપારહિ;<br />ગોપીનાથકે મંદિરમહિ સભા ભઈ મહાસારહિ ।<br />જન્મ મરણ તિન તાપહિ સબ તાપસે મહત હૈ;<br />શાંતિ કારણ હરિચરિત્ર હૈ સબમુનિ કહત હૈ ।।</p><p style='text-align: center;'>(અર્થ )</p><p style='text-align: justify;'> “ગોપીનાથજીના મંદિરમાં ધર્મકુળ, સંતો અને હરિભક્તો તમામ ભેગા થઈને કથા સાંભળતા હતા. કારણ કે- જન્મ-મરણ અને ત્રણ પ્રકારના તાપો તે દરેક તાપો કરતાં મોટા છે, અને તે તાપોને બુઝાવવાની શક્તિ શ્રીહરિજીના ચરિત્રોમાં જ છે; એમ તમામ સંતોનું કહેવું છે.”</p>",
"type": "content",
"child": null
}
]
},
{
"title": "૦૪. ત્રિવીધ તાપોની સમજ",
"type": "title",
"child": [
{
"title": "<p style='text-align: justify;'> હે ભક્તો ! આધારાનંદસ્વામી કહે છે કે, “ભગવાનના લીલા ચરિત્રો છે, તેજ આપણને ત્રણ પ્રકારના તાપ થકી છોડાવનારા છે”. તો તે ત્રણ પ્રકારના તાપોને આપણે જુદી જુદી રીતે સમજીએઃ-<br /><strong>(૧)</strong> આધિ :- આધિ એટલે માનસિક દુઃખો, માણસ રૂપિયાથી ગમે તેટલો સુખી હોય, પરંતુ માનસિક શાંતિ તેના જીવનમાં જો નહિ હોય તો તે રૂપિયા તેને બોજારૂપ બની જશે. માટે સ્વામી કહે છે કે પ્રભુના લીલા ચરિત્રો મનને શાંતિ આપે છે.<br /><strong>(૨)</strong> વ્યાધિ :- વ્યાધિ એટલે શારીરિક રોગો. અનેક પ્રકારના તાવો અને અનેક પ્રકારની બીમારીઓ. આયુર્વેદના મત પ્રમાણે અમુકરોગો એવા હોય છે કે ઔષધ વિના મટી જાય. તેવા દર્દીઓને જૂના જમાનામાં વૈદ્યો કહેતા કે -“તમારે દિવસે લીંબડા નીચે જ પથારી રાખવી અને ત્યાંજ સૂવું તથા રાત્રિએ ખુલ્લી જગ્યામાં જ ચંદ્રના અજવાળે સૂવું.” આ રીતની દર્દી ચરી (પરેજી) પાળતો, તેના કારણે દવા વિનાપણ રોગમુક્ત થઈ જતો હતો.<br /> તેવી જ રીતે હરિચરિત્ર પણ એક મહાન ઔષધી છે. જેમ લીંબડા નીચે અને ચંદ્રશાળામાં સૂઈ જનાર વ્યક્તિ,વિના ઔષધે સારો થઈ જાય છે, તેમ શ્રદ્ધા સહિત પરમાત્માના ચરિત્રો સાંભળનાર માણસ પણ દવા વિના સારો થઈ જાય છે. કારણ કે- અમુક રોગો ટેન્સનથી જ થતા હોય છે. પછી તે વ્યક્તિ લીલા ચરિત્રોમાં પોતાનું મન પરોવી દે તેના કારણે ટેન્સન નીકળી જાય અને ટેન્સન નીકળવાથી, તેના કારણે થયેલા રોગો પણ નાબુદ થઈ જાય છે.<br /> દેહમાં હરકોઈ વ્યક્તિને દર્દ હોય તેની પીડા તેને મનની અંદર પણ વિશેષે કરીને હોય છે. તે મનની પીડા મટી જાય તેના કારણે દેહના દર્દની પણ પીડા ઓછી થઈ જાય છે. તે વિષેનો એક પ્રસંગ સાંભળીએ -</p>",
"type": "content",
"child": null
}
]
},
{
"title": "૦૫. સ્વરૂપાનંદ સ્વામીને પીડા મટી ગઈ",
"type": "title",
"child": [
{
"title": "<p style='text-align: justify;'> એક સમયે ગઢપુરમાં સ્વરૂપાનંદ સ્વામી બહુ જ બીમાર હતા, તેથી શ્રીજીમહારાજ તેઓની ખબર કાઢવા ગયા, અને સ્વામીને પીડા વિષે પૂછ્યું. ત્યારે સ્વામી બોલ્યા : “હે મહારાજ ! તાવની પીડા સહન થતી નથી.” પછી શ્રીહરિજીએ કહ્યું : “સ્વામી ! દાદાખાચરના દરબારમાં રહીને અમોએ જે જે લીલાઓ કરી છે તે તે લીલાઓનું ચિંતવન કરો, તેથી તમારી પીડા ઘટી જશે.” પછી સ્વરૂપાનંદસ્વામીએ તેવી રીતે લીલાઓના ચિંતવનમાં પોતાના મનને જોડી દીધું, તેના કારણે મનની તમામ પીડા મટી ગઈ અને સાથોસાથ દેહની પીડા પણ ઘટી ગઈ તથા પરમ શાંતિ થઈ ગઈ ! આ પ્રસંગની નોંધ નંદ સંતોએ વચનામૃતમાં પણ લીધી છે. તો આ રીતે હરિ ચરિત્રથી દેહના દુઃખો પણ દૂર થાય છે.<br /><strong>(૩)</strong> ઉપાધિ :- ઉપાધિ એટલે બીજા તરફથી આવતો ઉપદ્રવ. જેમકે આપણા દુશ્મનો હેરાન કરે, અતિ વરસાદ પડે, અતિ દુષ્કાળ પડે, અતિ ઉંદરો ઉત્પન્ન થઈને માલ-મિલ્કતને નુકશાન કરે અને અતિ તીડ પડીને પાકને ખાઈ જાય. આ બધી ઇતિઓને ઉપાધિઓ કહેવાય છે. તે સર્વે ઉપાધિઓ પરમાત્માના લીલા ચિંતવનથી અને લીલા શ્રવણથી ઘટી જાય છે, કારણ કે- શ્રીહરિજીએ પ્રથમના ૭૦ મા વચનામૃતમાં કહ્યું છે કે - “સત્સંગ કરે છે તેને શૂળી જેટલું દુઃખ હોય તો કાંટે મટે છે.” તેથી આધારાનંદ સ્વામી કહે છે કે - “પરમાત્માના લીલા ચરિત્રો સાંભળવાથી ત્રણ પ્રકારના તાપો શમી જાય છે.”</p>",
"type": "content",
"child": null
}
]
}]
The above code will be coming from server directly to the logged in user notification button, where user will see the books uploaded from server. Once user sees the books, and clicks the desired book. he clicks. we want to locally store the book.
Below is the sample screen from the same project which has been implemented for android and its works. All we need to do is similar with ios.enter image description here
To parse your json data, make sure it is valid json to start with,
your posted data is not, there are some missing closing ] and }.
Then create a set of swift structs to match your data. See some example below.
Then display them looping through the data (here using SwiftUI hierarchical list). Here is some sample code to show your data
(modified by adding the missing ]}]}]}])
EDIT: for an array of books.
import SwiftUI
#main
struct TestApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
struct ContentView: View {
#State var books: [Book] = [] // <-- here
#State var selection: Book?
var body: some View {
NavigationView {
// List(books) { book in
// ForEach(book.bookContent) { bookContent in
// Section(header: Text(bookContent.title)) {
// OutlineGroup(bookContent.child, children: \.child) { item in
// Text(item.title)
// }
// }
// }
// }
ForEach(books) { book in // <-- here
ForEach(book.bookContent) { bookContent in
VStack {
Text(bookContent.title)
List(bookContent.child, children: \.child) { item in
Text(item.title)
}
}
}
}
}.navigationViewStyle(.stack)
.onAppear {
loadData()
}
}
// a file with valid json data for testing
func loadData() {
do {
if let url = Bundle.main.url(forResource: "books", withExtension: "json") {
let data = try Data(contentsOf: url)
books = try JSONDecoder().decode([Book].self, from: data) // <-- here
}
} catch {
print("error: \(error)")
}
}
}
struct Book: Identifiable, Codable {
let id = UUID()
var bookTitle: String = ""
var isLive: Bool = false
var userCanCopy: Bool = false
var bookContent: [BookContent] = []
enum CodingKeys: String, CodingKey {
case bookTitle = "book_title"
case isLive = "is_live"
case userCanCopy = "user_can_copy"
case bookContent = "book_content"
}
}
struct BookContent: Identifiable, Codable {
let id = UUID()
var title, type: String
var child: [Child]
}
struct Child: Identifiable, Codable {
let id = UUID()
var title, type: String
var child: [Child]?
}

Understanding Apple remote receipts

This is the code in my iOS project:
if let receiptURL = Bundle.main.appStoreReceiptURL, let data = try? Data(contentsOf: receiptURL) {
//send receipt data.base64EncodedString() to server
}
My server code
def verify():
json_data = request.get_json()
receipt = json_data["receipt"]
env = json_data["env"]
bundle_id = json_data["bundle_id"]
if env == "production":
endpoint = "https://buy.itunes.apple.com/verifyReceipt"
else:
endpoint = "https://sandbox.itunes.apple.com/verifyReceipt"
applePayload = {
"receipt-data": receipt,
"password": "mysecret",
"exclude-old-transactions": True
}
r = requests.post(endpoint, json=applePayload)
r.headers['Content-Type'] = "application/json; charset=utf-8"
return r.text
This is the Apple response when I send the receipt from an test account:
{"status":0, "environment":"Sandbox",
"receipt":{"receipt_type":"ProductionSandbox", "adam_id":0, "app_item_id":0, "bundle_id":"es.mediaregie.wholovesme", "application_version":"2", "download_id":0, "version_external_identifier":0, "receipt_creation_date":"2019-05-11 18:43:58 Etc/GMT", "receipt_creation_date_ms":"1557600238000", "receipt_creation_date_pst":"2019-05-11 11:43:58 America/Los_Angeles", "request_date":"2019-05-14 05:46:18 Etc/GMT", "request_date_ms":"1557812778939", "request_date_pst":"2019-05-13 22:46:18 America/Los_Angeles", "original_purchase_date":"2013-08-01 07:00:00 Etc/GMT", "original_purchase_date_ms":"1375340400000", "original_purchase_date_pst":"2013-08-01 00:00:00 America/Los_Angeles", "original_application_version":"1.0",
"in_app":[
{"quantity":"1", "product_id":"weekly_subscription", "transaction_id":"1000000526894772", "original_transaction_id":"1000000526894772", "purchase_date":"2019-05-11 16:17:20 Etc/GMT", "purchase_date_ms":"1557591440000", "purchase_date_pst":"2019-05-11 09:17:20 America/Los_Angeles", "original_purchase_date":"2019-05-11 16:17:22 Etc/GMT", "original_purchase_date_ms":"1557591442000", "original_purchase_date_pst":"2019-05-11 09:17:22 America/Los_Angeles", "expires_date":"2019-05-11 16:20:20 Etc/GMT", "expires_date_ms":"1557591620000", "expires_date_pst":"2019-05-11 09:20:20 America/Los_Angeles", "web_order_line_item_id":"1000000044334416", "is_trial_period":"false", "is_in_intro_offer_period":"false"},
{"quantity":"1", "product_id":"weekly_subscription", "transaction_id":"1000000526894809", "original_transaction_id":"1000000526894772", "purchase_date":"2019-05-11 16:20:20 Etc/GMT", "purchase_date_ms":"1557591620000", "purchase_date_pst":"2019-05-11 09:20:20 America/Los_Angeles", "original_purchase_date":"2019-05-11 16:17:22 Etc/GMT", "original_purchase_date_ms":"1557591442000", "original_purchase_date_pst":"2019-05-11 09:17:22 America/Los_Angeles", "expires_date":"2019-05-11 16:23:20 Etc/GMT", "expires_date_ms":"1557591800000", "expires_date_pst":"2019-05-11 09:23:20 America/Los_Angeles", "web_order_line_item_id":"1000000044334417", "is_trial_period":"false", "is_in_intro_offer_period":"false"},
{"quantity":"1", "product_id":"weekly_subscription", "transaction_id":"1000000526895042", "original_transaction_id":"1000000526894772", "purchase_date":"2019-05-11 16:23:20 Etc/GMT", "purchase_date_ms":"1557591800000", "purchase_date_pst":"2019-05-11 09:23:20 America/Los_Angeles", "original_purchase_date":"2019-05-11 16:17:22 Etc/GMT", "original_purchase_date_ms":"1557591442000", "original_purchase_date_pst":"2019-05-11 09:17:22 America/Los_Angeles", "expires_date":"2019-05-11 16:26:20 Etc/GMT", "expires_date_ms":"1557591980000", "expires_date_pst":"2019-05-11 09:26:20 America/Los_Angeles", "web_order_line_item_id":"1000000044334428", "is_trial_period":"false", "is_in_intro_offer_period":"false"},
{"quantity":"1", "product_id":"weekly_subscription", "transaction_id":"1000000526895281", "original_transaction_id":"1000000526894772", "purchase_date":"2019-05-11 16:26:20 Etc/GMT", "purchase_date_ms":"1557591980000", "purchase_date_pst":"2019-05-11 09:26:20 America/Los_Angeles", "original_purchase_date":"2019-05-11 16:17:22 Etc/GMT", "original_purchase_date_ms":"1557591442000", "original_purchase_date_pst":"2019-05-11 09:17:22 America/Los_Angeles", "expires_date":"2019-05-11 16:29:20 Etc/GMT", "expires_date_ms":"1557592160000", "expires_date_pst":"2019-05-11 09:29:20 America/Los_Angeles", "web_order_line_item_id":"1000000044334441", "is_trial_period":"false", "is_in_intro_offer_period":"false"},
{"quantity":"1", "product_id":"weekly_subscription", "transaction_id":"1000000526895686", "original_transaction_id":"1000000526894772", "purchase_date":"2019-05-11 16:29:20 Etc/GMT", "purchase_date_ms":"1557592160000", "purchase_date_pst":"2019-05-11 09:29:20 America/Los_Angeles", "original_purchase_date":"2019-05-11 16:17:22 Etc/GMT", "original_purchase_date_ms":"1557591442000", "original_purchase_date_pst":"2019-05-11 09:17:22 America/Los_Angeles", "expires_date":"2019-05-11 16:32:20 Etc/GMT", "expires_date_ms":"1557592340000", "expires_date_pst":"2019-05-11 09:32:20 America/Los_Angeles", "web_order_line_item_id":"1000000044334455", "is_trial_period":"false", "is_in_intro_offer_period":"false"},
{"quantity":"1", "product_id":"weekly_subscription", "transaction_id":"1000000526896082", "original_transaction_id":"1000000526894772", "purchase_date":"2019-05-11 16:32:20 Etc/GMT", "purchase_date_ms":"1557592340000", "purchase_date_pst":"2019-05-11 09:32:20 America/Los_Angeles", "original_purchase_date":"2019-05-11 16:17:22 Etc/GMT", "original_purchase_date_ms":"1557591442000", "original_purchase_date_pst":"2019-05-11 09:17:22 America/Los_Angeles", "expires_date":"2019-05-11 16:35:20 Etc/GMT", "expires_date_ms":"1557592520000", "expires_date_pst":"2019-05-11 09:35:20 America/Los_Angeles", "web_order_line_item_id":"1000000044334476", "is_trial_period":"false", "is_in_intro_offer_period":"false"}]},
"latest_receipt_info":[
{"quantity":"1", "product_id":"weekly_subscription", "transaction_id":"1000000526896082", "original_transaction_id":"1000000526894772", "purchase_date":"2019-05-11 16:32:20 Etc/GMT", "purchase_date_ms":"1557592340000", "purchase_date_pst":"2019-05-11 09:32:20 America/Los_Angeles", "original_purchase_date":"2019-05-11 16:17:22 Etc/GMT", "original_purchase_date_ms":"1557591442000", "original_purchase_date_pst":"2019-05-11 09:17:22 America/Los_Angeles", "expires_date":"2019-05-11 16:35:20 Etc/GMT", "expires_date_ms":"1557592520000", "expires_date_pst":"2019-05-11 09:35:20 America/Los_Angeles", "web_order_line_item_id":"1000000044334476", "is_trial_period":"false", "is_in_intro_offer_period":"false"}],
"latest_receipt":"MIIT2gYJKoZIhvcNAQcCoIITyzCCE8cCAQExCzAJBgUrDgMCGgUAMIIDewYJKoZIhvcNAQcBoIIDbASCA2gxggNkMAoCAQgCAQEEAhYAMAoCARQCAQEEAgwAMAsCAQECAQEEAwIBADALAgEDAgEBBAMMATIwCwIBCwIBAQQDAgEAMAsCAQ8CAQEEAwIBADALAgEQAgEBBAMCAQAwCwIBGQIBAQQDAgEDMAwCAQoCAQEEBBYCNCswDAIBDgIBAQQEAgIAojANAgENAgEBBAUCAwHViDANAgETAgEBBAUMAzEuMDAOAgEJAgEBBAYCBFAyNTIwGAIBBAIBAgQQ6OK/a51S6iIUQnFSi0P5zTAbAgEAAgEBBBMMEVByb2R1Y3Rpb25TYW5kYm94MBwCAQUCAQEEFFP2sppxWfTXtkBJcsvGvzKITqx/MB4CAQwCAQEEFhYUMjAxOS0wNS0xNFQwNTo0NjoxOFowHgIBEgIBAQQWFhQyMDEzLTA4LTAxVDA3OjAwOjAwWjAiAgECAgEBBBoMGGVzLm1lZGlhcmVnaWUud2hvbG92ZXNtZTAzAgEHAgEBBCsIq51ClKMuBQK1z+iZps39Vi/4u/YplwFSH6+jMq/BAQUFdf2QJhwwPbItMEACAQYCAQEEOGdS2t9XLCpzS7CyzXasBOmlm/vVg7IQpnOVHM1ormnQCDkwB0r5+Shr26dh8lV8LuZhgP/hYLuvMIIBgAIBEQIBAQSCAXYxggFyMAsCAgatAgEBBAIMADALAgIGsAIBAQQCFgAwCwICBrICAQEEAgwAMAsCAgazAgEBBAIMADALAgIGtAIBAQQCDAAwCwICBrUCAQEEAgwAMAsCAga2AgEBBAIMADAMAgIGpQIBAQQDAgEBMAwCAgarAgEBBAMCAQMwDAICBq4CAQEEAwIBADAMAgIGsQIBAQQDAgEAMAwCAga3AgEBBAMCAQAwEgICBq8CAQEECQIHA41+p2r9jDAbAgIGpwIBAQQSDBAxMDAwMDAwNTI2ODk2MDgyMBsCAgapAgEBBBIMEDEwMDAwMDA1MjY4OTQ3NzIwHgICBqYCAQEEFQwTd2Vla2x5X3N1YnNjcmlwdGlvbjAfAgIGqAIBAQQWFhQyMDE5LTA1LTExVDE2OjMyOjIwWjAfAgIGqgIBAQQWFhQyMDE5LTA1LTExVDE2OjE3OjIyWjAfAgIGrAIBAQQWFhQyMDE5LTA1LTExVDE2OjM1OjIwWqCCDmUwggV8MIIEZKADAgECAggO61eH554JjTANBgkqhkiG9w0BAQUFADCBljELMAkGA1UEBhMCVVMxEzARBgNVBAoMCkFwcGxlIEluYy4xLDAqBgNVBAsMI0FwcGxlIFdvcmxkd2lkZSBEZXZlbG9wZXIgUmVsYXRpb25zMUQwQgYDVQQDDDtBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9ucyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNTExMTMwMjE1MDlaFw0yMzAyMDcyMTQ4NDdaMIGJMTcwNQYDVQQDDC5NYWMgQXBwIFN0b3JlIGFuZCBpVHVuZXMgU3RvcmUgUmVjZWlwdCBTaWduaW5nMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQClz4H9JaKBW9aH7SPaMxyO4iPApcQmyz3Gn+xKDVWG/6QC15fKOVRtfX+yVBidxCxScY5ke4LOibpJ1gjltIhxzz9bRi7GxB24A6lYogQ+IXjV27fQjhKNg0xbKmg3k8LyvR7E0qEMSlhSqxLj7d0fmBWQNS3CzBLKjUiB91h4VGvojDE2H0oGDEdU8zeQuLKSiX1fpIVK4cCc4Lqku4KXY/Qrk8H9Pm/KwfU8qY9SGsAlCnYO3v6Z/v/Ca/VbXqxzUUkIVonMQ5DMjoEC0KCXtlyxoWlph5AQaCYmObgdEHOwCl3Fc9DfdjvYLdmIHuPsB8/ijtDT+iZVge/iA0kjAgMBAAGjggHXMIIB0zA/BggrBgEFBQcBAQQzMDEwLwYIKwYBBQUHMAGGI2h0dHA6Ly9vY3NwLmFwcGxlLmNvbS9vY3NwMDMtd3dkcjA0MB0GA1UdDgQWBBSRpJz8xHa3n6CK9E31jzZd7SsEhTAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFIgnFwmpthhgi+zruvZHWcVSVKO3MIIBHgYDVR0gBIIBFTCCAREwggENBgoqhkiG92NkBQYBMIH+MIHDBggrBgEFBQcCAjCBtgyBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMuMDYGCCsGAQUFBwIBFipodHRwOi8vd3d3LmFwcGxlLmNvbS9jZXJ0aWZpY2F0ZWF1dGhvcml0eS8wDgYDVR0PAQH/BAQDAgeAMBAGCiqGSIb3Y2QGCwEEAgUAMA0GCSqGSIb3DQEBBQUAA4IBAQANphvTLj3jWysHbkKWbNPojEMwgl/gXNGNvr0PvRr8JZLbjIXDgFnf4+LXLgUUrA3btrj+/DUufMutF2uOfx/kd7mxZ5W0E16mGYZ2+FogledjjA9z/Ojtxh+umfhlSFyg4Cg6wBA3LbmgBDkfc7nIBf3y3n8aKipuKwH8oCBc2et9J6Yz+PWY4L5E27FMZ/xuCk/J4gao0pfzp45rUaJahHVl0RYEYuPBX/UIqc9o2ZIAycGMs/iNAGS6WGDAfK+PdcppuVsq1h1obphC9UynNxmbzDscehlD86Ntv0hgBgw2kivs3hi1EdotI9CO/KBpnBcbnoB7OUdFMGEvxxOoMIIEIjCCAwqgAwIBAgIIAd68xDltoBAwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1BcHBsZSBSb290IENBMB4XDTEzMDIwNzIxNDg0N1oXDTIzMDIwNzIxNDg0N1owgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKOFSmy1aqyCQ5SOmM7uxfuH8mkbw0U3rOfGOAYXdkXqUHI7Y5/lAtFVZYcC1+xG7BSoU+L/DehBqhV8mvexj/avoVEkkVCBmsqtsqMu2WY2hSFT2Miuy/axiV4AOsAX2XBWfODoWVN2rtCbauZ81RZJ/GXNG8V25nNYB2NqSHgW44j9grFU57Jdhav06DwY3Sk9UacbVgnJ0zTlX5ElgMhrgWDcHld0WNUEi6Ky3klIXh6MSdxmilsKP8Z35wugJZS3dCkTm59c3hTO/AO0iMpuUhXf1qarunFjVg0uat80YpyejDi+l5wGphZxWy8P3laLxiX27Pmd3vG2P+kmWrAgMBAAGjgaYwgaMwHQYDVR0OBBYEFIgnFwmpthhgi+zruvZHWcVSVKO3MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUK9BpR5R2Cf70a40uQKb3R01/CF4wLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL2NybC5hcHBsZS5jb20vcm9vdC5jcmwwDgYDVR0PAQH/BAQDAgGGMBAGCiqGSIb3Y2QGAgEEAgUAMA0GCSqGSIb3DQEBBQUAA4IBAQBPz+9Zviz1smwvj+4ThzLoBTWobot9yWkMudkXvHcs1Gfi/ZptOllc34MBvbKuKmFysa/Nw0Uwj6ODDc4dR7Txk4qjdJukw5hyhzs+r0ULklS5MruQGFNrCk4QttkdUGwhgAqJTleMa1s8Pab93vcNIx0LSiaHP7qRkkykGRIZbVf1eliHe2iK5IaMSuviSRSqpd1VAKmuu0swruGgsbwpgOYJd+W+NKIByn/c4grmO7i77LpilfMFY0GCzQ87HUyVpNur+cmV6U/kTecmmYHpvPm0KdIBembhLoz2IYrF+Hjhga6/05Cdqa3zr/04GpZnMBxRpVzscYqCtGwPDBUfMIIEuzCCA6OgAwIBAgIBAjANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzETMBEGA1UEChMKQXBwbGUgSW5jLjEmMCQGA1UECxMdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFjAUBgNVBAMTDUFwcGxlIFJvb3QgQ0EwHhcNMDYwNDI1MjE0MDM2WhcNMzUwMjA5MjE0MDM2WjBiMQswCQYDVQQGEwJVUzETMBEGA1UEChMKQXBwbGUgSW5jLjEmMCQGA1UECxMdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFjAUBgNVBAMTDUFwcGxlIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkkakJH5HbHkdQ6wXtXnmELes2oldMVeyLGYne+Uts9QerIjAC6Bg++FAJ039BqJj50cpmnCRrEdCju+QbKsMflZ56DKRHi1vUFjczy8QPTc4UadHJGXL1XQ7Vf1+b8iUDulWPTV0N8WQ1IxVLFVkds5T39pyez1C6wVhQZ48ItCD3y6wsIG9wtj8BMIy3Q88PnT3zK0koGsj+zrW5DtleHNbLPbU6rfQPDgCSC7EhFi501TwN22IWq6NxkkdTVcGvL0Gz+PvjcM3mo0xFfh9Ma1CWQYnEdGILEINBhzOKgbEwWOxaBDKMaLOPHd5lc/9nXmW8Sdh2nzMUZaF3lMktAgMBAAGjggF6MIIBdjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUK9BpR5R2Cf70a40uQKb3R01/CF4wHwYDVR0jBBgwFoAUK9BpR5R2Cf70a40uQKb3R01/CF4wggERBgNVHSAEggEIMIIBBDCCAQAGCSqGSIb3Y2QFATCB8jAqBggrBgEFBQcCARYeaHR0cHM6Ly93d3cuYXBwbGUuY29tL2FwcGxlY2EvMIHDBggrBgEFBQcCAjCBthqBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMuMA0GCSqGSIb3DQEBBQUAA4IBAQBcNplMLXi37Yyb3PN3m/J20ncwT8EfhYOFG5k9RzfyqZtAjizUsZAS2L70c5vu0mQPy3lPNNiiPvl4/2vIB+x9OYOLUyDTOMSxv5pPCmv/K/xZpwUJfBdAVhEedNO3iyM7R6PVbyTi69G3cN8PReEnyvFteO3ntRcXqNx+IjXKJdXZD9Zr1KIkIxH3oayPc4FgxhtbCS+SsvhESPBgOJ4V9T0mZyCKM2r3DYLP3uujL/lTaltkwGMzd/c6ByxW69oPIQ7aunMZT7XZNn/Bh1XZp5m5MkL72NVxnn6hUrcbvZNCJBIqxw8dtk2cXmPIS4AXUKqK1drk/NAJBzewdXUhMYIByzCCAccCAQEwgaMwgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkCCA7rV4fnngmNMAkGBSsOAwIaBQAwDQYJKoZIhvcNAQEBBQAEggEASyqCJc3ZjAyHmcDPVgrk6zjDxqdf6UaZWkfpU7tlQNKU2GJIZFePKEX+2HnNGQLYnYxuq/vuQ7H6EXnFzGoC8WZ8BK1Xb1+GHeYXxEjMk7XjoAwinTqAfw1aSgOgBH7yS+1dgzCwwR1+lH8oxkgbqMODmytky1NYmKdQ4Xth+WB6MdwCWIBS0Ck55PIzIOrarWnLP6ceA//CxpgVb0F+Wvr8LsVqvViLcXweJLsCnOtZ78cYAkhdQOpblUuUlE5hunhhgeVNE4Yp36/4lZxc+28K50zhYx7vFbD2B7KS9tj+XU3vBQ930G/0/iL7XoX9+AyTnPgRWQTEasHsOo6neg==",
"pending_renewal_info":[
{"expiration_intent":"1", "auto_renew_product_id":"weekly_subscription", "original_transaction_id":"1000000526894772", "is_in_billing_retry_period":"0", "product_id":"weekly_subscription", "auto_renew_status":"0"}]}
According to this https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW3 If I understand correctly I should use only the latest_receipt_info field to check if the user subscription is currently
active.
What about if there are more products(consumable, subscriptions, etc)?
It's ok ignore the latest_receipt field?
Should I perform any validation of the server response in the iOS device?

Get Country Code (Telephone) Using Locale In Swift [duplicate]

I am developing an iOS app in which the user enters their mobile number. How do I get their country calling code? For example, if a user is in India, then +91 should be prefixed automatically. Is there an option that adds country codes automatically?
Import Statement :
#import<CoreTelephony/CTCarrier.h>
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
you can get country code for the current Carrier using CoreTelephony framework:
CTTelephonyNetworkInfo *network_Info = [CTTelephonyNetworkInfo new];
CTCarrier *carrier = network_Info.subscriberCellularProvider;
NSLog(#"country code is: %#", carrier.mobileCountryCode);
//will return the actual country code
NSLog(#"ISO country code is: %#", carrier.isoCountryCode);
Apple Docs
with the use of NSLocale you can get the country name, code etc. Take a look at below code it will help you to do so.
NSLocale *currentLocale = [NSLocale currentLocale]; // get the current locale.
NSString *countryCode = [currentLocale objectForKey:NSLocaleCountryCode]; // get country code, e.g. ES (Spain), FR (France), etc.
for a countries dialing code you can visit this reference code.
Use this simple function
func getCountryCallingCode(countryRegionCode:String)->String{
let prefixCodes = ["AF": "93", "AE": "971", "AL": "355", "AN": "599", "AS":"1", "AD": "376", "AO": "244", "AI": "1", "AG":"1", "AR": "54","AM": "374", "AW": "297", "AU":"61", "AT": "43","AZ": "994", "BS": "1", "BH":"973", "BF": "226","BI": "257", "BD": "880", "BB": "1", "BY": "375", "BE":"32","BZ": "501", "BJ": "229", "BM": "1", "BT":"975", "BA": "387", "BW": "267", "BR": "55", "BG": "359", "BO": "591", "BL": "590", "BN": "673", "CC": "61", "CD":"243","CI": "225", "KH":"855", "CM": "237", "CA": "1", "CV": "238", "KY":"345", "CF":"236", "CH": "41", "CL": "56", "CN":"86","CX": "61", "CO": "57", "KM": "269", "CG":"242", "CK": "682", "CR": "506", "CU":"53", "CY":"537","CZ": "420", "DE": "49", "DK": "45", "DJ":"253", "DM": "1", "DO": "1", "DZ": "213", "EC": "593", "EG":"20", "ER": "291", "EE":"372","ES": "34", "ET": "251", "FM": "691", "FK": "500", "FO": "298", "FJ": "679", "FI":"358", "FR": "33", "GB":"44", "GF": "594", "GA":"241", "GS": "500", "GM":"220", "GE":"995","GH":"233", "GI": "350", "GQ": "240", "GR": "30", "GG": "44", "GL": "299", "GD":"1", "GP": "590", "GU": "1", "GT": "502", "GN":"224","GW": "245", "GY": "595", "HT": "509", "HR": "385", "HN":"504", "HU": "36", "HK": "852", "IR": "98", "IM": "44", "IL": "972", "IO":"246", "IS": "354", "IN": "91", "ID":"62", "IQ":"964", "IE": "353","IT":"39", "JM":"1", "JP": "81", "JO": "962", "JE":"44", "KP": "850", "KR": "82","KZ":"77", "KE": "254", "KI": "686", "KW": "965", "KG":"996","KN":"1", "LC": "1", "LV": "371", "LB": "961", "LK":"94", "LS": "266", "LR":"231", "LI": "423", "LT": "370", "LU": "352", "LA": "856", "LY":"218", "MO": "853", "MK": "389", "MG":"261", "MW": "265", "MY": "60","MV": "960", "ML":"223", "MT": "356", "MH": "692", "MQ": "596", "MR":"222", "MU": "230", "MX": "52","MC": "377", "MN": "976", "ME": "382", "MP": "1", "MS": "1", "MA":"212", "MM": "95", "MF": "590", "MD":"373", "MZ": "258", "NA":"264", "NR":"674", "NP":"977", "NL": "31","NC": "687", "NZ":"64", "NI": "505", "NE": "227", "NG": "234", "NU":"683", "NF": "672", "NO": "47","OM": "968", "PK": "92", "PM": "508", "PW": "680", "PF": "689", "PA": "507", "PG":"675", "PY": "595", "PE": "51", "PH": "63", "PL":"48", "PN": "872","PT": "351", "PR": "1","PS": "970", "QA": "974", "RO":"40", "RE":"262", "RS": "381", "RU": "7", "RW": "250", "SM": "378", "SA":"966", "SN": "221", "SC": "248", "SL":"232","SG": "65", "SK": "421", "SI": "386", "SB":"677", "SH": "290", "SD": "249", "SR": "597","SZ": "268", "SE":"46", "SV": "503", "ST": "239","SO": "252", "SJ": "47", "SY":"963", "TW": "886", "TZ": "255", "TL": "670", "TD": "235", "TJ": "992", "TH": "66", "TG":"228", "TK": "690", "TO": "676", "TT": "1", "TN":"216","TR": "90", "TM": "993", "TC": "1", "TV":"688", "UG": "256", "UA": "380", "US": "1", "UY": "598","UZ": "998", "VA":"379", "VE":"58", "VN": "84", "VG": "1", "VI": "1","VC":"1", "VU":"678", "WS": "685", "WF": "681", "YE": "967", "YT": "262","ZA": "27" , "ZM": "260", "ZW":"263"]
let countryDialingCode = prefixCodes[countryRegionCode]
return countryDialingCode!
}
And call as
let currentLocale = NSLocale.currentLocale()
let countryCode = currentLocale.objectForKey(NSLocaleCountryCode) as! String//get the set country name, code of your iphone
print("country code is \(countryCode)")
print(getCountryCallingCode(countryCode))
//change country region Settings>>General>>Language&Region>>Region
Swift
let networkInfo = CTTelephonyNetworkInfo()
if let carrier = networkInfo.subscriberCellularProvider {
print("country code is: " + carrier.mobileCountryCode!);
//will return the actual country code
print("ISO country code is: " + carrier.isoCountryCode!);
}
Swift 5
I combine answer from Oded and LC into a function.
func getCountryCode() -> String {
guard let carrier = CTTelephonyNetworkInfo().subscriberCellularProvider, let countryCode = carrier.isoCountryCode else { return "" }
let prefixCodes = ["AF": "93", "AE": "971", "AL": "355", "AN": "599", "AS":"1", "AD": "376", "AO": "244", "AI": "1", "AG":"1", "AR": "54","AM": "374", "AW": "297", "AU":"61", "AT": "43","AZ": "994", "BS": "1", "BH":"973", "BF": "226","BI": "257", "BD": "880", "BB": "1", "BY": "375", "BE":"32","BZ": "501", "BJ": "229", "BM": "1", "BT":"975", "BA": "387", "BW": "267", "BR": "55", "BG": "359", "BO": "591", "BL": "590", "BN": "673", "CC": "61", "CD":"243","CI": "225", "KH":"855", "CM": "237", "CA": "1", "CV": "238", "KY":"345", "CF":"236", "CH": "41", "CL": "56", "CN":"86","CX": "61", "CO": "57", "KM": "269", "CG":"242", "CK": "682", "CR": "506", "CU":"53", "CY":"537","CZ": "420", "DE": "49", "DK": "45", "DJ":"253", "DM": "1", "DO": "1", "DZ": "213", "EC": "593", "EG":"20", "ER": "291", "EE":"372","ES": "34", "ET": "251", "FM": "691", "FK": "500", "FO": "298", "FJ": "679", "FI":"358", "FR": "33", "GB":"44", "GF": "594", "GA":"241", "GS": "500", "GM":"220", "GE":"995","GH":"233", "GI": "350", "GQ": "240", "GR": "30", "GG": "44", "GL": "299", "GD":"1", "GP": "590", "GU": "1", "GT": "502", "GN":"224","GW": "245", "GY": "595", "HT": "509", "HR": "385", "HN":"504", "HU": "36", "HK": "852", "IR": "98", "IM": "44", "IL": "972", "IO":"246", "IS": "354", "IN": "91", "ID":"62", "IQ":"964", "IE": "353","IT":"39", "JM":"1", "JP": "81", "JO": "962", "JE":"44", "KP": "850", "KR": "82","KZ":"77", "KE": "254", "KI": "686", "KW": "965", "KG":"996","KN":"1", "LC": "1", "LV": "371", "LB": "961", "LK":"94", "LS": "266", "LR":"231", "LI": "423", "LT": "370", "LU": "352", "LA": "856", "LY":"218", "MO": "853", "MK": "389", "MG":"261", "MW": "265", "MY": "60","MV": "960", "ML":"223", "MT": "356", "MH": "692", "MQ": "596", "MR":"222", "MU": "230", "MX": "52","MC": "377", "MN": "976", "ME": "382", "MP": "1", "MS": "1", "MA":"212", "MM": "95", "MF": "590", "MD":"373", "MZ": "258", "NA":"264", "NR":"674", "NP":"977", "NL": "31","NC": "687", "NZ":"64", "NI": "505", "NE": "227", "NG": "234", "NU":"683", "NF": "672", "NO": "47","OM": "968", "PK": "92", "PM": "508", "PW": "680", "PF": "689", "PA": "507", "PG":"675", "PY": "595", "PE": "51", "PH": "63", "PL":"48", "PN": "872","PT": "351", "PR": "1","PS": "970", "QA": "974", "RO":"40", "RE":"262", "RS": "381", "RU": "7", "RW": "250", "SM": "378", "SA":"966", "SN": "221", "SC": "248", "SL":"232","SG": "65", "SK": "421", "SI": "386", "SB":"677", "SH": "290", "SD": "249", "SR": "597","SZ": "268", "SE":"46", "SV": "503", "ST": "239","SO": "252", "SJ": "47", "SY":"963", "TW": "886", "TZ": "255", "TL": "670", "TD": "235", "TJ": "992", "TH": "66", "TG":"228", "TK": "690", "TO": "676", "TT": "1", "TN":"216","TR": "90", "TM": "993", "TC": "1", "TV":"688", "UG": "256", "UA": "380", "US": "1", "UY": "598","UZ": "998", "VA":"379", "VE":"58", "VN": "84", "VG": "1", "VI": "1","VC":"1", "VU":"678", "WS": "685", "WF": "681", "YE": "967", "YT": "262","ZA": "27" , "ZM": "260", "ZW":"263"]
let countryDialingCode = prefixCodes[countryCode.uppercased()] ?? ""
return countryDialingCode
}
Make sure to import CoreTelephony at the top
import CoreTelephony
I think you need to use NSLocale for using Country code of the user.
You can follow this link to understand use of NSLocale class reference.
Also study this link for ISOCountryCode property.
Hope this may help you.
I came up with the following code, based on previous answers:
Swift
#if canImport(CoreTelephony)
import CoreTelephony
#endif
static func getRegionCodeFromSim() -> String? {
#if canImport(CoreTelephony)
let networkInfos = CTTelephonyNetworkInfo()
if #available(iOS 12, *) {
let carrier = networkInfos.serviceSubscriberCellularProviders?
.map { $0.1 }
.first { $0.isoCountryCode != nil }
return carrier?.isoCountryCode
}
return networkInfos.subscriberCellularProvider?.isoCountryCode
#else
return nil
#endif
}
static func getRegionCode() -> String? {
guard let regionCodeFromSim = Self.getRegionCodeFromSim() else {
return NSLocale.current.regionCode
}
return regionCodeFromSim
}
static func getCountryCode() -> String? {
guard let regionCode = Self.getRegionCode() else { return nil }
let prefixCodes = ["AF": "93", "AE": "971", "AL": "355", "AN": "599", "AS":"1", "AD": "376", "AO": "244", "AI": "1", "AG":"1", "AR": "54","AM": "374", "AW": "297", "AU":"61", "AT": "43","AZ": "994", "BS": "1", "BH":"973", "BF": "226","BI": "257", "BD": "880", "BB": "1", "BY": "375", "BE":"32","BZ": "501", "BJ": "229", "BM": "1", "BT":"975", "BA": "387", "BW": "267", "BR": "55", "BG": "359", "BO": "591", "BL": "590", "BN": "673", "CC": "61", "CD":"243","CI": "225", "KH":"855", "CM": "237", "CA": "1", "CV": "238", "KY":"345", "CF":"236", "CH": "41", "CL": "56", "CN":"86","CX": "61", "CO": "57", "KM": "269", "CG":"242", "CK": "682", "CR": "506", "CU":"53", "CY":"537","CZ": "420", "DE": "49", "DK": "45", "DJ":"253", "DM": "1", "DO": "1", "DZ": "213", "EC": "593", "EG":"20", "ER": "291", "EE":"372","ES": "34", "ET": "251", "FM": "691", "FK": "500", "FO": "298", "FJ": "679", "FI":"358", "FR": "33", "GB":"44", "GF": "594", "GA":"241", "GS": "500", "GM":"220", "GE":"995","GH":"233", "GI": "350", "GQ": "240", "GR": "30", "GG": "44", "GL": "299", "GD":"1", "GP": "590", "GU": "1", "GT": "502", "GN":"224","GW": "245", "GY": "595", "HT": "509", "HR": "385", "HN":"504", "HU": "36", "HK": "852", "IR": "98", "IM": "44", "IL": "972", "IO":"246", "IS": "354", "IN": "91", "ID":"62", "IQ":"964", "IE": "353","IT":"39", "JM":"1", "JP": "81", "JO": "962", "JE":"44", "KP": "850", "KR": "82","KZ":"77", "KE": "254", "KI": "686", "KW": "965", "KG":"996","KN":"1", "LC": "1", "LV": "371", "LB": "961", "LK":"94", "LS": "266", "LR":"231", "LI": "423", "LT": "370", "LU": "352", "LA": "856", "LY":"218", "MO": "853", "MK": "389", "MG":"261", "MW": "265", "MY": "60","MV": "960", "ML":"223", "MT": "356", "MH": "692", "MQ": "596", "MR":"222", "MU": "230", "MX": "52","MC": "377", "MN": "976", "ME": "382", "MP": "1", "MS": "1", "MA":"212", "MM": "95", "MF": "590", "MD":"373", "MZ": "258", "NA":"264", "NR":"674", "NP":"977", "NL": "31","NC": "687", "NZ":"64", "NI": "505", "NE": "227", "NG": "234", "NU":"683", "NF": "672", "NO": "47","OM": "968", "PK": "92", "PM": "508", "PW": "680", "PF": "689", "PA": "507", "PG":"675", "PY": "595", "PE": "51", "PH": "63", "PL":"48", "PN": "872","PT": "351", "PR": "1","PS": "970", "QA": "974", "RO":"40", "RE":"262", "RS": "381", "RU": "7", "RW": "250", "SM": "378", "SA":"966", "SN": "221", "SC": "248", "SL":"232","SG": "65", "SK": "421", "SI": "386", "SB":"677", "SH": "290", "SD": "249", "SR": "597","SZ": "268", "SE":"46", "SV": "503", "ST": "239","SO": "252", "SJ": "47", "SY":"963", "TW": "886", "TZ": "255", "TL": "670", "TD": "235", "TJ": "992", "TH": "66", "TG":"228", "TK": "690", "TO": "676", "TT": "1", "TN":"216","TR": "90", "TM": "993", "TC": "1", "TV":"688", "UG": "256", "UA": "380", "US": "1", "UY": "598","UZ": "998", "VA":"379", "VE":"58", "VN": "84", "VG": "1", "VI": "1","VC":"1", "VU":"678", "WS": "685", "WF": "681", "YE": "967", "YT": "262","ZA": "27" , "ZM": "260", "ZW":"263"]
return prefixCodes[regionCode.uppercased()]
}
It tries to fetch the country code from the SIM cards (with multi-sim & non-sim devices support), if available, and fallbacks to the device's locale otherwise.
The prefixCodes could be loaded from a PLIST or JSON to help with readability.
If you want to prefixed calling country code automatically
then you need to get user's country code pragmatically and Drag & drop src Folder in your code
Its looks like this:
if let countryCode = (Locale.current as NSLocale).object(forKey: .countryCode) as? String {
print(countryCode)
let strCode = Countries.countryFromCountryCode(countryCode: countryCode)
btnPhoneCode.setTitle("+\(strCode.phoneExtension)", for: .normal)
}
It works for me, Hope will help you too. :)
NSLocale *currentLocale = [NSLocale currentLocale]; // get the current locale.
NSString *countryCode = [currentLocale objectForKey:NSLocaleCountryCode];
// get country code, e.g. ES (Spain), FR (France), etc.
NSLog(#"country code is:%#",countryCode);
NSString*lower=[countryCode lowercaseString];
NSString *path = [[NSBundle mainBundle] pathForResource:#"DiallingCodes" ofType:#"plist"];
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
NSMutableDictionary *_dictCountry=[[NSMutableDictionary alloc]init];
NSMutableArray *_CodeArray=[[NSMutableArray alloc]init];
[_CodeArray addObject:dict];
_dictCountry = [_CodeArray objectAtIndex:0];
NSString*Country_code=[NSString stringWithFormat:#"+%#",[_dictCountry objectForKey:lower]];
contactTextField.text=Country_code;
You can request to this url.
For get CountryCode or ip, region_name, city, long, lat
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:#"http://freegeoip.net/json/"]];
__block NSDictionary *json;
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(#"Countrycode: %#", json[#"country_code"]);
}];
Here the Objective C code
#import<CoreTelephony/CTCarrier.h>
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
- (void)viewDidLoad{
CTTelephonyNetworkInfo *network_Info = [CTTelephonyNetworkInfo new];
CTCarrier *carrier = network_Info.subscriberCellularProvider;
NSLog(#"country code is: %#", carrier.mobileCountryCode);
NSLog(#"ISO country code is: %#", carrier.mobileNetworkCode);
NSLog(#"diling code == %#",[self getCountryCode:carrier.isoCountryCode]);
}
- (NSString *)getCountryCode:(NSString *)countryISOCode{
NSDictionary * code = #{#"AF": #"93", #"AE": #"971", #"AL": #"355", #"AN": #"599", #"AS":#"1", #"AD": #"376", #"AO": #"244", #"AI": #"1", #"AG":#"1", #"AR": #"54",#"AM": #"374", #"AW": #"297", #"AU":#"61", #"AT": #"43",#"AZ": #"994", #"BS": #"1", #"BH":#"973", #"BF": #"226",#"BI": #"257", #"BD": #"880", #"BB": #"1", #"BY": #"375", #"BE":#"32",#"BZ": #"501", #"BJ": #"229", #"BM": #"1", #"BT":#"975", #"BA": #"387", #"BW": #"267", #"BR": #"55", #"BG": #"359", #"BO": #"591", #"BL": #"590", #"BN": #"673", #"CC": #"61", #"CD":#"243",#"CI": #"225", #"KH":#"855", #"CM": #"237", #"CA": #"1", #"CV": #"238", #"KY":#"345", #"CF":#"236", #"CH": #"41", #"CL": #"56", #"CN":#"86",#"CX": #"61", #"CO": #"57", #"KM": #"269", #"CG":#"242", #"CK": #"682", #"CR": #"506", #"CU":#"53", #"CY":#"537",#"CZ": #"420", #"DE": #"49", #"DK": #"45", #"DJ":#"253", #"DM": #"1", #"DO": #"1", #"DZ": #"213", #"EC": #"593", #"EG":#"20", #"ER": #"291", #"EE":#"372",#"ES": #"34", #"ET": #"251", #"FM": #"691", #"FK": #"500", #"FO": #"298", #"FJ": #"679", #"FI":#"358", #"FR": #"33", #"GB":#"44", #"GF": #"594", #"GA":#"241", #"GS": #"500", #"GM":#"220", #"GE":#"995",#"GH":#"233", #"GI": #"350", #"GQ": #"240", #"GR": #"30", #"GG": #"44", #"GL": #"299", #"GD":#"1", #"GP": #"590", #"GU": #"1", #"GT": #"502", #"GN":#"224",#"GW": #"245", #"GY": #"595", #"HT": #"509", #"HR": #"385", #"HN":#"504", #"HU": #"36", #"HK": #"852", #"IR": #"98", #"IM": #"44", #"IL": #"972", #"IO":#"246", #"IS": #"354", #"IN": #"91", #"ID":#"62", #"IQ":#"964", #"IE": #"353",#"IT":#"39", #"JM":#"1", #"JP": #"81", #"JO": #"962", #"JE":#"44", #"KP": #"850", #"KR": #"82",#"KZ":#"77", #"KE": #"254", #"KI": #"686", #"KW": #"965", #"KG":#"996",#"KN":#"1", #"LC": #"1", #"LV": #"371", #"LB": #"961", #"LK":#"94", #"LS": #"266", #"LR":#"231", #"LI": #"423", #"LT": #"370", #"LU": #"352", #"LA": #"856", #"LY":#"218", #"MO": #"853", #"MK": #"389", #"MG":#"261", #"MW": #"265", #"MY": #"60",#"MV": #"960", #"ML":#"223", #"MT": #"356", #"MH": #"692", #"MQ": #"596", #"MR":#"222", #"MU": #"230", #"MX": #"52",#"MC": #"377", #"MN": #"976", #"ME": #"382", #"MP": #"1", #"MS": #"1", #"MA":#"212", #"MM": #"95", #"MF": #"590", #"MD":#"373", #"MZ": #"258", #"NA":#"264", #"NR":#"674", #"NP":#"977", #"NL": #"31",#"NC": #"687", #"NZ":#"64", #"NI": #"505", #"NE": #"227", #"NG": #"234", #"NU":#"683", #"NF": #"672", #"NO": #"47",#"OM": #"968", #"PK": #"92", #"PM": #"508", #"PW": #"680", #"PF": #"689", #"PA": #"507", #"PG":#"675", #"PY": #"595", #"PE": #"51", #"PH": #"63", #"PL":#"48", #"PN": #"872",#"PT": #"351", #"PR": #"1",#"PS": #"970", #"QA": #"974", #"RO":#"40", #"RE":#"262", #"RS": #"381", #"RU": #"7", #"RW": #"250", #"SM": #"378", #"SA":#"966", #"SN": #"221", #"SC": #"248", #"SL":#"232",#"SG": #"65", #"SK": #"421", #"SI": #"386", #"SB":#"677", #"SH": #"290", #"SD": #"249", #"SR": #"597",#"SZ": #"268", #"SE":#"46", #"SV": #"503", #"ST": #"239",#"SO": #"252", #"SJ": #"47", #"SY":#"963", #"TW": #"886", #"TZ": #"255", #"TL": #"670", #"TD": #"235", #"TJ": #"992", #"TH": #"66", #"TG":#"228", #"TK": #"690", #"TO": #"676", #"TT": #"1", #"TN":#"216",#"TR": #"90", #"TM": #"993", #"TC": #"1", #"TV":#"688", #"UG": #"256", #"UA": #"380", #"US": #"1", #"UY": #"598",#"UZ": #"998", #"VA":#"379", #"VE":#"58", #"VN": #"84", #"VG": #"1", #"VI": #"1",#"VC":#"1", #"VU":#"678", #"WS": #"685", #"WF": #"681", #"YE": #"967", #"YT": #"262",#"ZA": #"27" , #"ZM": #"260", #"ZW":#"263"};
return [NSString stringWithFormat:#"+%#", [code objectForKey:[countryISOCode uppercaseString]]];
}
Swift 5 Support and using optionals here is my solution:
static func GetCountryCallingCode(countryRegionCode:String) -> String? {
let prefixCodes = ["AF": "93", "AE": "971", "AL": "355", "AN": "599", "AS":"1", "AD": "376", "AO": "244", "AI": "1", "AG":"1", "AR": "54","AM": "374", "AW": "297", "AU":"61", "AT": "43","AZ": "994", "BS": "1", "BH":"973", "BF": "226","BI": "257", "BD": "880", "BB": "1", "BY": "375", "BE":"32","BZ": "501", "BJ": "229", "BM": "1", "BT":"975", "BA": "387", "BW": "267", "BR": "55", "BG": "359", "BO": "591", "BL": "590", "BN": "673", "CC": "61", "CD":"243","CI": "225", "KH":"855", "CM": "237", "CA": "1", "CV": "238", "KY":"345", "CF":"236", "CH": "41", "CL": "56", "CN":"86","CX": "61", "CO": "57", "KM": "269", "CG":"242", "CK": "682", "CR": "506", "CU":"53", "CY":"537","CZ": "420", "DE": "49", "DK": "45", "DJ":"253", "DM": "1", "DO": "1", "DZ": "213", "EC": "593", "EG":"20", "ER": "291", "EE":"372","ES": "34", "ET": "251", "FM": "691", "FK": "500", "FO": "298", "FJ": "679", "FI":"358", "FR": "33", "GB":"44", "GF": "594", "GA":"241", "GS": "500", "GM":"220", "GE":"995","GH":"233", "GI": "350", "GQ": "240", "GR": "30", "GG": "44", "GL": "299", "GD":"1", "GP": "590", "GU": "1", "GT": "502", "GN":"224","GW": "245", "GY": "595", "HT": "509", "HR": "385", "HN":"504", "HU": "36", "HK": "852", "IR": "98", "IM": "44", "IL": "972", "IO":"246", "IS": "354", "IN": "91", "ID":"62", "IQ":"964", "IE": "353","IT":"39", "JM":"1", "JP": "81", "JO": "962", "JE":"44", "KP": "850", "KR": "82","KZ":"77", "KE": "254", "KI": "686", "KW": "965", "KG":"996","KN":"1", "LC": "1", "LV": "371", "LB": "961", "LK":"94", "LS": "266", "LR":"231", "LI": "423", "LT": "370", "LU": "352", "LA": "856", "LY":"218", "MO": "853", "MK": "389", "MG":"261", "MW": "265", "MY": "60","MV": "960", "ML":"223", "MT": "356", "MH": "692", "MQ": "596", "MR":"222", "MU": "230", "MX": "52","MC": "377", "MN": "976", "ME": "382", "MP": "1", "MS": "1", "MA":"212", "MM": "95", "MF": "590", "MD":"373", "MZ": "258", "NA":"264", "NR":"674", "NP":"977", "NL": "31","NC": "687", "NZ":"64", "NI": "505", "NE": "227", "NG": "234", "NU":"683", "NF": "672", "NO": "47","OM": "968", "PK": "92", "PM": "508", "PW": "680", "PF": "689", "PA": "507", "PG":"675", "PY": "595", "PE": "51", "PH": "63", "PL":"48", "PN": "872","PT": "351", "PR": "1","PS": "970", "QA": "974", "RO":"40", "RE":"262", "RS": "381", "RU": "7", "RW": "250", "SM": "378", "SA":"966", "SN": "221", "SC": "248", "SL":"232","SG": "65", "SK": "421", "SI": "386", "SB":"677", "SH": "290", "SD": "249", "SR": "597","SZ": "268", "SE":"46", "SV": "503", "ST": "239","SO": "252", "SJ": "47", "SY":"963", "TW": "886", "TZ": "255", "TL": "670", "TD": "235", "TJ": "992", "TH": "66", "TG":"228", "TK": "690", "TO": "676", "TT": "1", "TN":"216","TR": "90", "TM": "993", "TC": "1", "TV":"688", "UG": "256", "UA": "380", "US": "1", "UY": "598","UZ": "998", "VA":"379", "VE":"58", "VN": "84", "VG": "1", "VI": "1","VC":"1", "VU":"678", "WS": "685", "WF": "681", "YE": "967", "YT": "262","ZA": "27" , "ZM": "260", "ZW":"263"]
let countryDialingCode = prefixCodes[countryRegionCode]
return countryDialingCode
}
guard let regionCode = NSLocale.current.regionCode,
let callingCode = GetCountryCallingCode(countryRegionCode: regionCode )
else { return }
print("Region: \(regionCode) Country calling code is \(callingCode)")
import CoreTelephony
/// Method to get the iso calling code
///
/// - Returns: String
public static func getCallingCodePrefix() -> String {
let networkInfo = CTTelephonyNetworkInfo()
let phoneNumberKit = PhoneNumberKit()
if #available(iOS 12.0, *) {
if let carrier = networkInfo.serviceSubscriberCellularProviders?.map({ $0.1 }).first(where: { $0.isoCountryCode != nil }), let isoCode = carrier.isoCountryCode?.uppercased(), let prefixCode = phoneNumberKit.countryCode(for: isoCode) {
return "+" + String(prefixCode)
}
} else {
// Fallback on earlier versions
if let carrier = networkInfo.subscriberCellularProvider, let isoCode = carrier.isoCountryCode?.uppercased(), let prefixCode = phoneNumberKit.countryCode(for: isoCode) {
return "+" + String(prefixCode)
}
}
return "+"
}
Use this code to get the user's country in iOS:
func countryName(from countryCode: String) -> String {
if let name = (Locale.current as NSLocale).displayName(forKey: .countryCode, value: countryCode) {
return name
} else {
return countryCode
}
}
//Locale.current.regionCode this is used for Get user current country region code
countryName(from: Locale.current.regionCode ?? "")

highcharts not showing in internet explorer

I am using highcharts an it is not showing in IE but well in chrome. I have created a jsfiddle: http://jsfiddle.net/starcraft04/px6dmvnx/
jQuery(document).ready(function () {
Highcharts.setOptions({
lang: {
loading: 'Loading...',
months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
exportButtonTitle: 'Export',
printButtonTitle: 'Print',
rangeSelectorFrom: 'From',
rangeSelectorTo: 'To',
rangeSelectorZoom: 'Zoom',
downloadPNG: 'Download PNG',
downloadJPEG: 'Download JPEG',
downloadPDF: 'Download PDF',
downloadSVG: 'Download SVG',
resetZoom: 'Reset',
resetZoomTitle: 'Reset',
thousandsSep: '',
decimalPoint: ','
},
chart: {
borderWidth: 0,
plotShadow: true,
plotBorderWidth: 1
}
});
var options = {};
options.series = [];
options.xAxis = [];
options.yAxis = [];
options.chart = {
zoomType: 'x',
renderTo: 'graph',
marginRight: 50,
marginBottom: 50
};
options.title = {
text: 'My Graph',
x: -20 //center
};
options.subtitle = {
text: 'Test',
x: -20
};
options.legend = {
layout: 'vertical',
align: 'right',
verticalAlign: 'top',
x: -10,
y: 18,
borderWidth: 0
};
options.tooltip = {
shared: false,
borderRadius: 10,
borderWidth: 1
}
options.xAxis[0] = {
type: 'datetime',
tickWidth: 1,
gridLineWidth: 0,
gridLineColor: '#cdcdcd',
tickPixelInterval: 70,
opposite: false
};
options.yAxis[0] = {
tickWidth: 0,
gridLineWidth: 1,
gridLineColor: '#cdcdcd',
tickPixelInterval: 100,
labels: {
formatter: function () {
return this.value;
},
style: {
color: '#0080c0'
}
},
title: {
text: 'test',
style: {
color: '#0080c0'
}
},
opposite: false
};
options.series[0] = {
name: 'test',
color: '#0080c0',
xAxis: 0,
yAxis: 0,
type: 'spline',
data: [
[Date.parse('2014-09-07 00:00:03 UTC'), parseFloat('42121000')],
[Date.parse('2014-09-07 01:00:02 UTC'), parseFloat('42156000')],
[Date.parse('2014-09-07 02:00:03 UTC'), parseFloat('42186000')],
[Date.parse('2014-09-07 03:00:02 UTC'), parseFloat('42213000')],
[Date.parse('2014-09-07 04:00:03 UTC'), parseFloat('42243000')],
[Date.parse('2014-09-07 05:00:03 UTC'), parseFloat('42269000')],
[Date.parse('2014-09-07 06:00:03 UTC'), parseFloat('42297000')],
[Date.parse('2014-09-07 07:00:03 UTC'), parseFloat('42323000')],
[Date.parse('2014-09-07 08:00:02 UTC'), parseFloat('42346000')],
[Date.parse('2014-09-07 09:00:03 UTC'), parseFloat('42374000')],
[Date.parse('2014-09-07 10:00:02 UTC'), parseFloat('42404000')],
[Date.parse('2014-09-07 11:00:02 UTC'), parseFloat('42439000')],
[Date.parse('2014-09-07 12:00:02 UTC'), parseFloat('42539000')],
[Date.parse('2014-09-07 13:00:03 UTC'), parseFloat('42585000')],
[Date.parse('2014-09-07 14:00:02 UTC'), parseFloat('42626000')],
[Date.parse('2014-09-07 15:00:02 UTC'), parseFloat('42672000')],
[Date.parse('2014-09-07 16:00:03 UTC'), parseFloat('42707000')],
[Date.parse('2014-09-07 17:00:02 UTC'), parseFloat('42733000')],
[Date.parse('2014-09-07 18:00:02 UTC'), parseFloat('42755000')],
[Date.parse('2014-09-07 19:00:03 UTC'), parseFloat('42779000')],
[Date.parse('2014-09-07 20:00:03 UTC'), parseFloat('42802000')],
[Date.parse('2014-09-07 21:00:03 UTC'), parseFloat('42832000')],
[Date.parse('2014-09-07 22:00:03 UTC'), parseFloat('42871000')],
[Date.parse('2014-09-07 23:00:03 UTC'), parseFloat('42916000')],
[Date.parse('2014-09-08 00:00:02 UTC'), parseFloat('42952000')],
[Date.parse('2014-09-08 01:00:02 UTC'), parseFloat('42988000')],
[Date.parse('2014-09-08 02:00:03 UTC'), parseFloat('43015000')],
[Date.parse('2014-09-08 03:00:03 UTC'), parseFloat('43041000')],
[Date.parse('2014-09-08 04:00:03 UTC'), parseFloat('43069000')],
[Date.parse('2014-09-08 05:00:02 UTC'), parseFloat('43096000')],
[Date.parse('2014-09-08 06:00:02 UTC'), parseFloat('43124000')],
[Date.parse('2014-09-08 07:00:02 UTC'), parseFloat('43149000')],
[Date.parse('2014-09-08 08:00:03 UTC'), parseFloat('43176000')],
[Date.parse('2014-09-08 09:00:02 UTC'), parseFloat('43321000')],
[Date.parse('2014-09-08 10:00:03 UTC'), parseFloat('43552000')],
[Date.parse('2014-09-08 11:00:02 UTC'), parseFloat('43783000')],
[Date.parse('2014-09-08 12:00:02 UTC'), parseFloat('44014000')],
[Date.parse('2014-09-08 13:00:03 UTC'), parseFloat('44248000')],
[Date.parse('2014-09-08 14:00:02 UTC'), parseFloat('44479000')],
[Date.parse('2014-09-08 15:00:03 UTC'), parseFloat('44710000')],
[Date.parse('2014-09-08 16:00:02 UTC'), parseFloat('44939000')],
[Date.parse('2014-09-08 17:00:02 UTC'), parseFloat('45168000')],
[Date.parse('2014-09-08 18:00:02 UTC'), parseFloat('45398000')],
[Date.parse('2014-09-08 19:00:03 UTC'), parseFloat('45630000')],
[Date.parse('2014-09-08 20:00:02 UTC'), parseFloat('45863000')],
[Date.parse('2014-09-08 21:00:02 UTC'), parseFloat('46099000')],
[Date.parse('2014-09-08 22:00:03 UTC'), parseFloat('46353000')],
[Date.parse('2014-09-08 23:00:03 UTC'), parseFloat('46464000')],
[Date.parse('2014-09-09 00:00:02 UTC'), parseFloat('46516000')],
[Date.parse('2014-09-09 01:00:02 UTC'), parseFloat('46560000')],
[Date.parse('2014-09-09 02:00:02 UTC'), parseFloat('46592000')],
[Date.parse('2014-09-09 03:00:03 UTC'), parseFloat('46620000')],
[Date.parse('2014-09-09 04:00:03 UTC'), parseFloat('46647000')],
[Date.parse('2014-09-09 05:00:02 UTC'), parseFloat('46674000')],
[Date.parse('2014-09-09 06:00:02 UTC'), parseFloat('46701000')],
[Date.parse('2014-09-09 07:00:03 UTC'), parseFloat('46726000')],
[Date.parse('2014-09-09 08:00:03 UTC'), parseFloat('46765000')],
[Date.parse('2014-09-09 09:00:02 UTC'), parseFloat('46889000')],
[Date.parse('2014-09-09 10:00:03 UTC'), parseFloat('47122000')],
[Date.parse('2014-09-09 11:00:03 UTC'), parseFloat('47366000')],
[Date.parse('2014-09-09 12:00:02 UTC'), parseFloat('47625000')],
[Date.parse('2014-09-09 13:00:02 UTC'), parseFloat('47880000')],
[Date.parse('2014-09-09 14:00:02 UTC'), parseFloat('48123000')],
[Date.parse('2014-09-09 15:00:02 UTC'), parseFloat('48377000')],
[Date.parse('2014-09-09 16:00:02 UTC'), parseFloat('48621000')],
[Date.parse('2014-09-09 17:00:03 UTC'), parseFloat('48862000')],
[Date.parse('2014-09-09 18:00:02 UTC'), parseFloat('49087000')],
[Date.parse('2014-09-09 19:00:02 UTC'), parseFloat('49324000')],
[Date.parse('2014-09-09 20:00:02 UTC'), parseFloat('49555000')],
[Date.parse('2014-09-09 21:00:02 UTC'), parseFloat('49792000')],
[Date.parse('2014-09-09 22:00:03 UTC'), parseFloat('50038000')],
[Date.parse('2014-09-09 23:00:02 UTC'), parseFloat('50145000')],
[Date.parse('2014-09-10 00:00:02 UTC'), parseFloat('50186000')],
[Date.parse('2014-09-10 01:00:02 UTC'), parseFloat('50222000')],
[Date.parse('2014-09-10 02:00:02 UTC'), parseFloat('50250000')],
[Date.parse('2014-09-10 03:00:02 UTC'), parseFloat('50275000')],
[Date.parse('2014-09-10 04:00:02 UTC'), parseFloat('50302000')],
[Date.parse('2014-09-10 05:00:02 UTC'), parseFloat('50326000')],
[Date.parse('2014-09-10 06:00:02 UTC'), parseFloat('50355000')],
[Date.parse('2014-09-10 07:00:02 UTC'), parseFloat('50380000')],
[Date.parse('2014-09-10 08:00:02 UTC'), parseFloat('50406000')],
[Date.parse('2014-09-10 09:00:02 UTC'), parseFloat('50544000')],
[Date.parse('2014-09-10 10:00:02 UTC'), parseFloat('50774000')],
[Date.parse('2014-09-10 11:00:03 UTC'), parseFloat('51002000')],
[Date.parse('2014-09-10 12:00:02 UTC'), parseFloat('51232000')],
[Date.parse('2014-09-10 13:00:02 UTC'), parseFloat('51466000')],
[Date.parse('2014-09-10 14:00:02 UTC'), parseFloat('51546000')],
[Date.parse('2014-09-10 15:00:03 UTC'), parseFloat('51587000')],
[Date.parse('2014-09-10 16:00:02 UTC'), parseFloat('51642000')],
[Date.parse('2014-09-10 17:00:03 UTC'), parseFloat('51780000')],
[Date.parse('2014-09-10 18:00:02 UTC'), parseFloat('52038000')],
[Date.parse('2014-09-10 19:00:02 UTC'), parseFloat('52292000')],
[Date.parse('2014-09-10 20:00:02 UTC'), parseFloat('52529000')],
[Date.parse('2014-09-10 21:00:02 UTC'), parseFloat('52772000')],
[Date.parse('2014-09-10 22:00:02 UTC'), parseFloat('53016000')],
[Date.parse('2014-09-10 23:00:02 UTC'), parseFloat('53078000')],
[Date.parse('2014-09-11 00:00:02 UTC'), parseFloat('53114000')],
[Date.parse('2014-09-11 01:00:02 UTC'), parseFloat('53148000')],
[Date.parse('2014-09-11 02:00:02 UTC'), parseFloat('53176000')],
[Date.parse('2014-09-11 03:00:02 UTC'), parseFloat('53203000')],
[Date.parse('2014-09-11 04:00:03 UTC'), parseFloat('53229000')],
[Date.parse('2014-09-11 05:00:02 UTC'), parseFloat('53255000')],
[Date.parse('2014-09-11 06:00:02 UTC'), parseFloat('53283000')],
[Date.parse('2014-09-11 07:00:02 UTC'), parseFloat('53309000')],
[Date.parse('2014-09-11 08:00:02 UTC'), parseFloat('53342000')],
[Date.parse('2014-09-11 09:00:02 UTC'), parseFloat('53486000')],
[Date.parse('2014-09-11 10:00:02 UTC'), parseFloat('53714000')],
[Date.parse('2014-09-11 11:00:03 UTC'), parseFloat('53944000')],
[Date.parse('2014-09-11 12:00:02 UTC'), parseFloat('54173000')],
[Date.parse('2014-09-11 13:00:02 UTC'), parseFloat('54403000')],
[Date.parse('2014-09-11 14:00:02 UTC'), parseFloat('54633000')],
[Date.parse('2014-09-11 15:00:02 UTC'), parseFloat('54863000')],
[Date.parse('2014-09-11 16:00:02 UTC'), parseFloat('55094000')],
[Date.parse('2014-09-11 17:00:02 UTC'), parseFloat('55323000')],
[Date.parse('2014-09-11 18:00:03 UTC'), parseFloat('55553000')],
[Date.parse('2014-09-11 19:00:03 UTC'), parseFloat('55782000')],
[Date.parse('2014-09-11 20:00:03 UTC'), parseFloat('56018000')],
[Date.parse('2014-09-11 21:00:02 UTC'), parseFloat('56265000')],
[Date.parse('2014-09-11 22:00:02 UTC'), parseFloat('56522000')],
[Date.parse('2014-09-11 23:00:02 UTC'), parseFloat('56635000')],
[Date.parse('2014-09-12 00:00:03 UTC'), parseFloat('56685000')],
[Date.parse('2014-09-12 01:00:02 UTC'), parseFloat('56729000')],
[Date.parse('2014-09-12 02:00:02 UTC'), parseFloat('56766000')],
[Date.parse('2014-09-12 03:00:02 UTC'), parseFloat('56799000')],
[Date.parse('2014-09-12 04:00:02 UTC'), parseFloat('56833000')],
[Date.parse('2014-09-12 05:00:03 UTC'), parseFloat('56866000')],
[Date.parse('2014-09-12 06:00:02 UTC'), parseFloat('56902000')],
[Date.parse('2014-09-12 07:00:02 UTC'), parseFloat('56935000')],
[Date.parse('2014-09-12 08:00:02 UTC'), parseFloat('56964000')],
[Date.parse('2014-09-12 09:00:03 UTC'), parseFloat('57107000')],
[Date.parse('2014-09-12 10:00:02 UTC'), parseFloat('57337000')],
[Date.parse('2014-09-12 11:00:02 UTC'), parseFloat('57581000')],
[Date.parse('2014-09-12 12:00:03 UTC'), parseFloat('57824000')],
[Date.parse('2014-09-12 13:00:02 UTC'), parseFloat('58063000')],
[Date.parse('2014-09-12 14:00:03 UTC'), parseFloat('58308000')],
[Date.parse('2014-09-12 15:00:02 UTC'), parseFloat('58547000')],
[Date.parse('2014-09-12 16:00:02 UTC'), parseFloat('58787000')],
[Date.parse('2014-09-12 17:00:02 UTC'), parseFloat('59020000')],
[Date.parse('2014-09-12 18:00:02 UTC'), parseFloat('59247000')],
[Date.parse('2014-09-12 19:00:02 UTC'), parseFloat('59491000')],
[Date.parse('2014-09-12 20:00:03 UTC'), parseFloat('59744000')],
[Date.parse('2014-09-12 21:00:03 UTC'), parseFloat('59825000')],
[Date.parse('2014-09-12 22:00:02 UTC'), parseFloat('59902000')],
[Date.parse('2014-09-12 23:00:03 UTC'), parseFloat('59984000')],
[Date.parse('2014-09-13 00:00:02 UTC'), parseFloat('60063000')],
[Date.parse('2014-09-13 01:00:02 UTC'), parseFloat('60126000')],
[Date.parse('2014-09-13 02:00:02 UTC'), parseFloat('60155000')],
[Date.parse('2014-09-13 03:00:02 UTC'), parseFloat('60182000')],
[Date.parse('2014-09-13 04:00:02 UTC'), parseFloat('60207000')],
[Date.parse('2014-09-13 05:00:02 UTC'), parseFloat('60233000')],
[Date.parse('2014-09-13 06:00:02 UTC'), parseFloat('60260000')],
[Date.parse('2014-09-13 07:00:02 UTC'), parseFloat('60287000')],
[Date.parse('2014-09-13 08:00:02 UTC'), parseFloat('60310000')],
[Date.parse('2014-09-13 09:00:02 UTC'), parseFloat('60335000')],
[Date.parse('2014-09-13 10:00:03 UTC'), parseFloat('60499000')],
[Date.parse('2014-09-13 11:00:03 UTC'), parseFloat('60733000')],
[Date.parse('2014-09-13 12:00:03 UTC'), parseFloat('60965000')],
[Date.parse('2014-09-13 13:00:03 UTC'), parseFloat('61192000')],
[Date.parse('2014-09-13 14:00:02 UTC'), parseFloat('61420000')],
[Date.parse('2014-09-13 15:00:03 UTC'), parseFloat('61655000')],
[Date.parse('2014-09-13 16:00:03 UTC'), parseFloat('61882000')],
[Date.parse('2014-09-13 17:00:03 UTC'), parseFloat('62109000')],
[Date.parse('2014-09-13 18:00:02 UTC'), parseFloat('62337000')],
[Date.parse('2014-09-13 19:00:02 UTC'), parseFloat('62399000')],
[Date.parse('2014-09-13 20:00:03 UTC'), parseFloat('62426000')],
[Date.parse('2014-09-13 21:00:02 UTC'), parseFloat('62450000')],
[Date.parse('2014-09-13 22:00:02 UTC'), parseFloat('62479000')],
[Date.parse('2014-09-13 23:00:02 UTC'), parseFloat('62513000')],
[Date.parse('2014-09-14 00:00:03 UTC'), parseFloat('62540000')],
[Date.parse('2014-09-14 01:00:02 UTC'), parseFloat('62574000')],
[Date.parse('2014-09-14 02:00:02 UTC'), parseFloat('62604000')],
[Date.parse('2014-09-14 03:00:02 UTC'), parseFloat('62633000')],
[Date.parse('2014-09-14 04:00:02 UTC'), parseFloat('62660000')],
[Date.parse('2014-09-14 05:00:02 UTC'), parseFloat('62687000')],
[Date.parse('2014-09-14 06:00:02 UTC'), parseFloat('62715000')],
[Date.parse('2014-09-14 07:00:02 UTC'), parseFloat('62741000')],
[Date.parse('2014-09-14 08:00:02 UTC'), parseFloat('62762000')],
[Date.parse('2014-09-14 09:00:03 UTC'), parseFloat('62785000')],
[Date.parse('2014-09-14 10:00:02 UTC'), parseFloat('62812000')],
[Date.parse('2014-09-14 11:00:02 UTC'), parseFloat('63029000')],
[Date.parse('2014-09-14 12:00:03 UTC'), parseFloat('63261000')],
[Date.parse('2014-09-14 13:00:02 UTC'), parseFloat('63340000')],
[Date.parse('2014-09-14 14:00:03 UTC'), parseFloat('63376000')],
[Date.parse('2014-09-14 15:00:02 UTC'), parseFloat('63422000')],
[Date.parse('2014-09-14 16:00:02 UTC'), parseFloat('63457000')],
[Date.parse('2014-09-14 17:00:02 UTC'), parseFloat('63495000')],
[Date.parse('2014-09-14 18:00:02 UTC'), parseFloat('63720000')],
[Date.parse('2014-09-14 19:00:03 UTC'), parseFloat('63951000')],
[Date.parse('2014-09-14 20:00:03 UTC'), parseFloat('64172000')],
[Date.parse('2014-09-14 21:00:03 UTC'), parseFloat('64409000')],
[Date.parse('2014-09-14 22:00:02 UTC'), parseFloat('64656000')],
[Date.parse('2014-09-14 23:00:02 UTC'), parseFloat('64722000')],
[Date.parse('2014-09-15 00:00:02 UTC'), parseFloat('64758000')],
[Date.parse('2014-09-15 01:00:03 UTC'), parseFloat('64789000')],
[Date.parse('2014-09-15 02:00:02 UTC'), parseFloat('64815000')],
[Date.parse('2014-09-15 03:00:02 UTC'), parseFloat('64840000')],
[Date.parse('2014-09-15 04:00:02 UTC'), parseFloat('64866000')],
[Date.parse('2014-09-15 05:00:03 UTC'), parseFloat('64892000')],
[Date.parse('2014-09-15 06:00:02 UTC'), parseFloat('64919000')],
[Date.parse('2014-09-15 07:00:03 UTC'), parseFloat('64943000')],
[Date.parse('2014-09-15 08:00:02 UTC'), parseFloat('64967000')],
[Date.parse('2014-09-15 09:00:02 UTC'), parseFloat('65111000')],
[Date.parse('2014-09-15 10:00:02 UTC'), parseFloat('65339000')],
[Date.parse('2014-09-15 11:00:03 UTC'), parseFloat('65569000')],
[Date.parse('2014-09-15 12:00:02 UTC'), parseFloat('65809000')],
[Date.parse('2014-09-15 13:00:02 UTC'), parseFloat('66048000')],
[Date.parse('2014-09-15 14:00:03 UTC'), parseFloat('66282000')],
[Date.parse('2014-09-15 15:00:02 UTC'), parseFloat('66518000')],
[Date.parse('2014-09-15 16:00:02 UTC'), parseFloat('66747000')],
[Date.parse('2014-09-15 17:00:02 UTC'), parseFloat('66972000')],
[Date.parse('2014-09-15 18:00:02 UTC'), parseFloat('67206000')],
[Date.parse('2014-09-15 19:00:02 UTC'), parseFloat('67433000')],
[Date.parse('2014-09-15 20:00:02 UTC'), parseFloat('67664000')],
[Date.parse('2014-09-15 21:00:02 UTC'), parseFloat('67923000')],
[Date.parse('2014-09-15 22:00:02 UTC'), parseFloat('68179000')],
[Date.parse('2014-09-15 23:00:02 UTC'), parseFloat('68282000')],
[Date.parse('2014-09-16 00:00:02 UTC'), parseFloat('68324000')],
[Date.parse('2014-09-16 01:00:02 UTC'), parseFloat('68365000')],
[Date.parse('2014-09-16 02:00:03 UTC'), parseFloat('68404000')],
[Date.parse('2014-09-16 03:00:03 UTC'), parseFloat('68436000')],
[Date.parse('2014-09-16 04:00:03 UTC'), parseFloat('68461000')],
[Date.parse('2014-09-16 05:00:02 UTC'), parseFloat('68487000')],
[Date.parse('2014-09-16 06:00:02 UTC'), parseFloat('68513000')],
[Date.parse('2014-09-16 07:00:02 UTC'), parseFloat('68541000')],
[Date.parse('2014-09-16 08:00:02 UTC'), parseFloat('68576000')],
[Date.parse('2014-09-16 09:00:02 UTC'), parseFloat('68719000')],
[Date.parse('2014-09-16 10:00:02 UTC'), parseFloat('68946000')]
]
};
var chart = new Highcharts.Chart(options);
});
And as you can see, it shows up pretty well but when I have the same code in IE, it doesn't render. I saw some people saying that it may be caused by some commas but I can't find any.
I have opened this fiddle in IE and I have the same issue, it doesn't print the line :(.
Please help,
Thanks.
Problem is in IE and Date.parse http://jsfiddle.net/px6dmvnx/5/.
$(document).ready(function () {
Highcharts.setOptions({
lang: {
loading: 'Loading...',
months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
exportButtonTitle: 'Export',
printButtonTitle: 'Print',
rangeSelectorFrom: 'From',
rangeSelectorTo: 'To',
rangeSelectorZoom: 'Zoom',
downloadPNG: 'Download PNG',
downloadJPEG: 'Download JPEG',
downloadPDF: 'Download PDF',
downloadSVG: 'Download SVG',
resetZoom: 'Reset',
resetZoomTitle: 'Reset',
thousandsSep: '',
decimalPoint: ','
},
chart: {
borderWidth: 0,
plotShadow: true,
plotBorderWidth: 1
}
});
var options = {};
options.series = [];
options.xAxis = [];
options.yAxis = [];
options.chart = {
zoomType: 'x',
renderTo: 'graph',
marginRight: 50,
marginBottom: 50
};
options.title = {
text: 'My Graph',
x: -20 //center
};
options.subtitle = {
text: 'Test',
x: -20
};
options.legend = {
layout: 'vertical',
align: 'right',
verticalAlign: 'top',
x: -10,
y: 18,
borderWidth: 0
};
options.tooltip = {
shared: false,
borderRadius: 10,
borderWidth: 1
}
options.xAxis[0] = {
type: 'datetime',
tickWidth: 1,
gridLineWidth: 0,
gridLineColor: '#cdcdcd',
tickPixelInterval: 70,
opposite: false
};
options.yAxis[0] = {
tickWidth: 0,
gridLineWidth: 1,
gridLineColor: '#cdcdcd',
tickPixelInterval: 100,
labels: {
formatter: function () {
return this.value;
},
style: {
color: '#0080c0'
}
},
title: {
text: 'test2',
style: {
color: '#0080c0'
}
},
opposite: false
};
options.series[0] = {
name: 'test',
color: '#0080c0',
xAxis: 0,
yAxis: 0,
type: 'spline',
data: [
[123, parseFloat('42186000')] /*,
[Date.parse('2014-09-07 02:00:03 UTC'), parseFloat('42186000')],
[Date.parse('2014-09-07 03:00:02 UTC'), parseFloat('42213000')],
[Date.parse('2014-09-07 04:00:03 UTC'), parseFloat('42243000')],
[Date.parse('2014-09-07 05:00:03 UTC'), parseFloat('42269000')],
[Date.parse('2014-09-07 06:00:03 UTC'), parseFloat('42297000')],
[Date.parse('2014-09-07 07:00:03 UTC'), parseFloat('42323000')],
[Date.parse('2014-09-07 08:00:02 UTC'), parseFloat('42346000')],
[Date.parse('2014-09-07 09:00:03 UTC'), parseFloat('42374000')],
[Date.parse('2014-09-07 10:00:02 UTC'), parseFloat('42404000')],
[Date.parse('2014-09-07 11:00:02 UTC'), parseFloat('42439000')],
[Date.parse('2014-09-07 12:00:02 UTC'), parseFloat('42539000')],
[Date.parse('2014-09-07 13:00:03 UTC'), parseFloat('42585000')],
[Date.parse('2014-09-07 14:00:02 UTC'), parseFloat('42626000')],
[Date.parse('2014-09-07 15:00:02 UTC'), parseFloat('42672000')],
[Date.parse('2014-09-07 16:00:03 UTC'), parseFloat('42707000')],
[Date.parse('2014-09-07 17:00:02 UTC'), parseFloat('42733000')],
[Date.parse('2014-09-07 18:00:02 UTC'), parseFloat('42755000')],
[Date.parse('2014-09-07 19:00:03 UTC'), parseFloat('42779000')],
[Date.parse('2014-09-07 20:00:03 UTC'), parseFloat('42802000')],
[Date.parse('2014-09-07 21:00:03 UTC'), parseFloat('42832000')],
[Date.parse('2014-09-07 22:00:03 UTC'), parseFloat('42871000')],
[Date.parse('2014-09-07 23:00:03 UTC'), parseFloat('42916000')],
[Date.parse('2014-09-08 00:00:02 UTC'), parseFloat('42952000')],
[Date.parse('2014-09-08 01:00:02 UTC'), parseFloat('42988000')],
[Date.parse('2014-09-08 02:00:03 UTC'), parseFloat('43015000')],
[Date.parse('2014-09-08 03:00:03 UTC'), parseFloat('43041000')],
[Date.parse('2014-09-08 04:00:03 UTC'), parseFloat('43069000')],
[Date.parse('2014-09-08 05:00:02 UTC'), parseFloat('43096000')],
[Date.parse('2014-09-08 06:00:02 UTC'), parseFloat('43124000')],
[Date.parse('2014-09-08 07:00:02 UTC'), parseFloat('43149000')],
[Date.parse('2014-09-08 08:00:03 UTC'), parseFloat('43176000')],
[Date.parse('2014-09-08 09:00:02 UTC'), parseFloat('43321000')],
[Date.parse('2014-09-08 10:00:03 UTC'), parseFloat('43552000')],
[Date.parse('2014-09-08 11:00:02 UTC'), parseFloat('43783000')],
[Date.parse('2014-09-08 12:00:02 UTC'), parseFloat('44014000')],
[Date.parse('2014-09-08 13:00:03 UTC'), parseFloat('44248000')],
[Date.parse('2014-09-08 14:00:02 UTC'), parseFloat('44479000')],
[Date.parse('2014-09-08 15:00:03 UTC'), parseFloat('44710000')],
[Date.parse('2014-09-08 16:00:02 UTC'), parseFloat('44939000')],
[Date.parse('2014-09-08 17:00:02 UTC'), parseFloat('45168000')],
[Date.parse('2014-09-08 18:00:02 UTC'), parseFloat('45398000')],
[Date.parse('2014-09-08 19:00:03 UTC'), parseFloat('45630000')],
[Date.parse('2014-09-08 20:00:02 UTC'), parseFloat('45863000')],
[Date.parse('2014-09-08 21:00:02 UTC'), parseFloat('46099000')],
[Date.parse('2014-09-08 22:00:03 UTC'), parseFloat('46353000')],
[Date.parse('2014-09-08 23:00:03 UTC'), parseFloat('46464000')],
[Date.parse('2014-09-09 00:00:02 UTC'), parseFloat('46516000')],
[Date.parse('2014-09-09 01:00:02 UTC'), parseFloat('46560000')],
[Date.parse('2014-09-09 02:00:02 UTC'), parseFloat('46592000')],
[Date.parse('2014-09-09 03:00:03 UTC'), parseFloat('46620000')],
[Date.parse('2014-09-09 04:00:03 UTC'), parseFloat('46647000')],
[Date.parse('2014-09-09 05:00:02 UTC'), parseFloat('46674000')],
[Date.parse('2014-09-09 06:00:02 UTC'), parseFloat('46701000')],
[Date.parse('2014-09-09 07:00:03 UTC'), parseFloat('46726000')],
[Date.parse('2014-09-09 08:00:03 UTC'), parseFloat('46765000')],
[Date.parse('2014-09-09 09:00:02 UTC'), parseFloat('46889000')],
[Date.parse('2014-09-09 10:00:03 UTC'), parseFloat('47122000')],
[Date.parse('2014-09-09 11:00:03 UTC'), parseFloat('47366000')],
[Date.parse('2014-09-09 12:00:02 UTC'), parseFloat('47625000')],
[Date.parse('2014-09-09 13:00:02 UTC'), parseFloat('47880000')],
[Date.parse('2014-09-09 14:00:02 UTC'), parseFloat('48123000')],
[Date.parse('2014-09-09 15:00:02 UTC'), parseFloat('48377000')],
[Date.parse('2014-09-09 16:00:02 UTC'), parseFloat('48621000')],
[Date.parse('2014-09-09 17:00:03 UTC'), parseFloat('48862000')],
[Date.parse('2014-09-09 18:00:02 UTC'), parseFloat('49087000')],
[Date.parse('2014-09-09 19:00:02 UTC'), parseFloat('49324000')],
[Date.parse('2014-09-09 20:00:02 UTC'), parseFloat('49555000')],
[Date.parse('2014-09-09 21:00:02 UTC'), parseFloat('49792000')],
[Date.parse('2014-09-09 22:00:03 UTC'), parseFloat('50038000')],
[Date.parse('2014-09-09 23:00:02 UTC'), parseFloat('50145000')],
[Date.parse('2014-09-10 00:00:02 UTC'), parseFloat('50186000')],
[Date.parse('2014-09-10 01:00:02 UTC'), parseFloat('50222000')],
[Date.parse('2014-09-10 02:00:02 UTC'), parseFloat('50250000')],
[Date.parse('2014-09-10 03:00:02 UTC'), parseFloat('50275000')],
[Date.parse('2014-09-10 04:00:02 UTC'), parseFloat('50302000')],
[Date.parse('2014-09-10 05:00:02 UTC'), parseFloat('50326000')],
[Date.parse('2014-09-10 06:00:02 UTC'), parseFloat('50355000')],
[Date.parse('2014-09-10 07:00:02 UTC'), parseFloat('50380000')],
[Date.parse('2014-09-10 08:00:02 UTC'), parseFloat('50406000')],
[Date.parse('2014-09-10 09:00:02 UTC'), parseFloat('50544000')],
[Date.parse('2014-09-10 10:00:02 UTC'), parseFloat('50774000')],
[Date.parse('2014-09-10 11:00:03 UTC'), parseFloat('51002000')],
[Date.parse('2014-09-10 12:00:02 UTC'), parseFloat('51232000')],
[Date.parse('2014-09-10 13:00:02 UTC'), parseFloat('51466000')],
[Date.parse('2014-09-10 14:00:02 UTC'), parseFloat('51546000')],
[Date.parse('2014-09-10 15:00:03 UTC'), parseFloat('51587000')],
[Date.parse('2014-09-10 16:00:02 UTC'), parseFloat('51642000')],
[Date.parse('2014-09-10 17:00:03 UTC'), parseFloat('51780000')],
[Date.parse('2014-09-10 18:00:02 UTC'), parseFloat('52038000')],
[Date.parse('2014-09-10 19:00:02 UTC'), parseFloat('52292000')],
[Date.parse('2014-09-10 20:00:02 UTC'), parseFloat('52529000')],
[Date.parse('2014-09-10 21:00:02 UTC'), parseFloat('52772000')],
[Date.parse('2014-09-10 22:00:02 UTC'), parseFloat('53016000')],
[Date.parse('2014-09-10 23:00:02 UTC'), parseFloat('53078000')],
[Date.parse('2014-09-11 00:00:02 UTC'), parseFloat('53114000')],
[Date.parse('2014-09-11 01:00:02 UTC'), parseFloat('53148000')],
[Date.parse('2014-09-11 02:00:02 UTC'), parseFloat('53176000')],
[Date.parse('2014-09-11 03:00:02 UTC'), parseFloat('53203000')],
[Date.parse('2014-09-11 04:00:03 UTC'), parseFloat('53229000')],
[Date.parse('2014-09-11 05:00:02 UTC'), parseFloat('53255000')],
[Date.parse('2014-09-11 06:00:02 UTC'), parseFloat('53283000')],
[Date.parse('2014-09-11 07:00:02 UTC'), parseFloat('53309000')],
[Date.parse('2014-09-11 08:00:02 UTC'), parseFloat('53342000')],
[Date.parse('2014-09-11 09:00:02 UTC'), parseFloat('53486000')],
[Date.parse('2014-09-11 10:00:02 UTC'), parseFloat('53714000')],
[Date.parse('2014-09-11 11:00:03 UTC'), parseFloat('53944000')],
[Date.parse('2014-09-11 12:00:02 UTC'), parseFloat('54173000')],
[Date.parse('2014-09-11 13:00:02 UTC'), parseFloat('54403000')],
[Date.parse('2014-09-11 14:00:02 UTC'), parseFloat('54633000')],
[Date.parse('2014-09-11 15:00:02 UTC'), parseFloat('54863000')],
[Date.parse('2014-09-11 16:00:02 UTC'), parseFloat('55094000')],
[Date.parse('2014-09-11 17:00:02 UTC'), parseFloat('55323000')],
[Date.parse('2014-09-11 18:00:03 UTC'), parseFloat('55553000')],
[Date.parse('2014-09-11 19:00:03 UTC'), parseFloat('55782000')],
[Date.parse('2014-09-11 20:00:03 UTC'), parseFloat('56018000')],
[Date.parse('2014-09-11 21:00:02 UTC'), parseFloat('56265000')],
[Date.parse('2014-09-11 22:00:02 UTC'), parseFloat('56522000')],
[Date.parse('2014-09-11 23:00:02 UTC'), parseFloat('56635000')],
[Date.parse('2014-09-12 00:00:03 UTC'), parseFloat('56685000')],
[Date.parse('2014-09-12 01:00:02 UTC'), parseFloat('56729000')],
[Date.parse('2014-09-12 02:00:02 UTC'), parseFloat('56766000')],
[Date.parse('2014-09-12 03:00:02 UTC'), parseFloat('56799000')],
[Date.parse('2014-09-12 04:00:02 UTC'), parseFloat('56833000')],
[Date.parse('2014-09-12 05:00:03 UTC'), parseFloat('56866000')],
[Date.parse('2014-09-12 06:00:02 UTC'), parseFloat('56902000')],
[Date.parse('2014-09-12 07:00:02 UTC'), parseFloat('56935000')],
[Date.parse('2014-09-12 08:00:02 UTC'), parseFloat('56964000')],
[Date.parse('2014-09-12 09:00:03 UTC'), parseFloat('57107000')],
[Date.parse('2014-09-12 10:00:02 UTC'), parseFloat('57337000')],
[Date.parse('2014-09-12 11:00:02 UTC'), parseFloat('57581000')],
[Date.parse('2014-09-12 12:00:03 UTC'), parseFloat('57824000')],
[Date.parse('2014-09-12 13:00:02 UTC'), parseFloat('58063000')],
[Date.parse('2014-09-12 14:00:03 UTC'), parseFloat('58308000')],
[Date.parse('2014-09-12 15:00:02 UTC'), parseFloat('58547000')],
[Date.parse('2014-09-12 16:00:02 UTC'), parseFloat('58787000')],
[Date.parse('2014-09-12 17:00:02 UTC'), parseFloat('59020000')],
[Date.parse('2014-09-12 18:00:02 UTC'), parseFloat('59247000')],
[Date.parse('2014-09-12 19:00:02 UTC'), parseFloat('59491000')],
[Date.parse('2014-09-12 20:00:03 UTC'), parseFloat('59744000')],
[Date.parse('2014-09-12 21:00:03 UTC'), parseFloat('59825000')],
[Date.parse('2014-09-12 22:00:02 UTC'), parseFloat('59902000')],
[Date.parse('2014-09-12 23:00:03 UTC'), parseFloat('59984000')],
[Date.parse('2014-09-13 00:00:02 UTC'), parseFloat('60063000')],
[Date.parse('2014-09-13 01:00:02 UTC'), parseFloat('60126000')],
[Date.parse('2014-09-13 02:00:02 UTC'), parseFloat('60155000')],
[Date.parse('2014-09-13 03:00:02 UTC'), parseFloat('60182000')],
[Date.parse('2014-09-13 04:00:02 UTC'), parseFloat('60207000')],
[Date.parse('2014-09-13 05:00:02 UTC'), parseFloat('60233000')],
[Date.parse('2014-09-13 06:00:02 UTC'), parseFloat('60260000')],
[Date.parse('2014-09-13 07:00:02 UTC'), parseFloat('60287000')],
[Date.parse('2014-09-13 08:00:02 UTC'), parseFloat('60310000')],
[Date.parse('2014-09-13 09:00:02 UTC'), parseFloat('60335000')],
[Date.parse('2014-09-13 10:00:03 UTC'), parseFloat('60499000')],
[Date.parse('2014-09-13 11:00:03 UTC'), parseFloat('60733000')],
[Date.parse('2014-09-13 12:00:03 UTC'), parseFloat('60965000')],
[Date.parse('2014-09-13 13:00:03 UTC'), parseFloat('61192000')],
[Date.parse('2014-09-13 14:00:02 UTC'), parseFloat('61420000')],
[Date.parse('2014-09-13 15:00:03 UTC'), parseFloat('61655000')],
[Date.parse('2014-09-13 16:00:03 UTC'), parseFloat('61882000')],
[Date.parse('2014-09-13 17:00:03 UTC'), parseFloat('62109000')],
[Date.parse('2014-09-13 18:00:02 UTC'), parseFloat('62337000')],
[Date.parse('2014-09-13 19:00:02 UTC'), parseFloat('62399000')],
[Date.parse('2014-09-13 20:00:03 UTC'), parseFloat('62426000')],
[Date.parse('2014-09-13 21:00:02 UTC'), parseFloat('62450000')],
[Date.parse('2014-09-13 22:00:02 UTC'), parseFloat('62479000')],
[Date.parse('2014-09-13 23:00:02 UTC'), parseFloat('62513000')],
[Date.parse('2014-09-14 00:00:03 UTC'), parseFloat('62540000')],
[Date.parse('2014-09-14 01:00:02 UTC'), parseFloat('62574000')],
[Date.parse('2014-09-14 02:00:02 UTC'), parseFloat('62604000')],
[Date.parse('2014-09-14 03:00:02 UTC'), parseFloat('62633000')],
[Date.parse('2014-09-14 04:00:02 UTC'), parseFloat('62660000')],
[Date.parse('2014-09-14 05:00:02 UTC'), parseFloat('62687000')],
[Date.parse('2014-09-14 06:00:02 UTC'), parseFloat('62715000')],
[Date.parse('2014-09-14 07:00:02 UTC'), parseFloat('62741000')],
[Date.parse('2014-09-14 08:00:02 UTC'), parseFloat('62762000')],
[Date.parse('2014-09-14 09:00:03 UTC'), parseFloat('62785000')],
[Date.parse('2014-09-14 10:00:02 UTC'), parseFloat('62812000')],
[Date.parse('2014-09-14 11:00:02 UTC'), parseFloat('63029000')],
[Date.parse('2014-09-14 12:00:03 UTC'), parseFloat('63261000')],
[Date.parse('2014-09-14 13:00:02 UTC'), parseFloat('63340000')],
[Date.parse('2014-09-14 14:00:03 UTC'), parseFloat('63376000')],
[Date.parse('2014-09-14 15:00:02 UTC'), parseFloat('63422000')],
[Date.parse('2014-09-14 16:00:02 UTC'), parseFloat('63457000')],
[Date.parse('2014-09-14 17:00:02 UTC'), parseFloat('63495000')],
[Date.parse('2014-09-14 18:00:02 UTC'), parseFloat('63720000')],
[Date.parse('2014-09-14 19:00:03 UTC'), parseFloat('63951000')],
[Date.parse('2014-09-14 20:00:03 UTC'), parseFloat('64172000')],
[Date.parse('2014-09-14 21:00:03 UTC'), parseFloat('64409000')],
[Date.parse('2014-09-14 22:00:02 UTC'), parseFloat('64656000')],
[Date.parse('2014-09-14 23:00:02 UTC'), parseFloat('64722000')],
[Date.parse('2014-09-15 00:00:02 UTC'), parseFloat('64758000')],
[Date.parse('2014-09-15 01:00:03 UTC'), parseFloat('64789000')],
[Date.parse('2014-09-15 02:00:02 UTC'), parseFloat('64815000')],
[Date.parse('2014-09-15 03:00:02 UTC'), parseFloat('64840000')],
[Date.parse('2014-09-15 04:00:02 UTC'), parseFloat('64866000')],
[Date.parse('2014-09-15 05:00:03 UTC'), parseFloat('64892000')],
[Date.parse('2014-09-15 06:00:02 UTC'), parseFloat('64919000')],
[Date.parse('2014-09-15 07:00:03 UTC'), parseFloat('64943000')],
[Date.parse('2014-09-15 08:00:02 UTC'), parseFloat('64967000')],
[Date.parse('2014-09-15 09:00:02 UTC'), parseFloat('65111000')],
[Date.parse('2014-09-15 10:00:02 UTC'), parseFloat('65339000')],
[Date.parse('2014-09-15 11:00:03 UTC'), parseFloat('65569000')],
[Date.parse('2014-09-15 12:00:02 UTC'), parseFloat('65809000')],
[Date.parse('2014-09-15 13:00:02 UTC'), parseFloat('66048000')],
[Date.parse('2014-09-15 14:00:03 UTC'), parseFloat('66282000')],
[Date.parse('2014-09-15 15:00:02 UTC'), parseFloat('66518000')],
[Date.parse('2014-09-15 16:00:02 UTC'), parseFloat('66747000')],
[Date.parse('2014-09-15 17:00:02 UTC'), parseFloat('66972000')],
[Date.parse('2014-09-15 18:00:02 UTC'), parseFloat('67206000')],
[Date.parse('2014-09-15 19:00:02 UTC'), parseFloat('67433000')],
[Date.parse('2014-09-15 20:00:02 UTC'), parseFloat('67664000')],
[Date.parse('2014-09-15 21:00:02 UTC'), parseFloat('67923000')],
[Date.parse('2014-09-15 22:00:02 UTC'), parseFloat('68179000')],
[Date.parse('2014-09-15 23:00:02 UTC'), parseFloat('68282000')],
[Date.parse('2014-09-16 00:00:02 UTC'), parseFloat('68324000')],
[Date.parse('2014-09-16 01:00:02 UTC'), parseFloat('68365000')],
[Date.parse('2014-09-16 02:00:03 UTC'), parseFloat('68404000')],
[Date.parse('2014-09-16 03:00:03 UTC'), parseFloat('68436000')],
[Date.parse('2014-09-16 04:00:03 UTC'), parseFloat('68461000')],
[Date.parse('2014-09-16 05:00:02 UTC'), parseFloat('68487000')],
[Date.parse('2014-09-16 06:00:02 UTC'), parseFloat('68513000')],
[Date.parse('2014-09-16 07:00:02 UTC'), parseFloat('68541000')],
[Date.parse('2014-09-16 08:00:02 UTC'), parseFloat('68576000')],
[Date.parse('2014-09-16 09:00:02 UTC'), parseFloat('68719000')],
[Date.parse('2014-09-16 10:00:02 UTC'), parseFloat('68946000')]*/
]
};
var chart = new Highcharts.Chart(options);
});
You could try other data parsers.
EDIT: You can split your data and use Date.UTC() or prepare javascript timestamps in the backend.

Resources