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

Описание файловой структуры веб-приложения - ежедневника с функцией голосового управления. Интерфейс с изображениями, отображающими процесс работы приложения. Примеры кода с пояснениями. Общее описание иерархии и взаимодействия компонентов приложения.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 17.05.2018
Размер файла 989,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

<td width="100%">{item.name}</td>

</tr>

)

}

}

export default TodoListItem;

TodoListItemEdit.jsx:

import React from 'react';

class TodoListItemEdit extends React.Component {

constructor(props) {

super(props);

}

handleSave() {

this.props.onSave({

id: this.props.item.id,

name: this.refs.name.value,

date: this.props.item.date,

time: this.refs.time.value,

done: this.props.item.done

});

this.props.onCancel();

}

componentDidMount() {

this.refs.name.focus();

}

render() {

return (

<tr>

<td colSpan="2" className="form-horizontal">

<div className="form-group">

<div className="col-sm-4">

<input type="time" defaultValue={this.props.item.time}

ref="time" className="form-control" tabIndex="2">

</input>

</div>

<div className="col-sm-8">

<input type="text" defaultValue={this.props.item.name}

ref="name" className="form-control" placeholder="Имя..." tabIndex="1">

</input>

</div>

</div>

<div className="form-group">

<div className="col-sm-4">

<input type="button" defaultValue="Отмена" tabIndex="3"

className="btn btn-default form-control"

onClick={this.props.onCancel}>

</input>

</div>

<div className="col-sm-8">

<input type="button" defaultValue="Сохранить" tabIndex="4"

className="btn btn-success form-control"

onClick={this.handleSave.bind(this)}>

</input>

</div>

</div>

</td>

</tr>

)

}

}

export default TodoListItemEdit;

TodoStore.js:

import { combineReducers } from 'redux';

import { createStore } from 'redux';

const todosReducer = (state = [], action) => {

switch (action.type) {

case 'TODOS_LOAD':

fetch('/todos/get', {

credentials: 'same-origin',

method: 'POST',

headers: {

'Accept': 'application/json',

'Content-Type': 'application/json'

},

body: JSON.stringify({date: action.date})

})

.then((response) => {

return response.json();

})

.then((data) => {

store.dispatch({

type: 'TODOS_LOADED',

data: data

});

})

.catch(alert);

return state;

case 'TODOS_LOADED':

return action.data;

case 'TODOS_ADD':

fetch('/todos/add', {

method: 'POST',

headers: {

'Accept': 'application/json',

'Content-Type': 'application/json'

},

credentials: 'same-origin',

body: JSON.stringify(action.newItem)

})

.catch(alert);

return state;

case 'TODOS_CHANGE':

fetch('/todos/change', {

method: 'POST',

headers: {

'Accept': 'application/json',

'Content-Type': 'application/json'

},

credentials: 'same-origin',

body: JSON.stringify(action.item)

})

.catch(alert);

return state;

case 'TODOS_DELETE':

fetch('/todos/delete', {

method: 'POST',

headers: {

'Accept': 'application/json',

'Content-Type': 'application/json'

},

credentials: 'same-origin',

body: JSON.stringify({id: action.id})

})

.catch(alert);

return state;

case 'TODOS_DELETE_DONE':

fetch('/todos/delete/done', {

method: 'POST',

headers: {

'Accept': 'application/json',

'Content-Type': 'application/json'

},

credentials: 'same-origin',

body: ''

})

.catch(alert);

return state;

case 'TODOS_DELETE_ALL':

fetch('/todos/delete/all', {

method: 'POST',

headers: {

'Accept': 'application/json',

'Content-Type': 'application/json'

},

credentials: 'same-origin',

body: ''

})

.catch(alert);

return state;

case 'TODOS_DELETE_OLD':

fetch('/todos/delete/old', {

method: 'POST',

headers: {

'Accept': 'application/json',

'Content-Type': 'application/json'

},

credentials: 'same-origin',

body: JSON.stringify({date: action.date})

})

.catch(alert);

return state;

case 'TODOS_DELETE_ON_DAY':

fetch('/todos/delete/onday', {

method: 'POST',

headers: {

'Accept': 'application/json',

'Content-Type': 'application/json'

},

credentials: 'same-origin',

body: JSON.stringify({date: action.date})

})

.catch(alert);

return state;

default:

return state;

}

}

const dateReducer = (state = new Date(), action) => {

switch (action.type) {

case "DATE_NEXT_DAY":

return new Date(state.setDate(state.getDate() + 1));

case "DATE_SET":

return new Date(action.date);

case "DATE_SET_MONTH":

return new Date(state.setMonth(action.month));

default:

return state;

}

}

const todoApp = combineReducers({

todos: todosReducer,

date: dateReducer

});

const store = createStore(todoApp);

export default store;

TodoStoreActions.js:

export function todosLoad(date) {

return {

type: 'TODOS_LOAD',

date: date

}

}

export function todosToggle(id) {

return {

type: 'TODOS_TOGGLE',

id: id

}

}

export function todosAdd(newItem) {

return {

type: 'TODOS_ADD',

newItem: newItem

}

}

export function todosChange(item) {

return {

type: 'TODOS_CHANGE',

item: item

}

}

export function todosDelete(id) {

return {

type: 'TODOS_DELETE',

id: id

}

}

export function todosDeleteDone() {

return {

type: 'TODOS_DELETE_DONE'

}

}

export function todosDeleteAll() {

return {

type: 'TODOS_DELETE_ALL'

}

}

export function todosDeleteOld(date) {

return {

type: 'TODOS_DELETE_OLD',

date: date

}

}

export function todosDeleteOnDay(date) {

return {

type: 'TODOS_DELETE_ON_DAY',

date: date

}

}

export function dateSet(day) {

return {

type: 'DATE_SET',

date: day

}

}

export function dateNextDay() {

return {

type: 'DATE_NEXT_DAY'

}

}

export function dateSetMonth(month) {

return {

type: 'DATE_SET_MONTH',

month: month

}

}

TodoVoiceControl.jsx:

import React from 'react';

import '../styles/voice-control';

class TodoVoiceControl extends React.Component {

constructor(props) {

super(props);

this.state = {speaking: false};

}

handleClick() {

var self = this;

ya.speechkit.recognize({

doneCallback: function (text) {

self.refs.text.innerHTML = "Вы сказали: " + text;

self.props.onControl(text);

},

initCallback: function () {

self.refs.text.innerHTML = "Говорите...";

},

errorCallback: function (err) {

self.refs.text.innerHTML = "Ошибка: " + err;

},

model: 'freeform', // Model name for recognition process

lang: 'ru-RU', //Language for recognition process

apiKey: '570fd671-7f9a-4555-be3a-3af792c9d4b2'

});

}

render() {

return (

<div>

<div className="voice-button" onClick={this.handleClick.bind(this)}>

<i className="glyphicon glyphicon-volume-up"></i>

</div>

<span ref="text"></span>

</div>

)

}

}

export default TodoVoiceControl;

todolist.scss:

table#app {

td {

vertical-align: top;

}

}

.todo-alert {

position: absolute;

right: 30px;

bottom: 0px;

width: 300px;

text-align: center;

vertical-align: middle;

padding: 30px;

}

.to-do-list {

min-width: 400px;

font-size: 20px;

.form-group:last-child {

margin-bottom: 0;

}

table {

width: 100%;

}

tr {

td, th {

padding: 10px;

}

}

table tr {

position: relative;

&:hover {

cursor: pointer;

background: #ebebeb;

.todo-item-control {

visibility: visible;

}

}

td {

position: relative;

}

&.success td {

text-decoration: line-through;

background: #5cb85c !important;

color: #fff;

}

.todo-item-control {

position: absolute;

height: 100%;

display: flex;

flex-direction: row;

align-items: center;

right: 0;

top: 0;

visibility: hidden;

span {

top: 0;

margin-right: 10px;

}

}

.todo-item-time {

text-align: center;

min-width: 72px;

vertical-align: middle !important;

span.glyphicon {

vertical-align: middle;

font-size: 25px;

top: 0px;

}

}

}

.task-add-block {

padding: 0 10px;

input {

margin-top: 15px;

}

}

}

.calendar, .right-sidebar, .calendar-date-nav {

border: solid #ccc 1px;

border-radius: 6px;

}

.calendar, .to-do-list, .right-sidebar, .calendar-date-nav {

margin: 30px;

}

.calendar {

.DayPicker-Body {

font-size: 16px;

.DayPicker-Day {

padding: 7px;

&:hover:not(.DayPicker-Day-selected) {

background: #ccc;

}

}

}

}

.right-sidebar, .calendar-date-nav {

padding: 20px;

}

.table-curved {

border-collapse: separate;

}

.table-curved {

border: solid #ccc 1px;

border-radius: 6px;

border-left:0px;

}

.table-curved td, .table-curved th {

border-left: 1px solid #ccc;

border-top: 1px solid #ccc;

}

.table-curved th {

border-top: none;

}

.table-curved th:first-child {

border-radius: 6px 0 0 0;

}

.table-curved th:last-child {

border-radius: 0 6px 0 0;

}

