From 34b61ec9c2f75f4f4f57f3f884f36b29d3938483 Mon Sep 17 00:00:00 2001 From: P0psicles Date: Thu, 8 Feb 2018 17:02:34 +0100 Subject: [PATCH 001/122] Added the episode and season search templates to the tv_shows table. Implemented basic parsing of the templates for searching providers. --- medusa/databases/main_db.py | 21 +++++++++++++++++++++ medusa/providers/generic_provider.py | 8 ++++++++ medusa/tv/episode.py | 17 +++++++++++++++++ medusa/tv/series.py | 6 ++++++ 4 files changed, 52 insertions(+) diff --git a/medusa/databases/main_db.py b/medusa/databases/main_db.py index 7fbd58ea34..46a88130e5 100644 --- a/medusa/databases/main_db.py +++ b/medusa/databases/main_db.py @@ -700,3 +700,24 @@ def create_series_dict(): # Flag the image migration. from medusa import app app.MIGRATE_IMAGES = True + + +class AddSearchTemplates(AddIndexerIds): + """Adds column size to history table.""" + + def test(self): + """ + Test if the version is at least 44.10 + """ + return self.connection.version >= (44, 10) + + def execute(self): + backupDatabase(self.connection.version) + + log.info(u"Adding column episode_search_template to the tv_shows table") + if not self.hasColumn("tv_shows", "episode_search_template"): + self.addColumn("tv_shows", "episode_search_template", 'TEXT', None) + if not self.hasColumn("tv_shows", "season_search_template"): + self.addColumn("tv_shows", "season_search_template", 'TEXT', None) + + self.inc_minor_version() diff --git a/medusa/providers/generic_provider.py b/medusa/providers/generic_provider.py index 47c5912c07..fe044a3d4f 100644 --- a/medusa/providers/generic_provider.py +++ b/medusa/providers/generic_provider.py @@ -669,6 +669,14 @@ def _get_episode_search_strings(self, episode, add_string=''): if episode_string_fallback: search_string['Episode'].append(episode_string_fallback.strip()) + if episode.series.episode_search_template: + anime_type = app.NAMING_ANIME + if not self.series.is_anime: + anime_type = 3 + search_string['Episode'].append( + episode.formatted_search_string(episode.series.episode_search_template, anime_type=anime_type) + ) + return [search_string] def _get_tvdb_id(self): diff --git a/medusa/tv/episode.py b/medusa/tv/episode.py index 608f224633..c25b96c042 100644 --- a/medusa/tv/episode.py +++ b/medusa/tv/episode.py @@ -1788,6 +1788,23 @@ def formatted_filename(self, pattern=None, multi=None, anime_type=None): return sanitize_filename(self._format_pattern(name_groups[-1], multi, anime_type)) + def formatted_search_string(self, pattern=None, multi=None, anime_type=None): + """The search template, formatted based on the tv_show's episode_search_template setting. + + :param pattern: + :type pattern: str + :param multi: + :type multi: bool + :param anime_type: + :type anime_type: int + :return: + :rtype: str + """ + # split off the dirs only, if they exist + name_groups = re.split(r'[\\/]', pattern) + + return sanitize_filename(self._format_pattern(name_groups[-1], multi, anime_type)) + def rename(self): """Rename an episode file and all related files to the location and filename as specified in naming settings.""" if not self.is_location_valid(): diff --git a/medusa/tv/series.py b/medusa/tv/series.py index 1c40735fb6..e3add6342d 100644 --- a/medusa/tv/series.py +++ b/medusa/tv/series.py @@ -226,6 +226,8 @@ def __init__(self, indexer, indexerid, lang='', quality=None, self.externals = {} self._cached_indexer_api = None self.plot = None + self.episode_search_template = None + self.season_search_template = None other_show = Show.find_by_id(app.showList, self.indexer, self.series_id) if other_show is not None: @@ -1470,6 +1472,10 @@ def _load_from_db(self): # Load external id's from indexer_mappings table. self.externals = load_externals_from_db(self.indexer, self.series_id) + # Load the episode and season search templates + self.episode_search_template = sql_results[0][b'episode_search_template'] + self.season_search_template = sql_results[0][b'season_search_template'] + # Get IMDb_info from database main_db_con = db.DBConnection() sql_results = main_db_con.select( From 7138a815931ba8efe55e9c72a2c9657ca139740c Mon Sep 17 00:00:00 2001 From: P0psicles Date: Tue, 27 Feb 2018 09:12:50 +0100 Subject: [PATCH 002/122] Mako changes for start using Vue for editShow.mako. --- themes-default/slim/views/editShow.mako | 61 +++++++++++++++++++++---- themes/dark/templates/editShow.mako | 61 +++++++++++++++++++++---- 2 files changed, 102 insertions(+), 20 deletions(-) diff --git a/themes-default/slim/views/editShow.mako b/themes-default/slim/views/editShow.mako index 5fb7253b87..c38c15f198 100644 --- a/themes-default/slim/views/editShow.mako +++ b/themes-default/slim/views/editShow.mako @@ -1,6 +1,7 @@ <%inherit file="/layouts/main.mako"/> <%! import adba + import json from medusa import app, common from medusa.common import SKIPPED, WANTED, UNAIRED, ARCHIVED, IGNORED, SNATCHED, SNATCHED_PROPER, SNATCHED_BEST, FAILED from medusa.common import statusStrings @@ -12,13 +13,6 @@ <%block name="metas"> -<%block name="scripts"> - - -% if show.is_anime: - -% endif - <%block name="content"> @@ -198,9 +192,9 @@

@@ -215,6 +209,53 @@
+ + + + + +<%block name="scripts"> + + +% if show.is_anime: + +% endif + +<% + seriesObj = json.dumps(show.to_json()); +%> + diff --git a/themes/dark/templates/editShow.mako b/themes/dark/templates/editShow.mako index 5fb7253b87..c38c15f198 100644 --- a/themes/dark/templates/editShow.mako +++ b/themes/dark/templates/editShow.mako @@ -1,6 +1,7 @@ <%inherit file="/layouts/main.mako"/> <%! import adba + import json from medusa import app, common from medusa.common import SKIPPED, WANTED, UNAIRED, ARCHIVED, IGNORED, SNATCHED, SNATCHED_PROPER, SNATCHED_BEST, FAILED from medusa.common import statusStrings @@ -12,13 +13,6 @@ <%block name="metas"> -<%block name="scripts"> - - -% if show.is_anime: - -% endif - <%block name="content"> @@ -198,9 +192,9 @@

@@ -215,6 +209,53 @@
+ + + + + +<%block name="scripts"> + + +% if show.is_anime: + +% endif + +<% + seriesObj = json.dumps(show.to_json()); +%> + From c32613d2e3d5a19f81fd29e8978d5d1e1f4737bc Mon Sep 17 00:00:00 2001 From: P0psicles Date: Tue, 27 Feb 2018 09:13:30 +0100 Subject: [PATCH 003/122] Small fixes to existing Vue.js code in config. --- themes-default/slim/views/config.mako | 44 ++++++++++++++------------- themes/dark/templates/config.mako | 44 ++++++++++++++------------- 2 files changed, 46 insertions(+), 42 deletions(-) diff --git a/themes-default/slim/views/config.mako b/themes-default/slim/views/config.mako index bdb91903d4..67a19d466a 100644 --- a/themes-default/slim/views/config.mako +++ b/themes-default/slim/views/config.mako @@ -3,34 +3,34 @@

Medusa Configuration

- + - - - - + + + + - - - - - - - - + + + + + + + + - - - + + +
Medusa Info: - Branch: {{branch}}
- Commit: {{commitHash}}
- Version: {{release}}
- Database: {{databaseVersion.major}}.{{databaseVersion.minor}} + Branch: {{config.branch}}
+ Commit: {{config.commitHash}}
+ Version: {{config.release}}
+ Database: {{config.databaseVersion.major}}.{{config.databaseVersion.minor}}
Python Version:{{pythonVersion}}
SSL Version:{{sslVersion}}
OS:{{os}}
Locale:{{locale}}
Python Version:{{config.pythonVersion}}
SSL Version:{{config.sslVersion}}
OS:{{config.os}}
Locale:{{config.locale}}
  
  
User:{{localUser}}
Program Folder:{{programDir}}
Config File:{{configFile}}
Database File:{{dbFilename}}
Cache Folder:{{cacheDir}}
Log Folder:{{logDir}}
Arguments:
{{prettyPrintJSON(appArgs)}}
Web Root:{{webRoot}}
User:{{config.localUser}}
Program Folder:{{config.programDir}}
Config File:{{config.configFile}}
Database File:{{config.dbFilename}}
Cache Folder:{{config.cacheDir}}
Log Folder:{{config.logDir}}
Arguments:
{{prettyPrintJSON(appArgs)}}
Web Root:{{config.webRoot}}
  
  
Website:{{githubUrl}}
Wiki:{{wikiUrl}}
Source:{{sourceUrl}}
Website:{{config.githubUrl}}
Wiki:{{config.wikiUrl}}
Source:{{config.sourceUrl}}
IRC Chat:#pymedusa on irc.freenode.net
@@ -44,7 +44,9 @@ var app; var startVue = function(){ app = new Vue({ el: '#config-content', - data: MEDUSA.config, + data: { + config: MEDUSA.config + }, methods: { anonRedirect: function(e){ e.preventDefault(); diff --git a/themes/dark/templates/config.mako b/themes/dark/templates/config.mako index bdb91903d4..67a19d466a 100644 --- a/themes/dark/templates/config.mako +++ b/themes/dark/templates/config.mako @@ -3,34 +3,34 @@

Medusa Configuration

- + - - - - + + + + - - - - - - - - + + + + + + + + - - - + + +
Medusa Info: - Branch: {{branch}}
- Commit: {{commitHash}}
- Version: {{release}}
- Database: {{databaseVersion.major}}.{{databaseVersion.minor}} + Branch: {{config.branch}}
+ Commit: {{config.commitHash}}
+ Version: {{config.release}}
+ Database: {{config.databaseVersion.major}}.{{config.databaseVersion.minor}}
Python Version:{{pythonVersion}}
SSL Version:{{sslVersion}}
OS:{{os}}
Locale:{{locale}}
Python Version:{{config.pythonVersion}}
SSL Version:{{config.sslVersion}}
OS:{{config.os}}
Locale:{{config.locale}}
  
  
User:{{localUser}}
Program Folder:{{programDir}}
Config File:{{configFile}}
Database File:{{dbFilename}}
Cache Folder:{{cacheDir}}
Log Folder:{{logDir}}
Arguments:
{{prettyPrintJSON(appArgs)}}
Web Root:{{webRoot}}
User:{{config.localUser}}
Program Folder:{{config.programDir}}
Config File:{{config.configFile}}
Database File:{{config.dbFilename}}
Cache Folder:{{config.cacheDir}}
Log Folder:{{config.logDir}}
Arguments:
{{prettyPrintJSON(appArgs)}}
Web Root:{{config.webRoot}}
  
  
Website:{{githubUrl}}
Wiki:{{wikiUrl}}
Source:{{sourceUrl}}
Website:{{config.githubUrl}}
Wiki:{{config.wikiUrl}}
Source:{{config.sourceUrl}}
IRC Chat:#pymedusa on irc.freenode.net
@@ -44,7 +44,9 @@ var app; var startVue = function(){ app = new Vue({ el: '#config-content', - data: MEDUSA.config, + data: { + config: MEDUSA.config + }, methods: { anonRedirect: function(e){ e.preventDefault(); From 1e985e5c10fe65f4b2fbd53ead375a50cca4c0e8 Mon Sep 17 00:00:00 2001 From: P0psicles Date: Tue, 27 Feb 2018 09:14:16 +0100 Subject: [PATCH 004/122] Moved sceneExceptions table from cache to main.db. --- medusa/databases/cache_db.py | 10 ++++++++++ medusa/databases/main_db.py | 20 ++++++++++++++------ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/medusa/databases/cache_db.py b/medusa/databases/cache_db.py index 6b51c9bf71..e9c6f28e3d 100644 --- a/medusa/databases/cache_db.py +++ b/medusa/databases/cache_db.py @@ -154,3 +154,13 @@ def execute(self): # clean up null values from the scene_exceptions_table self.connection.action("DELETE FROM scene_exceptions WHERE indexer = '' or indexer is null;") + + +class RemoveSceneExceptionsTable(AddIndexerIds): + """The scene_exceptions table has been moved to main.db""" + def test(self): + """Test if the table history already has the indexer_id.""" + return not self.hasTable("db_version") + + def execute(self): + self.connection.action('DROP TABLE IF EXISTS scene_exceptions;') diff --git a/medusa/databases/main_db.py b/medusa/databases/main_db.py index 46a88130e5..46bb7bb382 100644 --- a/medusa/databases/main_db.py +++ b/medusa/databases/main_db.py @@ -360,7 +360,13 @@ def execute(self): log.info(u'Converting column indexer and default_ep_status field types to numeric') self.connection.action("DROP TABLE IF EXISTS tmp_tv_shows") self.connection.action("ALTER TABLE tv_shows RENAME TO tmp_tv_shows") - self.connection.action("CREATE TABLE tv_shows (show_id INTEGER PRIMARY KEY, indexer_id NUMERIC, indexer NUMERIC, show_name TEXT, location TEXT, network TEXT, genre TEXT, classification TEXT, runtime NUMERIC, quality NUMERIC, airs TEXT, status TEXT, flatten_folders NUMERIC, paused NUMERIC, startyear NUMERIC, air_by_date NUMERIC, lang TEXT, subtitles NUMERIC, notify_list TEXT, imdb_id TEXT, last_update_indexer NUMERIC, dvdorder NUMERIC, archive_firstmatch NUMERIC, rls_require_words TEXT, rls_ignore_words TEXT, sports NUMERIC, anime NUMERIC, scene NUMERIC, default_ep_status NUMERIC)") + self.connection.action("CREATE TABLE tv_shows (show_id INTEGER PRIMARY KEY, indexer_id NUMERIC, indexer NUMERIC, " + "show_name TEXT, location TEXT, network TEXT, genre TEXT, classification TEXT, " + "runtime NUMERIC, quality NUMERIC, airs TEXT, status TEXT, flatten_folders NUMERIC, " + "paused NUMERIC, startyear NUMERIC, air_by_date NUMERIC, lang TEXT, subtitles NUMERIC, " + "notify_list TEXT, imdb_id TEXT, last_update_indexer NUMERIC, dvdorder NUMERIC, " + "archive_firstmatch NUMERIC, rls_require_words TEXT, rls_ignore_words TEXT, " + "sports NUMERIC, anime NUMERIC, scene NUMERIC, default_ep_status NUMERIC)") self.connection.action("INSERT INTO tv_shows SELECT * FROM tmp_tv_shows") self.connection.action("DROP TABLE tmp_tv_shows") @@ -714,10 +720,12 @@ def test(self): def execute(self): backupDatabase(self.connection.version) - log.info(u"Adding column episode_search_template to the tv_shows table") - if not self.hasColumn("tv_shows", "episode_search_template"): - self.addColumn("tv_shows", "episode_search_template", 'TEXT', None) - if not self.hasColumn("tv_shows", "season_search_template"): - self.addColumn("tv_shows", "season_search_template", 'TEXT', None) + log.info(u"Creating a new table scene_exceptions in the main.db database.") + + self.connection.action( + 'CREATE TABLE scene_exceptions ' + '(exception_id INTEGER PRIMARY KEY, indexer INTEGER, series_id INTEGER, show_name TEXT, ' + 'season NUMERIC DEFAULT -1, custom NUMERIC DEFAULT 0, episode_search_template TEXT, season_search_template TEXT);' + ) self.inc_minor_version() From 5a73eb34ced372e6d3188b4456a8b644b9845eda Mon Sep 17 00:00:00 2001 From: P0psicles Date: Tue, 27 Feb 2018 09:15:10 +0100 Subject: [PATCH 005/122] Fixed tvmaze debug log. ! Should be cherry picked to develop. --- medusa/indexers/tvmaze/tvmaze_api.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/medusa/indexers/tvmaze/tvmaze_api.py b/medusa/indexers/tvmaze/tvmaze_api.py index 06c5332ad6..ac7b5d2f65 100644 --- a/medusa/indexers/tvmaze/tvmaze_api.py +++ b/medusa/indexers/tvmaze/tvmaze_api.py @@ -391,10 +391,9 @@ def _get_show_data(self, tvmaze_id, language='en'): # pylint: disable=too-many- get_show_in_language = language else: log.debug( - 'Configured language {0} override show language of {1}', ( - self.config['language'], - language - ) + 'Configured language {0} override show language of {1}', + self.config['language'], + language ) get_show_in_language = self.config['language'] From f1b03b90212115c291cc6bf5b9b0aa55ebd36fe4 Mon Sep 17 00:00:00 2001 From: P0psicles Date: Tue, 27 Feb 2018 09:17:30 +0100 Subject: [PATCH 006/122] Fixed old bug where trakt is not using indexer to compare. --- medusa/trakt_checker.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/medusa/trakt_checker.py b/medusa/trakt_checker.py index 14c46f3755..7976961b07 100644 --- a/medusa/trakt_checker.py +++ b/medusa/trakt_checker.py @@ -118,7 +118,8 @@ def find_show(self, indexerid, indexer): log.info('No shows found in your Trakt library. Nothing to sync') return trakt_show = [x for x in trakt_library if - int(indexerid) in [int(x['show']['ids'].get(get_trakt_indexer(indexer)))]] + get_trakt_indexer(indexer) + and int(indexerid) in [int(x['show']['ids'].get(get_trakt_indexer(indexer)))]] return trakt_show if trakt_show else None From 27c078f264b48d2f0b368b886ec605e162fb5854 Mon Sep 17 00:00:00 2001 From: P0psicles Date: Tue, 27 Feb 2018 09:19:18 +0100 Subject: [PATCH 007/122] Fix bug in artwork, passing indexer_id while should pass object. ! Could be cherry picked. --- medusa/tv/series.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/medusa/tv/series.py b/medusa/tv/series.py index e3add6342d..80b9e9242c 100644 --- a/medusa/tv/series.py +++ b/medusa/tv/series.py @@ -526,13 +526,13 @@ def airs(self, value): def poster(self): """Return poster path.""" img_type = image_cache.POSTER - return image_cache.get_artwork(img_type, self.series_id) + return image_cache.get_artwork(img_type, self) @property def banner(self): """Return banner path.""" img_type = image_cache.POSTER - return image_cache.get_artwork(img_type, self.series_id) + return image_cache.get_artwork(img_type, self) @property def aliases(self): @@ -1472,10 +1472,6 @@ def _load_from_db(self): # Load external id's from indexer_mappings table. self.externals = load_externals_from_db(self.indexer, self.series_id) - # Load the episode and season search templates - self.episode_search_template = sql_results[0][b'episode_search_template'] - self.season_search_template = sql_results[0][b'season_search_template'] - # Get IMDb_info from database main_db_con = db.DBConnection() sql_results = main_db_con.select( @@ -2001,6 +1997,7 @@ def to_json(self, detailed=True): data['id'] = NonEmptyDict() data['id'][self.indexer_name] = self.series_id data['id']['imdb'] = text_type(self.imdb_id) + data['id']['slug'] = self.identifier.slug data['title'] = self.name data['indexer'] = self.indexer_name # e.g. tvdb data['network'] = self.network # e.g. CBS @@ -2041,7 +2038,7 @@ def to_json(self, detailed=True): data['config']['scene'] = self.is_scene data['config']['paused'] = bool(self.paused) data['config']['defaultEpisodeStatus'] = self.default_ep_status_name - data['config']['aliases'] = self.aliases + data['config']['aliases'] = [_._asdict() for _ in self.aliases] data['config']['release'] = NonEmptyDict() data['config']['release']['blacklist'] = bw_list.blacklist data['config']['release']['whitelist'] = bw_list.whitelist From 5cf4eb39106700100e414566a52a89fd66167348 Mon Sep 17 00:00:00 2001 From: P0psicles Date: Tue, 27 Feb 2018 09:20:35 +0100 Subject: [PATCH 008/122] Refactored sceneExceptions, returning now a named tuple in stead of tuple. This is needed because we add episode_search_template and season_search_template to the sceneExceptions. --- medusa/name_cache.py | 3 +- medusa/name_parser/guessit_parser.py | 10 +-- medusa/scene_exceptions.py | 75 +++++++++++-------- medusa/server/api/v2/alias.py | 19 ++++- medusa/server/web/home/handler.py | 3 +- .../slim/views/partials/showheader.mako | 4 +- .../dark/templates/partials/showheader.mako | 4 +- 7 files changed, 69 insertions(+), 49 deletions(-) diff --git a/medusa/name_cache.py b/medusa/name_cache.py index df4ad57ff7..38471c3b3d 100644 --- a/medusa/name_cache.py +++ b/medusa/name_cache.py @@ -88,7 +88,6 @@ def build_name_cache(series_obj=None): """Build internal name cache. :param series_obj: Specify series to build name cache for, if None, just do all series - :param force: Force the build name cache. Do not depend on the scene_exception_refresh table. """ def _cache_name(cache_series_obj): """Build the name cache for a single show.""" @@ -97,7 +96,7 @@ def _cache_name(cache_series_obj): series_identifier = (cache_series_obj.indexer, cache_series_obj.series_id) scene_exceptions = exceptions_cache[series_identifier].copy() names = { - full_sanitize_scene_name(name): series_identifier + full_sanitize_scene_name(name.series_name): series_identifier for season_exceptions in scene_exceptions.values() for name in season_exceptions } diff --git a/medusa/name_parser/guessit_parser.py b/medusa/name_parser/guessit_parser.py index 7dece56172..7a89106715 100644 --- a/medusa/name_parser/guessit_parser.py +++ b/medusa/name_parser/guessit_parser.py @@ -91,19 +91,19 @@ def get_expected_titles(show_list): """ expected_titles = [] for show in show_list: - names = {show.name}.union(show.exceptions) - for name in names: - if name.isdigit(): + exceptions = {show.name}.union(show.exceptions) + for exception in exceptions: + if exception.series_name.isdigit(): # do not add numbers to expected titles. continue - match = series_re.match(name) + match = series_re.match(exception) if not match: continue series, year, _ = match.groups() if year and not valid_year(int(year)): - series = name + series = exception if not any([char.isdigit() for char in series]): continue diff --git a/medusa/scene_exceptions.py b/medusa/scene_exceptions.py index 3b8134c8aa..d7a7cf78ec 100644 --- a/medusa/scene_exceptions.py +++ b/medusa/scene_exceptions.py @@ -7,7 +7,7 @@ import logging import threading import time -from collections import defaultdict +from collections import defaultdict, namedtuple import adba @@ -26,6 +26,8 @@ VALID_XEM_ORIGINS = {'anidb', 'tvdb', } safe_session = MedusaSafeSession() +TitleException = namedtuple('TitleException', 'series_name, season, episode_search_template, season_search_template, indexer, series_id') + def refresh_exceptions_cache(): """Query the db for show exceptions and update the exceptions_cache.""" @@ -34,25 +36,33 @@ def refresh_exceptions_cache(): # Empty the module level variables exceptions_cache.clear() - cache_db_con = db.DBConnection('cache.db') - exceptions = cache_db_con.select( - b'SELECT indexer, indexer_id, show_name, season ' + main_db_con = db.DBConnection() + exceptions = main_db_con.select( + b'SELECT indexer, series_id, show_name, season, episode_search_template, season_search_template ' b'FROM scene_exceptions' ) or [] # Start building up a new exceptions_cache. for exception in exceptions: - indexer_id = int(exception[b'indexer']) - series_id = int(exception[b'indexer_id']) + indexer = int(exception[b'indexer']) + series_id = int(exception[b'series_id']) season = int(exception[b'season']) - show = exception[b'show_name'] + series_name = exception[b'show_name'] + episode_search_template = exception[b'episode_search_template'] + season_search_template = exception[b'season_search_template'] # To support multiple indexers with same series_id, we have to combine the min a tuple. - series = (indexer_id, series_id) - - # exceptions_cache[(1, 12345)][season] = ['showname 1', 'showname 2'] - if show not in exceptions_cache[series][season]: - exceptions_cache[series][season].add(show) + series = (indexer, series_id) + series_exception = TitleException(series_name=series_name, season=season, + episode_search_template=episode_search_template, + season_search_template=season_search_template, + indexer=indexer, + series_id=series_id) + + # exceptions_cache[(1, 12345)][season] = + # TitleExeption('series_name', 'season', episode_search_template, season_search_template, indexer, series_id) + if series_exception not in exceptions_cache[series][season]: + exceptions_cache[series][season].add(series_exception) logger.info('Finished processing {x} scene exceptions.', x=len(exceptions)) @@ -128,20 +138,19 @@ def get_all_scene_exceptions(series_obj): """ Get all scene exceptions for a show ID. - :param indexer_id: Indexer. - :param series_id: Series id. + :param series_obj: series object. :return: dict of exceptions (e.g. exceptions_cache[season][exception_name]) """ return exceptions_cache.get((series_obj.indexer, series_obj.series_id), defaultdict(set)) def get_scene_exceptions_by_name(show_name): - """Get the indexer_id and season of the scene exception.""" + """Get the series_id, season and indexer of the scene exception.""" # TODO: Rewrite to use exceptions_cache since there is no need to hit db. # Try the obvious case first - cache_db_con = db.DBConnection('cache.db') - scene_exceptions = cache_db_con.select( - b'SELECT indexer, indexer_id, season ' + main_db_con = db.DBConnection() + scene_exceptions = main_db_con.select( + b'SELECT indexer, indexer_id, season, custom, ' b'FROM scene_exceptions ' b'WHERE show_name = ? ORDER BY season ASC', [show_name]) @@ -151,7 +160,7 @@ def get_scene_exceptions_by_name(show_name): for exception in scene_exceptions] result = [] - scene_exceptions = cache_db_con.select( + scene_exceptions = main_db_con.select( b'SELECT show_name, indexer, indexer_id, season ' b'FROM scene_exceptions' ) @@ -182,10 +191,10 @@ def update_scene_exceptions(series_obj, scene_exceptions, season=-1): """Update database with all show scene exceptions by indexer_id.""" logger.info('Updating scene exceptions...') - cache_db_con = db.DBConnection('cache.db') - cache_db_con.action( + main_db_con = db.DBConnection() + main_db_con.action( b'DELETE FROM scene_exceptions ' - b'WHERE indexer_id=? AND ' + b'WHERE series_id=? AND ' b' season=? AND ' b' indexer=?', [series_obj.series_id, season, series_obj.indexer] @@ -206,9 +215,9 @@ def update_scene_exceptions(series_obj, scene_exceptions, season=-1): exceptions_cache[(series_obj.indexer, series_obj.series_id)][season].add(exception) # Add to db - cache_db_con.action( + main_db_con.action( b'INSERT INTO scene_exceptions ' - b' (indexer, indexer_id, show_name, season)' + b' (indexer, series_id, show_name, season)' b'VALUES (?,?,?,?)', [series_obj.indexer, series_obj.series_id, exception, season] ) @@ -239,31 +248,31 @@ def retrieve_exceptions(force=False, exception_type=None): ) queries = [] - cache_db_con = db.DBConnection('cache.db') + main_db_con = db.DBConnection() # TODO: See if this can be optimized for indexer in combined_exceptions: - for indexer_id in combined_exceptions[indexer]: - sql_ex = cache_db_con.select( + for series_id in combined_exceptions[indexer]: + sql_ex = main_db_con.select( b'SELECT show_name, indexer ' b'FROM scene_exceptions ' b'WHERE indexer = ? AND ' - b' indexer_id = ?', - [indexer, indexer_id] + b'series_id = ?', + [indexer, series_id] ) existing_exceptions = [x[b'show_name'] for x in sql_ex] - for exception_dict in combined_exceptions[indexer][indexer_id]: + for exception_dict in combined_exceptions[indexer][series_id]: for scene_exception, season in iteritems(exception_dict): if scene_exception not in existing_exceptions: queries.append([ b'INSERT OR IGNORE INTO scene_exceptions' - b'(indexer, indexer_id, show_name, season)' + b'(indexer, series_id, show_name, season)' b'VALUES (?,?,?,?)', - [indexer, indexer_id, scene_exception, season] + [indexer, series_id, scene_exception, season] ]) if queries: - cache_db_con.mass_action(queries) + main_db_con.mass_action(queries) logger.info('Updated scene exceptions.') diff --git a/medusa/server/api/v2/alias.py b/medusa/server/api/v2/alias.py index e6020886f2..3afe238840 100644 --- a/medusa/server/api/v2/alias.py +++ b/medusa/server/api/v2/alias.py @@ -22,14 +22,16 @@ class AliasHandler(BaseRequestHandler): def get(self, identifier, path_param): """Query scene_exception information.""" - cache_db_con = db.DBConnection('cache.db') + cache_db_con = db.DBConnection() sql_base = (b'SELECT ' b' exception_id, ' b' indexer, ' b' indexer_id, ' b' show_name, ' b' season, ' - b' custom ' + b' custom, ' + b' episode_search_template, ' + b' season_search_template ' b'FROM scene_exceptions ') sql_where = [] params = [] @@ -46,12 +48,15 @@ def get(self, identifier, path_param): season = self._parse(self.get_query_argument('season', None)) exception_type = self.get_query_argument('type', None) + episode_search_template = self.get_query_argument('episodetemplate', None) + season_search_template = self.get_query_argument('episodetemplate', None) + if exception_type and exception_type not in ('local', ): return self._bad_request('Invalid type') if series_identifier: sql_where.append(b'indexer') - sql_where.append(b'indexer_id') + sql_where.append(b'series_id') params += [series_identifier.indexer.id, series_identifier.id] if season is not None: @@ -62,6 +67,14 @@ def get(self, identifier, path_param): sql_where.append(b'custom') params += [1] + if episode_search_template is not None: + sql_where.append(b'episode_search_template') + params += [episode_search_template] + + if season_search_template is not None: + sql_where.append(b'season_search_template') + params += [season_search_template] + if sql_where: sql_base += b' WHERE ' + b' AND '.join([where + b' = ? ' for where in sql_where]) diff --git a/medusa/server/web/home/handler.py b/medusa/server/web/home/handler.py index 1ddd2b7528..31103ecf4e 100644 --- a/medusa/server/web/home/handler.py +++ b/medusa/server/web/home/handler.py @@ -988,8 +988,7 @@ def titler(x): submenu=submenu[::-1], showLoc=show_loc, show_message=show_message, show=series_obj, sql_results=sql_results, season_results=season_results, sortedShowLists=sorted_show_lists, bwl=bwl, ep_counts=ep_counts, - ep_cats=ep_cats, all_scene_exceptions=' | '.join(series_obj.exceptions), - scene_numbering=get_scene_numbering_for_show(series_obj), + ep_cats=ep_cats, scene_numbering=get_scene_numbering_for_show(series_obj), xem_numbering=get_xem_numbering_for_show(series_obj, refresh_data=False), scene_absolute_numbering=get_scene_absolute_numbering_for_show(series_obj), xem_absolute_numbering=get_xem_absolute_numbering_for_show(series_obj), diff --git a/themes-default/slim/views/partials/showheader.mako b/themes-default/slim/views/partials/showheader.mako index 81f546ef42..07648a79f2 100644 --- a/themes-default/slim/views/partials/showheader.mako +++ b/themes-default/slim/views/partials/showheader.mako @@ -197,8 +197,8 @@ % else: Location: ${showLoc[0]} (Missing) % endif - % if all_scene_exceptions: - Scene Name:${all_scene_exceptions} + % if show.exceptions: + Scene Name:${'| '.join(_.series_name for _ in show.exceptions)} % endif % if show.show_words().required_words: Required Words: ${', '.join(show.show_words().required_words)} diff --git a/themes/dark/templates/partials/showheader.mako b/themes/dark/templates/partials/showheader.mako index 81f546ef42..07648a79f2 100644 --- a/themes/dark/templates/partials/showheader.mako +++ b/themes/dark/templates/partials/showheader.mako @@ -197,8 +197,8 @@ % else: Location: ${showLoc[0]} (Missing) % endif - % if all_scene_exceptions: - Scene Name:${all_scene_exceptions} + % if show.exceptions: + Scene Name:${'| '.join(_.series_name for _ in show.exceptions)} % endif % if show.show_words().required_words: Required Words: ${', '.join(show.show_words().required_words)} From a4b097fe408561d858dcdaeb8df4cad14b882f13 Mon Sep 17 00:00:00 2001 From: P0psicles Date: Tue, 27 Feb 2018 11:00:44 +0100 Subject: [PATCH 009/122] Refactored get_scene_exceptions_by_name to use the exception_cache, and not hit the db. Made sure it returned a set of TitleExceptions (named tuples). --- medusa/helpers/__init__.py | 10 ++--- medusa/name_parser/guessit_parser.py | 4 +- medusa/name_parser/parser.py | 4 +- medusa/providers/generic_provider.py | 19 +++++---- medusa/scene_exceptions.py | 61 +++++++++++++--------------- medusa/server/web/home/handler.py | 1 - medusa/tv/series.py | 4 +- 7 files changed, 51 insertions(+), 52 deletions(-) diff --git a/medusa/helpers/__init__.py b/medusa/helpers/__init__.py index 3670aa0a45..b3d061179d 100644 --- a/medusa/helpers/__init__.py +++ b/medusa/helpers/__init__.py @@ -1029,11 +1029,11 @@ def get_show(name, try_indexers=False): # try scene exceptions if not series: - series_from_name = scene_exceptions.get_scene_exceptions_by_name(series_name)[0] - series_id = series_from_name[0] - indexer_id = series_from_name[2] - if series_id: - series = Show.find_by_id(app.showList, indexer_id, series_id) + found_exceptions = scene_exceptions.get_scene_exceptions_by_name(series_name) + if found_exceptions: + # Only use the first exception. + exception = found_exceptions.pop() + series = Show.find_by_id(app.showList, exception.indexer_id, exception.series_id) if not series: match_name_only = (s.name for s in app.showList if text_type(s.imdb_year) in s.name and diff --git a/medusa/name_parser/guessit_parser.py b/medusa/name_parser/guessit_parser.py index 7a89106715..a2cb5a37bc 100644 --- a/medusa/name_parser/guessit_parser.py +++ b/medusa/name_parser/guessit_parser.py @@ -91,9 +91,9 @@ def get_expected_titles(show_list): """ expected_titles = [] for show in show_list: - exceptions = {show.name}.union(show.exceptions) + exceptions = {show.name}.union({exception.series_name for exception in show.exceptions}) for exception in exceptions: - if exception.series_name.isdigit(): + if exception.isdigit(): # do not add numbers to expected titles. continue diff --git a/medusa/name_parser/parser.py b/medusa/name_parser/parser.py index efd3550b01..68253f9616 100644 --- a/medusa/name_parser/parser.py +++ b/medusa/name_parser/parser.py @@ -165,7 +165,9 @@ def _parse_string(self, name): elif result.series.is_anime and result.is_anime: log.debug('Scene numbering enabled series {name} is anime', {'name': result.series.name}) - scene_season = scene_exceptions.get_scene_exceptions_by_name(result.series_name)[0][1] + found_exceptions = list(scene_exceptions.get_scene_exceptions_by_name(result.series_name)) + if found_exceptions: + scene_season = found_exceptions[0].season for absolute_episode in result.ab_episode_numbers: a = absolute_episode diff --git a/medusa/providers/generic_provider.py b/medusa/providers/generic_provider.py index fe044a3d4f..970df17e42 100644 --- a/medusa/providers/generic_provider.py +++ b/medusa/providers/generic_provider.py @@ -624,6 +624,8 @@ def _get_episode_search_strings(self, episode, add_string=''): if not episode: return [] + from medusa.scene_exceptions import get_scene_exceptions_by_name, get_all_scene_exceptions, get_scene_exceptions + search_string = { 'Episode': [] } @@ -669,13 +671,16 @@ def _get_episode_search_strings(self, episode, add_string=''): if episode_string_fallback: search_string['Episode'].append(episode_string_fallback.strip()) - if episode.series.episode_search_template: - anime_type = app.NAMING_ANIME - if not self.series.is_anime: - anime_type = 3 - search_string['Episode'].append( - episode.formatted_search_string(episode.series.episode_search_template, anime_type=anime_type) - ) + exceptions = get_scene_exceptions_by_name(show_name) + + for exception in exceptions: + if exception.episode_search_template: + anime_type = app.NAMING_ANIME + if not self.series.is_anime: + anime_type = 3 + search_string['Episode'].append( + episode.formatted_search_string(exception.episode_search_template, anime_type=anime_type) + ) return [search_string] diff --git a/medusa/scene_exceptions.py b/medusa/scene_exceptions.py index d7a7cf78ec..2244aa773b 100644 --- a/medusa/scene_exceptions.py +++ b/medusa/scene_exceptions.py @@ -26,7 +26,8 @@ VALID_XEM_ORIGINS = {'anidb', 'tvdb', } safe_session = MedusaSafeSession() -TitleException = namedtuple('TitleException', 'series_name, season, episode_search_template, season_search_template, indexer, series_id') +TitleException = namedtuple('TitleException', 'series_name, season, episode_search_template, ' + 'season_search_template, indexer, series_id') def refresh_exceptions_cache(): @@ -146,45 +147,39 @@ def get_all_scene_exceptions(series_obj): def get_scene_exceptions_by_name(show_name): """Get the series_id, season and indexer of the scene exception.""" - # TODO: Rewrite to use exceptions_cache since there is no need to hit db. - # Try the obvious case first - main_db_con = db.DBConnection() - scene_exceptions = main_db_con.select( - b'SELECT indexer, indexer_id, season, custom, ' - b'FROM scene_exceptions ' - b'WHERE show_name = ? ORDER BY season ASC', - [show_name]) - if scene_exceptions: - # FIXME: Need to add additional layer indexer. - return [(int(exception[b'indexer_id']), int(exception[b'season']), int(exception[b'indexer'])) - for exception in scene_exceptions] - - result = [] - scene_exceptions = main_db_con.select( - b'SELECT show_name, indexer, indexer_id, season ' - b'FROM scene_exceptions' - ) - - for exception in scene_exceptions: - indexer = int(exception[b'indexer']) - indexer_id = int(exception[b'indexer_id']) - season = int(exception[b'season']) - exception_name = exception[b'show_name'] - sanitized_name = helpers.sanitize_scene_name(exception_name) - show_names = ( - exception_name.lower(), + # Flatten the exceptions_cache. + scene_exceptions = set() + for exception_set in exceptions_cache.values(): + for title_exception in exception_set.values(): + scene_exceptions.update(title_exception) + + matches = set() + # First attempt exact match. + for title_exception in scene_exceptions: + if show_name == title_exception.series_name: + matches.add(title_exception) + + if matches: + return matches + + # Let's try out some sanitized names. + for title_exception in scene_exceptions: + sanitized_name = helpers.sanitize_scene_name(title_exception.series_name) + series_names = ( + title_exception.series_name.lower(), sanitized_name.lower().replace('.', ' '), ) - if show_name.lower() in show_names: + if show_name.lower() in series_names: logger.debug( - 'Scene exception lookup got indexer ID {cur_indexer},' - ' using that', cur_indexer=indexer_id + 'Scene exception lookup got series id {title_exception.series_id} ' + 'from indexer {title_exception.indexer},' + ' using that', title_exception=title_exception ) - result.append((indexer_id, season, indexer)) + matches.add(title_exception) - return result or [(None, None, None)] + return matches def update_scene_exceptions(series_obj, scene_exceptions, season=-1): diff --git a/medusa/server/web/home/handler.py b/medusa/server/web/home/handler.py index 31103ecf4e..4c197ef0cc 100644 --- a/medusa/server/web/home/handler.py +++ b/medusa/server/web/home/handler.py @@ -1383,7 +1383,6 @@ def titler(x): submenu=submenu[::-1], showLoc=show_loc, show_message=show_message, show=series_obj, provider_results=provider_results, episode=episode, sortedShowLists=sorted_show_lists, bwl=bwl, season=season, manual_search_type=manual_search_type, - all_scene_exceptions=' | '.join(series_obj.exceptions), scene_numbering=get_scene_numbering_for_show(series_obj), xem_numbering=get_xem_numbering_for_show(series_obj, refresh_data=False), scene_absolute_numbering=get_scene_absolute_numbering_for_show(series_obj), diff --git a/medusa/tv/series.py b/medusa/tv/series.py index 86b40bc39d..6a77dc3503 100644 --- a/medusa/tv/series.py +++ b/medusa/tv/series.py @@ -226,8 +226,6 @@ def __init__(self, indexer, indexerid, lang='', quality=None, self.externals = {} self._cached_indexer_api = None self.plot = None - self.episode_search_template = None - self.season_search_template = None other_show = Show.find_by_id(app.showList, self.indexer, self.series_id) if other_show is not None: @@ -2078,7 +2076,7 @@ def get_all_possible_names(self, season=-1): show: a Series object that we should get the names of Returns: all possible show names """ - show_names = get_scene_exceptions(self, season) + show_names = {exception.series_name for exception in get_scene_exceptions(self, season)} show_names.add(self.name) new_show_names = set() From 36ea69e8f763da194a52a37a6c621bcaccab86e2 Mon Sep 17 00:00:00 2001 From: P0psicles Date: Tue, 27 Feb 2018 11:07:00 +0100 Subject: [PATCH 010/122] Fix typo --- medusa/helpers/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/medusa/helpers/__init__.py b/medusa/helpers/__init__.py index b3d061179d..276d55441d 100644 --- a/medusa/helpers/__init__.py +++ b/medusa/helpers/__init__.py @@ -1033,7 +1033,7 @@ def get_show(name, try_indexers=False): if found_exceptions: # Only use the first exception. exception = found_exceptions.pop() - series = Show.find_by_id(app.showList, exception.indexer_id, exception.series_id) + series = Show.find_by_id(app.showList, exception.indexer, exception.series_id) if not series: match_name_only = (s.name for s in app.showList if text_type(s.imdb_year) in s.name and From 3bc492c4f7c617ccafa271f7e900a7563f8a9d77 Mon Sep 17 00:00:00 2001 From: P0psicles Date: Tue, 27 Feb 2018 15:42:32 +0100 Subject: [PATCH 011/122] Changed most of the editShow.mako to use vue for form handling. * Added some show config items to apiv2. * Added indexer config items. --- medusa/helpers/__init__.py | 5 +-- medusa/indexers/indexer_config.py | 41 +++++++++++++++++++ medusa/server/api/v2/config.py | 5 +-- medusa/server/api/v2/series.py | 2 + medusa/tv/series.py | 2 + themes/dark/templates/editShow.mako | 61 ++++++++++++++++++++--------- 6 files changed, 91 insertions(+), 25 deletions(-) diff --git a/medusa/helpers/__init__.py b/medusa/helpers/__init__.py index 276d55441d..7af70e5a1a 100644 --- a/medusa/helpers/__init__.py +++ b/medusa/helpers/__init__.py @@ -1029,11 +1029,10 @@ def get_show(name, try_indexers=False): # try scene exceptions if not series: - found_exceptions = scene_exceptions.get_scene_exceptions_by_name(series_name) + found_exceptions = list(scene_exceptions.get_scene_exceptions_by_name(series_name)) if found_exceptions: # Only use the first exception. - exception = found_exceptions.pop() - series = Show.find_by_id(app.showList, exception.indexer, exception.series_id) + series = Show.find_by_id(app.showList, found_exceptions[0].indexer, found_exceptions[0].series_id) if not series: match_name_only = (s.name for s in app.showList if text_type(s.imdb_year) in s.name and diff --git a/medusa/indexers/indexer_config.py b/medusa/indexers/indexer_config.py index e865582a09..c2a256f143 100644 --- a/medusa/indexers/indexer_config.py +++ b/medusa/indexers/indexer_config.py @@ -2,6 +2,7 @@ """Indexer config module.""" +from six import text_type from medusa.app import BASE_PYMEDUSA_URL from medusa.indexers.tmdb.tmdb import Tmdb from medusa.indexers.tvdbv2.tvdbv2_api import TVDBv2 @@ -113,3 +114,43 @@ 'identifier': 'tmdb', # Also used as key for the custom scenename exceptions. (_get_custom_exceptions()) } } + + +def create_config_json(indexer): + """Create a json (pickable) conpatible dict, for using as an apiv2 resource.""" + return { + 'enabled': indexer['enabled'], + 'id': indexer['id'], + 'name': indexer['name'], + 'module': text_type(indexer['module']), + 'apiParams': { + 'language': indexer['api_params']['language'], + 'useZip': indexer['api_params']['use_zip'], + 'session': '', + }, + 'xemOrigin': indexer.get('xem_origin'), + 'icon': indexer.get('icon'), + 'scene_loc': indexer.get('scene_loc'), + 'baseUrl': indexer.get('base_url'), + 'showUrl': indexer.get('show_url'), + 'mappedTo': indexer.get('mapped_to'), # The attribute to which other indexers can map there thetvdb id to + 'identifier': indexer.get('identifier'), # Also used as key for the custom scenename exceptions. (_get_custom_exceptions()) + 'validLanguages': initConfig['valid_languages'], + 'langabbvToId': initConfig['langabbv_to_id'], + } + + +def get_indexer_config(): + indexers = { + indexerConfig[indexer]['identifier']: create_config_json(indexerConfig[indexer]) for indexer in indexerConfig.keys() + } + + main = { + 'validLanguages': initConfig['valid_languages'], + 'langabbvToId': initConfig['langabbv_to_id'], + 'externalMappings': EXTERNAL_MAPPINGS, + 'traktIndexers': TRAKT_INDEXERS, + 'statusMap': STATUS_MAP + } + + return {'indexers': indexers, 'main': main} diff --git a/medusa/server/api/v2/config.py b/medusa/server/api/v2/config.py index 5a37bdf553..8dd487cce0 100644 --- a/medusa/server/api/v2/config.py +++ b/medusa/server/api/v2/config.py @@ -9,7 +9,7 @@ db, ) from medusa.helper.mappings import NonEmptyDict -from medusa.indexers.indexer_config import indexerConfig +from medusa.indexers.indexer_config import get_indexer_config from medusa.server.api.v2.base import ( BaseRequestHandler, BooleanField, @@ -182,8 +182,7 @@ def get(self, identifier, path_param=None): config_data['backlogOverview']['period'] = app.BACKLOG_PERIOD config_data['backlogOverview']['status'] = app.BACKLOG_STATUS config_data['indexers'] = NonEmptyDict() - config_data['indexers']['config'] = {text_type(indexer_id): indexer['identifier'] for indexer_id, - indexer in iteritems(indexerConfig)} + config_data['indexers']['config'] = get_indexer_config() if not identifier: return self._paginate([config_data]) diff --git a/medusa/server/api/v2/series.py b/medusa/server/api/v2/series.py index 26e3b71e5e..dd4f3dabd5 100644 --- a/medusa/server/api/v2/series.py +++ b/medusa/server/api/v2/series.py @@ -110,7 +110,9 @@ def patch(self, series_slug, path_param=None): patches = { 'config.dvdOrder': BooleanField(series, 'dvd_order'), 'config.flattenFolders': BooleanField(series, 'flatten_folders'), + 'config.anime': BooleanField(series, 'anime'), 'config.scene': BooleanField(series, 'scene'), + 'config.sports': BooleanField(series, 'sports'), 'config.paused': BooleanField(series, 'paused'), 'config.location': StringField(series, '_location'), 'config.airByDate': BooleanField(series, 'air_by_date'), diff --git a/medusa/tv/series.py b/medusa/tv/series.py index 6a77dc3503..c6526e7644 100644 --- a/medusa/tv/series.py +++ b/medusa/tv/series.py @@ -2034,7 +2034,9 @@ def to_json(self, detailed=True): data['config']['subtitlesEnabled'] = bool(self.subtitles) data['config']['dvdOrder'] = bool(self.dvd_order) data['config']['flattenFolders'] = bool(self.flatten_folders) + data['config']['anime'] = self.is_anime data['config']['scene'] = self.is_scene + data['config']['sports'] = self.is_sports data['config']['paused'] = bool(self.paused) data['config']['defaultEpisodeStatus'] = self.default_ep_status_name data['config']['aliases'] = [_._asdict() for _ in self.aliases] diff --git a/themes/dark/templates/editShow.mako b/themes/dark/templates/editShow.mako index c38c15f198..1ad667d714 100644 --- a/themes/dark/templates/editShow.mako +++ b/themes/dark/templates/editShow.mako @@ -22,9 +22,9 @@ % else:

${title}

% endif -
-
-
+
+
+
    ## @TODO: Fix this stupid hack @@ -40,9 +40,9 @@
@@ -72,7 +72,7 @@ @@ -81,7 +81,7 @@
@@ -89,7 +89,7 @@
@@ -104,7 +104,7 @@ @@ -113,7 +113,7 @@
@@ -141,7 +141,7 @@
@@ -149,7 +149,7 @@ @@ -209,9 +209,6 @@
- - - @@ -242,7 +239,9 @@ var startVue = function() { config: MEDUSA.config, exceptions: exceptions, seriesSlug: seriesSlug, - seriesObj: seriesObj + seriesObj: seriesObj, + subtitles: seriesObj.config.subtitlesEnabled, + folders: seriesObj.config.flattenFolders } }, methods: { @@ -252,7 +251,31 @@ var startVue = function() { }, prettyPrintJSON: function(x) { return JSON.stringify(x, undefined, 4) + }, + storeConfig(evt) { + api.patch('config/main', { + config: { + dvdOrder: this.seriesObj.config.dvdOrder, + flattenFolders: this.seriesObj.config.flattenFolders, + anime: this.seriesObj.config.anime, + scene: this.seriesObj.config.scene, + sports: this.seriesObj.config.sports, + paused: this.seriesObj.config.paused, + location: this.seriesObj.config.location, + airByDate: this.seriesObj.config.airByDate, + subtitlesEnabled: this.seriesObj.config.subtitlesEnabled + } + }).then(response => { + log.info(response); + }).catch(err => { + log.error(err); + }); } + }, + computed: { + availableLanguagesAvailable: function() { + return this.config.indexers.config.main.validLanguages.join(','); + } } }); $('[v-cloak]').removeAttr('v-cloak'); From 391095b1715f91af07d10eaddfc8d7b11b61237a Mon Sep 17 00:00:00 2001 From: P0psicles Date: Tue, 27 Feb 2018 17:30:38 +0100 Subject: [PATCH 012/122] Updated theme slim src. --- themes-default/slim/views/editShow.mako | 61 +++++++++++++++++-------- 1 file changed, 42 insertions(+), 19 deletions(-) diff --git a/themes-default/slim/views/editShow.mako b/themes-default/slim/views/editShow.mako index c38c15f198..1ad667d714 100644 --- a/themes-default/slim/views/editShow.mako +++ b/themes-default/slim/views/editShow.mako @@ -22,9 +22,9 @@ % else:

${title}

% endif -
-
-
+
+
+
    ## @TODO: Fix this stupid hack @@ -40,9 +40,9 @@
@@ -72,7 +72,7 @@ @@ -81,7 +81,7 @@
@@ -89,7 +89,7 @@
@@ -104,7 +104,7 @@ @@ -113,7 +113,7 @@
@@ -141,7 +141,7 @@
@@ -149,7 +149,7 @@ @@ -209,9 +209,6 @@
- - - @@ -242,7 +239,9 @@ var startVue = function() { config: MEDUSA.config, exceptions: exceptions, seriesSlug: seriesSlug, - seriesObj: seriesObj + seriesObj: seriesObj, + subtitles: seriesObj.config.subtitlesEnabled, + folders: seriesObj.config.flattenFolders } }, methods: { @@ -252,7 +251,31 @@ var startVue = function() { }, prettyPrintJSON: function(x) { return JSON.stringify(x, undefined, 4) + }, + storeConfig(evt) { + api.patch('config/main', { + config: { + dvdOrder: this.seriesObj.config.dvdOrder, + flattenFolders: this.seriesObj.config.flattenFolders, + anime: this.seriesObj.config.anime, + scene: this.seriesObj.config.scene, + sports: this.seriesObj.config.sports, + paused: this.seriesObj.config.paused, + location: this.seriesObj.config.location, + airByDate: this.seriesObj.config.airByDate, + subtitlesEnabled: this.seriesObj.config.subtitlesEnabled + } + }).then(response => { + log.info(response); + }).catch(err => { + log.error(err); + }); } + }, + computed: { + availableLanguagesAvailable: function() { + return this.config.indexers.config.main.validLanguages.join(','); + } } }); $('[v-cloak]').removeAttr('v-cloak'); From bf56f53c45e990ab0331a9b02658d44ef7199657 Mon Sep 17 00:00:00 2001 From: P0psicles Date: Fri, 2 Mar 2018 00:20:50 +0100 Subject: [PATCH 013/122] Added apiv2 routes for patching ignored and required words. * Added new vue.js component to editShow, for configuring lists of strings. * Added pencil_add.png img. * Disabled some css. Need to clean this up. --- medusa/server/api/v2/series.py | 7 +- medusa/tv/series.py | 10 ++- themes/dark/assets/css/style.css | 6 +- themes/dark/assets/img/pencil_add.png | Bin 0 -> 548 bytes themes/dark/templates/editShow.mako | 101 +++++++++++++++++++++----- 5 files changed, 102 insertions(+), 22 deletions(-) create mode 100644 themes/dark/assets/img/pencil_add.png diff --git a/medusa/server/api/v2/series.py b/medusa/server/api/v2/series.py index dd4f3dabd5..e0c4047995 100644 --- a/medusa/server/api/v2/series.py +++ b/medusa/server/api/v2/series.py @@ -5,6 +5,7 @@ from medusa.server.api.v2.base import ( BaseRequestHandler, BooleanField, + ListField, StringField, iter_nested_items, set_nested_value @@ -116,7 +117,11 @@ def patch(self, series_slug, path_param=None): 'config.paused': BooleanField(series, 'paused'), 'config.location': StringField(series, '_location'), 'config.airByDate': BooleanField(series, 'air_by_date'), - 'config.subtitlesEnabled': BooleanField(series, 'subtitles') + 'config.subtitlesEnabled': BooleanField(series, 'subtitles'), + 'config.release.requiredWords': ListField(series, 'release_required_words'), + 'config.release.ignoredWords': ListField(series, 'release_ignore_words') + # 'config.release.blacklist': ListField(series, 'release_required_words'), + # 'config.release.whitelist': ListField(series, 'release_required_words'), } for key, value in iter_nested_items(data): patch_field = patches.get(key) diff --git a/medusa/tv/series.py b/medusa/tv/series.py index c6526e7644..539c639466 100644 --- a/medusa/tv/series.py +++ b/medusa/tv/series.py @@ -104,7 +104,7 @@ from medusa.tv.episode import Episode from medusa.tv.indexer import Indexer -from six import text_type +from six import string_types, text_type try: from send2trash import send2trash @@ -542,11 +542,19 @@ def release_ignore_words(self): """Return release ignore words.""" return [v for v in (self.rls_ignore_words or '').split(',') if v] + @release_ignore_words.setter + def release_ignore_words(self, value): + self.rls_ignore_words = value if isinstance(value, string_types) else ','.join(value) + @property def release_required_words(self): """Return release ignore words.""" return [v for v in (self.rls_require_words or '').split(',') if v] + @release_required_words.setter + def release_required_words(self, value): + self.rls_require_words = value if isinstance(value, string_types) else ','.join(value) + @staticmethod def normalize_status(series_status): """Return a normalized status given current indexer status.""" diff --git a/themes/dark/assets/css/style.css b/themes/dark/assets/css/style.css index f5e86d307c..c9ef1513a8 100644 --- a/themes/dark/assets/css/style.css +++ b/themes/dark/assets/css/style.css @@ -2041,9 +2041,9 @@ config*.mako margin-right: 6px; } -#config div.field-pair input { +/* #config div.field-pair input { float: left; -} +} */ #config .nocheck, #config div #customQuality, @@ -3527,7 +3527,7 @@ div.formpaginate .next { div.field-pair input { margin-right: 6px; - float: left; + /* float: left; */ } /* step 3 related */ diff --git a/themes/dark/assets/img/pencil_add.png b/themes/dark/assets/img/pencil_add.png new file mode 100644 index 0000000000000000000000000000000000000000..9814aefe742adad0edc10ed5cb945fc2c47cefdd GIT binary patch literal 548 zcmV+<0^9wGP)Sgx{Eu)f-%yaFWah5H)|PLgg|bTST}1KIcytUheXSh zQ^}A|%9BtxYZ**?F;k2vSC1`NKoeO)5?(?TW{yvRt6_(^V28S3i@IWryk(8LWRJUQ zkGyA-Z62IyC7_Q+rIAXiU>32{kg?X1veK2bb}Y2im9>2|w$z-ti6+00C&7zI!en#rWc= z_~Xm??Zf%w%lYHX`sdO5?vDKQv;Y79W)byh0000LbW%=J00|i&e1wRMt*+nd^78Wc z_xJbx{r(YQ(EtDdo=HSOR2b7^V89I+xkb#mn2-boFB)w5NWU}s=Z^^Vau zb+R@S)Y6VuRN)5-M0t9cXzDVE8N|oO>xeQiNZAE?8S64I2q?(M%Yjr#N~`H|0L@|* mSJF`uXGiiJ8;>Xt8v_6lK_5^q7J35!0000 - +

Metadata

diff --git a/themes/dark/templates/vue-components/name-pattern.mako b/themes/dark/templates/vue-components/name-pattern.mako index 1c97fa62ae..eb9fa62bb1 100644 --- a/themes/dark/templates/vue-components/name-pattern.mako +++ b/themes/dark/templates/vue-components/name-pattern.mako @@ -1,194 +1,256 @@ @@ -203,6 +265,23 @@ presets: { type: Array, default: [] + }, + animeType: { + type: Number, + default: 0 + }, + /** + * Provide the custom naming type. -Like sports, anime, air by date- description. + * If none provided we asume this is the default episode naming component. + * And that means there will be no checkbox available to enable/disable it. + */ + namingCustom: { + type: String, + default: '' + }, + enabledNamingCustom: { + type: Boolean, + default: false } }, data() { @@ -210,12 +289,38 @@ namingPattern: '', customName: '', namingPresets: [], - showLegend: false + showLegend: false, + namingExample: '', + namingExampleMulti: '', + animeNamingType: this.animeType, + isEnabled: this.enabledNamingCustom, + isMulti: true } }, methods: { getDateFormat(format) { return dateFns.format(new Date(), format); + }, + async testNaming(pattern, isMulti, animeType) { + console.log('Test pattern ' + pattern + ' for ' + (isMulti) ? 'multi' : 'single' + ' ep'); + const data = { + pattern: pattern, + multi: isMulti, + anime_type: animeType + } + const response = await api.get('config/postProcessing/testNaming', data); + console.log(response); + return response; + }, + updatePatternSamples() { + // Update single + const namingResult = this.testNaming(this.pattern, false, this.animeNamingType); + + // Update multi if needed + if (this.isMulti) { + const namingMultiResult = this.testNaming(this.pattern, this.isMulti, this.animeNamingType); + debugger; + } } }, computed: { @@ -241,6 +346,7 @@ // Add Custom... as an option to the namingPresets. this.namingPresets = this.presets.concat('Custom...'); + }, watch: { customName(newValue, oldValue) { From 4aeeec121950794b24166ba88b6d4293517ac057 Mon Sep 17 00:00:00 2001 From: P0psicles Date: Sun, 27 May 2018 21:51:58 +0200 Subject: [PATCH 028/122] Add axios clients for apiv1 and webRout rest calls. --- themes-default/slim/static/js/api.js | 28 ++++++++++++++++++++++++++++ themes/dark/assets/js/api.js | 28 ++++++++++++++++++++++++++++ themes/light/assets/js/api.js | 28 ++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+) diff --git a/themes-default/slim/static/js/api.js b/themes-default/slim/static/js/api.js index f9fcf7c109..8a2b9d1340 100644 --- a/themes-default/slim/static/js/api.js +++ b/themes-default/slim/static/js/api.js @@ -1,6 +1,34 @@ const baseUrl = $('body').attr('api-root'); const idToken = $('body').attr('api-key'); +/** + * Api client based on the axios client, to communicate with medusa's web routes, which return json data. + */ +const apiRoute = axios.create({ // eslint-disable-line no-unused-vars + baseURL: baseUrl.replace('api/v2/', ''), + timeout: 10000, + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + 'X-Api-Key': idToken + } +}); + +/** + * Api client based on the axios client, to communicate with medusa's api v1. + */ +const apiv1 = axios.create({ // eslint-disable-line no-unused-vars + baseURL: baseUrl.replace('api/v2/', 'api/v1/' + idToken + '/'), + timeout: 10000, + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json' + } +}); + +/** + * Api client based on the axios client, to communicate with medusa's api v2. + */ const api = axios.create({ // eslint-disable-line no-unused-vars baseURL: baseUrl, timeout: 10000, diff --git a/themes/dark/assets/js/api.js b/themes/dark/assets/js/api.js index f9fcf7c109..8a2b9d1340 100644 --- a/themes/dark/assets/js/api.js +++ b/themes/dark/assets/js/api.js @@ -1,6 +1,34 @@ const baseUrl = $('body').attr('api-root'); const idToken = $('body').attr('api-key'); +/** + * Api client based on the axios client, to communicate with medusa's web routes, which return json data. + */ +const apiRoute = axios.create({ // eslint-disable-line no-unused-vars + baseURL: baseUrl.replace('api/v2/', ''), + timeout: 10000, + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + 'X-Api-Key': idToken + } +}); + +/** + * Api client based on the axios client, to communicate with medusa's api v1. + */ +const apiv1 = axios.create({ // eslint-disable-line no-unused-vars + baseURL: baseUrl.replace('api/v2/', 'api/v1/' + idToken + '/'), + timeout: 10000, + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json' + } +}); + +/** + * Api client based on the axios client, to communicate with medusa's api v2. + */ const api = axios.create({ // eslint-disable-line no-unused-vars baseURL: baseUrl, timeout: 10000, diff --git a/themes/light/assets/js/api.js b/themes/light/assets/js/api.js index f9fcf7c109..8a2b9d1340 100644 --- a/themes/light/assets/js/api.js +++ b/themes/light/assets/js/api.js @@ -1,6 +1,34 @@ const baseUrl = $('body').attr('api-root'); const idToken = $('body').attr('api-key'); +/** + * Api client based on the axios client, to communicate with medusa's web routes, which return json data. + */ +const apiRoute = axios.create({ // eslint-disable-line no-unused-vars + baseURL: baseUrl.replace('api/v2/', ''), + timeout: 10000, + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + 'X-Api-Key': idToken + } +}); + +/** + * Api client based on the axios client, to communicate with medusa's api v1. + */ +const apiv1 = axios.create({ // eslint-disable-line no-unused-vars + baseURL: baseUrl.replace('api/v2/', 'api/v1/' + idToken + '/'), + timeout: 10000, + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json' + } +}); + +/** + * Api client based on the axios client, to communicate with medusa's api v2. + */ const api = axios.create({ // eslint-disable-line no-unused-vars baseURL: baseUrl, timeout: 10000, From a21a195e15a5bd0880d237fb1c3ac3df5c538842 Mon Sep 17 00:00:00 2001 From: P0psicles Date: Sun, 27 May 2018 21:55:37 +0200 Subject: [PATCH 029/122] Move convert method in mako to namespace. --- themes-default/slim/views/layouts/main.mako | 20 ++++++++++++++++++- .../views/vue-components/quality-chooser.mako | 19 +++++------------- themes/light/templates/layouts/main.mako | 20 ++++++++++++++++++- .../vue-components/quality-chooser.mako | 19 +++++------------- 4 files changed, 48 insertions(+), 30 deletions(-) diff --git a/themes-default/slim/views/layouts/main.mako b/themes-default/slim/views/layouts/main.mako index 8faac13b65..181ab04d51 100644 --- a/themes-default/slim/views/layouts/main.mako +++ b/themes-default/slim/views/layouts/main.mako @@ -1,6 +1,23 @@ <%! from medusa import app %> + +<%def name="convert(obj)"> + <% + import json + from medusa.numdict import NumDict + ## This converts the keys to strings as keys can't be ints + print('test') + if isinstance(obj, (NumDict, dict)): + new_obj = {} + for key in obj: + new_obj[str(key)] = obj[key] + obj = new_obj + + return json.dumps(obj) + %> + + @@ -82,7 +99,8 @@ - + + diff --git a/themes-default/slim/views/vue-components/quality-chooser.mako b/themes-default/slim/views/vue-components/quality-chooser.mako index 777754b600..aaa9751c78 100644 --- a/themes-default/slim/views/vue-components/quality-chooser.mako +++ b/themes-default/slim/views/vue-components/quality-chooser.mako @@ -1,3 +1,4 @@ +<%namespace name="main" file="/layouts/main.mako" /> <%! - import json + from medusa import app - from medusa.numdict import NumDict from medusa.common import Quality, qualityPresets, qualityPresetStrings %> <% @@ -64,15 +64,6 @@ else: allowed_qualities, preferred_qualities = Quality.split_quality(__quality) overall_quality = Quality.combine_qualities(allowed_qualities, preferred_qualities) -def convert(obj): - ## This converts the keys to strings as keys can't be ints - if isinstance(obj, (NumDict, dict)): - new_obj = {} - for key in obj: - new_obj[str(key)] = obj[key] - obj = new_obj - - return json.dumps(obj) %> - + + diff --git a/themes/light/templates/vue-components/quality-chooser.mako b/themes/light/templates/vue-components/quality-chooser.mako index 777754b600..aaa9751c78 100644 --- a/themes/light/templates/vue-components/quality-chooser.mako +++ b/themes/light/templates/vue-components/quality-chooser.mako @@ -1,3 +1,4 @@ +<%namespace name="main" file="/layouts/main.mako" /> <%! - import json + from medusa import app - from medusa.numdict import NumDict from medusa.common import Quality, qualityPresets, qualityPresetStrings %> <% @@ -64,15 +64,6 @@ else: allowed_qualities, preferred_qualities = Quality.split_quality(__quality) overall_quality = Quality.combine_qualities(allowed_qualities, preferred_qualities) -def convert(obj): - ## This converts the keys to strings as keys can't be ints - if isinstance(obj, (NumDict, dict)): - new_obj = {} - for key in obj: - new_obj[str(key)] = obj[key] - obj = new_obj - - return json.dumps(obj) %> + + + \ No newline at end of file diff --git a/themes/dark/assets/css/style.css b/themes/dark/assets/css/style.css index 66c91c4987..53a071d971 100644 --- a/themes/dark/assets/css/style.css +++ b/themes/dark/assets/css/style.css @@ -1763,15 +1763,6 @@ td.col-group { border-radius: 3px; } - -/* ======================================================================= -editShow.mako -========================================================================== */ - -input.btn.btn-inline.fileBrowser { - margin: 2px 2px 2px 2px; -} - #editShow { width: 700px; padding-top: 10px; @@ -2063,9 +2054,9 @@ config*.mako margin-right: 6px; } -/* #config div.field-pair input { +#config div.field-pair input { float: left; -} */ +} #config .nocheck, #config div #customQuality, @@ -3554,7 +3545,7 @@ div.formpaginate .next { div.field-pair input { margin-right: 6px; - /* float: left; */ + float: left; } /* step 3 related */ @@ -4466,20 +4457,3 @@ CSS helper classes position: fixed; right: 90px; } - - -/* ========================================================================= - Style for the anidbReleaseGroupUi.mako. - Should be moved from here, when moving the .vue files. - ========================================================================== */ - -div#anidb_release_group_ui_wrapper { - clear: both; -} - -div#anidb_release_group_ui_wrapper ul { - border-style: solid; - border-width: thin; - padding: 5px 2px 2px 5px; - list-style: none; -} \ No newline at end of file diff --git a/themes/dark/assets/js/config/post-processing.js.map b/themes/dark/assets/js/config/post-processing.js.map index a5a883d626..1979accd75 100644 --- a/themes/dark/assets/js/config/post-processing.js.map +++ b/themes/dark/assets/js/config/post-processing.js.map @@ -1 +1 @@ -{"version":3,"names":[],"mappings":"","sources":["js/config/post-processing.js"],"sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i {\n if (data !== 'supported') {\n $('#unpack').qtip('option', {\n 'content.text': 'Unrar Executable not found.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#unpack').qtip('toggle', true);\n $('#unpack').css('background-color', '#FFFFDD');\n }\n });\n }\n\n function fillExamples() {\n const example = {};\n\n example.pattern = $('#naming_pattern').val();\n example.multi = $('#naming_multi_ep :selected').val();\n example.animeType = $('input[name=\"naming_anime\"]:checked').val();\n\n $.get('config/postProcessing/testNaming', {\n pattern: example.pattern,\n anime_type: 3 // eslint-disable-line camelcase\n }, data => {\n if (data) {\n $('#naming_example').text(data + '.ext');\n $('#naming_example_div').show();\n } else {\n $('#naming_example_div').hide();\n }\n });\n\n $.get('config/postProcessing/testNaming', {\n pattern: example.pattern,\n multi: example.multi,\n anime_type: 3 // eslint-disable-line camelcase\n }, data => {\n if (data) {\n $('#naming_example_multi').text(data + '.ext');\n $('#naming_example_multi_div').show();\n } else {\n $('#naming_example_multi_div').hide();\n }\n });\n\n $.get('config/postProcessing/isNamingValid', {\n pattern: example.pattern,\n multi: example.multi,\n anime_type: example.animeType // eslint-disable-line camelcase\n }, data => {\n if (data === 'invalid') {\n $('#naming_pattern').qtip('option', {\n 'content.text': 'This pattern is invalid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_pattern').qtip('toggle', true);\n $('#naming_pattern').css('background-color', '#FFDDDD');\n } else if (data === 'seasonfolders') {\n $('#naming_pattern').qtip('option', {\n 'content.text': 'This pattern would be invalid without the folders, using it will force \"Flatten\" off for all shows.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_pattern').qtip('toggle', true);\n $('#naming_pattern').css('background-color', '#FFFFDD');\n } else {\n $('#naming_pattern').qtip('option', {\n 'content.text': 'This pattern is valid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-green'\n });\n $('#naming_pattern').qtip('toggle', false);\n $('#naming_pattern').css('background-color', '#FFFFFF');\n }\n });\n }\n\n function fillAbdExamples() {\n const pattern = $('#naming_abd_pattern').val();\n\n $.get('config/postProcessing/testNaming', {\n pattern,\n abd: 'True'\n }, data => {\n if (data) {\n $('#naming_abd_example').text(data + '.ext');\n $('#naming_abd_example_div').show();\n } else {\n $('#naming_abd_example_div').hide();\n }\n });\n\n $.get('config/postProcessing/isNamingValid', {\n pattern,\n abd: 'True'\n }, data => {\n if (data === 'invalid') {\n $('#naming_abd_pattern').qtip('option', {\n 'content.text': 'This pattern is invalid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_abd_pattern').qtip('toggle', true);\n $('#naming_abd_pattern').css('background-color', '#FFDDDD');\n } else if (data === 'seasonfolders') {\n $('#naming_abd_pattern').qtip('option', {\n 'content.text': 'This pattern would be invalid without the folders, using it will force \"Flatten\" off for all shows.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_abd_pattern').qtip('toggle', true);\n $('#naming_abd_pattern').css('background-color', '#FFFFDD');\n } else {\n $('#naming_abd_pattern').qtip('option', {\n 'content.text': 'This pattern is valid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-green'\n });\n $('#naming_abd_pattern').qtip('toggle', false);\n $('#naming_abd_pattern').css('background-color', '#FFFFFF');\n }\n });\n }\n\n function fillSportsExamples() {\n const pattern = $('#naming_sports_pattern').val();\n\n $.get('config/postProcessing/testNaming', {\n pattern,\n sports: 'True' // @TODO does this actually need to be a string or can it be a boolean?\n }, data => {\n if (data) {\n $('#naming_sports_example').text(data + '.ext');\n $('#naming_sports_example_div').show();\n } else {\n $('#naming_sports_example_div').hide();\n }\n });\n\n $.get('config/postProcessing/isNamingValid', {\n pattern,\n sports: 'True' // @TODO does this actually need to be a string or can it be a boolean?\n }, data => {\n if (data === 'invalid') {\n $('#naming_sports_pattern').qtip('option', {\n 'content.text': 'This pattern is invalid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_sports_pattern').qtip('toggle', true);\n $('#naming_sports_pattern').css('background-color', '#FFDDDD');\n } else if (data === 'seasonfolders') {\n $('#naming_sports_pattern').qtip('option', {\n 'content.text': 'This pattern would be invalid without the folders, using it will force \"Flatten\" off for all shows.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_sports_pattern').qtip('toggle', true);\n $('#naming_sports_pattern').css('background-color', '#FFFFDD');\n } else {\n $('#naming_sports_pattern').qtip('option', {\n 'content.text': 'This pattern is valid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-green'\n });\n $('#naming_sports_pattern').qtip('toggle', false);\n $('#naming_sports_pattern').css('background-color', '#FFFFFF');\n }\n });\n }\n\n function fillAnimeExamples() {\n const example = {};\n example.pattern = $('#naming_anime_pattern').val();\n example.multi = $('#naming_anime_multi_ep :selected').val();\n example.animeType = $('input[name=\"naming_anime\"]:checked').val();\n\n $.get('config/postProcessing/testNaming', {\n pattern: example.pattern,\n anime_type: example.animeType // eslint-disable-line camelcase\n }, data => {\n if (data) {\n $('#naming_example_anime').text(data + '.ext');\n $('#naming_example_anime_div').show();\n } else {\n $('#naming_example_anime_div').hide();\n }\n });\n\n $.get('config/postProcessing/testNaming', {\n pattern: example.pattern,\n multi: example.multi,\n anime_type: example.animeType // eslint-disable-line camelcase\n }, data => {\n if (data) {\n $('#naming_example_multi_anime').text(data + '.ext');\n $('#naming_example_multi_anime_div').show();\n } else {\n $('#naming_example_multi_anime_div').hide();\n }\n });\n\n $.get('config/postProcessing/isNamingValid', {\n pattern: example.pattern,\n multi: example.multi,\n anime_type: example.animeType // eslint-disable-line camelcase\n }, data => {\n if (data === 'invalid') {\n $('#naming_pattern').qtip('option', {\n 'content.text': 'This pattern is invalid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_pattern').qtip('toggle', true);\n $('#naming_pattern').css('background-color', '#FFDDDD');\n } else if (data === 'seasonfolders') {\n $('#naming_pattern').qtip('option', {\n 'content.text': 'This pattern would be invalid without the folders, using it will force \"Flatten\" off for all shows.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_pattern').qtip('toggle', true);\n $('#naming_pattern').css('background-color', '#FFFFDD');\n } else {\n $('#naming_pattern').qtip('option', {\n 'content.text': 'This pattern is valid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-green'\n });\n $('#naming_pattern').qtip('toggle', false);\n $('#naming_pattern').css('background-color', '#FFFFFF');\n }\n });\n }\n\n // @TODO all of these setup funcitons should be able to be rolled into a generic function\n\n function setupNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_custom').show();\n } else {\n $('#naming_custom').hide();\n $('#naming_pattern').val($('#name_presets :selected').attr('id'));\n }\n fillExamples();\n }\n\n function setupAbdNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_abd_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_abd_custom').show();\n } else {\n $('#naming_abd_custom').hide();\n $('#naming_abd_pattern').val($('#name_abd_presets :selected').attr('id'));\n }\n fillAbdExamples();\n }\n\n function setupSportsNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_sports_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_sports_custom').show();\n } else {\n $('#naming_sports_custom').hide();\n $('#naming_sports_pattern').val($('#name_sports_presets :selected').attr('id'));\n }\n fillSportsExamples();\n }\n\n function setupAnimeNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_anime_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_anime_custom').show();\n } else {\n $('#naming_anime_custom').hide();\n $('#naming_anime_pattern').val($('#name_anime_presets :selected').attr('id'));\n }\n fillAnimeExamples();\n }\n\n $('#unpack').on('change', function () {\n if (this.checked) {\n isRarSupported();\n } else {\n $('#unpack').qtip('toggle', false);\n }\n });\n\n // @TODO all of these on change funcitons should be able to be rolled into a generic jQuery function or maybe we could\n // move all of the setup functions into these handlers?\n\n $('#name_presets').on('change', () => {\n setupNaming();\n });\n\n $('#name_abd_presets').on('change', () => {\n setupAbdNaming();\n });\n\n $('#naming_custom_abd').on('change', () => {\n setupAbdNaming();\n });\n\n $('#name_sports_presets').on('change', () => {\n setupSportsNaming();\n });\n\n $('#naming_custom_sports').on('change', () => {\n setupSportsNaming();\n });\n\n $('#name_anime_presets').on('change', () => {\n setupAnimeNaming();\n });\n\n $('#naming_custom_anime').on('change', () => {\n setupAnimeNaming();\n });\n\n $('input[name=\"naming_anime\"]').on('click', () => {\n setupAnimeNaming();\n });\n\n // @TODO We might be able to change these from typewatch to _ debounce like we've done on the log page\n // The main reason for doing this would be to use only open source stuff that's still being maintained\n\n $('#naming_multi_ep').on('change', fillExamples);\n $('#naming_pattern').on('focusout', fillExamples);\n $('#naming_pattern').on('keyup', () => {\n typewatch(() => {\n fillExamples();\n }, 500);\n });\n\n $('#naming_anime_multi_ep').on('change', fillAnimeExamples);\n $('#naming_anime_pattern').on('focusout', fillAnimeExamples);\n $('#naming_anime_pattern').on('keyup', () => {\n typewatch(() => {\n fillAnimeExamples();\n }, 500);\n });\n\n $('#naming_abd_pattern').on('focusout', fillExamples);\n $('#naming_abd_pattern').on('keyup', () => {\n typewatch(() => {\n fillAbdExamples();\n }, 500);\n });\n\n $('#naming_sports_pattern').on('focusout', fillExamples);\n $('#naming_sports_pattern').on('keyup', () => {\n typewatch(() => {\n fillSportsExamples();\n }, 500);\n });\n\n $('#naming_anime_pattern').on('focusout', fillExamples);\n $('#naming_anime_pattern').on('keyup', () => {\n typewatch(() => {\n fillAnimeExamples();\n }, 500);\n });\n\n $('#show_naming_key').on('click', () => {\n $('#naming_key').toggle();\n });\n $('#show_naming_abd_key').on('click', () => {\n $('#naming_abd_key').toggle();\n });\n $('#show_naming_sports_key').on('click', () => {\n $('#naming_sports_key').toggle();\n });\n $('#show_naming_anime_key').on('click', () => {\n $('#naming_anime_key').toggle();\n });\n $('#do_custom').on('click', () => {\n $('#naming_pattern').val($('#name_presets :selected').attr('id'));\n $('#naming_custom').show();\n $('#naming_pattern').focus();\n });\n\n // @TODO We should see if these can be added with the on click or if we need to even call them on load\n setupNaming();\n setupAbdNaming();\n setupSportsNaming();\n setupAnimeNaming();\n\n // -- start of metadata options div toggle code --\n $('#metadataType').on('change keyup', function () {\n $(this).showHideMetadata();\n });\n\n $.fn.showHideMetadata = function () {\n $('.metadataDiv').each(function () {\n const targetName = $(this).attr('id');\n const selectedTarget = $('#metadataType :selected').val();\n\n if (selectedTarget === targetName) {\n $(this).show();\n } else {\n $(this).hide();\n }\n });\n };\n // Initialize to show the div\n $(this).showHideMetadata();\n // -- end of metadata options div toggle code --\n\n $('.metadata_checkbox').on('click', function () {\n $(this).refreshMetadataConfig(false);\n });\n\n $.fn.refreshMetadataConfig = function (first) {\n let curMost = 0;\n let curMostProvider = '';\n\n $('.metadataDiv').each(function () {\n // eslint-disable-line complexity\n const generatorName = $(this).attr('id');\n\n const configArray = [];\n const showMetadata = $('#' + generatorName + '_show_metadata').prop('checked');\n const episodeMetadata = $('#' + generatorName + '_episode_metadata').prop('checked');\n const fanart = $('#' + generatorName + '_fanart').prop('checked');\n const poster = $('#' + generatorName + '_poster').prop('checked');\n const banner = $('#' + generatorName + '_banner').prop('checked');\n const episodeThumbnails = $('#' + generatorName + '_episode_thumbnails').prop('checked');\n const seasonPosters = $('#' + generatorName + '_season_posters').prop('checked');\n const seasonBanners = $('#' + generatorName + '_season_banners').prop('checked');\n const seasonAllPoster = $('#' + generatorName + '_season_all_poster').prop('checked');\n const seasonAllBanner = $('#' + generatorName + '_season_all_banner').prop('checked');\n\n configArray.push(showMetadata ? '1' : '0');\n configArray.push(episodeMetadata ? '1' : '0');\n configArray.push(fanart ? '1' : '0');\n configArray.push(poster ? '1' : '0');\n configArray.push(banner ? '1' : '0');\n configArray.push(episodeThumbnails ? '1' : '0');\n configArray.push(seasonPosters ? '1' : '0');\n configArray.push(seasonBanners ? '1' : '0');\n configArray.push(seasonAllPoster ? '1' : '0');\n configArray.push(seasonAllBanner ? '1' : '0');\n\n let curNumber = 0;\n for (let i = 0, len = configArray.length; i < len; i++) {\n curNumber += parseInt(configArray[i], 10);\n }\n if (curNumber > curMost) {\n curMost = curNumber;\n curMostProvider = generatorName;\n }\n\n $('#' + generatorName + '_eg_show_metadata').prop('class', showMetadata ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_episode_metadata').prop('class', episodeMetadata ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_fanart').prop('class', fanart ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_poster').prop('class', poster ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_banner').prop('class', banner ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_episode_thumbnails').prop('class', episodeThumbnails ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_posters').prop('class', seasonPosters ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_banners').prop('class', seasonBanners ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_all_poster').prop('class', seasonAllPoster ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_all_banner').prop('class', seasonAllBanner ? 'enabled' : 'disabled');\n $('#' + generatorName + '_data').val(configArray.join('|'));\n });\n\n if (curMostProvider !== '' && first) {\n $('#metadataType option[value=' + curMostProvider + ']').prop('selected', true);\n $(this).showHideMetadata();\n }\n };\n\n $(this).refreshMetadataConfig(true);\n $('img[title]').qtip({\n position: {\n at: 'bottom center',\n my: 'top right'\n },\n style: {\n tip: {\n corner: true,\n method: 'polygon'\n },\n classes: 'qtip-shadow qtip-dark'\n }\n });\n $('i[title]').qtip({\n position: {\n at: 'top center',\n my: 'bottom center'\n },\n style: {\n tip: {\n corner: true,\n method: 'polygon'\n },\n classes: 'qtip-rounded qtip-shadow ui-tooltip-sb'\n }\n });\n $('.custom-pattern,#unpack').qtip({\n content: 'validating...',\n show: {\n event: false,\n ready: false\n },\n hide: false,\n position: {\n at: 'center left',\n my: 'center right'\n },\n style: {\n tip: {\n corner: true,\n method: 'polygon'\n },\n classes: 'qtip-rounded qtip-shadow qtip-red'\n }\n });\n};\n\n},{}]},{},[1]);\n"],"file":"post-processing.js"} \ No newline at end of file +{"version":3,"names":[],"mappings":"","sources":["js/config/post-processing.js"],"sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i {\n if (data !== 'supported') {\n $('#unpack').qtip('option', {\n 'content.text': 'Unrar Executable not found.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#unpack').qtip('toggle', true);\n $('#unpack').css('background-color', '#FFFFDD');\n }\n });\n }\n\n function fillExamples() {\n const example = {};\n\n example.pattern = $('#naming_pattern').val();\n example.multi = $('#naming_multi_ep :selected').val();\n example.animeType = $('input[name=\"naming_anime\"]:checked').val();\n }\n\n // @TODO all of these setup funcitons should be able to be rolled into a generic function\n\n function setupNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_custom').show();\n } else {\n $('#naming_custom').hide();\n $('#naming_pattern').val($('#name_presets :selected').attr('id'));\n }\n fillExamples();\n }\n\n function setupAbdNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_abd_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_abd_custom').show();\n } else {\n $('#naming_abd_custom').hide();\n $('#naming_abd_pattern').val($('#name_abd_presets :selected').attr('id'));\n }\n fillAbdExamples();\n }\n\n function setupSportsNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_sports_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_sports_custom').show();\n } else {\n $('#naming_sports_custom').hide();\n $('#naming_sports_pattern').val($('#name_sports_presets :selected').attr('id'));\n }\n fillSportsExamples();\n }\n\n function setupAnimeNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_anime_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_anime_custom').show();\n } else {\n $('#naming_anime_custom').hide();\n $('#naming_anime_pattern').val($('#name_anime_presets :selected').attr('id'));\n }\n fillAnimeExamples();\n }\n\n $('#unpack').on('change', function () {\n if (this.checked) {\n isRarSupported();\n } else {\n $('#unpack').qtip('toggle', false);\n }\n });\n\n // @TODO all of these on change funcitons should be able to be rolled into a generic jQuery function or maybe we could\n // move all of the setup functions into these handlers?\n\n $('#name_presets').on('change', () => {\n setupNaming();\n });\n\n $('#name_abd_presets').on('change', () => {\n setupAbdNaming();\n });\n\n $('#naming_custom_abd').on('change', () => {\n setupAbdNaming();\n });\n\n $('#name_sports_presets').on('change', () => {\n setupSportsNaming();\n });\n\n $('#naming_custom_sports').on('change', () => {\n setupSportsNaming();\n });\n\n $('#name_anime_presets').on('change', () => {\n setupAnimeNaming();\n });\n\n $('#naming_custom_anime').on('change', () => {\n setupAnimeNaming();\n });\n\n $('input[name=\"naming_anime\"]').on('click', () => {\n setupAnimeNaming();\n });\n\n // @TODO We might be able to change these from typewatch to _ debounce like we've done on the log page\n // The main reason for doing this would be to use only open source stuff that's still being maintained\n\n $('#naming_multi_ep').on('change', fillExamples);\n $('#naming_pattern').on('focusout', fillExamples);\n $('#naming_pattern').on('keyup', () => {\n typewatch(() => {\n fillExamples();\n }, 500);\n });\n\n $('#naming_anime_multi_ep').on('change', fillAnimeExamples);\n $('#naming_anime_pattern').on('focusout', fillAnimeExamples);\n $('#naming_anime_pattern').on('keyup', () => {\n typewatch(() => {\n fillAnimeExamples();\n }, 500);\n });\n\n $('#naming_abd_pattern').on('focusout', fillExamples);\n $('#naming_abd_pattern').on('keyup', () => {\n typewatch(() => {\n fillAbdExamples();\n }, 500);\n });\n\n $('#naming_sports_pattern').on('focusout', fillExamples);\n $('#naming_sports_pattern').on('keyup', () => {\n typewatch(() => {\n fillSportsExamples();\n }, 500);\n });\n\n $('#naming_anime_pattern').on('focusout', fillExamples);\n $('#naming_anime_pattern').on('keyup', () => {\n typewatch(() => {\n fillAnimeExamples();\n }, 500);\n });\n\n $('#show_naming_key').on('click', () => {\n $('#naming_key').toggle();\n });\n $('#show_naming_abd_key').on('click', () => {\n $('#naming_abd_key').toggle();\n });\n $('#show_naming_sports_key').on('click', () => {\n $('#naming_sports_key').toggle();\n });\n $('#show_naming_anime_key').on('click', () => {\n $('#naming_anime_key').toggle();\n });\n $('#do_custom').on('click', () => {\n $('#naming_pattern').val($('#name_presets :selected').attr('id'));\n $('#naming_custom').show();\n $('#naming_pattern').focus();\n });\n\n // @TODO We should see if these can be added with the on click or if we need to even call them on load\n setupNaming();\n setupAbdNaming();\n setupSportsNaming();\n setupAnimeNaming();\n\n // -- start of metadata options div toggle code --\n $('#metadataType').on('change keyup', function () {\n $(this).showHideMetadata();\n });\n\n $.fn.showHideMetadata = function () {\n $('.metadataDiv').each(function () {\n const targetName = $(this).attr('id');\n const selectedTarget = $('#metadataType :selected').val();\n\n if (selectedTarget === targetName) {\n $(this).show();\n } else {\n $(this).hide();\n }\n });\n };\n // Initialize to show the div\n $(this).showHideMetadata();\n // -- end of metadata options div toggle code --\n\n $('.metadata_checkbox').on('click', function () {\n $(this).refreshMetadataConfig(false);\n });\n\n $.fn.refreshMetadataConfig = function (first) {\n let curMost = 0;\n let curMostProvider = '';\n\n $('.metadataDiv').each(function () {\n // eslint-disable-line complexity\n const generatorName = $(this).attr('id');\n\n const configArray = [];\n const showMetadata = $('#' + generatorName + '_show_metadata').prop('checked');\n const episodeMetadata = $('#' + generatorName + '_episode_metadata').prop('checked');\n const fanart = $('#' + generatorName + '_fanart').prop('checked');\n const poster = $('#' + generatorName + '_poster').prop('checked');\n const banner = $('#' + generatorName + '_banner').prop('checked');\n const episodeThumbnails = $('#' + generatorName + '_episode_thumbnails').prop('checked');\n const seasonPosters = $('#' + generatorName + '_season_posters').prop('checked');\n const seasonBanners = $('#' + generatorName + '_season_banners').prop('checked');\n const seasonAllPoster = $('#' + generatorName + '_season_all_poster').prop('checked');\n const seasonAllBanner = $('#' + generatorName + '_season_all_banner').prop('checked');\n\n configArray.push(showMetadata ? '1' : '0');\n configArray.push(episodeMetadata ? '1' : '0');\n configArray.push(fanart ? '1' : '0');\n configArray.push(poster ? '1' : '0');\n configArray.push(banner ? '1' : '0');\n configArray.push(episodeThumbnails ? '1' : '0');\n configArray.push(seasonPosters ? '1' : '0');\n configArray.push(seasonBanners ? '1' : '0');\n configArray.push(seasonAllPoster ? '1' : '0');\n configArray.push(seasonAllBanner ? '1' : '0');\n\n let curNumber = 0;\n for (let i = 0, len = configArray.length; i < len; i++) {\n curNumber += parseInt(configArray[i], 10);\n }\n if (curNumber > curMost) {\n curMost = curNumber;\n curMostProvider = generatorName;\n }\n\n $('#' + generatorName + '_eg_show_metadata').prop('class', showMetadata ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_episode_metadata').prop('class', episodeMetadata ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_fanart').prop('class', fanart ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_poster').prop('class', poster ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_banner').prop('class', banner ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_episode_thumbnails').prop('class', episodeThumbnails ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_posters').prop('class', seasonPosters ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_banners').prop('class', seasonBanners ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_all_poster').prop('class', seasonAllPoster ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_all_banner').prop('class', seasonAllBanner ? 'enabled' : 'disabled');\n $('#' + generatorName + '_data').val(configArray.join('|'));\n });\n\n if (curMostProvider !== '' && first) {\n $('#metadataType option[value=' + curMostProvider + ']').prop('selected', true);\n $(this).showHideMetadata();\n }\n };\n\n $(this).refreshMetadataConfig(true);\n $('img[title]').qtip({\n position: {\n at: 'bottom center',\n my: 'top right'\n },\n style: {\n tip: {\n corner: true,\n method: 'polygon'\n },\n classes: 'qtip-shadow qtip-dark'\n }\n });\n $('i[title]').qtip({\n position: {\n at: 'top center',\n my: 'bottom center'\n },\n style: {\n tip: {\n corner: true,\n method: 'polygon'\n },\n classes: 'qtip-rounded qtip-shadow ui-tooltip-sb'\n }\n });\n $('.custom-pattern,#unpack').qtip({\n content: 'validating...',\n show: {\n event: false,\n ready: false\n },\n hide: false,\n position: {\n at: 'center left',\n my: 'center right'\n },\n style: {\n tip: {\n corner: true,\n method: 'polygon'\n },\n classes: 'qtip-rounded qtip-shadow qtip-red'\n }\n });\n};\n\n},{}]},{},[1]);\n"],"file":"post-processing.js"} \ No newline at end of file diff --git a/themes/dark/templates/config_postProcessing.mako b/themes/dark/templates/config_postProcessing.mako index faeebff964..244f5bcfcf 100644 --- a/themes/dark/templates/config_postProcessing.mako +++ b/themes/dark/templates/config_postProcessing.mako @@ -26,10 +26,17 @@ const startVue = () => { }, data() { const multiEpStrings = ${main.convert([{'value': str(x), 'text': y} for x, y in MULTI_EP_STRINGS.items()])}; + const pattern = '${app.NAMING_PATTERN}'; + const abdPattern = '${app.NAMING_ABD_PATTERN}'; + const animePattern = '${app.NAMING_ANIME_PATTERN}'; + const sportsPattern = '${app.NAMING_SPORTS_PATTERN}'; return { header: 'Post Processing', - pattern: 'lalalala', + pattern: pattern, + abdPattern: abdPattern, + animePattern: animePattern, + sportsPattern: sportsPattern, presets: [ '%SN - %Sx%0E - %EN', '%S.N.S%0SE%0E.%E.N', @@ -285,13 +292,13 @@ const startVue = () => { - + - + - - + +
diff --git a/themes/dark/templates/vue-components/name-pattern.mako b/themes/dark/templates/vue-components/name-pattern.mako index eb9fa62bb1..00d4c30a6b 100644 --- a/themes/dark/templates/vue-components/name-pattern.mako +++ b/themes/dark/templates/vue-components/name-pattern.mako @@ -302,24 +302,34 @@ return dateFns.format(new Date(), format); }, async testNaming(pattern, isMulti, animeType) { - console.log('Test pattern ' + pattern + ' for ' + (isMulti) ? 'multi' : 'single' + ' ep'); - const data = { + console.debug('Test pattern ' + pattern + ' for ' + (isMulti) ? 'multi' : 'single' + ' ep'); + const params = { pattern: pattern, - multi: isMulti, anime_type: animeType } - const response = await api.get('config/postProcessing/testNaming', data); - console.log(response); - return response; + + if (isMulti) { + params.multi = (isMulti) ? 1 : 0 + } + + try { + const result = await apiRoute.get('config/postProcessing/testNaming', {params: params}); + return result.data; + } catch (e) { + console.warning(e); + } }, - updatePatternSamples() { + async updatePatternSamples() { + // If it's a custom pattern, we need to get the custom pattern from this.customName + const namingPattern = (this.isCustom) ? this.customName : this.namingPattern; + // Update single - const namingResult = this.testNaming(this.pattern, false, this.animeNamingType); - + this.namingExample = await this.testNaming(namingPattern, false, this.animeNamingType) + '.ext'; + console.debug('Result of naming pattern check: ' + this.namingExample); + // Update multi if needed if (this.isMulti) { - const namingMultiResult = this.testNaming(this.pattern, this.isMulti, this.animeNamingType); - debugger; + this.namingExampleMulti = await this.testNaming(namingPattern, this.isMulti, this.animeNamingType) + '.ext'; } } }, @@ -347,6 +357,9 @@ // Add Custom... as an option to the namingPresets. this.namingPresets = this.presets.concat('Custom...'); + // Update the pattern samples + this.updatePatternSamples(); + }, watch: { customName(newValue, oldValue) { diff --git a/themes/light/assets/js/config/post-processing.js b/themes/light/assets/js/config/post-processing.js index 91ffb980a4..c5bec34fec 100644 --- a/themes/light/assets/js/config/post-processing.js +++ b/themes/light/assets/js/config/post-processing.js @@ -33,208 +33,6 @@ MEDUSA.config.postProcessing = function() { // eslint-disable-line max-lines example.multi = $('#naming_multi_ep :selected').val(); example.animeType = $('input[name="naming_anime"]:checked').val(); - $.get('config/postProcessing/testNaming', { - pattern: example.pattern, - anime_type: 3 // eslint-disable-line camelcase - }, data => { - if (data) { - $('#naming_example').text(data + '.ext'); - $('#naming_example_div').show(); - } else { - $('#naming_example_div').hide(); - } - }); - - $.get('config/postProcessing/testNaming', { - pattern: example.pattern, - multi: example.multi, - anime_type: 3 // eslint-disable-line camelcase - }, data => { - if (data) { - $('#naming_example_multi').text(data + '.ext'); - $('#naming_example_multi_div').show(); - } else { - $('#naming_example_multi_div').hide(); - } - }); - - $.get('config/postProcessing/isNamingValid', { - pattern: example.pattern, - multi: example.multi, - anime_type: example.animeType // eslint-disable-line camelcase - }, data => { - if (data === 'invalid') { - $('#naming_pattern').qtip('option', { - 'content.text': 'This pattern is invalid.', - 'style.classes': 'qtip-rounded qtip-shadow qtip-red' - }); - $('#naming_pattern').qtip('toggle', true); - $('#naming_pattern').css('background-color', '#FFDDDD'); - } else if (data === 'seasonfolders') { - $('#naming_pattern').qtip('option', { - 'content.text': 'This pattern would be invalid without the folders, using it will force "Flatten" off for all shows.', - 'style.classes': 'qtip-rounded qtip-shadow qtip-red' - }); - $('#naming_pattern').qtip('toggle', true); - $('#naming_pattern').css('background-color', '#FFFFDD'); - } else { - $('#naming_pattern').qtip('option', { - 'content.text': 'This pattern is valid.', - 'style.classes': 'qtip-rounded qtip-shadow qtip-green' - }); - $('#naming_pattern').qtip('toggle', false); - $('#naming_pattern').css('background-color', '#FFFFFF'); - } - }); - } - - function fillAbdExamples() { - const pattern = $('#naming_abd_pattern').val(); - - $.get('config/postProcessing/testNaming', { - pattern, - abd: 'True' - }, data => { - if (data) { - $('#naming_abd_example').text(data + '.ext'); - $('#naming_abd_example_div').show(); - } else { - $('#naming_abd_example_div').hide(); - } - }); - - $.get('config/postProcessing/isNamingValid', { - pattern, - abd: 'True' - }, data => { - if (data === 'invalid') { - $('#naming_abd_pattern').qtip('option', { - 'content.text': 'This pattern is invalid.', - 'style.classes': 'qtip-rounded qtip-shadow qtip-red' - }); - $('#naming_abd_pattern').qtip('toggle', true); - $('#naming_abd_pattern').css('background-color', '#FFDDDD'); - } else if (data === 'seasonfolders') { - $('#naming_abd_pattern').qtip('option', { - 'content.text': 'This pattern would be invalid without the folders, using it will force "Flatten" off for all shows.', - 'style.classes': 'qtip-rounded qtip-shadow qtip-red' - }); - $('#naming_abd_pattern').qtip('toggle', true); - $('#naming_abd_pattern').css('background-color', '#FFFFDD'); - } else { - $('#naming_abd_pattern').qtip('option', { - 'content.text': 'This pattern is valid.', - 'style.classes': 'qtip-rounded qtip-shadow qtip-green' - }); - $('#naming_abd_pattern').qtip('toggle', false); - $('#naming_abd_pattern').css('background-color', '#FFFFFF'); - } - }); - } - - function fillSportsExamples() { - const pattern = $('#naming_sports_pattern').val(); - - $.get('config/postProcessing/testNaming', { - pattern, - sports: 'True' // @TODO does this actually need to be a string or can it be a boolean? - }, data => { - if (data) { - $('#naming_sports_example').text(data + '.ext'); - $('#naming_sports_example_div').show(); - } else { - $('#naming_sports_example_div').hide(); - } - }); - - $.get('config/postProcessing/isNamingValid', { - pattern, - sports: 'True' // @TODO does this actually need to be a string or can it be a boolean? - }, data => { - if (data === 'invalid') { - $('#naming_sports_pattern').qtip('option', { - 'content.text': 'This pattern is invalid.', - 'style.classes': 'qtip-rounded qtip-shadow qtip-red' - }); - $('#naming_sports_pattern').qtip('toggle', true); - $('#naming_sports_pattern').css('background-color', '#FFDDDD'); - } else if (data === 'seasonfolders') { - $('#naming_sports_pattern').qtip('option', { - 'content.text': 'This pattern would be invalid without the folders, using it will force "Flatten" off for all shows.', - 'style.classes': 'qtip-rounded qtip-shadow qtip-red' - }); - $('#naming_sports_pattern').qtip('toggle', true); - $('#naming_sports_pattern').css('background-color', '#FFFFDD'); - } else { - $('#naming_sports_pattern').qtip('option', { - 'content.text': 'This pattern is valid.', - 'style.classes': 'qtip-rounded qtip-shadow qtip-green' - }); - $('#naming_sports_pattern').qtip('toggle', false); - $('#naming_sports_pattern').css('background-color', '#FFFFFF'); - } - }); - } - - function fillAnimeExamples() { - const example = {}; - example.pattern = $('#naming_anime_pattern').val(); - example.multi = $('#naming_anime_multi_ep :selected').val(); - example.animeType = $('input[name="naming_anime"]:checked').val(); - - $.get('config/postProcessing/testNaming', { - pattern: example.pattern, - anime_type: example.animeType // eslint-disable-line camelcase - }, data => { - if (data) { - $('#naming_example_anime').text(data + '.ext'); - $('#naming_example_anime_div').show(); - } else { - $('#naming_example_anime_div').hide(); - } - }); - - $.get('config/postProcessing/testNaming', { - pattern: example.pattern, - multi: example.multi, - anime_type: example.animeType // eslint-disable-line camelcase - }, data => { - if (data) { - $('#naming_example_multi_anime').text(data + '.ext'); - $('#naming_example_multi_anime_div').show(); - } else { - $('#naming_example_multi_anime_div').hide(); - } - }); - - $.get('config/postProcessing/isNamingValid', { - pattern: example.pattern, - multi: example.multi, - anime_type: example.animeType // eslint-disable-line camelcase - }, data => { - if (data === 'invalid') { - $('#naming_pattern').qtip('option', { - 'content.text': 'This pattern is invalid.', - 'style.classes': 'qtip-rounded qtip-shadow qtip-red' - }); - $('#naming_pattern').qtip('toggle', true); - $('#naming_pattern').css('background-color', '#FFDDDD'); - } else if (data === 'seasonfolders') { - $('#naming_pattern').qtip('option', { - 'content.text': 'This pattern would be invalid without the folders, using it will force "Flatten" off for all shows.', - 'style.classes': 'qtip-rounded qtip-shadow qtip-red' - }); - $('#naming_pattern').qtip('toggle', true); - $('#naming_pattern').css('background-color', '#FFFFDD'); - } else { - $('#naming_pattern').qtip('option', { - 'content.text': 'This pattern is valid.', - 'style.classes': 'qtip-rounded qtip-shadow qtip-green' - }); - $('#naming_pattern').qtip('toggle', false); - $('#naming_pattern').css('background-color', '#FFFFFF'); - } - }); } // @TODO all of these setup funcitons should be able to be rolled into a generic function diff --git a/themes/light/assets/js/config/post-processing.js.map b/themes/light/assets/js/config/post-processing.js.map index a5a883d626..1979accd75 100644 --- a/themes/light/assets/js/config/post-processing.js.map +++ b/themes/light/assets/js/config/post-processing.js.map @@ -1 +1 @@ -{"version":3,"names":[],"mappings":"","sources":["js/config/post-processing.js"],"sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i {\n if (data !== 'supported') {\n $('#unpack').qtip('option', {\n 'content.text': 'Unrar Executable not found.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#unpack').qtip('toggle', true);\n $('#unpack').css('background-color', '#FFFFDD');\n }\n });\n }\n\n function fillExamples() {\n const example = {};\n\n example.pattern = $('#naming_pattern').val();\n example.multi = $('#naming_multi_ep :selected').val();\n example.animeType = $('input[name=\"naming_anime\"]:checked').val();\n\n $.get('config/postProcessing/testNaming', {\n pattern: example.pattern,\n anime_type: 3 // eslint-disable-line camelcase\n }, data => {\n if (data) {\n $('#naming_example').text(data + '.ext');\n $('#naming_example_div').show();\n } else {\n $('#naming_example_div').hide();\n }\n });\n\n $.get('config/postProcessing/testNaming', {\n pattern: example.pattern,\n multi: example.multi,\n anime_type: 3 // eslint-disable-line camelcase\n }, data => {\n if (data) {\n $('#naming_example_multi').text(data + '.ext');\n $('#naming_example_multi_div').show();\n } else {\n $('#naming_example_multi_div').hide();\n }\n });\n\n $.get('config/postProcessing/isNamingValid', {\n pattern: example.pattern,\n multi: example.multi,\n anime_type: example.animeType // eslint-disable-line camelcase\n }, data => {\n if (data === 'invalid') {\n $('#naming_pattern').qtip('option', {\n 'content.text': 'This pattern is invalid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_pattern').qtip('toggle', true);\n $('#naming_pattern').css('background-color', '#FFDDDD');\n } else if (data === 'seasonfolders') {\n $('#naming_pattern').qtip('option', {\n 'content.text': 'This pattern would be invalid without the folders, using it will force \"Flatten\" off for all shows.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_pattern').qtip('toggle', true);\n $('#naming_pattern').css('background-color', '#FFFFDD');\n } else {\n $('#naming_pattern').qtip('option', {\n 'content.text': 'This pattern is valid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-green'\n });\n $('#naming_pattern').qtip('toggle', false);\n $('#naming_pattern').css('background-color', '#FFFFFF');\n }\n });\n }\n\n function fillAbdExamples() {\n const pattern = $('#naming_abd_pattern').val();\n\n $.get('config/postProcessing/testNaming', {\n pattern,\n abd: 'True'\n }, data => {\n if (data) {\n $('#naming_abd_example').text(data + '.ext');\n $('#naming_abd_example_div').show();\n } else {\n $('#naming_abd_example_div').hide();\n }\n });\n\n $.get('config/postProcessing/isNamingValid', {\n pattern,\n abd: 'True'\n }, data => {\n if (data === 'invalid') {\n $('#naming_abd_pattern').qtip('option', {\n 'content.text': 'This pattern is invalid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_abd_pattern').qtip('toggle', true);\n $('#naming_abd_pattern').css('background-color', '#FFDDDD');\n } else if (data === 'seasonfolders') {\n $('#naming_abd_pattern').qtip('option', {\n 'content.text': 'This pattern would be invalid without the folders, using it will force \"Flatten\" off for all shows.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_abd_pattern').qtip('toggle', true);\n $('#naming_abd_pattern').css('background-color', '#FFFFDD');\n } else {\n $('#naming_abd_pattern').qtip('option', {\n 'content.text': 'This pattern is valid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-green'\n });\n $('#naming_abd_pattern').qtip('toggle', false);\n $('#naming_abd_pattern').css('background-color', '#FFFFFF');\n }\n });\n }\n\n function fillSportsExamples() {\n const pattern = $('#naming_sports_pattern').val();\n\n $.get('config/postProcessing/testNaming', {\n pattern,\n sports: 'True' // @TODO does this actually need to be a string or can it be a boolean?\n }, data => {\n if (data) {\n $('#naming_sports_example').text(data + '.ext');\n $('#naming_sports_example_div').show();\n } else {\n $('#naming_sports_example_div').hide();\n }\n });\n\n $.get('config/postProcessing/isNamingValid', {\n pattern,\n sports: 'True' // @TODO does this actually need to be a string or can it be a boolean?\n }, data => {\n if (data === 'invalid') {\n $('#naming_sports_pattern').qtip('option', {\n 'content.text': 'This pattern is invalid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_sports_pattern').qtip('toggle', true);\n $('#naming_sports_pattern').css('background-color', '#FFDDDD');\n } else if (data === 'seasonfolders') {\n $('#naming_sports_pattern').qtip('option', {\n 'content.text': 'This pattern would be invalid without the folders, using it will force \"Flatten\" off for all shows.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_sports_pattern').qtip('toggle', true);\n $('#naming_sports_pattern').css('background-color', '#FFFFDD');\n } else {\n $('#naming_sports_pattern').qtip('option', {\n 'content.text': 'This pattern is valid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-green'\n });\n $('#naming_sports_pattern').qtip('toggle', false);\n $('#naming_sports_pattern').css('background-color', '#FFFFFF');\n }\n });\n }\n\n function fillAnimeExamples() {\n const example = {};\n example.pattern = $('#naming_anime_pattern').val();\n example.multi = $('#naming_anime_multi_ep :selected').val();\n example.animeType = $('input[name=\"naming_anime\"]:checked').val();\n\n $.get('config/postProcessing/testNaming', {\n pattern: example.pattern,\n anime_type: example.animeType // eslint-disable-line camelcase\n }, data => {\n if (data) {\n $('#naming_example_anime').text(data + '.ext');\n $('#naming_example_anime_div').show();\n } else {\n $('#naming_example_anime_div').hide();\n }\n });\n\n $.get('config/postProcessing/testNaming', {\n pattern: example.pattern,\n multi: example.multi,\n anime_type: example.animeType // eslint-disable-line camelcase\n }, data => {\n if (data) {\n $('#naming_example_multi_anime').text(data + '.ext');\n $('#naming_example_multi_anime_div').show();\n } else {\n $('#naming_example_multi_anime_div').hide();\n }\n });\n\n $.get('config/postProcessing/isNamingValid', {\n pattern: example.pattern,\n multi: example.multi,\n anime_type: example.animeType // eslint-disable-line camelcase\n }, data => {\n if (data === 'invalid') {\n $('#naming_pattern').qtip('option', {\n 'content.text': 'This pattern is invalid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_pattern').qtip('toggle', true);\n $('#naming_pattern').css('background-color', '#FFDDDD');\n } else if (data === 'seasonfolders') {\n $('#naming_pattern').qtip('option', {\n 'content.text': 'This pattern would be invalid without the folders, using it will force \"Flatten\" off for all shows.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#naming_pattern').qtip('toggle', true);\n $('#naming_pattern').css('background-color', '#FFFFDD');\n } else {\n $('#naming_pattern').qtip('option', {\n 'content.text': 'This pattern is valid.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-green'\n });\n $('#naming_pattern').qtip('toggle', false);\n $('#naming_pattern').css('background-color', '#FFFFFF');\n }\n });\n }\n\n // @TODO all of these setup funcitons should be able to be rolled into a generic function\n\n function setupNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_custom').show();\n } else {\n $('#naming_custom').hide();\n $('#naming_pattern').val($('#name_presets :selected').attr('id'));\n }\n fillExamples();\n }\n\n function setupAbdNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_abd_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_abd_custom').show();\n } else {\n $('#naming_abd_custom').hide();\n $('#naming_abd_pattern').val($('#name_abd_presets :selected').attr('id'));\n }\n fillAbdExamples();\n }\n\n function setupSportsNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_sports_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_sports_custom').show();\n } else {\n $('#naming_sports_custom').hide();\n $('#naming_sports_pattern').val($('#name_sports_presets :selected').attr('id'));\n }\n fillSportsExamples();\n }\n\n function setupAnimeNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_anime_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_anime_custom').show();\n } else {\n $('#naming_anime_custom').hide();\n $('#naming_anime_pattern').val($('#name_anime_presets :selected').attr('id'));\n }\n fillAnimeExamples();\n }\n\n $('#unpack').on('change', function () {\n if (this.checked) {\n isRarSupported();\n } else {\n $('#unpack').qtip('toggle', false);\n }\n });\n\n // @TODO all of these on change funcitons should be able to be rolled into a generic jQuery function or maybe we could\n // move all of the setup functions into these handlers?\n\n $('#name_presets').on('change', () => {\n setupNaming();\n });\n\n $('#name_abd_presets').on('change', () => {\n setupAbdNaming();\n });\n\n $('#naming_custom_abd').on('change', () => {\n setupAbdNaming();\n });\n\n $('#name_sports_presets').on('change', () => {\n setupSportsNaming();\n });\n\n $('#naming_custom_sports').on('change', () => {\n setupSportsNaming();\n });\n\n $('#name_anime_presets').on('change', () => {\n setupAnimeNaming();\n });\n\n $('#naming_custom_anime').on('change', () => {\n setupAnimeNaming();\n });\n\n $('input[name=\"naming_anime\"]').on('click', () => {\n setupAnimeNaming();\n });\n\n // @TODO We might be able to change these from typewatch to _ debounce like we've done on the log page\n // The main reason for doing this would be to use only open source stuff that's still being maintained\n\n $('#naming_multi_ep').on('change', fillExamples);\n $('#naming_pattern').on('focusout', fillExamples);\n $('#naming_pattern').on('keyup', () => {\n typewatch(() => {\n fillExamples();\n }, 500);\n });\n\n $('#naming_anime_multi_ep').on('change', fillAnimeExamples);\n $('#naming_anime_pattern').on('focusout', fillAnimeExamples);\n $('#naming_anime_pattern').on('keyup', () => {\n typewatch(() => {\n fillAnimeExamples();\n }, 500);\n });\n\n $('#naming_abd_pattern').on('focusout', fillExamples);\n $('#naming_abd_pattern').on('keyup', () => {\n typewatch(() => {\n fillAbdExamples();\n }, 500);\n });\n\n $('#naming_sports_pattern').on('focusout', fillExamples);\n $('#naming_sports_pattern').on('keyup', () => {\n typewatch(() => {\n fillSportsExamples();\n }, 500);\n });\n\n $('#naming_anime_pattern').on('focusout', fillExamples);\n $('#naming_anime_pattern').on('keyup', () => {\n typewatch(() => {\n fillAnimeExamples();\n }, 500);\n });\n\n $('#show_naming_key').on('click', () => {\n $('#naming_key').toggle();\n });\n $('#show_naming_abd_key').on('click', () => {\n $('#naming_abd_key').toggle();\n });\n $('#show_naming_sports_key').on('click', () => {\n $('#naming_sports_key').toggle();\n });\n $('#show_naming_anime_key').on('click', () => {\n $('#naming_anime_key').toggle();\n });\n $('#do_custom').on('click', () => {\n $('#naming_pattern').val($('#name_presets :selected').attr('id'));\n $('#naming_custom').show();\n $('#naming_pattern').focus();\n });\n\n // @TODO We should see if these can be added with the on click or if we need to even call them on load\n setupNaming();\n setupAbdNaming();\n setupSportsNaming();\n setupAnimeNaming();\n\n // -- start of metadata options div toggle code --\n $('#metadataType').on('change keyup', function () {\n $(this).showHideMetadata();\n });\n\n $.fn.showHideMetadata = function () {\n $('.metadataDiv').each(function () {\n const targetName = $(this).attr('id');\n const selectedTarget = $('#metadataType :selected').val();\n\n if (selectedTarget === targetName) {\n $(this).show();\n } else {\n $(this).hide();\n }\n });\n };\n // Initialize to show the div\n $(this).showHideMetadata();\n // -- end of metadata options div toggle code --\n\n $('.metadata_checkbox').on('click', function () {\n $(this).refreshMetadataConfig(false);\n });\n\n $.fn.refreshMetadataConfig = function (first) {\n let curMost = 0;\n let curMostProvider = '';\n\n $('.metadataDiv').each(function () {\n // eslint-disable-line complexity\n const generatorName = $(this).attr('id');\n\n const configArray = [];\n const showMetadata = $('#' + generatorName + '_show_metadata').prop('checked');\n const episodeMetadata = $('#' + generatorName + '_episode_metadata').prop('checked');\n const fanart = $('#' + generatorName + '_fanart').prop('checked');\n const poster = $('#' + generatorName + '_poster').prop('checked');\n const banner = $('#' + generatorName + '_banner').prop('checked');\n const episodeThumbnails = $('#' + generatorName + '_episode_thumbnails').prop('checked');\n const seasonPosters = $('#' + generatorName + '_season_posters').prop('checked');\n const seasonBanners = $('#' + generatorName + '_season_banners').prop('checked');\n const seasonAllPoster = $('#' + generatorName + '_season_all_poster').prop('checked');\n const seasonAllBanner = $('#' + generatorName + '_season_all_banner').prop('checked');\n\n configArray.push(showMetadata ? '1' : '0');\n configArray.push(episodeMetadata ? '1' : '0');\n configArray.push(fanart ? '1' : '0');\n configArray.push(poster ? '1' : '0');\n configArray.push(banner ? '1' : '0');\n configArray.push(episodeThumbnails ? '1' : '0');\n configArray.push(seasonPosters ? '1' : '0');\n configArray.push(seasonBanners ? '1' : '0');\n configArray.push(seasonAllPoster ? '1' : '0');\n configArray.push(seasonAllBanner ? '1' : '0');\n\n let curNumber = 0;\n for (let i = 0, len = configArray.length; i < len; i++) {\n curNumber += parseInt(configArray[i], 10);\n }\n if (curNumber > curMost) {\n curMost = curNumber;\n curMostProvider = generatorName;\n }\n\n $('#' + generatorName + '_eg_show_metadata').prop('class', showMetadata ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_episode_metadata').prop('class', episodeMetadata ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_fanart').prop('class', fanart ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_poster').prop('class', poster ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_banner').prop('class', banner ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_episode_thumbnails').prop('class', episodeThumbnails ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_posters').prop('class', seasonPosters ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_banners').prop('class', seasonBanners ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_all_poster').prop('class', seasonAllPoster ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_all_banner').prop('class', seasonAllBanner ? 'enabled' : 'disabled');\n $('#' + generatorName + '_data').val(configArray.join('|'));\n });\n\n if (curMostProvider !== '' && first) {\n $('#metadataType option[value=' + curMostProvider + ']').prop('selected', true);\n $(this).showHideMetadata();\n }\n };\n\n $(this).refreshMetadataConfig(true);\n $('img[title]').qtip({\n position: {\n at: 'bottom center',\n my: 'top right'\n },\n style: {\n tip: {\n corner: true,\n method: 'polygon'\n },\n classes: 'qtip-shadow qtip-dark'\n }\n });\n $('i[title]').qtip({\n position: {\n at: 'top center',\n my: 'bottom center'\n },\n style: {\n tip: {\n corner: true,\n method: 'polygon'\n },\n classes: 'qtip-rounded qtip-shadow ui-tooltip-sb'\n }\n });\n $('.custom-pattern,#unpack').qtip({\n content: 'validating...',\n show: {\n event: false,\n ready: false\n },\n hide: false,\n position: {\n at: 'center left',\n my: 'center right'\n },\n style: {\n tip: {\n corner: true,\n method: 'polygon'\n },\n classes: 'qtip-rounded qtip-shadow qtip-red'\n }\n });\n};\n\n},{}]},{},[1]);\n"],"file":"post-processing.js"} \ No newline at end of file +{"version":3,"names":[],"mappings":"","sources":["js/config/post-processing.js"],"sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i {\n if (data !== 'supported') {\n $('#unpack').qtip('option', {\n 'content.text': 'Unrar Executable not found.',\n 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n });\n $('#unpack').qtip('toggle', true);\n $('#unpack').css('background-color', '#FFFFDD');\n }\n });\n }\n\n function fillExamples() {\n const example = {};\n\n example.pattern = $('#naming_pattern').val();\n example.multi = $('#naming_multi_ep :selected').val();\n example.animeType = $('input[name=\"naming_anime\"]:checked').val();\n }\n\n // @TODO all of these setup funcitons should be able to be rolled into a generic function\n\n function setupNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_custom').show();\n } else {\n $('#naming_custom').hide();\n $('#naming_pattern').val($('#name_presets :selected').attr('id'));\n }\n fillExamples();\n }\n\n function setupAbdNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_abd_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_abd_custom').show();\n } else {\n $('#naming_abd_custom').hide();\n $('#naming_abd_pattern').val($('#name_abd_presets :selected').attr('id'));\n }\n fillAbdExamples();\n }\n\n function setupSportsNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_sports_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_sports_custom').show();\n } else {\n $('#naming_sports_custom').hide();\n $('#naming_sports_pattern').val($('#name_sports_presets :selected').attr('id'));\n }\n fillSportsExamples();\n }\n\n function setupAnimeNaming() {\n // If it is a custom selection then show the text box\n if ($('#name_anime_presets :selected').val().toLowerCase() === 'custom...') {\n $('#naming_anime_custom').show();\n } else {\n $('#naming_anime_custom').hide();\n $('#naming_anime_pattern').val($('#name_anime_presets :selected').attr('id'));\n }\n fillAnimeExamples();\n }\n\n $('#unpack').on('change', function () {\n if (this.checked) {\n isRarSupported();\n } else {\n $('#unpack').qtip('toggle', false);\n }\n });\n\n // @TODO all of these on change funcitons should be able to be rolled into a generic jQuery function or maybe we could\n // move all of the setup functions into these handlers?\n\n $('#name_presets').on('change', () => {\n setupNaming();\n });\n\n $('#name_abd_presets').on('change', () => {\n setupAbdNaming();\n });\n\n $('#naming_custom_abd').on('change', () => {\n setupAbdNaming();\n });\n\n $('#name_sports_presets').on('change', () => {\n setupSportsNaming();\n });\n\n $('#naming_custom_sports').on('change', () => {\n setupSportsNaming();\n });\n\n $('#name_anime_presets').on('change', () => {\n setupAnimeNaming();\n });\n\n $('#naming_custom_anime').on('change', () => {\n setupAnimeNaming();\n });\n\n $('input[name=\"naming_anime\"]').on('click', () => {\n setupAnimeNaming();\n });\n\n // @TODO We might be able to change these from typewatch to _ debounce like we've done on the log page\n // The main reason for doing this would be to use only open source stuff that's still being maintained\n\n $('#naming_multi_ep').on('change', fillExamples);\n $('#naming_pattern').on('focusout', fillExamples);\n $('#naming_pattern').on('keyup', () => {\n typewatch(() => {\n fillExamples();\n }, 500);\n });\n\n $('#naming_anime_multi_ep').on('change', fillAnimeExamples);\n $('#naming_anime_pattern').on('focusout', fillAnimeExamples);\n $('#naming_anime_pattern').on('keyup', () => {\n typewatch(() => {\n fillAnimeExamples();\n }, 500);\n });\n\n $('#naming_abd_pattern').on('focusout', fillExamples);\n $('#naming_abd_pattern').on('keyup', () => {\n typewatch(() => {\n fillAbdExamples();\n }, 500);\n });\n\n $('#naming_sports_pattern').on('focusout', fillExamples);\n $('#naming_sports_pattern').on('keyup', () => {\n typewatch(() => {\n fillSportsExamples();\n }, 500);\n });\n\n $('#naming_anime_pattern').on('focusout', fillExamples);\n $('#naming_anime_pattern').on('keyup', () => {\n typewatch(() => {\n fillAnimeExamples();\n }, 500);\n });\n\n $('#show_naming_key').on('click', () => {\n $('#naming_key').toggle();\n });\n $('#show_naming_abd_key').on('click', () => {\n $('#naming_abd_key').toggle();\n });\n $('#show_naming_sports_key').on('click', () => {\n $('#naming_sports_key').toggle();\n });\n $('#show_naming_anime_key').on('click', () => {\n $('#naming_anime_key').toggle();\n });\n $('#do_custom').on('click', () => {\n $('#naming_pattern').val($('#name_presets :selected').attr('id'));\n $('#naming_custom').show();\n $('#naming_pattern').focus();\n });\n\n // @TODO We should see if these can be added with the on click or if we need to even call them on load\n setupNaming();\n setupAbdNaming();\n setupSportsNaming();\n setupAnimeNaming();\n\n // -- start of metadata options div toggle code --\n $('#metadataType').on('change keyup', function () {\n $(this).showHideMetadata();\n });\n\n $.fn.showHideMetadata = function () {\n $('.metadataDiv').each(function () {\n const targetName = $(this).attr('id');\n const selectedTarget = $('#metadataType :selected').val();\n\n if (selectedTarget === targetName) {\n $(this).show();\n } else {\n $(this).hide();\n }\n });\n };\n // Initialize to show the div\n $(this).showHideMetadata();\n // -- end of metadata options div toggle code --\n\n $('.metadata_checkbox').on('click', function () {\n $(this).refreshMetadataConfig(false);\n });\n\n $.fn.refreshMetadataConfig = function (first) {\n let curMost = 0;\n let curMostProvider = '';\n\n $('.metadataDiv').each(function () {\n // eslint-disable-line complexity\n const generatorName = $(this).attr('id');\n\n const configArray = [];\n const showMetadata = $('#' + generatorName + '_show_metadata').prop('checked');\n const episodeMetadata = $('#' + generatorName + '_episode_metadata').prop('checked');\n const fanart = $('#' + generatorName + '_fanart').prop('checked');\n const poster = $('#' + generatorName + '_poster').prop('checked');\n const banner = $('#' + generatorName + '_banner').prop('checked');\n const episodeThumbnails = $('#' + generatorName + '_episode_thumbnails').prop('checked');\n const seasonPosters = $('#' + generatorName + '_season_posters').prop('checked');\n const seasonBanners = $('#' + generatorName + '_season_banners').prop('checked');\n const seasonAllPoster = $('#' + generatorName + '_season_all_poster').prop('checked');\n const seasonAllBanner = $('#' + generatorName + '_season_all_banner').prop('checked');\n\n configArray.push(showMetadata ? '1' : '0');\n configArray.push(episodeMetadata ? '1' : '0');\n configArray.push(fanart ? '1' : '0');\n configArray.push(poster ? '1' : '0');\n configArray.push(banner ? '1' : '0');\n configArray.push(episodeThumbnails ? '1' : '0');\n configArray.push(seasonPosters ? '1' : '0');\n configArray.push(seasonBanners ? '1' : '0');\n configArray.push(seasonAllPoster ? '1' : '0');\n configArray.push(seasonAllBanner ? '1' : '0');\n\n let curNumber = 0;\n for (let i = 0, len = configArray.length; i < len; i++) {\n curNumber += parseInt(configArray[i], 10);\n }\n if (curNumber > curMost) {\n curMost = curNumber;\n curMostProvider = generatorName;\n }\n\n $('#' + generatorName + '_eg_show_metadata').prop('class', showMetadata ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_episode_metadata').prop('class', episodeMetadata ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_fanart').prop('class', fanart ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_poster').prop('class', poster ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_banner').prop('class', banner ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_episode_thumbnails').prop('class', episodeThumbnails ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_posters').prop('class', seasonPosters ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_banners').prop('class', seasonBanners ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_all_poster').prop('class', seasonAllPoster ? 'enabled' : 'disabled');\n $('#' + generatorName + '_eg_season_all_banner').prop('class', seasonAllBanner ? 'enabled' : 'disabled');\n $('#' + generatorName + '_data').val(configArray.join('|'));\n });\n\n if (curMostProvider !== '' && first) {\n $('#metadataType option[value=' + curMostProvider + ']').prop('selected', true);\n $(this).showHideMetadata();\n }\n };\n\n $(this).refreshMetadataConfig(true);\n $('img[title]').qtip({\n position: {\n at: 'bottom center',\n my: 'top right'\n },\n style: {\n tip: {\n corner: true,\n method: 'polygon'\n },\n classes: 'qtip-shadow qtip-dark'\n }\n });\n $('i[title]').qtip({\n position: {\n at: 'top center',\n my: 'bottom center'\n },\n style: {\n tip: {\n corner: true,\n method: 'polygon'\n },\n classes: 'qtip-rounded qtip-shadow ui-tooltip-sb'\n }\n });\n $('.custom-pattern,#unpack').qtip({\n content: 'validating...',\n show: {\n event: false,\n ready: false\n },\n hide: false,\n position: {\n at: 'center left',\n my: 'center right'\n },\n style: {\n tip: {\n corner: true,\n method: 'polygon'\n },\n classes: 'qtip-rounded qtip-shadow qtip-red'\n }\n });\n};\n\n},{}]},{},[1]);\n"],"file":"post-processing.js"} \ No newline at end of file diff --git a/themes/light/templates/config_postProcessing.mako b/themes/light/templates/config_postProcessing.mako index 248a5bc7b0..244f5bcfcf 100644 --- a/themes/light/templates/config_postProcessing.mako +++ b/themes/light/templates/config_postProcessing.mako @@ -1,4 +1,5 @@ <%inherit file="/layouts/main.mako"/> +<%namespace name="main" file="/layouts/main.mako"/> <%! import os.path import datetime @@ -11,8 +12,11 @@ from medusa.metadata.generic import GenericMetadata from medusa import naming %> + <%block name="scripts"> +<%include file="/vue-components/name-pattern.mako"/> + + + \ No newline at end of file From 4fe55f5232f5014f5861aa680673f9af3ba7abe1 Mon Sep 17 00:00:00 2001 From: P0psicles Date: Tue, 29 May 2018 19:41:39 +0200 Subject: [PATCH 033/122] Remove token from api client. Will get overwritten by commit later. --- themes/dark/assets/js/api.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/themes/dark/assets/js/api.js b/themes/dark/assets/js/api.js index 8a2b9d1340..b14c9c2f4a 100644 --- a/themes/dark/assets/js/api.js +++ b/themes/dark/assets/js/api.js @@ -9,8 +9,7 @@ const apiRoute = axios.create({ // eslint-disable-line no-unused-vars timeout: 10000, headers: { Accept: 'application/json', - 'Content-Type': 'application/json', - 'X-Api-Key': idToken + 'Content-Type': 'application/json' } }); From 697c5de8b1a386eaf11bcba84c99ec00fcca29a9 Mon Sep 17 00:00:00 2001 From: P0psicles Date: Tue, 29 May 2018 19:42:18 +0200 Subject: [PATCH 034/122] Added onChangePattern method, to process name-pattern component updates. --- .../dark/templates/config_postProcessing.mako | 24 +++++++++++++++---- .../vue-components/name-pattern.mako | 20 +++++++++------- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/themes/dark/templates/config_postProcessing.mako b/themes/dark/templates/config_postProcessing.mako index 244f5bcfcf..7b4c729c6e 100644 --- a/themes/dark/templates/config_postProcessing.mako +++ b/themes/dark/templates/config_postProcessing.mako @@ -51,6 +51,22 @@ const startVue = () => { enabledAirByDate: false, animeNamingType: 3 }; + }, + methods: { + onChangePattern(pattern) { + const savePatternMap = new Map( + [ + ['sports', 'sportsPattern'], + ['airs by date', 'abdPattern'], + ['anime', 'animePattern'] + ] + ).get(pattern.type) + if (savePatternMap) { + this[savePatternMap] = pattern.pattern; + } else { + this.pattern = pattern.pattern; + } + } } }); }; @@ -289,16 +305,16 @@ const startVue = () => {
- + - + - + - +
diff --git a/themes/dark/templates/vue-components/name-pattern.mako b/themes/dark/templates/vue-components/name-pattern.mako index 00d4c30a6b..9d2961ed30 100644 --- a/themes/dark/templates/vue-components/name-pattern.mako +++ b/themes/dark/templates/vue-components/name-pattern.mako @@ -1,15 +1,15 @@ + diff --git a/themes-default/slim/src/components/helpers/search-template-pattern.vue b/themes-default/slim/src/components/helpers/search-template-pattern.vue new file mode 100644 index 0000000000..a15eb8efda --- /dev/null +++ b/themes-default/slim/src/components/helpers/search-template-pattern.vue @@ -0,0 +1,166 @@ + + + + diff --git a/themes-default/slim/src/store/modules/defaults.js b/themes-default/slim/src/store/modules/defaults.js index 584e1fbb31..5567f736cd 100644 --- a/themes-default/slim/src/store/modules/defaults.js +++ b/themes-default/slim/src/store/modules/defaults.js @@ -31,7 +31,9 @@ const state = { seasonFolders: null, sports: null, subtitlesEnabled: null, - airdateOffset: null + airdateOffset: null, + templates: null, + searchTemplates: [] }, countries: null, genres: [], diff --git a/themes/dark/assets/js/medusa-runtime.js b/themes/dark/assets/js/medusa-runtime.js index fa9eee4885..092c62f205 100644 --- a/themes/dark/assets/js/medusa-runtime.js +++ b/themes/dark/assets/js/medusa-runtime.js @@ -164,7 +164,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(f /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function($) {/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _utils_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/core */ \"./src/utils/core.js\");\n/* harmony import */ var _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./anidb-release-group-ui.vue */ \"./src/components/anidb-release-group-ui.vue\");\n/* harmony import */ var _backstretch_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./backstretch.vue */ \"./src/components/backstretch.vue\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'edit-show',\n components: {\n AnidbReleaseGroupUi: _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"AppLink\"],\n Backstretch: _backstretch_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n ConfigTemplate: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigTemplate\"],\n ConfigTextboxNumber: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigTextboxNumber\"],\n ConfigToggleSlider: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigToggleSlider\"],\n FileBrowser: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"FileBrowser\"],\n LanguageSelect: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"LanguageSelect\"],\n QualityChooser: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"QualityChooser\"],\n SelectList: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"SelectList\"]\n },\n\n metaInfo() {\n if (!this.show || !this.show.title) {\n return {\n title: 'Medusa'\n };\n }\n\n const {\n title\n } = this.show;\n return {\n title,\n titleTemplate: '%s | Medusa'\n };\n },\n\n props: {\n /**\n * Show indexer\n */\n showIndexer: {\n type: String\n },\n\n /**\n * Show id\n */\n showId: {\n type: Number\n }\n },\n\n data() {\n return {\n saving: false,\n loadError: null\n };\n },\n\n computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapState\"])({\n indexers: state => state.indexers,\n layout: state => state.layout,\n episodeStatuses: state => state.consts.statuses\n }), {}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapGetters\"])({\n show: 'getCurrentShow',\n getStatus: 'getStatus'\n }), {\n indexer() {\n return this.showIndexer || this.$route.query.indexername;\n },\n\n id() {\n return this.showId || Number(this.$route.query.seriesid) || undefined;\n },\n\n showLoaded() {\n return Boolean(this.show.id.slug);\n },\n\n defaultEpisodeStatusOptions() {\n if (this.episodeStatuses.length === 0) {\n return [];\n } // Get status objects, in this order\n\n\n return ['wanted', 'skipped', 'ignored'].map(key => this.getStatus({\n key\n }));\n },\n\n availableLanguages() {\n if (this.indexers.main.validLanguages) {\n return this.indexers.main.validLanguages.join(',');\n }\n\n return '';\n },\n\n combinedQualities() {\n const {\n allowed,\n preferred\n } = this.show.config.qualities;\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"combineQualities\"])(allowed, preferred);\n },\n\n saveButton() {\n return this.saving === false ? 'Save Changes' : 'Saving...';\n },\n\n globalIgnored() {\n return this.$store.state.search.filters.ignored.map(x => x.toLowerCase());\n },\n\n globalRequired() {\n return this.$store.state.search.filters.required.map(x => x.toLowerCase());\n },\n\n effectiveIgnored() {\n const {\n globalIgnored\n } = this;\n const showIgnored = this.show.config.release.ignoredWords.map(x => x.toLowerCase());\n\n if (this.show.config.release.ignoredWordsExclude) {\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayExclude\"])(globalIgnored, showIgnored);\n }\n\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayUnique\"])(globalIgnored.concat(showIgnored));\n },\n\n effectiveRequired() {\n const {\n globalRequired\n } = this;\n const showRequired = this.show.config.release.requiredWords.map(x => x.toLowerCase());\n\n if (this.show.config.release.requiredWordsExclude) {\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayExclude\"])(globalRequired, showRequired);\n }\n\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayUnique\"])(globalRequired.concat(showRequired));\n }\n\n }),\n\n created() {\n this.loadShow();\n },\n\n updated() {\n $('#config-components').tabs();\n },\n\n methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapActions\"])(['getShow', 'setShow']), {\n async loadShow(params) {\n const {\n $store,\n id,\n indexer,\n getShow\n } = params || this; // Let's tell the store which show we currently want as current.\n\n $store.commit('currentShow', {\n indexer,\n id\n });\n\n try {\n this.loadError = null;\n await getShow({\n indexer,\n id,\n detailed: false\n });\n } catch (error) {\n const {\n data\n } = error.response;\n\n if (data && data.error) {\n this.loadError = data.error;\n } else {\n this.loadError = String(error);\n }\n }\n },\n\n async saveShow(subject) {\n const {\n show,\n showLoaded\n } = this; // We want to wait until the page has been fully loaded, before starting to save stuff.\n\n if (!showLoaded) {\n return;\n }\n\n if (!['show', 'all'].includes(subject)) {\n return;\n } // Disable the save button until we're done.\n\n\n this.saving = true;\n const showConfig = show.config;\n const data = {\n config: {\n aliases: showConfig.aliases,\n defaultEpisodeStatus: showConfig.defaultEpisodeStatus,\n dvdOrder: showConfig.dvdOrder,\n seasonFolders: showConfig.seasonFolders,\n anime: showConfig.anime,\n scene: showConfig.scene,\n sports: showConfig.sports,\n paused: showConfig.paused,\n location: showConfig.location,\n airByDate: showConfig.airByDate,\n subtitlesEnabled: showConfig.subtitlesEnabled,\n release: {\n requiredWords: showConfig.release.requiredWords,\n ignoredWords: showConfig.release.ignoredWords,\n requiredWordsExclude: showConfig.release.requiredWordsExclude,\n ignoredWordsExclude: showConfig.release.ignoredWordsExclude\n },\n qualities: {\n preferred: showConfig.qualities.preferred,\n allowed: showConfig.qualities.allowed\n },\n airdateOffset: showConfig.airdateOffset\n },\n language: show.language\n };\n\n if (data.config.anime) {\n data.config.release.blacklist = showConfig.release.blacklist;\n data.config.release.whitelist = showConfig.release.whitelist;\n }\n\n const {\n indexer,\n id,\n setShow\n } = this;\n\n try {\n await setShow({\n indexer,\n id,\n data\n });\n this.$snotify.success('You may need to \"Re-scan files\" or \"Force Full Update\".', 'Saved', {\n timeout: 5000\n });\n } catch (error) {\n this.$snotify.error(\"Error while trying to save \".concat(this.show.title, \": \").concat(error.message || 'Unknown'), 'Error');\n } finally {\n // Re-enable the save button.\n this.saving = false;\n }\n },\n\n onChangeIgnoredWords(items) {\n this.show.config.release.ignoredWords = items.map(item => item.value);\n },\n\n onChangeRequiredWords(items) {\n this.show.config.release.requiredWords = items.map(item => item.value);\n },\n\n onChangeAliases(items) {\n this.show.config.aliases = items.map(item => item.value);\n },\n\n onChangeReleaseGroupsAnime(groupNames) {\n this.show.config.release.whitelist = groupNames.whitelist;\n this.show.config.release.blacklist = groupNames.blacklist;\n },\n\n updateLanguage(value) {\n this.show.language = value;\n }\n\n })\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./src/components/edit-show.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function($) {/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _utils_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/core */ \"./src/utils/core.js\");\n/* harmony import */ var _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./anidb-release-group-ui.vue */ \"./src/components/anidb-release-group-ui.vue\");\n/* harmony import */ var _backstretch_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./backstretch.vue */ \"./src/components/backstretch.vue\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'edit-show',\n components: {\n AnidbReleaseGroupUi: _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"AppLink\"],\n Backstretch: _backstretch_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n ConfigTemplate: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigTemplate\"],\n ConfigTextboxNumber: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigTextboxNumber\"],\n ConfigToggleSlider: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigToggleSlider\"],\n FileBrowser: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"FileBrowser\"],\n LanguageSelect: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"LanguageSelect\"],\n QualityChooser: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"QualityChooser\"],\n SearchTemplateContainer: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"SearchTemplateContainer\"],\n SelectList: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"SelectList\"]\n },\n\n metaInfo() {\n if (!this.show || !this.show.title) {\n return {\n title: 'Medusa'\n };\n }\n\n const {\n title\n } = this.show;\n return {\n title,\n titleTemplate: '%s | Medusa'\n };\n },\n\n props: {\n /**\n * Show indexer\n */\n showIndexer: {\n type: String\n },\n\n /**\n * Show id\n */\n showId: {\n type: Number\n }\n },\n\n data() {\n return {\n saving: false,\n loadError: null\n };\n },\n\n computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapState\"])({\n indexers: state => state.indexers,\n layout: state => state.layout,\n episodeStatuses: state => state.consts.statuses\n }), {}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapGetters\"])({\n show: 'getCurrentShow',\n getStatus: 'getStatus'\n }), {\n indexer() {\n return this.showIndexer || this.$route.query.indexername;\n },\n\n id() {\n return this.showId || Number(this.$route.query.seriesid) || undefined;\n },\n\n showLoaded() {\n return Boolean(this.show.id.slug);\n },\n\n defaultEpisodeStatusOptions() {\n if (this.episodeStatuses.length === 0) {\n return [];\n } // Get status objects, in this order\n\n\n return ['wanted', 'skipped', 'ignored'].map(key => this.getStatus({\n key\n }));\n },\n\n availableLanguages() {\n if (this.indexers.main.validLanguages) {\n return this.indexers.main.validLanguages.join(',');\n }\n\n return '';\n },\n\n combinedQualities() {\n const {\n allowed,\n preferred\n } = this.show.config.qualities;\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"combineQualities\"])(allowed, preferred);\n },\n\n saveButton() {\n return this.saving === false ? 'Save Changes' : 'Saving...';\n },\n\n globalIgnored() {\n return this.$store.state.search.filters.ignored.map(x => x.toLowerCase());\n },\n\n globalRequired() {\n return this.$store.state.search.filters.required.map(x => x.toLowerCase());\n },\n\n effectiveIgnored() {\n const {\n globalIgnored\n } = this;\n const showIgnored = this.show.config.release.ignoredWords.map(x => x.toLowerCase());\n\n if (this.show.config.release.ignoredWordsExclude) {\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayExclude\"])(globalIgnored, showIgnored);\n }\n\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayUnique\"])(globalIgnored.concat(showIgnored));\n },\n\n effectiveRequired() {\n const {\n globalRequired\n } = this;\n const showRequired = this.show.config.release.requiredWords.map(x => x.toLowerCase());\n\n if (this.show.config.release.requiredWordsExclude) {\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayExclude\"])(globalRequired, showRequired);\n }\n\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayUnique\"])(globalRequired.concat(showRequired));\n },\n\n selectedFormat() {\n const {\n show\n } = this;\n const {\n config\n } = show;\n return ['anime', 'sports', 'airByDate'].find(item => config[item]);\n }\n\n }),\n\n created() {\n this.loadShow();\n },\n\n updated() {\n $('#config-components').tabs();\n },\n\n methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapActions\"])(['getShow', 'setShow']), {\n async loadShow(params) {\n const {\n $store,\n id,\n indexer,\n getShow\n } = params || this; // Let's tell the store which show we currently want as current.\n\n $store.commit('currentShow', {\n indexer,\n id\n });\n\n try {\n this.loadError = null;\n await getShow({\n indexer,\n id,\n detailed: false\n });\n } catch (error) {\n const {\n data\n } = error.response;\n\n if (data && data.error) {\n this.loadError = data.error;\n } else {\n this.loadError = String(error);\n }\n }\n },\n\n async saveShow(subject) {\n const {\n show,\n showLoaded\n } = this; // We want to wait until the page has been fully loaded, before starting to save stuff.\n\n if (!showLoaded) {\n return;\n }\n\n if (!['show', 'all'].includes(subject)) {\n return;\n } // Disable the save button until we're done.\n\n\n this.saving = true;\n const showConfig = show.config;\n const data = {\n config: {\n aliases: showConfig.aliases,\n defaultEpisodeStatus: showConfig.defaultEpisodeStatus,\n dvdOrder: showConfig.dvdOrder,\n seasonFolders: showConfig.seasonFolders,\n anime: showConfig.anime,\n scene: showConfig.scene,\n sports: showConfig.sports,\n paused: showConfig.paused,\n location: showConfig.location,\n airByDate: showConfig.airByDate,\n subtitlesEnabled: showConfig.subtitlesEnabled,\n release: {\n requiredWords: showConfig.release.requiredWords,\n ignoredWords: showConfig.release.ignoredWords,\n requiredWordsExclude: showConfig.release.requiredWordsExclude,\n ignoredWordsExclude: showConfig.release.ignoredWordsExclude\n },\n qualities: {\n preferred: showConfig.qualities.preferred,\n allowed: showConfig.qualities.allowed\n },\n airdateOffset: showConfig.airdateOffset,\n templates: showConfig.templates,\n searchTemplates: showConfig.searchTemplates\n },\n language: show.language\n };\n\n if (data.config.anime) {\n data.config.release.blacklist = showConfig.release.blacklist;\n data.config.release.whitelist = showConfig.release.whitelist;\n }\n\n const {\n indexer,\n id,\n setShow\n } = this;\n\n try {\n await setShow({\n indexer,\n id,\n data\n });\n this.$snotify.success('You may need to \"Re-scan files\" or \"Force Full Update\".', 'Saved', {\n timeout: 5000\n });\n } catch (error) {\n this.$snotify.error(\"Error while trying to save \".concat(this.show.title, \": \").concat(error.message || 'Unknown'), 'Error');\n } finally {\n // Re-enable the save button.\n this.saving = false;\n }\n },\n\n onChangeIgnoredWords(items) {\n this.show.config.release.ignoredWords = items.map(item => item.value);\n },\n\n onChangeRequiredWords(items) {\n this.show.config.release.requiredWords = items.map(item => item.value);\n },\n\n onChangeAliases(items) {\n this.show.config.aliases = items.map(item => item.value);\n },\n\n onChangeReleaseGroupsAnime(groupNames) {\n this.show.config.release.whitelist = groupNames.whitelist;\n this.show.config.release.blacklist = groupNames.blacklist;\n },\n\n updateLanguage(value) {\n this.show.language = value;\n },\n\n changeFormat(value, el) {\n this.show.config[el.id] = value;\n\n if (value) {\n ['anime', 'sports', 'airByDate'].filter(item => item !== el.id).forEach(value => {\n this.show.config[value] = false;\n });\n }\n }\n\n })\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./src/components/edit-show.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -236,7 +236,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n/ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-js-toggle-button */ \"./node_modules/vue-js-toggle-button/dist/index.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'config-toggle-slider',\n components: {\n ToggleButton: vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0__[\"ToggleButton\"]\n },\n props: {\n label: {\n type: String,\n required: true\n },\n id: {\n type: String,\n required: true\n },\n value: {\n type: Boolean,\n default: null\n },\n disabled: {\n type: Boolean,\n default: false\n },\n explanations: {\n type: Array,\n default: () => []\n }\n },\n\n data() {\n return {\n localChecked: null\n };\n },\n\n mounted() {\n const {\n value\n } = this;\n this.localChecked = value;\n },\n\n watch: {\n value() {\n const {\n value\n } = this;\n this.localChecked = value;\n }\n\n },\n methods: {\n updateValue() {\n const {\n localChecked\n } = this;\n this.$emit('input', localChecked);\n }\n\n }\n});\n\n//# sourceURL=webpack:///./src/components/helpers/config-toggle-slider.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-js-toggle-button */ \"./node_modules/vue-js-toggle-button/dist/index.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'config-toggle-slider',\n components: {\n ToggleButton: vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0__[\"ToggleButton\"]\n },\n props: {\n label: {\n type: String,\n required: true\n },\n id: {\n type: String,\n required: true\n },\n value: {\n type: Boolean,\n default: null\n },\n disabled: {\n type: Boolean,\n default: false\n },\n explanations: {\n type: Array,\n default: () => []\n }\n },\n\n data() {\n return {\n localChecked: null\n };\n },\n\n mounted() {\n const {\n value\n } = this;\n this.localChecked = value;\n },\n\n watch: {\n value() {\n const {\n value\n } = this;\n this.localChecked = value;\n }\n\n },\n methods: {\n updateValue() {\n const {\n localChecked\n } = this;\n this.$emit('input', localChecked, this);\n }\n\n }\n});\n\n//# sourceURL=webpack:///./src/components/helpers/config-toggle-slider.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -324,6 +324,30 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(f /***/ }), +/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-container.vue?vue&type=script&lang=js&": +/*!*************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/helpers/search-template-container.vue?vue&type=script&lang=js& ***! + \*************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! date-fns/format */ \"./node_modules/date-fns/esm/format/index.js\");\n/* harmony import */ var _search_template_pattern__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./search-template-pattern */ \"./src/components/helpers/search-template-pattern.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'search-template-container',\n components: {\n SearchTemplatePattern: _search_template_pattern__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n props: {\n /**\n * Provide the custom naming type. -Like sports, anime, air by date- description.\n * If none provided we asume this is the default episode naming component.\n * And that means there will be no checkbox available to enable/disable it.\n */\n format: {\n type: String,\n default: ''\n },\n templates: {\n type: Array,\n default: () => []\n }\n },\n\n data() {\n return {\n searchTemplates: [],\n showFormat: ''\n };\n },\n\n methods: {\n getDateFormat(format) {\n return Object(date_fns_format__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(new Date(), format);\n },\n\n update() {\n const {\n templates,\n format\n } = this;\n this.$nextTick(() => {\n this.$emit('change', {\n templates,\n format\n });\n });\n }\n\n },\n\n mounted() {\n const {\n format,\n templates\n } = this;\n this.searchTemplates = templates;\n this.showFormat = format;\n },\n\n watch: {\n templates(newTemplates, oldtemplates) {\n this.searchTemplates = newTemplates;\n },\n\n format(newFormat) {\n this.showFormat = newFormat;\n }\n\n }\n});\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-container.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-pattern.vue?vue&type=script&lang=js&": +/*!***********************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/helpers/search-template-pattern.vue?vue&type=script&lang=js& ***! + \***********************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function($) {/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! date-fns/format */ \"./node_modules/date-fns/esm/format/index.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../api */ \"./src/api.js\");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'search-template-pattern',\n props: {\n /**\n * Provide the custom naming type. -Like sports, anime, air by date- description.\n * If none provided we asume this is the default episode naming component.\n * And that means there will be no checkbox available to enable/disable it.\n */\n format: {\n type: String,\n default: ''\n },\n template: {\n type: Object\n }\n },\n\n data() {\n return {\n showFormat: null,\n searchTemplate: '',\n searchTemplateExample: ''\n };\n },\n\n methods: {\n getDateFormat(format) {\n return Object(date_fns_format__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(new Date(), format);\n },\n\n testNaming(template) {\n const {\n showFormat\n } = this;\n console.debug(\"Test pattern \".concat(template.template));\n let params = {\n pattern: template.template\n };\n const formatMap = new Map([['anime', {\n 'anime_type': 3\n }], ['sports', {\n sports: true\n }], ['airByDate', {\n abd: true\n }]]);\n\n if (showFormat !== '') {\n params = _objectSpread({}, params, {}, formatMap.get(showFormat));\n }\n\n try {\n return _api__WEBPACK_IMPORTED_MODULE_2__[\"apiRoute\"].get('config/postProcessing/testNaming', {\n params,\n timeout: 20000\n }).then(res => res.data);\n } catch (error) {\n console.warn(error);\n return '';\n }\n },\n\n updateExample() {\n const {\n searchTemplate,\n showFormat\n } = this; // Update single\n\n this.testNaming(searchTemplate, false, this.showFormat).then(result => {\n this.searchTemplateExample = result;\n }); // Test naming\n\n this.checkNaming(searchTemplate, false, showFormat);\n },\n\n update() {\n this.$nextTick(() => {\n this.$emit('change', {\n template: this.searchTemplate,\n format: this.showFormat\n });\n });\n },\n\n checkNaming(pattern) {\n if (!pattern) {\n return;\n }\n\n const params = {\n pattern\n };\n const {\n $el\n } = this;\n const el = $($el); // apiRoute.get('config/postProcessing/isNamingValid', { params, timeout: 20000 }).then(result => {\n // if (result.data === 'invalid') {\n // el.find('#naming_pattern').qtip('option', {\n // 'content.text': 'This pattern is invalid.',\n // 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n // });\n // el.find('#naming_pattern').qtip('toggle', true);\n // el.find('#naming_pattern').css('background-color', '#FFDDDD');\n // } else if (result.data === 'seasonfolders') {\n // el.find('#naming_pattern').qtip('option', {\n // 'content.text': 'This pattern would be invalid without the folders, using it will force \"Flatten\" off for all shows.',\n // 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n // });\n // el.find('#naming_pattern').qtip('toggle', true);\n // el.find('#naming_pattern').css('background-color', '#FFFFDD');\n // } else {\n // el.find('#naming_pattern').qtip('option', {\n // 'content.text': 'This pattern is valid.',\n // 'style.classes': 'qtip-rounded qtip-shadow qtip-green'\n // });\n // el.find('#naming_pattern').qtip('toggle', false);\n // el.find('#naming_pattern').css('background-color', '#FFFFFF');\n // }\n // }).catch(error => {\n // console.warn(error);\n // });\n } // updateCustomName() {\n // // Store the custom naming pattern.\n // if (!this.presetsPatterns.includes(this.pattern)) {\n // this.customName = this.pattern;\n // }\n // // If the custom name is empty, let's use the last selected pattern.\n // // We'd prefer to cache the last configured custom pattern.\n // if (!this.customName) {\n // this.customName = this.lastSelectedPattern;\n // }\n // }\n\n\n },\n\n mounted() {\n const {\n format,\n template\n } = this;\n this.searchTemplate = template;\n this.showFormat = format; // Update the pattern example\n\n this.updateExample();\n },\n\n watch: {\n template(newTemplate, oldTemplate) {\n this.searchTemplate = newTemplate;\n this.updateExample();\n }\n\n }\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-pattern.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/select-list.vue?vue&type=script&lang=js&": /*!***********************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/helpers/select-list.vue?vue&type=script&lang=js& ***! @@ -933,7 +957,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"config-content\" } },\n [\n _vm.showLoaded\n ? _c(\"backstretch\", { attrs: { slug: _vm.show.id.slug } })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showLoaded\n ? _c(\n \"h1\",\n { staticClass: \"header\" },\n [\n _vm._v(\"\\n Edit Show - \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"home/displayShow?indexername=\" +\n _vm.indexer +\n \"&seriesid=\" +\n _vm.id\n }\n },\n [_vm._v(_vm._s(_vm.show.title))]\n )\n ],\n 1\n )\n : _c(\n \"h1\",\n { staticClass: \"header\" },\n [\n _vm._v(\"\\n Edit Show\"),\n !_vm.loadError ? [_vm._v(\" (Loading...)\")] : _vm._e()\n ],\n 2\n ),\n _vm._v(\" \"),\n _vm.loadError\n ? _c(\"h3\", [_vm._v(\"Error loading show: \" + _vm._s(_vm.loadError))])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showLoaded\n ? _c(\n \"div\",\n {\n class: { summaryFanArt: _vm.layout.fanartBackground },\n attrs: { id: \"config\" }\n },\n [\n _c(\n \"form\",\n {\n staticClass: \"form-horizontal\",\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.saveShow(\"all\")\n }\n }\n },\n [\n _c(\"div\", { attrs: { id: \"config-components\" } }, [\n _c(\"ul\", [\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group1\" } },\n [_vm._v(\"Main\")]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group2\" } },\n [_vm._v(\"Format\")]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group3\" } },\n [_vm._v(\"Advanced\")]\n )\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group1\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Main Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"location\",\n label: \"Show Location\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n name: \"location\",\n title: \"Select Show Location\",\n \"initial-dir\": _vm.show.config.location\n },\n on: {\n update: function($event) {\n _vm.show.config.location = $event\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"qualityPreset\",\n label: \"Quality\"\n }\n },\n [\n _c(\"quality-chooser\", {\n attrs: {\n \"overall-quality\": _vm.combinedQualities,\n \"show-slug\": _vm.show.id.slug\n },\n on: {\n \"update:quality:allowed\": function($event) {\n _vm.show.config.qualities.allowed = $event\n },\n \"update:quality:preferred\": function(\n $event\n ) {\n _vm.show.config.qualities.preferred = $event\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"defaultEpStatusSelect\",\n label: \"Default Episode Status\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.show.config.defaultEpisodeStatus,\n expression:\n \"show.config.defaultEpisodeStatus\"\n }\n ],\n staticClass:\n \"form-control form-control-inline input-sm\",\n attrs: {\n name: \"defaultEpStatus\",\n id: \"defaultEpStatusSelect\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.show.config,\n \"defaultEpisodeStatus\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(\n _vm.defaultEpisodeStatusOptions,\n function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.name }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(option.name) +\n \"\\n \"\n )\n ]\n )\n }\n ),\n 0\n ),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"This will set the status for future episodes.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"indexerLangSelect\",\n label: \"Info Language\"\n }\n },\n [\n _c(\"language-select\", {\n staticClass:\n \"form-control form-control-inline input-sm\",\n attrs: {\n id: \"indexerLangSelect\",\n language: _vm.show.language,\n available: _vm.availableLanguages,\n name: \"indexer_lang\"\n },\n on: { \"update-language\": _vm.updateLanguage }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n \"This only applies to episode filenames and the contents of metadata files.\"\n )\n ])\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Subtitles\", id: \"subtitles\" },\n model: {\n value: _vm.show.config.subtitlesEnabled,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"subtitlesEnabled\",\n $$v\n )\n },\n expression: \"show.config.subtitlesEnabled\"\n }\n },\n [_c(\"span\", [_vm._v(\"search for subtitles\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Paused\", id: \"paused\" },\n model: {\n value: _vm.show.config.paused,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"paused\", $$v)\n },\n expression: \"show.config.paused\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"pause this show (Medusa will not download episodes)\"\n )\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group2\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Format Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Air by date\",\n id: \"air_by_date\"\n },\n model: {\n value: _vm.show.config.airByDate,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"airByDate\", $$v)\n },\n expression: \"show.config.airByDate\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"check if the show is released as Show.03.02.2010 rather than Show.S02E03\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"p\",\n { staticStyle: { color: \"rgb(255, 0, 0)\" } },\n [\n _vm._v(\n \"In case of an air date conflict between regular and special episodes, the later will be ignored.\"\n )\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Anime\", id: \"anime\" },\n model: {\n value: _vm.show.config.anime,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"anime\", $$v)\n },\n expression: \"show.config.anime\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"enable if the show is Anime and episodes are released as Show.265 rather than Show.S02E03\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.show.config.anime\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"anidbReleaseGroup\",\n label: \"Release Groups\"\n }\n },\n [\n _vm.show.title\n ? _c(\"anidb-release-group-ui\", {\n staticClass: \"max-width\",\n attrs: {\n \"show-name\": _vm.show.title,\n blacklist:\n _vm.show.config.release.blacklist,\n whitelist:\n _vm.show.config.release.whitelist\n },\n on: {\n change:\n _vm.onChangeReleaseGroupsAnime\n }\n })\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Sports\", id: \"sports\" },\n model: {\n value: _vm.show.config.sports,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"sports\", $$v)\n },\n expression: \"show.config.sports\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"enable if the show is a sporting or MMA event released as Show.03.02.2010 rather than Show.S02E03\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"p\",\n { staticStyle: { color: \"rgb(255, 0, 0)\" } },\n [\n _vm._v(\n \"In case of an air date conflict between regular and special episodes, the later will be ignored.\"\n )\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Season\",\n id: \"season_folders\"\n },\n model: {\n value: _vm.show.config.seasonFolders,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"seasonFolders\",\n $$v\n )\n },\n expression: \"show.config.seasonFolders\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"group episodes by season folder (disable to store in a single folder)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Scene Numbering\",\n id: \"scene_numbering\"\n },\n model: {\n value: _vm.show.config.scene,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"scene\", $$v)\n },\n expression: \"show.config.scene\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"search by scene numbering (disable to search by indexer numbering)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"DVD Order\", id: \"dvd_order\" },\n model: {\n value: _vm.show.config.dvdOrder,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"dvdOrder\", $$v)\n },\n expression: \"show.config.dvdOrder\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"use the DVD order instead of the air order\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n 'A \"Force Full Update\" is necessary, and if you have existing episodes you need to sort them manually.'\n )\n ])\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group3\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Advanced Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"rls_ignore_words\",\n label: \"Ignored words\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\":\n _vm.show.config.release.ignoredWords\n },\n on: { change: _vm.onChangeIgnoredWords }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n \"Search results with one or more words from this list will be ignored.\"\n )\n ])\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Exclude ignored words\",\n id: \"ignored_words_exclude\"\n },\n model: {\n value:\n _vm.show.config.release.ignoredWordsExclude,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config.release,\n \"ignoredWordsExclude\",\n $$v\n )\n },\n expression:\n \"show.config.release.ignoredWordsExclude\"\n }\n },\n [\n _c(\"div\", [\n _vm._v(\n \"Use the Ignored Words list to exclude these from the global ignored list\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Currently the effective list is: \" +\n _vm._s(_vm.effectiveIgnored)\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"rls_require_words\",\n label: \"Required words\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\":\n _vm.show.config.release.requiredWords\n },\n on: { change: _vm.onChangeRequiredWords }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Search results with no words from this list will be ignored.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Exclude required words\",\n id: \"required_words_exclude\"\n },\n model: {\n value:\n _vm.show.config.release\n .requiredWordsExclude,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config.release,\n \"requiredWordsExclude\",\n $$v\n )\n },\n expression:\n \"show.config.release.requiredWordsExclude\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Use the Required Words list to exclude these from the global required words list\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Currently the effective list is: \" +\n _vm._s(_vm.effectiveRequired)\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"SceneName\",\n label: \"Scene Exception\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\": _vm.show.config.aliases\n },\n on: { change: _vm.onChangeAliases }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"This will affect episode search on NZB and torrent providers. This list appends to the original show name.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"config-textbox-number\", {\n attrs: {\n min: -168,\n max: 168,\n step: 1,\n label: \"Airdate offset\",\n id: \"airdate_offset\",\n explanations: [\n \"Amount of hours we want to start searching early (-1) or late (1) for new episodes.\",\n \"This only applies to daily searches.\"\n ]\n },\n model: {\n value: _vm.show.config.airdateOffset,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"airdateOffset\",\n $$v\n )\n },\n expression: \"show.config.airdateOffset\"\n }\n })\n ],\n 1\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa pull-left button\",\n attrs: {\n id: \"submit\",\n type: \"submit\",\n disabled: _vm.saving || !_vm.showLoaded\n },\n domProps: { value: _vm.saveButton }\n })\n ]\n )\n ]\n )\n : _vm._e()\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/edit-show.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"config-content\" } },\n [\n _vm.showLoaded\n ? _c(\"backstretch\", { attrs: { slug: _vm.show.id.slug } })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showLoaded\n ? _c(\n \"h1\",\n { staticClass: \"header\" },\n [\n _vm._v(\"\\n Edit Show - \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"home/displayShow?indexername=\" +\n _vm.indexer +\n \"&seriesid=\" +\n _vm.id\n }\n },\n [_vm._v(_vm._s(_vm.show.title))]\n )\n ],\n 1\n )\n : _c(\n \"h1\",\n { staticClass: \"header\" },\n [\n _vm._v(\"\\n Edit Show\"),\n !_vm.loadError ? [_vm._v(\" (Loading...)\")] : _vm._e()\n ],\n 2\n ),\n _vm._v(\" \"),\n _vm.loadError\n ? _c(\"h3\", [_vm._v(\"Error loading show: \" + _vm._s(_vm.loadError))])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showLoaded\n ? _c(\n \"div\",\n {\n class: { summaryFanArt: _vm.layout.fanartBackground },\n attrs: { id: \"config\" }\n },\n [\n _c(\n \"form\",\n {\n staticClass: \"form-horizontal\",\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.saveShow(\"all\")\n }\n }\n },\n [\n _c(\"div\", { attrs: { id: \"config-components\" } }, [\n _c(\"ul\", [\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group1\" } },\n [_vm._v(\"Main\")]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group2\" } },\n [_vm._v(\"Format\")]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group3\" } },\n [_vm._v(\"Advanced\")]\n )\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group1\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Main Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"location\",\n label: \"Show Location\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n name: \"location\",\n title: \"Select Show Location\",\n \"initial-dir\": _vm.show.config.location\n },\n on: {\n update: function($event) {\n _vm.show.config.location = $event\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"qualityPreset\",\n label: \"Quality\"\n }\n },\n [\n _c(\"quality-chooser\", {\n attrs: {\n \"overall-quality\": _vm.combinedQualities,\n \"show-slug\": _vm.show.id.slug\n },\n on: {\n \"update:quality:allowed\": function($event) {\n _vm.show.config.qualities.allowed = $event\n },\n \"update:quality:preferred\": function(\n $event\n ) {\n _vm.show.config.qualities.preferred = $event\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"defaultEpStatusSelect\",\n label: \"Default Episode Status\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.show.config.defaultEpisodeStatus,\n expression:\n \"show.config.defaultEpisodeStatus\"\n }\n ],\n staticClass:\n \"form-control form-control-inline input-sm\",\n attrs: {\n name: \"defaultEpStatus\",\n id: \"defaultEpStatusSelect\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.show.config,\n \"defaultEpisodeStatus\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(\n _vm.defaultEpisodeStatusOptions,\n function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.name }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(option.name) +\n \"\\n \"\n )\n ]\n )\n }\n ),\n 0\n ),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"This will set the status for future episodes.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"indexerLangSelect\",\n label: \"Info Language\"\n }\n },\n [\n _c(\"language-select\", {\n staticClass:\n \"form-control form-control-inline input-sm\",\n attrs: {\n id: \"indexerLangSelect\",\n language: _vm.show.language,\n available: _vm.availableLanguages,\n name: \"indexer_lang\"\n },\n on: { \"update-language\": _vm.updateLanguage }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n \"This only applies to episode filenames and the contents of metadata files.\"\n )\n ])\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Subtitles\", id: \"subtitles\" },\n model: {\n value: _vm.show.config.subtitlesEnabled,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"subtitlesEnabled\",\n $$v\n )\n },\n expression: \"show.config.subtitlesEnabled\"\n }\n },\n [_c(\"span\", [_vm._v(\"search for subtitles\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Paused\", id: \"paused\" },\n model: {\n value: _vm.show.config.paused,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"paused\", $$v)\n },\n expression: \"show.config.paused\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"pause this show (Medusa will not download episodes)\"\n )\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group2\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Format Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n value: _vm.show.config.airByDate,\n label: \"Air by date\",\n id: \"airByDate\"\n },\n on: { input: _vm.changeFormat }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"check if the show is released as Show.03.02.2010 rather than Show.S02E03\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"p\",\n { staticStyle: { color: \"rgb(255, 0, 0)\" } },\n [\n _vm._v(\n \"In case of an air date conflict between regular and special episodes, the later will be ignored.\"\n )\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n value: _vm.show.config.anime,\n label: \"Anime\",\n id: \"anime\"\n },\n on: { input: _vm.changeFormat }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"enable if the show is Anime and episodes are released as Show.265 rather than Show.S02E03\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.show.config.anime\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"anidbReleaseGroup\",\n label: \"Release Groups\"\n }\n },\n [\n _vm.show.title\n ? _c(\"anidb-release-group-ui\", {\n staticClass: \"max-width\",\n attrs: {\n \"show-name\": _vm.show.title,\n blacklist:\n _vm.show.config.release.blacklist,\n whitelist:\n _vm.show.config.release.whitelist\n },\n on: {\n change:\n _vm.onChangeReleaseGroupsAnime\n }\n })\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n value: _vm.show.config.sports,\n label: \"Sports\",\n id: \"sports\"\n },\n on: { input: _vm.changeFormat }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"enable if the show is a sporting or MMA event released as Show.03.02.2010 rather than Show.S02E03\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"p\",\n { staticStyle: { color: \"rgb(255, 0, 0)\" } },\n [\n _vm._v(\n \"In case of an air date conflict between regular and special episodes, the later will be ignored.\"\n )\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Search templates\",\n id: \"templates\"\n },\n model: {\n value: _vm.show.config.templates,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"templates\", $$v)\n },\n expression: \"show.config.templates\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\"enable advanced search templates\"),\n _vm.selectedFormat\n ? _c(\"span\", [\n _vm._v(\n \" in addition to the selected chosen format \"\n ),\n _c(\"strong\", [\n _vm._v(_vm._s(_vm.selectedFormat))\n ])\n ])\n : _vm._e()\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.show.config.templates\n ? _c(\"search-template-container\", {\n attrs: {\n format: _vm.selectedFormat,\n templates: _vm.show.config.searchTemplates\n }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Season\",\n id: \"season_folders\"\n },\n model: {\n value: _vm.show.config.seasonFolders,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"seasonFolders\",\n $$v\n )\n },\n expression: \"show.config.seasonFolders\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"group episodes by season folder (disable to store in a single folder)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Scene Numbering\",\n id: \"scene_numbering\"\n },\n model: {\n value: _vm.show.config.scene,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"scene\", $$v)\n },\n expression: \"show.config.scene\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"search by scene numbering (disable to search by indexer numbering)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"DVD Order\", id: \"dvd_order\" },\n model: {\n value: _vm.show.config.dvdOrder,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"dvdOrder\", $$v)\n },\n expression: \"show.config.dvdOrder\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"use the DVD order instead of the air order\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n 'A \"Force Full Update\" is necessary, and if you have existing episodes you need to sort them manually.'\n )\n ])\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group3\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Advanced Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"rls_ignore_words\",\n label: \"Ignored words\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\":\n _vm.show.config.release.ignoredWords\n },\n on: { change: _vm.onChangeIgnoredWords }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n \"Search results with one or more words from this list will be ignored.\"\n )\n ])\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Exclude ignored words\",\n id: \"ignored_words_exclude\"\n },\n model: {\n value:\n _vm.show.config.release.ignoredWordsExclude,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config.release,\n \"ignoredWordsExclude\",\n $$v\n )\n },\n expression:\n \"show.config.release.ignoredWordsExclude\"\n }\n },\n [\n _c(\"div\", [\n _vm._v(\n \"Use the Ignored Words list to exclude these from the global ignored list\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Currently the effective list is: \" +\n _vm._s(_vm.effectiveIgnored)\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"rls_require_words\",\n label: \"Required words\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\":\n _vm.show.config.release.requiredWords\n },\n on: { change: _vm.onChangeRequiredWords }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Search results with no words from this list will be ignored.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Exclude required words\",\n id: \"required_words_exclude\"\n },\n model: {\n value:\n _vm.show.config.release\n .requiredWordsExclude,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config.release,\n \"requiredWordsExclude\",\n $$v\n )\n },\n expression:\n \"show.config.release.requiredWordsExclude\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Use the Required Words list to exclude these from the global required words list\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Currently the effective list is: \" +\n _vm._s(_vm.effectiveRequired)\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"SceneName\",\n label: \"Scene Exception\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\": _vm.show.config.aliases\n },\n on: { change: _vm.onChangeAliases }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"This will affect episode search on NZB and torrent providers. This list appends to the original show name.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"config-textbox-number\", {\n attrs: {\n min: -168,\n max: 168,\n step: 1,\n label: \"Airdate offset\",\n id: \"airdate_offset\",\n explanations: [\n \"Amount of hours we want to start searching early (-1) or late (1) for new episodes.\",\n \"This only applies to daily searches.\"\n ]\n },\n model: {\n value: _vm.show.config.airdateOffset,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"airdateOffset\",\n $$v\n )\n },\n expression: \"show.config.airdateOffset\"\n }\n })\n ],\n 1\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa pull-left button\",\n attrs: {\n id: \"submit\",\n type: \"submit\",\n disabled: _vm.saving || !_vm.showLoaded\n },\n domProps: { value: _vm.saveButton }\n })\n ]\n )\n ]\n )\n : _vm._e()\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/edit-show.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -1093,6 +1117,30 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ }), +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-container.vue?vue&type=template&id=25fc53c9&": +/*!***************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/helpers/search-template-container.vue?vue&type=template&id=25fc53c9& ***! + \***************************************************************************************************************************************************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"search-template-container\" } },\n [\n _vm._l(_vm.templates, function(template) {\n return _c(\n \"search-template-pattern\",\n _vm._b(\n { key: template.template },\n \"search-template-pattern\",\n { template: template, format: _vm.format },\n false\n )\n )\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"nocheck\", attrs: { id: \"naming_key\" } }, [\n _c(\"table\", { staticClass: \"Key\" }, [\n _vm._m(0),\n _vm._v(\" \"),\n _vm._m(1),\n _vm._v(\" \"),\n _c(\"tbody\", [\n _vm._m(2),\n _vm._v(\" \"),\n _vm._m(3),\n _vm._v(\" \"),\n _vm._m(4),\n _vm._v(\" \"),\n _vm._m(5),\n _vm._v(\" \"),\n _vm._m(6),\n _vm._v(\" \"),\n _vm._m(7),\n _vm._v(\" \"),\n _vm._m(8),\n _vm._v(\" \"),\n _vm._m(9),\n _vm._v(\" \"),\n _vm._m(10),\n _vm._v(\" \"),\n _vm._m(11),\n _vm._v(\" \"),\n _vm._m(12),\n _vm._v(\" \"),\n _vm._m(13),\n _vm._v(\" \"),\n _vm._m(14),\n _vm._v(\" \"),\n _vm._m(15),\n _vm._v(\" \"),\n _vm._m(16),\n _vm._v(\" \"),\n _vm._m(17),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(18),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%M\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"M\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%D\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"d\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%Y\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"yyyy\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(19),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%CM\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"M\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%CD\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"d\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%CY\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"yyyy\")))])\n ]),\n _vm._v(\" \"),\n _vm._m(20),\n _vm._v(\" \"),\n _vm._m(21),\n _vm._v(\" \"),\n _vm._m(22),\n _vm._v(\" \"),\n _vm._m(23),\n _vm._v(\" \"),\n _vm._m(24),\n _vm._v(\" \"),\n _vm._m(25),\n _vm._v(\" \"),\n _vm._m(26),\n _vm._v(\" \"),\n _vm._m(27),\n _vm._v(\" \"),\n _vm._m(28)\n ])\n ])\n ])\n ],\n 2\n )\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"thead\", [\n _c(\"tr\", [\n _c(\"th\", { staticClass: \"align-right\" }, [_vm._v(\"Meaning\")]),\n _vm._v(\" \"),\n _c(\"th\", [_vm._v(\"Pattern\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"60%\" } }, [_vm._v(\"Result\")])\n ])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tfoot\", [\n _c(\"tr\", [\n _c(\"th\", { attrs: { colspan: \"3\" } }, [\n _vm._v(\n \"Use lower case if you want lower case names (eg. %sn, %e.n, %q_n etc)\"\n )\n ])\n ])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Show Name:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%S.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show.Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%S_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show_Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Season Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%S\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"2\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0S\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"02\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"XEM Season Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%XS\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"2\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0XS\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"02\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%E\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"3\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0E\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"03\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"XEM Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%XE\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"3\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0XE\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"03\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Absolute Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%AB\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"003\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Xem Absolute Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%XAB\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"003\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Episode Name:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%EN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Episode Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%E.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Episode.Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%E_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Episode_Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Air Date:\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Post-Processing Date:\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [_c(\"b\", [_vm._v(\"Quality:\")])]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%QN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p BluRay\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%Q.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p.BluRay\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%Q_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p_BluRay\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Scene Quality:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SQN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p HDTV x264\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SQ.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p.HDTV.x264\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SQ_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p_HDTV_x264\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"i\", {\n staticClass: \"glyphicon glyphicon-info-sign\",\n attrs: { title: \"Multi-EP style is ignored\" }\n }),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Release Name:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%RN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show.Name.S02E03.HDTV.x264-RLSGROUP\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"i\", {\n staticClass: \"glyphicon glyphicon-info-sign\",\n attrs: {\n title:\n \"UNKNOWN_RELEASE_GROUP is used in place of RLSGROUP if it could not be properly detected\"\n }\n }),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Release Group:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%RG\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"RLSGROUP\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"i\", {\n staticClass: \"glyphicon glyphicon-info-sign\",\n attrs: { title: \"If episode is proper/repack add 'proper' to name.\" }\n }),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Release Type:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%RT\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"PROPER\")])\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-container.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-pattern.vue?vue&type=template&id=bec54150&": +/*!*************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/helpers/search-template-pattern.vue?vue&type=template&id=bec54150& ***! + \*************************************************************************************************************************************************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"search-template-pattern\" } }, [\n _c(\n \"div\",\n { staticClass: \"form-group\", staticStyle: { \"padding-top\": \"0\" } },\n [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-sm-10 content\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.searchTemplate.template,\n expression: \"searchTemplate.template\"\n }\n ],\n staticClass: \"form-control-inline-max input-sm max-input350\",\n attrs: { type: \"text\", name: \"search_pattern\" },\n domProps: { value: _vm.searchTemplate.template },\n on: {\n change: _vm.updateExample,\n input: [\n function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.searchTemplate, \"template\", $event.target.value)\n },\n function($event) {\n return _vm.update()\n }\n ]\n }\n })\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"form-group\", staticStyle: { \"padding-top\": \"0\" } },\n [\n _vm._m(1),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-sm-10 content\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.searchTemplateExample,\n expression: \"searchTemplateExample\"\n }\n ],\n staticClass: \"form-control-inline-max input-sm max-input350\",\n attrs: { type: \"text\", name: \"search_pattern\", disabled: \"\" },\n domProps: { value: _vm.searchTemplateExample },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.searchTemplateExample = $event.target.value\n }\n }\n })\n ])\n ]\n )\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"label\", { staticClass: \"col-sm-2 control-label\" }, [\n _c(\"span\", [_vm._v(\" \")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"label\", { staticClass: \"col-sm-2 control-label\" }, [\n _c(\"span\", [_vm._v(\" \")])\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-pattern.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/select-list.vue?vue&type=template&id=466bd1e5&scoped=true&": /*!*************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/helpers/select-list.vue?vue&type=template&id=466bd1e5&scoped=true& ***! @@ -2358,11 +2406,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /*!*****************************************!*\ !*** ./src/components/helpers/index.js ***! \*****************************************/ -/*! exports provided: AppLink, Asset, ConfigTemplate, ConfigTextboxNumber, ConfigTextbox, ConfigToggleSlider, FileBrowser, LanguageSelect, NamePattern, PlotInfo, QualityChooser, QualityPill, ScrollButtons, SelectList, ShowSelector, StateSwitch */ +/*! exports provided: AppLink, Asset, ConfigTemplate, ConfigTextboxNumber, ConfigTextbox, ConfigToggleSlider, FileBrowser, LanguageSelect, NamePattern, PlotInfo, QualityChooser, QualityPill, ScrollButtons, SearchTemplateContainer, SearchTemplatePattern, SelectList, ShowSelector, StateSwitch */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_link_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app-link.vue */ \"./src/components/helpers/app-link.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppLink\", function() { return _app_link_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _asset_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./asset.vue */ \"./src/components/helpers/asset.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Asset\", function() { return _asset_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _config_template_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config-template.vue */ \"./src/components/helpers/config-template.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTemplate\", function() { return _config_template_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _config_textbox_number_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config-textbox-number.vue */ \"./src/components/helpers/config-textbox-number.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextboxNumber\", function() { return _config_textbox_number_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _config_textbox_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config-textbox.vue */ \"./src/components/helpers/config-textbox.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextbox\", function() { return _config_textbox_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _config_toggle_slider_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./config-toggle-slider.vue */ \"./src/components/helpers/config-toggle-slider.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigToggleSlider\", function() { return _config_toggle_slider_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _file_browser_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./file-browser.vue */ \"./src/components/helpers/file-browser.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FileBrowser\", function() { return _file_browser_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _language_select_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./language-select.vue */ \"./src/components/helpers/language-select.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LanguageSelect\", function() { return _language_select_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _name_pattern_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./name-pattern.vue */ \"./src/components/helpers/name-pattern.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NamePattern\", function() { return _name_pattern_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _plot_info_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./plot-info.vue */ \"./src/components/helpers/plot-info.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PlotInfo\", function() { return _plot_info_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _quality_chooser_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./quality-chooser.vue */ \"./src/components/helpers/quality-chooser.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityChooser\", function() { return _quality_chooser_vue__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _quality_pill_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./quality-pill.vue */ \"./src/components/helpers/quality-pill.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityPill\", function() { return _quality_pill_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _scroll_buttons_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./scroll-buttons.vue */ \"./src/components/helpers/scroll-buttons.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ScrollButtons\", function() { return _scroll_buttons_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _select_list_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./select-list.vue */ \"./src/components/helpers/select-list.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SelectList\", function() { return _select_list_vue__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _show_selector_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./show-selector.vue */ \"./src/components/helpers/show-selector.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ShowSelector\", function() { return _show_selector_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _state_switch_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./state-switch.vue */ \"./src/components/helpers/state-switch.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StateSwitch\", function() { return _state_switch_vue__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/index.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_link_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app-link.vue */ \"./src/components/helpers/app-link.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppLink\", function() { return _app_link_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _asset_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./asset.vue */ \"./src/components/helpers/asset.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Asset\", function() { return _asset_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _config_template_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config-template.vue */ \"./src/components/helpers/config-template.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTemplate\", function() { return _config_template_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _config_textbox_number_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config-textbox-number.vue */ \"./src/components/helpers/config-textbox-number.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextboxNumber\", function() { return _config_textbox_number_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _config_textbox_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config-textbox.vue */ \"./src/components/helpers/config-textbox.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextbox\", function() { return _config_textbox_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _config_toggle_slider_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./config-toggle-slider.vue */ \"./src/components/helpers/config-toggle-slider.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigToggleSlider\", function() { return _config_toggle_slider_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _file_browser_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./file-browser.vue */ \"./src/components/helpers/file-browser.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FileBrowser\", function() { return _file_browser_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _language_select_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./language-select.vue */ \"./src/components/helpers/language-select.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LanguageSelect\", function() { return _language_select_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _name_pattern_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./name-pattern.vue */ \"./src/components/helpers/name-pattern.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NamePattern\", function() { return _name_pattern_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _plot_info_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./plot-info.vue */ \"./src/components/helpers/plot-info.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PlotInfo\", function() { return _plot_info_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _quality_chooser_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./quality-chooser.vue */ \"./src/components/helpers/quality-chooser.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityChooser\", function() { return _quality_chooser_vue__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _quality_pill_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./quality-pill.vue */ \"./src/components/helpers/quality-pill.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityPill\", function() { return _quality_pill_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _scroll_buttons_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./scroll-buttons.vue */ \"./src/components/helpers/scroll-buttons.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ScrollButtons\", function() { return _scroll_buttons_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _search_template_container_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./search-template-container.vue */ \"./src/components/helpers/search-template-container.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SearchTemplateContainer\", function() { return _search_template_container_vue__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _search_template_pattern_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./search-template-pattern.vue */ \"./src/components/helpers/search-template-pattern.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SearchTemplatePattern\", function() { return _search_template_pattern_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _select_list_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./select-list.vue */ \"./src/components/helpers/select-list.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SelectList\", function() { return _select_list_vue__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _show_selector_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./show-selector.vue */ \"./src/components/helpers/show-selector.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ShowSelector\", function() { return _show_selector_vue__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _state_switch_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./state-switch.vue */ \"./src/components/helpers/state-switch.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StateSwitch\", function() { return _state_switch_vue__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/index.js?"); /***/ }), @@ -2630,6 +2678,78 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ }), +/***/ "./src/components/helpers/search-template-container.vue": +/*!**************************************************************!*\ + !*** ./src/components/helpers/search-template-container.vue ***! + \**************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _search_template_container_vue_vue_type_template_id_25fc53c9___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./search-template-container.vue?vue&type=template&id=25fc53c9& */ \"./src/components/helpers/search-template-container.vue?vue&type=template&id=25fc53c9&\");\n/* harmony import */ var _search_template_container_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./search-template-container.vue?vue&type=script&lang=js& */ \"./src/components/helpers/search-template-container.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _search_template_container_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _search_template_container_vue_vue_type_template_id_25fc53c9___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _search_template_container_vue_vue_type_template_id_25fc53c9___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/helpers/search-template-container.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-container.vue?"); + +/***/ }), + +/***/ "./src/components/helpers/search-template-container.vue?vue&type=script&lang=js&": +/*!***************************************************************************************!*\ + !*** ./src/components/helpers/search-template-container.vue?vue&type=script&lang=js& ***! + \***************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_container_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./search-template-container.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-container.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_container_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n//# sourceURL=webpack:///./src/components/helpers/search-template-container.vue?"); + +/***/ }), + +/***/ "./src/components/helpers/search-template-container.vue?vue&type=template&id=25fc53c9&": +/*!*********************************************************************************************!*\ + !*** ./src/components/helpers/search-template-container.vue?vue&type=template&id=25fc53c9& ***! + \*********************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_container_vue_vue_type_template_id_25fc53c9___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./search-template-container.vue?vue&type=template&id=25fc53c9& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-container.vue?vue&type=template&id=25fc53c9&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_container_vue_vue_type_template_id_25fc53c9___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_container_vue_vue_type_template_id_25fc53c9___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-container.vue?"); + +/***/ }), + +/***/ "./src/components/helpers/search-template-pattern.vue": +/*!************************************************************!*\ + !*** ./src/components/helpers/search-template-pattern.vue ***! + \************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _search_template_pattern_vue_vue_type_template_id_bec54150___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./search-template-pattern.vue?vue&type=template&id=bec54150& */ \"./src/components/helpers/search-template-pattern.vue?vue&type=template&id=bec54150&\");\n/* harmony import */ var _search_template_pattern_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./search-template-pattern.vue?vue&type=script&lang=js& */ \"./src/components/helpers/search-template-pattern.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _search_template_pattern_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _search_template_pattern_vue_vue_type_template_id_bec54150___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _search_template_pattern_vue_vue_type_template_id_bec54150___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/helpers/search-template-pattern.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-pattern.vue?"); + +/***/ }), + +/***/ "./src/components/helpers/search-template-pattern.vue?vue&type=script&lang=js&": +/*!*************************************************************************************!*\ + !*** ./src/components/helpers/search-template-pattern.vue?vue&type=script&lang=js& ***! + \*************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_pattern_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./search-template-pattern.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-pattern.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_pattern_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n//# sourceURL=webpack:///./src/components/helpers/search-template-pattern.vue?"); + +/***/ }), + +/***/ "./src/components/helpers/search-template-pattern.vue?vue&type=template&id=bec54150&": +/*!*******************************************************************************************!*\ + !*** ./src/components/helpers/search-template-pattern.vue?vue&type=template&id=bec54150& ***! + \*******************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_pattern_vue_vue_type_template_id_bec54150___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./search-template-pattern.vue?vue&type=template&id=bec54150& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-pattern.vue?vue&type=template&id=bec54150&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_pattern_vue_vue_type_template_id_bec54150___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_pattern_vue_vue_type_template_id_bec54150___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-pattern.vue?"); + +/***/ }), + /***/ "./src/components/helpers/select-list.vue": /*!************************************************!*\ !*** ./src/components/helpers/select-list.vue ***! @@ -2862,11 +2982,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _404 /*!*********************************!*\ !*** ./src/components/index.js ***! \*********************************/ -/*! exports provided: AddRecommended, AddShowOptions, AddShows, AnidbReleaseGroupUi, AppFooter, AppHeader, Backstretch, Config, ConfigGeneral, ConfigPostProcessing, ConfigNotifications, ConfigSearch, DisplayShow, EditShow, History, Home, IRC, Login, Logs, ManualPostProcess, RootDirs, Schedule, ShowHeader, SnatchSelection, Status, SubMenu, SubtitleSearch, NotFound, AppLink, Asset, ConfigTemplate, ConfigTextboxNumber, ConfigTextbox, ConfigToggleSlider, FileBrowser, LanguageSelect, NamePattern, PlotInfo, QualityChooser, QualityPill, ScrollButtons, SelectList, ShowSelector, StateSwitch */ +/*! exports provided: AddRecommended, AddShowOptions, AddShows, AnidbReleaseGroupUi, AppFooter, AppHeader, Backstretch, Config, ConfigGeneral, ConfigPostProcessing, ConfigNotifications, ConfigSearch, DisplayShow, EditShow, History, Home, IRC, Login, Logs, ManualPostProcess, RootDirs, Schedule, ShowHeader, SnatchSelection, Status, SubMenu, SubtitleSearch, NotFound, AppLink, Asset, ConfigTemplate, ConfigTextboxNumber, ConfigTextbox, ConfigToggleSlider, FileBrowser, LanguageSelect, NamePattern, PlotInfo, QualityChooser, QualityPill, ScrollButtons, SearchTemplateContainer, SearchTemplatePattern, SelectList, ShowSelector, StateSwitch */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _add_recommended_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add-recommended.vue */ \"./src/components/add-recommended.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AddRecommended\", function() { return _add_recommended_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _add_show_options_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./add-show-options.vue */ \"./src/components/add-show-options.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AddShowOptions\", function() { return _add_show_options_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _add_shows_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./add-shows.vue */ \"./src/components/add-shows.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AddShows\", function() { return _add_shows_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./anidb-release-group-ui.vue */ \"./src/components/anidb-release-group-ui.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AnidbReleaseGroupUi\", function() { return _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _app_footer_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./app-footer.vue */ \"./src/components/app-footer.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppFooter\", function() { return _app_footer_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _app_header_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./app-header.vue */ \"./src/components/app-header.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppHeader\", function() { return _app_header_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _backstretch_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./backstretch.vue */ \"./src/components/backstretch.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Backstretch\", function() { return _backstretch_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _config_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./config.vue */ \"./src/components/config.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Config\", function() { return _config_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _config_general_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./config-general.vue */ \"./src/components/config-general.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigGeneral\", function() { return _config_general_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _config_post_processing_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./config-post-processing.vue */ \"./src/components/config-post-processing.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigPostProcessing\", function() { return _config_post_processing_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _config_notifications_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./config-notifications.vue */ \"./src/components/config-notifications.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigNotifications\", function() { return _config_notifications_vue__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _config_search_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./config-search.vue */ \"./src/components/config-search.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigSearch\", function() { return _config_search_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _display_show_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./display-show.vue */ \"./src/components/display-show.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DisplayShow\", function() { return _display_show_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _edit_show_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./edit-show.vue */ \"./src/components/edit-show.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EditShow\", function() { return _edit_show_vue__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _history_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./history.vue */ \"./src/components/history.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"History\", function() { return _history_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _home_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./home.vue */ \"./src/components/home.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Home\", function() { return _home_vue__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _irc_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./irc.vue */ \"./src/components/irc.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IRC\", function() { return _irc_vue__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _login_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./login.vue */ \"./src/components/login.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Login\", function() { return _login_vue__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _logs_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./logs.vue */ \"./src/components/logs.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Logs\", function() { return _logs_vue__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _manual_post_process_vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./manual-post-process.vue */ \"./src/components/manual-post-process.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ManualPostProcess\", function() { return _manual_post_process_vue__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _root_dirs_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./root-dirs.vue */ \"./src/components/root-dirs.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RootDirs\", function() { return _root_dirs_vue__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _schedule_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./schedule.vue */ \"./src/components/schedule.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Schedule\", function() { return _schedule_vue__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony import */ var _show_header_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./show-header.vue */ \"./src/components/show-header.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ShowHeader\", function() { return _show_header_vue__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony import */ var _snatch_selection_vue__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./snatch-selection.vue */ \"./src/components/snatch-selection.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SnatchSelection\", function() { return _snatch_selection_vue__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony import */ var _status_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./status.vue */ \"./src/components/status.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Status\", function() { return _status_vue__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _sub_menu_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./sub-menu.vue */ \"./src/components/sub-menu.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SubMenu\", function() { return _sub_menu_vue__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _subtitle_search_vue__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./subtitle-search.vue */ \"./src/components/subtitle-search.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SubtitleSearch\", function() { return _subtitle_search_vue__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _http__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./http */ \"./src/components/http/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NotFound\", function() { return _http__WEBPACK_IMPORTED_MODULE_27__[\"NotFound\"]; });\n\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppLink\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"AppLink\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Asset\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"Asset\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTemplate\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigTemplate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextboxNumber\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigTextboxNumber\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextbox\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigTextbox\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigToggleSlider\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigToggleSlider\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FileBrowser\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"FileBrowser\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LanguageSelect\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"LanguageSelect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NamePattern\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"NamePattern\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PlotInfo\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"PlotInfo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityChooser\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"QualityChooser\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityPill\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"QualityPill\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ScrollButtons\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ScrollButtons\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SelectList\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"SelectList\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ShowSelector\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ShowSelector\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StateSwitch\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"StateSwitch\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./src/components/index.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _add_recommended_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add-recommended.vue */ \"./src/components/add-recommended.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AddRecommended\", function() { return _add_recommended_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _add_show_options_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./add-show-options.vue */ \"./src/components/add-show-options.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AddShowOptions\", function() { return _add_show_options_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _add_shows_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./add-shows.vue */ \"./src/components/add-shows.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AddShows\", function() { return _add_shows_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./anidb-release-group-ui.vue */ \"./src/components/anidb-release-group-ui.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AnidbReleaseGroupUi\", function() { return _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _app_footer_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./app-footer.vue */ \"./src/components/app-footer.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppFooter\", function() { return _app_footer_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _app_header_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./app-header.vue */ \"./src/components/app-header.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppHeader\", function() { return _app_header_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _backstretch_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./backstretch.vue */ \"./src/components/backstretch.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Backstretch\", function() { return _backstretch_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _config_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./config.vue */ \"./src/components/config.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Config\", function() { return _config_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _config_general_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./config-general.vue */ \"./src/components/config-general.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigGeneral\", function() { return _config_general_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _config_post_processing_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./config-post-processing.vue */ \"./src/components/config-post-processing.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigPostProcessing\", function() { return _config_post_processing_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _config_notifications_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./config-notifications.vue */ \"./src/components/config-notifications.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigNotifications\", function() { return _config_notifications_vue__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _config_search_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./config-search.vue */ \"./src/components/config-search.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigSearch\", function() { return _config_search_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _display_show_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./display-show.vue */ \"./src/components/display-show.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DisplayShow\", function() { return _display_show_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _edit_show_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./edit-show.vue */ \"./src/components/edit-show.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EditShow\", function() { return _edit_show_vue__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _history_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./history.vue */ \"./src/components/history.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"History\", function() { return _history_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _home_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./home.vue */ \"./src/components/home.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Home\", function() { return _home_vue__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _irc_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./irc.vue */ \"./src/components/irc.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IRC\", function() { return _irc_vue__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _login_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./login.vue */ \"./src/components/login.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Login\", function() { return _login_vue__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _logs_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./logs.vue */ \"./src/components/logs.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Logs\", function() { return _logs_vue__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _manual_post_process_vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./manual-post-process.vue */ \"./src/components/manual-post-process.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ManualPostProcess\", function() { return _manual_post_process_vue__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _root_dirs_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./root-dirs.vue */ \"./src/components/root-dirs.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RootDirs\", function() { return _root_dirs_vue__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _schedule_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./schedule.vue */ \"./src/components/schedule.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Schedule\", function() { return _schedule_vue__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony import */ var _show_header_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./show-header.vue */ \"./src/components/show-header.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ShowHeader\", function() { return _show_header_vue__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony import */ var _snatch_selection_vue__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./snatch-selection.vue */ \"./src/components/snatch-selection.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SnatchSelection\", function() { return _snatch_selection_vue__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony import */ var _status_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./status.vue */ \"./src/components/status.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Status\", function() { return _status_vue__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _sub_menu_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./sub-menu.vue */ \"./src/components/sub-menu.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SubMenu\", function() { return _sub_menu_vue__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _subtitle_search_vue__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./subtitle-search.vue */ \"./src/components/subtitle-search.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SubtitleSearch\", function() { return _subtitle_search_vue__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _http__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./http */ \"./src/components/http/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NotFound\", function() { return _http__WEBPACK_IMPORTED_MODULE_27__[\"NotFound\"]; });\n\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppLink\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"AppLink\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Asset\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"Asset\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTemplate\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigTemplate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextboxNumber\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigTextboxNumber\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextbox\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigTextbox\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigToggleSlider\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigToggleSlider\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FileBrowser\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"FileBrowser\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LanguageSelect\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"LanguageSelect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NamePattern\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"NamePattern\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PlotInfo\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"PlotInfo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityChooser\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"QualityChooser\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityPill\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"QualityPill\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ScrollButtons\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ScrollButtons\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SearchTemplateContainer\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"SearchTemplateContainer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SearchTemplatePattern\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"SearchTemplatePattern\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SelectList\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"SelectList\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ShowSelector\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ShowSelector\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StateSwitch\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"StateSwitch\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./src/components/index.js?"); /***/ }), @@ -3418,7 +3538,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mut /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\nconst state = {\n show: {\n airs: null,\n airsFormatValid: null,\n akas: null,\n cache: null,\n classification: null,\n seasonCount: [],\n config: {\n airByDate: null,\n aliases: [],\n anime: null,\n defaultEpisodeStatus: null,\n dvdOrder: null,\n location: null,\n locationValid: null,\n paused: null,\n qualities: {\n allowed: [],\n preferred: []\n },\n release: {\n requiredWords: [],\n ignoredWords: [],\n blacklist: [],\n whitelist: [],\n requiredWordsExclude: null,\n ignoredWordsExclude: null\n },\n scene: null,\n seasonFolders: null,\n sports: null,\n subtitlesEnabled: null,\n airdateOffset: null\n },\n countries: null,\n genres: [],\n id: {\n tvdb: null,\n slug: null\n },\n indexer: null,\n imdbInfo: {\n akas: null,\n certificates: null,\n countries: null,\n countryCodes: null,\n genres: null,\n imdbId: null,\n imdbInfoId: null,\n indexer: null,\n indexerId: null,\n lastUpdate: null,\n plot: null,\n rating: null,\n runtimes: null,\n title: null,\n votes: null\n },\n language: null,\n network: null,\n nextAirDate: null,\n plot: null,\n rating: {\n imdb: {\n rating: null,\n votes: null\n }\n },\n runtime: null,\n showType: null,\n status: null,\n title: null,\n type: null,\n year: {},\n size: null,\n // ===========================\n // Detailed (`?detailed=true`)\n // ===========================\n showQueueStatus: [],\n xemNumbering: [],\n sceneAbsoluteNumbering: [],\n allSceneExceptions: [],\n xemAbsoluteNumbering: [],\n sceneNumbering: [],\n // ===========================\n // Episodes (`?episodes=true`)\n // ===========================\n // Seasons array is added to the show object under this query,\n // but we currently check to see if this property is defined before fetching the show with `?episodes=true`.\n // seasons: [],\n episodeCount: null\n }\n};\nconst mutations = {};\nconst getters = {};\nconst actions = {};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack:///./src/store/modules/defaults.js?"); +eval("__webpack_require__.r(__webpack_exports__);\nconst state = {\n show: {\n airs: null,\n airsFormatValid: null,\n akas: null,\n cache: null,\n classification: null,\n seasonCount: [],\n config: {\n airByDate: null,\n aliases: [],\n anime: null,\n defaultEpisodeStatus: null,\n dvdOrder: null,\n location: null,\n locationValid: null,\n paused: null,\n qualities: {\n allowed: [],\n preferred: []\n },\n release: {\n requiredWords: [],\n ignoredWords: [],\n blacklist: [],\n whitelist: [],\n requiredWordsExclude: null,\n ignoredWordsExclude: null\n },\n scene: null,\n seasonFolders: null,\n sports: null,\n subtitlesEnabled: null,\n airdateOffset: null,\n templates: null,\n searchTemplates: []\n },\n countries: null,\n genres: [],\n id: {\n tvdb: null,\n slug: null\n },\n indexer: null,\n imdbInfo: {\n akas: null,\n certificates: null,\n countries: null,\n countryCodes: null,\n genres: null,\n imdbId: null,\n imdbInfoId: null,\n indexer: null,\n indexerId: null,\n lastUpdate: null,\n plot: null,\n rating: null,\n runtimes: null,\n title: null,\n votes: null\n },\n language: null,\n network: null,\n nextAirDate: null,\n plot: null,\n rating: {\n imdb: {\n rating: null,\n votes: null\n }\n },\n runtime: null,\n showType: null,\n status: null,\n title: null,\n type: null,\n year: {},\n size: null,\n // ===========================\n // Detailed (`?detailed=true`)\n // ===========================\n showQueueStatus: [],\n xemNumbering: [],\n sceneAbsoluteNumbering: [],\n allSceneExceptions: [],\n xemAbsoluteNumbering: [],\n sceneNumbering: [],\n // ===========================\n // Episodes (`?episodes=true`)\n // ===========================\n // Seasons array is added to the show object under this query,\n // but we currently check to see if this property is defined before fetching the show with `?episodes=true`.\n // seasons: [],\n episodeCount: null\n }\n};\nconst mutations = {};\nconst getters = {};\nconst actions = {};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack:///./src/store/modules/defaults.js?"); /***/ }), diff --git a/themes/light/assets/js/medusa-runtime.js b/themes/light/assets/js/medusa-runtime.js index fa9eee4885..092c62f205 100644 --- a/themes/light/assets/js/medusa-runtime.js +++ b/themes/light/assets/js/medusa-runtime.js @@ -164,7 +164,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(f /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function($) {/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _utils_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/core */ \"./src/utils/core.js\");\n/* harmony import */ var _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./anidb-release-group-ui.vue */ \"./src/components/anidb-release-group-ui.vue\");\n/* harmony import */ var _backstretch_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./backstretch.vue */ \"./src/components/backstretch.vue\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'edit-show',\n components: {\n AnidbReleaseGroupUi: _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"AppLink\"],\n Backstretch: _backstretch_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n ConfigTemplate: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigTemplate\"],\n ConfigTextboxNumber: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigTextboxNumber\"],\n ConfigToggleSlider: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigToggleSlider\"],\n FileBrowser: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"FileBrowser\"],\n LanguageSelect: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"LanguageSelect\"],\n QualityChooser: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"QualityChooser\"],\n SelectList: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"SelectList\"]\n },\n\n metaInfo() {\n if (!this.show || !this.show.title) {\n return {\n title: 'Medusa'\n };\n }\n\n const {\n title\n } = this.show;\n return {\n title,\n titleTemplate: '%s | Medusa'\n };\n },\n\n props: {\n /**\n * Show indexer\n */\n showIndexer: {\n type: String\n },\n\n /**\n * Show id\n */\n showId: {\n type: Number\n }\n },\n\n data() {\n return {\n saving: false,\n loadError: null\n };\n },\n\n computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapState\"])({\n indexers: state => state.indexers,\n layout: state => state.layout,\n episodeStatuses: state => state.consts.statuses\n }), {}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapGetters\"])({\n show: 'getCurrentShow',\n getStatus: 'getStatus'\n }), {\n indexer() {\n return this.showIndexer || this.$route.query.indexername;\n },\n\n id() {\n return this.showId || Number(this.$route.query.seriesid) || undefined;\n },\n\n showLoaded() {\n return Boolean(this.show.id.slug);\n },\n\n defaultEpisodeStatusOptions() {\n if (this.episodeStatuses.length === 0) {\n return [];\n } // Get status objects, in this order\n\n\n return ['wanted', 'skipped', 'ignored'].map(key => this.getStatus({\n key\n }));\n },\n\n availableLanguages() {\n if (this.indexers.main.validLanguages) {\n return this.indexers.main.validLanguages.join(',');\n }\n\n return '';\n },\n\n combinedQualities() {\n const {\n allowed,\n preferred\n } = this.show.config.qualities;\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"combineQualities\"])(allowed, preferred);\n },\n\n saveButton() {\n return this.saving === false ? 'Save Changes' : 'Saving...';\n },\n\n globalIgnored() {\n return this.$store.state.search.filters.ignored.map(x => x.toLowerCase());\n },\n\n globalRequired() {\n return this.$store.state.search.filters.required.map(x => x.toLowerCase());\n },\n\n effectiveIgnored() {\n const {\n globalIgnored\n } = this;\n const showIgnored = this.show.config.release.ignoredWords.map(x => x.toLowerCase());\n\n if (this.show.config.release.ignoredWordsExclude) {\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayExclude\"])(globalIgnored, showIgnored);\n }\n\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayUnique\"])(globalIgnored.concat(showIgnored));\n },\n\n effectiveRequired() {\n const {\n globalRequired\n } = this;\n const showRequired = this.show.config.release.requiredWords.map(x => x.toLowerCase());\n\n if (this.show.config.release.requiredWordsExclude) {\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayExclude\"])(globalRequired, showRequired);\n }\n\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayUnique\"])(globalRequired.concat(showRequired));\n }\n\n }),\n\n created() {\n this.loadShow();\n },\n\n updated() {\n $('#config-components').tabs();\n },\n\n methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapActions\"])(['getShow', 'setShow']), {\n async loadShow(params) {\n const {\n $store,\n id,\n indexer,\n getShow\n } = params || this; // Let's tell the store which show we currently want as current.\n\n $store.commit('currentShow', {\n indexer,\n id\n });\n\n try {\n this.loadError = null;\n await getShow({\n indexer,\n id,\n detailed: false\n });\n } catch (error) {\n const {\n data\n } = error.response;\n\n if (data && data.error) {\n this.loadError = data.error;\n } else {\n this.loadError = String(error);\n }\n }\n },\n\n async saveShow(subject) {\n const {\n show,\n showLoaded\n } = this; // We want to wait until the page has been fully loaded, before starting to save stuff.\n\n if (!showLoaded) {\n return;\n }\n\n if (!['show', 'all'].includes(subject)) {\n return;\n } // Disable the save button until we're done.\n\n\n this.saving = true;\n const showConfig = show.config;\n const data = {\n config: {\n aliases: showConfig.aliases,\n defaultEpisodeStatus: showConfig.defaultEpisodeStatus,\n dvdOrder: showConfig.dvdOrder,\n seasonFolders: showConfig.seasonFolders,\n anime: showConfig.anime,\n scene: showConfig.scene,\n sports: showConfig.sports,\n paused: showConfig.paused,\n location: showConfig.location,\n airByDate: showConfig.airByDate,\n subtitlesEnabled: showConfig.subtitlesEnabled,\n release: {\n requiredWords: showConfig.release.requiredWords,\n ignoredWords: showConfig.release.ignoredWords,\n requiredWordsExclude: showConfig.release.requiredWordsExclude,\n ignoredWordsExclude: showConfig.release.ignoredWordsExclude\n },\n qualities: {\n preferred: showConfig.qualities.preferred,\n allowed: showConfig.qualities.allowed\n },\n airdateOffset: showConfig.airdateOffset\n },\n language: show.language\n };\n\n if (data.config.anime) {\n data.config.release.blacklist = showConfig.release.blacklist;\n data.config.release.whitelist = showConfig.release.whitelist;\n }\n\n const {\n indexer,\n id,\n setShow\n } = this;\n\n try {\n await setShow({\n indexer,\n id,\n data\n });\n this.$snotify.success('You may need to \"Re-scan files\" or \"Force Full Update\".', 'Saved', {\n timeout: 5000\n });\n } catch (error) {\n this.$snotify.error(\"Error while trying to save \".concat(this.show.title, \": \").concat(error.message || 'Unknown'), 'Error');\n } finally {\n // Re-enable the save button.\n this.saving = false;\n }\n },\n\n onChangeIgnoredWords(items) {\n this.show.config.release.ignoredWords = items.map(item => item.value);\n },\n\n onChangeRequiredWords(items) {\n this.show.config.release.requiredWords = items.map(item => item.value);\n },\n\n onChangeAliases(items) {\n this.show.config.aliases = items.map(item => item.value);\n },\n\n onChangeReleaseGroupsAnime(groupNames) {\n this.show.config.release.whitelist = groupNames.whitelist;\n this.show.config.release.blacklist = groupNames.blacklist;\n },\n\n updateLanguage(value) {\n this.show.language = value;\n }\n\n })\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./src/components/edit-show.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function($) {/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _utils_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/core */ \"./src/utils/core.js\");\n/* harmony import */ var _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./anidb-release-group-ui.vue */ \"./src/components/anidb-release-group-ui.vue\");\n/* harmony import */ var _backstretch_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./backstretch.vue */ \"./src/components/backstretch.vue\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'edit-show',\n components: {\n AnidbReleaseGroupUi: _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"AppLink\"],\n Backstretch: _backstretch_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n ConfigTemplate: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigTemplate\"],\n ConfigTextboxNumber: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigTextboxNumber\"],\n ConfigToggleSlider: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigToggleSlider\"],\n FileBrowser: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"FileBrowser\"],\n LanguageSelect: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"LanguageSelect\"],\n QualityChooser: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"QualityChooser\"],\n SearchTemplateContainer: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"SearchTemplateContainer\"],\n SelectList: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"SelectList\"]\n },\n\n metaInfo() {\n if (!this.show || !this.show.title) {\n return {\n title: 'Medusa'\n };\n }\n\n const {\n title\n } = this.show;\n return {\n title,\n titleTemplate: '%s | Medusa'\n };\n },\n\n props: {\n /**\n * Show indexer\n */\n showIndexer: {\n type: String\n },\n\n /**\n * Show id\n */\n showId: {\n type: Number\n }\n },\n\n data() {\n return {\n saving: false,\n loadError: null\n };\n },\n\n computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapState\"])({\n indexers: state => state.indexers,\n layout: state => state.layout,\n episodeStatuses: state => state.consts.statuses\n }), {}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapGetters\"])({\n show: 'getCurrentShow',\n getStatus: 'getStatus'\n }), {\n indexer() {\n return this.showIndexer || this.$route.query.indexername;\n },\n\n id() {\n return this.showId || Number(this.$route.query.seriesid) || undefined;\n },\n\n showLoaded() {\n return Boolean(this.show.id.slug);\n },\n\n defaultEpisodeStatusOptions() {\n if (this.episodeStatuses.length === 0) {\n return [];\n } // Get status objects, in this order\n\n\n return ['wanted', 'skipped', 'ignored'].map(key => this.getStatus({\n key\n }));\n },\n\n availableLanguages() {\n if (this.indexers.main.validLanguages) {\n return this.indexers.main.validLanguages.join(',');\n }\n\n return '';\n },\n\n combinedQualities() {\n const {\n allowed,\n preferred\n } = this.show.config.qualities;\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"combineQualities\"])(allowed, preferred);\n },\n\n saveButton() {\n return this.saving === false ? 'Save Changes' : 'Saving...';\n },\n\n globalIgnored() {\n return this.$store.state.search.filters.ignored.map(x => x.toLowerCase());\n },\n\n globalRequired() {\n return this.$store.state.search.filters.required.map(x => x.toLowerCase());\n },\n\n effectiveIgnored() {\n const {\n globalIgnored\n } = this;\n const showIgnored = this.show.config.release.ignoredWords.map(x => x.toLowerCase());\n\n if (this.show.config.release.ignoredWordsExclude) {\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayExclude\"])(globalIgnored, showIgnored);\n }\n\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayUnique\"])(globalIgnored.concat(showIgnored));\n },\n\n effectiveRequired() {\n const {\n globalRequired\n } = this;\n const showRequired = this.show.config.release.requiredWords.map(x => x.toLowerCase());\n\n if (this.show.config.release.requiredWordsExclude) {\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayExclude\"])(globalRequired, showRequired);\n }\n\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayUnique\"])(globalRequired.concat(showRequired));\n },\n\n selectedFormat() {\n const {\n show\n } = this;\n const {\n config\n } = show;\n return ['anime', 'sports', 'airByDate'].find(item => config[item]);\n }\n\n }),\n\n created() {\n this.loadShow();\n },\n\n updated() {\n $('#config-components').tabs();\n },\n\n methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapActions\"])(['getShow', 'setShow']), {\n async loadShow(params) {\n const {\n $store,\n id,\n indexer,\n getShow\n } = params || this; // Let's tell the store which show we currently want as current.\n\n $store.commit('currentShow', {\n indexer,\n id\n });\n\n try {\n this.loadError = null;\n await getShow({\n indexer,\n id,\n detailed: false\n });\n } catch (error) {\n const {\n data\n } = error.response;\n\n if (data && data.error) {\n this.loadError = data.error;\n } else {\n this.loadError = String(error);\n }\n }\n },\n\n async saveShow(subject) {\n const {\n show,\n showLoaded\n } = this; // We want to wait until the page has been fully loaded, before starting to save stuff.\n\n if (!showLoaded) {\n return;\n }\n\n if (!['show', 'all'].includes(subject)) {\n return;\n } // Disable the save button until we're done.\n\n\n this.saving = true;\n const showConfig = show.config;\n const data = {\n config: {\n aliases: showConfig.aliases,\n defaultEpisodeStatus: showConfig.defaultEpisodeStatus,\n dvdOrder: showConfig.dvdOrder,\n seasonFolders: showConfig.seasonFolders,\n anime: showConfig.anime,\n scene: showConfig.scene,\n sports: showConfig.sports,\n paused: showConfig.paused,\n location: showConfig.location,\n airByDate: showConfig.airByDate,\n subtitlesEnabled: showConfig.subtitlesEnabled,\n release: {\n requiredWords: showConfig.release.requiredWords,\n ignoredWords: showConfig.release.ignoredWords,\n requiredWordsExclude: showConfig.release.requiredWordsExclude,\n ignoredWordsExclude: showConfig.release.ignoredWordsExclude\n },\n qualities: {\n preferred: showConfig.qualities.preferred,\n allowed: showConfig.qualities.allowed\n },\n airdateOffset: showConfig.airdateOffset,\n templates: showConfig.templates,\n searchTemplates: showConfig.searchTemplates\n },\n language: show.language\n };\n\n if (data.config.anime) {\n data.config.release.blacklist = showConfig.release.blacklist;\n data.config.release.whitelist = showConfig.release.whitelist;\n }\n\n const {\n indexer,\n id,\n setShow\n } = this;\n\n try {\n await setShow({\n indexer,\n id,\n data\n });\n this.$snotify.success('You may need to \"Re-scan files\" or \"Force Full Update\".', 'Saved', {\n timeout: 5000\n });\n } catch (error) {\n this.$snotify.error(\"Error while trying to save \".concat(this.show.title, \": \").concat(error.message || 'Unknown'), 'Error');\n } finally {\n // Re-enable the save button.\n this.saving = false;\n }\n },\n\n onChangeIgnoredWords(items) {\n this.show.config.release.ignoredWords = items.map(item => item.value);\n },\n\n onChangeRequiredWords(items) {\n this.show.config.release.requiredWords = items.map(item => item.value);\n },\n\n onChangeAliases(items) {\n this.show.config.aliases = items.map(item => item.value);\n },\n\n onChangeReleaseGroupsAnime(groupNames) {\n this.show.config.release.whitelist = groupNames.whitelist;\n this.show.config.release.blacklist = groupNames.blacklist;\n },\n\n updateLanguage(value) {\n this.show.language = value;\n },\n\n changeFormat(value, el) {\n this.show.config[el.id] = value;\n\n if (value) {\n ['anime', 'sports', 'airByDate'].filter(item => item !== el.id).forEach(value => {\n this.show.config[value] = false;\n });\n }\n }\n\n })\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./src/components/edit-show.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -236,7 +236,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n/ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-js-toggle-button */ \"./node_modules/vue-js-toggle-button/dist/index.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'config-toggle-slider',\n components: {\n ToggleButton: vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0__[\"ToggleButton\"]\n },\n props: {\n label: {\n type: String,\n required: true\n },\n id: {\n type: String,\n required: true\n },\n value: {\n type: Boolean,\n default: null\n },\n disabled: {\n type: Boolean,\n default: false\n },\n explanations: {\n type: Array,\n default: () => []\n }\n },\n\n data() {\n return {\n localChecked: null\n };\n },\n\n mounted() {\n const {\n value\n } = this;\n this.localChecked = value;\n },\n\n watch: {\n value() {\n const {\n value\n } = this;\n this.localChecked = value;\n }\n\n },\n methods: {\n updateValue() {\n const {\n localChecked\n } = this;\n this.$emit('input', localChecked);\n }\n\n }\n});\n\n//# sourceURL=webpack:///./src/components/helpers/config-toggle-slider.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-js-toggle-button */ \"./node_modules/vue-js-toggle-button/dist/index.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'config-toggle-slider',\n components: {\n ToggleButton: vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_0__[\"ToggleButton\"]\n },\n props: {\n label: {\n type: String,\n required: true\n },\n id: {\n type: String,\n required: true\n },\n value: {\n type: Boolean,\n default: null\n },\n disabled: {\n type: Boolean,\n default: false\n },\n explanations: {\n type: Array,\n default: () => []\n }\n },\n\n data() {\n return {\n localChecked: null\n };\n },\n\n mounted() {\n const {\n value\n } = this;\n this.localChecked = value;\n },\n\n watch: {\n value() {\n const {\n value\n } = this;\n this.localChecked = value;\n }\n\n },\n methods: {\n updateValue() {\n const {\n localChecked\n } = this;\n this.$emit('input', localChecked, this);\n }\n\n }\n});\n\n//# sourceURL=webpack:///./src/components/helpers/config-toggle-slider.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -324,6 +324,30 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(f /***/ }), +/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-container.vue?vue&type=script&lang=js&": +/*!*************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/helpers/search-template-container.vue?vue&type=script&lang=js& ***! + \*************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! date-fns/format */ \"./node_modules/date-fns/esm/format/index.js\");\n/* harmony import */ var _search_template_pattern__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./search-template-pattern */ \"./src/components/helpers/search-template-pattern.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'search-template-container',\n components: {\n SearchTemplatePattern: _search_template_pattern__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n props: {\n /**\n * Provide the custom naming type. -Like sports, anime, air by date- description.\n * If none provided we asume this is the default episode naming component.\n * And that means there will be no checkbox available to enable/disable it.\n */\n format: {\n type: String,\n default: ''\n },\n templates: {\n type: Array,\n default: () => []\n }\n },\n\n data() {\n return {\n searchTemplates: [],\n showFormat: ''\n };\n },\n\n methods: {\n getDateFormat(format) {\n return Object(date_fns_format__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(new Date(), format);\n },\n\n update() {\n const {\n templates,\n format\n } = this;\n this.$nextTick(() => {\n this.$emit('change', {\n templates,\n format\n });\n });\n }\n\n },\n\n mounted() {\n const {\n format,\n templates\n } = this;\n this.searchTemplates = templates;\n this.showFormat = format;\n },\n\n watch: {\n templates(newTemplates, oldtemplates) {\n this.searchTemplates = newTemplates;\n },\n\n format(newFormat) {\n this.showFormat = newFormat;\n }\n\n }\n});\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-container.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-pattern.vue?vue&type=script&lang=js&": +/*!***********************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/helpers/search-template-pattern.vue?vue&type=script&lang=js& ***! + \***********************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function($) {/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! date-fns/format */ \"./node_modules/date-fns/esm/format/index.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../api */ \"./src/api.js\");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'search-template-pattern',\n props: {\n /**\n * Provide the custom naming type. -Like sports, anime, air by date- description.\n * If none provided we asume this is the default episode naming component.\n * And that means there will be no checkbox available to enable/disable it.\n */\n format: {\n type: String,\n default: ''\n },\n template: {\n type: Object\n }\n },\n\n data() {\n return {\n showFormat: null,\n searchTemplate: '',\n searchTemplateExample: ''\n };\n },\n\n methods: {\n getDateFormat(format) {\n return Object(date_fns_format__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(new Date(), format);\n },\n\n testNaming(template) {\n const {\n showFormat\n } = this;\n console.debug(\"Test pattern \".concat(template.template));\n let params = {\n pattern: template.template\n };\n const formatMap = new Map([['anime', {\n 'anime_type': 3\n }], ['sports', {\n sports: true\n }], ['airByDate', {\n abd: true\n }]]);\n\n if (showFormat !== '') {\n params = _objectSpread({}, params, {}, formatMap.get(showFormat));\n }\n\n try {\n return _api__WEBPACK_IMPORTED_MODULE_2__[\"apiRoute\"].get('config/postProcessing/testNaming', {\n params,\n timeout: 20000\n }).then(res => res.data);\n } catch (error) {\n console.warn(error);\n return '';\n }\n },\n\n updateExample() {\n const {\n searchTemplate,\n showFormat\n } = this; // Update single\n\n this.testNaming(searchTemplate, false, this.showFormat).then(result => {\n this.searchTemplateExample = result;\n }); // Test naming\n\n this.checkNaming(searchTemplate, false, showFormat);\n },\n\n update() {\n this.$nextTick(() => {\n this.$emit('change', {\n template: this.searchTemplate,\n format: this.showFormat\n });\n });\n },\n\n checkNaming(pattern) {\n if (!pattern) {\n return;\n }\n\n const params = {\n pattern\n };\n const {\n $el\n } = this;\n const el = $($el); // apiRoute.get('config/postProcessing/isNamingValid', { params, timeout: 20000 }).then(result => {\n // if (result.data === 'invalid') {\n // el.find('#naming_pattern').qtip('option', {\n // 'content.text': 'This pattern is invalid.',\n // 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n // });\n // el.find('#naming_pattern').qtip('toggle', true);\n // el.find('#naming_pattern').css('background-color', '#FFDDDD');\n // } else if (result.data === 'seasonfolders') {\n // el.find('#naming_pattern').qtip('option', {\n // 'content.text': 'This pattern would be invalid without the folders, using it will force \"Flatten\" off for all shows.',\n // 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n // });\n // el.find('#naming_pattern').qtip('toggle', true);\n // el.find('#naming_pattern').css('background-color', '#FFFFDD');\n // } else {\n // el.find('#naming_pattern').qtip('option', {\n // 'content.text': 'This pattern is valid.',\n // 'style.classes': 'qtip-rounded qtip-shadow qtip-green'\n // });\n // el.find('#naming_pattern').qtip('toggle', false);\n // el.find('#naming_pattern').css('background-color', '#FFFFFF');\n // }\n // }).catch(error => {\n // console.warn(error);\n // });\n } // updateCustomName() {\n // // Store the custom naming pattern.\n // if (!this.presetsPatterns.includes(this.pattern)) {\n // this.customName = this.pattern;\n // }\n // // If the custom name is empty, let's use the last selected pattern.\n // // We'd prefer to cache the last configured custom pattern.\n // if (!this.customName) {\n // this.customName = this.lastSelectedPattern;\n // }\n // }\n\n\n },\n\n mounted() {\n const {\n format,\n template\n } = this;\n this.searchTemplate = template;\n this.showFormat = format; // Update the pattern example\n\n this.updateExample();\n },\n\n watch: {\n template(newTemplate, oldTemplate) {\n this.searchTemplate = newTemplate;\n this.updateExample();\n }\n\n }\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-pattern.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/select-list.vue?vue&type=script&lang=js&": /*!***********************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/helpers/select-list.vue?vue&type=script&lang=js& ***! @@ -933,7 +957,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"config-content\" } },\n [\n _vm.showLoaded\n ? _c(\"backstretch\", { attrs: { slug: _vm.show.id.slug } })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showLoaded\n ? _c(\n \"h1\",\n { staticClass: \"header\" },\n [\n _vm._v(\"\\n Edit Show - \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"home/displayShow?indexername=\" +\n _vm.indexer +\n \"&seriesid=\" +\n _vm.id\n }\n },\n [_vm._v(_vm._s(_vm.show.title))]\n )\n ],\n 1\n )\n : _c(\n \"h1\",\n { staticClass: \"header\" },\n [\n _vm._v(\"\\n Edit Show\"),\n !_vm.loadError ? [_vm._v(\" (Loading...)\")] : _vm._e()\n ],\n 2\n ),\n _vm._v(\" \"),\n _vm.loadError\n ? _c(\"h3\", [_vm._v(\"Error loading show: \" + _vm._s(_vm.loadError))])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showLoaded\n ? _c(\n \"div\",\n {\n class: { summaryFanArt: _vm.layout.fanartBackground },\n attrs: { id: \"config\" }\n },\n [\n _c(\n \"form\",\n {\n staticClass: \"form-horizontal\",\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.saveShow(\"all\")\n }\n }\n },\n [\n _c(\"div\", { attrs: { id: \"config-components\" } }, [\n _c(\"ul\", [\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group1\" } },\n [_vm._v(\"Main\")]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group2\" } },\n [_vm._v(\"Format\")]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group3\" } },\n [_vm._v(\"Advanced\")]\n )\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group1\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Main Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"location\",\n label: \"Show Location\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n name: \"location\",\n title: \"Select Show Location\",\n \"initial-dir\": _vm.show.config.location\n },\n on: {\n update: function($event) {\n _vm.show.config.location = $event\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"qualityPreset\",\n label: \"Quality\"\n }\n },\n [\n _c(\"quality-chooser\", {\n attrs: {\n \"overall-quality\": _vm.combinedQualities,\n \"show-slug\": _vm.show.id.slug\n },\n on: {\n \"update:quality:allowed\": function($event) {\n _vm.show.config.qualities.allowed = $event\n },\n \"update:quality:preferred\": function(\n $event\n ) {\n _vm.show.config.qualities.preferred = $event\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"defaultEpStatusSelect\",\n label: \"Default Episode Status\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.show.config.defaultEpisodeStatus,\n expression:\n \"show.config.defaultEpisodeStatus\"\n }\n ],\n staticClass:\n \"form-control form-control-inline input-sm\",\n attrs: {\n name: \"defaultEpStatus\",\n id: \"defaultEpStatusSelect\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.show.config,\n \"defaultEpisodeStatus\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(\n _vm.defaultEpisodeStatusOptions,\n function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.name }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(option.name) +\n \"\\n \"\n )\n ]\n )\n }\n ),\n 0\n ),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"This will set the status for future episodes.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"indexerLangSelect\",\n label: \"Info Language\"\n }\n },\n [\n _c(\"language-select\", {\n staticClass:\n \"form-control form-control-inline input-sm\",\n attrs: {\n id: \"indexerLangSelect\",\n language: _vm.show.language,\n available: _vm.availableLanguages,\n name: \"indexer_lang\"\n },\n on: { \"update-language\": _vm.updateLanguage }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n \"This only applies to episode filenames and the contents of metadata files.\"\n )\n ])\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Subtitles\", id: \"subtitles\" },\n model: {\n value: _vm.show.config.subtitlesEnabled,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"subtitlesEnabled\",\n $$v\n )\n },\n expression: \"show.config.subtitlesEnabled\"\n }\n },\n [_c(\"span\", [_vm._v(\"search for subtitles\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Paused\", id: \"paused\" },\n model: {\n value: _vm.show.config.paused,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"paused\", $$v)\n },\n expression: \"show.config.paused\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"pause this show (Medusa will not download episodes)\"\n )\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group2\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Format Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Air by date\",\n id: \"air_by_date\"\n },\n model: {\n value: _vm.show.config.airByDate,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"airByDate\", $$v)\n },\n expression: \"show.config.airByDate\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"check if the show is released as Show.03.02.2010 rather than Show.S02E03\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"p\",\n { staticStyle: { color: \"rgb(255, 0, 0)\" } },\n [\n _vm._v(\n \"In case of an air date conflict between regular and special episodes, the later will be ignored.\"\n )\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Anime\", id: \"anime\" },\n model: {\n value: _vm.show.config.anime,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"anime\", $$v)\n },\n expression: \"show.config.anime\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"enable if the show is Anime and episodes are released as Show.265 rather than Show.S02E03\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.show.config.anime\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"anidbReleaseGroup\",\n label: \"Release Groups\"\n }\n },\n [\n _vm.show.title\n ? _c(\"anidb-release-group-ui\", {\n staticClass: \"max-width\",\n attrs: {\n \"show-name\": _vm.show.title,\n blacklist:\n _vm.show.config.release.blacklist,\n whitelist:\n _vm.show.config.release.whitelist\n },\n on: {\n change:\n _vm.onChangeReleaseGroupsAnime\n }\n })\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Sports\", id: \"sports\" },\n model: {\n value: _vm.show.config.sports,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"sports\", $$v)\n },\n expression: \"show.config.sports\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"enable if the show is a sporting or MMA event released as Show.03.02.2010 rather than Show.S02E03\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"p\",\n { staticStyle: { color: \"rgb(255, 0, 0)\" } },\n [\n _vm._v(\n \"In case of an air date conflict between regular and special episodes, the later will be ignored.\"\n )\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Season\",\n id: \"season_folders\"\n },\n model: {\n value: _vm.show.config.seasonFolders,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"seasonFolders\",\n $$v\n )\n },\n expression: \"show.config.seasonFolders\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"group episodes by season folder (disable to store in a single folder)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Scene Numbering\",\n id: \"scene_numbering\"\n },\n model: {\n value: _vm.show.config.scene,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"scene\", $$v)\n },\n expression: \"show.config.scene\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"search by scene numbering (disable to search by indexer numbering)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"DVD Order\", id: \"dvd_order\" },\n model: {\n value: _vm.show.config.dvdOrder,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"dvdOrder\", $$v)\n },\n expression: \"show.config.dvdOrder\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"use the DVD order instead of the air order\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n 'A \"Force Full Update\" is necessary, and if you have existing episodes you need to sort them manually.'\n )\n ])\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group3\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Advanced Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"rls_ignore_words\",\n label: \"Ignored words\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\":\n _vm.show.config.release.ignoredWords\n },\n on: { change: _vm.onChangeIgnoredWords }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n \"Search results with one or more words from this list will be ignored.\"\n )\n ])\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Exclude ignored words\",\n id: \"ignored_words_exclude\"\n },\n model: {\n value:\n _vm.show.config.release.ignoredWordsExclude,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config.release,\n \"ignoredWordsExclude\",\n $$v\n )\n },\n expression:\n \"show.config.release.ignoredWordsExclude\"\n }\n },\n [\n _c(\"div\", [\n _vm._v(\n \"Use the Ignored Words list to exclude these from the global ignored list\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Currently the effective list is: \" +\n _vm._s(_vm.effectiveIgnored)\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"rls_require_words\",\n label: \"Required words\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\":\n _vm.show.config.release.requiredWords\n },\n on: { change: _vm.onChangeRequiredWords }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Search results with no words from this list will be ignored.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Exclude required words\",\n id: \"required_words_exclude\"\n },\n model: {\n value:\n _vm.show.config.release\n .requiredWordsExclude,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config.release,\n \"requiredWordsExclude\",\n $$v\n )\n },\n expression:\n \"show.config.release.requiredWordsExclude\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Use the Required Words list to exclude these from the global required words list\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Currently the effective list is: \" +\n _vm._s(_vm.effectiveRequired)\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"SceneName\",\n label: \"Scene Exception\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\": _vm.show.config.aliases\n },\n on: { change: _vm.onChangeAliases }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"This will affect episode search on NZB and torrent providers. This list appends to the original show name.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"config-textbox-number\", {\n attrs: {\n min: -168,\n max: 168,\n step: 1,\n label: \"Airdate offset\",\n id: \"airdate_offset\",\n explanations: [\n \"Amount of hours we want to start searching early (-1) or late (1) for new episodes.\",\n \"This only applies to daily searches.\"\n ]\n },\n model: {\n value: _vm.show.config.airdateOffset,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"airdateOffset\",\n $$v\n )\n },\n expression: \"show.config.airdateOffset\"\n }\n })\n ],\n 1\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa pull-left button\",\n attrs: {\n id: \"submit\",\n type: \"submit\",\n disabled: _vm.saving || !_vm.showLoaded\n },\n domProps: { value: _vm.saveButton }\n })\n ]\n )\n ]\n )\n : _vm._e()\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/edit-show.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"config-content\" } },\n [\n _vm.showLoaded\n ? _c(\"backstretch\", { attrs: { slug: _vm.show.id.slug } })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showLoaded\n ? _c(\n \"h1\",\n { staticClass: \"header\" },\n [\n _vm._v(\"\\n Edit Show - \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"home/displayShow?indexername=\" +\n _vm.indexer +\n \"&seriesid=\" +\n _vm.id\n }\n },\n [_vm._v(_vm._s(_vm.show.title))]\n )\n ],\n 1\n )\n : _c(\n \"h1\",\n { staticClass: \"header\" },\n [\n _vm._v(\"\\n Edit Show\"),\n !_vm.loadError ? [_vm._v(\" (Loading...)\")] : _vm._e()\n ],\n 2\n ),\n _vm._v(\" \"),\n _vm.loadError\n ? _c(\"h3\", [_vm._v(\"Error loading show: \" + _vm._s(_vm.loadError))])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showLoaded\n ? _c(\n \"div\",\n {\n class: { summaryFanArt: _vm.layout.fanartBackground },\n attrs: { id: \"config\" }\n },\n [\n _c(\n \"form\",\n {\n staticClass: \"form-horizontal\",\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.saveShow(\"all\")\n }\n }\n },\n [\n _c(\"div\", { attrs: { id: \"config-components\" } }, [\n _c(\"ul\", [\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group1\" } },\n [_vm._v(\"Main\")]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group2\" } },\n [_vm._v(\"Format\")]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group3\" } },\n [_vm._v(\"Advanced\")]\n )\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group1\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Main Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"location\",\n label: \"Show Location\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n name: \"location\",\n title: \"Select Show Location\",\n \"initial-dir\": _vm.show.config.location\n },\n on: {\n update: function($event) {\n _vm.show.config.location = $event\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"qualityPreset\",\n label: \"Quality\"\n }\n },\n [\n _c(\"quality-chooser\", {\n attrs: {\n \"overall-quality\": _vm.combinedQualities,\n \"show-slug\": _vm.show.id.slug\n },\n on: {\n \"update:quality:allowed\": function($event) {\n _vm.show.config.qualities.allowed = $event\n },\n \"update:quality:preferred\": function(\n $event\n ) {\n _vm.show.config.qualities.preferred = $event\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"defaultEpStatusSelect\",\n label: \"Default Episode Status\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.show.config.defaultEpisodeStatus,\n expression:\n \"show.config.defaultEpisodeStatus\"\n }\n ],\n staticClass:\n \"form-control form-control-inline input-sm\",\n attrs: {\n name: \"defaultEpStatus\",\n id: \"defaultEpStatusSelect\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.show.config,\n \"defaultEpisodeStatus\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(\n _vm.defaultEpisodeStatusOptions,\n function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.name }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(option.name) +\n \"\\n \"\n )\n ]\n )\n }\n ),\n 0\n ),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"This will set the status for future episodes.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"indexerLangSelect\",\n label: \"Info Language\"\n }\n },\n [\n _c(\"language-select\", {\n staticClass:\n \"form-control form-control-inline input-sm\",\n attrs: {\n id: \"indexerLangSelect\",\n language: _vm.show.language,\n available: _vm.availableLanguages,\n name: \"indexer_lang\"\n },\n on: { \"update-language\": _vm.updateLanguage }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n \"This only applies to episode filenames and the contents of metadata files.\"\n )\n ])\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Subtitles\", id: \"subtitles\" },\n model: {\n value: _vm.show.config.subtitlesEnabled,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"subtitlesEnabled\",\n $$v\n )\n },\n expression: \"show.config.subtitlesEnabled\"\n }\n },\n [_c(\"span\", [_vm._v(\"search for subtitles\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Paused\", id: \"paused\" },\n model: {\n value: _vm.show.config.paused,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"paused\", $$v)\n },\n expression: \"show.config.paused\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"pause this show (Medusa will not download episodes)\"\n )\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group2\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Format Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n value: _vm.show.config.airByDate,\n label: \"Air by date\",\n id: \"airByDate\"\n },\n on: { input: _vm.changeFormat }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"check if the show is released as Show.03.02.2010 rather than Show.S02E03\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"p\",\n { staticStyle: { color: \"rgb(255, 0, 0)\" } },\n [\n _vm._v(\n \"In case of an air date conflict between regular and special episodes, the later will be ignored.\"\n )\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n value: _vm.show.config.anime,\n label: \"Anime\",\n id: \"anime\"\n },\n on: { input: _vm.changeFormat }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"enable if the show is Anime and episodes are released as Show.265 rather than Show.S02E03\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.show.config.anime\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"anidbReleaseGroup\",\n label: \"Release Groups\"\n }\n },\n [\n _vm.show.title\n ? _c(\"anidb-release-group-ui\", {\n staticClass: \"max-width\",\n attrs: {\n \"show-name\": _vm.show.title,\n blacklist:\n _vm.show.config.release.blacklist,\n whitelist:\n _vm.show.config.release.whitelist\n },\n on: {\n change:\n _vm.onChangeReleaseGroupsAnime\n }\n })\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n value: _vm.show.config.sports,\n label: \"Sports\",\n id: \"sports\"\n },\n on: { input: _vm.changeFormat }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"enable if the show is a sporting or MMA event released as Show.03.02.2010 rather than Show.S02E03\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"p\",\n { staticStyle: { color: \"rgb(255, 0, 0)\" } },\n [\n _vm._v(\n \"In case of an air date conflict between regular and special episodes, the later will be ignored.\"\n )\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Search templates\",\n id: \"templates\"\n },\n model: {\n value: _vm.show.config.templates,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"templates\", $$v)\n },\n expression: \"show.config.templates\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\"enable advanced search templates\"),\n _vm.selectedFormat\n ? _c(\"span\", [\n _vm._v(\n \" in addition to the selected chosen format \"\n ),\n _c(\"strong\", [\n _vm._v(_vm._s(_vm.selectedFormat))\n ])\n ])\n : _vm._e()\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.show.config.templates\n ? _c(\"search-template-container\", {\n attrs: {\n format: _vm.selectedFormat,\n templates: _vm.show.config.searchTemplates\n }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Season\",\n id: \"season_folders\"\n },\n model: {\n value: _vm.show.config.seasonFolders,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"seasonFolders\",\n $$v\n )\n },\n expression: \"show.config.seasonFolders\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"group episodes by season folder (disable to store in a single folder)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Scene Numbering\",\n id: \"scene_numbering\"\n },\n model: {\n value: _vm.show.config.scene,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"scene\", $$v)\n },\n expression: \"show.config.scene\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"search by scene numbering (disable to search by indexer numbering)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"DVD Order\", id: \"dvd_order\" },\n model: {\n value: _vm.show.config.dvdOrder,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"dvdOrder\", $$v)\n },\n expression: \"show.config.dvdOrder\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"use the DVD order instead of the air order\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n 'A \"Force Full Update\" is necessary, and if you have existing episodes you need to sort them manually.'\n )\n ])\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group3\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Advanced Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"rls_ignore_words\",\n label: \"Ignored words\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\":\n _vm.show.config.release.ignoredWords\n },\n on: { change: _vm.onChangeIgnoredWords }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n \"Search results with one or more words from this list will be ignored.\"\n )\n ])\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Exclude ignored words\",\n id: \"ignored_words_exclude\"\n },\n model: {\n value:\n _vm.show.config.release.ignoredWordsExclude,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config.release,\n \"ignoredWordsExclude\",\n $$v\n )\n },\n expression:\n \"show.config.release.ignoredWordsExclude\"\n }\n },\n [\n _c(\"div\", [\n _vm._v(\n \"Use the Ignored Words list to exclude these from the global ignored list\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Currently the effective list is: \" +\n _vm._s(_vm.effectiveIgnored)\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"rls_require_words\",\n label: \"Required words\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\":\n _vm.show.config.release.requiredWords\n },\n on: { change: _vm.onChangeRequiredWords }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Search results with no words from this list will be ignored.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Exclude required words\",\n id: \"required_words_exclude\"\n },\n model: {\n value:\n _vm.show.config.release\n .requiredWordsExclude,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config.release,\n \"requiredWordsExclude\",\n $$v\n )\n },\n expression:\n \"show.config.release.requiredWordsExclude\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Use the Required Words list to exclude these from the global required words list\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Currently the effective list is: \" +\n _vm._s(_vm.effectiveRequired)\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"SceneName\",\n label: \"Scene Exception\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\": _vm.show.config.aliases\n },\n on: { change: _vm.onChangeAliases }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"This will affect episode search on NZB and torrent providers. This list appends to the original show name.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"config-textbox-number\", {\n attrs: {\n min: -168,\n max: 168,\n step: 1,\n label: \"Airdate offset\",\n id: \"airdate_offset\",\n explanations: [\n \"Amount of hours we want to start searching early (-1) or late (1) for new episodes.\",\n \"This only applies to daily searches.\"\n ]\n },\n model: {\n value: _vm.show.config.airdateOffset,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"airdateOffset\",\n $$v\n )\n },\n expression: \"show.config.airdateOffset\"\n }\n })\n ],\n 1\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa pull-left button\",\n attrs: {\n id: \"submit\",\n type: \"submit\",\n disabled: _vm.saving || !_vm.showLoaded\n },\n domProps: { value: _vm.saveButton }\n })\n ]\n )\n ]\n )\n : _vm._e()\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/edit-show.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -1093,6 +1117,30 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ }), +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-container.vue?vue&type=template&id=25fc53c9&": +/*!***************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/helpers/search-template-container.vue?vue&type=template&id=25fc53c9& ***! + \***************************************************************************************************************************************************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"search-template-container\" } },\n [\n _vm._l(_vm.templates, function(template) {\n return _c(\n \"search-template-pattern\",\n _vm._b(\n { key: template.template },\n \"search-template-pattern\",\n { template: template, format: _vm.format },\n false\n )\n )\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"nocheck\", attrs: { id: \"naming_key\" } }, [\n _c(\"table\", { staticClass: \"Key\" }, [\n _vm._m(0),\n _vm._v(\" \"),\n _vm._m(1),\n _vm._v(\" \"),\n _c(\"tbody\", [\n _vm._m(2),\n _vm._v(\" \"),\n _vm._m(3),\n _vm._v(\" \"),\n _vm._m(4),\n _vm._v(\" \"),\n _vm._m(5),\n _vm._v(\" \"),\n _vm._m(6),\n _vm._v(\" \"),\n _vm._m(7),\n _vm._v(\" \"),\n _vm._m(8),\n _vm._v(\" \"),\n _vm._m(9),\n _vm._v(\" \"),\n _vm._m(10),\n _vm._v(\" \"),\n _vm._m(11),\n _vm._v(\" \"),\n _vm._m(12),\n _vm._v(\" \"),\n _vm._m(13),\n _vm._v(\" \"),\n _vm._m(14),\n _vm._v(\" \"),\n _vm._m(15),\n _vm._v(\" \"),\n _vm._m(16),\n _vm._v(\" \"),\n _vm._m(17),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(18),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%M\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"M\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%D\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"d\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%Y\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"yyyy\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(19),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%CM\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"M\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%CD\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"d\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%CY\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"yyyy\")))])\n ]),\n _vm._v(\" \"),\n _vm._m(20),\n _vm._v(\" \"),\n _vm._m(21),\n _vm._v(\" \"),\n _vm._m(22),\n _vm._v(\" \"),\n _vm._m(23),\n _vm._v(\" \"),\n _vm._m(24),\n _vm._v(\" \"),\n _vm._m(25),\n _vm._v(\" \"),\n _vm._m(26),\n _vm._v(\" \"),\n _vm._m(27),\n _vm._v(\" \"),\n _vm._m(28)\n ])\n ])\n ])\n ],\n 2\n )\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"thead\", [\n _c(\"tr\", [\n _c(\"th\", { staticClass: \"align-right\" }, [_vm._v(\"Meaning\")]),\n _vm._v(\" \"),\n _c(\"th\", [_vm._v(\"Pattern\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"60%\" } }, [_vm._v(\"Result\")])\n ])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tfoot\", [\n _c(\"tr\", [\n _c(\"th\", { attrs: { colspan: \"3\" } }, [\n _vm._v(\n \"Use lower case if you want lower case names (eg. %sn, %e.n, %q_n etc)\"\n )\n ])\n ])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Show Name:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%S.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show.Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%S_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show_Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Season Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%S\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"2\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0S\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"02\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"XEM Season Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%XS\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"2\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0XS\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"02\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%E\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"3\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0E\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"03\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"XEM Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%XE\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"3\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0XE\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"03\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Absolute Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%AB\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"003\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Xem Absolute Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%XAB\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"003\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Episode Name:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%EN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Episode Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%E.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Episode.Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%E_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Episode_Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Air Date:\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Post-Processing Date:\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [_c(\"b\", [_vm._v(\"Quality:\")])]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%QN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p BluRay\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%Q.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p.BluRay\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%Q_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p_BluRay\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Scene Quality:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SQN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p HDTV x264\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SQ.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p.HDTV.x264\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SQ_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p_HDTV_x264\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"i\", {\n staticClass: \"glyphicon glyphicon-info-sign\",\n attrs: { title: \"Multi-EP style is ignored\" }\n }),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Release Name:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%RN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show.Name.S02E03.HDTV.x264-RLSGROUP\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"i\", {\n staticClass: \"glyphicon glyphicon-info-sign\",\n attrs: {\n title:\n \"UNKNOWN_RELEASE_GROUP is used in place of RLSGROUP if it could not be properly detected\"\n }\n }),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Release Group:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%RG\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"RLSGROUP\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"i\", {\n staticClass: \"glyphicon glyphicon-info-sign\",\n attrs: { title: \"If episode is proper/repack add 'proper' to name.\" }\n }),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Release Type:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%RT\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"PROPER\")])\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-container.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-pattern.vue?vue&type=template&id=bec54150&": +/*!*************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/helpers/search-template-pattern.vue?vue&type=template&id=bec54150& ***! + \*************************************************************************************************************************************************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"search-template-pattern\" } }, [\n _c(\n \"div\",\n { staticClass: \"form-group\", staticStyle: { \"padding-top\": \"0\" } },\n [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-sm-10 content\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.searchTemplate.template,\n expression: \"searchTemplate.template\"\n }\n ],\n staticClass: \"form-control-inline-max input-sm max-input350\",\n attrs: { type: \"text\", name: \"search_pattern\" },\n domProps: { value: _vm.searchTemplate.template },\n on: {\n change: _vm.updateExample,\n input: [\n function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.searchTemplate, \"template\", $event.target.value)\n },\n function($event) {\n return _vm.update()\n }\n ]\n }\n })\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"form-group\", staticStyle: { \"padding-top\": \"0\" } },\n [\n _vm._m(1),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-sm-10 content\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.searchTemplateExample,\n expression: \"searchTemplateExample\"\n }\n ],\n staticClass: \"form-control-inline-max input-sm max-input350\",\n attrs: { type: \"text\", name: \"search_pattern\", disabled: \"\" },\n domProps: { value: _vm.searchTemplateExample },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.searchTemplateExample = $event.target.value\n }\n }\n })\n ])\n ]\n )\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"label\", { staticClass: \"col-sm-2 control-label\" }, [\n _c(\"span\", [_vm._v(\" \")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"label\", { staticClass: \"col-sm-2 control-label\" }, [\n _c(\"span\", [_vm._v(\" \")])\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-pattern.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/select-list.vue?vue&type=template&id=466bd1e5&scoped=true&": /*!*************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/helpers/select-list.vue?vue&type=template&id=466bd1e5&scoped=true& ***! @@ -2358,11 +2406,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /*!*****************************************!*\ !*** ./src/components/helpers/index.js ***! \*****************************************/ -/*! exports provided: AppLink, Asset, ConfigTemplate, ConfigTextboxNumber, ConfigTextbox, ConfigToggleSlider, FileBrowser, LanguageSelect, NamePattern, PlotInfo, QualityChooser, QualityPill, ScrollButtons, SelectList, ShowSelector, StateSwitch */ +/*! exports provided: AppLink, Asset, ConfigTemplate, ConfigTextboxNumber, ConfigTextbox, ConfigToggleSlider, FileBrowser, LanguageSelect, NamePattern, PlotInfo, QualityChooser, QualityPill, ScrollButtons, SearchTemplateContainer, SearchTemplatePattern, SelectList, ShowSelector, StateSwitch */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_link_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app-link.vue */ \"./src/components/helpers/app-link.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppLink\", function() { return _app_link_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _asset_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./asset.vue */ \"./src/components/helpers/asset.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Asset\", function() { return _asset_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _config_template_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config-template.vue */ \"./src/components/helpers/config-template.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTemplate\", function() { return _config_template_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _config_textbox_number_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config-textbox-number.vue */ \"./src/components/helpers/config-textbox-number.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextboxNumber\", function() { return _config_textbox_number_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _config_textbox_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config-textbox.vue */ \"./src/components/helpers/config-textbox.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextbox\", function() { return _config_textbox_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _config_toggle_slider_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./config-toggle-slider.vue */ \"./src/components/helpers/config-toggle-slider.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigToggleSlider\", function() { return _config_toggle_slider_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _file_browser_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./file-browser.vue */ \"./src/components/helpers/file-browser.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FileBrowser\", function() { return _file_browser_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _language_select_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./language-select.vue */ \"./src/components/helpers/language-select.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LanguageSelect\", function() { return _language_select_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _name_pattern_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./name-pattern.vue */ \"./src/components/helpers/name-pattern.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NamePattern\", function() { return _name_pattern_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _plot_info_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./plot-info.vue */ \"./src/components/helpers/plot-info.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PlotInfo\", function() { return _plot_info_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _quality_chooser_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./quality-chooser.vue */ \"./src/components/helpers/quality-chooser.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityChooser\", function() { return _quality_chooser_vue__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _quality_pill_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./quality-pill.vue */ \"./src/components/helpers/quality-pill.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityPill\", function() { return _quality_pill_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _scroll_buttons_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./scroll-buttons.vue */ \"./src/components/helpers/scroll-buttons.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ScrollButtons\", function() { return _scroll_buttons_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _select_list_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./select-list.vue */ \"./src/components/helpers/select-list.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SelectList\", function() { return _select_list_vue__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _show_selector_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./show-selector.vue */ \"./src/components/helpers/show-selector.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ShowSelector\", function() { return _show_selector_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _state_switch_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./state-switch.vue */ \"./src/components/helpers/state-switch.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StateSwitch\", function() { return _state_switch_vue__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/index.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_link_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app-link.vue */ \"./src/components/helpers/app-link.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppLink\", function() { return _app_link_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _asset_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./asset.vue */ \"./src/components/helpers/asset.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Asset\", function() { return _asset_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _config_template_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config-template.vue */ \"./src/components/helpers/config-template.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTemplate\", function() { return _config_template_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _config_textbox_number_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config-textbox-number.vue */ \"./src/components/helpers/config-textbox-number.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextboxNumber\", function() { return _config_textbox_number_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _config_textbox_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config-textbox.vue */ \"./src/components/helpers/config-textbox.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextbox\", function() { return _config_textbox_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _config_toggle_slider_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./config-toggle-slider.vue */ \"./src/components/helpers/config-toggle-slider.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigToggleSlider\", function() { return _config_toggle_slider_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _file_browser_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./file-browser.vue */ \"./src/components/helpers/file-browser.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FileBrowser\", function() { return _file_browser_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _language_select_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./language-select.vue */ \"./src/components/helpers/language-select.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LanguageSelect\", function() { return _language_select_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _name_pattern_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./name-pattern.vue */ \"./src/components/helpers/name-pattern.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NamePattern\", function() { return _name_pattern_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _plot_info_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./plot-info.vue */ \"./src/components/helpers/plot-info.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PlotInfo\", function() { return _plot_info_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _quality_chooser_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./quality-chooser.vue */ \"./src/components/helpers/quality-chooser.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityChooser\", function() { return _quality_chooser_vue__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _quality_pill_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./quality-pill.vue */ \"./src/components/helpers/quality-pill.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityPill\", function() { return _quality_pill_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _scroll_buttons_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./scroll-buttons.vue */ \"./src/components/helpers/scroll-buttons.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ScrollButtons\", function() { return _scroll_buttons_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _search_template_container_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./search-template-container.vue */ \"./src/components/helpers/search-template-container.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SearchTemplateContainer\", function() { return _search_template_container_vue__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _search_template_pattern_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./search-template-pattern.vue */ \"./src/components/helpers/search-template-pattern.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SearchTemplatePattern\", function() { return _search_template_pattern_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _select_list_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./select-list.vue */ \"./src/components/helpers/select-list.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SelectList\", function() { return _select_list_vue__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _show_selector_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./show-selector.vue */ \"./src/components/helpers/show-selector.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ShowSelector\", function() { return _show_selector_vue__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _state_switch_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./state-switch.vue */ \"./src/components/helpers/state-switch.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StateSwitch\", function() { return _state_switch_vue__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/index.js?"); /***/ }), @@ -2630,6 +2678,78 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ }), +/***/ "./src/components/helpers/search-template-container.vue": +/*!**************************************************************!*\ + !*** ./src/components/helpers/search-template-container.vue ***! + \**************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _search_template_container_vue_vue_type_template_id_25fc53c9___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./search-template-container.vue?vue&type=template&id=25fc53c9& */ \"./src/components/helpers/search-template-container.vue?vue&type=template&id=25fc53c9&\");\n/* harmony import */ var _search_template_container_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./search-template-container.vue?vue&type=script&lang=js& */ \"./src/components/helpers/search-template-container.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _search_template_container_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _search_template_container_vue_vue_type_template_id_25fc53c9___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _search_template_container_vue_vue_type_template_id_25fc53c9___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/helpers/search-template-container.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-container.vue?"); + +/***/ }), + +/***/ "./src/components/helpers/search-template-container.vue?vue&type=script&lang=js&": +/*!***************************************************************************************!*\ + !*** ./src/components/helpers/search-template-container.vue?vue&type=script&lang=js& ***! + \***************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_container_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./search-template-container.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-container.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_container_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n//# sourceURL=webpack:///./src/components/helpers/search-template-container.vue?"); + +/***/ }), + +/***/ "./src/components/helpers/search-template-container.vue?vue&type=template&id=25fc53c9&": +/*!*********************************************************************************************!*\ + !*** ./src/components/helpers/search-template-container.vue?vue&type=template&id=25fc53c9& ***! + \*********************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_container_vue_vue_type_template_id_25fc53c9___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./search-template-container.vue?vue&type=template&id=25fc53c9& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-container.vue?vue&type=template&id=25fc53c9&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_container_vue_vue_type_template_id_25fc53c9___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_container_vue_vue_type_template_id_25fc53c9___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-container.vue?"); + +/***/ }), + +/***/ "./src/components/helpers/search-template-pattern.vue": +/*!************************************************************!*\ + !*** ./src/components/helpers/search-template-pattern.vue ***! + \************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _search_template_pattern_vue_vue_type_template_id_bec54150___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./search-template-pattern.vue?vue&type=template&id=bec54150& */ \"./src/components/helpers/search-template-pattern.vue?vue&type=template&id=bec54150&\");\n/* harmony import */ var _search_template_pattern_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./search-template-pattern.vue?vue&type=script&lang=js& */ \"./src/components/helpers/search-template-pattern.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _search_template_pattern_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _search_template_pattern_vue_vue_type_template_id_bec54150___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _search_template_pattern_vue_vue_type_template_id_bec54150___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/helpers/search-template-pattern.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-pattern.vue?"); + +/***/ }), + +/***/ "./src/components/helpers/search-template-pattern.vue?vue&type=script&lang=js&": +/*!*************************************************************************************!*\ + !*** ./src/components/helpers/search-template-pattern.vue?vue&type=script&lang=js& ***! + \*************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_pattern_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./search-template-pattern.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-pattern.vue?vue&type=script&lang=js&\");\n/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_pattern_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"]); \n\n//# sourceURL=webpack:///./src/components/helpers/search-template-pattern.vue?"); + +/***/ }), + +/***/ "./src/components/helpers/search-template-pattern.vue?vue&type=template&id=bec54150&": +/*!*******************************************************************************************!*\ + !*** ./src/components/helpers/search-template-pattern.vue?vue&type=template&id=bec54150& ***! + \*******************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_pattern_vue_vue_type_template_id_bec54150___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./search-template-pattern.vue?vue&type=template&id=bec54150& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-pattern.vue?vue&type=template&id=bec54150&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_pattern_vue_vue_type_template_id_bec54150___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_search_template_pattern_vue_vue_type_template_id_bec54150___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-pattern.vue?"); + +/***/ }), + /***/ "./src/components/helpers/select-list.vue": /*!************************************************!*\ !*** ./src/components/helpers/select-list.vue ***! @@ -2862,11 +2982,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _404 /*!*********************************!*\ !*** ./src/components/index.js ***! \*********************************/ -/*! exports provided: AddRecommended, AddShowOptions, AddShows, AnidbReleaseGroupUi, AppFooter, AppHeader, Backstretch, Config, ConfigGeneral, ConfigPostProcessing, ConfigNotifications, ConfigSearch, DisplayShow, EditShow, History, Home, IRC, Login, Logs, ManualPostProcess, RootDirs, Schedule, ShowHeader, SnatchSelection, Status, SubMenu, SubtitleSearch, NotFound, AppLink, Asset, ConfigTemplate, ConfigTextboxNumber, ConfigTextbox, ConfigToggleSlider, FileBrowser, LanguageSelect, NamePattern, PlotInfo, QualityChooser, QualityPill, ScrollButtons, SelectList, ShowSelector, StateSwitch */ +/*! exports provided: AddRecommended, AddShowOptions, AddShows, AnidbReleaseGroupUi, AppFooter, AppHeader, Backstretch, Config, ConfigGeneral, ConfigPostProcessing, ConfigNotifications, ConfigSearch, DisplayShow, EditShow, History, Home, IRC, Login, Logs, ManualPostProcess, RootDirs, Schedule, ShowHeader, SnatchSelection, Status, SubMenu, SubtitleSearch, NotFound, AppLink, Asset, ConfigTemplate, ConfigTextboxNumber, ConfigTextbox, ConfigToggleSlider, FileBrowser, LanguageSelect, NamePattern, PlotInfo, QualityChooser, QualityPill, ScrollButtons, SearchTemplateContainer, SearchTemplatePattern, SelectList, ShowSelector, StateSwitch */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _add_recommended_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add-recommended.vue */ \"./src/components/add-recommended.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AddRecommended\", function() { return _add_recommended_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _add_show_options_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./add-show-options.vue */ \"./src/components/add-show-options.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AddShowOptions\", function() { return _add_show_options_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _add_shows_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./add-shows.vue */ \"./src/components/add-shows.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AddShows\", function() { return _add_shows_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./anidb-release-group-ui.vue */ \"./src/components/anidb-release-group-ui.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AnidbReleaseGroupUi\", function() { return _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _app_footer_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./app-footer.vue */ \"./src/components/app-footer.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppFooter\", function() { return _app_footer_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _app_header_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./app-header.vue */ \"./src/components/app-header.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppHeader\", function() { return _app_header_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _backstretch_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./backstretch.vue */ \"./src/components/backstretch.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Backstretch\", function() { return _backstretch_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _config_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./config.vue */ \"./src/components/config.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Config\", function() { return _config_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _config_general_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./config-general.vue */ \"./src/components/config-general.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigGeneral\", function() { return _config_general_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _config_post_processing_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./config-post-processing.vue */ \"./src/components/config-post-processing.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigPostProcessing\", function() { return _config_post_processing_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _config_notifications_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./config-notifications.vue */ \"./src/components/config-notifications.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigNotifications\", function() { return _config_notifications_vue__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _config_search_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./config-search.vue */ \"./src/components/config-search.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigSearch\", function() { return _config_search_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _display_show_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./display-show.vue */ \"./src/components/display-show.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DisplayShow\", function() { return _display_show_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _edit_show_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./edit-show.vue */ \"./src/components/edit-show.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EditShow\", function() { return _edit_show_vue__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _history_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./history.vue */ \"./src/components/history.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"History\", function() { return _history_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _home_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./home.vue */ \"./src/components/home.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Home\", function() { return _home_vue__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _irc_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./irc.vue */ \"./src/components/irc.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IRC\", function() { return _irc_vue__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _login_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./login.vue */ \"./src/components/login.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Login\", function() { return _login_vue__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _logs_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./logs.vue */ \"./src/components/logs.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Logs\", function() { return _logs_vue__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _manual_post_process_vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./manual-post-process.vue */ \"./src/components/manual-post-process.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ManualPostProcess\", function() { return _manual_post_process_vue__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _root_dirs_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./root-dirs.vue */ \"./src/components/root-dirs.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RootDirs\", function() { return _root_dirs_vue__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _schedule_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./schedule.vue */ \"./src/components/schedule.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Schedule\", function() { return _schedule_vue__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony import */ var _show_header_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./show-header.vue */ \"./src/components/show-header.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ShowHeader\", function() { return _show_header_vue__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony import */ var _snatch_selection_vue__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./snatch-selection.vue */ \"./src/components/snatch-selection.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SnatchSelection\", function() { return _snatch_selection_vue__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony import */ var _status_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./status.vue */ \"./src/components/status.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Status\", function() { return _status_vue__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _sub_menu_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./sub-menu.vue */ \"./src/components/sub-menu.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SubMenu\", function() { return _sub_menu_vue__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _subtitle_search_vue__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./subtitle-search.vue */ \"./src/components/subtitle-search.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SubtitleSearch\", function() { return _subtitle_search_vue__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _http__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./http */ \"./src/components/http/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NotFound\", function() { return _http__WEBPACK_IMPORTED_MODULE_27__[\"NotFound\"]; });\n\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppLink\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"AppLink\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Asset\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"Asset\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTemplate\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigTemplate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextboxNumber\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigTextboxNumber\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextbox\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigTextbox\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigToggleSlider\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigToggleSlider\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FileBrowser\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"FileBrowser\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LanguageSelect\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"LanguageSelect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NamePattern\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"NamePattern\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PlotInfo\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"PlotInfo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityChooser\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"QualityChooser\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityPill\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"QualityPill\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ScrollButtons\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ScrollButtons\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SelectList\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"SelectList\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ShowSelector\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ShowSelector\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StateSwitch\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"StateSwitch\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./src/components/index.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _add_recommended_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add-recommended.vue */ \"./src/components/add-recommended.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AddRecommended\", function() { return _add_recommended_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _add_show_options_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./add-show-options.vue */ \"./src/components/add-show-options.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AddShowOptions\", function() { return _add_show_options_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _add_shows_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./add-shows.vue */ \"./src/components/add-shows.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AddShows\", function() { return _add_shows_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./anidb-release-group-ui.vue */ \"./src/components/anidb-release-group-ui.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AnidbReleaseGroupUi\", function() { return _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _app_footer_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./app-footer.vue */ \"./src/components/app-footer.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppFooter\", function() { return _app_footer_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _app_header_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./app-header.vue */ \"./src/components/app-header.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppHeader\", function() { return _app_header_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _backstretch_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./backstretch.vue */ \"./src/components/backstretch.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Backstretch\", function() { return _backstretch_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _config_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./config.vue */ \"./src/components/config.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Config\", function() { return _config_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _config_general_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./config-general.vue */ \"./src/components/config-general.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigGeneral\", function() { return _config_general_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _config_post_processing_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./config-post-processing.vue */ \"./src/components/config-post-processing.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigPostProcessing\", function() { return _config_post_processing_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _config_notifications_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./config-notifications.vue */ \"./src/components/config-notifications.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigNotifications\", function() { return _config_notifications_vue__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _config_search_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./config-search.vue */ \"./src/components/config-search.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigSearch\", function() { return _config_search_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _display_show_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./display-show.vue */ \"./src/components/display-show.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DisplayShow\", function() { return _display_show_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _edit_show_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./edit-show.vue */ \"./src/components/edit-show.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EditShow\", function() { return _edit_show_vue__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _history_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./history.vue */ \"./src/components/history.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"History\", function() { return _history_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _home_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./home.vue */ \"./src/components/home.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Home\", function() { return _home_vue__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _irc_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./irc.vue */ \"./src/components/irc.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IRC\", function() { return _irc_vue__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _login_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./login.vue */ \"./src/components/login.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Login\", function() { return _login_vue__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _logs_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./logs.vue */ \"./src/components/logs.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Logs\", function() { return _logs_vue__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _manual_post_process_vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./manual-post-process.vue */ \"./src/components/manual-post-process.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ManualPostProcess\", function() { return _manual_post_process_vue__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _root_dirs_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./root-dirs.vue */ \"./src/components/root-dirs.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RootDirs\", function() { return _root_dirs_vue__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _schedule_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./schedule.vue */ \"./src/components/schedule.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Schedule\", function() { return _schedule_vue__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony import */ var _show_header_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./show-header.vue */ \"./src/components/show-header.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ShowHeader\", function() { return _show_header_vue__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony import */ var _snatch_selection_vue__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./snatch-selection.vue */ \"./src/components/snatch-selection.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SnatchSelection\", function() { return _snatch_selection_vue__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony import */ var _status_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./status.vue */ \"./src/components/status.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Status\", function() { return _status_vue__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _sub_menu_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./sub-menu.vue */ \"./src/components/sub-menu.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SubMenu\", function() { return _sub_menu_vue__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _subtitle_search_vue__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./subtitle-search.vue */ \"./src/components/subtitle-search.vue\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SubtitleSearch\", function() { return _subtitle_search_vue__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _http__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./http */ \"./src/components/http/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NotFound\", function() { return _http__WEBPACK_IMPORTED_MODULE_27__[\"NotFound\"]; });\n\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AppLink\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"AppLink\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Asset\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"Asset\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTemplate\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigTemplate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextboxNumber\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigTextboxNumber\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigTextbox\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigTextbox\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigToggleSlider\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ConfigToggleSlider\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FileBrowser\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"FileBrowser\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LanguageSelect\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"LanguageSelect\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NamePattern\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"NamePattern\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PlotInfo\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"PlotInfo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityChooser\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"QualityChooser\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QualityPill\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"QualityPill\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ScrollButtons\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ScrollButtons\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SearchTemplateContainer\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"SearchTemplateContainer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SearchTemplatePattern\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"SearchTemplatePattern\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SelectList\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"SelectList\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ShowSelector\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"ShowSelector\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StateSwitch\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_28__[\"StateSwitch\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./src/components/index.js?"); /***/ }), @@ -3418,7 +3538,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mut /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\nconst state = {\n show: {\n airs: null,\n airsFormatValid: null,\n akas: null,\n cache: null,\n classification: null,\n seasonCount: [],\n config: {\n airByDate: null,\n aliases: [],\n anime: null,\n defaultEpisodeStatus: null,\n dvdOrder: null,\n location: null,\n locationValid: null,\n paused: null,\n qualities: {\n allowed: [],\n preferred: []\n },\n release: {\n requiredWords: [],\n ignoredWords: [],\n blacklist: [],\n whitelist: [],\n requiredWordsExclude: null,\n ignoredWordsExclude: null\n },\n scene: null,\n seasonFolders: null,\n sports: null,\n subtitlesEnabled: null,\n airdateOffset: null\n },\n countries: null,\n genres: [],\n id: {\n tvdb: null,\n slug: null\n },\n indexer: null,\n imdbInfo: {\n akas: null,\n certificates: null,\n countries: null,\n countryCodes: null,\n genres: null,\n imdbId: null,\n imdbInfoId: null,\n indexer: null,\n indexerId: null,\n lastUpdate: null,\n plot: null,\n rating: null,\n runtimes: null,\n title: null,\n votes: null\n },\n language: null,\n network: null,\n nextAirDate: null,\n plot: null,\n rating: {\n imdb: {\n rating: null,\n votes: null\n }\n },\n runtime: null,\n showType: null,\n status: null,\n title: null,\n type: null,\n year: {},\n size: null,\n // ===========================\n // Detailed (`?detailed=true`)\n // ===========================\n showQueueStatus: [],\n xemNumbering: [],\n sceneAbsoluteNumbering: [],\n allSceneExceptions: [],\n xemAbsoluteNumbering: [],\n sceneNumbering: [],\n // ===========================\n // Episodes (`?episodes=true`)\n // ===========================\n // Seasons array is added to the show object under this query,\n // but we currently check to see if this property is defined before fetching the show with `?episodes=true`.\n // seasons: [],\n episodeCount: null\n }\n};\nconst mutations = {};\nconst getters = {};\nconst actions = {};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack:///./src/store/modules/defaults.js?"); +eval("__webpack_require__.r(__webpack_exports__);\nconst state = {\n show: {\n airs: null,\n airsFormatValid: null,\n akas: null,\n cache: null,\n classification: null,\n seasonCount: [],\n config: {\n airByDate: null,\n aliases: [],\n anime: null,\n defaultEpisodeStatus: null,\n dvdOrder: null,\n location: null,\n locationValid: null,\n paused: null,\n qualities: {\n allowed: [],\n preferred: []\n },\n release: {\n requiredWords: [],\n ignoredWords: [],\n blacklist: [],\n whitelist: [],\n requiredWordsExclude: null,\n ignoredWordsExclude: null\n },\n scene: null,\n seasonFolders: null,\n sports: null,\n subtitlesEnabled: null,\n airdateOffset: null,\n templates: null,\n searchTemplates: []\n },\n countries: null,\n genres: [],\n id: {\n tvdb: null,\n slug: null\n },\n indexer: null,\n imdbInfo: {\n akas: null,\n certificates: null,\n countries: null,\n countryCodes: null,\n genres: null,\n imdbId: null,\n imdbInfoId: null,\n indexer: null,\n indexerId: null,\n lastUpdate: null,\n plot: null,\n rating: null,\n runtimes: null,\n title: null,\n votes: null\n },\n language: null,\n network: null,\n nextAirDate: null,\n plot: null,\n rating: {\n imdb: {\n rating: null,\n votes: null\n }\n },\n runtime: null,\n showType: null,\n status: null,\n title: null,\n type: null,\n year: {},\n size: null,\n // ===========================\n // Detailed (`?detailed=true`)\n // ===========================\n showQueueStatus: [],\n xemNumbering: [],\n sceneAbsoluteNumbering: [],\n allSceneExceptions: [],\n xemAbsoluteNumbering: [],\n sceneNumbering: [],\n // ===========================\n // Episodes (`?episodes=true`)\n // ===========================\n // Seasons array is added to the show object under this query,\n // but we currently check to see if this property is defined before fetching the show with `?episodes=true`.\n // seasons: [],\n episodeCount: null\n }\n};\nconst mutations = {};\nconst getters = {};\nconst actions = {};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack:///./src/store/modules/defaults.js?"); /***/ }), From 388938ec08d3fb010e31273c252d9ebb4eb0c65b Mon Sep 17 00:00:00 2001 From: P0psicles Date: Tue, 18 Feb 2020 08:42:20 +0100 Subject: [PATCH 051/122] Add property aliases_to_json because of the new structure of exceptions. --- medusa/tv/series.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/medusa/tv/series.py b/medusa/tv/series.py index cc034ea270..fc0e26b2d1 100644 --- a/medusa/tv/series.py +++ b/medusa/tv/series.py @@ -609,6 +609,16 @@ def aliases(self, exceptions): update_scene_exceptions(self, exceptions) build_name_cache(self) + @property + def aliases_to_json(self): + """Return aliases as a dict.""" + return [{ + 'indexer': alias.indexer, + 'season': alias.season, + 'seriesId': alias.series_id, + 'seriesName': alias.series_name + } for alias in self.aliases] + @property def xem_numbering(self): """Return series episode xem numbering.""" @@ -2163,7 +2173,7 @@ def to_json(self, detailed=False, episodes=False): data['config']['templates'] = self.use_templates data['config']['paused'] = bool(self.paused) data['config']['defaultEpisodeStatus'] = self.default_ep_status_name - data['config']['aliases'] = [_._asdict() for _ in self.aliases] + data['config']['aliases'] = self.aliases_to_json data['config']['release'] = {} data['config']['release']['ignoredWords'] = self.release_ignore_words data['config']['release']['requiredWords'] = self.release_required_words From 0eb6601d757a3a1e7ca2610c83c29052431cf0ec Mon Sep 17 00:00:00 2001 From: P0psicles Date: Tue, 18 Feb 2020 08:43:09 +0100 Subject: [PATCH 052/122] Fix aliases in edit-show.vue because of new structure. --- .../slim/src/components/edit-show.vue | 6 +- .../helpers/search-template-container.vue | 543 ++++++++++-------- .../helpers/search-template-pattern.vue | 466 ++++++++++----- themes/dark/assets/js/medusa-runtime.js | 84 ++- themes/light/assets/js/medusa-runtime.js | 84 ++- 5 files changed, 794 insertions(+), 389 deletions(-) diff --git a/themes-default/slim/src/components/edit-show.vue b/themes-default/slim/src/components/edit-show.vue index a1027154a0..7b3c4bd308 100644 --- a/themes-default/slim/src/components/edit-show.vue +++ b/themes-default/slim/src/components/edit-show.vue @@ -175,7 +175,7 @@

This will affect episode search on NZB and torrent providers. This list appends to the original show name.

@@ -456,7 +456,9 @@ export default { this.show.config.release.requiredWords = items.map(item => item.value); }, onChangeAliases(items) { - this.show.config.aliases = items.map(item => item.value); + this.show.config.aliases = items.map(item => { + return { seriesName: item.value } + }); }, onChangeReleaseGroupsAnime(groupNames) { this.show.config.release.whitelist = groupNames.whitelist; diff --git a/themes-default/slim/src/components/helpers/search-template-container.vue b/themes-default/slim/src/components/helpers/search-template-container.vue index 61f89398f8..80c0b00a01 100644 --- a/themes-default/slim/src/components/helpers/search-template-container.vue +++ b/themes-default/slim/src/components/helpers/search-template-container.vue @@ -1,243 +1,336 @@ diff --git a/themes-default/slim/src/components/helpers/search-template-pattern.vue b/themes-default/slim/src/components/helpers/search-template-pattern.vue index a15eb8efda..fb4d4f9967 100644 --- a/themes-default/slim/src/components/helpers/search-template-pattern.vue +++ b/themes-default/slim/src/components/helpers/search-template-pattern.vue @@ -1,166 +1,340 @@ diff --git a/themes/dark/assets/js/medusa-runtime.js b/themes/dark/assets/js/medusa-runtime.js index 092c62f205..0a847dbc9b 100644 --- a/themes/dark/assets/js/medusa-runtime.js +++ b/themes/dark/assets/js/medusa-runtime.js @@ -164,7 +164,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(f /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function($) {/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _utils_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/core */ \"./src/utils/core.js\");\n/* harmony import */ var _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./anidb-release-group-ui.vue */ \"./src/components/anidb-release-group-ui.vue\");\n/* harmony import */ var _backstretch_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./backstretch.vue */ \"./src/components/backstretch.vue\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'edit-show',\n components: {\n AnidbReleaseGroupUi: _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"AppLink\"],\n Backstretch: _backstretch_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n ConfigTemplate: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigTemplate\"],\n ConfigTextboxNumber: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigTextboxNumber\"],\n ConfigToggleSlider: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigToggleSlider\"],\n FileBrowser: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"FileBrowser\"],\n LanguageSelect: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"LanguageSelect\"],\n QualityChooser: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"QualityChooser\"],\n SearchTemplateContainer: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"SearchTemplateContainer\"],\n SelectList: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"SelectList\"]\n },\n\n metaInfo() {\n if (!this.show || !this.show.title) {\n return {\n title: 'Medusa'\n };\n }\n\n const {\n title\n } = this.show;\n return {\n title,\n titleTemplate: '%s | Medusa'\n };\n },\n\n props: {\n /**\n * Show indexer\n */\n showIndexer: {\n type: String\n },\n\n /**\n * Show id\n */\n showId: {\n type: Number\n }\n },\n\n data() {\n return {\n saving: false,\n loadError: null\n };\n },\n\n computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapState\"])({\n indexers: state => state.indexers,\n layout: state => state.layout,\n episodeStatuses: state => state.consts.statuses\n }), {}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapGetters\"])({\n show: 'getCurrentShow',\n getStatus: 'getStatus'\n }), {\n indexer() {\n return this.showIndexer || this.$route.query.indexername;\n },\n\n id() {\n return this.showId || Number(this.$route.query.seriesid) || undefined;\n },\n\n showLoaded() {\n return Boolean(this.show.id.slug);\n },\n\n defaultEpisodeStatusOptions() {\n if (this.episodeStatuses.length === 0) {\n return [];\n } // Get status objects, in this order\n\n\n return ['wanted', 'skipped', 'ignored'].map(key => this.getStatus({\n key\n }));\n },\n\n availableLanguages() {\n if (this.indexers.main.validLanguages) {\n return this.indexers.main.validLanguages.join(',');\n }\n\n return '';\n },\n\n combinedQualities() {\n const {\n allowed,\n preferred\n } = this.show.config.qualities;\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"combineQualities\"])(allowed, preferred);\n },\n\n saveButton() {\n return this.saving === false ? 'Save Changes' : 'Saving...';\n },\n\n globalIgnored() {\n return this.$store.state.search.filters.ignored.map(x => x.toLowerCase());\n },\n\n globalRequired() {\n return this.$store.state.search.filters.required.map(x => x.toLowerCase());\n },\n\n effectiveIgnored() {\n const {\n globalIgnored\n } = this;\n const showIgnored = this.show.config.release.ignoredWords.map(x => x.toLowerCase());\n\n if (this.show.config.release.ignoredWordsExclude) {\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayExclude\"])(globalIgnored, showIgnored);\n }\n\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayUnique\"])(globalIgnored.concat(showIgnored));\n },\n\n effectiveRequired() {\n const {\n globalRequired\n } = this;\n const showRequired = this.show.config.release.requiredWords.map(x => x.toLowerCase());\n\n if (this.show.config.release.requiredWordsExclude) {\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayExclude\"])(globalRequired, showRequired);\n }\n\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayUnique\"])(globalRequired.concat(showRequired));\n },\n\n selectedFormat() {\n const {\n show\n } = this;\n const {\n config\n } = show;\n return ['anime', 'sports', 'airByDate'].find(item => config[item]);\n }\n\n }),\n\n created() {\n this.loadShow();\n },\n\n updated() {\n $('#config-components').tabs();\n },\n\n methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapActions\"])(['getShow', 'setShow']), {\n async loadShow(params) {\n const {\n $store,\n id,\n indexer,\n getShow\n } = params || this; // Let's tell the store which show we currently want as current.\n\n $store.commit('currentShow', {\n indexer,\n id\n });\n\n try {\n this.loadError = null;\n await getShow({\n indexer,\n id,\n detailed: false\n });\n } catch (error) {\n const {\n data\n } = error.response;\n\n if (data && data.error) {\n this.loadError = data.error;\n } else {\n this.loadError = String(error);\n }\n }\n },\n\n async saveShow(subject) {\n const {\n show,\n showLoaded\n } = this; // We want to wait until the page has been fully loaded, before starting to save stuff.\n\n if (!showLoaded) {\n return;\n }\n\n if (!['show', 'all'].includes(subject)) {\n return;\n } // Disable the save button until we're done.\n\n\n this.saving = true;\n const showConfig = show.config;\n const data = {\n config: {\n aliases: showConfig.aliases,\n defaultEpisodeStatus: showConfig.defaultEpisodeStatus,\n dvdOrder: showConfig.dvdOrder,\n seasonFolders: showConfig.seasonFolders,\n anime: showConfig.anime,\n scene: showConfig.scene,\n sports: showConfig.sports,\n paused: showConfig.paused,\n location: showConfig.location,\n airByDate: showConfig.airByDate,\n subtitlesEnabled: showConfig.subtitlesEnabled,\n release: {\n requiredWords: showConfig.release.requiredWords,\n ignoredWords: showConfig.release.ignoredWords,\n requiredWordsExclude: showConfig.release.requiredWordsExclude,\n ignoredWordsExclude: showConfig.release.ignoredWordsExclude\n },\n qualities: {\n preferred: showConfig.qualities.preferred,\n allowed: showConfig.qualities.allowed\n },\n airdateOffset: showConfig.airdateOffset,\n templates: showConfig.templates,\n searchTemplates: showConfig.searchTemplates\n },\n language: show.language\n };\n\n if (data.config.anime) {\n data.config.release.blacklist = showConfig.release.blacklist;\n data.config.release.whitelist = showConfig.release.whitelist;\n }\n\n const {\n indexer,\n id,\n setShow\n } = this;\n\n try {\n await setShow({\n indexer,\n id,\n data\n });\n this.$snotify.success('You may need to \"Re-scan files\" or \"Force Full Update\".', 'Saved', {\n timeout: 5000\n });\n } catch (error) {\n this.$snotify.error(\"Error while trying to save \".concat(this.show.title, \": \").concat(error.message || 'Unknown'), 'Error');\n } finally {\n // Re-enable the save button.\n this.saving = false;\n }\n },\n\n onChangeIgnoredWords(items) {\n this.show.config.release.ignoredWords = items.map(item => item.value);\n },\n\n onChangeRequiredWords(items) {\n this.show.config.release.requiredWords = items.map(item => item.value);\n },\n\n onChangeAliases(items) {\n this.show.config.aliases = items.map(item => item.value);\n },\n\n onChangeReleaseGroupsAnime(groupNames) {\n this.show.config.release.whitelist = groupNames.whitelist;\n this.show.config.release.blacklist = groupNames.blacklist;\n },\n\n updateLanguage(value) {\n this.show.language = value;\n },\n\n changeFormat(value, el) {\n this.show.config[el.id] = value;\n\n if (value) {\n ['anime', 'sports', 'airByDate'].filter(item => item !== el.id).forEach(value => {\n this.show.config[value] = false;\n });\n }\n }\n\n })\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./src/components/edit-show.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function($) {/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _utils_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/core */ \"./src/utils/core.js\");\n/* harmony import */ var _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./anidb-release-group-ui.vue */ \"./src/components/anidb-release-group-ui.vue\");\n/* harmony import */ var _backstretch_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./backstretch.vue */ \"./src/components/backstretch.vue\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'edit-show',\n components: {\n AnidbReleaseGroupUi: _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"AppLink\"],\n Backstretch: _backstretch_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n ConfigTemplate: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigTemplate\"],\n ConfigTextboxNumber: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigTextboxNumber\"],\n ConfigToggleSlider: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"ConfigToggleSlider\"],\n FileBrowser: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"FileBrowser\"],\n LanguageSelect: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"LanguageSelect\"],\n QualityChooser: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"QualityChooser\"],\n SearchTemplateContainer: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"SearchTemplateContainer\"],\n SelectList: _helpers__WEBPACK_IMPORTED_MODULE_5__[\"SelectList\"]\n },\n\n metaInfo() {\n if (!this.show || !this.show.title) {\n return {\n title: 'Medusa'\n };\n }\n\n const {\n title\n } = this.show;\n return {\n title,\n titleTemplate: '%s | Medusa'\n };\n },\n\n props: {\n /**\n * Show indexer\n */\n showIndexer: {\n type: String\n },\n\n /**\n * Show id\n */\n showId: {\n type: Number\n }\n },\n\n data() {\n return {\n saving: false,\n loadError: null\n };\n },\n\n computed: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapState\"])({\n indexers: state => state.indexers,\n layout: state => state.layout,\n episodeStatuses: state => state.consts.statuses\n }), {}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapGetters\"])({\n show: 'getCurrentShow',\n getStatus: 'getStatus'\n }), {\n indexer() {\n return this.showIndexer || this.$route.query.indexername;\n },\n\n id() {\n return this.showId || Number(this.$route.query.seriesid) || undefined;\n },\n\n showLoaded() {\n return Boolean(this.show.id.slug);\n },\n\n defaultEpisodeStatusOptions() {\n if (this.episodeStatuses.length === 0) {\n return [];\n } // Get status objects, in this order\n\n\n return ['wanted', 'skipped', 'ignored'].map(key => this.getStatus({\n key\n }));\n },\n\n availableLanguages() {\n if (this.indexers.main.validLanguages) {\n return this.indexers.main.validLanguages.join(',');\n }\n\n return '';\n },\n\n combinedQualities() {\n const {\n allowed,\n preferred\n } = this.show.config.qualities;\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"combineQualities\"])(allowed, preferred);\n },\n\n saveButton() {\n return this.saving === false ? 'Save Changes' : 'Saving...';\n },\n\n globalIgnored() {\n return this.$store.state.search.filters.ignored.map(x => x.toLowerCase());\n },\n\n globalRequired() {\n return this.$store.state.search.filters.required.map(x => x.toLowerCase());\n },\n\n effectiveIgnored() {\n const {\n globalIgnored\n } = this;\n const showIgnored = this.show.config.release.ignoredWords.map(x => x.toLowerCase());\n\n if (this.show.config.release.ignoredWordsExclude) {\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayExclude\"])(globalIgnored, showIgnored);\n }\n\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayUnique\"])(globalIgnored.concat(showIgnored));\n },\n\n effectiveRequired() {\n const {\n globalRequired\n } = this;\n const showRequired = this.show.config.release.requiredWords.map(x => x.toLowerCase());\n\n if (this.show.config.release.requiredWordsExclude) {\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayExclude\"])(globalRequired, showRequired);\n }\n\n return Object(_utils_core__WEBPACK_IMPORTED_MODULE_2__[\"arrayUnique\"])(globalRequired.concat(showRequired));\n },\n\n selectedFormat() {\n const {\n show\n } = this;\n const {\n config\n } = show;\n return ['anime', 'sports', 'airByDate'].find(item => config[item]);\n }\n\n }),\n\n created() {\n this.loadShow();\n },\n\n updated() {\n $('#config-components').tabs();\n },\n\n methods: _objectSpread({}, Object(vuex__WEBPACK_IMPORTED_MODULE_1__[\"mapActions\"])(['getShow', 'setShow']), {\n async loadShow(params) {\n const {\n $store,\n id,\n indexer,\n getShow\n } = params || this; // Let's tell the store which show we currently want as current.\n\n $store.commit('currentShow', {\n indexer,\n id\n });\n\n try {\n this.loadError = null;\n await getShow({\n indexer,\n id,\n detailed: false\n });\n } catch (error) {\n const {\n data\n } = error.response;\n\n if (data && data.error) {\n this.loadError = data.error;\n } else {\n this.loadError = String(error);\n }\n }\n },\n\n async saveShow(subject) {\n const {\n show,\n showLoaded\n } = this; // We want to wait until the page has been fully loaded, before starting to save stuff.\n\n if (!showLoaded) {\n return;\n }\n\n if (!['show', 'all'].includes(subject)) {\n return;\n } // Disable the save button until we're done.\n\n\n this.saving = true;\n const showConfig = show.config;\n const data = {\n config: {\n aliases: showConfig.aliases,\n defaultEpisodeStatus: showConfig.defaultEpisodeStatus,\n dvdOrder: showConfig.dvdOrder,\n seasonFolders: showConfig.seasonFolders,\n anime: showConfig.anime,\n scene: showConfig.scene,\n sports: showConfig.sports,\n paused: showConfig.paused,\n location: showConfig.location,\n airByDate: showConfig.airByDate,\n subtitlesEnabled: showConfig.subtitlesEnabled,\n release: {\n requiredWords: showConfig.release.requiredWords,\n ignoredWords: showConfig.release.ignoredWords,\n requiredWordsExclude: showConfig.release.requiredWordsExclude,\n ignoredWordsExclude: showConfig.release.ignoredWordsExclude\n },\n qualities: {\n preferred: showConfig.qualities.preferred,\n allowed: showConfig.qualities.allowed\n },\n airdateOffset: showConfig.airdateOffset,\n templates: showConfig.templates,\n searchTemplates: showConfig.searchTemplates\n },\n language: show.language\n };\n\n if (data.config.anime) {\n data.config.release.blacklist = showConfig.release.blacklist;\n data.config.release.whitelist = showConfig.release.whitelist;\n }\n\n const {\n indexer,\n id,\n setShow\n } = this;\n\n try {\n await setShow({\n indexer,\n id,\n data\n });\n this.$snotify.success('You may need to \"Re-scan files\" or \"Force Full Update\".', 'Saved', {\n timeout: 5000\n });\n } catch (error) {\n this.$snotify.error(\"Error while trying to save \".concat(this.show.title, \": \").concat(error.message || 'Unknown'), 'Error');\n } finally {\n // Re-enable the save button.\n this.saving = false;\n }\n },\n\n onChangeIgnoredWords(items) {\n this.show.config.release.ignoredWords = items.map(item => item.value);\n },\n\n onChangeRequiredWords(items) {\n this.show.config.release.requiredWords = items.map(item => item.value);\n },\n\n onChangeAliases(items) {\n this.show.config.aliases = items.map(item => {\n return {\n seriesName: item.value\n };\n });\n },\n\n onChangeReleaseGroupsAnime(groupNames) {\n this.show.config.release.whitelist = groupNames.whitelist;\n this.show.config.release.blacklist = groupNames.blacklist;\n },\n\n updateLanguage(value) {\n this.show.language = value;\n },\n\n changeFormat(value, el) {\n this.show.config[el.id] = value;\n\n if (value) {\n ['anime', 'sports', 'airByDate'].filter(item => item !== el.id).forEach(value => {\n this.show.config[value] = false;\n });\n }\n }\n\n })\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./src/components/edit-show.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -332,7 +332,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(f /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! date-fns/format */ \"./node_modules/date-fns/esm/format/index.js\");\n/* harmony import */ var _search_template_pattern__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./search-template-pattern */ \"./src/components/helpers/search-template-pattern.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'search-template-container',\n components: {\n SearchTemplatePattern: _search_template_pattern__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n props: {\n /**\n * Provide the custom naming type. -Like sports, anime, air by date- description.\n * If none provided we asume this is the default episode naming component.\n * And that means there will be no checkbox available to enable/disable it.\n */\n format: {\n type: String,\n default: ''\n },\n templates: {\n type: Array,\n default: () => []\n }\n },\n\n data() {\n return {\n searchTemplates: [],\n showFormat: ''\n };\n },\n\n methods: {\n getDateFormat(format) {\n return Object(date_fns_format__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(new Date(), format);\n },\n\n update() {\n const {\n templates,\n format\n } = this;\n this.$nextTick(() => {\n this.$emit('change', {\n templates,\n format\n });\n });\n }\n\n },\n\n mounted() {\n const {\n format,\n templates\n } = this;\n this.searchTemplates = templates;\n this.showFormat = format;\n },\n\n watch: {\n templates(newTemplates, oldtemplates) {\n this.searchTemplates = newTemplates;\n },\n\n format(newFormat) {\n this.showFormat = newFormat;\n }\n\n }\n});\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-container.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! date-fns/format */ \"./node_modules/date-fns/esm/format/index.js\");\n/* harmony import */ var _search_template_pattern__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./search-template-pattern */ \"./src/components/helpers/search-template-pattern.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"search-template-container\",\n components: {\n SearchTemplatePattern: _search_template_pattern__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n props: {\n /**\n * Provide the custom naming type. -Like sports, anime, air by date- description.\n * If none provided we asume this is the default episode naming component.\n * And that means there will be no checkbox available to enable/disable it.\n */\n format: {\n type: String,\n default: \"\"\n },\n templates: {\n type: Array,\n default: () => []\n }\n },\n\n data() {\n return {\n searchTemplates: [],\n showFormat: \"\",\n animeType: 3\n };\n },\n\n methods: {\n getDateFormat(format) {\n return Object(date_fns_format__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(new Date(), format);\n },\n\n update() {\n const {\n templates,\n format\n } = this;\n this.$nextTick(() => {\n this.$emit(\"change\", {\n templates,\n format\n });\n });\n }\n\n },\n\n mounted() {\n const {\n format,\n templates\n } = this;\n this.searchTemplates = templates;\n this.showFormat = format;\n },\n\n watch: {\n templates(newTemplates, oldtemplates) {\n this.searchTemplates = newTemplates;\n },\n\n format(newFormat) {\n this.showFormat = newFormat;\n }\n\n }\n});\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-container.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -344,7 +344,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var date /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function($) {/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! date-fns/format */ \"./node_modules/date-fns/esm/format/index.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../api */ \"./src/api.js\");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'search-template-pattern',\n props: {\n /**\n * Provide the custom naming type. -Like sports, anime, air by date- description.\n * If none provided we asume this is the default episode naming component.\n * And that means there will be no checkbox available to enable/disable it.\n */\n format: {\n type: String,\n default: ''\n },\n template: {\n type: Object\n }\n },\n\n data() {\n return {\n showFormat: null,\n searchTemplate: '',\n searchTemplateExample: ''\n };\n },\n\n methods: {\n getDateFormat(format) {\n return Object(date_fns_format__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(new Date(), format);\n },\n\n testNaming(template) {\n const {\n showFormat\n } = this;\n console.debug(\"Test pattern \".concat(template.template));\n let params = {\n pattern: template.template\n };\n const formatMap = new Map([['anime', {\n 'anime_type': 3\n }], ['sports', {\n sports: true\n }], ['airByDate', {\n abd: true\n }]]);\n\n if (showFormat !== '') {\n params = _objectSpread({}, params, {}, formatMap.get(showFormat));\n }\n\n try {\n return _api__WEBPACK_IMPORTED_MODULE_2__[\"apiRoute\"].get('config/postProcessing/testNaming', {\n params,\n timeout: 20000\n }).then(res => res.data);\n } catch (error) {\n console.warn(error);\n return '';\n }\n },\n\n updateExample() {\n const {\n searchTemplate,\n showFormat\n } = this; // Update single\n\n this.testNaming(searchTemplate, false, this.showFormat).then(result => {\n this.searchTemplateExample = result;\n }); // Test naming\n\n this.checkNaming(searchTemplate, false, showFormat);\n },\n\n update() {\n this.$nextTick(() => {\n this.$emit('change', {\n template: this.searchTemplate,\n format: this.showFormat\n });\n });\n },\n\n checkNaming(pattern) {\n if (!pattern) {\n return;\n }\n\n const params = {\n pattern\n };\n const {\n $el\n } = this;\n const el = $($el); // apiRoute.get('config/postProcessing/isNamingValid', { params, timeout: 20000 }).then(result => {\n // if (result.data === 'invalid') {\n // el.find('#naming_pattern').qtip('option', {\n // 'content.text': 'This pattern is invalid.',\n // 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n // });\n // el.find('#naming_pattern').qtip('toggle', true);\n // el.find('#naming_pattern').css('background-color', '#FFDDDD');\n // } else if (result.data === 'seasonfolders') {\n // el.find('#naming_pattern').qtip('option', {\n // 'content.text': 'This pattern would be invalid without the folders, using it will force \"Flatten\" off for all shows.',\n // 'style.classes': 'qtip-rounded qtip-shadow qtip-red'\n // });\n // el.find('#naming_pattern').qtip('toggle', true);\n // el.find('#naming_pattern').css('background-color', '#FFFFDD');\n // } else {\n // el.find('#naming_pattern').qtip('option', {\n // 'content.text': 'This pattern is valid.',\n // 'style.classes': 'qtip-rounded qtip-shadow qtip-green'\n // });\n // el.find('#naming_pattern').qtip('toggle', false);\n // el.find('#naming_pattern').css('background-color', '#FFFFFF');\n // }\n // }).catch(error => {\n // console.warn(error);\n // });\n } // updateCustomName() {\n // // Store the custom naming pattern.\n // if (!this.presetsPatterns.includes(this.pattern)) {\n // this.customName = this.pattern;\n // }\n // // If the custom name is empty, let's use the last selected pattern.\n // // We'd prefer to cache the last configured custom pattern.\n // if (!this.customName) {\n // this.customName = this.lastSelectedPattern;\n // }\n // }\n\n\n },\n\n mounted() {\n const {\n format,\n template\n } = this;\n this.searchTemplate = template;\n this.showFormat = format; // Update the pattern example\n\n this.updateExample();\n },\n\n watch: {\n template(newTemplate, oldTemplate) {\n this.searchTemplate = newTemplate;\n this.updateExample();\n }\n\n }\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-pattern.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! date-fns/format */ \"./node_modules/date-fns/esm/format/index.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../api */ \"./src/api.js\");\n/* harmony import */ var v_tooltip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! v-tooltip */ \"./node_modules/v-tooltip/dist/v-tooltip.esm.js\");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"search-template-pattern\",\n directives: {\n tooltip: v_tooltip__WEBPACK_IMPORTED_MODULE_3__[\"VTooltip\"]\n },\n props: {\n /**\n * Provide the custom naming type. -Like sports, anime, air by date- description.\n * If none provided we asume this is the default episode naming component.\n * And that means there will be no checkbox available to enable/disable it.\n */\n format: {\n type: String,\n default: \"\"\n },\n template: {\n type: Object\n },\n season: {\n type: Boolean,\n default: false\n },\n animeType: {\n type: Number,\n default: 3\n }\n },\n\n data() {\n return {\n showFormat: null,\n searchTemplate: \"\",\n searchTemplateExample: \"\",\n showExample: false,\n validated: true,\n seasonPattern: false\n };\n },\n\n computed: {\n tooltipContent() {\n const {\n searchTemplate\n } = this;\n return searchTemplate.default ? \"This template has been generated based on a scene exception / title. It's a default template and cannot be modified. It can only be enabled/disabled.\" : \"You can modify this template. On changing the template, it will be tested against the template rules. And shown red if not valid.\";\n }\n\n },\n methods: {\n getDateFormat(format) {\n return Object(date_fns_format__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(new Date(), format);\n },\n\n async checkNaming(template) {\n const {\n animeType,\n showFormat\n } = this;\n\n if (!template) {\n return;\n }\n\n let params = {\n pattern: template.template\n };\n const formatMap = new Map([[\"anime\", {\n anime_type: animeType\n }], [\"sports\", {\n sports: true\n }], [\"airByDate\", {\n abd: true\n }]]);\n\n if (showFormat !== \"\") {\n params = _objectSpread({}, params, {}, formatMap.get(showFormat));\n }\n\n this.validated = false;\n\n try {\n const response = await _api__WEBPACK_IMPORTED_MODULE_2__[\"apiRoute\"].get(\"config/postProcessing/isNamingValid\", {\n params,\n timeout: 20000\n });\n\n if (response.data !== \"invalid\") {\n this.validated = true;\n }\n } catch (error) {\n console.warn(error);\n }\n },\n\n async testNaming(template) {\n const {\n animeType,\n showFormat\n } = this;\n console.debug(\"Test pattern \".concat(template.template));\n let params = {\n pattern: template.template\n };\n const formatMap = new Map([[\"anime\", {\n anime_type: animeType\n }], [\"sports\", {\n sports: true\n }], [\"airByDate\", {\n abd: true\n }]]);\n\n if (showFormat !== \"\") {\n params = _objectSpread({}, params, {}, formatMap.get(showFormat));\n }\n\n let response = \"\";\n\n try {\n response = await _api__WEBPACK_IMPORTED_MODULE_2__[\"apiRoute\"].get(\"config/postProcessing/testNaming\", {\n params,\n timeout: 20000\n });\n this.searchTemplateExample = response.data;\n } catch (error) {\n console.warn(error);\n }\n\n return response;\n },\n\n updateExample() {\n const {\n searchTemplate,\n showFormat,\n testNaming\n } = this; // Test naming\n\n this.checkNaming(searchTemplate, false, showFormat); // Update single\n\n testNaming(searchTemplate, false, this.showFormat);\n },\n\n update() {\n this.$nextTick(() => {\n this.$emit(\"change\", {\n template: this.searchTemplate,\n format: this.showFormat\n });\n });\n } // updateCustomName() {\n // // Store the custom naming pattern.\n // if (!this.presetsPatterns.includes(this.pattern)) {\n // this.customName = this.pattern;\n // }\n // // If the custom name is empty, let's use the last selected pattern.\n // // We'd prefer to cache the last configured custom pattern.\n // if (!this.customName) {\n // this.customName = this.lastSelectedPattern;\n // }\n // }\n\n\n },\n\n mounted() {\n const {\n format,\n season,\n template\n } = this;\n this.searchTemplate = template;\n this.showFormat = format;\n this.seasonPattern = season; // Update the pattern example\n\n this.updateExample();\n },\n\n watch: {\n template(newTemplate, oldTemplate) {\n this.searchTemplate = newTemplate;\n this.updateExample();\n },\n\n animeType() {\n this.updateExample();\n }\n\n }\n});\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-pattern.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -706,6 +706,28 @@ eval("exports = module.exports = __webpack_require__(/*! ../../../node_modules/c /***/ }), +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-container.vue?vue&type=style&index=0&lang=css&": +/*!************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib??vue-loader-options!./src/components/helpers/search-template-container.vue?vue&type=style&index=0&lang=css& ***! + \************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.i, \"\\n#naming-key {\\n margin: 20px 0 20px 0;\\n}\\n\", \"\"]);\n\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-container.vue?./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/search-template-pattern.vue?vue&type=style&index=0&lang=css&": +/*!**********************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib??vue-loader-options!./src/components/helpers/search-template-pattern.vue?vue&type=style&index=0&lang=css& ***! + \**********************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.i, \"\\n.show-template {\\n left: -8px;\\n top: 4px;\\n position: absolute;\\n z-index: 10;\\n opacity: 0.6;\\n}\\n.template-example {\\n display: block;\\n line-height: 20px;\\n margin-bottom: 15px;\\n padding: 2px 5px 2px 2px;\\n clear: left;\\n max-width: 338px;\\n}\\n.tooltip-wrapper {\\n float: left;\\n min-width: 340px;\\n}\\n.invalid {\\n background-color: #ff5b5b;\\n}\\n.tooltip {\\n display: block !important;\\n z-index: 10000;\\n}\\n.tooltip .tooltip-inner {\\n background: #ffef93;\\n color: #555;\\n border-radius: 16px;\\n padding: 5px 10px 4px;\\n border: 1px solid #f1d031;\\n -webkit-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);\\n -moz-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);\\n box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);\\n}\\n.tooltip .tooltip-arrow {\\n width: 0;\\n height: 0;\\n position: absolute;\\n margin: 5px;\\n border: 1px solid #ffef93;\\n z-index: 1;\\n}\\n.tooltip[x-placement^=\\\"top\\\"] {\\n margin-bottom: 5px;\\n}\\n.tooltip[x-placement^=\\\"top\\\"] .tooltip-arrow {\\n border-width: 5px 5px 0 5px;\\n border-left-color: transparent !important;\\n border-right-color: transparent !important;\\n border-bottom-color: transparent !important;\\n bottom: -5px;\\n left: calc(50% - 4px);\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.tooltip[x-placement^=\\\"bottom\\\"] {\\n margin-top: 5px;\\n}\\n.tooltip[x-placement^=\\\"bottom\\\"] .tooltip-arrow {\\n border-width: 0 5px 5px 5px;\\n border-left-color: transparent !important;\\n border-right-color: transparent !important;\\n border-top-color: transparent !important;\\n top: -5px;\\n left: calc(50% - 4px);\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.tooltip[x-placement^=\\\"right\\\"] {\\n margin-left: 5px;\\n}\\n.tooltip[x-placement^=\\\"right\\\"] .tooltip-arrow {\\n border-width: 5px 5px 5px 0;\\n border-left-color: transparent !important;\\n border-top-color: transparent !important;\\n border-bottom-color: transparent !important;\\n left: -4px;\\n top: calc(50% - 5px);\\n margin-left: 0;\\n margin-right: 0;\\n}\\n.tooltip[x-placement^=\\\"left\\\"] {\\n margin-right: 5px;\\n}\\n.tooltip[x-placement^=\\\"left\\\"] .tooltip-arrow {\\n border-width: 5px 0 5px 5px;\\n border-top-color: transparent !important;\\n border-right-color: transparent !important;\\n border-bottom-color: transparent !important;\\n right: -4px;\\n top: calc(50% - 5px);\\n margin-left: 0;\\n margin-right: 0;\\n}\\n.tooltip.popover .popover-inner {\\n background: #ffef93;\\n color: #555;\\n padding: 24px;\\n border-radius: 5px;\\n box-shadow: 0 5px 30px rgba(black, 0.1);\\n}\\n.tooltip.popover .popover-arrow {\\n border-color: #ffef93;\\n}\\n.tooltip[aria-hidden=\\\"true\\\"] {\\n visibility: hidden;\\n opacity: 0;\\n transition: opacity 0.15s, visibility 0.15s;\\n}\\n.tooltip[aria-hidden=\\\"false\\\"] {\\n visibility: visible;\\n opacity: 1;\\n transition: opacity 0.15s;\\n}\\n\", \"\"]);\n\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-pattern.vue?./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js?!./src/components/helpers/select-list.vue?vue&type=style&index=0&id=466bd1e5&scoped=true&lang=css&": /*!**********************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib??vue-loader-options!./src/components/helpers/select-list.vue?vue&type=style&index=0&id=466bd1e5&scoped=true&lang=css& ***! @@ -957,7 +979,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"config-content\" } },\n [\n _vm.showLoaded\n ? _c(\"backstretch\", { attrs: { slug: _vm.show.id.slug } })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showLoaded\n ? _c(\n \"h1\",\n { staticClass: \"header\" },\n [\n _vm._v(\"\\n Edit Show - \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"home/displayShow?indexername=\" +\n _vm.indexer +\n \"&seriesid=\" +\n _vm.id\n }\n },\n [_vm._v(_vm._s(_vm.show.title))]\n )\n ],\n 1\n )\n : _c(\n \"h1\",\n { staticClass: \"header\" },\n [\n _vm._v(\"\\n Edit Show\"),\n !_vm.loadError ? [_vm._v(\" (Loading...)\")] : _vm._e()\n ],\n 2\n ),\n _vm._v(\" \"),\n _vm.loadError\n ? _c(\"h3\", [_vm._v(\"Error loading show: \" + _vm._s(_vm.loadError))])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showLoaded\n ? _c(\n \"div\",\n {\n class: { summaryFanArt: _vm.layout.fanartBackground },\n attrs: { id: \"config\" }\n },\n [\n _c(\n \"form\",\n {\n staticClass: \"form-horizontal\",\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.saveShow(\"all\")\n }\n }\n },\n [\n _c(\"div\", { attrs: { id: \"config-components\" } }, [\n _c(\"ul\", [\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group1\" } },\n [_vm._v(\"Main\")]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group2\" } },\n [_vm._v(\"Format\")]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group3\" } },\n [_vm._v(\"Advanced\")]\n )\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group1\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Main Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"location\",\n label: \"Show Location\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n name: \"location\",\n title: \"Select Show Location\",\n \"initial-dir\": _vm.show.config.location\n },\n on: {\n update: function($event) {\n _vm.show.config.location = $event\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"qualityPreset\",\n label: \"Quality\"\n }\n },\n [\n _c(\"quality-chooser\", {\n attrs: {\n \"overall-quality\": _vm.combinedQualities,\n \"show-slug\": _vm.show.id.slug\n },\n on: {\n \"update:quality:allowed\": function($event) {\n _vm.show.config.qualities.allowed = $event\n },\n \"update:quality:preferred\": function(\n $event\n ) {\n _vm.show.config.qualities.preferred = $event\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"defaultEpStatusSelect\",\n label: \"Default Episode Status\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.show.config.defaultEpisodeStatus,\n expression:\n \"show.config.defaultEpisodeStatus\"\n }\n ],\n staticClass:\n \"form-control form-control-inline input-sm\",\n attrs: {\n name: \"defaultEpStatus\",\n id: \"defaultEpStatusSelect\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.show.config,\n \"defaultEpisodeStatus\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(\n _vm.defaultEpisodeStatusOptions,\n function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.name }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(option.name) +\n \"\\n \"\n )\n ]\n )\n }\n ),\n 0\n ),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"This will set the status for future episodes.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"indexerLangSelect\",\n label: \"Info Language\"\n }\n },\n [\n _c(\"language-select\", {\n staticClass:\n \"form-control form-control-inline input-sm\",\n attrs: {\n id: \"indexerLangSelect\",\n language: _vm.show.language,\n available: _vm.availableLanguages,\n name: \"indexer_lang\"\n },\n on: { \"update-language\": _vm.updateLanguage }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n \"This only applies to episode filenames and the contents of metadata files.\"\n )\n ])\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Subtitles\", id: \"subtitles\" },\n model: {\n value: _vm.show.config.subtitlesEnabled,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"subtitlesEnabled\",\n $$v\n )\n },\n expression: \"show.config.subtitlesEnabled\"\n }\n },\n [_c(\"span\", [_vm._v(\"search for subtitles\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Paused\", id: \"paused\" },\n model: {\n value: _vm.show.config.paused,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"paused\", $$v)\n },\n expression: \"show.config.paused\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"pause this show (Medusa will not download episodes)\"\n )\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group2\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Format Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n value: _vm.show.config.airByDate,\n label: \"Air by date\",\n id: \"airByDate\"\n },\n on: { input: _vm.changeFormat }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"check if the show is released as Show.03.02.2010 rather than Show.S02E03\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"p\",\n { staticStyle: { color: \"rgb(255, 0, 0)\" } },\n [\n _vm._v(\n \"In case of an air date conflict between regular and special episodes, the later will be ignored.\"\n )\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n value: _vm.show.config.anime,\n label: \"Anime\",\n id: \"anime\"\n },\n on: { input: _vm.changeFormat }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"enable if the show is Anime and episodes are released as Show.265 rather than Show.S02E03\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.show.config.anime\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"anidbReleaseGroup\",\n label: \"Release Groups\"\n }\n },\n [\n _vm.show.title\n ? _c(\"anidb-release-group-ui\", {\n staticClass: \"max-width\",\n attrs: {\n \"show-name\": _vm.show.title,\n blacklist:\n _vm.show.config.release.blacklist,\n whitelist:\n _vm.show.config.release.whitelist\n },\n on: {\n change:\n _vm.onChangeReleaseGroupsAnime\n }\n })\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n value: _vm.show.config.sports,\n label: \"Sports\",\n id: \"sports\"\n },\n on: { input: _vm.changeFormat }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"enable if the show is a sporting or MMA event released as Show.03.02.2010 rather than Show.S02E03\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"p\",\n { staticStyle: { color: \"rgb(255, 0, 0)\" } },\n [\n _vm._v(\n \"In case of an air date conflict between regular and special episodes, the later will be ignored.\"\n )\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Search templates\",\n id: \"templates\"\n },\n model: {\n value: _vm.show.config.templates,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"templates\", $$v)\n },\n expression: \"show.config.templates\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\"enable advanced search templates\"),\n _vm.selectedFormat\n ? _c(\"span\", [\n _vm._v(\n \" in addition to the selected chosen format \"\n ),\n _c(\"strong\", [\n _vm._v(_vm._s(_vm.selectedFormat))\n ])\n ])\n : _vm._e()\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.show.config.templates\n ? _c(\"search-template-container\", {\n attrs: {\n format: _vm.selectedFormat,\n templates: _vm.show.config.searchTemplates\n }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Season\",\n id: \"season_folders\"\n },\n model: {\n value: _vm.show.config.seasonFolders,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"seasonFolders\",\n $$v\n )\n },\n expression: \"show.config.seasonFolders\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"group episodes by season folder (disable to store in a single folder)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Scene Numbering\",\n id: \"scene_numbering\"\n },\n model: {\n value: _vm.show.config.scene,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"scene\", $$v)\n },\n expression: \"show.config.scene\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"search by scene numbering (disable to search by indexer numbering)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"DVD Order\", id: \"dvd_order\" },\n model: {\n value: _vm.show.config.dvdOrder,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"dvdOrder\", $$v)\n },\n expression: \"show.config.dvdOrder\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"use the DVD order instead of the air order\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n 'A \"Force Full Update\" is necessary, and if you have existing episodes you need to sort them manually.'\n )\n ])\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group3\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Advanced Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"rls_ignore_words\",\n label: \"Ignored words\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\":\n _vm.show.config.release.ignoredWords\n },\n on: { change: _vm.onChangeIgnoredWords }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n \"Search results with one or more words from this list will be ignored.\"\n )\n ])\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Exclude ignored words\",\n id: \"ignored_words_exclude\"\n },\n model: {\n value:\n _vm.show.config.release.ignoredWordsExclude,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config.release,\n \"ignoredWordsExclude\",\n $$v\n )\n },\n expression:\n \"show.config.release.ignoredWordsExclude\"\n }\n },\n [\n _c(\"div\", [\n _vm._v(\n \"Use the Ignored Words list to exclude these from the global ignored list\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Currently the effective list is: \" +\n _vm._s(_vm.effectiveIgnored)\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"rls_require_words\",\n label: \"Required words\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\":\n _vm.show.config.release.requiredWords\n },\n on: { change: _vm.onChangeRequiredWords }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Search results with no words from this list will be ignored.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Exclude required words\",\n id: \"required_words_exclude\"\n },\n model: {\n value:\n _vm.show.config.release\n .requiredWordsExclude,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config.release,\n \"requiredWordsExclude\",\n $$v\n )\n },\n expression:\n \"show.config.release.requiredWordsExclude\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Use the Required Words list to exclude these from the global required words list\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Currently the effective list is: \" +\n _vm._s(_vm.effectiveRequired)\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"SceneName\",\n label: \"Scene Exception\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\": _vm.show.config.aliases\n },\n on: { change: _vm.onChangeAliases }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"This will affect episode search on NZB and torrent providers. This list appends to the original show name.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"config-textbox-number\", {\n attrs: {\n min: -168,\n max: 168,\n step: 1,\n label: \"Airdate offset\",\n id: \"airdate_offset\",\n explanations: [\n \"Amount of hours we want to start searching early (-1) or late (1) for new episodes.\",\n \"This only applies to daily searches.\"\n ]\n },\n model: {\n value: _vm.show.config.airdateOffset,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"airdateOffset\",\n $$v\n )\n },\n expression: \"show.config.airdateOffset\"\n }\n })\n ],\n 1\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa pull-left button\",\n attrs: {\n id: \"submit\",\n type: \"submit\",\n disabled: _vm.saving || !_vm.showLoaded\n },\n domProps: { value: _vm.saveButton }\n })\n ]\n )\n ]\n )\n : _vm._e()\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/edit-show.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"config-content\" } },\n [\n _vm.showLoaded\n ? _c(\"backstretch\", { attrs: { slug: _vm.show.id.slug } })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showLoaded\n ? _c(\n \"h1\",\n { staticClass: \"header\" },\n [\n _vm._v(\"\\n Edit Show - \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"home/displayShow?indexername=\" +\n _vm.indexer +\n \"&seriesid=\" +\n _vm.id\n }\n },\n [_vm._v(_vm._s(_vm.show.title))]\n )\n ],\n 1\n )\n : _c(\n \"h1\",\n { staticClass: \"header\" },\n [\n _vm._v(\"\\n Edit Show\"),\n !_vm.loadError ? [_vm._v(\" (Loading...)\")] : _vm._e()\n ],\n 2\n ),\n _vm._v(\" \"),\n _vm.loadError\n ? _c(\"h3\", [_vm._v(\"Error loading show: \" + _vm._s(_vm.loadError))])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showLoaded\n ? _c(\n \"div\",\n {\n class: { summaryFanArt: _vm.layout.fanartBackground },\n attrs: { id: \"config\" }\n },\n [\n _c(\n \"form\",\n {\n staticClass: \"form-horizontal\",\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.saveShow(\"all\")\n }\n }\n },\n [\n _c(\"div\", { attrs: { id: \"config-components\" } }, [\n _c(\"ul\", [\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group1\" } },\n [_vm._v(\"Main\")]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group2\" } },\n [_vm._v(\"Format\")]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"#core-component-group3\" } },\n [_vm._v(\"Advanced\")]\n )\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group1\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Main Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"location\",\n label: \"Show Location\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n name: \"location\",\n title: \"Select Show Location\",\n \"initial-dir\": _vm.show.config.location\n },\n on: {\n update: function($event) {\n _vm.show.config.location = $event\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"qualityPreset\",\n label: \"Quality\"\n }\n },\n [\n _c(\"quality-chooser\", {\n attrs: {\n \"overall-quality\": _vm.combinedQualities,\n \"show-slug\": _vm.show.id.slug\n },\n on: {\n \"update:quality:allowed\": function($event) {\n _vm.show.config.qualities.allowed = $event\n },\n \"update:quality:preferred\": function(\n $event\n ) {\n _vm.show.config.qualities.preferred = $event\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"defaultEpStatusSelect\",\n label: \"Default Episode Status\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.show.config.defaultEpisodeStatus,\n expression:\n \"show.config.defaultEpisodeStatus\"\n }\n ],\n staticClass:\n \"form-control form-control-inline input-sm\",\n attrs: {\n name: \"defaultEpStatus\",\n id: \"defaultEpStatusSelect\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.show.config,\n \"defaultEpisodeStatus\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(\n _vm.defaultEpisodeStatusOptions,\n function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.name }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(option.name) +\n \"\\n \"\n )\n ]\n )\n }\n ),\n 0\n ),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"This will set the status for future episodes.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"indexerLangSelect\",\n label: \"Info Language\"\n }\n },\n [\n _c(\"language-select\", {\n staticClass:\n \"form-control form-control-inline input-sm\",\n attrs: {\n id: \"indexerLangSelect\",\n language: _vm.show.language,\n available: _vm.availableLanguages,\n name: \"indexer_lang\"\n },\n on: { \"update-language\": _vm.updateLanguage }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n \"This only applies to episode filenames and the contents of metadata files.\"\n )\n ])\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Subtitles\", id: \"subtitles\" },\n model: {\n value: _vm.show.config.subtitlesEnabled,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"subtitlesEnabled\",\n $$v\n )\n },\n expression: \"show.config.subtitlesEnabled\"\n }\n },\n [_c(\"span\", [_vm._v(\"search for subtitles\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Paused\", id: \"paused\" },\n model: {\n value: _vm.show.config.paused,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"paused\", $$v)\n },\n expression: \"show.config.paused\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"pause this show (Medusa will not download episodes)\"\n )\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group2\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Format Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n value: _vm.show.config.airByDate,\n label: \"Air by date\",\n id: \"airByDate\"\n },\n on: { input: _vm.changeFormat }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"check if the show is released as Show.03.02.2010 rather than Show.S02E03\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"p\",\n { staticStyle: { color: \"rgb(255, 0, 0)\" } },\n [\n _vm._v(\n \"In case of an air date conflict between regular and special episodes, the later will be ignored.\"\n )\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n value: _vm.show.config.anime,\n label: \"Anime\",\n id: \"anime\"\n },\n on: { input: _vm.changeFormat }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"enable if the show is Anime and episodes are released as Show.265 rather than Show.S02E03\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.show.config.anime\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"anidbReleaseGroup\",\n label: \"Release Groups\"\n }\n },\n [\n _vm.show.title\n ? _c(\"anidb-release-group-ui\", {\n staticClass: \"max-width\",\n attrs: {\n \"show-name\": _vm.show.title,\n blacklist:\n _vm.show.config.release.blacklist,\n whitelist:\n _vm.show.config.release.whitelist\n },\n on: {\n change:\n _vm.onChangeReleaseGroupsAnime\n }\n })\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n value: _vm.show.config.sports,\n label: \"Sports\",\n id: \"sports\"\n },\n on: { input: _vm.changeFormat }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"enable if the show is a sporting or MMA event released as Show.03.02.2010 rather than Show.S02E03\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"p\",\n { staticStyle: { color: \"rgb(255, 0, 0)\" } },\n [\n _vm._v(\n \"In case of an air date conflict between regular and special episodes, the later will be ignored.\"\n )\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Search templates\",\n id: \"templates\"\n },\n model: {\n value: _vm.show.config.templates,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"templates\", $$v)\n },\n expression: \"show.config.templates\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\"enable advanced search templates\"),\n _vm.selectedFormat\n ? _c(\"span\", [\n _vm._v(\n \" in addition to the selected chosen format \"\n ),\n _c(\"strong\", [\n _vm._v(_vm._s(_vm.selectedFormat))\n ])\n ])\n : _vm._e()\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.show.config.templates\n ? _c(\"search-template-container\", {\n attrs: {\n format: _vm.selectedFormat,\n templates: _vm.show.config.searchTemplates\n }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Season\",\n id: \"season_folders\"\n },\n model: {\n value: _vm.show.config.seasonFolders,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"seasonFolders\",\n $$v\n )\n },\n expression: \"show.config.seasonFolders\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"group episodes by season folder (disable to store in a single folder)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Scene Numbering\",\n id: \"scene_numbering\"\n },\n model: {\n value: _vm.show.config.scene,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"scene\", $$v)\n },\n expression: \"show.config.scene\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"search by scene numbering (disable to search by indexer numbering)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"DVD Order\", id: \"dvd_order\" },\n model: {\n value: _vm.show.config.dvdOrder,\n callback: function($$v) {\n _vm.$set(_vm.show.config, \"dvdOrder\", $$v)\n },\n expression: \"show.config.dvdOrder\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"use the DVD order instead of the air order\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n 'A \"Force Full Update\" is necessary, and if you have existing episodes you need to sort them manually.'\n )\n ])\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"core-component-group3\" } }, [\n _c(\"div\", { staticClass: \"component-group\" }, [\n _c(\"h3\", [_vm._v(\"Advanced Settings\")]),\n _vm._v(\" \"),\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"rls_ignore_words\",\n label: \"Ignored words\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\":\n _vm.show.config.release.ignoredWords\n },\n on: { change: _vm.onChangeIgnoredWords }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _vm._v(\n \"Search results with one or more words from this list will be ignored.\"\n )\n ])\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Exclude ignored words\",\n id: \"ignored_words_exclude\"\n },\n model: {\n value:\n _vm.show.config.release.ignoredWordsExclude,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config.release,\n \"ignoredWordsExclude\",\n $$v\n )\n },\n expression:\n \"show.config.release.ignoredWordsExclude\"\n }\n },\n [\n _c(\"div\", [\n _vm._v(\n \"Use the Ignored Words list to exclude these from the global ignored list\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Currently the effective list is: \" +\n _vm._s(_vm.effectiveIgnored)\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"rls_require_words\",\n label: \"Required words\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\":\n _vm.show.config.release.requiredWords\n },\n on: { change: _vm.onChangeRequiredWords }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Search results with no words from this list will be ignored.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Exclude required words\",\n id: \"required_words_exclude\"\n },\n model: {\n value:\n _vm.show.config.release\n .requiredWordsExclude,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config.release,\n \"requiredWordsExclude\",\n $$v\n )\n },\n expression:\n \"show.config.release.requiredWordsExclude\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Use the Required Words list to exclude these from the global required words list\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Currently the effective list is: \" +\n _vm._s(_vm.effectiveRequired)\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"SceneName\",\n label: \"Scene Exception\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n \"list-items\": _vm.show.config.aliases.map(\n function(alias) {\n return alias.seriesName\n }\n )\n },\n on: { change: _vm.onChangeAliases }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"This will affect episode search on NZB and torrent providers. This list appends to the original show name.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"config-textbox-number\", {\n attrs: {\n min: -168,\n max: 168,\n step: 1,\n label: \"Airdate offset\",\n id: \"airdate_offset\",\n explanations: [\n \"Amount of hours we want to start searching early (-1) or late (1) for new episodes.\",\n \"This only applies to daily searches.\"\n ]\n },\n model: {\n value: _vm.show.config.airdateOffset,\n callback: function($$v) {\n _vm.$set(\n _vm.show.config,\n \"airdateOffset\",\n $$v\n )\n },\n expression: \"show.config.airdateOffset\"\n }\n })\n ],\n 1\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa pull-left button\",\n attrs: {\n id: \"submit\",\n type: \"submit\",\n disabled: _vm.saving || !_vm.showLoaded\n },\n domProps: { value: _vm.saveButton }\n })\n ]\n )\n ]\n )\n : _vm._e()\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/edit-show.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -1125,7 +1147,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"search-template-container\" } },\n [\n _vm._l(_vm.templates, function(template) {\n return _c(\n \"search-template-pattern\",\n _vm._b(\n { key: template.template },\n \"search-template-pattern\",\n { template: template, format: _vm.format },\n false\n )\n )\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"nocheck\", attrs: { id: \"naming_key\" } }, [\n _c(\"table\", { staticClass: \"Key\" }, [\n _vm._m(0),\n _vm._v(\" \"),\n _vm._m(1),\n _vm._v(\" \"),\n _c(\"tbody\", [\n _vm._m(2),\n _vm._v(\" \"),\n _vm._m(3),\n _vm._v(\" \"),\n _vm._m(4),\n _vm._v(\" \"),\n _vm._m(5),\n _vm._v(\" \"),\n _vm._m(6),\n _vm._v(\" \"),\n _vm._m(7),\n _vm._v(\" \"),\n _vm._m(8),\n _vm._v(\" \"),\n _vm._m(9),\n _vm._v(\" \"),\n _vm._m(10),\n _vm._v(\" \"),\n _vm._m(11),\n _vm._v(\" \"),\n _vm._m(12),\n _vm._v(\" \"),\n _vm._m(13),\n _vm._v(\" \"),\n _vm._m(14),\n _vm._v(\" \"),\n _vm._m(15),\n _vm._v(\" \"),\n _vm._m(16),\n _vm._v(\" \"),\n _vm._m(17),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(18),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%M\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"M\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%D\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"d\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%Y\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"yyyy\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(19),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%CM\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"M\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%CD\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"d\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%CY\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"yyyy\")))])\n ]),\n _vm._v(\" \"),\n _vm._m(20),\n _vm._v(\" \"),\n _vm._m(21),\n _vm._v(\" \"),\n _vm._m(22),\n _vm._v(\" \"),\n _vm._m(23),\n _vm._v(\" \"),\n _vm._m(24),\n _vm._v(\" \"),\n _vm._m(25),\n _vm._v(\" \"),\n _vm._m(26),\n _vm._v(\" \"),\n _vm._m(27),\n _vm._v(\" \"),\n _vm._m(28)\n ])\n ])\n ])\n ],\n 2\n )\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"thead\", [\n _c(\"tr\", [\n _c(\"th\", { staticClass: \"align-right\" }, [_vm._v(\"Meaning\")]),\n _vm._v(\" \"),\n _c(\"th\", [_vm._v(\"Pattern\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"60%\" } }, [_vm._v(\"Result\")])\n ])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tfoot\", [\n _c(\"tr\", [\n _c(\"th\", { attrs: { colspan: \"3\" } }, [\n _vm._v(\n \"Use lower case if you want lower case names (eg. %sn, %e.n, %q_n etc)\"\n )\n ])\n ])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Show Name:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%S.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show.Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%S_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show_Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Season Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%S\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"2\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0S\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"02\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"XEM Season Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%XS\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"2\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0XS\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"02\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%E\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"3\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0E\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"03\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"XEM Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%XE\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"3\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0XE\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"03\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Absolute Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%AB\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"003\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Xem Absolute Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%XAB\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"003\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Episode Name:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%EN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Episode Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%E.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Episode.Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%E_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Episode_Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Air Date:\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Post-Processing Date:\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [_c(\"b\", [_vm._v(\"Quality:\")])]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%QN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p BluRay\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%Q.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p.BluRay\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%Q_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p_BluRay\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Scene Quality:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SQN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p HDTV x264\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SQ.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p.HDTV.x264\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SQ_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p_HDTV_x264\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"i\", {\n staticClass: \"glyphicon glyphicon-info-sign\",\n attrs: { title: \"Multi-EP style is ignored\" }\n }),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Release Name:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%RN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show.Name.S02E03.HDTV.x264-RLSGROUP\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"i\", {\n staticClass: \"glyphicon glyphicon-info-sign\",\n attrs: {\n title:\n \"UNKNOWN_RELEASE_GROUP is used in place of RLSGROUP if it could not be properly detected\"\n }\n }),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Release Group:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%RG\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"RLSGROUP\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"i\", {\n staticClass: \"glyphicon glyphicon-info-sign\",\n attrs: { title: \"If episode is proper/repack add 'proper' to name.\" }\n }),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Release Type:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%RT\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"PROPER\")])\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-container.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"search-template-container\" } },\n [\n _vm._l(_vm.templates, function(template) {\n return _c(\n \"search-template-pattern\",\n _vm._b(\n { key: template.template },\n \"search-template-pattern\",\n {\n template: template,\n format: _vm.format,\n animeType: _vm.animeType\n },\n false\n )\n )\n }),\n _vm._v(\" \"),\n [\n _vm.animeType > 0\n ? _c(\"div\", { staticClass: \"form-group\" }, [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-sm-10 content\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.animeType,\n expression: \"animeType\"\n }\n ],\n attrs: {\n type: \"radio\",\n name: \"naming_anime\",\n id: \"naming_anime\"\n },\n domProps: { value: 1, checked: _vm._q(_vm.animeType, 1) },\n on: {\n change: function($event) {\n _vm.animeType = 1\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Add the absolute number to the season/episode format?\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Only applies to animes. (e.g. S15E45 - 310 vs S15E45)\"\n )\n ])\n ])\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.animeType > 0\n ? _c(\"div\", { staticClass: \"form-group\" }, [\n _vm._m(1),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-sm-10 content\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.animeType,\n expression: \"animeType\"\n }\n ],\n attrs: {\n type: \"radio\",\n name: \"naming_anime\",\n id: \"naming_anime_only\"\n },\n domProps: { value: 2, checked: _vm._q(_vm.animeType, 2) },\n on: {\n change: function($event) {\n _vm.animeType = 2\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\"Replace season/episode format with absolute number\")\n ]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"Only applies to animes.\")])\n ])\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.animeType > 0\n ? _c(\"div\", { staticClass: \"form-group\" }, [\n _vm._m(2),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-sm-10 content\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.animeType,\n expression: \"animeType\"\n }\n ],\n attrs: {\n type: \"radio\",\n name: \"naming_anime\",\n id: \"naming_anime_none\"\n },\n domProps: { value: 3, checked: _vm._q(_vm.animeType, 3) },\n on: {\n change: function($event) {\n _vm.animeType = 3\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", [_vm._v(\"Don't include the absolute number\")]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"Only applies to animes.\")])\n ])\n ])\n : _vm._e()\n ],\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"nocheck\", attrs: { id: \"naming-key\" } }, [\n _c(\"table\", { staticClass: \"Key\" }, [\n _vm._m(3),\n _vm._v(\" \"),\n _vm._m(4),\n _vm._v(\" \"),\n _c(\"tbody\", [\n _vm._m(5),\n _vm._v(\" \"),\n _vm._m(6),\n _vm._v(\" \"),\n _vm._m(7),\n _vm._v(\" \"),\n _vm._m(8),\n _vm._v(\" \"),\n _vm._m(9),\n _vm._v(\" \"),\n _vm._m(10),\n _vm._v(\" \"),\n _vm._m(11),\n _vm._v(\" \"),\n _vm._m(12),\n _vm._v(\" \"),\n _vm._m(13),\n _vm._v(\" \"),\n _vm._m(14),\n _vm._v(\" \"),\n _vm._m(15),\n _vm._v(\" \"),\n _vm._m(16),\n _vm._v(\" \"),\n _vm._m(17),\n _vm._v(\" \"),\n _vm._m(18),\n _vm._v(\" \"),\n _vm._m(19),\n _vm._v(\" \"),\n _vm._m(20),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(21),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%M\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"M\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%D\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"d\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%Y\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"yyyy\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(22),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%CM\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"M\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%CD\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"d\")))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%CY\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(_vm._s(_vm.getDateFormat(\"yyyy\")))])\n ]),\n _vm._v(\" \"),\n _vm._m(23),\n _vm._v(\" \"),\n _vm._m(24),\n _vm._v(\" \"),\n _vm._m(25),\n _vm._v(\" \"),\n _vm._m(26),\n _vm._v(\" \"),\n _vm._m(27),\n _vm._v(\" \"),\n _vm._m(28),\n _vm._v(\" \"),\n _vm._m(29),\n _vm._v(\" \"),\n _vm._m(30),\n _vm._v(\" \"),\n _vm._m(31)\n ])\n ])\n ])\n ],\n 2\n )\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"label\",\n { staticClass: \"col-sm-2 control-label\", attrs: { for: \"naming_anime\" } },\n [_c(\"span\", [_vm._v(\"Add Absolute Number\")])]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"label\",\n {\n staticClass: \"col-sm-2 control-label\",\n attrs: { for: \"naming_anime_only\" }\n },\n [_c(\"span\", [_vm._v(\"Only Absolute Number\")])]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"label\",\n {\n staticClass: \"col-sm-2 control-label\",\n attrs: { for: \"naming_anime_none\" }\n },\n [_c(\"span\", [_vm._v(\"No Absolute Number\")])]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"thead\", [\n _c(\"tr\", [\n _c(\"th\", { staticClass: \"align-right\" }, [_vm._v(\"Meaning\")]),\n _vm._v(\" \"),\n _c(\"th\", [_vm._v(\"Pattern\")]),\n _vm._v(\" \"),\n _c(\"th\", { attrs: { width: \"60%\" } }, [_vm._v(\"Result\")])\n ])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tfoot\", [\n _c(\"tr\", [\n _c(\"th\", { attrs: { colspan: \"3\" } }, [\n _vm._v(\n \"Use lower case if you want lower case names (eg. %sn, %e.n, %q_n etc)\"\n )\n ])\n ])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Show Name:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%S.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show.Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%S_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show_Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Season Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%S\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"2\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0S\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"02\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"XEM Season Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%XS\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"2\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0XS\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"02\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%E\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"3\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0E\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"03\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"XEM Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%XE\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"3\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%0XE\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"03\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Absolute Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%AB\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"003\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Xem Absolute Episode Number:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%XAB\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"003\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Episode Name:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%EN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Episode Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%E.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Episode.Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%E_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Episode_Name\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Air Date:\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Post-Processing Date:\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [_c(\"b\", [_vm._v(\"Quality:\")])]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%QN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p BluRay\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%Q.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p.BluRay\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%Q_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p_BluRay\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"b\", [_vm._v(\"Scene Quality:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SQN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p HDTV x264\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SQ.N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p.HDTV.x264\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", [_vm._v(\" \")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%SQ_N\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"720p_HDTV_x264\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"i\", {\n staticClass: \"glyphicon glyphicon-info-sign\",\n attrs: { title: \"Multi-EP style is ignored\" }\n }),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Release Name:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%RN\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"Show.Name.S02E03.HDTV.x264-RLSGROUP\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"i\", {\n staticClass: \"glyphicon glyphicon-info-sign\",\n attrs: {\n title:\n \"UNKNOWN_RELEASE_GROUP is used in place of RLSGROUP if it could not be properly detected\"\n }\n }),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Release Group:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%RG\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"RLSGROUP\")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"even\" }, [\n _c(\"td\", { staticClass: \"align-right\" }, [\n _c(\"i\", {\n staticClass: \"glyphicon glyphicon-info-sign\",\n attrs: { title: \"If episode is proper/repack add 'proper' to name.\" }\n }),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Release Type:\")])\n ]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"%RT\")]),\n _vm._v(\" \"),\n _c(\"td\", [_vm._v(\"PROPER\")])\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-container.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -1137,7 +1159,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"search-template-pattern\" } }, [\n _c(\n \"div\",\n { staticClass: \"form-group\", staticStyle: { \"padding-top\": \"0\" } },\n [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-sm-10 content\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.searchTemplate.template,\n expression: \"searchTemplate.template\"\n }\n ],\n staticClass: \"form-control-inline-max input-sm max-input350\",\n attrs: { type: \"text\", name: \"search_pattern\" },\n domProps: { value: _vm.searchTemplate.template },\n on: {\n change: _vm.updateExample,\n input: [\n function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.searchTemplate, \"template\", $event.target.value)\n },\n function($event) {\n return _vm.update()\n }\n ]\n }\n })\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"form-group\", staticStyle: { \"padding-top\": \"0\" } },\n [\n _vm._m(1),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-sm-10 content\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.searchTemplateExample,\n expression: \"searchTemplateExample\"\n }\n ],\n staticClass: \"form-control-inline-max input-sm max-input350\",\n attrs: { type: \"text\", name: \"search_pattern\", disabled: \"\" },\n domProps: { value: _vm.searchTemplateExample },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.searchTemplateExample = $event.target.value\n }\n }\n })\n ])\n ]\n )\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"label\", { staticClass: \"col-sm-2 control-label\" }, [\n _c(\"span\", [_vm._v(\" \")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"label\", { staticClass: \"col-sm-2 control-label\" }, [\n _c(\"span\", [_vm._v(\" \")])\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-pattern.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"search-template-pattern\" } }, [\n _c(\"div\", { staticClass: \"row\" }, [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-sm-10 content\" }, [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip.right\",\n value: { content: _vm.tooltipContent },\n expression: \"{content: tooltipContent}\",\n modifiers: { right: true }\n }\n ],\n staticClass: \"tooltip-wrapper\"\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.searchTemplate.template,\n expression: \"searchTemplate.template\"\n }\n ],\n staticClass:\n \"form-control-inline-max input-sm max-input350 search-pattern\",\n class: { invalid: !_vm.validated },\n attrs: {\n type: \"text\",\n name: \"search_pattern\",\n disabled: _vm.searchTemplate.default\n },\n domProps: { value: _vm.searchTemplate.template },\n on: {\n change: _vm.updateExample,\n input: [\n function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(\n _vm.searchTemplate,\n \"template\",\n $event.target.value\n )\n },\n function($event) {\n return _vm.update()\n }\n ]\n }\n })\n ]\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.searchTemplate.enabled,\n expression: \"searchTemplate.enabled\"\n }\n ],\n attrs: { type: \"checkbox\" },\n domProps: {\n checked: Array.isArray(_vm.searchTemplate.enabled)\n ? _vm._i(_vm.searchTemplate.enabled, null) > -1\n : _vm.searchTemplate.enabled\n },\n on: {\n change: function($event) {\n var $$a = _vm.searchTemplate.enabled,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(_vm.searchTemplate, \"enabled\", $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n _vm.$set(\n _vm.searchTemplate,\n \"enabled\",\n $$a.slice(0, $$i).concat($$a.slice($$i + 1))\n )\n }\n } else {\n _vm.$set(_vm.searchTemplate, \"enabled\", $$c)\n }\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"i\", {\n staticClass: \"show-template glyphicon\",\n class: \"glyphicon-eye-\" + (_vm.showExample ? \"close\" : \"open\"),\n attrs: { title: \"Show template example\" },\n on: {\n click: function($event) {\n _vm.showExample = !_vm.showExample\n }\n }\n }),\n _vm._v(\" \"),\n _vm.showExample\n ? _c(\n \"span\",\n {\n staticClass: \"template-example\",\n class: { invalid: !_vm.validated },\n attrs: { name: \"search_pattern\" }\n },\n [_vm._v(\"Example: \" + _vm._s(_vm.searchTemplateExample))]\n )\n : _vm._e()\n ])\n ])\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"label\", { staticClass: \"col-sm-2 control-label\" }, [\n _c(\"span\", [_vm._v(\" \")])\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/helpers/search-template-pattern.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -1427,6 +1449,28 @@ eval("// style-loader: Adds some css to the DOM by adding a diff --git a/themes-default/slim/src/components/helpers/search-template-pattern.vue b/themes-default/slim/src/components/helpers/search-template-pattern.vue index dd26aa48ae..b37568406c 100644 --- a/themes-default/slim/src/components/helpers/search-template-pattern.vue +++ b/themes-default/slim/src/components/helpers/search-template-pattern.vue @@ -1,13 +1,13 @@