rdview-service
Version:
Rdview service for loading road photos
735 lines (660 loc) • 31.3 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('axios')) :
typeof define === 'function' && define.amd ? define(['exports', 'axios'], factory) :
(factory((global['rdview-service'] = {}),global.axios));
}(this, (function (exports,axios) { 'use strict';
axios = axios && axios.hasOwnProperty('default') ? axios['default'] : axios;
function unwrapExports (x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
}
function createCommonjsModule(fn, module) {
return module = { exports: {} }, fn(module, module.exports), module.exports;
}
var distance = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
function distanceBetweenCoords(lat1, lon1, lat2, lon2) {
return Math.sqrt(Math.pow(lat2 - lat1, 2) + Math.pow(lon2 - lon1, 2));
}
exports.distanceBetweenCoords = distanceBetweenCoords;
});
unwrapExports(distance);
var distance_1 = distance.distanceBetweenCoords;
var searching = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
function getClosestViewByCoords(views, lat, lon) {
return views.reduce(function (acc, curr) {
return distance.distanceBetweenCoords(lat, lon, curr.lat, curr.lon) >
distance.distanceBetweenCoords(lat, lon, acc.lat, acc.lon) ?
acc :
curr;
});
}
exports.getClosestViewByCoords = getClosestViewByCoords;
function getClosestViewByKm(views, km) {
return views.reduce(function (acc, curr) {
return Math.abs(curr.rdKm - km) > Math.abs(acc.rdKm - km) ?
acc :
curr;
});
}
exports.getClosestViewByKm = getClosestViewByKm;
});
unwrapExports(searching);
var searching_1 = searching.getClosestViewByCoords;
var searching_2 = searching.getClosestViewByKm;
var sorting = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
function sortPhotosByKmAsc(photos) {
return photos.sort(function (photo1, photo2) {
return photo1.rdKm - photo2.rdKm;
});
}
exports.sortPhotosByKmAsc = sortPhotosByKmAsc;
function sortPhotosByKmDesc(photos) {
return photos.sort(function (photo1, photo2) {
return photo2.rdKm - photo1.rdKm;
});
}
exports.sortPhotosByKmDesc = sortPhotosByKmDesc;
function sortPassagesByDateAsc(passages) {
return passages.sort(function (passage1, passage2) {
return passage1.date.getTime() - passage2.date.getTime();
});
}
exports.sortPassagesByDateAsc = sortPassagesByDateAsc;
function sortPassagesByDateDesc(passages) {
return passages.sort(function (passage1, passage2) {
return passage2.date.getTime() - passage1.date.getTime();
});
}
exports.sortPassagesByDateDesc = sortPassagesByDateDesc;
function sortPassagesByDistanceToKm(passages, km) {
return passages.sort(function (passage1, passage2) {
var closestPhotoPassage1 = searching.getClosestViewByKm(passage1.views, km);
var closestPhotoPassage2 = searching.getClosestViewByKm(passage2.views, km);
return Math.abs(closestPhotoPassage1.rdKm - km) -
Math.abs(closestPhotoPassage2.rdKm - km);
});
}
exports.sortPassagesByDistanceToKm = sortPassagesByDistanceToKm;
function sortPassagesByDistanceToCoordinates(passages, lat, lon) {
return passages.sort(function (passage1, passage2) {
var closestPhotoPassage1 = searching.getClosestViewByCoords(passage1.views, lat, lon);
var closestPhotoPassage2 = searching.getClosestViewByCoords(passage2.views, lat, lon);
return distance.distanceBetweenCoords(closestPhotoPassage1.lat, closestPhotoPassage1.lon, lat, lon) -
distance.distanceBetweenCoords(closestPhotoPassage2.lat, closestPhotoPassage2.lon, lat, lon);
});
}
exports.sortPassagesByDistanceToCoordinates = sortPassagesByDistanceToCoordinates;
});
unwrapExports(sorting);
var sorting_1 = sorting.sortPhotosByKmAsc;
var sorting_2 = sorting.sortPhotosByKmDesc;
var sorting_3 = sorting.sortPassagesByDateAsc;
var sorting_4 = sorting.sortPassagesByDateDesc;
var sorting_5 = sorting.sortPassagesByDistanceToKm;
var sorting_6 = sorting.sortPassagesByDistanceToCoordinates;
var filtering = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
function filterPassagesByDistanceToCoordinates(passages, lat, lon, distance$$1) {
return passages.filter(function (passage) {
return passage.views.some(function (photo) {
return distance.distanceBetweenCoords(photo.lat, photo.lon, lat, lon) <= distance$$1;
});
});
}
exports.filterPassagesByDistanceToCoordinates = filterPassagesByDistanceToCoordinates;
function filterPassagesByDistanceToKm(passages, km, distance$$1) {
return passages.filter(function (passage) {
return passage.views.some(function (photo) { return Math.abs(photo.rdKm - km) <= distance$$1; });
});
}
exports.filterPassagesByDistanceToKm = filterPassagesByDistanceToKm;
});
unwrapExports(filtering);
var filtering_1 = filtering.filterPassagesByDistanceToCoordinates;
var filtering_2 = filtering.filterPassagesByDistanceToKm;
var dateParser_1 = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
// https://weblog.west-wind.com/posts/2014/jan/06/javascript-json-date-parsing-and-real-dates
function dateParser(key, value) {
var reISO = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*))(?:Z|(\+|-)([\d|:]*))?$/;
var reMsAjax = /^\/Date\((d|-|.*)\)[\/|\\]$/;
if (typeof value === 'string') {
var a = reISO.exec(value);
if (a)
return new Date(value);
a = reMsAjax.exec(value);
if (a) {
var b = a[1].split(/[-+,.]/);
return new Date(b[0] ? +b[0] : 0 - +b[1]);
}
}
return value;
}
exports.dateParser = dateParser;
});
unwrapExports(dateParser_1);
var dateParser_2 = dateParser_1.dateParser;
var uuid = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
// https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript
function uuidv4() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
exports.uuidv4 = uuidv4;
});
unwrapExports(uuid);
var uuid_1 = uuid.uuidv4;
var utils = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.distanceBetweenCoords = distance.distanceBetweenCoords;
exports.sortPhotosByKmAsc = sorting.sortPhotosByKmAsc;
exports.sortPhotosByKmDesc = sorting.sortPhotosByKmDesc;
exports.sortPassagesByDateAsc = sorting.sortPassagesByDateAsc;
exports.sortPassagesByDateDesc = sorting.sortPassagesByDateDesc;
exports.sortPassagesByDistanceToKm = sorting.sortPassagesByDistanceToKm;
exports.getClosestViewByCoords = searching.getClosestViewByCoords;
exports.getClosestViewByKm = searching.getClosestViewByKm;
exports.filterPassagesByDistanceToCoordinates = filtering.filterPassagesByDistanceToCoordinates;
exports.filterPassagesByDistanceToKm = filtering.filterPassagesByDistanceToKm;
exports.dateParser = dateParser_1.dateParser;
exports.uuidv4 = uuid.uuidv4;
});
unwrapExports(utils);
var utils_1 = utils.distanceBetweenCoords;
var utils_2 = utils.sortPhotosByKmAsc;
var utils_3 = utils.sortPhotosByKmDesc;
var utils_4 = utils.sortPassagesByDateAsc;
var utils_5 = utils.sortPassagesByDateDesc;
var utils_6 = utils.sortPassagesByDistanceToKm;
var utils_7 = utils.getClosestViewByCoords;
var utils_8 = utils.getClosestViewByKm;
var utils_9 = utils.filterPassagesByDistanceToCoordinates;
var utils_10 = utils.filterPassagesByDistanceToKm;
var utils_11 = utils.dateParser;
var utils_12 = utils.uuidv4;
var roadSegmentService = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
var RoadSegmentService = /** @class */ (function () {
function RoadSegmentService(settings) {
this.segmentUrl = settings.apiUrl + "/views/segments";
this.axios = axios.default.create({
headers: {
'Authorization': settings.authorization
}
});
}
RoadSegmentService.prototype.getSegmentByRoad = function (idRd, rdKmFrom, rdKmTo) {
var _this = this;
return this.axios.get(this.segmentUrl, {
params: {
idRd: idRd,
rdKmFrom: rdKmFrom,
rdKmTo: rdKmTo
}
}).then(function (response) { return _this.formatSegment(response.data); });
};
RoadSegmentService.prototype.getSegmentByCoordinates = function (lat, lon) {
var _this = this;
return this.axios.get(this.segmentUrl, {
params: {
lat: lat,
lon: lon
}
}).then(function (response) { return _this.formatSegment(response.data); });
};
RoadSegmentService.prototype.formatSegment = function (roadInfo) {
if (!roadInfo) {
return;
}
if (!Array.isArray(roadInfo.passages)) {
return roadInfo;
}
roadInfo.passages = roadInfo.passages.map(function (passage) {
passage.id = utils.uuidv4();
passage.date = new Date(passage.date);
passage.views = passage.views.map(function (photo) {
photo.date = new Date(photo.date);
return photo;
});
return passage;
});
return roadInfo;
};
return RoadSegmentService;
}());
exports.RoadSegmentService = RoadSegmentService;
});
unwrapExports(roadSegmentService);
var roadSegmentService_1 = roadSegmentService.RoadSegmentService;
var passageService = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
var PassageService = /** @class */ (function () {
function PassageService(settings) {
this.dateDiffInMsForSamePassage = 1000 * 30;
this.rangeDiffInKmForSamePassage = .2;
this.passageInitKmRange = 1;
this.roadSegmentService = new roadSegmentService.RoadSegmentService({
apiUrl: settings.apiUrl,
authorization: settings.authorization
});
}
PassageService.prototype.initByRoad = function (idRd, km) {
var _this = this;
return this.roadSegmentService
.getSegmentByRoad(idRd, Math.max(0, km - this.passageInitKmRange), km + this.passageInitKmRange)
.then(function (segment) { return _this.initFirstSegment(segment); });
};
PassageService.prototype.initByCoordinates = function (lat, lon) {
var _this = this;
return this.roadSegmentService.getSegmentByCoordinates(lat, lon)
.then(function (segment) { return _this.initFirstSegment(segment); });
};
PassageService.prototype.getSegment = function () {
return JSON.parse(JSON.stringify(this.segment), utils.dateParser);
};
PassageService.prototype.loadNextSegment = function () {
var _this = this;
if (this.loadingNextSegment) {
return;
}
this.loadingNextSegment = this.roadSegmentService
.getSegmentByRoad(this.segment.road.id, this.segment.rdKmTo, this.segment.rdKmTo + this.passageInitKmRange)
.then(function (segment) {
_this.loadingNextSegment = null;
if (_this.isSegmentWithPassages(segment)) {
_this.includeSegment(segment);
}
else {
_this.isNextSegmentEmpty = true;
}
});
};
PassageService.prototype.loadPreviousSegment = function () {
var _this = this;
if (this.loadingPreviousSegment) {
return;
}
this.loadingPreviousSegment = this.roadSegmentService
.getSegmentByRoad(this.segment.road.id, Math.max(0, this.segment.rdKmFrom - this.passageInitKmRange), this.segment.rdKmFrom)
.then(function (segment) {
_this.loadingPreviousSegment = null;
if (_this.isSegmentWithPassages(segment)) {
_this.includeSegment(segment);
}
else {
_this.isPreviousSegmentEmpty = true;
}
});
};
PassageService.prototype.initFirstSegment = function (segment) {
if (!segment) {
return;
}
this.segment = segment;
this.segment.passages = utils.sortPassagesByDateDesc(this.segment.passages);
this.segment.passages = this.getPassagesWithUpdatedKmBorders(this.segment.passages);
return segment;
};
PassageService.prototype.isSegmentWithPassages = function (segment) {
return segment != null &&
Array.isArray(segment.passages) &&
segment.passages.length > 0;
};
PassageService.prototype.includeSegment = function (segment) {
var _this = this;
if (!segment) {
return;
}
this.segment.rdKmFrom = Math.min(this.segment.rdKmFrom, segment.rdKmFrom);
this.segment.rdKmTo = Math.max(this.segment.rdKmTo, segment.rdKmTo);
segment.passages.forEach(function (newPassage) {
var existingNeighbourPassage = _this.segment.passages
.find(function (existingPassage) {
if (existingPassage.direction !== newPassage.direction) {
return false;
}
if (!_this.isPassagesNeighboursByKm(newPassage, existingPassage, _this.rangeDiffInKmForSamePassage)) {
return false;
}
return _this.isPassagesNeighboursByDate(newPassage, existingPassage, _this.dateDiffInMsForSamePassage);
});
if (existingNeighbourPassage) {
existingNeighbourPassage.views = utils.sortPhotosByKmAsc(existingNeighbourPassage.views.concat(newPassage.views));
}
else {
_this.segment.passages.push(newPassage);
}
});
this.segment.passages = utils.sortPassagesByDateDesc(this.segment.passages);
this.segment.passages = this.getPassagesWithUpdatedKmBorders(this.segment.passages);
};
PassageService.prototype.isPassagesNeighboursByKm = function (passage1, passage2, maxKmDiff) {
var getPassagePhotoKmArray = function (passage) { return passage.views.map(function (photo) { return photo.rdKm; }); };
var passage1PhotoKmArray = getPassagePhotoKmArray(passage1);
var passage2PhotoKmArray = getPassagePhotoKmArray(passage2);
return this.inNumberArraysIntersects(passage1PhotoKmArray, passage2PhotoKmArray, maxKmDiff);
};
PassageService.prototype.isPassagesNeighboursByDate = function (passage1, passage2, maxMsDiff) {
var getPassagePhotoDateInMsArray = function (passage) {
return passage.views.map(function (photo) { return photo.date.getTime(); });
};
var passage1PhotoDateInMsArray = getPassagePhotoDateInMsArray(passage1);
var passage2PhotoDateInMsArray = getPassagePhotoDateInMsArray(passage2);
return this.inNumberArraysIntersects(passage1PhotoDateInMsArray, passage2PhotoDateInMsArray, maxMsDiff);
};
PassageService.prototype.inNumberArraysIntersects = function (array1, array2, precision) {
var minValueInArray1 = Math.min.apply(null, array1);
var minValueInArray2 = Math.min.apply(null, array2);
var maxValueInArray1 = Math.max.apply(null, array1);
var maxValueInArray2 = Math.max.apply(null, array2);
var isValueBetween = function (value, borderLeft, borderRight, prec) {
return borderLeft - prec <= value && value <= borderRight + prec;
};
return isValueBetween(minValueInArray1, minValueInArray2, maxValueInArray2, precision) ||
isValueBetween(maxValueInArray1, minValueInArray2, maxValueInArray2, precision) ||
isValueBetween(minValueInArray2, minValueInArray1, maxValueInArray1, precision) ||
isValueBetween(maxValueInArray2, minValueInArray1, maxValueInArray1, precision);
};
PassageService.prototype.getPassagesWithUpdatedKmBorders = function (passages) {
return passages.map(function (passage) {
passage.rdKmFrom = Math.min.apply(null, passage.views.map(function (photo) { return photo.rdKm; }));
passage.rdKmTo = Math.max.apply(null, passage.views.map(function (photo) { return photo.rdKm; }));
return passage;
});
};
return PassageService;
}());
exports.PassageService = PassageService;
});
unwrapExports(passageService);
var passageService_1 = passageService.PassageService;
var rdviewService = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
var RdviewService = /** @class */ (function () {
function RdviewService(_a) {
var _b = _a === void 0 ? {} : _a, _c = _b.apiUrl, apiUrl = _c === void 0 ? 'https://i.centr.by/rdview/api/v2.0' : _c, _d = _b.authorization, authorization = _d === void 0 ? '' : _d;
this.isInited = false;
this.distanceToBorderInKmToStartLoadingNewSegment = .5;
this.rangeDiffInKmForClosePassagesInFindingClosest = .1;
this.rangeDiffInCoordinatesForClosePassagesInFindingClosest = .005;
this.rangeInKmForClosestPassages = 2;
this.passageService = new passageService.PassageService({
apiUrl: apiUrl,
authorization: authorization
});
}
Object.defineProperty(RdviewService.prototype, "segment", {
get: function () {
return this.passageService.getSegment();
},
enumerable: true,
configurable: true
});
Object.defineProperty(RdviewService.prototype, "currentViewIndex", {
get: function () {
return this.currentPassage.views.indexOf(this.currentView);
},
enumerable: true,
configurable: true
});
RdviewService.prototype.initByRoad = function (idRd, km) {
var _this = this;
return this.passageService.initByRoad(idRd, km)
.then(function (segment) {
_this.clearSettings();
if (!segment) {
return _this.generateCurrentPosition(false, false, true);
}
_this.isInited = true;
var closePassagesToKm = utils.filterPassagesByDistanceToKm(segment.passages, km, _this.rangeDiffInKmForClosePassagesInFindingClosest);
_this.currentPassage = closePassagesToKm.length ?
utils.sortPassagesByDateDesc(closePassagesToKm)[0] :
utils.sortPassagesByDistanceToKm(segment.passages, km)[0];
_this.currentView = utils.getClosestViewByKm(_this.currentPassage.views, km);
return _this.generateCurrentPosition(true, false);
});
};
RdviewService.prototype.initByCoordinates = function (lat, lon) {
var _this = this;
return this.passageService.initByCoordinates(lat, lon)
.then(function (segment) {
_this.clearSettings();
if (!segment) {
return _this.generateCurrentPosition(false, false, true);
}
_this.isInited = true;
var closePassagesToCoordinates = utils.filterPassagesByDistanceToCoordinates(segment.passages, lat, lon, _this.rangeDiffInCoordinatesForClosePassagesInFindingClosest);
_this.currentPassage = closePassagesToCoordinates.length ?
utils.sortPassagesByDateDesc(closePassagesToCoordinates)[0] :
sorting.sortPassagesByDistanceToCoordinates(segment.passages, lat, lon)[0];
_this.currentView = utils.getClosestViewByCoords(_this.currentPassage.views, lat, lon);
return _this.generateCurrentPosition(true, false);
});
};
RdviewService.prototype.getNextView = function () {
var _this = this;
this.throwIfNotInited();
this.loadNeighbourSegmentsIfNeeded();
// has next photo in current passage
if (this.currentViewIndex < this.currentPassage.views.length - 1) {
this.currentView = this.currentPassage.views[this.currentViewIndex + 1];
return Promise.resolve(this.generateCurrentPosition());
}
// case when loading segment
if (this.passageService.loadingNextSegment) {
return this.passageService.loadingNextSegment
.then(function () { return _this.getNextView(); });
}
// end of current passage
var passagesAfterCurrentPhoto = this.segment.passages
.filter(function (passage) { return passage.views.some(function (photo) {
return photo.rdKm > _this.currentView.rdKm;
}); });
if (passagesAfterCurrentPhoto.length) {
return this.setPassage(utils.sortPassagesByDateDesc(passagesAfterCurrentPhoto)[0].id);
}
// no more photo and no passages to switch
return Promise.resolve(this.generateCurrentPosition(false, true));
};
RdviewService.prototype.getPreviousView = function () {
var _this = this;
this.throwIfNotInited();
this.loadNeighbourSegmentsIfNeeded();
// has previous photo in current passage
if (this.currentViewIndex > 0) {
this.currentView = this.currentPassage.views[this.currentViewIndex - 1];
return Promise.resolve(this.generateCurrentPosition());
}
// case when loading segment
if (this.passageService.loadingPreviousSegment) {
return this.passageService.loadingPreviousSegment
.then(function () { return _this.getPreviousView(); });
}
// end of current passage
var passagesBeforeCurrentPhoto = this.segment.passages
.filter(function (passage) { return passage.views.some(function (photo) {
return photo.rdKm < _this.currentView.rdKm;
}); });
if (passagesBeforeCurrentPhoto.length) {
return this.setPassage(utils.sortPassagesByDateDesc(passagesBeforeCurrentPhoto)[0].id);
}
// no more photo and no passages to switch
return Promise.resolve(this.generateCurrentPosition(false, true));
};
RdviewService.prototype.getCurrentView = function () {
this.throwIfNotInited();
return this.currentView;
};
RdviewService.prototype.getCurrentPassage = function () {
this.throwIfNotInited();
return this.currentPassage;
};
RdviewService.prototype.getAllPassages = function () {
this.throwIfNotInited();
return this.segment.passages;
};
RdviewService.prototype.getSegment = function () {
this.throwIfNotInited();
return this.segment;
};
RdviewService.prototype.getCurrentPosition = function () {
this.throwIfNotInited();
return this.generateCurrentPosition();
};
RdviewService.prototype.setPassage = function (id, rdKm) {
this.throwIfNotInited();
var newCurrentPassage = this.segment.passages
.find(function (passage) { return passage.id === id; });
if (!newCurrentPassage) {
throw new Error("The passage with id = " + id + " not exists");
}
var passageKm = (typeof rdKm === 'number') ?
rdKm :
this.currentView.rdKm;
this.currentView = utils.getClosestViewByKm(newCurrentPassage.views, passageKm);
this.currentPassage = newCurrentPassage;
this.loadNeighbourSegmentsIfNeeded();
return Promise.resolve(this.generateCurrentPosition(true, false));
};
RdviewService.prototype.throwIfNotInited = function () {
if (!this.isInited) {
throw new Error('RdviewService has not been initialized with road or coordinates before use');
}
};
RdviewService.prototype.clearSettings = function () {
this.currentView = null;
this.currentPassage = null;
this.isInited = false;
this.passageService.loadingPreviousSegment = null;
this.passageService.loadingNextSegment = null;
this.passageService.isNextSegmentEmpty = false;
this.passageService.isPreviousSegmentEmpty = false;
};
RdviewService.prototype.loadNeighbourSegmentsIfNeeded = function () {
if (!this.currentView) {
return;
}
if (this.segment.rdKmTo - this.currentView.rdKm <
this.distanceToBorderInKmToStartLoadingNewSegment &&
!this.passageService.isNextSegmentEmpty) {
this.passageService.loadNextSegment();
}
if (this.currentView.rdKm - this.segment.rdKmFrom <
this.distanceToBorderInKmToStartLoadingNewSegment &&
!this.passageService.isPreviousSegmentEmpty) {
this.passageService.loadPreviousSegment();
}
};
RdviewService.prototype.generateCurrentPosition = function (isPassageChanged, isNoNewPhoto, isEmptyResult) {
if (isPassageChanged === void 0) { isPassageChanged = false; }
if (isNoNewPhoto === void 0) { isNoNewPhoto = false; }
if (isEmptyResult === void 0) { isEmptyResult = false; }
if (isEmptyResult) {
return {
isEmptyResult: isEmptyResult
};
}
var closeToCurrentPassages = utils.filterPassagesByDistanceToKm(this.segment.passages, this.currentView.rdKm, this.rangeInKmForClosestPassages);
var closeToCurrentRdKmFrom = Math.max(this.segment.rdKmFrom, Math.max(0, this.currentView.rdKm - this.rangeInKmForClosestPassages));
var closeToCurrentRdKmTo = Math.min(this.segment.rdKmTo, this.currentView.rdKm + this.rangeInKmForClosestPassages);
closeToCurrentPassages.forEach(function (passage) {
passage.rdKmFrom = Math.max(passage.rdKmFrom, closeToCurrentRdKmFrom);
passage.rdKmTo = Math.min(passage.rdKmTo, closeToCurrentRdKmTo);
passage.views = passage.views
.filter(function (photo) { return passage.rdKmFrom < photo.rdKm && photo.rdKm < passage.rdKmTo; });
return passage;
});
return Object.assign({
currentPassage: this.currentPassage,
currentView: this.currentView,
closeToCurrentRdKmFrom: closeToCurrentRdKmFrom,
closeToCurrentRdKmTo: closeToCurrentRdKmTo,
closeToCurrentPassages: closeToCurrentPassages,
isPassageChanged: isPassageChanged,
isNoNewPhoto: isNoNewPhoto,
isEmptyResult: isEmptyResult
}, this.segment);
};
return RdviewService;
}());
exports.RdviewService = RdviewService;
});
unwrapExports(rdviewService);
var rdviewService_1 = rdviewService.RdviewService;
var roadService = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
var RoadService = /** @class */ (function () {
function RoadService(_a) {
var _b = _a === void 0 ? {} : _a, _c = _b.apiUrl, apiUrl = _c === void 0 ? 'https://i.centr.by/rdview/api/v2.0' : _c, _d = _b.authorization, authorization = _d === void 0 ? '' : _d;
this.roadApiUrl = apiUrl + "/roads";
this.axios = axios.default.create({
headers: {
'Authorization': authorization
}
});
}
RoadService.prototype.getRoads = function (search) {
return this.axios.get(this.roadApiUrl, {
params: {
search: search
}
}).then(function (response) { return response.data; });
};
return RoadService;
}());
exports.RoadService = RoadService;
});
unwrapExports(roadService);
var roadService_1 = roadService.RoadService;
var direction = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
var Direction;
(function (Direction) {
Direction["Backward"] = "backward";
Direction["Forward"] = "forward";
})(Direction = exports.Direction || (exports.Direction = {}));
});
unwrapExports(direction);
var direction_1 = direction.Direction;
var viewType = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
var ViewType;
(function (ViewType) {
ViewType["TwoDimensional"] = "twoDimensional";
ViewType["EquirectangularPanorama"] = "equirectangularPanorama";
})(ViewType = exports.ViewType || (exports.ViewType = {}));
});
unwrapExports(viewType);
var viewType_1 = viewType.ViewType;
var interfaces = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.Direction = direction.Direction;
exports.ViewType = viewType.ViewType;
});
unwrapExports(interfaces);
var interfaces_1 = interfaces.Direction;
var interfaces_2 = interfaces.ViewType;
var compiled = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.RdviewService = rdviewService.RdviewService;
exports.RoadService = roadService.RoadService;
exports.Direction = interfaces.Direction;
exports.ViewType = interfaces.ViewType;
});
var index$2 = unwrapExports(compiled);
var compiled_1 = compiled.RdviewService;
var compiled_2 = compiled.RoadService;
var compiled_3 = compiled.Direction;
var compiled_4 = compiled.ViewType;
exports.default = index$2;
exports.RdviewService = compiled_1;
exports.RoadService = compiled_2;
exports.Direction = compiled_3;
exports.ViewType = compiled_4;
Object.defineProperty(exports, '__esModule', { value: true });
})));