Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function getSubscriptionByUrls() {
- var subs = this.sms_subscriptions;
- var i, r = {}, o; for(i = 0; i<subs.length; ++i) {
- if ( typeof r[subs[i].url] === 'undefined') { r[subs[i].url] = []; }
- o = $.extend({}, subs[i]);
- o.available_operators = (function(str) { var r = str.split(','); if (typeof r[0] === 'string' && r[0].length === 0) r = r.slice(1); return r; })(o.available_operators);
- r[subs[i].url].push(o);
- }
- return r;
- }
- function operatorImages(ops) {
- var cfg = { megafon: { src: "images/megafon.png", alt: "Мегафон" }, mts: { src:"images/mts.png", alt:"Мтс" }, beeline: { src:"images/beeline.png", alt:"Билайн" } };
- var str = '<img style="height: 20px;" alt="{alt}" src="{src}" />';
- var i, v, t, res = '';
- for (i = 0; i<ops.length; ++i) {
- v = ops[i];
- t = cfg[v] || {src:"images/other.png", alt:v};
- res+= str.replace('{alt}', t.alt)
- .replace('{src}', t.src);
- }
- return res;
- }
- function addSiteRow(data, fn) {
- var d = $('#table_wrap');
- var t = d.find('.table-sites table>tbody');
- var template = '<tr class="sub lighter"><td class="url">{project-name}</td><td class="right_align" style="min-width: 130px;">{operators}</td>' +
- '<td class="darkbg"><input type="text" class="link schema_lest_inp" onclick="$(this).select();" alt="{url}?uid={uid}&sid=168&psn={psn}" value="" /></td></tr>';
- var row = $( template
- .replace('{project-name}', data.projectName)
- .replace('{operators}', operatorImages(data.operators))
- .replace('{url}', data.url) )
- .appendTo(t);
- if (fn) fn.apply(row, []);
- return undefined;
- }
- function parseCurrentFilter() {
- //
- // парсинг из DOM текущих значений фильтра
- //
- var d = $('#table_wrap .table_params');
- return {
- subaccount: d.find('[name=subaccount]').val(),
- sms_count: d.find('[name=sms_count]').val(),
- price: d.find('[name=price]').val(),
- psevdo: d.find('[name=psevdo]').attr('checked') === 'checked',
- mt: d.find('[name=mt]').attr('checked') === 'checked'
- };
- }
- function filterSites(sites, f) {
- //
- // принимает на вход ассоциированный массив url => Array - в массиве
- // содержится схемы для данного сайта.
- // возвращает ассоциированный массив url => Array - в массиве объекты выбранных схем по указанному фильтру.
- // если для текущего проекта нет ни одной схемы, то он исключается из выдачи
- //
- var i, r = [], s, arrayCopyTo = function(r) { var i; for(i = 0; i<this.length; ++i) { r.push(this[i]) } return r; };
- for (i in sites) {
- if (!sites.hasOwnProperty(i)) continue;
- s = (function (subs, f, U) {
- var i, r = [];
- if (f.mt && subs.mt && subs.mt.length)) { arrayCopyTo.apply(subs.mt, [r]); }
- if (f.pseudo && subs.pseudo && subs.pseudo.length) { arrayCopyTo.apply(subs.pseudo, [r]); }
- if (subs.sms && subs.sms.length) {
- for(i=0; i<subs.sms.length; ++i) {
- if (U.priceInGroup(f.price, subs.sms[i]) && U.smsCountCmp(f.sms_count, subs.sms[i])) { r.push(subs.sms[i]); }
- }
- }
- return r;
- })(sites[i], f, {
- priceInGroup: function(priceGroup, schema) {
- return true;
- },
- smsCountCmp: function(count, schema) {
- return true;
- }
- }); // end of call anonym function
- if (s.length === 0) continue;
- arrayCopyTo.apply(s, [r]);
- } // end of for
- } // end of filterSites
- function updateSiteTable(){
- $('#table_wrap').find('.table-sites table>tbody>tr').remove();
- var i,t,s = getSubscriptionByUrls.apply(SMSKA.sites.currentSite, []);
- var f = parseCurrentFilter();
- s = filterSites(s, f);
- for (i in s) {
- if (!s.hasOwnProperty(i)) continue;
- t = s[i];console.log(t)
- addSiteRow({ projectName: t.url, operators:t.available_operators, url:t.url }, undefined);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment