DmitrMakeev commited on
Commit
606423d
1 Parent(s): 9b7de56

Update data_gc_tab.html

Browse files
Files changed (1) hide show
  1. data_gc_tab.html +318 -412
data_gc_tab.html CHANGED
@@ -5,423 +5,329 @@
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>WhatsCRM - Автопилот + Tilda + Бизон 365 + GetCurse</title>
7
 
8
-
9
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
10
- <script src="https://unpkg.com/@vkontakte/vk-bridge/dist/browser.min.js"></script>
11
- <script type="text/javascript" src="https://vk.com/js/api/openapi.js?169"></script>
12
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.min.css">
13
- <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
14
-
15
-
16
-
17
-
18
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.min.css">
19
- <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
- <link href="https://unpkg.com/[email protected]/dist/css/tabulator.min.css" rel="stylesheet">
30
- <script type="text/javascript" src="https://unpkg.com/[email protected]/dist/js/tabulator.min.js"></script>
31
-
32
-
33
-
34
- <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
35
  <style>
36
- body {
37
- font-family: Arial, sans-serif;
38
- text-align: center;
39
- background-color: #f0f0f0;
40
- margin: 0;
41
- padding: 0;
42
- }
43
-
44
- h1 {
45
- background-color: #4CAF50;
46
- color: white;
47
- padding: 20px;
48
- margin: 0;
49
- border-bottom: 2px solid #388E3C;
50
- font-size: 28px;
51
- text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
52
- }
53
-
54
- button, #filter-clear, #download-json, #take-for-yourself {
55
- color: white;
56
- background-color: #4CAF50;
57
- border: none;
58
- cursor: pointer;
59
- padding: 10px 20px;
60
- font-size: 16px;
61
- border-radius: 5px;
62
- margin: 5px;
63
- transition: background-color 0.3s ease;
64
- }
65
-
66
- button:hover, #filter-clear:hover, #download-json:hover, #take-for-yourself:hover {
67
- background-color: #388E3C;
68
- }
69
-
70
- #filter-field, #filter-type, #filter-value, #filter-field2, #filter-value2 {
71
- padding: 10px;
72
- font-size: 16px;
73
- margin: 5px;
74
- border-radius: 5px;
75
- border: 1px solid #ccc;
76
- background-color: #f0f0f0;
77
- transition: border-color 0.3s ease, box-shadow 0.3s ease;
78
- }
79
-
80
- #filter-field:focus, #filter-type:focus, #filter-value:focus, #filter-field2:focus, #filter-value2:focus {
81
- border-color: #4CAF50;
82
- box-shadow: 0 0 5px rgba(76, 175, 80, 0.5);
83
- }
84
-
85
- #filter-field option, #filter-type option, #filter-field2 option {
86
- background-color: #f0f0f0;
87
- color: #333;
88
- }
89
-
90
- #filter-field:hover, #filter-type:hover, #filter-value:hover, #filter-field2:hover, #filter-value2:hover {
91
- border-color: #4CAF50;
92
- }
93
-
94
- #mediaContainer {
95
- margin-top: 20px;
96
- display: flex;
97
- justify-content: center;
98
- align-items: center;
99
- flex-direction: column;
100
- max-width: 100%;
101
- height: auto;
102
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
103
- border-radius: 10px;
104
- padding: 20px;
105
- background-color: white;
106
- }
107
-
108
- #mediaContainer img, #mediaContainer video {
109
- max-width: 100%;
110
- height: auto;
111
- object-fit: contain;
112
- border-radius: 10px;
113
- }
114
-
115
- #imageUrl {
116
- margin-top: 20px;
117
- font-size: 16px;
118
- color: #333;
119
- cursor: pointer;
120
- text-decoration: underline;
121
- transition: color 0.3s ease;
122
- }
123
-
124
- #imageUrl:hover {
125
- color: #4CAF50;
126
- }
127
-
128
- #progressBarContainer {
129
- width: 80%;
130
- margin: 20px auto;
131
- background-color: #ddd;
132
- border-radius: 13px;
133
- padding: 3px;
134
- box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);
135
- }
136
-
137
- #progressBar {
138
- width: 0%;
139
- height: 20px;
140
- background-color: #4CAF50;
141
- border-radius: 10px;
142
- text-align: center;
143
- line-height: 20px;
144
- color: white;
145
- transition: width 0.3s ease;
146
- }
147
-
148
- .swal-button-custom {
149
- background-color: #4CAF50;
150
- font-size: 16px;
151
- padding: 10px 20px;
152
- }
153
-
154
- .swal-title-custom {
155
- font-size: 24px;
156
- color: #333;
157
- }
158
-
159
- .swal-content-custom {
160
- font-size: 16px;
161
- color: #666;
162
- }
163
-
164
- </style>
165
  </head>
