1 2 3 4jQuery(document).on('click','.copy',function () { 5 var val = jQuery(this).text(); 6 var id = jQuery(this).attr('id'); 7 navigator.clipboard.writeText(val).then(function() { 8 jQuery('#'+id).notify( 9 "×§×× ××עתק", 10 { 11 position:"right", 12 autoHideDelay: 1000, 13 type: 'success', 14 showAnimation: 'slideDown', 15 } 16 ); 17 }, function() { 18 /* clipboard write failed */ 19 }); 20}) 21 22function tradeoneFormatLiveDate(value, english) { 23 if (!value) { 24 return ''; 25 } 26 27 var date = new Date(value); 28 if (isNaN(date.getTime())) { 29 return value; 30 } 31 32 var day = String(date.getDate()).padStart(2, '0'); 33 var month = String(date.getMonth() + 1).padStart(2, '0'); 34 var year = date.getFullYear(); 35 var hours = String(date.getHours()).padStart(2, '0'); 36 var minutes = String(date.getMinutes()).padStart(2, '0'); 37 return english ? hours + ':' + minutes + ' ' + year + '/' + month + '/' + day : hours + ':' + minutes + ' ' + day + '/' + month + '/' + year; 38} 39 40function tradeoneFormatLiveValue(field, security, settings) { 41 if (field === 'LastUpdate' || field === 'LastUpdateEn') { 42 field = field === 'LastUpdate' ? 'LastKnownRateDate' : 'LastKnownRateDateEn'; 43 } 44 var value = security[field]; 45 if (value === undefined || value === null) { 46 return null; 47 } 48 49 if (field === 'BaseRate') { 50 value = (parseFloat(security.BaseRate || 0) + parseFloat(security.BaseRateChange || 0)); 51 if (settings.base_rate_in_nis) { 52 value = value / 100; 53 } 54 return value.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); 55 } 56 if (field === 'BaseRateChange' || field === 'BaseRateChangePercentage') { 57 var change = parseFloat(security.BaseRateChange || 0); 58 var percentage = security.BaseRateChangePercentage; 59 if (field === 'BaseRateChangePercentage' && (percentage === undefined || percentage === null)) { 60 percentage = security.BaseRate ? (change / parseFloat(security.BaseRate)) * 100 : 0; 61 } 62 var numeric = field === 'BaseRateChange' ? change : parseFloat(percentage || 0); 63 var suffix = field === 'BaseRateChangePercentage' ? '%' : ''; 64 return '<span class="t" style="color:' + (numeric < 0 ? settings.negative_color : settings.positive_color) + '">' + numeric.toFixed(2) + suffix + '</span>'; 65 } 66 if (field === 'LastKnownRateDate') { 67 return tradeoneFormatLiveDate(value, false); 68 } 69 if (field === 'LastKnownRateDateEn') { 70 return tradeoneFormatLiveDate(value, true); 71 } 72 if (field === 'ApiSyncTime') { 73 return tradeoneFormatLiveDate(value, false); 74 } 75 if (field === 'LastDealTime') { 76 return tradeoneFormatLiveDate(value, false).replace(' ', ' '); 77 } 78 if (field === 'DailyTurnover') { 79 return settings.base_rate_in_nis ? 'âª' + Number(security.DailyNISRevenue || 0).toLocaleString() : Number(value || 0).toLocaleString(); 80 } 81 if (field === 'DailyHighestRate') { 82 return Number(value || 0).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); 83 } 84 if (field === 'DailyLowestRate') { 85 return Number(value || 0).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); 86 } 87 if (field === 'AllYearMinimumRate') { 88 return Number(value || 0).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); 89 } 90 if (field === 'AllYearMaximumRate') { 91 return Number(value || 0).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); 92 } 93 if (field === 'MarketWorth') { 94 var calc = (parseFloat(security.BaseRate || 0) + parseFloat(security.BaseRateChange || 0)) / 100; 95 var market = calc * (parseFloat(security.ListedFortune || 0)); 96 return 'âª' + Number(market).toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 0}); 97 } 98 if (field === 'MarketWorthInThousand') {
99 var calc = (parseFloat(security.BaseRate || 0) + parseFloat(security.BaseRateChange || 0)) / 100; 100 var market = calc * (parseFloat(security.ListedFortune || 0)); 101 var thousand = market / 1000; 102 return Number(thousand).toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 0}); 103 } 104 if (field === 'MarketWorthInMillion') { 105 var calc = (parseFloat(security.BaseRate || 0) + parseFloat(security.BaseRateChange || 0)) / 100; 106 var market = calc * (parseFloat(security.ListedFortune || 0)); 107 var million = market / 1000000; 108 return 'âª' + Number(million).toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 0}); 109 } 110 if (field === 'MarketWorthInBillion') { 111 var calc = (parseFloat(security.BaseRate || 0) + parseFloat(security.BaseRateChange || 0)) / 100; 112 var market = calc * (parseFloat(security.ListedFortune || 0)); 113 var billion = market / 1000000000; 114 return 'âª' + Number(billion).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); 115 } 116 if (field === 'MarketWorthUSDMillion') { 117 var calc = (parseFloat(security.BaseRate || 0) + parseFloat(security.BaseRateChange || 0)) / 100; 118 var market = calc * (parseFloat(security.ListedFortune || 0)); 119 var usdRate = parseFloat(settings.usd_ils_rate || 0); 120 if (!usdRate) { 121 return null; 122 } 123 var millions = market / usdRate / 1000000; 124 return '$' + Number(millions).toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 0}); 125 } 126 if (field === 'MarketWorthUSDBillion') { 127 var calc = (parseFloat(security.BaseRate || 0) + parseFloat(security.BaseRateChange || 0)) / 100; 128 var market = calc * (parseFloat(security.ListedFortune || 0)); 129 var usdRate = parseFloat(settings.usd_ils_rate || 0); 130 if (!usdRate) { 131 return null; 132 } 133 var billions = market / usdRate / 1000000000; 134 return '$' + Number(billions).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); 135 } 136 if (field === 'QuarterAverageNIS') { 137 return Number(value || 0).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); 138 } 139 if (field === 'AllYearMedianTurnover') { 140 return Number(value || 0).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); 141 } 142 if (field === 'CompanyMarketValue') { 143 return Number(value || 0).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); 144 } 145 if (field === 'DailyNISRevenue') { 146 return Number(value || 0).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); 147 } 148 if (field === 'AllMonthAverageNIS') { 149 return Number(value || 0).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); 150 } 151 if (typeof value === 'number' || !isNaN(parseFloat(value))) { 152 return Number(value).toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 2}); 153 } 154 return String(value); 155} 156 157function tradeoneRefreshStockInfo() { 158 var liveValues = jQuery('.tradeone-live-value'); 159 if (!liveValues.length || typeof tradeoneAjax === 'undefined' || !tradeoneAjax.stock || tradeoneRefreshStockInfo.inFlight) { 160 return; 161 } 162 163 tradeoneRefreshStockInfo.inFlight = true; 164 liveValues.addClass('tradeone-live-refreshing').attr('aria-busy', 'true'); 165 166 jQuery.ajax({ 167 type: 'POST', 168 url: tradeoneAjax.url + (tradeoneAjax.url.indexOf('?') === -1 ? '?' : '&') + 'tradeone_live=' + Date.now(), 169 dataType: 'json', 170 cache: false, 171 headers: {'Cache-Control': 'no-cache, no-store'}, 172 data: {action: 'tradeone_get_stock_data', stock: tradeoneAjax.stock, _: Date.now()} 173 }).done(function (response) { 174 if (!response.success || !response.data) { 175 liveValues.removeClass('tradeone-live-refreshing').attr('aria-busy', 'false'); 176 return; 177 } 178 var liveSecurity = jQuery.extend({}, response.data.security, { 179 LastUpdate: response.data.market_date, 180 LastUpdateEn: response.data.market_date, 181 LastKnownRateDateEn: response.data.market_date, 182 ApiSyncTime: response.data.server_fetched 183 }); 184 liveValues.each(function () { 185 var field = jQuery(this).data('tradeone-field'); 186 var value = tradeoneFormatLiveValue(field, liveSecurity, response.data.settings); 187 if (value !== null) { 188 jQuery(this).html(value); 189 } 190 }); 191 liveValues.removeClass('tradeone-live-refreshing').attr('aria-busy', 'false'); 192 }).fail(function () { 193 liveValues.removeClass('tradeone-live-refreshing').attr('aria-busy', 'false'); 194 }).always(function () { 195 tradeoneRefreshStockInfo.inFlight = false;
196 }); 197} 198 199jQuery(function () { 200 if (jQuery('.tradeone-live-value').length && typeof tradeoneAjax !== 'undefined') { 201 tradeoneRefreshStockInfo(); 202 window.setInterval(tradeoneRefreshStockInfo, Number(tradeoneAjax.refreshInterval) || 60000); 203 } 204}); 205 206var DisplayArray = {}; 207 208jQuery('input:checkbox.change_display').each(function () { 209 var sThisVal = (this.checked ? jQuery(this).val() : ""); 210 if(sThisVal != '' || sThisVal != 0){ 211 DisplayArray[this.value] = sThisVal; 212 } 213 Object.keys(DisplayArray).join(', ') 214}); 215 216jQuery(".change_display").on("click", function() { 217 218 if (DisplayArray[this.value] === undefined) { 219 DisplayArray[this.value] = true; 220 } else { 221 delete DisplayArray[this.value]; 222 } 223 var stock_number = jQuery("#stock_number").val(); 224 var display = Object.keys(DisplayArray).join(',') 225 var show_on_pages_original = jQuery("#show_on_pages").val(); 226 var show_on_pages = show_on_pages_original.join(','); 227 var start = jQuery("#start").val(); 228 var color = jQuery("#color_chart").val(); 229 var DailyTurnoverInNis = jQuery("#DailyTurnoverInNis").val(); 230 var StockBaseInNis = jQuery("#StockBaseInNis").val(); 231 jQuery.ajax({ 232 type: "POST", 233 url: tradeoneAjax.url, 234 data: ({action:'tradeone_save_display',_ajax_nonce:tradeoneAjax.nonce,display:display,stock_number:stock_number,show_on_pages:show_on_pages,start:start,color:color,DailyTurnoverInNis:DailyTurnoverInNis,StockBaseInNis:StockBaseInNis}), 235 success: function (output) { 236 237 } 238 }); 239 240}); 241 242 243jQuery(document).on("change", "#stock_number",function() { 244 245 DisplayArray = []; 246 jQuery('input:checkbox.change_display').each(function () { 247 var sThisVal = (this.checked ? jQuery(this).val() : ""); 248 DisplayArray[sThisVal] = true; 249 }); 250 251 var display = Object.keys(DisplayArray).join(',') 252 var stock_number = jQuery("#stock_number").val(); 253 var show_on_pages_original = jQuery("#show_on_pages").val(); 254 var show_on_pages = show_on_pages_original.join(','); 255 var start = jQuery("#start").val(); 256 var color = jQuery("#color_chart").val(); 257 var DailyTurnoverInNis = jQuery("#DailyTurnoverInNis").val(); 258 var StockBaseInNis = jQuery("#StockBaseInNis").val(); 259 jQuery.ajax({ 260 type: "POST", 261 url: tradeoneAjax.url, 262 data: ({action:'tradeone_save_display',_ajax_nonce:tradeoneAjax.nonce,display:display,stock_number:stock_number,show_on_pages:show_on_pages,start:start,color:color,DailyTurnoverInNis:DailyTurnoverInNis,StockBaseInNis:StockBaseInNis}), 263 success: function (output) { 264 265 } 266 }); 267 268}); 269 270jQuery(document).on("change", "#show_on_pages",function() { 271 272 DisplayArray = []; 273 jQuery('input:checkbox.change_display').each(function () { 274 var sThisVal = (this.checked ? jQuery(this).val() : ""); 275 DisplayArray[sThisVal] = true; 276 }); 277 278 console.log(DisplayArray); 279 var display = Object.keys(DisplayArray).join(',') 280 var stock_number = jQuery("#stock_number").val(); 281 282 var show_on_pages_original = jQuery("#show_on_pages").val(); 283 var show_on_pages = show_on_pages_original.join(','); 284 285 var start = jQuery("#start").val(); 286 var color = jQuery("#color_chart").val(); 287 var DailyTurnoverInNis = jQuery("#DailyTurnoverInNis").val(); 288 var StockBaseInNis = jQuery("#StockBaseInNis").val(); 289 jQuery.ajax({ 290 type: "POST", 291 url: tradeoneAjax.url, 292 data: ({action:'tradeone_save_display',_ajax_nonce:tradeoneAjax.nonce,display:display,stock_number:stock_number,show_on_pages:show_on_pages,start:start,color:color,DailyTurnoverInNis:DailyTurnoverInNis,StockBaseInNis:StockBaseInNis}), 293 success: function (output) { 294 295 } 296 }); 297 298}); 299 300jQuery(document).on("change", ".date_range",function() { 301 302 DisplayArray = []; 303 jQuery('input:checkbox.change_display').each(function () { 304 var sThisVal = (this.checked ? jQuery(this).val() : ""); 305 DisplayArray[sThisVal] = true; 306 }); 307 308 console.log(DisplayArray); 309 var display = Object.keys(DisplayArray).join(',') 310 var stock_number = jQuery("#stock_number").val(); 311 312 var show_on_pages_original = jQuery("#show_on_pages").val(); 313 var show_on_pages = show_on_pages_original.join(','); 314 315 var start = jQuery("#start").val(); 316 var color = jQuery("#color_chart").val(); 317 var DailyTurnoverInNis = jQuery("#DailyTurnoverInNis").val(); 318 var StockBaseInNis = jQuery("#StockBaseInNis").val(); 319 jQuery.ajax({ 320 type: "POST", 321 url: tradeoneAjax.url, 322 data: ({action:'tradeone_save_display',_ajax_nonce:tradeoneAjax.nonce,dis
322play:display,stock_number:stock_number,show_on_pages:show_on_pages,start:start,color:color,DailyTurnoverInNis:DailyTurnoverInNis,StockBaseInNis:StockBaseInNis}), 323 success: function (output) { 324 325 } 326 }); 327 328}); 329 330 331jQuery(document).on("change", "#StockBaseInNis",function() { 332 333 334 335 if(jQuery(this).is(":checked")){ 336 StockBaseInNis = jQuery(this).val('1'); 337 }else{ 338 StockBaseInNis = jQuery(this).val('0'); 339 } 340 341 var DailyTurnoverInNis = jQuery("#DailyTurnoverInNis").val(); 342 var StockBaseInNis = jQuery(this).val(); 343 344 DisplayArray = []; 345 jQuery('input:checkbox.change_display').each(function () { 346 var sThisVal = (this.checked ? jQuery(this).val() : ""); 347 DisplayArray[sThisVal] = true; 348 }); 349 var display = Object.keys(DisplayArray).join(',') 350 var stock_number = jQuery("#stock_number").val(); 351 var show_on_pages_original = jQuery("#show_on_pages").val(); 352 var show_on_pages = show_on_pages_original.join(','); 353 var start = jQuery("#start").val(); 354 var color = jQuery("#color_chart").val(); 355 356 jQuery.ajax({ 357 type: "POST", 358 url: tradeoneAjax.url, 359 data: ({ 360 action:'tradeone_save_display', 361 _ajax_nonce:tradeoneAjax.nonce, 362 display:display, 363 stock_number:stock_number, 364 show_on_pages:show_on_pages, 365 start:start, 366 color:color, 367 StockBaseInNis:StockBaseInNis, 368 DailyTurnoverInNis:DailyTurnoverInNis 369 }), 370 success: function (output) { 371 372 } 373 }); 374 375}); 376 377jQuery(document).on("change", "#DailyTurnoverInNis",function() { 378 379 380 381 if(jQuery(this).is(":checked")){ 382 jQuery(this).val('1'); 383 }else{ 384 jQuery(this).val('0'); 385 } 386 var StockBaseInNis = jQuery("#StockBaseInNis").val(); 387 var DailyTurnoverInNis = jQuery(this).val(); 388 389 390 DisplayArray = []; 391 jQuery('input:checkbox.change_display').each(function () { 392 var sThisVal = (this.checked ? jQuery(this).val() : ""); 393 DisplayArray[sThisVal] = true; 394 }); 395 var display = Object.keys(DisplayArray).join(',') 396 var stock_number = jQuery("#stock_number").val(); 397 var show_on_pages_original = jQuery("#show_on_pages").val(); 398 var show_on_pages = show_on_pages_original.join(','); 399 var start = jQuery("#start").val(); 400 var color = jQuery("#color_chart").val(); 401 402 jQuery.ajax({ 403 type: "POST", 404 url: tradeoneAjax.url, 405 data: ({ 406 action:'tradeone_save_display', 407 _ajax_nonce:tradeoneAjax.nonce, 408 display:display, 409 stock_number:stock_number, 410 show_on_pages:show_on_pages, 411 start:start, 412 color:color, 413 StockBaseInNis:StockBaseInNis, 414 DailyTurnoverInNis:DailyTurnoverInNis 415 }), 416 success: function (output) { 417 418 } 419 }); 420 421 422}); 423 424//Bound Array 425 426var BoundArray = {}; 427 428jQuery('input:checkbox.change_display_bound').each(function () { 429 var sThisVal = (this.checked ? jQuery(this).val() : ""); 430 if(sThisVal != '' || sThisVal != 0){ 431 BoundArray[this.value] = sThisVal; 432 } 433 Object.keys(BoundArray).join(', ') 434}); 435 436jQuery(".change_display_bound").on("click", function() { 437 if (BoundArray[this.value] === undefined) { 438 BoundArray[this.value] = true; 439 } else { 440 delete BoundArray[this.value]; 441 } 442 443 var Bounddisplay = Object.keys(BoundArray).join(',') 444 var show_on_pages = jQuery("#show_on_pages_bounds").val(); 445 446 jQuery.ajax({ 447 type: "POST", 448 url: tradeoneAjax.url, 449 data: ({action:'tradeone_save_bounddisplay',_ajax_nonce:tradeoneAjax.nonce,Bounddisplay:Bounddisplay,show_on_pages:show_on_pages}), 450 success: function (output) { 451 452 } 453 }); 454 455}); 456 457jQuery(document).on("change", "#show_on_pages_bounds",function() { 458 459 BoundArray = []; 460 jQuery('input:checkbox.change_display').each(function () { 461 var sThisVal = (this.checked ? jQuery(this).val() : ""); 462 BoundArray[sThisVal] = true; 463 }); 464 465 var Bounddisplay = Object.keys(BoundArray).join(',') 466 var show_on_pages = jQuery("#show_on_pages_bounds").val(); 467 468 jQuery.ajax({ 469 type: "POST", 470 url: tradeoneAjax.url, 471 data: ({action:'tradeone_save_bounddisplay',_ajax_nonce:tradeoneAjax.nonce,Bounddisplay:Bounddisplay,show_on_pages:show_on_pages}), 472 success: function (output) { 473 474 } 475 }); 476 477}); 478 479 480if (jQuery('.js-example-basic-single').length && typeof jQuery.fn.select2 === 'function') { 481 jQuery('.js-example-basic-single').select2(); 482} 483 484jQuery(document).on('submit','#bounds_form',function () { 485 var data = jQuery(this).serialize() + '&action=tradeone_save_splitbounds&_ajax_nonce=' + tradeoneAjax.nonce; 486 jQuery.ajax({ 487 type: "POST", 488 url: tradeoneAjax.url, 489 data: data, 490 success: function (output) { 491 alert("××××¢ × ×©×ר ××צ×××") 492 } 493 }); 494 495 return false;
496}) 497 498 499jQuery(document).on('click','.update_src_code',function () { 500 let version = jQuery(this).val(); 501 jQuery.ajax({ 502 type: "POST", 503 url: tradeoneAjax.url, 504 data: ({action:'tradeone_update_core',_ajax_nonce:tradeoneAjax.nonce,updateCore:'updateCore',version:version}), 505 success: function (output) { 506 alert("×§×צ×× ×¢×××× × ××צ×××!!") 507 } 508 }); 509 510 return false; 511}) 512 513// ââ Connection Settings Page âââââââââââââââââââââââââââââââââââââââââââââââââ 514 515jQuery(document).on('click', '#tradeone_save_conn', function () { 516 var stock_id = jQuery('#tradeone_stock_id').val(); 517 var token = jQuery('#tradeone_token').val(); 518 var color = jQuery('#tradeone_chart_color').val(); 519 var graph_text_color = jQuery('#tradeone_graph_text_color').val(); 520 var graph_background_color = jQuery('#tradeone_graph_background_color').val(); 521 var button_bg_color = jQuery('#tradeone_button_bg_color').val(); 522 var button_text_color = jQuery('#tradeone_button_text_color').val(); 523 var button_active_bg_color = jQuery('#tradeone_button_active_bg_color').val(); 524 var button_active_text_color = jQuery('#tradeone_button_active_text_color').val(); 525 var positive_color = jQuery('#tradeone_positive_color').val(); 526 var negative_color = jQuery('#tradeone_negative_color').val(); 527 var volume_color = jQuery('#tradeone_volume_color').val(); 528 var start = jQuery('#tradeone_start_date').val(); 529 var simulate_date = jQuery('#tradeone_simulate_date').val(); 530 var $status = jQuery('#tradeone_conn_status'); 531 532 $status.text('Saving...'); 533 jQuery.ajax({ 534 type: 'POST', 535 url: tradeoneAjax.url, 536 data: { 537 action: 'tradeone_save_connection', 538 _ajax_nonce: tradeoneAjax.nonce, 539 stock_id: stock_id, 540 token: token, 541 color: color, 542 graph_text_color: graph_text_color, 543 graph_background_color: graph_background_color, 544 button_bg_color: button_bg_color, 545 button_text_color: button_text_color, 546 button_active_bg_color: button_active_bg_color, 547 button_active_text_color: button_active_text_color, 548 positive_color: positive_color, 549 negative_color: negative_color, 550 volume_color: volume_color, 551 start: start, 552 simulate_date: simulate_date 553 }, 554 success: function () { 555 $status.css('color', '#3c763d').text('Saved successfully'); 556 setTimeout(function () { $status.text(''); }, 3000); 557 // Reload so the simulation banner + active label refresh 558 setTimeout(function () { window.location.reload(); }, 800); 559 }, 560 error: function () { 561 $status.css('color', '#a94442').text('Save failed'); 562 } 563 }); 564}); 565 566jQuery(document).on('click', '#tradeone_clear_simulate', function () { 567 jQuery('#tradeone_simulate_date').val(''); 568 jQuery('#tradeone_save_conn').trigger('click'); 569}); 570 571jQuery(document).on('click', '#tradeone_test_conn', function () { 572 var stock_id = jQuery('#tradeone_stock_id').val(); 573 var token = jQuery('#tradeone_token').val(); 574 var $log = jQuery('#tradeone_log'); 575 var $status = jQuery('#tradeone_conn_status'); 576 577 $status.css('color', '').text('Testing...'); 578 $log.hide(); 579 580 jQuery.ajax({ 581 type: 'POST', 582 url: tradeoneAjax.url, 583 data: { 584 action: 'tradeone_test_connection', 585 _ajax_nonce: tradeoneAjax.nonce, 586 stock_id: stock_id, 587 token: token 588 }, 589 success: function (res) { 590 if (res.success) { 591 var d = res.data; 592 jQuery('#tradeone_log_request').text( 593 'API ping:\n' + d.request + 594 '\n\nStock data:\n' + (d.stock_url || '') 595 ); 596 var responseText = d.error 597 ? 'Error: ' + d.error 598 : (d.response || '(empty response)'); 599 try { 600 responseText = JSON.stringify(JSON.parse(responseText), null, 2); 601 } catch(e) {} 602 jQuery('#tradeone_log_response').text(responseText); 603 604 // Stock data response 605 var stockText = d.stock_raw || '(not fetched)'; 606 try { 607 var parsed = JSON.parse(stockText); 608 // Show only the Security row â the full JSON is huge 609 var security = parsed && parsed.Table && parsed.Table.Security 610 ? parsed.Table.Security[0] 611 : parsed; 612 stockText = JSON.stringify(security, null, 2); 613 } catch(e) {} 614 jQuery('#tradeone_log_stock_data').text(stockText); 615 616 // Stock symbol info 617 var si = d.stock_info; 618 if (si && (si.eng_symbol || si.heb_symbol)) { 619 jQuery('#tradeone_log_eng').text(si.eng_symbol || 'â'); 620 jQuery('#tradeone_log_heb').text(si.heb_symbol || 'â'); 621 jQuery('#tradeone_log_lastupdate').text(si.last_update || 'â'); 622 jQuery('#tradeone_log_stock').show(); 623 } else { 624 jQuery('#tradeone_log_stock').hide(); 625 } 626 627 var ok = !d.error && d.http_code >
627= 200 && d.http_code < 300; 628 $status.css('color', ok ? '#3c763d' : '#a94442') 629 .text(ok ? 'Connected (' + d.http_code + ')' : 'Connection failed (' + d.http_code + ')'); 630 $log.show(); 631 } 632 }, 633 error: function () { 634 $status.css('color', '#a94442').text('AJAX error'); 635 } 636 }); 637}); 638 639jQuery(document).on('click', '#tradeone_run_refresh_now', function () { 640 var $status = jQuery('#tradeone_conn_status'); 641 var $button = jQuery(this); 642 var $refreshLog = jQuery('#tradeone_refresh_log'); 643 644 $button.prop('disabled', true); 645 $status.css('color', '').text('Running refresh...'); 646 647 jQuery.ajax({ 648 type: 'POST', 649 url: tradeoneAjax.url, 650 data: { 651 action: 'tradeone_run_refresh_now', 652 _ajax_nonce: tradeoneAjax.nonce 653 }, 654 success: function (res) { 655 if (res && res.success) { 656 var lines = (res.data && Array.isArray(res.data.lines)) ? res.data.lines : []; 657 if ($refreshLog.length && lines.length) { 658 $refreshLog.text(lines.join('\n')); 659 } 660 var resultText = (res.data && res.data.last_result) ? res.data.last_result : 'OK'; 661 $status.css('color', '#3c763d').text('Refresh complete: ' + resultText); 662 } else { 663 $status.css('color', '#a94442').text('Refresh failed'); 664 } 665 }, 666 error: function () { 667 $status.css('color', '#a94442').text('Refresh AJAX error'); 668 }, 669 complete: function () { 670 $button.prop('disabled', false); 671 } 672 }); 673});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.