From 234540ca58941ae06520f51f3b4f0e99865270f0 Mon Sep 17 00:00:00 2001 From: johnthagen Date: Fri, 29 Jan 2021 15:06:55 -0500 Subject: [PATCH 1/2] Remove stale docs --- docs/api/README.md | 58 ------------------ docs/api/file.md | 16 ----- docs/api/projects/DevToolProjId.PNG | Bin 27021 -> 0 bytes docs/api/projects/code.PNG | Bin 14689 -> 0 bytes docs/api/projects/customField.md | 12 ---- docs/api/projects/get.md | 19 ------ docs/api/projects/get_semantic_domains.md | 45 -------------- docs/api/projects/get_users.md | 13 ---- docs/api/projects/post.md | 15 ----- docs/api/projects/project.md | 52 ---------------- docs/api/projects/project_with_user.md | 21 ------- docs/api/projects/put.md | 27 -------- docs/api/projects/put_characters.md | 27 -------- docs/api/projects/put_user.md | 27 -------- docs/api/projects/semdoms.PNG | Bin 24083 -> 0 bytes docs/api/projects/user_edits/edit.md | 14 ----- docs/api/projects/user_edits/get.md | 15 ----- docs/api/projects/user_edits/get_all.md | 13 ---- docs/api/projects/user_edits/goal_type.md | 18 ------ docs/api/projects/user_edits/post.md | 17 ----- docs/api/projects/user_edits/post_id.md | 15 ----- docs/api/projects/user_edits/put.md | 19 ------ docs/api/projects/user_edits/user_edit.md | 11 ---- docs/api/projects/words/delete_id.md | 17 ----- docs/api/projects/words/frontier.md | 19 ------ docs/api/projects/words/get.md | 15 ----- docs/api/projects/words/get_id.md | 19 ------ docs/api/projects/words/gloss.md | 13 ---- docs/api/projects/words/post.md | 17 ----- docs/api/projects/words/post_upload_audio.md | 29 --------- docs/api/projects/words/post_upload_lift.md | 32 ---------- docs/api/projects/words/put.md | 32 ---------- docs/api/projects/words/put_id.md | 21 ------- docs/api/projects/words/semanticDomain.md | 24 -------- docs/api/projects/words/sense.md | 12 ---- docs/api/projects/words/state.md | 25 -------- docs/api/projects/words/word.md | 41 ------------- docs/api/projects/words/word_tree.png | Bin 4376 -> 0 bytes docs/api/users/authenticate.md | 25 -------- docs/api/users/get.md | 19 ------ docs/api/users/get_all.md | 13 ---- docs/api/users/post.md | 23 ------- docs/api/users/post_upload_avatar.md | 31 ---------- docs/api/users/put.md | 21 ------- docs/api/users/user.md | 46 -------------- docs/frontend/README.md | 14 ----- docs/frontend/addingComponents.md | 22 ------- docs/frontend/fileStructure/backend.md | 4 -- docs/frontend/fileStructure/components.md | 44 ------------- docs/frontend/fileStructure/fileStructure.md | 14 ----- docs/frontend/fileStructure/goals.md | 25 -------- docs/frontend/fileStructure/index.tsx.md | 3 - docs/frontend/fileStructure/resources.md | 3 - .../frontend/fileStructure/rootReducer.tsx.md | 3 - .../fileStructure/serviceWorker.ts.md | 5 -- docs/frontend/fileStructure/store.tsx.md | 4 -- docs/frontend/fileStructure/types.md | 3 - 57 files changed, 1092 deletions(-) delete mode 100644 docs/api/README.md delete mode 100644 docs/api/file.md delete mode 100644 docs/api/projects/DevToolProjId.PNG delete mode 100644 docs/api/projects/code.PNG delete mode 100644 docs/api/projects/customField.md delete mode 100644 docs/api/projects/get.md delete mode 100644 docs/api/projects/get_semantic_domains.md delete mode 100644 docs/api/projects/get_users.md delete mode 100644 docs/api/projects/post.md delete mode 100644 docs/api/projects/project.md delete mode 100644 docs/api/projects/project_with_user.md delete mode 100644 docs/api/projects/put.md delete mode 100644 docs/api/projects/put_characters.md delete mode 100644 docs/api/projects/put_user.md delete mode 100644 docs/api/projects/semdoms.PNG delete mode 100644 docs/api/projects/user_edits/edit.md delete mode 100644 docs/api/projects/user_edits/get.md delete mode 100644 docs/api/projects/user_edits/get_all.md delete mode 100644 docs/api/projects/user_edits/goal_type.md delete mode 100644 docs/api/projects/user_edits/post.md delete mode 100644 docs/api/projects/user_edits/post_id.md delete mode 100644 docs/api/projects/user_edits/put.md delete mode 100644 docs/api/projects/user_edits/user_edit.md delete mode 100644 docs/api/projects/words/delete_id.md delete mode 100644 docs/api/projects/words/frontier.md delete mode 100644 docs/api/projects/words/get.md delete mode 100644 docs/api/projects/words/get_id.md delete mode 100644 docs/api/projects/words/gloss.md delete mode 100644 docs/api/projects/words/post.md delete mode 100644 docs/api/projects/words/post_upload_audio.md delete mode 100644 docs/api/projects/words/post_upload_lift.md delete mode 100644 docs/api/projects/words/put.md delete mode 100644 docs/api/projects/words/put_id.md delete mode 100644 docs/api/projects/words/semanticDomain.md delete mode 100644 docs/api/projects/words/sense.md delete mode 100644 docs/api/projects/words/state.md delete mode 100644 docs/api/projects/words/word.md delete mode 100644 docs/api/projects/words/word_tree.png delete mode 100644 docs/api/users/authenticate.md delete mode 100644 docs/api/users/get.md delete mode 100644 docs/api/users/get_all.md delete mode 100644 docs/api/users/post.md delete mode 100644 docs/api/users/post_upload_avatar.md delete mode 100644 docs/api/users/put.md delete mode 100644 docs/api/users/user.md delete mode 100644 docs/frontend/README.md delete mode 100644 docs/frontend/addingComponents.md delete mode 100644 docs/frontend/fileStructure/backend.md delete mode 100644 docs/frontend/fileStructure/components.md delete mode 100644 docs/frontend/fileStructure/fileStructure.md delete mode 100644 docs/frontend/fileStructure/goals.md delete mode 100644 docs/frontend/fileStructure/index.tsx.md delete mode 100644 docs/frontend/fileStructure/resources.md delete mode 100644 docs/frontend/fileStructure/rootReducer.tsx.md delete mode 100644 docs/frontend/fileStructure/serviceWorker.ts.md delete mode 100644 docs/frontend/fileStructure/store.tsx.md delete mode 100644 docs/frontend/fileStructure/types.md diff --git a/docs/api/README.md b/docs/api/README.md deleted file mode 100644 index 5649d71dd9..0000000000 --- a/docs/api/README.md +++ /dev/null @@ -1,58 +0,0 @@ -# Combine API docs - -## Project - -- [Add project](projects/post.md) : `POST: /v1/projects/` -- [Get one project](projects/get.md) : `GET: /v1/projects/{projectId}` -- [Get all users working on one project](projects/get_users.md) : `GET: /v1/projects/{projectId}/users` -- [Update a project](projects/put.md) : `PUT: /v1/projects/{projectId}` -- [Update character set of a project](projects/put_characters.md) : `PUT: /v1/projects/{projectId}/characters` -- [Update UserRole of User on one project](projects/put_user.md) : `PUT: /v1/projects/{projectId}/users/{userId}` - -### Word - -- [Add word](projects/words/post.md) : `POST: /v1/projects/{projectId}/words` -- [Get all words](projects/words/get.md) : `GET: /v1/projects/{projectId}/words` -- [Get word](projects/words/get_id.md) : `GET: /v1/projects/{projectId}/words/{wordId}` -- [Update word](projects/words/put_id.md) : `PUT: /v1/projects/{projectId}/words/{wordId}` -- [Merge words](projects/words/put.md) : `PUT: /v1/projects/{projectId}/words` -- [Delete word](projects/words/delete_id.md) : `DELETE: /v1/projects/{projectId}/words/{wordId}` - -### Frontier - -- [Get frontier words](projects/words/frontier.md) : `GET: /v1/projects/{projectId}/words/frontier` - -### Lift - -- [Import Lift Collection](projects/words/post_upload_lift.md) : `POST: /v1/projects/{projectId}/words/upload` -- [Export Lift Collection](projects/words/post_upload_lift.md) : `GET: /v1/projects/{projectId}/words/download` - -### Audio - -- [Upload Audio](users/post_upload_audio.md) : `POST /v1/projects/{projectId}/words/{wordId}/upload/audio` - -## User - -- [Add user](users/post.md) : `POST /v1/users` -- [Get user](users/get.md) : `GET /v1/users/{userId}` -- [Update user info](users/put.md) : `PUT /v1/users/{userId}` -- [Authenticate](users/authenticate.md) : `POST /v1/users/authenticate` - -### Avatar - -- [Upload Avatar](users/post_upload_avatar.md) : `POST /v1/users/{userId}/upload/avatar` - -### User Edit - -- [Add user edit](projects/user_edits/post_id.md) : `POST /v1/projects/{projectId}/useredits/{userEditId}` -- [Get all user edits](projects/user_edits/get_all.md) : `GET /v1/projects/{projectId}/useredits` -- [Get user edit](projects/user_edits/get.md) : `GET /v1/projects/{projectId}/useredits/{userEditId}` -- [Add goal to UserEdit](projects/user_edits/post_id.md) : `POST /v1/projects/{projectId}/useredits/{userEditId}` -- [Add steps to goal](projects/user_edits/put.md) : `PUT /v1/projects/{projectId}/useredits/{userEditId}` - -### User Role - -- [Add user role](projects/user_roles/post.md) : `POST /v1/projects/{projectId}/userrole/{userRoleId}` -- [Get all user roles](projects/user_roles/get_all.md) : `GET /v1/projects/{projectId}/userroles` -- [Get user role](projects/user_roles/get.md) : `GET /v1/projects/{projectId}/userroles/{userRoleId}` -- [Update user role](projects/user_roles/put.md) : `PUT /v1/projects/{projectId}/userroles/{userRoleId}` diff --git a/docs/api/file.md b/docs/api/file.md deleted file mode 100644 index bf0e954cfa..0000000000 --- a/docs/api/file.md +++ /dev/null @@ -1,16 +0,0 @@ -# File - -Generic type for representing auxillary files in a project - -**File** : Typescript Type File: Contains the file - -**name** : String: contains the name of the file - -## Raw type : - -```typescript -{ - file: File, - name: String -} -``` diff --git a/docs/api/projects/DevToolProjId.PNG b/docs/api/projects/DevToolProjId.PNG deleted file mode 100644 index 096fcc6bcee211fb638d33395c02fd1f0e8d7708..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27021 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 This is optional and unlikely to be used - -# Raw type - -```typescript -{ - name: String, - type: String -} -``` diff --git a/docs/api/projects/get.md b/docs/api/projects/get.md deleted file mode 100644 index b46859c6f4..0000000000 --- a/docs/api/projects/get.md +++ /dev/null @@ -1,19 +0,0 @@ -# Get a single project - -**URL** : `/v1/projects/{projectId}` - -**Method** : `GET` - -**Auth required** : Project Admin - -## Success response - -**Code** : `200 OK` - -**Data Content** : [`Project`](project.md) - -## Error response - -**Condition** : Project not found - -**Code** : `404 NOT FOUND` diff --git a/docs/api/projects/get_semantic_domains.md b/docs/api/projects/get_semantic_domains.md deleted file mode 100644 index a0dc21ce84..0000000000 --- a/docs/api/projects/get_semantic_domains.md +++ /dev/null @@ -1,45 +0,0 @@ -# Parse Semantic Domains of Project - -Takes the sematic domains of your project and returns a JSON object in the structure needed by the Tree View component. -The app currently has copies of the semantic domains in English, Spanish, and French. This tool can be used to localize -the Tree View component to other languages. This function is not currently operating, so the source code must be -changed. - -1. In the file [~/TheCombine/Backend/Services/LiftApiServices.cs](../../../Backend/Services/LiftApiServices.cs), - uncomment the code in the method `ProcessRangeElement()`. - -![Code](code.PNG) - -2. Start the Combine. -3. Open the DevTools menu in your browser (F12 or CTRL + SHIFT + I). -4. Import the project with the semantic domains of the desired language. -5. Locate the project id in the Network tab from your `upload` request. You can find it here: - -![DevTools](DevToolProjId.PNG) - -6. Navigate in-browser to `localhost:5001/v1/projeccts/{projectId}/semanticdomains` with the project id you found, which - will give you the plaintext result. It should look something like this: - -![SemDom](semdoms.PNG) - -7. Save this data to a JSON file in - [~/TheCombine/src/resources/semantic-domains](../../../src/resources/semantic-domains) with the language code as its - name (e.g. `en.json` for English) will allow the data from this language to be used in the Tree View component. - -**URL** : `/v1/projects/{projectId}/semanticdomains` - -**Method** : `GET` - -**Auth required** : No - -## Success response - -**Code** : `200 OK` - -**Data Content** : `string` - -## Error response - -**Condition** : Project not found - -**Code** : `404 NOT FOUND` diff --git a/docs/api/projects/get_users.md b/docs/api/projects/get_users.md deleted file mode 100644 index 62b928798e..0000000000 --- a/docs/api/projects/get_users.md +++ /dev/null @@ -1,13 +0,0 @@ -# Get all users working on one project - -**URL** : `/v1/projects/{projectId}/users` - -**Method** : `GET` - -**Auth required** : Project Admin - -## Success response - -**Code** : `200 OK` - -**Data Content** : [`User`](..\users\user.md)`[]` diff --git a/docs/api/projects/post.md b/docs/api/projects/post.md deleted file mode 100644 index 7544c31baa..0000000000 --- a/docs/api/projects/post.md +++ /dev/null @@ -1,15 +0,0 @@ -# Add project - -**URL** : `/v1/projects` - -**Method** : `POST` - -**Auth required** : No - -**Data type** : [`Project`](project.md) - -## Success response - -**Code** : `200 OK` - -**Data content** : [`ProjectWithUser`](project_with_user.md) diff --git a/docs/api/projects/project.md b/docs/api/projects/project.md deleted file mode 100644 index 41321feb0c..0000000000 --- a/docs/api/projects/project.md +++ /dev/null @@ -1,52 +0,0 @@ -# Project - -**name** : Name of project - -**semanticDomains** : Custom Semantic Domains for this project - -**vernacularWritingSystem** : Language code of vernaculars - -**analysisWritingSystems** : Language code of glossing systems - -**validCharacters** : 𠮷 appears to be a single character but is represented with two unicode codepoints: -`"\uD842\uDFB7"`. Currently, the front-end splits on codepoints, so this character would be broken up. - -**rejectedCharacters** : - -**customFields** : Optional at this point. We may or may not include this in our final design. - -**wordFields** : - -> **Typing of this is uncertain** -> It would make sense to have this strictly typed since we know all possible values at runtime we should probably add a -> enum that looks something like -> -> ```typescript -> enum { -> Vernacular, -> Gloss, -> AudioFile, -> SemanticDomain, -> PartOfSpeech -> } -> ``` -> -> And use that as the type for wordFields - -**partsOfSpeech** : - -## Raw type - -

