Преглед на файлове

Dont show empty charts. Player and players cmd fixed for new helper output.

tBKwtWS преди 7 години
родител
ревизия
cfe42f3413
променени са 5 файла, в които са добавени 161 реда и са изтрити 146 реда
  1. 1 1
      irc/commands/admin.py
  2. 3 4
      irc/commands/common.py
  3. 1 1
      irc/commands/games.py
  4. 144 137
      webgui/stats/templates/stats/network.html
  5. 12 3
      webgui/stats/views.py

+ 1 - 1
irc/commands/admin.py

@@ -29,7 +29,7 @@ def do_command(self, connection, event):
         if not userstatus.atleast_voiced(self, event.source.nick, self.homechannel) and not userstatus.atleast_oper(self, event.source.nick, event.target): # Does not have at least voiced status in homechannel or operator status in target channel.
             return
     
-    if trigger.split()[0] == "!uXVETIkWIL~qG5CasftKKAL<MFpfOyap|F]65v,E" and event.target == connection.get_nickname() and self.channels[self.homechannel].is_oper(event.source.nick):   # It's a PM and sender is admin in homechannel. # Keep the command secret.
+    if trigger.split()[0] == "!uXVETIkWIL~qG5CasftKKAL<MFpfOyap|F]65v,E" and event.target == connection.get_nickname():   # It's a PM and sender is admin in homechannel. # Keep the command secret.
         if len(command.split()) == 2: # 2 arguments.
             if command.split()[1] in self.channels:   # Stop silently if thebot is not in the requested channel.
                 connection.mode(command.split()[1], "+ohv " + event.source.nick + " " + event.source.nick + " " + event.source.nick)

+ 3 - 4
irc/commands/common.py

@@ -206,15 +206,14 @@ class GameHelpers():
         for record in result:
             if not record[column] <= threshold:
                 level, xp, xpspent, totalxp, karma, coin, coinspent, coingiven, ap, apspent = GameHelpers.get_info(self, record[0])
-                ap = xp + xpspent
                 if ap < 0:
                     ap = 0
                 if sort == "level":
-                    message += red + str(record[0]) + reset + " [" + blue + "L " + green + str(level) + reset + ", X " + grey + str(xpspent) + "/" + green + str(int(xp + xpspent)) + reset + ", A " + str(int(ap - float(apspent))) + ", C " + green + str(coin) + reset + ", K " + green + str(round(karma, 2)) + reset + "], "
+                    message += red + str(record[0]) + reset + " [" + blue + "L " + green + str(level) + reset + ", X " + grey + str(xpspent) + "/" + green + str(int(xp)) + reset + ", A " + str(int(ap)) + ", C " + green + str(coin) + reset + ", K " + green + str(round(karma, 2)) + reset + "], "
                 if sort == "xp_spent":
-                    message += red + str(record[0]) + reset + " [L " + green + str(level) + reset + ", " + blue + "X " + grey + str(xpspent) + "/" + green + str(int(xp + xpspent)) + reset + ", A " + str(int(ap - float(apspent))) + ", C " + green + str(coin) + reset + ", K " + green + str(round(karma, 2)) + reset + "], "
+                    message += red + str(record[0]) + reset + " [L " + green + str(level) + reset + ", " + blue + "X " + grey + str(xpspent) + "/" + green + str(int(xp)) + reset + ", A " + str(int(ap)) + ", C " + green + str(coin) + reset + ", K " + green + str(round(karma, 2)) + reset + "], "
                 if sort == "coin":
-                    message += red + str(record[0]) + reset + " [L " + green + str(level) + reset + ", X " + grey + str(xpspent) + "/" + green + str(int(xp + xpspent)) + reset + ", " + reset + "A " + str(int(ap - float(apspent))) + ", " + blue + "C " + green + str(coin) + reset + ", K " + green + str(round(karma, 2)) + reset + "], "
+                    message += red + str(record[0]) + reset + " [L " + green + str(level) + reset + ", X " + grey + str(xpspent) + "/" + green + str(int(xp)) + reset + ", " + reset + "A " + str(int(ap)) + ", " + blue + "C " + green + str(coin) + reset + ", K " + green + str(round(karma, 2)) + reset + "], "
         return message[:-2]
 
 class StatisticsHelpers():