166
-
167
  <body>
168
- <div id="header">
169
  <h1>WhatsCRM - Автопилот + Tilda + Бизон 365 + GetCurse</h1>
170
- </div>
171
- <div>
172
- <select id="filter-field">
173
- <option></option>
174
- <option value="id">Номер в списке</option>
175
- <option value="name">Имя</option>
176
- <option value="phone">WhatsApp</option>
177
- <option value="email">Email</option>
178
- <option value="b_mess">Реплики</option>
179
- <option value="curator">Куратор</option>
180
- <option value="shop_st">Статус покупки</option>
181
- <option value="ad_url">Ссылка на пользователя в GC</option>
182
- <option value="vk_id">Ссылка на VK</option>
183
- <option value="chat_id">Ссылка на Tg</option>
184
- <option value="ws_stop">Стутус подписки</option>
185
- <option value="web_st">Вебинары</option>
186
- <option value="fin_prog">Прогрес по воронке</option>
187
- <option value="pr1">pr1</option>
188
- <option value="pr2">pr2</option>
189
- <option value="pr3">pr3</option>
190
- <option value="pr4">Канал трафика</option>
191
- <option value="pr5">Дата</option>
192
- <option value="key_pr">Ключ PR</option>
193
- <option value="canal">Канал</option>
194
- <option value="data_t">Дата</option>
195
- </select>
196
-
197
- <select id="filter-type">
198
- <option value="=">=</option>
199
- <option value="<"><</option>
200
- <option value="<="><=</option>
201
- <option value=">">></option>
202
- <option value=">=">>=</option>
203
- <option value="!=">!=</option>
204
- <option value="like">like</option>
205
- </select>
206
-
207
- <input id="filter-value" type="text" placeholder="Значение фильтра">
208
-
209
- <select id="filter-field2">
210
- <option></option>
211
- <option value="id">Номер в списке</option>
212
- <option value="name">Имя</option>
213
- <option value="phone">WhatsApp</option>
214
- <option value="email">Email</option>
215
- <option value="b_mess">Реплики</option>
216
- <option value="curator">Куратор</option>
217
- <option value="shop_st">Статус покупки</option>
218
- <option value="ad_url">Ссылка на пользователя в GC</option>
219
- <option value="vk_id">Ссылка на VK</option>
220
- <option value="chat_id">Ссылка на Tg</option>
221
- <option value="ws_stop">Стутус подписки</option>
222
- <option value="web_st">Вебинары</option>
223
- <option value="fin_prog">Прогрес по воронке</option>
224
- <option value="pr1">pr1</option>
225
- <option value="pr2">pr2</option>
226
- <option value="pr3">pr3</option>
227
- <option value="pr4">Канал трафика</option>
228
- <option value="pr5">Дата</option>
229
- <option value="key_pr">Ключ PR</option>
230
- <option value="canal">Канал</option>
231
- <option value="data_t">Дата</option>
232
- </select>
233
-
234
- <input id="filter-value2" type="text" placeholder="Значение фильтра 2">
235
-
236
- <button id="filter-clear">Очистить фильтр</button>
237
-
238
- <button id="download-json">Рассылка по выбранным</button>
239
- <button id="take-for-yourself">Взять себе</button> <!-- Добавлена вторая кнопка -->
240
- </div>
241
- <div id="example-table"></div>
242
-
243
- <script>
244
- vkBridge.send('VKWebAppInit');
245
- document.addEventListener('DOMContentLoaded', function() {
246
- fetch('https://irdelsol-psy.hf.space/data_gc_tab_out?api_sys=fasSd345D')
247
- .then(response => response.json())
248
- .then(data => {
249
- console.log('Data received:', data); // Логирование данных
250
- // Переворачиваем массив данных
251
- data.reverse();
252
- var linkFormatter = function(cell, formatterParams, onRendered) {
253
- var curator = cell.getValue();
254
- var curatorLink = cell.getData().curator_link;
255
- return `<a href="${curatorLink}" target="_blank">${curator}</a>`;
256
- };
257
- var table = new Tabulator("#example-table", {
258
- data: data, // set table data
259
- layout: "fitColumns", // fit columns to width of table
260
- pagination: "local", // enable local pagination
261
- paginationSize: 50, // number of rows per page
262
- selectable: true, // enable row selection
263
- columns: [
264
- {title:"Номер в списке", field:"id"},
265
- {title:"Имя", field:"name", width:100},
266
-
267
-
268
- {title:"WhatsApp", field:"phone", formatter: function(cell, formatterParams, onRendered) {
269
- var phone = cell.getValue();
270
- var ws_stop = cell.getData().ws_stop;
271
- var ws_st = cell.getData().ws_st;
272
- var imageUrl1 = "https://i.ibb.co/YBvwFR6/whatsapp-2.png"; // Замените на URL первой картинки
273
- var imageUrl2 = "https://i.ibb.co/LZx71cM/1.png"; // Замените на URL второй картинки
274
- var imageUrl3 = "https://i.ibb.co/Cvn3QsK/whatsapp-3.png"; // Замените на URL второй картинки
275
- var link = `<a href="https://web.whatsapp.com/send?phone=${phone}" target="_blank">`;
276
- // Проверка условий
277
- if (ws_stop !== "1" && ws_st === "1") {
278
- console.log("Первая переменная не равна единице, вторая равна единице");
279
- return link + `<img src="${imageUrl2}" alt="WhatsApp" style="width: 98px; height: 14px;">`;
280
-
281
- } else if (ws_stop === "1" && ws_st === "1") {
282
- console.log("Обе переменные равны единице");
283
- return link + `<img src="${imageUrl3}" alt="WhatsApp" style="width: 98px; height: 14px;">`;
284
-
285
- } else {
286
- console.log("Остальные случаи");
287
- return link + `<img src="${imageUrl1}" alt="WhatsApp" style="width: 98px; height: 14px;">`;
288
- }
289
- }},
290
-
291
-
292
- {title:"Город", field:"b_city", width:95},
293
- {title:"Email", field:"email", width:95},
294
- {title:"Реплики", field:"b_mess", width:95, cellClick:function(e, cell){
295
- var data = cell.getData();
296
- Swal.fire({
297
- title: 'Детали пользователя',
298
- html: `
299
- <strong>Имя:</strong> ${data.name}<br>
300
- <strong>WhatsApp:</strong> <a href="https://web.whatsapp.com/send?phone=${data.phone}" target="_blank">${data.phone}</a><br>
301
- <strong>Реплики:</strong> ${data.b_mess}`,
302
- icon: 'success',
303
- confirmButtonText: 'Закрыть',
304
- confirmButtonColor: '#4CAF50',
305
- customClass: {
306
- confirmButton: 'button is-success',
307
- title: 'title-custom',
308
- content: 'content-custom'}});}},
309
-
310
- {title:"Куратор", field:"curator", formatter: linkFormatter},
311
- {title:"Статус покупки", field:"shop_st", formatter: function(cell, formatterParams, onRendered) {
312
- var status = cell.getValue();
313
- var color;
314
- switch (status) {
315
- case 'green':
316
- color = 'green';
317
- break;
318
- case 'red':
319
- color = 'red';
320
- break;
321
- case 'yellow':
322
- color = 'yellow';
323
- break;
324
- default:
325
- color = 'gray';
326
- }
327
- return `<div style="width: 20px; height: 20px; background-color: ${color};"></div>`;
328
- }},
329
- {title:"Ссылка на пользователя в GC", field:"ad_url", formatter: function(cell, formatterParams, onRendered) {
330
- var ad_url = cell.getValue();
331
- return `<a href="${ad_url}" target="_blank">${ad_url}</a>`;
332
- }},
333
- {title:"Ссылка на VK", field:"vk_id", formatter: function(cell, formatterParams, onRendered) {
334
- var vk_id = cell.getValue();
335
- return `<a href="https://vk.com/id${vk_id}" target="_blank">${vk_id}</a>`;
336
- }},
337
- {title:"Ссылка на Tg", field:"chat_id", formatter: function(cell, formatterParams, onRendered) {
338
- var chatId = cell.getValue();
339
- if (chatId.startsWith('@')) {
340
- chatId = chatId.substring(1); // Удаление символа @ в начале
341
- }
342
- return `<a href="https://t.me/${chatId}" target="_blank">${chatId}</a>`;
343
- }},
344
-
345
- {title:"Вебинары-присутствовал", field:"web_st", formatter:"star", formatterParams:{stars:7}, hozAlign:"center", width:70},
346
- {title:"Вебинары-досмотрел до конца", field:"b_fin", formatter:function(cell, formatterParams, onRendered){
347
- var value = cell.getValue();
348
- var icon;
349
- if (value === 'True') {
350
- icon = ' <img src="https://i.ibb.co/9sqNhYz/4-2.png" width="98" height="14" />'; // Иконка для активного статуса
351
- } else {
352
- icon = ''; // Пустая строка для неактивного статуса или если значение не определено
353
- }
354
- return icon;
355
- }},
356
-
357
- {title:"Прогрес по воронке", field:"fin_prog", formatter:"progress", formatterParams:{color:["#ff0000", "orange", "#00dd00"]}, sorter:"number", width:100},
358
- {title:"pr1", field:"pr1"},
359
- {title:"pr2", field:"pr2"},
360
- {title:"pr3", field:"pr3"},
361
- {title:"Канал трафика", field:"pr4"},
362
- {title:"Дата", field:"pr5"},
363
- {title:"Ключ PR", field:"key_pr"},
364
- {title:"Канал", field:"canal"},
365
- {title:"Дата", field:"data_t", width:150}
366
- ],
367
- });
368
-
369
-
370
- var fieldEl = document.getElementById("filter-field");
371
- var typeEl = document.getElementById("filter-type");
372
- var valueEl = document.getElementById("filter-value");
373
- var fieldEl2 = document.getElementById("filter-field2");
374
- var valueEl2 = document.getElementById("filter-value2");
375
-
376
- function updateFilter() {
377
- var filterVal1 = fieldEl.value;
378
- var typeVal1 = typeEl.value;
379
- var valueVal1 = valueEl.value;
380
-
381
- var filterVal2 = fieldEl2.value;
382
- var valueVal2 = valueEl2.value;
383
-
384
- if (filterVal1 && filterVal2) {
385
- table.setFilter([
386
- { field: filterVal1, type: typeVal1, value: valueVal1 },
387
- { field: filterVal2, type: "=", value: valueVal2 }
388
- ]);
389
  }
390
- }
391
-
392
- document.getElementById("filter-field").addEventListener("change", updateFilter);
393
- document.getElementById("filter-type").addEventListener("change", updateFilter);
394
- document.getElementById("filter-value").addEventListener("keyup", updateFilter);
395
- document.getElementById("filter-field2").addEventListener("change", updateFilter);
396
- document.getElementById("filter-value2").addEventListener("keyup", updateFilter);
397
-
398
- document.getElementById("filter-clear").addEventListener("click", function() {
399
- fieldEl.value = "";
400
- typeEl.value = "=";
401
- valueEl.value = "";
402
- fieldEl2.value = "";
403
- valueEl2.value = "";
404
- table.clearFilter();
405
  });
406
-
407
- function handleDownloadJson() {
408
- var tableData = table.getData("active");
409
- var jsonData = JSON.stringify(tableData, null, 2);
410
- console.log("Данные для рассылки:", jsonData);
411
- }
412
-
413
- function handleTakeForYourself() {
414
- var tableData = table.getData("active");
415
- var jsonData = JSON.stringify(tableData, null, 2);
416
- console.log("Данные для себя:", jsonData);
 
 
 
 
 
 
417
  }
418
-
419
- document.getElementById("download-json").addEventListener("click", handleDownloadJson);
420
- document.getElementById("take-for-yourself").addEventListener("click", handleTakeForYourself);
421
- })
422
- .catch(error => console.error('Error fetching data:', error));
423
- });
424
- </script>
 
 
 
 
425
  </body>
