Skip to content
This repository has been archived by the owner on Sep 11, 2023. It is now read-only.

Знакомство с GraphQL #33

Closed
5 tasks done
oxiqod opened this issue Aug 1, 2023 · 31 comments · Fixed by #34
Closed
5 tasks done

Знакомство с GraphQL #33

oxiqod opened this issue Aug 1, 2023 · 31 comments · Fixed by #34
Assignees

Comments

@oxiqod
Copy link
Contributor

oxiqod commented Aug 1, 2023

Цель

Ознакомиться с GraphQL, инструментом коммуникации между front-end и back-end.

План

@Nelfimov
Copy link
Contributor

Nelfimov commented Aug 7, 2023

Первое задание

Наш эндпоинт: https://wp.api.atls.academy/graphql

Необходимо по нему получить следующие сущности:

  • Navigation
  • Section
    • Hero

Пример

Hero должен тебе вернуть:

Digital становится всё более многолюдным, востребованность...

Материалы

  • Для GraphQL мы используем @apollo/client, с которым ты выше познакомилась.
  • drum-in - оформление кода и реализация.

@oxiqod
Copy link
Contributor Author

oxiqod commented Aug 7, 2023

@Nelfimov

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

@Nelfimov
Copy link
Contributor

Nelfimov commented Aug 7, 2023

Вот пример схемы до sections:

query NewQuery {
  sections {
    nodes {
      content
    }
  }
}

@oxiqod
Copy link
Contributor Author

oxiqod commented Aug 8, 2023

@Nelfimov

У меня удалось получить данные в виде строки для фрагмента Info (у меня там находится этот эта текстовая часть), добавила данные в компонент, вот как это выглядит на мобильной версии:

Снимок экрана от 2023-08-08 09-38-40

Воспроизведение

  1. добавила слой globals/data
  2. завернула в ApolloProvider всё, что идет в рендер
  3. добавила в нужный фрагмент запрос к gql и хук useInfo
  4. добавила в компонент полученную строку

Описание
с сервера приходит такая сплошная строка с текстом и переносами:
"\nDigital становится всё более многолюдным, востребованность по направлениям при этом не снижается. Но специалистов, готовых нести ответственность за свои решения по-прежнему мало.\nAtlantis Academy обучает и формирует инженеров и архитекторов, а не программистов и дизайнеров.\n"

по макету на десктопной версии между строками есть элементы:
Снимок экрана от 2023-08-08 09-35-39

а на мобильной версии между двумя параграфами есть отступ:
Снимок экрана от 2023-08-08 09-37-39

Вопрос
Так задумано? или мне нужно каким то образом форматировать полученную с сервера строку и делать отступ для мобильной версии и делить строку на 3 фрагмента для десктопной?

@Nelfimov
Copy link
Contributor

Nelfimov commented Aug 8, 2023

Так задумано - надо делать форматирование на стороне клиента.

В десктопе - замена "." на картинки. В обоих - разделить по "\n" на несколько тегов.

@Nelfimov
Copy link
Contributor

Nelfimov commented Aug 8, 2023

Продолжение первого задания

Добавил тебе новые записи в sections:

  • title: заголовок в секции, например в FAQ: "Вопросы и ответы"
  • navigationName: название секции для навбара и скроллспая
  • content: текст под заголовком
схема
sections {
  nodes {
    content
    title
    sections {
      title
      navigationName
    }
  }
}

Так же можешь подтянуть уже ссылки для навбара:

allNavigation {
  nodes {
    navigation {
      linkName
    }
    title
  }
}

@Nelfimov
Copy link
Contributor

Nelfimov commented Aug 8, 2023

Секция FAQ

Контент для секции FAQ готов.

allFAQ {
  nodes {
    faq {
      answer
      question
    }
  }
}

@Nelfimov
Copy link
Contributor

Nelfimov commented Aug 8, 2023

Секция Скиллы (бегущая строка)

Контент для секции готов.

skills {
  nodes {
    title
  }
}

@Nelfimov
Copy link
Contributor

Nelfimov commented Aug 8, 2023

Секция Курсы

courses {
    nodes {
      course {
        title
        description
        label {
          ... on Label {
          id
          title
        }
      }
    }
  }
}

@oxiqod
Copy link
Contributor Author

oxiqod commented Aug 8, 2023

@Nelfimov
#33 (comment)

по макету там title с большой буквы, а responce получаю с маленькой, или не критично?

или же мне самой просто сделать первую букву апперкейс?

@Nelfimov
Copy link
Contributor

Nelfimov commented Aug 8, 2023

Делаем как по дизайну - у клиента трансформируем в заглавные.

@oxiqod oxiqod linked a pull request Aug 8, 2023 that will close this issue
@oxiqod oxiqod removed a link to a pull request Aug 8, 2023
@oxiqod oxiqod linked a pull request Aug 8, 2023 that will close this issue
@oxiqod
Copy link
Contributor Author

oxiqod commented Aug 9, 2023

@Nelfimov

накопилось несколько уточнений по данным с сервера

Курсы:

  • Дескрипций для карточек еще нет?
  • Во вторую, большую карточку с заголовком Основы разработки приходит название лейбла обучение, по макету там мини-курс

Навбар в левой части сайта:

  • с сервера приходит 4 заголовка (Academy,Курсы,Обучение,FAQ), в макете 6 (Academy,Курсы,Ученики,Обучение,Стипендия,FAQ)

