diff --git a/Resources/Scripts/code.js b/Resources/Scripts/code.js index f652b8a6..cb185650 100644 --- a/Resources/Scripts/code.js +++ b/Resources/Scripts/code.js @@ -1,13 +1,13 @@ (function($, $TD, $TDX, TD){ // - // Variable: Current highlighted column jQuery object. + // Variable: Current highlighted column jQuery & data objects. // - var highlightedColumnEle; + var highlightedColumnEle, highlightedColumnObj; // - // Variable: Currently highlighted tweet jQuery object. + // Variable: Currently highlighted tweet jQuery & data objects. // - var highlightedTweetEle; + var highlightedTweetEle, highlightedTweetObj; // // Variable: Array of functions called after the website app is loaded. @@ -231,42 +231,48 @@ })(); // - // Block: Update highlighted column. - // - app.delegate("section", "mouseenter mouseleave", function(e){ - if (e.type === "mouseenter"){ - highlightedColumnEle = $(this); - } - else if (e.type === "mouseleave"){ - highlightedColumnEle = null; - } - }); - - // - // Block: Copy tweet address and update highlighted tweet. + // Block: Update highlighted column and tweet for context menu and other functionality. // (function(){ var lastTweet = ""; - var updateHighlightedTweet = function(link, embeddedLink){ + var updateHighlightedTweet = function(ele, obj, link, embeddedLink){ + highlightedTweetEle = ele; + highlightedTweetObj = obj; + if (lastTweet !== link){ $TD.setLastHighlightedTweet(link, embeddedLink); lastTweet = link; } }; - app.delegate("article.js-stream-item", "mouseenter mouseleave", function(e){ + app.delegate("section", "mouseenter mouseleave", function(e){ if (e.type === "mouseenter"){ - highlightedTweetEle = $(this); - - var link = $(this).parent().hasClass("js-tweet-detail") ? $(this).find("a[rel='url']").first() : $(this).find("time").first().children("a").first(); - var embedded = $(this).find(".quoted-tweet[data-tweet-id]").first(); - - updateHighlightedTweet(link.length > 0 ? link.attr("href") : "", embedded.length > 0 ? embedded.find(".account-link").first().attr("href")+"/status/"+embedded.attr("data-tweet-id") : ""); + highlightedColumnEle = $(this); + highlightedColumnObj = TD.controller.columnManager.get(highlightedColumnEle.attr("data-column")); } else if (e.type === "mouseleave"){ - highlightedTweetEle = null; - updateHighlightedTweet("", ""); + highlightedColumnEle = null; + highlightedColumnObj = null; + } + }); + + app.delegate("article.js-stream-item", "mouseenter mouseleave", function(e){ + if (e.type === "mouseenter"){ + if (!highlightedColumnObj)return; + + var me = $(this); + var tweet = highlightedColumnObj.findChirp(me.attr("data-key")); + + if (tweet && tweet.chirpType === TD.services.ChirpBase.TWEET){ + var link = tweet.getChirpURL(); + var embedded = tweet.quotedTweet ? tweet.quotedTweet.getChirpURL() : ""; + + updateHighlightedTweet(me, tweet, link || "", embedded || ""); + } + } + else if (e.type === "mouseleave"){ + updateHighlightedTweet(null, null, "", ""); } }); })();