Skip to content

Приложение списка задач для курса стажеров СКБ Контур

Notifications You must be signed in to change notification settings

SparkCode/TodoApp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Приложение TodoApp

Все нижеприведенные команды нужно запускать в контексте рабочей папки проекта.

0. Познакомьтесь с проектом

  1. Сделайте fork этого репозитория.
  2. Склонируйте (git clone) себе свой форк.
  3. Перед вами пустой проект приложения. Ознакомьтесь с основными его частями (TodoStore.js, TodoList.js)
  4. Создайте package.json для проекта с помощью команды: npm init

1. Реализация сервиса TodoStore.js

Реализуйте основные методы сервиса TodoStore.js:

  1. getAll - получение списка всех задач;
  2. add - добавление задачи в список;
  3. remove - удаление задачи из списка;
  4. complete - изменение состояния завершенности задачи.

2. Подготовка инфраструктуры для тестирования

  1. Установите интерфейс командной строки KarmaJS: npm install karma-cli -g;
  2. Установите в папку проекта KarmaJS: npm install karma --save-dev;
  3. Установите Jasmine как фреймворк для тестирования, и лаунчер для браузера Chrome: npm install karma-jasmine karma-chrome-launcher --save-dev;
  4. Добавьте в проект конфигурацию для проведения тестов: karma init.

3. Написание тестов для TodoStore.js

  1. Откройте файл test/todostore.tests.js;
  2. Запустите тесты с помощью команды karma start
  3. Напишите новые тесты для проверки работы TodoStore.js;
  4. Еще раз запустите тесты с помощью команды karma start

4. Создание UI

  1. Установите в проект AngularJS: npm install angular --save;
  2. Перейдите в контроллер компонента TodoList.js;
  3. Создайте основные методы обработки пользовательского ввода у TodoList.js, с помощью сервиса TodoStore.js;
  4. Создайте шаблон компонента TodoList на основе HTML разметки от верстальщика (etc/todo-list.html);
  5. Поместите файл стилей списка (etc/todo-list.css) в папку компонента (app/components/todo-list);
  6. Подключите перемещенный в п.5 файл стилей к странице index.html в теге <head>:
<link rel="stylesheet" href="app/components/todo-list/todo-list.css" />
  1. Подключите к index.html все необходимые скрипты перед закрывающимся тегом </body>: angular.min.js,TodoStore.js,TodoList.js,app.js.

5. Фильтрация задач (самостоятельно)

  1. У сервиса TodoStore.js реализуйте новые методы: getCompleted, getActive, которые будут возвращать только завершенные и только незавершенные задачи, соответственно;
  2. Добавьте в контроллер компонента TodoList.js поле, которое будет хранить состояние текущего фильтра в виде строки ('all','todo',done). В конструкторе по умолчанию присвойте значение 'all';
  3. Свяжите созданное в п.2 поле с фильтром в представлении, используя атрибуты ng-model;
  4. Измените метод обновления списка задач в TodoList.js с учетом выбранного фильтра;
  5. Добавьте в шаблон вызов данного метода при изменении пользователем состояния фильтра (атрибут ng-change).

6. Сборка

  1. Установите интерфейс командной строки GruntJS: npm install grunt-cli -g;
  2. Установите пакет grunt в проект: npm install grunt --save-dev;
  3. Создайте в корне проекта файл конфигурации сборки gruntfile.js.
module.exports = function (grunt) {

    // задача по умолчанию
    grunt.registerTask('default', []);
    
};
  1. Установите пакет с задачей для конкатенации файлов: npm install grunt-contrib-concat --save-dev;
  2. Загрузите задачу в файле конфигурации и сконфигурируйте ее:
grunt.loadNpmTasks('grunt-contrib-concat');

grunt.initConfig({
    concat: {
        options: {
            separator: ';',
            sourceMap: true
        },
        debug: {
            src: ['app/**/*.js'],
            dest: 'dist/bundle.js'
        }
    }
});

grunt.registerTask('default', ['concat']);
  1. Запустите сборку командой grunt;
  2. По желанию: добавьте минификацию скриптов после конкатенации (с помощью пакета grunt-contrib-uglify).

About

Приложение списка задач для курса стажеров СКБ Контур

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • CSS 54.7%
  • HTML 29.5%
  • JavaScript 15.8%