Coder Social home page Coder Social logo

phaidra-ui's Issues

Configuration management

Draft. TBD on Thursday.

We have multiple instances, and need a way to manage their configurations.

Instances

  • e-book.fwf.ac.at [angular]
  • phaidra.bibliothek.uni-ak.ac.at [old perl? thing]
  • phaidra.cab.unipd.it [custom, angular-material, jquery]
  • phaidra.fhstp.ac.at [old perl? thing]
  • phaidra.kug.ac.at [angular]
  • phaidra.ufg.at [old perl? thing]
  • volare.vorarlberg.at [old perl? thing]

There are essentially two ways:

A) decide on the configuration at build time, baking it in with the build.

  • requires building the software anew for each instance
  • others' configs are not visible

B) ship all configurations with the build, pick the right one based on the value
of location.host (env "sniffing").

  • one build for all
  • everyone's configs are visible to all parties (open source)

Switching at runtime

Do we want to be able to switch configs at runtime? It seems like we do (e.g.
using the header dropdown on app01), at least on non-production instances (to
test styles, etc.).

Privacy

Are we (and other unis) comfortable having the configuration options saved in a open source repository?
It's not a problem to have private configs outside the repo.
They should still be able to make build with INSTANCE=foo, that would target their private config.

What's part of an instance config?

  • api urls
  • theme settings
  • search facets
  • logo url
  • language (#11)

(which of these should be changeable dynamically?)

Search

Is a route target component, so passing props to it (dynamic ones) is not possible.

Settings Store

I think the vuex store is a perfectly adequate place for keeping the settings.
Comonents can react when accessing the settigns as they do now.
Alternatively we can use global 'settings' mixin as discussed before.

Solution

Best of both worlds.
Do separate builds per instance, bundling only the required config.
Config can keep the current style, with global settings, and switchable settings.
Use a tool like webpack's https://webpack.js.org/plugins/normal-module-replacement-plugin/
to make importing a config file be resolved based on an env var.
Build can then be called with INSTANCE=univie npm run build: webpack will
include config/univie.js when you write import config from 'APP_CONFIG'
App.vue will then place the config into the store, under settings, as it does now.
When these settings change, components like search can update reactively.
This means we will have no symlinks.

EXIF metadata

Show EXIF metadata on detail object page?

Consider generating EXIF metadata on the fly upon user's request instead of ingesting it as a datastream. Any authorization needed? Caching needed?

collection detail page - collection tree

on collection detail page, show the collection hierarchy, if there is any

eg col o:459006 is part of o:459021 and has o:459005 as member. So if I'm eg on detail object of o:459006 it should show:

  • o:459021 - 650 Jahre Universität Wien
    • o:459006 - Ausstellung - Wien 1365. Eine Universität ensteht
      • o:459005 - Wien 1365. Eine Universität entsteht - Fotos

it should show the whole hierarchy, not just parents (there could be more) and children, so it should traverse the ifpartof relation recursive in both ways (up and down)

pdf.js config

please configure the pdf viewer so that it's no possible to open another pdf in it (remove "Open file")

collection detail page - collection members

On collection detail page, show collection members (pid, small thumbnail title). The view needs to be paged, because there can be thousands. Use SOLRs ispartof: field for this and pos_in_o_ to sort them (this is only defined in some collection).

Object versions in search results

  • remove -hassuccessor:* when searching for collection members otherwise objects whose version isn't the latest won't be displayed in search results

  • Show a label like "This object has a later version" in search results when an object has a later version. That could also be a link to the successor.

Recommend Projects

  • React photo React

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

  • Vue.js photo Vue.js

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

  • Typescript photo Typescript

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

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

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

  • web

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

  • server

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

  • Machine learning

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

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

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

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.