config.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>TMDb</title>
  5. </head>
  6. <body>
  7. <div id="configPage" data-role="page" class="page type-interior pluginConfigurationPage configPage" data-require="emby-input,emby-button,emby-checkbox">
  8. <div data-role="content">
  9. <div class="content-primary">
  10. <h1>TMDb</h1>
  11. <form class="configForm">
  12. <label class="checkboxContainer">
  13. <input is="emby-checkbox" type="checkbox" id="includeAdult" />
  14. <span>Include adult content in search results.</span>
  15. </label>
  16. <label class="checkboxContainer">
  17. <input is="emby-checkbox" type="checkbox" id="excludeTagsSeries" />
  18. <span>Exclude tags/keywords from metadata fetched for series.</span>
  19. </label>
  20. <label class="checkboxContainer">
  21. <input is="emby-checkbox" type="checkbox" id="excludeTagsMovies" />
  22. <span>Exclude tags/keywords from metadata fetched for movies.</span>
  23. </label>
  24. <label class="checkboxContainer">
  25. <input is="emby-checkbox" type="checkbox" id="importSeasonName" />
  26. <span>Import season name from metadata fetched for series.</span>
  27. </label>
  28. <div class="verticalSection">
  29. <h2>Cast & Crew Settings</h2>
  30. <div class="inputContainer">
  31. <input is="emby-input" type="number" id="maxCastMembers" pattern="[0-9]*" required min="0" max="1000" label="Max Cast Members" />
  32. <div class="fieldDescription">The maximum number of cast members to fetch for an item.</div>
  33. </div>
  34. <div class="inputContainer">
  35. <input is="emby-input" type="number" id="maxCrewMembers" pattern="[0-9]*" required min="0" max="1000" label="Max Crew Members" />
  36. <div class="fieldDescription">The maximum number of crew members to fetch for an item.</div>
  37. </div>
  38. <label class="checkboxContainer">
  39. <input is="emby-checkbox" type="checkbox" id="hideMissingCastMembers" />
  40. <span>Hide cast members without profile images.</span>
  41. </label>
  42. <label class="checkboxContainer">
  43. <input is="emby-checkbox" type="checkbox" id="hideMissingCrewMembers" />
  44. <span>Hide crew members without profile images.</span>
  45. </label>
  46. </div>
  47. <div class="verticalSection verticalSection-extrabottompadding">
  48. <h2>Image Scaling</h2>
  49. <div class="selectContainer">
  50. <select is="emby-select" id="selectPosterSize" label="Poster"></select>
  51. </div>
  52. <div class="selectContainer">
  53. <select is="emby-select" id="selectBackdropSize" label="Backdrop"></select>
  54. </div>
  55. <div class="selectContainer">
  56. <select is="emby-select" id="selectLogoSize" label="Logo"></select>
  57. </div>
  58. <div class="selectContainer">
  59. <select is="emby-select" id="selectProfileSize" label="Profile"></select>
  60. </div>
  61. <div class="selectContainer">
  62. <select is="emby-select" id="selectStillSize" label="Still"></select>
  63. </div>
  64. </div>
  65. <div>
  66. <button is="emby-button" type="submit" class="raised button-submit block"><span>Save</span></button>
  67. </div>
  68. </form>
  69. </div>
  70. </div>
  71. <script type="text/javascript">
  72. var PluginConfig = {
  73. pluginId: "b8715ed1-6c47-4528-9ad3-f72deb539cd4"
  74. };
  75. document.querySelector('.configPage')
  76. .addEventListener('pageshow', function () {
  77. Dashboard.showLoadingMsg();
  78. var clientConfig, pluginConfig;
  79. var configureImageScaling = function() {
  80. if (clientConfig === undefined || pluginConfig === undefined) {
  81. return;
  82. }
  83. if (Object.keys(clientConfig).length === 0) {
  84. clientConfig = {
  85. PosterSizes: [pluginConfig.PosterSize],
  86. BackdropSizes: [pluginConfig.BackdropSize],
  87. LogoSizes: [pluginConfig.LogoSize],
  88. ProfileSizes: [pluginConfig.ProfileSize],
  89. StillSizes: [pluginConfig.StillSize]
  90. };
  91. }
  92. var sizeOptionsGenerator = function (size) {
  93. return '<option value="' + size + '">' + size + '</option>';
  94. }
  95. var selPosterSize = document.querySelector('#selectPosterSize');
  96. selPosterSize.innerHTML = clientConfig.PosterSizes.map(sizeOptionsGenerator);
  97. selPosterSize.value = pluginConfig.PosterSize;
  98. var selBackdropSize = document.querySelector('#selectBackdropSize');
  99. selBackdropSize.innerHTML = clientConfig.BackdropSizes.map(sizeOptionsGenerator);
  100. selBackdropSize.value = pluginConfig.BackdropSize;
  101. var selLogoSize = document.querySelector('#selectLogoSize');
  102. selLogoSize.innerHTML = clientConfig.LogoSizes.map(sizeOptionsGenerator);
  103. selLogoSize.value = pluginConfig.LogoSize;
  104. var selProfileSize = document.querySelector('#selectProfileSize');
  105. selProfileSize.innerHTML = clientConfig.ProfileSizes.map(sizeOptionsGenerator);
  106. selProfileSize.value = pluginConfig.ProfileSize;
  107. var selStillSize = document.querySelector('#selectStillSize');
  108. selStillSize.innerHTML = clientConfig.StillSizes.map(sizeOptionsGenerator);
  109. selStillSize.value = pluginConfig.StillSize;
  110. Dashboard.hideLoadingMsg();
  111. }
  112. const request = {
  113. url: ApiClient.getUrl('tmdb/ClientConfiguration'),
  114. dataType: 'json',
  115. type: 'GET',
  116. headers: { accept: 'application/json' }
  117. }
  118. ApiClient.fetch(request).then(function (config) {
  119. clientConfig = config;
  120. configureImageScaling();
  121. }, function (error) {
  122. error.text().then(function (contents) {
  123. Dashboard.alert({
  124. title: error.statusText,
  125. message: contents
  126. });
  127. clientConfig = {};
  128. configureImageScaling();
  129. });
  130. });
  131. ApiClient.getPluginConfiguration(PluginConfig.pluginId).then(function (config) {
  132. document.querySelector('#includeAdult').checked = config.IncludeAdult;
  133. document.querySelector('#excludeTagsSeries').checked = config.ExcludeTagsSeries;
  134. document.querySelector('#excludeTagsMovies').checked = config.ExcludeTagsMovies;
  135. document.querySelector('#importSeasonName').checked = config.ImportSeasonName;
  136. document.querySelector('#hideMissingCastMembers').checked = config.HideMissingCastMembers;
  137. document.querySelector('#hideMissingCrewMembers').checked = config.HideMissingCrewMembers;
  138. var maxCastMembers = document.querySelector('#maxCastMembers');
  139. maxCastMembers.value = config.MaxCastMembers;
  140. maxCastMembers.dispatchEvent(new Event('change', {
  141. bubbles: true,
  142. cancelable: false
  143. }));
  144. var maxCrewMembers = document.querySelector('#maxCrewMembers');
  145. maxCrewMembers.value = config.MaxCrewMembers;
  146. maxCrewMembers.dispatchEvent(new Event('change', {
  147. bubbles: true,
  148. cancelable: false
  149. }));
  150. pluginConfig = config;
  151. configureImageScaling();
  152. });
  153. });
  154. document.querySelector('.configForm')
  155. .addEventListener('submit', function (e) {
  156. Dashboard.showLoadingMsg();
  157. ApiClient.getPluginConfiguration(PluginConfig.pluginId).then(function (config) {
  158. config.IncludeAdult = document.querySelector('#includeAdult').checked;
  159. config.ExcludeTagsSeries = document.querySelector('#excludeTagsSeries').checked;
  160. config.ExcludeTagsMovies = document.querySelector('#excludeTagsMovies').checked;
  161. config.ImportSeasonName = document.querySelector('#importSeasonName').checked;
  162. config.MaxCastMembers = document.querySelector('#maxCastMembers').value;
  163. config.MaxCrewMembers = document.querySelector('#maxCrewMembers').value;
  164. config.HideMissingCastMembers = document.querySelector('#hideMissingCastMembers').checked;
  165. config.HideMissingCrewMembers = document.querySelector('#hideMissingCrewMembers').checked;
  166. config.PosterSize = document.querySelector('#selectPosterSize').value;
  167. config.BackdropSize = document.querySelector('#selectBackdropSize').value;
  168. config.LogoSize = document.querySelector('#selectLogoSize').value;
  169. config.ProfileSize = document.querySelector('#selectProfileSize').value;
  170. config.StillSize = document.querySelector('#selectStillSize').value;
  171. ApiClient.updatePluginConfiguration(PluginConfig.pluginId, config).then(Dashboard.processPluginConfigurationUpdateResult);
  172. });
  173. e.preventDefault();
  174. return false;
  175. });
  176. </script>
  177. </div>
  178. </body>
  179. </html>