-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TP: fix deploy #11
base: main
Are you sure you want to change the base?
TP: fix deploy #11
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
res.sendFile(path.join(__dirname,'../src', 'index.html')); | ||
}); | ||
|
||
app.get('/seller/:id', (req, res) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
можно использовать регулярку чтобы не дублироваться
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
когда роутинг будет эти штуки все в одну сольются, так что наверное нет смысла сейчас что то править
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
роутинг же будет именно на наше приложение а этот сервак отдает index.html. или тут тоже чето планируется?
src/components/advert/advert.hbs
Outdated
<ol class="breadcrumbs__list"> | ||
<li class="breadcrumbs__item"><a class="breadcrumbs__link" href="/">Главная</a></li> | ||
<li class="breadcrumbs__item"><a class="breadcrumbs__link" href="{{categoryUrl}}">{{category}}</a></li> | ||
<li class="breadcrumbs__item"><span class="breadcrumbs__link-not-active">{{title}}</span></li> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
если уж по БЭМ то breadcrumbs__link-not-active
not-active звучит как Модификтор
src/components/advert/advert.hbs
Outdated
<img src="../../static/images/star.svg" class="seller__star"> | ||
<img src="../../static/images/star.svg" class="seller__star"> | ||
<img src="../../static/images/star.svg" class="seller__star"> | ||
</span> --}} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
коменты ненужные убираем тут и везде
src/components/advert/advert.js
Outdated
async addComponent(wrapper, advertId) { | ||
const advert = await ajax.get(`/adverts/${advertId}`); | ||
|
||
const sellerId = await ajax.get(`/seller/${advert.seller_id}`); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
у вас ручка на получение айдишника продавца по айдишнику объявления? показалось странным.. а почему это не приходит вместе с объявлением?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
а не, кажись тут просто надо переменные корректнее назвать
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
у нас в запросе на объявление приходит айдишник селлера, по нему делаем запрос на селлера, чтобы получить айдишник юзера, с которым он ассоциирован, а по нему уже получаем имя, картинку и дату регистрации
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
делаем запрос на селлера
а переменная куда записывается селлер называется sellerId
src/components/advert/advert.js
Outdated
if(checkAuth()) { | ||
me = await ajax.get('/me'); | ||
if(advert.status === 'inactive' && seller.id !== me.id) { | ||
return false; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
почему false? давай null
src/components/card/card.js
Outdated
|
||
export function addCardListeners(cardsJSON) { | ||
const cards = document.querySelectorAll('.card'); | ||
for(let i = 0; i < cards.length; i++) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
итерируемся стандартными методами массивов
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
да, я чето только сегодня увидел, что у forEach можно и элемент и индекс тянуть
src/components/card/card.js
Outdated
const cards = document.querySelectorAll('.card'); | ||
for(let i = 0; i < cards.length; i++) { | ||
cards[i].addEventListener('click', () => { | ||
window.location.href = `/advert/${cardsJSON[i].id}`; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
а если cardsJSON будет отличаться от того что есть в верстке? тогда ссылки поедут. предлагаю навешивать слушатель при создании
src/components/cart/cart.hbs
Outdated
|
||
{{#if notEmpty}} | ||
<aside class="cart__buy"> | ||
<div class="cart__items">1 товара<span class="cart__price">1₽</span></div> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
почему количество и цена не являются переменными шаблона
let totalCost = 0; | ||
adverts.forEach(advert => { | ||
let strCost = advert.querySelector('.adverts__price').innerText | ||
totalCost += Number(strCost.slice(0, strCost.length - 1)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ойойой это очень нехорошо, особенно тут, когда дело касается денег. это все должно рассчитываться на основе данных с бекенда а не на основе того что на шаблоне отрисовано. информация о цене товаров и их количестве же известна, почему бы не оперировать данными?
src/components/cart/cart.js
Outdated
wrapper.querySelector('.cart__price').innerText = String(totalCost) + '₽'; | ||
} | ||
|
||
function getProductWord(quantity) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
вынести в функцию которую можно будет переиспользовать для других слов тоже. теги для поиска решений в гугле: pluralization js rus
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
а еще почему где-то на функциях все а где-то на классах, приводим к 1 варианту все (предпочтительно классы)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
не уверен, что плюрализация может пригодиться где то еще
@@ -0,0 +1,139 @@ | |||
@mixin box-shadow-with-hover() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
если еще где-то есть такое то миксин можно вынести в отдельный файл с миксинами и подключать его по надобности
} | ||
|
||
trimNumber(number, maxLength) { | ||
if(number.length > maxLength) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
проверка number.length > maxLength
ни к чему, если maxLength больше то ничего не произойдет
const categories = await ajax.get('/categories'); | ||
for(const category of categories) { | ||
if(category.Title === select.value) { | ||
data['category_id'] = category.ID; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
лучше чтобы в поле с инпутом мы сразу выбирали айдишник (отображаются названия а при выборе в пое хранится id). так тут нам не придется делать очередной запрос на категории
|
||
const userId = localStorage.getItem('id'); | ||
|
||
const seller = await ajax.get(`/seller/user/${userId}`) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
а зачем этот запрос если ты из его результата используешь только seller.id? или seller.id это не тоже самое что userId
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
да, у нас селлер и юзер это две разные сущности
data['price'] = Number(data['price']); | ||
|
||
let advert = {}; | ||
if(updateAdvertId){ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
а что тут происходит? что за updateAdvertId, логику не могу осознать
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
поглядел по коду и не нашел чтобы с этим флагом метод вызывался, мб проглядел конечно
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
у меня компонент createAdvert используется и для изменения, соответственно запрос будет не post, а put
const image = imageInput.files[0]; | ||
const formData = new FormData(); | ||
formData.append('image', image); | ||
await ajax.imagePut(`/adverts/${advert.id}/image`, formData); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
а почему это делается отдельно а не в том же запросе что и создание? а если создание будет успешным а imagePut отвалится? получается пользователь подумает что ура объявление создалось и проблем нет но картинка будет отсутствовать
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
на бэке отдельная ручка для загрузки картинок
No description provided.