//myBase = null var A; A = { init: function() { A.domen = window.location.origin + '/'; A.entities = [A.C, A.P, A.O, A.D, A.Y]; /* if localStorage['clear1']==undefined for c in A.entities localStorage[c.type] = 0 localStorage['clear1'] = 1 if myBase==undefined || myBase.length!=undefined myBase = {} for c in A.entities myBase[c.type] = [] */ A.queue = []; A.now = 0; A.nowEntity = 0; return A.W.init(); }, //A.nextEntity() //A.next() //A.C.parse(); //A.P.parse(); //A.O.parse(); //A.D.parse(); //A.Y.parse(); //A.next() //A.C.itemParse() //A.P.itemParse() //A.O.itemParse() //A.D.itemParse() parseNew: function() { var c, i, j, len, len1, myBase, ref, ref1; A.domen = window.location.origin + '/'; A.entities = [A.C, A.P, A.O, A.D, A.Y]; if (localStorage['clear1'] === void 0) { ref = A.entities; for (i = 0, len = ref.length; i < len; i++) { c = ref[i]; localStorage[c.type] = 0; } localStorage['clear1'] = 1; } if (myBase === void 0 || myBase.length !== void 0) { myBase = {}; ref1 = A.entities; for (j = 0, len1 = ref1.length; j < len1; j++) { c = ref1[j]; myBase[c.type] = []; } } A.queue = []; A.now = 0; A.nowEntity = 0; A.nextEntity(); return A.next(); }, loadNeedLoad: function() { var i, id, j, k, l, len, len1, len2, len3, ref, ref1, ref2, ref3; ref = needLoad['client']; for (i = 0, len = ref.length; i < len; i++) { id = ref[i]; //console.log id A.request('user/control/user/update/id/' + id, A.C.itemParse); } ref1 = needLoad['deal']; for (j = 0, len1 = ref1.length; j < len1; j++) { id = ref1[j]; A.request('sales/control/deal/update/id/' + id, A.D.itemParse); } ref2 = needLoad['offer']; for (k = 0, len2 = ref2.length; k < len2; k++) { id = ref2[k]; A.request('pl/sales/offer/update?id=' + id, A.O.itemParse); } ref3 = needLoad['product']; for (l = 0, len3 = ref3.length; l < len3; l++) { id = ref3[l]; A.request('pl/sales/product/update?id=' + id, A.P.itemParse); } A.next(); return A.nextEntity = function() {}; }, ajax: null, nextEntity: function() { var x; //A.queue = [] A.now = Math.max(0, A.queue.length); x = A.entities[A.nowEntity]; if (x !== void 0) { x.parse(); A.nowType = x.type; } return A.nowEntity++; }, waitTime: 900, now: 0, nowEntity: 0, queue: [], max: 1000000, //max : 100 nowType: '', maxDouble: 100, getMaxPage: function(x) { //return 1 return x; }, isNext: true, entities: [], stop: function() { A.isNext = false; return A.W.draw(); }, play: function() { A.isNext = true; A.next(); return A.W.draw(); }, send: function(type, data) { var s, src; s = document.createElement('script'); $("body").append(s); s.onload = function() { return s.remove(); }; return s.src = src = 'https://arcanum.sova.mg/api/sova.getcourse/add/?type=' + type + '&id=' + data.id + '&data=' + JSON.stringify(data); }, //s.src = src = 'http://cmsbuilder.in/api/sova.getcourse/add/?type='+type+'&data='+JSON.stringify(data) //console.log src request: function(url, cb, type = null, page = null) { A.queue.push({ url: url, cb: cb, type: type, page: page }); return A.W.draw(); }, next: function() { //console.log 'next',A.now,A.nowType,A.queue if (A.isNext) { if (A.queue[A.now] !== void 0) { setTimeout(A.makeRequest, A.waitTime); } else { setTimeout(A.next, A.waitTime); } } return A.W.draw(); }, makeRequest: function() { var c, type; type = A.nowType; if ((c = A.queue[A.now]) !== void 0) { if (c.type !== null) { localStorage[c.type] = c.page; } return A.ajax = $.ajax({ url: A.domen + c.url, success: function(data) { if (typeof c.cb === "function") { c.cb(data, c.page); } //console.log A.nowType == type,A.nowType , type if (A.nowType === type) { A.now++; } return A.next(); }, error: function() { A.now++; return A.next(); } }); } }, W: { init: function() { A.W.create(); return A.W.draw(); }, draw: function() { var last, res; last = A.queue.length - A.now; res = '' + (A.isNext ? '' : '') + '

