Community Analysis Extension

Community Analysis Extension(https://catool.azurewebsites.net/)

Bu betiği kurabilmeniz için Tampermonkey, Greasemonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği yüklemek için Tampermonkey gibi bir uzantı yüklemeniz gerekir.

Bu betiği kurabilmeniz için Tampermonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği kurabilmeniz için Tampermonkey ya da Userscripts gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği indirebilmeniz için ayrıca Tampermonkey gibi bir eklenti kurmanız gerekmektedir.

Bu komut dosyasını yüklemek için bir kullanıcı komut dosyası yöneticisi uzantısı yüklemeniz gerekecek.

(Zaten bir kullanıcı komut dosyası yöneticim var, kurmama izin verin!)

Bu stili yüklemek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için Stylus gibi bir uzantı kurmanız gerekir.

Bu stili yükleyebilmek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı kurmanız gerekir.

Bu stili yükleyebilmek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

(Zateb bir user-style yöneticim var, yükleyeyim!)

// ==UserScript==
// @name         Community Analysis Extension
// @version      5.6
// @description  Community Analysis Extension(https://catool.azurewebsites.net/)
// @icon         https://www.microsoft.com/favicon.ico?v2
// @license      GPL version 3
// @encoding     utf-8
// @date         12/08/2015
// @modified     02/14/2020
// @author       Myfreedom614 <[email protected]>
// @supportURL   http://franklin614.com/
// @include      http*://app.intercom.*/*/conversations/*
// @include      http*://app.intercom.*/*/conversation/*
// @grant        none
// @copyright	 2015-2020, Jeffrey Chen, Franklin Chen
// @namespace	 https://greasyfork.org/en/scripts/14666-easy-analysis-extension
// ==/UserScript==
(function (window) {
    'use strict';
    if (typeof window.addin !== 'undefined') {
        return;
    }

    var rootElement = document.getElementById('eas-iframe');

    if (rootElement !== null) {
        return;
    }

    var platforms = [],
        url = location.href,
        options = {};

    function getByValue(arr, value) {
        for (var i = 0, iLen = arr.length; i < iLen; i++) {
            if (arr[i].getAttribute("rel") == value) return arr[i];
        }
    }

    if (window.location.hostname === 'powerusers.microsoft.com' || window.location.hostname === 'community.powerbi.com') {
        var links = document.head.getElementsByTagName("link");
        var link = getByValue(links, 'canonical');
        url = link.getAttribute("href");
    }

    platforms.push({
        'name': 'msdn_technet',
        'id': 3,
        'exp': new RegExp('social.*.microsoft.com/Forums/.*/({{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}}{0,1})'),
        'instanceIdIndex': 1,
        'render': function () {
            var sidebar = document.getElementById('sidebar');
            sidebar.style.width = "237px";
            var firstChild = sidebar.getElementsByTagName('section')[0];
            var section = document.createElement('section');
            section.innerHTML = '<section id="eas-iframe"><div><label style="font-size: 80%;color: red;"><input type="checkbox" id="auto-expand-checkbox" style="vertical-align: middle;position: relative;bottom: 1px;">&nbsp;Auto Expand?</label></div><div><a id="eas-collapse-button" title="Load EA iframe" href="#" style="color: #fff;background-color: #1e75bb;line-height: normal;padding: .3em 1em .48em 1em;display: block;">+ Community Analysis</a></div><div id="eas-iframe-placeholder"></div></section>';
            sidebar.insertBefore(section, firstChild);
        }
    });

    platforms.push({
        'name': 'stackoverflow',
        'id': 5,
        'exp': new RegExp('stackoverflow.com/questions/([0-9]*)/'),
        'instanceIdIndex': 1,
        'render': function () {
            var sidebar = document.getElementById('sidebar');
            var firstChild = sidebar.getElementsByTagName('div')[0];
            var section = document.createElement('div');
            section.innerHTML = '<div class="module" id="eas-iframe"><div><label style="font-size: 80%;color: red;"><input type="checkbox" id="auto-expand-checkbox" style="vertical-align: middle;position: relative;bottom: -2px;">&nbsp;Auto Expand?</label><a id="eas-collapse-button" href="#" style="color: #FFFFFF;background: #1e75bb;padding: 4px 10px 5px;font-size: 14px;line-height: 1.3;display: block;">+ Community Analysis</a></div><div id="eas-iframe-placeholder"></div></div>';
            sidebar.insertBefore(section, firstChild);
        }
    });

    platforms.push({
        'name': 'serverfault',
        'id': 4,
        'exp': new RegExp('serverfault.com/questions/([0-9]*)/'),
        'instanceIdIndex': 1,
        'render': function () {
            var sidebar = document.getElementById('sidebar');
            var firstChild = sidebar.getElementsByTagName('div')[0];
            var section = document.createElement('div');
            section.innerHTML = '<div class="module" id="eas-iframe"><div><label style="font-size: 80%;color: red;"><input type="checkbox" id="auto-expand-checkbox" style="vertical-align: middle;position: relative;bottom: -2px;">&nbsp;Auto Expand?</label><a id="eas-collapse-button" href="#" style="color: #FFFFFF;background: #1e75bb;padding: 4px 10px 5px;font-size: 14px;line-height: 1.3;display: block;">+ Community Analysis</a></div><div id="eas-iframe-placeholder"></div></div>';
            sidebar.insertBefore(section, firstChild);
        }
    });

    platforms.push({
        'name': 'superuser',
        'id': 6,
        'exp': new RegExp('superuser.com/questions/([0-9]*)/'),
        'instanceIdIndex': 1,
        'render': function () {
            var sidebar = document.getElementById('sidebar');
            var firstChild = sidebar.getElementsByTagName('div')[0];
            var section = document.createElement('div');
            section.innerHTML = '<div class="module" id="eas-iframe"><div><label style="font-size: 80%;color: red;"><input type="checkbox" id="auto-expand-checkbox" style="vertical-align: middle;position: relative;bottom: -2px;">&nbsp;Auto Expand?</label><a id="eas-collapse-button" href="#" style="color: #FFFFFF;background: #1e75bb;padding: 4px 10px 5px;font-size: 14px;line-height: 1.3;display: block;">+ Community Analysis</a></div><div id="eas-iframe-placeholder"></div></div>';
            sidebar.insertBefore(section, firstChild);
        }
    });

    platforms.push({
        'name': 'powerbi',
        'id': 2,
        'exp': new RegExp('community.powerbi.com/t5/.*/*-p/([0-9]+)'),
        'instanceIdIndex': 1,
        'render': function () {
            var body = document.body;
            body.style.paddingRight = '310px';

            var firstChild = body.getElementsByTagName('div')[0];

            var section = document.createElement('div');
            section.style.float = 'right';
            section.style.position = 'fixed';
            section.style.right = '1px';
            section.style.top = '180px';

            section.innerHTML = '<div class="module" id="eas-iframe"><div><label style="font-size: 80%;color: red;"><input type="checkbox" id="auto-expand-checkbox" style="vertical-align: middle;position: relative;bottom: 1px;">&nbsp;Auto Expand?</label><a id="eas-collapse-button" href="#" style="color: #FFFFFF;background: #1e75bb;padding: 4px 10px 5px;font-size: 14px;line-height: 1.3;display: block;">+ Community Analysis</a></div><div id="eas-iframe-placeholder"></div></div>';

            body.insertBefore(section, firstChild);
        }
    });

    platforms.push({
        'name': 'powerapps',
        'id': 9,
        'exp': new RegExp('powerusers.microsoft.com/t5/(General-Discussion|Connecting-to-Data|Creating-Apps|Using-PowerApps|Connectors|Expressions-and-Formulas|Mobile-App-iOS|PowerApps-Forum|General-Flow-Discussion|Connecting-To-Data|Common-Data-Service-for-Apps|Administering-PowerApps|Building-Flows|Using-Flows|Flow-Mobile-App|I-Found-A-Bug)/.*/*-p/([0-9]+)'),
        'instanceIdIndex': 2,
        'render': function () {
            var sidebar = document.getElementsByClassName("lia-quilt-column-main-left")[0].getElementsByClassName("lia-component-author")[0].parentNode;

            var firstChild = sidebar.getElementsByTagName('div')[0];

            var section = document.createElement('div');

            section.innerHTML = '<div class="module" id="eas-iframe"><div><label style="font-size: 80%;color: red;"><input type="checkbox" id="auto-expand-checkbox" style="vertical-align: middle;position: relative;bottom: 1px;">&nbsp;Auto Expand?</label><a id="eas-collapse-button" href="#" style="color: #FFFFFF;background: #1e75bb;padding: 4px 10px 5px;font-size: 14px;line-height: 1.3;display: block;">+ Community Analysis</a></div><div id="eas-iframe-placeholder"></div></div>';

            sidebar.insertBefore(section, firstChild);
        }
    });

    platforms.push({
        'name': 'hockeyapp',
        'id': 8,
        'exp': new RegExp('https://support.hockeyapp.net/discussions/problems/([0-9]+)'),
        'instanceIdIndex': 1,
        'render': function () {
            var sidebar = document.getElementsByClassName("column sidebar")[0];

            var firstChild = sidebar.getElementsByTagName('div')[0];

            var section = document.createElement('div');

            section.innerHTML = '<div class="module" id="eas-iframe"><div><label style="font-size: 80%;color: red;"><input type="checkbox" id="auto-expand-checkbox" style="vertical-align: middle;position: relative;bottom: 1px;">&nbsp;Auto Expand?</label><a id="eas-collapse-button" href="#" style="color: #FFFFFF;background: #1e75bb;padding: 4px 10px 5px;font-size: 14px;line-height: 1.3;display: block;">+ Community Analysis</a></div><div id="eas-iframe-placeholder"></div></div>';

            sidebar.insertBefore(section, firstChild);
        }
    });

    platforms.push({
        'name': 'aspnet',
        'id': 1,
        'exp': new RegExp('forums.asp.net/t/([0-9]*).aspx'),
        'instanceIdIndex': 1,
        'render': function () {
            var wrapper = document.getElementById("content-wrapper");
            wrapper.style.maxWidth= "1220px";

            var navContainer = document.getElementsByClassName('module-nav-container')[0];

            var firstChild = navContainer.getElementsByTagName('div')[0];

            var section = document.createElement('div');

            section.innerHTML = '<section id="eas-iframe" style="width: 215px;"><div><label style="font-size: 80%;color: red;"><input type="checkbox" id="auto-expand-checkbox" style="vertical-align: middle;position: relative;bottom: -2px;">&nbsp;Auto Expand?</label><a id="eas-collapse-button" href="#" style="color: #FFFFFF;background: #1e75bb;padding: 4px 10px 5px;font-size: 14px;line-height: 1.3;display: block;">+ Community Analysis</a></div><div id="eas-iframe-placeholder"></div></section>';

            navContainer.insertBefore(section, firstChild);
        }
    });

    platforms.push({
        'name': 'iis',
        'id': 12,
        'exp': new RegExp('forums.iis.net/t/([0-9]*).aspx'),
        'instanceIdIndex': 1,
        'render': function () {
            var wrapper = document.getElementById("content-wrapper");
            wrapper.style.maxWidth= "1220px";

            var navContainer = document.getElementsByClassName('module-nav-container')[0];

            var firstChild = navContainer.getElementsByTagName('div')[0];

            var section = document.createElement('div');

            section.innerHTML = '<section id="eas-iframe" style="width: 215px;"><div><label style="font-size: 80%;color: red;"><input type="checkbox" id="auto-expand-checkbox" style="vertical-align: middle;position: relative;bottom: -2px;">&nbsp;Auto Expand?</label><a id="eas-collapse-button" href="#" style="color: #FFFFFF;background: #1e75bb;padding: 4px 10px 5px;font-size: 14px;line-height: 1.3;display: block;">+ Community Analysis</a></div><div id="eas-iframe-placeholder"></div></section>';

            navContainer.insertBefore(section, firstChild);
        }
    });

    platforms.push({
        'name': 'mr',
        'id': 10,
        'exp': new RegExp('forums.hololens.com/discussion/([0-9]*)/'),
        'instanceIdIndex': 1,
        'render': function () {
            var sidebar = document.getElementsByClassName('BoxFilter')[0];
            sidebar.style.width = "220px";
            var firstChild = sidebar.getElementsByTagName('span')[0];
            var section = document.createElement('div');
            section.innerHTML = '<section id="eas-iframe"><div><label style="font-size: 80%;color: red;"><input type="checkbox" id="auto-expand-checkbox" style="vertical-align: middle;position: relative;bottom: 1px;">&nbsp;Auto Expand?</label></div><div><a id="eas-collapse-button" title="Load EA iframe" href="#" style="color: #fff;background-color: #1e75bb;line-height: normal;padding: .3em 1em .48em 1em;display: block;font-size: 16px;">+ Community Analysis</a></div><div id="eas-iframe-placeholder"></div></section>';
            sidebar.insertBefore(section, firstChild);
        }
    });

    platforms.push({
        'name': 'xamarinForum',
        'id': 10,
        'exp': new RegExp('forums.xamarin.com/discussion/([0-9]*)/'),
        'instanceIdIndex': 1,
        'render': function () {
            var body = document.body;

            var firstChild = body.getElementsByTagName('div')[0];

            var section = document.createElement('div');
            section.style.float = 'right';
            section.style.position = 'fixed';
            section.style.right = '1px';
            section.style.top = '180px';
            section.style.zIndex = "9999";

            section.innerHTML = '<div class="module" id="eas-iframe"><div><label style="font-size: 80%;color: red;"><input type="checkbox" id="auto-expand-checkbox" style="vertical-align: middle;position: relative;bottom: 1px;">&nbsp;Auto Expand?</label><a id="eas-collapse-button" href="#" style="color: #FFFFFF;background: #1e75bb;padding: 4px 10px 5px;font-size: 14px;line-height: 1.3;display: block;">+ Community Analysis</a></div><div id="eas-iframe-placeholder"></div></div>';

            body.insertBefore(section, firstChild);
        }
    });

    platforms.push({
        'name': 'intercom',
        'id': 11,
        'exp': new RegExp('app.intercom.*/.*/conversation.?/([0-9]*)'),
        'instanceIdIndex': 1,
        'render': function () {
            var checkExist = setInterval(function() {
                if (document.getElementsByClassName('profile-sidebar-section__current-profile').length) {
                    clearInterval(checkExist);

                    var fireOnHashChangesToo = true;
                    var pageURLCheckTimer = setInterval (
                        function () {
                            if (this.lastPathStr !== location.pathname
                                || this.lastQueryStr !== location.search
                                || (fireOnHashChangesToo && this.lastHashStr !== location.hash)
                               ) {
                                this.lastPathStr = location.pathname;
                                this.lastQueryStr = location.search;
                                this.lastHashStr = location.hash;
                                gmMain();
                            }
                        }
                        , 111
                    );

                    function removeElementsParentById(id) {
                        var elem = document.getElementById(id).parentNode;
                        return elem.parentNode.removeChild(elem);
                    }

                    function gmMain() {
                        if(document.getElementById('eas-iframe') !== null){
                            removeElementsParentById('eas-iframe');
                        }

                        var sidebar = document.getElementsByClassName('profile-sidebar-section__current-profile')[0];
                        var firstChild = sidebar.getElementsByTagName('div')[0];
                        var section = document.createElement('div');
                        section.innerHTML = '<section id="eas-iframe"><div><a id="eas-collapse-button" title="Load EA iframe" style="color: #fff;background-color: #1e75bb;line-height: normal;padding: .3em 1em .48em 1em;display: block;font-size: 16px;text-decoration: none;">+ Community Analysis</a></div><div id="eas-iframe-placeholder"></div></section>';
                        sidebar.insertBefore(section, firstChild);

                        var collapseButton = document.getElementById('eas-collapse-button');
                        var array = platform.exp.exec(location.href);

                        collapseButton.addEventListener("click", function () {
                            var iframeUrl = 'https://cas-ext-app.azurewebsites.net/#/boot/' + platform.id + '/' + array[platform.instanceIdIndex] + '/';
                            console.log(iframeUrl);
                            window.open(iframeUrl, '_blank', 'location=no,height=450,width=800,left=300,top=100,scrollbars=yes');
                            //window.open(iframeUrl, '_blank', 'location=no,height=570,width=300,scrollbars=yes,status=yes');
                        }, false);
                    }
                }
            }, 100);
        }
    });

    function getCurrentPlatform() {
        for (var name in platforms) {
            if(platforms[name].exp !== undefined){
                if (platforms[name].exp.test(url)) {
                    return platforms[name];
                }
            }
        }

        return null;
    }

    var platform = getCurrentPlatform();

    if (platform === null) {
        console.log("not supported platform");

        return;
    }

    var array = platform.exp.exec(url);

    var indentity = array[platform.instanceIdIndex];

    console.log('indentity = ' + indentity);

    // load options from local storage
    var auto = localStorage.getItem(platform.name + ".auto");

    options.auto = (auto !== undefined && auto === 'true');

    function afterRender(){
        var collapseButton = document.getElementById('eas-collapse-button');

        var autoExpandCheckbox = document.getElementById('auto-expand-checkbox');

        var placeholder = document.getElementById('eas-iframe-placeholder');

        autoExpandCheckbox.checked = options.auto;

        autoExpandCheckbox.addEventListener('change', function () {
            localStorage.setItem(platform.name + ".auto", autoExpandCheckbox.checked);
        });

        collapseButton.addEventListener("click", function () {
            updatePanel();
        }, false);

        function updatePanel() {
            var icon = collapseButton.textContent[0];

            if (icon === '+') {
                var iframeUrl = 'https://cas-ext-app.azurewebsites.net/#/boot/' + platform.id + '/' + indentity + '/';

                var iframeHtml = '<iframe src="' + iframeUrl + '" style="width:100%;height:500px;"></iframe>';

                placeholder.innerHTML = iframeHtml;

                collapseButton.textContent = "- Community Analysis";
            }
            else if (icon === '-') {

                while (placeholder.firstChild) {
                    placeholder.removeChild(placeholder.firstChild);
                }

                collapseButton.textContent = "+ Community Analysis";
            }
        }

        if (options.auto) {
            updatePanel();
        }
    }

    // render the html and bind events
    platform.render();

    afterRender();

    window.addin = this;
})(window);