Giter Club home page Giter Club logo

kovalenkoiryna15 / rsclone Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 899 KB

(React) RSClone TrackingTime ⌚ is a final project at RSSchool (JS2020Q3). ©️Team: Artiom Platkouski, Iryna Kavalenka, Dmitry Bogdan. Mentors: Aliaksandr Kavalenka, Anastasiya Hushcha

Home Page: https://kovalenkoiryna15.github.io/rsclone/

License: MIT License

JavaScript 9.58% SCSS 6.85% TypeScript 82.66% Shell 0.47% EJS 0.44%
timemanagement rsschool react redux typescript firebase

rsclone's Introduction

rsclone's People

Contributors

aplatkouski avatar dmitrybogdan90 avatar kovalenkoiryna15 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

rsclone's Issues

ProjectView - Создать компонент - форму для добавления/редактирования проекта

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

Это форма с полями:

  • поле для ввода - Project Name
  • datepicker для выбора даты дедлайна
  • timepicker для ввода Estimated Time
  • [optional] colorpicker для выбора цвета
  • [optional] поле ввода или select для выбора клиента
  • кнопка Save
  • кнопка Cansel

Входные параметры компонента:

  • projectData - объект с информацией о проекте - будет null на добавление нового проекта или с данными для редактирования проекта,
  • метод onProjectSave (вызов на submit формы с данными из формы),
  • метод onClose.

Можно использовать компоненты Bootstrap для datepicker, timepicker, colorpicker, select.

TaskList - Список задач и возможность добавлять новые задачи

При выборе проекта (путь projects/:id) отобразить название проекта и список задач для этого проекта.
Внизу списка создать кнопку Add task, которая добавляет новую задачу к списку. При нажатии на неё добавляется новая задача с полем для ввода вместо имени. При потере фокуса сохранить эту задачу, если поле не пустое (ADD_TASK action).

Для вкладки Tasks (путь /tasks) отображать задачи всех проектов (с пометкой к какому проекту относится задача) и без назначенных проектов.

Refactoring:

Выполнить рефакторинг текущего кода

  • В директории store, создать поддиректории по названиям компонентов user, project, task или сервисов firebase. В каждой директории могут быть следующие файлы: reducers.ts, actions.ts, action-types.ts и action-constatns.ts;
  • Добавить store/firebase
  • Добавить в store/task/actions методы позволяющие взаимодействовать с firebase
  • Реализовать TaskList
  • Реализовать TaskItem

TaskListNav - Реализовать компонент Sidebar

Общий компонент без содержимого - можно скрыть/показать по клику на стрелке сбоку. Все содержимое в него помещается через входной параметр children.

Добавить тестовые данные *.JSON

user.json

внутри данные на юзера и два массива tasks и projects.

task: {id(new Date()), name, description, deadline, estimatedTime, wastedTime(timeEntries.sum()), timeEntries([timeSession]), project(id || null)}

project: {id(new Date()), name, description, deadline, estimatedTime}

ProjectView - Создать компонент модальное окно

Это должен быть общий компонент модального окна без содержимого - только пустое окно с кнопкой закрытия (обычно модальное окно также закрывается по клику по области вне модального окна). Самый распространенный подход для модальных окон в React - это Порталы (https://ru.reactjs.org/docs/portals.html). Содержимое окна будет отображаться внутри как this.props.children.

TaskListNav - Добавить элементы в сайдбар

Внутри Sidebar (как children) добавить навигацию - Tasks, Projects и список проектов c раскрывающимся меню - Edit project, Delete Project, кнопку Add project.

Реализовать обработчик клика для конок Add project, Edit project и Delete project.

Реализовать роутинг и добавить ссылки на /tasks и projects/:id. Пример и документация по react router тут - https://reactrouter.com/web/example/basic

TaskList - Компонент с формой для добавления/редактирования задачи

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

Это форма с полями:

  • чекбокс done - статус сделана таска или нет
  • datepicker для выбора даты дедлайна
  • поле для ввода - Task Name
  • select с выбором проекта
  • timepicker для ввода Estimated Time

Входные параметры компонента:

  • taskData - объект с информацией о задаче - будет null на добавление новой задачи или с данными для редактирования задачи,
  • метод onTaskSave (вызов на потерю фокуса любого поля),
  • метод onClose.

Можно использовать компоненты Bootstrap для datepicker, timepicker, select.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.