MyDealz User Info

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

// ==UserScript==
// @name         MyDealz User Info
// @namespace    http://www.mydealz.de/profile/richi2k
// @version      0.1
// @description  Adds extended user information (online status, nr of comments/deals/...) below each comment on mydealz.de 
// @author       richi2k
// @require      https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js
// @match        http://www.mydealz.de/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    var userProfileArray = [];
    
    $(".avatar-link").each(function(){ 
        
        var username = $(this).text().trim();
        var endpoint = $(this).attr("href") + "?user_details=1" ;
        
        var possibleUserInfoElId = "#" + username + "-md-userinfo"; // may be relevant in next releases
        var possibleUserInfoEl = $(possibleUserInfoElId);
        
        if(jQuery.inArray( username, userProfileArray ) === -1)
        {
            userProfileArray.push(username);
            $.ajax({
                url: endpoint,
                type: "GET",
                dataType: "json",
                success: function (data) {

                        var tmpEl = $('<div />', {id:possibleUserInfoElId}).append( data.data.content );//;
                        
                        var imgAvatarElement = tmpEl.find("img.avatar-image");
                        var imgAvatarSrc = imgAvatarElement.attr("src");
                    
                        $('.avatar-image--comment[data-popover*="'+username+'"]').each(function(){
                            var onlineStatus = tmpEl.find(".profile-name").siblings("span").clone().css({"display" : "inline", "text-align" : "center", "margin": "2px"});
                            var profileDate = tmpEl.find(".profile-date").clone().css({"display" : "inline", "text-align" : "right", "margin": "2px"});
                            
                            var profileStateUl = $("<ul />").css({"background":"#f5f6ff","display":"block","margin": "0.2em 2em 1.42857em 10em","padding" : "2px"});
                            
                            var liCss = {"margin":"3px 5px","display":"inline-block"};
                            
                            var nrOfComments = tmpEl.find(".profile-stat-item:contains('Kommentare')").clone().css(liCss);
                            var nrOfActiveDeals = tmpEl.find(".profile-stat-item:contains('Aktive Deals')").clone().css(liCss);
                            var nrOfSubscriptions = tmpEl.find(".profile-stat-item:contains('Abonnements')").clone().css(liCss);
                            var nrOfPostedDeals = tmpEl.find(".profile-stat-item:contains('Gemeldete Deals')").clone().css(liCss);
                            
                            var liUsername = $("<li />").text(username + " ist ").css(liCss);
                            var liOnlineStatus = $("<li />").append(onlineStatus).css(liCss);
                            var liProfileDate = $("<li />").append(profileDate).css(liCss);
                            
                            profileStateUl.append(liUsername).append(liOnlineStatus).append(liProfileDate).append(nrOfComments).append(nrOfActiveDeals).append(nrOfSubscriptions).append(nrOfPostedDeals);
                            
                            var profileStateLi = $("<li />").append(profileStateUl).addClass("comments-item comments-item--active section--padded--narrow").css({"margin":"0","padding":"0"});
                           
                            $("li.section--divided").css( "border-bottom","none" );
                            $(this).closest(".comments-item").after(profileStateLi);
                                
                        });

                    
                }
            });
        }
    });
    
})();