文件操作 - useDashboardSave.tsx
返回文件管理
返回主菜单
删除本文件
文件: /usr/share/grafana/public/app/features/dashboard/components/SaveDashboard/useDashboardSave.tsx
编辑文件内容
import { useEffect } from 'react'; import useAsyncFn from 'react-use/lib/useAsyncFn'; import { AppEvents, locationUtil } from '@grafana/data'; import { useDispatch, useSelector } from 'react-redux'; import { SaveDashboardOptions } from './types'; import { CoreEvents, StoreState } from 'app/types'; import appEvents from 'app/core/app_events'; import { updateLocation } from 'app/core/reducers/location'; import { DashboardModel } from 'app/features/dashboard/state'; import { getBackendSrv } from 'app/core/services/backend_srv'; const saveDashboard = async (saveModel: any, options: SaveDashboardOptions, dashboard: DashboardModel) => { const folderId = options.folderId >= 0 ? options.folderId : dashboard.meta.folderId || saveModel.folderId; return await getBackendSrv().saveDashboard(saveModel, { ...options, folderId }); }; export const useDashboardSave = (dashboard: DashboardModel) => { const location = useSelector((state: StoreState) => state.location); const dispatch = useDispatch(); const [state, onDashboardSave] = useAsyncFn( async (clone: any, options: SaveDashboardOptions, dashboard: DashboardModel) => await saveDashboard(clone, options, dashboard), [] ); useEffect(() => { if (state.value) { dashboard.version = state.value.version; // important that these happen before location redirect below appEvents.emit(CoreEvents.dashboardSaved, dashboard); appEvents.emit(AppEvents.alertSuccess, ['Dashboard saved']); const newUrl = locationUtil.stripBaseFromUrl(state.value.url); const currentPath = location.path; if (newUrl !== currentPath) { dispatch( updateLocation({ path: newUrl, replace: true, query: {}, }) ); } } }, [state]); return { state, onDashboardSave }; };
修改文件时间
将文件时间修改为当前时间的前一年
删除文件