Giter Site home page Giter Site logo

connexta / revelio Goto Github PK

View Code? Open in Web Editor NEW
3.0 11.0 15.0 6.7 MB

Revelio is a sandbox for migrating Intrigue features off of Backbone and Marionette towards GraphQL and React.

Home Page: http://connexta.com/revelio/

JavaScript 61.06% TypeScript 34.00% Dockerfile 0.11% HTML 4.83%
ddf react graphql ssr

revelio's People

Contributors

azgoalie avatar bdeining avatar bernardigiri avatar djblue avatar gjvera avatar gordocanchola avatar jrnorth avatar mazarag2 avatar pklinef avatar rzwiefel avatar samuelechu avatar schachte avatar willwill96 avatar zach3904 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

revelio's Issues

Port the Image Viewer to react

Port the Image Viewer to React and ensure all functionality is retained.
The Image Viewer uses redux to integrate with an external shopping cart that will need to be ported as well. This might require some design discussion.

Fix federation bug in `useQueryExecutor`.

When useQueryExecutor was initially implemented, I skipped merging results from different sources because we were still discussing how we wanted to do so. I ended up just keeping the last result set that came in and moved forward. This is a bug that should be fixed.

Investigate Why Queries Against Federated Sources Don't Work

ApolloError: GraphQL error: invalid json response body at https://localhost:8993/direct?_=1586371080173 reason: Unexpected end of JSON input
    at new ApolloError (webpack-internal:///./node_modules/apollo-client/bundle.esm.js:76:28)
    at eval (webpack-internal:///./node_modules/apollo-client/bundle.esm.js:1258:40)
    at eval (webpack-internal:///./node_modules/apollo-client/bundle.esm.js:1570:25)
    at Set.forEach (<anonymous>)
    at eval (webpack-internal:///./node_modules/apollo-client/bundle.esm.js:1568:32)
    at Map.forEach (<anonymous>)
    at QueryManager.broadcastQueries (webpack-internal:///./node_modules/apollo-client/bundle.esm.js:1566:22)
    at eval (webpack-internal:///./node_modules/apollo-client/bundle.esm.js:1657:27)
    at Object.next (webpack-internal:///./node_modules/zen-observable/lib/Observable.js:308:23)
    at notifySubscription (webpack-internal:///./node_modules/zen-observable/lib/Observable.js:130:18) {
  graphQLErrors: [
    FetchError: invalid json response body at https://localhost:8993/direct?_=1586371080173 reason: Unexpected end of JSON input
        at eval (webpack-internal:///./node_modules/isomorphic-fetch/node_modules/node-fetch/lib/body.js:48:31)
        at runMicrotasks (<anonymous>)
        at processTicksAndRejections (internal/process/task_queues.js:94:5) {
      message: 'invalid json response body at https://localhost:8993/direct?_=1586371080173 reason: Unexpected end of JSON input',
      locations: [],
      path: [Array]
    }
  ],
  networkError: null,
  message: 'GraphQL error: invalid json response body at https://localhost:8993/direct?_=1586371080173 reason: Unexpected end of JSON input',
  extraInfo: undefined
}

image

Port AOI / Target functionality

Port AOI / Target functionality
AOI and Targets will need to be added as routes and allow for full CRUD. This should retain feature parity with what has already been implemented.
Note that AOIs and Targets are essentially the same thing with different names, so we should strive to use the same components for both. These both go through the same backend code with a different parameter to differentiate between the two as they are stored in Solr.
Features include:

  • Create AOI/Target (H) @mazarag2
  • Edit AOIs/Targets (H)
  • Delete AOI/Target (H)
  • Export AOI/Target (M)
  • Duplicate AOI/Target (L)
  • Share AOI/Target (L)
  • Make Default AOI/Target (L)
  • Convert AOI -> Target (L)
  • Filter Dropdown AOIs/Targets (L)

Metacard type not show in delete modal.

image
When deleting a metacard whether it be search forms, result forms, or workspaces the modal doesn't get the metacard type and the result is show above. This only happens when you use the icons as opposed to the metacard interaction button.

Lists

  • Create List
    Run List
  • Delete List
  • Edit List

Bring the Metacard Interactions Dropdown into Workspaces Route

This PR brought the metacard interactions dropdown into the Search Forms and Result Forms Routes: #276

This issue is to add this to the workspaces route as well.

This can be broken up into a few parts:

  1. Add the Metacard Interactions Dropdown and the interactions that search/result forms have (ex. https://github.com/connexta/revelio/blob/master/src/main/webapp/components/result-forms/route.js#L107)
  2. Add a Metacard Interaction counterpart for the Duplicate Action (The EditAction and EditMetacardInteraction would be a good model for this)
  3. Add a Metacard Interaction counterpart for the Subscribe Action

Results

Download @gjvera
Export single result or group of results (H) @gjvera
Add to cart (H) @gjvera
Add/Remove to/from list (H) @gjvera
-- Bookmarks for records

  • Hide from future searches (L)
    Filter @AzGoalie (M)
  • Sort ? (M)
  • Expand Metacard View (L)

Finalize Map Feature Parity

Finalize Map Feature Parity. Investigate any areas that haven't been implemented in the old ui and complete the map functionality.

Fully test map feature
Spawn issues as they are found

Gazetteer Search Box (H)
-- Suggester (H)
-- Pan / Zoom (H)
Layer Management (H)
Thumbnail / Overview Actions on Map (M)
Right Click Dropdown
-- Copy Coordinates (M)
-- Launch in inspector (L)
Coordinate Types Lower Left, Changes from settings (DMS , MGRS, UTM UPS, Lat / Lon) (M)
Auto focus on selected resource (L)
Overlay WMS / WMTS layer (L)

Add Ordering Preferences to the settings cog

Add Ordering Preferences to the settings cog. A user should be able to create ordering preferences (such as ftp or physical delivery) for metadata within the system. The backend sends uses this information to broker requests for orders to an external system.

  • Set default delivery method
  • Create new delivery method
  • Delete delivery method
  • Edit delivery methods
    Screen Shot 2020-03-05 at 10 39 39 AM
    Screen Shot 2020-03-05 at 10 39 28 AM

Gen Schema should pull the list of attributes at runtime

The function that generates the MetacardAttributes graphql list is based on a static list of attributes https://github.com/connexta/revelio/blob/master/src/main/webapp/intrigue-api/metacards/gen-schema.js

This means that file needs to be updated any time a new attribute is added to ddf and also means that downstream projects with their own custom attributes need to maintain their own static list of their attributes.

We should base this off of the system instead, pulling them at runtime if possible.

Establish a strategy to tie in third party components.

Establish a strategy to tie in third party components. Some third party components, for example, a shopping cart, should be able to be plugged into by a consumer in their specific distribution of software. This is independent of adding third party routes. For example, I want to add an icon that calls third party code in my project that uses revelio.

Decouple Workspace Route from Workspaces Route

We currently have two different components in the https://github.com/connexta/revelio/blob/master/src/main/webapp/components/workspaces/workspaces.js file

Workspaces: search/catalog/workspaces
https://github.com/connexta/revelio/blob/master/src/main/webapp/components/workspaces/workspaces.js#L381

Workspace: search/catalog/workspace/:id
https://github.com/connexta/revelio/blob/master/src/main/webapp/components/workspaces/workspaces.js#L79

These two components should be broken out into their own files so that the separation is more obvious

Automate the generation of schema.json

Currently devs need to go to the playground and look at the introspection query to apply the changes to the schema.json file. Investigate to see if there is a way to automatically generate the file.

Adding Match Types to basic searh freezes the page

When creating a basic search and adding the 'Match Types' option, the page will freeze and then turn blank. In the console it reports the following errors.

react-beautiful-dnd

An error has occurred while a drag is occurring.
Any existing drag will be cancelled.

> TypeError: immutable_1.getIn(...) is null

Workspaces

Workspaces Page

Share Workspace
Create Workspace
Delete Workspace
Subscribe
Duplicate Workspace

  • Open Workspace in new tab (L)
  • Cancel All Searches (L)
  • Run All Searches (L)

@AzGoalie - Filter Workspaces

Workspace Functionality

Create Search:

@samuelechu

  • Text Search
  • Basic Search
  • Advanced Search
  • Use custom search form (H) @willwill96
  • Rename workspace (H) @gjvera
  • Save Icon (H?) -> Now Automatic Save #324 @gjvera

Visualizations

2D Map
Table
Inspector
Histogram

Searches in Workspaces

List Of Searches
Run Search
Re-run Search
Edit Search
Status (Heartbeat)
Duplicate Search (M) @willwill96

  • Search Settings - User Defaults (M)
    -- Backend Sort
    -- Source selection
    -- Result forms
  • Federated Search Bug (H)
  • Use of AOI in a Search (H)
  • Use of Target in a Search (H)
  • Hook up scheduling component downstream (M)
  • Notifications for Search (L)
  • Stop Search (H)
    Refresh Result Count (H) @samuelechu

Adjust styling on User/UserPrefs errors

Currently if the user or user preferences queries error, the retry component expands the navbar. Investigate making it less intrusive. A couple ideas are:

  1. make the box fit the size of the nav bar
  2. Move the errors into the right drawer so they only show when viewing user/user preferences.

Screenshot:
image

Update GraphQl to show Authenticated sources in the source call response

Update GraphQl to show Authenticated sources in the source call response. Right now, the front end will hit the sources endpoint to obtain information about sources registered in the system. This should be expanded to show additional optional information about whether the source is an authenticated one, and if the user is authenticated with it.

Centralize loading component

Currently we have loading components that all use material-ui's LinearProgress, however they are all implemented differently.
Some declare a component and then return LinearProgress

const Loading = () => {

and some just return LinearProgress directly
if (loading) return <LinearProgress />

We should centralize it so all components grab it from the same place and return the same loading component. This will make it easier if we ever wanted to change the component.

Error in console when deleting search forms

When you use the metacard interaction button (three dots) on search forms and click. Delete Search Form then click cancel, this error pops up in the console.

Warning: Failed prop type: The prop `children` is marked as required in `ForwardRef(Dialog)`, but its value is `undefined`.
    in ForwardRef(Dialog) (created by WithStyles(ForwardRef(Dialog)))
    in WithStyles(ForwardRef(Dialog)) (created by MetacardInteractionsDialog)
    in MetacardInteractionsDialog (created by MetacardInteractionsDropdown)
    in MetacardInteractionsDropdown (created by SearchForm)
    in div (created by ForwardRef(CardActions))
    in ForwardRef(CardActions) (created by WithStyles(ForwardRef(CardActions)))
    in WithStyles(ForwardRef(CardActions)) (created by SearchForm)
    in div (created by ForwardRef(Paper))
    in ForwardRef(Paper) (created by WithStyles(ForwardRef(Paper)))
    in WithStyles(ForwardRef(Paper)) (created by ForwardRef(Card))
    in ForwardRef(Card) (created by WithStyles(ForwardRef(Card)))
    in WithStyles(ForwardRef(Card)) (created by ItemContainer)
    in ItemContainer (created by IndexCardItem)
    in IndexCardItem (created by SearchForm)
    in SearchForm (created by Route)
    in div (created by IndexCards)
    in IndexCards (created by Route)
    in Route (created by Component)
    in Component (created by LoadableComponent)
    in LoadableComponent (created by Context.Consumer)
    in div (created by Context.Consumer)
    in Route (created by AppRouter)
    in div (created by AppRouter)
    in SelectionProvider (created by AppRouter)
    in DrawProvider (created by AppRouter)
    in AppRouter (created by _default)
    in ThemeProvider (created by _default)
    in _default (created by _default)
    in _default (created by App)
    in div (created by App)
    in Router (created by BrowserRouter)
    in BrowserRouter (created by App)
    in ApolloProvider (created by App)
    in MuiPickersUtilsProvider (created by App)
    in App
    in AppContainer

Bounding box input moves values around during manual text input changes

It looks like it's trying to make sure Upper Left is really Upper Left, and so when the user types in values it'll swap them out from under them. Makes for a really jarring user experience.

For USNG, I have no clue what it's doing. Might be similar to DMS but it just looks random to me.

Search Forms

Create Search Form
View Search Form
Share Search Form
Delete Search Form
Make Default Search Form

  • System Search Forms (M)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.