Coder Social home page Coder Social logo

mirador_sul's Introduction

Mirador @ SUL

Build Status Coverage Status

Installation

After cloning the repository, install the dependencies:

$ bundle install

Running the tests

$ bundle exec rake ci

Running the server

$ rails s

mirador_sul's People

Contributors

aeschylus avatar camillevilla avatar cbeer avatar cncoleman avatar corylown avatar csbailey5t avatar jcoyne avatar jkeck avatar mejackreed avatar mjgiarlo avatar sul-devops-team avatar tallenaz avatar versae avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

ubl-chj cnxtech

mirador_sul's Issues

IIIF and Mirador collection manifests and usability in SearchWorks

This may be a stub ticket to be linked to one or more SW tickets.

As a researcher I want to more easily find and open - Mirador - images that I find in SearchWorks so that I can more immediately start analyzing, comparing and annotating them for research and teaching.

This may be broken into a handful of stories, for example:

  • An Access point in SearchWorks specifically for IIIF-compatible images
  • Dynamic generation of IIIF collection manifests for any SearchWorks search result that includes SDR images @tomcramer
  • Better visibility of IIIF/Mirador logos / drag and drop on SW show page

This would need design by @jvine

Unify notification bar

Right now some views show the div#notice while others don't. We need to make it available at the header and use it as well when saving the workspace to provide some user feedback.

update deploy for stage/prod

The deploys of master are failing...

