Improve graph tooltip

One checkbox to group them all
Do not cache graph data
Fix variable for db in init test
Remove superfluous includes
Remove superfluous debug logging
This commit is contained in:
Tim 2015-06-24 17:35:41 +02:00
parent c2e9025f9f
commit 838ee5cae9
9 changed files with 28 additions and 78 deletions

View file

@ -184,9 +184,10 @@
<p class="help-block">Full path and file name of your PlexWatch database.</p>
</div>
<div class="checkbox">
<input type="checkbox" id="grouping_global_history" name="grouping_global_history" value="1" ${config['grouping_global_history']}> Global History
<p class="help-block">Enable global history grouping.</p>
<input type="checkbox" id="grouping_global_history" name="grouping_global_history" value="1" ${config['grouping_global_history']}> Enable Grouping
<p class="help-block">Show grouped history data. <a target="_blank" href="https://github.com/ljunkie/plexWatch#list-watched-shows-option---nogrouping-vs-default">More info.</a></p>
</div>
<!--
<div class="checkbox">
<input type="checkbox" id="grouping_user_history" name="grouping_user_history" value="1" ${config['grouping_user_history']}> User History
<p class="help-block">Enable user history grouping.</p>
@ -195,6 +196,7 @@
<input type="checkbox" id="grouping_charts" name="grouping_charts" value="1" ${config['grouping_charts']}> Charts History
<p class="help-block">Enable chart grouping.</p>
</div>
-->
</fieldset>
</div>
</div>

View file

@ -85,6 +85,7 @@ from plexpy import helpers
type: 'get',
data: { time_range: '30' },
dataType: "json",
cache: false,
success: function(data) {
var dateArray = [];
for (var i = 0; i < data.categories.length; i++) {
@ -102,6 +103,7 @@ from plexpy import helpers
type: 'get',
data: { time_range: '30' },
dataType: "json",
cache: false,
success: function(data) {
hc_plays_by_dayofweek_options.xAxis.categories = data.categories;
hc_plays_by_dayofweek_options.series = data.series;
@ -114,6 +116,7 @@ from plexpy import helpers
type: 'get',
data: { time_range: '30' },
dataType: "json",
cache: false,
success: function(data) {
hc_plays_by_hourofday_options.xAxis.categories = data.categories;
hc_plays_by_hourofday_options.series = data.series;

View file

@ -40,7 +40,7 @@ var hc_plays_by_day_options = {
},
tooltip: {
formatter: function() {
var monthStr = moment(this.x).format("MMM D");
var monthStr = moment(this.x).format("ddd MMM D");
var s = '<b>'+ monthStr +'</b>';
$.each(this.points, function(i, point) {

View file

@ -298,7 +298,7 @@ def sig_handler(signum=None, frame=None):
def dbcheck():
conn = sqlite3.connect(DB_FILE)
conn = sqlite3.connect(plexpy.CONFIG.PLEXWATCH_DATABASE)
c = conn.cursor()
conn.commit()
c.close()

View file

@ -99,10 +99,9 @@ class DataTables(object):
if int(order_column) == parameter['index']:
if parameter['data'] in column_data['column_named'] and parameter['orderable'] == 'true':
order = 'ORDER BY %s COLLATE NOCASE %s' % (parameter['data'], order_dir)
logger.debug(u"order string %s " % order)
else:
order = 'ORDER BY %s COLLATE NOCASE %s' % (column_data['column_named'][order_column], order_dir)
logger.debug(u"order string (NO param received) %s " % order)
return order
@staticmethod
@ -115,11 +114,9 @@ class DataTables(object):
for parameter in parameters:
if column in parameter['data']:
if parameter['searchable'] == 'true':
logger.debug(u"Column %s is searchable." % column)
where += column + ' LIKE "%' + search_value + '%" OR '
search_skip = True
else:
logger.debug(u"Column %s is NOT searchable." % column)
search_skip = True
if not search_skip:

View file

@ -100,20 +100,6 @@ class DBConnection:
return sqlResult
def get_history_table_name(self):
if plexpy.CONFIG.GROUPING_GLOBAL_HISTORY:
return "grouped"
else:
return "processed"
def get_user_table_name(self):
if plexpy.CONFIG.GROUPING_USER_HISTORY:
return "grouped"
else:
return "processed"
def upsert(self, tableName, valueDict, keyDict):
changesBefore = self.connection.total_changes

View file

@ -13,7 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with PlexPy. If not, see <http://www.gnu.org/licenses/>.
from plexpy import logger, helpers, request, datatables, config, db
from plexpy import logger, helpers, datatables, db
from xml.dom import minidom
import sys
if sys.version_info < (2, 7):
@ -22,7 +22,6 @@ else:
from collections import defaultdict, Counter
import datetime
import plexpy
import json
class PlexWatch(object):
@ -41,14 +40,6 @@ class PlexWatch(object):
else:
return "processed"
@staticmethod
def get_user_table_name():
if plexpy.CONFIG.GROUPING_USER_HISTORY:
return "grouped"
else:
return "processed"
def get_user_list(self, start='', length='', kwargs=None):
data_tables = datatables.DataTables()
@ -78,7 +69,7 @@ class PlexWatch(object):
'ip_address',
'COUNT(title) as plays']
try:
query = data_tables.ssp_query(table_name=self.get_user_table_name(),
query = data_tables.ssp_query(table_name=self.get_history_table_name(),
columns=columns,
start=start,
length=length,
@ -150,7 +141,7 @@ class PlexWatch(object):
]
try:
query = data_tables.ssp_query(table_name=self.get_user_table_name(),
query = data_tables.ssp_query(table_name=self.get_history_table_name(),
columns=columns,
start=start,
length=length,
@ -408,11 +399,11 @@ class PlexWatch(object):
try:
if user:
query = 'SELECT time, user, xml FROM %s WHERE user = "%s" ORDER BY time DESC LIMIT %s' % \
(self.get_user_table_name(), user, limit)
(self.get_history_table_name(), user, limit)
xml = myDB.select(query)
else:
query = 'SELECT time, user, xml FROM %s ORDER BY time DESC LIMIT %s' % \
(self.get_user_table_name(), limit)
(self.get_history_table_name(), limit)
xml = myDB.select(query)
except:
logger.warn("Unable to open PlexWatch database.")
@ -467,7 +458,7 @@ class PlexWatch(object):
try:
query = 'SELECT (SUM(stopped - time) - SUM(CASE WHEN paused_counter is null THEN 0 ELSE paused_counter END)) as total_time, ' \
'COUNT(id) AS total_plays ' \
'FROM %s %s' % (self.get_user_table_name(), where)
'FROM %s %s' % (self.get_history_table_name(), where)
result = myDB.select(query)
except:
logger.warn("Unable to open PlexWatch database.")
@ -501,7 +492,7 @@ class PlexWatch(object):
'FROM %s ' \
'WHERE user = "%s" ' \
'GROUP BY platform ' \
'ORDER BY platform_count DESC' % (self.get_user_table_name(), user)
'ORDER BY platform_count DESC' % (self.get_history_table_name(), user)
result = myDB.select(query)
except:
logger.warn("Unable to open PlexWatch database.")
@ -542,7 +533,7 @@ class PlexWatch(object):
query = 'SELECT xml ' \
'FROM %s ' \
'WHERE user = "%s" ' \
'ORDER BY id DESC LIMIT 1' % (self.get_user_table_name(), user)
'ORDER BY id DESC LIMIT 1' % (self.get_history_table_name(), user)
result = myDB.select_single(query)
except:
logger.warn("Unable to open PlexWatch database.")
@ -588,7 +579,7 @@ class PlexWatch(object):
'WHERE datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime") ' \
'AND episode != "" ' \
'GROUP BY orig_title ' \
'ORDER BY total_plays DESC LIMIT 10' % (self.get_user_table_name(), time_range)
'ORDER BY total_plays DESC LIMIT 10' % (self.get_history_table_name(), time_range)
result = myDB.select(query)
except:
logger.warn("Unable to open PlexWatch database.")
@ -631,7 +622,7 @@ class PlexWatch(object):
'WHERE datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime") ' \
'AND episode != "" ' \
'GROUP BY orig_title ' \
'ORDER BY users_watched DESC, total_plays DESC LIMIT 10' % (self.get_user_table_name(), time_range)
'ORDER BY users_watched DESC, total_plays DESC LIMIT 10' % (self.get_history_table_name(), time_range)
result = myDB.select(query)
except:
logger.warn("Unable to open PlexWatch database.")
@ -673,7 +664,7 @@ class PlexWatch(object):
'FROM %s ' \
'WHERE datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime") ' \
'GROUP BY user ' \
'ORDER BY total_plays DESC LIMIT 10' % (self.get_user_table_name(), time_range)
'ORDER BY total_plays DESC LIMIT 10' % (self.get_history_table_name(), time_range)
result = myDB.select(query)
except:
logger.warn("Unable to open PlexWatch database.")
@ -699,7 +690,7 @@ class PlexWatch(object):
'FROM %s ' \
'WHERE datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime") ' \
'GROUP BY platform ' \
'ORDER BY total_plays DESC' % (self.get_user_table_name(), time_range)
'ORDER BY total_plays DESC' % (self.get_history_table_name(), time_range)
result = myDB.select(query)
except:
logger.warn("Unable to open PlexWatch database.")
@ -750,7 +741,7 @@ class PlexWatch(object):
'FROM %s ' \
'WHERE datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime") ' \
'GROUP BY date_played ' \
'ORDER BY time ASC' % (self.get_user_table_name(), time_range)
'ORDER BY time ASC' % (self.get_history_table_name(), time_range)
result = myDB.select(query)
except:
@ -808,7 +799,7 @@ class PlexWatch(object):
'when 5 then "Friday" ' \
'else "Saturday" end as dayofweek, ' \
'COUNT(id) as total_plays ' \
'from ' + self.get_user_table_name() + ' ' + \
'from ' + self.get_history_table_name() + ' ' + \
'WHERE datetime(stopped, "unixepoch", "localtime") >= ' \
'datetime("now", "-' + time_range + ' days", "localtime") ' \
'GROUP BY dayofweek ' \
@ -849,7 +840,7 @@ class PlexWatch(object):
query = 'select strftime("%H", datetime(time, "unixepoch", "localtime")) as hourofday, ' \
'COUNT(id) ' \
'FROM ' + self.get_user_table_name() + ' ' + \
'FROM ' + self.get_history_table_name() + ' ' + \
'WHERE datetime(stopped, "unixepoch", "localtime") >= ' \
'datetime("now", "-' + time_range + ' days", "localtime") ' \
'GROUP BY hourofday ' \

View file

@ -13,23 +13,13 @@
# You should have received a copy of the GNU General Public License
# along with PlexPy. If not, see <http://www.gnu.org/licenses/>.
from plexpy import logger, helpers, common, request
from plexpy import logger, helpers
from xml.dom import minidom
from httplib import HTTPSConnection
from httplib import HTTPConnection
from urlparse import parse_qsl
from urllib import urlencode
from pynma import pynma
import base64
import cherrypy
import urllib
import urllib2
import plexpy
import os.path
import subprocess
import json
class PmsConnect(object):
@ -291,11 +281,9 @@ class PmsConnect(object):
if a.getElementsByTagName('Directory'):
metadata_main = a.getElementsByTagName('Directory')[0]
metadata_type = self.get_xml_attr(metadata_main, 'type')
logger.debug(u"Metadata type: %s" % metadata_type)
elif a.getElementsByTagName('Video'):
metadata_main = a.getElementsByTagName('Video')[0]
metadata_type = self.get_xml_attr(metadata_main, 'type')
logger.debug(u"Metadata type: %s" % metadata_type)
else:
logger.debug(u"Metadata failed")
@ -307,22 +295,18 @@ class PmsConnect(object):
if metadata_main.getElementsByTagName('Genre'):
for genre in metadata_main.getElementsByTagName('Genre'):
genres.append(self.get_xml_attr(genre, 'tag'))
logger.debug(u"Metadata genre: %s" % self.get_xml_attr(genre, 'tag'))
if metadata_main.getElementsByTagName('Role'):
for actor in metadata_main.getElementsByTagName('Role'):
actors.append(self.get_xml_attr(actor, 'tag'))
logger.debug(u"Metadata actor: %s" % self.get_xml_attr(actor, 'tag'))
if metadata_main.getElementsByTagName('Writer'):
for writer in metadata_main.getElementsByTagName('Writer'):
writers.append(self.get_xml_attr(writer, 'tag'))
logger.debug(u"Metadata genre: %s" % self.get_xml_attr(writer, 'tag'))
if metadata_main.getElementsByTagName('Director'):
for director in metadata_main.getElementsByTagName('Director'):
directors.append(self.get_xml_attr(director, 'tag'))
logger.debug(u"Metadata actor: %s" % self.get_xml_attr(director, 'tag'))
if metadata_type == 'show':
metadata = {'type': metadata_type,
@ -386,7 +370,6 @@ class PmsConnect(object):
elif metadata_type == 'season':
parent_rating_key = self.get_xml_attr(metadata_main, 'parentRatingKey')
show_details = self.get_metadata_details(parent_rating_key)
logger.debug(u"show_details = %r" % show_details)
metadata = {'type': metadata_type,
'ratingKey': self.get_xml_attr(metadata_main, 'ratingKey'),
'parentTitle': self.get_xml_attr(metadata_main, 'parentTitle'),
@ -447,7 +430,6 @@ class PmsConnect(object):
for a in xml_head:
if a.getAttribute('size'):
if a.getAttribute('size') == '0':
logger.debug(u"No active sessions.")
session_list = {'stream_count': '0',
'sessions': []
}
@ -456,14 +438,12 @@ class PmsConnect(object):
if a.getElementsByTagName('Track'):
session_data = a.getElementsByTagName('Track')
session_type = 'track'
logger.debug(u"Track session active.")
for session in session_data:
session_output = self.get_session_each(session_type, session)
session_list.append(session_output)
if a.getElementsByTagName('Video'):
session_data = a.getElementsByTagName('Video')
session_type = 'video'
logger.debug(u"Video session active.")
for session in session_data:
session_output = self.get_session_each(session_type, session)
session_list.append(session_output)

View file

@ -13,25 +13,17 @@
# You should have received a copy of the GNU General Public License
# along with PlexPy. If not, see <http://www.gnu.org/licenses/>.
from plexpy import logger, helpers, notifiers, plextv, pmsconnect, plexwatch
from plexpy.helpers import checked, radio, today, cleanName
from xml.dom import minidom
from plexpy import logger, notifiers, plextv, pmsconnect, plexwatch
from plexpy.helpers import checked, radio
from mako.lookup import TemplateLookup
from mako import exceptions
from operator import itemgetter
import plexpy
import threading
import cherrypy
import urllib2
import hashlib
import random
import urllib
import json
import time
import sys
import os
try:
@ -524,7 +516,6 @@ class WebInterface(object):
try:
pms_connect = pmsconnect.PmsConnect()
result = pms_connect.get_image(img, width, height)
logger.debug(u'Image proxy queried. Content type is %s' % result[0])
cherrypy.response.headers['Content-type'] = result[0]
return result[1]
except: