diff --git a/src/pyj/book_list/book_details.pyj b/src/pyj/book_list/book_details.pyj index 2b5c596d79..b2d64b188a 100644 --- a/src/pyj/book_list/book_details.pyj +++ b/src/pyj/book_list/book_details.pyj @@ -36,7 +36,7 @@ def get_preferred_format(metadata, output_format, input_formats): break return fmt.toUpperCase() -IGNORED_FIELDS = {'title', 'id', 'urls_from_identifiers', 'lang_names', 'last_modified'} +IGNORED_FIELDS = {'title', 'sort', 'uuid', 'id', 'urls_from_identifiers', 'lang_names', 'last_modified'} default_sort = {f:i+1 for i, f in enumerate(('title', 'title_sort', 'authors', 'author_sort', 'series', 'rating', 'pubdate', 'tags', 'timestamp', 'pubdate', 'identifiers', 'languages', 'publisher', 'last_modified'))} default_sort['formats'] = 999 @@ -73,7 +73,7 @@ def render_metadata(mi, interface_data, table, field_list=None): return True fields = field_list or sorted(filter(allowed_fields, mi), key=field_sorter(interface_data.field_metadata)) - comments = [] + comments = {} def add_row(name, val, is_searchable=False, is_html=False, join=None): def add_val(v): @@ -81,7 +81,7 @@ def render_metadata(mi, interface_data, table, field_list=None): v += '' if is_searchable: table.lastChild.lastChild.appendChild(E.a( - data_search=JSON.stringify([name, v]), onclick=execute_search, + data_search=JSON.stringify([is_searchable, v]), onclick=execute_search, title=str.format(_('Click to see books with {0}: {1}'), name, v), href='javascript: void(0)', v)) else: if v.appendChild: @@ -107,15 +107,15 @@ def render_metadata(mi, interface_data, table, field_list=None): return if fm.is_multiple and fm.is_multiple.list_to_ui: all_vals = filter(None, map(str.strip, str.split(val, fm.is_multiple.list_to_ui))) - add_row(name, all_vals, is_searchable=True, join=fm.is_multiple.list_to_ui) + add_row(name, all_vals, is_searchable=field, join=fm.is_multiple.list_to_ui) else: - add_row(name, val, is_searchable=True) + add_row(name, val, is_searchable=field) def process_authors(field, fm, name, val): - add_row(name, val, is_searchable=True, join=' & ') + add_row(name, val, is_searchable=field, join=' & ') def process_publisher(field, fm, name, val): - add_row(name, val, is_searchable=True) + add_row(name, val, is_searchable=field) def process_formats(field, fm, name, val): table.appendChild(E.tr(E.td(name + ':'), E.td())) @@ -190,7 +190,7 @@ def render_metadata(mi, interface_data, table, field_list=None): ival = fmt_sidx(ival, use_roman=interface_data.use_roman_numerals_for_series_number) table.appendChild(E.tr(E.td(name + ':'), E.td())) table.lastChild.lastChild.appendChild(E.span(ival, _(' of '), E.a( - data_search=JSON.stringify([name, val]), onclick=execute_search, + data_search=JSON.stringify([field, val]), onclick=execute_search, title=str.format(_('Click to see books with {0}: {1}'), name, val), href='javascript: void(0)', val))) def process_field(field, fm): @@ -198,7 +198,7 @@ def render_metadata(mi, interface_data, table, field_list=None): datatype = fm.datatype val = mi[field] if field == 'comments' or datatype == 'comments': - comments.append(val) + comments[field] = val return func = None if datatype == 'composite': @@ -222,7 +222,9 @@ def render_metadata(mi, interface_data, table, field_list=None): if func: func(field, fm, name, val) else: - pass + if datatype == 'text': + join = fm.is_multiple.list_to_ui if fm.is_multiple else None + add_row(name, val, join=join, is_searchable=field) for field in fields: fm = interface_data.field_metadata[field] @@ -234,7 +236,9 @@ def render_metadata(mi, interface_data, table, field_list=None): print('Failed to render metadata field: ' + field) print(err.toString()) print(err.stack) - for i, comment in enumerate(comments): + + for i, field in enumerate(sorted(comments)): + comment = comments[field] div = E.div() div.innerHTML = comment table.parentNode.appendChild(div)