This commit is contained in:
2024-12-04 19:54:59 +03:00
commit 67459900f0
25 changed files with 1161 additions and 0 deletions

0
Pizipus/.gitkeep Normal file
View File

0
Pizipus/icons/.gitkeep Normal file
View File

BIN
Pizipus/icons/icon128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
Pizipus/icons/icon16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 B

BIN
Pizipus/icons/icon19.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

BIN
Pizipus/icons/icon48.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

23
Pizipus/manifest.json Normal file
View File

@@ -0,0 +1,23 @@
{
"name": "Pizipus",
"version": "1.1.0",
"manifest_version": 2,
"description": "Pizipus -- help your a...",
"homepage_url": "https://github.com/AM-EO/izipus",
"icons": {
"16": "icons/icon16.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
},
"browser_action": {
"default_icon": "icons/icon19.png",
"default_title": "browser action demo",
"default_popup": "src/browser_action/popup.html"
},
"permissions": [
"clipboardRead",
"clipboardWrite",
"contextMenus",
"storage"
]
}

0
Pizipus/src/.gitkeep Normal file
View File

View File

View File

@@ -0,0 +1,9 @@
body{
margin: 0;
line-height: 1;
min-width: 300px;
max-width: 3000px;
width: 300px;
font-family: helvetica;
user-select: none;
}

View File

