From aa76bc79832a559ef50e8f522851e699353e32cc Mon Sep 17 00:00:00 2001 From: Hannu Lyytikainen Date: Fri, 20 Apr 2018 14:46:01 +0300 Subject: [PATCH] Add documentation for extending listing data model --- .../extend-listing/capacity_listing_page.png | Bin 0 -> 32481 bytes docs/assets/extend-listing/edit_capacity.png | Bin 0 -> 45932 bytes docs/extend-listing.md | 472 ++++++++++++++++++ docs/search-filters.md | 15 +- 4 files changed, 481 insertions(+), 6 deletions(-) create mode 100644 docs/assets/extend-listing/capacity_listing_page.png create mode 100644 docs/assets/extend-listing/edit_capacity.png create mode 100644 docs/extend-listing.md diff --git a/docs/assets/extend-listing/capacity_listing_page.png b/docs/assets/extend-listing/capacity_listing_page.png new file mode 100644 index 0000000000000000000000000000000000000000..23a2b3b31de0921b90ae23d221eeb6c77a93845a GIT binary patch literal 32481 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

+#Q+`CU#K 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 { + let key = null; + if (tab === DESCRIPTION) { + key = 'EditListingWizard.tabLabelDescription'; + } else if (tab === FEATURES) { + key = 'EditListingWizard.tabLabelFeatures'; + } else if (tab === CAPACITY) { + key = 'EditListingWizard.tabLabelCapacity'; + } else if (tab === POLICY) { + key = 'EditListingWizard.tabLabelPolicy'; + } else if (tab === LOCATION) { + key = 'EditListingWizard.tabLabelLocation'; + } else if (tab === PRICING) { + key = 'EditListingWizard.tabLabelPricing'; + } else if (tab === PHOTOS) { + key = 'EditListingWizard.tabLabelPhotos'; + } + + return intl.formatMessage({ id: key }); +}; +``` + +The `tabCompleted` function keeps track of which data the user has already provided in order to +tell which tabs are completed. We will be using listing's _public data_ property (see the [extended +data](./extended-data.md) documentation for more info on different extended data types) for storing +the capacity data so based on that information we can add a check for capacity in `tabCompleted`: + +```js +/** + * Check if a wizard tab is completed. + * + * @param tab wizard's tab + * @param listing is contains some specific data if tab is completed + * + * @return true if tab / step is completed. + */ +const tabCompleted = (tab, listing) => { + const { description, geolocation, price, title, publicData } = listing.attributes; + const images = listing.images; + + switch (tab) { + case DESCRIPTION: + return !!(description && title); + case FEATURES: + return !!(publicData && publicData.amenities); + case CAPACITY: + return !!(publicData && publicData.capacity); + case POLICY: + return !!(publicData && typeof publicData.rules !== 'undefined'); + case LOCATION: + return !!(geolocation && publicData && publicData.location && publicData.location.address); + case PRICING: + return !!price; + case PHOTOS: + return images && images.length > 0; + default: + return false; + } +}; +``` + +Next task is to add form and panel components that render the capacity tab. As for the form, let's +create a `EditListingCapacityForm` component: + +```js +import React from 'react'; +import { arrayOf, bool, func, shape, string } from 'prop-types'; +import { compose } from 'redux'; +import { Form as FinalForm } from 'react-final-form'; +import { intlShape, injectIntl, FormattedMessage } from 'react-intl'; +import classNames from 'classnames'; +import { propTypes } from '../../util/types'; +import { Form, Button, FieldSelect } from '../../components'; +import { required } from '../../util/validators'; + +import css from './EditListingCapacityForm.css'; + +export const EditListingCapacityFormComponent = props => ( + { + const { + className, + disabled, + handleSubmit, + intl, + invalid, + pristine, + saveActionMsg, + updated, + updateError, + updateInProgress, + capacityOptions, + } = fieldRenderProps; + + const capacityPlaceholder= intl.formatMessage({ + id: 'EditListingCapacityForm.capacityPlaceholder', + }); + + const errorMessage = updateError ? ( +

