Newer
Older
vmk-demo-bot / admin / dist / index.html
<!DOCTYPE html>
<html lang="ru">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>VMK Bot Admin Panel</title>
	<link href="https://cdn.jsdelivr.net/npm/@coreui/coreui@5.4.0/dist/css/coreui.min.css" rel="stylesheet" integrity="sha384-TjEsBrREQ8e4UQZBv0t+xyJqXlIR9Z0I2S84WzGcxjOpwG3287e0uXc5MqDVOLPh" crossorigin="anonymous">
	<script src="https://cdn.jsdelivr.net/npm/@coreui/coreui@5.4.0/dist/js/coreui.bundle.min.js" integrity="sha384-mvTPoGrYInSYB+3c+wPW3q5fVw8StAVbCfbVjMsgJhNZBnYW2+bHUm/78D8Kj9mY" crossorigin="anonymous"></script>
	<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@mdi/font@7.4.47/css/materialdesignicons.min.css">
	<link rel="stylesheet" type="text/css" href="/css/main.css">
	<script>
		const BACKSERV = "http://kitan-bot.local/adminback/api.php";
		// const BACKSERV = "https://kitanbotadmin.vmk-group.tech/adminback/api.php";
	</script>
	<script src="/js/main.js"></script>
</head>
<body>
	<div class="container">
		<header class="header">
			<nav class="navbar navbar-expand-lg bg-body-tertiary">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Адмін панель</a>
    <button class="navbar-toggler" type="button" data-coreui-toggle="collapse" data-coreui-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="nav nav-pills mb-1 mt-1" id="pills-tab" role="tablist">
        <li class="nav-item" role="presentation">
          <button class="nav-link" id="pills-knbase-tab" data-coreui-toggle="pill" data-coreui-target="#pills-knbase" type="button" role="tab" aria-controls="pills-knbase" aria-selected="true">База знань</button>
        </li>
        <li class="nav-item" role="presentation">
          <button class="nav-link" id="pills-log-tab" data-coreui-toggle="pill" data-coreui-target="#pills-log" type="button" role="tab" aria-controls="pills-log" aria-selected="true">Журнал</button>
        </li>
        <li class="nav-item" role="presentation">
          <button class="nav-link" id="pills-bots-tab" data-coreui-toggle="pill" data-coreui-target="#pills-bots" type="button" role="tab" aria-controls="pills-bots" aria-selected="false">Керування ботами</button>
        </li>
        <li class="nav-item" role="presentation">
          <button class="nav-link" id="pills-analitics-tab" data-coreui-toggle="pill" data-coreui-target="#pills-analitics" type="button" role="tab" aria-controls="pills-analitics" aria-selected="false">Аналітика</button>
        </li>
        <li class="nav-item" role="presentation">
          <button class="nav-link" id="pills-sms-tab" data-coreui-toggle="pill" data-coreui-target="#pills-sms" type="button" role="tab" aria-controls="pills-sms" aria-selected="false" disabled>Розсилки</button>
        </li>
      </ul>
    </div>
  </div>
</nav>	
		</header>
		<div class="wrap">
			<div class="tab-content mb-5 mt-5" id="pills-tabContent">
			  <div class="tab-pane fade" id="pills-knbase" role="tabpanel" aria-labelledby="pills-knbase-tab" tabindex="0">
			  	<div class="modal fade" id="knbaseEntryForm" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Новий запис</h5>
        <button type="button" class="btn-close" data-coreui-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        
      <form action="new_entry" class="add-new-entry">
        <div class="form">
  <div class="mb-1">
	Оберіть тип запису
</div>
<select class="form-select form-select-sm mb-3 knbase">
  <option value="catalog">Фізичний товар</option>
  <option value="cources">Навчання</option>
  <option value="promo">Промо/акції</option>
  <option value="other">Інше</option>
