CenterForDigitalHumanities / CenterForDigitalHumanities/TPEN-interfaces
Transcription Workspace components
- Dominant language
- JavaScript
- Stars
- 2
- Forks
- 3
- PR merge metrics
- No merged PRs in 30d
Description
There is a component that exists here that should encompass all these subcomponents, but the utility of recombining these means that they should exist separately.
## Specifications
1. **Narrowest data scope**: The data displayed here may be controlled by roles, so authentication is required, but will have already been triggered by the container. As this is not intended to be a readonly component, it is okay for it to not appear until authentication is complete. `TPEN.activeLine` is available with the `TPEN` object. This is available as soon as the `tpen-active-line` fires.
- The likely sources of this event are things like "Next/Prev" buttons or clicking on lines in navigation aids.
2. **Responsive Design**: The layout and format of this component may rely on its width. The use of `em` and CSS variables to set colors and fonts will allow for some blending into context. The use of `@container` queries will also allow for size to clamp to the space available. It may be needed to present discrete components for different purposes.
3. **Use `TPEN.activeLine`**: When the `tpen-active-line` event fires, the label will be available for display. It is certain to change and should continue listening for any further changes.
4. **Not just Attributes**: It is possible to initialize or manipulate the component with attributes like `[tpen-line-id]` but relying on this change will cause redundant logic and excessive DOM interaction that isn't needed.
5. **Animation Matters**: The transition from one line to the next is greatly helped by animated transitions between states. For example, if moving to the previous line, the components may slide off in the opposite direction than the normal line movement. If this needs to be separated from the rest of work, That'll do.
- **Reset**: The *Interface* for transcription should have a concept of "reset" that listens for (for example) an esc key strike to dismiss all tools and return to full-width. The component should describe what this event may be and make the method available.
- **Update**: The component should track the changes to the Annotations and prepare to save them off when asked. This may not always be on blur or on change, since we aren't swamping RERUM, but it would help to maintain it in localStorage and sync when requested.
## Subcomponents
- [ ] Workspace Container: will split the active line from the remaining page, taking up space and filling the width of the container.
- [ ] Previous Line: the text of the line above is useful to show. It should show the text of the previous line, including a note if the line is from a different page or column. If there is none, nothing should show, but it should probably take up the same space.
- [ ] History Report: a short note of the most recent edit should be available. In the future, this may be complicated with hover or click actions to see multiple versions.
- [ ] Line Navigation: Buttons are needed that change the active line to an adjacent one. They can change `TPEN` directly and that should fire the `tpen-active-line` event. At the end of lists, a button should visibly change and allow for moving to the adjacent Page.
- [ ] Line Indicator: The current index/name of the active line (or previous line) is useful to show to the user.
- [ ] Text Entry: The first step in this component is generating a string that adds itself as a `textualBody` with a `transcribing` Motivation.
- [ ] Optional Tools: A space should be reserved below the text entry for loading in trigger buttons for tools, but this is not specifically spec'ed out yet.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.