@ytsaurus/ui 1.21.0 → 1.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +25 -8
  2. package/build/cjs/@types/core.d.ts +1 -1
  3. package/build/cjs/server/ServerFactory.d.ts +3 -0
  4. package/build/cjs/server/ServerFactory.js +3 -0
  5. package/build/cjs/server/ServerFactory.js.map +1 -1
  6. package/build/cjs/server/controllers/availability.js +36 -18
  7. package/build/cjs/server/controllers/availability.js.map +1 -1
  8. package/build/cjs/server/controllers/odin-proxy-api.js +3 -4
  9. package/build/cjs/server/controllers/odin-proxy-api.js.map +1 -1
  10. package/build/cjs/server/index.js +5 -0
  11. package/build/cjs/server/index.js.map +1 -1
  12. package/build/cjs/server/middlewares/check-configuration.d.ts +3 -0
  13. package/build/cjs/server/middlewares/check-configuration.js +28 -0
  14. package/build/cjs/server/middlewares/check-configuration.js.map +1 -0
  15. package/build/cjs/ui/pages/odin/_actions/odin-overview.js +1 -1
  16. package/build/cjs/ui/pages/odin/_actions/odin-overview.js.map +1 -1
  17. package/build/cjs/ui/pages/odin/controls/OdinToolbar.js +2 -1
  18. package/build/cjs/ui/pages/odin/controls/OdinToolbar.js.map +1 -1
  19. package/build/cjs/ui/pages/odin/odin-utils.d.ts +1 -1
  20. package/build/cjs/ui/pages/odin/odin-utils.js +2 -2
  21. package/build/cjs/ui/pages/odin/odin-utils.js.map +1 -1
  22. package/build/esm/@types/core.d.ts +1 -1
  23. package/build/esm/server/ServerFactory.d.ts +3 -0
  24. package/build/esm/server/ServerFactory.js +4 -0
  25. package/build/esm/server/ServerFactory.js.map +1 -1
  26. package/build/esm/server/controllers/availability.js +43 -23
  27. package/build/esm/server/controllers/availability.js.map +1 -1
  28. package/build/esm/server/controllers/odin-proxy-api.js +9 -10
  29. package/build/esm/server/controllers/odin-proxy-api.js.map +1 -1
  30. package/build/esm/server/index.js +5 -0
  31. package/build/esm/server/index.js.map +1 -1
  32. package/build/esm/server/middlewares/check-configuration.d.ts +3 -0
  33. package/build/esm/server/middlewares/check-configuration.js +20 -0
  34. package/build/esm/server/middlewares/check-configuration.js.map +1 -0
  35. package/build/esm/ui/pages/odin/_actions/odin-overview.js +1 -1
  36. package/build/esm/ui/pages/odin/_actions/odin-overview.js.map +1 -1
  37. package/build/esm/ui/pages/odin/controls/OdinToolbar.js +3 -2
  38. package/build/esm/ui/pages/odin/controls/OdinToolbar.js.map +1 -1
  39. package/build/esm/ui/pages/odin/odin-utils.d.ts +1 -1
  40. package/build/esm/ui/pages/odin/odin-utils.js +2 -2
  41. package/build/esm/ui/pages/odin/odin-utils.js.map +1 -1
  42. package/dist/public/build/assets-manifest.json +4 -4
  43. package/dist/public/build/js/main.724df837.js +3 -0
  44. package/dist/public/build/js/{main.53d3bdc5.js.map → main.724df837.js.map} +1 -1
  45. package/dist/public/build/manifest.json +2 -2
  46. package/dist/server/ServerFactory.d.ts +3 -0
  47. package/dist/server/ServerFactory.js +3 -0
  48. package/dist/server/controllers/availability.js +36 -18
  49. package/dist/server/controllers/odin-proxy-api.js +3 -4
  50. package/dist/server/index.js +5 -0
  51. package/dist/server/middlewares/check-configuration.d.ts +3 -0
  52. package/dist/server/middlewares/check-configuration.js +28 -0
  53. package/package.json +2 -2
  54. package/dist/public/build/js/main.53d3bdc5.js +0 -3
  55. /package/dist/public/build/js/{main.53d3bdc5.js.LICENSE.txt → main.724df837.js.LICENSE.txt} +0 -0
@@ -7,7 +7,7 @@ import { Checkbox } from '@gravity-ui/uikit';
7
7
  import Select from '../../../components/Select/Select';
8
8
  import { Datepicker } from '../../../components/common/Datepicker';
9
9
  import block from 'bem-cn-lite';
10
- import { getDate, getMetric, getStat, getUseCurrentDate } from '../_selectors';
10
+ import { getDate, getMetric, getOdinCluster, getStat, getUseCurrentDate } from '../_selectors';
11
11
  import { setDate, setMetric, toggleUseCurrentDate } from '../_actions';
12
12
  import Utils from '../odin-utils';
13
13
  import hammer from '../../../common/hammer';
@@ -20,8 +20,9 @@ function useLoadMetricsList() {
20
20
  _useState2 = _slicedToArray(_useState, 2),
21
21
  metrics = _useState2[0],
22
22
  setMetrics = _useState2[1];
23
+ var cluster = useSelector(getOdinCluster);
23
24
  useEffect(function () {
24
- Utils.listMetrics().then(function (metrics) {
25
+ Utils.listMetrics(cluster).then(function (metrics) {
25
26
  setMetrics(_map(metrics, function (_ref) {
26
27
  var name = _ref.name,
27
28
  text = _ref.display_name;
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useState","useDispatch","useSelector","Checkbox","Select","Datepicker","block","getDate","getMetric","getStat","getUseCurrentDate","setDate","setMetric","toggleUseCurrentDate","Utils","hammer","jsx","_jsx","jsxs","_jsxs","odinCN","tbBlock","useLoadMetricsList","_useState","_useState2","_slicedToArray","metrics","setMetrics","listMetrics","then","_map","_ref","name","text","display_name","value","MetricSelector","metric","dispatch","handleChange","length","_findIndex","_ref2","label","items","onUpdate","vals","showSearch","width","UseCurrentDate","useCurrentDate","size","content","checked","onChange","CustomDate","date","_ref3","from","range","to","scale","hasClear","controlWidth","Toolbar","_ref4","className","stat","children","format","Percent"],"sources":["OdinToolbar.js"],"sourcesContent":["import React, {useCallback, useEffect, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Checkbox} from '@gravity-ui/uikit';\nimport Select from '../../../components/Select/Select';\nimport {Datepicker} from '../../../components/common/Datepicker';\n\nimport block from 'bem-cn-lite';\nimport _ from 'lodash';\n\nimport {getDate, getMetric, getStat, getUseCurrentDate} from '../_selectors';\nimport {setDate, setMetric, toggleUseCurrentDate} from '../_actions';\nimport Utils from '../odin-utils';\nimport hammer from '../../../common/hammer';\n\nconst odinCN = block('odin');\n\nconst tbBlock = block('elements-toolbar');\n\nfunction useLoadMetricsList() {\n const [metrics, setMetrics] = useState([]);\n\n useEffect(() => {\n Utils.listMetrics().then((metrics) => {\n setMetrics(\n _.map(metrics, ({name, display_name: text}) => ({\n value: name,\n text,\n })),\n );\n });\n }, []);\n\n return metrics;\n}\n\nfunction MetricSelector() {\n const metric = useSelector(getMetric);\n const dispatch = useDispatch();\n const metrics = useLoadMetricsList();\n const handleChange = useCallback((value) => {\n dispatch(setMetric(value));\n }, []);\n\n if (metrics.length > 0 && _.findIndex(metrics, ({value}) => value === metric) === -1) {\n dispatch(setMetric(metrics[0].value));\n }\n\n return (\n <Select\n value={[metric]}\n label=\"Check:\"\n items={metrics}\n onUpdate={(vals) => handleChange(vals[0])}\n showSearch={true}\n width=\"max\"\n />\n );\n}\n\nfunction UseCurrentDate() {\n const useCurrentDate = useSelector(getUseCurrentDate);\n const dispatch = useDispatch();\n const handleChange = useCallback(() => {\n dispatch(toggleUseCurrentDate());\n }, []);\n\n return (\n <Checkbox\n size=\"l\"\n content=\"Current date\"\n checked={useCurrentDate}\n onChange={handleChange}\n />\n );\n}\n\nfunction CustomDate() {\n const date = useSelector(getDate);\n const dispatch = useDispatch();\n const handleChange = useCallback(({from}) => {\n dispatch(setDate(from));\n }, []);\n\n return (\n <Datepicker\n range={false}\n from={date}\n to={date}\n scale=\"day\"\n hasClear={false}\n controlWidth={180}\n onUpdate={handleChange}\n />\n );\n}\n\nfunction Toolbar({className}) {\n const stat = useSelector(getStat);\n return (\n <div className={className}>\n <div className={odinCN('toolbar-metric-filter', tbBlock('component'))}>\n <MetricSelector />\n </div>\n <div className={odinCN('toolbar-date-filter', tbBlock('component'))}>\n <CustomDate />\n </div>\n <div className={odinCN('toolbar-current-date', tbBlock('component'))}>\n <UseCurrentDate />\n </div>\n <div className={odinCN('toolbar-availability-message', tbBlock('component'))}>\n <div className=\"elements-message elements-message_theme_info\">\n <p className=\"elements-message__paragraph\">\n We were available from <em>{hammer.format.Percent(stat.from * 100)}</em> to{' '}\n <em>{hammer.format.Percent(stat.to * 100)}</em> of time.\n </p>\n </div>\n </div>\n </div>\n );\n}\n\nexport default Toolbar;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useCallback","useEffect","useState","useDispatch","useSelector","Checkbox","Select","Datepicker","block","getDate","getMetric","getOdinCluster","getStat","getUseCurrentDate","setDate","setMetric","toggleUseCurrentDate","Utils","hammer","jsx","_jsx","jsxs","_jsxs","odinCN","tbBlock","useLoadMetricsList","_useState","_useState2","_slicedToArray","metrics","setMetrics","cluster","listMetrics","then","_map","_ref","name","text","display_name","value","MetricSelector","metric","dispatch","handleChange","length","_findIndex","_ref2","label","items","onUpdate","vals","showSearch","width","UseCurrentDate","useCurrentDate","size","content","checked","onChange","CustomDate","date","_ref3","from","range","to","scale","hasClear","controlWidth","Toolbar","_ref4","className","stat","children","format","Percent"],"sources":["OdinToolbar.js"],"sourcesContent":["import React, {useCallback, useEffect, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Checkbox} from '@gravity-ui/uikit';\nimport Select from '../../../components/Select/Select';\nimport {Datepicker} from '../../../components/common/Datepicker';\n\nimport block from 'bem-cn-lite';\nimport _ from 'lodash';\n\nimport {getDate, getMetric, getOdinCluster, getStat, getUseCurrentDate} from '../_selectors';\nimport {setDate, setMetric, toggleUseCurrentDate} from '../_actions';\nimport Utils from '../odin-utils';\nimport hammer from '../../../common/hammer';\n\nconst odinCN = block('odin');\n\nconst tbBlock = block('elements-toolbar');\n\nfunction useLoadMetricsList() {\n const [metrics, setMetrics] = useState([]);\n const cluster = useSelector(getOdinCluster);\n\n useEffect(() => {\n Utils.listMetrics(cluster).then((metrics) => {\n setMetrics(\n _.map(metrics, ({name, display_name: text}) => ({\n value: name,\n text,\n })),\n );\n });\n }, []);\n\n return metrics;\n}\n\nfunction MetricSelector() {\n const metric = useSelector(getMetric);\n const dispatch = useDispatch();\n const metrics = useLoadMetricsList();\n const handleChange = useCallback((value) => {\n dispatch(setMetric(value));\n }, []);\n\n if (metrics.length > 0 && _.findIndex(metrics, ({value}) => value === metric) === -1) {\n dispatch(setMetric(metrics[0].value));\n }\n\n return (\n <Select\n value={[metric]}\n label=\"Check:\"\n items={metrics}\n onUpdate={(vals) => handleChange(vals[0])}\n showSearch={true}\n width=\"max\"\n />\n );\n}\n\nfunction UseCurrentDate() {\n const useCurrentDate = useSelector(getUseCurrentDate);\n const dispatch = useDispatch();\n const handleChange = useCallback(() => {\n dispatch(toggleUseCurrentDate());\n }, []);\n\n return (\n <Checkbox\n size=\"l\"\n content=\"Current date\"\n checked={useCurrentDate}\n onChange={handleChange}\n />\n );\n}\n\nfunction CustomDate() {\n const date = useSelector(getDate);\n const dispatch = useDispatch();\n const handleChange = useCallback(({from}) => {\n dispatch(setDate(from));\n }, []);\n\n return (\n <Datepicker\n range={false}\n from={date}\n to={date}\n scale=\"day\"\n hasClear={false}\n controlWidth={180}\n onUpdate={handleChange}\n />\n );\n}\n\nfunction Toolbar({className}) {\n const stat = useSelector(getStat);\n return (\n <div className={className}>\n <div className={odinCN('toolbar-metric-filter', tbBlock('component'))}>\n <MetricSelector />\n </div>\n <div className={odinCN('toolbar-date-filter', tbBlock('component'))}>\n <CustomDate />\n </div>\n <div className={odinCN('toolbar-current-date', tbBlock('component'))}>\n <UseCurrentDate />\n </div>\n <div className={odinCN('toolbar-availability-message', tbBlock('component'))}>\n <div className=\"elements-message elements-message_theme_info\">\n <p className=\"elements-message__paragraph\">\n We were available from <em>{hammer.format.Percent(stat.from * 100)}</em> to{' '}\n <em>{hammer.format.Percent(stat.to * 100)}</em> of time.\n </p>\n </div>\n </div>\n </div>\n );\n}\n\nexport default Toolbar;\n"],"mappings":"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"}
@@ -19,7 +19,7 @@ export default class Utils {
19
19
  static request<T = unknown>(path: string, saveCancelToken?: SaveCancelToken): Promise<T>;
20
20
  static isRequestCanceled(error: any): boolean;
21
21
  static checkStatus(cluster: string): Promise<unknown>;
22
- static listMetrics(): Promise<MetricListItem[]>;
22
+ static listMetrics(cluster: string): Promise<MetricListItem[]>;
23
23
  static getMetric(cluster: string, metric: string, from: Date, to: Date, saveCT: SaveCancelToken): Promise<Availability>;
24
24
  static getMetricOfThisDay(cluster: string, metric: string, date: string | null, saveCancelToken: SaveCancelToken): Promise<Availability>;
25
25
  static prepareAvailabilityData(availability: Availability, size: number): Array<MetricData>;
@@ -46,8 +46,8 @@ var Utils = /*#__PURE__*/function () {
46
46
  }
47
47
  }, {
48
48
  key: "listMetrics",
49
- value: function listMetrics() {
50
- return Utils.request('/service_list');
49
+ value: function listMetrics(cluster) {
50
+ return Utils.request("/service_list/".concat(cluster));
51
51
  }
52
52
  }, {
53
53
  key: "getMetric",
@@ -1 +1 @@
1
- {"version":3,"names":["axios","moment","DATE_FORMAT","hasOdinPage","Utils","_classCallCheck","_createClass","key","value","request","path","saveCancelToken","url","ODIN_PATH","method","responseType","withCredentials","ODIN_AUTH","cancelToken","CancelToken","cancel","then","response","data","error","_error$response","isCancel","Promise","reject","isRequestCanceled","checkStatus","cluster","listMetrics","getMetric","metric","from","to","saveCT","toISOString","getMetricOfThisDay","date","startTime","startOf","endTime","add","toDate","prepareAvailabilityData","availability","size","asArray","property","getPropertyName","i","substr","length","Object","hasOwnProperty","call","state","push","computeStat","counts","_countBy","_ref","sum","default","currentDate","format","fetchClustersAvailability","resolve"],"sources":["odin-utils.ts"],"sourcesContent":["import axios, {Canceler} from 'axios';\nimport _ from 'lodash';\nimport moment from 'moment';\n\nimport {DATE_FORMAT} from './odin-constants';\nimport {hasOdinPage} from '../../config';\n\ntype SaveCancelToken = ({cancel}: {cancel: Canceler}) => void;\ntype Availability = {[key: string]: MetricData};\n\nexport interface MetricListItem {\n display_name: string;\n name: string;\n}\n\nexport interface MetricData {\n message?: string;\n state: 'available' | 'unavailable' | 'partially_available' | 'no_data';\n}\n\nexport default class Utils {\n static ODIN_PATH = '/api/odin/proxy';\n static ODIN_AUTH = 'none';\n\n static request<T = unknown>(path: string, saveCancelToken?: SaveCancelToken): Promise<T> {\n return axios\n .request({\n url: Utils.ODIN_PATH + path,\n method: 'GET',\n responseType: 'json',\n withCredentials: Utils.ODIN_AUTH === 'domain',\n cancelToken: new axios.CancelToken((cancel) => {\n if (typeof saveCancelToken === 'function') {\n saveCancelToken({cancel});\n }\n }),\n })\n .then((response) => {\n return response.data;\n })\n .catch((error) => {\n if (axios.isCancel(error)) {\n return Promise.reject(error);\n }\n return Promise.reject(error.response?.data || error);\n });\n }\n\n static isRequestCanceled(error: any) {\n return axios.isCancel(error);\n }\n\n static checkStatus(cluster: string) {\n return Utils.request('/exists/' + cluster);\n }\n\n static listMetrics() {\n return Utils.request<Array<MetricListItem>>('/service_list');\n }\n\n static getMetric(\n cluster: string,\n metric: string,\n from: Date,\n to: Date,\n saveCT: SaveCancelToken,\n ) {\n return Utils.request<Availability>(\n '/availability/' +\n cluster +\n '?metric=' +\n metric +\n '&start_time=' +\n moment(from).toISOString() +\n '&end_time=' +\n moment(to).toISOString() +\n '&return_state_without_message=0',\n saveCT,\n );\n }\n\n static getMetricOfThisDay(\n cluster: string,\n metric: string,\n date: string | null,\n saveCancelToken: SaveCancelToken,\n ) {\n const startTime = moment(date).startOf('day');\n const endTime = moment(startTime).add(1, 'day');\n return Utils.getMetric(\n cluster,\n metric,\n startTime.toDate(),\n endTime.toDate(),\n saveCancelToken,\n );\n }\n\n static prepareAvailabilityData(availability: Availability, size: number): Array<MetricData> {\n const asArray: Array<MetricData> = [];\n let property: string;\n let data: MetricData;\n\n function getPropertyName(i: number) {\n let property = '00000' + i;\n property = 'at_' + property.substr(property.length - 5);\n return property;\n }\n\n for (let i = 0; i < size; i++) {\n property = getPropertyName(i);\n\n if (availability && Object.hasOwnProperty.call(availability, property)) {\n data = availability[property];\n } else {\n data = {\n state: 'no_data',\n };\n }\n asArray.push(data);\n }\n\n return asArray;\n }\n\n static computeStat(availability: Array<MetricData>) {\n const counts = _.countBy(availability, ({state}) => {\n if (state === 'available') {\n return 'available';\n } else if (state === 'no_data') {\n return 'no_data';\n } else {\n return 'unavailable';\n }\n });\n\n const sum = availability.length;\n\n return {\n from: (counts['available'] || 0) / sum,\n to: (sum - (counts['unavailable'] || 0)) / sum,\n };\n }\n}\n\nexport function currentDate() {\n return moment().startOf('day').format(DATE_FORMAT);\n}\n\nexport const fetchClustersAvailability = hasOdinPage()\n ? () => {\n return axios.request({\n method: 'get',\n url: '/api/odin/clusters/availability',\n }) as Promise<\n {\n id: string;\n availability?: 1 | undefined;\n }[]\n >;\n }\n : () => Promise.resolve([]);\n"],"mappings":"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"}
1
+ {"version":3,"names":["axios","moment","DATE_FORMAT","hasOdinPage","Utils","_classCallCheck","_createClass","key","value","request","path","saveCancelToken","url","ODIN_PATH","method","responseType","withCredentials","ODIN_AUTH","cancelToken","CancelToken","cancel","then","response","data","error","_error$response","isCancel","Promise","reject","isRequestCanceled","checkStatus","cluster","listMetrics","concat","getMetric","metric","from","to","saveCT","toISOString","getMetricOfThisDay","date","startTime","startOf","endTime","add","toDate","prepareAvailabilityData","availability","size","asArray","property","getPropertyName","i","substr","length","Object","hasOwnProperty","call","state","push","computeStat","counts","_countBy","_ref","sum","default","currentDate","format","fetchClustersAvailability","resolve"],"sources":["odin-utils.ts"],"sourcesContent":["import axios, {Canceler} from 'axios';\nimport _ from 'lodash';\nimport moment from 'moment';\n\nimport {DATE_FORMAT} from './odin-constants';\nimport {hasOdinPage} from '../../config';\n\ntype SaveCancelToken = ({cancel}: {cancel: Canceler}) => void;\ntype Availability = {[key: string]: MetricData};\n\nexport interface MetricListItem {\n display_name: string;\n name: string;\n}\n\nexport interface MetricData {\n message?: string;\n state: 'available' | 'unavailable' | 'partially_available' | 'no_data';\n}\n\nexport default class Utils {\n static ODIN_PATH = '/api/odin/proxy';\n static ODIN_AUTH = 'none';\n\n static request<T = unknown>(path: string, saveCancelToken?: SaveCancelToken): Promise<T> {\n return axios\n .request({\n url: Utils.ODIN_PATH + path,\n method: 'GET',\n responseType: 'json',\n withCredentials: Utils.ODIN_AUTH === 'domain',\n cancelToken: new axios.CancelToken((cancel) => {\n if (typeof saveCancelToken === 'function') {\n saveCancelToken({cancel});\n }\n }),\n })\n .then((response) => {\n return response.data;\n })\n .catch((error) => {\n if (axios.isCancel(error)) {\n return Promise.reject(error);\n }\n return Promise.reject(error.response?.data || error);\n });\n }\n\n static isRequestCanceled(error: any) {\n return axios.isCancel(error);\n }\n\n static checkStatus(cluster: string) {\n return Utils.request('/exists/' + cluster);\n }\n\n static listMetrics(cluster: string) {\n return Utils.request<Array<MetricListItem>>(`/service_list/${cluster}`);\n }\n\n static getMetric(\n cluster: string,\n metric: string,\n from: Date,\n to: Date,\n saveCT: SaveCancelToken,\n ) {\n return Utils.request<Availability>(\n '/availability/' +\n cluster +\n '?metric=' +\n metric +\n '&start_time=' +\n moment(from).toISOString() +\n '&end_time=' +\n moment(to).toISOString() +\n '&return_state_without_message=0',\n saveCT,\n );\n }\n\n static getMetricOfThisDay(\n cluster: string,\n metric: string,\n date: string | null,\n saveCancelToken: SaveCancelToken,\n ) {\n const startTime = moment(date).startOf('day');\n const endTime = moment(startTime).add(1, 'day');\n return Utils.getMetric(\n cluster,\n metric,\n startTime.toDate(),\n endTime.toDate(),\n saveCancelToken,\n );\n }\n\n static prepareAvailabilityData(availability: Availability, size: number): Array<MetricData> {\n const asArray: Array<MetricData> = [];\n let property: string;\n let data: MetricData;\n\n function getPropertyName(i: number) {\n let property = '00000' + i;\n property = 'at_' + property.substr(property.length - 5);\n return property;\n }\n\n for (let i = 0; i < size; i++) {\n property = getPropertyName(i);\n\n if (availability && Object.hasOwnProperty.call(availability, property)) {\n data = availability[property];\n } else {\n data = {\n state: 'no_data',\n };\n }\n asArray.push(data);\n }\n\n return asArray;\n }\n\n static computeStat(availability: Array<MetricData>) {\n const counts = _.countBy(availability, ({state}) => {\n if (state === 'available') {\n return 'available';\n } else if (state === 'no_data') {\n return 'no_data';\n } else {\n return 'unavailable';\n }\n });\n\n const sum = availability.length;\n\n return {\n from: (counts['available'] || 0) / sum,\n to: (sum - (counts['unavailable'] || 0)) / sum,\n };\n }\n}\n\nexport function currentDate() {\n return moment().startOf('day').format(DATE_FORMAT);\n}\n\nexport const fetchClustersAvailability = hasOdinPage()\n ? () => {\n return axios.request({\n method: 'get',\n url: '/api/odin/clusters/availability',\n }) as Promise<\n {\n id: string;\n availability?: 1 | undefined;\n }[]\n >;\n }\n : () => Promise.resolve([]);\n"],"mappings":"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"}
@@ -44,7 +44,7 @@
44
44
  "js": [
45
45
  "js/runtime.22e88c00.js",
46
46
  "js/vendors.e6a251eb.js",
47
- "js/main.53d3bdc5.js"
47
+ "js/main.724df837.js"
48
48
  ],
49
49
  "css": [
50
50
  "css/main.77009ada.css"
@@ -93,8 +93,8 @@
93
93
  "js/955.e1c8cf19.chunk.js": "js/955.e1c8cf19.chunk.js",
94
94
  "js/955.e1c8cf19.chunk.js.LICENSE.txt": "js/955.e1c8cf19.chunk.js.LICENSE.txt",
95
95
  "js/955.e1c8cf19.chunk.js.map": "js/955.e1c8cf19.chunk.js.map",
96
- "js/main.53d3bdc5.js.LICENSE.txt": "js/main.53d3bdc5.js.LICENSE.txt",
97
- "js/main.53d3bdc5.js.map": "js/main.53d3bdc5.js.map",
96
+ "js/main.724df837.js.LICENSE.txt": "js/main.724df837.js.LICENSE.txt",
97
+ "js/main.724df837.js.map": "js/main.724df837.js.map",
98
98
  "js/runtime.22e88c00.js.map": "js/runtime.22e88c00.js.map",
99
99
  "js/vendors.e6a251eb.js.LICENSE.txt": "js/vendors.e6a251eb.js.LICENSE.txt",
100
100
  "js/vendors.e6a251eb.js.map": "js/vendors.e6a251eb.js.map",
@@ -104,7 +104,7 @@
104
104
  "json.5239aa2e.worker.js.LICENSE.txt": "json.5239aa2e.worker.js.LICENSE.txt",
105
105
  "json.5239aa2e.worker.js.map": "json.5239aa2e.worker.js.map",
106
106
  "main.css": "css/main.77009ada.css",
107
- "main.js": "js/main.53d3bdc5.js",
107
+ "main.js": "js/main.724df837.js",
108
108
  "runtime.js": "js/runtime.22e88c00.js",
109
109
  "vendors.js": "js/vendors.e6a251eb.js",
110
110
  "vis-network.js": "js/vis-network.b367d390.chunk.js"