</select>
  <div class="mb-3">
    <div class="bots-multi">
  <div class="form-check form-switch">
    <input class="form-check-input" type="checkbox" role="switch" id="bot-mediceuticals" name="bot-mediceuticals">
    <label class="form-check-label" for="bot-mediceuticals">Mediceuticals</label>
  </div>

  <div class="form-check form-switch">
    <input class="form-check-input" type="checkbox" role="switch" id="bot-kitangroup" name="bot-kitangroup">
    <label class="form-check-label" for="bot-kitangroup">Kitan Group</label>
  </div>

  <div class="form-check form-switch">
    <input class="form-check-input" type="checkbox" role="switch" id="bot-hbloom" name="bot-hbloom">
    <label class="form-check-label" for="bot-hbloom">HBloom</label>
  </div>

  <div class="form-check form-switch">
    <input class="form-check-input" type="checkbox" role="switch" id="bot-nubea" name="bot-nubea">
    <label class="form-check-label" for="bot-nubea">Nubea</label>
  </div>

  <div class="form-check form-switch">
    <input class="form-check-input" type="checkbox" role="switch" id="bot-bosley" name="bot-bosley">
    <label class="form-check-label" for="bot-bosley">BOSLEY</label>
  </div>
</div>
  </div>
  <div class="mb-4">
    <label for="">Заголовок</label>
    <input type="text" name="title" class="form-control form-control-sm" placeholder="Заголовок" required>
  </div>
  <div class="mb-3">
    <label for="exampleFormControlTextarea1" class="form-label">Повний опис запису</label>
    <textarea class="form-control" name="content" id="exampleFormControlTextarea1" rows="6" required></textarea>
  </div>
  <div class="mb-3">
    <label for="link-on-entry-page" class="form-label">Посилання на сторінку запису</label>
    <input type="url" name="hlink" class="form-control form-control-sm" id="link-on-entry-page" placeholder="https://">
  </div>
  <div class="mb-3">
    <label for="price-of-entry" class="form-label">Ціна</label>
    <input type="text" name="price" class="form-control form-control-sm" id="price-of-entry" placeholder="0.00 грн">
  </div>
</div>
      </form>

      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-primary submit-form">Створити</button>
        <button type="button" class="btn btn-secondary reset-form" data-coreui-dismiss="modal">Відмінити</button>
      </div>
    </div>
  </div>
</div>

<script>
  document.addEventListener("DOMContentLoaded", e => {
    const knbaseEntryForm = document.getElementById("knbaseEntryForm");
    const form = knbaseEntryForm.querySelector(".add-new-entry");
    const modal = new coreui.Modal(knbaseEntryForm);

    form.validityChecking = function(e){
      return validityChecking(this);
    }

    form.submitting = function(e){
      e.preventDefault();

      const data = {};
      data["type"] = form.querySelector("select.knbase").value;
      data["include_to"] = getSwitchersVal(form.querySelector(".bots-multi"));

      data["title"] = form.querySelector('[name="title"]').value;
      data["content"] = form.querySelector('[name="content"]').value;
      data["hlink"] = form.querySelector('[name="hlink"]').value;
      data["price"] = form.querySelector('[name="price"]').value;

      if(!this.validityChecking()) {
        return;
      }

      doAction("knbase.new_entry", data, resp => {
        document.querySelector("table.entries").loadDataFromServer();
      });

      document.activeElement.blur();
      modal.hide();
      form.reset();
    }

    form.addEventListener("submit", e => {
      form.submitting(e);
    });

    knbaseEntryForm.querySelector(".submit-form").addEventListener("click", e => {
      form.submitting(e);
    });

    knbaseEntryForm.querySelector(".reset-form").addEventListener("click", e => {
      document.activeElement.blur();
      form.reset();
    });
  });