@@ -0,0 +1,385 @@
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="popup.css">
</head>
<body>
<script src="popup.js"></script>
<div class="container">
<style>
.docs {
margin: 16px 0;
color: white;
border: 1px solid #dddddd;
border-radius: 3px;
overflow: hidden;
}
.docs>span {
background: #205081;
display: block;
padding: 6px 10px;
font-size: 9pt;
font-weight: bold;
}
.docs>ul {
margin: 0;
padding: 8px 20px;
}
.docs>ul>li {
margin: 0;
padding: 0;
}
.docs>ul>li>a {
color: #205081;
font-size: 9pt;
text-decoration: none;
}
.docs>ul>li>a:hover {
text-decoration: underline;
}
.btn-container {
border-radius: 3px;
margin: 8px 0;
background: #1186E3;
overflow: hidden;
display: table;
table-layout: fixed;
width: 100%;
}
.btn {
display: inline-block;
margin: 6px;
padding: 6px 20px;
border-radius: 3px;
outline: none;
color: white;
background: #FF5405;
text-decoration: none;
}
.btn.inline {
margin: 0;
padding: 0;
height: 29px;
vertical-align: middle;
border-radius: 0;
display: table-cell;
text-align: center;
font-size: 9pt;
}
.input-container {
border-radius: 3px;
margin: 8px 0;
background: #f5f5f5;
overflow: hidden;
width: 100%;
}
.input-container>input {
height: 38px;
border: none;
padding: 6px 20px;
outline: none;
color: #545454;
background: rgba(0, 0, 0, 0.08);
width: 100%;
}
.input-container>input:hover,
.input-container>input:active {
background: rgba(0, 0, 0, 0.02);
}
/*
* COLORS
*/
.fa-lime {
background: #1186E3;
}
.fa-lime:hover {
background: #1295F8;
}
.fa-lime:active {
background: #0E75C4;
}
.istat {
background: #9e2170;
}
.istat:hover {
background: #db309c;
}
.istat:active {
background: #6a154b;
}
.fa-spam,
.fa-interactive {
background: #213568;
}
.fa-spam:hover,
.fa-interactive:hover {
background: #2D498F;
}
.fa-spam:active,
.fa-interactive:active {
background: #192950;
}
.mnprange {
background: #EB4A06;
}
.mnprange:hover {
background: #FF5405;
}
.mnprange:active {
background: #D14204;
}
.monitoring {
background: #252525;
}
.monitoring:hover {
background: #353434;
}
.monitoring:active {
background: #1A1A1A;
}
</style>
<div id="techb2b-custom-app">
<div class="btn-container">
<a target="_blank" class="btn inline monitoring"
href="https://monitoring-ibs.i-free.ru/index?min_priority=not_classified&acknowledged=unacknowledged&limit=1000&offset=0">Monitoring</a>
</div>
<div class="btn-container">
<a target="_blank" class="btn inline fa-lime" href="https://filteradmin-lime.i-dgtl.ru/">Lime</a>
<!--a target="_blank" class="btn inline fa-interactive"
href="https://filteradmin.i-free.ru/filteradmin/">Interactive</a-->
</div>
<div class="btn-container">
<a target="_blank" class="btn inline istat" href="https://istat2.i-dgtl.ru/">iStat</a>
</div>
<!--div class="input-container mnprange-input">
<input id="msisdn" type="tel" class="msisdn" placeholder="Enter MSISDN"
onkeypress="if(event.keyCode == 13){window.open('https://techb2b:Eg9tei9S@mnprange.i-free.ru/api/v2.1/resolve/'+document.getElementById('msisdn').value,'_blank');}">
</div>
<div class="input-container mnprange-input">
<input id="msid" class="msisdn" placeholder="Enter MSID"
onkeypress="if(event.keyCode == 13){window.open('https://filteradmin-lime.i-dgtl.ru/#/messagesLog/detail/'+document.getElementById('msid').value,'_blank');}">
</div-->
<div class="docs">
<span>Инструменты</span>
<ul>
<li>
<a target="_blank" href="https://grafana.i-dgtl.ru/">Grafana</a>
</li>
<li>
<a target="_blank" href="https://direct-kibana.i-dgtl.ru/">Direct Kibana</a>
</li>
<li>
<a target="_blank" href="https://metrics-insight.i-dgtl.ru/">Metrics Insight</a>
</li>
<li>
<a target="_blank" href="https://gitlab.i-free.com/">GitLab</a>
</li>
<li>
<a target="_blank" href="https://connectorconf-ui.i-dgtl.ru/">Connector Conf UI</a>
</li>
<li>
<a target="_blank" href="https://achtung.i-dgtl.ru/">Achtung</a>
</li>
<li>
<a target="_blank" href="https://oncall.i-dgtl.ru/">OnCall</a>
</li>
<li>
<a target="_blank" href="https://stopword-admin.i-dgtl.ru/">Stopword Admin</a>
</li>
<li>
<a target="_blank" href="https://lps.i-dgtl.ru/">LPS Cleaner</a>
</li>
<li>
<a target="_blank" href="https://mnpranges-int.i-free.ru/">MNP Ranges INT</a>
</li>
<li>
<a target="_blank" href="https://app.testelium.com/">Testelium</a>
</li>
</ul>
<span>Links</span>
<ul>
<li>
<a target="_blank" href="https://docs.i-free.com/pages/viewpage.action?pageId=46367114">Запросы в
шлюзы</a>
</li>
<li>
<a target="_blank" href="https://docs.i-free.com/pages/viewpage.action?pageId=29198123">Коды ошибок</a>
</li>
<li>
<a target="_blank" href="https://docs.i-free.com/pages/viewpage.action?pageId=26217333">График</a>
</li>
<!--li>
<a target="_blank" href="https://docs.i-free.com/pages/viewpage.action?pageId=74123147">Календарь
работ</a>
</li-->
<li>
<a target="_blank"
href="https://jira.i-dgtl.ru/CreateIssueDetails!init.jspa?pid=10000&amp;issuetype=10203&amp;description=%0A%0ABest regards,%0AMonitoring and Technical Support i-Digital&amp;customfield_10304=techsupp@i-free.com&amp;customfield_10305=support@i-dgtl.ru&amp;">Написать
в techsupp</a>
</li>
<li>
<a target="_blank"
href="https://jira.i-dgtl.ru/CreateIssueDetails!init.jspa?pid=10000&amp;issuetype=10203&amp;description=%0AКоллеги, здравствуйте!%0A%0AНаблюдаем разрыв соединения по подключению с systemID=%0A%0AПросьба уточнить, является ли ситуация штатной.%0A%0AСпасибо!%0A%0ABest%20regards,%0AMonitoring%20and%20Technical%20Support%20i-Digital&amp;customfield_10305=support@i-dgtl.ru&amp;summary=Разрыв+соединения">Написать
про разрыв соединения i-Digital</a>
</li>
<li>
<a target="_blank"
href="https://jira.i-dgtl.ru/CreateIssueDetails!init.jspa?pid=11601&issuetype=11800&description=%0AColleagues,%20hello!%0A%0AWe%20observe%20connection%20breakage%20on%20connection%20with%20systemID=%0A%0APlease%20clarify%20if%20this%20is%20a%20standard%20situation.%0A%0AThank%20you!%0A%0ABest%20regards,%0AMonitoring%20and%20Technical%20Support%20Revicom&customfield_10305=support@revicom.ltd&summary=Connection+breakdown">Написать
про разрыв соединения Revicom</a>
</li>
<li>
<a target="_blank"
href="https://jira.i-dgtl.ru/CreateIssueDetails!init.jspa?pid=10000&amp;issuetype=10203&amp;description=%0A%D0%97%D0%B4%D1%80%D0%B0%D0%B2%D1%81%D1%82%D0%B2%D1%83%D0%B9%D1%82%D0%B5,%20%D0%BA%D0%BE%D0%BB%D0%BB%D0%B5%D0%B3%D0%B8.%0A%0A%D0%9D%D0%B0%D1%88%D0%B5%D0%B9%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BE%D0%B9%20%D0%BE%D0%B1%D0%BD%D0%B0%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%BE%20%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%BE%D0%B5%20%D0%BA%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE%20%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B9%20%D0%BD%D0%B0%20%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D1%8E%D1%89%D0%B8%D0%B5%20%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%D0%B0%20%D0%B0%D0%B1%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%BE%D0%B2:%0A%0A%D0%9F%D1%80%D0%BE%D1%81%D0%B8%D0%BC,%20%D0%BF%D0%BE%D0%B6%D0%B0%D0%BB%D1%83%D0%B9%D1%81%D1%82%D0%B0,%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%82%D1%8C%20%D0%B8%20%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B8%D1%82%D1%8C%20%D1%8F%D0%B2%D0%BB%D1%8F%D0%B5%D1%82%D1%81%D1%8F%20%D0%BB%D0%B8%20%D0%B4%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F%20%D1%81%D0%B8%D1%82%D1%83%D0%B0%D1%86%D0%B8%D1%8F%20%D1%88%D1%82%D0%B0%D1%82%D0%BD%D0%BE%D0%B9.%0A%0A%D0%A1%D0%BF%D0%B0%D1%81%D0%B8%D0%B1%D0%BE!%0A%0ABest%20regards,%0AMonitoring%20and%20Technical%20Support%20i-Digital&amp;customfield_10305=support@i-dgtl.ru&amp;summary=%D0%91%D0%BE%D0%BB%D1%8C%D1%88%D0%BE%D0%B5+%D0%BA%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE+%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B9">Большое
количество сообщений</a>
</li>
</ul>
<span>Fastgate</span>
<ul>
<li>
<a target="_blank" href="https://docs.i-free.com/pages/viewpage.action?pageId=60785984">Коды ошибок
FG</a>
</li>
<li>
<a target="_blank" href="https://docs.i-free.com/pages/viewpage.action?pageId=82216773">DetMir</a>
</li>
<li>
<a target="_blank" href="https://docs.i-free.com/pages/viewpage.action?pageId=60792140">OTP</a>
</li>
<li>
<a target="_blank" href="https://docs.i-free.com/pages/viewpage.action?pageId=53018819">Citi</a>
</li>
<li>
<a target="_blank" href="https://docs.i-free.com/pages/viewpage.action?pageId=89260391">РН Банк</a>
</li>
</ul>
<span>Direct</span>
<ul>
<li>
<a target="_blank" href="https://direct.i-dgtl.ru/">i-Digital Direct</a>
</li>
<li>
<a target="_blank" href="https://direct-admin.i-dgtl.ru/">Direct Admin</a>
</li>
<li>
<a target="_blank" href="https://api.docs.direct.i-dgtl.ru/">Direct API Docs</a>
</li>
<li>
<a target="_blank" href="https://docs.i-free.com/pages/viewpage.action?pageId=86540335">Перевод текущих
клиентов</a>
</li>
<li>
<a target="_blank" href="https://docs.i-free.com/pages/viewpage.action?pageId=162922597">Деактивация
уволенного сотрудника</a>
</li>
<li>
<a target="_blank" href="https://docs.i-free.com/pages/viewpage.action?pageId=107577537">Клиент просит
удалить его данные</a>
</li>
<li>
<a target="_blank" href="https://docs.i-free.com/pages/viewpage.action?pageId=89985429">Руководство
саппорта</a>
</li>
</ul>
<span>Другое</span>
<ul>
<li>
<a target="_blank" href="https://www.msisdn.net/">Аналог InfoBip</a>
</li>
<!--li>
<a target="_blank" href="https://www.virustotal.com/gui/home/upload">Проверка ссылок на вирусы</a>
</li-->
<li>
<a target="_blank" href="https://dencode.com/ru/string/">Кодирование строк</a>
</li>
<!--li>
<a target="_blank" href="https://unicode-table.com/ru/2639/">Кодировки символов</a>
</li>
<li>
<a target="_blank" href="https://ipcalc.co/">Калькулятор IP</a>
</li>
<li>
<a target="_blank" href="https://calculat.io/ru/date/count/6--months--before--today">Калькулятор дат</a>
</li>
<li>
<a target="_blank" href="https://www.regexplanet.com/advanced/java/index.html">Регулярки 1</a>
</li>
<li>
<a target="_blank" href="https://regex101.com/">Регулярки 2</a>
</li>
<li>
<a target="_blank"
href="https://www.freeformatter.com/regex-tester.html">Валидаторы/Конвертеры/Форматеры</a>
</li-->
<li>
<a target="_blank" href="https://jsonlint.com/">JSON валидатор</a>
</li>
<li>
<a target="_blank" href="https://dencode.com/ru/string/unicode-escape">JSON Escape/Unescape</a>
</li>
</ul>
</div>
</div>
<!-- <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
-->
</div>
</body>
</html>

