This commit is contained in:
Damien Elmes 2012-02-06 09:29:52 +09:00
commit 1eff071dfd

View file

@ -48,16 +48,19 @@ class DeckBrowser(object):
# HTML generation # HTML generation
########################################################################## ##########################################################################
_dragIndicatorBorderWidth = "1px"
_css = """ _css = """
tr { font-size: 12px; } tr { font-size: 12px; }
a.deck { color: #000; text-decoration: none; } a.deck { color: #000; text-decoration: none; }
a.deck:hover { text-decoration: underline; } a.deck:hover { text-decoration: underline; }
tr.deck td { border-bottom: thick solid transparent; } tr.deck td { border-bottom: %(width)s solid transparent; }
tr.top-level-drag-row td { border-bottom: %(width)s solid transparent; }
td.opts { white-space: nowrap; } td.opts { white-space: nowrap; }
tr.drag-hover td { border-bottom: 1px solid #aaa; } tr.drag-hover td { border-bottom: %(width)s solid #aaa; }
.extra { font-size: 90%; } .extra { font-size: 90%%; }
body { margin: 1em; -webkit-user-select: none; } body { margin: 1em; -webkit-user-select: none; }
""" """ % dict(width=_dragIndicatorBorderWidth)
_body = """ _body = """
<center> <center>
@ -76,13 +79,14 @@ body { margin: 1em; -webkit-user-select: none; }
helper: function (event) { helper: function (event) {
return $(this).clone(false); return $(this).clone(false);
}, },
delay: 200,
opacity: 0.7 opacity: 0.7
}); });
$("tr.deck").droppable({ $("tr.deck").droppable({
drop: handleDropEvent, drop: handleDropEvent,
hoverClass: 'drag-hover', hoverClass: 'drag-hover',
}); });
$("tr.bottom-row").droppable({ $("tr.top-level-drag-row").droppable({
drop: handleDropEvent, drop: handleDropEvent,
hoverClass: 'drag-hover', hoverClass: 'drag-hover',
}); });
@ -99,11 +103,8 @@ body { margin: 1em; -webkit-user-select: none; }
def _renderPage(self): def _renderPage(self):
css = self.mw.sharedCSS + self._css css = self.mw.sharedCSS + self._css
tree = self._renderDeckTree(self.mw.col.sched.deckDueTree()) \ tree = self._renderDeckTree(self.mw.col.sched.deckDueTree())
+ self._bogusBottomRowForDraggingDeckToTopLevel() self.web.stdHtml(self._body%dict(tree=tree), css=css)
self.web.stdHtml(self._body%dict(
title=_("Decks"),
tree=tree), css=css)
self._drawButtons() self._drawButtons()
def _renderDeckTree(self, nodes, depth=0): def _renderDeckTree(self, nodes, depth=0):
@ -114,10 +115,13 @@ body { margin: 1em; -webkit-user-select: none; }
<tr><th colspan=5 align=left>%s</th><th align=right>%s</th> <tr><th colspan=5 align=left>%s</th><th align=right>%s</th>
<th align=right>%s</th></tr>""" % ( <th align=right>%s</th></tr>""" % (
_("Deck"), _("Due"), _("New")) _("Deck"), _("Due"), _("New"))
buf += self._topLevelDragRow()
else: else:
buf = "" buf = ""
for node in nodes: for node in nodes:
buf += self._deckRow(node, depth) buf += self._deckRow(node, depth)
if depth == 0:
buf += self._topLevelDragRow()
return buf return buf
def _deckRow(self, node, depth): def _deckRow(self, node, depth):
@ -143,8 +147,8 @@ body { margin: 1em; -webkit-user-select: none; }
buf += self._renderDeckTree(children, depth+1) buf += self._renderDeckTree(children, depth+1)
return buf return buf
def _bogusBottomRowForDraggingDeckToTopLevel(self): def _topLevelDragRow(self):
return "<tr class='bottom-row'><td colspan='6'>&nbsp;</td></tr>" return "<tr class='top-level-drag-row'><td colspan='6'>&nbsp;</td></tr>"
def _dueImg(self, due, new): def _dueImg(self, due, new):
if due: if due: