Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dynamic Source Content Update #3175

Closed
5 tasks
jag3773 opened this issue Nov 14, 2017 · 9 comments
Closed
5 tasks

Dynamic Source Content Update #3175

jag3773 opened this issue Nov 14, 2017 · 9 comments

Comments

@jag3773
Copy link
Contributor

jag3773 commented Nov 14, 2017

User Story

As a user, I want to be able to update the source content (resources) in the app so that I don't have to wait for, download, and install a new release just to update tC's resources.

Specs

  • This feature needs to find and give the opportunity to update:
    • New/updated UI strings
    • New/updated books of the Bible + versions of the Bible (e.g. aligned UST + ULT, unaligned Bibles)
    • Updated tHelps
  • This feature will be implemented in conjunction with opening up the whole NT to the tW tool. Incorporated in this feature is making the app smart enough so that if a new book is imported, that book will become available for checking. This applies both to making a new book available in a GL that is currently in tC as well as adding a book in a GL that is new to tC.
    • For example, if the NT gets opened, but Romans in English has not yet been aligned, checking for Romans will not be possible. But if Romans gets aligned and a user updates their source content, then a Romans project should be able to be opened (assuming all other dependencies are met).

Notes

  • For a GL to show up in the dropdown list of the tool card for tW, there must be at least one aligned translation in that GL for that book + translated tW.

Breakdown

  • L - UI Strings Update system - Deferred
  • M - API Endpoint - create new spec/tC endpoint POSTPONED
    • [4] SPIKE: Research about the tC API Endpoint
  • Develop NPM module to:
  • L - Design UI with Mock Data
    • Select subset of new or updated resources
  • M - Write a helper function to Fetch Catalog
  • L - Write a helper function to Parse Catalog
  • M - Differentiate between Latest and Current Resources, which are newer resources, which need to be updated
  • M - Write helper function that gets list of resources to display UI that shows all resources that are not current
  • M - Write helper function to Retrieve selected resource
  • M - Write helper function to Parse USFM3 data into json (Converting)
  • M - Write helper function to Generate translation helps data
  • M - Write helper function to move resources to target locations (Source Importing)
  • M - Write code to figure out which language should be displayed in the tool dropdown based on available book/tool/language combo
  • L - Drop tc_resources sub module

Questions

  • Spike - Figure out versioning/packaging of GL packages
  • Does the project need to know which version of the GL package it is using?
  • Do we want to add a GL_selection attribute so that updated GL selections can automatically invalidate those verses?
  • How do we want to handle content data in the app (from the install) verses content in the user folder, and where does dynamic update content go?
  • Do we want to pivot to downloading zipped files?
  • How do we get UI strings updates downloaded to the core and then updated to the tools?

Notes from April

  • Bundle zip of resources with app installer
  • Extract resources to user directory
  • Allow user to download updates which overwrite the data in the user directory
  • Also allow user to select newly available content
  • Drop tc_resources sub module
    • Implement as a npm package that updates or gets new content
    • Process the source content at runtime

NEED

  • Minimum requirements for a checking tool: aligned default_literal translation + required tH (e.g. tW for tW Tool, tN + tA for tN Tool, etc.
  • to differentiate in the code between original languages, aligned ULTs (part of GL), other GL texts, and Target Languages.))
@benjore
Copy link

benjore commented Feb 6, 2018

image

image

image

image

Per @cckozie and @benjore on slack:
For unsuccessful download of the Dynamic Source Content Update use the following as alert message 'Failed to download source content updates.'

Also, It would probably be good to put 'Retry' and 'Cancel' options on the alert. If the failure was caused by no Internet connection, then that alert should be used instead of a custom one for this issue.

@da1nerd
Copy link
Contributor

da1nerd commented Jun 27, 2018

Here's a diagram of the proposed architecture.

dynamic update

@da1nerd
Copy link
Contributor

da1nerd commented Jun 27, 2018

Or here's a fancier version built with https://mermaidjs.github.io/

graph

@benjore benjore added this to the tC Sprint #62 milestone Aug 3, 2018
@jag3773
Copy link
Contributor Author

jag3773 commented Aug 3, 2018

@benjore Has noted that we will need to support side loading local resources, which means we will need local code to handle some conversion/ingestion steps. This is part of the reason for differing server side pre-processing of the catalog.

@da1nerd
Copy link
Contributor

da1nerd commented Aug 3, 2018

With side loading in mind we'll likely have a separate UI (minimal compared to the UI for downloading) and converter (maybe). Here's a separate process for side loading.

output

Depending on the format of the imported file we may have a separate Converter. The Importer will the same in both cases.

@PhotoNomad0
Copy link
Contributor

@benjore - how do we support if there is more than one bible in a language? The UI above has no way of selecting between various bibles in a language (e.g. ULT and UST updates for English). Current plan I believe is to bundle by bible in catalog.

@benjore
Copy link

benjore commented Aug 8, 2018

@PhotoNomad0 All of the resources for a language would come down together (e.g. UST, UDT, tW, tN, tA, etc.). We tried splitting it out, but it gets too complicated. So, from the user's perspective, it will all come together per language. From the dev's perspective, if you can see that the of that bundle only the UDT updated, then you're fine to just download that resource.

@PhotoNomad0
Copy link
Contributor

PhotoNomad0 commented Aug 8, 2018

@benjore - to be clear. It looks like we are using anglicized language name in the prompt - at least for now. Is this correct?

Answer: We will be using localized language name from the translationDatabas and language code.

@PhotoNomad0
Copy link
Contributor

PhotoNomad0 commented Aug 8, 2018

@benjore - When we update a new version of a resource, do we remove the older version(s)?

Specifically for example if we have a new v12.2 bible, do we remove the older v12.1 bible?

@benjore benjore modified the milestones: tC Sprint #62, tC Sprint #63 Aug 10, 2018
@bspidel bspidel assigned bspidel and unassigned bspidel Aug 17, 2018
@benjore benjore modified the milestones: tC Sprint #63, tC Sprint #64 Sep 4, 2018
@benjore benjore modified the milestones: tC Sprint #64, tC Sprint #65 Sep 19, 2018
@cckozie cckozie added the QA/Pass label Oct 3, 2018
@cckozie cckozie closed this as completed Oct 3, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants