aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* webui: configs.html: Add section toggling supportAaron LI2016-11-171-447/+522
| | | | No contents/functionalities changes.
* webui: console.html: Remove extra modal "#console-invalid-configs"Aaron LI2016-11-173-44/+58
| | | | | * Implement "showModalConsole()" based on "showModal()" * Move binding function from "websocket.js" to "console.js"
* webui: configs.js: Rename "showConfigsModal" to "showModalConfigs()"Aaron LI2016-11-171-11/+11
|
* webui: Implement "showModal()" in "main.js" allowing use in othersAaron LI2016-11-172-43/+57
|
* webui: main.js: Refactor out the function "toggleBlock()"Aaron LI2016-11-171-22/+20
|
* webui: console.html: Re-organize structures to support section toggleAaron LI2016-11-171-39/+44
| | | | | Wrap the section contents with a div of class "body", separating from its heading.
* webui: Support toggle the body/contents of sectionsAaron LI2016-11-172-3/+38
| | | | | | The section header has class "heading" and a toggle control with class "toggle", which will toggle the display of the next block with the "body" class.
* webui: Add panel toggle and allow expand/collapse its bodyAaron LI2016-11-173-2/+37
|
* webui: configs.js: Confirm before reset the configurationsAaron LI2016-11-171-2/+20
|
* webui: configs.js: Confirm before overwrite the configuration fileAaron LI2016-11-171-18/+74
| | | | Also improve the "showConfigsModal()" to support buttons.
* webui: configs.py: Add "exists" action support through GETAaron LI2016-11-171-0/+40
| | | | | The "exists" action through the GET request will check the existence of the specified filepath (which should be an absolute path).
* webui: configs.js: Re-implement using AJAX instead of WebSocketAaron LI2016-11-162-92/+221
| | | | | | | | | | * Interact with server-side configurations using AJAX GET and POST, instead of sending and receiving messages through the WebSocket. * Add callbacks on both AJAX success and error, to show a modal box displaying the operation results/errors, achieving better user experiences. * Use jQuery deferred and promises to achieve sequential operations. * Also move the binding function from "websocket.js" to "configs.js"
* webui: configs.py: Re-implement using AJAX instead of WebSocketAaron LI2016-11-161-103/+110
|
* webui: websocket.py: Do not handle "configs" and "console" messagesAaron LI2016-11-161-32/+6
| | | | | | | | | | | | | | | | | | | The handling of "configs" and "console" types of messages, will be changed to implement using the AJAX techniques. The basic WebSocket communication is too low-level, and there is no easy way to relate each received message to the corresponding sent message. There are high-level sub-protocols exists (e.g., WAMP [1]) to allow the RPC (remote procedure call) and publish/subscribe operations, however, the Tornado web framework current does not support them, and another client JavaScript library is also required. Using the more traditional AJAX techniques allow the request-response model and sequential operations (e.g., jQuery deferred and promises) be easily implemented. Therefore better operation interaction and reflection and error handling is achieved. [1]: WAMP: Web Application Messaging Protocl, http://wamp-proto.org/
* configs/manager.py: Make a backup when output file already existsAaron LI2016-11-161-4/+15
| | | | Also expand the output file for the prefix "~" (tilde)
* webui: Add AJAX handlers "ConfigsAJAXHandler" & "ConsoleAJAXHandler"Aaron LI2016-11-162-2/+10
| | | | | NOTE: These two AJAX handlers are currently not finished!
* webui: configs.html: Add XSRF token and a modal dialog containerAaron LI2016-11-161-0/+3
|
* webui: main.js: Add "getCookie()" and "jQuery.postJSON()" functionsAaron LI2016-11-161-0/+56
| | | | | | | | * Add function "getCookie()": get the value of the specified key from the cookies; * Add jQuery extension ".postJSON()": wrapper for easier AJAX post, with the XSRF header and correct content type; * Also set the default "error" handle function for AJAX request.
* configs/manager.py: Also dump the "userconfig" valueAaron LI2016-11-161-1/+4
|
* webui: Rename "scroll_target()" to "scrollTarget()" and export itAaron LI2016-11-161-17/+16
|
* webui: WSHandler: Remove the "name" attributeAaron LI2016-11-151-24/+17
|
* webui: Push current configs to client when opened WebSocket connectionAaron LI2016-11-151-1/+20
|
* webui: Some minor changesAaron LI2016-11-153-3/+5
| | | | | | | * Change configuration status text from "Valid :)" to "OK" * Reduce maximum WS connection trials from 100 to 21 * Fix the wrong global name of "g_ws_reconnect" * Comment the Console "Stop" button, which is currently not implemented
* webui: Rename "FG21simWSHandler" to "WSHandler"Aaron LI2016-11-153-4/+4
|
* webui: Save connected WebSocket clients and allow broadcastAaron LI2016-11-152-12/+38
|
* configs/manager.py: Keep configuration file commentsAaron LI2016-11-151-6/+12
| | | | | | | | | | * Enable the "copy" mode when validating, which also copies all the comments from the configspec to the validated configurations; * Use "copy.deepcopy()" to make a deep copy of the configurations, which also copies all the comments. Since the comments are preserved, therefore they are also written together to the saved/output configuration file.
* webui: Split "handers/configs.py" from "handlers/websocket.py"Aaron LI2016-11-152-246/+268
| | | | Split "ConfigsHandler" from "FG21simWSHandler" as "handlers/configs.py"
* webui: Place handlers under the directory "hnadlers/"Aaron LI2016-11-154-4/+5
|
* webui: Implement login support (password authentication)Aaron LI2016-11-154-0/+105
|
* webui: Fix the issues due to the split of "header-{base,index}.html"Aaron LI2016-11-154-27/+19
| | | | | | | | Tornado currently do NOT support *nested* template extensions. * Rename "header-base.html" back to "header.html" * Merge the contents of "header-index.html" to "index.html" * Add new block "subtitle" to "base.html"
* webui: Enhance the "base.html" and simplify the "index.html"Aaron LI2016-11-152-16/+11
|
* webui: Split "header.html" into "header-{base,index}.html"Aaron LI2016-11-152-12/+32
|
* webui: To support password authenticationAaron LI2016-11-153-8/+34
| | | | | Move the "IndexHandler" to separate module located at the "handlers/" directory.
* webui/utils.py: Add function "gen_cookie_secret()"Aaron LI2016-11-151-0/+13
|
* bin/fg21sim-webui: Add options "host" to allow localhost access onlyAaron LI2016-11-152-8/+19
|
* webui: Change log toggle icons opacity according to toggle statusAaron LI2016-11-152-4/+10
|
* webui: websocket.py: Accept "~" for the "userconfig"Aaron LI2016-11-151-2/+2
|
* configs/manager.py: Expand "~" when read userconfigAaron LI2016-11-151-0/+3
|
* webui: Fix the wrong value "galactic/freefree" to "galactic/snr"Aaron LI2016-11-152-2/+3
| | | | configs.js: Update "workdir" and "configfile" to be sync with server.
* webui: Replace "make_application()" with Application classAaron LI2016-11-144-23/+21
|
* webui: Show a modal box indicating there are invalid configsAaron LI2016-11-134-6/+10
|
* webui: Import "jQuery Modal" v0.8.0Aaron LI2016-11-132-0/+317
| | | | | | Thanks: http://jquerymodal.com/ https://github.com/kylefox/jquery-modal
* webui: Store config validity; Check before start taskAaron LI2016-11-132-9/+17
| | | | | | | * "updateFormConfigStatus()": Store the configuration validity as a custom data attribute. * Check the current configuration validity before start the task on the server.
* webui: Fix various bugs with get/set configurationsAaron LI2016-11-112-9/+76
| | | | | | | | | | | | * 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.
* webui: configs.html: Set single checkbox with "data-type" of "boolean"Aaron LI2016-11-111-10/+10
| | | | | | 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.
* webui: websocket.py: Ignore "configfile"; Allow set "userconfig"Aaron LI2016-11-111-5/+10
| | | | | * The "workdir" and "configfile" should be both ignored * Update "_set_configs()" method to allow set "userconfig"
* 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??