diff --git a/grafana-plugin/src/containers/UsersTimezones/ColorfulUserCircle.module.scss b/grafana-plugin/src/containers/UsersTimezones/ColorfulUserCircle.module.scss
new file mode 100644
index 00000000..657b81d0
--- /dev/null
+++ b/grafana-plugin/src/containers/UsersTimezones/ColorfulUserCircle.module.scss
@@ -0,0 +1,9 @@
+.root {
+ position: relative;
+}
+.avatar {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ z-index: -1;
+}
diff --git a/grafana-plugin/src/containers/UsersTimezones/ColorfulUserCircle.tsx b/grafana-plugin/src/containers/UsersTimezones/ColorfulUserCircle.tsx
new file mode 100644
index 00000000..0fa37657
--- /dev/null
+++ b/grafana-plugin/src/containers/UsersTimezones/ColorfulUserCircle.tsx
@@ -0,0 +1,53 @@
+import cn from 'classnames/bind';
+import React from 'react';
+
+import styles from './ColorfulUserCircle.module.scss';
+
+const cx = cn.bind(styles);
+
+export default function ColorfulUserCircle({
+ colors,
+ renderAvatar,
+ renderIcon
+}: {
+ colors: string[];
+ renderAvatar: () => JSX.Element;
+ renderIcon: () => JSX.Element;
+}) {
+ if (!colors?.length) return null;
+
+ return (
+
+
+
{renderAvatar()}
+
{renderIcon()}
+
+ );
+
+ function renderColorPaths(colors: string[]) {
+ const colorSchemeList = colors;
+ if (colors.length === 1) colorSchemeList.push(colors[0]);
+
+ const stepAngle = (2 * Math.PI) / colors.length;
+ const radius = 100;
+
+ let lastX = 0;
+ let lastY = -radius;
+
+ return colorSchemeList.map((_color, colorIndex) => {
+ const angle = (colorIndex + 1) * stepAngle;
+ const x = radius * Math.sin(angle);
+ const y = -radius * Math.cos(angle);
+ const d = `M ${lastX.toFixed(3)},${lastY.toFixed(3)} A 100,100 0 0,1 ${x.toFixed(3)},${y.toFixed(3)}`;
+
+ lastX = x;
+ lastY = y;
+
+ return ;
+ });
+ }
+}
diff --git a/grafana-plugin/src/containers/UsersTimezones/UsersTimezones.tsx b/grafana-plugin/src/containers/UsersTimezones/UsersTimezones.tsx
index 497d4fd4..0678f8ca 100644
--- a/grafana-plugin/src/containers/UsersTimezones/UsersTimezones.tsx
+++ b/grafana-plugin/src/containers/UsersTimezones/UsersTimezones.tsx
@@ -13,6 +13,7 @@ import { User } from 'models/user/user.types';
import { useStore } from 'state/useStore';
import styles from './UsersTimezones.module.css';
+import ColorfulUserCircle from './ColorfulUserCircle';
interface UsersTimezonesProps {
userIds: Array;
@@ -257,8 +258,11 @@ const AvatarGroup = (props: AvatarGroupProps) => {
}}
onClick={getAvatarClickHandler(user.timezone)}
>
-
- {isOncall && }
+ }
+ renderIcon={() => (isOncall ? : null)}
+ >
);