</script>
<div class="modal fade" id="knbaseEditEntryForm" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
	<div class="modal-dialog">
		<div class="modal-content">
			<div class="modal-header">
				<h5 class="modal-title" id="exampleModalLabel">Редагування запису</h5>
				<button type="button" class="btn-close" data-coreui-dismiss="modal" aria-label="Close"></button>
			</div>
			<div class="modal-body">
				<form action="update_entry" class="edit-entry">
					<input type="hidden" name="id" value="">
					<div class="form">
  <div class="mb-1">
	Оберіть тип запису
</div>
<select class="form-select form-select-sm mb-3 knbase">
  <option value="catalog">Фізичний товар</option>
  <option value="cources">Навчання</option>
  <option value="promo">Промо/акції</option>
  <option value="other">Інше</option>
</select>
  <div class="mb-3">
    <div class="bots-multi">
  <div class="form-check form-switch">
    <input class="form-check-input" type="checkbox" role="switch" id="bot-mediceuticals" name="bot-mediceuticals">
    <label class="form-check-label" for="bot-mediceuticals">Mediceuticals</label>
  </div>

  <div class="form-check form-switch">
    <input class="form-check-input" type="checkbox" role="switch" id="bot-kitangroup" name="bot-kitangroup">
    <label class="form-check-label" for="bot-kitangroup">Kitan Group</label>
  </div>

  <div class="form-check form-switch">
    <input class="form-check-input" type="checkbox" role="switch" id="bot-hbloom" name="bot-hbloom">
    <label class="form-check-label" for="bot-hbloom">HBloom</label>
  </div>

  <div class="form-check form-switch">
    <input class="form-check-input" type="checkbox" role="switch" id="bot-nubea" name="bot-nubea">
    <label class="form-check-label" for="bot-nubea">Nubea</label>
  </div>

  <div class="form-check form-switch">
    <input class="form-check-input" type="checkbox" role="switch" id="bot-bosley" name="bot-bosley">
    <label class="form-check-label" for="bot-bosley">BOSLEY</label>
  </div>
</div>
  </div>
  <div class="mb-4">
    <label for="">Заголовок</label>
    <input type="text" name="title" class="form-control form-control-sm" placeholder="Заголовок" required>
  </div>
  <div class="mb-3">
    <label for="exampleFormControlTextarea1" class="form-label">Повний опис запису</label>
    <textarea class="form-control" name="content" id="exampleFormControlTextarea1" rows="6" required></textarea>
  </div>
  <div class="mb-3">
    <label for="link-on-entry-page" class="form-label">Посилання на сторінку запису</label>
    <input type="url" name="hlink" class="form-control form-control-sm" id="link-on-entry-page" placeholder="https://">
  </div>
  <div class="mb-3">
    <label for="price-of-entry" class="form-label">Ціна</label>
    <input type="text" name="price" class="form-control form-control-sm" id="price-of-entry" placeholder="0.00 грн">
  </div>
</div>
				</form>

			</div>
			<div class="modal-footer">
				<button type="button" class="btn btn-primary submit-form">Зберегти</button>
				<button type="button" class="btn btn-secondary reset-form" data-coreui-dismiss="modal">Відмінити зміни</button>
				<button type="button" class="btn btn-outline-danger" data-coreui-toggle="modal" data-coreui-target="#knbaseRemoveEntryForm"><span class="mdi mdi-delete-outline"></span> Видалити</button>
			</div>
		</div>
	</div>
</div>


<div class="modal fade" id="knbaseRemoveEntryForm" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
	<div class="modal-dialog">
		<div class="modal-content">
			<div class="modal-header">
				<h5 class="modal-title" id="exampleModalLabel">Підтвердіть видалення запису</h5>
				<button type="button" class="btn-close" data-coreui-dismiss="modal" aria-label="Close"></button>
			</div>
			<div class="modal-body">
				<button type="button" class="btn btn-danger apply-remove-entry" data-coreui-dismiss="modal"><span class="mdi mdi-delete-outline"></span> Так, видалити</button>
				<button type="button" class="btn btn-primary cancel" data-coreui-toggle="modal" data-coreui-target="#knbaseEditEntryForm">Відмінити дію</button>
			</div>
		</div>
	</div>
