Enhancement #2241
Enhancement #1976: Web interface for introspection
Implement introspection Web UI
Status: | Resolved | Start date: | ||
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | J. Moringen | % Done: | 100% | |
Category: | Common Lisp Tools | |||
Target version: | rsb-0.15 |
Description
Based on Suchit's work- Initial version should be minimalistic:
- Global search
- Introspection overview instead of current start page
Improved graph #2359Must scale (algorithmically) to thousands of participantsIntelligent restriction (maybe neighbors, respective ancestors and immediate children of selected node?)
- Overview page with graph but without table
- Host page with details and graph but without table
- Process page with details and graph but without table and eval
- Participant page with details but without search/logging links
Associated revisions
Improved handler management in src/commands/web/mixins.lisp
refs #2241
- src/commands/web/protocol.lisp (header): updated copyright
(command-make-handlers): renamed command-{register -> make}-handlers;
adapted documentation string
(command-register-handler): added acceptor parameter; adapted
documentation string - src/commands/web/mixins.lisp (header): updated copyright
(acceptor): moved to beginning of file
(process-connection :around acceptor t): likewise
(handle-request acceptor t): likewise
(acceptor-dispatch-request acceptor t): likewise
(acceptor-log-message acceptor symbol t): likewise
(http-server-mixin::acceptor): removed; replaced by local variable in
`command-execute'
(http-server-mixin::handlers): likewise
(command-register-handler http-server-mixin acceptor string t): added
acceptor parameter
(command-register-handler http-server-mixin acceptor function t): new
method; register a handler with a predicate function
(command-execute http-server-mixin): acceptor and handlers are now
local variables; changed `command-register-handlers' ->
`command-make-handlers' and `command-register-handler' - src/commands/web/web.lisp (command-make-handlers web): renamed method
command-{register -> make}-handlers; return list of handlers instead
of registering them - src/commands/web/package.lisp (header): updated copyright
(package rsb.tools.commands.web): changed exported symbol
command-{register -> make}-handlers
Added class handler-mixin in src/commands/web/mixins.lisp
refs #2241
- src/commands/web/mixins.lisp (handler-mixin): new class; sets
funcallable instance function
(initialize-instance :after handler-mixin): new method; set
funcallable instance function
(detach handler-mixin): new method; default implementation - src/commands/web/introspection.lisp (introspection-handler-mixin): new
class; mixin for storing introspection database
(introspection-snapshot-handler): renamed introspection-{json ->
snapshot}-handler; added superclasses `introspection-handler-mixin'
and `json-handler-mixin'
(handle introspection-snapshot-handler request): adapted specializer
to renamed class
(default-json-serializer): function; helper function for constructing
JSON serializer - src/commands/web/web.lisp (command-make-handlers web): adapted to
changed class name
Improved registration of handlers in src/commands/web/{web,introspection}.lisp
refs #2241
- src/commands/web/web.lisp (header): updated copyright
(default-handlers): new variable; contains a list of functions for
creating default handlers
(command-register-handlers web): register all handlers in `*default-handlers*' - src/commands/web/introspection.lisp (make-introspection-snapshot-handler):
new function; make an `introspection-snapshot-handler' instance
(toplevel): push `make-introspection-snapshot-handler' onto
`*default-handlers*' - web/main.lisp (update-synopsis): updated URL of introspection snapshot
endpoint
Added resource handlers in src/commands/web/resources.lisp
refs #2241
- src/commands/web/protocol.lisp (find-resource): new generic function;
find a resource in a container
(map-resources): new generic function; map a function over all
resources in a container - src/commands/web/resources.lisp: new file; contains handlers for
serving individual files as well as an archive containing all files
built into the image - src/commands/web/package.lisp (package rsb.tools.commands.web): added
exported symbols find-resource and map-resources - web/main.lisp (update-synopsis): mention that the served content can
now also be built into the image - rsb-tools-commands-web-resources.asd: new file; system definition for
the rsb-tools-commands-web-resources system - CMakeLists.txt (WITH_WEB_RESOURCES_SUPPORT): new option; controls
whether the rsb-tools-commands-web-resources system should be loaded
Added macros for API endpoints in src/commands/web/macros.lisp
refs #2241
- src/commands/web/conditions.lisp: new file; contains conditions used
in the commands.web module - src/commands/web/macros.lisp: new file; contains macro used in the
commands.web module - src/commands/web/introspection.lisp
(handle introspection-json-handler request): use
`providing-api-endpoint' - src/commands/web/package.lisp (package rsb.tools.commands.web): added
exported symbols argument-condition, argument-condition-parameter,
argument-error, argument-type-error, argument-parse-error and
argument-parse-error-raw-value - web/main.lisp (update-synopsis): added short description of API
endpoint response protocol - rsb-tools-commands-web.asd (system rsb-tools-commands-web): added files
src/commands/web/conditions.lisp and src/commands/web/macros.lisp
Added search handler in src/commands/web/introspection.lisp
refs #2241
- src/commands/web/introspection.lisp (introspection-search-handler):
(make-introspection-search-handler):
(search-parse-query):
(search-printers):
(search-result-formatter):
(handler introspection-search-handler request)
Added macros for API endpoints in src/commands/web/macros.lisp
refs #2241
- src/commands/web/conditions.lisp: new file; contains conditions used
in the commands.web module - src/commands/web/macros.lisp: new file; contains macro used in the
commands.web module - src/commands/web/introspection.lisp
(handle introspection-json-handler request): use
`providing-api-endpoint' - src/commands/web/package.lisp (package rsb.tools.commands.web): added
exported symbols argument-condition, argument-condition-parameter,
argument-error, argument-type-error, argument-parse-error and
argument-parse-error-raw-value - web/main.lisp (update-synopsis): added short description of API
endpoint response protocol - rsb-tools-commands-web.asd (system rsb-tools-commands-web): added files
src/commands/web/conditions.lisp and src/commands/web/macros.lisp
Added search handler in src/commands/web/introspection.lisp
refs #2241
- src/commands/web/introspection.lisp (introspection-search-handler):
(make-introspection-search-handler):
(search-parse-query):
(search-printers):
(search-result-formatter):
(handler introspection-search-handler request)
Added macros for API endpoints in src/commands/web/macros.lisp
refs #2241
- src/commands/web/conditions.lisp: new file; contains conditions used
in the commands.web module - src/commands/web/macros.lisp: new file; contains macros used in the
commands.web module - src/commands/web/introspection.lisp
(handle introspection-snapshot-handler request): use
`providing-api-endpoint' - src/commands/web/package.lisp (package rsb.tools.commands.web): added
exported symbols argument-condition, argument-condition-parameter,
argument-error, argument-type-error, argument-parse-error and
argument-parse-error-raw-value - web/main.lisp (update-synopsis): added short description of API
endpoint response protocol - test/commands/web/command.lisp (test commands-web-command-root::smoke):
added requests that test different media types - rsb-tools-commands-web.asd (system rsb-tools-commands-web): added files
src/commands/web/conditions.lisp and src/commands/web/macros.lisp
Added search handler in src/commands/web/introspection.lisp
refs #2241
- src/commands/web/introspection.lisp (introspection-search-handler):
new class; allows querying introspection database
(make-introspection-search-handler): new function; instantiate
`introspection-search-handler'
(search-parse-query): new function; parses search query into XPath
expression
(search-printers):
(search-result-formatter):
(handle introspection-search-handler request): new method; execute
search query against introspection database and return result
- web/main.lisp (update-synopsis): added description of
/api/introspection/search endpoint
- test/commands/web/command.lisp
(test commands-web-command-root::smoke): test introspection/search api
endpoint
- rsb-tools-commands-web.asd (system rsb-tools-commands-web): added
system dependencies on architecture.builder-protocol.json,
architecture.builder-protocol.xpath and rsb-model-builder
Added search handler in src/commands/web/introspection.lisp
refs #2241
- src/commands/web/introspection.lisp (introspection-search-handler):
new class; allows querying introspection database
(make-introspection-search-handler): new function; instantiate
`introspection-search-handler'
(search-parse-query): new function; parses search query into XPath
expression
(search-result-formatter): new function; returns a function that
incrementally outputs search results to a stream
(handle introspection-search-handler request): new method; execute
search query against introspection database and return result - web/main.lisp (update-synopsis): added description of
/api/introspection/search endpoint - test/commands/web/command.lisp
(test commands-web-command-root::smoke): test introspection/search api
endpoint - rsb-tools-commands-web.asd (system rsb-tools-commands-web): added
system dependencies on architecture.builder-protocol.json,
architecture.builder-protocol.xpath and rsb-model-builder
Added resources/README.org
refs #2241
- resources/README.org: new file; explains purpose of the directory
Added download of Javascript dependencies in resources/lib/CMakeLists.txt
refs #2241
- resources/lib/CMakeLists.txt: new file; download Javascript
dependencies - resources/README.org: added description of lib sub-directory
- CMakeLists.txt: include resources/lib/CMakeLists.txt
- .gitignore: added pattern /resources/lib/*-[0-9]*/
Initial import of HTML, CSS, Javascript resources
fixes #2241
- resources/README.org: added descriptions of base.cc, index.html,
hack.html, images/ and introspection/ - resources/base.css: new file; global style defaults
- resources/index.html: new file; start page
- resources/hack.html: new file; instructions and download link for
modifying the web interface - resources/images/README.org: new file; description of the directory
- resources/images/logo.png: new file; a modified version of the RSB
logo that works as a Bootstrap "brand" image - resources/introspection/Introspection.js: new file; introspection API
- resources/introspection/BreadcrumbsWidget.js: new file; widget for
introspection-related breadcrumbs - resources/introspection/DetailsWidget.js: new file; widget for
introspection-related detail tables - resources/introspection/SearchWidget.js: new file; widget for
introspection-related search - resources/introspection/RefreshWidget.js: new file; widget for
controlling auto-refresh of currently displayed information - resources/introspection/base.css: new file; style defaults for the
introspection module - resources/introspection/host.html: new file; host detail page
- resources/introspection/process.html: new file; process detail page
- resources/introspection/participant.html: new file; participant detail
page - resources/introspection/search.html: new file; introspection search
page - resources/introspection/root.html: new file; introspection start page
Added description of search endpoint in tool-web.rst
refs #2241
- tool-web.rst (Provided HTTP Endpoints): added description of search
endpoint
Mention introspection web interface in news.rst
refs #2241
- news.rst (RSB 0.15): mention introspection web interface
History
#1 Updated by J. Moringen over 9 years ago
- Subject changed from Introspection Web UI to Implement introspection Web UI
- Description updated (diff)
#2 Updated by J. Moringen over 9 years ago
- Status changed from New to In Progress
- % Done changed from 0 to 50
#3 Updated by J. Moringen over 9 years ago
- Description updated (diff)
#4 Updated by J. Moringen over 9 years ago
- Description updated (diff)
#5 Updated by J. Moringen over 9 years ago
- Description updated (diff)
#6 Updated by J. Moringen over 8 years ago
- Target version changed from rsb-0.13 to rsb-0.14
#7 Updated by J. Moringen over 8 years ago
- Target version changed from rsb-0.14 to rsb-0.15
#8 Updated by J. Moringen over 8 years ago
- Description updated (diff)
#9 Updated by J. Moringen over 8 years ago
- % Done changed from 50 to 80
#10 Updated by J. Moringen about 8 years ago
- Description updated (diff)
#11 Updated by J. Moringen about 8 years ago
- Status changed from In Progress to Resolved
- % Done changed from 80 to 100
Applied in changeset rsb-tools-cl|6aba2885f5748aac688adc5ec136092f5a2a91a0.