14769 search by project type
This commit is contained in:
@@ -14,7 +14,7 @@ export default function Search(props) {
|
||||
id="main-content"
|
||||
role="main"
|
||||
>
|
||||
<AdvancedSearch myportal={props.myportal || false} />
|
||||
<AdvancedSearch props={props} myportal={props.myportal || false} />
|
||||
</main>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -174,6 +174,16 @@ let AdvancedSearch = (props) => {
|
||||
? [{}]
|
||||
: props.appealType.appealTypeOptions.value;
|
||||
|
||||
const projecttypeOptionsObj = _.isEmpty(props)
|
||||
? [{}]
|
||||
: _.isEmpty(props.appealType)
|
||||
? [{}]
|
||||
: _.isEmpty(props.appealType.projectTypeOptions)
|
||||
? [{}]
|
||||
: _.isEmpty(props.appealType.projectTypeOptions.value)
|
||||
? [{}]
|
||||
: props.appealType.projectTypeOptions.value;
|
||||
|
||||
let lpaOptionsObj = _.isEmpty(props)
|
||||
? [{}]
|
||||
: _.isEmpty(props.LPAData)
|
||||
@@ -362,9 +372,117 @@ let AdvancedSearch = (props) => {
|
||||
</>
|
||||
);
|
||||
};
|
||||
const RenderProjectTypeList = ({
|
||||
name,
|
||||
id,
|
||||
input,
|
||||
optionsObj,
|
||||
meta: { touched, error },
|
||||
label,
|
||||
errormsg,
|
||||
}) => {
|
||||
return (
|
||||
<>
|
||||
<div
|
||||
className={
|
||||
touched && error
|
||||
? "govuk-form-group govuk-form-group--error"
|
||||
: "govuk-form-group "
|
||||
}
|
||||
>
|
||||
<label className="govuk-label" htmlFor={id}>
|
||||
{label}
|
||||
{name}
|
||||
</label>
|
||||
{touched && error && (
|
||||
<span
|
||||
id={name + "-error"}
|
||||
className="govuk-error-message"
|
||||
>
|
||||
<span className="govuk-visually-hidden">
|
||||
Error:
|
||||
</span>{" "}
|
||||
{errormsg}
|
||||
</span>
|
||||
)}
|
||||
<div>
|
||||
<select
|
||||
{...input}
|
||||
className="govuk-select"
|
||||
id={id}
|
||||
name={name}
|
||||
//onChange={(e) => props.onChangeSelectAppealType(e)}
|
||||
>
|
||||
<option value="" disabled defaultValue>
|
||||
{t("common:drop-down-select")}
|
||||
</option>
|
||||
{_.isEmpty(optionsObj)
|
||||
? ""
|
||||
: Object.keys(optionsObj).map((key, index) => {
|
||||
return (
|
||||
<option
|
||||
key={key}
|
||||
value={
|
||||
_.isEmpty(optionsObj[key])
|
||||
? ""
|
||||
: _.isEmpty(
|
||||
optionsObj[key]
|
||||
)
|
||||
? ""
|
||||
: _.isEmpty(
|
||||
optionsObj[key]
|
||||
.pinswg_sipsprojecttypeid
|
||||
)
|
||||
? ""
|
||||
: optionsObj[key]
|
||||
.pinswg_sipsprojecttypeid +
|
||||
"," +
|
||||
optionsObj[
|
||||
key
|
||||
].pinswg_name
|
||||
.replace(
|
||||
/(\band|[\s\-\+\(\)\,\&])/g,
|
||||
""
|
||||
)
|
||||
.toLowerCase()
|
||||
}
|
||||
>
|
||||
{_.isEmpty(optionsObj[key])
|
||||
? ""
|
||||
: _.isEmpty(optionsObj[key])
|
||||
? ""
|
||||
: _.isEmpty(
|
||||
optionsObj[key]
|
||||
.pinswg_name
|
||||
)
|
||||
? ""
|
||||
: router.locale == "cy"
|
||||
? jsonpath(
|
||||
'$..[?(@.value=="' +
|
||||
optionsObj[key]
|
||||
.pinswg_name +
|
||||
'")].value_cy',
|
||||
transLookup
|
||||
)
|
||||
: optionsObj[key]
|
||||
.pinswg_name ||
|
||||
t(
|
||||
"case:summary-no-date-entered-label"
|
||||
)}
|
||||
</option>
|
||||
);
|
||||
})}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
//const [showSpinnerState, setShowSpinnerState] = useState(false);
|
||||
|
||||
const selectAppealTypesValue = props.formValues?.appealTypes || "";
|
||||
|
||||
// let spinnerState = () => {
|
||||
// showSpinnerState == true
|
||||
// ? setShowSpinnerState(false)
|
||||
@@ -390,7 +508,12 @@ let AdvancedSearch = (props) => {
|
||||
|
||||
searchString +=
|
||||
values.statusCode != null
|
||||
? "statuscode=" + values.statusCode + "&"
|
||||
? "statuscode=" + values.projecttype + "&"
|
||||
: "";
|
||||
|
||||
searchString +=
|
||||
values.projecttype != null
|
||||
? "projecttype=" + values.projecttype.split(",")[0] + "&"
|
||||
: "";
|
||||
|
||||
searchString = "?" + searchString.slice(0, -1);
|
||||
@@ -457,6 +580,26 @@ let AdvancedSearch = (props) => {
|
||||
label={t("search:appealtype-label")}
|
||||
errormsg="Appeal type is required"
|
||||
/>
|
||||
{props.props?.props.form[
|
||||
props.form
|
||||
]?.values?.appealTypes.split(",")[0] ===
|
||||
"846040002" && (
|
||||
<Field
|
||||
name="projecttype"
|
||||
id="projecttype"
|
||||
component={
|
||||
RenderProjectTypeList
|
||||
}
|
||||
optionsObj={
|
||||
projecttypeOptionsObj
|
||||
}
|
||||
// validate={[required]}
|
||||
label={t(
|
||||
"search:project-type-label"
|
||||
)}
|
||||
errormsg="Project type is required"
|
||||
/>
|
||||
)}
|
||||
<Field
|
||||
name="lpaTypes"
|
||||
id="lpaTypes"
|
||||
|
||||
@@ -317,6 +317,18 @@ const SearchResults = (props) => {
|
||||
</span>
|
||||
{item.title}
|
||||
</Link>
|
||||
|
||||
{detailsObj.hasOwnProperty(
|
||||
"_pinswg_projecttype_value@OData.Community.Display.V1.FormattedValue"
|
||||
) && (
|
||||
<div className="govuk-!-font-size-14">
|
||||
{
|
||||
detailsObj[
|
||||
"_pinswg_projecttype_value@OData.Community.Display.V1.FormattedValue"
|
||||
]
|
||||
}
|
||||
</div>
|
||||
)}
|
||||
<RepsOnResults
|
||||
detailsObj={detailsObj}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user