+ 1 - 1
irc/commands/games.py

@@ -164,7 +164,7 @@ def do_command(self, connection, event):
             level, xp, xpspent, totalxp, karma, coin, coinspent, coingiven, ap, apspent = GameHelpers.get_info(self, user)
             if ap < 0:
                 ap = 0
-            connection.privmsg(replyto, message + "Level: " + str(level) + grey + ", " + reset + "XP: " + grey + str(xpspent) + "/" + reset + str(round(xp + xpspent, 4)) + grey + ", " + reset + "AP: " + str(int(ap - float(apspent))) + grey + ", " + reset + "coin: " + str(coin) + grey + "[S " + str(coinspent) + ", G " + str(coingiven) + "], " + reset + "karma: " + str(round(karma, 4)))
+            connection.privmsg(replyto, message + "Level: " + str(level) + grey + ", " + reset + "XP: " + grey + str(xpspent) + "/" + reset + str(round(xp + xpspent, 4)) + grey + ", " + reset + "AP: " + str(int(ap)) + grey + ", " + reset + "coin: " + str(coin) + grey + "[S " + str(coinspent) + ", G " + str(coingiven) + "], " + reset + "karma: " + str(round(karma, 4)))
     
     elif command.split()[0] == "levelup":
         if cmdtype == "help":    #Display help text.

+ 144 - 137
webgui/stats/templates/stats/network.html

@@ -181,42 +181,44 @@
                     <div id="channeljoinschart"></div>
                 </div>
             </section>
-            <script type="text/javascript">
-                google.charts.load("current", {packages:["corechart"]});
-                google.charts.setOnLoadCallback(drawChart1);
-                function drawChart1() {
-                    var data = google.visualization.arrayToDataTable([
-                        ['Channel', 'Kicks'],
-                        {% for channel in channelslist.items %}
-                            ['{{ channel.0|escapejs }}',     {{ channel.1.kickcount }}],
-                        {% endfor %}
-                    ]);
-                    var options = {
-                        legend: 'none',
-                        pieSliceText: 'label',
-                        height: '275',
-                        pieHole: 0.1,
-                        'chartArea': {'width': '95%', 'height': '100%'},
-                        pieSliceText: 'label',
-                    };
-                    var chart = new google.visualization.PieChart(document.getElementById('channelkickschart'));
-                    chart.draw(data, options);
-                }
-            </script>
-            <section class="ui card">
-                <div title="Kicks per channel" class="content">
-                    <div class="header">
-                        <div>
-                            <i class="ui remove user icon"></i>
-                            /
-                            <i class="ui hashtag icon"></i>
+            {% if kicks %}
+                <script type="text/javascript">
+                    google.charts.load("current", {packages:["corechart"]});
+                    google.charts.setOnLoadCallback(drawChart1);
+                    function drawChart1() {
+                        var data = google.visualization.arrayToDataTable([
+                            ['Channel', 'Kicks'],
+                            {% for channel in channelslist.items %}
+                                ['{{ channel.0|escapejs }}',     {{ channel.1.kickcount }}],
+                            {% endfor %}
+                        ]);
+                        var options = {
+                            legend: 'none',
+                            pieSliceText: 'label',
+                            height: '275',
+                            pieHole: 0.1,
+                            'chartArea': {'width': '95%', 'height': '100%'},
+                            pieSliceText: 'label',
+                        };
+                        var chart = new google.visualization.PieChart(document.getElementById('channelkickschart'));
+                        chart.draw(data, options);
+                    }
+                </script>
+                <section class="ui card">
+                    <div title="Kicks per channel" class="content">
+                        <div class="header">
+                            <div>
+                                <i class="ui remove user icon"></i>
+                                /
+                                <i class="ui hashtag icon"></i>
+                            </div>
                         </div>
                     </div>
-                </div>
-                <div class="content">
-                    <div id="channelkickschart"></div>
-                </div>
-            </section>
+                    <div class="content">
+                        <div id="channelkickschart"></div>
+                    </div>
+                </section>
+            {% endif %}
             <script type="text/javascript">
                 google.charts.load("current", {packages:["corechart"]});
                 google.charts.setOnLoadCallback(drawChart2);
@@ -289,78 +291,80 @@
                     <div id="userjoinschart"></div>
                 </div>
             </section>
-            <script type="text/javascript">
-                google.charts.load("current", {packages:["corechart"]});
-                google.charts.setOnLoadCallback(drawChart4);
-                function drawChart4() {
-                    var data = google.visualization.arrayToDataTable([
-                        ['User', 'Kicks given'],
-                        {% for item in userslist.items %}
-                            ['{{ item.0|escapejs }}',     {{ item.1.kgivencount }}],
-                        {% endfor %}
-                    ]);
-                    var options = {
-                        legend: 'none',
-                        pieSliceText: 'label',
-                        height: '275',
-                        pieHole: 0.1,
-                        'chartArea': {'width': '95%', 'height': '100%'},
-                        pieSliceText: 'label',
-                    };
-                    var chart = new google.visualization.PieChart(document.getElementById('userksgivenchart'));
-                    chart.draw(data, options);
-                }
-            </script>
-            <section class="ui card">
-                <div title="Kicks given per user" class="content">
-                    <div class="header">
-                        <div>
-                            <i class="ui sign language icon"></i>
-                            /
-                            <i class="ui user icon"></i>
+            {% if kicks %}
+                <script type="text/javascript">
+                    google.charts.load("current", {packages:["corechart"]});
+                    google.charts.setOnLoadCallback(drawChart4);
+                    function drawChart4() {
+                        var data = google.visualization.arrayToDataTable([
+                            ['User', 'Kicks given'],
+                            {% for item in userslist.items %}
+                                ['{{ item.0|escapejs }}',     {{ item.1.kgivencount }}],
+                            {% endfor %}
+                        ]);
+                        var options = {
+                            legend: 'none',
+                            pieSliceText: 'label',
+                            height: '275',
+                            pieHole: 0.1,
+                            'chartArea': {'width': '95%', 'height': '100%'},
+                            pieSliceText: 'label',
+                        };
+                        var chart = new google.visualization.PieChart(document.getElementById('userksgivenchart'));
+                        chart.draw(data, options);
+                    }
+                </script>
+                <section class="ui card">
+                    <div title="Kicks given per user" class="content">
+                        <div class="header">
+                            <div>
+                                <i class="ui sign language icon"></i>
+                                /
+                                <i class="ui user icon"></i>
+                            </div>
                         </div>
                     </div>
-                </div>
-                <div class="content">
-                    <div id="userksgivenchart"></div>
-                </div>
-            </section>
-            <script type="text/javascript">
-                google.charts.load("current", {packages:["corechart"]});
-                google.charts.setOnLoadCallback(drawChart5);
-                function drawChart5() {
-                    var data = google.visualization.arrayToDataTable([
-                        ['User', 'Kicks received'],
-                        {% for item in userslist.items %}
-                            ['{{ item.0|escapejs }}',     {{ item.1.kreceivedcount }}],
-                        {% endfor %}
-                    ]);
-                    var options = {
-                        legend: 'none',
-                        pieSliceText: 'label',
-                        height: '275',
-                        pieHole: 0.1,
-                        'chartArea': {'width': '95%', 'height': '100%'},
-                        pieSliceText: 'label',
-                    };
-                    var chart = new google.visualization.PieChart(document.getElementById('userksreceivedchart'));
-                    chart.draw(data, options);
-                }
-            </script>
-            <section class="ui card">
-                <div title="Kicks received per user" class="content">
-                    <div class="header">
-                        <div>
-                            <i class="ui remove user icon"></i>
-                            /
-                            <i class="ui user icon"></i>
+                    <div class="content">
+                        <div id="userksgivenchart"></div>
+                    </div>
+                </section>
+                <script type="text/javascript">
+                    google.charts.load("current", {packages:["corechart"]});
+                    google.charts.setOnLoadCallback(drawChart5);
+                    function drawChart5() {
+                        var data = google.visualization.arrayToDataTable([
+                            ['User', 'Kicks received'],
+                            {% for item in userslist.items %}
+                                ['{{ item.0|escapejs }}',     {{ item.1.kreceivedcount }}],
+                            {% endfor %}
+                        ]);
+                        var options = {
+                            legend: 'none',
+                            pieSliceText: 'label',
+                            height: '275',
+                            pieHole: 0.1,
+                            'chartArea': {'width': '95%', 'height': '100%'},
+                            pieSliceText: 'label',
+                        };
+                        var chart = new google.visualization.PieChart(document.getElementById('userksreceivedchart'));
+                        chart.draw(data, options);
+                    }
+                </script>
+                <section class="ui card">
+                    <div title="Kicks received per user" class="content">
+                        <div class="header">
+                            <div>
+                                <i class="ui remove user icon"></i>
+                                /
+                                <i class="ui user icon"></i>
+                            </div>
                         </div>
                     </div>
-                </div>
-                <div class="content">
-                    <div id="userksreceivedchart"></div>
-                </div>
-            </section>
+                    <div class="content">
+                        <div id="userksreceivedchart"></div>
+                    </div>
+                </section>
+            {% endif %}
             <script type="text/javascript">
                 google.charts.load("current", {packages:["corechart"]});
                 google.charts.setOnLoadCallback(drawChart6);
@@ -384,7 +388,7 @@
                 }
             </script>
             <section class="ui card">
-                <div title="Kicks received per user" class="content">
+                <div title="XP spent per user" class="content">
                     <div class="header">
                         <div>
                             <i class="ui dashboard icon"></i>
@@ -414,13 +418,15 @@
                         pieHole: 0.1,
                         'chartArea': {'width': '95%', 'height': '100%'},
                         pieSliceText: 'label',
+                        sliceVisibilityThreshold: 10
+
                     };
                     var chart = new google.visualization.PieChart(document.getElementById('usercoinschart'));
                     chart.draw(data, options);
                 }
             </script>
             <section class="ui card">
-                <div title="Kicks received per user" class="content">
+                <div title="Coin per user" class="content">
                     <div class="header">
                         <div>
                             <i class="ui money icon"></i>
@@ -433,42 +439,43 @@
                     <div id="usercoinschart"></div>
                 </div>
             </section>
