1var ITM_jPlayer_BetterAudioStats = window.ITM_jPlayer_BetterAudioStats || {}; 2ITM_jPlayer_BetterAudioStats.ITM_jPlayerLoad_BetterAudioStats = false; 3ITM_jPlayer_BetterAudioStats.ITM_jPlayerLoad_BetterAudioStats_Flag = ''; 4 5window.console.log('hi to wpb-jquery-jplayer.js file loaded..........'); //we need this.... 6 7jQuery(document).ready(function( $ ){ 8 readyFn_jPlayerFunc_BetterAudioStats( $ , 'document.ready' ); 9 ITM_jPlayer_BetterAudioStats.ITM_jPlayerLoad_BetterAudioStats_Flag = 'document.ready'; 10}); 11 12//jQuery(document).ready(function($) { 13function readyFn_jPlayerFunc_BetterAudioStats( $ , flagCheck = '') { 14 15 if (ITM_jPlayer_BetterAudioStats.ITM_jPlayerLoad_BetterAudioStats) { 16 window.console.log('ITM_jPlayerLoad_BetterAudioStats return : '+flagCheck); 17 window.console.log('ITM_jPlayerLoad_BetterAudioStats_Flag : '+ITM_jPlayer_BetterAudioStats.ITM_jPlayerLoad_BetterAudioStats_Flag); 18 //donot want to call this func again..... from pjax.... 19 return; 20 } 21 22 ITM_jPlayer_BetterAudioStats.ITM_jPlayerLoad_BetterAudioStats = true; 23 24 window.console.log('HERE >>>>> readyFn_jPlayerFunc_BetterAudioStats >> wpb-jquery-jplayer.js..... '+flagCheck); 25 26 try { // WPB-518 27 window.IS_PROD = jQuery('#is_prod').html().trim() == true; 28 if (!IS_PROD) { 29 console.log('Staging Server Detected'); 30 } 31 } catch (e) { 32 // console.log(e); 33 } 34 35 //-------------------------------------------------- 36 //WPB-402 37 // AWS CONFIGURATION 38 AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 39 IdentityPoolId: 'us-east-1:adc43218-48bc-4c15-87ed-037b09ebb86d' 40 }); 41 AWS.config.region = 'us-east-1'; 42 43 // STATE 44 // make a default kinesis var for context 45 var kinesis; 46 // define record holding array 47 var recordData = []; 48 //-------------------------------------------------- 49 50 //********************************************************************************* 51 // JPlayer instance is set by player.php module 52 if (typeof JPlayer === "object") { 53 // No need to check upon playlists (done by player.php) 54 // audio is array of audio objects (playlist for current player) 55 $(JPlayer.playlists).each(function(num, audio) { 56 // There is player in html for each plalist 57 var player = $("#player-" + num), 58 container = player.parents(".player-container"), 59 loader = container.find(".loading"), 60 playIndex = 0, 61 hasPreroll = false; 62 // Player ui elements 63 var currentTitle = container.find(".jp-current-title"); 64 //WD-705 65 container.find(".jp-play").bind("click", function() { 66 var srcAudioValue = player.find("audio").prop("src"); 67 if (!srcAudioValue) { 68 playlistConfig(playIndex); 69 } 70 }); 71 //--------------------------------------------------------- 72 73 $("#player-interface-" + num + " .jp-mute").on("click", function(ev) { 74 $(this).hide(); 75 $("#player-interface-" + num + " .jp-unmute").show(); 76 }); 77 78 $("#player-interface-" + num + " .jp-unmute").on("click", function(ev) { 79 $(this).hide(); 80 $("#player-interface-" + num + " .jp-mute").show(); 81 }); 82 83 function guid() { 84 function s4() { 85 return Math.floor((1 + Math.random()) * 0x10000) 86 .toString(16) 87 .substring(1); 88 } 89 return ( 90 s4() + 91 s4() + 92 "-" + 93 s4() + 94 "-" + 95 s4() + 96 "-" + 97 s4() + 98 "-" + 99 s4() + 100 s4() + 101 s4() 102 ); 103 } 104 105 var pollingInterval; 106 var isPlaying = false; 107 var durationTime = -1; 108 var uuid; 109 var currentEpisodeId = 0; 110 var previousEpisodeId = 0; 111 var uuid_chk; 112 113 var status = player.jPlayer({ 114 ready: function(event) { 115 window.console.log('wpb-jquery-jplayer.js >> JPlayer ready()'); 116 uuid = guid(); 117 // Loader is showing only while page loads 118 loader.remove(); 119 120 // Check if current playlist has preroll inside 121 // Preroll is allways singlular and first 122 if (isPreroll()) { 123 hasPreroll = true; 124 } 125 126 // WPB-6344 -- during super cached page , change audio preroll through js. 127 var total_prerolls = JPlayer.total_prerolls; 128 if (total_prerolls >= 2) { 129 var all_preroll_info_js_arr = JPlayer.all_preroll_info_arr 130 const randomPreroll = all_preroll_info_js_arr[Math.floor(Math.random() * all_preroll_info_js_arr.length)]; 131 console.log('random preroll_id : '+randomPreroll.preroll_id); 132 audio[playIndex].mp3 = randomPreroll.preroll_audio; 133 audio[playIndex].id = randomPreroll.preroll_id; 134 audio[playIndex].title = randomPreroll.preroll_title; 135 } 136 137 //WPB-3470 -- same as we have into -latest.js file advance player. 138 //we need to get duration properly during page load. 139 $(this).jPlayer("setMedia", { 140 mp3: audio[playIndex].mp3, 141 }); 142 143 // Check autoplay feature 144 if (player.attr("data-autoplay") === "1") { 145 player.jPlayer("play"); 146 } 147 // When volume is disabled there need to be some css changes done 148 if (event.jPlayer.status.noVolume) { 149 container.addClass("no-volume"); 150 } 151 }, 152 play: function() { 153 154 //WPB-435 155 var dfp_video_ad_tag_val = eval('wpb_jplayer_settings_' + num).dfp_video_ad_tag; 156 if (dfp_video_ad_tag_val) { 157 var videoPlayerContDivObj = document.getElementById('vid-container-' + num); 158 if (videoPlayerContDivObj.style.display == 'block') { 159 jQuery("#player-" + num).jPlayer('stop'); 160 eval('vid' + num).play(); //play video direct ads. 161 return; 162 } 163 } 164 165 var player_flag = checkPlaylistPlayer(num); 166 if (player_flag == 'advance_playlist') { 167 168 player.jPlayer("pauseOthers"); 169 170 container.addClass("playing").removeClass("pause"); 171 172 var ObjHid = document.getElementById('hid-extra-' + num); 173 var field_arr = ObjHid.value.split('^#^');
174 var field1_arr = field_arr[0].split('^@^'); 175 var e_id = field1_arr[1]; 176 var field2_arr = field_arr[1].split('^@^'); 177 var p_id = field2_arr[1]; 178 var field3_arr = field_arr[2].split('^@^'); 179 var flag_play = field3_arr[1]; 180 181 if (flag_play == 'episode') { 182 //if (currentEpisodeId == 0) 183 currentEpisodeId = e_id; 184 185 isPlaying = true; 186 collectStats(durationTime, uuid, 'play_episode_playlist'); 187 188 pollingInterval = setInterval(function() { 189 collectStats(durationTime, uuid, 'play_episode_playlist_interval'); 190 }, 30000); //WPB-298 changed to 15 seconds, instead of 5 seconds ( 5000 ) 191 // 30 seconds - WPB-7003 192 } else { //preroll 193 //isPlaying = false; 194 195 //clear cookie. so, when next preroll play then it should not insert last played episode. 196 //var ck_name = uuid; 197 //document.cookie = ck_name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 198 //$.cookie(ck_name,null, {domain:'.'+ckDomain}) 199 200 //no need. 201 /*if (uuid_chk) { 202 document.cookie = uuid_chk +'=; path=/; domain=.'+ckDomain+'; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 203 }*/ 204 205 //for new episode set duration time to reset it. 206 durationTime = -1; 207 clearInterval(pollingInterval); //during preroll stop sending ajax request for previous episode id. 208 } 209 return; 210 } //End of if (player_flag == 'advance_playlist') 211 212 //as usual code for single episode player. 213 // Avoid both jPlayers playing together. 214 player.jPlayer("pauseOthers"); 215 setTitle(); 216 217 container.addClass("playing").removeClass("pause"); 218 219 if (isPreroll()) { 220 container.addClass("playing-preroll"); 221 } else { 222 isPlaying = true; 223 collectStats(durationTime, uuid, 'play_episode_single'); 224 //WPB-306- I commented line because of multiple hits for duration for podcast playlist player 225 pollingInterval = setInterval(function() { 226 collectStats(durationTime, uuid, 'play_episode_single_interval'); 227 }, 30000); //WPB-3867 changed to 20 seconds, instead of 5 seconds ( 5000 ) 228 // 30 seconds - WPB-7003 229 230 container.removeClass("playing-preroll"); 231 } 232 }, 233 timeupdate: function(event) { 234 if (isPlaying === true) { 235 durationTime = event.jPlayer.status.currentTime; 236 } 237 }, 238 pause: function() { 239 container.addClass("pause").removeClass("playing"); 240 241 if (isPlaying === true) { 242 clearInterval(pollingInterval); 243 collectStats(durationTime, uuid, 'pause_episode'); 244 isPlaying = false; 245 } 246 }, 247 ended: function() { 248 //in play added code for advance playlist. so, return from here. 249 var player_flag = checkPlaylistPlayer(num); 250 if (player_flag == 'advance_playlist') { 251 return; 252 } 253 254 //as usual code for single episode player. 255 if (isPreroll() == false) { 256 $("#play-btn-" + num).removeClass("hidden"); 257 $("#play-btn-" + num).css("display", "block"); 258 259 //single player and once actual audio stop to play then hide equilizer. 260 //better audio stats plugin activated. 261 $("#eq-" + num).hide(); 262 } 263 playListNext(); 264 },
265 oggSupport: false, 266 swfPath: "/wp-content/plugins/wpb-show-core/modules/jplayer", 267 supplied: "mp3", 268 wmode: "window", 269 cssSelectorAncestor: "#player-interface-" + num, 270 noVolume: false 271 }); 272 273 $("#play-btn-" + num).click(function() { 274 $("#play-btn-" + num).addClass("hidden"); 275 $("#pause-btn-" + num).removeClass("hidden"); 276 }); 277 278 $("#pause-btn-" + num).click(function() { 279 $("#pause-btn-" + num).addClass("hidden"); 280 $("#play-btn-" + num).removeClass("hidden"); 281 }); 282 283 /** 284 * Setup player media according to passed index 285 * @param {int} index playlist index 286 * @return {[type]} [description] 287 */ 288 function playlistConfig(index) { 289 player.jPlayer("setMedia", audio[index]); 290 } 291 292 /** 293 * Set current playing title 294 */ 295 function setTitle() { 296 currentTitle.html(audio[playIndex].title); 297 } 298 299 /** 300 * Play next playlist item 301 * @return {void} 302 */ 303 function playListNext() { 304 var index = playIndex + 1 < audio.length ? playIndex + 1 : 0; 305 playListChange(index); 306 307 // There is no repeat, and player is minimized 308 if (index == 0) { 309 $("#play-btn-" + index).removeClass("hidden"); 310 $("#pause-btn-" + index).addClass("hidden"); 311 } else { 312 player.jPlayer("play"); 313 } 314 } 315 316 /** 317 * Set audio according to passed index 318 * @param {int} index playlist index 319 * @return {void} 320 */ 321 function playListChange(index) { 322 playIndex = index; 323 playlistConfig(index); 324 } 325 326 /** 327 * Check if playlist item is preroll 328 * @param {int} index playlist item to check 329 * @return {bool} 330 */ 331 function isPreroll(index) { 332 if (typeof index == "number") { 333 return audio[index].hasOwnProperty("preroll"); 334 } else { 335 return audio[playIndex].hasOwnProperty("preroll"); 336 } 337 } 338 339 var ajaxQueue = []; 340 //var ckArrCheck = []; 341 342 /** 343 * Collect player statistics 344 * Stats is collected for 345 * @return {void} 346 */ 347 function collectStats(durationTime, uuid, flag_fun_call) { 348 //WPB-3351 349 if(AWS.config.credentials == null || typeof AWS.config.credentials === "undefined"){ 350 // AWS CONFIGURATION 351 AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 352 IdentityPoolId: 'us-east-1:adc43218-48bc-4c15-87ed-037b09ebb86d' 353 }); 354 AWS.config.region = 'us-east-1'; 355 } 356 //---------------------------------------------------------------------- 357 var player_flag = checkPlaylistPlayer(num); 358 359 var blogid = eval('wpb_jplayer_settings_' + num).blogid; 360 var gmt_offset_site = eval('wpb_jplayer_settings_' + num).gmt_offset_site; 361 var ck_dm = eval('wpb_jplayer_settings_' + num).ck_dm; 362 363 var ajax_url_val = eval('wpb_jplayer_settings_' + num).ajaxurl_path; 364 var ajax_simple = 0; 365 if (ajax_url_val) { 366 ajax_url_val = eval('wpb_jplayer_settings_' + num).siteUrl + ajax_url_val; 367 ajax_simple = 1; 368 } else { 369 ajax_url_val = ajaxurl; //as usual. 370 } 371 //======================= FOR PLAYLIST PLAYER ========================== 372 if (player_flag == 'advance_playlist') { 373 var ObjHid = document.getElementById('hid-extra-' + num); 374 var field_arr = ObjHid.value.split('^#^'); 375 var field1_arr = field_arr[0].split('^@^'); 376 var e_id = field1_arr[1]; 377 var field2_arr = field_arr[1].split('^@^'); 378 var p_id = field2_arr[1]; 379 var field3_arr = field_arr[2].split('^@^'); 380 var flag_play = field3_arr[1]; 381 //WPB-434 382 var field4_arr = field_arr[3].split('^@^'); 383 var pod_id = field4_arr[1]; 384 var field5_arr = field_arr[4].split('^@^'); 385 var ply_f = field5_arr[1]; 386 if (flag_play == 'episode') { 387 var send_ajax_call = true; var current_index_of_elt = 0; var flag_array_fill = ''; 388 var hidPlayedObj = document.getElementById('hid-palyed-' + num); 389 390 if (hidPlayedObj && hidPlayedObj != 'undefined') { //Cannot read property 'value' of null 391 392 if (document.getElementById('hid-palyed-' + num).value) { 393 var played_str = document.getElementById('hid-palyed-' + num).value; 394 var played_arr = document.getElementById('hid-palyed-' + num).value.split(':'); 395 if (in_array_js_check(e_id, played_arr) != -1) { 396 //in array then donot insert it again. 397 //send_ajax_call = false; //no need here. as we need request every 15 seconds to add duration. 398 399 current_index_of_elt = in_array_js_check(e_id, played_arr); 400 if (current_index_of_elt == 0) { 401 previousEpisodeId = played_arr[played_arr.length - 1]; 402 //var ck_name = uuid; 403 //document.cookie = ck_name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 404 //clearInterval(pollingInterval); 405 } else { 406 previousEpisodeId = played_arr[current_index_of_elt - 1]; 407 } 408 409 flag_array_fill = 'ALREADY_INTO_ARRAY'; 410 411 //uuid_chk = uuid; //donot use here. as it take old uuid. 412 } else { 413 document.getElementById('hid-palyed-' + num).value = played_str + ':' + e_id; 414 415 //set previous episode id. 416 var played_arr = document.getElementById('hid-palyed-' + num).value.split(':'); 417 //if (played_arr.length >= 2) 418 //previousEpisodeId = played_arr[played_arr.length-2]; 419 420 current_index_of_elt = in_array_js_check(e_id, played_arr); 421 previousEpisodeId = played_arr[current_index_of_elt - 1]; 422 423 flag_array_fill = 'ADD_INTO_ARRAY'; //another episode id, next one. 424 425 //delete cookie 426 //var ck_name = uuid; //previous played episode cookie. 427 //document.cookie = ck_name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 428 //$.cookie(ck_name,null, {domain:'.'+ckDomain}) 429 430 //in WPB-402 we donot use cookie. so, we may donot need it. 431 if (uuid_chk) { 432 try { 433 document.cookie = uuid_chk + '=; path=/; domain=.' + ckDomain + '; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 434 //$.cookie(uuid_chk,null, {domain:'.'+ckDomain}) 435 } catch (e) {} 436 } 437 438 //WPB-402 -- in case if preroll not set ?? 439 durationTime = -1; //no need here, to reset duration. we already did into preroll things on play event. 440 441 uuid = guid();
441 //new number for new episode id. ( next episode ) 442 uuid_chk = uuid; 443 444 //ajaxQueue.length = 0; 445 //ajaxQueue = []; 446 } 447 } else { 448 document.getElementById('hid-palyed-' + num).value = e_id; 449 flag_array_fill = 'FIRST_TIME'; 450 451 uuid_chk = uuid; 452 } 453 454 }//End of if (hidPlayedObj && hidPlayedObj != 'undefined') 455 456 if (send_ajax_call) { 457 var extra_param_ck = ''; var ck_name = uuid; 458 //if (parseInt(currentEpisodeId) != parseInt(e_id)) { 459 460 //extra_param_ck = 'wpb_code:'+current_index_of_elt+':'+flag_array_fill+':'+e_id+':ck_name@'+ck_name+':previous@'+previousEpisodeId+':current@'+currentEpisodeId+':'+flag_fun_call+':'+durationTime+':uuid@'+uuid+':uuid_chk@'+uuid_chk; 461 var data = {}; 462 if (ajax_simple) { 463 data.blogid = blogid; data.gmt_offset_site = gmt_offset_site; data.ck_dm = ck_dm; data.ajax_simple = ajax_simple; 464 } 465 data.action = 'save_play_duration'; 466 data.type = 'audio'; 467 data.topic = 'audio_player_stats'; //WPB-402 468 469 data.id = e_id; 470 data.preroll_id = p_id; 471 data.player_type = 'advance_playlist'; 472 data.duration = durationTime; /*data.uuid = uuid;*/ 473 data.uuid = uuid_chk; 474 data.extra_param_ck = extra_param_ck; 475 data.flag_call = 'wpb_req_playlist'; 476 data.flag_array_fill = flag_array_fill; //WPB-402 -- pass this too check in log file. 477 478 data.podcast_id = pod_id; //WPB-434 479 480 //ckArrCheck.push(uuid); 481 482 //-------------------------------------------------- 483 //WPB-402 484 var record = { 485 topic: 'audio_player_stats', 486 data: data 487 }; 488 489 if (!IS_PROD) { 490 record.topic = 'audio_player_stats_test'; 491 console.log("Local/Staging Debug:", JSON.stringify(record, null, 2)); 492 } 493 494 var params = { // for AWS Kinesis 495 Data: JSON.stringify(record) + ",", 496 PartitionKey: 'partition-' + AWS.config.credentials.identityId 497 } 498 recordData.push(params); 499 //stop below individual ajax request for single player. 500 //-------------------------------------------------- 501 502 //WPB-402 -- stop this now. jquery ajax 503 } //End of if (send_ajax_call) 504 505 } //End of if (flag_play == 'episode') 506 else { //preroll. 507 //clear cookie and set new uuid name to cookie. 508 /*var ck_name = uuid; 509 uuid = guid(); 510 document.cookie = ck_name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';*/ 511 } 512 return; 513 } //End of if (player_flag == 'advance_playlist') 514 //---------------------------------------------------------------------- 515 516 //======================= FOR SINGLE PLAYER ========================== 517 518 //WPB-434 519 var pod_id = 0; 520 try { 521 var ObjHid = document.getElementById('hid-extra-' + num); 522 var field_arr = ObjHid.value.split('^#^'); 523 var field1_arr = field_arr[0].split('^@^'); 524 var e_id = field1_arr[1]; 525 var field2_arr = field_arr[1].split('^@^'); 526 var p_id = field2_arr[1]; 527 var field3_arr = field_arr[2].split('^@^'); 528 var flag_play = field3_arr[1]; 529 var field4_arr = field_arr[3].split('^@^'); 530 var pod_id = field4_arr[1]; 531 var field5_arr = field_arr[4].split('^@^'); 532 var ply_f = field5_arr[1]; 533 //alert('advance_single >> '+e_id+' : '+p_id+' : '+pod_id); 534 } catch (e) {} 535 536 //as usual code for single episode player. 537 var type, 538 action = "save_play_duration", 539 data = {}; 540 541 type = isPreroll() ? "preroll" : "audio"; 542 543 //WPB-402 544 data.topic = 'audio_player_stats'; //i think no need here as we used into record var below.
545 //data.topic = 'audio_player_stats_without_domain'; 546 547 // Prepare data to send with notification request 548 data.action = action; 549 550 if (ajax_simple) { 551 data.blogid = blogid; data.gmt_offset_site = gmt_offset_site; data.ck_dm = ck_dm; 552 data.ajax_simple = ajax_simple; let new_date = new Date(); data.date = new_date.toISOString(); 553 } 554 555 data.type = type; 556 data.id = audio[playIndex].id; 557 data.duration = durationTime; 558 data.uuid = uuid; 559 560 // Send preroll id if audio is playing and current plalist contains preroll 561 if (!isPreroll() && hasPreroll) { 562 data.preroll_id = audio[0].id; 563 } 564 565 data.flag_call = 'wpb_req_single'; 566 data.flag_array_fill = ''; 567 568 data.podcast_id = pod_id; //WPB-434 569 570 //do we need to change here or not ? //WPB-402 571 //data.signature = ''; 572 573 //if preroll then donot fill recordData array or send request. 574 if (type == 'preroll') { 575 return; 576 } 577 578 //-------------------------------------------------- 579 //WPB-402 580 var record = { 581 topic: 'audio_player_stats', 582 //topic: 'audio_player_stats_without_domain', 583 //topic: 'iap-dev', 584 //lambda_signature: '', //later we can check here by passing it. right now no need. 585 data: data 586 }; 587 588 if (!IS_PROD) { 589 record.topic = 'audio_player_stats_test'; 590 console.log("Local/Staging Debug:", JSON.stringify(record, null, 2)); 591 } 592 593 var params = { // for AWS Kinesis 594 //lambda_signature: '', //later we can check here by passing it. right now no need. 595 // add a comma to the json string to make it easier to parse the s3 file
596 Data: JSON.stringify(record) + ",", 597 // using the identityId as a partition so that it distibutes by user/browser 598 PartitionKey: 'partition-' + AWS.config.credentials.identityId 599 } 600 recordData.push(params); 601 //stop below individual ajax request for single player. 602 //-------------------------------------------------- 603 604 // push each request to an array and use that to defer? use .done() 605 // stop ajax jquery. 606 } //End of function collectStats 607 608 function in_array_js_check(needle, haystack) { 609 var found = 0; 610 for (var i = 0, len = haystack.length; i < len; i++) { 611 if (haystack[i] == needle) return i; 612 found++; 613 } 614 return -1; 615 } 616 617 //WPB-227 618 function checkPlaylistPlayer(num) { 619 var player_unique_index_val = num; 620 var player_flag = ''; 621 try { 622 var playlists_arr = eval('playlists_arr_' + player_unique_index_val); 623 if (playlists_arr) { 624 player_flag = 'advance_playlist'; 625 } 626 } catch (e) {} 627 628 return player_flag; 629 } //End of func checkPlaylistPlayer 630 }); // foreach playlists loop 631 632 } // instance presence check 633 //********************************************************************************* 634 635 //-------------------------------------------------------------- 636 //put outside foreach playlists loop. 637 //WPB-402 638 AWS.config.credentials.get(function(err) { 639 // attach event listener 640 if (err) { 641 return; 642 } 643 // create kinesis service object 644 kinesis = new AWS.Kinesis({ 645 apiVersion: '2013-12-02' 646 }); 647 648 setInterval(function() { 649 //return; //donot pass during local check. 650 if (!recordData.length) { 651 return; 652 } // dont do anything if there is no records 653 // upload data to Amazon Kinesis 654 if (kinesis) { 655 kinesis.putRecords({ 656 Records: recordData, 657 //StreamName: 'audio-stats-pipeline' //Not working. giving error -- not authorised 658 StreamName: 'iap-stats-pipeline' 659 }, function(err, data) { 660 if (err) { 661 //console.error(err); 662 } 663 recordData = []; 664 }); 665 // clear record data 666 } // if there is a kinesis 667 }, 10000); // set interval - 10 seconds WPB-7003 668 //can we change interval from 1000 ( 1 second ) to other seconds ? 669 }); 670 //-------------------------------------------------------------- 671 672//}); 673 674}; //End ready
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.