]> git.phdru.name Git - m_librarian.git/commitdiff
Refactor(web): Show books in a <table>, not <select>
authorOleg Broytman <phd@phdru.name>
Sun, 10 Jun 2018 20:10:14 +0000 (23:10 +0300)
committerOleg Broytman <phd@phdru.name>
Sun, 10 Jun 2018 20:10:14 +0000 (23:10 +0300)
m_librarian/web/static/style.css
m_librarian/web/views/books_by_author.py
m_librarian/web/views/books_by_author.tmpl
m_librarian/web/views/list_books.py
m_librarian/web/views/list_books.tmpl

index 7c3502bf2cea90a3c4db2c758f6436b276aa3400..63f6fd287f954dc0bfb993f34790d871109da2c1 100644 (file)
@@ -7,6 +7,7 @@ body {
    width: 99%;
    height: 99%;
    color: #000000;
+   background-color: #FFFFFF;
    font-family: sans-serif;
    text-decoration: none;
    margin: 8pt;
@@ -33,7 +34,10 @@ table {
    border: 1px solid black;
 }
 
+tr:hover {
+   background-color: lightgrey;
+}
+
 td, th {
-   border: 1px solid black;
    text-align: left;
 }
index 6d5399610252bdf81ad9535107fd52d0a609a304..b57790cfa0abb20c4a973c1de4826dc4da418a1e 100644 (file)
@@ -36,10 +36,10 @@ VFN=valueForName
 currentTime=time.time
 __CHEETAH_version__ = '3.1.0'
 __CHEETAH_versionTuple__ = (3, 1, 0, 'final', 1)
-__CHEETAH_genTime__ = 1527213308.313682
-__CHEETAH_genTimestamp__ = 'Fri May 25 04:55:08 2018'
+__CHEETAH_genTime__ = 1528661355.623041
+__CHEETAH_genTimestamp__ = 'Sun Jun 10 23:09:15 2018'
 __CHEETAH_src__ = 'books_by_author.tmpl'
-__CHEETAH_srcLastModified__ = 'Fri May 25 04:55:05 2018'
+__CHEETAH_srcLastModified__ = 'Sun Jun 10 23:09:14 2018'
 __CHEETAH_docstring__ = 'Autogenerated by Cheetah: The Python-Powered Template Engine'
 
 if __CHEETAH_versionTuple__ < RequiredCheetahVersionTuple:
@@ -98,44 +98,44 @@ class books_by_author(layout):
 ''')
         if VFFSL(SL,"books",True): # generated from line 8, col 1
             write(u'''  <form action="/download/" method="POST" style="height: 80%">
-  <div style="width: 100%; height: 90%">
-  <select multiple name="books" style="height: 100%">
+  <table style="width: 100%; height: 90%">
 ''')
             series = None
-            for book in VFFSL(SL,"books",True): # generated from line 13, col 3
-                if VFFSL(SL,"book.series",True) != VFFSL(SL,"series",True): # generated from line 14, col 3
-                    if VFFSL(SL,"series",True) is not None: # generated from line 15, col 3
-                        write(u'''  </optgroup>
-''')
+            for book in VFFSL(SL,"books",True): # generated from line 12, col 3
+                if VFFSL(SL,"book.series",True) != VFFSL(SL,"series",True): # generated from line 13, col 3
                     series = VFFSL(SL,"book.series",True)
-                    write(u'''  <optgroup label="''')
-                    if VFFSL(SL,"book.series",True): # generated from line 20, col 3
-                        _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"series",True), 1) # u'$cgi.escape($series, 1)' on line 21, col 1
-                        if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($series, 1)')) # from line 21, col 1.
-                    else: # generated from line 22, col 3
+                    write(u'''  <tr>
+  <td colspan=2><b><i>
+''')
+                    if VFFSL(SL,"book.series",True): # generated from line 17, col 3
+                        _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"series",True), 1) # u'$cgi.escape($series, 1)' on line 18, col 1
+                        if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($series, 1)')) # from line 18, col 1.
+                    else: # generated from line 19, col 3
                         write(u'''\u0412\u043d\u0435 \u0441\u0435\u0440\u0438\u0439''')
-                    write(u'''">
+                    write(u'''  </i></b></td>
+  </tr>
 ''')
-                write(u'''  <option value="''')
-                _v = VFFSL(SL,"book.id",True) # u'$book.id' on line 27, col 18
-                if _v is not None: write(_filter(_v, rawExpr=u'$book.id')) # from line 27, col 18.
-                write(u'''">''')
-                _v = VFFSL(SL,"book.ser_no",True) # u'$book.ser_no' on line 27, col 28
-                if _v is not None: write(_filter(_v, rawExpr=u'$book.ser_no')) # from line 27, col 28.
+                write(u'''  <tr>
+  <td><input type=checkbox name=books value="''')
+                _v = VFFSL(SL,"book.id",True) # u'$book.id' on line 26, col 46
+                if _v is not None: write(_filter(_v, rawExpr=u'$book.id')) # from line 26, col 46.
+                write(u'''"></td>
+  <td>''')
+                _v = VFFSL(SL,"book.ser_no",True) # u'$book.ser_no' on line 27, col 7
+                if _v is not None: write(_filter(_v, rawExpr=u'$book.ser_no')) # from line 27, col 7.
                 write(u''' ''')
-                _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"book.title",True)) # u'$cgi.escape($book.title)' on line 27, col 41
-                if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($book.title)')) # from line 27, col 41.
-                write(u'''</option>
+                _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"book.title",True)) # u'$cgi.escape($book.title)' on line 27, col 20
+                if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($book.title)')) # from line 27, col 20.
+                write(u'''</td>
+  </tr>
 ''')
-            write(u'''  </optgroup>
-  </select>
-  </div>
-  <div style="width: 100%; text-align: center">
-  <input type="submit" value="\u0421\u043a\u0430\u0447\u0430\u0442\u044c">
-  </div>
+            write(u'''  <tr>
+  <td colspan=2 style="text-align: center"><input type="submit" value="\u0421\u043a\u0430\u0447\u0430\u0442\u044c"></td>
+  </tr>
+  </table>
   </form>
 ''')
-        else: # generated from line 36, col 1
+        else: # generated from line 35, 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 bdd694ea6d162c3a48434edb4700a3cf01fde3e6..61db03c1fe20abefca95d797cc1129ce422a60ca 100644 (file)
@@ -7,31 +7,30 @@
 
 #if $books
   <form action="/download/" method="POST" style="height: 80%">
-  <div style="width: 100%; height: 90%">
-  <select multiple name="books" style="height: 100%">
+  <table style="width: 100%; height: 90%">
   #set $series = None
   #for $book in $books
   #if $book.series != $series
-  #if $series is not None
-  </optgroup>
-  #end if
   #set $series = $book.series
-  <optgroup label="#slurp
+  <tr>
+  <td colspan=2><b><i>
   #if $book.series
 $cgi.escape($series, 1)#slurp
   #else
 Вне серий#slurp
   #end if
-">
+  </i></b></td>
+  </tr>
   #end if
-  <option value="$book.id">$book.ser_no $cgi.escape($book.title)</option>
+  <tr>
+  <td><input type=checkbox name=books value="$book.id"></td>
+  <td>$book.ser_no $cgi.escape($book.title)</td>
+  </tr>
   #end for
-  </optgroup>
-  </select>
-  </div>
-  <div style="width: 100%; text-align: center">
-  <input type="submit" value="Скачать">
-  </div>
+  <tr>
+  <td colspan=2 style="text-align: center"><input type="submit" value="Скачать"></td>
+  </tr>
+  </table>
   </form>
 #else
   <p>Не найдено ни одной книги!</p>
index 01fcda4c7817dff06f7a56117cb785ae6aa52607..7431a3a9a6e68e0ccf2ad9b62b6502d261de306a 100644 (file)
@@ -36,10 +36,10 @@ VFN=valueForName
 currentTime=time.time
 __CHEETAH_version__ = '3.1.0'
 __CHEETAH_versionTuple__ = (3, 1, 0, 'final', 1)
-__CHEETAH_genTime__ = 1527367605.801202
-__CHEETAH_genTimestamp__ = 'Sat May 26 23:46:45 2018'
+__CHEETAH_genTime__ = 1528661355.731921
+__CHEETAH_genTimestamp__ = 'Sun Jun 10 23:09:15 2018'
 __CHEETAH_src__ = 'list_books.tmpl'
-__CHEETAH_srcLastModified__ = 'Sat May 26 23:46:44 2018'
+__CHEETAH_srcLastModified__ = 'Sun Jun 10 23:09:01 2018'
 __CHEETAH_docstring__ = 'Autogenerated by Cheetah: The Python-Powered Template Engine'
 
 if __CHEETAH_versionTuple__ < RequiredCheetahVersionTuple:
@@ -95,49 +95,50 @@ class list_books(layout):
 ''')
         if VFFSL(SL,"books_by_author",True): # generated from line 8, col 1
             write(u'''  <form action="/download/" method="POST" style="height: 80%">
-  <div style="width: 100%; height: 90%">
-  <select multiple name="books" style="height: 100%">
+  <table style="width: 100%; height: 90%">
 ''')
             series = None
-            for author in VFFSL(SL,"sorted",False)(VFFSL(SL,"books_by_author",True)): # generated from line 13, col 3
+            for author in VFFSL(SL,"sorted",False)(VFFSL(SL,"books_by_author",True)): # generated from line 12, col 3
                 books = VFFSL(SL,"books_by_author",True)[VFFSL(SL,"author",True)]
-                for book in VFFSL(SL,"books",True): # generated from line 15, col 5
-                    if VFFSL(SL,"book.series",True) != VFFSL(SL,"series",True): # generated from line 16, col 5
-                        if VFFSL(SL,"series",True) is not None: # generated from line 17, col 5
-                            write(u'''    </optgroup>
-''')
+                for book in VFFSL(SL,"books",True): # generated from line 14, col 5
+                    if VFFSL(SL,"book.series",True) != VFFSL(SL,"series",True): # generated from line 15, col 5
                         series = VFFSL(SL,"book.series",True)
-                        write(u'''    <optgroup label="''')
-                        _v = VFFSL(SL,"author",True) # u'$author' on line 22, col 1
-                        if _v is not None: write(_filter(_v, rawExpr=u'$author')) # from line 22, col 1.
-                        write(u''' \u2014 ''')
-                        if VFFSL(SL,"book.series",True): # generated from line 23, col 5
-                            _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"series",True), 1) # u'$cgi.escape($series, 1)' on line 24, col 1
-                            if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($series, 1)')) # from line 24, col 1.
-                        else: # generated from line 25, col 5
+                        write(u'''  <tr>
+  <td colspan=2><b>
+  ''')
+                        _v = VFFSL(SL,"author",True) # u'$author' on line 19, col 3
+                        if _v is not None: write(_filter(_v, rawExpr=u'$author')) # from line 19, col 3.
+                        write(u''' \u2014 <i>
+''')
+                        if VFFSL(SL,"book.series",True): # generated from line 20, col 3
+                            _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"series",True), 1) # u'$cgi.escape($series, 1)' on line 21, col 1
+                            if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($series, 1)')) # from line 21, col 1.
+                        else: # generated from line 22, col 3
                             write(u'''\u0412\u043d\u0435 \u0441\u0435\u0440\u0438\u0439''')
-                        write(u'''">
+                        write(u'''  </i></b></td>
+  </tr>
 ''')
-                    write(u'''    <option value="''')
-                    _v = VFFSL(SL,"book.id",True) # u'$book.id' on line 30, col 20
-                    if _v is not None: write(_filter(_v, rawExpr=u'$book.id')) # from line 30, col 20.
-                    write(u'''">''')
-                    _v = VFFSL(SL,"book.ser_no",True) # u'$book.ser_no' on line 30, col 30
-                    if _v is not None: write(_filter(_v, rawExpr=u'$book.ser_no')) # from line 30, col 30.
+                    write(u'''  <tr>
+  <td><input type=checkbox name=books value="''')
+                    _v = VFFSL(SL,"book.id",True) # u'$book.id' on line 29, col 46
+                    if _v is not None: write(_filter(_v, rawExpr=u'$book.id')) # from line 29, col 46.
+                    write(u'''"></td>
+  <td>''')
+                    _v = VFFSL(SL,"book.ser_no",True) # u'$book.ser_no' on line 30, col 7
+                    if _v is not None: write(_filter(_v, rawExpr=u'$book.ser_no')) # from line 30, col 7.
                     write(u''' ''')
-                    _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"book.title",True)) # u'$cgi.escape($book.title)' on line 30, col 43
-                    if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($book.title)')) # from line 30, col 43.
-                    write(u'''</option>
+                    _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"book.title",True)) # u'$cgi.escape($book.title)' on line 30, col 20
+                    if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($book.title)')) # from line 30, col 20.
+                    write(u'''</td>
+  </tr>
 ''')
-            write(u'''  </optgroup>
-  </select>
-  </div>
-  <div style="width: 100%; text-align: center">
-  <input type="submit" value="\u0421\u043a\u0430\u0447\u0430\u0442\u044c">
-  </div>
+            write(u'''  <tr>
+  <td colspan=2 style="text-align: center"><input type="submit" value="\u0421\u043a\u0430\u0447\u0430\u0442\u044c"></td>
+  </tr>
+  </table>
   </form>
 ''')
-        else: # generated from line 40, col 1
+        else: # generated from line 39, 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 cab1e1d3edad0856bb6888ab160e1b2c816d4b7e..649922bc8a4917ad96493e8ed4c62e1eb0125054 100644 (file)
@@ -7,35 +7,34 @@
 
 #if $books_by_author
   <form action="/download/" method="POST" style="height: 80%">
-  <div style="width: 100%; height: 90%">
-  <select multiple name="books" style="height: 100%">
+  <table style="width: 100%; height: 90%">
   #set $series = None
   #for $author in $sorted($books_by_author)
     #set $books = $books_by_author[$author]
     #for $book in $books
     #if $book.series != $series
-    #if $series is not None
-    </optgroup>
-    #end if
     #set $series = $book.series
-    <optgroup label="#slurp
-$author — #slurp
-    #if $book.series
+  <tr>
+  <td colspan=2><b>
+  $author — <i>
+  #if $book.series
 $cgi.escape($series, 1)#slurp
-    #else
+  #else
 Вне серий#slurp
+  #end if
+  </i></b></td>
+  </tr>
     #end if
-">
-    #end if
-    <option value="$book.id">$book.ser_no $cgi.escape($book.title)</option>
+  <tr>
+  <td><input type=checkbox name=books value="$book.id"></td>
+  <td>$book.ser_no $cgi.escape($book.title)</td>
+  </tr>
     #end for
   #end for
-  </optgroup>
-  </select>
-  </div>
-  <div style="width: 100%; text-align: center">
-  <input type="submit" value="Скачать">
-  </div>
+  <tr>
+  <td colspan=2 style="text-align: center"><input type="submit" value="Скачать"></td>
+  </tr>
+  </table>
   </form>
 #else
   <p>Не найдено ни одной книги!</p>