Navigator Research
Skip to content
Trusted data. Rapid strategic insights. Winning messages.
Subscribe to get our latest polling and messaging updates.
Americans’ Perceptions of the National Economy
`;
const canvas = document.getElementById("chart-" + secID);
const ctx = canvas.getContext("2d");
const canvas_y = document.getElementById("chart-" + secID + "_y");
const yCtx = canvas_y.getContext("2d");
let chart, yChart;
const parseDate = (val) => {
if (val instanceof Date && !isNaN(val)) return val;
if (typeof val === "string" && val.includes("/")) {
const p = val.split("/").map(x => parseInt(x));
if (p.length === 3) {
let [a, b, c] = p;
const year = c < 100 ? 2000 + c : c;
let month, day;
if (a > 12) { day = a; month = b; }
else if (b > 12) { month = a; day = b; }
else { month = a; day = b; }
return new Date(year, month - 1, day);
}
}
return null;
};
const formatDate = (d) =>
d.toLocaleDateString("en-US", {
month: "short",
day: "2-digit",
year: "2-digit"
});
function loadSheet(sheetName) {
[...tabList.children].forEach(div => div.classList.remove("active"));
tabList.querySelector(`[data-sheet="${sheetName}"]`)?.classList.add("active");
const sheet = workbook.Sheets[sheetName];
const data = XLSX.utils.sheet_to_json(sheet, { header: 1, raw: false, cellDates: true });
if (!data.length) return;
//const useRowAsXAxis = data[0].length > data.length;
let xLabels = [];
const datasets = [];
const SHEET_COLORS = window.EXCEL_SHEET_COLORS[sheetName] || [];
// Build datasets
for (let col = 1; col < data[0].length; col++)
xLabels.push(parseDate(data[0][col]));
for (let row = 1; row < data.length; row++) {
const label = data[row][0];
const vals = data[row].slice(1).map(v => Number(v) || 0);
datasets.push({
label,
data: vals,
borderColor: SHEET_COLORS[row - 1] || `hsl(${(row * 40) % 360}, 70%, 50%)`,
backgroundColor: SHEET_COLORS[row - 1] || `hsl(${(row * 40) % 360}, 70%, 50%)`,
borderWidth: 2,
tension: 0.2
});
}
// Sort by date
const sorted = xLabels
.map((d, i) => ({ d, i }))
.filter(x => x.d instanceof Date)
.sort((a, b) => a.d - b.d);
xLabels = sorted.map(x => x.d).map(d => formatDate(d));
datasets.forEach(ds => {
ds.data = sorted.map(x => ds.data[x.i]);
});
const count = xLabels.length;
console.log("Data points:", count);
canvas.width = count > 30 ? count * 28 : 1230;
canvas_y.width = count > 30 ? count * 28 : 1230;
canvas.style.width = (count > 30 ? count * 28 : 1230) + "px";
canvas_y.style.width = (count > 30 ? count * 28 : 1230) + "px";
if (chart) chart.destroy();
if (yChart) yChart.destroy();
// Main chart
chart = new Chart(ctx, {
type: "line",
data: { labels: xLabels, datasets },
options: {
responsive: false,
maintainAspectRatio: false,
scales: {
x: { ticks: { autoSkip: false } } ,
y: {
display: true,
beginAtZero: true,
suggestedMin: -100,
suggestedMax: 20,
}
},
plugins: { legend: { display: false } }
}
});
// Fake Y-axis chart
yChart = new Chart(yCtx, {
type: "line",
data: { labels: xLabels, datasets },
options: {
responsive: false,
maintainAspectRatio: false,
scales: {
x: {
ticks: { autoSkip: false } ,
// display: false,
},
y: {
display: true,
beginAtZero: true,
suggestedMin: -100,
suggestedMax: 20,
}
},
plugins: { legend: { display: false } },
animations: false
}
});
// ================= Y-AXIS SYNC + RTL SHOW/HIDE =================
const mainChartContainer = container.querySelector(".main-chart");
const yAxisHolder = container.querySelector(".y-axis-chart-con");
mainChartContainer.addEventListener('scroll', () => {
const scrollLeft = Math.abs(mainChartContainer.scrollLeft);
const maxScroll = mainChartContainer.scrollWidth - mainChartContainer.clientWidth;
// hide when 50px before fully scrolled
if (scrollLeft >= maxScroll - 50) {
yAxisHolder.style.opacity = '0';
yAxisHolder.style.pointerEvents = 'none';
} else {
yAxisHolder.style.opacity = '1';
yAxisHolder.style.pointerEvents = 'auto';
}
});
// Legend
const legendBox = document.getElementById("legend-" + secID);
legendBox.innerHTML = "";
datasets.forEach((ds, index) => {
if (!ds.label || ds.label === "undefined") return;
const item = document.createElement("label");
item.className = "legend-item";
item.style.color = ds.borderColor;
const cb = document.createElement("input");
cb.type = "checkbox";
cb.checked = chart.isDatasetVisible(index);
const checkmark = document.createElement("span");
checkmark.className = "checkmark";
const textSpan = document.createElement("span");
textSpan.textContent = ds.label;
cb.addEventListener("change", () => {
chart.setDatasetVisibility(index, cb.checked);
yChart.setDatasetVisibility(index, cb.checked);
chart.update();
yChart.update();
});
item.append(cb, checkmark, textSpan);
legendBox.appendChild(item);
});
}
loadSheet(sheetNames[0]);
});
});
Who We Are
Navigator tracks public opinion on the nation’s most pressing issues and transforms trusted data into rapid strategic insights and winning messages. Grounded in rigorous methodology and years of longitudinal research, we deliver clear, actionable guidance that helps leaders shape debates and move audiences.
National Surveys
National quantitative surveys that track how public opinion shifts as issues evolve in real time.
Qualitative Research
In-depth qualitative research that reveals how Americans think, feel, and talk about major issues.
Battleground Surveys
Targeted surveys in U.S. House districts that pinpoint issue priorities of everyday Americans.
Messaging Guidance
Strategic messaging guidance that turns trusted research into clear, usable language and winning policy arguments.
October 27, 2026
Tina Tang
This Navigator Research report covers how Americans view the two political parties.
This is a special report from Navigating the Vote containing findings from a focus group conducted with white suburban moms who voted for President Trump in 2024 but now regret their vote.
Julie Alderman Boudreau and Avery Smedley
This Navigator Research report covers Americans' views and uses of AI.
Melissa Toufanian
This Navigator Research report covers new data from a survey conducted October 1 - 5 on Americans' views and uses of AI.
Avery Smedley & Julie Alderman Boudreau
This Navigating the Vote report covers Gen Z voters who supported President Trump in 2024 but now regret their vote.
Abigail Xu and Tina Tang
Our work has been featured in major national and in-state media outlets.
Subscribe to get our latest polling and messaging updates