SaveShopInfo

сохранить данные о ценах магазина в локальном хранилище

  1. // ==UserScript==
  2. // @name SaveShopInfo
  3. // @namespace Virtonomica
  4. // @description сохранить данные о ценах магазина в локальном хранилище
  5. // @version 1.08
  6. // @include https://*virtonomic*.*/*/main/unit/view/*/trading_hall
  7. // ==/UserScript==
  8.  
  9. var run = function() {
  10. var win = (typeof(unsafeWindow) != 'undefined' ? unsafeWindow : top.window);
  11. $ = win.$;
  12.  
  13. /**
  14. * записать данные в локальнео хранилище, с проверкой ошибок
  15. */
  16. function ToStorage(name, val){
  17. try {
  18. window.localStorage.setItem( name, JSON.stringify( val ) );
  19. } catch(e) {
  20. out = "Ошибка добавления в локальное хранилище";
  21. //console.log(out);
  22. }
  23. }
  24.  
  25. function getFromStorage(obj, id_shop){
  26. if (obj[id_shop] == null) return '';
  27. return JSON.stringify(obj[id_shop]);
  28. }
  29.  
  30. function Save() {
  31. out = 'OK';
  32. //n = shop_time.length;
  33.  
  34. var flag_save = false;
  35.  
  36. var inp_sale = $("input[name*='productData[price]']");
  37. var td_sale = $("td:contains('$')");
  38. for (i=0; i<inp_sale.length; i++) {
  39. inp = inp_sale.eq(i);
  40. //td_pr = td_sale.eq(i*2);
  41. tr = inp.parent().parent();
  42.  
  43. href = $("a[href*='by_trade_at_cities']", tr);
  44. if (href.attr('href') == null) continue;
  45. id_item = /(\d+)/.exec( href.attr('href') )[0];
  46. if (shop_price[id_shop] == null) shop_price[id_shop] = new Object();
  47.  
  48. //console.log( "www " + td_pr.text() );
  49.  
  50. shop_price[id_shop][ id_item ] = inp.attr('value');
  51.  
  52. if ( shop_transport[ id_shop ] == null ) shop_transport[id_shop] = new Object();
  53. td_pr = $("td", tr).eq(8);
  54. console.log("TD_PR = " + td_pr.text());
  55. shop_transport[id_shop][ id_item ] = parseFloat( td_pr.text().replace('$', '').replace(' ','').replace(' ','').replace(' ','') );
  56. }
  57. if (inp_sale.length>0) {
  58. ToStorage('shop_price', shop_price);
  59. ToStorage('shop_transport', shop_transport);
  60. flag_save = true;
  61. }
  62. // Видимо это не магазина
  63. if (flag_save == false) return false;
  64.  
  65. var td = $("td:contains('%')");
  66. for (i=0; i< td.length; i++) {
  67. td_pr = td.eq(i+1);
  68. tr = td_pr.parent();
  69.  
  70. href = $("a[href*='by_trade_at_cities']", tr);
  71. if (href.attr('href') == null) continue;
  72. id_item = /(\d+)/.exec( href.attr('href') )[0];
  73. //console.log(id_item);
  74.  
  75. if (market[ id_shop ] == null) market[ id_shop ] = new Object();
  76.  
  77. market[ id_shop ][ id_item ] = parseFloat( td_pr.text().replace('%', '') );
  78. }
  79. if (td.length > 0) {
  80. ToStorage('market', market);
  81. flag_save = true;
  82. }
  83. shop_time[ id_shop ] = today ;
  84. //console.log(flag_save);
  85.  
  86. ToStorage('shop_time', shop_time);
  87.  
  88. $("#jsinfo").html("save: " + out );
  89. return true;
  90. }
  91.  
  92. function View() {
  93. out = "LocalStorage:<br>";
  94.  
  95. // выводим все что было в локальном хранилище по данному магазину
  96. out += "market = " + getFromStorage(market, id_shop) + "<br>";
  97. out += "shop_price = " + getFromStorage(shop_price, id_shop) + "<br>";
  98. out += "shop_transport =" + getFromStorage(shop_transport, id_shop) + "<br>";
  99. out += "shop_time =" + getFromStorage(shop_time, id_shop) ;
  100.  
  101. $("#jsinfo").html( out );
  102. }
  103.  
  104. function Clear() {
  105. out = "LocalStorage clear";
  106. // выводим все что было в локальном хранилище
  107. for (i=0; i<localStorage.length; i++) {
  108. localStorage.removeItem( localStorage[i] );
  109. }
  110. $("#jsinfo").html( out );
  111. }
  112.  
  113. // Идентификатор подразделения
  114. var id_shop = /(\d+)/.exec(location.href)[0];
  115.  
  116. // Время обнолвения данных о ценах
  117. shop_time = JSON.parse( window.localStorage.getItem('shop_time') );
  118. if (shop_time == null) shop_time = new Object();
  119.  
  120. var d = new Date();
  121. today = d.getFullYear() + "." + d.getMonth() + "." + d.getDate();
  122.  
  123. // Объем рынка
  124. market = JSON.parse( window.localStorage.getItem('market') );
  125. if (market == null) market = new Object();
  126.  
  127. // Цена продажи
  128. shop_price = JSON.parse( window.localStorage.getItem('shop_price') );
  129. if (shop_price == null) shop_price =new Object();
  130.  
  131. // Цена в магазине
  132. shop_transport = JSON.parse( window.localStorage.getItem('shop_transport') );
  133. if ( shop_transport == null ) shop_transport = new Object();
  134.  
  135. //console.log("End main");
  136. rc = Save();
  137. // Если это не магазин, то и кнопки нам не нужны
  138. // а если и магазин без товара, то кнопки тоже не нужны
  139. if (rc == false) return;
  140.  
  141. // кнопки
  142. var save = $('<button id=bsave>save</button>').click(function() {
  143. Save();
  144. });
  145. var view = $('<button id=bview>view</button>').click(function() {
  146. View();
  147. });
  148. var clear = $('<button id=bview>clear local storage</button>').click(function() {
  149. Clear();
  150. });
  151. var out = '<td><span id=jsinfo style="color:yellow"></span>';
  152. var container = $('#topblock');
  153. container.append( $('<table><tr><td>').append("<font color=white>LocalStorage: </font>").append(save) .append('<td>').append(view) .append('<td>')/*.append(clear)*/.append(out) );
  154.  
  155. Save();
  156. //alert("end");
  157. }
  158.  
  159. if(window.top == window) {
  160. var script = document.createElement("script");
  161. script.textContent = '(' + run.toString() + ')();';
  162. document.documentElement.appendChild(script);
  163. }