index.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. //
  2. // Location
  3. //
  4. export interface LocationUpdate {
  5. path?: string;
  6. query?: UrlQueryMap;
  7. routeParams?: UrlQueryMap;
  8. }
  9. export interface LocationState {
  10. url: string;
  11. path: string;
  12. query: UrlQueryMap;
  13. routeParams: UrlQueryMap;
  14. }
  15. export type UrlQueryValue = string | number | boolean | string[] | number[] | boolean[];
  16. export type UrlQueryMap = { [s: string]: UrlQueryValue };
  17. //
  18. // Alerting
  19. //
  20. export interface AlertRuleApi {
  21. id: number;
  22. dashboardId: number;
  23. dashboardUid: string;
  24. dashboardSlug: string;
  25. panelId: number;
  26. name: string;
  27. state: string;
  28. newStateDate: string;
  29. evalDate: string;
  30. evalData?: object;
  31. executionError: string;
  32. url: string;
  33. }
  34. export interface AlertRule {
  35. id: number;
  36. dashboardId: number;
  37. panelId: number;
  38. name: string;
  39. state: string;
  40. stateText: string;
  41. stateIcon: string;
  42. stateClass: string;
  43. stateAge: string;
  44. url: string;
  45. info?: string;
  46. executionError?: string;
  47. evalData?: { noData: boolean };
  48. }
  49. //
  50. // Teams
  51. //
  52. export interface Team {
  53. id: number;
  54. name: string;
  55. avatarUrl: string;
  56. email: string;
  57. memberCount: number;
  58. }
  59. export interface TeamMember {
  60. userId: number;
  61. teamId: number;
  62. avatarUrl: string;
  63. email: string;
  64. login: string;
  65. }
  66. export interface TeamGroup {
  67. groupId: string;
  68. teamId: number;
  69. }
  70. //
  71. // NavModel
  72. //
  73. export interface NavModelItem {
  74. text: string;
  75. url: string;
  76. subTitle?: string;
  77. icon?: string;
  78. img?: string;
  79. id: string;
  80. active?: boolean;
  81. hideFromTabs?: boolean;
  82. divider?: boolean;
  83. children?: NavModelItem[];
  84. breadcrumbs?: Array<{ title: string; url: string }>;
  85. target?: string;
  86. parentItem?: NavModelItem;
  87. }
  88. export interface NavModel {
  89. main: NavModelItem;
  90. node: NavModelItem;
  91. }
  92. export type NavIndex = { [s: string]: NavModelItem };
  93. //
  94. // Store
  95. //
  96. export interface AlertRulesState {
  97. items: AlertRule[];
  98. searchQuery: string;
  99. }
  100. export interface TeamsState {
  101. teams: Team[];
  102. searchQuery: string;
  103. }
  104. export interface TeamState {
  105. team: Team;
  106. members: TeamMember[];
  107. groups: TeamGroup[];
  108. searchMemberQuery: string;
  109. }
  110. export interface StoreState {
  111. navIndex: NavIndex;
  112. location: LocationState;
  113. alertRules: AlertRulesState;
  114. teams: TeamsState;
  115. team: TeamState;
  116. }