Наметка страницы города

Выполняется
Планируемый запуск: 15.05.2021Дата начала: 15.05.2021Планируемое завершение: 16.05.2021Дата завершения:
ПроектЗадачаСтатусДата постановкиНачалоКонецКто создал
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3829.05.2021 09:00:5429.05.2021 09:00:55
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3829.05.2021 09:00:3129.05.2021 09:00:47
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3822.05.2021 03:22:5422.05.2021 03:39:45
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3821.05.2021 10:01:4921.05.2021 10:13:48
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3821.05.2021 09:37:3821.05.2021 09:44:13
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3821.05.2021 06:32:3121.05.2021 06:34:45
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3821.05.2021 04:54:0821.05.2021 05:11:41
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3820.05.2021 09:01:1620.05.2021 09:49:13
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3820.05.2021 07:53:2120.05.2021 08:33:58
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3820.05.2021 05:33:1820.05.2021 05:43:46
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3820.05.2021 03:52:5420.05.2021 04:51:22
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3818.05.2021 03:38:1718.05.2021 04:36:23
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3817.05.2021 19:49:4017.05.2021 20:31:14
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3817.05.2021 17:24:3717.05.2021 17:46:45
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3817.05.2021 16:57:4817.05.2021 17:23:24
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3816.05.2021 04:42:5416.05.2021 04:55:58
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3816.05.2021 04:27:1716.05.2021 04:38:18
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3816.05.2021 03:23:5416.05.2021 03:50:27
Пивная картаНаметка страницы городаВыполняется15.05.2021 15:15:3815.05.2021 15:15:4315.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 .
Надо только здесь изменить формирование урлы или где-то ещё внести изменнеия?
Ты только не путай формирование УРЛ и обработку УРЛ. Эти два моментам друг с другом никак не связаны (адрес в браузере можно и вручную прописать). а вот 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. Пока не поймешь, нет смысла двигаться дальше. Это все важные и распространенные моменты.

Николай, привет!
Код изучил - так-то все понятно. Понять понимаю, а сказать - не могу))
То есть повторить его логику) Надо двигать дальше. Как думаешь, куда двигать?
Дима, привет!

Сорри за долгий ответ, был не на связи. В подобных случаях не жди меня, сам себе задачи придумывай :)
Ну а вообще, можешь начинать делать страницу компании. Для начала хотя бы роутинг и получение данных реализуй, а окончательный вывод потом.

Супер! Спасибо)
Я сам выпал как-то...

Добавить комментарий