/** * Copyright (c) OpenSpug Organization. https://github.com/openspug/spug * Copyright (c) * Released under the AGPL-3.0 License. */ import React, { useState, useEffect } from 'react'; import { Link } from 'react-router-dom'; import { observer } from 'mobx-react'; import { Modal, Menu, Spin, Input } from 'antd'; import { OrderedListOutlined, BuildOutlined, SearchOutlined } from '@ant-design/icons'; import { includes, http } from 'libs'; import styles from './index.module.less'; import envStore from 'pages/config/environment/store'; import lds from 'lodash'; export default observer(function AppSelector(props) { const [fetching, setFetching] = useState(false); const [env_id, setEnvId] = useState(); const [search, setSearch] = useState(); const [deploys, setDeploys] = useState([]); useEffect(() => { setFetching(true); http.get('/api/app/deploy/') .then(res => setDeploys(res)) .finally(() => setFetching(false)) if (!envStore.records.length) { envStore.fetchRecords().then(_initEnv) } else { _initEnv() } }, []) function _initEnv() { if (envStore.records.length) { setEnvId(envStore.records[0].id) } } let records = deploys.filter(x => x.env_id === Number(env_id)); if (search) records = records.filter(x => includes(x['app_name'], search) || includes(x['app_key'], search)); if (props.filter) records = records.filter(x => props.filter(x)); return (
({key: x.id, label: x.name, title: x.name}))} onSelect={({selectedKeys}) => setEnvId(selectedKeys[0])}/>
{lds.get(envStore.idMap, `${env_id}.name`)}
} onChange={e => setSearch(e.target.value)}/>
{records.map(item => (
props.onSelect(item)}> {item.extend === '1' ? : }
{item.app_name}
{item.app_key}
))} {records.length === 0 &&
该环境下还没有可发布或构建的应用哦,快去应用管理创建应用发布配置吧。
}
) })