Бегущая строка:

  • Правильно ли я поняла, что пока готова только первая строка со скиллами, а github atom figma еще нет?

@Nelfimov
Copy link
Contributor

Nelfimov commented Aug 9, 2023

Дескрипций для карточек еще нет?

Все есть:

image

Во вторую, большую карточку с заголовком Основы разработки приходит название лейбла обучение, по макету там мини-курс

Обновил.

с сервера приходит 4 заголовка (Academy,Курсы,Обучение,FAQ), в макете 6 (Academy,Курсы,Ученики,Обучение,Стипендия,FAQ)

Это косяк макета - у тебя скроллспай должен соответствовать верхнему навбару.

Правильно ли я поняла, что пока готова только первая строка со скиллами, а github atom figma еще нет?

Добавил

@oxiqod
Copy link
Contributor Author

oxiqod commented Aug 10, 2023

@Nelfimov
Снимок экрана от 2023-08-10 10-49-00

наоборот) во вторую карточку мини-курс с заголовком Основы разработки
или я могу на клиенте местами их поменять?

@Nelfimov
Copy link
Contributor

@oksssvv Поправил.

@oxiqod
Copy link
Contributor Author

oxiqod commented Aug 10, 2023

@Nelfimov
попробовала получить image для карточки, удалось, но цвет другой, я правильно поняла что путь такой:

courses {
    nodes {
      course {
        image{
          sourceUrl
        }
      }
    }
  }

на левой карточке получаемое изображение с сервера:
Снимок экрана от 2023-08-10 11-10-42

@Nelfimov
Copy link
Contributor

Все верно. Для картинки надо применить градиентный фильтр.

@Nelfimov
Copy link
Contributor

@oksssvv свой косяк поправил - картинка была неправильно выгружена из дизайна.

@oxiqod
Copy link
Contributor Author

oxiqod commented Aug 10, 2023

@Nelfimov
мне Андрей сказал что карточки нужно получать с сервера, т.е. как я поняла не верстать в ручную а мапить массив nodes

например не совсем ясно как это сделать с имеющимися направляющими (2 карточки идут в Column, затем 2 карточки идут в Row)

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

@Nelfimov
Copy link
Contributor

Все верно - тебе с бэкенда приходят данные, которые нужно размапить с помощью одного компонента Card.

Расположение в несколько рядов можно добиться двумя путями в CSS:

@oxiqod
Copy link
Contributor Author

oxiqod commented Aug 11, 2023

@Nelfimov

закончила с карточками, есть еще схемы к данным которые нужно получать с сервера?

если есть возможность получить полностью всю схему, то можешь подсказать как ее запросить?
(чтоб была возможность проверить, не забыла ли я что-то)

@Nelfimov
Copy link
Contributor

У нас остался еще вот этот слайдер:

image

У него есть только заголовок. А вообще на странице все данные должны быть взяты из GraphQL, ничего "своего" не должно быть.

Я сообщу как будет готово.

@Nelfimov
Copy link
Contributor

Слайд готов, пробуй:

query NewQuery {
  slides {
    nodes {
      slider {
        text
        image {
          link
        }
      }
    }
  }
}

@Nelfimov
Copy link
Contributor

Секция Hero доделана, в content:

query NewQuery {
  sections {
    nodes {
      content
    }
  }
}

@Nelfimov
Copy link
Contributor

Процесс готов

image
query NewQuery {
  processes {
    nodes {
      process {
        description
        title
      }
    }
  }
}

@oxiqod
Copy link
Contributor Author

oxiqod commented Aug 11, 2023

@Nelfimov
я правильно понимаю, что изображение которое отображается на слайдере это конечный узел с названием link?

  slides {
    nodes {
      slider {
        text
        image {
          link
        }
      }
    }
  }
}

если да, то он некорректно отображается, и у полученной строки не вижу формат пнг, (например у изображения, которое я получала для карточки) вот что я получаю с сервера

"data": {
    "slides": {
      "nodes": [
        {
          "slider": {
            "text": "Формирование системы базовых фрагментов и компонентов",
            "image": {
              "link": "https://wp.api.atls.academy/?attachment_id=141"
            }
          }
        }
      ]
    }

@Nelfimov
Copy link
Contributor

Обновил настройки - должно сработать. Принцип тот же что и у картинок курсов - sourceUrl

@oxiqod
Copy link
Contributor Author

oxiqod commented Aug 11, 2023

@Nelfimov
а слайд для мобильной версии или я его не вижу просто?

@oxiqod
Copy link
Contributor Author

oxiqod commented Aug 11, 2023

@Nelfimov

еще текст в description получаемый в steps - не по макету

там фраза обрезана и умещается в 2 строчки, получаемый с сервера текст - в 3 строчки

@oxiqod
Copy link
Contributor Author

oxiqod commented Aug 11, 2023

@Nelfimov

макет:
Снимок экрана от 2023-08-11 20-36-55

Приходит с сервера:
Снимок экрана от 2023-08-11 20-37-44

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

@Nelfimov
Copy link
Contributor

Добавил слайдеры для мобильного и десктопа, запрос надо полностью переписать:

query NewQuery {
  slides {
    nodes {
      slider {
        text
        imageDesktop {
          sourceUrl
        }
        imageMobile {
          sourceUrl
        }
      }
    }
  }
}

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

Successfully merging a pull request may close this issue.

2 participants