From 77be5727dc1ed91bf50d6a7da1aa739c0769de35 Mon Sep 17 00:00:00 2001 From: tyler breese Date: Fri, 20 Oct 2023 20:50:08 -0400 Subject: [PATCH] fixes to history fixes to library fixes to homepage --- .../default/js/tables/history_table.js | 16 ++++++++-------- .../default/js/tables/history_table_modal.js | 14 +++++++------- plexpy/datafactory.py | 9 ++++++--- plexpy/datatables.py | 2 ++ plexpy/libraries.py | 4 ++-- 5 files changed, 25 insertions(+), 20 deletions(-) diff --git a/data/interfaces/default/js/tables/history_table.js b/data/interfaces/default/js/tables/history_table.js index d209f90e..b56304ee 100644 --- a/data/interfaces/default/js/tables/history_table.js +++ b/data/interfaces/default/js/tables/history_table.js @@ -176,27 +176,27 @@ history_table_options = { icon_title = (rowData['live']) ? 'Live TV' : 'Movie'; if (rowData['year']) { parent_info = ' (' + rowData['year'] + ')'; } media_type = ''; - thumb_popover = '' + cellData + parent_info + ''; - $(td).html('
' + media_type + ' ' + thumb_popover + '
'); + thumb_popover = '' + cellData + parent_info + ''; + $(td).html('
' + media_type + ' ' + thumb_popover + '
'); } else if (rowData['media_type'] === 'episode') { icon = (rowData['live']) ? 'fa-broadcast-tower' : 'fa-television'; icon_title = (rowData['live']) ? 'Live TV' : 'Episode'; if (!isNaN(parseInt(rowData['parent_media_index'])) && !isNaN(parseInt(rowData['media_index']))) { parent_info = ' (' + short_season(rowData['parent_title']) + ' · E' + rowData['media_index'] + ')'; } else if (rowData['live'] && rowData['originally_available_at']) { parent_info = ' (' + rowData['originally_available_at'] + ')'; } media_type = ''; - thumb_popover = '' + cellData + parent_info + ''; - $(td).html('
' + media_type + ' ' + thumb_popover + '
'); + thumb_popover = '' + cellData + parent_info + ''; + $(td).html('
' + media_type + ' ' + thumb_popover + '
'); } else if (rowData['media_type'] === 'track') { if (rowData['parent_title']) { parent_info = ' (' + rowData['parent_title'] + ')'; } media_type = ''; - thumb_popover = '' + cellData + parent_info + ''; - $(td).html('
' + media_type + ' ' + thumb_popover + '
'); + thumb_popover = '' + cellData + parent_info + ''; + $(td).html('
' + media_type + ' ' + thumb_popover + '
'); } else if (rowData['media_type'] === 'clip') { media_type = ''; - thumb_popover = '' + cellData + parent_info + ''; + thumb_popover = '' + cellData + parent_info + ''; $(td).html('
' + media_type + ' ' + thumb_popover + '
'); } else { - $(td).html('' + cellData + ''); + $(td).html('' + cellData + ''); } } }, diff --git a/data/interfaces/default/js/tables/history_table_modal.js b/data/interfaces/default/js/tables/history_table_modal.js index 87ac4715..996bafd4 100644 --- a/data/interfaces/default/js/tables/history_table_modal.js +++ b/data/interfaces/default/js/tables/history_table_modal.js @@ -109,23 +109,23 @@ history_table_modal_options = { icon_title = (rowData['live']) ? 'Live TV' : 'Movie'; if (rowData['year']) { parent_info = ' (' + rowData['year'] + ')'; } media_type = ''; - thumb_popover = '' + cellData + parent_info + ''; - $(td).html('
' + media_type + ' ' + thumb_popover + '
'); + thumb_popover = '' + cellData + parent_info + ''; + $(td).html('
' + media_type + ' ' + thumb_popover + '
'); } else if (rowData['media_type'] === 'episode') { icon = (rowData['live']) ? 'fa-broadcast-tower' : 'fa-television'; icon_title = (rowData['live']) ? 'Live TV' : 'Episode'; if (!isNaN(parseInt(rowData['parent_media_index'])) && !isNaN(parseInt(rowData['media_index']))) { parent_info = ' (' + short_season(rowData['parent_title']) + ' · E' + rowData['media_index'] + ')'; } else if (rowData['live'] && rowData['originally_available_at']) { parent_info = ' (' + rowData['originally_available_at'] + ')'; } media_type = ''; - thumb_popover = '' + cellData + parent_info + ''; - $(td).html('
' + media_type + ' ' + thumb_popover + '
'); + thumb_popover = '' + cellData + parent_info + ''; + $(td).html('
' + media_type + ' ' + thumb_popover + '
'); } else if (rowData['media_type'] === 'track') { if (rowData['parent_title']) { parent_info = ' (' + rowData['parent_title'] + ')'; } media_type = ''; - thumb_popover = '' + cellData + parent_info + ''; - $(td).html('
' + media_type + ' ' + thumb_popover + '
'); + thumb_popover = '' + cellData + parent_info + ''; + $(td).html('
' + media_type + ' ' + thumb_popover + '
'); } else { - $(td).html('' + cellData + ''); + $(td).html('' + cellData + ''); } } }, diff --git a/plexpy/datafactory.py b/plexpy/datafactory.py index 9acdfe50..808916c1 100644 --- a/plexpy/datafactory.py +++ b/plexpy/datafactory.py @@ -147,7 +147,8 @@ class DataFactory(object): "COUNT(*) AS group_count", "GROUP_CONCAT(session_history.id) AS group_ids", "NULL AS state", - "NULL AS session_key" + "NULL AS session_key", + "session_history.server_id" ] if include_activity: @@ -210,7 +211,8 @@ class DataFactory(object): "NULL AS group_count", "NULL AS group_ids", "state", - "session_key" + "session_key", + "server_id" ] else: @@ -345,7 +347,8 @@ class DataFactory(object): 'group_count': item['group_count'], 'group_ids': item['group_ids'], 'state': item['state'], - 'session_key': item['session_key'] + 'session_key': item['session_key'], + 'server_id': item['server_id'] } rows.append(row) diff --git a/plexpy/datatables.py b/plexpy/datatables.py index 47a913d6..5bd4bf53 100644 --- a/plexpy/datatables.py +++ b/plexpy/datatables.py @@ -137,6 +137,8 @@ def build_join(join_types=[], join_tables=[], join_evals=[]): for i, join_type in enumerate(join_types): if join_type.upper() == 'LEFT OUTER JOIN': join += 'LEFT OUTER JOIN %s ON %s = %s ' % (join_tables[i], join_evals[i][0], join_evals[i][1]) + if join_type.upper() == 'LEFT OUTER JOIN MULTIPLE': + join += ('LEFT OUTER JOIN %s ON ' % join_tables[i]) + " AND ".join(join_evals[i]) + ' ' elif join_type.upper() == 'JOIN' or join_type.upper() == 'INNER JOIN': join += 'JOIN %s ON %s = %s ' % (join_tables[i], join_evals[i][0], join_evals[i][1]) diff --git a/plexpy/libraries.py b/plexpy/libraries.py index e77b750a..822f9e91 100644 --- a/plexpy/libraries.py +++ b/plexpy/libraries.py @@ -376,13 +376,13 @@ class Libraries(object): columns=columns, custom_where=custom_where, group_by=['library_sections.server_id', 'library_sections.section_id'], - join_types=['LEFT OUTER JOIN', + join_types=['LEFT OUTER JOIN MULTIPLE', 'LEFT OUTER JOIN', 'LEFT OUTER JOIN'], join_tables=['session_history', 'session_history_metadata', 'session_history_media_info'], - join_evals=[['session_history.section_id', 'library_sections.section_id'], + join_evals=[['session_history.section_id = library_sections.section_id', 'session_history.server_id = library_sections.server_id'], ['session_history.id', 'session_history_metadata.id'], ['session_history.id', 'session_history_media_info.id']], kwargs=kwargs)