-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
151 lines (136 loc) · 4.1 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
"use strict";
var btns = document.body.getElementsByTagName("button");
// 0 - отменить, 1 - сохранить, 2 - изменить
var textBlock = document.querySelector(".textblock");
//создаем объект для localStorage
var d = new Date();
var obj = {
id: 0,
text: textBlock.innerHTML,
date: formatDate(d),
};
var log = document.querySelector(".history");
var serialObj = JSON.stringify(obj);
// если длина localStorage < 1, добавляем в него первоначальный текст,
// если больше тогда добавляем все имеющиеся записи в localStorage
if (localStorage.length < 1) {
localStorage.setItem("firstText", serialObj);
} else {
for (var i = 1; i < localStorage.length; i++) {
var addLog = document.createElement("p");
var logdate = JSON.parse(localStorage["text " + i]);
addLog.innerHTML = "text " + i + " - " + logdate.date;
log.appendChild(addLog);
}
}
//создаем обработчик для логов
log.onclick = function (e) {
var index = [].slice.call(this.children).indexOf(e.target);
if (index > 0) {
var post = JSON.parse(localStorage["text " + index]);
textBlock.innerHTML = post.text;
}
};
// код кнопки "изменить"
btns[2].onclick = function () {
textBlock.setAttribute("contenteditable", true);
this.classList.add("hide");
btns[1].classList.remove("hide");
btns[0].classList.remove("hide");
};
//код кнопки "отменить"
btns[0].onclick = function () {
//убирает кнопки и редактируемость
textBlock.setAttribute("contenteditable", false);
this.classList.add("hide");
btns[1].classList.add("hide");
btns[2].classList.remove("hide");
// код для возвращения последней версии из localStorage
var lastBlock = Math.max(localStorage.length) - 1;
let post = JSON.parse(localStorage["text " + lastBlock]);
textBlock.innerHTML = post.text;
};
//код кнопки "сохранить"
btns[1].onclick = function () {
//сохраняет новую версию в localStorage
var length = localStorage.length;
let d = new Date();
for (var i = 0; i <= length; i++) {
obj.id = i;
obj.text = textBlock.innerHTML;
obj.date = formatDate(d);
if (i == length) {
var addLog = document.createElement("p");
log.appendChild(addLog);
addLog.innerHTML = "text " + i + " - " + obj.date;
localStorage["text " + i] = JSON.stringify(obj);
}
}
//убирает кнопки и редактируемость
textBlock.setAttribute("contenteditable", false);
this.classList.add("hide");
btns[0].classList.add("hide");
btns[2].classList.remove("hide");
};
//код для возврата к изначальному тексту
var baseText = document.querySelector(".history p");
baseText.onclick = function () {
var post = JSON.parse(localStorage["firstText"]);
textBlock.innerHTML = post.text;
};
//формат даты
function formatDate(date) {
var getMonthsName = function () {
var months = [
"января",
"февраля",
"марта",
"апреля",
"мая",
"июня",
"июля",
"августа",
"сентября",
"октября",
"ноября",
"декабря",
];
return months[date.getMonth()];
};
var getDaysName = function () {
var days = [
"воскресенье",
"понедельник",
"вторник",
"среда",
"четверг",
"пятница",
"суббота",
];
return days[date.getDay()];
};
function declOfNum(number, titles) {
var cases = [2, 0, 1, 1, 1, 2];
return titles[
number % 100 > 4 && number % 100 < 20
? 2
: cases[number % 10 < 5 ? number % 10 : 5]
];
}
return (
" " +
date.getDate() +
" " +
getMonthsName() +
" " +
date.getFullYear() +
" года, " +
getDaysName() +
", " +
date.getHours() +
":" +
date.getMinutes() +
":" +
date.getSeconds()
);
}