]> git.phdru.name Git - m_librarian.git/commitdiff
Feat(web/views/list_books): Toggle checkboxes for an author
authorOleg Broytman <phd@phdru.name>
Sat, 17 Dec 2022 19:29:08 +0000 (22:29 +0300)
committerOleg Broytman <phd@phdru.name>
Sat, 17 Dec 2022 19:29:08 +0000 (22:29 +0300)
[skip ci]

docs-ru/news.rst
docs/news.rst
m_librarian/web/views/list_books.py
m_librarian/web/views/list_books.tmpl

index c02fdc593389edee7be69ed2df853d8a45b322f1..9ccb2fb8d96440190dd1c0bf298a0d57d06c14d6 100644 (file)
@@ -4,7 +4,7 @@
 Версия 0.1.7 (в разработке)
 ---------------------------
 
-* Переключать чекбоксы для книг по сериям.
+* Переключать чекбоксы для книг по сериям или для всех книг автора.
 
 * Python 3.11.
 
index 254af813d5101dcd9e19db9b01c9c077b872fa2a..927536c3a40ddf5492db54a7814cc55266901bd4 100644 (file)
@@ -4,7 +4,7 @@ News
 Version 0.1.7 (in development)
 ------------------------------
 
-* Toggle checkboxes for books in series.
+* Toggle checkboxes for books in series or for an author.
 
 * Python 3.11.
 
index 418a5539ae6794419b8f6be6af87007a3ea3f8de..029a49c3e02decd7f09abb74b3f6d13e61fe14ed 100644 (file)
@@ -37,10 +37,10 @@ VFN=valueForName
 currentTime=time.time
 __CHEETAH_version__ = '3.2.6'
 __CHEETAH_versionTuple__ = (3, 2, 6, 'final', 0)
-__CHEETAH_genTime__ = 1671296508.007271
-__CHEETAH_genTimestamp__ = 'Sat Dec 17 20:01:48 2022'
+__CHEETAH_genTime__ = 1671305208.723562
+__CHEETAH_genTimestamp__ = 'Sat Dec 17 22:26:48 2022'
 __CHEETAH_src__ = 'list_books.tmpl'
-__CHEETAH_srcLastModified__ = 'Sat Dec 17 20:01:44 2022'
+__CHEETAH_srcLastModified__ = 'Sat Dec 17 22:26:46 2022'
 __CHEETAH_docstring__ = 'Autogenerated by Cheetah: The Python-Powered Template Engine'
 
 if __CHEETAH_versionTuple__ < RequiredCheetahVersionTuple:
@@ -95,18 +95,25 @@ class list_books(layout):
 
 <script type="text/javascript" language="Javascript">
 <!--
-function toggleBooks(name, value) {
-  cboxes = document.querySelectorAll(
-    \'input[type=checkbox][name^=\' + name + \'_book]\');
+function toggleBooks(selector, value) {
+  cboxes = document.querySelectorAll(selector);
   for (var i = 0; i < cboxes.length; i++) {
     cboxes[i].checked = value;
   }
 }
+
+function toggleAuthor(name, value) {
+  toggleBooks(\'input[type=checkbox][name^=\' + name + \']\', value);
+}
+
+function toggleSeries(name, value) {
+  toggleBooks(\'input[type=checkbox][name^=\' + name + \'_book]\', value);
+}
 // -->
 </script>
 
 ''')
-        if VFFSL(SL,"books_by_author",True): # generated from line 21, col 1
+        if VFFSL(SL,"books_by_author",True): # generated from line 28, col 1
             write(u'''  <form action="/download/" method="POST" style="height: 80%">
   <table style="width: 100%; height: 90%">
   <tr>
@@ -115,88 +122,103 @@ function toggleBooks(name, value) {
             if False:
                 _
             _ = VFFSL(SL,"getattr",False)(VFFSL(SL,"translations",True), 'ugettext', None) or VFFSL(SL,"translations.gettext",True)
-            for column in VFFSL(SL,"columns",True): # generated from line 27, col 3
+            for column in VFFSL(SL,"columns",True): # generated from line 34, col 3
                 write(u'''    <td style="text-align: center">''')
                 if False:
                     _(VFFSL(SL,"column",True))
-                _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"_",False)(VFFSL(SL,"column",True))) # u'$cgi.escape($_($column))' on line 28, col 36
-                if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($_($column))')) # from line 28, col 36.
+                _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"_",False)(VFFSL(SL,"column",True))) # u'$cgi.escape($_($column))' on line 35, col 36
+                if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($_($column))')) # from line 35, col 36.
                 write(u'''</td>
 ''')
             write(u'''  </tr>
 ''')
             columns1 = VFFSL(SL,"len",False)(VFFSL(SL,"columns",True))+1
-            for anum, author in VFFSL(SL,"enumerate",False)(VFFSL(SL,"sorted",False)(VFFSL(SL,"books_by_author",True))): # generated from line 32, col 3
+            for anum, author in VFFSL(SL,"enumerate",False)(VFFSL(SL,"sorted",False)(VFFSL(SL,"books_by_author",True))): # generated from line 39, col 3
                 series = None
                 snum = 0
                 books = VFFSL(SL,"books_by_author",True)[VFFSL(SL,"author",True)]
-                for book in VFFSL(SL,"books",True): # generated from line 36, col 5
-                    if VFFSL(SL,"book.series",True) != VFFSL(SL,"series",True): # generated from line 37, col 5
+                write(u'''  <tr>
+  <td><input type=checkbox name="a''')
+                _v = VFFSL(SL,"anum",True)+1 # u'${anum+1}' on line 44, col 35
+                if _v is not None: write(_filter(_v, rawExpr=u'${anum+1}')) # from line 44, col 35.
+                write(u'''_"
+  onClick="toggleAuthor(this.name, this.checked)"></td>
+  <td colspan="''')
+                _v = VFFSL(SL,"columns1",True)-1 # u'${columns1-1}' on line 46, col 16
+                if _v is not None: write(_filter(_v, rawExpr=u'${columns1-1}')) # from line 46, col 16.
+                write(u'''"><b>''')
+                _v = VFFSL(SL,"author",True) # u'$author' on line 46, col 34
+                if _v is not None: write(_filter(_v, rawExpr=u'$author')) # from line 46, col 34.
+                write(u'''</b></td>
+  </tr>
+''')
+                for book in VFFSL(SL,"books",True): # generated from line 48, col 5
+                    if VFFSL(SL,"book.series",True) != VFFSL(SL,"series",True): # generated from line 49, col 5
                         series = VFFSL(SL,"book.series",True)
                         snum += 1
                         write(u'''  <tr>
   <td><input type=checkbox name="a''')
-                        _v = VFFSL(SL,"anum",True)+1 # u'${anum+1}' on line 41, col 35
-                        if _v is not None: write(_filter(_v, rawExpr=u'${anum+1}')) # from line 41, col 35.
+                        _v = VFFSL(SL,"anum",True)+1 # u'${anum+1}' on line 53, col 35
+                        if _v is not None: write(_filter(_v, rawExpr=u'${anum+1}')) # from line 53, col 35.
                         write(u'''_s''')
-                        _v = VFFSL(SL,"snum",True) # u'${snum}' on line 41, col 46
-                        if _v is not None: write(_filter(_v, rawExpr=u'${snum}')) # from line 41, col 46.
+                        _v = VFFSL(SL,"snum",True) # u'${snum}' on line 53, col 46
+                        if _v is not None: write(_filter(_v, rawExpr=u'${snum}')) # from line 53, col 46.
                         write(u'''"
-  onClick="toggleBooks(this.name, this.checked)"></td>
+  onClick="toggleSeries(this.name, this.checked)"></td>
   <td colspan="''')
-                        _v = VFFSL(SL,"columns1",True)-1 # u'${columns1-1}' on line 43, col 16
-                        if _v is not None: write(_filter(_v, rawExpr=u'${columns1-1}')) # from line 43, col 16.
+                        _v = VFFSL(SL,"columns1",True)-1 # u'${columns1-1}' on line 55, col 16
+                        if _v is not None: write(_filter(_v, rawExpr=u'${columns1-1}')) # from line 55, col 16.
                         write(u'''"><b>
   ''')
-                        _v = VFFSL(SL,"author",True) # u'$author' on line 44, col 3
-                        if _v is not None: write(_filter(_v, rawExpr=u'$author')) # from line 44, col 3.
+                        _v = VFFSL(SL,"author",True) # u'$author' on line 56, col 3
+                        if _v is not None: write(_filter(_v, rawExpr=u'$author')) # from line 56, col 3.
                         write(u''' \u2014 <i>
 ''')
-                        if VFFSL(SL,"book.series",True): # generated from line 45, col 3
-                            _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"series",True), 1) # u'$cgi.escape($series, 1)' on line 46, col 1
-                            if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($series, 1)')) # from line 46, col 1.
-                        else: # generated from line 47, col 3
+                        if VFFSL(SL,"book.series",True): # generated from line 57, col 3
+                            _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"series",True), 1) # u'$cgi.escape($series, 1)' on line 58, col 1
+                            if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($series, 1)')) # from line 58, col 1.
+                        else: # generated from line 59, col 3
                             write(u'''\u0412\u043d\u0435 \u0441\u0435\u0440\u0438\u0439''')
                         write(u'''  </i></b></td>
   </tr>
 ''')
                     write(u'''  <tr>
   <td><input type=checkbox name="a''')
-                    _v = VFFSL(SL,"anum",True)+1 # u'${anum+1}' on line 54, col 35
-                    if _v is not None: write(_filter(_v, rawExpr=u'${anum+1}')) # from line 54, col 35.
+                    _v = VFFSL(SL,"anum",True)+1 # u'${anum+1}' on line 66, col 35
+                    if _v is not None: write(_filter(_v, rawExpr=u'${anum+1}')) # from line 66, col 35.
                     write(u'''_s''')
-                    _v = VFFSL(SL,"snum",True) # u'${snum}' on line 54, col 46
-                    if _v is not None: write(_filter(_v, rawExpr=u'${snum}')) # from line 54, col 46.
+                    _v = VFFSL(SL,"snum",True) # u'${snum}' on line 66, col 46
+                    if _v is not None: write(_filter(_v, rawExpr=u'${snum}')) # from line 66, col 46.
                     write(u'''_books" value="''')
-                    _v = VFFSL(SL,"book.id",True) # u'$book.id' on line 54, col 68
-                    if _v is not None: write(_filter(_v, rawExpr=u'$book.id')) # from line 54, col 68.
+                    _v = VFFSL(SL,"book.id",True) # u'$book.id' on line 66, col 68
+                    if _v is not None: write(_filter(_v, rawExpr=u'$book.id')) # from line 66, col 68.
                     write(u'''"></td>
 ''')
-                    for column in VFFSL(SL,"columns",True): # generated from line 55, col 3
-                        if VFFSL(SL,"column",True) in ('ser_no', 'size'): # generated from line 56, col 3
+                    for column in VFFSL(SL,"columns",True): # generated from line 67, col 3
+                        if VFFSL(SL,"column",True) in ('ser_no', 'size'): # generated from line 68, col 3
                             style = ' style="text-align: right; width: 5ex"'
-                        else: # generated from line 58, col 3
+                        else: # generated from line 70, col 3
                             style = ''
                         write(u'''  <td''')
-                        _v = VFFSL(SL,"style",True) # u'$style' on line 61, col 6
-                        if _v is not None: write(_filter(_v, rawExpr=u'$style')) # from line 61, col 6.
+                        _v = VFFSL(SL,"style",True) # u'$style' on line 73, col 6
+                        if _v is not None: write(_filter(_v, rawExpr=u'$style')) # from line 73, col 6.
                         write(u'''>''')
-                        _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(unicode(VFFSL(SL,"getattr",False)(VFFSL(SL,"book",True), VFFSL(SL,"column",True)) or '')) # u"$cgi.escape(unicode($getattr($book, $column) or ''))" on line 61, col 13
-                        if _v is not None: write(_filter(_v, rawExpr=u"$cgi.escape(unicode($getattr($book, $column) or ''))")) # from line 61, col 13.
+                        _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(unicode(VFFSL(SL,"getattr",False)(VFFSL(SL,"book",True), VFFSL(SL,"column",True)) or '')) # u"$cgi.escape(unicode($getattr($book, $column) or ''))" on line 73, col 13
+                        if _v is not None: write(_filter(_v, rawExpr=u"$cgi.escape(unicode($getattr($book, $column) or ''))")) # from line 73, col 13.
                         write(u'''</td>
 ''')
                     write(u'''  </tr>
 ''')
             write(u'''  <tr>
   <td colspan="''')
-            _v = VFFSL(SL,"columns1",True) # u'$columns1' on line 67, col 16
-            if _v is not None: write(_filter(_v, rawExpr=u'$columns1')) # from line 67, col 16.
+            _v = VFFSL(SL,"columns1",True) # u'$columns1' on line 79, col 16
+            if _v is not None: write(_filter(_v, rawExpr=u'$columns1')) # from line 79, col 16.
             write(u'''" style="text-align: center"><input type="submit" value="\u0421\u043a\u0430\u0447\u0430\u0442\u044c"></td>
   </tr>
   </table>
   </form>
 ''')
-        else: # generated from line 71, col 1
+        else: # generated from line 83, col 1
             write(u'''  <p>\u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u043a\u043d\u0438\u0433\u0438!</p>
 ''')
         
index 72193218bfd4717ff48f84749da75104547d08fc..79f29d39ccd78486e22e595aec678e558a199ccb 100644 (file)
@@ -8,13 +8,20 @@
 
 <script type="text/javascript" language="Javascript">
 <!--
-function toggleBooks(name, value) {
-  cboxes = document.querySelectorAll(
-    'input[type=checkbox][name^=' + name + '_book]');
+function toggleBooks(selector, value) {
+  cboxes = document.querySelectorAll(selector);
   for (var i = 0; i < cboxes.length; i++) {
     cboxes[i].checked = value;
   }
 }
+
+function toggleAuthor(name, value) {
+  toggleBooks('input[type=checkbox][name^=' + name + ']', value);
+}
+
+function toggleSeries(name, value) {
+  toggleBooks('input[type=checkbox][name^=' + name + '_book]', value);
+}
 // -->
 </script>
 
@@ -33,13 +40,18 @@ function toggleBooks(name, value) {
     #set $series = None
     #set $snum = 0
     #set $books = $books_by_author[$author]
+  <tr>
+  <td><input type=checkbox name="a${anum+1}_"
+  onClick="toggleAuthor(this.name, this.checked)"></td>
+  <td colspan="${columns1-1}"><b>$author</b></td>
+  </tr>
     #for $book in $books
     #if $book.series != $series
     #set $series = $book.series
     #set $snum += 1
   <tr>
   <td><input type=checkbox name="a${anum+1}_s${snum}"
-  onClick="toggleBooks(this.name, this.checked)"></td>
+  onClick="toggleSeries(this.name, this.checked)"></td>
   <td colspan="${columns1-1}"><b>
   $author — <i>
   #if $book.series