Наметка страницы города
Выполняется
Проект: Пивная карта
Планируемый запуск: | 15.05.2021 | Дата начала: | 15.05.2021 | Планируемое завершение: | 16.05.2021 | Дата завершения: |
Проект | Задача | Статус | Дата постановки | Начало | Конец | Кто создал |
---|---|---|---|---|---|---|
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 29.05.2021 09:00:54 | 29.05.2021 09:00:55 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 29.05.2021 09:00:31 | 29.05.2021 09:00:47 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 22.05.2021 03:22:54 | 22.05.2021 03:39:45 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 21.05.2021 10:01:49 | 21.05.2021 10:13:48 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 21.05.2021 09:37:38 | 21.05.2021 09:44:13 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 21.05.2021 06:32:31 | 21.05.2021 06:34:45 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 21.05.2021 04:54:08 | 21.05.2021 05:11:41 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 20.05.2021 09:01:16 | 20.05.2021 09:49:13 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 20.05.2021 07:53:21 | 20.05.2021 08:33:58 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 20.05.2021 05:33:18 | 20.05.2021 05:43:46 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 20.05.2021 03:52:54 | 20.05.2021 04:51:22 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 18.05.2021 03:38:17 | 18.05.2021 04:36:23 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 17.05.2021 19:49:40 | 17.05.2021 20:31:14 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 17.05.2021 17:24:37 | 17.05.2021 17:46:45 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 17.05.2021 16:57:48 | 17.05.2021 17:23:24 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 16.05.2021 04:42:54 | 16.05.2021 04:55:58 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 16.05.2021 04:27:17 | 16.05.2021 04:38:18 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 16.05.2021 03:23:54 | 16.05.2021 03:50:27 | |
Пивная карта | Наметка страницы города | Выполняется | 15.05.2021 15:15:38 | 15.05.2021 15:15:43 | 15.05.2021 15:17:51 |
Николай, привет!
Можешь посмотреть коммит? https://github.com/Pivkarta/pivkarta.ru-2/commit/39f6c938bda4275554cb874dcbddfa741a160b28
Я так понимал , что добавление этого файла должно было позволить выводить страницу города, но отдаёт 404.
И соответственно пытался отловить причину, равнивал скомментариями, но не нашел. Как искать в этом случае?
Дима, привет!
В таких случаях не забывай еще прикладывать проблемный УРЛ.
В твоем случае с УРЛами ошибка вот в чем: ты создал файл /pages/city/[url].tsx, то есть вторая вложенность адреса у тебя - query.url, маска, то есть любая папка. Но адреса-то у тебя типа /moskva/@55.753215,37.622504,12, а не /city/@55.753215,37.622504,12, верно? То есть надо было так: /pages/[city]/[url].tsx, чтобы город тоже по маске распознавался.
Это во-первых. Во-вторых, у тебя на сайте еще не было во фронте GraphQL-запроса city($where), то есть даже если правильно маску прописал бы, все равно не работало бы.
Спасибо! Разбираю
Николай, вопрос: я затянул изменения и перегрузил докер, но ссыли на город не заработали. Понял, что работает с координатами типа /moskva/@55.753215,37.622504,12 , тогда как сейчас осталась /moskva .
Похоже этого оказалась достаточно: https://github.com/Pivkarta/pivkarta.ru-2/commit/a68e17787f9a930fabbb3a42bae40e64c9af4072
Ты только не путай формирование УРЛ и обработку УРЛ. Эти два моментам друг с другом никак не связаны (адрес в браузере можно и вручную прописать). а вот pages/..., то есть роутинг УРЛов - это уже разбор и дальнейшая логика. Но сейчас у тебя на странице города не полная логика обработки, так как УРЛы у тебя по маске Город/Координаты, но реально сейчас координаты никак не обрабатываются, так как они берутся из данных города. Там у тебя есть объект query, вот возьми еще в нем найди координаты, разбей строку на отдельные части (там lat, lng и zoom, тебе нужны только lat и lng), и если они есть, используй их для параметров запроса.
Николай, привет!
Выяснил, что не очень понимаю, по какому признаку отбираются компании в городах. Но отбираются правильно. В предыдущей версии - по стемени близости к координатам в урле ,а сейчас как?
Дима, привет!
Ну ты куда-то не туда смотришь. Я же в прошлом сообщении писал: так как они берутся из данных города.
Сделай console.log(variables) и посмотри что там будет. А там будет center{lat:.., lng:...}, то есть компании все так же берутся по удаленности от указанной координаты.
Понял, смотрю!
То есть это надо, чтобы при любом изменени координат в строке урла, запрос переотправлялся и возвращал ближайшие к точке заведения. Это нужно будет на карте. Правильно понял?
Николай, привет! Посмотришь?
Не могу понять, как победить ругань Eslint на split() на 48 строке: надо привести это добро к string[], но не приводиться...
Дима, привет!
Не путай Eslint и TypeScript. Это совершенно разные вещи и ругать каждого может решаться по-разному (хотя и бывают пересекающиеся ошибки). В данном случае у тебя ругается именно TS.
>> надо привести это добро к string[], но не приводиться...
Вопрос: а зачем тебе приводить к string[]? Что ты из этого получишь? Разбитая строка по разделителю-запятой да, будет массивом строк. Но прежде чем ее разбить, надо чтобы она была строкой. А ты смотрел какой тип у тебя у переменной query.coords? Спойлер: string | string[] | undefined. То есть у тебя из УРЛ уже на вход либо пусто, либо строка, либо массив строк. Да, УРЛ может в переменной нести массив, а не строку. Так вот, при этом ты пытаешься сразу вызывать coordsline.split(','), а метода split у массива нет. Вот тебе ТС и ругается, что нет такого метода. Что примечательно, у тебя выше строчкой вызывается query.coords.slice(1), и тут ошибки нет, но прикол в том, что метод slice есть и у строки и у массива, и тот и другой на выходе возвращает массив, поэтому там ошибки и не возникло. Вот если бы ты попытался вызвать splice (который есть только у массива, но не у строки), вот тогда бы еще там ошибка возникла.
В общем, суть решения таких задач - это не всегда приведение к каким-то типам как таковым, но уточнение по типу. В данном случае у тебя на вход string | string[] | undefined. Но ты знаешь, что тебе нужна только строка. Вот и добавь условие if(typeof query.coords === "string"). В таком случае дальше по коду ТС уже понимает, что здесь в области действия условия уже может быть только строка, но не что-то другое.
Данная задача на самом деле довольно сложная, поэтому я сильно сомневался, что ты ее решишь. Но голову поломать с ней полезно. Вот ПР. Только не иди пока дальше. Сначала изучи подробно этот вариант, и скорее всего дня три. Поиграйся как следует и пойми каждую строчку кода в src/pages/Cities/City. Пока не поймешь, нет смысла двигаться дальше. Это все важные и распространенные моменты.
Супер, изучаю!
Николай, привет!
Код изучил - так-то все понятно. Понять понимаю, а сказать - не могу))
То есть повторить его логику) Надо двигать дальше. Как думаешь, куда двигать?
Дима, привет!
Сорри за долгий ответ, был не на связи. В подобных случаях не жди меня, сам себе задачи придумывай :)
Ну а вообще, можешь начинать делать страницу компании. Для начала хотя бы роутинг и получение данных реализуй, а окончательный вывод потом.
Супер! Спасибо)
Я сам выпал как-то...