REFACTOR: Refactor WebUI
This commit is contained in:
parent
f0e82de2eb
commit
cf8f539f02
|
@ -7,7 +7,7 @@ import os
|
|||
import mopidy
|
||||
|
||||
from .frontend import PummeluffFrontend
|
||||
from .web import LatestHandler, RegistryHandler, RegisterHandler, TypesHandler
|
||||
from .web import LatestHandler, RegistryHandler, RegisterHandler, TagClassesHandler
|
||||
|
||||
|
||||
def app_factory(config, core): # pylint: disable=unused-argument
|
||||
|
@ -24,7 +24,7 @@ def app_factory(config, core): # pylint: disable=unused-argument
|
|||
('/latest/', LatestHandler, {'core': core}),
|
||||
('/registry/', RegistryHandler, {'core': core}),
|
||||
('/register/', RegisterHandler, {'core': core}),
|
||||
('/types/', TypesHandler, {'core': core}),
|
||||
('/tag-classes/', TagClassesHandler, {'core': core}),
|
||||
]
|
||||
|
||||
|
||||
|
|
|
@ -15,3 +15,7 @@ from .volume import Volume
|
|||
from .play_pause import PlayPause
|
||||
from .stop import Stop
|
||||
from .shutdown import Shutdown
|
||||
|
||||
TAGS = {}
|
||||
for tag in __all__:
|
||||
TAGS[tag] = globals()[tag].__doc__.strip()
|
||||
|
|
|
@ -6,6 +6,7 @@ __all__ = (
|
|||
'LatestHandler',
|
||||
'RegistryHandler',
|
||||
'RegisterHandler',
|
||||
'TagClassesHandler',
|
||||
)
|
||||
|
||||
from json import dumps
|
||||
|
@ -13,8 +14,9 @@ from logging import getLogger
|
|||
|
||||
from tornado.web import RequestHandler
|
||||
|
||||
from . import tags
|
||||
from .threads import TagReader
|
||||
from mopidy_pummeluff.registry import REGISTRY
|
||||
from mopidy_pummeluff.tags import TAGS
|
||||
from mopidy_pummeluff.threads import TagReader
|
||||
|
||||
LOGGER = getLogger(__name__)
|
||||
|
||||
|
@ -77,7 +79,7 @@ class RegistryHandler(RequestHandler): # pylint: disable=abstract-method
|
|||
'''
|
||||
tags_list = []
|
||||
|
||||
for tag in tags.Tag.all().values():
|
||||
for tag in REGISTRY.values():
|
||||
tags_list.append(tag.dict)
|
||||
|
||||
data = {
|
||||
|
@ -108,11 +110,11 @@ class RegisterHandler(RequestHandler): # pylint: disable=abstract-method
|
|||
Handle POST request.
|
||||
'''
|
||||
try:
|
||||
tag = tags.Tag.register(
|
||||
tag = REGISTRY.register(
|
||||
tag_class=self.get_argument('tag-class'),
|
||||
uid=self.get_argument('uid'),
|
||||
alias=self.get_argument('alias', None),
|
||||
parameter=self.get_argument('parameter'),
|
||||
tag_type=self.get_argument('type')
|
||||
parameter=self.get_argument('parameter', None),
|
||||
)
|
||||
|
||||
data = {
|
||||
|
@ -139,9 +141,9 @@ class RegisterHandler(RequestHandler): # pylint: disable=abstract-method
|
|||
self.post()
|
||||
|
||||
|
||||
class TypesHandler(RequestHandler): # pylint: disable=abstract-method
|
||||
class TagClassesHandler(RequestHandler): # pylint: disable=abstract-method
|
||||
'''
|
||||
Request handler which returns all tag types.
|
||||
Request handler which returns all tag classes.
|
||||
'''
|
||||
|
||||
def initialize(self, core): # pylint: disable=arguments-differ
|
||||
|
@ -156,19 +158,10 @@ class TypesHandler(RequestHandler): # pylint: disable=abstract-method
|
|||
'''
|
||||
Handle GET request.
|
||||
'''
|
||||
types = {}
|
||||
|
||||
for cls_name in tags.__all__:
|
||||
tag_cls = getattr(tags, cls_name)
|
||||
if tag_cls is not tags.Tag:
|
||||
tag_type = tags.Tag.get_type(tag_cls)
|
||||
tag_doc = tag_cls.__doc__.strip().split('.')[0]
|
||||
types[tag_type] = tag_doc
|
||||
|
||||
data = {
|
||||
'success': True,
|
||||
'message': 'Types successfully retreived',
|
||||
'types': types
|
||||
'message': 'Tag classes successfully retreived',
|
||||
'tag_classes': TAGS
|
||||
}
|
||||
|
||||
self.set_header('Content-type', 'application/json')
|
||||
|
|
|
@ -21,8 +21,8 @@
|
|||
<a id="read-rfid-tag" href="#">Read UID from RFID tag…</a>
|
||||
<label for="alias">Alias</label>
|
||||
<input id="alias" name="alias" type="text" placeholder="Your personal alias / identifier">
|
||||
<label for="type">Type</label>
|
||||
<select id="type" name="type">
|
||||
<label for="tag-class">Class</label>
|
||||
<select id="tag-class" name="tag-class">
|
||||
</select>
|
||||
<label for="parameter">Parameter</label>
|
||||
<input id="parameter" name="parameter" type="text" placeholder="A type-specific parameter">
|
||||
|
|
|
@ -40,12 +40,12 @@ class API {
|
|||
let tagElement = document.createElement('div')
|
||||
tagElement.setAttribute('class', 'tag')
|
||||
|
||||
let args = new Array('alias', 'uid', 'type', 'parameter')
|
||||
let args = new Array('alias', 'uid', 'tag_class', 'parameter')
|
||||
for(let arg of args)
|
||||
{
|
||||
let spanElement = document.createElement('span')
|
||||
let value = tag[arg] ? tag[arg] : '-'
|
||||
spanElement.setAttribute('class', arg)
|
||||
spanElement.setAttribute('class', arg.replace('_', '-'))
|
||||
spanElement.innerHTML = value
|
||||
tagElement.appendChild(spanElement)
|
||||
}
|
||||
|
@ -58,27 +58,27 @@ class API {
|
|||
}
|
||||
|
||||
/*
|
||||
* Refresh the tag types.
|
||||
* Refresh the tags.
|
||||
*/
|
||||
|
||||
refreshTypes()
|
||||
refreshTagClasses()
|
||||
{
|
||||
let callback = function(response)
|
||||
{
|
||||
let select = document.getElementById('type');
|
||||
let select = document.getElementById('tag-class');
|
||||
while(select.firstChild)
|
||||
select.removeChild(select.firstChild)
|
||||
|
||||
for(let type in response.types)
|
||||
for(let tag_class in response.tag_classes)
|
||||
{
|
||||
let option = document.createElement('option')
|
||||
option.setAttribute('value', type)
|
||||
option.innerHTML = type + ' (' + response.types[type] + ')'
|
||||
option.setAttribute('value', tag_class)
|
||||
option.innerHTML = tag_class + ' (' + response.tag_classes[tag_class] + ')'
|
||||
select.appendChild(option)
|
||||
}
|
||||
}
|
||||
|
||||
this.request('/pummeluff/types/', false, callback)
|
||||
this.request('/pummeluff/tag-classes/', false, callback)
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -95,10 +95,10 @@ class API {
|
|||
if(response.success)
|
||||
{
|
||||
api.refreshRegistry()
|
||||
document.getElementById('uid').value = ''
|
||||
document.getElementById('alias').value = ''
|
||||
document.getElementById('parameter').value = ''
|
||||
document.getElementById('type').selectIndex = 0
|
||||
document.getElementById('uid').value = ''
|
||||
document.getElementById('alias').value = ''
|
||||
document.getElementById('parameter').value = ''
|
||||
document.getElementById('tag-class').selectIndex = 0
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -117,15 +117,15 @@ class API {
|
|||
{
|
||||
let latest_tag = undefined
|
||||
|
||||
let uid_field = document.getElementById('uid')
|
||||
let alias_field = document.getElementById('alias')
|
||||
let parameter_field = document.getElementById('parameter')
|
||||
let type_select = document.getElementById('type')
|
||||
let uid_field = document.getElementById('uid')
|
||||
let alias_field = document.getElementById('alias')
|
||||
let parameter_field = document.getElementById('parameter')
|
||||
let tag_class_select = document.getElementById('tag-class')
|
||||
|
||||
uid_field.value = ''
|
||||
alias_field.value = ''
|
||||
parameter_field.value = ''
|
||||
type_select.selectIndex = 0
|
||||
uid_field.value = ''
|
||||
alias_field.value = ''
|
||||
parameter_field.value = ''
|
||||
tag_class_select.selectIndex = 0
|
||||
|
||||
let link = document.getElementById('read-rfid-tag')
|
||||
link.classList.add('reading')
|
||||
|
@ -144,8 +144,8 @@ class API {
|
|||
if(response.parameter)
|
||||
parameter_field.value = response.parameter
|
||||
|
||||
if(response.type)
|
||||
type_select.value = response.type
|
||||
if(response.tag_class)
|
||||
tag_class_select.value = response.tag_class
|
||||
|
||||
link.classList.remove('reading')
|
||||
}
|
||||
|
@ -168,7 +168,7 @@ class API {
|
|||
api = new API()
|
||||
|
||||
api.refreshRegistry();
|
||||
api.refreshTypes();
|
||||
api.refreshTagClasses();
|
||||
|
||||
document.getElementById('register-form').onsubmit = function()
|
||||
{
|
||||
|
|
|
@ -117,8 +117,8 @@ button
|
|||
#read-rfid-tag
|
||||
{
|
||||
text-decoration: none;
|
||||
color: #fa0;
|
||||
font-size: 11px;
|
||||
color : #fa0;
|
||||
font-size : 11px;
|
||||
}
|
||||
|
||||
#read-rfid-tag.reading {
|
||||
|
@ -144,13 +144,13 @@ div.tag
|
|||
}
|
||||
|
||||
div.tag span.uid,
|
||||
div.tag span.type,
|
||||
div.tag span.tag-class,
|
||||
div.tag span.parameter
|
||||
{
|
||||
font-family: Courier New, monospace;
|
||||
}
|
||||
|
||||
div.tag span.type
|
||||
div.tag span.tag-class
|
||||
{
|
||||
display : inline-block;
|
||||
background-color: #888;
|
||||
|
|
Loading…
Reference in a new issue