AllianceMemberOnline

Gives an overview of all online alliance members sorted by there member state.

// ==UserScript==
// @name        AllianceMemberOnline
// @namespace   AllianceMemberOnline
// @description Gives an overview of all online alliance members sorted by there member state.
// @version     0.1.3.1
// @author      f@nTisi
// @include     http*://*.alliances.commandandconquer.com/*
// @grant         GM_log
// @grant         GM_setValue
// @grant         GM_getValue
// @grant         GM_registerMenuCommand
// @grant         GM_xmlhttpRequest
// @grant         GM_updatingEnabled
// @grant         unsafeWindow
// @grant         metadata
// ==/UserScript==
(function() {
    var AllianceMemberOnline0 = function() {
        // create the main class
        function createClass() {
            console.log("Starting creation of classes");
            // define the memberoverview class
            qx.Class.define("AllianceMemberOnline.Main", {
                type: "singleton",
                extend: qx.core.Object,

                // constructor of the class
                construct: function() {
                    try {
                        console.log("Initializing AllianceMemberOnlineButton Button");
                        var AllianceMemberOnlineButton = new qx.ui.form.Button("Alliance Overview");
                        AllianceMemberOnlineButton.set({
                            alignY: "middle",
                            width: 120,
                            toolTipText: "open AllianceMemberOnline window",
                            appearance: "button-text-small"
                        });

                        AllianceMemberOnlineButton.addListener("execute", this.__openAllianceMemberOnlineWindow, this);

                        console.log("Adding AllianceMemberOnlineButton to view");
                        var app = qx.core.Init.getApplication();
                        app.getDesktop().add(AllianceMemberOnlineButton, {
                            bottom: 80,
                            right: 120
                        });

                        //	var AllianceMemberOnlineWindow = AllianceMemberOnline.Window.getInstance();
                        //	AllianceMemberOnlineWindow.open();
                    } catch (e) {
                        console.log("Failed to initialize AllianceMemberOnline: ", e);
                    }
                    console.log("AllianceMemberOnline loaded");
                },

                // destructor of the class
                destruct: function() {},

                members: {
                    // Method to show the window
                    __openAllianceMemberOnlineWindow: function() {
                        var AllianceMemberOnlineWindow = AllianceMemberOnline.Window.getInstance();

                        if (AllianceMemberOnlineWindow.isVisible()) {
                            console.log("closing AllianceMemberOnlineWindow");
                            AllianceMemberOnlineWindow.close();
                        } else {
                            console.log("opening AllianceMemberOnlineWindow");
                            AllianceMemberOnlineWindow.open();
                        }
                    }
                }
            });

            qx.Class.define("AllianceMemberOnline.Window", {
                type: "singleton",
                extend: qx.ui.window.Window,

                // constructor of the class
                construct: function() {
                    try {
                        console.log("Creating AllianceMemberOnline.Window");
                        this.base(arguments);
                        this.setLayout(new qx.ui.layout.Canvas());

                        this.set({
                            width: 150,
                            caption: "Online Members",
                            allowMaximize: false,
                            showMaximize: false,
                            allowMinimize: false,
                            showMinimize: false,
                            resizable: true
                        });

                        this.model = new qx.ui.table.model.Simple();
                        this.model.setColumns(["Role", "Name", "OnlineState", "RoleText"]);
                        this.model.sortByColumn(1, true);
                        this.list = new qx.ui.table.Table(this.model);
                        this.list.setColumnVisibilityButtonVisible(false);
                        this.list.setColumnWidth(0, 0);
                        this.list.setColumnWidth(1, 130);
                        this.list.setColumnWidth(2, 0);
                        this.list.setColumnWidth(3, 0);
                        this.list.set({
                            width: 130,
                            minHeight: 250
                        });
                        var tModel = this.list.getTableColumnModel();
                        tModel.setColumnVisible(0, false);
                        tModel.setColumnVisible(2, false);
                        tModel.setColumnVisible(3, false);
                        this.list.setStatusBarVisible(false);
                        this.add(this.list, {
                            bottom: 0,
                            left: 0
                        });

                        this.list.addListener("mousemove", function(e) {
                            var cell = this.getCellUnderMouse(this.list, e);
                            var row = cell.row;
                            var col = cell.col;
                            if ((row >= 0) && (col >= 0)) {
                                if ((this._curTtRow != row) || (this._curTtCol != col)) {
                                    this.list.setToolTipText("");
                                    var ttManager = qx.ui.tooltip.Manager.getInstance();
                                    ttManager.resetCurrent();
                                    var ttText = this._onGetToolTipText(this.list, row, col);
                                    if (ttText && (ttText !== "")) {
                                        this.list.setToolTipText(ttText);
                                        ttManager.showToolTip(this.list);
                                    }
                                }
                            } else {
                                if ((this._curTtRow >= 0) && (this._curTtCol >= 0)) {
                                    this.list.setToolTipText("");
                                    var ttManager = qx.ui.tooltip.Manager.getInstance();
                                    ttManager.resetCurrent();
                                }
                            }
                            this._curTtRow = row;
                            this._curTtCol = col;
                        }, this);

                        try {
                            var timer = qx.util.TimerManager.getInstance();
                        } catch (e) {
                            console.log("Failed to get timer");
                            throw e;
                        }
                        timer.start(function() {
                                console.log("Timer function running");
                                // example getting player title icon
                                // console.log(ClientLib.Data.MainData.GetInstance().get_Player().get_TitleIcon());
                                console.log("Getting Members and members count");
                                var alliance = ClientLib.Data.MainData.GetInstance().get_Alliance();
                                alliance.RefreshMemberData();
                                var members = alliance.get_MemberDataAsArray();

                                console.log("Creating model");
                                var rowArr = [];

                                var iCounter = 0;
                                for (i = 0; i < alliance.get_NumMembers(); i++) {
                                    var member = members[i];
                                    var name = member.Name;
                                    if (member.OnlineState == ClientLib.Data.EMemberOnlineState.Away)
                                        name = ">>" + name;
                                    if (member.OnlineState == ClientLib.Data.EMemberOnlineState.Online || member.OnlineState == ClientLib.Data.EMemberOnlineState.Away) {

                                        //   var name = member.Name;
                                        rowArr.push([member.Role, name, member.OnlineState, member.RoleName]);
                                        console.log(member.Role + " - " + member.Name);
                                        console.log("AllianceMemberOnlineView: " + member.Name + " - " + member.OnlineState);
                                        iCounter++;
                                    }
                                }

                                this.model.removeRows(0, this.model.getRowCount(), true);
                                this.model.setData(rowArr);
                                this.model.sortByColumn(0, true);
                            },
                            5000,
                            this,
                            null,
                            1000);
                    } catch (e) {
                        console.log("Failed to initialize AllianceMemberOnline.Window");
                        console.log(e);
                    }
                    console.log("AllianceMemberOnline loaded");
                },

                // destructor of the class
                destruct: function() {},

                members: {
                    model: null,
                    list: null,

                    getCellUnderMouse: function(table, mouseEvent) {
                        var row = -1,
                            col = -1;
                        if (table && mouseEvent) {
                            var pageX = mouseEvent.getDocumentLeft();
                            var pageY = mouseEvent.getDocumentTop();
                            var sc = table.getTablePaneScrollerAtPageX(pageX);
                            if (sc) {
                                row = sc._getRowForPagePos(pageX, pageY);
                                col = sc._getColumnForPageX(pageX);
                                if ((row === null) || (row === undefined)) {
                                    row = -1;
                                }
                                if ((col === null) || (col === undefined)) {
                                    col = -1;
                                }
                            }
                        }
                        return ({
                            "row": row,
                            "col": col
                        });
                    },

                    _onGetToolTipText: function(table, row, col) {
                        //  console.log(this.model.getValue(3, row));
                        return this.model.getValue(3, row);
                    }
                }
            });
        }


        // **************************************************************
        // Main Initialization
        function AllianceMemberOnline_checkIfLoaded() {
            try {
                if (typeof qx != 'undefined' && qx.core.Init.getApplication() && qx.core.Init.getApplication().getUIItem(ClientLib.Data.Missions.PATH.BAR_NAVIGATION) && qx.core.Init.getApplication().getUIItem(ClientLib.Data.Missions.PATH.BAR_NAVIGATION).isVisible()) {
                    createClass();
                    window.AllianceMemberOnline.Main.getInstance();
                } else {
                    window.setTimeout(AllianceMemberOnline_checkIfLoaded, 1000);
                }
            } catch (e) {
                console.log("AllianceMemberOnline_checkIfLoaded: ", e);
            }
        }

        if (/commandandconquer\.com/i.test(document.domain)) {
            window.setTimeout(AllianceMemberOnline_checkIfLoaded, 1000);
        }
    };

    try {
        var script = document.createElement("script");
        script.innerHTML = "(" + AllianceMemberOnline0.toString() + ")();";
        script.type = "text/javascript";
        if (/commandandconquer\.com/i.test(document.domain)) {
            document.getElementsByTagName("head")[0].appendChild(script);
        }
    } catch (e) {
        console.log("AllianceMemberOnline init error: ", e);
    }
})();