import * as React from 'react'; import { Link } from 'wdk-client/Components'; import { Props } from 'wdk-client/Controllers/WebServicesHelpController'; import { makeClassNameHelper } from 'wdk-client/Utils/ComponentUtils'; import DownloadFormContainer from 'wdk-client/Views/ReporterForm/DownloadFormContainer'; import 'wdk-client/Components/WebServicesHelp/WebServicesHelp.scss'; const cx = makeClassNameHelper('wdk-WebServicesHelp'); export default function(props: Props) { let step = props.resultType?.type === 'step' ? props.resultType.step : undefined; let searchName = step?.searchName; let parameters = step?.searchConfig.parameters || {}; let recordClassUrlSegment = props.recordClass?.urlSegment; let reportName = props.selectedReporter; let reportConfig = props.formState || "Not yet configured" let l = window.location; let webapp = l.pathname.substring(0, l.pathname.indexOf("/", 1)); let urlBase = l.protocol + "//" + l.host + webapp; let url = urlBase + '/service/record-types/' + recordClassUrlSegment + '/searches/' + searchName + '/reports/' + reportName; let searchConfig = step?.searchConfig; let queryParams = Object.keys(parameters) .map((name, index) => (index === 0 ? "?" : "&") + name + "=" + encodeURIComponent(parameters[name])); let reportConfigQueryParam = (queryParams.length === 0 ? "?" : "&") + "reportConfig="; let getUrlPieces = [ url, ...queryParams ]; let getUrlLink = getUrlPieces.join("") + reportConfigQueryParam + encodeURIComponent(JSON.stringify(reportConfig)); let getUrlDisplay = ( {getUrlPieces.map(piece => {piece}
)} {reportConfigQueryParam + JSON.stringify(reportConfig)}
); let requestJson = JSON.stringify({ searchConfig, reportConfig }, null, 2); let goBackUrl = `/search/${props.recordClass?.urlSegment}/${props.question?.urlSegment}` + `?${Object.entries(parameters).map(([ key, value ]) => `param.${key}=${value}`).join('&')}`; return ( props.resultType?.type !== 'step' || !props.ontology || !props.question || !props.recordClass ) ?
This page cannot be rendered with the passed query parameters.
:

Build A Web Services Request

Build the search component of a GET or POST request

The search parameters in the requests to the right use your input from the {' '} {props.recordClass.displayNamePlural} by {props.question.displayName} search page. {' '} To revise them, go back to that page.

Build the report component of the GET or POST request
; } interface GeneratedRequestsProps { getUrlLink: string; getUrlDisplay: React.ReactNode; url: string; requestJson: string; } function GeneratedRequests({ getUrlLink, getUrlDisplay, url, requestJson }: GeneratedRequestsProps) { return (
Here is your GET or POST

GET

{getUrlDisplay}

POST

{url}
              {requestJson}
            
); }