import React from 'react';
import { TreeMapSeries } from 'reaviz';
import { ChartNestedDataShape, ChartShallowDataShape } from 'reaviz';
import { TreeMap } from 'reaviz';
import { TreeMapRect } from 'reaviz';
import { range } from 'd3-array';
import { randomNumber } from 'reaviz-data-utils';
import { TreeMapLabel } from 'reaviz';
export default {
tags: ['snapshot'],
title: 'Charts/TreeMap',
component: TreeMap,
subcomponents: {
TreeMapSeries,
TreeMapRect,
TreeMapLabel
}
};
const simpleData: ChartShallowDataShape[] = [
{ key: 'AWS', data: 100 },
{ key: 'SendGrid', data: 45 },
{ key: 'Okta', data: 75 },
{ key: 'Twillo', data: 25 }
];
export const Simple = () => (
}
/>
);
export const LabelPosition = () => (
} />}
data={simpleData}
/>
);
export const NoAnimation = () => (
}
data={simpleData}
/>
);
const longLabelData: ChartShallowDataShape[] = [
{ key: 'Short text', data: 100 },
{ key: 'Another short text', data: 45 },
{
key: "This is a test of very long text that should not fit in a rectangle's width.",
data: 75
},
{
key: "This is another test of even longer text that should not fit in a rectangle at all because the text height should be more than the rectangle's height.",
data: 25
}
];
export const LongText = () => (
);
export const NoWrap = () => (
} />}
data={longLabelData}
/>
);
export const _20Items = () => (
);
export const _100Items = () => {
const longData: ChartShallowDataShape[] = range(100).map((o) => ({
key: `Item ${o + 1}`,
data: randomNumber(0, 100)
}));
return ;
};
_100Items.tags = ['no-snapshot'];
export const Events = () => (
{
console.log('onMouseEnter', event, data);
}}
onMouseLeave={(event, data) => {
console.log('onMouseLeave', event, data);
}}
onClick={(event, data) => {
console.log('onClick', event, data);
alert(`Clicked ${data.data.key}`);
}}
/>
}
/>
}
/>
);
Events.tags = ['no-snapshot'];
const twentyItems = [
{
key: 'Item 1',
data: 3
},
{
key: 'Item 2',
data: 12
},
{
key: 'Item 3',
data: 11
},
{
key: 'Item 4',
data: 13
},
{
key: 'Item 5',
data: 12
},
{
key: 'Item 6',
data: 8
},
{
key: 'Item 7',
data: 10
},
{
key: 'Item 8',
data: 17
},
{
key: 'Item 9',
data: 2
},
{
key: 'Item 10',
data: 4
},
{
key: 'Item 11',
data: 0
},
{
key: 'Item 12',
data: 15
},
{
key: 'Item 13',
data: 12
},
{
key: 'Item 14',
data: 5
},
{
key: 'Item 15',
data: 12
},
{
key: 'Item 16',
data: 1
},
{
key: 'Item 17',
data: 7
},
{
key: 'Item 18',
data: 7
},
{
key: 'Item 19',
data: 12
},
{
key: 'Item 20',
data: 1
},
{
key: 'Item 21',
data: 5
},
{
key: 'Item 22',
data: 0
},
{
key: 'Item 23',
data: 1
},
{
key: 'Item 24',
data: 0
},
{
key: 'Item 25',
data: 11
},
{
key: 'Item 26',
data: 17
},
{
key: 'Item 27',
data: 17
},
{
key: 'Item 28',
data: 11
},
{
key: 'Item 29',
data: 8
},
{
key: 'Item 30',
data: 7
},
{
key: 'Item 31',
data: 13
},
{
key: 'Item 32',
data: 7
},
{
key: 'Item 33',
data: 3
},
{
key: 'Item 34',
data: 9
},
{
key: 'Item 35',
data: 16
},
{
key: 'Item 36',
data: 11
},
{
key: 'Item 37',
data: 8
},
{
key: 'Item 38',
data: 12
},
{
key: 'Item 39',
data: 7
},
{
key: 'Item 40',
data: 4
},
{
key: 'Item 41',
data: 5
},
{
key: 'Item 42',
data: 11
},
{
key: 'Item 43',
data: 17
},
{
key: 'Item 44',
data: 11
},
{
key: 'Item 45',
data: 1
},
{
key: 'Item 46',
data: 10
},
{
key: 'Item 47',
data: 10
},
{
key: 'Item 48',
data: 12
},
{
key: 'Item 49',
data: 3
},
{
key: 'Item 50',
data: 14
}
];
const nestedData: ChartNestedDataShape[] = [
{
key: 'Windows',
data: [
{ key: 'WinXP', data: 15 },
{ key: 'Win10', data: 20 },
{ key: 'Win7', data: 50 },
{ key: 'WinVista', data: 10 },
{ key: 'Win98', data: 5 }
]
},
{
key: 'MacOS',
data: [
{ key: 'Sierra', data: 20 },
{ key: 'Catalina', data: 30 },
{ key: 'BigSur', data: 40 },
{ key: 'Ventura', data: 60 }
]
},
{
key: 'Linux',
data: [
{ key: 'Ubuntu', data: 70 },
{ key: 'Fedora', data: 60 },
{ key: 'CentOS', data: 50 }
]
}
];
export const Nested = () => (
}
/>
);
Nested.tags = ['no-snapshot'];