Skip to content

Commit

Permalink
Merge master into en
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] authored Nov 25, 2021
2 parents 64c128a + 2ea8dfc commit 7fcf32e
Show file tree
Hide file tree
Showing 8 changed files with 38 additions and 135 deletions.
2 changes: 1 addition & 1 deletion Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ module.exports = function (grunt) {
src: [ // May be array of regexp, or github.com/isaacs/node-glob
'@(app|downloader|uploader|sitemap|notifier|worker).js',
'controllers/!(systemjs|api|apilog).js',
'commons/time.js',
'commons/Utils.js',
'models/*.js',
'app/*.js',
'app/webapi/*.js',
Expand Down
6 changes: 3 additions & 3 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -252,10 +252,10 @@ export async function configure(startStamp) {
function memInfo() {
let memory = process.memoryUsage();
let elapsedMs = Date.now() - startStamp;
let elapsedDays = Math.floor(elapsedMs / Utils.times.msDay);
let elapsedDays = Math.floor(elapsedMs / ms('1d'));

if (elapsedDays) {
elapsedMs -= elapsedDays * Utils.times.msDay;
elapsedMs -= elapsedDays * ms('1d');
}

logger.info(
Expand All @@ -273,7 +273,7 @@ export async function configure(startStamp) {

memory = process.memoryUsage();
elapsedMs = Date.now() - startStamp;
elapsedDays = Math.floor(elapsedMs / Utils.times.msDay);
elapsedDays = Math.floor(elapsedMs / ms('1d'));

logger.info(
`+${elapsedDays}.${Utils.hh_mm_ss(elapsedMs, true)} `,
Expand Down
2 changes: 1 addition & 1 deletion babel/server.files.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module.exports = {
only: [ // May be array of regexp, or github.com/isaacs/node-glob
/(app|downloader|uploader|sitemap|notifier|worker).js/,
/controllers\/((?!systemjs|api|apilog).)+\.js$/,
'commons/time.js',
'commons/Utils.js',
/models\/.+\.js$/,
/app\/.+\.js$/,
],
Expand Down
58 changes: 11 additions & 47 deletions commons/Utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const useragent = require('useragent');
const DMP = require('diff-match-patch');
const regexpUrl = require('./regex-weburl');
const turf = require('@turf/turf');
const ms = require('ms');

Utils.isEven = function (n) {
return n % 2 === 0;
Expand Down Expand Up @@ -846,67 +847,30 @@ Utils.addLeftZero = function (num) {
return str.substr(str.length - 2, 2);
};

const times = (function () {
const msDay = 864e5;
const times = {
msDay, // Кол-во миллисекунд в дне
msWeek: 6048e5, // Кол-во миллисекунд в неделе
msYear: 0, // Кол-во миллисекунд в текущем году, вычисляется

midnight: null, // Миллисекунды полуночи текущего дня
midnightWeekAgo: null, // Миллисекунды полуночи семи дней назад
yearStart: null, // Миллисекунды начала текущего года
yearDays: null, // Кол-во дней в текущем году
};

// Считаем переменные времен
(function timesRecalc() {
const current = new Date();
const currentYear = current.getFullYear();

times.midnight = new Date().setHours(0, 0, 0, 0);
times.midnightWeekAgo = times.midnight - times.msWeek;
times.yearStart = new Date(currentYear, 0, 1);
times.msYear = new Date(currentYear + 1, 0, 1) - times.yearStart;
times.yearDays = Math.floor(times.msYear / msDay);

// Планируем пересчет на первую миллисекунду следующего дня
setTimeout(timesRecalc, times.midnight + times.msDay - Date.now() + 1);
}());

return times;
}());

Utils.times = times;

Utils.isThisYear = function (date) {
return new Date(date).getFullYear() === new Date().getFullYear();
};

Utils.isYesterday = function (date) {
return date >= times.midnight - times.msDay && date < times.midnight;
return date >= new Date().setHours(0, 0, 0, 0) - ms('1d') && date < new Date().setHours(0, 0, 0, 0);
};

Utils.isToday = function (date) {
return date >= times.midnight && date < times.midnight + times.msDay;
return date >= new Date().setHours(0, 0, 0, 0) && date < new Date().setHours(0, 0, 0, 0) + ms('1d');
};

Utils.hh_mm_ss = function (ms, utc, delimeter) {
if (!_.isDate(ms)) {
ms = new Date(ms);
Utils.hh_mm_ss = function (millisec, utc = false) {
if (!_.isDate(millisec)) {
millisec = new Date(millisec);
}

if (!delimeter) {
delimeter = ':';
}
const options = { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false };

const hours = ms[utc ? 'getUTCHours' : 'getHours']();
const minutes = ms[utc ? 'getUTCMinutes' : 'getMinutes']();
const seconds = ms[utc ? 'getUTCSeconds' : 'getSeconds']();
if (utc) {
options.timeZone = 'UTC';
}

return (hours > 9 ? hours : '0' + hours) +
delimeter + (minutes > 9 ? minutes : '0' + minutes) +
delimeter + (seconds > 9 ? seconds : '0' + seconds);
return millisec.toLocaleTimeString([], options);
};

Utils.format = (function () {
Expand Down
60 changes: 0 additions & 60 deletions commons/time.js

This file was deleted.

4 changes: 2 additions & 2 deletions downloader.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ export async function configure(startStamp) {

function memInfo() {
let elapsedMs = Date.now() - startStamp;
const elapsedDays = Math.floor(elapsedMs / Utils.times.msDay);
const elapsedDays = Math.floor(elapsedMs / ms('1d'));
const memory = process.memoryUsage();

if (elapsedDays) {
elapsedMs -= elapsedDays * Utils.times.msDay;
elapsedMs -= elapsedDays * ms('1d');
}

logger.info(
Expand Down
35 changes: 17 additions & 18 deletions public/js/module/map/marker.js
Original file line number Diff line number Diff line change
Expand Up @@ -348,8 +348,8 @@ define([

var self = this;
var newZoom = this.map.getZoom(),
willLocalWork = newZoom >= this.firstClientWorkZoom,
crossingLocalWorkZoom = (this.currZoom < this.firstClientWorkZoom && willLocalWork) || (this.currZoom >= this.firstClientWorkZoom && !willLocalWork),
localWork = newZoom >= this.firstClientWorkZoom,
crossingLocalWorkZoom = (this.currZoom < this.firstClientWorkZoom && localWork) || (this.currZoom >= this.firstClientWorkZoom && !localWork),
direction = newZoom - this.currZoom,
bound = L.latLngBounds(this.calcBound.getSouthWest(), this.calcBound.getNorthEast()), // copy this.calcBound current values.
queryGeometry,
Expand All @@ -359,7 +359,7 @@ define([

this.currZoom = newZoom;

if (!init && willLocalWork && !crossingLocalWorkZoom) {
if (!init && localWork && !crossingLocalWorkZoom) {
// Local work level. We are expecting photo object at those zoom
// levels, so we need to fetch photos for area that become visible
// as result of zoom change.
Expand Down Expand Up @@ -389,7 +389,7 @@ define([
}
} else {
// При пересечении границы "вверх" обнуляем массив всех фото на клиенте
if (crossingLocalWorkZoom && !willLocalWork) {
if (crossingLocalWorkZoom && !localWork) {
this.photosAll = [];
}
// Query objects for new .
Expand All @@ -398,7 +398,7 @@ define([

if (pollServer) {
if (this.visBound) {
this.drawBounds(queryGeometry, true, willLocalWork);
this.drawBounds(queryGeometry, true, localWork);
}

socket.run('photo.getByBounds',
Expand All @@ -409,11 +409,10 @@ define([
year: this.year,
year2: this.year2,
isPainting: this.isPainting,
localWork: willLocalWork
localWork: localWork
}
).then(function (data) {
var localWork, // Находимся ли мы на уровне локальной работы
localCluster, // Смотрим нужно ли использовать клиентскую кластеризацию
var localCluster, // Смотрим нужно ли использовать клиентскую кластеризацию
boundChanged; // Если к моменту получения входящих данных нового зума, баунд изменился, значит мы успели подвигать картой, поэтому надо проверить пришедшие точки на вхождение в актуальный баунд

// Данные устарели и должны быть отброшены,
Expand All @@ -425,7 +424,6 @@ define([
}

boundChanged = !bound.equals(self.calcBound);
localWork = self.currZoom >= self.firstClientWorkZoom;
localCluster = localWork && self.clientClustering;

self.processIncomingDataZoom(data, boundChanged, localWork, localCluster);
Expand All @@ -440,8 +438,8 @@ define([
* Visualise bounds for debugging purposes.
*/
MarkerManager.prototype.drawBounds = function (geometry, zoom, localWork) {
const summary = (zoom === true) ? `Refresh by Zoom, localWork=${localWork}` : 'Refresh by Move';
console.log(summary + ', ' + turf.getType(geometry) + ' (Lng,Lat):', JSON.stringify(turf.getCoords(geometry)));
const summary = (zoom === true) ? `Refresh by Zoom` : 'Refresh by Move';
console.log(summary + `, localWork=${localWork}, ` + turf.getType(geometry) + ' (Lng,Lat):', JSON.stringify(turf.getCoords(geometry)));
// Remove previous drawings.
if (this['b'] !== undefined) {
this.map.removeLayer(this['b']);
Expand All @@ -463,11 +461,12 @@ define([
i;

//Очищаем кластеры, если они вдруг успели появится при быстром измении зума.
//Это произойдет, если мы быстро уменьшили зум и опять увеличили - перед moveEnd фазы увеличения придут данные от уменьшения и они успеют кластеризоваться
//Это произойдет, если мы быстро уменьшили зум и опять увеличили - перед moveEnd
//фазы увеличения придут данные от уменьшения и они успеют кластеризоваться.
//Или при быстром переходе вверх с пересечением границы локальной работы
this.clearClusters();

// На уровне локальной работы этот медот учавствует только в "поднятии" зума,
// На уровне локальной работы этот метод учавствует только в "поднятии" зума,
// когда сервер отдает только фотографии "в рамке, обрамляющей предыдущий баунд", следовательно,
// полученные фото мы должны присоединить к существующим и локально кластеризовать их объединение (т.к. изменился зум)
if (localWork) {
Expand Down Expand Up @@ -535,6 +534,7 @@ define([
var self = this;
var zoom = this.currZoom,
bound = L.latLngBounds(this.calcBound.getSouthWest(), this.calcBound.getNorthEast()),
localWork = zoom >= this.firstClientWorkZoom,
curr,
i;

Expand All @@ -550,7 +550,7 @@ define([
if (this.visBound) {
// We expect L-shape polygon here in most cases (or rectangle if map is moved
// by pressing arrow keys).
this.drawBounds(queryGeometry);
this.drawBounds(queryGeometry, false, localWork);
}

socket
Expand All @@ -559,11 +559,11 @@ define([
geometry: turf.getGeom(queryGeometry),
year: this.year,
year2: this.year2,
isPainting: this.isPainting
isPainting: this.isPainting,
localWork: localWork
})
.then(function (data) {
var localWork, // Находимся ли мы на уровне локальной работы
localCluster, // Смотрим нужно ли использовать клиентскую кластеризацию
var localCluster, // Смотрим нужно ли использовать клиентскую кластеризацию
boundChanged; // Если к моменту получения входящих данных нового зума, баунд изменился, значит мы успели подвигать картой, поэтому надо проверить пришедшие точки на вхождение в актуальный баунд

// Данные устарели и должны быть отброшены,
Expand All @@ -573,7 +573,6 @@ define([
return;
}

localWork = self.currZoom >= self.firstClientWorkZoom;
localCluster = localWork && self.clientClustering;
boundChanged = !bound.equals(self.calcBound);

Expand Down
6 changes: 3 additions & 3 deletions sitemap.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import zlib from 'zlib';
import log4js from 'log4js';
import makeDir from 'make-dir';
import config from './config';
import { times, hhmmssms } from './commons/time';
import Utils from './commons/Utils';
import { ready as regionsReady, getObjRegionList, giveListPublic as giveRegionsListPublic } from './controllers/region';

import connectDb from './controllers/connection';
Expand Down Expand Up @@ -37,7 +37,7 @@ const schedule = (function () {
timeout = 4;
} else {
// Next run must be next interval after last midnight
const a = (Date.now() - times.midnight) / sitemapInterval;
const a = (Date.now() - new Date().setHours(0, 0, 0, 0)) / sitemapInterval;

timeout = Math.ceil(
a > 1 ? sitemapInterval - sitemapInterval * (a - Math.floor(a)) : sitemapInterval - sitemapInterval * a
Expand All @@ -48,7 +48,7 @@ const schedule = (function () {

logger.info(
'Next sitemap generation has been scheduled on ' +
`${next.getFullYear()}-${next.getMonth() + 1}-${next.getDate()} ${hhmmssms(next)}`
`${next.getFullYear()}-${next.getMonth() + 1}-${next.getDate()} ${Utils.hh_mm_ss(next)}`
);

setTimeout(run, timeout);
Expand Down

0 comments on commit 7fcf32e

Please sign in to comment.