atls-academy / oksssvv.github.io

BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

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

Closed oxiqod closed 1 year ago

oxiqod commented 1 year ago

Цель

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

План

Nelfimov commented 1 year ago

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

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

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

Пример

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

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

Материалы

oxiqod commented 1 year ago

@Nelfimov

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

Nelfimov commented 1 year ago

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

query NewQuery {
  sections {
    nodes {
      content
    }
  }
}
oxiqod commented 1 year ago

@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 commented 1 year ago

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

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

Nelfimov commented 1 year ago

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

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

схема ```graphql sections { nodes { content title sections { title navigationName } } } ```

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

```graphql allNavigation { nodes { navigation { linkName } title } } ```
Nelfimov commented 1 year ago

Секция FAQ

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

```graphql allFAQ { nodes { faq { answer question } } } ```
Nelfimov commented 1 year ago

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

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

```graphql skills { nodes { title } } ```
Nelfimov commented 1 year ago

Секция Курсы

```graphql courses { nodes { course { title description label { ... on Label { id title } } } } } ```
oxiqod commented 1 year ago

@Nelfimov https://github.com/atls-academy/oksssvv.github.io/issues/33#issuecomment-1669214372

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

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

Nelfimov commented 1 year ago

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

oxiqod commented 1 year ago

@Nelfimov

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

Курсы:

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

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

Nelfimov commented 1 year ago

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

Все есть:

![image](https://github.com/atls-academy/oksssvv.github.io/assets/44067768/b5afd884-6a4c-426a-9c90-e0557d743aec)

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

Обновил.

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

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

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

Добавил

oxiqod commented 1 year ago

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

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

Nelfimov commented 1 year ago

@oksssvv Поправил.

oxiqod commented 1 year ago

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

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

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

Nelfimov commented 1 year ago

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

Nelfimov commented 1 year ago

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

oxiqod commented 1 year ago

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

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

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

Nelfimov commented 1 year ago

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

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

oxiqod commented 1 year ago

@Nelfimov

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

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

Nelfimov commented 1 year ago

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

image

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

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

Nelfimov commented 1 year ago

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

```graphql query NewQuery { slides { nodes { slider { text image { link } } } } } ```
Nelfimov commented 1 year ago

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

```graphql query NewQuery { sections { nodes { content } } } ```
Nelfimov commented 1 year ago

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

image ```graphql query NewQuery { processes { nodes { process { description title } } } } ```
oxiqod commented 1 year ago

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

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

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

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

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

oxiqod commented 1 year ago

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

oxiqod commented 1 year ago

@Nelfimov

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

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

oxiqod commented 1 year ago

@Nelfimov

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

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

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

Nelfimov commented 1 year ago

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

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