-{
-    name: String,
-    semanticDomains: semanticDomain[],
-    vernacularWritingSystem: WritingSystem,
-    analysisWritingSystems: WritingSystem[],
-    validCharacters: String[],
-    rejectedCharacters: String[],
-    customFields: CustomField[],
-    wordFields: String[],
-    partsOfSpeech: String[]
-}
-
diff --git a/docs/api/projects/project_with_user.md b/docs/api/projects/project_with_user.md deleted file mode 100644 index a928ec3baa..0000000000 --- a/docs/api/projects/project_with_user.md +++ /dev/null @@ -1,21 +0,0 @@ -# Project With User - -Extension of [`Project`](project.md) with [`User`](..\users\user.md) attribute. Used as return type from -[Project Creation](post.md) - -## Raw type - -
-{
-    name: String,
-    semanticDomains: semanticDomain[],
-    words: Word[],
-    vernacularWritingSystem: WritingSystem,
-    analysisWritingSystems: WritingSystem[],
-    characterSet: String[],
-    customFields: CustomField[],
-    wordFields: String[],
-    partsOfSpeech: String[],
-    __UpdatedUser : User
-}
-
diff --git a/docs/api/projects/put.md b/docs/api/projects/put.md deleted file mode 100644 index 76f952d49c..0000000000 --- a/docs/api/projects/put.md +++ /dev/null @@ -1,27 +0,0 @@ -# Update a project - -**URL** : `/v1/projects/{projectId}` - -**Method** : `PUT` - -**Auth required** : Project Admin - -**Data type** : [`Project`](project.md) - -## Success response - -**Code** : `200 OK` - -**Data Content** : `string` projectId - -## Redirect response - -**Condition** : No content changed - -**Code** : `304 NOT MODIFIED` - -## Error response - -**Condition** : Project not found - -**Code** : `404 NOT FOUND` diff --git a/docs/api/projects/put_characters.md b/docs/api/projects/put_characters.md deleted file mode 100644 index 560244650f..0000000000 --- a/docs/api/projects/put_characters.md +++ /dev/null @@ -1,27 +0,0 @@ -# Update character set - -**URL** : `/v1/projects/{projectId}/characters` - -**Method** : `PUT` - -**Auth required** : MergeNCharSet - -**Data type** : [`Project`](project.md) - -## Success response - -**Code** : `200 OK` - -**Data Content** : `string` userId - -## Redirect response - -**Condition** : No content changed - -**Code** : `304 NOT MODIFIED` - -## Error response - -**Condition** : Project not found - -**Code** : `404 NOT FOUND` diff --git a/docs/api/projects/put_user.md b/docs/api/projects/put_user.md deleted file mode 100644 index 55883bf3ae..0000000000 --- a/docs/api/projects/put_user.md +++ /dev/null @@ -1,27 +0,0 @@ -# Update UserRole of user on a project - -**URL** : `/v1/projects/{projectId}/users/{userId}` - -**Method** : `PUT` - -**Auth required** : Project Admin - -**Data type** : `int[]` - -## Success response - -**Code** : `200 OK` - -**Data Content** : `string` projectId - -## Redirect response - -**Condition** : No content changed - -**Code** : `304 NOT MODIFIED` - -## Error response - -**Condition** : Project not found - -**Code** : `404 NOT FOUND` diff --git a/docs/api/projects/semdoms.PNG b/docs/api/projects/semdoms.PNG deleted file mode 100644 index 57545f3aa6d4de85bf1c8c86adf2219da777b064..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24083 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 E0cwHu^Z)<= diff --git a/docs/api/projects/user_edits/edit.md b/docs/api/projects/user_edits/edit.md deleted file mode 100644 index 2ec5e26eb7..0000000000 --- a/docs/api/projects/user_edits/edit.md +++ /dev/null @@ -1,14 +0,0 @@ -# Edit - -**goalType** : - -**stepData** : - -## Raw Type - -
-{
-  goalType: GoalType;
-  stepData: string[]
-}
-
diff --git a/docs/api/projects/user_edits/get.md b/docs/api/projects/user_edits/get.md deleted file mode 100644 index f865b21a22..0000000000 --- a/docs/api/projects/user_edits/get.md +++ /dev/null @@ -1,15 +0,0 @@ -# Get a single UserEdit - -Get user edit with target id, otherwise makes a new user edit - -**URL** : `/v1/projects/{projectId}/useredits/{userEditId}` - -**Method** : `GET` - -**Auth required** : - -## Success response - -**Code** : `200 OK` - -**Data Content** : [`UserEdit`](user_edit.md) diff --git a/docs/api/projects/user_edits/get_all.md b/docs/api/projects/user_edits/get_all.md deleted file mode 100644 index 31f5402322..0000000000 --- a/docs/api/projects/user_edits/get_all.md +++ /dev/null @@ -1,13 +0,0 @@ -# Get all UserEdits - -**URL** : `/v1/projects/{projectId}/useredits/` - -**Method** : `GET` - -**Auth required** : - -## Success response - -**Code** : `200 OK` - -**Data Content** : [`UserEdit`](user_edit.md)`[]` diff --git a/docs/api/projects/user_edits/goal_type.md b/docs/api/projects/user_edits/goal_type.md deleted file mode 100644 index 0a20607fe9..0000000000 --- a/docs/api/projects/user_edits/goal_type.md +++ /dev/null @@ -1,18 +0,0 @@ -# GoalType - -GoalType is an enum describing the different types of goals - -## Raw type - -```typescript -enum { - CreateCharInv, - ValidateChars, - CreateStrWordInv, - ValidateStrWords, - MergeDups, - SpellcheckGloss, - ViewFind, - HandleFlags -} -``` diff --git a/docs/api/projects/user_edits/post.md b/docs/api/projects/user_edits/post.md deleted file mode 100644 index 51397fc39a..0000000000 --- a/docs/api/projects/user_edits/post.md +++ /dev/null @@ -1,17 +0,0 @@ -# Add UserEdit - -*NOT SUPPORTED AS OF NOW*s - -**URL** : `/v1/projects/{projectId}/useredits/` - -**Method** : `POST` - -**Auth required** : - -**Data type** : [`UserEdit`](user_edit.md) - -## Success response - -**Code** : `200 OK` - -**Data content** : `id: String` diff --git a/docs/api/projects/user_edits/post_id.md b/docs/api/projects/user_edits/post_id.md deleted file mode 100644 index c2a3af489c..0000000000 --- a/docs/api/projects/user_edits/post_id.md +++ /dev/null @@ -1,15 +0,0 @@ -# Add Goal to UserEdit - -**URL** : `/v1/projects/{projectId}/useredits/{userEditId}` - -**Method** : `POST` - -**Auth required** : - -**Data type** : [`UserEdit`](user_edit.md) - -## Success response - -**Code** : `200 OK` - -**Data content** : `id: String` diff --git a/docs/api/projects/user_edits/put.md b/docs/api/projects/user_edits/put.md deleted file mode 100644 index de7c6ad49e..0000000000 --- a/docs/api/projects/user_edits/put.md +++ /dev/null @@ -1,19 +0,0 @@ -# Add step to goal - -**URL** : `/v1/projects/{projectId}/useredits/{userEditId}` - -**Method** : `PUT` - -**Auth required** : - -**Data type** : [`UserEdit`](user_edit.md) - -## Success response - -**Code** : `200 OK` - -## Error response - -**Condition** : Id not found - -**Code** : `404 NOT FOUND` diff --git a/docs/api/projects/user_edits/user_edit.md b/docs/api/projects/user_edits/user_edit.md deleted file mode 100644 index d791359ddf..0000000000 --- a/docs/api/projects/user_edits/user_edit.md +++ /dev/null @@ -1,11 +0,0 @@ -# UserEdit - -**edits** : What a user has done in a project - -## Raw Type - -
-{
-  edits: Edit[];
-}
-
diff --git a/docs/api/projects/words/delete_id.md b/docs/api/projects/words/delete_id.md deleted file mode 100644 index 647f813dbf..0000000000 --- a/docs/api/projects/words/delete_id.md +++ /dev/null @@ -1,17 +0,0 @@ -# Delete word - -**URL** : `/v1/projects/{projectId}/words/{wordId}` - -**Method** : `DELETE` - -**Auth required** : - -## Success response - -**Code** : `200 OK` - -## Error response - -**Condition** : If id is not found - -**Code** : `404 NOT FOUND` diff --git a/docs/api/projects/words/frontier.md b/docs/api/projects/words/frontier.md deleted file mode 100644 index 12a30c8a53..0000000000 --- a/docs/api/projects/words/frontier.md +++ /dev/null @@ -1,19 +0,0 @@ -# Get frontier words - -The frontier is a list of all the words that haven't been merged. - -In Figure1 the frontier would return `ab` and `c_deleted` - -![Sample word tree](word_tree.png) - -**URL** : `/v1/projects/{projectId}/words/frontier` - -**Method** : `GET` - -**Auth required** : - -## Success Response - -**Code** : `200 OK` - -**Data Content** : [`Word`](word.md)`[]` diff --git a/docs/api/projects/words/get.md b/docs/api/projects/words/get.md deleted file mode 100644 index 738da0e578..0000000000 --- a/docs/api/projects/words/get.md +++ /dev/null @@ -1,15 +0,0 @@ -# Get all words - -Gets all words in the project - -**URL** : `/v1/projects/{projectId}/words` - -**Method** : `GET` - -**Auth required** : - -## Success Response - -**Code** : `200 OK` - -**Data Content** : [`Word`](word.md)`[]` diff --git a/docs/api/projects/words/get_id.md b/docs/api/projects/words/get_id.md deleted file mode 100644 index cbfb1a496c..0000000000 --- a/docs/api/projects/words/get_id.md +++ /dev/null @@ -1,19 +0,0 @@ -# Get word by ID - -**URL** : `/v1/projects/{projectId}/words/{wordId}` - -**Method** : `GET` - -**Auth required** : - -## Success response - -**Code** : `200 OK` - -**Data content** : [`Word`](word.md) - -## Error response - -**Condition** : If word ID doesn't exist - -**Code** `404 NOT FOUND` diff --git a/docs/api/projects/words/gloss.md b/docs/api/projects/words/gloss.md deleted file mode 100644 index 558f0ee3e3..0000000000 --- a/docs/api/projects/words/gloss.md +++ /dev/null @@ -1,13 +0,0 @@ -# Gloss - -A gloss is a series of brief explanations of a word, such as definitions or pronunciations, in an analysis writing -system. - -## Raw Type - -``` -{ - Language: String; - Def: String; -} -``` diff --git a/docs/api/projects/words/post.md b/docs/api/projects/words/post.md deleted file mode 100644 index 9a4279eb12..0000000000 --- a/docs/api/projects/words/post.md +++ /dev/null @@ -1,17 +0,0 @@ -# Add word - -Used to add a word to a language project - -**URL** : `/v1/projects/{projectId}/words` - -**Method** : `POST` - -**Auth required** : - -**Data type**: [`Word`](word.md) - -## Success Response - -**Code** : `200 OK` - -**Data content** : `id: string` diff --git a/docs/api/projects/words/post_upload_audio.md b/docs/api/projects/words/post_upload_audio.md deleted file mode 100644 index f7a6d0027d..0000000000 --- a/docs/api/projects/words/post_upload_audio.md +++ /dev/null @@ -1,29 +0,0 @@ -# Upload an audio file - -**URL** : `/v1/projects/{projectId}/words/{wordId}/upload/audio` - -**Method** : `POST` - -**Auth required** : - -**Data type**: [`FormData()`](https://developer.mozilla.org/en-US/docs/Web/API/FormData/FormData) - Binary Stream - -``` -FormData() -{ - LanguageData : File - name : string -} -``` - -## Success Response - -**Code** : `200 OK` - -**Data content** : `string` - file path - -## Error response - -**Condition** : Invalid file - -**Code** : `415 UNSUPPORTED MEDIA TYPE` diff --git a/docs/api/projects/words/post_upload_lift.md b/docs/api/projects/words/post_upload_lift.md deleted file mode 100644 index 14e5293831..0000000000 --- a/docs/api/projects/words/post_upload_lift.md +++ /dev/null @@ -1,32 +0,0 @@ -# Upload a .lift file - -Used to add many words to a language project from a .lift file -[.lift](https://github.com/sillsdev/lift-standard) is an xml variant focused on lexical data transfer - -**URL** : `/v1/projects/{projectId}/words/upload` - -**Method** : `POST` - -**Auth required** : - -**Data type**: [`FormData()`](https://developer.mozilla.org/en-US/docs/Web/API/FormData/FormData) - Binary Stream - -``` -FormData() -{ - LanguageData : File - name : string -} -``` - -## Success Response - -**Code** : `200 OK` - -**Data content** : `num: int` - Number of successful entries - -## Error response - -**Condition** : Invalid lift file - -**Code** : `415 UNSUPPORTED MEDIA TYPE` diff --git a/docs/api/projects/words/put.md b/docs/api/projects/words/put.md deleted file mode 100644 index 092174eee4..0000000000 --- a/docs/api/projects/words/put.md +++ /dev/null @@ -1,32 +0,0 @@ -# Merge words - -Merge words into a parent - -**URL** : `/v1/projects/{projectId}/words` - -**Method** : `PUT` - -**Auth required** : - -**Data type** : MergeWords - -
-{
-    parent: Word,
-    children: Word[],
-    mergeType: State,
-    time: String
-}
-
- -## Success Response - -**Code** : `200 OK` - -**Data content** : `id: String` - -## Error response - -**Condition** : If any id is not found or if there are duplicates among the parent and children - -**Code** : `404 NOT FOUND` diff --git a/docs/api/projects/words/put_id.md b/docs/api/projects/words/put_id.md deleted file mode 100644 index bf36e28cf5..0000000000 --- a/docs/api/projects/words/put_id.md +++ /dev/null @@ -1,21 +0,0 @@ -# Update word - -**URL** : `/v1/projects/{projectId}/words/{wordId}` - -**Method** : `PUT` - -**Auth required** : - -**Data type** : [`Word`](word.md) - -## Success response - -**Code** : `200 OK` - -**Data content** : `id: string` - -## Error response - -**Condition** : If id is not found - -**Code** : `404 NOT FOUND` diff --git a/docs/api/projects/words/semanticDomain.md b/docs/api/projects/words/semanticDomain.md deleted file mode 100644 index cdb7e7a83b..0000000000 --- a/docs/api/projects/words/semanticDomain.md +++ /dev/null @@ -1,24 +0,0 @@ -# Semantic Domain - -A semantic domain refers to a category of words. These words are nested by their number. - -``` -1. Universe, Creation - 1.1 Sky - 1.1.1 Sun - 1.1.2 Air - 1.1.3 Weather - 1.2 World - 1.2.1 Land - 1.2.2 Substance, Matter - 1.2.3 Solid, liquid, gas -``` - -## Raw Type - -```typescript -{ - Name: String, - Number: String, -} -``` diff --git a/docs/api/projects/words/sense.md b/docs/api/projects/words/sense.md deleted file mode 100644 index 21a2857993..0000000000 --- a/docs/api/projects/words/sense.md +++ /dev/null @@ -1,12 +0,0 @@ -# Sense - -A word may have multiple senses, like the word bank, meaning a place where money is stored or land by a river. - -## Raw Type - -
-{
-    Glosses: Gloss[];
-    SemanticDomains: SemanticDomain[];
-}
-
diff --git a/docs/api/projects/words/state.md b/docs/api/projects/words/state.md deleted file mode 100644 index f800365ff5..0000000000 --- a/docs/api/projects/words/state.md +++ /dev/null @@ -1,25 +0,0 @@ -# Accessibility State - -Acccessibility state is an enum representing one of four states - -**Active** : Standard Node type - -**Deleted** : Node has been deleted - -**Sense** : Node has been merged with another node as an alternate definition - -**Duplicate** : Node has been merged with another node as a duplicate node - -**Separate** : Node has been made into a new node - -## Raw type - -```typescript -enum { - active, - deleted, - sense, - duplicate, - separate -} -``` diff --git a/docs/api/projects/words/word.md b/docs/api/projects/words/word.md deleted file mode 100644 index dcec26fc1c..0000000000 --- a/docs/api/projects/words/word.md +++ /dev/null @@ -1,41 +0,0 @@ -# Word - -**vernacular** : - -**plural** : - -**senses**: - -**audio** : Link to recording of word spoken - -**created** : Time word was initially created - -**modified** : Time word was last modified - -**history** : List of previous words - -**partOfSpeech** : - -**editedBy** : List of collaborators - -**accessability** : - -**otherField** : - -## Raw Type - -
-{
-  verncaular: String;
-  plural: String;
-  senses: Sense[];
-  audio: String;
-  created: String;
-  modified: String;
-  history: String[];
-  partOfSpeech: String;
-  editedBy: String;
-  accessability: State;
-  otherField: String;
-}
-
diff --git a/docs/api/projects/words/word_tree.png b/docs/api/projects/words/word_tree.png deleted file mode 100644 index 8f29e160e966b7bcdf3b23c69b6d54ad7374028f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4376 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 Will change to Dictionary - -## Raw type - -```typescript -{ - avatar: String, - name: String, - email: String, - phone: String, - otherConnnectionField: String, - workedProjects: String[], - agreement: boolean, - password: String, - username: String, - uiLang: String, - token: String, - userEdits: String -} -``` diff --git a/docs/frontend/README.md b/docs/frontend/README.md deleted file mode 100644 index 57fe4bc4cd..0000000000 --- a/docs/frontend/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# The Combine Frontend Docs - -The Combine is a web-based tool used to clean up the data collected after a Rapid Word Collection workshop. We use the -following technologies on the frontend: - -- [React](https://reactjs.org/) -- [Redux](https://redux.js.org/) -- [Jest](https://jestjs.io/en/) -- [npm](https://www.npmjs.com/) - -## Index - -- [File Structure](fileStructure/fileStructure.md) -- [Adding Components to The Combine](addingComponents.md) diff --git a/docs/frontend/addingComponents.md b/docs/frontend/addingComponents.md deleted file mode 100644 index ce81f192e5..0000000000 --- a/docs/frontend/addingComponents.md +++ /dev/null @@ -1,22 +0,0 @@ -# Adding Components to The Combine - -Let's say you want to add a Login component to the app. - -First, create the React component that handles login. - -The component will need methods to register a user account, as well as to login. This will require a database call or -two. To make the component as reusable as possible, we will pass in these methods through the component's props. - -The component will also need access to the Redux store. The data you need from the store should be passed in through -props as well. To pass in the data, you want to create a -[connected component](https://redux.js.org/basics/usage-with-react). - -You will need to create action creators and reducers, since you want to be able to dispatch login actions to the store, -and respond to the actions. The reducer should be added to the root reducer, located in -[src/rootReducer.tsx](../../src/rootReducer.tsx). - -Adding a login component will require adding new state types to the store. You want to add login state to the store. -This should be defined in your login reducers file. The state should be added to the store state in -[src/types/index.tsx](../../src/types/index.tsx). - -Don't forget to write unit tests. diff --git a/docs/frontend/fileStructure/backend.md b/docs/frontend/fileStructure/backend.md deleted file mode 100644 index 3f7846fae3..0000000000 --- a/docs/frontend/fileStructure/backend.md +++ /dev/null @@ -1,4 +0,0 @@ -# Backend - -Backend contains the api used to access the backend api. It is the only place in the frontend where requests are made to -the backend api. diff --git a/docs/frontend/fileStructure/components.md b/docs/frontend/fileStructure/components.md deleted file mode 100644 index f633b3ba8d..0000000000 --- a/docs/frontend/fileStructure/components.md +++ /dev/null @@ -1,44 +0,0 @@ -# Components - -Most React components are stored in this directory. - -Each directory should contain at least: - -- The component class -- A tests subdirectory containing unit tests that test the component - -Sometimes, there will also be these files/folders: - -- index.tsx - a component that injects props into the component. These props are retrieved from the Redux store -- a file containing Redux actions -- a file containing a Redux reducer - -Components can be nested. Nested components should be stored in subdirectories of their parent, unless there are other -components that use them. - -Here is an example of what a directory in components should look like: - -- GoalTimeline/ - - GoalHistory/ - - tests/ - - component.test.tsx - - component.tsx - - GoalSuggestions/ - - tests/ - - component.test.tsx - - component.tsx - - GoalSwitcher/ - - tests/ - - component.test.tsx - - actions.test.tsx - - reducers.test.tsx - - component.tsx - - actions.tsx - - reducers.tsx - - tests/ - - component.test.tsx - - actions.test.tsx - - reducers.test.tsx - - component.tsx - - actions.tsx - - reducers.tsx diff --git a/docs/frontend/fileStructure/fileStructure.md b/docs/frontend/fileStructure/fileStructure.md deleted file mode 100644 index a7862a2fb3..0000000000 --- a/docs/frontend/fileStructure/fileStructure.md +++ /dev/null @@ -1,14 +0,0 @@ -# File Structure - -Note: The root of the frontend is src/. - -- [index.tsx](index.tsx.md) -- [rootReducer.tsx](rootReducer.tsx.md) -- [serviceWorker.ts](serviceWorker.ts.md) -- [store.tsx](store.tsx.md) - -- [backend/](backend.md) -- [components/](components.md) -- [goals/](goals.md) -- [resources/](resources.md) -- [types/](types.md) diff --git a/docs/frontend/fileStructure/goals.md b/docs/frontend/fileStructure/goals.md deleted file mode 100644 index 40e3127e15..0000000000 --- a/docs/frontend/fileStructure/goals.md +++ /dev/null @@ -1,25 +0,0 @@ -# Goals - -The Combine provides tools for people to clean up after a Rapid Word Collection workshop. We call each of these tools a -goal that the user wants to accomplish. The goal types The Combine provides are: - -- Create Character Inventory -- Create Structural Character Inventory -- Handle Flags -- Merge Duplicates -- Spell Check Gloss -- Validate Characters -- Validate Structural Words -- Review Entries - -Each directory should contain at least: - -- The component class -- The goal class -- A tests subdirectory containing unit tests that test the component - -Sometimes, there will also be these files/folders: - -- index.tsx - a component that injects props into the component. These props are retrieved from the Redux store -- a file containing Redux actions -- a file containing a Redux reducer diff --git a/docs/frontend/fileStructure/index.tsx.md b/docs/frontend/fileStructure/index.tsx.md deleted file mode 100644 index b5962f0bfe..0000000000 --- a/docs/frontend/fileStructure/index.tsx.md +++ /dev/null @@ -1,3 +0,0 @@ -# index.tsx - -This is the top-level component in The Combine. Everything is wired together in this file. diff --git a/docs/frontend/fileStructure/resources.md b/docs/frontend/fileStructure/resources.md deleted file mode 100644 index dbb740713c..0000000000 --- a/docs/frontend/fileStructure/resources.md +++ /dev/null @@ -1,3 +0,0 @@ -# Resources - -Resources contains extra files we need, like a logo and localization files. diff --git a/docs/frontend/fileStructure/rootReducer.tsx.md b/docs/frontend/fileStructure/rootReducer.tsx.md deleted file mode 100644 index 4289152415..0000000000 --- a/docs/frontend/fileStructure/rootReducer.tsx.md +++ /dev/null @@ -1,3 +0,0 @@ -# rootReducer.tsx - -The reducer for the Redux store is stored here. All of the reducers are combined here to make one large reducer. diff --git a/docs/frontend/fileStructure/serviceWorker.ts.md b/docs/frontend/fileStructure/serviceWorker.ts.md deleted file mode 100644 index 8956a1f1cb..0000000000 --- a/docs/frontend/fileStructure/serviceWorker.ts.md +++ /dev/null @@ -1,5 +0,0 @@ -# serviceWorker.ts - -A service worker is run in the background. It allows for things like push notifications. It does not need to be -modified. See https://developers.google.com/web/fundamentals/primers/service-workers/ for more information about service -workers. diff --git a/docs/frontend/fileStructure/store.tsx.md b/docs/frontend/fileStructure/store.tsx.md deleted file mode 100644 index 88065ea257..0000000000 --- a/docs/frontend/fileStructure/store.tsx.md +++ /dev/null @@ -1,4 +0,0 @@ -# store.tsx - -This creates the Redux store, and applies any middleware you may be using. The Combine is using -[thunk](https://github.com/reduxjs/redux-thunk) as its middleware. diff --git a/docs/frontend/fileStructure/types.md b/docs/frontend/fileStructure/types.md deleted file mode 100644 index d20a84309a..0000000000 --- a/docs/frontend/fileStructure/types.md +++ /dev/null @@ -1,3 +0,0 @@ -# Types - -Types contains data types for the data model, as well as types used with the Redux store. From 0e09178daa355673f84ef6e98f1c5cc60535e007 Mon Sep 17 00:00:00 2001 From: johnthagen Date: Fri, 29 Jan 2021 15:09:27 -0500 Subject: [PATCH 2/2] Remove extra stale files --- docs/data_model.md | 118 ------------------------------- docs/duplicate_finder_testing.md | 29 -------- 2 files changed, 147 deletions(-) delete mode 100644 docs/data_model.md delete mode 100644 docs/duplicate_finder_testing.md diff --git a/docs/data_model.md b/docs/data_model.md deleted file mode 100644 index 9328ff7cb2..0000000000 --- a/docs/data_model.md +++ /dev/null @@ -1,118 +0,0 @@ -# Data Model - -## Project - -- Name - -- Semantic Domains - -- Vernacular Writing System - -- Analysis Writing Systems - -- Valid Character Set - -- Rejected Character Set - -- Custom Fields - Not implemented: optional fields for projects - -- Word Fields - Not implemented: optional fields for words in a project - -- Parts of Speech - -### Custom Field - -- Name - -- Type - -## Word - -- Vernacular - -- Plural - -- Senses - consists of glosses and semantic domains - -- Audio - -- Created - -- Modified - -- History - We are storing the history of a word in a linked tree. Each word will point to the previous word(s) in its - history. - -- Part of Speech - -- Edited By - -- Other Field - -- Project Id - -### Sense - -- Glosses - -- Semantic Domains - -- Accessibility - -### Gloss - -- Language - -- Definition - -### Semantic Domain - -- Name - -- Id Number - -- Description - -## User - -- Avatar - -- Name - -- Email - -- Phone - -- Other Connection Field - Other form of contact if phone/email are unavailable - -- Worked Projects - A user may be involved with more than one project at a time - -- Project Roles - A user may have different roles for different projects - -- Agreement - If the user has consented for audio/video containing them to be used - -- Password - -- Username - -- UI Language - The language the user wants used for the user interface of The Combine. - -- Token - stored JWT token to permit access to certain features. - -## User Edit - -- Edits - -- Project Id - -### Edit - -- Goal Type - -- StepData - -## User Role - -- Permissions - -- Project Id diff --git a/docs/duplicate_finder_testing.md b/docs/duplicate_finder_testing.md deleted file mode 100644 index c624dc9353..0000000000 --- a/docs/duplicate_finder_testing.md +++ /dev/null @@ -1,29 +0,0 @@ -| Project | Start Words | Time (ms) | Post-Filter Words | Average Duplicates Found | -| --------------------- | ----------- | --------- | ----------------- | ------------------------ | -| Gusillaay (Original) | 8043 | 92845.78 | 2093.3 | 3.24 | -| Gusillaay (Bitmapped) | 8043 | 18241.07 | 312.9 | 3.04 | -| Gusillaay (Optimized) | 8043 | 6882.689 | 236.6 | 2.54 | - -| Project | Start Words | Time (ms) | Post-Filter Words | Average Duplicates Found | -| ----------------- | ----------- | --------- | ----------------- | ------------------------ | -| Lotud (Original) | 5396 | 33211.799 | 1234.0 | 2.67 | -| Lotud (Bitmapped) | 5396 | 8418.44 | 227.3 | 2.52 | -| Lotud (Optimized) | 5396 | 3274.220 | 170.1 | 2.16 | - -| Project | Start Words | Time (ms) | Post-Filter Words | Average Duplicates Found | -| ---------------- | ----------- | --------- | ----------------- | ------------------------ | -| Sena (Original) | 1462 | 2002.195 | 612.7 | 4.46 | -| Sena (Bitmapped) | 1462 | 774.135 | 160.8 | 4.32 | -| Sena (Optimized) | 1462 | 366.305 | 122.6 | 3.64 | - -| Project | Start Words | Time (ms) | Post-Filter Words | Average Duplicates Found | -| -------------------- | ----------- | --------- | ----------------- | ------------------------ | -| Resembli (Original) | 255 | 89.235 | 77.745 | 3.67 | -| Resembli (Bitmapped) | 255 | 83.77 | 29.3 | 3.67 | -| Resembli (Optimized) | 255 | 63.23 | 22.3 | 2.85 | - -| Project | Start Words | Time (ms) | Post-Filter Words | Average Duplicates Found | -| ------------------- | ----------- | --------- | ----------------- | ------------------------ | -| Spanish (Original) | 132 | 112.80 | 34.7 | 1.26 | -| Spanish (Bitmapped) | 132 | 42.555 | 7.3 | 1.21 | -| Spanish (Optimized) | 132 | 39.3 | 5.8 | 1.21 |