IrshakAnna-Mariia / GeekHub-2020

0 stars 0 forks source link

Випускна робота #12

Open IrshakAnna-Mariia opened 3 years ago

IrshakAnna-Mariia commented 3 years ago

Гарного дня, @redexp ! Хотіла б отримати тему для роботи. Дякую.

redexp commented 3 years ago

Приложение "События" - список событий по датам

При входе требует логин - форма с двумя полями для имейла и пароля. Кнопка для возможности зарегистировать нового пользователя. За каждым пользователем должен сохраняться свой список событий. Все данные хранятся на сервере. Пароли хранить с помощью bcrypt (прочитай, первые две ссылки в описании, чтобы понять суть bcrypt)

После логина переходим на страницу, на которой выводим таблицу, которая представляет текущий месяц по дням, вот так

◀️ Апрель ▶️

Пн Вт Ср Чт Пт Сб Вс
1 2 (3) 3 4 5
6 7 8 (1) 9 10 11 12

в скобках выводит количество событий в этот день. Должно быть две кнопки для перехода на предыдущий и следующий месяц. При клике на день выводим список событий

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

Для работы с датами советую посмотреть на moment

На выполнение 10 дней

IrshakAnna-Mariia commented 3 years ago

Гарного дня, @redexp ! Завдання виконала.

redexp commented 3 years ago

У тебя есть ещё три дня, давай, чтобы выпускная выглядела вообще класно - добавь хранение данных в какой-то БД - думаю mongodb + mongoose будет проще всего.

IrshakAnna-Mariia commented 3 years ago

Гарного дня, @redexp . Зберігання даних в БД додала.

redexp commented 3 years ago

я уважаю твои старания, вижу ты по ходу написала коментарий в 2 ночи, но я не просил делать быстро, я просил делать качественно, и я посмотрел одним глазом, там работа с бд - не супер. Потрать ещё день

IrshakAnna-Mariia commented 3 years ago

Гарного дня, @redexp . Роботу, ніби, підправила.

redexp commented 3 years ago

шо вот это такое?!? https://github.com/IrshakAnna-Mariia/GeekHub-2020/blob/7e3470c6d8f679140bc9fb58f344816d02c2bfbd/calendar/client/src/logIn/SignIn.js#L31-L43 почему ты этот эррор не вывела по нормальному как вот этот редирект? https://github.com/IrshakAnna-Mariia/GeekHub-2020/blob/7e3470c6d8f679140bc9fb58f344816d02c2bfbd/calendar/client/src/logIn/SignIn.js#L52

шо вот это такое?!? https://github.com/IrshakAnna-Mariia/GeekHub-2020/blob/7e3470c6d8f679140bc9fb58f344816d02c2bfbd/calendar/client/src/logIn/SignIn.js#L9-L10 https://github.com/IrshakAnna-Mariia/GeekHub-2020/blob/7e3470c6d8f679140bc9fb58f344816d02c2bfbd/calendar/client/src/logIn/SignIn.js#L48-L49 я разве показывал что вот так нужно работать с формами?

Пересмотрел твою домашку react-form и не понял как я её пропустил, в ней нет обработки события submit, нет работы с инпутами. Стало понятно почему ты совершенно не ориентируешься как взять значение из инпута и используешь вот такие костыли.

Посмотри как я сделал домашку react-form и исправь свою выпускную https://github.com/redexp/GeekHub-2020.js/tree/master/examples/react-form

все вот эти четыре поля тут бессмысленные - ты их просто прокидываешь в Main который и так напрямую подключён к стору и может сам взять всё что ему нужно, но ты этого не делаешь, значит не поняла сути функции connect https://github.com/IrshakAnna-Mariia/GeekHub-2020/blob/7e3470c6d8f679140bc9fb58f344816d02c2bfbd/calendar/client/src/app/Main.js#L154

работа с моментом - очень печальная, такое чувство что он тебе больше мешал чем помогал... Ты могла бы вместо currentMonth: 1 сделать currentMonth: moment() и по prev делать просто currentMonth.subtract(1, 'month') а по next currentMonth.add(1, 'month') и вместо вот этого moment(moment().get('year').toString() + monthThis + '01', "YYYYMMDD").format('MMMM') писать просто currentMonth.format('MMMM') в это вся сила момента

Даю тебе ещё два дня.

IrshakAnna-Mariia commented 3 years ago

Гарного дня, @redexp . Роботу виправила.

redexp commented 3 years ago

Работа с монгой - неправильная, что странно, потому что там нет ничего сложного https://github.com/IrshakAnna-Mariia/GeekHub-2020/blob/975ee013857b94fa2eb956f3d89be2d1e4684c8e/calendar/index.js#L29-L37 тут неправильно сразу куча всего, нужно было написать по простому

        let usersBase = await User.find({});

        res.send(usersBase);

ты перемешала два противоположных подхода async/await и error first callback, т.е. ты либо используешь await либо колбек https://github.com/IrshakAnna-Mariia/GeekHub-2020/blob/975ee013857b94fa2eb956f3d89be2d1e4684c8e/calendar/index.js#L79-L92

        let doc = await User.findOne({email: req.body.email})
        if (doc) {
                check.email = true;
                check.count = 1;
                document = {password: doc.password, events: [...doc.events]}
        }
        let resp = await bcrypt.compare(req.body.password, document.password)
        if (resp) {
                check.events = [...document.events];
                check.password = true
                res.status(201).jsonp(check)
                return
        }

либо

User.findOne({email: req.body.email}, (err, doc) => {
            if (err) {
              res.status(500).json({message: err.message});
              return
            }
            if (doc) {
                check.email = true;
                check.count = 1;
                document = {password: doc.password, events: [...doc.events]}
            }

            bcrypt.compare(req.body.password, document.password, (error, resp) => {
              if (err) {
                res.status(500).json({message: err.message});
                return
              }
              if (resp) {
                check.events = [...document.events];
                check.password = true
                res.status(201).jsonp(check)
              }
          })
})

Но я не преподавал монгу и обещал что не буду давать того чему не учил.

С дизайном - можно было бы подключить хотябы bootstrap чтобы выглядело хоть сколько-нибуть симпотично.

Не так нужно делать редиректы, а через объект histoy https://github.com/IrshakAnna-Mariia/GeekHub-2020/blob/975ee013857b94fa2eb956f3d89be2d1e4684c8e/calendar/client/src/app/Main.js#L61

Ты всё ещё поленилась посмотреть что же там есть ещё у момента кроме add subtract https://github.com/IrshakAnna-Mariia/GeekHub-2020/blob/975ee013857b94fa2eb956f3d89be2d1e4684c8e/calendar/client/src/app/Main.js#L51 а есть там вот такое

if (currentData.date() > 0 && currentData.date() <= 31) {

и условие крайне странное - день месяца всегда будет больше 0 и меньше равен 31, зачем это проверять?

вот это вообще меня выбило из колеи https://github.com/IrshakAnna-Mariia/GeekHub-2020/blob/975ee013857b94fa2eb956f3d89be2d1e4684c8e/calendar/client/src/app/Main.js#L88 почему не просто

if (item[0] !== "") {

https://github.com/IrshakAnna-Mariia/GeekHub-2020/blob/975ee013857b94fa2eb956f3d89be2d1e4684c8e/calendar/client/src/app/Main.js#L96

item[1] = item[0] === currentData.date()

Сертификат я тебе дам за общие заслуги, но имей ввиду, уровень у тебя хромает. Я бы глядя на такое тестовое не взял тебя в компанию в которой работаю. Но в тоже время в тебе есть очевидный потенциал. Тебе нужно ещё немного попрактиковаться. Я выложу описание всех домашек которые давал другим студентам и настоятельно советую тебе сделать ещё одно как минимум из этого списка, прежде чем подавать заявки на трудоустройство в какую-либо компанию.

IrshakAnna-Mariia commented 3 years ago

Дуже дякую за все, @redexp . Я обов'язково буду виправляти свої помилки і більше практикуватися. Ще раз дякую.