.table-curved th:only-child{

border-radius: 6px 6px 0 0;

}

.table-curved tr:last-child td:first-child {

border-radius: 0 0 0 6px;

}

.table-curved tr:last-child td:last-child {

border-radius: 0 0 5px 0;

}

.login-form {

width: 400px;

padding: 30px 30px 20px;

position: absolute;

top: 50%;

left: 50%;

transform: translate(-50%, -50%);

border: solid #ccc 1px;

border-radius: 6px;

}

.DayPicker-Day-active {

background: lightblue;

}

voice-control.scss:

.voice-button {

position: relative;

margin: 40px;

width: 100px;

height: 100px;

cursor: pointer;

border-radius: 50%;

font-size: 30px;

box-shadow: 0 3px 20px rgba(0, 0, 0, .25),

inset 0 2px 0 rgba(255, 255, 255, .6),

0 2px 0 rgba(0, 0, 0, .1),

inset 0 0 20px rgba(0, 0, 0, .1);

&:hover {

box-shadow: inset 0 0 20px rgba(0, 0, 0, .2),

0 2px 0 rgba(255, 255, 255, .4),

inset 0 2px 0 rgba(0, 0, 0, .1);

}

.glyphicon {

position: absolute;

top: 50%;

left: 50%;

transform: translate(-50%, -50%);

}

}

index.html:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Hello React</title>

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">

<link rel="stylesheet" href="styles/style.css">

</head>

<body>

<div id="toDoListApp"></div>

<script type="text/javascript" src="//download.yandex.ru/webspeechkit/webspeechkit-1.0.0.js"></script>

<script type="text/javascript" src="//download.yandex.ru/webspeechkit/webspeechkit-settings.js"></script>

<script src="https://code.jquery.com/jquery-2.2.3.min.js" integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>

<script src="scripts/bundle.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>

</body>

</html>

login.html:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Title</title>

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">

<link rel="stylesheet" href="styles/style.css">

</head>

<body>

<form action="/login" method="post" class="login-form">

<div class="form-group">

<label for="username">Пользователь:</label>

<input id="username" type="text" name="username" class="form-control" placeholder="Имя..."/>

</div>

<div class="form-group">

<label for="password">Пароль:</label>

<input id="password" type="password" name="password" class="form-control" placeholder="Пароль..." />

</div>

<div class="form-group">

<input type="submit" value="Submit" class="btn btn-primary"/>

</div>

</form>

<script>document.forms[0].username.focus();</script>

</body>

</html>

export.html:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Title</title>

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">

<link rel="stylesheet" href="styles/style.css">

<script type="text/javascript" src="https://rawgithub.com/nwcell/ics.js/master/ics.deps.min.js"></script>

</head>

<body style="padding: 30px;">

<a class="btn btn-primary" href="/">Вернуться на главную</a>

<div class="btn btn-primary" onclick="loadCSI()">Экспорт в CSI</div>

<script>

function loadCSI() {

fetch('/todos/get/all', {

method: 'GET',

headers: {

'Accept': 'application/json',

'Content-Type': 'application/json'

},

credentials: 'same-origin'

}).then(function(response) {

return response.json();

})

.then(function(data) {

console.log(data);

var cal = ics();

for (var i in data) {

var d = new Date(data[i].date);

var dstring = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();

if (data[i].time) dstring += ' ' + data[i].time;

console.log(dstring);

cal.addEvent(data[i].name, ' ', ' ', dstring, dstring);

}

cal.download();

})

.catch(alert);

}

</script>

</body>

</html>

Размещено на Allbest.ru

...

