50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
|
import { numberToHumanSize } from '~/lib/utils/number_utils';
|
||
|
import { PROJECT_STORAGE_TYPES } from './constants';
|
||
|
|
||
|
export const getStorageTypesFromProjectStatistics = (projectStatistics, helpLinks = {}) =>
|
||
|
PROJECT_STORAGE_TYPES.reduce((types, currentType) => {
|
||
|
const helpPathKey = currentType.id.replace(`Size`, ``);
|
||
|
const helpPath = helpLinks[helpPathKey];
|
||
|
|
||
|
return types.concat({
|
||
|
storageType: {
|
||
|
...currentType,
|
||
|
helpPath,
|
||
|
},
|
||
|
value: projectStatistics[currentType.id],
|
||
|
});
|
||
|
}, []);
|
||
|
|
||
|
/**
|
||
|
* This method parses the results from `getProjectStorageStatistics` call.
|
||
|
*
|
||
|
* @param {Object} data graphql result
|
||
|
* @returns {Object}
|
||
|
*/
|
||
|
export const parseGetProjectStorageResults = (data, helpLinks) => {
|
||
|
const projectStatistics = data?.project?.statistics;
|
||
|
if (!projectStatistics) {
|
||
|
return {};
|
||
|
}
|
||
|
const { storageSize } = projectStatistics;
|
||
|
const storageTypes = getStorageTypesFromProjectStatistics(projectStatistics, helpLinks);
|
||
|
|
||
|
return {
|
||
|
storage: {
|
||
|
totalUsage: numberToHumanSize(storageSize, 1),
|
||
|
storageTypes,
|
||
|
},
|
||
|
statistics: projectStatistics,
|
||
|
};
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Creates a sorting function to sort storage types by usage in the graph and in the table
|
||
|
*
|
||
|
* @param {string} storageUsageKey key storing value of storage usage
|
||
|
* @returns {Function} sorting function
|
||
|
*/
|
||
|
export function descendingStorageUsageSort(storageUsageKey) {
|
||
|
return (a, b) => b[storageUsageKey] - a[storageUsageKey];
|
||
|
}
|