]> git.phdru.name Git - m_librarian.git/commitdiff
Feat(web/views/list_books): Toggle checkboxes for all books
authorOleg Broytman <phd@phdru.name>
Sat, 17 Dec 2022 19:33:31 +0000 (22:33 +0300)
committerOleg Broytman <phd@phdru.name>
Sat, 17 Dec 2022 19:33:31 +0000 (22:33 +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 9ccb2fb8d96440190dd1c0bf298a0d57d06c14d6..aeba32145e2bea81da02adef50fd7f3df12103fb 100644 (file)
@@ -4,7 +4,7 @@
 Версия 0.1.7 (в разработке)
 ---------------------------
 
-* Переключать чекбоксы для книг по сериям или для всех книг автора.
+* Переключать чекбоксы для книг по сериям, для всех книг автора или все.
 
 * Python 3.11.
 
index 927536c3a40ddf5492db54a7814cc55266901bd4..8ce27c888fd99e0b3de7f48a771f79877c83fbcd 100644 (file)
@@ -4,7 +4,7 @@ News
 Version 0.1.7 (in development)
 ------------------------------
 
-* Toggle checkboxes for books in series or for an author.
+* Toggle checkboxes for books in series, for an author or all.
 
 * Python 3.11.
 
index 029a49c3e02decd7f09abb74b3f6d13e61fe14ed..346f1252c3b6d8bc452d7afad6527857429c1a40 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__ = 1671305208.723562
-__CHEETAH_genTimestamp__ = 'Sat Dec 17 22:26:48 2022'
+__CHEETAH_genTime__ = 1671305495.844598
+__CHEETAH_genTimestamp__ = 'Sat Dec 17 22:31:35 2022'
 __CHEETAH_src__ = 'list_books.tmpl'
-__CHEETAH_srcLastModified__ = 'Sat Dec 17 22:26:46 2022'
+__CHEETAH_srcLastModified__ = 'Sat Dec 17 22:31:33 2022'
 __CHEETAH_docstring__ = 'Autogenerated by Cheetah: The Python-Powered Template Engine'
 
 if __CHEETAH_versionTuple__ < RequiredCheetahVersionTuple:
@@ -102,6 +102,10 @@ function toggleBooks(selector, value) {
   }
 }
 
+function toggleAll(value) {
+  toggleBooks(\'input[type=checkbox]\', value);
+}
+
 function toggleAuthor(name, value) {
   toggleBooks(\'input[type=checkbox][name^=\' + name + \']\', value);
 }
@@ -113,112 +117,113 @@ function toggleSeries(name, value) {
 </script>
 
 ''')
-        if VFFSL(SL,"books_by_author",True): # generated from line 28, col 1
+        if VFFSL(SL,"books_by_author",True): # generated from line 32, col 1
             write(u'''  <form action="/download/" method="POST" style="height: 80%">
   <table style="width: 100%; height: 90%">
   <tr>
-  <td>&nbsp;</td>
+  <td><input type=checkbox name="_toggleAll"
+  onClick="toggleAll(this.checked)"></td>
   ''')
             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 34, col 3
+            for column in VFFSL(SL,"columns",True): # generated from line 39, 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 35, col 36
-                if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($_($column))')) # from line 35, col 36.
+                _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"_",False)(VFFSL(SL,"column",True))) # u'$cgi.escape($_($column))' on line 40, col 36
+                if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($_($column))')) # from line 40, 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 39, col 3
+            for anum, author in VFFSL(SL,"enumerate",False)(VFFSL(SL,"sorted",False)(VFFSL(SL,"books_by_author",True))): # generated from line 44, col 3
                 series = None
                 snum = 0
                 books = VFFSL(SL,"books_by_author",True)[VFFSL(SL,"author",True)]
                 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.
+                _v = VFFSL(SL,"anum",True)+1 # u'${anum+1}' on line 49, col 35
+                if _v is not None: write(_filter(_v, rawExpr=u'${anum+1}')) # from line 49, 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.
+                _v = VFFSL(SL,"columns1",True)-1 # u'${columns1-1}' on line 51, col 16
+                if _v is not None: write(_filter(_v, rawExpr=u'${columns1-1}')) # from line 51, 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.
+                _v = VFFSL(SL,"author",True) # u'$author' on line 51, col 34
+                if _v is not None: write(_filter(_v, rawExpr=u'$author')) # from line 51, 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
+                for book in VFFSL(SL,"books",True): # generated from line 53, col 5
+                    if VFFSL(SL,"book.series",True) != VFFSL(SL,"series",True): # generated from line 54, 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 53, col 35
-                        if _v is not None: write(_filter(_v, rawExpr=u'${anum+1}')) # from line 53, col 35.
+                        _v = VFFSL(SL,"anum",True)+1 # u'${anum+1}' on line 58, col 35
+                        if _v is not None: write(_filter(_v, rawExpr=u'${anum+1}')) # from line 58, col 35.
                         write(u'''_s''')
-                        _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.
+                        _v = VFFSL(SL,"snum",True) # u'${snum}' on line 58, col 46
+                        if _v is not None: write(_filter(_v, rawExpr=u'${snum}')) # from line 58, col 46.
                         write(u'''"
   onClick="toggleSeries(this.name, this.checked)"></td>
   <td colspan="''')
-                        _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.
+                        _v = VFFSL(SL,"columns1",True)-1 # u'${columns1-1}' on line 60, col 16
+                        if _v is not None: write(_filter(_v, rawExpr=u'${columns1-1}')) # from line 60, col 16.
                         write(u'''"><b>
   ''')
-                        _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.
+                        _v = VFFSL(SL,"author",True) # u'$author' on line 61, col 3
+                        if _v is not None: write(_filter(_v, rawExpr=u'$author')) # from line 61, col 3.
                         write(u''' \u2014 <i>
 ''')
-                        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
+                        if VFFSL(SL,"book.series",True): # generated from line 62, col 3
+                            _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"series",True), 1) # u'$cgi.escape($series, 1)' on line 63, col 1
+                            if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($series, 1)')) # from line 63, col 1.
+                        else: # generated from line 64, 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 66, col 35
-                    if _v is not None: write(_filter(_v, rawExpr=u'${anum+1}')) # from line 66, col 35.
+                    _v = VFFSL(SL,"anum",True)+1 # u'${anum+1}' on line 71, col 35
+                    if _v is not None: write(_filter(_v, rawExpr=u'${anum+1}')) # from line 71, col 35.
                     write(u'''_s''')
-                    _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.
+                    _v = VFFSL(SL,"snum",True) # u'${snum}' on line 71, col 46
+                    if _v is not None: write(_filter(_v, rawExpr=u'${snum}')) # from line 71, col 46.
                     write(u'''_books" value="''')
-                    _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.
+                    _v = VFFSL(SL,"book.id",True) # u'$book.id' on line 71, col 68
+                    if _v is not None: write(_filter(_v, rawExpr=u'$book.id')) # from line 71, col 68.
                     write(u'''"></td>
 ''')
-                    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
+                    for column in VFFSL(SL,"columns",True): # generated from line 72, col 3
+                        if VFFSL(SL,"column",True) in ('ser_no', 'size'): # generated from line 73, col 3
                             style = ' style="text-align: right; width: 5ex"'
-                        else: # generated from line 70, col 3
+                        else: # generated from line 75, col 3
                             style = ''
                         write(u'''  <td''')
-                        _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.
+                        _v = VFFSL(SL,"style",True) # u'$style' on line 78, col 6
+                        if _v is not None: write(_filter(_v, rawExpr=u'$style')) # from line 78, 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 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.
+                        _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 78, col 13
+                        if _v is not None: write(_filter(_v, rawExpr=u"$cgi.escape(unicode($getattr($book, $column) or ''))")) # from line 78, col 13.
                         write(u'''</td>
 ''')
                     write(u'''  </tr>
 ''')
             write(u'''  <tr>
   <td colspan="''')
-            _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.
+            _v = VFFSL(SL,"columns1",True) # u'$columns1' on line 84, col 16
+            if _v is not None: write(_filter(_v, rawExpr=u'$columns1')) # from line 84, 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 83, col 1
+        else: # generated from line 88, 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 79f29d39ccd78486e22e595aec678e558a199ccb..3fa406a1a351a92b60f3c8bb4df4f80cf09ea6f7 100644 (file)
@@ -15,6 +15,10 @@ function toggleBooks(selector, value) {
   }
 }
 
+function toggleAll(value) {
+  toggleBooks('input[type=checkbox]', value);
+}
+
 function toggleAuthor(name, value) {
   toggleBooks('input[type=checkbox][name^=' + name + ']', value);
 }
@@ -29,7 +33,8 @@ function toggleSeries(name, value) {
   <form action="/download/" method="POST" style="height: 80%">
   <table style="width: 100%; height: 90%">
   <tr>
-  <td>&nbsp;</td>
+  <td><input type=checkbox name="_toggleAll"
+  onClick="toggleAll(this.checked)"></td>
   #set $_ = $getattr($translations, 'ugettext', None) or $translations.gettext
   #for $column in $columns
     <td style="text-align: center">$cgi.escape($_($column))</td>