diff --git a/data/interfaces/default/graphs.html b/data/interfaces/default/graphs.html index b79ef59a..c74fa590 100644 --- a/data/interfaces/default/graphs.html +++ b/data/interfaces/default/graphs.html @@ -305,6 +305,23 @@ setLocalStorage(chart_key, JSON.stringify(chart_visibility)); } + + function getGraphColors(data_series) { + var colors = { + 'TV': '#E5A00D', + 'Movies': '#FFFFFF', + 'Music': '#F06464', + 'Live TV': '#19A0D7', + 'Direct Play': '#E5A00D', + 'Direct Stream': '#FFFFFF', + 'Transcode': '#F06464' + }; + var series_colors = []; + $.each(data_series, function(index, series) { + series_colors.push(colors[series.name]); + }); + return series_colors; + } @@ -391,6 +408,7 @@ hc_plays_by_day_options.yAxis.min = 0; hc_plays_by_day_options.xAxis.categories = dateArray; hc_plays_by_day_options.series = getGraphVisibility(hc_plays_by_day_options.chart.renderTo, data.series); + hc_plays_by_day_options.colors = getGraphColors(data.series); var hc_plays_by_day = new Highcharts.Chart(hc_plays_by_day_options); } }); @@ -404,6 +422,7 @@ if (yaxis === 'duration') { dataSecondsToHours(data); } hc_plays_by_dayofweek_options.xAxis.categories = data.categories; hc_plays_by_dayofweek_options.series = getGraphVisibility(hc_plays_by_dayofweek_options.chart.renderTo, data.series); + hc_plays_by_dayofweek_options.colors = getGraphColors(data.series); var hc_plays_by_dayofweek = new Highcharts.Chart(hc_plays_by_dayofweek_options); } }); @@ -417,6 +436,7 @@ if (yaxis === 'duration') { dataSecondsToHours(data); } hc_plays_by_hourofday_options.xAxis.categories = data.categories; hc_plays_by_hourofday_options.series = getGraphVisibility(hc_plays_by_hourofday_options.chart.renderTo, data.series); + hc_plays_by_hourofday_options.colors = getGraphColors(data.series); var hc_plays_by_hourofday = new Highcharts.Chart(hc_plays_by_hourofday_options); } }); @@ -430,6 +450,7 @@ if (yaxis === 'duration') { dataSecondsToHours(data); } hc_plays_by_platform_options.xAxis.categories = data.categories; hc_plays_by_platform_options.series = getGraphVisibility(hc_plays_by_platform_options.chart.renderTo, data.series); + hc_plays_by_platform_options.colors = getGraphColors(data.series); var hc_plays_by_platform = new Highcharts.Chart(hc_plays_by_platform_options); } }); @@ -443,6 +464,7 @@ if (yaxis === 'duration') { dataSecondsToHours(data); } hc_plays_by_user_options.xAxis.categories = data.categories; hc_plays_by_user_options.series = getGraphVisibility(hc_plays_by_user_options.chart.renderTo, data.series); + hc_plays_by_user_options.colors = getGraphColors(data.series); var hc_plays_by_user = new Highcharts.Chart(hc_plays_by_user_options); } }); @@ -479,6 +501,7 @@ hc_plays_by_stream_type_options.yAxis.min = 0; hc_plays_by_stream_type_options.xAxis.categories = dateArray; hc_plays_by_stream_type_options.series = getGraphVisibility(hc_plays_by_stream_type_options.chart.renderTo, data.series); + hc_plays_by_stream_type_options.colors = getGraphColors(data.series); var hc_plays_by_stream_type = new Highcharts.Chart(hc_plays_by_stream_type_options); } }); @@ -492,6 +515,7 @@ if (yaxis === 'duration') { dataSecondsToHours(data); } hc_plays_by_source_resolution_options.xAxis.categories = data.categories; hc_plays_by_source_resolution_options.series = getGraphVisibility(hc_plays_by_source_resolution_options.chart.renderTo, data.series); + hc_plays_by_source_resolution_options.colors = getGraphColors(data.series); var hc_plays_by_source_resolution = new Highcharts.Chart(hc_plays_by_source_resolution_options); } }); @@ -505,6 +529,7 @@ if (yaxis === 'duration') { dataSecondsToHours(data); } hc_plays_by_stream_resolution_options.xAxis.categories = data.categories; hc_plays_by_stream_resolution_options.series = getGraphVisibility(hc_plays_by_stream_resolution_options.chart.renderTo, data.series); + hc_plays_by_stream_resolution_options.colors = getGraphColors(data.series); var hc_plays_by_stream_resolution = new Highcharts.Chart(hc_plays_by_stream_resolution_options); } }); @@ -518,6 +543,7 @@ if (yaxis === 'duration') { dataSecondsToHours(data); } hc_plays_by_platform_by_stream_type_options.xAxis.categories = data.categories; hc_plays_by_platform_by_stream_type_options.series = getGraphVisibility(hc_plays_by_platform_by_stream_type_options.chart.renderTo, data.series); + hc_plays_by_platform_by_stream_type_options.colors = getGraphColors(data.series); var hc_plays_by_platform_by_stream_type = new Highcharts.Chart(hc_plays_by_platform_by_stream_type_options); } }); @@ -531,6 +557,7 @@ if (yaxis === 'duration') { dataSecondsToHours(data); } hc_plays_by_user_by_stream_type_options.xAxis.categories = data.categories; hc_plays_by_user_by_stream_type_options.series = getGraphVisibility(hc_plays_by_user_by_stream_type_options.chart.renderTo, data.series); + hc_plays_by_user_by_stream_type_options.colors = getGraphColors(data.series); var hc_plays_by_user_by_stream_type = new Highcharts.Chart(hc_plays_by_user_by_stream_type_options); } }); @@ -554,6 +581,7 @@ hc_plays_by_month_options.yAxis.min = 0; hc_plays_by_month_options.xAxis.categories = data.categories; hc_plays_by_month_options.series = getGraphVisibility(hc_plays_by_month_options.chart.renderTo, data.series); + hc_plays_by_month_options.colors = getGraphColors(data.series); var hc_plays_by_month = new Highcharts.Chart(hc_plays_by_month_options); } }); diff --git a/data/interfaces/default/js/graphs/plays_by_day.js b/data/interfaces/default/js/graphs/plays_by_day.js index da6de24d..3252403e 100644 --- a/data/interfaces/default/js/graphs/plays_by_day.js +++ b/data/interfaces/default/js/graphs/plays_by_day.js @@ -40,7 +40,6 @@ var hc_plays_by_day_options = { } } }, - colors: ['#E5A00D', '#FFFFFF', '#F06464', '#19A0D7'], xAxis: { type: 'datetime', labels: { diff --git a/data/interfaces/default/js/graphs/plays_by_dayofweek.js b/data/interfaces/default/js/graphs/plays_by_dayofweek.js index d3cf4dfe..84337f8d 100644 --- a/data/interfaces/default/js/graphs/plays_by_dayofweek.js +++ b/data/interfaces/default/js/graphs/plays_by_dayofweek.js @@ -23,7 +23,6 @@ var hc_plays_by_dayofweek_options = { credits: { enabled: false }, - colors: ['#E5A00D', '#FFFFFF', '#F06464', '#19A0D7'], xAxis: { categories: [{}], labels: { diff --git a/data/interfaces/default/js/graphs/plays_by_hourofday.js b/data/interfaces/default/js/graphs/plays_by_hourofday.js index a36d37c0..e9d0ca4c 100644 --- a/data/interfaces/default/js/graphs/plays_by_hourofday.js +++ b/data/interfaces/default/js/graphs/plays_by_hourofday.js @@ -23,7 +23,6 @@ var hc_plays_by_hourofday_options = { credits: { enabled: false }, - colors: ['#E5A00D', '#FFFFFF', '#F06464', '#19A0D7'], xAxis: { categories: [{}], labels: { diff --git a/data/interfaces/default/js/graphs/plays_by_month.js b/data/interfaces/default/js/graphs/plays_by_month.js index 9dc4d4da..084c636c 100644 --- a/data/interfaces/default/js/graphs/plays_by_month.js +++ b/data/interfaces/default/js/graphs/plays_by_month.js @@ -23,7 +23,6 @@ var hc_plays_by_month_options = { credits: { enabled: false }, - colors: ['#E5A00D', '#FFFFFF', '#F06464', '#19A0D7'], xAxis: { labels: { style: { diff --git a/data/interfaces/default/js/graphs/plays_by_platform.js b/data/interfaces/default/js/graphs/plays_by_platform.js index a3e7f890..70e0c193 100644 --- a/data/interfaces/default/js/graphs/plays_by_platform.js +++ b/data/interfaces/default/js/graphs/plays_by_platform.js @@ -23,7 +23,6 @@ var hc_plays_by_platform_options = { credits: { enabled: false }, - colors: ['#E5A00D', '#FFFFFF', '#F06464', '#19A0D7'], xAxis: { categories: [{}], labels: { diff --git a/data/interfaces/default/js/graphs/plays_by_platform_by_stream_type.js b/data/interfaces/default/js/graphs/plays_by_platform_by_stream_type.js index 0b9e6b19..95727a50 100644 --- a/data/interfaces/default/js/graphs/plays_by_platform_by_stream_type.js +++ b/data/interfaces/default/js/graphs/plays_by_platform_by_stream_type.js @@ -23,7 +23,6 @@ var hc_plays_by_platform_by_stream_type_options = { credits: { enabled: false }, - colors: ['#E5A00D', '#FFFFFF', '#F06464'], xAxis: { categories: [{}], labels: { diff --git a/data/interfaces/default/js/graphs/plays_by_source_resolution.js b/data/interfaces/default/js/graphs/plays_by_source_resolution.js index e7744138..b8273780 100644 --- a/data/interfaces/default/js/graphs/plays_by_source_resolution.js +++ b/data/interfaces/default/js/graphs/plays_by_source_resolution.js @@ -23,7 +23,6 @@ var hc_plays_by_source_resolution_options = { credits: { enabled: false }, - colors: ['#E5A00D', '#FFFFFF', '#F06464'], xAxis: { categories: [{}], labels: { diff --git a/data/interfaces/default/js/graphs/plays_by_stream_resolution.js b/data/interfaces/default/js/graphs/plays_by_stream_resolution.js index 54881cf9..103d9443 100644 --- a/data/interfaces/default/js/graphs/plays_by_stream_resolution.js +++ b/data/interfaces/default/js/graphs/plays_by_stream_resolution.js @@ -23,7 +23,6 @@ var hc_plays_by_stream_resolution_options = { credits: { enabled: false }, - colors: ['#E5A00D', '#FFFFFF', '#F06464'], xAxis: { categories: [{}], labels: { diff --git a/data/interfaces/default/js/graphs/plays_by_stream_type.js b/data/interfaces/default/js/graphs/plays_by_stream_type.js index c34c5706..1be862f4 100644 --- a/data/interfaces/default/js/graphs/plays_by_stream_type.js +++ b/data/interfaces/default/js/graphs/plays_by_stream_type.js @@ -40,7 +40,6 @@ var hc_plays_by_stream_type_options = { } } }, - colors: ['#E5A00D', '#FFFFFF', '#F06464'], xAxis: { type: 'datetime', labels: { diff --git a/data/interfaces/default/js/graphs/plays_by_user.js b/data/interfaces/default/js/graphs/plays_by_user.js index f49b837f..eb3a528a 100644 --- a/data/interfaces/default/js/graphs/plays_by_user.js +++ b/data/interfaces/default/js/graphs/plays_by_user.js @@ -23,7 +23,6 @@ var hc_plays_by_user_options = { credits: { enabled: false }, - colors: ['#E5A00D', '#FFFFFF', '#F06464', '#19A0D7'], xAxis: { categories: [{}], labels: { diff --git a/data/interfaces/default/js/graphs/plays_by_user_by_stream_type.js b/data/interfaces/default/js/graphs/plays_by_user_by_stream_type.js index c8daa322..55ca25ca 100644 --- a/data/interfaces/default/js/graphs/plays_by_user_by_stream_type.js +++ b/data/interfaces/default/js/graphs/plays_by_user_by_stream_type.js @@ -23,7 +23,6 @@ var hc_plays_by_user_by_stream_type_options = { credits: { enabled: false }, - colors: ['#E5A00D', '#FFFFFF', '#F06464'], xAxis: { categories: [{}], labels: { diff --git a/plexpy/graphs.py b/plexpy/graphs.py index ee98dceb..9caf2198 100644 --- a/plexpy/graphs.py +++ b/plexpy/graphs.py @@ -18,6 +18,7 @@ import datetime import plexpy import common import database +import libraries import logger import session @@ -127,8 +128,18 @@ class Graphs(object): series_4_output = {'name': 'Live TV', 'data': series_4} + series_output = [] + if libraries.has_library_type('show'): + series_output.append(series_1_output) + if libraries.has_library_type('movie'): + series_output.append(series_2_output) + if libraries.has_library_type('artist'): + series_output.append(series_3_output) + if libraries.has_library_type('live'): + series_output.append(series_4_output) + output = {'categories': categories, - 'series': [series_1_output, series_2_output, series_3_output, series_4_output]} + 'series': series_output} return output def get_total_plays_per_dayofweek(self, time_range='30', y_axis='plays', user_id=None, grouping=None): @@ -248,8 +259,18 @@ class Graphs(object): series_4_output = {'name': 'Live TV', 'data': series_4} + series_output = [] + if libraries.has_library_type('show'): + series_output.append(series_1_output) + if libraries.has_library_type('movie'): + series_output.append(series_2_output) + if libraries.has_library_type('artist'): + series_output.append(series_3_output) + if libraries.has_library_type('live'): + series_output.append(series_4_output) + output = {'categories': categories, - 'series': [series_1_output, series_2_output, series_3_output, series_4_output]} + 'series': series_output} return output def get_total_plays_per_hourofday(self, time_range='30', y_axis='plays', user_id=None, grouping=None): @@ -351,8 +372,18 @@ class Graphs(object): series_4_output = {'name': 'Live TV', 'data': series_4} + series_output = [] + if libraries.has_library_type('show'): + series_output.append(series_1_output) + if libraries.has_library_type('movie'): + series_output.append(series_2_output) + if libraries.has_library_type('artist'): + series_output.append(series_3_output) + if libraries.has_library_type('live'): + series_output.append(series_4_output) + output = {'categories': categories, - 'series': [series_1_output, series_2_output, series_3_output, series_4_output]} + 'series': series_output} return output def get_total_plays_per_month(self, time_range='12', y_axis='plays', user_id=None, grouping=None): @@ -462,8 +493,18 @@ class Graphs(object): series_4_output = {'name': 'Live TV', 'data': series_4} + series_output = [] + if libraries.has_library_type('show'): + series_output.append(series_1_output) + if libraries.has_library_type('movie'): + series_output.append(series_2_output) + if libraries.has_library_type('artist'): + series_output.append(series_3_output) + if libraries.has_library_type('live'): + series_output.append(series_4_output) + output = {'categories': categories, - 'series': [series_1_output, series_2_output, series_3_output, series_4_output]} + 'series': series_output} return output def get_total_plays_by_top_10_platforms(self, time_range='30', y_axis='plays', user_id=None, grouping=None): @@ -548,8 +589,18 @@ class Graphs(object): series_4_output = {'name': 'Live TV', 'data': series_4} + series_output = [] + if libraries.has_library_type('show'): + series_output.append(series_1_output) + if libraries.has_library_type('movie'): + series_output.append(series_2_output) + if libraries.has_library_type('artist'): + series_output.append(series_3_output) + if libraries.has_library_type('live'): + series_output.append(series_4_output) + output = {'categories': categories, - 'series': [series_1_output, series_2_output, series_3_output, series_4_output]} + 'series': series_output} return output def get_total_plays_by_top_10_users(self, time_range='30', y_axis='plays', user_id=None, grouping=None): @@ -647,8 +698,18 @@ class Graphs(object): series_4_output = {'name': 'Live TV', 'data': series_4} + series_output = [] + if libraries.has_library_type('show'): + series_output.append(series_1_output) + if libraries.has_library_type('movie'): + series_output.append(series_2_output) + if libraries.has_library_type('artist'): + series_output.append(series_3_output) + if libraries.has_library_type('live'): + series_output.append(series_4_output) + output = {'categories': categories, - 'series': [series_1_output, series_2_output, series_3_output, series_4_output]} + 'series': series_output} return output def get_total_plays_per_stream_type(self, time_range='30', y_axis='plays', user_id=None, grouping=None): diff --git a/plexpy/libraries.py b/plexpy/libraries.py index 24869451..0b5a63cc 100644 --- a/plexpy/libraries.py +++ b/plexpy/libraries.py @@ -111,6 +111,14 @@ def add_live_tv_library(): plexpy.CONFIG.write() +def has_library_type(section_type): + monitor_db = database.MonitorDatabase() + query = 'SELECT * FROM library_sections WHERE section_type = ? AND deleted_section = 0' + args = [section_type] + result = monitor_db.select_single(query=query, args=args) + return bool(result) + + def update_section_ids(): plexpy.CONFIG.UPDATE_SECTION_IDS = -1