| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
|
|
|
|
|
| |
Thanks:
http://jquerymodal.com/
https://github.com/kylefox/jquery-modal
|
|
|
|
|
|
|
| |
* "updateFormConfigStatus()": Store the configuration validity as a
custom data attribute.
* Check the current configuration validity before start the task on the
server.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Fix bug with getting value of the configuration form. "null" is
returned if the requested configuration field does not exist or has
empty value. Boolean "true/false" is returned if the requested field
is a single checkbox with "data-type=boolean".
* Improve the "setFormConfigSingle()" to support the boolean single
checkbox field.
* Improve the "joinPath()" to validate the two input paths to be joined,
and return "null" if both paths are empty.
* Implement "updateFormConfigStatus()" and enable "#conf-recheck" button.
|
|
|
|
|
|
| |
For simplicity, a single checkbox is used to control the boolean
configuration. For better manipulations of its value, a custom data
"data-type=boolean" is attached to such checkbox.
|
|
|
|
|
| |
* The "workdir" and "configfile" should be both ignored
* Update "_set_configs()" method to allow set "userconfig"
|
| |
|
|
|
|
|
| |
Now, by default, this executable will open the Web UI in a new browser
tab, unless the "--no-browser" argument presents
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Following major foregrounds have been implemented:
+ galactic/synchrotron
+ galactic/freefree
+ galactic/snr
+ extragalacitc/clusters
+ extragalacitc/pointsources
NOTE: this component needs further refactor, improvements,
integration and tests
* A Web UI build upon the Tornado framework and its WebSocket function
is implemented and is already barely usable.
+ The Web interface is beautiful and reasonable
+ The configurations manipulation part performs quiet well
* However, there are also many problems with the Web UI:
+ The layout should be more compact and concise
+ There should be some popup/tooltip to reflect the operation results
+ The console that start the server task is current *BLOCKING* (i.e.,
synchronous), however, the WebSocket currently (Tornado v4.3) does
not support coroutine for the "on_message" method, which further
hampers the problem been solved.
|
|
|
|
|
|
|
|
|
|
| |
* The original sleep test task "_task()" renamed to "_task_test()"
* Also add the new "startServerTaskTest()" to trigger the "_task_test()"
NOTE/XXX:
The foregrounds simulation requires the configurations, which is
currently obtained from "self.websocket.configs", which I think is a
HACK. How to better solve this??
|
| |
|
| |
|
| |
|
|
|
|
|
| |
* Colorize the logging messages of different level with different colors
* Also add a different icon for each message
|
| |
|
|
|
|
|
|
|
| |
Add "updateTaskStatus()" to update the "#task-status" element.
Also add function "getServerTaskStatus()" to get the task status from
the server.
|
|
|
|
|
|
|
|
| |
XXX/FIXME:
The console task will BLOCK the tornado, which should be FIXED!
However, the `WebSocket.on_message` currently may NOT be a coroutine
(as of Tornado v4.3), so another way should be taken to solve this
problem in order to call the console task asynchronously!
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* The "tornado.options" can be used in the *global scope*, therefore,
the command line arguments can be stored in the options and then
import the options in other modules if needed.
* Add argument "--hosts-allowed", which specifies the hosts/network can
access the Web UI (i.e., WebSocket)
* Add argument "--no-browser", which controls whether to open the Web UI
in a browser after startup. (TODO)
|
|
|
|
|
|
|
| |
* Source Sans Pro: regular, italic, semibold, semibold italic; WOFF
* Source Code Pro: regular; WOFF
Thanks Adobe!
|
| |
|
| |
|
|
|
|
|
|
|
| |
When the configuration form changed, the changed values are synced to
the server and validated. The validation errors are then sent back to
the client, which set the custom error messages on the corresponding
fields.
|
| |
|
|
|
|
|
|
|
|
| |
* Split out functions "{g,s}etFormConfigSingle()" from
"setConfigForm()";
* Rename original "setConfigForm()" to "setFormConfigs()", and uses
"{g,s}etFormConfigSingle()" to simplify;
* Update other places accordingly.
|
| |
|
|
|
|
|
|
|
|
| |
* Fix the validation for some "input[type=number]" element;
By default, the number type input only accept *integer*. By setting
the 'step="any"' attribute, the float numbers are also valid.
* Add form input validation styles for ":valid" and ":invalid" pseudo
classes.
|
| |
|
| |
|
|
|
|
|
|
| |
* milligram.css: Remove the "sourceMappingURL"
* main.js: Add "use strict";
* utils.py: Add a TODO task
|
|
|
|
|
|
|
|
|
| |
* Rewrite "configs.js" to be more modular and generic
* Bind functions to button click event
* Implement the function to set form fields to given configuration data
* Implement the function to reset server-side configurations
* Implement the function to load user configuration file on server
* Implement get the configuration data from the server
|
| |
|
|
|
|
|
| |
* Update the "logging" property in "manager.py"
* Also add "extragalactic/clusters" to "common/components"
|
|
|
|
|
| |
Replace the filter hack with a cleaner list comprehension.
Be Pythonic :)
|
|
|
|
|
|
|
| |
* Get the server-side configurations as a flattened one-level
dictionary, for easier manipulations.
* When get the configurations, specify the requested config options as
an Array under the "keys" property (original: "data" property).
|
|
|
|
|
|
|
|
| |
* Add helper function "_flatten_dict()" to flatten a nested dictionary
into an one-level dictionary, with the keys are concatenated with a
separator.
* Add a new parameter "flatten" to method "dump()" to allow the dumped
configurations been flattened.
|
|
|
|
|
|
|
| |
NOTE:
Still missing important client-side functions to be usable, e.g.,
set the configuration form according to the received data from the
server, and mark the error states on the fields with invalid values.
|
|
|
|
|
|
|
|
|
|
|
| |
* Improve the response data to be more consistent. If the request
failed, the returned response has "success" item of value "False" and
an "error" item recording the message;
* Add method "_reset_configs()" to handle the "reset" action;
* Add method "_load_configs()" to handle the "load" action;
* Add method "_save_configs()" to handle the "save" action.
NOTE: needs tests.
|
|
|
|
|
|
|
|
| |
All response message has a "success" item indicating whether the request
be successfully handled. If anything unexpected happens, "success" is
False, and an additional "error" item presents recording the detail.
Also add some more stubs which are necessary for the Web UI.
|
|
|
|
|
|
|
| |
Finish the "_set_configs()" function to implement the "set" action
for "_handle_configs()".
Also change the "status" keyword to "success" to be more intuitive.
|
|
|
|
|
|
|
| |
Add internal method "_get_configs()" which implement the "get" action
part of the "_handle_configs()" method.
TODO: implement the "set" action part.
|
| |
|
|
|
|
|
|
| |
* bin/fg21sim: Simplify the "log_stream" assignment
* bin/fg21sim-webui: Also enable debug logging when turning on debug
flag for the tornado; also update the docstring a little.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Server side:
+ Update the "on_message()" method to support 3 types of message
requests (i.e., "configs", "console", and "results");
+ Add messages stub handlers: "_handle_{configs,console,results}()";
+ Reorder the methods
+ Client side:
+ Change timeout before reconnection to 3000 ms;
+ Parse the received JSON message to JS object;
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
* Rename "validate.py" to "checkers.py", to avoid the confusion with
the "validate" module from "configobj";
* Rename function "validate_configs()" to "check_configs()";
* "check_configs()": add optional parameter "raise_exception";
* "check_configs()": update to return both the result and errors dict.
|