{%extends "basedialog.html"%} {%block title %}STEM Ladies Twitter Sentiment Analysis Powered by IBM Watson Tone Analyzer{%endblock%} {%block body%}
Streaming in progress. Are you sure you want to close?
Twitter Sentiment has been cancelled.
'); $('#loading{{prefix}}').css('display','none'); {%endblock%} {%block onOK%} $('#demoScript{{prefix}}').remove(); $('#results{{prefix}}').html('A dataframe with the tweets has been created. You can access it via a variable named __tweets.
'); $('#loading{{prefix}}').css('display','none'); {%endblock%} {%block onDialogShown%} window.Pixiedust = window.Pixiedust || {}; window.Pixiedust.twitterdemo = window.Pixiedust.twitterdemo || {}; var pix = window.Pixiedust.twitterdemo; var tdiag = $(this).find('.modal-dialog') .addClass('modal-dialog-stream'); var startBtn = $('#startStreamBtn', tdiag); var logDiv = $('.stream-log > .chart-stage', tdiag); var filterInput = $('#twitter-filter-input', tdiag); var resultsDiv = $('#results{{prefix}}'); var loadingDiv = $('#loading{{prefix}}'); var cardList = $('.twitter-cards-list'); var streamingSpinner = $('.pixiedust .modal-header button.close') .html('') .prop('disabled', true) .css({display: 'none'}); var tweetsCount = $('.twitter-cards-msg > span:first-child'); var numTweets = 0; var pauseScroll = false; var hiddenCards = []; var sentimentColor = (function() { var domain = [ 'agreeableness_big5', 'analytical', 'anger', 'confident', 'conscientiousness_big5', 'disgust', 'extraversion_big5', 'fear', 'joy', 'neuroticism_big5', 'openness_big5', 'sadness', 'tentative' ]; var colors = [ '#1F77B4','#AEC7E8','#FF7F0E','#FFBB78','#2CA02C', '#98DF8A','#D62728','#FF9896','#9467BD','#C5B0D5', '#8C564B','#C49C94','#E377C2','#F7B6D2','#7F7F7F', '#C7C7C7','#BCBD22','#DBDB8D','#17BECF','#9EDAE5' ] return function(sentiment) { return colors[Math.max(domain.indexOf(sentiment), 0)]; } })(); var logMsg = function(data) { var BEGINSTREAM = '@BEGINSTREAM@'; var ENDSTREAM = '@ENDSTREAM@'; function doLogMsg(msg){ if (msg.indexOf && msg.indexOf(BEGINSTREAM) === 0) { updateBtns('started'); }else if (msg.indexOf && msg.indexOf(ENDSTREAM) === 0) { updateBtns('stopped'); }else{ logDiv.append('' + msg + ''); } } if (Array.isArray(data)){ data.forEach(function(msg, index){ doLogMsg(msg); }); }else{ doLogMsg(data) } }; var updateBtns = function(status) { switch (status) { case 'starting': logMsg(new Date()); tdiag.attr('data-streaming', 'starting'); startBtn.prop('disabled', true); startBtn.text('Starting...'); streamingSpinner.css({display: 'inline'}); $('.trending-hashtags > .chart-stage', tdiag).html(''); $('.trending-sentiments > .chart-stage', tdiag).html(''); $('.twitter-cards-list', tdiag).empty(); $('.twitter-cards-list-wrapper', tdiag).prepend(''); filterInput.prop('disabled', true) .parent().css({'opacity': 0.5}); numTweets = 0; tweetsCount.html(numTweets); break; case 'started': tdiag.attr('data-streaming', true); startBtn.prop('disabled', false); startBtn.text('Stop Streaming'); streamingSpinner.css({display: 'inline'}); filterInput.prop('disabled', true) .parent().css({'opacity': 0.5}); break; case 'stopping': tdiag.attr('data-streaming', 'stopping'); startBtn.prop('disabled', true); startBtn.text('Stopping...'); streamingSpinner.css({display: 'inline'}); filterInput.prop('disabled', true) .parent().css({'opacity': 0.5}); break; case 'stopped': tdiag.attr('data-streaming', false); startBtn.prop('disabled', false); startBtn.text('Start Streaming'); streamingSpinner.css({display: 'none'}); filterInput.prop('disabled', false) .parent().css({'opacity': 1}); $('.starting-spinner', tdiag).remove(); logMsg(new Date()); break; } }; var processHashtags = function(data) { $('.trending-hashtags > .chart-stage > :not(svg)', tdiag).remove(); pix.piechart('.trending-hashtags > .chart-stage', data[data.length-1]); }; var processSentiments = function(data) { $('.trending-sentiments > .chart-stage > :not(svg)', tdiag).remove(); pix.groupedchart('.trending-sentiments > .chart-stage', data[data.length-1], sentimentColor); }; var scrollCards = function() { tweetsCount.html(numTweets); if (!pauseScroll) { cardList.parent().animate({ scrollTop: cardList.parent().prop('scrollHeight') }, 1500, function() { while (cardList.children('li').length > 50) { $('li', cardList).first().remove(); } }); } }; var maxSentiment = function(obj) { var max; for (var o in obj) { if (!max || obj[o] > max.value) { max = { key: o, value: obj[o] }; } } return max; }; var showTweets = function(tweets) { $('.twitter-cards-list-wrapper > .starting-spinner', tdiag).remove(); var template = '{text}
' + '