View File

5
README.md Normal file
View File

@@ -0,0 +1,5 @@
Установка расширения для шаблона ответов для google браузера :
1) Скачать и распаковать расширение
2) Включить режим разработчика (chrome://extensions/)
3) Загрузить распакованное расширение
4) Прилепить к экрану

0
lzipus/.gitkeep Normal file
View File

0
lzipus/icons/.gitkeep Normal file
View File

BIN
lzipus/icons/icon128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
lzipus/icons/icon16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 B

BIN
lzipus/icons/icon19.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
lzipus/icons/icon48.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

24
lzipus/manifest.json Normal file
View File

@@ -0,0 +1,24 @@
{
"name": "Izipus",
"version": "1.1.0",
"manifest_version": 2,
"description": "Izipus -- help your a...",
"homepage_url": "https://github.com/AM-EO/izipus",
"icons": {
"16": "icons/icon16.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
},
"browser_action": {
"default_icon": "icons/icon19.png",
"default_title": "browser action demo",
"default_popup": "src/browser_action/popup.html"
},
"permissions": [
"clipboardRead",
"clipboardWrite",
"contextMenus",
"storage",
"cookies"
]
}

0
lzipus/src/.gitkeep Normal file
View File

View File

View File

@@ -0,0 +1,126 @@
body {
margin: 0;
min-width: 300px;
max-width: 3000px;
width: 400px;
background: #abcef5; /* Светлый фон */
font-family: Helvetica;
box-sizing: border-box;
}
div.container {
display: flex;
flex-direction: column;
padding: 1px;
}
div.header {
display: flex;
flex-direction: row;
justify-content: center;
padding: 6px;
}
h1 {
padding: 6px;
}
h3 {
padding: 6px;
}
i {
width: 20px;
}
button.template-add,
button.template-edit,
button.template-delete {
margin: 1px;
padding: 7px;
background-color: #abcef5; /* Светлый фон кнопок */
border-color: #abcef5; /* Цвет рамки кнопок */
cursor: pointer; /* Указатель при наведении */
}
div.templates {
display: flex;
flex-direction: column;
min-height: 200px;
}
span.template {
display: flex;
flex-direction: row;
justify-content: space-between;
height: fit-content;
padding: 8px 7px;
border: 2px solid #8844aa; /* Цвет рамки */
border-radius: 10px 100px / 120px;
overflow: hidden;
}
.formochka {
margin-left: 10px;
}
#template-title-input {
margin-bottom: 7px;
}
span.buttons {
display: flex;
align-items: center;
}
span.buttonsLong {
display: flex;
justify-content: center;
}
span.template:hover {
background: #d0e6ff; /* Подсветка при наведении */
}
.hidden {
display: none;
}
.category {
margin-bottom: 10px;
border: solid #8888c6 4px;
border-radius: 1px 10px / 12px;
box-shadow: 10px 5px 5px #8888c6;
}
/* Стили для темной темы */
body.dark-theme {
background: #1a1a1a; /* Темный фон */
color: white; /* Светлый текст */
}
body.dark-theme button.template-add,
body.dark-theme button.template-edit,
body.dark-theme button.template-delete {
background-color: #333; /* Темные кнопки */
border-color: #333; /* Темные рамки */
color: white; /* Светлый текст на кнопках */
}
body.dark-theme span.template {
border-color: #666; /* Темные рамки для шаблонов */
}
body.dark-theme span.template:hover {
background: #444; /* Подсветка при наведении в темной теме */
}
.btn-dark {
background-color: #444;
color: white;
border: none;
}
btn-dark:hover {
background-color: #555;
}

