From 43b5eccbb4bace477738a3fd6211b91fbf8eb2aa Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Tue, 1 Jul 2014 17:06:04 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9A=D1=83=D1=81=D0=BA=D0=B8=20JS=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B7=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=D1=8B=20=D0=BF=D0=BE?= =?UTF-8?q?=20=D1=80=D0=B0=D0=B7=D0=BD=D1=8B=D0=BC=20=D1=84=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=D0=B0=D0=BC.=20=D0=9F=D1=80=D0=B8=20=D0=BA=D0=BB=D0=B8?= =?UTF-8?q?=D0=BA=D0=B5=20=D0=BD=D0=B0=20=D0=BA=D0=B0=D1=80=D1=82=D0=B8?= =?UTF-8?q?=D0=BD=D0=BA=D1=83=20=D0=BE=D0=BD=D0=B0=20=D1=83=D0=B2=D0=B5?= =?UTF-8?q?=D0=BB=D0=B8=D1=87=D0=B8=D0=B2=D0=B0=D0=B5=D1=82=D1=81=D1=8F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/controllers/IndexController.php | 7 +- ground/controllers/JsonController.php | 1 + ground/views/indexTemplate.php | 1 + ground/views/modals/image.php | 16 ++ public/css/style.css | 2 +- public/js/{main.js => map.js} | 232 ++----------------------- 6 files changed, 35 insertions(+), 224 deletions(-) create mode 100644 ground/views/modals/image.php rename public/js/{main.js => map.js} (66%) diff --git a/ground/controllers/IndexController.php b/ground/controllers/IndexController.php index 4786285..5b96c9a 100644 --- a/ground/controllers/IndexController.php +++ b/ground/controllers/IndexController.php @@ -10,6 +10,7 @@ class IndexController extends Controller { self::addScript('/js/jquery-2.1.0.min.js'); self::addScript('/js/jquery-ui-1.10.4.custom.min.js'); + self::addScript('/js/bootstrap.min.js'); self::addScript('http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js'); self::addScript('http://maps.google.com/maps/api/js?v=3&sensor=false'); @@ -18,8 +19,10 @@ class IndexController extends Controller self::addScript('http://api-maps.yandex.ru/2.0/?load=package.map&lang=ru-RU'); self::addScript('/js/tile/Yandex.js'); - self::addScript('/js/main.js?ver='.App::getConfig('version')); - self::addScript('/js/bootstrap.min.js'); + self::addScript('/js/app.js?ver='.App::getConfig('version')); + self::addScript('/js/map.js?ver='.App::getConfig('version')); + self::addScript('/js/route.js?ver='.App::getConfig('version')); + self::addStyle('/css/style.css?ver='.App::getConfig('version')); self::addStyle('http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css'); self::addStyle('/css/bootstrap.min.css'); diff --git a/ground/controllers/JsonController.php b/ground/controllers/JsonController.php index c088a4e..73682f3 100644 --- a/ground/controllers/JsonController.php +++ b/ground/controllers/JsonController.php @@ -41,6 +41,7 @@ class JsonController extends Controller $point = new Point(); $point = $point->getByPK($id); $point->descriptionHtml = nl2br($point->description); + $point->name = htmlspecialchars($point->name); $categories = new Category(); $categories = $categories->getAll(); diff --git a/ground/views/indexTemplate.php b/ground/views/indexTemplate.php index a329822..54c736a 100644 --- a/ground/views/indexTemplate.php +++ b/ground/views/indexTemplate.php @@ -77,3 +77,4 @@ $categories), true) : '' ?> $categories), true) ?> + diff --git a/ground/views/modals/image.php b/ground/views/modals/image.php new file mode 100644 index 0000000..9f25650 --- /dev/null +++ b/ground/views/modals/image.php @@ -0,0 +1,16 @@ + \ No newline at end of file diff --git a/public/css/style.css b/public/css/style.css index e020960..1670a94 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -11,7 +11,7 @@ body {margin: 0; padding: 0; height: 100%; width: 100%; overflow: hidden;} div#map {width: 100%; position: absolute; top: 0; bottom: 0px;} body.openBox div#map {right: 250px;} div.infoCard h3 {text-align: center; margin-top: 0;} -div.infoCard img {width: 200px; float: left; margin: 0 10px 5px 0;} +div.infoCard img {width: 200px; float: left; margin: 0 10px 5px 0; cursor: pointer;} div.header {display: block; position: absolute; top: 0; left: 110px; border-radius: 0 0 5px 5px; z-index: 1000; background-color: #FFF; padding: 5px 10px;} div.header h1 {display: inline; color: #333; cursor: default;} div.add {cursor: pointer;} diff --git a/public/js/main.js b/public/js/map.js similarity index 66% rename from public/js/main.js rename to public/js/map.js index 4524d06..70847b7 100644 --- a/public/js/main.js +++ b/public/js/map.js @@ -2,39 +2,6 @@ * Let's GO! */ -// ------------ Система статусов приложения ------------------------------------ -var statusReady = 0; // Обычный режим. Просмотр точек, навигация по карте и прочее. -var statusHunting = 1; // Курсор-прицел. Поиск места для добавления точки. -var statusReHunting = 2; // КУрсор прицел. Переопределение координат точки. -var statusAdd = 3; // Открыто окно добавления точки - форма. -var statusEdit = 4; // Открыто окно редактирования точки. В нём информация о существующей точке, включая ID. -var statusSendingToServer = 5; // Отправлен запрос на сервер - ждём, не даём жать кнопку повторно, отвлекаем пользователя. - -var status = statusReady; -var statusPrev = statusReady; - -/** - * Устанавливает новое значение статуса. - * @returns {undefined} - */ -function setStatus(value) -{ - statusPrev = status; - status = value; -} - -/** - * Меняет значение статуса на предыдущее. - * @returns {undefined} - */ -function resetStatus() -{ - tmp = status; - status = statusPrev; - statusPrev = tmp; -} -// ----------------------------------------------------------------------------- - $(document).ready(function(){init()}); var myMap; var categories = Array(); @@ -46,12 +13,6 @@ var addPointInProcess = false; var layer; var layers = Array(); -// -------------------------------- Libs --------------------------------------- - -function getURLParameter(name) { - return decodeURI((RegExp(name + '=' + '(.+?)(&|$)').exec(location.search) || [, null])[1]); -} - // ----------------------------------------------------------------------------- /** @@ -149,7 +110,7 @@ function constructPoint(data) * Загружает точки с сервера. * @returns {Boolean} */ -function getPoints() +function initPoints() { $.ajax({ url: "/json/points/", @@ -192,7 +153,7 @@ function showInfo(id) pointsSources[id] = data; description = '
' + '

