晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/stando/www/wp-content/plugins/wpmudev-updates/assets/src/js/widget/ |
Upload File : |
/* global wdp_analytics_ajax, wdpI18n */
import React from 'react';
import PagesRow from './views/rows/pages'
import SitesRow from './views/rows/sites'
import eventBus from './helpers/event-bus'
import ajaxRequest from './helpers/request'
import AuthorsRow from './views/rows/authors'
import ContentList from './views/content-list'
import HeaderTabs from './components/header-tabs'
import ContentOverview from './views/content-overview'
export default class WidgetBody extends React.Component {
constructor(props) {
super(props);
this.state = {
overall: wdp_analytics_ajax.overall_data,
overview: wdp_analytics_ajax.current_data,
pages: wdp_analytics_ajax.pages,
authors: wdp_analytics_ajax.authors,
sites: wdp_analytics_ajax.sites,
autocomplete: wdp_analytics_ajax.autocomplete,
currentTab: 'overview',
currentPeriod: 7,
currentFilter: '',
currentFilterType: '',
periodLoading: false,
period: {
current: 7,
loading: false
}
}
}
componentDidMount() {
/**
* Handle autocomplete clear event.
*
* @param {object} data Data.
* @since 4.11.4
*/
eventBus.on('AnalyticsFilterClear', (data) =>
this.setState({
overview: this.state.overall,
currentFilter: '',
currentFilterType: '',
})
);
/**
* Handle period change event.
*
* @param {string} period
* @since 4.11.4
*/
eventBus.on('AnalyticsPeriodChange', (data) => this.getPeriodStats(data.period));
/**
* Handle analytics filter change.
*
* @param {object} data Data.
* @since 4.11.4
*/
eventBus.on('AnalyticsApplyFilter', (data) => {
if ('autocomplete' === data.type) {
this.setState({
overview: data.stats,
currentFilter: data.filter.filter,
currentFilterType: data.filter.type
})
} else {
this.setState({
currentTab: 'overview',
overview: data.stats,
currentFilter: data.filter.filter,
currentFilterType: data.filter.type
})
}
}
);
}
componentWillUnmount() {
// Remove custom events.
eventBus.remove('AnalyticsPeriodChange');
eventBus.remove('AnalyticsApplyFilter');
eventBus.remove('AnalyticsFilterClear');
}
/**
* Get overall stats for period changes.
*
* Make sure to update all stats. Keep all active
* filters.
*
* @param {int} period Period.
* @since 4.11.4
*/
async getPeriodStats(period) {
this.setState({
period: {
...this.state.period,
loading: true
}
})
await ajaxRequest(
'wdp-analytics',
{
type: 'full',
range: period,
filter_value: this.state.currentFilter,
filter_type: this.state.currentFilterType
}
).then(response => {
if (response.success) {
this.setState({
period: {
...this.state.period,
current: period
},
overview: response.data.current_data,
overall: response.data.overall_data,
pages: response.data.pages,
authors: response.data.authors,
sites: response.data.sites,
autocomplete: response.data.autocomplete
})
}
});
this.setState({
period: {
...this.state.period,
loading: false
}
})
}
/**
* Get available tabs for header.
*
* @since 4.11.5
* @return {{overview: string, pages: string, sites: string, authors: string}}
*/
getTabs() {
let items = wdpI18n.tabs;
Object.keys(items).forEach((tab) => {
if ('overview' !== tab && this.state[tab].length <= 0) {
delete items[tab]
}
})
return items;
}
render() {
return (
<>
<HeaderTabs
tabs={this.getTabs()}
current={this.state.currentTab}
onChange={(tab) => this.setState({
currentTab: tab
})}
/>
<div
className="wpmudui-analytics-content"
data-panes
>
<ContentOverview
metrics={wdpI18n.metrics}
data={this.state.overview}
currentTab={this.state.currentTab}
autocomplete={this.state.autocomplete}
period={this.state.period}
isFiltered={this.state.currentFilter !== ''}
filterType={this.state.currentFilterType}
/>
{this.state.pages.length > 0 &&
<ContentList
type="pages"
title={wdpI18n.labels.page_post}
metrics={wdpI18n.metrics}
list={this.state.pages}
active={'pages' === this.state.currentTab}
row={PagesRow}
period={this.state.period}
/>
}
{this.state.authors.length > 0 &&
<ContentList
type="authors"
title={wdpI18n.labels.author}
metrics={wdpI18n.metrics}
list={this.state.authors}
active={'authors' === this.state.currentTab}
row={AuthorsRow}
period={this.state.period}
/>}
{this.state.sites.length > 0 &&
<ContentList
type="sites"
title={wdpI18n.labels.site_domain}
metrics={wdpI18n.metrics}
list={this.state.sites}
active={'sites' === this.state.currentTab}
row={SitesRow}
period={this.state.period}
/>
}
</div>
</>
);
}
}