* chore: analytics endpoint * added anlytics v2 * updated status icons * added area chart in workitems and en translations * active projects * chore: created analytics chart * chore: validation errors * improved radar-chart , added empty states , added projects summary * chore: added a new graph in advance analytics * integrated priority chart * chore: added csv exporter * added priority dropdown * integrated created vs resolved chart * custom x and y axis label in bar and area chart * added wrapper styles to legends * added filter components * fixed temp data imports * integrated filters in priority charts * added label to priority chart and updated duration filter * refactor * reverted to void onchange * fixed some contant exports * fixed type issues * fixed some type and build issues * chore: updated the filtering logic for analytics * updated default value to last_30_days * percentage value whole number and added some rules for axis options * fixed some translations * added - custom tick for radar, calc of insight cards, filter labels * chore: opitmised the analytics endpoint * replace old analytics path with new , updated labels of insight card, done some store fixes * chore: updated the export request * Enhanced ProjectSelect to support multi-select, improved state management, and optimized data fetching and component structure. * fix: round completion percentage calculation in ActiveProjectItem * added empty states in project insights * Added loader and empty state in created/resolved chart * added loaders * added icons in filters * added custom colors in customised charts * cleaned up some code * added some responsiveness * updated translations * updated serrchbar for the table * added work item modal in project analytics * fixed some of the layput issues in the peek view * chore: updated the base function for viewsets * synced tab to url * code cleanup * chore: updated the export logic * fixed project_ids filter * added icon in projectdropdown * updated export button position * export csv and emptystates icons * refactor * code refactor * updated loaders, moved color pallete to contants, added nullish collasece operator in neccessary places * removed uneccessary cn * fixed formatting issues * fixed empty project_ids in payload * improved null checks * optimized charts * modified relevant variables to observable.ref * fixed the duration type * optimized some code * updated query key in project-insight * updated query key in project-insight * updated formatting * chore: replaced analytics route with new one and done some optimizations * removed the old analytics --------- Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
47 lines
1 KiB
TypeScript
47 lines
1 KiB
TypeScript
// plane package imports
|
|
import React from "react";
|
|
import { TrendingDown, TrendingUp } from "lucide-react";
|
|
import { cn } from "@plane/utils";
|
|
// plane web components
|
|
|
|
type Props = {
|
|
percentage: number;
|
|
className?: string;
|
|
size?: "xs" | "sm" | "md" | "lg";
|
|
};
|
|
|
|
const sizeConfig = {
|
|
xs: {
|
|
text: "text-xs",
|
|
icon: "w-3 h-3",
|
|
},
|
|
sm: {
|
|
text: "text-sm",
|
|
icon: "w-4 h-4",
|
|
},
|
|
md: {
|
|
text: "text-base",
|
|
icon: "w-5 h-5",
|
|
},
|
|
lg: {
|
|
text: "text-lg",
|
|
icon: "w-6 h-6",
|
|
},
|
|
} as const;
|
|
|
|
const TrendPiece = (props: Props) => {
|
|
const { percentage, className, size = "sm" } = props;
|
|
const isPositive = percentage > 0;
|
|
const config = sizeConfig[size];
|
|
|
|
return (
|
|
<div
|
|
className={cn("flex items-center gap-1", isPositive ? "text-green-500" : "text-red-500", config.text, className)}
|
|
>
|
|
{isPositive ? <TrendingUp className={config.icon} /> : <TrendingDown className={config.icon} />}
|
|
{Math.round(Math.abs(percentage))}%
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default TrendPiece;
|