426
-
427
- </html>
 
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>WhatsCRM - Автопилот + Tilda + Бизон 365 + GetCurse</title>
7
 
8
+ <!-- Подключение библиотек -->
9
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
10
+ <script src="https://unpkg.com/@vkontakte/vk-bridge/dist/browser.min.js"></script>
11
+ <script src="https://vk.com/js/api/openapi.js?169"></script>
12
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.min.css">
13
+ <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
14
+ <link href="https://unpkg.com/[email protected]/dist/css/tabulator.min.css" rel="stylesheet">
15
+ <script src="https://unpkg.com/[email protected]/dist/js/tabulator.min.js"></script>
16
+
17
+ <!-- Стили -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  <style>
19
+ body {
20
+ font-family: Arial, sans-serif;
21
+ text-align: center;
22
+ background-color: #f0f0f0;
23
+ margin: 0;
24
+ padding: 0;
25
+ }
26
+ h1 {
27
+ background-color: #4CAF50;
28
+ color: white;
29
+ padding: 20px;
30
+ margin: 0;
31
+ border-bottom: 2px solid #388E3C;
32
+ font-size: 28px;
33
+ text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
34
+ }
35
+ button, #filter-clear, #download-json, #take-for-yourself {
36
+ color: white;
37
+ background-color: #4CAF50;
38
+ border: none;
39
+ cursor: pointer;
40
+ padding: 10px 20px;
41
+ font-size: 16px;
42
+ border-radius: 5px;
43
+ margin: 5px;
44
+ transition: background-color 0.3s ease;
45
+ }
46
+ button:hover, #filter-clear:hover, #download-json:hover, #take-for-yourself:hover {
47
+ background-color: #388E3C;
48
+ }
49
+ select, input {
50
+ padding: 10px;
51
+ font-size: 16px;
52
+ margin: 5px;
53
+ border-radius: 5px;
54
+ border: 1px solid #ccc;
55
+ background-color: #f0f0f0;
56
+ transition: border-color 0.3s ease, box-shadow 0.3s ease;
57
+ }
58
+ select:focus, input:focus {
59
+ border-color: #4CAF50;
60
+ box-shadow: 0 0 5px rgba(76, 175, 80, 0.5);
61
+ }
62
+ #filter-field option, #filter-type option, #filter-field2 option {
63
+ background-color: #f0f0f0;
64
+ color: #333;
65
+ }
66
+ #mediaContainer {
67
+ margin-top: 20px;
68
+ display: flex;
69
+ justify-content: center;
70
+ align-items: center;
71
+ flex-direction: column;
72
+ max-width: 100%;
73
+ height: auto;
74
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
75
+ border-radius: 10px;
76
+ padding: 20px;
77
+ background-color: white;
78
+ }
79
+ #mediaContainer img, #mediaContainer video {
80
+ max-width: 100%;
81
+ height: auto;
82
+ object-fit: contain;
83
+ border-radius: 10px;
84
+ }
85
+ #imageUrl {
86
+ margin-top: 20px;
87
+ font-size: 16px;
88
+ color: #333;
89
+ cursor: pointer;
90
+ text-decoration: underline;
91
+ transition: color 0.3s ease;
92
+ }
93
+ #imageUrl:hover {
94
+ color: #4CAF50;
95
+ }
96
+ #progressBarContainer {
97
+ width: 80%;
98
+ margin: 20px auto;
99
+ background-color: #ddd;
100
+ border-radius: 13px;
101
+ padding: 3px;
102
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);
103
+ }
104
+ #progressBar {
105
+ width: 0%;
106
+ height: 20px;
107
+ background-color: #4CAF50;
108
+ border-radius: 10px;
109
+ text-align: center;
110
+ line-height: 20px;
111
+ color: white;
112
+ transition: width 0.3s ease;
113
+ }
114
+ .swal-button-custom {
115
+ background-color: #4CAF50;
116
+ font-size: 16px;
117
+ padding: 10px 20px;
118
+ }
119
+ .swal-title-custom {
120
+ font-size: 24px;
121
+ color: #333;
122
+ }
123
+ .swal-content-custom {
124
+ font-size: 16px;
125
+ color: #666;
126
+ }
127
+ </style>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  </head>
 
