// Copyright 2021 The Casdoor Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. import React from "react"; import {Cascader, Col, Input, Row, Select} from "antd"; import i18next from "i18next"; import * as UserBackend from "../backend/UserBackend"; import * as Setting from "../Setting"; class AffiliationSelect extends React.Component { constructor(props) { super(props); this.state = { classes: props, addressOptions: [], affiliationOptions: [], }; } UNSAFE_componentWillMount() { this.getAddressOptions(this.props.application); this.getAffiliationOptions(this.props.application, this.props.user); } getAddressOptions(application) { if (application.affiliationUrl === "") { return; } const addressUrl = application.affiliationUrl.split("|")[0]; UserBackend.getAddressOptions(addressUrl) .then((addressOptions) => { this.setState({ addressOptions: addressOptions, }); }); } getAffiliationOptions(application, user) { if (application.affiliationUrl === "") { return; } const affiliationUrl = application.affiliationUrl.split("|")[1]; const code = user.address[user.address.length - 1]; UserBackend.getAffiliationOptions(affiliationUrl, code) .then((affiliationOptions) => { this.setState({ affiliationOptions: affiliationOptions, }); }); } updateUserField(key, value) { this.props.onUpdateUserField(key, value); } render() { return ( { this.props.application?.affiliationUrl === "" ? null : ( {Setting.getLabel(i18next.t("user:Address"), i18next.t("user:Address - Tooltip"))} : { this.updateUserField("address", value); this.updateUserField("affiliation", ""); this.updateUserField("score", 0); this.getAffiliationOptions(this.props.application, this.props.user); }} placeholder={i18next.t("signup:Please input your address!")} /> ) } {Setting.getLabel(i18next.t("user:Affiliation"), i18next.t("user:Affiliation - Tooltip"))} : { this.props.application?.affiliationUrl === "" ? ( { this.updateUserField("affiliation", e.target.value); }} /> ) : (