fix timezones
This commit is contained in:
		
							
								
								
									
										95
									
								
								server.js
									
									
									
									
									
								
							
							
						
						
									
										95
									
								
								server.js
									
									
									
									
									
								
							| @@ -206,7 +206,7 @@ async function index(req, res) { | |||||||
|  |  | ||||||
|     const last11DaysQuery = ` |     const last11DaysQuery = ` | ||||||
|     WITH date_sequence AS ( |     WITH date_sequence AS ( | ||||||
|       SELECT DATE_TRUNC('day', NOW() - INTERVAL '10 days') + (generate_series(0, 10) || ' days')::interval AS day |       SELECT DATE_TRUNC('day', CURRENT_DATE - INTERVAL '10 days') + (generate_series(0, 10) || ' days')::interval AS day | ||||||
|     ) |     ) | ||||||
|     SELECT |     SELECT | ||||||
|       date_sequence.day AS day, |       date_sequence.day AS day, | ||||||
| @@ -216,8 +216,8 @@ async function index(req, res) { | |||||||
|       SELECT DISTINCT ON (evtuuid) evtuuid, time |       SELECT DISTINCT ON (evtuuid) evtuuid, time | ||||||
|       FROM alarms |       FROM alarms | ||||||
|       WHERE alarmtype = 56 |       WHERE alarmtype = 56 | ||||||
|       AND time >= NOW() - INTERVAL '11 days' |       AND time >= CURRENT_DATE - INTERVAL '11 days' | ||||||
|       AND time <= NOW() + INTERVAL '1 day' |       AND time <= CURRENT_DATE + INTERVAL '1 day' | ||||||
|       ${!templateData.isAdmin ? 'AND serial = ANY($1)' : ''} |       ${!templateData.isAdmin ? 'AND serial = ANY($1)' : ''} | ||||||
|       ORDER BY evtuuid, time DESC  |       ORDER BY evtuuid, time DESC  | ||||||
|     ) AS a ON DATE_TRUNC('day', a.time) = date_sequence.day |     ) AS a ON DATE_TRUNC('day', a.time) = date_sequence.day | ||||||
| @@ -228,7 +228,7 @@ async function index(req, res) { | |||||||
|  |  | ||||||
|     const daysBeforeQuery = ` |     const daysBeforeQuery = ` | ||||||
|     WITH date_sequence AS ( |     WITH date_sequence AS ( | ||||||
|       SELECT DATE_TRUNC('day', NOW() - INTERVAL '21 days') + (generate_series(0, 10) || ' days')::interval AS day |       SELECT DATE_TRUNC('day', CURRENT_DATE - INTERVAL '21 days') + (generate_series(0, 10) || ' days')::interval AS day | ||||||
|     ) |     ) | ||||||
|     SELECT |     SELECT | ||||||
|       date_sequence.day AS day, |       date_sequence.day AS day, | ||||||
| @@ -238,8 +238,8 @@ async function index(req, res) { | |||||||
|       SELECT DISTINCT ON (evtuuid) evtuuid, time |       SELECT DISTINCT ON (evtuuid) evtuuid, time | ||||||
|       FROM alarms |       FROM alarms | ||||||
|       WHERE alarmtype = 56 |       WHERE alarmtype = 56 | ||||||
|       AND time >= NOW() - INTERVAL '21 days' |       AND time >= CURRENT_DATE - INTERVAL '21 days' | ||||||
|       AND time <= NOW() + INTERVAL '10 day' |       AND time <= CURRENT_DATE + INTERVAL '10 day' | ||||||
|       ${!templateData.isAdmin ? 'AND serial = ANY($1)' : ''} |       ${!templateData.isAdmin ? 'AND serial = ANY($1)' : ''} | ||||||
|       ORDER BY evtuuid, time DESC  |       ORDER BY evtuuid, time DESC  | ||||||
|     ) AS a ON DATE_TRUNC('day', a.time) = date_sequence.day |     ) AS a ON DATE_TRUNC('day', a.time) = date_sequence.day | ||||||
| @@ -270,8 +270,8 @@ async function index(req, res) { | |||||||
|     DATE_TRUNC('day', time) AS day, |     DATE_TRUNC('day', time) AS day, | ||||||
|     CASE WHEN COUNT(*) = 0 THEN 0 ELSE 1 END AS sort_value |     CASE WHEN COUNT(*) = 0 THEN 0 ELSE 1 END AS sort_value | ||||||
|   FROM geo |   FROM geo | ||||||
|   WHERE time >= NOW() - INTERVAL '10 days' |   WHERE time >= CURRENT_DATE - INTERVAL '10 days' | ||||||
|     AND time <= NOW() + INTERVAL '1 day' |     AND time <= CURRENT_DATE + INTERVAL '1 day' | ||||||
|     ${!templateData.isAdmin ? 'AND serial = ANY($1)' : ''} |     ${!templateData.isAdmin ? 'AND serial = ANY($1)' : ''} | ||||||
|   GROUP BY DATE_TRUNC('day', time) |   GROUP BY DATE_TRUNC('day', time) | ||||||
|   ORDER BY sort_value DESC, day DESC; |   ORDER BY sort_value DESC, day DESC; | ||||||
| @@ -562,7 +562,7 @@ async function live(req, res) { | |||||||
|       SELECT DISTINCT ON (evtuuid) evtuuid, id, cmdno, time, serial, st |       SELECT DISTINCT ON (evtuuid) evtuuid, id, cmdno, time, serial, st | ||||||
|       FROM alarms |       FROM alarms | ||||||
|       WHERE alarmtype = 56 |       WHERE alarmtype = 56 | ||||||
|       ${!templateData.isAdmin ? 'AND serial = ANY($2)' : ''} |       ${!templateData.isAdmin ? 'AND serial = ANY($1)' : ''} | ||||||
|       ORDER BY evtuuid, time DESC  |       ORDER BY evtuuid, time DESC  | ||||||
|     ) AS a |     ) AS a | ||||||
|     LEFT JOIN registrars AS r ON a.serial = r.serial |     LEFT JOIN registrars AS r ON a.serial = r.serial | ||||||
| @@ -574,7 +574,7 @@ async function live(req, res) { | |||||||
|     ORDER BY a.time DESC |     ORDER BY a.time DESC | ||||||
|     LIMIT 100; |     LIMIT 100; | ||||||
|     `; |     `; | ||||||
|     const alarms = await client.query(subquery);  |     const alarms = await client.query(subquery, templateData.isAdmin ? [] : [serialValues]);  | ||||||
|  |  | ||||||
|     function formatDate(date) { |     function formatDate(date) { | ||||||
|       const options = { |       const options = { | ||||||
| @@ -583,12 +583,18 @@ async function live(req, res) { | |||||||
|         day: "2-digit", |         day: "2-digit", | ||||||
|         hour: "2-digit", |         hour: "2-digit", | ||||||
|         minute: "2-digit", |         minute: "2-digit", | ||||||
|  |         hour12: false, | ||||||
|       }; |       }; | ||||||
|       const adjustedDate = new Date(date); |  | ||||||
|       adjustedDate.setHours(adjustedDate.getHours() - 3);  |  | ||||||
|  |  | ||||||
|       const formattedDate = adjustedDate.toLocaleString("ru-RU", options); |       const dateString = date.toISOString().replace("T", " ").slice(0, 19); | ||||||
|       return formattedDate.replace(",", ""); |      | ||||||
|  |       const [datePart, timePart] = dateString.split(' '); | ||||||
|  |       const [year, month, day] = datePart.split('-'); | ||||||
|  |       const [hour, minute, second] = timePart.split(':'); | ||||||
|  |      | ||||||
|  | const formattedDate = `${("0" + day).slice(-2)}.${("0" + month).slice(-2)}.${year.slice(-2)} ${("0" + hour).slice(-2)}:${("0" + minute).slice(-2)}`; | ||||||
|  |  | ||||||
|  |   return formattedDate; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     (templateData.Alarms = alarms.rows.map((alarm) => { |     (templateData.Alarms = alarms.rows.map((alarm) => { | ||||||
| @@ -911,7 +917,7 @@ async function reports(req, res) { | |||||||
|       SELECT DISTINCT ON (evtuuid) evtuuid, id, cmdno, time, serial, st |       SELECT DISTINCT ON (evtuuid) evtuuid, id, cmdno, time, serial, st | ||||||
|       FROM alarms |       FROM alarms | ||||||
|       WHERE alarmtype = 56 |       WHERE alarmtype = 56 | ||||||
|       ${!templateData.isAdmin ? 'AND serial = ANY($2)' : ''} |       ${!templateData.isAdmin ? 'AND serial = ANY($1)' : ''} | ||||||
|       ORDER BY evtuuid, time DESC  |       ORDER BY evtuuid, time DESC  | ||||||
|     ) AS a |     ) AS a | ||||||
|     LEFT JOIN registrars AS r ON a.serial = r.serial |     LEFT JOIN registrars AS r ON a.serial = r.serial | ||||||
| @@ -923,7 +929,7 @@ async function reports(req, res) { | |||||||
|     ORDER BY a.time DESC |     ORDER BY a.time DESC | ||||||
|     LIMIT 100; |     LIMIT 100; | ||||||
|     `; |     `; | ||||||
|     const alarms = await client.query(query);  |     const alarms = await client.query(query, templateData.isAdmin ? [] : [serialValues]);  | ||||||
|  |  | ||||||
|     function formatDate(date) { |     function formatDate(date) { | ||||||
|       const options = { |       const options = { | ||||||
| @@ -932,14 +938,21 @@ async function reports(req, res) { | |||||||
|         day: "2-digit", |         day: "2-digit", | ||||||
|         hour: "2-digit", |         hour: "2-digit", | ||||||
|         minute: "2-digit", |         minute: "2-digit", | ||||||
|  |         hour12: false, | ||||||
|       }; |       }; | ||||||
|       const adjustedDate = new Date(date); |  | ||||||
|       adjustedDate.setHours(adjustedDate.getHours() - 3);  |  | ||||||
|  |  | ||||||
|       const formattedDate = adjustedDate.toLocaleString("ru-RU", options); |       const dateString = date.toISOString().replace("T", " ").slice(0, 19); | ||||||
|       return formattedDate.replace(",", ""); |      | ||||||
|  |       const [datePart, timePart] = dateString.split(' '); | ||||||
|  |       const [year, month, day] = datePart.split('-'); | ||||||
|  |       const [hour, minute, second] = timePart.split(':'); | ||||||
|  |      | ||||||
|  | const formattedDate = `${("0" + day).slice(-2)}.${("0" + month).slice(-2)}.${year.slice(-2)} ${("0" + hour).slice(-2)}:${("0" + minute).slice(-2)}`; | ||||||
|  |  | ||||||
|  |   return formattedDate; | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |  | ||||||
|     (templateData.Alarms = alarms.rows.map((alarm) => { |     (templateData.Alarms = alarms.rows.map((alarm) => { | ||||||
|       let type; |       let type; | ||||||
|       switch (alarm.st) { |       switch (alarm.st) { | ||||||
| @@ -1169,12 +1182,18 @@ app.get("/api/devices", async (req, res) => { | |||||||
|         day: "2-digit", |         day: "2-digit", | ||||||
|         hour: "2-digit", |         hour: "2-digit", | ||||||
|         minute: "2-digit", |         minute: "2-digit", | ||||||
|  |         hour12: false, | ||||||
|       }; |       }; | ||||||
|       const adjustedDate = new Date(date); |  | ||||||
|       adjustedDate.setHours(adjustedDate.getHours() - 3);  |  | ||||||
|  |  | ||||||
|       const formattedDate = adjustedDate.toLocaleString("ru-RU", options); |       const dateString = date.toISOString().replace("T", " ").slice(0, 19); | ||||||
|       return formattedDate.replace(",", ""); |      | ||||||
|  |       const [datePart, timePart] = dateString.split(' '); | ||||||
|  |       const [year, month, day] = datePart.split('-'); | ||||||
|  |       const [hour, minute, second] = timePart.split(':'); | ||||||
|  |      | ||||||
|  | const formattedDate = `${("0" + day).slice(-2)}.${("0" + month).slice(-2)}.${year.slice(-2)} ${("0" + hour).slice(-2)}:${("0" + minute).slice(-2)}`; | ||||||
|  |  | ||||||
|  |   return formattedDate; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     const alarmsData = alarms.rows.map((alarm) => { |     const alarmsData = alarms.rows.map((alarm) => { | ||||||
| @@ -1329,12 +1348,18 @@ app.get('/reports/:id', async (req, res) => { | |||||||
|         day: "2-digit", |         day: "2-digit", | ||||||
|         hour: "2-digit", |         hour: "2-digit", | ||||||
|         minute: "2-digit", |         minute: "2-digit", | ||||||
|  |         hour12: false, | ||||||
|       }; |       }; | ||||||
|       const adjustedDate = new Date(date); |  | ||||||
|       adjustedDate.setHours(adjustedDate.getHours() - 3);  |  | ||||||
|  |  | ||||||
|       const formattedDate = adjustedDate.toLocaleString("ru-RU", options); |       const dateString = date.toISOString().replace("T", " ").slice(0, 19); | ||||||
|       return formattedDate.replace(",", ""); |      | ||||||
|  |       const [datePart, timePart] = dateString.split(' '); | ||||||
|  |       const [year, month, day] = datePart.split('-'); | ||||||
|  |       const [hour, minute, second] = timePart.split(':'); | ||||||
|  |      | ||||||
|  | const formattedDate = `${("0" + day).slice(-2)}.${("0" + month).slice(-2)}.${year.slice(-2)} ${("0" + hour).slice(-2)}:${("0" + minute).slice(-2)}`; | ||||||
|  |  | ||||||
|  |   return formattedDate; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     function formatDateToYYYYMMDD(sqlDate) { |     function formatDateToYYYYMMDD(sqlDate) { | ||||||
| @@ -1609,12 +1634,18 @@ app.get('/generate-pdf/:id', async (req, res) => { | |||||||
|         day: "2-digit", |         day: "2-digit", | ||||||
|         hour: "2-digit", |         hour: "2-digit", | ||||||
|         minute: "2-digit", |         minute: "2-digit", | ||||||
|  |         hour12: false, | ||||||
|       }; |       }; | ||||||
|       const adjustedDate = new Date(date); |  | ||||||
|       adjustedDate.setHours(adjustedDate.getHours() - 3);  |  | ||||||
|  |  | ||||||
|       const formattedDate = adjustedDate.toLocaleString("ru-RU", options); |       const dateString = date.toISOString().replace("T", " ").slice(0, 19); | ||||||
|       return formattedDate.replace(",", ""); |      | ||||||
|  |       const [datePart, timePart] = dateString.split(' '); | ||||||
|  |       const [year, month, day] = datePart.split('-'); | ||||||
|  |       const [hour, minute, second] = timePart.split(':'); | ||||||
|  |      | ||||||
|  |       const formattedDate = `${("0" + day).slice(-2)}.${("0" + month).slice(-2)}.${year.slice(-2)} ${("0" + hour).slice(-2)}:${("0" + minute).slice(-2)}`; | ||||||
|  |  | ||||||
|  |       return formattedDate; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|       let type; |       let type; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user