MyDealz User Info

Adds extended user information (online status, nr of comments/deals/...) below each comment on mydealz.de

  1. // ==UserScript==
  2. // @name MyDealz User Info
  3. // @namespace http://www.mydealz.de/profile/richi2k
  4. // @version 0.1
  5. // @description Adds extended user information (online status, nr of comments/deals/...) below each comment on mydealz.de
  6. // @author richi2k
  7. // @require https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js
  8. // @match http://www.mydealz.de/*
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. var userProfileArray = [];
  16. $(".avatar-link").each(function(){
  17. var username = $(this).text().trim();
  18. var endpoint = $(this).attr("href") + "?user_details=1" ;
  19. var possibleUserInfoElId = "#" + username + "-md-userinfo"; // may be relevant in next releases
  20. var possibleUserInfoEl = $(possibleUserInfoElId);
  21. if(jQuery.inArray( username, userProfileArray ) === -1)
  22. {
  23. userProfileArray.push(username);
  24. $.ajax({
  25. url: endpoint,
  26. type: "GET",
  27. dataType: "json",
  28. success: function (data) {
  29.  
  30. var tmpEl = $('<div />', {id:possibleUserInfoElId}).append( data.data.content );//;
  31. var imgAvatarElement = tmpEl.find("img.avatar-image");
  32. var imgAvatarSrc = imgAvatarElement.attr("src");
  33. $('.avatar-image--comment[data-popover*="'+username+'"]').each(function(){
  34. var onlineStatus = tmpEl.find(".profile-name").siblings("span").clone().css({"display" : "inline", "text-align" : "center", "margin": "2px"});
  35. var profileDate = tmpEl.find(".profile-date").clone().css({"display" : "inline", "text-align" : "right", "margin": "2px"});
  36. var profileStateUl = $("<ul />").css({"background":"#f5f6ff","display":"block","margin": "0.2em 2em 1.42857em 10em","padding" : "2px"});
  37. var liCss = {"margin":"3px 5px","display":"inline-block"};
  38. var nrOfComments = tmpEl.find(".profile-stat-item:contains('Kommentare')").clone().css(liCss);
  39. var nrOfActiveDeals = tmpEl.find(".profile-stat-item:contains('Aktive Deals')").clone().css(liCss);
  40. var nrOfSubscriptions = tmpEl.find(".profile-stat-item:contains('Abonnements')").clone().css(liCss);
  41. var nrOfPostedDeals = tmpEl.find(".profile-stat-item:contains('Gemeldete Deals')").clone().css(liCss);
  42. var liUsername = $("<li />").text(username + " ist ").css(liCss);
  43. var liOnlineStatus = $("<li />").append(onlineStatus).css(liCss);
  44. var liProfileDate = $("<li />").append(profileDate).css(liCss);
  45. profileStateUl.append(liUsername).append(liOnlineStatus).append(liProfileDate).append(nrOfComments).append(nrOfActiveDeals).append(nrOfSubscriptions).append(nrOfPostedDeals);
  46. var profileStateLi = $("<li />").append(profileStateUl).addClass("comments-item comments-item--active section--padded--narrow").css({"margin":"0","padding":"0"});
  47. $("li.section--divided").css( "border-bottom","none" );
  48. $(this).closest(".comments-item").after(profileStateLi);
  49. });
  50.  
  51. }
  52. });
  53. }
  54. });
  55. })();