mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
More work on in-server conversion
This commit is contained in:
parent
4dd9a58262
commit
6ddf112fb5
@ -145,7 +145,7 @@ def get_conversion_options(input_fmt, output_fmt, book_id, db):
|
|||||||
ans = {'options': {}, 'disabled': set()}
|
ans = {'options': {}, 'disabled': set()}
|
||||||
|
|
||||||
def merge_group(group_name, option_names):
|
def merge_group(group_name, option_names):
|
||||||
if not group_name or group_name == 'debug':
|
if not group_name or group_name in ('debug', 'metadata'):
|
||||||
return
|
return
|
||||||
defs = load_defaults(group_name)
|
defs = load_defaults(group_name)
|
||||||
defs.merge_recommendations(plumber.get_option_by_name, OptionRecommendation.LOW, option_names)
|
defs.merge_recommendations(plumber.get_option_by_name, OptionRecommendation.LOW, option_names)
|
||||||
|
@ -11,7 +11,7 @@ from book_list.library_data import load_status, url_books_query
|
|||||||
from book_list.router import back, report_a_load_failure
|
from book_list.router import back, report_a_load_failure
|
||||||
from book_list.top_bar import create_top_bar, set_title
|
from book_list.top_bar import create_top_bar, set_title
|
||||||
from book_list.ui import set_panel_handler
|
from book_list.ui import set_panel_handler
|
||||||
from dom import add_extra_css, build_rule
|
from dom import add_extra_css, build_rule, clear
|
||||||
from utils import conditional_timeout, parse_url_params
|
from utils import conditional_timeout, parse_url_params
|
||||||
from widgets import create_button
|
from widgets import create_button
|
||||||
|
|
||||||
@ -58,10 +58,24 @@ def start_conversion():
|
|||||||
|
|
||||||
|
|
||||||
def create_configuring_markup():
|
def create_configuring_markup():
|
||||||
|
ignore_changes = False
|
||||||
ans = E.div(class_='top')
|
ans = E.div(class_='top')
|
||||||
|
|
||||||
|
def on_format_change():
|
||||||
|
nonlocal ignore_changes, current_state
|
||||||
|
if ignore_changes:
|
||||||
|
return
|
||||||
|
input_fmt = container_for_current_state().querySelector('select[name="input_formats"').value
|
||||||
|
output_fmt = container_for_current_state().querySelector('select[name="output_formats"').value
|
||||||
|
current_state = 'initializing'
|
||||||
|
conditional_timeout(overall_container_id, 5, check_for_data_loaded)
|
||||||
|
q = parse_url_params()
|
||||||
|
fetch_conversion_data(q.book_id, input_fmt, output_fmt)
|
||||||
|
apply_state_to_markup()
|
||||||
|
|
||||||
def generate_choice(name):
|
def generate_choice(name):
|
||||||
ans = E.select(name=name)
|
ans = E.select(name=name)
|
||||||
|
ans.addEventListener('change', on_format_change)
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
tcell = 'display: table-cell; padding-top: 1em; padding-left: 1em'
|
tcell = 'display: table-cell; padding-top: 1em; padding-left: 1em'
|
||||||
@ -87,11 +101,15 @@ def create_configuring_markup():
|
|||||||
ans.appendChild(start_conv)
|
ans.appendChild(start_conv)
|
||||||
|
|
||||||
def initialize(container):
|
def initialize(container):
|
||||||
|
nonlocal ignore_changes
|
||||||
|
ignore_changes = True
|
||||||
for name in 'input_formats', 'output_formats':
|
for name in 'input_formats', 'output_formats':
|
||||||
sel = container.querySelector(f'select[name="{name}"]')
|
sel = container.querySelector(f'select[name="{name}"]')
|
||||||
|
clear(sel)
|
||||||
formats = conversion_data[name]
|
formats = conversion_data[name]
|
||||||
for fmt in formats:
|
for fmt in formats:
|
||||||
sel.appendChild(E.option(fmt, value=fmt))
|
sel.appendChild(E.option(fmt, value=fmt))
|
||||||
|
ignore_changes = False
|
||||||
|
|
||||||
return ans, initialize
|
return ans, initialize
|
||||||
|
|
||||||
@ -117,12 +135,16 @@ def on_data_loaded(end_type, xhr, ev):
|
|||||||
bad_load()
|
bad_load()
|
||||||
|
|
||||||
|
|
||||||
def fetch_conversion_data(book_id):
|
def fetch_conversion_data(book_id, input_fmt, output_fmt):
|
||||||
nonlocal conversion_data
|
nonlocal conversion_data
|
||||||
if conversion_data_load_status.current_fetch:
|
if conversion_data_load_status.current_fetch:
|
||||||
conversion_data_load_status.current_fetch.abort()
|
conversion_data_load_status.current_fetch.abort()
|
||||||
conversion_data = None
|
conversion_data = None
|
||||||
query = url_books_query()
|
query = url_books_query()
|
||||||
|
if input_fmt:
|
||||||
|
query.input_fmt = input_fmt
|
||||||
|
if output_fmt:
|
||||||
|
query.output_fmt = output_fmt
|
||||||
conversion_data_load_status.loading = True
|
conversion_data_load_status.loading = True
|
||||||
conversion_data_load_status.ok = False
|
conversion_data_load_status.ok = False
|
||||||
conversion_data_load_status.error_html = None
|
conversion_data_load_status.error_html = None
|
||||||
|
Loading…
x
Reference in New Issue
Block a user