Разработка программного продукта для составления расписания репетитора

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

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

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

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

result.setValue(contact.getValue());

return result;

}

public static List<ContactDto> of(List<Contact> contacts) {

List<ContactDto> result = new ArrayList<>();

for (Contact contact : contacts) {

result.add(ContactDto.of(contact));

}

return result;

}

public ContactDto() {

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public Long getIdContactName() {

return idContactName;

}

public void setIdContactName(Long idContactName) {

this.idContactName = idContactName;

}

public String getContactName() {

return contactName;

}

public void setContactName(String contactName) {

this.contactName = contactName;

}

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

}

Листинг класса ContactNameDto

package com.rep.core.dto;

import com.rep.db.domain.ContactName;

ublic class ContactNameDto {

private Long id;

private String name;

public static ContactNameDto of(ContactName contactName) {

ContactNameDto result = new ContactNameDto();

result.setId(contactName.getId());

result.setName(contactName.getName());

return result;

}

public ContactNameDto() {

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

Листинг класса EventDto

package com.rep.core.dto;

import com.rep.core.common.DateUtil;

import com.rep.db.domain.Event;

import java.util.Date;

public class EventDto {

private Long id;

private Long idTutor;

private String name;

private String currentDate;

private Date timeStart;

private Date timeEnd;

private String repeatCode;

private String dateStart;

private String dateEnd;

private String comment;

private LessonDto lesson;

public static EventDto of(Event event, Date currentDate) {

EventDto result = new EventDto();

result.setId(event.getId());

result.setIdTutor(event.getIdTutor());

result.setName(event.getName());

result.setCurrentDate(DateUtil.toString(currentDate));

result.setTimeStart(event.getTimeStart());

result.setTimeEnd(event.getTimeEnd());

result.setRepeatCode(event.getRepeatCode().toString());

result.setDateStart(DateUtil.toString(event.getDateStart()));

result.setDateEnd(DateUtil.toString(event.getDateEnd()));

result.setComment(event.getComment());

if (event.getLesson() != null) {

result.setLesson(LessonDto.of(event.getLesson()));

}

return result;

}

public EventDto() {

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public Long getIdTutor() {

return idTutor;

}

public void setIdTutor(Long idTutor) {

this.idTutor = idTutor;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getCurrentDate() {

return currentDate;

}

public void setCurrentDate(String currentDate) {

this.currentDate = currentDate;

}

public Date getTimeStart() {

return timeStart;

}

public void setTimeStart(Date timeStart) {

this.timeStart = timeStart;

}

public Date getTimeEnd() {

return timeEnd;

}

public void setTimeEnd(Date timeEnd) {

this.timeEnd = timeEnd;

}

public String getRepeatCode() {

return repeatCode;

}

public void setRepeatCode(String repeatCode) {

this.repeatCode = repeatCode;

}

public String getDateStart() {

return dateStart;

}

public void setDateStart(String dateStart) {

this.dateStart = dateStart;

}

public String getDateEnd() {

return dateEnd;

}

public void setDateEnd(String dateEnd) {

this.dateEnd = dateEnd;

}

public String getComment() {

return comment;

}

public void setComment(String comment) {

this.comment = comment;

}

public LessonDto getLesson() {

return lesson;

}

public void setLesson(LessonDto lesson) {

this.lesson = lesson;

}

@Override

public String toString() {

return "EventDto{" +

"idTutor=" + idTutor +

", name='" + name + '\'' +

", timeStart=" + timeStart +

", timeEnd=" + timeEnd +

", comment='" + comment + '\'' +

'}';

}

}

Листинг класса JournalDto

package com.rep.core.dto;

import com.rep.db.domain.Journal;

import com.rep.db.domain.Student;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

public class JournalDto {

private Long id;

private Date date;

private String studentFirstName;

private String studentLastName;

private Long idSubject;

private Long idTheme;

private String themeName;

private String homeTask;

private String lessonMark;

private String hometaskMark;

private String comment;

public static JournalDto of(Journal journal) {

JournalDto result = new JournalDto();

result.setId(journal.getId());

result.setDate(journal.getDate());

if (journal.getLesson() != null) {

if (journal.getLesson().getSubject() != null) {

result.setIdSubject(journal.getLesson().getSubject().getId());

}

Student student = journal.getLesson().getStudent();

if (student != null) {

result.setStudentFirstName(student.getFirstName());

result.setStudentLastName(student.getLastName());

}

}

if (journal.getTheme() != null) {

result.setIdTheme(journal.getTheme().getId());

result.setThemeName(journal.getTheme().getName());

}

result.setHomeTask(journal.getHometask());

result.setLessonMark(journal.getLessonMark());

result.setHometaskMark(journal.getHometaskMark());

result.setComment(journal.getComment());

return result;

}

public static List<JournalDto> of(List<Journal> journals) {

List<JournalDto> result = new ArrayList<>();

for (Journal journal : journals) {

result.add(JournalDto.of(journal));

}

return result;

}

public JournalDto() {

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public Date getDate() {

return date;

}

public void setDate(Date date) {

this.date = date;

}

public String getStudentFirstName() {

return studentFirstName;

}

public void setStudentFirstName(String studentFirstName) {

this.studentFirstName = studentFirstName;

}

public String getStudentLastName() {

return studentLastName;

}

public void setStudentLastName(String studentLastName) {

this.studentLastName = studentLastName;

}

public Long getIdSubject() {

return idSubject;

}

public void setIdSubject(Long idSubject) {

this.idSubject = idSubject;

}

public Long getIdTheme() {

return idTheme;

}

public void setIdTheme(Long idTheme) {

this.idTheme = idTheme;

}

public String getThemeName() {

return themeName;

}

public void setThemeName(String themeName) {

this.themeName = themeName;

}

public String getHomeTask() {

return homeTask;

}

public void setHomeTask(String homeTask) {

this.homeTask = homeTask;

}

public String getLessonMark() {

return lessonMark;

}

public void setLessonMark(String lessonMark) {

this.lessonMark = lessonMark;

}

public String getHometaskMark() {

return hometaskMark;

}

public void setHometaskMark(String hometaskMark) {

this.hometaskMark = hometaskMark;

}

public String getComment() {

return comment;

}

public void setComment(String comment) {

this.comment = comment;

}

}

Листинг класса LessonDto

package com.rep.core.dto;

import com.rep.db.domain.Lesson;

import java.math.BigDecimal;

public class LessonDto {

private Long id;

private BigDecimal price;

private String subjectName;

private StudentDto student;

public static LessonDto of(Lesson lesson) {

LessonDto result = new LessonDto();

result.setId(lesson.getId());

result.setSubjectName(lesson.getSubject().getName());

result.setPrice(lesson.getPrice());

result.setStudent(StudentDto.of(lesson.getStudent()));

return result;

}

public LessonDto() {

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public BigDecimal getPrice() {

return price;

}

public void setPrice(BigDecimal price) {

this.price = price;

}

public String getSubjectName() {

return subjectName;

}

public void setSubjectName(String subjectName) {

this.subjectName = subjectName;

}

public StudentDto getStudent() {

return student;

}

public void setStudent(StudentDto student) {

this.student = student;

}

}

Листинг класса StudentDto

package com.rep.core.dto;

import com.rep.db.domain.Contact;

import com.rep.db.domain.Student;

import java.util.HashSet;

import java.util.Set;

public class StudentDto {

private Long id;

private Long idTutor;

private String firstName;

private String lastName;

private String address;

private Set<ContactDto> contacts;

public static StudentDto of(Student student) {

StudentDto result = new StudentDto();

result.setId(student.getId());

result.setIdTutor(student.getIdTutor());

result.setFirstName(student.getFirstName());

result.setLastName(student.getLastName() == null ? "" : student.getLastName());

result.setAddress(student.getAddress() == null ? "" : student.getAddress());

Set<ContactDto> contactSet = new HashSet<>();

if (!student.getContacts().isEmpty()) {

ContactDto contactDto;

for (Contact contact : student.getContacts()) {

contactDto = ContactDto.of(contact);

contactSet.add(contactDto);

}

}

result.setContacts(contactSet);

return result;

}

public StudentDto() {

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public Long getIdTutor() {

return idTutor;

}

public void setIdTutor(Long idTutor) {

this.idTutor = idTutor;

}

public String getFirstName() {

return firstName;

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}

public String getLastName() {

return lastName;

}

public void setLastName(String lastName) {

this.lastName = lastName;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

public Set<ContactDto> getContacts() {

return contacts;

}

public void setContacts(Set<ContactDto> contacts) {

this.contacts = contacts;

}

}

Листинг класса SubjectDto

package com.rep.core.dto;

import com.rep.db.domain.Subject;

public class SubjectDto {

private Long id;

private String name;

public static SubjectDto of(Subject subject) {

SubjectDto result = new SubjectDto();

result.setId(subject.getId());

result.setName(subject.getName());

return result;

}

public SubjectDto() {

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

Листинг класса ThemeDto

package com.rep.core.dto;

import com.rep.db.domain.Theme;

import java.util.ArrayList;

import java.util.List;

public class ThemeDto {

private Long id;

private String name;

private String comment;

private Long idParent;

private List<ThemeDto> children;

public static ThemeDto of(Theme theme) {

ThemeDto result = new ThemeDto();

result.setId(theme.getId());

result.setName(theme.getName());

result.setComment(theme.getComment() == null ? "" : theme.getComment());

result.setIdParent(theme.getIdParentTheme());

return result;

}

public static List<ThemeDto> of(List<Theme> themes) {

List<ThemeDto> result = new ArrayList<>();

for (Theme theme : themes) {

result.add(ThemeDto.of(theme));

}

return result;

}

public ThemeDto() {

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getComment() {

return comment;

}

public void setComment(String comment) {

this.comment = comment;

}

public Long getIdParent() {

return idParent;

}

public void setIdParent(Long idParent) {

this.idParent = idParent;

}

public List<ThemeDto> getChildren() {

return children;

}

public void setChildren(List<ThemeDto> children) {

this.children = children;

}

}

Листинг класса TutorDto

package com.rep.core.dto;

import com.rep.db.domain.Tutor;

import java.util.ArrayList;

import java.util.List;

public class TutorDto {

private Long id;

private String name;

private String address;

public static TutorDto of(Tutor tutor) {

TutorDto result = new TutorDto();

result.setId(tutor.getId());
result.setName(tutor.getName() == null ? "" : tutor.getName());

result.setAddress(tutor.getAddress() == null ? "" : tutor.getAddress());

return result;

}

public static List<TutorDto> of(List<Tutor> list) {

List<TutorDto> result = new ArrayList<>();

for (Tutor tutor : list) {

result.add(TutorDto.of(tutor));

}

return result;

}

public TutorDto() {

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

}

ПРИЛОЖЕНИЕ 3

Листинги HTML и CSS документов, скриптов JavaScript

Листинг main.html

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Расписание для репетитора</title>

<link rel="stylesheet" href="../css/bootstrap.css">

<link rel="stylesheet" href="../css/jquery-ui.min.css">

<link rel="stylesheet" href="../css/main.css">

<link rel="import" id="home" href="home.html">

<link rel="import" id="schedule" href="schedule.html">

<link rel="import" id="subjects" href="subjects.html">

<link rel="import" id="journal" href="journal.html">

<link rel="import" id="students" href="students.html">

<link rel="import" id="tutor" href="tutor.html">

</head>

<body>

<script src="../js-libs/jquery.min.js"></script>

<script src="../js-libs/bootstrap.min.js"></script>

<script src="../js-libs/jquery-ui.min.js"></script>

<script src="../js-libs/cookie.js"></script>

<script src="../js/default.js"></script>

<script src="../js/home.js"></script>

<script src="../js/students.js"></script>

<script src="../js/subjects.js"></script>

<script src="../js/schedule.js"></script>

<script src="../js/journal.js"></script>

<header>

<nav class="navbar navbar-default navbar-fixed-top">

<div class="container">

<div class="row">

<div class="inside-nav">

<div id="navbar-main" class="navbar-collapse">

<ul class="nav navbar-nav">

<li id="menu-home" class="active">

<!--main.html-->

<a href="main.html" class="menu-link">

<span class="glyphicon glyphicon-home"></span>

</a>

</li>

<li id="menu-schedule">

<!--schedule.html-->

<a href="#" class="menu-link">Расписание</a>

</li>

<li id="menu-subjects">

<!--subjects.html-->

<a href="#" class="menu-link">Темы занятий</a>

</li>

<li id="menu-journal">

<!--jourmal.html-->

<a href="#" class="menu-link">Журнал</a>

</li>

<li id="menu-students">

<!--students.html-->

<a href="#" class="menu-link">Студенты</a>

</li>

</ul>

<ul class="nav navbar-nav navbar-right">

<li id="menu-sayhi">

<a id="sayhi"

class="menu-link" href="#">Ваш ID на сайте: </a>

</li>

<li id="logout">

<a href="#">Выйти</a>

</li>

</ul>

</div>

</div>

</div>

</div>

</nav>

</header>

<main>

<div class="container">

<div class="row">

<article class="col-lg-12">

<div id="board">

</div>

</article>

</div>

</div>

</main>

</body>

</html>

Листинг home.html

<template>

<div>Домашняя страница с информацией про сайт<br/>

Вы находитесь на сайте "Расписание для репетитора"<br/>

Информация о сайте будет добавлена позже<br/>

<div id="auth-reg" hidden>

<div class="row">

<div class="col-lg-5">

<div class="panel-primary">

<div class="panel-heading">

<h3 class="panel-title">

Авторизация

</h3>

</div>

<div class="panel-body">

<form>

<div class="form-group">

<label for="id_tutor">Введите Ваш ID</label>

<input id="id_tutor"

class="form-control input-lg"

type="number"

placeholder="ID (циферками)">

</div>

<button id="button-enter"

class="btn btn-default btn-lg">Зайти на сайт

</button>

</form>

</div>

</div>

</div>

</div>

</div>

</div>

</template>

Листинг journal.html

<template>

<button id="prev_journal" class="btn btn-primary pull-left">

<i class="glyphicon glyphicon-chevron-left"

aria-hidden="true"></i> Предыдущая страница

</button>

<button id="next_journal"

class="btn btn-primary pull-right">Следующая страница

<i class="glyphicon glyphicon-chevron-right"

aria-hidden="true"></i></button>

<div id="journal-main">

<table id="journal-table"

class="table table-bordered table-striped table-hover">

<tr>

<th>Дата</th>

<th>Студент</th>

<th>Тема занятия</th>

<th>Домашнее задание</th>

<th>Оценка за занятие</th>

<th>Оценка за д/з</th>

<th>Комментарий</th>

</tr>

</table>

</div>

<!--Модальное окно для редактирования записи в журнале-->

<div id="modal_journal" class="modal fade">

<div class="modal-dialog modal-lg">

<div class="modal-content">

<div class="modal-header">

<button type="button"

class="close close_btn"

data-dismiss="modal"

aria-hidden="true">?</button>

<h3 class="modal-title">Редактировать запись</h3>

</div>

<div class="modal-body">

<div class="container-fluid">

<form action="" class="form-horizontal">

<div class="form-group">

<label for="date"

class="col-lg-3 control-label">Дата</label>

<div class="col-lg-9">

<p id="date" class="form-control-static"></p>

</div>

</div>

<div class="form-group">

<label for="student"

class="col-lg-3 control-label">Студент</label>

<div class="col-lg-9">

<p id="student" class="form-control-static"></p>

</div>

</div>

<div class="form-group">

<label for="theme"

class="col-lg-3 control-label">Тема занятия</label>

<div class="col-lg-9">

<select id="theme" class="form-control">

<!--Динамическое добавление option-->

</select>

</div>

</div>

<div class="form-group">

<label for="hometask"

class="col-lg-3 control-label">Домашнее задание

</label>

<div class="col-lg-9">

<textarea id="hometask" class="form-control"></textarea>

</div>

</div>

<div class="form-group">

<label for="lessonMark"

class="col-lg-3 control-label">Оценка за занятие

</label>

<div class="col-lg-9">

<input id="lessonMark" type="text" class="form-control">

</div>

</div>

<div class="form-group">

<label for="hometaskMark"

class="col-lg-3 control-label">Оценка за Д/з</label>

<div class="col-lg-9">

<input id="hometaskMark"

type="text"

class="form-control">

</div>

</div>

<div class="form-group">

<label for="comment"

class="col-lg-3 control-label">Комментарий</label>

<div class="col-lg-9">

<textarea id="comment" class="form-control"></textarea>

</div>

</div>

</form>

</div>

</div>

<div class="modal-footer">

<button id="save_journal_btn"

type="button"

class="btn btn-primary">Сохранить</button>

<button type="button"

class="btn btn-default close_btn">Закрыть</button>

</div>

</div>

</div>

</div>

</template>

Листинг schedule.html

<template>

<button id="prev_schedule" class="btn btn-primary pull-left"><i class="glyphicon glyphicon-chevron-left"

aria-hidden="true"></i> <b>Предыдущая неделя</b>

</button>

<button id="next_schedule" class="btn btn-primary pull-right"><b>Следующая неделя</b> <i

class="glyphicon glyphicon-chevron-right"

aria-hidden="true"></i></button>

<div id="schedule-table">

<table>

<tr>

<th class="first-col-td"></th>

<th class="first-row-th">Понедельник

<div class="event-date"></div>

</th>

<th class="first-row-th">Вторник

<div class="event-date"></div>

</th>

<th class="first-row-th">Среда

<div class="event-date"></div>

</th>

<th class="first-row-th">Четверг

<div class="event-date"></div>

</th>

<th class="first-row-th">Пятница

<div class="event-date"></div>

</th>

<th class="first-row-th">Суббота

<div class="event-date"></div>

</th>

<th class="first-row-th">Воскресенье

<div class="event-date"></div>

</th>

</tr>

<tr>

<td class="first-col-td" rowspan="2">00:00</td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

</tr>

<tr>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

</tr>

<tr>

<td class="first-col-td" rowspan="2">01:00</td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

</tr>

<tr>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

</tr>

//...

<tr>

<td class="first-col-td" rowspan="2">22:00</td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

</tr>

<tr>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

</tr>

<tr>

<td class="first-col-td" rowspan="2">23:00</td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

</tr>

<tr>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

</tr>

</table>

</div>

<!--Модальное окно с детальной информацией о событии-->

<div id="event_detail" class="modal fade">

<div class="modal-dialog modal-lg">

<div class="modal-content">

<div class="modal-header">

<button type="button" class="close close_btn"

data-dismiss="modal" aria-hidden="true">?</button>

<h4 class="modal-title">Информация о событии</h4>

</div>

<div class="modal-body">

<div class="container-fluid">

<!--TODO action?-->

<form action="" class="form-horizontal">

<div class="form-group">

<label for="name"

class="col-lg-3 control-label">Название</label>

<div class="col-lg-9">

<input id="name" type="text" class="form-control">

</div>

</div>

<div class="form-group">

<label for="currentDate"

class="col-lg-3 control-label">Дата</label>

<div class="col-lg-3">

<p id="currentDate" class="form-control-static"></p>

</div>

</div>

<div class="form-group">

<label for="timeStart"

class="col-lg-3 control-label">Время начала

</label>

<div class="col-lg-3">

<input id="timeStart"

type="time"

step="900"

class="form-control">

</div>

<label for="timeEnd"

class="col-lg-3 control-label">Время окончания

</label>

<div class="col-lg-3">

<input id="timeEnd"

type="time"

step="900"

class="form-control">

</div>

</div>

<div class="form-group">

<label for="description"

class="col-lg-3 control-label">Комментарий</label>

<div class="col-lg-9">

<textarea id="description" class="form-control"

placeholder="Описание события"></textarea>

</div>

</div>

<hr noshade>

<div id="for-serial-group" class="form-group no-display">

<div class="col-lg-offset-3 col-lg-3 checkbox">

<label>

<input id="with-serial"

type="checkbox"> Повторяющееся событие

</label>

</div>

</div>

<div id="repeat" class="no-display">

<h4 class="no-margin-top">Повторение события</h4>

<!--Выбор между двумя вариантами-->

<div id="status_group" class="form-group">

<label for="status"

class="col-lg-3 control-label">Повторять</label>

<div class="col-lg-3">

<h4 class="no-margin-top">

<span id="status"

class="label label-primary">Статус</span>

</h4>

</div>

</div>

<div id="repeat_code_group"

class="form-group no-display">

<label for="repeat_code"

class="col-lg-3 control-label">Повторять</label>

<div class="col-lg-3">

<select id="repeat_code" class="form-control">

<option value="DAILY" selected>Каждый день</option>

<option value="WEEKLY">Каждую неделю</option>

<option value="MONTHLY">Каждый месяц</option>

<option value="YEARLY">Каждый год</option>

</select>

</div>

</div>

<div id="repeat_dates">

<div class="form-group">

<label for="dateStart"

class="col-lg-3 control-label">Старт серии

</label>

<div class="col-lg-3">

<input id="dateStart"

type="date"

class="form-control">

</div>

<!--Выбор между двумя вариантами-->

<label for="dateEnd"

class="col-lg-3 control-label">Окончание серии

</label>

<div id="date_end" class="col-lg-3">

<input id="dateEnd"

type="date"

class="form-control">

</div>

<div id="none_date_end" class="col-lg-3 no-display">

<h4 class="no-margin-top">

<span class="label label-info">Бесконечно</span>

</h4>

</div>

</div>

<div id="serial-group" class="form-group">

<div class="col-lg-offset-3 col-lg-3 checkbox">

<label>

<input id="serial"

type="checkbox"> Изменения для серии

</label>

</div>

</div>

</div>

</div>

<hr noshade>

<div id="for-lesson-group" class="form-group no-display">

<div class="col-lg-offset-3 col-lg-3 checkbox">

<label>

<input id="with-lesson"

type="checkbox"> Сделать занятием

</label>

</div>

</div>

<div id="lesson" class="no-display">

<h4 class="no-margin-top">Информация о занятии</h4>

<div class="form-group">

<!--Выбор между двумя вариантами-->

<label for="subject"

class="col-lg-3 control-label">Предмет</label>

<div id="subject-div" class="col-lg-3 no-display">

<p id="subject" class="form-control-static"></p>

</div>

<label for="subject-select" class="sr-only"></label>

<div id="subject-select-div" class="col-lg-3">

<select id="subject-select" class="form-control">

<!--Заполняется из ajax-->

</select>

</div>

<!--Выбор между двумя вариантами-->

<div id="add-to-journal-div" class="col-lg-4">

<button id="add_to_journal_btn"

type="button"

class="btn btn-info btn-block">

Добавить запись в журнал

</button>

</div>

<div id="checkbox-to-journal-div"

class="col-lg-4 checkbox no-display">

<label>

<input id="checkbox-to-journal"

type="checkbox"> Добавить запись в журнал

</label>

</div>

</div>

<div class="form-group">

<!--Выбор между двумя вариантами-->

<label for="student"

class="col-lg-3 control-label">Студент</label>

<div id="student-div" class="col-lg-3 no-display">

<p id="student" class="form-control-static"></p>

</div>

<label for="student-select" class="sr-only"></label>

<div id="student-select-div" class="col-lg-3">

<select id="student-select" class="form-control">

<!--Заполняется из ajax-->

</select>

</div>

</div>

<div class="form-group has-feedback has-feedback-left">

<label for="price"

class="col-lg-3 control-label">Стоимость</label>

<div class="col-lg-3">

<input id="price"

type="number"

step="50"

class="form-control">

<i class="glyphicon glyphicon-ruble

form-control-feedback">

</i>

</div>

</div>

</div>

</form>

</div>

</div>

<div class="modal-footer">

<button id="delete_btn"

type="button"

class="btn btn-danger">Удалить</button>

<button id="save_btn"

type="button"

class="btn btn-primary">Сохранить</button>

<button type="button"

class="btn btn-default close_btn">Закрыть</button>

</div>

</div>

</div>

</div>

</template>

Листинг students.html

<template>

<div class="row">

<div class="col-lg-2">

<button id="open_students"

class="btn btn-primary btn-block">Раскрыть все</button>

<br/>

<button id="close_students"

class="btn btn-primary btn-block">Свернуть все</button>

</div>

<div class="col-lg-2">

<button id="create_student"

class="btn btn-success btn-block">Добавить студента

</button>

</div>

</div>

<br/>

<div id="student-list">

</div>

<!--Модальное окно для добавления нового студента-->

<div id="modal_create_student" class="modal fade">

<div class="modal-dialog modal-lg">

<div class="modal-content">

<div class="modal-header">

<button type="button"

class="close close_btn"

data-dismiss="modal"

aria-hidden="true">?</button>

<h3 class="modal-title">Новый студент</h3>

</div>

<div class="modal-body">

<div class="container-fluid">

<form action="" class="form-horizontal">

<div class="form-group">

<label for="firstName"

class="col-lg-3 control-label">Имя</label>

<div class="col-lg-9">

<input id="firstName" type="text" class="form-control">

</div>

</div>

<div class="form-group">

<label for="lastName"

class="col-lg-3 control-label">Фамилия</label>

<div class="col-lg-9">

<input id="lastName" type="text" class="form-control">

</div>

</div>

<div class="form-group">

<label for="address" class="col-lg-3">Адрес</label>

<div class="col-lg-9">

<input id="address" type="text" class="form-control">

</div>

</div>

<div id="contact_group">

<div class="contact">

<div class="form-group">

<label for="contact_name"

class="col-lg-3">Контакты</label>

<div class="col-lg-3">

<input id="contact_name" type="text"

class="form-control contact-name-inputs

autocomplete"

placeholder="Например, &quot;телефон&quot;">

</div>

<label for="contact_value" class="sr-only"></label>

<div class="col-lg-3">

<input id="contact_value"

type="text"

class="form-control contact-value-inputs">

</div>

<div class="col-lg-1">

<button class="remove_contact btn btn-danger"><i

class="glyphicon glyphicon-remove"></i></button>

</div>

</div>

</div>

</div>

<div class="col-lg-offset-3 col-lg-3">

<button id="add_contact" class="btn btn-primary">

<i class="glyphicon glyphicon-plus"

aria-hidden="true"></i> Добавить контакт

</button>

</div>

</form>

</div>

</div>

<div class="modal-footer">

<button id="save_student_btn"

type="button"

class="btn btn-primary">Сохранить</button>

<button type="button"

class="btn btn-default close_btn">Закрыть</button>

</div>

</div>

</div>

</div>

</template>

Листинг subject.html

<template>

<div class="row">

<div class="col-lg-2">

<button id="expand_all_theme"

class="btn btn-primary btn-block">Раскрыть все</button>

<br/>

<button id="collapse_all_theme"

class="btn btn-primary btn-block">Свернуть все</button>

</div>

<div class="col-lg-2">

<button id="create_subject"

class="btn btn-success btn-block">Добавить дисциплину

</button>

</div>

</div>

<div id="subject-list">

</div>

<!--Модальное окно с детальной информацией о событии-->

<div id="new_subject" class="modal fade">

<div class="modal-dialog modal-lg">

<div class="modal-content">

<div class="modal-header">

<button type="button"

class="close close_btn"

data-dismiss="modal"

aria-hidden="true">?</button>

<h4 class="modal-title">Новая дисциплина</h4>

</div>

<div class="modal-body">

<div class="container-fluid">

<!--TODO action?-->

<form action="" class="form-horizontal">

<div class="form-group">

<label for="name"

class="col-lg-3 control-label">Дисциплина</label>

<div class="col-lg-9">

<input id="name" type="text" class="form-control">

</div>

</div>

</form>

</div>

</div>

<div class="modal-footer">

<button id="save_subject_btn"

type="button"

class="btn btn-primary">Сохранить</button>

<button type="button"

class="btn btn-default close_btn">Закрыть</button>

</div>

</div>

</div>

</div>

</template>

Листинг main.css

body {

padding-top: 70px;

background: url("../images/bgr2.jpg") no-repeat center center fixed;

-webkit-background-size: cover;

-moz-background-size: cover;

-o-background-size: cover;

background-size: cover;

}

navbar-right {

margin-right: auto;

}

/* цвет фона и рамки навигационного меню */

navbar-default {

background-color: rgba(255, 255, 255, 0);

border-color: rgba(255, 255, 255, 0);

}

inside-nav {

background-color: rgb(132, 231, 157);

border: 1px solid rgb(132, 231, 157);

border-radius: 10px;

}

/* Цвет пунктов навигационного меню */

navbar-default .navbar-nav > li > a {

color: #000000;

background-color: rgb(132, 231, 157);

border: 1px solid rgb(132, 231, 157);

border-radius: 10px;

}

/* Цвет пункта меню,

при поднесении к нему курсора мышки или при его нахождении в фокусе */

navbar-default .navbar-nav > li > a:hover,

navbar-default .navbar-nav > li > a:focus {

color: #000000;

background-color: #74c874;

border: 1px solid rgb(132, 231, 157);

border-radius: 10px;

}

/* Цвет и фон активного пункта меню,

а также поднесении к нему курсора мышки или при его нахождении в фокусе */

navbar-default .navbar-nav > .active > a,

navbar-default .navbar-nav > .active > a:hover,

navbar-default .navbar-nav > .active > a:focus {

color: #000000;

background-color: #74c874;

border: 1px solid rgb(132, 231, 157);

border-radius: 10px;

#board {

background-color: #ffffff;

}

/* Курсор для элементов дерева */

tree_element {

cursor: pointer;

}

/* Для вкладки Event*/

td, th {

border: 1px solid #ddd;

-webkit-user-select: none;

}

td {

height: 13px

}

table {

width: 100%;

}

first-row-th {

text-align: center;

width: 14%;

}

first-col-td {

width: auto;

text-align: right;

}

/* Для покраски ячеек таблицы*/

colored {

background-color: rgba(103, 222, 231, 0.39);

}

/*Для всплывающего окна дополнительной информации о событии*/

form-group .control-label {

text-align: left;

}

/*Горизонтальная линия*/

hr {

height: 1px;

background-color: rgb(229, 229, 229);

}

/*Убираем отступ сверху над статусом*/

no-margin-top {

margin-top: 0;

}

no-display {

display: none;

}

/*Убираем значки в списках*/

li {

list-style-type: none;

}

/*Убираем отступы между панелями в списке тем*/

theme-item {

margin-bottom: 0px;

}

/*Убираем отступ у первого списка ul*/

first-theme-ul {

margin-left: 0; /* Отступ слева в браузере IE и Opera */

padding-left: 0; /* Отступ слева в браузере Firefox, Safari, Chrome */

}

/*Магия, чтобы работал автокомплит*/

ui-autocomplete {

position: absolute;

z-index: 99999 !important;

cursor: default;

padding: 0;

margin-top: 2px;

list-style: none;

background-color: #ffffff;

border: 1px solid #ccc;

-webkit-border-radius: 5px;

-moz-border-radius: 5px;

border-radius: 5px;

-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);

-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);

box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);

}

ui-autocomplete > li {

padding: 3px 20px;

}

ui-autocomplete > li.ui-state-focus {

background-color: #DDD;

}

ui-helper-hidden-accessible {

display: none;

}

Листинг default.js

$(document).ready(function () {

show(home);

if (hasCookie()) {

$('#sayhi').append(current);

$(".nav li").on("click", function () {

$(".nav").find(".active").removeClass("active");

$(this).addClass("active");

switch ($(this).attr("id")) {

case "menu-home":

show(home);

break;

case "menu-schedule":

show(schedule);

show_schedule();

break;

case "menu-subjects":

show(subjects);

show_subjects("");

break;

case "menu-journal":

show(journal);

show_journal();

break;

case "menu-students":

show(students);

show_students();

break;

case "menu-sayhi":

show(tutor);

break;

}

});

$('#logout').on('click', function () {

document.cookie = "idTutor=; path=/; date=" +

new Date(0).toUTCString();

disableAllExceptMain();

window.location.href = "../html/main.html";

});

} else {

disableAllExceptMain();

}

});

function show(data) {

var template = data.import.querySelector('template');

var clone = document.importNode(template.content, true);

$("#board").html($(clone));

}

function disableAllExceptMain() {

var nav_li = $(".nav li");

$.each(nav_li, function () {

$(this).addClass("disabled");

});

var menu_home = $("#menu-home");

var li_menu_home = menu_home.parent();

li_menu_home.removeClass("disabled");

li_menu_home.addClass("active");

$(".nav").find(".active").removeClass("active");

menu_home.addClass("active");

nav_li.off("click");

}

function hasCookie() {

current = getCookie("idTutor");

return current !== null && current !== "";

}

Листинг home.js

$(document).ready(function () {

if (!hasCookie())

$("#auth-reg").removeAttr("hidden");

$("#button-enter").on("click", function (e) {

e.preventDefault();

setCookie('idTutor', $('#id_tutor').val(), {path: '/'});

window.location.href = "../html/main.html";

})

});

Листинг journal.js

var limit;

var offset;

function show_journal() {

limit = 10;

offset = 0;

getJournals(limit, offset);

setHandlers();

}

//Получаем и рисуем страницу записей журнала

function getJournals(limit, offset) {

$.ajax({

type: "GET",

datatype: "json",

url: "http://localhost:8080/rest/journal?limit=" + limit +

"&offset=" + offset,

headers: {

'idTutor': getCookie("idTutor")

}

}).then(function (journals, status, response) { draw_journal(journals);

if (journals.length < 10) {

$('#prev_journal').off('click');

}

$('.journal-string').off('click').on('click', function() {

var $this = $(this);

$.ajax({

type: "GET",

datatype: "json",

url: "http://localhost:8080/rest/subject/" +

$this.data('idSubject') + "/theme",

headers: {

'idTutor': getCookie("idTutor")

}

}).then(function (subject) {

$.each(subject, function () {

$('<option />', {

'value': this.id,

'text': this.name

}).appendTo('#theme');

});

$('#theme')

.find('option[value="' + $this.data("idTheme") + '"]')

.prop('selected', true);

$('#date').text($this.find('td:eq(0)').text());

$('#student').text($this.find('td:eq(1)').text());

$('#hometask').val($this.find('td:eq(3)').text());

$('#lessonMark').val($this.find('td:eq(4)').text());

$('#hometaskMark').val($this.find('td:eq(5)').text());

$('#comment').val($this.find('td:eq(6)').text());

var modal = $('#modal_journal');

modal.data("id", $this.data("id"));

modal.modal('show');

});

});

//Закрытие модального окна с очисткой формы по кнопке "Закрыть"

$('.close_btn').off('click').on('click', function() {

$('#modal_journal').modal('hide');

clear_journal_modal();

});

//Сохранение записи журнала и закрытие модального окна

//с очисткой формы по кнопке "Сохранить"

$('#save_journal_btn').off('click').on('click', function() {

var modal = $('#modal_journal');

var theme = modal.find('#theme').find(':selected');

var journal = {

id: modal.data("id"),

theme: {

id: theme.val()

},

hometask: modal.find('#hometask').val(),

lessonMark: modal.find('#lessonMark').val(),

hometaskMark: modal.find('#hometaskMark').val(),

comment: modal.find('#comment').val()

};

updateJournal(journal);

modal.modal('hide');

clear_journal_modal();

});

})

}

//Назначаем обработчики для кнопок "Следующая страница"

//и "Предыдущая страница"

function setHandlers() {

$('#prev_journal').off('click').on('click', function() {

offset += 10;

refresh();

});

$('#next_journal').off('click').on('click', function() {

if (offset >= 10) {

offset -= 10;

refresh();

}

});

}

//Рисуем таблицу журналов

function draw_journal(journals) {

$(journals).each(function(i, journal) {

var tr = $('<tr class="journal-string">' +

'<td>' + journal.date + '</td>' +

'<td>' + journal.studentFirstName + ' ' +

journal.studentLastName + '</td>' +

'<td>' + (journal.themeName === null ? "" :

journal.themeName) + '</td>' +

'<td>' + (journal.homeTask === null ? "" :

journal.homeTask) + '</td>' +

'<td>' + (journal.lessonMark === null ? "" :

journal.lessonMark) + '</td>' +

'<td>' + (journal.hometaskMark === null ? "" :

journal.hometaskMark) + '</td>' +

'<td>' + (journal.comment === null ? "" :

journal.comment) + '</td>' +

'</tr>')

.data("id", journal.id)

.data("idSubject", journal.idSubject)

.data("idTheme", journal.idTheme);

$('#journal-table').append(tr);

})

}

//Функция редактирования записи календаря для занятия

function updateJournal(journal) {

$.ajax({

type: "PUT",

datatype: "json",

contentType: "application/json; charset=utf-8",

processData: false,

url: "http://localhost:8080/rest/journal/" + journal.id,

headers: {

'idTutor': getCookie("idTutor")

},

data: JSON.stringify(journal)

}).then(function (data) {

refresh();

})

}

//Функция очистки полей модального окна

function clear_journal_modal() {

$('#modal_journal').find('option').remove();

$('#date').text("");

$('#student').text("");

$('#hometask').val("");

$('#hometaskMark').val("");

$('#lessonMark').val("");

$('#comment').val("");

}

//Функция обновления данных на странице журнала

function refresh() {

$('#journal-table').find('tr:not(:first)').remove();

getJournals(limit, offset);

setHandlers();

}

Листинг schedule.js

var today = new Date();

var day = getCol(today);

var monday = new Date(today.getTime() - (day - 1) * 24 * 60 * 60 * 1000);

var sunday = new Date(today.getTime() + (7 - day) * 24 * 60 * 60 * 1000);

function show_schedule() {

draw_dates();

draw_events();

painting();

//Обработчики для кнопок "Следующая неделя" и "Предыдущая неделя"

$('#prev_schedule').on('click', function() {

monday = new Date(monday.getTime() - 7 * 24 * 60 * 60 * 1000);

sunday = new Date(sunday.getTime() - 7 * 24 * 60 * 60 * 1000);

$('div').remove('.event');

draw_dates();

draw_events();

});

$('#next_schedule').on('click', function() {

monday = new Date(monday.getTime() + 7 * 24 * 60 * 60 * 1000);

sunday = new Date(sunday.getTime() + 7 * 24 * 60 * 60 * 1000);

$('div').remove('.event');

draw_dates();

draw_events();

})

}

//Отрисовка дат под днями недели

function draw_dates() {

var dayIndex = new Date(monday.getTime());

$('.event-date').each(function () {

this.innerHTML = dayIndex.getDate() + '.' +

(dayIndex.getMonth() + 1);

dayIndex = new Date(dayIndex.getTime() + 24 * 60 * 60 * 1000);

}

)

}

//Форматирование даты к виду "2017-12-25"

function formatDate(date) {

return date.getFullYear() + '-' +

(date.getMonth() + 1) + '-' + date.getDate();

}

//Получение даты из строки вида "2017-12-25"

function getDate(s) {

return new Date(+s.substr(0, 4), +s.substr(5, 2) - 1, +s.substr(8));

}

//Получение номера колонки по дате

function getCol(date) {

var result = date.getDay();

if (result === 0) result = 7;

return result;

}

//Получение даты из номера колонки

function getCurrentDate(col) {

var date = new Date(monday.getTime() +

(col - 1) * 24 * 60 * 60 * 1000);

return date.getFullYear() + "-" + (date.getMonth() + 1) +

"-" + date.getDate();

}

//Получение номера строки по времени в формате "18:59:00"

function getRow(s) {

return (+s.substr(0, 2) + +s.substr(3, 2) / 60) * 2 + 1;

}

function getRowNum(start, end) {

return getRow(end) - getRow(start);

}

//Работает только для текущей таблицы

//(функции соответствуют таблице на 7 дней)

function draw_events() {

var query = 'http://localhost:8080/rest/event/?from=' +

formatDate(monday) +

'&to=' +

formatDate(sunday);

// 2017-06-05&to=2017-06-11';

$.ajax({

type: "GET",

datatype: "json",

url: query,

headers: {

'idTutor': getCookie("idTutor")

}

}).then(function (data) {

$.each(data, function (i, elem) {

var currentDate = getDate(elem.currentDate);

var timeStart = elem.timeStart;

var timeEnd = elem.timeEnd;

var timeDiff = getRowNum(timeStart, timeEnd);

draw_event(getCol(currentDate), getRow(timeStart),

i, timeDiff, elem.id, elem.currentDate);

var ev = $('#event' + i);

ev.append(elem.name);

});

});

}

function draw_event(col, row, i, n, id, currentDate) {

var td = $('td').eq(col);

var tr = $('tr').eq(Math.floor(row));

var div = $('<div></div>', {

id: "event" + i,

class: "event",

data: {

"id": id,

"currentDate": currentDate

}

}).css({

'position': 'absolute',

'background-color': '#F1B6EA',

'top': tr.prop('offsetTop') +

tr.closest('table').prop('offsetTop') +

td.prop('offsetHeight') * (row % 1),

'left': td.prop('offsetLeft') +

td.closest('table').prop('offsetLeft'),

'width': td.prop('offsetWidth'),

'height': td.prop('offsetHeight') * n,

'border': '1px dashed black',

'border-radius': '5px'

}).draggable({

axis: 'y',

containment: 'parent',

distance: 10,

snap: 'td'

}).off('click').on('click', show_detail_event)

.off('nouseup').on('mouseup', clear_td_color);

$("#schedule-table").append(div);

}

//Функция, вызываемая при клике на div.event

function show_detail_event() {

var _this = $(this);

$.ajax({

type: "GET",

datatype: "json",

url: "http://localhost:8080/rest/event/" + _this.data('id'),

headers: {

'idTutor': getCookie("idTutor")

}

}).then(function (event) {

var dialog = $('#event_detail');

dialog.find('#name').val(event.name);

dialog.find('#currentDate').text(_this.data('currentDate'));

dialog.find('#timeStart').val(event.timeStart);

dialog.find('#timeEnd').val(event.timeEnd);

dialog.find('#description').text(event.comment);

dialog.find('#for-serial-group').addClass('no-display');

dialog.find('#repeat').removeClass('no-display');

dialog.find('#repeat').removeAttr('style');

dialog.find('#lesson').removeAttr('style');

dialog.find('#for-lesson-group').removeClass('no-display');

if (event.lesson === null) {

dialog.find('#with-lesson')

.prop('checked', false)

.removeAttr('disabled');

dialog.find('#lesson')

addClass('no-display');

dialog.find('#add-to-journal-div').addClass('no-display');

dialog.find('#checkbox-to-journal-div')

removeClass('no-display');

} else {

dialog.find('#with-lesson')

.prop('checked', true)

.prop('disabled', true);

dialog.find('#lesson')

removeAttr('style')

.removeClass('no-display');

dialog.find('#subject-div').removeClass('no-display');

dialog.find('#subject-select-div').addClass('no-display');

dialog.find('#subject').text(event.lesson.subjectName);

dialog.find('#student-div').removeClass('no-display');

dialog.find('#student-select-div').addClass('no-display');

dialog.find('#student').text(event.lesson.student.firstName +

" " + event.lesson.student.lastName);

dialog.find('#price').val(event.lesson.price);

dialog.find('#add-to-journal-div').removeClass('no-display');

dialog.find('#checkbox-to-journal-div')

.addClass('no-display');

idLesson = event.lesson.id;

date = _this.data('currentDate');

check_journal_exists(idLesson, date);

$('#add_to_journal_btn').off('click').on('click', function() {

$(this).prop('disabled', true);

var journal = {

lesson: {

id: idLesson

},

date: date

};

saveJournal(JSON.stringify(journal));

});

}

//Добавляем описание занятия при клике по checkbox "Занятие"

$('#with-lesson').on('change', function() {

if ($(this).prop('checked')) {

$('#lesson').fadeIn().show();

} else {

$('#lesson').fadeOut(300);

}

});

dialog.find('#repeat_code_group').addClass('no-display');

dialog.find('#status_group').removeClass('no-display');

dialog.find('#serial-group').removeClass('no-display');

var status;

switch (event.repeatCode) {

case 'NEVER':

dialog.find('#repeat').addClass('no-display');

break;

case 'DAILY':

status = 'Каждый день';

dialog.find('#repeat').removeClass('no-display');

break;

case 'WEEKLY':

status = 'Каждую неделю';

dialog.find('#repeat').removeClass('no-display');

break;

case 'MONTHLY':

status = 'Каждый месяц';

dialog.find('#repeat').removeClass('no-display');

break;

case 'YEARLY':

status = 'Каждый год';

dialog.find('#repeat').removeClass('no-display');

break;

}

dialog.find('#status').text(status);

dialog.find('#dateStart').val(event.dateStart);

if (event.dateEnd === null) {

dialog.find('#date_end').addClass('no-display');

dialog.find('#none_date_end').removeClass('no-display');

} else {

dialog.find('#dateEnd').val(event.dateEnd);

}

dialog.modal('show');

//Закрываем модальное окно по кнопке "Закрыть"

$('.close_btn').on('click', function() {

dialog.modal('hide');

})

});

}

//Функция проверки, что запись в журнале уже есть

function check_journal_exists(idLesson, date) {

$.ajax({

type: "GET",

datatype: "json",

url: "http://localhost:8080/rest/journal/idLesson/" +

idLesson + "?date=" + date,

headers: {

'idTutor': getCookie("idTutor")

}

}).then(function (journal, statusText, xhr) {

if (journal !== null) {

$('#add_to_journal_btn').removeAttr('disabled');

} else if (xhr.status === 204) {

$('#add_to_journal_btn').prop('disabled', true);

}

});

}

//Функция создания записи календаря для занятия

function saveJournal(journal) {

$.ajax({

type: "POST",

datatype: "json",

contentType: "application/json; charset=utf-8",

processData: false,

url: "http://localhost:8080/rest/journal",

headers: {

'idTutor': getCookie("idTutor")

},

data: journal

}).then(function (data) {

//TODO ??

})

}

//Стираем выделение цветом всех td

function clear_td_color() {

$('td').each(function() {

$(this).removeClass('colored');

});

}

//Закрашивание td по щелчку и перемещению мыши + создание нового события

function painting() {

var td1;

$('td').not('.first-col-td').on('mousedown', function() {

td1 = $(this);

$(document).on('mousemove', function(event) {

clear_td_color();

paint_by_coord(td1, event.pageX, event.pageY);

}).on('mouseup', function() {

$(document).off('mousemove');

})

}).on('mouseup', function () {

$(document).off('mousemove');

var td2 = $(this);

var row = td1.closest('tr').index();

var col = td1.index() + ((row + 1) % 2);

var row2 = td2.closest('tr').index();

var n = row2 - row + 1;

var currentDate = getCurrentDate(col);

//Рисуем div нового события с id = _new + стираем выделение цветом

draw_event(col, row, "_new", n, currentDate);

clear_td_color();

//Заполнение модального окна данными

var dialog = $('#event_detail');

dialog.find('#name').val("");

dialog.find('#description').val("");

dialog.find('#currentDate').text(currentDate);

dialog.find('#timeStart').val(rowToTimeTop(row));

dialog.find('#timeEnd').val(rowToTimeBot(row2));

//Скрываем блок repeat (по умолчанию событие не повторяющееся)

dialog.find('#for-serial-group').removeClass('no-display');

dialog.find('#with-serial').prop('checked', false);

dialog.find('#repeat').addClass('no-display');

dialog.find('#repeat').removeAttr('style');

//Скрываем блок lesson (по умолчанию событие не является занятием)

dialog.find('#for-lesson-group').removeClass('no-display');

dialog.find('#with-lesson').prop('checked', false);

dialog.find('#with-lesson').removeAttr('disabled');

dialog.find('#lesson').addClass('no-display');

dialog.find('#lesson').removeAttr('style');

dialog.find('#dateStart').val(currentDate);

dialog.find('#date_end').removeClass('no-display');

dialog.find('#none_date_end').addClass('no-display');

dialog.find('#repeat_code_group').removeClass('no-display');


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

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