useNginxPerformance.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import type { NginxPerformanceInfo } from '@/api/ngx'
  2. import ngx from '@/api/ngx'
  3. import { computed, ref } from 'vue'
  4. export function useNginxPerformance() {
  5. const loading = ref(true)
  6. const nginxInfo = ref<NginxPerformanceInfo>()
  7. const error = ref<string>('')
  8. const lastUpdateTime = ref(new Date())
  9. // 更新刷新时间
  10. function updateLastUpdateTime() {
  11. lastUpdateTime.value = new Date()
  12. }
  13. // 格式化上次更新时间
  14. const formattedUpdateTime = computed(() => {
  15. return lastUpdateTime.value.toLocaleTimeString()
  16. })
  17. // 获取Nginx状态数据
  18. async function fetchInitialData() {
  19. loading.value = true
  20. error.value = ''
  21. try {
  22. const result = await ngx.detailed_status()
  23. nginxInfo.value = result.info
  24. updateLastUpdateTime()
  25. }
  26. catch (e) {
  27. if (e instanceof Error) {
  28. error.value = e.message
  29. }
  30. else {
  31. error.value = $gettext('Get data failed')
  32. }
  33. }
  34. finally {
  35. loading.value = false
  36. }
  37. }
  38. return {
  39. loading,
  40. nginxInfo,
  41. error,
  42. lastUpdateTime,
  43. formattedUpdateTime,
  44. updateLastUpdateTime,
  45. fetchInitialData,
  46. }
  47. }