Enhancement #2241

Enhancement #1976: Web interface for introspection

Implement introspection Web UI

Added by J. Moringen over 6 years ago. Updated over 4 years ago.

Status:ResolvedStart date:
Priority:NormalDue 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 #2359
      • Must scale (algorithmically) to thousands of participants
      • Intelligent 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

Revision 51b9c75f
Added by J. Moringen about 5 years ago

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

Revision c2594d6d
Added by J. Moringen about 5 years ago

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

Revision 4115ae50
Added by J. Moringen about 5 years ago

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

Revision 0f24790a
Added by J. Moringen about 5 years ago

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

Revision d843379a
Added by J. Moringen almost 5 years ago

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

Revision 7517a6df
Added by J. Moringen almost 5 years ago

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)

Revision 0052a613
Added by J. Moringen almost 5 years ago

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

Revision 72b536a0
Added by J. Moringen almost 5 years ago

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)

Revision 613c808c
Added by J. Moringen almost 5 years ago

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

Revision 22447309
Added by J. Moringen over 4 years ago

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

Revision d3b31cdc
Added by J. Moringen over 4 years ago

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

Revision e6a8f53e
Added by J. Moringen over 4 years ago

Added resources/README.org

refs #2241

  • resources/README.org: new file; explains purpose of the directory

Revision 770a9ca8
Added by J. Moringen over 4 years ago

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]*/

Revision 6aba2885
Added by J. Moringen over 4 years ago

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

Revision 5a8805a6
Added by J. Moringen over 4 years ago

Added description of search endpoint in tool-web.rst

refs #2241

  • tool-web.rst (Provided HTTP Endpoints): added description of search
    endpoint

Revision 40490c4e
Added by J. Moringen over 4 years ago

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 6 years ago

  • Subject changed from Introspection Web UI to Implement introspection Web UI
  • Description updated (diff)

#2 Updated by J. Moringen almost 6 years ago

  • Status changed from New to In Progress
  • % Done changed from 0 to 50

#3 Updated by J. Moringen almost 6 years ago

  • Description updated (diff)

#4 Updated by J. Moringen almost 6 years ago

  • Description updated (diff)

#5 Updated by J. Moringen almost 6 years ago

  • Description updated (diff)

#6 Updated by J. Moringen over 5 years ago

  • Target version changed from rsb-0.13 to rsb-0.14

#7 Updated by J. Moringen about 5 years ago

  • Target version changed from rsb-0.14 to rsb-0.15

#8 Updated by J. Moringen about 5 years ago

  • Description updated (diff)

#9 Updated by J. Moringen about 5 years ago

  • % Done changed from 50 to 80

#10 Updated by J. Moringen almost 5 years ago

  • Description updated (diff)

#11 Updated by J. Moringen over 4 years ago

  • Status changed from In Progress to Resolved
  • % Done changed from 80 to 100

Also available in: Atom PDF