-
Notifications
You must be signed in to change notification settings - Fork 0
Edit Trip Implementation #73
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
Merged
Merged
Changes from all commits
Commits
Show all changes
29 commits
Select commit
Hold shift + click to select a range
764eb5c
Initial implementation of edit trips.
zghera 78a9356
Rename placeholderObj to defaultFormObj now that these values are use…
zghera 2e4398c
Fix placeholder for edit trip bug: now edit trip modal form inputs ar…
zghera fbb72f0
Rename tripObj to tripData for clarity (it is the document data).
zghera 7f85290
Update form control creation function JSDoc.
zghera dc8f49b
Merge branch 'edit-trip-modal-infra' into edit-trip-implementation
zghera 62993fd
Fix bug: current user was displayed when editting collaborators and c…
zghera 6ac1b0c
Update document writen/overwritten success console.logs.
zghera f0139c9
Improve JSDoc in save-trip-modal.js.
zghera 244b0cc
Rename isNewtripForm to isAddNewTripForm and make it instance variabl…
zghera e869354
Revert "Update document writen/overwritten success console.logs."
zghera 39e437d
Merge branch 'edit-trip-modal-infra' into edit-trip-implementation
zghera be634f8
Merge branch 'edit-trip-modal-infra' into edit-trip-implementation
zghera 15e66a3
single quotes.
zghera 20390d6
Include use of both placeholders and default form values.
zghera 4de61bb
Remove placeholder values from defaultFormObj for adding trips.
zghera 849d149
Merge branch 'edit-trip-modal-infra' into edit-trip-implementation
zghera f069221
Add timestampToISOString to time utils.
zghera de6f5a9
Improve JSDoc for time util timestamp <--> iso date string functions.
zghera b95c3ab
Chang logic for the default form object for add trip.
zghera da82254
Add documentation to getDefaultFormField.
zghera cdf593d
Merge branch 'edit-trip-modal-infra' into edit-trip-implementation
zghera b872490
Change trip struct/object to use same fields as in database.js to ens…
zghera 4169b5c
Space out props for Trip component declaration.
zghera f4efb4a
Add '#' to all issue numbers.
zghera e07693d
Tighten annotation requirements.
zghera 576a23b
Move save trip modal form element creation functions to separate file.
zghera 3bca825
Move save trip modal form element creation functions to separate file.
zghera bd20865
Merge branch 'master' into edit-trip-implementation
zghera File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
143 changes: 143 additions & 0 deletions
143
frontend/src/components/ViewTrips/save-trip-form-elements.js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,143 @@ | ||
| import React from 'react'; | ||
|
|
||
| import { Form } from 'react-bootstrap'; | ||
|
|
||
| /** | ||
| * Returns a Form.Control element with input type 'text' and other props | ||
| * specified by the function parameters. | ||
| * | ||
| * @param {React.RefObject} ref Ref attached to the value inputted in the form. | ||
| * @param {string} placeholder Placeholder text value in the form input. | ||
| * @param {?string} defaultText Optional default text value in the form input. | ||
| * Null if no default text. | ||
| * @return {JSX.Element} The Form.Control element. | ||
| */ | ||
| function createTextFormControl(ref, placeholder, defaultText) { | ||
| return ( | ||
| <Form.Control | ||
| type='text' | ||
| placeholder={placeholder} | ||
| defaultValue={defaultText} | ||
| ref={ref} | ||
| /> | ||
| ); | ||
| } | ||
|
|
||
| /** | ||
| * Returns a Form.Control element with input type 'date' and other props | ||
| * specified by the function parameters. | ||
| * | ||
| * @param {React.RefObject} ref Ref attached to the date inputted in the form. | ||
| * @param {?string} defaultDate Optional default ISO date string placed in the | ||
| * form input. Null if no default date. | ||
| * @return {JSX.Element} The Form.Control element. | ||
| */ | ||
| function createDateFormControl(ref, defaultDate) { | ||
| return ( | ||
| <Form.Control | ||
| type='date' | ||
| ref={ref} | ||
| defaultValue={defaultDate} | ||
| /> | ||
| ); | ||
| } | ||
|
|
||
| /** | ||
| * Returns a Form.Control element with input type 'email' and other props | ||
| * specified by the function parameters. | ||
| * | ||
| * @param {React.RefObject} ref Ref attached to the value inputted in the form. | ||
| * @param {number} idx Index of the email Form.Control used for key prop. | ||
| * @param {string} placeholder Placeholder text value in the form input. | ||
| * @param {?Array<string>} defaultEmailArr Array of the emails to be displayed | ||
| * in the default form fields. Null if no default emails. | ||
| * @return {JSX.Element} The Form.Control element. | ||
| */ | ||
| function createEmailFormControl(ref, idx, placeholder, defaultEmailArr) { | ||
| if (defaultEmailArr === null) { | ||
| return ( | ||
| <Form.Control | ||
| type='email' | ||
| placeholder={placeholder} | ||
| ref={ref} | ||
| key={idx} | ||
| /> | ||
| ); | ||
| } | ||
| return ( | ||
| <Form.Control | ||
| type='email' | ||
| placeholder={placeholder} | ||
| defaultValue={defaultEmailArr[idx + 1]} | ||
| ref={ref} | ||
| key={idx} | ||
| /> | ||
| ); | ||
| } | ||
|
|
||
| /** | ||
| * Returns multiple Form.Control elements with input type 'email' and other | ||
| * props specified by the function parameters. | ||
| * | ||
| * One is added to the index of the emails show in order to display all | ||
| * collaborators except the current user. | ||
| * | ||
| * TODO(Issue #67): Email verification before submitting the form. | ||
| * | ||
| * TODO(Issue #72): More intuitive remove collaborator when !`isAddTripForm`. | ||
| * | ||
| * @param {!Array<React.RefObject>} refArr Array of refs attached to the | ||
| * emails inputted in the form. | ||
| * @param {boolean} isAddTripForm True if form is adding new trip, false if | ||
| * form is editting existing trip. | ||
| * @param {string} placeholder Placeholder text value in the form input. | ||
| * @param {?Array<string>} defaultEmailArr Array of the emails to be displayed | ||
| * in the default form fields. | ||
| * @return {JSX.Element} The Form.Control elements. | ||
| */ | ||
| function createMultiFormControl(refArr, placeholder, defaultEmailArr) { | ||
| return ( | ||
| <> | ||
| {refArr.map((ref, idx) => | ||
| createEmailFormControl(ref, idx, placeholder, defaultEmailArr) | ||
| )} | ||
| </> | ||
| ); | ||
| } | ||
|
|
||
| /** | ||
| * Returns a Form.Group element with components specified by the input args. | ||
| * | ||
| * @param {string} controlId Prop that accessibly wires the nested label and | ||
| * input prop. | ||
| * @param {string} formLabel Label/title for the form input. | ||
| * @param {string} inputType Input type of the form. | ||
| * @param {!React.RefObject} ref Ref attached to the values inputted in the form. | ||
| * @param {string} placeholder Placeholder text value in the form input. | ||
| * @param {?string|?Array<string>} defaultVal Default value in the form input. | ||
| * @return {JSX.Element} The Form.Group element. | ||
| */ | ||
| export function createFormGroup(controlId, formLabel, inputType, | ||
| ref, placeholder, defaultVal) { | ||
| let formControl; | ||
| switch(inputType) { | ||
| case 'text': | ||
| formControl = createTextFormControl(ref, placeholder, defaultVal); | ||
| break; | ||
| case 'date': | ||
| formControl = createDateFormControl(ref, defaultVal); | ||
| break; | ||
| case 'emails': | ||
| formControl = createMultiFormControl(ref, placeholder, defaultVal); | ||
| break; | ||
| default: | ||
| console.error('There should be no other input type') | ||
| } | ||
|
|
||
| return ( | ||
| <Form.Group controlId={controlId}> | ||
| <Form.Label>{formLabel}</Form.Label> | ||
| {formControl} | ||
| </Form.Group> | ||
| ) | ||
| } |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.