openwebrx-clone/owrx/controllers/bookmarks.py

72 lines
2.7 KiB
Python
Raw Normal View History

from owrx.controllers.template import WebpageController
from owrx.controllers.admin import AuthorizationMixin
2021-02-13 17:35:15 +00:00
from owrx.bookmarks import Bookmark, Bookmarks
2021-02-13 22:53:16 +00:00
from owrx.modes import Modes
class BookmarksController(AuthorizationMixin, WebpageController):
def header_variables(self):
variables = super().header_variables()
variables["assets_prefix"] = "../"
return variables
2021-02-13 17:35:15 +00:00
def template_variables(self):
variables = super().template_variables()
variables["bookmarks"] = self.render_table()
return variables
def render_table(self):
bookmarks = Bookmarks.getSharedInstance()
2021-02-13 22:53:16 +00:00
def render_mode(m):
return """
<option value={mode}>{name}</option>
""".format(
mode=m.modulation,
name=m.name,
)
2021-02-13 17:35:15 +00:00
return """
<table class="table bookmarks">
<tr>
<th>Name</th>
<th class="frequency">Frequency</th>
<th>Modulation</th>
2021-02-13 17:41:42 +00:00
<th>Actions</th>
2021-02-13 17:35:15 +00:00
</tr>
{bookmarks}
2021-02-13 22:53:16 +00:00
<tr class="inputs" style="display:none;">
<td><input class="form-control form-control-sm" type="text" name="name"></td>
<td><input class="form-control form-control-sm" type="number" step="1" name="frequency"></td>
<td><select class="form-control form-control-sm" name="modulation">{options}</select></td>
<td></td>
</tr>
2021-02-13 17:35:15 +00:00
</table>
""".format(
2021-02-13 22:53:16 +00:00
bookmarks="".join(self.render_bookmark(idx, b) for idx, b in enumerate(bookmarks.getBookmarks())),
options="".join(render_mode(m) for m in Modes.getAvailableModes()),
2021-02-13 17:35:15 +00:00
)
def render_bookmark(self, idx: int, bookmark: Bookmark):
2021-02-13 22:53:16 +00:00
mode = Modes.findByModulation(bookmark.getModulation())
2021-02-13 17:35:15 +00:00
return """
2021-02-13 17:41:42 +00:00
<tr data-index="{index}" data-id="{id}">
2021-02-13 17:35:15 +00:00
<td>{name}</td>
<td class="frequency">{frequency}</td>
2021-02-13 22:53:16 +00:00
<td data-value="{modulation}">{modulation_name}</td>
2021-02-13 17:41:42 +00:00
<td>
<div class="btn btn-sm btn-danger bookmark-delete">delete</div>
</td>
2021-02-13 17:35:15 +00:00
</tr>
""".format(
index=idx,
2021-02-13 17:41:42 +00:00
id=id(bookmark),
2021-02-13 17:35:15 +00:00
name=bookmark.getName(),
frequency=bookmark.getFrequency(),
2021-02-13 22:53:16 +00:00
modulation=bookmark.getModulation() if mode is None else mode.modulation,
modulation_name=bookmark.getModulation() if mode is None else mode.name,
2021-02-13 17:35:15 +00:00
)
def indexAction(self):
self.serve_template("settings/bookmarks.html", **self.template_variables())