جزییات

This commit is contained in:
mahmoodsht 2025-10-06 10:49:00 +03:30
parent d451cc438a
commit efb1990a55
2 changed files with 12 additions and 9 deletions

View File

@ -24,7 +24,7 @@ import { TruncatedText } from "../ui/truncatedText";
interface StrategicAlignmentData { interface StrategicAlignmentData {
strategic_theme: string; strategic_theme: string;
operational_fee_sum: number; operational_fee_count: number;
percentage?: number; percentage?: number;
} }
@ -138,7 +138,7 @@ export function StrategicAlignmentPopup({
ProcessName: "project", ProcessName: "project",
OutputFields: [ OutputFields: [
"strategic_theme", "strategic_theme",
"sum(operational_fee) as operational_fee_sum", "count(operational_fee)",
], ],
GroupBy: ["strategic_theme"], GroupBy: ["strategic_theme"],
}); });
@ -168,7 +168,7 @@ export function StrategicAlignmentPopup({
ProcessName: "project", ProcessName: "project",
OutputFields: [ OutputFields: [
"value_technology_and_innovation", "value_technology_and_innovation",
"sum(operational_fee)", "count(operational_fee)",
], ],
Conditions: [["strategic_theme", "=", item]], Conditions: [["strategic_theme", "=", item]],
GroupBy: ["value_technology_and_innovation"], GroupBy: ["value_technology_and_innovation"],
@ -233,13 +233,13 @@ export function StrategicAlignmentPopup({
.map((item: any) => ({ .map((item: any) => ({
strategic_theme: strategic_theme:
item.strategic_theme || item.value_technology_and_innovation || "N/A", item.strategic_theme || item.value_technology_and_innovation || "N/A",
operational_fee_sum: Math.max(0, Number(item.operational_fee_sum)), operational_fee_count: Math.max(0, Number(item.operational_fee_count)),
})) }))
.filter((item: StrategicAlignmentData) => item.strategic_theme !== ""); .filter((item: StrategicAlignmentData) => item.strategic_theme !== "");
const total = processedData.reduce( const total = processedData.reduce(
(acc: number, item: StrategicAlignmentData) => (acc: number, item: StrategicAlignmentData) =>
acc + item.operational_fee_sum, acc + item.operational_fee_count,
0 0
); );
@ -247,7 +247,7 @@ export function StrategicAlignmentPopup({
(item: StrategicAlignmentData) => ({ (item: StrategicAlignmentData) => ({
...item, ...item,
percentage: percentage:
total > 0 ? Math.round((item.operational_fee_sum / total) * 100) : 0, total > 0 ? Math.round((item.operational_fee_count / total) * 100) : 0,
}) })
); );
setData(dataWithPercentage || []); setData(dataWithPercentage || []);

View File

@ -305,8 +305,8 @@ export function NetworkGraph({ onNodeClick, onLoadingChange }: NetworkGraphProps
.enter() .enter()
.append("g") .append("g")
.attr("class", "node") .attr("class", "node")
.style("cursor", "pointer"); .style("cursor", d => d.stageid === -1 ? "default" : "pointer");
const drag = d3 const drag = d3
.drag<SVGGElement, Node>() .drag<SVGGElement, Node>()
.on("start", (event, d) => { .on("start", (event, d) => {
@ -437,9 +437,12 @@ export function NetworkGraph({ onNodeClick, onLoadingChange }: NetworkGraphProps
.attr("stroke-width", 3); .attr("stroke-width", 3);
}); });
nodeGroup.on("click", async function (event, d) { nodeGroup.on("click", async function (event, d) {
event.stopPropagation(); event.stopPropagation();
if (d.isCenter) return;
// جلوگیری از کلیک روی مرکز و دسته‌بندی‌ها
if (d.isCenter || d.stageid === -1) return;
if (onNodeClick && d.stageid) { if (onNodeClick && d.stageid) {
// Open dialog immediately with basic info // Open dialog immediately with basic info