Подобные документы

  • Разработка консольного приложения: описание и сценарий использования программы, интерфейс пользователя. Поэтапное описание создание кода компьютерной игры "Крестики нолики". Функциональные и нефункциональные требования, описание исключительных ситуаций.

    методичка [819,6 K], добавлен 12.05.2013

  • Описание технологии asp.net. Страницы веб-приложения, тестирование системы. Описание функциональной, динамической модели системы. Диаграммы вариантов использования, последовательности, база данных приложения. Реализация программы, интерфейс, тестирование.

    курсовая работа [3,2 M], добавлен 30.01.2013

  • Мультимедийное представление информации. Разработка структуры сайта, макетов страниц, серверной логики и компьютерного кода, интерфейса. Описание шагов для размещения презентации в сети интернет. Затраты на разработку приложения и экономический эффект.

    дипломная работа [539,0 K], добавлен 18.10.2015

  • Создание многоуровневого приложения с Web-интерфейсом выставления оценки фильму и просмотра оценок других пользователей. Клиентская часть приложения. Разработка многопользовательского веб-приложения на ASP.NET MVC 3 с разграничением доступа к данным.

    курсовая работа [949,7 K], добавлен 22.02.2015

  • Назначение и возможности разработанного приложения для контроля активности сетевых и периферийных устройств предприятия. Язык программирования Java. Распределенные многоуровневые приложения. Структура базы данных, интерфейс разработанного приложения.

    курсовая работа [1,0 M], добавлен 16.12.2012

  • Описание визуальных компонентов. Использование чужеродных компонентов-CTIVEX, компонент Grid. Набор свойств, которые имеет каждый визуальный компонент, их установка программно или при проектировании приложения. Примеры приложения с компонентами.

    реферат [976,6 K], добавлен 19.10.2008

  • Основные преимущества и возможности объектно-ориентированного языка программирования С#. Руководство пользователя: установка приложения, эксплуатация ежедневника, назначение полей, кнопок и пунктов меню. Руководство программиста. Событие элемента Timer.

    курсовая работа [4,5 M], добавлен 16.08.2012

  • Основные инструменты построения Web-приложения. Язык сценариев PHP. Системный анализ предметной области базы данных. Коды SQL запросов на создание таблиц. Разработка Web-приложения. Описание функциональности модулей. Система управления содержимым статей.

    курсовая работа [4,8 M], добавлен 28.04.2014

  • Общее определение JavaScript-библиотеки, виды библиотек. Создание клиентского приложения с использованием одного из существующий JS-фреймворков. Значение, виды и выбор фреймворка. Выбор приложения и его тематики. Написание программного кода, итоги работы.

    курсовая работа [545,8 K], добавлен 21.12.2013

  • Создание приложения для получения информации о расписании движения междугороднего транспорта Владимирской области. Параметры совместимости приложения с различными версиями Android. Схема взаимодействия между классами. Описание внешнего вида интерфейса.

    контрольная работа [2,5 M], добавлен 17.02.2016

  • Общая схема работы приложения Android. Разработка обучающего приложения для операционной системы Android, назначение которого - развитие речи посредством произнесения скороговорок. Описание компонентов разработанного приложения, его тестирование.

    дипломная работа [1,2 M], добавлен 04.02.2016

  • Спецификация требований к разрабатываемому приложению. Разработка структурной схемы интерфейса. Описание алгоритма шифрования DES. Разработка программного кода приложения "DES". Проведение исследования основных шагов для генерации ключей и шифрования.

    курсовая работа [398,4 K], добавлен 13.12.2022

  • Основные концепции разработки приложения в трёхуровневой архитектуре. Проектное решение, реализующее модель реляционной БД. Спецификация на разработку интерфейса. Описание выполнения транзакций прибытия и убытия судна. Инсталляционные файлы приложения.

    курсовая работа [4,0 M], добавлен 26.12.2011

  • Проектирование вариантов использования приложения. Анализ существующей версии приложения. Обоснование выбора инструментальных программных средств. Проектирование интерфейса пользователя. Адаптация под мобильные устройства. Описание программного продукта.

    курсовая работа [2,8 M], добавлен 25.06.2017

  • Анализ моделируемого приложения и постановка задачи. Диаграмма прецедентов, деятельности объектов и состояния классов. Разработка приложения-игры, выбор языка программирования и среды для разработки проекта, интерфейс приложения и ресурсы проекта.

    курсовая работа [308,5 K], добавлен 14.10.2011

  • Реализация проекта по оптимизации отделений почтовой связи. Направления деятельности в области кадровой политики. Автоматизация обработки получаемой техническим отделом информации. Разработка приложения клиент-сервер. Описание клиентского приложения.

    курсовая работа [34,3 K], добавлен 07.08.2013

  • Общее описание разрабатываемого приложения, его актуальность и сферы практического применения. Выбор среды разработки и языка программирования, 3D-движка. Архитектура приложения, интерфейса и его главных элементов, взаимодействие с пользователем.

    дипломная работа [317,5 K], добавлен 10.07.2017

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

    курсовая работа [2,2 M], добавлен 14.04.2019

  • Описание приложения в виде пользовательского сценария. Проектирование обмена сообщениями между модулями. Разработка общей структуры приложения. Обзор структуры файлов. Разработка получения данных со страницы. Характеристика результата работы программы.

    дипломная работа [1,5 M], добавлен 22.03.2018

  • Описание предметной области. Характеристика программных средств. Описание компонентов, интерфейс программы. Описание процедур и функций. Вызов и загрузка программы. Испытание методом белого и черного ящика на ошибки кода программного приложения.

    курсовая работа [2,2 M], добавлен 26.04.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.