}
options={options
diff --git a/plane-src/apps/web/core/components/analytics/work-items/created-vs-resolved.tsx b/plane-src/apps/web/core/components/analytics/work-items/created-vs-resolved.tsx
index 66a6a72..72cb1a1 100644
--- a/plane-src/apps/web/core/components/analytics/work-items/created-vs-resolved.tsx
+++ b/plane-src/apps/web/core/components/analytics/work-items/created-vs-resolved.tsx
@@ -65,24 +65,24 @@ const CreatedVsResolved = observer(function CreatedVsResolved() {
() => [
{
key: "completed_issues",
- label: "Resolved",
- fill: "#19803833",
+ label: "Решено",
+ fill: "rgba(195, 255, 102, 0.18)",
fillOpacity: 1,
stackId: "bar-one",
showDot: false,
smoothCurves: true,
- strokeColor: "#198038",
+ strokeColor: "#C3FF66",
strokeOpacity: 1,
},
{
key: "created_issues",
- label: "Created",
- fill: "#1192E833",
+ label: "Создано",
+ fill: "rgba(245, 247, 251, 0.14)",
fillOpacity: 1,
stackId: "bar-one",
showDot: false,
smoothCurves: true,
- strokeColor: "#1192E8",
+ strokeColor: "#F5F7FB",
strokeOpacity: 1,
},
],
diff --git a/plane-src/apps/web/core/components/analytics/work-items/modal/header.tsx b/plane-src/apps/web/core/components/analytics/work-items/modal/header.tsx
index c515deb..04c55a9 100644
--- a/plane-src/apps/web/core/components/analytics/work-items/modal/header.tsx
+++ b/plane-src/apps/web/core/components/analytics/work-items/modal/header.tsx
@@ -26,7 +26,7 @@ export const WorkItemsModalHeader = observer(function WorkItemsModalHeader(props
return (
- Analytics for {title} {cycle && `in ${cycle.name}`} {module && `in ${module.name}`}
+ Аналитика: {title} {cycle && `в цикле ${cycle.name}`} {module && `в модуле ${module.name}`}
),
diff --git a/plane-src/apps/web/styles/globals.css b/plane-src/apps/web/styles/globals.css
index 756c08e..608e28f 100644
--- a/plane-src/apps/web/styles/globals.css
+++ b/plane-src/apps/web/styles/globals.css
@@ -2573,6 +2573,201 @@
outline: none !important;
}
+ .nodedc-analytics-filter-row {
+ flex-wrap: wrap;
+ }
+
+ .nodedc-analytics-select-trigger {
+ display: inline-flex !important;
+ min-height: 2.35rem;
+ align-items: center;
+ justify-content: center;
+ border: 0 !important;
+ outline: none !important;
+ border-radius: 999px !important;
+ background: rgba(255, 255, 255, 0.06) !important;
+ padding: 0 0.95rem !important;
+ color: var(--text-color-secondary) !important;
+ font-size: 0.75rem;
+ font-weight: 650;
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.018) !important;
+ transition:
+ background 160ms ease,
+ color 160ms ease,
+ box-shadow 160ms ease;
+ }
+
+ .nodedc-analytics-select-trigger:hover,
+ .nodedc-analytics-select-trigger:focus-visible {
+ background: rgba(255, 255, 255, 0.095) !important;
+ color: var(--text-color-primary) !important;
+ box-shadow: inset 0 0 0 1px rgba(var(--nodedc-card-active-rgb), 0.2) !important;
+ }
+
+ .nodedc-analytics-select-trigger .text-primary,
+ .nodedc-analytics-select-trigger svg {
+ color: rgb(var(--nodedc-card-active-rgb)) !important;
+ }
+
+ .nodedc-analytics-dropdown {
+ border-radius: 1.25rem !important;
+ background:
+ linear-gradient(180deg, rgba(255, 255, 255, 0.04) 0%, rgba(255, 255, 255, 0.014) 100%), rgba(10, 10, 12, 0.96) !important;
+ box-shadow:
+ 0 24px 58px rgba(0, 0, 0, 0.34),
+ inset 0 1px 0 rgba(255, 255, 255, 0.025) !important;
+ }
+
+ .nodedc-analytics-chart-stack {
+ gap: 1.35rem !important;
+ }
+
+ .nodedc-analytics-chart-viewport {
+ overflow-x: auto;
+ overflow-y: hidden;
+ border-radius: 1.35rem;
+ background: rgba(0, 0, 0, 0.18);
+ padding: 0.45rem 0.35rem 0.15rem;
+ scrollbar-color: rgba(var(--nodedc-card-active-rgb), 0.7) rgba(255, 255, 255, 0.045);
+ scrollbar-width: thin;
+ }
+
+ .nodedc-analytics-chart-viewport::-webkit-scrollbar {
+ height: 0.55rem;
+ }
+
+ .nodedc-analytics-chart-viewport::-webkit-scrollbar-track {
+ border-radius: 999px;
+ background: rgba(255, 255, 255, 0.045);
+ }
+
+ .nodedc-analytics-chart-viewport::-webkit-scrollbar-thumb {
+ border-radius: 999px;
+ background: rgba(var(--nodedc-card-active-rgb), 0.7);
+ }
+
+ .nodedc-analytics-chart-inner {
+ min-width: 35rem;
+ }
+
+ .nodedc-analytics-bar-chart .recharts-cartesian-grid line {
+ stroke: rgba(255, 255, 255, 0.055) !important;
+ }
+
+ .nodedc-analytics-bar-chart .recharts-cartesian-axis-tick-value,
+ .nodedc-analytics-bar-chart .recharts-label {
+ fill: rgba(255, 255, 255, 0.56) !important;
+ letter-spacing: 0 !important;
+ }
+
+ .nodedc-analytics-bar-chart .recharts-tooltip-cursor {
+ fill: rgba(255, 255, 255, 0.055) !important;
+ rx: 18px;
+ ry: 18px;
+ }
+
+ .nodedc-analytics-bar-chart path {
+ stroke: none !important;
+ }
+
+ .nodedc-analytics-table-toolbar {
+ gap: 1rem;
+ }
+
+ .nodedc-analytics-table-count {
+ color: rgba(255, 255, 255, 0.54) !important;
+ }
+
+ .nodedc-analytics-search-button {
+ margin-right: 0 !important;
+ border-radius: 999px !important;
+ background: rgba(255, 255, 255, 0.055) !important;
+ color: var(--text-color-secondary) !important;
+ }
+
+ .nodedc-analytics-search-button:hover {
+ background: rgba(255, 255, 255, 0.095) !important;
+ color: var(--text-color-primary) !important;
+ }
+
+ .nodedc-analytics-search-field {
+ border: 0 !important;
+ border-radius: 999px !important;
+ background: rgba(255, 255, 255, 0.065) !important;
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.018) !important;
+ }
+
+ .nodedc-analytics-table-surface {
+ overflow-x: auto;
+ border-radius: 1.25rem !important;
+ background: rgba(255, 255, 255, 0.026) !important;
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.014) !important;
+ scrollbar-color: rgba(var(--nodedc-card-active-rgb), 0.62) rgba(255, 255, 255, 0.035);
+ scrollbar-width: thin;
+ }
+
+ .nodedc-analytics-table-surface::-webkit-scrollbar {
+ height: 0.5rem;
+ }
+
+ .nodedc-analytics-table-surface::-webkit-scrollbar-track {
+ border-radius: 999px;
+ background: rgba(255, 255, 255, 0.035);
+ }
+
+ .nodedc-analytics-table-surface::-webkit-scrollbar-thumb {
+ border-radius: 999px;
+ background: rgba(var(--nodedc-card-active-rgb), 0.62);
+ }
+
+ .nodedc-analytics-table-surface table {
+ min-width: max-content;
+ border-collapse: separate;
+ border-spacing: 0;
+ }
+
+ .nodedc-analytics-table-surface th,
+ .nodedc-analytics-table-surface td {
+ border-color: rgba(255, 255, 255, 0.055) !important;
+ padding: 0.75rem 0.9rem !important;
+ white-space: nowrap;
+ }
+
+ .nodedc-analytics-table-surface th {
+ color: rgba(255, 255, 255, 0.62) !important;
+ font-size: 0.73rem !important;
+ font-weight: 700 !important;
+ }
+
+ .nodedc-analytics-table-surface td {
+ color: rgba(255, 255, 255, 0.84) !important;
+ font-size: 0.78rem !important;
+ }
+
+ .nodedc-analytics-table-surface tbody tr:hover td {
+ background: rgba(255, 255, 255, 0.04) !important;
+ }
+
+ .nodedc-analytics-export-button {
+ min-height: 2.35rem;
+ border: 0 !important;
+ outline: none !important;
+ border-radius: 999px !important;
+ background: rgba(255, 255, 255, 0.06) !important;
+ color: var(--text-color-primary) !important;
+ padding-inline: 0.95rem !important;
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.018) !important;
+ }
+
+ .nodedc-analytics-export-button:hover {
+ background: rgba(255, 255, 255, 0.095) !important;
+ }
+
+ .nodedc-analytics-export-button,
+ .nodedc-analytics-export-button * {
+ color: var(--text-color-primary) !important;
+ }
+
.nodedc-attachment-upload {
min-height: 4.5rem;
border: 0 !important;
diff --git a/plane-src/packages/propel/src/charts/bar-chart/bar.tsx b/plane-src/packages/propel/src/charts/bar-chart/bar.tsx
index 1df9c21..f6c6bb7 100644
--- a/plane-src/packages/propel/src/charts/bar-chart/bar.tsx
+++ b/plane-src/packages/propel/src/charts/bar-chart/bar.tsx
@@ -36,6 +36,7 @@ interface TBarProps extends TShapeProps {
showPercentage?: boolean;
showTopBorderRadius?: boolean;
showBottomBorderRadius?: boolean;
+ borderRadius?: number;
dotted?: boolean;
}
@@ -95,6 +96,7 @@ const CustomBar = React.memo(function CustomBar(props: TBarProps) {
showPercentage,
showTopBorderRadius,
showBottomBorderRadius,
+ borderRadius,
} = props;
if (!height) return null;
@@ -109,8 +111,8 @@ const CustomBar = React.memo(function CustomBar(props: TBarProps) {
currentBarPercentage !== undefined &&
!Number.isNaN(currentBarPercentage);
- const topBorderRadius = showTopBorderRadius ? BAR_TOP_BORDER_RADIUS : 0;
- const bottomBorderRadius = showBottomBorderRadius ? BAR_BOTTOM_BORDER_RADIUS : 0;
+ const topBorderRadius = showTopBorderRadius ? (borderRadius ?? BAR_TOP_BORDER_RADIUS) : 0;
+ const bottomBorderRadius = showBottomBorderRadius ? (borderRadius ?? BAR_BOTTOM_BORDER_RADIUS) : 0;
return (
@@ -177,6 +179,7 @@ const createShapeVariant =
showPercentage={bar.showPercentage}
showTopBorderRadius={!!showTopBorderRadius}
showBottomBorderRadius={!!showBottomBorderRadius}
+ borderRadius={bar.borderRadius}
{...factoryProps}
/>
);
diff --git a/plane-src/packages/types/src/charts/index.ts b/plane-src/packages/types/src/charts/index.ts
index 948649e..19a1ee4 100644
--- a/plane-src/packages/types/src/charts/index.ts
+++ b/plane-src/packages/types/src/charts/index.ts
@@ -78,6 +78,7 @@ export type TBarItem = {
stackId: string;
showTopBorderRadius?: (barKey: string, payload: any) => boolean;
showBottomBorderRadius?: (barKey: string, payload: any) => boolean;
+ borderRadius?: number;
shapeVariant?: TBarChartShapeVariant;
};
diff --git a/plane-src/packages/ui/src/dropdowns/custom-search-select.tsx b/plane-src/packages/ui/src/dropdowns/custom-search-select.tsx
index c0eccb7..f62377c 100644
--- a/plane-src/packages/ui/src/dropdowns/custom-search-select.tsx
+++ b/plane-src/packages/ui/src/dropdowns/custom-search-select.tsx
@@ -104,14 +104,14 @@ export function CustomSearchSelect(props: ICustomSearchSelectProps) {
{customButton}
@@ -122,7 +122,7 @@ export function CustomSearchSelect(props: ICustomSearchSelectProps) {
- cn(
- "nodedc-dropdown-option",
- {
- "bg-white/6": active,
- "cursor-not-allowed text-placeholder opacity-60": option.disabled,
- }
- )
+ cn("nodedc-dropdown-option", {
+ "bg-white/6": active,
+ "cursor-not-allowed text-placeholder opacity-60": option.disabled,
+ })
}
onClick={() => {
if (!multiple) closeDropdown();
@@ -216,7 +213,7 @@ export function CustomSearchSelect(props: ICustomSearchSelectProps) {
{noResultsMessage}
)
) : (
- Loading...
+ Загрузка...
)}