rake stderr: rake aborted!
Bundler::GemRequireError: There was an error while trying to load the gem 'bootstrap'.
Gem Load Error is: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.
Backtrace for gem load error is:
/opt/app/mirador/mirador_sul/shared/bundle/ruby/2.4.0/gems/execjs-2.7.0/lib/execjs/runtimes.rb:58:in `autodetect'

Simple web demo with IIIFify and Shimmy for Box/Flickr

As a faculty member I want to easily open my personal collection of images in Mirador fro cloud image hosting providers so that I can take full advantage of the power of Mirador on images that may not be in, or appropriate for the SDR.

it would be cool if, for demo purposes, we could have a small web app that allowed a user to point to a Box or Flickr folder and then open all images in Mirador.

Jack has raised the long-term sustainability challenge given that Shimmy downloads the files locally and we don't want to locally host someones 40,000 image flickr collection. Is this valuable as a short term or more protected demonstration of capability / pilot with faculty / grad students?

Workspace Show View Changes

  • Move Workspace title into mirador viewer
    • Being taken care of in another PR
  • Remove Back button
  • Style mirador viewer to take up the entire height/width of the page content area (retain red nav bar)
  • Instantiate Mirador viewer for a New Workspaces with the load window open/initialized.

Note: We want to experiment with a max-width on the mirador load-window.

Add bookmarking of Mirador states/views

We should still address the questions in #12 but here's a proposal for implementing bookmarking:

  • Create new user button for save/save-as
  • Instead of using existing bookmarking functionality in Mirador, get saveController.currentConfig and we can reinitialize Mirador from that
  • Currently, the internationalization is delaying the DOM being loaded. We can add events on elements in the main menu bar after a short delay (setTimeout with 1000 worked for me). We could either add a delay, or add an event in Mirador for when internationalization is done or around that (then subscribe to myMiradorInstance.eventEmitter.eventname I think to add the click handler)
  • On clicking the save button, we fire an Ajax request to the update route of the workspace to save the serialized state. When a user views that workspace, Mirador is initialized with the saved state as the initialConfig

Add All Collections View

Add a page that will list the collections for the current user.

From this page a user should be able to:

  • Clone a collection
  • Add a collection
  • Delete a collection (and associated workspaces)

Questions

  • Should there be any way to view all collections for a user besides yourself?
  • When cloning a collection, should the workspaces come along with it (the thought is no)?

Changes to collections index view

  • Set a max-width on the content (this will be used everywhere but the mirador workspace view).
    • 100% width; max-width: 1280px; centered;
  • Make collection sections full width. Turn actions links to buttons on the right.
    • Each collection should be visually distinct from one another (not just padding/margin)
  • Add number of manifests.
  • Add number of workspaces instantiated.
  • Add date created.
  • Add description (if we have it) See #76.

What happens when a user "bookmarks" a workspace from Mirador's bookmark button?

This is opposed to creating a new "workspace" from a collection.

Possible behaviours (would like to hear @versae's views on this):

  1. The bookmark becomes a new workspace with the state of the current mirador instance. For expediency's sake we don't preserve the relationship this bookmarked state has with the "original" workspace. One way we might justify this is that all the workspaces (states/bookmarks) all have the same collection (set of available manifests), so there is no real distinction between a workspace in one state that has been derived from a new workspace, or one that simply "is" a new workspace.
  2. The bookmark is attached to this workspace in some way. This is useful since workspaces may have titles, so a particular set of bookmarks might pertain to the topic of the workspace. It's also a useful finding aid, since people tend to think historically. As @versae points out, this is also how manually saved versions of documents in a lot of other familiar software often turn out. So in this case the bookmarks act as snapshots.
  3. Bookmarking the space overwrites it. This is generally how clicking a save button in most other software works, but since workspaces are imagined to be used as a kind of shareable example, this may not be the expected behaviour.

Create workspace management view

This is a view that allows basic CRUD operations on workspaces attached to a collection.

This could initially be done as a partial included in the single collection/collection management view.

Workspaces index view

  • Turn workspace lists into some sort of tiles (isotope or masonry?)
  • Add a placeholder image
  • Turn actions links into buttons
  • Add description (if we have it)

What happens on the backend when the user adds a manifest through an open mirador workspace's drag and drop or add URL features?

The response I've been imagining, for the prototype phase at least, is that the underlying collection has that object added to it as well, and would be visible on the collection page, as well as any workspaces using that collection.

Any previously saved workspace for that collection would have that new manifest available to it through the item/manifest picker view, though all its other previously saved state would remain the same.

Where do workspaces come from?

Are they:

  1. Created "off of" a collection?
  2. Duplicated from an existing workspace?
  3. Created "new", outside of the context of a collection?

I think there are tradeoffs here. In particular I think 3 creates a number of technical and user communication difficulties, especially when related to the question of what happens when a user adds an object to an open workspace through drag and drop. I think, mostly for technical but also for conceptual/design clarity reasons, that we settled on new workspaces only being able to be created "off of" an existing collection, since objects cannot be removed from the mirador workspace from inside mirador.

Add Single Collection Management View

  • List all manifests available in the collection
  • Enable Drag and Drop adding of manifests into the collection
  • Enable adding a manifest from a URL
  • Enable deleting of single manifests from the collection
  • When the user deletes a manifest from the list, notify them if it affects any of the workspaces that have been saved in that collection, and provide them the option not to go through with the action. In the event that a manifest one of the workspaces depends on is deleted, then when that workspace is restored, the manifest will no longer be available to it. If it was open in a mirador window, the slot for that window will be blank.

Hook up rubocop to build/test suite

Noticing some style violations creep their way into the codebase. We should hook rubocop to fail the build so we don't continue to introduce more.

[production] ActiveRecord::InvalidForeignKey on collection deletion

When deleting a collection, we get a 500 server error. We may need to use the has_many ... dependent: ... call in the collections model.

See below

[mirador_sul/production] ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR: update or delete on table "collections" violates foreign key constraint "fk_rails_0f16b7366a" on table "workspaces"DETAIL: Key (id)=(1) is still referenced from table "workspaces".: DELETE FROM "collections" WHERE "collections"."id" = $1

Backtrace

line 49 of [PROJECT_ROOT]/app/controllers/collections_controller.rb: destroy

View full backtrace and more info at honeybadger.io

Create a mirador instance view

This will be a thin wrapper around the mirador instance/markup.

  • Needs to dereference hash identifier and fetch state from the database (to instantiate mirador)
  • Adding manifest via DnD needs to update the collection.
  • Identify annotation endpoint

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.