' + data.name + '

' + - '' + + '' + '
'; @@ -233,12 +194,12 @@ function initCategories() for (var k in data) { categories[data[k]['id']] = L.icon({ iconUrl: data[k]['icon'], - iconSize: [32, 37], // size of the icon - iconAnchor: [16, 37], // point of the icon which will correspond to marker's location - popupAnchor: [0, 1] // point from which the popup should open relative to the iconAnchor + iconSize: [32, 37], + iconAnchor: [16, 37], + popupAnchor: [0, 1] }); } - getPoints(); + initPoints(); } }); @@ -280,11 +241,11 @@ function searchAdderess() function showMeOnTheMap() { navigator.geolocation.getCurrentPosition(function(pos) { - points.im.geometry.setCoordinates([pos.coords.latitude, pos.coords.longitude]); - myMap.setCenter(points.im.geometry.getCoordinates()); + //points.im.geometry.setCoordinates([pos.coords.latitude, pos.coords.longitude]); + myMap.setView([pos.coords.latitude, pos.coords.longitude], 15); }); - myMap.setCenter(points.im.geometry.getCoordinates()); + //myMap.setCenter(points.im.geometry.getCoordinates()); } /** @@ -406,154 +367,10 @@ function addPoint() } /** - * Строит маршрут по выбранным точкам. + * Включает режим редактирования точки. + * @param int id * @returns {undefined} */ -function buildRoute() -{ - wayPoints = Array(); - if (route) - myMap.geoObjects.remove(route); - - $('#wayPoints div').each(function(i, el) - { - wayPoints.push(points[$(el).attr('pointId')].geometry.getCoordinates()); - }); - - ymaps.route(wayPoints, { - mapStateAutoApply: true - }).then(function(newRoute) { - route = newRoute; - route.options.set({ - // в балуне выводим только информацию о времени движения с учетом пробок - balloonContenBodyLayout: ymaps.templateLayoutFactory.createClass('$[properties.humanJamsTime]'), - strokeColor: '9000ffff', - opacity: 0.9 - }); - - myMap.geoObjects.add(route); - distance = Math.round(route.getLength() / 1000); - $('#routeDistance').text(distance + ' км.'); - routeToURL(); - }); -} - -/** - * Сохраняет маршрут на сервере. - * @returns {undefined} - */ -function saveRoute() -{ - wayPoints = Array(); - name = prompt('Как назвать маршрут?', 'Мой маршрут'); - - $('#wayPoints div').each(function(i, el) - { - wayPoints.push($(el).attr('pointId')); - }); - - if (name && name != '') - $.ajax({ - type: "POST", - url: "/json/saveroute/", - data: { - name: name, - points: wayPoints - }, - success: function(data) { - console.log(data); - }, - error: function(data) { - console.log(data); - } - }); -} - -/** - * Формирует список точек маршрута из JSON.ы - * @param {JSON} data - * @returns {Boolean} - */ -function loadRouteJSON(data) -{ - $('#wayPoints').text(''); - - response = JSON.parse(data); - for (var k in response) - { - addToRoute(response[k]); - } - - return true; -} - -/** - * Подгружает маршрут с заданныи ID с сервера. - * @param {Integer} id - * @returns {undefined} - */ -function loadRoute(id) -{ - $('#myRoutesWindow').hide(200); - - $.ajax({ - url: "/json/route/id/" + id, - success: function(data) - { - loadRouteJSON(data) - buildRoute(); - } - }); -} - -/** - * Удаляет маршрут с заданным ID с сервера. - * @param {Integer} id - * @returns {undefined} - */ -function deleteRoute(id) -{ - $.ajax({ - url: "/json/deleteroute/id/" + id, - success: function(data) - { - console.log('Route '+id+' was removed.'); - } - }); -} - -/** - * Добавляет точку с маршрут (в список выбранных точек) - * @param {Integer} id - * @returns {Boolean} - */ -function addToRoute(id) -{ - console.log(points[id]); - $('#wayPoints').append('
× ' + points[id].options.title + '
'); - myMap._popup._close(); - openBox('Route', true); - return true; -} - -/** - * Формирует URL в соответсвии с точками маршрута. - * @returns {Boolean} - */ -function routeToURL() -{ - wayPoints = Array(); - - $('#wayPoints div').each(function(i, el) - { - wayPoints.push($(el).attr('pointId')); - }); - - history.pushState({}, document.title, "/?route=" + JSON.stringify(wayPoints)); - - return true; -} - function editPoint(id) { $('#addPointId').remove(); @@ -579,33 +396,6 @@ function editSetNewCoords() setStatus(statusReHunting) } -function openBox(type, keepOpen) -{ - newTab = $('#box'+type).css('display') == 'none'; - keepOpen = keepOpen == true; - - if (!newTab && !keepOpen) - { - return closeBox(); - } - - $('div','#control').removeClass('active'); - $('#box').children('div').css('display', 'none'); - - $('.boxButton'+type).addClass('active'); - $('#box'+type).css('display', 'block'); - $('body').addClass('openBox'); -} - -function closeBox() -{ - $('body').removeClass('openBox'); - $('div','#control').removeClass('active'); - $('#box').children('div').css('display', 'none'); - - return true; -} - function setLayer(name) { if (layer)