]> git.phdru.name Git - m_librarian.git/commitdiff
Feat(web/views/list_books): Toggle checkboxes for series
authorOleg Broytman <phd@phdru.name>
Sat, 17 Dec 2022 15:46:28 +0000 (18:46 +0300)
committerOleg Broytman <phd@phdru.name>
Sat, 17 Dec 2022 17:06:05 +0000 (20:06 +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 4d13ee7b41d3e7b53c479a0240e45992e302228d..c02fdc593389edee7be69ed2df853d8a45b322f1 100644 (file)
@@ -4,6 +4,8 @@
 Версия 0.1.7 (в разработке)
 ---------------------------
 
+* Переключать чекбоксы для книг по сериям.
+
 * Python 3.11.
 
 Версия 0.1.6 (2021-09-24)
index 93f3a30db66ff14a4f32b349696fc80e425459bd..254af813d5101dcd9e19db9b01c9c077b872fa2a 100644 (file)
@@ -4,6 +4,8 @@ News
 Version 0.1.7 (in development)
 ------------------------------
 
+* Toggle checkboxes for books in series.
+
 * Python 3.11.
 
 Version 0.1.6 (2021-09-24)
index 90e74436b9d4d3173641d4def0fd38217088638e..418a5539ae6794419b8f6be6af87007a3ea3f8de 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__ = 1671291191.270126
-__CHEETAH_genTimestamp__ = 'Sat Dec 17 18:33:11 2022'
+__CHEETAH_genTime__ = 1671296508.007271
+__CHEETAH_genTimestamp__ = 'Sat Dec 17 20:01:48 2022'
 __CHEETAH_src__ = 'list_books.tmpl'
-__CHEETAH_srcLastModified__ = 'Sat Dec 17 18:33:09 2022'
+__CHEETAH_srcLastModified__ = 'Sat Dec 17 20:01:44 2022'
 __CHEETAH_docstring__ = 'Autogenerated by Cheetah: The Python-Powered Template Engine'
 
 if __CHEETAH_versionTuple__ < RequiredCheetahVersionTuple:
@@ -93,8 +93,20 @@ class list_books(layout):
         if _v is not None: write(_filter(_v, rawExpr=u'$title')) # from line 7, col 5.
         write(u'''</h1>
 
+<script type="text/javascript" language="Javascript">
+<!--
+function toggleBooks(name, value) {
+  cboxes = document.querySelectorAll(
+    \'input[type=checkbox][name^=\' + name + \'_book]\');
+  for (var i = 0; i < cboxes.length; i++) {
+    cboxes[i].checked = value;
+  }
+}
+// -->
+</script>
+
 ''')
-        if VFFSL(SL,"books_by_author",True): # generated from line 9, col 1
+        if VFFSL(SL,"books_by_author",True): # generated from line 21, col 1
             write(u'''  <form action="/download/" method="POST" style="height: 80%">
   <table style="width: 100%; height: 90%">
   <tr>
@@ -103,80 +115,88 @@ class list_books(layout):
             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 15, col 3
+            for column in VFFSL(SL,"columns",True): # generated from line 27, 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 16, col 36
-                if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($_($column))')) # from line 16, col 36.
+                _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.
                 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 20, col 3
+            for anum, author in VFFSL(SL,"enumerate",False)(VFFSL(SL,"sorted",False)(VFFSL(SL,"books_by_author",True))): # generated from line 32, 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 24, col 5
-                    if VFFSL(SL,"book.series",True) != VFFSL(SL,"series",True): # generated from line 25, col 5
+                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
                         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.
+                        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.
+                        write(u'''"
+  onClick="toggleBooks(this.name, this.checked)"></td>
   <td colspan="''')
-                        _v = VFFSL(SL,"columns1",True) # u'$columns1' on line 29, col 16
-                        if _v is not None: write(_filter(_v, rawExpr=u'$columns1')) # from line 29, col 16.
+                        _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.
                         write(u'''"><b>
   ''')
-                        _v = VFFSL(SL,"author",True) # u'$author' on line 30, col 3
-                        if _v is not None: write(_filter(_v, rawExpr=u'$author')) # from line 30, col 3.
+                        _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.
                         write(u''' \u2014 <i>
 ''')
-                        if VFFSL(SL,"book.series",True): # generated from line 31, col 3
-                            _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"series",True), 1) # u'$cgi.escape($series, 1)' on line 32, col 1
-                            if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($series, 1)')) # from line 32, col 1.
-                        else: # generated from line 33, col 3
+                        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
                             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 40, col 35
-                    if _v is not None: write(_filter(_v, rawExpr=u'${anum+1}')) # from line 40, col 35.
+                    _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.
                     write(u'''_s''')
-                    _v = VFFSL(SL,"snum",True) # u'${snum}' on line 40, col 46
-                    if _v is not None: write(_filter(_v, rawExpr=u'${snum}')) # from line 40, col 46.
+                    _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.
                     write(u'''_books" value="''')
-                    _v = VFFSL(SL,"book.id",True) # u'$book.id' on line 40, col 68
-                    if _v is not None: write(_filter(_v, rawExpr=u'$book.id')) # from line 40, col 68.
+                    _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.
                     write(u'''"></td>
 ''')
-                    for column in VFFSL(SL,"columns",True): # generated from line 41, col 3
-                        if VFFSL(SL,"column",True) in ('ser_no', 'size'): # generated from line 42, col 3
+                    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
                             style = ' style="text-align: right; width: 5ex"'
-                        else: # generated from line 44, col 3
+                        else: # generated from line 58, col 3
                             style = ''
                         write(u'''  <td''')
-                        _v = VFFSL(SL,"style",True) # u'$style' on line 47, col 6
-                        if _v is not None: write(_filter(_v, rawExpr=u'$style')) # from line 47, col 6.
+                        _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.
                         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 47, col 13
-                        if _v is not None: write(_filter(_v, rawExpr=u"$cgi.escape(unicode($getattr($book, $column) or ''))")) # from line 47, 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 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.
                         write(u'''</td>
 ''')
                     write(u'''  </tr>
 ''')
             write(u'''  <tr>
   <td colspan="''')
-            _v = VFFSL(SL,"columns1",True) # u'$columns1' on line 53, col 16
-            if _v is not None: write(_filter(_v, rawExpr=u'$columns1')) # from line 53, col 16.
+            _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.
             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 57, col 1
+        else: # generated from line 71, 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 0e2424d18b70319f09214e8c58ff1c34526fa776..72193218bfd4717ff48f84749da75104547d08fc 100644 (file)
@@ -6,6 +6,18 @@
 #def body
 <h1>$title</h1>
 
+<script type="text/javascript" language="Javascript">
+<!--
+function toggleBooks(name, value) {
+  cboxes = document.querySelectorAll(
+    'input[type=checkbox][name^=' + name + '_book]');
+  for (var i = 0; i < cboxes.length; i++) {
+    cboxes[i].checked = value;
+  }
+}
+// -->
+</script>
+
 #if $books_by_author
   <form action="/download/" method="POST" style="height: 80%">
   <table style="width: 100%; height: 90%">
@@ -26,7 +38,9 @@
     #set $series = $book.series
     #set $snum += 1
   <tr>
-  <td colspan="$columns1"><b>
+  <td><input type=checkbox name="a${anum+1}_s${snum}"
+  onClick="toggleBooks(this.name, this.checked)"></td>
+  <td colspan="${columns1-1}"><b>
   $author — <i>
   #if $book.series
 $cgi.escape($series, 1)#slurp