| |
|
|
| |
| Chart.defaults.font.family = "'Inter', system-ui, sans-serif"; |
| Chart.defaults.color = '#4b5563'; |
| Chart.defaults.scale.grid.color = '#f3f4f6'; |
|
|
| |
| const marketShiftCtx = document.getElementById('marketShiftChart').getContext('2d'); |
| new Chart(marketShiftCtx, { |
| type: 'line', |
| data: { |
| labels: ['2020', '2022', '2024', '2026', '2028', '2030', '2032', '2035'], |
| datasets: [ |
| { |
| label: 'Routine/Manual Jobs', |
| data: [100, 95, 88, 75, 60, 50, 40, 30], |
| borderColor: '#ef4444', |
| backgroundColor: 'rgba(239, 68, 68, 0.1)', |
| fill: true, |
| tension: 0.4, |
| borderWidth: 3 |
| }, |
| { |
| label: 'Creative/Strategic Jobs', |
| data: [40, 45, 55, 70, 85, 100, 120, 150], |
| borderColor: '#2563eb', |
| backgroundColor: 'rgba(37, 99, 235, 0.1)', |
| fill: true, |
| tension: 0.4, |
| borderWidth: 3 |
| } |
| ] |
| }, |
| options: { |
| responsive: true, |
| maintainAspectRatio: false, |
| plugins: { |
| legend: { |
| position: 'top', |
| align: 'end', |
| labels: { |
| usePointStyle: true, |
| boxWidth: 8 |
| } |
| }, |
| title: { |
| display: true, |
| text: 'Workforce Composition Index (2020-2035)', |
| font: { |
| size: 16, |
| weight: '600' |
| }, |
| align: 'start', |
| padding: { |
| bottom: 20 |
| } |
| }, |
| tooltip: { |
| mode: 'index', |
| intersect: false, |
| backgroundColor: 'rgba(17, 24, 39, 0.9)', |
| padding: 12, |
| cornerRadius: 8 |
| } |
| }, |
| scales: { |
| y: { |
| beginAtZero: true, |
| title: { |
| display: true, |
| text: 'Job Volume Index' |
| } |
| } |
| }, |
| interaction: { |
| mode: 'nearest', |
| axis: 'x', |
| intersect: false |
| } |
| } |
| }); |
|
|
| |
| const automationPotentialCtx = document.getElementById('automationPotentialChart').getContext('2d'); |
| new Chart(automationPotentialCtx, { |
| type: 'bar', |
| data: { |
| labels: ['Office Support', 'Production', 'Food Service', 'Transportation', 'Sales', 'Management', 'Education'], |
| datasets: [{ |
| label: '% of Tasks Automatable', |
| data: [85, 80, 75, 65, 55, 30, 20], |
| backgroundColor: [ |
| 'rgba(239, 68, 68, 0.8)', |
| 'rgba(239, 68, 68, 0.8)', |
| 'rgba(239, 68, 68, 0.8)', |
| 'rgba(245, 158, 11, 0.8)', |
| 'rgba(245, 158, 11, 0.8)', |
| 'rgba(16, 185, 129, 0.8)', |
| 'rgba(16, 185, 129, 0.8)' |
| ], |
| borderRadius: 6 |
| }] |
| }, |
| options: { |
| responsive: true, |
| maintainAspectRatio: false, |
| plugins: { |
| legend: { display: false }, |
| title: { |
| display: true, |
| text: 'Automation Potential by Sector (Current Tech)', |
| align: 'start', |
| font: { size: 16, weight: '600' } |
| } |
| }, |
| scales: { |
| y: { |
| beginAtZero: true, |
| max: 100, |
| title: { display: true, text: 'Percentage (%)' } |
| } |
| } |
| } |
| }); |
|
|
| |
| const industryRadarCtx = document.getElementById('industryRadarChart').getContext('2d'); |
| new Chart(industryRadarCtx, { |
| type: 'radar', |
| data: { |
| labels: ['Finance', 'Healthcare', 'Manufacturing', 'Retail', 'Tech', 'Education'], |
| datasets: [{ |
| label: 'Automation Risk', |
| data: [85, 40, 90, 75, 50, 30], |
| fill: true, |
| backgroundColor: 'rgba(239, 68, 68, 0.2)', |
| borderColor: '#ef4444', |
| pointBackgroundColor: '#ef4444', |
| pointBorderColor: '#fff', |
| pointHoverBackgroundColor: '#fff', |
| pointHoverBorderColor: '#ef4444' |
| }, { |
| label: 'AI Augmentation Potential', |
| data: [90, 95, 60, 50, 100, 85], |
| fill: true, |
| backgroundColor: 'rgba(37, 99, 235, 0.2)', |
| borderColor: '#2563eb', |
| pointBackgroundColor: '#2563eb', |
| pointBorderColor: '#fff', |
| pointHoverBackgroundColor: '#fff', |
| pointHoverBorderColor: '#2563eb' |
| }] |
| }, |
| options: { |
| responsive: true, |
| maintainAspectRatio: false, |
| plugins: { |
| legend: { |
| position: 'bottom' |
| } |
| }, |
| scales: { |
| r: { |
| angleLines: { |
| color: '#e5e7eb' |
| }, |
| grid: { |
| color: '#e5e7eb' |
| }, |
| pointLabels: { |
| font: { |
| size: 12, |
| weight: '500' |
| } |
| }, |
| suggestedMin: 0, |
| suggestedMax: 100 |
| } |
| } |
| } |
| }); |
|
|
| |
| const productivityCtx = document.getElementById('productivityChart').getContext('2d'); |
| new Chart(productivityCtx, { |
| type: 'bar', |
| data: { |
| labels: ['2015', '2017', '2019', '2021', '2023', '2025 (Proj)', '2027 (Proj)', '2030 (Proj)'], |
| datasets: [ |
| { |
| label: 'Productivity Output', |
| data: [100, 104, 109, 115, 125, 140, 165, 210], |
| type: 'line', |
| borderColor: '#10b981', |
| borderWidth: 3, |
| tension: 0.4, |
| yAxisID: 'y' |
| }, |
| { |
| label: 'Median Wage Growth', |
| data: [100, 102, 105, 107, 109, 112, 116, 122], |
| backgroundColor: '#9ca3af', |
| yAxisID: 'y' |
| } |
| ] |
| }, |
| options: { |
| responsive: true, |
| maintainAspectRatio: false, |
| plugins: { |
| title: { |
| display: true, |
| text: 'The Great Divergence: Productivity vs. Wages', |
| align: 'start', |
| font: { |
| size: 16, |
| weight: '600' |
| } |
| } |
| }, |
| scales: { |
| y: { |
| beginAtZero: false, |
| min: 90, |
| title: { |
| display: true, |
| text: 'Index (2015 = 100)' |
| } |
| } |
| } |
| } |
| }); |
|
|
| |
| const gdpImpactCtx = document.getElementById('gdpImpactChart').getContext('2d'); |
| new Chart(gdpImpactCtx, { |
| type: 'doughnut', |
| data: { |
| labels: ['Traditional Growth', 'AI-Driven Productivity', 'New AI Products/Services'], |
| datasets: [{ |
| data: [55, 30, 15], |
| backgroundColor: [ |
| '#9ca3af', |
| '#2563eb', |
| '#10b981' |
| ], |
| hoverOffset: 4 |
| }] |
| }, |
| options: { |
| responsive: true, |
| maintainAspectRatio: false, |
| plugins: { |
| legend: { |
| position: 'right' |
| }, |
| title: { |
| display: true, |
| text: 'Projected Sources of GDP Growth (2030)', |
| align: 'start', |
| font: { size: 16, weight: '600' } |
| } |
| }, |
| cutout: '60%' |
| } |
| }); |
|
|