Очередь запросов: ' + A.now + ' из ' + A.queue.length + '

' + '

Осталось запросов: ' + last + ', это ~ ' + Math.floor(A.waitTime / 1000 * last / 60) + ' минут ' + (A.waitTime / 1000 * last % 60) + ' сек

РеестТекущийВсего
Клиенты' + A.C.now + '' + A.C.sum + '
Продукты' + A.P.now + '' + A.P.sum + '
Предложения' + A.O.now + '' + A.O.sum + '
Заказы' + A.D.now + '' + A.D.sum + '
Платежи' + A.Y.now + '' + A.Y.sum + '
'; if (A.queue[A.now] !== void 0) { res += 'Запрос: ' + A.queue[A.now].url + ''; } //res += '' return A.W.body.html(res); }, create: function() { var id; //A.W.d = window.open "","","width=400,height=150" //A.W.body = A.W.d.document.body id = 'prsssss'; if ($(`#${id}`).length === 0) { A.W.body = $('
'); return $("body").prepend(A.W.body); } else { //A.W.body = A.W.body[0] return A.W.body = $(`#${id}`); } } } }; // Backend // + парсер даты // TODO источник заказа // TODO парсер страны и города // TODO Всем предложениям архивный - да, формат обучения - "онлайн обучение" // TODO Предложения - всем валюта - RUB, формат - "онлайн-обучение", арихивный - "да", направление - "пусто" // TODO парсер даты для заказов // TODO Для номера заказа проставить префикс GT // TODO Для заказов - расшифровку статуса заказов // + у каждой записи сохранять время // Пересобрать источники // Пересобрать номера телефонов // Пересобрать Имена и фамилии // $("body").append('') // CLIENTS A.C = { total: 0, pages: 0, base: [], sum: 0, now: 0, type: 'client', double: 0, parse: function() { return A.request('pl/user/user/', function(data) { var $b, $data, $s, i, per_page, total; $data = $(data); $s = $(".summary", $data); $b = $("b", $s); A.C.per_page = per_page = parseInt($b[0].innerText.split("-")[1]); total = parseInt($b[1].innerText.replace(/[^\d]/g, '')); A.C.total = total; A.C.pages = Math.ceil(A.C.total / per_page); //start = 1 //if (c = localStorage[A.C.type])!=undefined // _start = parseInt(c) // if !isNaN(_start) // start = _start // A.C.now = per_page * start // A.C.sum = per_page * start // if A.C.now>=A.C.total || A.C.now>=A.max // A.nextEntity() // return A.C.pages = A.getMaxPage(A.C.pages); A.C.total = Math.min(A.C.total, A.C.pages * per_page); if (per_page === 0) { alert('Не понятно сколько клиентов на странице '); A.nextEntity(); return; } //if start==1 or start A.maxDouble) { return isNextEntity = true; } } }); //if A.C.now>=A.C.total || A.C.now>=A.max then A.nextEntity() //console.log('pageParse client',page,'isNextEntity',isNextEntity ) if (isNextEntity) { return A.nextEntity(); } else { i = page - 1; return A.request('pl/user/user/index?page=' + i + '&per-page=' + A.C.per_page, A.C.parsePage, A.C.type, i); } }, itemParse: function(data = null) { var $data, $f, i, j, len, o, ref, x; if (data === null) { $data = $("html"); } else { $data = $(data); } $f = $(".page-main-form", $data); o = {}; ref = $f.attr('action').split('/'); for (j = 0, len = ref.length; j < len; j++) { i = ref[j]; if (x = parseInt(i)) { if (!isNaN(x)) { o.id = x; break; } } } $("td", $f).each(function() { var $t, text, val; $t = $(this); text = $.trim($t.text()); switch (text) { case 'Телефон': $("script", $t.next()).remove(); val = $.trim($t.next().text()); return o.phone = val === 'изменить' ? '' : val; case 'Эл. почта': return o.email = $.trim($t.next().text()); case 'Статус': val = $.trim($t.next().text()); return o.status = val === 'активен' ? 1 : 2; //when 'Имя' // val = $.trim($t.next().text()) // o.name = if val == 'изменить' then '' else val //when 'Фамилия' // val = $.trim($t.next().text()) // o.sname = if val == 'изменить' then '' else val case 'Страна': val = $.trim($t.next().text()); return o.country = val === 'изменить' ? '' : val; case 'Предполагаемая страна': val = $.trim($t.next().text()); return o.country = val === 'изменить' ? '' : val; case 'День рождения': val = $.trim($t.next().text()); return o.bdate = val === 'не указано' ? '' : val; case 'Город': val = $.trim($t.next().text()); return o.city = val === 'изменить' ? '' : val; case 'Предполагаемый город': val = $.trim($t.next().text()); return o.city = val === 'изменить' ? '' : val; case 'Тип': val = $("select", $t.next()).val(); return o.type = val === 'user' ? 1 : 0; case 'Дата регистрации': return o.date = $.trim($t.next().text()); case 'Тип регистрации': val = $("select", $t.next()).val(); return o.reg = val === 'Зарегистрировался самостоятельно' ? 1 : 2; } }); o.name = $("#User_first_name", $data).val(); o.sname = $("#User_last_name", $data).val(); o.phone = $("#User_phone", $data).val(); o.country = $("#User_country", $data).val(); o.city = $("#User_city", $data).val(); switch ($("#User_subscribe_status", $data).val()) { case "all": o.subscribe = 3; break; case "no_mailings": o.subscribe = 2; break; case "disabled": o.subscribe = 1; } switch ($("#User_gender", $data).val()) { case "male": o.sex = 1; break; case "female": o.sex = 2; break; default: o.sex = 0; } o.comment = $("#User_comment", $data).val(); o.sms = $("#smsUnsubscribe", $data).is(":checked") ? 1 : 0; // TODO Источник //console.log('парсим клиента ',o) //A.C.base.push o o.source = {}; $('.panel-heading').each(function() { var $t, text; $t = $(this); text = $t.text(); if (text.indexOf('Источник') >= 0) { return $("table tr", $t.parent()).each(function() { var $tr; $tr = $(this); if ($("td:eq(1) a", $tr).length > 0) { return o.source[$("td:eq(0)", $tr).text()] = $("td:eq(1) a", $tr).attr('href'); } else { return o.source[$("td:eq(0)", $tr).text()] = $("td:eq(1)", $tr).text(); } }); } }); //console.log o A.send('client', o); return A.C.now++; } }; // if A.C.now>=A.C.sum || A.C.now>=A.max then A.nextEntity() // DEALS A.D = { total: 0, pages: 0, base: [], sum: 0, now: 0, type: 'deal', double: 0, parse: function() { return A.request('pl/sales/deal/', function(data) { var $b, $data, $s, i, per_page, total; $data = $(data); $s = $(".summary", $data); $b = $("b", $s); A.D.per_page = per_page = parseInt($b[0].innerText.split("-")[1]); total = parseInt($b[1].innerText.replace(/[^\d]/g, '')); A.D.total = total; A.D.pages = Math.ceil(A.D.total / per_page); if (per_page === 0) { alert('Не понятно сколько сделок на странице '); A.nextEntity(); return; } A.D.pages = A.getMaxPage(A.D.pages); A.D.total = Math.min(A.D.total, A.D.pages * per_page); //start = 1 //if (c = localStorage[A.D.type])!=undefined // _start = parseInt(c) // if !isNaN(_start) // start = _start // A.D.now = per_page * start // A.D.sum = per_page * start // if A.D.now>=A.D.total || A.D.now>=A.max // A.nextEntity() // return //if start==1 or start A.maxDouble) { return isNextEntity = true; } } }); if (isNextEntity) { return A.nextEntity(); } else { i = page - 1; return A.request('pl/sales/deal/index?page=' + i + '&per-page=' + A.D.per_page, A.D.parsePage, A.D.type, i); } }, itemParse: function(data = null) { var $data, $f, c, href, i, j, k, len, len1, number, o, ref, ref1, x; if (data === null) { $data = $("html"); } else { $data = $(data); } $f = $(".page-main-form", $data); o = {}; ref = $f.attr('action').split('/'); for (j = 0, len = ref.length; j < len; j++) { i = ref[j]; if (x = parseInt(i.replace(/[^\d]/g, ''))) { if (!isNaN(x)) { o.id = x; break; } } } number = $("h1", $data).text(); if (number !== void 0) { o.number = number.replace(/[^\d]/g, ''); } $(".deal-info-table td", $data).each(function() { var $t, text; $t = $(this); text = $.trim($t.text()); switch (text) { case "Создан:": return o.date = $.trim($t.next().text()); case "Оплачен:": return o.pdate = $.trim($t.next().text()); } }); c = $('.panel-body > a[href^="/user/control/user/update/id/"]', $data); if (c.length > 0) { href = c.attr('href'); if (href !== void 0) { ref1 = c.attr('href').split('/'); for (k = 0, len1 = ref1.length; k < len1; k++) { i = ref1[k]; if (i !== void 0) { if (x = parseInt(i.replace(/[^\d]/g, ''))) { if (!isNaN(x)) { o.client_id = x; break; } } } } } } o.status = $("#Deal_change_status", $data).val(); o.offers = []; $(".deal-position-tr", $data).each(function() { var $t; $t = $(this); return o.offers.push({ //id : if ( c = $(".name b a",$t).attr('href') ) !=undefined then c.replace(/[^\d]/g,'') else '' //price : if ( c = $(".price",$t).text() ) !=undefined then c.replace(/[^\d]/g,'') else $("[id$=price]",$t).val() //count : if ( c = $(".quantity",$t).text() ) !=undefined then c.replace(/[^\d]/g,'') else $(".input-position-quantity",$t).val() id: ((c = $(".name b a", $t)).length > 0) !== void 0 ? c.attr('href').replace(/[^\d]/g, '') : '', price: ((c = $(".price input", $t)).length > 0) ? c.val() : $(".price", $t).text().replace(/[^\d]/g, ''), count: ((c = $(".quantity input", $t)).length > 0) ? c.val() : $(".quantity", $t).text().replace(/[^\d]/g, '') }); }); //console.log('парсим заказ ',o) o.source = {}; $('.panel-heading').each(function() { var $t, text; $t = $(this); text = $t.text(); if (text.indexOf('Источник') >= 0) { return $("table tr", $t.parent()).each(function() { var $tr; $tr = $(this); if ($("td:eq(1) a", $tr).length > 0) { return o.source[$("td:eq(0)", $tr).text()] = $("td:eq(1) a", $tr).attr('href'); } else { return o.source[$("td:eq(0)", $tr).text()] = $("td:eq(1)", $tr).text(); } }); } }); A.D.now++; return A.send('deal', o); } }; //if A.D.now>=A.D.sum || A.D.now>=A.max then A.nextEntity() //console.log o // OFFERS A.O = { total: 0, pages: 0, base: [], sum: 0, now: 0, type: 'offer', double: 0, parse: function() { return A.request('pl/sales/offer/', function(data) { var $b, $data, $s, i, per_page, total; $data = $(data); $s = $(".summary", $data); $b = $("b", $s); A.O.per_page = per_page = parseInt($b[0].innerText.split("-")[1]); total = parseInt($b[1].innerText.replace(/[^\d]/g, '')); A.O.total = total; A.O.pages = Math.ceil(A.O.total / per_page); if (per_page === 0) { alert('Не понятно сколько предложений на странице '); A.nextEntity(); return; } A.O.pages = A.getMaxPage(A.O.pages); A.O.total = Math.min(A.O.total, A.O.pages * per_page); //start = 1 //if (c = localStorage[A.O.type])!=undefined // _start = parseInt(c) // if !isNaN(_start) // start = _start // A.O.now = per_page * start // A.O.sum = per_page * start // if A.O.now>=A.O.total || A.O.now>=A.max // A.nextEntity() // return //if start==1 or start A.maxDouble) { return isNextEntity = true; } } }); if (isNextEntity) { return A.nextEntity(); } else { i = page - 1; return A.request('pl/sales/offer/index?page=' + i + '&per-page=' + A.O.per_page, A.O.parsePage, A.O.type, i); } }, itemParse: function(data = null) { var $data, $f, i, j, len, o, ref, x; if (data === null) { $data = $("html"); } else { $data = $(data); } $f = $("#offerForm", $data); o = {}; ref = $f.attr('action').split('/'); for (j = 0, len = ref.length; j < len; j++) { i = ref[j]; if (x = parseInt(i.replace(/[^\d]/g, ''))) { if (!isNaN(x)) { o.id = x; break; } } } o.name = $("#offer-title", $data).val(); o.price = $("#offer-price", $data).val(); $(".control-label", $data).each(function() { var $t, text; $t = $(this); text = $.trim($t.text()); switch (text) { case "Дата создания": return o.date = $t.next().text(); } }); o.product = []; $('a[href^="/pl/sales/product/update?id="]', $data).each(function() { return o.product.push($(this).attr('href').replace(/[^\d]/g, '')); }); //console.log('парсим предложение ',o) A.send('offer', o); return A.O.now++; } }; //if A.O.now>=A.O.sum || A.O.now>=A.max then A.nextEntity() // PAYMENTS A.Y = { total: 0, pages: 0, base: [], sum: 0, now: 0, type: 'payment', parse: function() { return A.request('pl/sales/control/payment/', function(data) { /* start = 1 if (c = localStorage[A.Y.type])!=undefined _start = parseInt(c) if !isNaN(_start) start = _start A.Y.now = per_page * start A.Y.sum = per_page * start if A.Y.now>=A.Y.total || A.Y.now>=A.max then alert('Закончили') */ var $b, $data, $s, i, j, per_page, ref, ref1, results, start, total; $data = $(data); $s = $(".summary", $data); $b = $("b", $s); per_page = parseInt($b[0].innerText.split("-")[1]); total = parseInt($b[1].innerText.replace(/[^\d]/g, '')); A.Y.total = total; A.Y.pages = Math.ceil(A.Y.total / per_page); A.Y.pages = A.getMaxPage(A.Y.pages); A.Y.total = Math.min(A.Y.total, A.Y.pages * per_page); if (per_page === 0) { alert('Не понятно сколько клиентов на странице '); A.nextEntity(); return; } start = 1; if (start === 1 || start < A.Y.pages) { results = []; for (i = j = ref = start, ref1 = A.getMaxPage(A.Y.pages); (ref <= ref1 ? j <= ref1 : j >= ref1); i = ref <= ref1 ? ++j : --j) { results.push(A.request('pl/sales/control/payment/index?page=' + i + '&per-page=' + per_page, A.Y.parsePage, A.Y.type, i)); } return results; } }); }, parsePage: function(data) { var $d; //console.log('pageParse payment') $d = $(data); A.Y.sum += $('tr[data-deal-id]', $d).length; return $('tr[data-deal-id]', $d).each(function() { var $t, id, o; A.Y.now++; $t = $(this); id = $t.attr('data-deal-id'); o = { id: id, client_id: $('a[data-user-id]', $t).attr('data-user-id'), order_id: $('a[href^="/sales/control/payment/update/id/"]', $t).attr('href').replace(/[^\d]/g, ''), date: $('td:eq(2)', $t).text(), status: $('td:eq(3)', $t).text(), type: $('td:eq(4)', $t).text(), price: $('td:eq(5)', $t).text().replace(/[^\d]/g, '') }; return A.send('payment', o); }); } }; //if A.Y.now>=A.Y.sum || A.Y.now>=A.max // A.stop() // alert('Спрасили') //A.request 'sales/control/deal/update/id/'+id,A.Y.itemParse // PRODUCTS A.P = { total: 0, pages: 0, base: [], sum: 0, now: 0, type: 'product', double: 0, parse: function() { return A.request('pl/sales/product/', function(data) { var $b, $data, $s, i, per_page, total; $data = $(data); $s = $(".summary", $data); $b = $("b", $s); A.P.per_page = per_page = parseInt($b[0].innerText.split("-")[1]); total = parseInt($b[1].innerText.replace(/[^\d]/g, '')); A.P.total = total; A.P.pages = Math.ceil(A.P.total / per_page); if (per_page === 0) { alert('Не понятно сколько продуктов на странице '); A.nextEntity(); return; } A.P.pages = A.getMaxPage(A.P.pages); A.P.total = Math.min(A.P.total, A.P.pages * per_page); //start = 1 //if (c = localStorage[A.P.type])!=undefined // _start = parseInt(c) // if !isNaN(_start) // start = _start // A.P.now = per_page * start // A.P.sum = per_page * start // if A.P.now>=A.P.total || A.P.now>=A.max // A.nextEntity() // return //if start==1 or start A.maxDouble) { return isNextEntity = true; } } }); if (isNextEntity) { return A.nextEntity(); } else { i = page - 1; return A.request('pl/sales/product/index?page=' + i + '&per-page=' + A.P.per_page, A.P.parsePage, A.P.type, i); } }, itemParse: function(data = null) { var $data, $f, i, j, len, o, ref, x; if (data === null) { $data = $("html"); } else { $data = $(data); } $f = $(".form-vertical", $data); o = {}; ref = $f.attr('action').split('/'); for (j = 0, len = ref.length; j < len; j++) { i = ref[j]; if (x = parseInt(i.replace(/[^\d]/g, ''))) { if (!isNaN(x)) { o.id = x; break; } } } o.name = $("#product-title", $data).val(); o.descr = $("#product-description", $data).val(); $(".control-label", $data).each(function() { var $t, text; $t = $(this); text = $.trim($t.text()); switch (text) { case "Дата создания": return o.date = $t.next().text(); } }); //console.log 'парсим продукт', o //A.P.base.push o A.send('product', o); return A.P.now++; } }; //if A.P.now>=A.P.sum || A.P.now>=A.max then A.nextEntity() A.init();