+ +

+ ) : null; + + const capacityRequired = required( + intl.formatMessage({ + id: 'EditListingCapacityForm.capacityRequired', + }) + ); + + const classes = classNames(css.root, className); + const submitReady = updated && pristine; + const submitInProgress = updateInProgress; + const submitDisabled = invalid || disabled || submitInProgress; + + return ( +
+ {errorMessage} + + + + {capacityOptions.map(c => ( + + ))} + + + +
+ ); + }} + /> +); + +EditListingCapacityFormComponent.defaultProps = { + selectedPlace: null, + updateError: null, +}; + +EditListingCapacityFormComponent.propTypes = { + intl: intlShape.isRequired, + onSubmit: func.isRequired, + saveActionMsg: string.isRequired, + updated: bool.isRequired, + updateError: propTypes.error, + updateInProgress: bool.isRequired, + capacityOptions: arrayOf( + shape({ + key: string.isRequired, + label: string.isRequired, + }) + ).isRequired, +}; + +export default compose(injectIntl)(EditListingCapacityFormComponent); +``` + +The form component receives `capacityOptions` as a prop which are used to populate a `FieldSelect` +component for selecting the capacity. The `EditListingCapacityForm` is also added to the +`src/containers/index.js` file so that it can easilly be referenced from other components. To use +the capacity editing form we'll add a panel components which is then used in `EditListingWizardTab` +to render the wizard phase. This component we'll call `EditListingCapacityPanel` + +```js +import React from 'react'; +import PropTypes from 'prop-types'; +import classNames from 'classnames'; +import { FormattedMessage } from 'react-intl'; +import { ensureOwnListing } from '../../util/data'; +import { ListingLink } from '../../components'; +import { EditListingCapacityForm } from '../../containers'; +import config from '../../config.js'; + +import css from './EditListingCapacityPanel.css'; + +const EditListingCapacityPanel = props => { + const { + className, + rootClassName, + listing, + onSubmit, + onChange, + submitButtonText, + panelUpdated, + updateInProgress, + errors, + } = props; + + const classes = classNames(rootClassName || css.root, className); + const currentListing = ensureOwnListing(listing); + const { publicData } = currentListing.attributes; + + const panelTitle = currentListing.id ? ( + }} + /> + ) : ( + + ); + + return ( +
+

{panelTitle}

+ { + const { capacity } = values; + const updateValues = { + publicData: { + capacity, + }, + }; + onSubmit(updateValues); + }} + onChange={onChange} + saveActionMsg={submitButtonText} + updated={panelUpdated} + updateError={errors.updateListingError} + updateInProgress={updateInProgress} + capacityOptions={config.custom.capacityOptions} + /> +
+ ); +}; + +const { func, object, string, bool } = PropTypes; + +EditListingCapacityPanel.defaultProps = { + className: null, + rootClassName: null, + listing: null, +}; + +EditListingCapacityPanel.propTypes = { + className: string, + rootClassName: string, + + // We cannot use propTypes.listing since the listing might be a draft. + listing: object, + + onSubmit: func.isRequired, + onChange: func.isRequired, + submitButtonText: string.isRequired, + panelUpdated: bool.isRequired, + updateInProgress: bool.isRequired, + errors: object.isRequired, +}; + +export default EditListingCapacityPanel; +``` + +In the panel component we check for an initial capacity value from the `public_data` property of the +listing. In the submit handler the new capacity value is stored in the same property. Respectively +`EditListingCapacityPanel` is need to be exported from `src/components/index.js` for easier access +from other files. + +Now that we have the panel and the form all ready we can add the panel to the `EditListingWizardTab` +component. This is done by adding a new block to the `switch` structure that handles rendering the +correct panel: + +```js +case CAPACITY: { + const submitButtonTranslationKey = isNew + ? 'EditListingWizard.saveNewCapacity' + : 'EditListingWizard.saveEditCapacity'; + return ( + { + onCompleteEditListingWizardTab(tab, values); + }} + /> + ); +} +``` + +There! Now we've extended the listing data model with capacity information. + +![Edit the capacity](./assets/extend-listing/edit_capacity.png) + +The capacity data can now be added to new and existing listings. Next chapter describes how that +data can be presented in the listing page. + +## Show the attribute on listing page + +Next step in adding a new attribute to the listing is to present it in the listing page. On some +cases an extension to the listing data model can be used purely to enhance the application logic but +in our case with the capacity information we want to show the added attribute in the listing page +for potential customers. + +To show the capacity attribute in the listing page, let's create a specific component for it and +place it in the `ListingPage` container. Desired outcome could be achieved just by editing the +`ListingPage` but extracting the capacity UI parts into a separate component will simplify the +`ListingPage` and make possible upstream updates from the Flex web template repo easier as there's +less chances for merge conflicts. So, let's create a `SectionCapacity` component in the +`src/containers/ListingPage/` directory: + +```js +import React from 'react'; +import { array, shape, string } from 'prop-types'; +import { FormattedMessage } from 'react-intl'; + +import css from './ListingPage.css'; + +const SectionCapacity = props => { + const { publicData, options, } = props; + + const capacity = publicData.capacity; + const capacityOption = options.find(option => option.key === capacity); + + return capacityOption ? ( +
+

+ +

+

{capacityOption.label}

+
+ ) : null; +}; + +SectionCapacity.propTypes = { + options: array.isRequired, + publicData: shape({ + capacity: string, + }).isRequired, +}; + +export default SectionCapacity; +``` + +Remember to add corresponding css definitions to `ListingPage.css` to get the styling right. Import +that into `ListingPage` and place it inside the `
` element: + + +```js +import SectionCapacity from './SectionCapacity'; +``` +```js +
+ // other sections + + + + // other sections +
+ +``` +```js +ListingPageComponent.defaultProps = { + // other default props + capacityOptions: config.custom.capacityOptions, +}; + +ListingPageComponent.propTypes = { + // other props + capacityOptions: array, +} +``` + +In the snippet above, the capacity options are passed to the `ListingPage` as a property, with the +default proprty value pulling the options from the custom config (`marketplace-custom-config.js`). +This way the listing page test can define it's own capacity options that are in line with test data +used in the test and custom config changes will not affect test results. + +And voilĂ , we have listing capacity presented in the listing page! + +![Capacity on listing page](./assets/extend-listing/capacity_listing_page.png) + +## Use the attribute as a search filter + +To see how the capacity attribute can be used to filter search results, please refer to the [search +filters documentation](./search-filters.md). diff --git a/docs/search-filters.md b/docs/search-filters.md index ebf7e261..7084e608 100644 --- a/docs/search-filters.md +++ b/docs/search-filters.md @@ -25,12 +25,15 @@ desktop search view. Next we'll guide you through the steps of adding a _capacity_ filter to the marketplace. First step for adding a new filter is to make sure that the data being used for filtering is saved -in the listing's `publicData` attribute. This can be done by modifying the `EditListingWizard`. Another -aspect in search filters is that the public data needs to be indexed in the API. This is currently -achieved with a manual operation done by the Sharetribe support. Once a public data attribute is -added to the listings and the data attribute is indexed, the listing searches can be filtered by -that attribute by adding a query parameter that consists of a preceding "pub\_" and the attribute -name, so for the _capacity_ attribute the parameter would be "pub_capacity". +in the listing's `publicData` attribute. On how to achieve this, please refer to the [documentation +on extending the listing data model](./extend-listing.md). Another aspect in search filters is that +the public data needs to be indexed in the API. This is currently achieved with a manual operation +done by the Sharetribe support. Once a public data attribute is added to the listings and the data +attribute is indexed, the listing searches can be filtered by that attribute by adding a query +parameter that consists of a preceding "pub\_" and the attribute name, so for the _capacity_ +attribute the parameter would be "pub_capacity". + +Further reading on public data can be found in the [extended data documentation](./extended-data.md). ### Common changes