476 lines
15 KiB
JavaScript
476 lines
15 KiB
JavaScript
/**
|
|
* Created by Abhishek Kumar Sinha on 5/1/2018.
|
|
*/
|
|
$(document).ready(function() {
|
|
var sel1 = $('#sel-bc-1').val();
|
|
var sel2 = $('#sel-bc-2').val();
|
|
//load_fresh_table_data(sel1, sel2);
|
|
run_OrderMatchingAlgorithm();
|
|
tradeList();
|
|
MyOrders();
|
|
MyTransactions();
|
|
sel_bc_stats(sel1, sel2);
|
|
user_wallet();
|
|
current_prices("RMT");
|
|
});
|
|
|
|
$(document).on('click', '#is_mkt', function() {
|
|
$('#ex-price').val('').toggle();
|
|
});
|
|
|
|
var my_date_format = function(input){
|
|
var d = new Date(Date.parse(input.replace(/-/g, "/")));
|
|
var month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
var date = d.getDate() + " " + month[d.getMonth()] + ", " + d.getFullYear();
|
|
var time = d.toLocaleTimeString().toLowerCase().replace(/([\d]+:[\d]+):[\d]+(\s\w+)/g, "$1$2");
|
|
return (date + " " + time);
|
|
};
|
|
|
|
$(document).on('click', '#ex-sub', function() {
|
|
|
|
var btn = $(this);
|
|
var sel1 = $('#sel-bc-1').val();
|
|
var sel2 = $('#sel-bc-2').val();
|
|
var pr = $('#ex-price').val();
|
|
var qty = $('#ex-qty').val();
|
|
var bs_rad = $("input[name='gridRadios']:checked").val();
|
|
var is_mkt = $('#is_mkt').is(":checked");
|
|
|
|
btn.prop( "disabled", true );
|
|
place_order(sel1, sel2, pr, qty, bs_rad, is_mkt, btn);
|
|
user_wallet();
|
|
current_prices(sel2);
|
|
});
|
|
|
|
function displayNotice(msg, _type) {
|
|
var v = '<li>'+msg+'</li>';
|
|
|
|
switch (_type) {
|
|
case 'success':
|
|
$('#MsgModel').find('ul.msg-ul').removeClass('text-danger text-warning').addClass('text-info').html(v);
|
|
break;
|
|
case 'failure':
|
|
$('#MsgModel').find('ul.msg-ul').removeClass('text-info text-warning').addClass('text-danger').html(v);
|
|
break;
|
|
case 'warning':
|
|
$('#MsgModel').find('ul.msg-ul').removeClass('text-danger text-info').addClass('text-warning').html(v);
|
|
break;
|
|
default:
|
|
$('#MsgModel').find('ul.msg-ul').removeClass('text-danger text-warning').addClass('text-info').html(v);
|
|
}
|
|
|
|
$('#MsgModel').modal('toggle');
|
|
}
|
|
|
|
function place_order(sel1, sel2, pr, qty, bs_rad, is_mkt, btn) {
|
|
var subject = 'placeOrder';
|
|
$.ajax({
|
|
method: 'post',
|
|
url: 'ajax/pending_orders.php',
|
|
data: { subject:subject, sel1:sel1, sel2:sel2, price:pr, qty:qty, bs_rad:bs_rad, is_mkt:is_mkt},
|
|
error: function(xhr, status, error) {
|
|
console.log(xhr.responseText);
|
|
},
|
|
success: function(data) {
|
|
btn.prop( "disabled", false);
|
|
var IS_JSON = true;
|
|
try {
|
|
var d = jQuery.parseJSON(data);
|
|
}
|
|
catch(err) {
|
|
IS_JSON = false;
|
|
}
|
|
|
|
if(IS_JSON) {
|
|
if(d.error == true) {
|
|
$msg = d.msg;
|
|
displayNotice($msg, "failure");
|
|
} else if(d.order != null && d.order.error == true && d.order.message != null) {
|
|
displayNotice(d.order.message, "failure");
|
|
} else if(d.user == '') {
|
|
displayNotice('There was a problem in identifying the user.', "failure");
|
|
} else {
|
|
$('#empty_msg').hide();
|
|
var trade = "";
|
|
if($.trim(bs_rad)=="ex-buy") {
|
|
trade = "buy";
|
|
} else if ($.trim(bs_rad)=="ex-sell") {
|
|
trade = "sell";
|
|
}
|
|
displayNotice('You entered a '+trade+' order for '+qty + ' ' + sel1+ ' at '+pr+ ' '+sel2+'.', "success");
|
|
run_OrderMatchingAlgorithm();
|
|
}
|
|
} else {
|
|
displayNotice('Something went wrong. Please contact the administrator.', "failure");
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function myTimeoutFunction() {
|
|
run_OrderMatchingAlgorithm();
|
|
setTimeout(myTimeoutFunction, 20000);
|
|
}
|
|
|
|
myTimeoutFunction();
|
|
|
|
// Update tables a/c to change in select
|
|
$(document).on('change', ".selbc", function() {
|
|
var bc1 = $('#sel-bc-1').val();
|
|
var bc2 = $('#sel-bc-2').val();
|
|
load_fresh_table_data(bc1, bc2);
|
|
tradeList(bc1, bc2);
|
|
tradersList(bc2);
|
|
sel_bc_stats(bc1, bc2);
|
|
current_prices(bc2);
|
|
});
|
|
|
|
// function to check if JSON data is array or not
|
|
function isArray(what) {
|
|
return Object.prototype.toString.call(what) === '[object Array]';
|
|
}
|
|
|
|
function load_fresh_table_data(bc1, bc2) {
|
|
|
|
$.ajax({
|
|
method:'post',
|
|
url:'ajax/refresh_table.php',
|
|
data: { task : 'refresh', bc1:bc1, bc2:bc2},
|
|
error: function(xhr, status, error) {
|
|
console.log(xhr.responseText);
|
|
},
|
|
success: function(data) {
|
|
console.log(data);
|
|
if(data !== '') {
|
|
var d = jQuery.parseJSON(data);
|
|
console.log(d);
|
|
//get_my_balance();
|
|
|
|
var t = '';
|
|
if(isArray(d.buys) && d.buys.length !== 0) {
|
|
for (var j=0; j<=d.buys.length-1 ; j++) {
|
|
t += '';
|
|
t += '<tr id="'+d.buys[j].order_id+'">';
|
|
t += '<td> '+d.buys[j].name+'</td>';
|
|
t += '<td> '+d.buys[j].price+'</td>';
|
|
t += '<td>'+d.buys[j].quantity+'</td>';
|
|
t += '</tr>';
|
|
}
|
|
}
|
|
$('#bd-buy').html(t);
|
|
|
|
var v = '';
|
|
if(isArray(d.sells) && d.sells.length !== 0) {
|
|
for (var k=0; k<=d.sells.length-1 ; k++) {
|
|
v += '';
|
|
v += '<tr id="'+d.sells[k].order_id+'">';
|
|
v += '<td>'+d.sells[k].name+'</td>';
|
|
v += '<td> '+d.sells[k].price+'</td>';
|
|
v += '<td>'+d.sells[k].quantity+'</td>';
|
|
v += '</tr>';
|
|
}
|
|
}
|
|
$('#bd-sell').html(v);
|
|
}
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
function run_OrderMatchingAlgorithm() {
|
|
|
|
var sel1 = $('#sel-bc-1').val();
|
|
var sel2 = $('#sel-bc-2').val();
|
|
|
|
if($.trim(sel1) == '' || $.trim(sel2) == '') {
|
|
return;
|
|
}
|
|
|
|
$.ajax({
|
|
method:'post',
|
|
async: true,
|
|
url:'ajax/OrderMatchingAlgorithmAjax.php',
|
|
data: { task : 'run_OrderMatchingAlgorithm', sel1:sel1, sel2:sel2},
|
|
error: function(xhr, status, error) {
|
|
console.log(xhr.responseText);
|
|
},
|
|
success: function(data) {
|
|
|
|
load_fresh_table_data(sel1, sel2);
|
|
|
|
var IS_JSON = true;
|
|
try {
|
|
var d = jQuery.parseJSON(data);
|
|
}
|
|
catch(err) {
|
|
IS_JSON = false;
|
|
}
|
|
|
|
if(IS_JSON) {
|
|
if (d.error == false && d.msg=="userLoggedIn") {
|
|
if (isArray(d.order) && d.order.length != 0) {
|
|
for (var k = 0; k <= d.order.length - 1; k++) {
|
|
$.notify({
|
|
message: d.order[k]
|
|
},{
|
|
type: 'success'
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function tradeList(bc1, bc2) {
|
|
|
|
$.ajax({
|
|
method:'post',
|
|
url:'ajax/tradeList.php',
|
|
data: { task : 'loadTradeList',bc1:bc1, bc2:bc2},
|
|
error: function() {
|
|
console.log('error');
|
|
},
|
|
success: function(data) {
|
|
|
|
var IS_JSON = true;
|
|
try {
|
|
var d = jQuery.parseJSON(data);
|
|
}
|
|
catch(err) {
|
|
IS_JSON = false;
|
|
}
|
|
|
|
if(IS_JSON) {
|
|
console.log(d);
|
|
var v = '';
|
|
if(isArray(d.trade_list) && d.trade_list.length != 0) {
|
|
for (var k=0; k<= d.trade_list.length-1; k++) {
|
|
v += '';
|
|
v += '<tr>';
|
|
v += '<td>'+d.trade_list[k].SELLER+'</td>';
|
|
v += '<td>'+d.trade_list[k].BUYER+'</td>';
|
|
v += '<td>$ '+d.trade_list[k].TRADE_PRICE+'</td>';
|
|
v += '<td>'+d.trade_list[k].TRADED_QTY+'</td>';
|
|
v += '<td>$ '+(d.trade_list[k].TRADED_QTY * d.trade_list[k].TRADE_PRICE).toFixed(5)+'</td>';
|
|
v += '<td>'+my_date_format(d.trade_list[k].insert_dt)+'</td>';
|
|
v += '</tr>';
|
|
}
|
|
$('#_ltp').text('$ '+d.trade_list[0].TRADE_PRICE);
|
|
} else {
|
|
v += '<p class="text-info">No transactions.</p>';
|
|
}
|
|
$('#trade-list').html(v);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
/*Traders List*/
|
|
function tradersList(bc2) {
|
|
$.ajax({
|
|
method:'post',
|
|
url:'ajax/tradersList.php',
|
|
data: { task : 'loadTradersList', bc2:bc2},
|
|
error: function(xhr, status, error) {
|
|
console.log(xhr.responseText);
|
|
},
|
|
success: function(data) {
|
|
|
|
var IS_JSON = true;
|
|
try {
|
|
var d = jQuery.parseJSON(data);
|
|
}
|
|
catch(err) {
|
|
IS_JSON = false;
|
|
}
|
|
|
|
if(IS_JSON) {
|
|
var v = '';
|
|
if(isArray(d.traders_list) && d.traders_list.length != 0) {
|
|
$('#bcn').text(d.traders_list[0].bc);
|
|
for (var k=0; k<= d.traders_list.length-1; k++) {
|
|
v += '';
|
|
v += '<tr>';
|
|
v += '<td>'+d.traders_list[k].name+'</td>';
|
|
v += '<td>'+d.traders_list[k].balance+'</td>';
|
|
v += '</tr>';
|
|
}
|
|
}
|
|
$('#traders-list').html(v);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
/*My Orders*/
|
|
function MyOrders() {
|
|
$.ajax({
|
|
method:'post',
|
|
url:'ajax/myOrders.php',
|
|
data: { task : 'loadMyOrdersList'},
|
|
error:function(xhr, status, error) {
|
|
console.log(xhr.responseText);
|
|
},
|
|
success:function(data) {
|
|
if ($.trim(data) != '' && $.trim(data) != undefined && $.trim(data) != null) {
|
|
$('#myOrdersTable').html(data);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
/*My Transactions*/
|
|
function MyTransactions() {
|
|
$.ajax({
|
|
method:'post',
|
|
url:'ajax/myTransactions.php',
|
|
data: { task : 'myTransactions'},
|
|
error:function(xhr, status, error) {
|
|
console.log(xhr.responseText);
|
|
},
|
|
success: function(data) {
|
|
|
|
var IS_JSON = true;
|
|
try {
|
|
var d = jQuery.parseJSON(data);
|
|
}
|
|
catch(err) {
|
|
IS_JSON = false;
|
|
}
|
|
|
|
if(IS_JSON) {
|
|
var v = '';
|
|
if(isArray(d.trade_list) && d.trade_list.length != 0) {
|
|
for (var k=0; k<= d.trade_list.length-1; k++) {
|
|
v += '';
|
|
v += '<tr>';
|
|
v += '<td>'+d.trade_list[k].SELLER+'</td>';
|
|
v += '<td>'+d.trade_list[k].BUYER+'</td>';
|
|
v += '<td>$ '+d.trade_list[k].TRADE_PRICE+'</td>';
|
|
v += '<td>'+d.trade_list[k].TRADED_QTY+'</td>';
|
|
v += '<td>$ '+(d.trade_list[k].TRADED_QTY * d.trade_list[k].TRADE_PRICE).toFixed(5)+'</td>';
|
|
v += '<td>'+my_date_format(d.trade_list[k].insert_dt)+'</td>';
|
|
v += '</tr>';
|
|
}
|
|
}
|
|
$('#my-transactions-list').html(v);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function sel_bc_stats(bc1, bc2) {
|
|
$('#bc-one').text(bc1);
|
|
$('#bc-two').text(bc2);
|
|
$.ajax({
|
|
method:'post',
|
|
url:'ajax/sel_bc_stats.php',
|
|
data: { task : 'sel_bc_stats', bc1:bc1, bc2:bc2},
|
|
error: function(xhr, status, error) {
|
|
console.log(xhr.responseText);
|
|
},
|
|
success: function(data) {
|
|
$('#bc-two-pr').text('');
|
|
var IS_JSON = true;
|
|
try {
|
|
var d = jQuery.parseJSON(data);
|
|
}
|
|
catch(err) {
|
|
IS_JSON = false;
|
|
}
|
|
|
|
if(IS_JSON) {
|
|
if(d.data.length != 0) {
|
|
$('#bc-one').text(d.data.a_bc);
|
|
$('#bc-two').text(d.data.b_bc);
|
|
$('#bc-two-pr').text(d.data.b_amount);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function user_wallet() {
|
|
$.ajax({
|
|
method: 'post',
|
|
async: true,
|
|
url: 'ajax/update_user_wallet.php',
|
|
data: {task: 'update_user_wallet'},
|
|
error: function (xhr, status, error) {
|
|
console.log(xhr.responseText);
|
|
},
|
|
success: function (data) {
|
|
|
|
var IS_JSON = true;
|
|
try {
|
|
var d = jQuery.parseJSON(data);
|
|
}
|
|
catch (err) {
|
|
IS_JSON = false;
|
|
}
|
|
|
|
if (IS_JSON) {
|
|
if (d.error == false) {
|
|
if (isArray(d.bc) && d.bc.length != 0) {
|
|
var t = '';
|
|
for (var k = 0; k <= d.bc.length - 1; k++) {
|
|
t += '<tr>';
|
|
t += '<td>'+ d.bc[k].bc+'</td>';
|
|
t += '<td>'+ d.bc[k].balance+'</td>';
|
|
t += '</tr>';
|
|
}
|
|
$('#usr-bc-bal').html(t);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function current_prices(bc2) {
|
|
var ltpbc2 = $('#ltpbc2');
|
|
var bccp = $('#bccp');
|
|
bccp.text('No Data');
|
|
ltpbc2.val();
|
|
if(bc2 !="") {
|
|
ltpbc2.val('('+bc2+')');
|
|
}
|
|
$.ajax({
|
|
method: 'post',
|
|
async: true,
|
|
url: 'ajax/current_prices.php',
|
|
data: {task: 'current_prices', bc2:bc2},
|
|
error: function (xhr, status, error) {
|
|
console.log(xhr.responseText);
|
|
},
|
|
success: function (data) {
|
|
var IS_JSON = true;
|
|
try {
|
|
var d = jQuery.parseJSON(data);
|
|
}
|
|
catch (err) {
|
|
IS_JSON = false;
|
|
}
|
|
|
|
if (IS_JSON) {
|
|
if (d.error == false) {
|
|
if (isArray(d.bc) && d.bc.length != 0) {
|
|
var t = '';
|
|
var w = '';
|
|
for (var k = 0; k <= d.bc.length - 1; k++) {
|
|
w = d.bc[k].b_bc;
|
|
t += '<tr>';
|
|
t += '<td>'+ d.bc[k].a_bc+'</td>';
|
|
t += '<td>'+ d.bc[k].a_amount+'</td>';
|
|
t += '<td><span class="text-success">22%</span></td>';
|
|
t += '</tr>';
|
|
}
|
|
ltpbc2.html('('+w+')');
|
|
bccp.html(t);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
} |