/** * Funciones generales Javascript * * @author MAltamirano * @date 03-06-2016 * @version 1.0 * @package LarrainVial * @copyright 2016 Finmarkets SPA * @since 03-06-2016 */ /** * Setting vars */ var aRequest = new Array(); var aRequestIndices = []; var aRequestTMP = new Array(); var OrderRequest = new Array(); /** * Setting Chart variables */ var chart; var graph; var chartCursor; var chartData5Y = []; var chartData1D = []; var chartData5D = []; var time_span = 3; var ContPoint = 0; /** * Function for format numbers PCT * @param num * @param post * @returns */ function formatNum(num, post) { var i = parseFloat(num); if(isNaN(i)) { return "-"; } var sign = ''; if(i < 0) { sign = '-'; } i = Math.abs(i); i = parseInt((i + 0.005) * 100, 10); i = i / 100; s = String(i); if(s.indexOf('.') < 0) { s += '.00'; } if(s.indexOf('.') == (s.length - 2)) { s += '0'; } s = sign + s; if(post!=null) { s = s+post; } s = s.replace('.', ','); return s; } /** * Formatea número * * @param num * @param prefix * @returns */ function formatNumber(Numero, Decimales) { pot = Math.pow(10,Decimales); num = parseInt(Numero * pot) / pot; nume = num.toString().split('.'); entero = nume[0]; decima = nume[1]; if (decima != undefined) { fin = Decimales-decima.length; } else { decima = ''; fin = Decimales; } for(i=0;i=0){ if((chars%4)==0){ buffer="."+buffer; } buffer=entero.charAt(marca)+buffer; marca--; chars++; } num=buffer+','+decima; return num; } /** * Function for format numbers * * @param num * @param post * @returns */ function formatNumPCT(num, post) { var i = parseFloat(num); if(isNaN(i)) { return "-"; } var sign = ''; if(i < 0) { sign = '-'; }else if(i > 0){ sign = '+'; }else{ sign = ''; } i = Math.abs(i); i = parseInt((i + 0.005) * 100, 10); i = i / 100; s = String(i); if(s.indexOf('.') < 0) { s += '.00'; } if(s.indexOf('.') == (s.length - 2)) { s += '0'; } s = sign + s; if(post!=null) { s = s+post; } s = s.replace('.', ','); return s; } /** * Format a number for display * * @param number (Number or String) - A number will be displayed * @param decimal (Number, Optional) - Number of decimal places (default, auto) * @param separador_decimal (String, optional) - decimal separator (default comma) * @param separador_miles (String, optional) - Thousands separator (default is none) * @param numero (Number o String) - Número que se mostrara * @param decimales (Number, opcional) - Nº de decimales (por defecto, auto) * @param separador_decimal (String, opcional) - Separador decimal (por defecto, coma) * @param separador_miles (String, opcional) - Separador de miles (por defecto, ninguno) */ function formato_numero(numero, decimales, separador_decimal, separador_miles){ // v27-05-2009 sign = ''; numero=parseFloat(numero); if(isNaN(numero)){ return ""; } if(numero > 0) sign = '+'; if(decimales!==undefined){ // We round numero=numero.toFixed(decimales); } // become the point separador_decimal numero=numero.toString().replace(".", separador_decimal!==undefined ? separador_decimal : ","); if(separador_miles){ // Add thousands separators var miles=new RegExp("(-?[0-9]+)([0-9]{3})"); while(miles.test(numero)) { numero=numero.replace(miles, "$1" + separador_miles + "$2"); } } return sign+ '' + numero; } /** * Function for ajax Constituents List * * @param nIdNotation: ID_NOTATION * @param valor: Field Sort * @param sort: 1 DESC, 0 ASC * @param tipo: 1 Numeric * @param method: 0 indice 1 sort */ function ajaxDetalleConstituyentes(nIdNotation,valor,sort,tipo,method){ $('#progress').show(); push.unsubscribeAll(document.getElementById('reloadConstituents')); $.get(rootSite + "elements/constituents.html",{ID_NOTATION:nIdNotation,S_FIELD:valor,SORT:sort,TYPE:tipo,METHOD:method},function(data){ $(".midBot").html(data); $('#progress').hide(); $('#imagenMapa').animate({opacity: 1}); $(".mapa").hide(); $("#wrapper").show(); push.subscribeObj(document.getElementById('reloadConstituents')); }); } /** * Resta dos Fechas * * @param dia1 * @param mes1 * @param ano1 * @param dia2 * @param mes2 * @param ano3 */ function restar(dia1,mes1,ano1,dia2,mes2,ano2){ fecha1 = new Date(ano1,mes1-1,dia1); fecha2 = new Date(ano2,mes2-1,dia2); var resta = ((fecha2-fecha1)/1000/3600/24)+1; resta = resta+"D"; return resta; } /** * Function for category to search **/ /*$.widget( "custom.catcomplete", $.ui.autocomplete, { _renderMenu: function( ul, items ) { var self = this, currentCategory = ""; var countStock = 0; var countIndices = 0; var countFM = 0; var countCurrency = 0; var countTax = 0; var countCommodities = 0; $.each( items, function( index, item ) { if (item.category == 'Acciones')countStock++; if (item.category == 'Indices')countIndices++; if (item.category == 'Fondos')countFM++; if (item.category == 'Monedas')countCurrency++; if (item.category == 'Tasa de Interes')countTax++; if (item.category == 'Commodities')countCommodities++; if ( item.category != currentCategory ) { idSpan=item.category.replace(/^\s+|\s+$/g, ""); ul.append( "
  • " + item.category + " ()
  • " ); currentCategory = item.category; } self._renderItem( ul, item); }); currentCategory = ""; $.each( items, function( index, item ) { if ( item.category != currentCategory ) { idSpan=item.category.replace(/^\s+|\s+$/g, ""); if (item.category == 'Acciones')$("#count"+idSpan).html(countStock); if (item.category == 'Indices')$("#count"+idSpan).html(countIndices); if (item.category == 'Fondos')$("#count"+idSpan).html(countFM); if (item.category == 'Monedas')$("#count"+idSpan).html(countCurrency); if (item.category == 'Tasa de Interes')$("#count"+idSpan).html(countTax); if (item.category == 'Commodities')$("#count"+idSpan).html(countCommodities); } }); } });*/ /** * Verifica si se ha cumplido algún periodo de transacción y pinta fila de Indice en gris (apagado) * */ function checkTrading(){ //var horaGMTZeroClient = new Date().toUTCString(); //horaGMTZeroClient = horaGMTZeroClient.toString(); var horaGMTZeroClient = moment.utc().format('YYYY-MM-DDTHH:mm:ss'); //horaGMTZeroClient = new Date(horaGMTZeroClient); var ds = horaGMTZeroClient; ds = ds.replace(/-/g, '/'); ds = ds.replace('T', ' '); ds = ds.replace(/(\+[0-9]{2})(\:)([0-9]{2}$)/, ' UTC\$1\$3'); horaGMTZeroClient = new Date(ds); var op1, op1 = 0; $.each(datetimeTrade, function(ind, val){ val.open = val.open.replace(" ","T"); val.close = val.close.replace(" ","T"); var ds = val.open; ds = ds.replace(/-/g, '/'); ds = ds.replace('T', ' '); ds = ds.replace(/(\+[0-9]{2})(\:)([0-9]{2}$)/, ' UTC\$1\$3'); var tmpOpenDT = new Date(ds); var dsE = val.close; dsE = dsE.replace(/-/g, '/'); dsE = dsE.replace('T', ' '); dsE = dsE.replace(/(\+[0-9]{2})(\:)([0-9]{2}$)/, ' UTC\$1\$3'); var tmpCloseDT = new Date(dsE); //tmpOpenDT = new Date(val.open); //tmpCloseDT = new Date(val.close); /*console.log("-----------------------------------------"); console.log(val.name+ ' | ' + ind); console.log(horaGMTZeroClient); console.log(tmpOpenDT); console.log(tmpCloseDT);*/ if( ind == 3969 ){ console.log(val.name+ ' | ' + ind); console.log(val.open+' | '+val.close); console.log("GMT: " + horaGMTZeroClient); console.log(tmpOpenDT); console.log(tmpCloseDT); } if ( (horaGMTZeroClient < tmpOpenDT) || (horaGMTZeroClient > tmpCloseDT) ){ console.log("Market: " + ind + " | Opened: false"); $('.clsIndex_' + parseInt(ind)).addClass('stockclose'); if( $('#estadoMercado_' + ind).length > 0) $('#estadoMercado_' + ind).html('Mercado Local Cerrado'); // $('.clsPCT_' + parseInt(ind)).css('color','#999999'); // $('.clsIndex_' + parseInt(ind)).css('color','#999999'); // $('.clsPCT_' + parseInt(ind)).css('color','#999999'); if(ind == 3969 && _mercado == 'chile'){ if( $('#tbodyTop').length > 0 ) $('#tbodyTop').addClass('stockclose'); if( $('#tbodyFlop').length > 0 ) $('#tbodyFlop').addClass('stockclose'); if( $('#tbodyTopflop').length > 0 ) $('#tbodyTopflop').addClass('stockclose'); $('.scroll-tbody').addClass('stockclose'); push.setTopflopColors({ red: "pos-var", green: "pos-var", igual: "pos-var", backRed: "pos-back-var", backGreen: "pos-back-var", backIgual: "pos-back-var" }); } } else { console.log("Market: " + ind + " | Opened: true"); //console.log(ind + " - ABIERTO"); // $('.clsIndex_' + parseInt(ind)).css('color','#333D47'); //IBEX forzado cerrado if( ind == 707 ) $('.clsIndex_' + parseInt(ind)).addClass('stockclose'); else $('.clsIndex_' + parseInt(ind)).removeClass('stockclose'); if( $('#estadoMercado_' + ind).length > 0) $('#estadoMercado_' + ind).html('Mercado Local Abierto'); if(ind == 3969 && _mercado == 'chile'){ $('#tbodyTop').removeClass('stockclose'); $('#tbodyFlop').removeClass('stockclose'); $('#tbodyTopflop').removeClass('stockclose'); $('.scroll-tbody').removeClass('stockclose'); // $('#tbodyTopflop .var').each(function(){ // $(this).removeClass('stockclose'); // var tmpDato = $(this).text(); // if(tmpDato.indexOf('+') != -1) $(this).removeClass().addClass('var green'); // else if(tmpDato.indexOf('-') != -1) $(this).removeClass().addClass('var red'); // else $(this).removeClass().addClass('var gray'); // // console.log($(this).text()); // }); push.setTopflopColors({ red: "var red", green: "var green", igual: "var gray", backRed: "var pos-back-var", backGreen: "var neg-back-var", backIgual: "var no-back-var" }); } // var tmpDato = $('.clsPCT_' + parseInt(ind)).text(); // if(tmpDato.indexOf('+') != -1) $('.clsPCT_' + parseInt(ind) + ' span').css('color','#009a12'); // else if(tmpDato.indexOf('-') != -1) $('.clsPCT_' + parseInt(ind) + ' span').css('color','#ff0000'); // else $('.clsPCT_' + parseInt(ind) + ' span').css('color','#d4d4d4'); } //console.log("-----------------------------------------"); }); // console.log(datetimeTrade); } /** * Verifica si se ha cumplido algún horario de transacción y pinta fila de Indice y Acciones en gris (apagado) * */ function checkTrading2(){ var _fechaGMTZeroClient = moment.utc().format('YYYY-MM-DD'); var horaGMTZeroClient = moment.utc().format('YYYY-MM-DDTHH:mm:ss'); var ds = horaGMTZeroClient; ds = ds.replace(/-/g, '/'); ds = ds.replace('T', ' '); ds = ds.replace(/(\+[0-9]{2})(\:)([0-9]{2}$)/, ' UTC\$1\$3'); horaGMTZeroClient = new Date(ds); var op1, op1 = 0; if($('#inptDatetimeTrade').val() == '') return false; var datetimeTrade = $('#inptDatetimeTrade').val(); var tmpDatetimeTrade = atob(datetimeTrade); tmpDatetimeTrade = $.parseJSON(tmpDatetimeTrade); $.each(tmpDatetimeTrade, function(ind, val){ val.open = val.open.replace(" ","T"); val.close = val.close.replace(" ","T"); var ds = val.open; ds = ds.replace(/-/g, '/'); ds = ds.replace('T', ' '); ds = ds.replace(/(\+[0-9]{2})(\:)([0-9]{2}$)/, ' UTC\$1\$3'); var tmpOpenDT = new Date(ds); var dsE = val.close; dsE = dsE.replace(/-/g, '/'); dsE = dsE.replace('T', ' '); dsE = dsE.replace(/(\+[0-9]{2})(\:)([0-9]{2}$)/, ' UTC\$1\$3'); var tmpCloseDT = new Date(dsE); var tmpExchangeActivo = $('#instrumentDefaultExchange').val(); var tmpIdActivo = $('#tmpIdNotation').val(); /** * Si Cierra mercado se agrega class stockclose, stockcloseBoton, stockCloseDiv * sino, se quitan las mismas * * < > */ //* CERRADO if ( (horaGMTZeroClient < tmpOpenDT) || (horaGMTZeroClient > tmpCloseDT) ){ $('.clsIndex_' + parseInt(ind)).addClass('stockclose'); if(val.name == 'IPSA') { console.log("Mercado IPSA CERRADO."); if ($('#mercadoOpen').length > 0){ $('#mercadoOpen').val(''); } if(tmpExchangeActivo == 2){ if ($('#blkDatosPrecioMercado').length > 0) $('#blkDatosPrecioMercado').addClass('stockCloseDiv'); if ($('#blkDatosPuntasMercado').length > 0) $('#blkDatosPuntasMercado').addClass('stockCloseDiv'); } //$('#blkEstadoMercado').addClass('stockcloseBoton'); //$('#blkEstadoMercado').removeClass('statusoff'); //$('#blkEstadoMercado').addClass('statusoff'); if ($('#ultopflop').length > 0) $('#ultopflop').addClass('stockclose'); if ($('#ultop').length > 0) $('#ultop').addClass('stockclose'); if ($('#ulflop').length > 0) $('#ulflop').addClass('stockclose'); if ($('#tbodyConstituyentesUno').length > 0) $('#tbodyConstituyentesUno').addClass('stockclose'); if ($('#tbodyConstituyentesDos').length > 0) $('#tbodyConstituyentesDos').addClass('stockclose'); if ($('#icnMercadoEstado').length > 0){ $('#icnMercadoEstado').removeClass('text-success'); $('#icnMercadoEstado').addClass('text-secondary'); $('#spnMercadoEstado').html('Cerrado'); } } $('.scroll-tbody').addClass('stockclose'); push.setTopflopColors({ red: "abajo", green: "arriba", igual: "apagado", backRed: "bg-baja", backGreen: "bg-alza", backIgual: "bg-off" }); } else { //Abierto $('.clsIndex_' + parseInt(ind)).removeClass('stockclose'); if(val.name == 'IPSA') { var _mercadoOpen = false; if ($('#mercadoOpen').length > 0){ _mercadoOpen = $('#mercadoOpen').val(); } console.log("Exchange: " + tmpExchangeActivo + " | Opened: " + _mercadoOpen); if(tmpExchangeActivo == 2){ //Si abre en el momento se deben poner en 0 mientras no lleguen datos, se comprueba por la fecha que tiene el dato en pantalla versus el dato con fecha de hoy if( $('#inptUltimaTransaccionFechaHora-' + tmpIdActivo).length > 0 ){ var tmpDateActiva = $('#inptUltimaTransaccionFechaHora-' + tmpIdActivo).val(); tmpDateActiva = tmpDateActiva * 1000; var _tmpDateActiva = new Date(tmpDateActiva); var vyear = _tmpDateActiva.getFullYear(); var tmpMM = _tmpDateActiva.getMonth()+1; var vmonth = (tmpMM < 10) ? '0'+(tmpMM) : tmpMM; //var vmonth = (_tmpDateActiva.getMonth() < 10) ? '0'+(_tmpDateActiva.getMonth()+1) : _tmpDateActiva.getMonth(); var vday = (_tmpDateActiva.getDate() < 10) ? '0'+_tmpDateActiva.getDate() : _tmpDateActiva.getDate(); _tmpDateActiva = vyear+'-'+vmonth+'-'+vday; if( _tmpDateActiva != _fechaGMTZeroClient){ console.log("Abierto (seteo 0), el instrumento tiene distinta fecha: " + _tmpDateActiva + " a la de hoy: " + _fechaGMTZeroClient); $("#blockPrecio").html('0'); $("#blockPCT").html('0'); $("#blockPCTRel").html('0'); $("#blockBid").html('0'); $("#blockBidVol").html('0'); $("#blockAsk").html('0'); $("#blockAskVol").html('0'); $("#blockVol").html('0'); } } if ($('#blkDatosPrecioMercado').length > 0) $('#blkDatosPrecioMercado').removeClass('stockCloseDiv'); if ($('#blkDatosPuntasMercado').length > 0) $('#blkDatosPuntasMercado').removeClass('stockCloseDiv'); } //$('#blkEstadoMercado').removeClass('stockcloseBoton'); //$('#blkEstadoMercado').removeClass('statusoff'); //$('#blkEstadoMercado').addClass('status'); $('#ultopflop').removeClass('stockclose'); $('#ultop').removeClass('stockclose'); $('#ulflop').removeClass('stockclose'); /** * Si está mostrando constituyentes y abre mercado limpiamos y setamos en 0, sino, limpiamos las clases. * */ if ( $('#tbodyConstituyentesDos').length > 0 && $('#tbodyConstituyentesUno').length > 0 ){ //Si abre en el momento se deben poner en 0 mientras no lleguen datos, en este caso recargamos los constituyentes if(!_mercadoOpen){ console.log("Abrió mercado, se refrescan los constituyentes."); setTimeout(function () { $.when( constituyentes('shortName') ).then(function () { $('#tbodyConstituyentesUno').removeClass('stockclose'); $('#tbodyConstituyentesDos').removeClass('stockclose'); }); }, 2000); } else { $('#tbodyConstituyentesUno').removeClass('stockclose'); $('#tbodyConstituyentesDos').removeClass('stockclose'); } } if ($('#mercadoOpen').length > 0){ $('#mercadoOpen').val(1); } if ($('#icnMercadoEstado').length > 0){ $('#icnMercadoEstado').removeClass('text-secondary'); $('#icnMercadoEstado').addClass('text-success'); $('#spnMercadoEstado').html('Abierto'); } } $('.scroll-tbody').removeClass('stockclose'); push.setTopflopColors({ red: "var abajo", green: "var arriba", igual: "var apagado", backRed: "var bg-baja", backGreen: "var bg-alza", backIgual: "var bg-off" }); } }); } /** * Genera token hash * */ function generateToken(length){ var a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".split(""); var b = []; for (var i=0; i