Community Analysis Extension

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

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==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);