Skip to content
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

Open
wants to merge 39 commits into
base: main
Choose a base branch
from
Open

TP: fix deploy #11

wants to merge 39 commits into from

Conversation

ksuysshaa
Copy link
Collaborator

No description provided.

@ksuysshaa ksuysshaa changed the title Tp fix deploy TP: fix deploy Nov 7, 2024
@ksuysshaa ksuysshaa changed the base branch from TP-12d_advert_page to main November 8, 2024 04:58
Copy link
Collaborator

@erik770 erik770 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

не забывайте перед тем как запушить прогонять линтер)

image

res.sendFile(path.join(__dirname,'../src', 'index.html'));
});

app.get('/seller/:id', (req, res) => {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

можно использовать регулярку чтобы не дублироваться

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

когда роутинг будет эти штуки все в одну сольются, так что наверное нет смысла сейчас что то править

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

роутинг же будет именно на наше приложение а этот сервак отдает index.html. или тут тоже чето планируется?

<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>
Copy link
Collaborator

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 звучит как Модификтор

<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> --}}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

коменты ненужные убираем тут и везде

async addComponent(wrapper, advertId) {
const advert = await ajax.get(`/adverts/${advertId}`);

const sellerId = await ajax.get(`/seller/${advert.seller_id}`);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

у вас ручка на получение айдишника продавца по айдишнику объявления? показалось странным.. а почему это не приходит вместе с объявлением?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а не, кажись тут просто надо переменные корректнее назвать

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

у нас в запросе на объявление приходит айдишник селлера, по нему делаем запрос на селлера, чтобы получить айдишник юзера, с которым он ассоциирован, а по нему уже получаем имя, картинку и дату регистрации

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

делаем запрос на селлера

а переменная куда записывается селлер называется sellerId

if(checkAuth()) {
me = await ajax.get('/me');
if(advert.status === 'inactive' && seller.id !== me.id) {
return false;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

почему false? давай null


export function addCardListeners(cardsJSON) {
const cards = document.querySelectorAll('.card');
for(let i = 0; i < cards.length; i++) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

итерируемся стандартными методами массивов

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

да, я чето только сегодня увидел, что у forEach можно и элемент и индекс тянуть

const cards = document.querySelectorAll('.card');
for(let i = 0; i < cards.length; i++) {
cards[i].addEventListener('click', () => {
window.location.href = `/advert/${cardsJSON[i].id}`;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а если cardsJSON будет отличаться от того что есть в верстке? тогда ссылки поедут. предлагаю навешивать слушатель при создании


{{#if notEmpty}}
<aside class="cart__buy">
<div class="cart__items">1 товара<span class="cart__price">1₽</span></div>
Copy link
Collaborator

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));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ойойой это очень нехорошо, особенно тут, когда дело касается денег. это все должно рассчитываться на основе данных с бекенда а не на основе того что на шаблоне отрисовано. информация о цене товаров и их количестве же известна, почему бы не оперировать данными?

wrapper.querySelector('.cart__price').innerText = String(totalCost) + '₽';
}

function getProductWord(quantity) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

вынести в функцию которую можно будет переиспользовать для других слов тоже. теги для поиска решений в гугле: pluralization js rus

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а еще почему где-то на функциях все а где-то на классах, приводим к 1 варианту все (предпочтительно классы)

Copy link
Collaborator

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() {
Copy link
Collaborator

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) {
Copy link
Collaborator

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;
Copy link
Collaborator

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}`)
Copy link
Collaborator

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

Copy link
Collaborator

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){
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а что тут происходит? что за updateAdvertId, логику не могу осознать

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

поглядел по коду и не нашел чтобы с этим флагом метод вызывался, мб проглядел конечно

Copy link
Collaborator

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);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а почему это делается отдельно а не в том же запросе что и создание? а если создание будет успешным а imagePut отвалится? получается пользователь подумает что ура объявление создалось и проблем нет но картинка будет отсутствовать

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

на бэке отдельная ручка для загрузки картинок

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants