aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* configs/checkers.py: Check missing before validating the valuesAaron LI2016-11-111-4/+12
|
* webui: bin/fg21sim-webui: implement argument "--no-browser"Aaron LI2016-11-101-2/+8
| | | | | Now, by default, this executable will open the Web UI in a new browser tab, unless the "--no-browser" argument presents
* Bump version to 0.2.0v0.2.0Aaron LI2016-11-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | * 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.
* webui: Add the foreground simulation task to ConsoleHandlerAaron LI2016-11-092-2/+89
| | | | | | | | | | * 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??
* webui: Some minor updatesAaron LI2016-11-093-3/+12
|
* utils/healpix.py: Fix the import issueAaron LI2016-11-091-1/+1
|
* webui: Allow to toggle and delete the logging messagesAaron LI2016-11-092-0/+64
|
* webui: Append server-pushed logging messages to the logging boxAaron LI2016-11-093-4/+62
| | | | | * Colorize the logging messages of different level with different colors * Also add a different icon for each message
* webui: consolehandler.py: Fix a minor bugAaron LI2016-11-091-5/+5
|
* webui: Implement status updating functionAaron LI2016-11-093-3/+128
| | | | | | | Add "updateTaskStatus()" to update the "#task-status" element. Also add function "getServerTaskStatus()" to get the task status from the server.
* webui: Add "ConsoleHandler" to handle the "console" type messageAaron LI2016-11-092-12/+219
| | | | | | | | 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!
* webui: Add "WebSocketLogHandler" to push log to client through WebSocketAaron LI2016-11-091-0/+61
|
* webui: various small updatesAaron LI2016-11-096-15/+34
|
* webui: utils.py: Improve the docstring of "ip_in_network()"Aaron LI2016-11-091-1/+7
|
* webui: Add support of controlling the allowed hostsAaron LI2016-11-082-13/+47
|
* bin/fg21sim-webui: Use "tornado.options" instead of "argparse"Aaron LI2016-11-081-12/+34
| | | | | | | | | | | | * 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)
* webui: Add "Source Sans Pro" and "Source Code Pro" web fontsAaron LI2016-11-085-0/+0
| | | | | | | * Source Sans Pro: regular, italic, semibold, semibold italic; WOFF * Source Code Pro: regular; WOFF Thanks Adobe!
* webui: websocket.js: Fix the bug for sending data to the serverAaron LI2016-11-081-1/+2
|
* configs/manager.py: Implement the "save()" methodAaron LI2016-11-081-6/+19
|
* webui: Add validation errors supportAaron LI2016-11-082-31/+76
| | | | | | | 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.
* webui: main.css: Update invalid input stylesAaron LI2016-11-081-0/+8
|
* webui: configs.js: Split out functions "{g,s}etFormConfigSingle()"Aaron LI2016-11-071-73/+90
| | | | | | | | * Split out functions "{g,s}etFormConfigSingle()" from "setConfigForm()"; * Rename original "setConfigForm()" to "setFormConfigs()", and uses "{g,s}etFormConfigSingle()" to simplify; * Update other places accordingly.
* webui: Add "required" attribute for configuration form fieldsAaron LI2016-11-071-22/+22
|
* webui: Fix input[type=number] validation; Add input validation stylesAaron LI2016-11-072-12/+20
| | | | | | | | * 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.
* configs/checkers.py: Add "check_common()"Aaron LI2016-11-071-0/+25
|
* webui: Use code (monospace font) style for some text inputsAaron LI2016-11-072-26/+26
|
* webui: small misc changesAaron LI2016-11-073-2/+8
| | | | | | * milligram.css: Remove the "sourceMappingURL" * main.js: Add "use strict"; * utils.py: Add a TODO task
* webui: Implement reset form and load configuration files functionsAaron LI2016-11-074-60/+238
| | | | | | | | | * 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
* configs: Add parameters "min" and "max" to float-type optionsAaron LI2016-11-073-10/+10
|
* configs: Change "logging/filemode" to boolean "logging/appendmode"Aaron LI2016-11-072-4/+4
| | | | | * Update the "logging" property in "manager.py" * Also add "extragalactic/clusters" to "common/components"
* configs/manager.py: Replace a filter with list comprehensionAaron LI2016-11-071-4/+1
| | | | | Replace the filter hack with a cleaner list comprehension. Be Pythonic :)
* webui: websocket.py: Use flattened configs; Change "data" to "keys"Aaron LI2016-11-061-3/+3
| | | | | | | * 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).
* configs/manager.py: Support flattening dumped configs (nested dict)Aaron LI2016-11-061-6/+98
| | | | | | | | * 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.
* webui: Add "configs.js" with basic support with interact with serverAaron LI2016-11-051-0/+127
| | | | | | | 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.
* webui: websocket.py: Support "reset", "load", "save" actions.Aaron LI2016-11-051-18/+105
| | | | | | | | | | | * 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.
* webui: websocket.py: Make the response message more consistentAaron LI2016-11-041-11/+24
| | | | | | | | 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.
* webui: websocket.py: Implement "set" action for "_handle_configs()"Aaron LI2016-11-042-16/+39
| | | | | | | Finish the "_set_configs()" function to implement the "set" action for "_handle_configs()". Also change the "status" keyword to "success" to be more intuitive.
* webui: websocket.py: Implement the "get" part of "_handle_configs()"Aaron LI2016-11-041-5/+118
| | | | | | | Add internal method "_get_configs()" which implement the "get" action part of the "_handle_configs()" method. TODO: implement the "set" action part.
* webui: websocket.py: Fix wrong exception handlingAaron LI2016-11-041-19/+17
|
* bin: Update "log_stream" and "loglevel" handlingAaron LI2016-11-042-8/+5
| | | | | | * 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.
* webui: Update server & client sides WebSocket handlersAaron LI2016-11-042-24/+104
| | | | | | | | | | | | * 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;
* configs/manager.py: Add method "check_all()" using "check_configs()"Aaron LI2016-11-041-0/+31
|
* Update to use renamed "check_configs()" instead of "validate_configs()"Aaron LI2016-11-042-3/+3
|
* configs: Rename "validate.py" and update "validate_configs()"Aaron LI2016-11-041-24/+36
| | | | | | | | * 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.
* configs/manager.py: Implement "setn()" to set an option valueAaron LI2016-11-041-6/+86
| | | | | | | | | | | The "setn()" method is a corresponding operation with the "getn()", which set the value of a config option to the given value. This function will be used in the Web UI to interact with the WebSocket communications. Also add the "merge()" method which simply merge the input configurations without any validation.
* configs/manager.py: getn(): remove par. "sep"; handle exceptionAaron LI2016-11-031-12/+16
| | | | | | | | * Remove the optional parameter "sep", therefore the key must be "/"-separated or a list of keys. * Add exception handling and raise "KeyError" if the input key is invalid (i.e., specifies a non-exist option). * Update comments and docstring.
* configs/manager.py: Reset before loading user config file againAaron LI2016-11-031-12/+10
| | | | | | | | Originally, the user configuration file is only allowed to load once, and prevent any future loading of user configuration file. This change allows load user configuration file again by resetting the current configurations to defaults before loading.
* webui: Add a manual reconnection button to the header bannerAaron LI2016-11-033-6/+60
| | | | | Also add a global variable "ws_reconnect" to control the timeout between reconnection and the maximum reconnection times (default: 100).
* webui: Add "utils.py" to get the IP addressAaron LI2016-11-032-11/+85
| | | | | | | FIXME/TODO: How to determine the WebSocket origin is in the same subnet as the server? An additional network mask required to determine this. How does this additional mask passed?
* configs/manager.py: Add method "reset()" and attribute "userconfig"Aaron LI2016-11-031-1/+16
|