1var NetDania = NetDania || {}; 2NetDania.QL = NetDania.QL || {}; 3 4NetDania.QL.currentInstrList = []; 5NetDania.QL.DivInstruments = "NetDaniaDivInstruments_"; 6NetDania.QL.DivQL = "NetDaniaQL_"; 7NetDania.QL.Quotes = {}; 8NetDania.QL.Quotes.List = []; 9NetDania.QL.Options = {version: "1.1"}; 10NetDania.QL.SilverStart=0; 11NetDania.QL.GoldStart=0; 12NetDania.QL.RatioStart=0; 13NetDania.QL.SilverCurrent=0; 14NetDania.QL.GoldCurrent=0; 15NetDania.QL.RatioCurrent=0; 16NetDania.QL.SilverLastDir=''; 17NetDania.QL.GoldLastDir=''; 18NetDania.QL.RatioLastDir=''; 19 20NetDania.QL.GetControl = function (controlID) { 21 for (var i = 0; i < NetDania.QL.Quotes.List.length; i++) { 22 if (NetDania.QL.Quotes.List[i] !== undefined && NetDania.QL.Quotes.List[i].config.ID == controlID) { 23 return NetDania.QL.Quotes.List[i]; 24 } 25 } 26}; 27 28NetDania.QL.renderQuoteList = function (config) { 29 30 var _instance = this; 31 32 this.config = config; 33 34 var ID = ((config.containerId ? NetDania.QL.Util.HashCode(config.containerId) : NetDania.QL.Util.generateChars(4))); 35 36 config.ID = ID; 37 38 39 config.qlContainer = NetDania.QL.DivQL + config.ID; 40 41 NetDania.QL.Options.version = config.version || NetDania.QL.Options.version; 42 43 NetDania.QL.Quotes.List.push(this); 44 45 46 var connectionConfig = { 47 pollingInterval: config.pollingInterval || NetDania.JsApi.PoolingInterval.AUTO, 48 host: config.host, 49 failoverHosts: config.failoverHosts, 50 behavior: config.behavior || NetDania.JsApi.ConnectionType.AUTO, //POLLING or LONG POLLING 51 type: 0, 52 v: 3, 53 appId: 'jsQL v1.0' 54 }; 55 56 this.connection = new NetDania.JsApi.JSONConnection(connectionConfig); 57 58 this.connection.Connect(); //connect to the server 59 60 if (config.provider !== undefined && config.provider != '') { 61 this.provider = config.provider; 62 } else { 63 throw "Missing global provider parameter"; 64 } 65 66 67 var useDefaultColumns = config.columns || true; 68 69 70 this.component = {records: [], instr: {}, arr: [], arrRemove: [], id: ID}; 71 this.component.renderers = { 72 f10: { 73 fn: function (grid, rec, cellid, val, oldval, fxy) { 74 console.log('f10'); 75 let value = '<span>' + val + ' </span>'; 76 let coldval = oldval; 77 let metalstart = 0; 78 if(rec.realSymbol == 'XAGUSD' || rec.symbol == 'XAGUSD'){metalstart=NetDania.QL.SilverStart;} 79 if(rec.realSymbol == 'XAUUSD' || rec.symbol == 'XAUUSD'){metalstart=NetDania.QL.GoldStart;} 80 if(rec.realSymbol == 'XAUXAG' || rec.symbol == 'XAUXAG'){metalstart=NetDania.QL.RatioStart;} 81 if (metalstart != 0){coldval = metalstart;} 82 let sym = '$'; 83 if(rec.realSymbol == 'XAUXAG' || rec.symbol == 'XAUXAG'){ sym =''; } 84 if (val > coldval) { 85 //value = '<span style="color:green; background-color:#C8C8C8;">' + val + ' </span><span class="arrowIcon up"></span>'; 86 value = '<span style="color:green; background-color:#C8C8C8;">' + sym + val + ' </span>'; 87 } else if (val < coldval) { 88 //value = '<span style="color:#CC0000; background-color:#C8C8C8;">' + val + ' </span><span class="arrowIcon down"></span>'; 89 value = '<span style="color:#CC0000; background-color:#C8C8C8;">' + sym + val + ' </span>'; 90 } 91 return value; 92 }, 93 hightlightInterval: 500 94 }, 95 f11: { 96 fn: function (grid, rec, cellid, val, oldval, fxy) { 97 if(rec.realSymbol == '' || val == undefined || val == 'undefined'){ 98 return '<span></span>'; 99 } 100 101 if(rec.realSymbol != '' && val != undefined){ 102 val = parseFloat(val).toFixed(2); 103 } 104 let coldval = oldval; 105 if(coldval != '' && coldval != undefined){ 106 coldval = parseFloat(coldval).toFixed(2); 107 } 108 109 let metalstart = 0; 110 let prevval = 0; 111 let lastdir = ''; 112 let ddir = ''; 113 if(rec.realSymbol == 'XAGUSD' || rec.symbol == 'XAGUSD'){prevval=NetDania.QL.SilverCurrent;NetDania.QL.SilverCurrent=val;metalstart=NetDania.QL.SilverStart;} 114 if(rec.realSymbol == 'XAUUSD' || rec.symbol == 'XAUUSD'){prevval=NetDania.QL.GoldCurrent;NetDania.QL.GoldCurrent=val;metalstart=NetDania.QL.GoldStart;} 115 if(rec.realSymbol == 'XAUXAG' || rec.symbol == 'XAUXAG'){prevval=NetDania.QL.RatioCurrent;NetDania.QL.RatioCurrent=val;metalstart=NetDania.QL.RatioStart;} 116 117 if(rec.realSymbol == 'XAGUSD' || rec.symbol == 'XAGUSD'){ 118 if (NetDania.QL.SilverStart != 0 && NetDania.QL.SilverCurrent !=0){if(NetDania.QL.SilverCurrent > NetDania.QL.SilverStart){ddir='up';}else{ddir='dn';}} 119 NetDania.QL.SilverLastDir=lastdir=ddir; 120 } 121 if(rec.realSymbol == 'XAUUSD' || rec.symbol == 'XAUUSD'){ 122 if (NetDania.QL.GoldStart != 0 && NetDania.QL.GoldCurrent !=0){if(NetDania.QL.GoldCurrent > NetDania.QL.GoldStart){ddir='up';}else{ddir='dn';}} 123 NetDania.QL.GoldLastDir=lastdir=ddir; 124 } 125 if(rec.realSymbol == 'XAUXAG' || rec.symbol == 'XAUXAG'){ 126 if (NetDania.QL.RatioStart != 0 && NetDania.QL.RatioCurrent !=0){if(NetDania.QL.RatioCurrent > NetDania.QL.RatioStart){ddir='up';}else{ddir='dn';}} 127 NetDania.QL.RatioLastDir=lastdir=ddir; 128 } 129 if (metalstart != 0){coldval = metalstart;} 130 131 disval = val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); 132 var value = '<span>' + sym + disval + ' </span>'; 133 var sym = '$'; 134 if(rec.realSymbol == 'XAUXAG' || rec.symbol == 'XAUXAG'){ sym =''; } 135 if (val === "NaN") { 136 return '<span></span>'; 137 } 138 if (val > metalstart && val != prevval) { 139 value = '<span style="color:white; background-color:#C8C8C8;">' + sym + disval + ' </span>'; 140 } else if (val < metalstart && val != prevval) { 141 value = '<span style="color:white; background-color:#C8C8C8;">' + sym + disval + ' </span>'; 142 } else { 143 if(lastdir=='up'){ 144 value = '<span style="color:white;">' + sym + disval + ' </span>'; 145 } else if(lastdir=='dn'){ 146 value = '<span style="color:white;">' + sym + disval + ' </span>'; 147 } 148 } 149 return value; 150 }, 151 hightlightInterval: 300 152 }, 153 f25: { 154 fn: function (grid, rec, cellid, val, oldval, fxy) { 155 var realSymbol = rec.realSymbol; 156 if (rec.realSymbol === undefined) { 157 realSymbol = rec.symbol; 158 } 159 160 if (val == undefined) { 161 val = ""; 162 } else if (rec.newName.f25 != undefined) { 163 val = rec.newName.f25; 164 } 165 let tval = val; 166 if(tval=='G/S RATIO'){tval='GOLD/SILVER RATIO';} 167 return '<span title="' + tval + '">' + val + '</span>'; 168 169 } 170 }, 171 172 f15: { 173 fn: function (grid, rec, cellid, val, oldval, fxy) { 174 175 let value = parseFloat(val); 176 177 if (value.toString() === "NaN") { 178 return '<span></span>'; 179 } 180 181 return '<span style="color:' + (value > 0 ? "green" : "#CC0000") + ';">' + value.toFixed(2) + '% </span>'; 182 }, 183 hightlightInterval: 500 184 }, 185 186 f14: { 187 fn: function (grid, rec, cellid, val, oldval, fxy) { 188 189 let value = parseFloat(val); 190 191 if (value.toString() === "NaN") { 192 return '<span></span>'; 193 } 194 195 let sym = (rec.realSymbol === 'XAUXAG' || rec.symbol === 'XAUXAG') ? '' : '$'; 196 let isUp = value > 0; 197 198 return '<span class="arrowIcon ' 199 + (isUp ? "up" : "down") + '"></span><span style="color:' + (isUp ? "green" : "#CC0000") + ';">' 200 + (isUp ? sym + value.toFixed(2) : '-' + sym + Math.abs( value ).toFixed(2)) + ' </span>'; 201 }, 202 hightlightInterval: 500 203 }, 204 205 f17: { 206 fn: function (grid, rec, cellid, val, oldval, fxy) { 207 if (val === "N/A" || val === undefined) { 208 return "N/A"; 209 } 210 var dateUnf = new Date(val * 1000); 211 return '<div>' + NetDania.QL.Util.dateFormat(dateUnf, "m/d/yy HH:MM TT") + '</div>'; 212 } 213 }, 214 f3: { 215 fn: function (grid, rec, cellid, val, oldval, fxy) { 216 var sym = '$'; 217 if(rec.realSymbol == 'XAUXAG' || rec.symbol == 'XAUXAG'){ sym =''; } 218 val = parseFloat(val).toFixed(2); 219 val = val.replace("NaN", "N/A"); 220 return '<div>' + sym + val + '</div>'; 221 } 222 }, 223 f1: { 224 fn: function (grid, rec, cellid, val, oldval, fxy) { 225 var sym = '$'; 226 if(rec.realSymbol == 'XAUXAG' || rec.symbol == 'XAUXAG'){ sym =''; } 227 val = parseFloat(val).toFixed(2); 228 val = val.replace("NaN", "N/A"); 229 return '<div>' + sym + val + '</div>'; 230 } 231 }, 232 f2: { 233 fn: function (grid, rec, cellid, val, oldval, fxy) { 234 var sym = '$'; 235 if(rec.realSymbol == 'XAUXAG' || rec.symbol == 'XAUXAG'){ sym =''; } 236 val = parseFloat(val).toFixed(2); 237 val = val.replace("NaN", "N/A"); 238 return '<div>' + sym + val + '</div>'; 239 } 240 }, 241 f4: { 242 fn: function (grid, rec, cellid, val, oldval, fxy) { 243 var sym = '$'; 244 if(rec.realSymbol == 'XAUXAG' || rec.symbol == 'XAUXAG'){ sym =''; NetDania.QL.RatioStart=val; } 245 if(rec.realSymbol == 'XAGUSD' || rec.symbol == 'XAGUSD'){NetDania.QL.SilverStart=val;} 246 if(rec.realSymbol == 'XAUUSD' || rec.symbol == 'XAUUSD'){NetDania.QL.GoldStart=val;} 247 //if(rec.realSymbol == 'XAUXAG' || rec.symbol == 'XAUXAG'){ sym =''; } 248 val = parseFloat(val).toFixed(2); 249 val = val.replace("NaN", "N/A"); 250 return ''; //'<div>' + sym + val + '</div>'; 251 } 252 }, 253 f5: { 254 fn: function (grid, rec, cellid, val, oldval, fxy) { 255 val = parseFloat(val).toFixed(2); 256 val = val.replace("NaN", "N/A"); 257 return '<div>' + val + '</div>'; 258 } 259 } 260 }; 261 262 this.connection.addListener(NetDania.JsApi.Events.ONPRICEUPDATE, function (data) { 263 NetDania.QL.receiveQuotesJsonData(data, _instance.component); 264 }); 265 266 267 this.component.instr = this.instr; 268 269 var columns = config.columns; 270 271 if (useDefaultColumns === true) { 272 columns = { 273 f25: { 274 name: 'Name', 275 value: '', 276 width: 80, 277 hdTDcls: 'hdTDClsLeft', 278 TDCls: 'TDClsLeft', 279 cellCls: 'nameColumn', 280 hdCellCls: 'nameHeaderClass' 281 }, 282 f10: { 283 name: 'Bid', 284 value: '', 285 width: 80, 286 hdTDcls: 'hdTDClsRight lastHeaderCls', 287 TDCls: 'TDClsRight', 288 cellCls: 'kursColumn', 289 hdCellCls: 'gridDefaultHeader' 290 }, 291 f11: { 292 name: 'Ask', 293 value: '', 294 width: 80, 295 hdTDcls: 'hdTDClsRight lastHeaderCls', 296 TDCls: 'TDClsRight', 297 cellCls: 'changeColumn', 298 hdCellCls: 'gridChangeHeader' 299 }, 300 f2: { 301 name: 'High', 302 value: '', 303 width: 80, 304 hdTDcls: 'hdTDClsRight', 305 TDCls: 'TDClsRight', 306 cellCls: 'changeColumn', 307 hdCellCls: 'gridChangeHeader' 308 }, 309 f3: { 310 name: 'Low', 311 value: '', 312 width: 80, 313 hdTDcls: 'hdTDClsRight', 314 TDCls: 'TDClsRight', 315 cellCls: 'changeColumn', 316 hdCellCls: 'gridChangeHeader' 317 }, 318 f14: { 319 name: 'Net', 320 value: '', 321 width: 80, 322 hdTDcls: 'hdTDClsRight lastHeaderCls', 323 TDCls: 'TDClsRight', 324 cellCls: 'changeColumn', 325 hdCellCls: 'gridChangeHeader' 326 }, 327 f15: { 328 name: '%Change', 329 value: '', 330 width: 80, 331 hdTDcls: 'hdTDClsRight', 332 TDCls: 'TDClsRight', 333 cellCls: 'changeColumn', 334 hdCellCls: 'gridChangeHeader' 335 }, 336 f17: { 337 name: 'Time', 338 value: '', 339 width: 78, 340 hdTDcls: 'hdTDClsRight', 341 TDCls: 'TDClsRight', 342 cellCls: 'changeColumn', 343 hdCellCls: 'gridChangeHeader' 344 } 345 }; 346 } 347 348 this.component.columns = columns; 349 config.containerId = 'qlAppletTop'; 350 this.tableConfig = { 351 instr: this.component, 352 columns: columns, 353 contentClass: '', 354 contentOddClass: '', 355 width: '100%', 356 renderTo: config.qlContainer, 357 headerCls: 'headCls', 358 height: config.height 359 }; 360 361 config.renderTo = this.tableConfig.renderTo; 362 NetDania.QL.WriteHtml(config); 363 this.AddInstruments(config); 364 return NetDania.QL.renderTable(this.tableConfig); 365}; 366 367NetDania.QL.WriteHtml = function (config) { 368 369 var jshtml = 370 "<div class='divQuotes'>" + 371 "<div id='" + config.qlContainer + "'></div>" + 372 "</div>" 373 ; 374 if (config.containerId !== undefined) { 375 var el = document.getElementById(config.containerId); 376 el.innerHTML = jshtml; 377 } 378 else { 379 window.document.write(jshtml); 380 } 381}; 382 383NetDania.QL.renderTable = function (tableConfig, startFrame, endFrame) { 384 var headerClass, contentClass, contentOddClass, width, columns, instr; 385 386 columns = tableConfig.columns; 387 var cmp = tableConfig.instr; 388 instr = cmp.records; 389 var tableWidth = 0; 390 var headerHtml = ''; 391 var colsHtml = ''; 392 var lastField = ''; 393 contentClass = tableConfig.contentClass; 394 if (tableConfig.contentClass === undefined || tableConfig.contentClass === null || tableConfig.contentClass === '') { 395 contentClass = "gridDefaultContentClass"; 396 } 397 contentOddClass = tableConfig.contentOddClass; 398 if (tableConfig.contentOddClass === undefined || tableConfig.contentOddClass === null || tableConfig.contentOddClass === '') { 399 contentOddClass = "gridDefaultContentOddClass"; 400 } 401 402 if (tableConfig.width !== undefined && tableConfig.width !== null) { 403 tableWidth = width; 404 } 405 for (var prop in columns) { 406 lastField = prop; 407 } 408 var cols = 0; 409 for (var prop in columns) { 410 if (columns.hasOwnProperty(prop)) { 411 cols++;
412 colsHtml += '<col width=' + columns[prop].width + '>'; 413 tableWidth += parseInt(columns[prop].width); 414 var lc = ''; 415 if (lastField === prop) { 416 lc = ' lastHeaderCls'; 417 } 418 headerHtml += '<th class="' + columns[prop].hdTDcls + lc + '"><span class="' + columns[prop].hdCellCls + '"><span>' + columns[prop].name + '</span></span></th>'; 419 } 420 } 421 var forceHeight = ''; 422 if (tableConfig.height !== undefined) { 423 forceHeight = 'style="overflow: auto;overflow-x: hidden; max-height: ' + tableConfig.height + 'px;"'; 424 } 425 var align = ''; 426 if (tableConfig.align === '') { 427 align = "center"; 428 } 429 else { 430 align = tableConfig.align; 431 } 432 var jshtml = ''; 433 if (startFrame !== undefined) { 434 jshtml = startFrame + '<table width="100%" border="0" cellspacing="0" cellpadding="0" align="' + align + '">'; 435 } 436 else { 437 jshtml = '<table width="100%" border="0" cellspacing="0" cellpadding="0">'; 438 } 439 //jshtml += colsHtml; 440 var t = jshtml; 441 tableConfig.hideHeaders=true; 442 if (tableConfig.hideHeaders !== true) { 443 jshtml += '<thead><tr>'; 444 jshtml += headerHtml; 445 jshtml += '</tr></thead>'; 446 } 447 jshtml += '</table>'; 448 449 jshtml += '<div class="nd-ql-instruments-container" ' + forceHeight + '>'; 450 jshtml += t; 451 jshtml += '<tbody >'; 452 var gday = -1; 453 var gmonth = -1; 454 var gyear = -1; 455 if (tableConfig.groupByDate === true && instr.length > 0) { 456 gd = new Date(instr[0].data.t * 1000); 457 } 458
459 var noDataMessage = tableConfig.noDataMessage; 460 var lastValue = []; 461 if (noDataMessage === undefined) { 462 noDataMessage = 'No instruments selected!'; 463 } 464 465 if (instr.length == 0 || instr[0].newName.f25 == '') { 466 jshtml += '<tr><td colspan=' + cols + ' class="netd-grid-empty">' + noDataMessage + '</td></tr>'; 467 } 468 for (var ii = 0; ii < instr.length; ii++) { 469 if (instr[ii].newName.f25 !== '') { 470 if (tableConfig.groupByDate === true) { 471 var cd = new Date(instr[ii].data.t * 1000); 472 if (cd.getDay() !== gday || cd.getMonth() !== gmonth || cd.getYear() !== gyear) { 473 jshtml += '<tr><td colspan=' + cols + ' class="netd-group-hd ">' + dateFormat(cd, "dd. mmmm yyyy") + '</td></tr>'; 474 gday = cd.getDay(); 475 gmonth = cd.getMonth(); 476 gyear = cd.getYear(); 477 } 478 } 479 /* if (ii % 2 === 0) { 480 jshtml += '<tr class="' + contentClass + '">'; 481 } 482 else { 483 jshtml += '<tr class="' + contentOddClass + '">'; 484 }*/ 485 486 var recid = instr[ii].id; 487 488 for (var prop1 in columns) { 489 if (columns.hasOwnProperty(prop1)) { 490 var cellid = recid + '-' + prop1; 491 var value = instr[ii].data[prop1]; 492 if (value === undefined) { 493 value = ''; 494 } 495 if (cmp.renderers[prop1] !== undefined) { 496 value = cmp.renderers[prop1].fn(cmp, instr[ii], cellid, value, value, prop1); 497 lastValue[prop1]=value; 498 } else { 499 //value = '<span>' + value + '</span>'; 500 value = lastValue[prop1]; 501 console.log('value stored'); 502 } 503 var lc = ''; 504 if (lastField === prop1) { 505 lc = ' lastColCls'; 506 } 507 //console.log(prop1); 508 //console.log(instr[ii].newName[prop1]); 509 ttl=''; 510 if (prop1 == 'f11' || prop1 == 'f14' || prop1 == 'f15' ){ 511 //ttl=instr[ii].newName[prop1]; 512 //if(ttl=='G/S RATIO'){ttl='Gold/Silver Ratio';} 513 } 514 515 jshtml += '<td style="overflow: hidden;" title="'+ttl+'" data-id="'+instr[ii].symbol+'-'+prop1+'" class="' + columns[prop1].TDCls + lc + '"><span id="' + cellid + '" class="' + columns[prop1].cellCls + '" >' + value + '</span></td>'; 516 } 517 } 518 if(ii < 2){jshtml += '<td class="quotespacer" style="width:100px;"></td><!-- ' + instr[ii].data["f4"] + ' -->';} 519 //jshtml += '</tr>'; 520 } 521 } 522 jshtml += '</tbody>'; 523 jshtml += '</table>'; 524 jshtml += '</div>'; 525 if (endFrame !== undefined) { 526 jshtml += endFrame; 527 } 528 if (tableConfig.renderTo === 'script') { 529 return jshtml; 530 } 531 if (tableConfig.renderTo !== undefined) { 532 var el = document.getElementById(tableConfig.renderTo); 533 el.innerHTML = jshtml; 534 } 535 else { 536 window.document.write(jshtml); 537 } 538}; 539 540NetDania.QL.renderQuoteList.prototype.AddInstruments = function () { 541 if (this.component.arrRemove !== undefined && this.component.arrRemove.length > 0) { 542 this.connection.addRequests(this.component.arrRemove); 543 this.connection.Flush(); 544 } 545 546 547 this.instr = []; 548 549 for (var i = 0; i < this.config.instruments.length; i++) { 550 if (this.config.instruments[i].e == true) { 551 var priceReq = NetDania.JsApi.Request.getReqObjPrice(this.config.instruments[i].s, this.config.instruments[i].p || this.provider, true); 552 this.instr.push({ 553 r: priceReq, 554 f25: this.config.instruments[i].n || '', 555 d: this.config.instruments[i].d || 5, 556 o: this.config.instruments[i].o || 0 557 }); 558 this.connection.AddRequest(priceReq); 559 } 560 } 561 562 this.component.records = []; 563 this.component.arrRemove = []; 564 for (var ii = 0; ii < this.instr.length; ii++) { 565 var id = 'recid-' + this.config.ID + '-' + this.instr[ii].r.i; 566 var compute = new NetDania.QL.Util.ComputedQuoteRow(id, this.component); 567 this.component.records.push({ 568 id: id, 569 compute: compute, 570 symbol: this.instr[ii].r.s, 571 decimals: this.instr[ii].d, 572 data: {}, 573 newName: {f25: this.instr[ii].f25}, 574 provider: this.instr[ii].r.p 575 }); 576 this.component.arr.push(this.instr[ii].r); 577 } 578 579 this.component.instr = this.instr; 580 581 this.connection.Flush(); 582}; 583 584NetDania.QL.Configuration = { 585 instruments: [ 586 { n:'GOLD', s: 'XAUUSD', p: 'netdania_rtc', e: true }, 587 { n:'SILVER', s: 'XAGUSD', p: 'netdania_rtc', e: true }, 588 { n:'G/S RATIO', s: 'XAUXAG', p: 'netdania_rtc', e: true }, 589 590 ], 591 containerId: 'qlAppletTop', 592 provider: "netdania_rtc", 593 594 host: ('https:' == document.location.protocol ? 'https://' : 'http://') + "balancer.datafeeds.io/StreamingServer/StreamingServer", 595 failoverHosts: [('https:' == document.location.protocol ? 'https://' : 'http://') + "balancer-cro.netdania.com/StreamingServer/StreamingServer", ('https:' == document.location.protocol ? 'https://' : 'http://') + "81.89.26.212/StreamingServer/StreamingServer", ('https:' == document.location.protocol ? 'https://' : 'http://') + "109.166.243.196/StreamingServer/StreamingServer"], 596 columns: { 597 f4: { 598 name: 'Opening', 599 value: '', 600 width: 10, 601 hdTDcls: 'hdTDClsRight', 602 TDCls: 'TDCls', 603 cellCls: 'changeColumn', 604 hdCellCls: 'gridChangeHeader' 605 }, 606 f25: { 607 name: 'Live Metals Feed', 608 value: '', 609 width: 80, 610 hdTDcls: 'hdTDClsLeft', 611 TDCls: 'TDClsRight', 612 cellCls: 'nameColumn', 613 hdCellCls: 'nameHeaderClass' 614 }, 615 f11: { 616 name: 'Ask', 617 value: '', 618 width: 99, 619 hdTDcls: 'hdTDClsRight', 620 TDCls: 'TDClsRight', 621 cellCls: 'changeColumn', 622 hdCellCls: 'gridChangeHeader' 623 }, 624 f14: { 625 name: '+/- $', 626 value: '', 627 width: 83, 628 hdTDcls: 'hdTDClsRight', 629 TDCls: 'TDClsRight', 630 cellCls: 'changeColumn', 631 hdCellCls: 'gridChangeHeader' 632 }, 633 f15: { 634 name: '% Change', 635 value: '', 636 width: 83, 637 hdTDcls: 'hdTDClsRight', 638 TDCls: 'TDClsRight', 639 cellCls: 'changeColumn', 640 hdCellCls: 'gridChangeHeader' 641 } 642 643 } 644}; 645 646jQuery( document ).ready(function($) { 647 if ($('.top-bar').length > 0) { 648 var QL = new NetDania.QL.renderQuoteList(NetDania.QL.Configuration); 649 $('.top-bar').on('click', function (e) { 650 e.preventDefault(); 651 window.location = '/Spot-Price-Metal-Charts.html'; 652 }); 653 } 654});
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.