Giter Club home page Giter Club logo

web-library's People

Contributors

dstillman avatar fcheslack avatar flachware avatar kimisgold avatar mrtcode avatar stakats avatar tnajdek avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

web-library's Issues

Unicode tags are not sorted well

Currently being sorted inside javascript which places multi-byte chars after z

solutions:

  1. Request tags from api sequentially and keep them in that order.
  2. browsers may eventually do a better job with localeComparison for us.
  3. indexed DB may or may not sort them the way we actually want.

Feature: select visible columns

Interface for selecting visible columns in the item list (#56). Currently we're using a pop up for this in the web-library and a menupopup in the client.

Icon component

I would like to have a shared set of icons for both Zotero and Tropy.

I guess it makes sense to implement them in a similar manner: all icons will be inline SVGs, in order to keep the components clean we decided to put them in an icon component themselves for Topy (have a look at the repository in components/icons.js). The icon component does not need any logic.

The rationale behind this approach is the ability to control the icons with CSS. Every SVG (or at least where needed) will contain a 'linear' and a 'block' version, which can be selected and colorized (or even animated) then.

Separate presentation and logic, use redux

Since we're converting the library so it doesn't depend on Bootstrap, I'm going to suggest few additional tweaks as part of this work:

  1. Add Redux as a global state container
  2. Use Container and Presentation components for separation (1, 2, 3)
  3. Remove dependency on jQuery
  4. Expose all components (aka widgets) under Zotero.ui namespace
  5. Expose static init() methods on components for quick DOM mounting
  6. Avoid any side-effects of including the library. e.g. avoid a situitation where just including the library would inject/replace component (aka widget) into the DOM based on its attribute/id.
  7. Avoid using ids (for component styling or otherwise) to allow multiple instances of the same component on a page.
  8. Potentially: split of non-core functionality/components into separate library/libraries

I've done some initial work in a branch called redux, any thoughts and comments welcome.

expire sessionStorage tags

Give tags cached in sessionStorage a reasonable expiration until we can reasonably poll the api for changes.

Better handling of action targets

Currently a single item is selected if present in the url (and thus displayed in the item details pane) but this is undesirable for layouts that keep both an item list and item details visible.

Feature: Search

Simple search functionality needs to be ported to the new library. We could use instant search to match client's behavior (as opposed to press enter to search in current version).

Item Box component

The following features are not yet ported:

  • Creators field
  • Editable fields
  • Item type field
  • Notes field (?)

create separate download proxy target

There should be a target on the home domain to download/view Zotero files from. We don't want to offer downloads of snapshot zips until they are in a more reasonable format so viewing is essential and framing is still desirable. Pointing to z.org would require login/access in that context which we don't want.

Send items to other libraries

  • Clone selected items
  • allow user to select from other libraries they have access to
  • check existing relations on selected items to make sure they're not already in the target libraries
  • add appropriate relations to both new and old items to reflect that they're the same
  • write new copies of items to selected libraries
  • update old items with new relations

Implement touch mode

As already concluded it does not make any sense to blindly detect touch devices, the user has to be in control of the information density.

Nevertheless a best guess seems feasible, therefore a modernizr test detecting touchevents could already be implemented.

As the user should be able to toggle density modes in the settings, I will not use modernizr’s touchevents class directly but rather our own touch class~~, either~~ on the htmlor bodyelement.

Our class would reflect the modernizr test unless the user decides against it.

We don’t have the settings dropdown yet, but it will be available soon.

Allow Emptying Trash

We should allow emptying the entire trash with a single operation from the web library.

  • get the full list of items in the trash (/items/trash?format=keys)
  • confirm the user wants to permanently delete X items (?)
  • perform the multiple DELETE requests to permanently delete the items (probably in series, rather than parallel)
  • report the progress of the operation as it goes

Parts of this could potentially be re-used in other contexts, such as reporting progress for multi-request operations (bulk edit?)

Emptying the trash is easily the most requested such option, but we could also potentially apply other operations to all items in a view (rather than just the N items currently displayed) such as moving to a collection or tagging, but that involves harder UI questions.

Status text

@tnajdek one thing that came to my mind when I had a look at the editable: during the update a spinner might not be the best solution everywhere – e.g. dropbox makes use of status texts when you rename a directory.

I think I would prefer the text approach to a spinner for editing small chunks of texts. So maybe we could extend our feedback repertoire?

Talking about editable, could we even have 'optimistic updates' and just let the user know if something goes wrong?

status

Feature: Add to collection

Currently, web library offers a dialog to move an item to a collection. We need to port this feature though we might come up with another solution (e.g. using drag n drop on desktop).

rich text editor initiation and reading is inconsistent

The initiation of RTEs on pages is inconsistent in various places, especially between text fields that present in the DOM when JS loads and fields that are rendered from javascript, possibly in multiple steps. Making it all happen in a single standard way will make it much more testable and reliable as JS app pages change.

Persist preferences locally

User specific preferences such as display columns and default sort order should be persisted locally. Currently depends on being logged into a Zotero account.

Installation git repo instruction

In the Instructions, the very first point is "Clone git repository into target web directory". Unless I am doing something wrong, the git clone command does not include libzotero in the library folder.
That should probably be explained and suggest a second clone for that folder

Allow file uploads on non-z.org domains

S3 CORS is only currently allowed for zotero.org, so response status codes are missing. Third parties can still upload directly to s3, but will not be aware of a failure. We could proxy file uploads like we do other requests, but that would limit file size to the php install's upload limit.

More style options for citations

I think the only thing preventing this is not wanting to overwhelm users with options for styles.
An auto-completing text input that has precedence over the select might be fine.

add non-JS rendering for crawlers

zotero.org static rendering depends heavily on Zend framework and has several dependencies on the underlying site install which shouldn't be required.

Add item by identifier

This will require access to a running translation server, but other than that it should be straightforward. Direct requests to a translation server probably belongs in libZotero. Other than that this is just a bit of UI and glue.

File upload on mobile browsers sketchy

Some upload but do not get confirmation to exit dialog (firefox mobile android 4.2)
Some are simply not capable and should not offer the option (mobile safari < 6?)
Some claim they are capable but freeze when attempted (chrome for android 4.2).

Optimize ItemsList layout while loading

@tnajdek i know that the web library, especially its redux incarnation, still is at the very beginning and therefore not every minor issue i come across while working on the interface can or should be handled right away (and of some issues you might be aware anyware). With that said i will probably open some issues here in order to keep track of the them in the first place.

When a selection on a collection is made, the ItemList’s layout does not show up until the items are fetched. For a more stable experience it would be preferable to show the table header and the striped item-list-body right away, placing the spinner inside the item-list-body until the item-list shows up (so only the item-list would be blocked while the items are loaded).

Web-Dav

Hi,
Does this support web-dav download/upload?

Have proxyRequest include api key

When requests are always going through a php proxy page, that page can add the api key to requests so it is not exposed on the page.

Items list component

The following features are not yet ported/implemented:

  • Dynamic columns
  • Select multiple
  • Icons
  • Sorting
  • Pagination / "infinite" scrolling

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.