View File

@@ -0,0 +1,261 @@
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="popup.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-4bw+/aepP/YC94hEpVNVgiZdgIC5+VKNBQNGCHeKRQN+PtmoHDEXuppvnDJzQIu9" crossorigin="anonymous">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.2/css/all.min.css" rel="stylesheet" />
</head>
<body>
<div class="container">
<div class="header">
<h1 class="name fs-4 fw-lighter font-monospace">Твои шаблоны</h1>
<button class="template-add btn btn-primary" type="button"><i class="fa-duotone fa-plus"></i></button>
</div>
<div class="templates" id="template-list">
<div class="category">
<h3 class="font-monospace">Промежуточные ответы</h3>
<span class="template">
<span class="template-title font-monospace">Приняли в работу</span>
<span class="buttons">
<span class="btn btn-light" id="inWorkRu">RU</span>
<span class="btn btn-light" id="inWorkEn">ENG</span>
<!-- <button class="template-edit-existed btn"><i class="fa-solid fa-pen-to-square"></i></button> -->
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Начали диалог с ОС</span>
<span class="buttons">
<span class="btn btn-light" id="dialogueRu">RU</span>
<span class="btn btn-light" id="dialogueEn">ENG</span>
<!-- <button class="template-edit-existed btn"><i class="fa-solid fa-pen-to-square"></i></button> -->
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Работаем над запросом</span>
<span class="buttons">
<span id="weworkRu" class="btn btn-light">RU</span>
<span id="weworkEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Ждем ответа от оператора</span>
<span class="buttons">
<span id="wework2Ru" class="btn btn-light">RU</span>
<span id="wework2En" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Всё еще ждем ответа от оператора</span>
<span class="buttons">
<span id="wework3Ru" class="btn btn-light">RU</span>
<span id="wework3En" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Появилась ли информация?</span>
<span class="buttons">
<span id="theyworkRu" class="btn btn-light">RU</span>
<span id="theyworkEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Появился ли ответ?</span>
<span class="buttons">
<span id="theywork2Ru" class="btn btn-light">RU</span>
<span id="theywork2En" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Появились ли новости?</span>
<span class="buttons">
<span id="theywork3Ru" class="btn btn-light">RU</span>
<span id="theywork3En" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Передали ответственной команде</span>
<span class="buttons">
<span id="fwd2treadRU" class="btn btn-light">RU</span>
<span id="fwd2treadEn" class="btn btn-light">ENG</span>
</span>
</span>
</div>
<div class="category">
<h3 class="font-monospace">Запросы партнерам</h3>
<span class="template">
<span class="template-title font-monospace">Запрос: Недоставка</span>
<span class="buttons">
<span id="nonDelRu" class="btn btn-light">RU</span>
<span id="nonDelEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Запрос: Фейк доставка</span>
<span class="buttons">
<span id="fakeRu" class="btn btn-light">RU</span>
<span id="fakeEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Запрос: Задержки</span>
<span class="buttons">
<span id="delayRu" class="btn btn-light">RU</span>
<span id="delayEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Разрыв соединения</span>
<span class="buttons">
<span id="conbreRu" class="btn btn-light">RU</span>
<span id="conbreEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Запрос: Корректность HLR</span>
<span class="buttons">
<span id="HLRRu" class="btn btn-light">RU</span>
<span id="HLREn" class="btn btn-light">ENG</span>
</span>
</span>
</div>
<div class="category">
<h3 class="font-monospace">Ответы клиентам</h3>
<span class="template">
<span class="template-title font-monospace">Не фиксируем на платформе</span>
<span class="buttons">
<span id="fixItRu" class="btn btn-light">RU</span>
<span id="fixItEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Все доставлено</span>
<span class="buttons">
<span id="delivedRu" class="btn btn-light">RU</span>
<span id="delivedEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Проблемы с ТА</span>
<span class="buttons">
<span id="problphRu" class="btn btn-light">RU</span>
<span id="problphEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">501: Не обслуживается</span>
<span class="buttons">
<span id="notservRu" class="btn btn-light">RU</span>
<span id="notservEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">В статусе отправлено</span>
<span class="buttons">
<span id="insentRu" class="btn btn-light">RU</span>
<span id="insentEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">132: Дубликаты</span>
<span class="buttons">
<span id="dubleRu" class="btn btn-light">RU</span>
<span id="dubleEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">508: Недоступен</span>
<span class="buttons">
<span id="unvelbRu" class="btn btn-light">RU</span>
<span id="unvelbEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Корректировка маршрутизации</span>
<span class="buttons">
<span id="corroutRu" class="btn btn-light">RU</span>
<span id="corroutEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Технические неполадки</span>
<span class="buttons">
<span id="tehtroubRu" class="btn btn-light">RU</span>
<span id="tehtroubEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Регистрации сендеров</span>
<span class="buttons">
<span id="senderRu" class="btn btn-light">RU</span>
<span id="senderEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Block list by MSISDN</span>
<span class="buttons">
<span id="blockMsisdnRu" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Общее имя</span>
<span class="buttons">
<span id="commonSenderRu" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Нет ответа</span>
<span class="buttons">
<span id="noResponse" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Провели тестирование</span>
<span class="buttons">
<span id="conductedTesting" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Информация менеджеру</span>
<span class="buttons">
<span id="managerTemplate" class="btn btn-light">RU</span>
</span>
</span>
</div>
<div class="category">
<h3 class="font-monospace">Даофис</h3>
<span class="template">
<span class="template-title font-monospace">Внести номер телефона в аксапту</span>
<span class="buttons">
<span id="daoffice1RU" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Учетка в порядке</span>
<span class="buttons">
<span id="officeRU" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Нет ответа</span>
<span class="buttons">
<span id="notResponseRU" class="btn btn-light">RU</span>
<span id="notResponseEn" class="btn btn-light">ENG</span>
</span>
</span>
</div>
</div>
</div>
</1--div>
<button id="theme-toggle">Сменить тему</button>
<script src="popup.js"></script>
</body>
</html>

