Я использую React.js и chart.js для отображения данных аналитики. Бэкэнд обеспечивает временные метки в UTC, и я преобразую эти временные метки в локальный часовой пояс пользователя перед рендерингом. данные. Вот функция, ответственная за получение и форматирование этих данных: < /p>
const getChartDataCampId = async (campId) => {
if (!campId) return;
handleLoader(true);
const now = Date.now();
let { from, to } = dateRange;
from = from ? new Date(from) : subDays(now, DEFAULT_DAYS_ON_CHART);
to = to ? new Date(to) : new Date(now);
if (Date.parse(from) > Date.parse(to)) {
setDateRangeErr("Invalid date range");
return;
}
setDateRangeErr("");
const userTz = Intl.DateTimeFormat().resolvedOptions().timeZone;
const fromInUserTZ = convertTZ(from, userTz);
const toInUserTZ = convertTZ(to, userTz);
const formattedFrom1 = fromInUserTZ.toLocaleString("sv-SE", {
timeZone: userTz,
}).replace(" ", "T");
const formattedTo1 = toInUserTZ.toLocaleString("sv-SE", {
timeZone: userTz,
}).replace(" ", "T");
try {
const params = {
campaignIds: campId,
from: formattedFrom1,
to: formattedTo1,
};
let emailSentChartData = await jobsApi.getChartData(null, campId, params);
let multiChannelChartData = await jobsApi.getMultichannelChartData(
user.email,
null,
params
);
const augRes = getAugmentRes({
clicks: emailSentChartData.clicks,
conversations: emailSentChartData.conversations,
meetings: emailSentChartData.meetings,
emailsSent: emailSentChartData?.dailySends,
leadsGenerated: emailSentChartData?.dailyLeads,
emailsDelivered: emailSentChartData?.dailyDelivered,
emailsOpened: emailSentChartData?.dailyOpened,
allReplies: emailSentChartData?.allReplies,
repliedEmails: emailSentChartData?.repliedEmails,
unSubscribeCount: emailSentChartData?.unSubscribeCount,
webSiteVisit: emailSentChartData?.webSiteVisit,
replies: emailSentChartData?.replies,
pageViews: emailSentChartData?.pageViews,
videoViews: emailSentChartData?.videoViews,
avgVideoViews: emailSentChartData?.avgVideoViews,
avgVideoViewPercentage: emailSentChartData?.avgVideoViewPercentage,
invitationSent: multiChannelChartData.dailyInvitationSends,
invitationAccepted: multiChannelChartData.dailyAccepted,
invitationRejected: multiChannelChartData.dailyRejected,
messageSent: multiChannelChartData.dailyMessagesSent,
messageSeen: multiChannelChartData.messageSeen,
params,
});
if (filterData === "Total") {
const totalDataRes = await jobsApi.getLeadsTotalData([campId], dateRange);
const augResTotal = getAugmentResTotal({
clicks: totalDataRes?.clicks,
emailsOpened: totalDataRes?.opens,
params,
});
augRes.clicks = augResTotal.clicks;
augRes.emailsOpened = augResTotal.emailsOpened;
}
handleLoader(false);
return augRes;
} catch (err) {
console.log("Error fetching chart data!");
console.log("Error here", err);
}
};
< /code>
Что я хочу:
Я хочу показать данные диаграммы в локальном часовом поясе, а не UTC, используя chart.js в React. < /p>
Что происходит:
После преобразования времени я делаю не так? Как мне это исправить?
Подробнее здесь: https://stackoverflow.com/questions/796 ... conversion
React chart.js не обновляется после применения преобразования часового пояса ⇐ Javascript
Форум по Javascript
1749821979
Anonymous
Я использую React.js и chart.js для отображения данных аналитики. Бэкэнд обеспечивает временные метки в UTC, и я преобразую эти временные метки в локальный часовой пояс пользователя перед рендерингом. данные. Вот функция, ответственная за получение и форматирование этих данных: < /p>
const getChartDataCampId = async (campId) => {
if (!campId) return;
handleLoader(true);
const now = Date.now();
let { from, to } = dateRange;
from = from ? new Date(from) : subDays(now, DEFAULT_DAYS_ON_CHART);
to = to ? new Date(to) : new Date(now);
if (Date.parse(from) > Date.parse(to)) {
setDateRangeErr("Invalid date range");
return;
}
setDateRangeErr("");
const userTz = Intl.DateTimeFormat().resolvedOptions().timeZone;
const fromInUserTZ = convertTZ(from, userTz);
const toInUserTZ = convertTZ(to, userTz);
const formattedFrom1 = fromInUserTZ.toLocaleString("sv-SE", {
timeZone: userTz,
}).replace(" ", "T");
const formattedTo1 = toInUserTZ.toLocaleString("sv-SE", {
timeZone: userTz,
}).replace(" ", "T");
try {
const params = {
campaignIds: campId,
from: formattedFrom1,
to: formattedTo1,
};
let emailSentChartData = await jobsApi.getChartData(null, campId, params);
let multiChannelChartData = await jobsApi.getMultichannelChartData(
user.email,
null,
params
);
const augRes = getAugmentRes({
clicks: emailSentChartData.clicks,
conversations: emailSentChartData.conversations,
meetings: emailSentChartData.meetings,
emailsSent: emailSentChartData?.dailySends,
leadsGenerated: emailSentChartData?.dailyLeads,
emailsDelivered: emailSentChartData?.dailyDelivered,
emailsOpened: emailSentChartData?.dailyOpened,
allReplies: emailSentChartData?.allReplies,
repliedEmails: emailSentChartData?.repliedEmails,
unSubscribeCount: emailSentChartData?.unSubscribeCount,
webSiteVisit: emailSentChartData?.webSiteVisit,
replies: emailSentChartData?.replies,
pageViews: emailSentChartData?.pageViews,
videoViews: emailSentChartData?.videoViews,
avgVideoViews: emailSentChartData?.avgVideoViews,
avgVideoViewPercentage: emailSentChartData?.avgVideoViewPercentage,
invitationSent: multiChannelChartData.dailyInvitationSends,
invitationAccepted: multiChannelChartData.dailyAccepted,
invitationRejected: multiChannelChartData.dailyRejected,
messageSent: multiChannelChartData.dailyMessagesSent,
messageSeen: multiChannelChartData.messageSeen,
params,
});
if (filterData === "Total") {
const totalDataRes = await jobsApi.getLeadsTotalData([campId], dateRange);
const augResTotal = getAugmentResTotal({
clicks: totalDataRes?.clicks,
emailsOpened: totalDataRes?.opens,
params,
});
augRes.clicks = augResTotal.clicks;
augRes.emailsOpened = augResTotal.emailsOpened;
}
handleLoader(false);
return augRes;
} catch (err) {
console.log("Error fetching chart data!");
console.log("Error here", err);
}
};
< /code>
Что я хочу:
Я хочу показать данные диаграммы в локальном часовом поясе, а не UTC, используя chart.js в React. < /p>
Что происходит:
После преобразования времени я делаю не так? Как мне это исправить?
Подробнее здесь: [url]https://stackoverflow.com/questions/79664943/react-chart-js-not-updating-after-applying-timezone-conversion[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия