stock_information_app / templates /index_socket.html
Sarat Chandra
"Multi Threaded Approach"
aec0f90
raw
history blame
3.8 kB
<!DOCTYPE html>
<html>
<head>
<title>Stock Information App</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.1/socket.io.js"></script>
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='css/styles.css') }}">
</head>
<body>
<h1>Stock Information App</h1>
<form onsubmit="getInformation(); return false;">
<label for="ticker">Enter Ticker:</label>
<input type="text" id="ticker" required>
<button type="submit">Get Information</button>
</form>
<div id = "log">
<!-- Here the log will be displayed -->
</div>
<div id = "newsData">
<!-- News data will be displayed here -->
</div>
<div>
<h2 id = "graph_title"></h2>
<div id = "stock_graph">
<!-- The candlestick graph will be displayed here -->
</div>
</div>
<script>
var socket = io.connect('http://' + document.domain + ':' + location.port);
function getInformation() {
var ticker = document.getElementById('ticker').value;
socket.emit('get_graph',ticker);
socket.emit('get_news_data', ticker);
}
socket.on('log', function(data) {
var graphDiv = document.getElementById('log');
graphDiv.innerHTML = "Log: " + data;
console.log(data)
});
socket.on('graph', function(graphData) {
document.getElementById("graph_title").innerHTML = '';
var graphDiv = document.getElementById('stock_graph');
graphDiv.innerHTML = '';
console.log(graphData);
if (graphData != '')
{
Plotly.newPlot(graphDiv, graphData.data, graphData.layout);
document.getElementById("graph_title").innerHTML = "Stock Opening and Closing Data";
}
else
{
document.getElementById("graph_title").innerHTML = "Stock Opening and Closing Data";
graphDiv.innerHTML = '<center><p>Not a valid Ticker.</p></center>';
}
});
socket.on('news_data', function(data) {
// Handle the received news data and update the DOM
var newsDataDiv = document.getElementById('newsData');
newsDataDiv.innerHTML = ''; // Clear previous data
if (data.length > 0) {
var table = document.createElement('table');
table.id = 'newsTable';
table.innerHTML = `
<thead>
<tr>
<th>Title</th>
<th>Sentiment</th>
<th>Summary</th>
<th>Full Article</th>
</tr>
</thead>
<tbody>
</tbody>
`;
var tbody = table.querySelector('tbody');
data.forEach(function(article) {
var row = document.createElement('tr');
row.innerHTML = `
<td>${article.title}</td>
<td>${article.sentiment} (Score: ${article.sentiment_score})</td>
<td>${article.summary}</td>
<td><a href="${article.link}" target="_blank">Read full article</a></td>
`;
tbody.appendChild(row);
});
newsDataDiv.appendChild(table);
} else {
newsDataDiv.innerHTML = '<p>No news data available. or still searching for News</p>';
}
});
</script>
</body>
</html>