SwVitaliy

Untitled

Aug 3rd, 2012
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function getSubscriptionByUrls() {
  2. var subs = this.sms_subscriptions;
  3. var i, r = {}, o; for(i = 0; i<subs.length; ++i) {
  4. if ( typeof r[subs[i].url] === 'undefined') { r[subs[i].url] = []; }
  5. o = $.extend({}, subs[i]);
  6. 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);
  7. r[subs[i].url].push(o);
  8. }
  9. return r;
  10. }
  11.  
  12. function operatorImages(ops) {
  13. var cfg = { megafon: { src: "images/megafon.png", alt: "Мегафон" }, mts: { src:"images/mts.png", alt:"Мтс" }, beeline: { src:"images/beeline.png", alt:"Билайн" } };
  14. var str = '<img style="height: 20px;" alt="{alt}" src="{src}" />';
  15. var i, v, t, res = '';
  16. for (i = 0; i<ops.length; ++i) {
  17. v = ops[i];  
  18. t = cfg[v] || {src:"images/other.png", alt:v};
  19. res+= str.replace('{alt}', t.alt)
  20.   .replace('{src}', t.src);
  21. }
  22. return res;
  23. }
  24.  
  25. function addSiteRow(data, fn) {
  26.  
  27. var d = $('#table_wrap');  
  28. var t = d.find('.table-sites table>tbody');
  29.  
  30. var template = '<tr class="sub lighter"><td class="url">{project-name}</td><td class="right_align" style="min-width: 130px;">{operators}</td>' +
  31.                '<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>';
  32.  
  33. var row = $( template
  34.         .replace('{project-name}', data.projectName)
  35.         .replace('{operators}', operatorImages(data.operators))
  36.         .replace('{url}', data.url) )
  37.         .appendTo(t);
  38.  
  39. if (fn) fn.apply(row, []);
  40.  
  41. return undefined;
  42. }
  43.  
  44. function parseCurrentFilter() {
  45. //
  46. // парсинг из DOM текущих значений фильтра
  47. //
  48. var d = $('#table_wrap .table_params');
  49. return {
  50. subaccount: d.find('[name=subaccount]').val(),
  51. sms_count: d.find('[name=sms_count]').val(),
  52. price: d.find('[name=price]').val(),
  53. psevdo: d.find('[name=psevdo]').attr('checked') === 'checked',
  54. mt: d.find('[name=mt]').attr('checked') === 'checked'
  55. };  
  56. }
  57. function filterSites(sites, f) {
  58. //
  59. // принимает на вход ассоциированный массив url => Array - в массиве
  60. // содержится схемы для данного сайта.
  61. // возвращает ассоциированный массив url => Array - в массиве объекты выбранных схем по указанному фильтру.
  62. // если для текущего проекта нет ни одной схемы, то он исключается из выдачи
  63. //
  64.  
  65. var i, r = [], s, arrayCopyTo = function(r) { var i; for(i = 0; i<this.length; ++i) { r.push(this[i]) } return r; };
  66. for (i in sites) {
  67. if (!sites.hasOwnProperty(i)) continue;
  68.  
  69. s = (function (subs, f, U) {
  70. var i, r = [];
  71.  
  72. if (f.mt && subs.mt && subs.mt.length)) { arrayCopyTo.apply(subs.mt, [r]); }
  73. if (f.pseudo && subs.pseudo && subs.pseudo.length) { arrayCopyTo.apply(subs.pseudo, [r]);  }
  74. if (subs.sms && subs.sms.length) {
  75. for(i=0; i<subs.sms.length; ++i) {
  76.   if (U.priceInGroup(f.price, subs.sms[i]) && U.smsCountCmp(f.sms_count, subs.sms[i])) { r.push(subs.sms[i]); }
  77. }
  78. }
  79.  
  80. return r;
  81.  
  82. })(sites[i], f, {
  83.  
  84. priceInGroup: function(priceGroup, schema) {
  85. return true;
  86. },
  87.  
  88. smsCountCmp: function(count, schema) {
  89. return true;
  90. }
  91.  
  92. }); // end of call anonym function
  93.  
  94. if (s.length === 0) continue;
  95.  
  96. arrayCopyTo.apply(s, [r]);
  97.  
  98. } // end of for
  99. } // end of filterSites
  100.  
  101. function updateSiteTable(){
  102.  
  103. $('#table_wrap').find('.table-sites table>tbody>tr').remove();
  104.  
  105. var i,t,s = getSubscriptionByUrls.apply(SMSKA.sites.currentSite, []);
  106. var f = parseCurrentFilter();
  107. s = filterSites(s, f);
  108. for (i in s) {
  109. if (!s.hasOwnProperty(i)) continue;
  110. t = s[i];console.log(t)
  111. addSiteRow({ projectName: t.url, operators:t.available_operators, url:t.url }, undefined);
  112. }
  113. };
Advertisement
Add Comment
Please, Sign In to add comment