Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(#155): Fixes #211

Merged
merged 13 commits into from
Jun 2, 2022
Merged

chore(#155): Fixes #211

merged 13 commits into from
Jun 2, 2022

Conversation

tholulomo
Copy link
Contributor

@tholulomo tholulomo commented May 24, 2022

Add docker ignore, add a 404 page, search rendering bug fixes, fix pixel unit testing, change datavoyager link to a button, with additional bug fixes

closes #177
closes #155
closes #206
closes #182
closes #208
closes #202

@tholulomo tholulomo self-assigned this May 24, 2022
@tholulomo tholulomo changed the title #155 add docker ignore chore(#155): Fixes May 24, 2022
@tholulomo tholulomo added this to the 5/9/22 - 5/23/22 milestone May 24, 2022
Copy link
Collaborator

@aswallace aswallace left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Main comment is that the /explorer/create route has been changed to /explorer/curate in some places but not in others (e.g., has been changed to curate in home.spec.js but not in router/module/explorer.js or the header)

@tholulomo tholulomo requested a review from aswallace May 31, 2022 14:52
Copy link
Collaborator

@aswallace aswallace left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only comment is that there's still a link to /create in pages/explorer/Home.vue. Otherwise approved

@tholulomo tholulomo merged commit a44fc9a into develop Jun 2, 2022
@tholulomo tholulomo deleted the #155_Add_docker_ignore branch June 2, 2022 13:48
@@ -0,0 +1 @@
node_modules
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#155 mentions ignoring package-lock.json as well. I'm not sure exactly why, since we are committing package-lock in this repo

tholulomo added a commit that referenced this pull request Mar 1, 2023
* #109: Link explorer header tabs

* #109: Rewrite chart routes in explorer

* #109: Fix linter errors

* #109: Fix chart nested routing

* #109: Add error handling for chart uri not found

* #109: Fix linting errors

* #97: Initial commit of search header panel tabs

* #97: Add search bar to header

* #113: Refactor sample page queries

* #97: Fix tab styling, rearrange to match UI presentation

* #97: Remove top right search field

* #113: refactor sample page components

* #113: fix linting errors

* #97: Remove test content from tabs

* #97: Unit test for search header panel

* #113: first draft

* #113: Fix for error thrown in unit test

* Linting errors

* #97: Set up for explorer results state management

* Fix linting errors

* #113: add tests for state variables

* #113: remove page style

* #113: fix empty results display

* #66 templated view article (#112)

* #66 initial article commit

* #66: Refactor article page, fetch article metadata

Moved Article.vue, separated out into article.js to match file structure
of other pages. Progressed on Semantic Scholar API logic.

* #66: Refactor article.js

* #66: Refactor Article.vue

* #66: Add route for Article View

Added route to explorer for the article view. Moved DOI from component
prop to a watcher and computed property pair.

* #66: Refactor article.js to move logic to services

Moved article metadata retrieval logic to services. Unified all metadata
under one object for simpler reference.

* #66: First pass at article HTML view

First attempt at displaying all article metadata. Also added pre-push
linting fixes.

* #66: Add loading state awareness

* #66: Add article venue to retrieved fields

* #66: Second pass at article view HTML

Added basic loading indicator, refactored table to have better structure
(I think)

* #66: Basic CSS for article view

* #66: Removed erroneous comment

* #66: Fix scrolling bug

Scrolling tables also scrolled their titles, but not their header rows.
Isolated tables in their own div, maybe tables should be their own
component...

* #66: Unify dir structure, nest article page

Move explorer/article/services to modules/explorer/article/services,
clean up article now that it's nested properly (barring further change
to nest completely under sample). Refactor extra function from fetchJSON
into getArticleMetadata.

* #66: initial Article.vue testing commit

Includes mock for Semantic Scholar API calls and article.js whitespace
linting fix.

* #66: Refactored getArticleMetadata for easier mock

Mocking getArticleMetadata easily required moving it into an enclosing
object so that the manual mock could do the same, allowing it to access
properties. The manual mock was written following along with
[jest's manual mock](https://jestjs.io/docs/manual-mocks).

The mock of the resulting getArticle also provides a stub of the
SemanticScholar API response as of 2/2/22, for reference and testing.

* #66: Write tests for Article.vue

Wrote tests of DOI loading, reloading; article data loading; API
failure. Added classes to article.html items to distinguish them and
allow the tests to refer to them. Updated article.js to use the new
articleMetadata.js and fixed bugs that appeared in testing.

* #66: Fix linting errors

* #66: Write tests for module articleMetadata.js

Updated articleMetadata mock to include raw and cleaned mock data, and
wrote tests of the fetch handler and response cleaning routines. Fixed
issues in articleMetadata.js that came up in testing.

* #66: Refactored articleMetadata.js to better track API errors

Refactored .get function to remove repeated code and allow API calls to
occur in parallel. Rewrote how internal fetch returns in order to pass
errors (and success codes) in API call along to caller. Updated mock
data to include mock version of success codes

* #66: Updated tests to match

Also added missing response codes to mock data, and fixed citation and
reference call status not being passed through

* #66: Updated Article.vue to display errors

Article view now takes advantage of newly passed API errors to inform
the user that an error has occurred. This could be expanded on

* #66: Linting fixes

* #66: Update test to use createWrapper

Replaced localVue, shallowMount with createWrapper for consistency.
Added test to ensure error message is displayed to user.

* #66: Write comments, refactor error storage

* #66: Write jsdoc-style function comments

Documented functions, removed unused mock response function, and
refactored testing slightly to remove repetition.

* #66: Move article to its own route

* #25: Remove console.logs, add reusable spinner

* #113: remove console.logs and add index key

* #113: fix linting errors

* #123: Consolidate exports in sparql.js

* #123: Modify sparql capitalization to match existing pattern

* #28: Link MM/teams to teams page (#122)

* #28: Link MM/teams to teams page

* #28: Update reference to about, how, news

* #123: Merge parseSparql and transformSparqlData into a single function

* #61: Add gallery page

* remove duplicate spinner component

* remove redundant pagination styles

* fix lint errors

* Remove class that hides pagination buttons

* remove unneccessary sass imports

* query actual charts in gallery view

* remove console.log in test

* #130: Linting fix (#131)

* feat(#100): knowledge graph rest endpoint (#138)

* #100: Add logger service

* #100: Updated secrets default and increased token validity to 8hours

* #100: testing script for isInternal middleware service

* #100: Add isInternal middleware service to validate internal calls

* #100: Re-usable logger service for unit test

* #100: Moved logger service to initialize first

* #100: renamed filestorage directory and added a method to ensure unique file names

* #100: Updated test with log service

* #100: Added unique name generator to package.json

* #100: Added knowledge graph endpoint method

* #100: Add KG wrapper route to REST service

* #100: Append KG route to server initialization

* #100: Re-installed app

* #43: Add fuseki service to container

* #43: Fuseki volume mount

* #43: Add fuseki critical files to ignore

* #100: Updated nginx to use a preferred version

* #100: File renaming and linter error fixes

* #100: Update environment variables

* #25 migrate tools (#128)

* #25: initial ModuleTools commit

Replaced vuetify elements with vue-material and simplified layout.

* #25: Refactored module tools page to use store

Moved module tools data into store, refactored tool card into component
for reuse in simulationTools as well.

* #25: Initial simulation tools commit

Changed module tools getter name to avoid overlap, added simulation
tools store data and getter, added simulation tools assets.

* #25: Linting fix

* #25: Write tests for simulation, module, ToolCard

* #25: Initial chemprops commit

Rewrote chemProps.html to use `vue-material`, removed `Axios` and
commented out Smiles.vue and Auth.js in chemProps.js. Still need to
implement SMILES API, so that chemProps form works -- future ticket.

* #25: Initial chempropsapitoken commit

Missing Duke shibboleth authorization and chemprops in general, so can't
implement the api token functionality just yet.

* #25: fix typo, switch to md-layout

* #25: Initial csvPlotter commit

File upload and display works, but no tests have been written yet.
Includes a new dependency, `d3`.

* #25: Fix typo

* #25: Fix typo in router path

* #25: Create reusable ReferenceContainer component

* #25: Initial MCR tool commit

Migrated MCR tool homepage over, factoring out the references into the
new reusable container and migrating the tool descriptions into reusable
ToolCard components

* #25: Rename state getters to avoid overlap

Also added ReferenceContainer to chemProps

* #25: Make mcrTools plural

* #25: Replace v-bind with shorthand where possible

* #25: Linting fix

* #25: Added support for external links to ToolCard

* #25: Initial dynamfit commit

Same deal as other initial commits. New store module for references,
migrating vuetify tags to vue-material tags. Added JobMgr.js module,
which dynamfit uses. Changed Axios implementation to fetch
implementation, mocked auth module as it is not implemented yet.

* #25: Fix bug in ToolCard internal link checker

Using `new URL()` to test links threw errors (expected) but jest didn't
like that. Replaced with a simple externalLink flag that defaults to
false unless the store explicitly sets it true.

* #25: Fix error thrown by CSV Plotter when mounting, removing data

CSV Plotter was trying to display undefined data. Fixed that, in the
process also fixed (mostly) removing data. Some style changes too

* #25: Fixed CSV Plotter drag and drop

* #25: Iterate on csv plotter layout, drag ability

Entire "drag file here" section now works as expected. Line spacing
leaves something to be desired, but I'll come back to it once I
understand the `vue-material` syntax better. Prettified the HTML too.

* #25: Initial Dynamfit addons commit

* #25: Migrate dynamfit example pages

Previously we had three separate files for dynamfit and its two pages of
tutorial, which were all very similar except for a few instructions,
some disabled fields, and some extra images. I flattened them into one
file.

* #25: package.json auto-alphabetized

* #25: Migrate dynamfit result page

Job Manager still not working, that's next. Once it's working, it should
provide the content for this page.

* #25: Fix/catch dynamfit mounting errors

* #25: Simplify button link

* #25: Update chemprops to use the new dialog box, and prep for SMILES

* #25: Initial SMILES commit

Functionality depends on the API being up and running, to return
results.

* #25: Move LineChart to components

* #25: Clear input element, chart on file remove

By tying the LineChart key to the filename, removing the file using the
button also resets the LineChart.

* #25: Refactor store to simplify tools

Half of the refactor is in this commit, flattening the `tools/` subdir
as it seems unnecessary. moduleTools store will be added next.

* #25: Create unified tools store

Every tool is now stored consistently. Dynamfit was moved from its own
directory into this one and updated to store its own display info.
Getters are a first guess at what will work, debugging that will happen
once this store migration is complete.

* #25: Create unified toolset store

Store toolsets as supersets of tools and other toolsets. Again, getters
are a first pass, and will be debugged next.

* #25: Wrote toolset store for moduletools

Also added a pageContent getter and updated MCRTools variable names to
match standard

* #25: Rename moduleTools to tools in preparation

Will eventually move simulationTools under the tools store umbrella,
getting ready for that now so I don't have to rename it everywhere

* #25: Added missing info to tools, getters, index

Some tools were missing namespace flags, some missing image files.
One getter needed updating to include external link flag and image
filepath, and Dynamfit needed to be added to the index.

* #25: Fixed bug in calling rootGetters

I had gotten the syntax for calling getters wrong.

* #25: Nest tools under nanomine, not metamine

* #25: Create reusable tool and toolset pages

* #25: Fix typos

* #25: move link nesting to getters for easy changes

* #25: Fix toolset page not reloading on route change

Also add base component for toolsets, tools

* #25: Rolling back MCR tool work to revisit later

* #25: Nest tools to /nm/tools, update mentions

* #25: Move simulation tools under toolsettemplate

* #25: Fix references not showing/erroring when empty

* #25: Move dynamfit to tools root, remove mcr home

MCR homepage is now handled by toolsettemplate

* #25: update webpack chunk names

* #25: fix typo

* #25: tag auth mocks more obviously

* #25: Fix typos

* #25: Move references to separate file

Easier to remove duplicates from a reference list if you can generate
the set of all references in a repeatable way. By referring to
references with DOI/ISBN numbers, we set the stage for pulling
reference info from semantic scholar as well.

* #25: Wrote ReferenceContainer unit test

Also updated ToolCard unit test to test for link rendering correctly.

* #25: Remove old tests for moduletools, simulation

Those pages are now handled by ToolSetTemplate, no need for their own
specs.

* #25: Write unit test for LineChart

Had to add a moduleNameMapper to the jest config in order for it to
recognize `d3`, which LineChart uses to draw the graph.

* #25: Further refactor reference handling

Move references to ReferenceContainer store module, for easier
replacement later with a SemanticScholar API call or other form of
reference checking. Use DOIs (or ISBN in one case so far) as key.

* #25: Initial SmilesCanvas unit test

For some reason, SmilesCanvas is not able to reach the same document as
the jest harness is providing the test, so it errors out when trying to
render the SMILES output. Haven't been able to debug, this is a
placeholder test that I'll come back to when I'm able to figure it out.

* #25: Move CanvasWrapper into SmilesCanvas

CanvasWrapper is not used anywhere else in the old repo -- pulled its
functionality (not very much) into SmilesCanvas.

* #25: Write ToolSetTemplate unit test

* #25: Write initial Dynamfit unit test

Return to this once the Dynamfit/JobMgr API is completed to write tests
for the form logic

* #25: Write initial DynamfitResult unit test

Return to this once the Dynamfit/JobMgr API is completed to write tests
for the API response logic

* #25: Remove skipped unit test

* #25: Fix bug in testing md-button with `to` attr

`RouterLinkStub` (used in `createWrapper` for jest tests) doesn't play
nicely with the `md-button` implementation of `router-link`.
(`md-button` is using deprecated attributes of `router-link`, and is
throwing console.warnings.) So I wrapped `md-button`s in `router-link`s
explicitly, which solved the testing bug too.

* #25: attempt at spacing toolcards

* #25: Remove broken tests

Using RouterLinkStub in createWrapper breaks these tests, which aren't
testing our code anyway so it's not a big deal.

* #25: Move tools that won't use ToolTemplate out

Prep for moving all the tools from state into their own components, more
like they were stored in previous repo.

* #25: Move tools from state into components

Each tool now has its own component, instead of its own state module as
discussed with Tolu. Each component uses the ToolTemplate component for
display, which has two separate views: a card view for ToolSets, and
a space for an upcoming tool instruction view for the Tool itself.

* #25: Move ToolSets from state to components

Each toolset now has its own component, instead of its own state module
as discussed with Tolu. Each component uses the ToolSetTemplate
component for display, which like the ToolTemplate has two views, a card
view and a toolset page view. This does involve some recursive
components which seem to be working fine.

* #25: Fix ToolSetTemplate Test

ToolSetTemplate no longer includes References (they're only accessible
to the Tools that cite them), so the ReferenceContainer test was
removed. It also no longer calls store getters to retrieve card content.

* #25: Fix filepath typo

* #25: Cleaning up old files

Removed commented out code and console.logs, and parameterized a
function

* #25: Moved global suppressing to test-setup.js

Set up `test-setup.js` to be run before each test file is executed.
Moved the suppressing of global.console.log and global.fetch to there,
rather than repeating it in every test.

* Updated dockerfile to use released whyis.

* #144: Data voyager initial working migration

* #24 migrate upload (#147)

* #24: Initial XML Uploader commit

Converted vuetify to vue-material, added references to the reference
store.

* #24: Fix old references to xml-uploader

* #24: Remove mock dataset from testing

* #24: Write unit test for dataset viewer

* #24: Rename DatasetCreateOrSelect to DatasetViewer

* #24: Updated dialog rendering, removed autologin

* #132 write slot driven templates (#142)

* #132: Add MCR specific tool page

Renamed tool template to specify that it is MCR tool specific -- at
least given the tools we've added so far. Added a dependency for
EditImage.vue, a component of ImageUpload.vue that is itself a component
of MCRToolTemplate.vue. Removed the old MCR homepage.

Added a pageContent getter for tools as well.

* #132: tag auth mock more obviously

* #132: Use MCRToolTemplate in all tools, add socket

Job Manager uses vue-socket.io -- copied config from old repo and added
this and socket.io-client as well. Updated MCRToolTemplate to account
for move from state to components -- added card, moved reference
container.

* #132: Remove old ToolTemplate

* #132: Update MCRToolTemplate to use tool prop

Also add spinner for loading results

* #132: Fix typos

* #132: Add optional mocks to test wrapper

`$socket` needed to be mocked for some tests, added that functionality
to `createWrapper`.

* #132: Write Tool Card that uses slots, not props

* #132: Move major tool page content to slots

Not all content could be moved, as some is needed for job management,
but major display content was turned into slots for template HTML.

* #132: Move Toolset content from data to slots

* #132: Wrote tests of new templates

Also updated the wrapper function to allow for user-defined stubs

* #132: Remove replacement-tool-page slot

Was created for Dynamfit, ChemProps, but those really should be separate
components, so I removed the slot.

* #132: Make tool cards full-width

* #132: Convert Module Tools page to new system

* #133: Convert Binarization tools and homepage

Moved tool data from the `data` field to slots in the tool page template
and moved the homepage data from `data` to the toolset page template
slots.

* #133: Fix seeming typo in ImageUpload.vue

I may be wrong, but the way the selects prop is used in the template
seems like it should be an Array, not an Object. All the selects fields
in each tool are Arrays as far as I remember. Certainly for the
binarization tools.

* #134: Convert Characterization tools

* #135: Convert reconstruction tools

* #136: Convert Intelligent characterization tool

* #139: Remove ChemProps, Dynamfit from template

ChemProps and Dynamfit rewrite all the job management code already, so
they should really be separate components.

* #139: Wrap lifecycle events in `this.card` checks

If a component is being rendered as a card, it doesn't need to check for
authorization or commit its header. Also removed unused minWidth param
from renderDialog.

* #132: Convert MCR homepage

* #132: Remove unnecessary index files

ToolSetTemplate no longer needs to keep all tools as components, so the
index files that centralized them were removed.

* #132: Tweak ToolCard size, layout

* #132: Write test for MCRToolTemplate

* #132: Remove typos and testing code

* #132: Attempt at cleaning up scoped styles

* #132: Migrate SimulationTools, Polymerizer

Add fallback content for toolset pages, if description is not present.

* #132: Change submit button implementation

You can't listen to events on slots, so the button was moved to the
tool template, and the slot only provides the button text now.

* #132: Typo in styles import

* #132: Fix MathML syntax

* #132: Move tool, toolset routes to own module

* #132: Replace MathML with MathJax

Includes a CDN script tag in index.html, and a new component, but now
math will render in all browsers.

* #132: Combine tool scss files into one

* #132: Fix style imports for new consolidated file

* #132: Updated vue-advanced-cropper version

* #132: Wrap styles to avoid overflow

* #29 migrate meta mine tools (#148)

* #29: Initial PixelUnit commit

Converted all vuetify to vue-material, cleaned up JS a little bit. Had
to replace the static file reference with a link to the live website's
version of the file, as we don't yet have a way to serve static files
that I know of.

* #29: Update PixelUnit route

* #29: Remove console.logs

* #29: Write template unit test for PixelUnit

Once file storage is implemented, the config file can be loaded for the
test as well, which will allow testing of the page's function

* #29: Remove commented console.logs

* #29: Comment out test rather than skip it

* #29: Fix likely location of CI test fail

Added dummy catch block to the promise I think is causing the issue.

* #29: Remove PixelUnit test from test suite

Didn't completely remove it, so that it can be tackled in a future TD
ticket.

* #29: Move scoped styles to _tools.scss

* #29: Wrap styles to avoid overflow

* #125 refactor sparql js (#150)

* #125: Throw errors instead of failing quietly

* #125: Add combined query and parse function

Could export it as the default if we want? No need to, of course.

* #125: Throw error on response failure

* #125: Simplify rethrowing errors

* #144: Fix Data Voyager styling and navBack buttons

* #144: Fixes to DataVoyager for Jest

* #144: Data Voyager component unit tests

* #144: Replace uri with chartId

* fix(#140): general technical debt (#152)

* #126: add functions for chart id resolution

* #126 remove scoped styles

* Initial commit #98

Currently using duplicated/modified code from Gallery.
Added initial standard styling for #114, #115, #118

* #98: Add styling for sample images #115

* #98: Minor styling and linting fixes

* #98: Start developing state management for explorer results

* #98: Fix linting errors

* #140: app scroll behaviour fixes

* #140: Ignoring mongodump folder

* #140: Update mongo init file to create indexes

* #50: Restore shell script replaced with syncdb.sh

* #140: Mongodb restore and sync script

* #140: Add syncdb shell to script

* #140: Add Elastic search to docker compose services

* #140: Add Elastic search to docker compose services

* #140: Add ES config payload

* #140: Add article mappings payload

* #140: td - under dev

* #140: Fix conflicts

* #140: pre-checks commit

* #140: pre-checks commit -2

* #140: pre-check temp udates

* #140: Update docker compose file  port mappings

* #140: Remove dependency and added environment variables

* #140: Updating frontend nginx settings

* #140: Updating frontend nginx settings

* #140: Redirect all 50x error back to index page

* #140: Rest services update, test fixes, and deployment updates

* #140: Changed logger directory

* #140: Linter fixes

* #140: typo fixes

Co-authored-by: Sam Stouffer <samuellstouffer@gmail.com>
Co-authored-by: Anya Wallace <aswallace98@gmail.com>

* #144: Fix chart uri to match gallery implementation

* We are only using the materialsmine ontology now

* #156: Updating icos (#157)

* #156: Updating icos

* #150: Upgraded node version

* #150: Re-install node module after upgrade

* #150: Blocked out fuseki standalone service implementation

* #150: Upgraded node version on BE

* #150: Update to specific version of body-parser

* #156: Updated log file creation

* #156: Updated ES to log pings

* #158: fix undefined data return from sparql

* #145: add parameterized query page

* #145: remove console logs from param. query apge

* #145: fix readonly prop warning, add readonly prop functionality to yasqe

* #145: fix query template syntax error

* #162: Fix overlap in tool styling

* #145: adjust VALUES block insertion be inside WHERE

* #145: require manual refresh to run param query

* #145: use router.back for datavoyager back button

* #145: run query when autorefresh turned on

* #161: Fix vega chart responsiveness

* Add menu item MRS2022 to PageHeader.vue

* match the styling of other menu links

* fix #163: z-index dropdown

* #161: Uncommented and added curly brace to match previous commits

* #165: Add Data Voyager tutorial video to how to page

* #165: Initial draft of DV instructions

* #165: Fix linting error

* fix(#156): Update ico fix (#169)

* #156: Add unwanted whyis files to gitignore

* #156: Add host port to client services

* #156: update env variable deployment and update readme file

* #156: Update environment variable readme file with additional info

* #156: Update readme with information for environment variable deployment

* #156: Update search url

* #156: Update api url

* #156: Disable websocket

* #156: temporary service disable

* #156: fix connection time

* #156: Update api call to use new service port environment variable

* #156: Update search url

* #156: empty commit to trigger new build

* #156: Pull upstream

* #156: Update readme on environment variable deployment

* #175: add two-property parameterized query

* #165: Switch instructions to accordion style instead of button

* Fix linting errors

* #165: Minor v-bind error fix

* #164: fix visualize and Module Tools routes

* #164: replace nanomine drawer with generic drawer

* #165: Open DV paper link in new tab

* #179: Fix dropdown links for galleries

* #160 #180 Dialog box styling fixes

 #160: Dialog box now fits screen when expands to full screen for
mobile responsiveness
 #180: Clicking outside causes unwanted behavior, so instead added
scrolling so that close button is always visible

* Remove unit

* #165: Add link to voyager gitbook

* chore(#155): Fixes (#211)

* #155: add backup to git ignore

* #155: Add node modules to ignore

* #155: Add a new library for pixel unit testing

* #155: Re-enable pixel unit test

* #155: Re-enable pixel unit test

* #177: Add 404 page and updated app router

* #177: Styling 404 page

* #155: updated search, testing and dv link

* #155: fix typos and update creation page to use curate

* #155: Add header to page not found

* #155: update unit test for page-not-found

* #155: Updated code owners

* #155: Update home link

* #205: Recommendation for regex fix for safari

* #176: Add ability to replace pq variable names with option selections

* #210: Add some of missing properties to pq dropdown

Still needs additional work. Dielectric constant won't return results due to not having units, breakdown strength is not directly curated as a property of the samples

* add sample metadata author and year (#221)

* add sample metadata author and year

* add nullish coalesing

* lint code

* add container to metadata and user computed sampleId

* #210: Make units optional in pq to allow unitless attributes

* Staging (#227)

* #220: UI fixes

* #220: styling changes

* #220: Add Curae home page and updated parameterized query

* #220: Add Curae home page and updated parameterized query

* #220: Add Curae home page and updated parameterized query

* #190: Update with require library

* #190: Remove placeholder files

* #190: Migrate globalmiddleware file to index.js

* #190: Add validators and global error handlers

* #190: Add schema and resolver for user and user management

* #190: Allow setting jwt expiration arg

* #190: Add image migration logic

* #190: Add pagination handler

* #190: Update eslint for rest services

* #190: Remove unused services

* #190: Update auth token source

* #190: linter fixes

* #190: Update auth token source

* #190: Update server file with additional services at startup

* #190: Add testing for graphql service pt1

* #190: update test import

* #190: Renamed graph resolver

* #190: Renamed graph resolver

* #190: removed unused import

* #190: Install ws package

* #155: Work in progress

* #220: Update styles for page opt

* #220: Added an icon to filter panel

* #220: Add parameterized query as tab and remove it as a button

* #220: Add image gallery to list of routes

* #220: create an image gallery components

* #220: test WIP

* #190: Refactor graphql and define user, api and image gallery schemas and resolver

* #190: Centralizing error for graphql operations

* #190: Adding appollo server and remove express-graphql

* 190: Modified restful tests

* #190: Update rest server config, middleware services and graphql init

* #190: Add xmldata model for xmldata collection

* #190: Add a new params to pass env var

* #190: Ignoring node_modules in docker

* #190: Ignore fuseki files

* #190: Update validations and add new login controller - wip

* WIP: frontend testing

* #190: Add proxy to rest environment variables

* #190: Rename imageContent method to file content

* #190: Renamed expected file param

* #190: Separated file controller from admin controller

* #190: Update import and added file routes handler

* #190: Renamed files

* #190: Add single image resolver and updated search resolvers

* #190: Add query pipelines directory and image query pipeline

* #190: Renamed file

* #190: New file route handler for file related services

* #190: Renamed files

* #190: Update image query with image keywords

* #220: Revert ES6 Syntax and Image Gallery WIP

* #190: Image gallery

* #190: update parameterized query page link

* #190: Linter fixes

* #190: update gql fetch policy

* #190: linter fixes

* #190: Linter error fixes

* #190: Fix failing tests

* #190: Remove path import from vueconfig

* #190: Remove optional chaining causing error

* #190: Bug fixes for search box

* #190: Remove output logs

* #190: Update base url

* #190: Add logic for image not found

* #190: Refactored image base URL - API

* #215: Work in progress

* #215: remove empty return and linter fixes

* #215: gallery unit test WIP

* #215: gallery unit test WIP

* #220: Add text reducer and image reducer to mixin

* #220: Update unit testing

* #220: Update docker image setup for UI

* #220: general UI optimization update

* #220: Linter fixes

* #220: Updated UI docker config

* #220: Re-install npm library

* #220: Update text description for null values

* fix (#235): Update Drawer with Curation (#240)

* #235: Add test for side drawer

* #235: Update side drawer with curation menu options

* #235: Linter fixes

* feat(#238): Contact us page api (#243)

* #238: Created a new mongodb schema for contact

* #238: Refactor error formatter to return error instead of throw

* #238: Add sinon lib for unit testing

* #238: Refactored to return error instead of throwing

* #238: Added unit testing for contact and refactored existing test

* #238: Added contact query/mutation and schema

* #241: MVP of metamaterial visualization tool

Important TD: data access is very inefficient right now and needs lots of work

- csv needs to be stored on rest, not frontend
- should be stored in local storage after initial pull
- needs geometry visualization

Currently mockup2 is the more up-to-date version

* #241: Add unit cell visualization for 10x10 and 50x50, fix screen resize

* Whyis Integration 1 of 8 (#246)

* #156: Add unwanted whyis files to gitignore

* #156: Add host port to client services

* #156: update env variable deployment and update readme file

* #156: Update environment variable readme file with additional info

* #156: Update readme with information for environment variable deployment

* #156: Update search url

* #156: Update api url

* #156: Disable websocket

* #156: temporary service disable

* #156: fix connection time

* #156: Update api call to use new service port environment variable

* #156: Update search url

* #156: empty commit to trigger new build

* #156: Pull upstream

* #156: Update readme on environment variable deployment

* WIP

* Switched back over to the whyis fuseki install.

* resolved conflict

* Got fuseki working with fast instance and summary views

* whyis integration 1 of 8

* Update CI

Co-authored-by: Jamie McCusker <mccusj2@rpi.edu>
Co-authored-by: Jamie McCusker <mccusker@gmail.com>

* #241: Combine mockups but separate vega specification

* #241: Remove mockup

* update CI (#247)

* fix(#236): Update image gallery search (#244)

* #236: Refactored unit test

* #236: Add search functionality to image gallery

* #236: Refactor image gallery

* #236: Update container image

* chore (#237): Add descriptions to existing query and mutation resolvers (#245)

* #237: Add descriptions to existing query and mutation resolvers

* #237: Update schema text descriptions

* #229: Initial UI for spreadsheet upload interface

* #241: Make metamaterial unit cell scale based on number of pixels

* Linting errors

* #229: dataset curation

* #241: Minor UI fixes, add loading spinner

* Fix linting error

* #241: Metamaterial viz feedback

- Add constituent material info under the unit cell image
- Temporarily switch to using Papaparse for csv to json conversion since my implementation was buggy

* #229: WIP

* #229: added a resolver for dataset upload

* #229: Add file upload and update data stream

* #229: dataset unit testing

* #250: UI fixes for demo

* #250: Remove click event

* #229 spreadsheet file interface (#249)

* #229: dataset curation

* #229: WIP

* #229: added a resolver for dataset upload

* #229: Add file upload and update data stream

* #229: dataset unit testing

* #250: UI fixes for demo

* #250: Remove click event

* #229: Updates to remove explorer home page latency

* #229: Test requires refactoring, passed sanity checks

Co-authored-by: Anya Wallace <aswallace98@gmail.com>

* #252: Add resolver for pixelated data and updated unit test

* #252: Validate user before allowing upload

* #252: Linter fixes

* #252: Re adding missing library

* feat(#252): Add resolver for pixelated data and updated unit test (#257)

* #252: Add resolver for pixelated data and updated unit test

* #252: Validate user before allowing upload

* #252: Linter fixes

* #252: Re adding missing library

* #241: Pixelated metamaterial viz updates

- Switch to using apollo graphql for data
- Temporarily remove color coding until datasets have label or title
- Temporarily limit to 10x10 OR 50x50, not both
- Add loading spinner, fix async behavior

* #241: Fix metamaterial viz unit tests

* Remove console.log

* #241: Combine timeouts and fix vega-lite warning

* Fix linting error

* #261: Fix MetaMine header styling and add viz link

* #261: Remove an unnecessary inline style

* Fix (#252): Updates (#263)

* #252: Updated graphql schema description

* #252: Add changes to automatically create storage at RESTAPI start up

* Fix(#252): Updates (#264)

* #252: Updated graphql schema description

* #252: Add changes to automatically create storage at RESTAPI start up

* #252: Refactored pixel data endpoint

* #252: Added a centralized log writer

* #252 updates (#265)

* #252: Updated graphql schema description

* #252: Add changes to automatically create storage at RESTAPI start up

* #252: Refactored pixel data endpoint

* #252: Added a centralized log writer

* #252: Refactor isAuth to remove file anytime auth fails

* #229: Spreadsheet upload draft

* Linting errors

* #229: Fixed datasetId mutation bug

* #229: update failing test

* Update decryptENVARFile.sh (#248)

Co-authored-by: tholulomo <94853475+tholulomo@users.noreply.github.com>

* [Hotfix] #229: Fixed datasetId mutation bug (#267)

* #229: Fixed datasetId mutation bug

* #229: update failing test

* #229: Fix error messsage

* #229: UI fixes; createdDatasetId working

* #229: XML Spreadsheet upload wip

400 error in createDataset file upload: `BAD_USER_INPUT`

* #229: Fix curation upload route issues (#268)

* #229: Fix curation upload route issues

* #229: Add validations for curation upload routes

* #229 fix upload (#269)

* #229: Fix curation upload route issues

* #229: Add validations for curation upload routes

* #229: Refactor uploadfile to remove middleware service

* #229: Pull upstream update

* Fix (#229):  Fix upload (#274)

* #229: Fix curation upload route issues

* #229: Add validations for curation upload routes

* #229: Refactor uploadfile to remove middleware service

* #229: Pull upstream update

* #272: Fix dialog box styling and typos

* #272: Rename class to reflect use case

* #272: Reduce scope of dialog icon styling

* #229: Bug fixes

* #272: Merge upstream fixes

* #229: Update Nodejs version

* #229: CI update

* #229: Update vue

* #229: Docker updates

Co-authored-by: Anya Wallace <aswallace98@gmail.com>

* #229: Update curation UI and merge dev

* #26 migrate contact us (#140)

* #26: change contact link from src to nm

* #26: create contactus page

* #26: apply lint

* #26: add contactus route to nm

* #26: add contact page tests

* #26: remove list style

* #26: add error validation html

* #26: add validation and onSubmit methods

* #26: add post method

* #26: add rendering tests for inputs

* #26: add platform flag

* delete event prevent default

* resolve router conflicts

* #26: add validation for platform

* #26: uncooment platform post data

* #30: add test for user inputs

* add spacing

* rename webpack code chunk name

* add contact query

* add apollo query

* add $ to input

Co-authored-by: tholulomo <94853475+tholulomo@users.noreply.github.com>

* #275: Separate apolloClient into module

* #275: Modify apolloClient to work with Vuex

* #275: Put apollo provider back where it was

* #275: Remove comments

* [Hotfix]: dataset curation updates

* [Hotfix]: Dataset curation updates (#278)

* [Hotfix]: dataset curation updates

* [Hotfix]: Deprecate fields that are no longer supported in GQL

* [Hotfix]: Update gql schema test

* #229: MVP spreadsheet upload UI

* #229: Fix component name and linting

* Merge branch 'develop' of https://github.com/Duke-MatSci/materialsmine into #229_spreadsheet_file_interface

* #229: Spreadsheet upload - split files and rename

* #229: Fix linting

* #229: Add unit tests for all supporting components

* #224: Update datavoyager link to use button (#281)

* [MINOR]: #279 contact page BE integration (#280)

* #279: Update form UI and added contact link to metamine page

* #279: Remove console.log statement

* #279: Integrated BE with contact page and updated unit test

* #229: Add unit test for spreadsheet upload page

* Undo accidental package-lock commit

* #229: Fix async calls in spreadsheet upload

* #207 material data filter search (#287)

* #207: Update unit test to run in band

* #207: Update to remove facet dialog for smaller screen

* #207: Add materials property to facet search

* #207, #212: Total count fix and added materials property fetch actions

* #207: Remove facet call at home page load

* #207: Refactor BE api to support materials property functionality on UI

* #207: Backend unit testing for admin controller apis

* #207: Added unit test for materials property and searchtableresult component

* #207: Linter and error fixes

* #207: Fix import typo

* #207: Upgrade node version

* #207: Refactor  name to

* :bug #207: Update CI node version

* 🐛 #207: Downgrade CI node version

* #229: Protect curation behind auth to prevent unwanted access

* Fix readme typo

Update readme ICO

* #289 snackbar for error handling (#290)

* #289: Implement snackbar two ways

* #289: Fix linting

* #289: Add Snackbar to App.vue

* #289: Add snackbar unit test and an example for calling from vuex

* #293 UI & BE Enhancements (#294)

* #293: Add coverage to gitignore and update readme icon

* #293: Fixed parameterized query UI inconsistency

* #293: Sticky header bug fix

* #293: Update unit test for viz page

* #293: Add new filter types and removed undefined from image response

* #293: Refactor auth middleware to use the centralized error writer

* 293: Add 404 controller to backend to manage unavailable routes and page not found

* #293: Fix mobile bug in viz page

* #293: Update to return authors as part of image response

* #293: 🔥 Image pipeline hotfix (#295)

* #292: Visualization gallery initial fixes

* #292: Add authors to image detail view, fix unit tests

* #292: Add current page field to pagination component

* #292: Add DOI to detail view, add links to search by doi and keyword

* #293: Image pipeline, image schema updates and refactoring (#298)

* CI: Fixes for build failure (#306)

* [MAJOR] #300: Shibb auth (#308)

* #300: Add names for each container

* 🔥[hotfix]: FE Bug fixes

* 🔥[hotfix]: Linter fixes

* #300: BE auth service setup

* #300: Refactor FE with auth flow implementation

* #300: Add auth service to proxy

* #300: Update docker environment variables

* #300: Linter fix

* #300: Refactor failing component and fix test failures

* #300: Fixed merged conflict

* #300: Add additional logger to auth service

* #300: Add additional logger to auth service

* #300: Remove unused logger from auth service

* #300: Remove unused logger from auth service

* #300: Update failed auth response

* #300: Refactor login button

* #300: Remove sparql query menu

* #300: Update logout actions

* #300: Update unit test assertions

* #300: Remove skipped unit test

* Feat(#309): Prod CICD (#310)

* feat(upgrade): #309 Add rest coverage report to gitignore

* feat(upgrade): #309 Setup coverage testing report for backend

* feat(core): #309 Add release versioning to CI pipeline

* feat(ci/cd): #309 Update CI pipeline for prod release

* feat(ci/cd): #309 Re-enabled image build and deployment for QA CI  environment

* fix(#292): modify page input and selection styling

make the page number input smaller to match surrounding labels,
move the selection to the same line as buttons and match styling

---------

Co-authored-by: Anya Wallace <aswallace98@gmail.com>
Co-authored-by: Kevin Zuniga Cuellar <kzunigac@uvm.edu>
Co-authored-by: Rory Schadler <48921090+roryschadler@users.noreply.github.com>
Co-authored-by: Kevin Zuniga Cuellar <46791833+kevinzunigacuellar@users.noreply.github.com>
Co-authored-by: Sam Stouffer <samuellstouffer@gmail.com>
Co-authored-by: Jamie McCusker <mccusj2@rpi.edu>
Co-authored-by: Jamie McCusker <mccusker@gmail.com>
Co-authored-by: mjpalmeri <95506353+mjpalmeri@users.noreply.github.com>
Co-authored-by: bingyinh <32102865+bingyinh@users.noreply.github.com>
tholulomo added a commit that referenced this pull request Mar 1, 2023
* #109: Fix linter errors

* #109: Fix chart nested routing

* #109: Add error handling for chart uri not found

* #109: Fix linting errors

* #97: Initial commit of search header panel tabs

* #97: Add search bar to header

* #113: Refactor sample page queries

* #97: Fix tab styling, rearrange to match UI presentation

* #97: Remove top right search field

* #113: refactor sample page components

* #113: fix linting errors

* #97: Remove test content from tabs

* #97: Unit test for search header panel

* #113: first draft

* #113: Fix for error thrown in unit test

* Linting errors

* #97: Set up for explorer results state management

* Fix linting errors

* #113: add tests for state variables

* #113: remove page style

* #113: fix empty results display

* #66 templated view article (#112)

* #66 initial article commit

* #66: Refactor article page, fetch article metadata

Moved Article.vue, separated out into article.js to match file structure
of other pages. Progressed on Semantic Scholar API logic.

* #66: Refactor article.js

* #66: Refactor Article.vue

* #66: Add route for Article View

Added route to explorer for the article view. Moved DOI from component
prop to a watcher and computed property pair.

* #66: Refactor article.js to move logic to services

Moved article metadata retrieval logic to services. Unified all metadata
under one object for simpler reference.

* #66: First pass at article HTML view

First attempt at displaying all article metadata. Also added pre-push
linting fixes.

* #66: Add loading state awareness

* #66: Add article venue to retrieved fields

* #66: Second pass at article view HTML

Added basic loading indicator, refactored table to have better structure
(I think)

* #66: Basic CSS for article view

* #66: Removed erroneous comment

* #66: Fix scrolling bug

Scrolling tables also scrolled their titles, but not their header rows.
Isolated tables in their own div, maybe tables should be their own
component...

* #66: Unify dir structure, nest article page

Move explorer/article/services to modules/explorer/article/services,
clean up article now that it's nested properly (barring further change
to nest completely under sample). Refactor extra function from fetchJSON
into getArticleMetadata.

* #66: initial Article.vue testing commit

Includes mock for Semantic Scholar API calls and article.js whitespace
linting fix.

* #66: Refactored getArticleMetadata for easier mock

Mocking getArticleMetadata easily required moving it into an enclosing
object so that the manual mock could do the same, allowing it to access
properties. The manual mock was written following along with
[jest's manual mock](https://jestjs.io/docs/manual-mocks).

The mock of the resulting getArticle also provides a stub of the
SemanticScholar API response as of 2/2/22, for reference and testing.

* #66: Write tests for Article.vue

Wrote tests of DOI loading, reloading; article data loading; API
failure. Added classes to article.html items to distinguish them and
allow the tests to refer to them. Updated article.js to use the new
articleMetadata.js and fixed bugs that appeared in testing.

* #66: Fix linting errors

* #66: Write tests for module articleMetadata.js

Updated articleMetadata mock to include raw and cleaned mock data, and
wrote tests of the fetch handler and response cleaning routines. Fixed
issues in articleMetadata.js that came up in testing.

* #66: Refactored articleMetadata.js to better track API errors

Refactored .get function to remove repeated code and allow API calls to
occur in parallel. Rewrote how internal fetch returns in order to pass
errors (and success codes) in API call along to caller. Updated mock
data to include mock version of success codes

* #66: Updated tests to match

Also added missing response codes to mock data, and fixed citation and
reference call status not being passed through

* #66: Updated Article.vue to display errors

Article view now takes advantage of newly passed API errors to inform
the user that an error has occurred. This could be expanded on

* #66: Linting fixes

* #66: Update test to use createWrapper

Replaced localVue, shallowMount with createWrapper for consistency.
Added test to ensure error message is displayed to user.

* #66: Write comments, refactor error storage

* #66: Write jsdoc-style function comments

Documented functions, removed unused mock response function, and
refactored testing slightly to remove repetition.

* #66: Move article to its own route

* #25: Remove console.logs, add reusable spinner

* #113: remove console.logs and add index key

* #113: fix linting errors

* #123: Consolidate exports in sparql.js

* #123: Modify sparql capitalization to match existing pattern

* #28: Link MM/teams to teams page (#122)

* #28: Link MM/teams to teams page

* #28: Update reference to about, how, news

* #123: Merge parseSparql and transformSparqlData into a single function

* #61: Add gallery page

* remove duplicate spinner component

* remove redundant pagination styles

* fix lint errors

* Remove class that hides pagination buttons

* remove unneccessary sass imports

* query actual charts in gallery view

* remove console.log in test

* #130: Linting fix (#131)

* feat(#100): knowledge graph rest endpoint (#138)

* #100: Add logger service

* #100: Updated secrets default and increased token validity to 8hours

* #100: testing script for isInternal middleware service

* #100: Add isInternal middleware service to validate internal calls

* #100: Re-usable logger service for unit test

* #100: Moved logger service to initialize first

* #100: renamed filestorage directory and added a method to ensure unique file names

* #100: Updated test with log service

* #100: Added unique name generator to package.json

* #100: Added knowledge graph endpoint method

* #100: Add KG wrapper route to REST service

* #100: Append KG route to server initialization

* #100: Re-installed app

* #43: Add fuseki service to container

* #43: Fuseki volume mount

* #43: Add fuseki critical files to ignore

* #100: Updated nginx to use a preferred version

* #100: File renaming and linter error fixes

* #100: Update environment variables

* #25 migrate tools (#128)

* #25: initial ModuleTools commit

Replaced vuetify elements with vue-material and simplified layout.

* #25: Refactored module tools page to use store

Moved module tools data into store, refactored tool card into component
for reuse in simulationTools as well.

* #25: Initial simulation tools commit

Changed module tools getter name to avoid overlap, added simulation
tools store data and getter, added simulation tools assets.

* #25: Linting fix

* #25: Write tests for simulation, module, ToolCard

* #25: Initial chemprops commit

Rewrote chemProps.html to use `vue-material`, removed `Axios` and
commented out Smiles.vue and Auth.js in chemProps.js. Still need to
implement SMILES API, so that chemProps form works -- future ticket.

* #25: Initial chempropsapitoken commit

Missing Duke shibboleth authorization and chemprops in general, so can't
implement the api token functionality just yet.

* #25: fix typo, switch to md-layout

* #25: Initial csvPlotter commit

File upload and display works, but no tests have been written yet.
Includes a new dependency, `d3`.

* #25: Fix typo

* #25: Fix typo in router path

* #25: Create reusable ReferenceContainer component

* #25: Initial MCR tool commit

Migrated MCR tool homepage over, factoring out the references into the
new reusable container and migrating the tool descriptions into reusable
ToolCard components

* #25: Rename state getters to avoid overlap

Also added ReferenceContainer to chemProps

* #25: Make mcrTools plural

* #25: Replace v-bind with shorthand where possible

* #25: Linting fix

* #25: Added support for external links to ToolCard

* #25: Initial dynamfit commit

Same deal as other initial commits. New store module for references,
migrating vuetify tags to vue-material tags. Added JobMgr.js module,
which dynamfit uses. Changed Axios implementation to fetch
implementation, mocked auth module as it is not implemented yet.

* #25: Fix bug in ToolCard internal link checker

Using `new URL()` to test links threw errors (expected) but jest didn't
like that. Replaced with a simple externalLink flag that defaults to
false unless the store explicitly sets it true.

* #25: Fix error thrown by CSV Plotter when mounting, removing data

CSV Plotter was trying to display undefined data. Fixed that, in the
process also fixed (mostly) removing data. Some style changes too

* #25: Fixed CSV Plotter drag and drop

* #25: Iterate on csv plotter layout, drag ability

Entire "drag file here" section now works as expected. Line spacing
leaves something to be desired, but I'll come back to it once I
understand the `vue-material` syntax better. Prettified the HTML too.

* #25: Initial Dynamfit addons commit

* #25: Migrate dynamfit example pages

Previously we had three separate files for dynamfit and its two pages of
tutorial, which were all very similar except for a few instructions,
some disabled fields, and some extra images. I flattened them into one
file.

* #25: package.json auto-alphabetized

* #25: Migrate dynamfit result page

Job Manager still not working, that's next. Once it's working, it should
provide the content for this page.

* #25: Fix/catch dynamfit mounting errors

* #25: Simplify button link

* #25: Update chemprops to use the new dialog box, and prep for SMILES

* #25: Initial SMILES commit

Functionality depends on the API being up and running, to return
results.

* #25: Move LineChart to components

* #25: Clear input element, chart on file remove

By tying the LineChart key to the filename, removing the file using the
button also resets the LineChart.

* #25: Refactor store to simplify tools

Half of the refactor is in this commit, flattening the `tools/` subdir
as it seems unnecessary. moduleTools store will be added next.

* #25: Create unified tools store

Every tool is now stored consistently. Dynamfit was moved from its own
directory into this one and updated to store its own display info.
Getters are a first guess at what will work, debugging that will happen
once this store migration is complete.

* #25: Create unified toolset store

Store toolsets as supersets of tools and other toolsets. Again, getters
are a first pass, and will be debugged next.

* #25: Wrote toolset store for moduletools

Also added a pageContent getter and updated MCRTools variable names to
match standard

* #25: Rename moduleTools to tools in preparation

Will eventually move simulationTools under the tools store umbrella,
getting ready for that now so I don't have to rename it everywhere

* #25: Added missing info to tools, getters, index

Some tools were missing namespace flags, some missing image files.
One getter needed updating to include external link flag and image
filepath, and Dynamfit needed to be added to the index.

* #25: Fixed bug in calling rootGetters

I had gotten the syntax for calling getters wrong.

* #25: Nest tools under nanomine, not metamine

* #25: Create reusable tool and toolset pages

* #25: Fix typos

* #25: move link nesting to getters for easy changes

* #25: Fix toolset page not reloading on route change

Also add base component for toolsets, tools

* #25: Rolling back MCR tool work to revisit later

* #25: Nest tools to /nm/tools, update mentions

* #25: Move simulation tools under toolsettemplate

* #25: Fix references not showing/erroring when empty

* #25: Move dynamfit to tools root, remove mcr home

MCR homepage is now handled by toolsettemplate

* #25: update webpack chunk names

* #25: fix typo

* #25: tag auth mocks more obviously

* #25: Fix typos

* #25: Move references to separate file

Easier to remove duplicates from a reference list if you can generate
the set of all references in a repeatable way. By referring to
references with DOI/ISBN numbers, we set the stage for pulling
reference info from semantic scholar as well.

* #25: Wrote ReferenceContainer unit test

Also updated ToolCard unit test to test for link rendering correctly.

* #25: Remove old tests for moduletools, simulation

Those pages are now handled by ToolSetTemplate, no need for their own
specs.

* #25: Write unit test for LineChart

Had to add a moduleNameMapper to the jest config in order for it to
recognize `d3`, which LineChart uses to draw the graph.

* #25: Further refactor reference handling

Move references to ReferenceContainer store module, for easier
replacement later with a SemanticScholar API call or other form of
reference checking. Use DOIs (or ISBN in one case so far) as key.

* #25: Initial SmilesCanvas unit test

For some reason, SmilesCanvas is not able to reach the same document as
the jest harness is providing the test, so it errors out when trying to
render the SMILES output. Haven't been able to debug, this is a
placeholder test that I'll come back to when I'm able to figure it out.

* #25: Move CanvasWrapper into SmilesCanvas

CanvasWrapper is not used anywhere else in the old repo -- pulled its
functionality (not very much) into SmilesCanvas.

* #25: Write ToolSetTemplate unit test

* #25: Write initial Dynamfit unit test

Return to this once the Dynamfit/JobMgr API is completed to write tests
for the form logic

* #25: Write initial DynamfitResult unit test

Return to this once the Dynamfit/JobMgr API is completed to write tests
for the API response logic

* #25: Remove skipped unit test

* #25: Fix bug in testing md-button with `to` attr

`RouterLinkStub` (used in `createWrapper` for jest tests) doesn't play
nicely with the `md-button` implementation of `router-link`.
(`md-button` is using deprecated attributes of `router-link`, and is
throwing console.warnings.) So I wrapped `md-button`s in `router-link`s
explicitly, which solved the testing bug too.

* #25: attempt at spacing toolcards

* #25: Remove broken tests

Using RouterLinkStub in createWrapper breaks these tests, which aren't
testing our code anyway so it's not a big deal.

* #25: Move tools that won't use ToolTemplate out

Prep for moving all the tools from state into their own components, more
like they were stored in previous repo.

* #25: Move tools from state into components

Each tool now has its own component, instead of its own state module as
discussed with Tolu. Each component uses the ToolTemplate component for
display, which has two separate views: a card view for ToolSets, and
a space for an upcoming tool instruction view for the Tool itself.

* #25: Move ToolSets from state to components

Each toolset now has its own component, instead of its own state module
as discussed with Tolu. Each component uses the ToolSetTemplate
component for display, which like the ToolTemplate has two views, a card
view and a toolset page view. This does involve some recursive
components which seem to be working fine.

* #25: Fix ToolSetTemplate Test

ToolSetTemplate no longer includes References (they're only accessible
to the Tools that cite them), so the ReferenceContainer test was
removed. It also no longer calls store getters to retrieve card content.

* #25: Fix filepath typo

* #25: Cleaning up old files

Removed commented out code and console.logs, and parameterized a
function

* #25: Moved global suppressing to test-setup.js

Set up `test-setup.js` to be run before each test file is executed.
Moved the suppressing of global.console.log and global.fetch to there,
rather than repeating it in every test.

* Updated dockerfile to use released whyis.

* #144: Data voyager initial working migration

* #24 migrate upload (#147)

* #24: Initial XML Uploader commit

Converted vuetify to vue-material, added references to the reference
store.

* #24: Fix old references to xml-uploader

* #24: Remove mock dataset from testing

* #24: Write unit test for dataset viewer

* #24: Rename DatasetCreateOrSelect to DatasetViewer

* #24: Updated dialog rendering, removed autologin

* #132 write slot driven templates (#142)

* #132: Add MCR specific tool page

Renamed tool template to specify that it is MCR tool specific -- at
least given the tools we've added so far. Added a dependency for
EditImage.vue, a component of ImageUpload.vue that is itself a component
of MCRToolTemplate.vue. Removed the old MCR homepage.

Added a pageContent getter for tools as well.

* #132: tag auth mock more obviously

* #132: Use MCRToolTemplate in all tools, add socket

Job Manager uses vue-socket.io -- copied config from old repo and added
this and socket.io-client as well. Updated MCRToolTemplate to account
for move from state to components -- added card, moved reference
container.

* #132: Remove old ToolTemplate

* #132: Update MCRToolTemplate to use tool prop

Also add spinner for loading results

* #132: Fix typos

* #132: Add optional mocks to test wrapper

`$socket` needed to be mocked for some tests, added that functionality
to `createWrapper`.

* #132: Write Tool Card that uses slots, not props

* #132: Move major tool page content to slots

Not all content could be moved, as some is needed for job management,
but major display content was turned into slots for template HTML.

* #132: Move Toolset content from data to slots

* #132: Wrote tests of new templates

Also updated the wrapper function to allow for user-defined stubs

* #132: Remove replacement-tool-page slot

Was created for Dynamfit, ChemProps, but those really should be separate
components, so I removed the slot.

* #132: Make tool cards full-width

* #132: Convert Module Tools page to new system

* #133: Convert Binarization tools and homepage

Moved tool data from the `data` field to slots in the tool page template
and moved the homepage data from `data` to the toolset page template
slots.

* #133: Fix seeming typo in ImageUpload.vue

I may be wrong, but the way the selects prop is used in the template
seems like it should be an Array, not an Object. All the selects fields
in each tool are Arrays as far as I remember. Certainly for the
binarization tools.

* #134: Convert Characterization tools

* #135: Convert reconstruction tools

* #136: Convert Intelligent characterization tool

* #139: Remove ChemProps, Dynamfit from template

ChemProps and Dynamfit rewrite all the job management code already, so
they should really be separate components.

* #139: Wrap lifecycle events in `this.card` checks

If a component is being rendered as a card, it doesn't need to check for
authorization or commit its header. Also removed unused minWidth param
from renderDialog.

* #132: Convert MCR homepage

* #132: Remove unnecessary index files

ToolSetTemplate no longer needs to keep all tools as components, so the
index files that centralized them were removed.

* #132: Tweak ToolCard size, layout

* #132: Write test for MCRToolTemplate

* #132: Remove typos and testing code

* #132: Attempt at cleaning up scoped styles

* #132: Migrate SimulationTools, Polymerizer

Add fallback content for toolset pages, if description is not present.

* #132: Change submit button implementation

You can't listen to events on slots, so the button was moved to the
tool template, and the slot only provides the button text now.

* #132: Typo in styles import

* #132: Fix MathML syntax

* #132: Move tool, toolset routes to own module

* #132: Replace MathML with MathJax

Includes a CDN script tag in index.html, and a new component, but now
math will render in all browsers.

* #132: Combine tool scss files into one

* #132: Fix style imports for new consolidated file

* #132: Updated vue-advanced-cropper version

* #132: Wrap styles to avoid overflow

* #29 migrate meta mine tools (#148)

* #29: Initial PixelUnit commit

Converted all vuetify to vue-material, cleaned up JS a little bit. Had
to replace the static file reference with a link to the live website's
version of the file, as we don't yet have a way to serve static files
that I know of.

* #29: Update PixelUnit route

* #29: Remove console.logs

* #29: Write template unit test for PixelUnit

Once file storage is implemented, the config file can be loaded for the
test as well, which will allow testing of the page's function

* #29: Remove commented console.logs

* #29: Comment out test rather than skip it

* #29: Fix likely location of CI test fail

Added dummy catch block to the promise I think is causing the issue.

* #29: Remove PixelUnit test from test suite

Didn't completely remove it, so that it can be tackled in a future TD
ticket.

* #29: Move scoped styles to _tools.scss

* #29: Wrap styles to avoid overflow

* #125 refactor sparql js (#150)

* #125: Throw errors instead of failing quietly

* #125: Add combined query and parse function

Could export it as the default if we want? No need to, of course.

* #125: Throw error on response failure

* #125: Simplify rethrowing errors

* #144: Fix Data Voyager styling and navBack buttons

* #144: Fixes to DataVoyager for Jest

* #144: Data Voyager component unit tests

* #144: Replace uri with chartId

* fix(#140): general technical debt (#152)

* #126: add functions for chart id resolution

* #126 remove scoped styles

* Initial commit #98

Currently using duplicated/modified code from Gallery.
Added initial standard styling for #114, #115, #118

* #98: Add styling for sample images #115

* #98: Minor styling and linting fixes

* #98: Start developing state management for explorer results

* #98: Fix linting errors

* #140: app scroll behaviour fixes

* #140: Ignoring mongodump folder

* #140: Update mongo init file to create indexes

* #50: Restore shell script replaced with syncdb.sh

* #140: Mongodb restore and sync script

* #140: Add syncdb shell to script

* #140: Add Elastic search to docker compose services

* #140: Add Elastic search to docker compose services

* #140: Add ES config payload

* #140: Add article mappings payload

* #140: td - under dev

* #140: Fix conflicts

* #140: pre-checks commit

* #140: pre-checks commit -2

* #140: pre-check temp udates

* #140: Update docker compose file  port mappings

* #140: Remove dependency and added environment variables

* #140: Updating frontend nginx settings

* #140: Updating frontend nginx settings

* #140: Redirect all 50x error back to index page

* #140: Rest services update, test fixes, and deployment updates

* #140: Changed logger directory

* #140: Linter fixes

* #140: typo fixes

Co-authored-by: Sam Stouffer <samuellstouffer@gmail.com>
Co-authored-by: Anya Wallace <aswallace98@gmail.com>

* #144: Fix chart uri to match gallery implementation

* We are only using the materialsmine ontology now

* #156: Updating icos (#157)

* #156: Updating icos

* #150: Upgraded node version

* #150: Re-install node module after upgrade

* #150: Blocked out fuseki standalone service implementation

* #150: Upgraded node version on BE

* #150: Update to specific version of body-parser

* #156: Updated log file creation

* #156: Updated ES to log pings

* #158: fix undefined data return from sparql

* #145: add parameterized query page

* #145: remove console logs from param. query apge

* #145: fix readonly prop warning, add readonly prop functionality to yasqe

* #145: fix query template syntax error

* #162: Fix overlap in tool styling

* #145: adjust VALUES block insertion be inside WHERE

* #145: require manual refresh to run param query

* #145: use router.back for datavoyager back button

* #145: run query when autorefresh turned on

* #161: Fix vega chart responsiveness

* Add menu item MRS2022 to PageHeader.vue

* match the styling of other menu links

* fix #163: z-index dropdown

* #161: Uncommented and added curly brace to match previous commits

* #165: Add Data Voyager tutorial video to how to page

* #165: Initial draft of DV instructions

* #165: Fix linting error

* fix(#156): Update ico fix (#169)

* #156: Add unwanted whyis files to gitignore

* #156: Add host port to client services

* #156: update env variable deployment and update readme file

* #156: Update environment variable readme file with additional info

* #156: Update readme with information for environment variable deployment

* #156: Update search url

* #156: Update api url

* #156: Disable websocket

* #156: temporary service disable

* #156: fix connection time

* #156: Update api call to use new service port environment variable

* #156: Update search url

* #156: empty commit to trigger new build

* #156: Pull upstream

* #156: Update readme on environment variable deployment

* #175: add two-property parameterized query

* #165: Switch instructions to accordion style instead of button

* Fix linting errors

* #165: Minor v-bind error fix

* #164: fix visualize and Module Tools routes

* #164: replace nanomine drawer with generic drawer

* #165: Open DV paper link in new tab

* #179: Fix dropdown links for galleries

* #160 #180 Dialog box styling fixes

 #160: Dialog box now fits screen when expands to full screen for
mobile responsiveness
 #180: Clicking outside causes unwanted behavior, so instead added
scrolling so that close button is always visible

* Remove unit

* #165: Add link to voyager gitbook

* chore(#155): Fixes (#211)

* #155: add backup to git ignore

* #155: Add node modules to ignore

* #155: Add a new library for pixel unit testing

* #155: Re-enable pixel unit test

* #155: Re-enable pixel unit test

* #177: Add 404 page and updated app router

* #177: Styling 404 page

* #155: updated search, testing and dv link

* #155: fix typos and update creation page to use curate

* #155: Add header to page not found

* #155: update unit test for page-not-found

* #155: Updated code owners

* #155: Update home link

* #205: Recommendation for regex fix for safari

* #176: Add ability to replace pq variable names with option selections

* #210: Add some of missing properties to pq dropdown

Still needs additional work. Dielectric constant won't return results due to not having units, breakdown strength is not directly curated as a property of the samples

* add sample metadata author and year (#221)

* add sample metadata author and year

* add nullish coalesing

* lint code

* add container to metadata and user computed sampleId

* #210: Make units optional in pq to allow unitless attributes

* Staging (#227)

* #220: UI fixes

* #220: styling changes

* #220: Add Curae home page and updated parameterized query

* #220: Add Curae home page and updated parameterized query

* #220: Add Curae home page and updated parameterized query

* #190: Update with require library

* #190: Remove placeholder files

* #190: Migrate globalmiddleware file to index.js

* #190: Add validators and global error handlers

* #190: Add schema and resolver for user and user management

* #190: Allow setting jwt expiration arg

* #190: Add image migration logic

* #190: Add pagination handler

* #190: Update eslint for rest services

* #190: Remove unused services

* #190: Update auth token source

* #190: linter fixes

* #190: Update auth token source

* #190: Update server file with additional services at startup

* #190: Add testing for graphql service pt1

* #190: update test import

* #190: Renamed graph resolver

* #190: Renamed graph resolver

* #190: removed unused import

* #190: Install ws package

* #155: Work in progress

* #220: Update styles for page opt

* #220: Added an icon to filter panel

* #220: Add parameterized query as tab and remove it as a button

* #220: Add image gallery to list of routes

* #220: create an image gallery components

* #220: test WIP

* #190: Refactor graphql and define user, api and image gallery schemas and resolver

* #190: Centralizing error for graphql operations

* #190: Adding appollo server and remove express-graphql

* 190: Modified restful tests

* #190: Update rest server config, middleware services and graphql init

* #190: Add xmldata model for xmldata collection

* #190: Add a new params to pass env var

* #190: Ignoring node_modules in docker

* #190: Ignore fuseki files

* #190: Update validations and add new login controller - wip

* WIP: frontend testing

* #190: Add proxy to rest environment variables

* #190: Rename imageContent method to file content

* #190: Renamed expected file param

* #190: Separated file controller from admin controller

* #190: Update import and added file routes handler

* #190: Renamed files

* #190: Add single image resolver and updated search resolvers

* #190: Add query pipelines directory and image query pipeline

* #190: Renamed file

* #190: New file route handler for file related services

* #190: Renamed files

* #190: Update image query with image keywords

* #220: Revert ES6 Syntax and Image Gallery WIP

* #190: Image gallery

* #190: update parameterized query page link

* #190: Linter fixes

* #190: update gql fetch policy

* #190: linter fixes

* #190: Linter error fixes

* #190: Fix failing tests

* #190: Remove path import from vueconfig

* #190: Remove optional chaining causing error

* #190: Bug fixes for search box

* #190: Remove output logs

* #190: Update base url

* #190: Add logic for image not found

* #190: Refactored image base URL - API

* #215: Work in progress

* #215: remove empty return and linter fixes

* #215: gallery unit test WIP

* #215: gallery unit test WIP

* #220: Add text reducer and image reducer to mixin

* #220: Update unit testing

* #220: Update docker image setup for UI

* #220: general UI optimization update

* #220: Linter fixes

* #220: Updated UI docker config

* #220: Re-install npm library

* #220: Update text description for null values

* fix (#235): Update Drawer with Curation (#240)

* #235: Add test for side drawer

* #235: Update side drawer with curation menu options

* #235: Linter fixes

* feat(#238): Contact us page api (#243)

* #238: Created a new mongodb schema for contact

* #238: Refactor error formatter to return error instead of throw

* #238: Add sinon lib for unit testing

* #238: Refactored to return error instead of throwing

* #238: Added unit testing for contact and refactored existing test

* #238: Added contact query/mutation and schema

* #241: MVP of metamaterial visualization tool

Important TD: data access is very inefficient right now and needs lots of work

- csv needs to be stored on rest, not frontend
- should be stored in local storage after initial pull
- needs geometry visualization

Currently mockup2 is the more up-to-date version

* #241: Add unit cell visualization for 10x10 and 50x50, fix screen resize

* Whyis Integration 1 of 8 (#246)

* #156: Add unwanted whyis files to gitignore

* #156: Add host port to client services

* #156: update env variable deployment and update readme file

* #156: Update environment variable readme file with additional info

* #156: Update readme with information for environment variable deployment

* #156: Update search url

* #156: Update api url

* #156: Disable websocket

* #156: temporary service disable

* #156: fix connection time

* #156: Update api call to use new service port environment variable

* #156: Update search url

* #156: empty commit to trigger new build

* #156: Pull upstream

* #156: Update readme on environment variable deployment

* WIP

* Switched back over to the whyis fuseki install.

* resolved conflict

* Got fuseki working with fast instance and summary views

* whyis integration 1 of 8

* Update CI

Co-authored-by: Jamie McCusker <mccusj2@rpi.edu>
Co-authored-by: Jamie McCusker <mccusker@gmail.com>

* #241: Combine mockups but separate vega specification

* #241: Remove mockup

* update CI (#247)

* fix(#236): Update image gallery search (#244)

* #236: Refactored unit test

* #236: Add search functionality to image gallery

* #236: Refactor image gallery

* #236: Update container image

* chore (#237): Add descriptions to existing query and mutation resolvers (#245)

* #237: Add descriptions to existing query and mutation resolvers

* #237: Update schema text descriptions

* #229: Initial UI for spreadsheet upload interface

* #241: Make metamaterial unit cell scale based on number of pixels

* Linting errors

* #229: dataset curation

* #241: Minor UI fixes, add loading spinner

* Fix linting error

* #241: Metamaterial viz feedback

- Add constituent material info under the unit cell image
- Temporarily switch to using Papaparse for csv to json conversion since my implementation was buggy

* #229: WIP

* #229: added a resolver for dataset upload

* #229: Add file upload and update data stream

* #229: dataset unit testing

* #250: UI fixes for demo

* #250: Remove click event

* #229 spreadsheet file interface (#249)

* #229: dataset curation

* #229: WIP

* #229: added a resolver for dataset upload

* #229: Add file upload and update data stream

* #229: dataset unit testing

* #250: UI fixes for demo

* #250: Remove click event

* #229: Updates to remove explorer home page latency

* #229: Test requires refactoring, passed sanity checks

Co-authored-by: Anya Wallace <aswallace98@gmail.com>

* #252: Add resolver for pixelated data and updated unit test

* #252: Validate user before allowing upload

* #252: Linter fixes

* #252: Re adding missing library

* feat(#252): Add resolver for pixelated data and updated unit test (#257)

* #252: Add resolver for pixelated data and updated unit test

* #252: Validate user before allowing upload

* #252: Linter fixes

* #252: Re adding missing library

* #241: Pixelated metamaterial viz updates

- Switch to using apollo graphql for data
- Temporarily remove color coding until datasets have label or title
- Temporarily limit to 10x10 OR 50x50, not both
- Add loading spinner, fix async behavior

* #241: Fix metamaterial viz unit tests

* Remove console.log

* #241: Combine timeouts and fix vega-lite warning

* Fix linting error

* #261: Fix MetaMine header styling and add viz link

* #261: Remove an unnecessary inline style

* Fix (#252): Updates (#263)

* #252: Updated graphql schema description

* #252: Add changes to automatically create storage at RESTAPI start up

* Fix(#252): Updates (#264)

* #252: Updated graphql schema description

* #252: Add changes to automatically create storage at RESTAPI start up

* #252: Refactored pixel data endpoint

* #252: Added a centralized log writer

* #252 updates (#265)

* #252: Updated graphql schema description

* #252: Add changes to automatically create storage at RESTAPI start up

* #252: Refactored pixel data endpoint

* #252: Added a centralized log writer

* #252: Refactor isAuth to remove file anytime auth fails

* #229: Spreadsheet upload draft

* Linting errors

* #229: Fixed datasetId mutation bug

* #229: update failing test

* Update decryptENVARFile.sh (#248)

Co-authored-by: tholulomo <94853475+tholulomo@users.noreply.github.com>

* [Hotfix] #229: Fixed datasetId mutation bug (#267)

* #229: Fixed datasetId mutation bug

* #229: update failing test

* #229: Fix error messsage

* #229: UI fixes; createdDatasetId working

* #229: XML Spreadsheet upload wip

400 error in createDataset file upload: `BAD_USER_INPUT`

* #229: Fix curation upload route issues (#268)

* #229: Fix curation upload route issues

* #229: Add validations for curation upload routes

* #229 fix upload (#269)

* #229: Fix curation upload route issues

* #229: Add validations for curation upload routes

* #229: Refactor uploadfile to remove middleware service

* #229: Pull upstream update

* Fix (#229):  Fix upload (#274)

* #229: Fix curation upload route issues

* #229: Add validations for curation upload routes

* #229: Refactor uploadfile to remove middleware service

* #229: Pull upstream update

* #272: Fix dialog box styling and typos

* #272: Rename class to reflect use case

* #272: Reduce scope of dialog icon styling

* #229: Bug fixes

* #272: Merge upstream fixes

* #229: Update Nodejs version

* #229: CI update

* #229: Update vue

* #229: Docker updates

Co-authored-by: Anya Wallace <aswallace98@gmail.com>

* #229: Update curation UI and merge dev

* #26 migrate contact us (#140)

* #26: change contact link from src to nm

* #26: create contactus page

* #26: apply lint

* #26: add contactus route to nm

* #26: add contact page tests

* #26: remove list style

* #26: add error validation html

* #26: add validation and onSubmit methods

* #26: add post method

* #26: add rendering tests for inputs

* #26: add platform flag

* delete event prevent default

* resolve router conflicts

* #26: add validation for platform

* #26: uncooment platform post data

* #30: add test for user inputs

* add spacing

* rename webpack code chunk name

* add contact query

* add apollo query

* add $ to input

Co-authored-by: tholulomo <94853475+tholulomo@users.noreply.github.com>

* #275: Separate apolloClient into module

* #275: Modify apolloClient to work with Vuex

* #275: Put apollo provider back where it was

* #275: Remove comments

* [Hotfix]: dataset curation updates

* [Hotfix]: Dataset curation updates (#278)

* [Hotfix]: dataset curation updates

* [Hotfix]: Deprecate fields that are no longer supported in GQL

* [Hotfix]: Update gql schema test

* #229: MVP spreadsheet upload UI

* #229: Fix component name and linting

* Merge branch 'develop' of https://github.com/Duke-MatSci/materialsmine into #229_spreadsheet_file_interface

* #229: Spreadsheet upload - split files and rename

* #229: Fix linting

* #229: Add unit tests for all supporting components

* #224: Update datavoyager link to use button (#281)

* [MINOR]: #279 contact page BE integration (#280)

* #279: Update form UI and added contact link to metamine page

* #279: Remove console.log statement

* #279: Integrated BE with contact page and updated unit test

* #229: Add unit test for spreadsheet upload page

* Undo accidental package-lock commit

* #229: Fix async calls in spreadsheet upload

* #207 material data filter search (#287)

* #207: Update unit test to run in band

* #207: Update to remove facet dialog for smaller screen

* #207: Add materials property to facet search

* #207, #212: Total count fix and added materials property fetch actions

* #207: Remove facet call at home page load

* #207: Refactor BE api to support materials property functionality on UI

* #207: Backend unit testing for admin controller apis

* #207: Added unit test for materials property and searchtableresult component

* #207: Linter and error fixes

* #207: Fix import typo

* #207: Upgrade node version

* #207: Refactor  name to

* :bug #207: Update CI node version

* 🐛 #207: Downgrade CI node version

* #229: Protect curation behind auth to prevent unwanted access

* Fix readme typo

Update readme ICO

* #289 snackbar for error handling (#290)

* #289: Implement snackbar two ways

* #289: Fix linting

* #289: Add Snackbar to App.vue

* #289: Add snackbar unit test and an example for calling from vuex

* #293 UI & BE Enhancements (#294)

* #293: Add coverage to gitignore and update readme icon

* #293: Fixed parameterized query UI inconsistency

* #293: Sticky header bug fix

* #293: Update unit test for viz page

* #293: Add new filter types and removed undefined from image response

* #293: Refactor auth middleware to use the centralized error writer

* 293: Add 404 controller to backend to manage unavailable routes and page not found

* #293: Fix mobile bug in viz page

* #293: Update to return authors as part of image response

* #293: 🔥 Image pipeline hotfix (#295)

* #292: Visualization gallery initial fixes

* #292: Add authors to image detail view, fix unit tests

* #292: Add current page field to pagination component

* #292: Add DOI to detail view, add links to search by doi and keyword

* #293: Image pipeline, image schema updates and refactoring (#298)

* CI: Fixes for build failure (#306)

* [MAJOR] #300: Shibb auth (#308)

* #300: Add names for each container

* 🔥[hotfix]: FE Bug fixes

* 🔥[hotfix]: Linter fixes

* #300: BE auth service setup

* #300: Refactor FE with auth flow implementation

* #300: Add auth service to proxy

* #300: Update docker environment variables

* #300: Linter fix

* #300: Refactor failing component and fix test failures

* #300: Fixed merged conflict

* #300: Add additional logger to auth service

* #300: Add additional logger to auth service

* #300: Remove unused logger from auth service

* #300: Remove unused logger from auth service

* #300: Update failed auth response

* #300: Refactor login button

* #300: Remove sparql query menu

* #300: Update logout actions

* #300: Update unit test assertions

* #300: Remove skipped unit test

* Feat(#309): Prod CICD (#310)

* feat(upgrade): #309 Add rest coverage report to gitignore

* feat(upgrade): #309 Setup coverage testing report for backend

* feat(core): #309 Add release versioning to CI pipeline

* feat(ci/cd): #309 Update CI pipeline for prod release

* feat(ci/cd): #309 Re-enabled image build and deployment for QA CI  environment

* fix(#292): modify page input and selection styling

make the page number input smaller to match surrounding labels,
move the selection to the same line as buttons and match styling

* feat(ci/cd): #309 Re-enabled whyis image to build only after pull request approval (#311)

---------

Co-authored-by: Anya Wallace <aswallace98@gmail.com>
Co-authored-by: Kevin Zuniga Cuellar <kzunigac@uvm.edu>
Co-authored-by: Rory Schadler <48921090+roryschadler@users.noreply.github.com>
Co-authored-by: Kevin Zuniga Cuellar <46791833+kevinzunigacuellar@users.noreply.github.com>
Co-authored-by: Sam Stouffer <samuellstouffer@gmail.com>
Co-authored-by: Jamie McCusker <mccusj2@rpi.edu>
Co-authored-by: Jamie McCusker <mccusker@gmail.com>
Co-authored-by: mjpalmeri <95506353+mjpalmeri@users.noreply.github.com>
Co-authored-by: bingyinh <32102865+bingyinh@users.noreply.github.com>
tholulomo added a commit that referenced this pull request Mar 1, 2023
* #109: Fix linter errors

* #109: Fix chart nested routing

* #109: Add error handling for chart uri not found

* #109: Fix linting errors

* #97: Initial commit of search header panel tabs

* #97: Add search bar to header

* #113: Refactor sample page queries

* #97: Fix tab styling, rearrange to match UI presentation

* #97: Remove top right search field

* #113: refactor sample page components

* #113: fix linting errors

* #97: Remove test content from tabs

* #97: Unit test for search header panel

* #113: first draft

* #113: Fix for error thrown in unit test

* Linting errors

* #97: Set up for explorer results state management

* Fix linting errors

* #113: add tests for state variables

* #113: remove page style

* #113: fix empty results display

* #66 templated view article (#112)

* #66 initial article commit

* #66: Refactor article page, fetch article metadata

Moved Article.vue, separated out into article.js to match file structure
of other pages. Progressed on Semantic Scholar API logic.

* #66: Refactor article.js

* #66: Refactor Article.vue

* #66: Add route for Article View

Added route to explorer for the article view. Moved DOI from component
prop to a watcher and computed property pair.

* #66: Refactor article.js to move logic to services

Moved article metadata retrieval logic to services. Unified all metadata
under one object for simpler reference.

* #66: First pass at article HTML view

First attempt at displaying all article metadata. Also added pre-push
linting fixes.

* #66: Add loading state awareness

* #66: Add article venue to retrieved fields

* #66: Second pass at article view HTML

Added basic loading indicator, refactored table to have better structure
(I think)

* #66: Basic CSS for article view

* #66: Removed erroneous comment

* #66: Fix scrolling bug

Scrolling tables also scrolled their titles, but not their header rows.
Isolated tables in their own div, maybe tables should be their own
component...

* #66: Unify dir structure, nest article page

Move explorer/article/services to modules/explorer/article/services,
clean up article now that it's nested properly (barring further change
to nest completely under sample). Refactor extra function from fetchJSON
into getArticleMetadata.

* #66: initial Article.vue testing commit

Includes mock for Semantic Scholar API calls and article.js whitespace
linting fix.

* #66: Refactored getArticleMetadata for easier mock

Mocking getArticleMetadata easily required moving it into an enclosing
object so that the manual mock could do the same, allowing it to access
properties. The manual mock was written following along with
[jest's manual mock](https://jestjs.io/docs/manual-mocks).

The mock of the resulting getArticle also provides a stub of the
SemanticScholar API response as of 2/2/22, for reference and testing.

* #66: Write tests for Article.vue

Wrote tests of DOI loading, reloading; article data loading; API
failure. Added classes to article.html items to distinguish them and
allow the tests to refer to them. Updated article.js to use the new
articleMetadata.js and fixed bugs that appeared in testing.

* #66: Fix linting errors

* #66: Write tests for module articleMetadata.js

Updated articleMetadata mock to include raw and cleaned mock data, and
wrote tests of the fetch handler and response cleaning routines. Fixed
issues in articleMetadata.js that came up in testing.

* #66: Refactored articleMetadata.js to better track API errors

Refactored .get function to remove repeated code and allow API calls to
occur in parallel. Rewrote how internal fetch returns in order to pass
errors (and success codes) in API call along to caller. Updated mock
data to include mock version of success codes

* #66: Updated tests to match

Also added missing response codes to mock data, and fixed citation and
reference call status not being passed through

* #66: Updated Article.vue to display errors

Article view now takes advantage of newly passed API errors to inform
the user that an error has occurred. This could be expanded on

* #66: Linting fixes

* #66: Update test to use createWrapper

Replaced localVue, shallowMount with createWrapper for consistency.
Added test to ensure error message is displayed to user.

* #66: Write comments, refactor error storage

* #66: Write jsdoc-style function comments

Documented functions, removed unused mock response function, and
refactored testing slightly to remove repetition.

* #66: Move article to its own route

* #25: Remove console.logs, add reusable spinner

* #113: remove console.logs and add index key

* #113: fix linting errors

* #123: Consolidate exports in sparql.js

* #123: Modify sparql capitalization to match existing pattern

* #28: Link MM/teams to teams page (#122)

* #28: Link MM/teams to teams page

* #28: Update reference to about, how, news

* #123: Merge parseSparql and transformSparqlData into a single function

* #61: Add gallery page

* remove duplicate spinner component

* remove redundant pagination styles

* fix lint errors

* Remove class that hides pagination buttons

* remove unneccessary sass imports

* query actual charts in gallery view

* remove console.log in test

* #130: Linting fix (#131)

* feat(#100): knowledge graph rest endpoint (#138)

* #100: Add logger service

* #100: Updated secrets default and increased token validity to 8hours

* #100: testing script for isInternal middleware service

* #100: Add isInternal middleware service to validate internal calls

* #100: Re-usable logger service for unit test

* #100: Moved logger service to initialize first

* #100: renamed filestorage directory and added a method to ensure unique file names

* #100: Updated test with log service

* #100: Added unique name generator to package.json

* #100: Added knowledge graph endpoint method

* #100: Add KG wrapper route to REST service

* #100: Append KG route to server initialization

* #100: Re-installed app

* #43: Add fuseki service to container

* #43: Fuseki volume mount

* #43: Add fuseki critical files to ignore

* #100: Updated nginx to use a preferred version

* #100: File renaming and linter error fixes

* #100: Update environment variables

* #25 migrate tools (#128)

* #25: initial ModuleTools commit

Replaced vuetify elements with vue-material and simplified layout.

* #25: Refactored module tools page to use store

Moved module tools data into store, refactored tool card into component
for reuse in simulationTools as well.

* #25: Initial simulation tools commit

Changed module tools getter name to avoid overlap, added simulation
tools store data and getter, added simulation tools assets.

* #25: Linting fix

* #25: Write tests for simulation, module, ToolCard

* #25: Initial chemprops commit

Rewrote chemProps.html to use `vue-material`, removed `Axios` and
commented out Smiles.vue and Auth.js in chemProps.js. Still need to
implement SMILES API, so that chemProps form works -- future ticket.

* #25: Initial chempropsapitoken commit

Missing Duke shibboleth authorization and chemprops in general, so can't
implement the api token functionality just yet.

* #25: fix typo, switch to md-layout

* #25: Initial csvPlotter commit

File upload and display works, but no tests have been written yet.
Includes a new dependency, `d3`.

* #25: Fix typo

* #25: Fix typo in router path

* #25: Create reusable ReferenceContainer component

* #25: Initial MCR tool commit

Migrated MCR tool homepage over, factoring out the references into the
new reusable container and migrating the tool descriptions into reusable
ToolCard components

* #25: Rename state getters to avoid overlap

Also added ReferenceContainer to chemProps

* #25: Make mcrTools plural

* #25: Replace v-bind with shorthand where possible

* #25: Linting fix

* #25: Added support for external links to ToolCard

* #25: Initial dynamfit commit

Same deal as other initial commits. New store module for references,
migrating vuetify tags to vue-material tags. Added JobMgr.js module,
which dynamfit uses. Changed Axios implementation to fetch
implementation, mocked auth module as it is not implemented yet.

* #25: Fix bug in ToolCard internal link checker

Using `new URL()` to test links threw errors (expected) but jest didn't
like that. Replaced with a simple externalLink flag that defaults to
false unless the store explicitly sets it true.

* #25: Fix error thrown by CSV Plotter when mounting, removing data

CSV Plotter was trying to display undefined data. Fixed that, in the
process also fixed (mostly) removing data. Some style changes too

* #25: Fixed CSV Plotter drag and drop

* #25: Iterate on csv plotter layout, drag ability

Entire "drag file here" section now works as expected. Line spacing
leaves something to be desired, but I'll come back to it once I
understand the `vue-material` syntax better. Prettified the HTML too.

* #25: Initial Dynamfit addons commit

* #25: Migrate dynamfit example pages

Previously we had three separate files for dynamfit and its two pages of
tutorial, which were all very similar except for a few instructions,
some disabled fields, and some extra images. I flattened them into one
file.

* #25: package.json auto-alphabetized

* #25: Migrate dynamfit result page

Job Manager still not working, that's next. Once it's working, it should
provide the content for this page.

* #25: Fix/catch dynamfit mounting errors

* #25: Simplify button link

* #25: Update chemprops to use the new dialog box, and prep for SMILES

* #25: Initial SMILES commit

Functionality depends on the API being up and running, to return
results.

* #25: Move LineChart to components

* #25: Clear input element, chart on file remove

By tying the LineChart key to the filename, removing the file using the
button also resets the LineChart.

* #25: Refactor store to simplify tools

Half of the refactor is in this commit, flattening the `tools/` subdir
as it seems unnecessary. moduleTools store will be added next.

* #25: Create unified tools store

Every tool is now stored consistently. Dynamfit was moved from its own
directory into this one and updated to store its own display info.
Getters are a first guess at what will work, debugging that will happen
once this store migration is complete.

* #25: Create unified toolset store

Store toolsets as supersets of tools and other toolsets. Again, getters
are a first pass, and will be debugged next.

* #25: Wrote toolset store for moduletools

Also added a pageContent getter and updated MCRTools variable names to
match standard

* #25: Rename moduleTools to tools in preparation

Will eventually move simulationTools under the tools store umbrella,
getting ready for that now so I don't have to rename it everywhere

* #25: Added missing info to tools, getters, index

Some tools were missing namespace flags, some missing image files.
One getter needed updating to include external link flag and image
filepath, and Dynamfit needed to be added to the index.

* #25: Fixed bug in calling rootGetters

I had gotten the syntax for calling getters wrong.

* #25: Nest tools under nanomine, not metamine

* #25: Create reusable tool and toolset pages

* #25: Fix typos

* #25: move link nesting to getters for easy changes

* #25: Fix toolset page not reloading on route change

Also add base component for toolsets, tools

* #25: Rolling back MCR tool work to revisit later

* #25: Nest tools to /nm/tools, update mentions

* #25: Move simulation tools under toolsettemplate

* #25: Fix references not showing/erroring when empty

* #25: Move dynamfit to tools root, remove mcr home

MCR homepage is now handled by toolsettemplate

* #25: update webpack chunk names

* #25: fix typo

* #25: tag auth mocks more obviously

* #25: Fix typos

* #25: Move references to separate file

Easier to remove duplicates from a reference list if you can generate
the set of all references in a repeatable way. By referring to
references with DOI/ISBN numbers, we set the stage for pulling
reference info from semantic scholar as well.

* #25: Wrote ReferenceContainer unit test

Also updated ToolCard unit test to test for link rendering correctly.

* #25: Remove old tests for moduletools, simulation

Those pages are now handled by ToolSetTemplate, no need for their own
specs.

* #25: Write unit test for LineChart

Had to add a moduleNameMapper to the jest config in order for it to
recognize `d3`, which LineChart uses to draw the graph.

* #25: Further refactor reference handling

Move references to ReferenceContainer store module, for easier
replacement later with a SemanticScholar API call or other form of
reference checking. Use DOIs (or ISBN in one case so far) as key.

* #25: Initial SmilesCanvas unit test

For some reason, SmilesCanvas is not able to reach the same document as
the jest harness is providing the test, so it errors out when trying to
render the SMILES output. Haven't been able to debug, this is a
placeholder test that I'll come back to when I'm able to figure it out.

* #25: Move CanvasWrapper into SmilesCanvas

CanvasWrapper is not used anywhere else in the old repo -- pulled its
functionality (not very much) into SmilesCanvas.

* #25: Write ToolSetTemplate unit test

* #25: Write initial Dynamfit unit test

Return to this once the Dynamfit/JobMgr API is completed to write tests
for the form logic

* #25: Write initial DynamfitResult unit test

Return to this once the Dynamfit/JobMgr API is completed to write tests
for the API response logic

* #25: Remove skipped unit test

* #25: Fix bug in testing md-button with `to` attr

`RouterLinkStub` (used in `createWrapper` for jest tests) doesn't play
nicely with the `md-button` implementation of `router-link`.
(`md-button` is using deprecated attributes of `router-link`, and is
throwing console.warnings.) So I wrapped `md-button`s in `router-link`s
explicitly, which solved the testing bug too.

* #25: attempt at spacing toolcards

* #25: Remove broken tests

Using RouterLinkStub in createWrapper breaks these tests, which aren't
testing our code anyway so it's not a big deal.

* #25: Move tools that won't use ToolTemplate out

Prep for moving all the tools from state into their own components, more
like they were stored in previous repo.

* #25: Move tools from state into components

Each tool now has its own component, instead of its own state module as
discussed with Tolu. Each component uses the ToolTemplate component for
display, which has two separate views: a card view for ToolSets, and
a space for an upcoming tool instruction view for the Tool itself.

* #25: Move ToolSets from state to components

Each toolset now has its own component, instead of its own state module
as discussed with Tolu. Each component uses the ToolSetTemplate
component for display, which like the ToolTemplate has two views, a card
view and a toolset page view. This does involve some recursive
components which seem to be working fine.

* #25: Fix ToolSetTemplate Test

ToolSetTemplate no longer includes References (they're only accessible
to the Tools that cite them), so the ReferenceContainer test was
removed. It also no longer calls store getters to retrieve card content.

* #25: Fix filepath typo

* #25: Cleaning up old files

Removed commented out code and console.logs, and parameterized a
function

* #25: Moved global suppressing to test-setup.js

Set up `test-setup.js` to be run before each test file is executed.
Moved the suppressing of global.console.log and global.fetch to there,
rather than repeating it in every test.

* Updated dockerfile to use released whyis.

* #144: Data voyager initial working migration

* #24 migrate upload (#147)

* #24: Initial XML Uploader commit

Converted vuetify to vue-material, added references to the reference
store.

* #24: Fix old references to xml-uploader

* #24: Remove mock dataset from testing

* #24: Write unit test for dataset viewer

* #24: Rename DatasetCreateOrSelect to DatasetViewer

* #24: Updated dialog rendering, removed autologin

* #132 write slot driven templates (#142)

* #132: Add MCR specific tool page

Renamed tool template to specify that it is MCR tool specific -- at
least given the tools we've added so far. Added a dependency for
EditImage.vue, a component of ImageUpload.vue that is itself a component
of MCRToolTemplate.vue. Removed the old MCR homepage.

Added a pageContent getter for tools as well.

* #132: tag auth mock more obviously

* #132: Use MCRToolTemplate in all tools, add socket

Job Manager uses vue-socket.io -- copied config from old repo and added
this and socket.io-client as well. Updated MCRToolTemplate to account
for move from state to components -- added card, moved reference
container.

* #132: Remove old ToolTemplate

* #132: Update MCRToolTemplate to use tool prop

Also add spinner for loading results

* #132: Fix typos

* #132: Add optional mocks to test wrapper

`$socket` needed to be mocked for some tests, added that functionality
to `createWrapper`.

* #132: Write Tool Card that uses slots, not props

* #132: Move major tool page content to slots

Not all content could be moved, as some is needed for job management,
but major display content was turned into slots for template HTML.

* #132: Move Toolset content from data to slots

* #132: Wrote tests of new templates

Also updated the wrapper function to allow for user-defined stubs

* #132: Remove replacement-tool-page slot

Was created for Dynamfit, ChemProps, but those really should be separate
components, so I removed the slot.

* #132: Make tool cards full-width

* #132: Convert Module Tools page to new system

* #133: Convert Binarization tools and homepage

Moved tool data from the `data` field to slots in the tool page template
and moved the homepage data from `data` to the toolset page template
slots.

* #133: Fix seeming typo in ImageUpload.vue

I may be wrong, but the way the selects prop is used in the template
seems like it should be an Array, not an Object. All the selects fields
in each tool are Arrays as far as I remember. Certainly for the
binarization tools.

* #134: Convert Characterization tools

* #135: Convert reconstruction tools

* #136: Convert Intelligent characterization tool

* #139: Remove ChemProps, Dynamfit from template

ChemProps and Dynamfit rewrite all the job management code already, so
they should really be separate components.

* #139: Wrap lifecycle events in `this.card` checks

If a component is being rendered as a card, it doesn't need to check for
authorization or commit its header. Also removed unused minWidth param
from renderDialog.

* #132: Convert MCR homepage

* #132: Remove unnecessary index files

ToolSetTemplate no longer needs to keep all tools as components, so the
index files that centralized them were removed.

* #132: Tweak ToolCard size, layout

* #132: Write test for MCRToolTemplate

* #132: Remove typos and testing code

* #132: Attempt at cleaning up scoped styles

* #132: Migrate SimulationTools, Polymerizer

Add fallback content for toolset pages, if description is not present.

* #132: Change submit button implementation

You can't listen to events on slots, so the button was moved to the
tool template, and the slot only provides the button text now.

* #132: Typo in styles import

* #132: Fix MathML syntax

* #132: Move tool, toolset routes to own module

* #132: Replace MathML with MathJax

Includes a CDN script tag in index.html, and a new component, but now
math will render in all browsers.

* #132: Combine tool scss files into one

* #132: Fix style imports for new consolidated file

* #132: Updated vue-advanced-cropper version

* #132: Wrap styles to avoid overflow

* #29 migrate meta mine tools (#148)

* #29: Initial PixelUnit commit

Converted all vuetify to vue-material, cleaned up JS a little bit. Had
to replace the static file reference with a link to the live website's
version of the file, as we don't yet have a way to serve static files
that I know of.

* #29: Update PixelUnit route

* #29: Remove console.logs

* #29: Write template unit test for PixelUnit

Once file storage is implemented, the config file can be loaded for the
test as well, which will allow testing of the page's function

* #29: Remove commented console.logs

* #29: Comment out test rather than skip it

* #29: Fix likely location of CI test fail

Added dummy catch block to the promise I think is causing the issue.

* #29: Remove PixelUnit test from test suite

Didn't completely remove it, so that it can be tackled in a future TD
ticket.

* #29: Move scoped styles to _tools.scss

* #29: Wrap styles to avoid overflow

* #125 refactor sparql js (#150)

* #125: Throw errors instead of failing quietly

* #125: Add combined query and parse function

Could export it as the default if we want? No need to, of course.

* #125: Throw error on response failure

* #125: Simplify rethrowing errors

* #144: Fix Data Voyager styling and navBack buttons

* #144: Fixes to DataVoyager for Jest

* #144: Data Voyager component unit tests

* #144: Replace uri with chartId

* fix(#140): general technical debt (#152)

* #126: add functions for chart id resolution

* #126 remove scoped styles

* Initial commit #98

Currently using duplicated/modified code from Gallery.
Added initial standard styling for #114, #115, #118

* #98: Add styling for sample images #115

* #98: Minor styling and linting fixes

* #98: Start developing state management for explorer results

* #98: Fix linting errors

* #140: app scroll behaviour fixes

* #140: Ignoring mongodump folder

* #140: Update mongo init file to create indexes

* #50: Restore shell script replaced with syncdb.sh

* #140: Mongodb restore and sync script

* #140: Add syncdb shell to script

* #140: Add Elastic search to docker compose services

* #140: Add Elastic search to docker compose services

* #140: Add ES config payload

* #140: Add article mappings payload

* #140: td - under dev

* #140: Fix conflicts

* #140: pre-checks commit

* #140: pre-checks commit -2

* #140: pre-check temp udates

* #140: Update docker compose file  port mappings

* #140: Remove dependency and added environment variables

* #140: Updating frontend nginx settings

* #140: Updating frontend nginx settings

* #140: Redirect all 50x error back to index page

* #140: Rest services update, test fixes, and deployment updates

* #140: Changed logger directory

* #140: Linter fixes

* #140: typo fixes

Co-authored-by: Sam Stouffer <samuellstouffer@gmail.com>
Co-authored-by: Anya Wallace <aswallace98@gmail.com>

* #144: Fix chart uri to match gallery implementation

* We are only using the materialsmine ontology now

* #156: Updating icos (#157)

* #156: Updating icos

* #150: Upgraded node version

* #150: Re-install node module after upgrade

* #150: Blocked out fuseki standalone service implementation

* #150: Upgraded node version on BE

* #150: Update to specific version of body-parser

* #156: Updated log file creation

* #156: Updated ES to log pings

* #158: fix undefined data return from sparql

* #145: add parameterized query page

* #145: remove console logs from param. query apge

* #145: fix readonly prop warning, add readonly prop functionality to yasqe

* #145: fix query template syntax error

* #162: Fix overlap in tool styling

* #145: adjust VALUES block insertion be inside WHERE

* #145: require manual refresh to run param query

* #145: use router.back for datavoyager back button

* #145: run query when autorefresh turned on

* #161: Fix vega chart responsiveness

* Add menu item MRS2022 to PageHeader.vue

* match the styling of other menu links

* fix #163: z-index dropdown

* #161: Uncommented and added curly brace to match previous commits

* #165: Add Data Voyager tutorial video to how to page

* #165: Initial draft of DV instructions

* #165: Fix linting error

* fix(#156): Update ico fix (#169)

* #156: Add unwanted whyis files to gitignore

* #156: Add host port to client services

* #156: update env variable deployment and update readme file

* #156: Update environment variable readme file with additional info

* #156: Update readme with information for environment variable deployment

* #156: Update search url

* #156: Update api url

* #156: Disable websocket

* #156: temporary service disable

* #156: fix connection time

* #156: Update api call to use new service port environment variable

* #156: Update search url

* #156: empty commit to trigger new build

* #156: Pull upstream

* #156: Update readme on environment variable deployment

* #175: add two-property parameterized query

* #165: Switch instructions to accordion style instead of button

* Fix linting errors

* #165: Minor v-bind error fix

* #164: fix visualize and Module Tools routes

* #164: replace nanomine drawer with generic drawer

* #165: Open DV paper link in new tab

* #179: Fix dropdown links for galleries

* #160 #180 Dialog box styling fixes

 #160: Dialog box now fits screen when expands to full screen for
mobile responsiveness
 #180: Clicking outside causes unwanted behavior, so instead added
scrolling so that close button is always visible

* Remove unit

* #165: Add link to voyager gitbook

* chore(#155): Fixes (#211)

* #155: add backup to git ignore

* #155: Add node modules to ignore

* #155: Add a new library for pixel unit testing

* #155: Re-enable pixel unit test

* #155: Re-enable pixel unit test

* #177: Add 404 page and updated app router

* #177: Styling 404 page

* #155: updated search, testing and dv link

* #155: fix typos and update creation page to use curate

* #155: Add header to page not found

* #155: update unit test for page-not-found

* #155: Updated code owners

* #155: Update home link

* #205: Recommendation for regex fix for safari

* #176: Add ability to replace pq variable names with option selections

* #210: Add some of missing properties to pq dropdown

Still needs additional work. Dielectric constant won't return results due to not having units, breakdown strength is not directly curated as a property of the samples

* add sample metadata author and year (#221)

* add sample metadata author and year

* add nullish coalesing

* lint code

* add container to metadata and user computed sampleId

* #210: Make units optional in pq to allow unitless attributes

* Staging (#227)

* #220: UI fixes

* #220: styling changes

* #220: Add Curae home page and updated parameterized query

* #220: Add Curae home page and updated parameterized query

* #220: Add Curae home page and updated parameterized query

* #190: Update with require library

* #190: Remove placeholder files

* #190: Migrate globalmiddleware file to index.js

* #190: Add validators and global error handlers

* #190: Add schema and resolver for user and user management

* #190: Allow setting jwt expiration arg

* #190: Add image migration logic

* #190: Add pagination handler

* #190: Update eslint for rest services

* #190: Remove unused services

* #190: Update auth token source

* #190: linter fixes

* #190: Update auth token source

* #190: Update server file with additional services at startup

* #190: Add testing for graphql service pt1

* #190: update test import

* #190: Renamed graph resolver

* #190: Renamed graph resolver

* #190: removed unused import

* #190: Install ws package

* #155: Work in progress

* #220: Update styles for page opt

* #220: Added an icon to filter panel

* #220: Add parameterized query as tab and remove it as a button

* #220: Add image gallery to list of routes

* #220: create an image gallery components

* #220: test WIP

* #190: Refactor graphql and define user, api and image gallery schemas and resolver

* #190: Centralizing error for graphql operations

* #190: Adding appollo server and remove express-graphql

* 190: Modified restful tests

* #190: Update rest server config, middleware services and graphql init

* #190: Add xmldata model for xmldata collection

* #190: Add a new params to pass env var

* #190: Ignoring node_modules in docker

* #190: Ignore fuseki files

* #190: Update validations and add new login controller - wip

* WIP: frontend testing

* #190: Add proxy to rest environment variables

* #190: Rename imageContent method to file content

* #190: Renamed expected file param

* #190: Separated file controller from admin controller

* #190: Update import and added file routes handler

* #190: Renamed files

* #190: Add single image resolver and updated search resolvers

* #190: Add query pipelines directory and image query pipeline

* #190: Renamed file

* #190: New file route handler for file related services

* #190: Renamed files

* #190: Update image query with image keywords

* #220: Revert ES6 Syntax and Image Gallery WIP

* #190: Image gallery

* #190: update parameterized query page link

* #190: Linter fixes

* #190: update gql fetch policy

* #190: linter fixes

* #190: Linter error fixes

* #190: Fix failing tests

* #190: Remove path import from vueconfig

* #190: Remove optional chaining causing error

* #190: Bug fixes for search box

* #190: Remove output logs

* #190: Update base url

* #190: Add logic for image not found

* #190: Refactored image base URL - API

* #215: Work in progress

* #215: remove empty return and linter fixes

* #215: gallery unit test WIP

* #215: gallery unit test WIP

* #220: Add text reducer and image reducer to mixin

* #220: Update unit testing

* #220: Update docker image setup for UI

* #220: general UI optimization update

* #220: Linter fixes

* #220: Updated UI docker config

* #220: Re-install npm library

* #220: Update text description for null values

* fix (#235): Update Drawer with Curation (#240)

* #235: Add test for side drawer

* #235: Update side drawer with curation menu options

* #235: Linter fixes

* feat(#238): Contact us page api (#243)

* #238: Created a new mongodb schema for contact

* #238: Refactor error formatter to return error instead of throw

* #238: Add sinon lib for unit testing

* #238: Refactored to return error instead of throwing

* #238: Added unit testing for contact and refactored existing test

* #238: Added contact query/mutation and schema

* #241: MVP of metamaterial visualization tool

Important TD: data access is very inefficient right now and needs lots of work

- csv needs to be stored on rest, not frontend
- should be stored in local storage after initial pull
- needs geometry visualization

Currently mockup2 is the more up-to-date version

* #241: Add unit cell visualization for 10x10 and 50x50, fix screen resize

* Whyis Integration 1 of 8 (#246)

* #156: Add unwanted whyis files to gitignore

* #156: Add host port to client services

* #156: update env variable deployment and update readme file

* #156: Update environment variable readme file with additional info

* #156: Update readme with information for environment variable deployment

* #156: Update search url

* #156: Update api url

* #156: Disable websocket

* #156: temporary service disable

* #156: fix connection time

* #156: Update api call to use new service port environment variable

* #156: Update search url

* #156: empty commit to trigger new build

* #156: Pull upstream

* #156: Update readme on environment variable deployment

* WIP

* Switched back over to the whyis fuseki install.

* resolved conflict

* Got fuseki working with fast instance and summary views

* whyis integration 1 of 8

* Update CI

Co-authored-by: Jamie McCusker <mccusj2@rpi.edu>
Co-authored-by: Jamie McCusker <mccusker@gmail.com>

* #241: Combine mockups but separate vega specification

* #241: Remove mockup

* update CI (#247)

* fix(#236): Update image gallery search (#244)

* #236: Refactored unit test

* #236: Add search functionality to image gallery

* #236: Refactor image gallery

* #236: Update container image

* chore (#237): Add descriptions to existing query and mutation resolvers (#245)

* #237: Add descriptions to existing query and mutation resolvers

* #237: Update schema text descriptions

* #229: Initial UI for spreadsheet upload interface

* #241: Make metamaterial unit cell scale based on number of pixels

* Linting errors

* #229: dataset curation

* #241: Minor UI fixes, add loading spinner

* Fix linting error

* #241: Metamaterial viz feedback

- Add constituent material info under the unit cell image
- Temporarily switch to using Papaparse for csv to json conversion since my implementation was buggy

* #229: WIP

* #229: added a resolver for dataset upload

* #229: Add file upload and update data stream

* #229: dataset unit testing

* #250: UI fixes for demo

* #250: Remove click event

* #229 spreadsheet file interface (#249)

* #229: dataset curation

* #229: WIP

* #229: added a resolver for dataset upload

* #229: Add file upload and update data stream

* #229: dataset unit testing

* #250: UI fixes for demo

* #250: Remove click event

* #229: Updates to remove explorer home page latency

* #229: Test requires refactoring, passed sanity checks

Co-authored-by: Anya Wallace <aswallace98@gmail.com>

* #252: Add resolver for pixelated data and updated unit test

* #252: Validate user before allowing upload

* #252: Linter fixes

* #252: Re adding missing library

* feat(#252): Add resolver for pixelated data and updated unit test (#257)

* #252: Add resolver for pixelated data and updated unit test

* #252: Validate user before allowing upload

* #252: Linter fixes

* #252: Re adding missing library

* #241: Pixelated metamaterial viz updates

- Switch to using apollo graphql for data
- Temporarily remove color coding until datasets have label or title
- Temporarily limit to 10x10 OR 50x50, not both
- Add loading spinner, fix async behavior

* #241: Fix metamaterial viz unit tests

* Remove console.log

* #241: Combine timeouts and fix vega-lite warning

* Fix linting error

* #261: Fix MetaMine header styling and add viz link

* #261: Remove an unnecessary inline style

* Fix (#252): Updates (#263)

* #252: Updated graphql schema description

* #252: Add changes to automatically create storage at RESTAPI start up

* Fix(#252): Updates (#264)

* #252: Updated graphql schema description

* #252: Add changes to automatically create storage at RESTAPI start up

* #252: Refactored pixel data endpoint

* #252: Added a centralized log writer

* #252 updates (#265)

* #252: Updated graphql schema description

* #252: Add changes to automatically create storage at RESTAPI start up

* #252: Refactored pixel data endpoint

* #252: Added a centralized log writer

* #252: Refactor isAuth to remove file anytime auth fails

* #229: Spreadsheet upload draft

* Linting errors

* #229: Fixed datasetId mutation bug

* #229: update failing test

* Update decryptENVARFile.sh (#248)

Co-authored-by: tholulomo <94853475+tholulomo@users.noreply.github.com>

* [Hotfix] #229: Fixed datasetId mutation bug (#267)

* #229: Fixed datasetId mutation bug

* #229: update failing test

* #229: Fix error messsage

* #229: UI fixes; createdDatasetId working

* #229: XML Spreadsheet upload wip

400 error in createDataset file upload: `BAD_USER_INPUT`

* #229: Fix curation upload route issues (#268)

* #229: Fix curation upload route issues

* #229: Add validations for curation upload routes

* #229 fix upload (#269)

* #229: Fix curation upload route issues

* #229: Add validations for curation upload routes

* #229: Refactor uploadfile to remove middleware service

* #229: Pull upstream update

* Fix (#229):  Fix upload (#274)

* #229: Fix curation upload route issues

* #229: Add validations for curation upload routes

* #229: Refactor uploadfile to remove middleware service

* #229: Pull upstream update

* #272: Fix dialog box styling and typos

* #272: Rename class to reflect use case

* #272: Reduce scope of dialog icon styling

* #229: Bug fixes

* #272: Merge upstream fixes

* #229: Update Nodejs version

* #229: CI update

* #229: Update vue

* #229: Docker updates

Co-authored-by: Anya Wallace <aswallace98@gmail.com>

* #229: Update curation UI and merge dev

* #26 migrate contact us (#140)

* #26: change contact link from src to nm

* #26: create contactus page

* #26: apply lint

* #26: add contactus route to nm

* #26: add contact page tests

* #26: remove list style

* #26: add error validation html

* #26: add validation and onSubmit methods

* #26: add post method

* #26: add rendering tests for inputs

* #26: add platform flag

* delete event prevent default

* resolve router conflicts

* #26: add validation for platform

* #26: uncooment platform post data

* #30: add test for user inputs

* add spacing

* rename webpack code chunk name

* add contact query

* add apollo query

* add $ to input

Co-authored-by: tholulomo <94853475+tholulomo@users.noreply.github.com>

* #275: Separate apolloClient into module

* #275: Modify apolloClient to work with Vuex

* #275: Put apollo provider back where it was

* #275: Remove comments

* [Hotfix]: dataset curation updates

* [Hotfix]: Dataset curation updates (#278)

* [Hotfix]: dataset curation updates

* [Hotfix]: Deprecate fields that are no longer supported in GQL

* [Hotfix]: Update gql schema test

* #229: MVP spreadsheet upload UI

* #229: Fix component name and linting

* Merge branch 'develop' of https://github.com/Duke-MatSci/materialsmine into #229_spreadsheet_file_interface

* #229: Spreadsheet upload - split files and rename

* #229: Fix linting

* #229: Add unit tests for all supporting components

* #224: Update datavoyager link to use button (#281)

* [MINOR]: #279 contact page BE integration (#280)

* #279: Update form UI and added contact link to metamine page

* #279: Remove console.log statement

* #279: Integrated BE with contact page and updated unit test

* #229: Add unit test for spreadsheet upload page

* Undo accidental package-lock commit

* #229: Fix async calls in spreadsheet upload

* #207 material data filter search (#287)

* #207: Update unit test to run in band

* #207: Update to remove facet dialog for smaller screen

* #207: Add materials property to facet search

* #207, #212: Total count fix and added materials property fetch actions

* #207: Remove facet call at home page load

* #207: Refactor BE api to support materials property functionality on UI

* #207: Backend unit testing for admin controller apis

* #207: Added unit test for materials property and searchtableresult component

* #207: Linter and error fixes

* #207: Fix import typo

* #207: Upgrade node version

* #207: Refactor  name to

* :bug #207: Update CI node version

* 🐛 #207: Downgrade CI node version

* #229: Protect curation behind auth to prevent unwanted access

* Fix readme typo

Update readme ICO

* #289 snackbar for error handling (#290)

* #289: Implement snackbar two ways

* #289: Fix linting

* #289: Add Snackbar to App.vue

* #289: Add snackbar unit test and an example for calling from vuex

* #293 UI & BE Enhancements (#294)

* #293: Add coverage to gitignore and update readme icon

* #293: Fixed parameterized query UI inconsistency

* #293: Sticky header bug fix

* #293: Update unit test for viz page

* #293: Add new filter types and removed undefined from image response

* #293: Refactor auth middleware to use the centralized error writer

* 293: Add 404 controller to backend to manage unavailable routes and page not found

* #293: Fix mobile bug in viz page

* #293: Update to return authors as part of image response

* #293: 🔥 Image pipeline hotfix (#295)

* #292: Visualization gallery initial fixes

* #292: Add authors to image detail view, fix unit tests

* #292: Add current page field to pagination component

* #292: Add DOI to detail view, add links to search by doi and keyword

* #293: Image pipeline, image schema updates and refactoring (#298)

* CI: Fixes for build failure (#306)

* [MAJOR] #300: Shibb auth (#308)

* #300: Add names for each container

* 🔥[hotfix]: FE Bug fixes

* 🔥[hotfix]: Linter fixes

* #300: BE auth service setup

* #300: Refactor FE with auth flow implementation

* #300: Add auth service to proxy

* #300: Update docker environment variables

* #300: Linter fix

* #300: Refactor failing component and fix test failures

* #300: Fixed merged conflict

* #300: Add additional logger to auth service

* #300: Add additional logger to auth service

* #300: Remove unused logger from auth service

* #300: Remove unused logger from auth service

* #300: Update failed auth response

* #300: Refactor login button

* #300: Remove sparql query menu

* #300: Update logout actions

* #300: Update unit test assertions

* #300: Remove skipped unit test

* Feat(#309): Prod CICD (#310)

* feat(upgrade): #309 Add rest coverage report to gitignore

* feat(upgrade): #309 Setup coverage testing report for backend

* feat(core): #309 Add release versioning to CI pipeline

* feat(ci/cd): #309 Update CI pipeline for prod release

* feat(ci/cd): #309 Re-enabled image build and deployment for QA CI  environment

* fix(#292): modify page input and selection styling

make the page number input smaller to match surrounding labels,
move the selection to the same line as buttons and match styling

* feat(ci/cd): #309 Re-enabled whyis image to build only after pull request approval (#311)

---------

Co-authored-by: Anya Wallace <aswallace98@gmail.com>
Co-authored-by: Kevin Zuniga Cuellar <kzunigac@uvm.edu>
Co-authored-by: Rory Schadler <48921090+roryschadler@users.noreply.github.com>
Co-authored-by: Kevin Zuniga Cuellar <46791833+kevinzunigacuellar@users.noreply.github.com>
Co-authored-by: Sam Stouffer <samuellstouffer@gmail.com>
Co-authored-by: Jamie McCusker <mccusj2@rpi.edu>
Co-authored-by: Jamie McCusker <mccusker@gmail.com>
Co-authored-by: mjpalmeri <95506353+mjpalmeri@users.noreply.github.com>
Co-authored-by: bingyinh <32102865+bingyinh@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
3 participants