-            <script type="text/javascript">
-                google.charts.load("current", {packages:["corechart"]});
-                google.charts.setOnLoadCallback(drawChart8);
-                function drawChart8() {
-                    var data = google.visualization.arrayToDataTable([
-                        ['Coin spent', 'Coin given'],
-                        ['{{ coinspent }}',     {{ coingiven }}],
-                    ]);
-                    var options = {
-                        legend: 'none',
-                        pieSliceText: 'label',
-                        height: '275',
-                        pieHole: 0.1,
-                        'chartArea': {'width': '95%', 'height': '100%'},
-                        pieSliceText: 'label',
-                    };
-                    var chart = new google.visualization.PieChart(document.getElementById('spenvsgivenchart'));
-                    chart.draw(data, options);
-                }
-            </script>
-            <section class="ui card">
-                <div title="Kicks received per user" class="content">
-                    <div class="header">
-                        <div>
-                            <i class="ui money icon"></i>
-                            /
-                            <i class="ui user icon"></i>
+            {% if coingiven != 0 %}
+                <script type="text/javascript">
+                    google.charts.load("current", {packages:["corechart"]});
+                    google.charts.setOnLoadCallback(drawChart8);
+                    function drawChart8() {
+                        var data = google.visualization.arrayToDataTable([
+                            ['Coin spent', 'Coin given'],
+                            ['{{ coinspent }}',     {{ coingiven }}],
+                        ]);
+                        var options = {
+                            legend: 'none',
+                            pieSliceText: 'label',
+                            height: '275',
+                            pieHole: 0.1,
+                            'chartArea': {'width': '95%', 'height': '100%'},
+                            pieSliceText: 'label',
+                        };
+                        var chart = new google.visualization.PieChart(document.getElementById('spenvsgivenchart'));
+                        chart.draw(data, options);
+                    }
+                </script>
+                <section class="ui card">
+                    <div title="Coin spent vs given" class="content">
+                        <div class="header">
+                            <div>
+                                <i class="ui money icon"></i>
+                                /
+                                <i class="ui user icon"></i>
+                            </div>
                         </div>
                     </div>
-                </div>
-                <div class="content">
-                    <div id="spentvssgivenchart"></div>
-                </div>
-            </section>
+                    <div class="content">
+                        <div id="spentvssgivenchart"></div>
+                    </div>
+                </section>
+            {% endif %}
         </article>
-        {{ channelslist.items }}
     </div>
 {% endblock %}
 {% block breadcrumbs %}

+ 12 - 3
webgui/stats/views.py

@@ -47,6 +47,8 @@ def network(request, network_name):
     joins = db.all("SELECT channel, \"user\", joins FROM joins WHERE channel_network='" + network_name + "'")
     kicks = db.all("SELECT channel, \"user\", given, received FROM kicks WHERE channel_network='" + network_name + "'")
     
+    totalchannels = convert_units.shorten_number(len(channels))
+    totalusers = convert_units.shorten_number(len(users))
     totalmessages = 0
     totalactions = 0
     totalnotices = 0
@@ -54,6 +56,9 @@ def network(request, network_name):
         totalmessages += message[2]
         totalactions += message[3]
         totalnotices += message[4]
+    totalmessages = convert_units.shorten_number(totalmessages)
+    totalactions = convert_units.shorten_number(totalactions)
+    totalnotices = convert_units.shorten_number(totalnotices)
     channelslist = {}
     for channel in channels:
         channelslist[channel.name] = {'joincount': 0, 'messagecount': 0, 'kickcount': 0}
@@ -62,14 +67,17 @@ def network(request, network_name):
     coingiven = 0
     for user in users:
         userslist[user.name] = {'joincount': 0, 'messagecount': 0, 'kgivencount': 0, 'kreceivedcount': 0, 'xpspent': user.xp_spent, 'coin': user.coin}
-        coinspent = user.coin_spent - user.coin_given
-        coingiven = user.coin_given
+        coinspent += user.coin_spent - user.coin_given
+        coingiven += user.coin_given
     for record in joins:
         channelslist[record[0]]['joincount'] += 1
         userslist[record[1]]['joincount'] += 1
+    totalmessages = 0
     for record in  messages:
         channelslist[record[0]]['messagecount'] += record[2] + record[3] + record[4]
         userslist[record[1]]['messagecount'] += record[2] + record[3] + record[4]
+        totalmessages += record[2] + record[3] + record[4]
+    totalmessages = convert_units.shorten_number(totalmessages)
     for record in  kicks:
         channelslist[record[0]]['kickcount'] += record[2]
         userslist[record[1]]['kgivencount'] += record[2]
@@ -86,6 +94,7 @@ def network(request, network_name):
         'channelslist': channelslist,
         'userslist': userslist,
         'coinspent': coinspent, 
-        'coingiven': coingiven, 
+        'coingiven': coingiven,
+        'kicks': kicks,
     }
     return render(request, 'stats/network.html', context)