</div>

<script>
	document.addEventListener("DOMContentLoaded", e => {
		const editForm = document.getElementById("knbaseEditEntryForm");
		editForm.viewEntryData = function(entry){
			console.log("viewEntryData", entry);
			const form = this.querySelector("form.edit-entry");
			form.reset();
			
			form.querySelector(`[name="id"]`).value = entry.id;
			
			const selectType = form.querySelector("select.knbase");
			selectType.value = entry.type;

			form.querySelector(`[name="title"]`).value = entry.title;
			form.querySelector(`[name="content"]`).value = entry.content;
			form.querySelector(`[name="hlink"]`).value = entry.hlink;
			form.querySelector(`[name="price"]`).value = entry.price;

			let includes = entry.include_to.split(",");
			for(let i of includes) {
				form.querySelector(`[name="${i}"]`).checked = true;
			}
		}


		const form = editForm.querySelector(".edit-entry");
		const modal = new coreui.Modal(editForm);

		form.validityChecking = function(e){
      return validityChecking(this);
    }

		form.submitting = function(e){
			e.preventDefault();

			const data = {};
			data["type"] = form.querySelector("select.knbase").value;
			data["include_to"] = getSwitchersVal(form.querySelector(".bots-multi"));

			data["id"] = form.querySelector('[name="id"]').value;
			data["title"] = form.querySelector('[name="title"]').value;
			data["content"] = form.querySelector('[name="content"]').value;
			data["hlink"] = form.querySelector('[name="hlink"]').value;
			data["price"] = form.querySelector('[name="price"]').value;

			if(!this.validityChecking()) {
        return;
      }
			
			doAction("knbase.update_entry", data, resp => {
				document.querySelector("table.entries").loadDataFromServer();
			});

			document.activeElement.blur();
			modal.hide();
			form.reset();
		}

		form.addEventListener("submit", e => {
			form.submitting(e);
		});

		editForm.querySelector(".submit-form").addEventListener("click", e => {
			form.submitting(e);
		});

		editForm.querySelector(".reset-form").addEventListener("click", e => {
			document.activeElement.blur();
			form.reset();
		});

		document.querySelector("#knbaseRemoveEntryForm .apply-remove-entry").addEventListener("click", e => {
			const id = form.querySelector('[name="id"]').value;
			doAction("knbase.remove_entry", {
				"id": id
			}, resp => {
				document.querySelector("table.entries").loadDataFromServer();
				
			});
		});
	});
</script>

<div class="container">
	<div class="row">
		<div class="col select-knbase-cat">
			<div class="mb-1">
	Оберіть тип запису
</div>
<select class="form-select form-select-sm mb-3 knbase">
  <option value="catalog">Фізичний товар</option>
  <option value="cources">Навчання</option>
  <option value="promo">Промо/акції</option>
  <option value="other">Інше</option>
</select>
		</div>

		<div class="col knbase-search">
			<div class="mb-1">
  Пошук
</div>
<div class="input-group input-group-sm mb-3">
  <span class="input-group-text" id="inputGroup-sizing-sm"><span class="mdi mdi-magnify"></span></span>
  <input type="text" class="form-control" aria-label="Sizing example input" aria-describedby="inputGroup-sizing-sm" placeholder="Введіть запит">
</div>
		</div> 

		<div class="col">
			<div class="mt-1">
				Новий запис
			</div>
			<button type="button" class="btn btn-primary btn-sm" data-coreui-toggle="modal" data-coreui-target="#knbaseEntryForm"><span class="mdi mdi-plus"></span> Створити</button>
		</div>
	</div>
	<div class="row">
		<div class="col">
			<table class="table table-striped-columns entries">
				<thead>
					<tr>
						<th>Заголовок</th>
						<th>Тип запису</th>
						<th>Додано</th>
						<th>Редагувати</th>
					</tr>
				</thead>
				<tbody>
				</tbody>
			</table>
		</div>
	</div>
