|
1 | 1 | import React, { useState, useMemo, useEffect, useCallback } from "react";
|
2 |
| -import { Card, Tabs, Breadcrumb, Button, BackTop } from "antd"; |
| 2 | +import { Card, Tabs, Breadcrumb, Button, BackTop, Empty } from "antd"; |
3 | 3 | import { calculateBounds } from "@/components/vendor/data/common/query/timefilter";
|
4 | 4 | import { formatter } from "@/utils/format";
|
5 | 5 | import moment from "moment";
|
@@ -117,81 +117,88 @@ const Monitor = (props) => {
|
117 | 117 | <BreadcrumbList data={breadcrumbList} />
|
118 | 118 |
|
119 | 119 | <Card bodyStyle={{ padding: 15 }}>
|
120 |
| - <div style={{ marginBottom: 5 }}> |
121 |
| - <div style={{ display: 'flex', gap: 8 }}> |
122 |
| - <div style={{ flexGrow: 0 }}> |
123 |
| - <DatePicker |
124 |
| - locale={getLocale()} |
125 |
| - start={state.timeRange.min} |
126 |
| - end={state.timeRange.max} |
127 |
| - onRangeChange={({ start, end }) => { |
128 |
| - handleTimeChange({ start, end }) |
129 |
| - }} |
130 |
| - {...refresh} |
131 |
| - onRefreshChange={setRefresh} |
132 |
| - onRefresh={handleTimeChange} |
133 |
| - showTimeSetting={true} |
134 |
| - showTimeInterval={true} |
135 |
| - timeInterval={state.timeInterval} |
136 |
| - showTimeout={true} |
137 |
| - timeout={state.timeout} |
138 |
| - onTimeSettingChange={(timeSetting) => { |
139 |
| - localStorage.setItem(TIMEOUT_CACHE_KEY, timeSetting.timeout) |
140 |
| - setState({ |
141 |
| - ...state, |
142 |
| - timeInterval: timeSetting.timeInterval, |
143 |
| - timeout: timeSetting.timeout |
144 |
| - }); |
| 120 | + { |
| 121 | + selectedCluster ? ( |
| 122 | + <> |
| 123 | + <div style={{ marginBottom: 5 }}> |
| 124 | + <div style={{ display: 'flex', gap: 8 }}> |
| 125 | + <div style={{ flexGrow: 0 }}> |
| 126 | + <DatePicker |
| 127 | + locale={getLocale()} |
| 128 | + start={state.timeRange.min} |
| 129 | + end={state.timeRange.max} |
| 130 | + onRangeChange={({ start, end }) => { |
| 131 | + handleTimeChange({ start, end }) |
| 132 | + }} |
| 133 | + {...refresh} |
| 134 | + onRefreshChange={setRefresh} |
| 135 | + onRefresh={handleTimeChange} |
| 136 | + showTimeSetting={true} |
| 137 | + showTimeInterval={true} |
| 138 | + timeInterval={state.timeInterval} |
| 139 | + showTimeout={true} |
| 140 | + timeout={state.timeout} |
| 141 | + onTimeSettingChange={(timeSetting) => { |
| 142 | + localStorage.setItem(TIMEOUT_CACHE_KEY, timeSetting.timeout) |
| 143 | + setState({ |
| 144 | + ...state, |
| 145 | + timeInterval: timeSetting.timeInterval, |
| 146 | + timeout: timeSetting.timeout |
| 147 | + }); |
| 148 | + }} |
| 149 | + timeZone={timeZone} |
| 150 | + onTimeZoneChange={setTimeZone} |
| 151 | + recentlyUsedRangesKey={'monitor'} |
| 152 | + /> |
| 153 | + </div> |
| 154 | + </div> |
| 155 | + </div> |
| 156 | + |
| 157 | + <Tabs |
| 158 | + activeKey={param?.tab || panes[0]?.key} |
| 159 | + onChange={(key) => { |
| 160 | + setParam({ ...param, tab: key }); |
145 | 161 | }}
|
146 |
| - timeZone={timeZone} |
147 |
| - onTimeZoneChange={setTimeZone} |
148 |
| - recentlyUsedRangesKey={'monitor'} |
149 |
| - /> |
150 |
| - </div> |
151 |
| - </div> |
152 |
| - </div> |
153 |
| - |
154 |
| - <Tabs |
155 |
| - activeKey={param?.tab || panes[0]?.key} |
156 |
| - onChange={(key) => { |
157 |
| - setParam({ ...param, tab: key }); |
158 |
| - }} |
159 |
| - tabBarGutter={10} |
160 |
| - destroyInactiveTabPane |
161 |
| - animated={false} |
162 |
| - > |
163 |
| - {panes.map((pane) => ( |
164 |
| - <TabPane tab={pane.title} key={pane.key}> |
165 |
| - <StatisticBar |
166 |
| - setSpinning={setSpinning} |
167 |
| - onInfoChange={onInfoChange} |
168 |
| - {...state} |
169 |
| - {...extraParams} |
170 |
| - /> |
171 |
| - <div style={{ marginTop: 15 }}> |
172 |
| - {checkPaneParams({ |
173 |
| - ...state, |
174 |
| - ...extraParams, |
175 |
| - }) ? ( |
176 |
| - typeof pane.component == "string" ? ( |
177 |
| - pane.component |
178 |
| - ) : ( |
179 |
| - <pane.component |
180 |
| - selectedCluster={selectedCluster} |
181 |
| - isAgent={isAgent} |
182 |
| - {...state} |
183 |
| - handleTimeChange={handleTimeChange} |
| 162 | + tabBarGutter={10} |
| 163 | + destroyInactiveTabPane |
| 164 | + animated={false} |
| 165 | + > |
| 166 | + {panes.map((pane) => ( |
| 167 | + <TabPane tab={pane.title} key={pane.key}> |
| 168 | + <StatisticBar |
184 | 169 | setSpinning={setSpinning}
|
| 170 | + onInfoChange={onInfoChange} |
| 171 | + {...state} |
185 | 172 | {...extraParams}
|
186 |
| - bucketSize={state.timeInterval} |
187 |
| - timeout={state.timeout} |
188 | 173 | />
|
189 |
| - ) |
190 |
| - ) : null} |
191 |
| - </div> |
192 |
| - </TabPane> |
193 |
| - ))} |
194 |
| - </Tabs> |
| 174 | + <div style={{ marginTop: 15 }}> |
| 175 | + {checkPaneParams({ |
| 176 | + ...state, |
| 177 | + ...extraParams, |
| 178 | + }) ? ( |
| 179 | + typeof pane.component == "string" ? ( |
| 180 | + pane.component |
| 181 | + ) : ( |
| 182 | + <pane.component |
| 183 | + selectedCluster={selectedCluster} |
| 184 | + isAgent={isAgent} |
| 185 | + {...state} |
| 186 | + handleTimeChange={handleTimeChange} |
| 187 | + setSpinning={setSpinning} |
| 188 | + {...extraParams} |
| 189 | + bucketSize={state.timeInterval} |
| 190 | + timeout={state.timeout} |
| 191 | + /> |
| 192 | + ) |
| 193 | + ) : null} |
| 194 | + </div> |
| 195 | + </TabPane> |
| 196 | + ))} |
| 197 | + </Tabs> |
| 198 | + </> |
| 199 | + ) : <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} /> |
| 200 | + } |
| 201 | + |
195 | 202 | </Card>
|
196 | 203 |
|
197 | 204 | <BackTop />
|
|
0 commit comments