14769 search by project type

This commit is contained in:
2025-03-21 17:40:11 +00:00
parent 4d4d1fe995
commit b50f94074b
14 changed files with 379 additions and 8 deletions
+1 -1
View File
@@ -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>
);
}
+144 -1
View File
@@ -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"
+12
View File
@@ -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}
/>