</div>		

<script>
	document.addEventListener("DOMContentLoaded", e => {
		const table = document.querySelector("table.entries");
		const tbody = table.querySelector("tbody");
		const knbaseSelector = document.querySelector("#pills-knbase .select-knbase-cat .form-select.knbase");
		const knbaseSearch = document.querySelector("#pills-knbase .knbase-search input");

		table.rendering = function(resp) {
			this.querySelector("tbody").innerHTML = "";

			for(let item of resp.entries) {
				const create_at = formattedTimestamp(item.create_at);
				const entry_type = entryTypeToView(item.type);
				const keywords = [`id${item.id}`, item.title, item.content, create_at, item.include_to, item.hlink].join(" ").toLowerCase().replaceAll('"', "");

				let entry = `
					<td>${item.title}</td>
					<td>${entry_type}</td>
					<td>${create_at}</td>
					<td>
						<button type="button" class="btn btn-link btn-sm" data-coreui-toggle="modal" data-coreui-target="#knbaseEditEntryForm" data-entry-id="${item.id}">Редагувати</button>
					</td>
				`;

				let row = document.createElement("tr");
				row.dataset.keywords = keywords;
				row.innerHTML = entry;
				row.querySelector("button[data-entry-id]").addEventListener("click", e => {
					const entryId = e.currentTarget.dataset.entryId;

					doAction("knbase.entry", {"entry_id": entryId}, resp => {
						document.getElementById("knbaseEditEntryForm").viewEntryData(resp.entry);
					});
				});

				this.querySelector("tbody").appendChild(row);
			}
		};

		table.loadDataFromServer = function(){
			doAction("knbase.entries", {
				"type": knbaseSelector.value
			}, resp => {
				table.rendering(resp);
				knbaseSearch.value = "";
			});
		}

		knbaseSelector.addEventListener("change", e => {
			table.loadDataFromServer();
		});

		knbaseSearch.addEventListener("input", e => {
			let query = e.currentTarget.value.trim().toLowerCase().split(/\s+/);
  		const regex = new RegExp(query.map(w => w.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join(".*?"), "i");

			const rows = tbody.querySelectorAll("tr");
			for(let i in rows) {
				if(!regex.test(rows[i].dataset.keywords)) {
					rows[i].style.display = "none";
				} else {
					rows[i].removeAttribute("style");
				}
			}
		});

		table.loadDataFromServer();
	});
</script>
			  </div>
			  <div class="tab-pane fade" id="pills-log" role="tabpanel" aria-labelledby="pills-log-tab" tabindex="0">
			  	<div class="container">
	<div class="row">
		<div class="col site-select">
			<div class="mb-1">
	Оберіть сайт
</div>
<select class="form-select form-select-sm mb-3 botname">
  <option value="*">Всі</option>
  <option value="mediceuticals">Mediceuticals</option>
  <option value="kitan-group">Kitan Group</option>
  <option value="hbloom">HBloom</option>
  <option value="nubea">Nubea</option>
  <option value="bosleymd">BOSLEY</option>
</select>
		</div>

		<div class="col time-period">
			<div class="mb-1">
	Оберіть період
</div>
<select class="form-select form-select-sm mb-3 pediod">
  <option value="1" selected>За останні 24 години</option>
  <option value="7">За останні 7 днів</option>
  <option value="30">За останні 30 днів</option>
  <option value="365">За останні 365 днів</option>
  <option value="0">За увесь час</option>
</select>
		</div>
	</div>
	<div class="row">
		<div class="col">
			<table class="table table-striped-columns">
			  <thead>
			  	<tr>
			  		<th>Дата</th>
			  		<th>Тип запиту</th>
			  		<th>Оцінка</th>
			  		<th>Переглянути</th>
			  	</tr>
			  </thead>
			  <tbody>
			  	<tr>
			  		<td>10.05.2025 12:24</td>
			  		<td>Партнерство</td>
			  		<td><span class="mdi mdi-thumb-up"></span></td>
			  		<td>
			  			<a href="#">Переглянути</a>
			  		</td>
			  	</tr>
			  	<tr>
			  		<td>10.05.2025 12:20</td>
			  		<td>Партнерство</td>
			  		<td><span class="mdi mdi-thumb-down-outline"></span></td>
			  		<td>
			  			<a href="#">Переглянути</a>
			  		</td>
			  	</tr>
			  	<tr>
			  		<td>10.05.2025 12:15</td>
			  		<td>Партнерство</td>
			  		<td><span class="mdi mdi-thumb-up"></span></td>
			  		<td>
			  			<a href="#">Переглянути</a>
			  		</td>
			  	</tr>
			  	<tr>
			  		<td>10.05.2025 12:24</td>
			  		<td>Партнерство</td>
			  		<td><span class="mdi mdi-thumb-up"></span></td>
			  		<td>
			  			<a href="#">Переглянути</a>
			  		</td>
			  	</tr>
			  	<tr>
			  		<td>10.05.2025 12:20</td>
			  		<td>Партнерство</td>
			  		<td><span class="mdi mdi-thumb-down-outline"></span></td>
			  		<td>
			  			<a href="#">Переглянути</a>
			  		</td>
			  	</tr>
			  	<tr>
			  		<td>10.05.2025 12:15</td>
			  		<td>Партнерство</td>
			  		<td><span class="mdi mdi-thumb-up"></span></td>
			  		<td>
			  			<a href="#">Переглянути</a>
			  		</td>
			  	</tr>
			  </tbody>
			</table>
			<div class="paginator-container mt-3 mb-3">
				<nav>
	<ul class="pagination pagination-sm">
	</ul>
</nav>
			</div>
		</div>
	</div>
</div>		

<script>
	document.addEventListener("DOMContentLoaded", e => {
		const table = document.querySelector("#pills-log .table");
		const tbody = table.querySelector("tbody");
		const siteSelector = document.querySelector("#pills-log .site-select select");
		const timePeriod = document.querySelector("#pills-log .time-period select");

		table.rendering = function(resp){
			this.querySelector("tbody").innerHTML = "";

			for(let item of resp.logs) {
				const create_at = formattedTimestamp(item.create_at);

				let rating = "";
				if(item.rating == -1) {
					rating = `<span class="mdi mdi-thumb-down-outline"></span>`;
				} else if(item.rating == 1) {
					rating = `<span class="mdi mdi-thumb-up"></span>`;
				}

				const dialogUrl = `${BACKSERV}?action=logs.dialog&chat_id=${item.chat_id}`;

				let entry = `
					<td>${create_at}</td>
					<td>${item.auto_type}</td>
					<td>${rating}</td>
					<td>
						<a href="${dialogUrl}" class="btn btn-link btn-sm" target="_blank">Переглянути</a>
					</td>
				`;

				let row = document.createElement("tr");
				row.innerHTML = entry;

				this.querySelector("tbody").appendChild(row);
			}
		}

		table.loadDataFromServer = function() {
			let pagenum = document.querySelector("#pills-log .paginator-container [data-goto-pagenum]")?.dataset.gotoPagenum;
			pagenum = (typeof pagenum == "undefined") ? 1 : pagenum;

			doAction("logs.list", {
				"site": siteSelector.value,
				"period": timePeriod.value,
				"pagenum": pagenum
			}, resp => {
				table.rendering(resp);
				if(typeof resp.paginator != "undefined") {
					paginator_handler(
						document.querySelector("#pills-log .paginator-container"), 
						resp.paginator, 
						table.loadDataFromServer
					);
				}
			});
		}

		siteSelector.addEventListener("change", e => {
			table.loadDataFromServer();
		});

		timePeriod.addEventListener("change", e => {
			table.loadDataFromServer();
		});

		table.loadDataFromServer();

	});
</script>
			  </div>
			  <div class="tab-pane fade" id="pills-bots" role="tabpanel" aria-labelledby="pills-bots-tab" tabindex="0">
			  	<div class="container">
	<table class="table table-striped-columns">
	  <thead>
	  	<tr>
	  		<th>Назва</th>
	  		<th>Відображення на сайті</th>
	  		<th>Направляти до оператора</th>
	  	</tr>
	  </thead>
	  <tbody>
	  	<tr>
	  		<td>Mediceuticals</td>
	  		<td>
	  			<div class="form-check form-switch form-switch-xl">
					  <input class="form-check-input" type="checkbox" id="mediceuticals-enable" checked>
					  <label class="form-check-label" for="mediceuticals-enable">Увімкнути</label>
					</div>
	  		</td>
	  		<td>
	  			<div class="form-check form-switch form-switch-xl">
					  <input class="form-check-input" type="checkbox" id="mediceuticals-forced">
					  <label class="form-check-label" for="mediceuticals-forced">Форсувати</label>
					</div>
	  		</td>
	  	</tr>
	  	<tr>
	  		<td>HBloom</td>
	  		<td>
	  			<div class="form-check form-switch form-switch-xl">
					  <input class="form-check-input" type="checkbox" id="hbloom-enable" checked>
					  <label class="form-check-label" for="hbloom-enable">Увімкнути</label>
					</div>
	  		</td>
	  		<td>
	  			<div class="form-check form-switch form-switch-xl">
					  <input class="form-check-input" type="checkbox" id="hbloom-forced">
					  <label class="form-check-label" for="hbloom-forced">Форсувати</label>
					</div>
	  		</td>
	  	</tr>
	  	<tr>
	  		<td>Kitan Group</td>
	  		<td>
	  			<div class="form-check form-switch form-switch-xl">
					  <input class="form-check-input" type="checkbox" id="kitan-group-enable" checked>
					  <label class="form-check-label" for="kitan-group-enable">Увімкнути</label>
					</div>
	  		</td>
	  		<td>
	  			<div class="form-check form-switch form-switch-xl">
					  <input class="form-check-input" type="checkbox" id="kitan-group-forced" checked>
					  <label class="form-check-label" for="kitan-group-forced">Форсувати</label>
					</div>
	  		</td>
	  	</tr>
	  	<tr>
	  		<td>Nubea</td>
	  		<td>
	  			<div class="form-check form-switch form-switch-xl">
					  <input class="form-check-input" type="checkbox" id="nubea-enable" checked>
					  <label class="form-check-label" for="nubea-enable">Увімкнути</label>
					</div>
	  		</td>
	  		<td>
	  			<div class="form-check form-switch form-switch-xl">
					  <input class="form-check-input" type="checkbox" id="nubea-forced">
					  <label class="form-check-label" for="nubea-forced">Форсувати</label>
					</div>
	  		</td>
	  	</tr>
	  	<tr>
	  		<td>BOSLEY</td>
	  		<td>
	  			<div class="form-check form-switch form-switch-xl">
					  <input class="form-check-input" type="checkbox" id="bosley-enable">
					  <label class="form-check-label" for="bosley-enable">Увімкнути</label>
					</div>
	  		</td>
	  		<td>
	  			<div class="form-check form-switch form-switch-xl">
					  <input class="form-check-input" type="checkbox" id="bosley-forced">
					  <label class="form-check-label" for="bosley-forced">Форсувати</label>
					</div>
	  		</td>
	  	</tr>
	  </tbody>
	</table>
</div>		
			  </div>
			  <div class="tab-pane fade" id="pills-analitics" role="tabpanel" aria-labelledby="pills-analitics-tab" tabindex="0">
			  	<div class="container">
	<div class="row">
		<div class="col site-select">
			<div class="mb-1">
	Оберіть сайт
</div>
<select class="form-select form-select-sm mb-3 botname">
  <option value="*">Всі</option>
  <option value="mediceuticals">Mediceuticals</option>
  <option value="kitan-group">Kitan Group</option>
  <option value="hbloom">HBloom</option>
  <option value="nubea">Nubea</option>
  <option value="bosleymd">BOSLEY</option>
</select>
		</div>

		<div class="col time-period">
			<div class="mb-1">
	Оберіть період
</div>
<select class="form-select form-select-sm mb-3 pediod">
  <option value="1" selected>За останні 24 години</option>
  <option value="7">За останні 7 днів</option>
  <option value="30">За останні 30 днів</option>
  <option value="365">За останні 365 днів</option>
  <option value="0">За увесь час</option>
</select>
		</div> 
	</div>
	<div class="row">
		<div class="col">
			<table class="table table-striped-columns">
			  <tbody>
			  	<tr>
			  		<th>Сайт</th>
			  		<td>Mediceuticals</td>
			  	</tr>
			  	<tr>
			  		<th>Кількість діалогів</th>
			  		<td><strong>28</strong></td>
			  	</tr>
			  	<tr>
			  		<th>Кількість переадресацій</th>
			  		<td><strong>4</strong> (14%)</td>
			  	</tr>
			  	<tr>
			  		<th>Середня оцінка</th>
			  		<td>
			  			<strong>7.5</strong>
							<span class="mdi mdi-star"></span>
							(<span class="mdi mdi-thumb-up"></span> 8 <span class="mdi mdi-thumb-down-outline"></span> 4)
						</td>
			  	</tr>
			  </tbody>
			</table>
		</div>
	</div>
</div>	

<script>
	document.addEventListener("DOMContentLoaded", e => {
		const table = document.querySelector("#pills-analitics .table");
		const tbody = table.querySelector("tbody");
		const siteSelector = document.querySelector("#pills-analitics .site-select select");
		const timePeriod = document.querySelector("#pills-analitics .time-period select");

		table.rendering = function(resp){
			this.querySelector("tbody").innerHTML = "";

			let entry = `
				<tr>
		  		<th>Сайт</th>
		  		<td>${resp.site}</td>
		  	</tr>
		  	<tr>
		  		<th>Кількість діалогів</th>
		  		<td><strong>${resp.total_dialogs}</strong></td>
		  	</tr>
		  	<tr>
		  		<th>Кількість переадресацій</th>
		  		<td><strong>?</strong> (??%)</td>
		  	</tr>
		  	<tr>
		  		<th>Середня оцінка</th>
		  		<td>
		  			<strong>${resp.final_rating}</strong>
						<span class="mdi mdi-star"></span>
						(<span class="mdi mdi-thumb-up"></span> ${resp.total_likes} <span class="mdi mdi-thumb-down-outline"></span> ${resp.total_dislikes})
					</td>
		  	</tr>
			`;

			this.querySelector("tbody").innerHTML = entry;
		}

		table.loadDataFromServer = function() {
			doAction("analitics.get_by_site", {
				"site": siteSelector.value,
				"period": timePeriod.value
			}, resp => {
				table.rendering(resp);
			});
		}

		siteSelector.addEventListener("change", e => {
			table.loadDataFromServer();
		});

		timePeriod.addEventListener("change", e => {
			table.loadDataFromServer();
		});

		table.loadDataFromServer();

	});
</script>
			  </div>
			  <div class="tab-pane fade" id="pills-sms" role="tabpanel" aria-labelledby="pills-sms-tab" tabindex="0">
			  	SMS
			  </div>
			</div>
		</div>
		<footer class="footer">
			Designed by VMK Group &copy;2025
		</footer>
	</div>
</body>
</html>