umn-latis / elevator-ui Goto Github PK
View Code? Open in Web Editor NEWUI for Elevator, a flexible digital asset repository
UI for Elevator, a flexible digital asset repository
Add support for rendering content pages in ElevatorUI, like: https://dcl.elevator.umn.edu/page/view/1
This will consume a json endpoint from UMN-LATIS/elevator#113
Modals are showing up as very small for some reason when deployed to dev.
Also does not show any derivatives with non-image files
Need to make this more general
Noticed while poking at inspector that assets are hitting /home/interstitial to grab that text. Can we change that to only load when we're actually in the integration flow?
Or provide some way to do a lookup
Some of these need API endpoints, which @cmcfadden is working on.
If the user is not logged in and there are no collections, then AppMenu should not contain Collections.
If the user is logged in: show collections. (currently fine)
Endpoint which should vend the information necessary to render the navbar:
https://dev.elevator.umn.edu/defaultinstance/home/getInstanceNav
That'll return JSON in the structure below - annotations added.
The "recent collections" and "recent drawers" are a little clunky, and I'm not sure we need to keep them. They currently only update when a user explicitly goes through the "All collections" or "All drawers" interface, so if they effectively browse collections via a search or something, it won't be reflected.
{
"pages": [ -- pages for building the navbar. Children pages will follow the same format, and are fed into the pulldowns in the current site. Order of the items in the array corresponds to order drawn in the nav
{
"title": "Another Page",
"id": 17,
"children": []
},
{
"title": "test",
"id": 14,
"children": []
}
],
"userIsloggedIn": true, -- info below describes the user if logged in. These keys will always be populated, they just might be set to false
"userCanCreateDrawers": true,
"userCanManageAssets": true,
"userId": 1,
"userDisplayName": "Admin",
"userIsAdmin": true,
"userIsSuperAdmin": true,
"instanceName": "defaultinstance", not sure if we need this or if we'll have it via the config object
"instanceId": 1, -- not sure if we need this or if we'll have it via the config object
"instanceHasLogo": false,
"recentDrawers": [ -- array of drawers most recently accessed by the user
{
"id": 440,
"title": "James drawer"
}
-- snip --
],
"recentCollections": [ -- array of collections most recently accessed by the user via the collection browse list
{
"id": 41,
"title": "Speeches 2 - Don't use"
}
-- snip --
],
"contact": "mailto:[email protected]", -- This can be either a mailto: or a URL (http://). Feeds the "contact us" link under help.
"useCentralAuth": true, -- determines whether or not we show the "University Login" link in addition to the local user login
"centralAuthLabel": "University", -- determines the label of the central auth link. Could be "St. Olaf Login" or "College Login" or whatever"
"collections": [ -- nested hierarchy of all collections that the user has permissions to see
{
"id": 74,
"title": "API Import",
"children": [
{
"id": 75,
"title": "Bennington Test Collection"
}
]
}
-- snip --
]
}
fix this:
<SearchBar
v-if="currentUser?.canSearchAndBrowse"
class="flex-1 w-full max-w-lg"
/>
Examples:
Running the project with node LTS (version 18), fails with this error:
➜ elevator-ui git:(develop) ✗ yarn storybook
yarn run v1.22.19
$ start-storybook -p 6006
info @storybook/vue3 v6.5.12
info
info => Loading presets
ℹ 「wdm」: wait until bundle finished:
node:internal/crypto/hash:71
this[kHandle] = new _Hash(algorithm, xofLen);
^
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:133:10)
at module.exports (/Users/johnsojr/code/elevator-ui/node_modules/@storybook/vue3/node_modules/@storybook/manager-webpack4/node_modules/webpack/lib/util/createHash.js:135:53)
...
This is related to a change with openssl between node 16 and 18. Reportedly, this issue is resolved in Storybook 7.
A workaround (other than just using Node 16), is to use --openssl-legacy-provider
option with node 18.
Like:
NODE_OPTIONS=--openssl-legacy-provider yarn storybook
Something better than console.error
?
Maybe toast style notifications when there's an error. (This might be ready to go with the notificationStore
, it just needs to be used?
Priorities:
Also:
Secondary:
It's sometimes a rectangle. Nobody likes rectangles. Should probably be either a rounded square or circle. Maybe only one initial? And is color needed? Now the the design system is settling, maybe simplify? Chat with @cmcfadden.
less Cruella de Vil, more Billie Eilish?
Not sure if this is new, or if I just hadn’t tried logging in on mobile - I can’t seem to scroll all the way down, without the browser popping back in?
Currently, the app loads config via a config file, which in turn grabs environment configuration like baseUrl from env files.
Add the ability for the to get this configuration as props so that it can be injected into the app at runtime rather than build time.
Items flagged "primary" should sort first
pretty large download (2.1MB).
We don't need all of this
Collections are just a special type of search results. The json payload returned will have a empty string as the query, and a collections id set. The collections id will let us get information about the collection, like the title and description.
A collections page should show search results, but also include the collection name and description at the top.
And, of course, it shouldn't show and empty string as the search query.
Asset titles can be html, so v-html it.
Once logged in, the user will probably have more access.
Currently, vite build creates css and js files with hashed filenames.
The elevator app will has its own cache-busting mechanism, so this is unnecessary. Also, the build files will need to be committed to the elevator app, so we want the css and js file to have the same name so we don't need to do clean-up.
We'll never have more than 4 options in the download list so we can probably optimize that modal size a bit?
If you add storeOnly
as true
to the initial post to searchResults (IE, when they type in the box and hit return), we'll return the searchID without actually hydrating all the results. Right now, we're returning all the results when you fire off a search, but not utilizing them, then calling searchResults with the searchID in order to get the results.
Happens when no firstObjectId
and thus no firstFileHandlers
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.