129
  <body>
130
+ <header>
131
  <h1>WhatsCRM - Автопилот + Tilda + Бизон 365 + GetCurse</h1>
132
+ </header>
133
+
134
+ <main>
135
+ <div>
136
+ <select id="filter-field">
137
+ <option value="">Выберите поле</option>
138
+ <option value="id">Номер в списке</option>
139
+ <option value="name">Имя</option>
140
+ <option value="phone">WhatsApp</option>
141
+ <option value="email">Email</option>
142
+ <option value="b_mess">Реплики</option>
143
+ <option value="curator">Куратор</option>
144
+ <option value="shop_st">Статус покупки</option>
145
+ <option value="ad_url">Ссылка на пользователя в GC</option>
146
+ <option value="vk_id">Ссылка на VK</option>
147
+ <option value="chat_id">Ссылка на Tg</option>
148
+ <option value="ws_stop">Статус подписки</option>
149
+ <option value="web_st">Вебинары</option>
150
+ <option value="fin_prog">Прогресс по воронке</option>
151
+ <option value="pr1">pr1</option>
152
+ <option value="pr2">pr2</option>
153
+ <option value="pr3">pr3</option>
154
+ <option value="pr4">Канал трафика</option>
155
+ <option value="pr5">Дата</option>
156
+ <option value="key_pr">Ключ PR</option>
157
+ <option value="canal">Канал</option>
158
+ <option value="data_t">Дата</option>
159
+ </select>
160
+
161
+ <select id="filter-type">
162
+ <option value="=">=</option>
163
+ <option value="<"><</option>
164
+ <option value="<="><=</option>
165
+ <option value=">">></option>
166
+ <option value=">=">>=</option>
167
+ <option value="!=">!=</option>
168
+ <option value="like">like</option>
169
+ </select>
170
+
171
+ <input id="filter-value" type="text" placeholder="Значение фильтра">
172
+
173
+ <select id="filter-field2">
174
+ <option value="">Выберите поле</option>
175
+ <option value="id">Номер в списке</option>
176
+ <option value="name">Имя</option>
177
+ <option value="phone">WhatsApp</option>
178
+ <option value="email">Email</option>
179
+ <option value="b_mess">Реплики</option>
180
+ <option value="curator">Куратор</option>
181
+ <option value="shop_st">Статус покупки</option>
182
+ <option value="ad_url">Ссылка на пользователя в GC</option>
183
+ <option value="vk_id">Ссылка на VK</option>
184
+ <option value="chat_id">Ссылка на Tg</option>
185
+ <option value="ws_stop">Статус подписки</option>
186
+ <option value="web_st">Вебинары</option>
187
+ <option value="fin_prog">Прогресс по воронке</option>
188
+ <option value="pr1">pr1</option>
189
+ <option value="pr2">pr2</option>
190
+ <option value="pr3">pr3</option>
191
+ <option value="pr4">Канал трафика</option>
192
+ <option value="pr5">Дата</option>
193
+ <option value="key_pr">Ключ PR</option>
194
+ <option value="canal">Канал</option>
195
+ <option value="data_t">Дата</option>
196
+ </select>
197
+
198
+ <input id="filter-value2" type="text" placeholder="Значение фильтра 2">
199
+
200
+ <button id="filter-clear">Очистить фильтр</button>
201
+ <button id="download-json">Скачать JSON</button>
202
+ <button id="take-for-yourself">Возьми для себя</button>
203
+ </div>
204
+
205
+ <div id="mediaContainer">
206
+ <!-- Место для изображения или видео -->
207
+ <div id="mediaWrapper">
208
+ <!-- Изображение по умолчанию -->
209
+ <img id="media" src="" alt="Media" style="display: none;">
210
+ <!-- Видео по умолчанию -->
211
+ <video id="mediaVideo" controls style="display: none;">
212
+ <source id="mediaSource" src="" type="video/mp4">
213
+ Ваш браузер не поддерживает видео.
214
+ </video>
215
+ </div>
216
+ <div id="imageUrl"></div>
217
+ </div>
218
+
219
+ <div id="progressBarContainer">
220
+ <div id="progressBar">0%</div>
221
+ </div>
222
+
223
+ <!-- Таблица данных -->
224
+ <div id="data-table"></div>
225
+ </main>
226
+
227
+ <script>
228
+ $(document).ready(function() {
229
+ let data = [];
230
+ let table = new Tabulator("#data-table", {
231
+ data: data,
232
+ layout: "fitColumns",
233
+ columns: [
234
+ { title: "ID", field: "id" },
235
+ { title: "Имя", field: "name" },
236
+ { title: "WhatsApp", field: "phone" },
237
+ { title: "Email", field: "email" },
238
+ { title: "Реплики", field: "b_mess" },
239
+ { title: "Куратор", field: "curator" },
240
+ { title: "Статус покупки", field: "shop_st" },
241
+ { title: "Ссылка на пользователя в GC", field: "ad_url" },
242
+ { title: "Ссылка на VK", field: "vk_id" },
243
+ { title: "Ссылка на Tg", field: "chat_id" },
244
+ { title: "Статус подписки", field: "ws_stop" },
245
+ { title: "Вебинары", field: "web_st" },
246
+ { title: "Прогресс по воронке", field: "fin_prog" },
247
+ { title: "pr1", field: "pr1" },
248
+ { title: "pr2", field: "pr2" },
249
+ { title: "pr3", field: "pr3" },
250
+ { title: "Канал трафика", field: "pr4" },
251
+ { title: "Дата", field: "pr5" },
252
+ { title: "Ключ PR", field: "key_pr" },
253
+ { title: "Канал", field: "canal" },
254
+ { title: "Дата", field: "data_t" }
255
+ ]
256
+ });
257
+
258
+ // Обработка клика на кнопке "Очистить фильтр"
259
+ $('#filter-clear').click(function() {
260
+ $('#filter-field').val('');
261
+ $('#filter-type').val('=');
262
+ $('#filter-value').val('');
263
+ $('#filter-field2').val('');
264
+ $('#filter-value2').val('');
265
+ });
266
+
267
+ // Обработка клика на кнопке "Скачать JSON"
268
+ $('#download-json').click(function() {
269
+ let jsonData = JSON.stringify(data, null, 2);
270
+ let blob = new Blob([jsonData], { type: "application/json" });
271
+ let url = URL.createObjectURL(blob);
272
+ let a = document.createElement('a');
273
+ a.href = url;
274
+ a.download = 'data.json';
275
+ a.click();
276
+ URL.revokeObjectURL(url);
277
+ });
278
+
279
+ // Обработка клика на кнопке "Возьми для себя"
280
+ $('#take-for-yourself').click(function() {
281
+ Swal.fire({
282
+ title: 'Вы уверены?',
283
+ text: 'Вы собираетесь забрать эти данные для себя!',
284
+ icon: 'warning',
285
+ showCancelButton: true,
286
+ confirmButtonText: 'Да, забрать',
287
+ cancelButtonText: 'Отмена',
288
+ customClass: {
289
+ confirmButton: 'swal-button-custom',
290
+ title: 'swal-title-custom',
291
+ content: 'swal-content-custom',
292
+ }
293
+ }).then((result) => {
294
+ if (result.isConfirmed) {
295
+ // Логика для кнопки "Возьми для себя"
296
+ Swal.fire(
297
+ 'Выполнено!',
298
+ 'Данные забраны для себя.',
299
+ 'success'
300
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
301
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
302
  });
303
+ });
304
+
305
+ // Пример функции для обновления прогресс-бара
306
+ function updateProgressBar(percentage) {
307
+ $('#progressBar').css('width', percentage + '%').text(percentage + '%');
308
+ }
309
+
310
+ // Обновляем прогресс-бар на 50% как пример
311
+ updateProgressBar(50);
312
+
313
+ // Пример загрузки изображения
314
+ $('#imageUrl').click(function() {
315
+ let imageUrl = prompt('Введите URL изображения');
316
+ if (imageUrl) {
317
+ $('#media').attr('src', imageUrl).show();
318
+ $('#mediaVideo').hide();
319
+ $('#imageUrl').text(imageUrl);
320
  }
321
+ });
322
+
323
+ // Пример загрузки видео
324
+ function loadVideo(videoUrl) {
325
+ $('#mediaVideo').show();
326
+ $('#media').hide();
327
+ $('#mediaSource').attr('src', videoUrl);
328
+ $('#mediaVideo')[0].load();
329
+ }
330
+ });
331
+ </script>
332
  </body>
333
+ </html>