File size: 9,448 Bytes
4f10948 89c2bb0 4f10948 89c2bb0 4f10948 27648bc 3eeb6eb be80925 d059411 9722b56 502be49 af80dca 502be49 af80dca 89c2bb0 af80dca 502be49 773d8b4 502be49 1b9bb85 ce428db 1b9bb85 773d8b4 271f63a 9722b56 3eeb6eb 9cc7451 3eeb6eb 89c2bb0 3eeb6eb 008804b 89c2bb0 502be49 89c2bb0 502be49 89c2bb0 502be49 89c2bb0 502be49 89c2bb0 502be49 89c2bb0 502be49 89c2bb0 502be49 89c2bb0 502be49 89c2bb0 502be49 89c2bb0 502be49 89c2bb0 9722b56 89c2bb0 9722b56 89c2bb0 1b9bb85 91549a2 89c2bb0 91549a2 89c2bb0 91549a2 89c2bb0 91549a2 4f10948 |
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 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
<!DOCTYPE html>
<html>
<head>
<title>GetCurse - WhatsCRM</title>
<link href="https://unpkg.com/tabulator-tables@4.9.3/dist/css/tabulator.min.css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.9.3/dist/js/tabulator.min.js"></script>
</head>
<body>
<div id="header">
<h1>GetCurse - WhatsCRM</h1>
</div>
<div>
<select id="filter-field">
<option></option>
<option value="id">Номер в списке</option>
<option value="name">Имя</option>
<option value="phone">Телефон</option>
<option value="email">Email</option>
<option value="curator">Куратор</option>
<option value="shop_st">Статус покупки</option>
<option value="ad_url">Ссылка на пользователя в GC</option>
<option value="vk_id">Ссылка на VK</option>
<option value="chat_id">Ссылка на Tg</option>
<option value="ws_st">Статус WhatsApp</option>
<option value="ws_stop">Статус подписки</option>
<option value="web_st">Вебинары</option>
<option value="fin_prog">Прогрес по воронке</option>
<option value="pr1">pr1</option>
<option value="pr2">pr2</option>
<option value="pr3">pr3</option>
<option value="pr4">Канал трафика</option>
<option value="pr5">Дата</option>
<option value="key_pr">Ключ PR</option>
<option value="canal">Канал</option>
<option value="data_t">Дата</option>
</select>
<select id="filter-type">
<option value="=">=</option>
<option value="<"><</option>
<option value="<="><=</option>
<option value=">">></option>
<option value=">=">>=</option>
<option value="!=">!=</option>
<option value="like">like</option>
</select>
<input id="filter-value" type="text" placeholder="Значение фильтра">
<button id="filter-clear">Очистить фильтр</button>
<button id="download-json">Рассылка по выбранным</button>
</div>
<div id="example-table"></div>
<script>
document.addEventListener('DOMContentLoaded', function() {
fetch('/data_gc_tab_out?api_sys=fasSd345D')
.then(response => response.json())
.then(data => {
var linkFormatter = function(cell, formatterParams, onRendered) {
var curator = cell.getValue();
var curatorLink = cell.getData().curator_link;
return `<a href="${curatorLink}" target="_blank">${curator}</a>`;
};
var table = new Tabulator("#example-table", {
data: data,
layout: "fitColumns",
pagination: "local",
paginationSize: 50,
columns: [
{title: "Номер в списке", field: "id"},
{title: "Имя", field: "name"},
{title: "Телефон", field: "phone"},
{title: "Email", field: "email"},
{title: "Куратор", field: "curator", formatter: linkFormatter},
{title: "Статус покупки", field: "shop_st", formatter: function(cell, formatterParams, onRendered) {
var status = cell.getValue();
var color;
switch (status) {
case 'green': color = 'green'; break;
case 'red': color = 'red'; break;
case 'yellow': color = 'yellow'; break;
default: color = 'gray';
}
return `<div style="width: 20px; height: 20px; background-color: ${color};"></div>`;
}},
{title: "Ссылка на пользователя в GC", field: "ad_url", formatter: function(cell, formatterParams, onRendered) {
var ad_url = cell.getValue();
return `<a href="${ad_url}" target="_blank">${ad_url}</a>`;
}},
{title: "Ссылка на VK", field: "vk_id", formatter: function(cell, formatterParams, onRendered) {
var vk_id = cell.getValue();
return `<a href="https://vk.com/id${vk_id}" target="_blank">${vk_id}</a>`;
}},
{title: "Ссылка на Tg", field: "chat_id", formatter: function(cell, formatterParams, onRendered) {
var chatId = cell.getValue();
if (chatId.startsWith('@')) {
chatId = chatId.substring(1);
}
return `<a href="https://t.me/${chatId}" target="_blank">${chatId}</a>`;
}},
{title: "Ссылка на WhatsApp", field: "phone", formatter: function(cell, formatterParams, onRendered) {
var phone = cell.getValue();
return `<a href="https://web.whatsapp.com/send?phone=${phone}" target="_blank">${phone}</a>`;
}},
{title: "Статус WhatsApp", field: "ws_st"},
{title: "Статус подписки", field: "ws_stop"},
{title: "Вебинары", field: "web_st", formatter: "star", formatterParams: {stars: 7}, hozAlign: "center", width: 120},
{title: "Прогрес по воронке", field: "fin_prog", formatter: "progress", formatterParams: {color: ["#00dd00", "orange", "rgb(255,0,0)"]}, sorter: "number", width: 100},
{title: "Город", field: "b_city"},
{title: "Финансы", field: "b_fin"},
{title: "Бан", field: "b_ban"},
{title: "Игнорирование", field: "b_ign"},
{title: "Баннеры", field: "b_baners"},
{title: "Кнопки", field: "b_butt"},
{title: "Сообщения", field: "b_mess"},
{title: "pr1", field: "pr1"},
{title: "pr2", field: "pr2"},
{title: "pr3", field: "pr3"},
{title: "pr4", field: "pr4"},
{title: "pr5", field: "pr5"},
{title: "Канал трафика", field: "canal"},
{title: "Дата", field: "data_t"},
],
});
document.getElementById("filter-clear").addEventListener("click", function() {
document.getElementById("filter-field").value = "";
document.getElementById("filter-type").value = "=";
document.getElementById("filter-value").value = "";
table.clearFilter();
});
function updateFilter() {
var field = document.getElementById("filter-field").value;
var type = document.getElementById("filter-type").value;
var value = document.getElementById("filter-value").value;
if (field) {
table.setFilter(field, type, value);
}
}
document.getElementById("filter-field").addEventListener("change", updateFilter);
document.getElementById("filter-type").addEventListener("change", updateFilter);
document.getElementById("filter-value").addEventListener("keyup", updateFilter);
document.getElementById("download-json").addEventListener("click", function() {
var selectedData = table.getSelectedData();
var jsonString = JSON.stringify(selectedData);
var blob = new Blob([jsonString], {type: "application/json"});
var url = URL.createObjectURL(blob);
var a = document.createElement("a");
a.href = url;
a.download = "selectedData.json";
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
});
})
.catch(error => {
console.error('Error fetching data:', error);
});
});
</script>
</body>
</html> |