View File

@@ -0,0 +1,328 @@
document.addEventListener("DOMContentLoaded", function () {
document.getElementById("inWorkRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nПриняли Ваш запрос в работу. Сообщим по мере поступления информации.")
});
document.getElementById("inWorkEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear customer,\n\nWe are working on your request.")
});
document.getElementById("dialogueRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nУведомляем вас о том, что мы начали диалог с оператором по данному запросу. Мы ожидаем ответа и будем держать вас в курсе любых изменений.")
});
document.getElementById("dialogueEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues.\n\nWe would like to inform you that we have started a dialogue with the operator on this request. We are awaiting a response and will keep you informed of any changes.")
});
document.getElementById("nonDelRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nПросьба уточнить причину недоставки следующих сообщений клиенту:")
});
document.getElementById("nonDelEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\n\nPlease check why the following messages were not delivered:")
});
document.getElementById("fixItRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nМы не фиксируем на нашей платформе ваших СМС-сообщений, просьба предоставить ответ от нашей платформы на ваш запрос отправки. Так же просьба предоставить логи, подтверждающие отправку на нашу платформу, данная информация необходима для дальнейшего анализа вашего запроса.")
});
document.getElementById("fixItEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\n\nWe do not record your SMS messages on our platform, please provide a response from our platform to your request to send. Please also provide logs confirming sending to our platform, this information is necessary for further analysis of your request.")
});
document.getElementById("fakeRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nПросьба уточнить корректность статусов доставки следующих сообщений клиенту. Абонент не получал СМС.")
});
document.getElementById("fakeEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\n\nPlease clarify the correctness of the delivery statuses of the following messages to the client. The subscriber did not receive an SMS.")
});
document.getElementById("weworkRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nУведомляем вас о том, что работы по вашему запросу продолжаются. Как только появится информация, мы вам сообщим.\n\nБлагодарим за понимание и приносим извинения за доставленные неудобства.\n")
});
document.getElementById("weworkEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear Colleagues.\n\nWe notify you that work on your request is ongoing. As soon as information becomes available, we will inform you.\n\nThank you for your understanding and we apologize for the inconvenience caused.\n")
});
document.getElementById("wework2Ru").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nЖдем ответа от оператора. Сообщим, как только появится соответствующая информация. Спасибо!")
});
document.getElementById("wework2En").addEventListener("click", () => {
navigator.clipboard.writeText("Dear Colleagues.\n\nWe are waiting for a response from the operator. We will inform you as soon as we have an update. Thank you!")
});
document.getElementById("wework3Ru").addEventListener("click", () => {
navigator.clipboard.writeText("Здравствуйте!\n\nОтправили повторный запрос оператору по данному поводу.\n\nСпасибо!")
});
document.getElementById("wework3En").addEventListener("click", () => {
navigator.clipboard.writeText("Hello!\n\nWe have sent an additional request to the operator.\n\nThank you!")
});
document.getElementById("theyworkRu").addEventListener("click", () => {
navigator.clipboard.writeText("Здравствуйте, коллеги.\n\nПоявилась ли информация по данному вопросу?\n\nСпасибо.")
});
document.getElementById("theyworkEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\n\nIs there any information on this request?\n\nThank you.")
});
document.getElementById("theywork2Ru").addEventListener("click", () => {
navigator.clipboard.writeText("Добрый день!\n\nПросим вернуться с ответом.\n\nБольшое спасибо!")
});
document.getElementById("theywork2En").addEventListener("click", () => {
navigator.clipboard.writeText("Hello Team!\n\nPlease let us know if there are any updates.\n\nThank you!")
});
document.getElementById("theywork3Ru").addEventListener("click", () => {
navigator.clipboard.writeText("Здравствуйте!\n\nПодскажите, пожалуйста, появились ли новости.\n\nСпасибо!")
});
document.getElementById("theywork3En").addEventListener("click", () => {
navigator.clipboard.writeText("Hello!\n\nPlease kindly advise on issue status.\n\nThank you.")
});
document.getElementById("delivedRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nСообщение успешно прошло через платформу и было отправлено оператору. По информации от оператора, сообщение было своевременно доставлено. В случае, если абонент утверждает, что сообщения не были получены, просьба проверить исправность работы ТА. Возможные рекомендации: перезагрузка телефона, очистка памяти от устаревших сообщений, проверка спам-фильтров и черных списков, обновление ПО.\n\nПри сохранении проблемы, просьба запросить у абонента детализацию. Данная информация потребуется для дальнейшего взаимодействия с оператором.")
});
document.getElementById("delivedEn").addEventListener("click", () => {
navigator.clipboard.writeText("Colleagues, according to the information from the operator, messages were delivered in a timely manner. If the subscriber claims that the messages have not been received, please check that device is working correctly. Possible recommendations: reboot the phone, clear message memory, check spam filters and blacklists, update the software.\n\nIf the problem still persists, please ask the subscriber for details. This information is necessary to continue interaction with the operator.")
});
document.getElementById("problphRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nСообщение успешно прошло через платформу и было отправлено оператору. По информации от оператора, сообщение не было доставлено абоненту по причине сбоя ТА. Возможные рекомендации для абонента: перезагрузка телефона, очистка памяти от устаревших сообщений, проверка спам-фильтров и черных списков, обновление ПО.\n\nПросьба уведомить нас в случае, если ситуация повторится.")
});
document.getElementById("problphEn").addEventListener("click", () => {
navigator.clipboard.writeText("Colleagues, according to the information from the operator, messages were not delivered due to subscribers device failure. Possible recommendations: reboot the phone, clear message memory, check spam filters and blacklists, update the software.\nPlease let us know if the problem persist.")
});
document.getElementById("notservRu").addEventListener("click", () => {
navigator.clipboard.writeText("Здравствуйте, коллеги.\n\nСообщение успешно прошло через платформу и было отправлено оператору. По информации от оператора, сообщение абоненту не было доставлено, т.к. номер телефона не существует или не обслуживается.")
});
document.getElementById("notservEn").addEventListener("click", () => {
navigator.clipboard.writeText("Colleagues\n\nThe message successfully passed through the platform and was sent to the operator. According to the information from the operator, the messages were not delivered to the subscriber because the phone number does not exist or is not serviced.")
});
document.getElementById("insentRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nСообщение успешно прошло через платформу и было отправлено оператору. Сообщения находятся в статусе Отправлено, SMS-центр оператора продолжает осуществлять попытки их доставки.\nНаиболее вероятной причиной задержки в доставке может являться нахождение абонента в зоне неуверенного приема сети, также возможен технический сбой в работе телефона абонента.")
});
document.getElementById("insentEn").addEventListener("click", () => {
navigator.clipboard.writeText("Colleagues,\n\nThe messages are in Sent status, operator's SMS center is continuing delivery attempts. Most likely, delivery delays are caused by subscriber being in the area of uncertain network reception, or a technical failure in the operation of the subscriber's phone is also possible.")
});
document.getElementById("dubleRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nМониторингом были зафиксированы дубликаты сообщений, в связи с чем сработала блокировка. Если в короткий промежуток времени на площадку поступает два одинаковых сообщения, повторное блокируется как дубликат.\nЕсли отправка дубликатов была запланирована, либо номер абонента используется для тестирования подключения, просьба сообщить, мы добавим абонента в белый список. ")
});
document.getElementById("dubleEn").addEventListener("click", () => {
navigator.clipboard.writeText("Colleagues, duplicates were blocked by our monitoring system. If two identical messages are received within a short period of time, the second one is blocked as a duplicate. If sending duplicates was planned, or the subscriber's number is used for testing, please let us know and we will whitelist the subscriber.")
});
document.getElementById("unvelbRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nСообщение успешно прошло через платформу и было отправлено оператору. Сообщения абоненту не были доставлены т.к. ТА абонента был недоступен - выключен или находился в зоне неуверенного приема сигнала.\nРекомендуем абоненту перезагрузить телефон, проверить доступность сети оператора, очистить память телефона от устаревших сообщений.\n")
});
document.getElementById("unvelbEn").addEventListener("click", () => {
navigator.clipboard.writeText("Colleagues,\n\nThe messages were not delivered to the subscriber because the subscriber's phone was unavailable - turned off or was in the zone of uncertain signal reception.\nWe recommend that the subscriber restart the phone, check the availability of the operator's network, and clear the phone's memory of outdated messages.\n")
});
document.getElementById("delayRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nПросьба уточнить текущий статус сообщений и причины задержек:")
});
document.getElementById("delayEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear Colleagues.\n\nPlease clarify current messages status and the reasons for the delays:")
});
document.getElementById("conbreRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nНаблюдаем разрыв соединения. Просьба уточнить, ситуация штатная?")
});
document.getElementById("conbreEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues.\n\nWe observe a connection break. Please clarify whether its a standard situation.")
});
document.getElementById("corroutRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nПо информации от оператора, для абонента были внесены корректировки в таблицы маршрутизации.\n\nПросьба проверить и сообщить в случае повторения ситуации.")
});
document.getElementById("corroutEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\n\nThe adjustments have been made in routing settings.\n\nAs our logs are now showing positive delivery results, we would like to ask you to perform a fresh check on your side and share the results in case if further assistance is required.")
});
document.getElementById("tehtroubRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nПо информации от оператора, сообщения не были доставлены абоненту из-за временных технических неполадок на стороне оператора. На текущий момент доставка сообщений осуществляется в штатном режиме.\nПросьба проверить и сообщить в случае повторения ситуации.")
});
document.getElementById("tehtroubEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\n\nAccording to information we got from the operator, the messages were not delivered to the subscriber due to temporary technical issues on the operator's side. At the moment, messages are being delivered in the regular mode.")
});
document.getElementById("senderRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\nСообщение не было доставлено, так как для имени отправителя ######## требуется регистрация.\nПросьба подать имя на регистрацию в ЛК или обратиться по данному вопросу к Вашему менеджеру.")
});
document.getElementById("senderEn").addEventListener("click", () => {
navigator.clipboard.writeText("Colleagues, the below reported traffic failed to be delivered due to an unregistered Sender ID. Alphanumeric registration is required towards COUNRTY OPERATOR (MCCMNC), and delivery of messages with unregistered Sender IDs is on the best effort basis. To register, please contact your Account Manager.")
});
document.getElementById("notResponseRU").addEventListener("click", () => {
navigator.clipboard.writeText("Здравствуйте!\n\nК сожалению, мы не получили от Вас ответа в течение 20 дней, поэтому запрос будет автоматически закрыт. Вы можете ответить на это письмо, если проблема не решена и требуется поддержка.")
});
document.getElementById("notResponseEn").addEventListener("click", () => {
navigator.clipboard.writeText("Hello!\n\nUnfortunately, we have not received a response from you within 20 days, so the request will be automatically closed. You can reply to this email if the problem has not been resolved and support is required.")
});
document.getElementById("fwd2treadRU").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\nПередали вопрос ответственной команде. Сообщим по мере поступления информации.")
});
document.getElementById("fwd2treadEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\n\nWe have escalated the issue to the responsible team.\nWe will keep you informed as we receive any updates.")
});
document.getElementById("daoffice1RU").addEventListener("click", () => {
navigator.clipboard.writeText("Добрый день!\nДля регистрации в приложении \"КингДом\" необходимо внести Ваш номер телефона в Axapta.\n\nПо данному вопросу, пожалуйста, обратитесь к директору своего ресторана или на электронную почту: kingdom@burgerking.ru\n\nЧерез три часа после внесения номера, Вы сможете войти в сеть по номеру телефона, используя приложение \"КингДом\".")
});
document.getElementById("officeRU").addEventListener("click", () => {
navigator.clipboard.writeText("Добрый день!\n\nМы проверили Вашу учетную запись - все данные корректны.\nПроверочный СМС-код успешно отправлен на Ваш мобильный телефон.\n\nПожалуйста, переустановите приложение \"КингДом\" (удалить\\скачать заново) по ссылкам ниже, чтобы исключить отсутствие свежих обновлений:\n\nAndroid:\n\nhttps://play.google.com/store/apps/details?id=ru.kingdom\n\nIOS:\n\nhttps://apps.apple.com/ru/app/%D0%BA%D0%B8%D0%BD%D0%B3%D0%B4%D0%BE%D0%BC/id1543206272?l=en-GB\n\nЕсли данные действия не помогут, то, пожалуйста, опишите подробнее, на каком моменте у Вас не получается зайти в систему (при наличии ошибки приложите скриншот).")
});
document.getElementById("blockMsisdnRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nДанный номер находится в глобальном ЧС.\nЭто означает, что клиент жаловался на получение СМС и отказался от получения всех СМС, либо были жалобы от данного абонента в УФАС.\nИз глобального ЧС, к сожалению, мы не можем разблокировать по Вашей просьбе, только в случае, если абонент напишет сам о просьбе разблокировать, с пометкой о согласии получения всех сообщений от оператора.\n\nЗаявление пишется в свободной форме, скан необходимо прислать на почту вашему менеджеру. Пример:\nКому: ООО «АйДиджитал»\nГенеральному директору: Баранову А.В.\nПрошу убрать мой номер ____________ из черного списка. Понимаю и соглашаюсь на возможное получение рассылок от других компаний, которые осуществляют рассылки через платформу АйДиджитал.\n\nПодпись и дата.")
});
document.getElementById("commonSenderRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, сообщения были заблокированы согласно правил отправки для каналов с Общим именем. А именно -\n\n----------------------------\n\n в тексте сообщения содержится упоминания международного бренда (рассылки в интересах международных брендов).\n на канале запрещена отправка сообщений, если в качестве сендера используется международный сендер\n на канале запрещена отправка сообщений на латинице\n на канале запрещена отправка сообщений с кодами в тексте которых нет упоминания сервиса от которого идет отправка\n на канале запрещена отправка сообщений в тексте которых содержится ссылка (ссылкой считается - наличие http в URL)\n на канале запрещена отправка сообщений в тексте сообщений которых указаны только цифры\n на канале запрещена отправка сообщений с менее 13 символов в тексте")
});
document.getElementById("noResponse").addEventListener("click", () => {
navigator.clipboard.writeText("Здравствуйте!\nК сожалению, мы не получили от Вас ответа в течение 5 рабочих дней, поэтому запрос будет автоматически закрыт.\nВы можете ответить на это письмо, если проблема не решена и требуется дополнительная помощь.")
});
document.getElementById("conductedTesting").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\nМы провели тестирование данного направления, используя живые номера. Все сообщения были доставлены на устройства правильно и без задержек.\nПросьба провести повторное тестирование со своей стороны и сообщить в случае повторения ситуации.")
});
document.getElementById("HLRRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\nПросьба уточнить причину возврата некорректных HLR статусов на указанные номера:")
});
document.getElementById("HLREn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\nPlease clarify the correctness of HLR statuses for the following subscriber numbers:")
});
document.getElementById("managerTemplate").addEventListener("click", () => {
navigator.clipboard.writeText("Страна: \nОператор: \nmccMnc: \nСендер: \nКлиент: \nSource node: \nDestination node: ")
});
});
function copyToClipboard(text) {
navigator.clipboard.writeText(text)
.then(() => {
console.log('Текст скопирован в буфер обмена');
})
.catch(err => {
console.error('Не удалось скопировать текст: ', err);
});
};
const templatesEl = document.querySelector('.templates');
const addBtn = document.querySelector('.template-add');
const editExisted = document.querySelector('template-edit-existed');
function createTemplate(title, RUText, ENText) {
const templateId = Date.now();
const templateEl = document.createElement('span');
templateEl.setAttribute('data-template-id', templateId);
templateEl.classList.add('template');
templateEl.innerHTML = `
<span id="template-title" class="font-monospace">${title}</span>
<div class="bigFormochka">
<div class="formochka">
<input id="template-title-input" class="hidden form-control-sm"></input>
<textarea id="template-textareaRU" class="hidden form-control-lg border-2" rows="1" cols="30.5">${RUText}</textarea>
<textarea id="template-textareaEN" class="hidden form-control-lg border-2" rows="1" cols="30.5">${ENText}</textarea>
</div>
<span class="buttonsLong">
<span class="btn btn-light" data-ru-text="${RUText}" id="template-ru-text">RU</span>
<span class="btn btn-light" data-en-text="${ENText}" id="template-en-text">ENG</span>
<button class="template-edit btn"><i class="fa-solid fa-pen-to-square"></i></button>
<button class="template-delete btn"><i class="fa-solid fa-trash"></i></button>
</span>
</span>
</div> `
const editBtn = templateEl.querySelector('.template-edit');
const deleteBtn = templateEl.querySelector('.template-delete');
const titleEl = templateEl.querySelector('#template-title');
const textRUEl = templateEl.querySelector('#template-ru-text');
const textENEl = templateEl.querySelector('#template-en-text');
const titleInputEl = templateEl.querySelector('#template-title-input');
const textRUInputEl = templateEl.querySelector('#template-textareaRU');
const textENInputEl = templateEl.querySelector('#template-textareaEN');
editBtn.addEventListener('click', (e) => {
titleEl.classList.toggle('hidden');
textRUEl.classList.toggle('hidden');
textENEl.classList.toggle('hidden');
titleInputEl.classList.toggle('hidden');
textRUInputEl.classList.toggle('hidden');
textENInputEl.classList.toggle('hidden');
});
deleteBtn.addEventListener('click', (e) => {
const templates = JSON.parse(localStorage.getItem('templates')) || [];
const templateIndex = templates.findIndex(template => template.title === titleEl.innerText);
if (templateIndex !== -1) {
templates.splice(templateIndex, 1);
localStorage.setItem('templates', JSON.stringify(templates));
}
templateEl.remove();
});
titleInputEl.addEventListener('change', (e) => {
titleEl.innerText = e.target.value;
navigator.clipboard.writeText(titleEl);
updateTemplateInLocalStorage(title, 'title', e.target.value);
});
textRUInputEl.addEventListener('change', (e) => {
textRUEl.dataset.ruText = e.target.value;
navigator.clipboard.writeText(textRUEl);
updateTemplateInLocalStorage(title, 'RUText', e.target.value);
});
textENInputEl.addEventListener('change', (e) => {
textENEl.dataset.enText = e.target.value;
navigator.clipboard.writeText(textRUEl);
updateTemplateInLocalStorage(title, 'ENText', e.target.value);
});
textRUEl.addEventListener('click', (e) => {
navigator.clipboard.writeText(e.target.dataset.ruText)
.then(() => {
console.log('Текст RU скопирован в буфер обмена');
})
.catch(err => {
console.error('Не удалось скопировать текст RU: ', err);
});
});
textENEl.addEventListener('click', (e) => {
navigator.clipboard.writeText(e.target.dataset.enText)
.then(() => {
console.log('Текст EN скопирован в буфер обмена');
})
.catch(err => {
console.error('Не удалось скопировать текст EN: ', err);
});
});
return templateEl;
};
function saveTemplateToLocalStorage(title, RUText, ENText) {
const template = {
title: title,
RUText: RUText,
ENText: ENText
};
const templates = JSON.parse(localStorage.getItem('templates')) || [];
templates.push(template);
localStorage.setItem('templates', JSON.stringify(templates));
};
function updateTemplateInLocalStorage(title, key, value) {
const templates = JSON.parse(localStorage.getItem('templates')) || [];
const templateIndex = templates.findIndex(template => template.title === title);
if (templateIndex !== -1) {
templates[templateIndex][key] = value;
localStorage.setItem('templates', JSON.stringify(templates));
};
};
addBtn.addEventListener('click', (e) => {
const title = "Title";
const RUText = "RUText";
const ENText = "ENText";
const el = createTemplate(title, RUText, ENText);
templatesEl.appendChild(el);
saveTemplateToLocalStorage(title, RUText, ENText);
});
window.onload = function () {
const templates = JSON.parse(localStorage.getItem('templates')) || [];
templates.forEach(template => {
const el = createTemplate(template.title, template.RUText, template.ENText);
templatesEl.appendChild(el);
});
};
const themeToggle = document.getElementById('theme-toggle');
themeToggle.addEventListener('click', () => {
document.body.classList.toggle('dark-theme');
});
const buttons = document.querySelectorAll('.btn');
// editExisted.addEventListener('click', (e) => {
// textRUEl.innerHTML = `<span onClick="copyToClipboard('${e.target.value}')" class="btn btn-light" id="template-ru-text">RU</span>`
// })