@lv-x-software-house/x_view 1.2.5-dev.33 → 1.2.5-dev.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +47 -68
- package/dist/index.mjs +47 -68
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -8843,7 +8843,6 @@ function InSceneQuestForm({
|
|
|
8843
8843
|
}
|
|
8844
8844
|
};
|
|
8845
8845
|
const handleSubmit = (e) => {
|
|
8846
|
-
var _a2, _b2, _c, _d;
|
|
8847
8846
|
e.preventDefault();
|
|
8848
8847
|
if (!name.trim()) {
|
|
8849
8848
|
alert("O campo 'T\xEDtulo' \xE9 obrigat\xF3rio.");
|
|
@@ -8853,21 +8852,7 @@ function InSceneQuestForm({
|
|
|
8853
8852
|
customProps.filter((prop) => prop.key.trim() && !prop.isEditing)
|
|
8854
8853
|
);
|
|
8855
8854
|
const processedSections = processDescriptionForSave(description, []);
|
|
8856
|
-
const initialTimeline = [
|
|
8857
|
-
createTimelineEntry(
|
|
8858
|
-
((_a2 = session == null ? void 0 : session.user) == null ? void 0 : _a2.id) || "unknown",
|
|
8859
|
-
`Quest criada por ${((_b2 = session == null ? void 0 : session.user) == null ? void 0 : _b2.name) || "usu\xE1rio"}.`,
|
|
8860
|
-
"quest_created"
|
|
8861
|
-
)
|
|
8862
|
-
];
|
|
8863
|
-
if (assigneeId) {
|
|
8864
|
-
initialTimeline.push(createTimelineEntry(
|
|
8865
|
-
((_c = session == null ? void 0 : session.user) == null ? void 0 : _c.id) || "unknown",
|
|
8866
|
-
`Quest atribu\xEDda para ${((_d = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _d.name) || "respons\xE1vel"}.`,
|
|
8867
|
-
"assignee_changed",
|
|
8868
|
-
{ metadata: { to_assignee_id: assigneeId } }
|
|
8869
|
-
));
|
|
8870
|
-
}
|
|
8855
|
+
const initialTimeline = [];
|
|
8871
8856
|
onSave({
|
|
8872
8857
|
name: standardizedName,
|
|
8873
8858
|
// SALVA O NOME FORMATADO
|
|
@@ -9711,16 +9696,7 @@ var import_fi18 = require("react-icons/fi");
|
|
|
9711
9696
|
// src/components/QuestTimeline.jsx
|
|
9712
9697
|
var import_react19 = __toESM(require("react"));
|
|
9713
9698
|
var import_fi17 = require("react-icons/fi");
|
|
9714
|
-
var
|
|
9715
|
-
"quest_created": { icon: import_fi17.FiPlusCircle, color: "text-sky-400", bg: "bg-sky-400/10" },
|
|
9716
|
-
"assignee_changed": { icon: import_fi17.FiUserPlus, color: "text-indigo-400", bg: "bg-indigo-400/10" },
|
|
9717
|
-
"status_changed": { icon: import_fi17.FiRotateCcw, color: "text-amber-400", bg: "bg-amber-400/10" },
|
|
9718
|
-
"review_cycle_started": { icon: import_fi17.FiSearch, color: "text-purple-400", bg: "bg-purple-400/10" },
|
|
9719
|
-
"review_completed": { icon: import_fi17.FiCheckSquare, color: "text-emerald-400", bg: "bg-emerald-400/10" },
|
|
9720
|
-
"comment": { icon: import_fi17.FiMessageSquare, color: "text-slate-400", bg: "bg-slate-400/10" },
|
|
9721
|
-
"quest_finished": { icon: import_fi17.FiTarget, color: "text-green-400", bg: "bg-green-400/10" },
|
|
9722
|
-
"default": { icon: import_fi17.FiGitCommit, color: "text-slate-500", bg: "bg-slate-500/10" }
|
|
9723
|
-
};
|
|
9699
|
+
var DEFAULT_ICON_CONFIG = { icon: import_fi17.FiGitCommit, color: "text-indigo-400", bg: "bg-indigo-400/10" };
|
|
9724
9700
|
function QuestTimeline({
|
|
9725
9701
|
timeline = [],
|
|
9726
9702
|
viewMembers = [],
|
|
@@ -9748,7 +9724,7 @@ function QuestTimeline({
|
|
|
9748
9724
|
return /* @__PURE__ */ import_react19.default.createElement("div", { className: "py-6 flex flex-col items-center justify-center gap-2 border border-white/5 bg-white/5 rounded-xl" }, /* @__PURE__ */ import_react19.default.createElement(import_fi17.FiAlertCircle, { className: "text-slate-600", size: 16 }), /* @__PURE__ */ import_react19.default.createElement("p", { className: "text-[10px] text-slate-500 font-light uppercase tracking-widest" }, "Nenhum hist\xF3rico dispon\xEDvel"));
|
|
9749
9725
|
}
|
|
9750
9726
|
return /* @__PURE__ */ import_react19.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ import_react19.default.createElement("h3", { className: "text-xs text-slate-400 font-medium uppercase tracking-wider flex items-center gap-2" }, "Hist\xF3rico (Timeline)"), /* @__PURE__ */ import_react19.default.createElement("div", { className: "relative pl-10 space-y-6 before:content-[''] before:absolute before:left-[21px] before:top-2 before:bottom-2 before:w-[2px] before:bg-white/5" }, sortedTimeline.map((event, index) => {
|
|
9751
|
-
const config =
|
|
9727
|
+
const config = DEFAULT_ICON_CONFIG;
|
|
9752
9728
|
const Icon = config.icon;
|
|
9753
9729
|
const actorName = getMemberName(event.actorId);
|
|
9754
9730
|
return /* @__PURE__ */ import_react19.default.createElement("div", { key: event.id || index, className: "relative animate-in fade-in slide-in-from-left-2 duration-300", style: { animationDelay: `${index * 50}ms` } }, /* @__PURE__ */ import_react19.default.createElement("div", { className: `absolute -left-[35px] top-0 w-8 h-8 rounded-full ${config.bg} flex items-center justify-center ring-4 ring-slate-950 border border-white/5` }, /* @__PURE__ */ import_react19.default.createElement(Icon, { className: config.iconColor || config.color, size: 14 })), /* @__PURE__ */ import_react19.default.createElement("div", { className: "group space-y-1" }, /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center justify-between gap-4" }, /* @__PURE__ */ import_react19.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react19.default.createElement("span", { className: "text-xs font-semibold text-slate-200" }, actorName), canEdit && onAddNote && /* @__PURE__ */ import_react19.default.createElement(
|
|
@@ -9941,12 +9917,12 @@ function QuestDetailsPanel({
|
|
|
9941
9917
|
const actorName = (currentUser == null ? void 0 : currentUser.name) || "Revisor";
|
|
9942
9918
|
const targetMember = viewMembers.find((m) => String(m.id) === String(returnAssigneeId));
|
|
9943
9919
|
const targetName = (targetMember == null ? void 0 : targetMember.name) || "executor";
|
|
9944
|
-
const newEvent =
|
|
9945
|
-
type: "review_returned",
|
|
9946
|
-
timestamp: Date.now(),
|
|
9920
|
+
const newEvent = createTimelineEntry(
|
|
9947
9921
|
actorId,
|
|
9948
|
-
|
|
9949
|
-
|
|
9922
|
+
`Status "In Progress" - Respons\xE1vel: ${targetName}`,
|
|
9923
|
+
"status_changed",
|
|
9924
|
+
{ metadata: { to_assignee_id: returnAssigneeId } }
|
|
9925
|
+
);
|
|
9950
9926
|
const updatedTimeline = [...timeline, newEvent];
|
|
9951
9927
|
const updatedStatus = "In Progress";
|
|
9952
9928
|
const updatedColor = "#eab308";
|
|
@@ -10059,8 +10035,19 @@ ${noteText}` : noteText : entry.notes,
|
|
|
10059
10035
|
const handleStatusChange = (newStatus) => {
|
|
10060
10036
|
setStatus(newStatus);
|
|
10061
10037
|
const newColor = QUEST_STATUS_COLORS3[newStatus];
|
|
10038
|
+
const actorId = (currentUser == null ? void 0 : currentUser.id) || "unknown";
|
|
10039
|
+
const currentAssignee = viewMembers.find((m) => String(m.id) === String(assigneeId));
|
|
10040
|
+
const assigneeName = (currentAssignee == null ? void 0 : currentAssignee.name) || (currentAssignee == null ? void 0 : currentAssignee.email) || "Nenhum";
|
|
10041
|
+
const newEvent = createTimelineEntry(
|
|
10042
|
+
actorId,
|
|
10043
|
+
`Status "${newStatus}" - Respons\xE1vel: ${assigneeName}`,
|
|
10044
|
+
"status_changed",
|
|
10045
|
+
{ metadata: { to_assignee_id: assigneeId } }
|
|
10046
|
+
);
|
|
10047
|
+
const newTimeline = [...timeline, newEvent];
|
|
10048
|
+
setTimeline(newTimeline);
|
|
10062
10049
|
onColorChange == null ? void 0 : onColorChange(node.id, newColor);
|
|
10063
|
-
onDataUpdate == null ? void 0 : onDataUpdate({ ...node, status: newStatus, color: newColor });
|
|
10050
|
+
onDataUpdate == null ? void 0 : onDataUpdate({ ...node, status: newStatus, color: newColor, timeline: newTimeline });
|
|
10064
10051
|
setHasUnsavedChanges(true);
|
|
10065
10052
|
};
|
|
10066
10053
|
const handleAddType = (newType) => {
|
|
@@ -10281,13 +10268,11 @@ ${noteText}` : noteText : entry.notes,
|
|
|
10281
10268
|
{
|
|
10282
10269
|
onClick: () => {
|
|
10283
10270
|
setAssigneeId("");
|
|
10284
|
-
const newTimeline = [...timeline,
|
|
10285
|
-
|
|
10286
|
-
|
|
10287
|
-
|
|
10288
|
-
|
|
10289
|
-
description: `Respons\xE1vel removido.`
|
|
10290
|
-
}];
|
|
10271
|
+
const newTimeline = [...timeline, createTimelineEntry(
|
|
10272
|
+
(currentUser == null ? void 0 : currentUser.id) || "unknown",
|
|
10273
|
+
`Status "${status}" - Respons\xE1vel: Nenhum`,
|
|
10274
|
+
"status_changed"
|
|
10275
|
+
)];
|
|
10291
10276
|
setTimeline(newTimeline);
|
|
10292
10277
|
setHasUnsavedChanges(true);
|
|
10293
10278
|
setIsAssigneeDropdownOpen(false);
|
|
@@ -10315,13 +10300,11 @@ ${noteText}` : noteText : entry.notes,
|
|
|
10315
10300
|
key: member.id,
|
|
10316
10301
|
onClick: () => {
|
|
10317
10302
|
setAssigneeId(member.id);
|
|
10318
|
-
const newTimeline = [...timeline,
|
|
10319
|
-
|
|
10320
|
-
|
|
10321
|
-
|
|
10322
|
-
|
|
10323
|
-
description: `Quest atribu\xEDda para ${member.name || member.email}.`
|
|
10324
|
-
}];
|
|
10303
|
+
const newTimeline = [...timeline, createTimelineEntry(
|
|
10304
|
+
(currentUser == null ? void 0 : currentUser.id) || "unknown",
|
|
10305
|
+
`Status "${status}" - Respons\xE1vel: ${member.name || member.email}`,
|
|
10306
|
+
"status_changed"
|
|
10307
|
+
)];
|
|
10325
10308
|
setTimeline(newTimeline);
|
|
10326
10309
|
setHasUnsavedChanges(true);
|
|
10327
10310
|
setIsAssigneeDropdownOpen(false);
|
|
@@ -14026,7 +14009,7 @@ function XViewScene({
|
|
|
14026
14009
|
} = questNode;
|
|
14027
14010
|
const newTimeline = [...cleanQuestNode.timeline || [], createTimelineEntry(
|
|
14028
14011
|
((_a2 = session == null ? void 0 : session.user) == null ? void 0 : _a2.id) || "unknown",
|
|
14029
|
-
`
|
|
14012
|
+
`Status "In Progress" - Respons\xE1vel: ${((_b2 = session == null ? void 0 : session.user) == null ? void 0 : _b2.name) || "usu\xE1rio"}`,
|
|
14030
14013
|
"status_changed"
|
|
14031
14014
|
)];
|
|
14032
14015
|
const updatedNode = {
|
|
@@ -14042,7 +14025,7 @@ function XViewScene({
|
|
|
14042
14025
|
setDetailsNode(updatedNode);
|
|
14043
14026
|
}, [session, actionHandlerContext]);
|
|
14044
14027
|
const handleFinishQuestQuick = (0, import_react28.useCallback)((questNode) => {
|
|
14045
|
-
var _a2, _b2, _c2, _d2
|
|
14028
|
+
var _a2, _b2, _c2, _d2;
|
|
14046
14029
|
if (!questNode || !actionHandlerContext) return;
|
|
14047
14030
|
const {
|
|
14048
14031
|
labelObject,
|
|
@@ -14062,18 +14045,8 @@ function XViewScene({
|
|
|
14062
14045
|
if (currentReviewerIdx !== -1 && reviewStack[currentReviewerIdx].userId === cleanQuestNode.assignee_id) {
|
|
14063
14046
|
reviewStack[currentReviewerIdx].status = "completed";
|
|
14064
14047
|
nextIdxToAssign = currentReviewerIdx + 1;
|
|
14065
|
-
newTimeline.push(createTimelineEntry(
|
|
14066
|
-
((_a2 = session == null ? void 0 : session.user) == null ? void 0 : _a2.id) || cleanQuestNode.assignee_id,
|
|
14067
|
-
`Review conclu\xEDda por ${((_b2 = viewMembers.find((m) => m.id === cleanQuestNode.assignee_id)) == null ? void 0 : _b2.name) || "revisor"}.`,
|
|
14068
|
-
"review_completed"
|
|
14069
|
-
));
|
|
14070
14048
|
} else {
|
|
14071
14049
|
nextIdxToAssign = currentReviewerIdx !== -1 ? currentReviewerIdx : reviewStack.length;
|
|
14072
|
-
newTimeline.push(createTimelineEntry(
|
|
14073
|
-
((_c2 = session == null ? void 0 : session.user) == null ? void 0 : _c2.id) || cleanQuestNode.assignee_id,
|
|
14074
|
-
`Tarefa principal entregue por ${((_d2 = viewMembers.find((m) => m.id === cleanQuestNode.assignee_id)) == null ? void 0 : _d2.name) || ((_e2 = session == null ? void 0 : session.user) == null ? void 0 : _e2.name) || "respons\xE1vel"}.`,
|
|
14075
|
-
"task_completed"
|
|
14076
|
-
));
|
|
14077
14050
|
}
|
|
14078
14051
|
if (nextIdxToAssign < reviewStack.length) {
|
|
14079
14052
|
const remainingMandatory = reviewStack.slice(nextIdxToAssign).some((r) => r.mandatory);
|
|
@@ -14082,12 +14055,6 @@ function XViewScene({
|
|
|
14082
14055
|
const nextReviewer = reviewStack[nextIdxToAssign];
|
|
14083
14056
|
nextAssigneeId = nextReviewer.userId;
|
|
14084
14057
|
nextStatus = "Review";
|
|
14085
|
-
newTimeline.push(createTimelineEntry(
|
|
14086
|
-
"system",
|
|
14087
|
-
`Quest atribu\xEDda para revis\xE3o a ${((_f2 = viewMembers.find((m) => m.id === nextAssigneeId)) == null ? void 0 : _f2.name) || "revisor"}.`,
|
|
14088
|
-
"assignee_changed",
|
|
14089
|
-
{ metadata: { to_assignee_id: nextAssigneeId } }
|
|
14090
|
-
));
|
|
14091
14058
|
} else {
|
|
14092
14059
|
nextStatus = "Done";
|
|
14093
14060
|
for (let i = nextIdxToAssign; i < reviewStack.length; i++) {
|
|
@@ -14097,11 +14064,23 @@ function XViewScene({
|
|
|
14097
14064
|
} else {
|
|
14098
14065
|
nextStatus = "Done";
|
|
14099
14066
|
}
|
|
14100
|
-
if (nextStatus === "
|
|
14067
|
+
if (nextStatus === "Review") {
|
|
14068
|
+
const nextReviewerName = ((_a2 = viewMembers.find((m) => m.id === nextAssigneeId)) == null ? void 0 : _a2.name) || "revisor";
|
|
14101
14069
|
newTimeline.push(createTimelineEntry(
|
|
14102
14070
|
"system",
|
|
14103
|
-
`
|
|
14104
|
-
"
|
|
14071
|
+
`Status "Review" - Respons\xE1vel: ${nextReviewerName}`,
|
|
14072
|
+
"status_changed",
|
|
14073
|
+
{ metadata: { to_assignee_id: nextAssigneeId } }
|
|
14074
|
+
));
|
|
14075
|
+
} else if (nextStatus === "Done") {
|
|
14076
|
+
const finisherName = ((_b2 = viewMembers.find((m) => {
|
|
14077
|
+
var _a3;
|
|
14078
|
+
return m.id === (((_a3 = session == null ? void 0 : session.user) == null ? void 0 : _a3.id) || cleanQuestNode.assignee_id);
|
|
14079
|
+
})) == null ? void 0 : _b2.name) || ((_c2 = session == null ? void 0 : session.user) == null ? void 0 : _c2.name) || "respons\xE1vel";
|
|
14080
|
+
newTimeline.push(createTimelineEntry(
|
|
14081
|
+
((_d2 = session == null ? void 0 : session.user) == null ? void 0 : _d2.id) || cleanQuestNode.assignee_id,
|
|
14082
|
+
`Status "Done" - Finalizado por ${finisherName}`,
|
|
14083
|
+
"status_changed"
|
|
14105
14084
|
));
|
|
14106
14085
|
}
|
|
14107
14086
|
const updatedNode = {
|
package/dist/index.mjs
CHANGED
|
@@ -8860,7 +8860,6 @@ function InSceneQuestForm({
|
|
|
8860
8860
|
}
|
|
8861
8861
|
};
|
|
8862
8862
|
const handleSubmit = (e) => {
|
|
8863
|
-
var _a2, _b2, _c, _d;
|
|
8864
8863
|
e.preventDefault();
|
|
8865
8864
|
if (!name.trim()) {
|
|
8866
8865
|
alert("O campo 'T\xEDtulo' \xE9 obrigat\xF3rio.");
|
|
@@ -8870,21 +8869,7 @@ function InSceneQuestForm({
|
|
|
8870
8869
|
customProps.filter((prop) => prop.key.trim() && !prop.isEditing)
|
|
8871
8870
|
);
|
|
8872
8871
|
const processedSections = processDescriptionForSave(description, []);
|
|
8873
|
-
const initialTimeline = [
|
|
8874
|
-
createTimelineEntry(
|
|
8875
|
-
((_a2 = session == null ? void 0 : session.user) == null ? void 0 : _a2.id) || "unknown",
|
|
8876
|
-
`Quest criada por ${((_b2 = session == null ? void 0 : session.user) == null ? void 0 : _b2.name) || "usu\xE1rio"}.`,
|
|
8877
|
-
"quest_created"
|
|
8878
|
-
)
|
|
8879
|
-
];
|
|
8880
|
-
if (assigneeId) {
|
|
8881
|
-
initialTimeline.push(createTimelineEntry(
|
|
8882
|
-
((_c = session == null ? void 0 : session.user) == null ? void 0 : _c.id) || "unknown",
|
|
8883
|
-
`Quest atribu\xEDda para ${((_d = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _d.name) || "respons\xE1vel"}.`,
|
|
8884
|
-
"assignee_changed",
|
|
8885
|
-
{ metadata: { to_assignee_id: assigneeId } }
|
|
8886
|
-
));
|
|
8887
|
-
}
|
|
8872
|
+
const initialTimeline = [];
|
|
8888
8873
|
onSave({
|
|
8889
8874
|
name: standardizedName,
|
|
8890
8875
|
// SALVA O NOME FORMATADO
|
|
@@ -9740,16 +9725,7 @@ import {
|
|
|
9740
9725
|
FiSearch as FiSearch6,
|
|
9741
9726
|
FiLink as FiLink6
|
|
9742
9727
|
} from "react-icons/fi";
|
|
9743
|
-
var
|
|
9744
|
-
"quest_created": { icon: FiPlusCircle, color: "text-sky-400", bg: "bg-sky-400/10" },
|
|
9745
|
-
"assignee_changed": { icon: FiUserPlus, color: "text-indigo-400", bg: "bg-indigo-400/10" },
|
|
9746
|
-
"status_changed": { icon: FiRotateCcw, color: "text-amber-400", bg: "bg-amber-400/10" },
|
|
9747
|
-
"review_cycle_started": { icon: FiSearch6, color: "text-purple-400", bg: "bg-purple-400/10" },
|
|
9748
|
-
"review_completed": { icon: FiCheckSquare2, color: "text-emerald-400", bg: "bg-emerald-400/10" },
|
|
9749
|
-
"comment": { icon: FiMessageSquare, color: "text-slate-400", bg: "bg-slate-400/10" },
|
|
9750
|
-
"quest_finished": { icon: FiTarget2, color: "text-green-400", bg: "bg-green-400/10" },
|
|
9751
|
-
"default": { icon: FiGitCommit, color: "text-slate-500", bg: "bg-slate-500/10" }
|
|
9752
|
-
};
|
|
9728
|
+
var DEFAULT_ICON_CONFIG = { icon: FiGitCommit, color: "text-indigo-400", bg: "bg-indigo-400/10" };
|
|
9753
9729
|
function QuestTimeline({
|
|
9754
9730
|
timeline = [],
|
|
9755
9731
|
viewMembers = [],
|
|
@@ -9777,7 +9753,7 @@ function QuestTimeline({
|
|
|
9777
9753
|
return /* @__PURE__ */ React18.createElement("div", { className: "py-6 flex flex-col items-center justify-center gap-2 border border-white/5 bg-white/5 rounded-xl" }, /* @__PURE__ */ React18.createElement(FiAlertCircle, { className: "text-slate-600", size: 16 }), /* @__PURE__ */ React18.createElement("p", { className: "text-[10px] text-slate-500 font-light uppercase tracking-widest" }, "Nenhum hist\xF3rico dispon\xEDvel"));
|
|
9778
9754
|
}
|
|
9779
9755
|
return /* @__PURE__ */ React18.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React18.createElement("h3", { className: "text-xs text-slate-400 font-medium uppercase tracking-wider flex items-center gap-2" }, "Hist\xF3rico (Timeline)"), /* @__PURE__ */ React18.createElement("div", { className: "relative pl-10 space-y-6 before:content-[''] before:absolute before:left-[21px] before:top-2 before:bottom-2 before:w-[2px] before:bg-white/5" }, sortedTimeline.map((event, index) => {
|
|
9780
|
-
const config =
|
|
9756
|
+
const config = DEFAULT_ICON_CONFIG;
|
|
9781
9757
|
const Icon = config.icon;
|
|
9782
9758
|
const actorName = getMemberName(event.actorId);
|
|
9783
9759
|
return /* @__PURE__ */ React18.createElement("div", { key: event.id || index, className: "relative animate-in fade-in slide-in-from-left-2 duration-300", style: { animationDelay: `${index * 50}ms` } }, /* @__PURE__ */ React18.createElement("div", { className: `absolute -left-[35px] top-0 w-8 h-8 rounded-full ${config.bg} flex items-center justify-center ring-4 ring-slate-950 border border-white/5` }, /* @__PURE__ */ React18.createElement(Icon, { className: config.iconColor || config.color, size: 14 })), /* @__PURE__ */ React18.createElement("div", { className: "group space-y-1" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between gap-4" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18.createElement("span", { className: "text-xs font-semibold text-slate-200" }, actorName), canEdit && onAddNote && /* @__PURE__ */ React18.createElement(
|
|
@@ -9970,12 +9946,12 @@ function QuestDetailsPanel({
|
|
|
9970
9946
|
const actorName = (currentUser == null ? void 0 : currentUser.name) || "Revisor";
|
|
9971
9947
|
const targetMember = viewMembers.find((m) => String(m.id) === String(returnAssigneeId));
|
|
9972
9948
|
const targetName = (targetMember == null ? void 0 : targetMember.name) || "executor";
|
|
9973
|
-
const newEvent =
|
|
9974
|
-
type: "review_returned",
|
|
9975
|
-
timestamp: Date.now(),
|
|
9949
|
+
const newEvent = createTimelineEntry(
|
|
9976
9950
|
actorId,
|
|
9977
|
-
|
|
9978
|
-
|
|
9951
|
+
`Status "In Progress" - Respons\xE1vel: ${targetName}`,
|
|
9952
|
+
"status_changed",
|
|
9953
|
+
{ metadata: { to_assignee_id: returnAssigneeId } }
|
|
9954
|
+
);
|
|
9979
9955
|
const updatedTimeline = [...timeline, newEvent];
|
|
9980
9956
|
const updatedStatus = "In Progress";
|
|
9981
9957
|
const updatedColor = "#eab308";
|
|
@@ -10088,8 +10064,19 @@ ${noteText}` : noteText : entry.notes,
|
|
|
10088
10064
|
const handleStatusChange = (newStatus) => {
|
|
10089
10065
|
setStatus(newStatus);
|
|
10090
10066
|
const newColor = QUEST_STATUS_COLORS3[newStatus];
|
|
10067
|
+
const actorId = (currentUser == null ? void 0 : currentUser.id) || "unknown";
|
|
10068
|
+
const currentAssignee = viewMembers.find((m) => String(m.id) === String(assigneeId));
|
|
10069
|
+
const assigneeName = (currentAssignee == null ? void 0 : currentAssignee.name) || (currentAssignee == null ? void 0 : currentAssignee.email) || "Nenhum";
|
|
10070
|
+
const newEvent = createTimelineEntry(
|
|
10071
|
+
actorId,
|
|
10072
|
+
`Status "${newStatus}" - Respons\xE1vel: ${assigneeName}`,
|
|
10073
|
+
"status_changed",
|
|
10074
|
+
{ metadata: { to_assignee_id: assigneeId } }
|
|
10075
|
+
);
|
|
10076
|
+
const newTimeline = [...timeline, newEvent];
|
|
10077
|
+
setTimeline(newTimeline);
|
|
10091
10078
|
onColorChange == null ? void 0 : onColorChange(node.id, newColor);
|
|
10092
|
-
onDataUpdate == null ? void 0 : onDataUpdate({ ...node, status: newStatus, color: newColor });
|
|
10079
|
+
onDataUpdate == null ? void 0 : onDataUpdate({ ...node, status: newStatus, color: newColor, timeline: newTimeline });
|
|
10093
10080
|
setHasUnsavedChanges(true);
|
|
10094
10081
|
};
|
|
10095
10082
|
const handleAddType = (newType) => {
|
|
@@ -10310,13 +10297,11 @@ ${noteText}` : noteText : entry.notes,
|
|
|
10310
10297
|
{
|
|
10311
10298
|
onClick: () => {
|
|
10312
10299
|
setAssigneeId("");
|
|
10313
|
-
const newTimeline = [...timeline,
|
|
10314
|
-
|
|
10315
|
-
|
|
10316
|
-
|
|
10317
|
-
|
|
10318
|
-
description: `Respons\xE1vel removido.`
|
|
10319
|
-
}];
|
|
10300
|
+
const newTimeline = [...timeline, createTimelineEntry(
|
|
10301
|
+
(currentUser == null ? void 0 : currentUser.id) || "unknown",
|
|
10302
|
+
`Status "${status}" - Respons\xE1vel: Nenhum`,
|
|
10303
|
+
"status_changed"
|
|
10304
|
+
)];
|
|
10320
10305
|
setTimeline(newTimeline);
|
|
10321
10306
|
setHasUnsavedChanges(true);
|
|
10322
10307
|
setIsAssigneeDropdownOpen(false);
|
|
@@ -10344,13 +10329,11 @@ ${noteText}` : noteText : entry.notes,
|
|
|
10344
10329
|
key: member.id,
|
|
10345
10330
|
onClick: () => {
|
|
10346
10331
|
setAssigneeId(member.id);
|
|
10347
|
-
const newTimeline = [...timeline,
|
|
10348
|
-
|
|
10349
|
-
|
|
10350
|
-
|
|
10351
|
-
|
|
10352
|
-
description: `Quest atribu\xEDda para ${member.name || member.email}.`
|
|
10353
|
-
}];
|
|
10332
|
+
const newTimeline = [...timeline, createTimelineEntry(
|
|
10333
|
+
(currentUser == null ? void 0 : currentUser.id) || "unknown",
|
|
10334
|
+
`Status "${status}" - Respons\xE1vel: ${member.name || member.email}`,
|
|
10335
|
+
"status_changed"
|
|
10336
|
+
)];
|
|
10354
10337
|
setTimeline(newTimeline);
|
|
10355
10338
|
setHasUnsavedChanges(true);
|
|
10356
10339
|
setIsAssigneeDropdownOpen(false);
|
|
@@ -14068,7 +14051,7 @@ function XViewScene({
|
|
|
14068
14051
|
} = questNode;
|
|
14069
14052
|
const newTimeline = [...cleanQuestNode.timeline || [], createTimelineEntry(
|
|
14070
14053
|
((_a2 = session == null ? void 0 : session.user) == null ? void 0 : _a2.id) || "unknown",
|
|
14071
|
-
`
|
|
14054
|
+
`Status "In Progress" - Respons\xE1vel: ${((_b2 = session == null ? void 0 : session.user) == null ? void 0 : _b2.name) || "usu\xE1rio"}`,
|
|
14072
14055
|
"status_changed"
|
|
14073
14056
|
)];
|
|
14074
14057
|
const updatedNode = {
|
|
@@ -14084,7 +14067,7 @@ function XViewScene({
|
|
|
14084
14067
|
setDetailsNode(updatedNode);
|
|
14085
14068
|
}, [session, actionHandlerContext]);
|
|
14086
14069
|
const handleFinishQuestQuick = useCallback4((questNode) => {
|
|
14087
|
-
var _a2, _b2, _c2, _d2
|
|
14070
|
+
var _a2, _b2, _c2, _d2;
|
|
14088
14071
|
if (!questNode || !actionHandlerContext) return;
|
|
14089
14072
|
const {
|
|
14090
14073
|
labelObject,
|
|
@@ -14104,18 +14087,8 @@ function XViewScene({
|
|
|
14104
14087
|
if (currentReviewerIdx !== -1 && reviewStack[currentReviewerIdx].userId === cleanQuestNode.assignee_id) {
|
|
14105
14088
|
reviewStack[currentReviewerIdx].status = "completed";
|
|
14106
14089
|
nextIdxToAssign = currentReviewerIdx + 1;
|
|
14107
|
-
newTimeline.push(createTimelineEntry(
|
|
14108
|
-
((_a2 = session == null ? void 0 : session.user) == null ? void 0 : _a2.id) || cleanQuestNode.assignee_id,
|
|
14109
|
-
`Review conclu\xEDda por ${((_b2 = viewMembers.find((m) => m.id === cleanQuestNode.assignee_id)) == null ? void 0 : _b2.name) || "revisor"}.`,
|
|
14110
|
-
"review_completed"
|
|
14111
|
-
));
|
|
14112
14090
|
} else {
|
|
14113
14091
|
nextIdxToAssign = currentReviewerIdx !== -1 ? currentReviewerIdx : reviewStack.length;
|
|
14114
|
-
newTimeline.push(createTimelineEntry(
|
|
14115
|
-
((_c2 = session == null ? void 0 : session.user) == null ? void 0 : _c2.id) || cleanQuestNode.assignee_id,
|
|
14116
|
-
`Tarefa principal entregue por ${((_d2 = viewMembers.find((m) => m.id === cleanQuestNode.assignee_id)) == null ? void 0 : _d2.name) || ((_e2 = session == null ? void 0 : session.user) == null ? void 0 : _e2.name) || "respons\xE1vel"}.`,
|
|
14117
|
-
"task_completed"
|
|
14118
|
-
));
|
|
14119
14092
|
}
|
|
14120
14093
|
if (nextIdxToAssign < reviewStack.length) {
|
|
14121
14094
|
const remainingMandatory = reviewStack.slice(nextIdxToAssign).some((r) => r.mandatory);
|
|
@@ -14124,12 +14097,6 @@ function XViewScene({
|
|
|
14124
14097
|
const nextReviewer = reviewStack[nextIdxToAssign];
|
|
14125
14098
|
nextAssigneeId = nextReviewer.userId;
|
|
14126
14099
|
nextStatus = "Review";
|
|
14127
|
-
newTimeline.push(createTimelineEntry(
|
|
14128
|
-
"system",
|
|
14129
|
-
`Quest atribu\xEDda para revis\xE3o a ${((_f2 = viewMembers.find((m) => m.id === nextAssigneeId)) == null ? void 0 : _f2.name) || "revisor"}.`,
|
|
14130
|
-
"assignee_changed",
|
|
14131
|
-
{ metadata: { to_assignee_id: nextAssigneeId } }
|
|
14132
|
-
));
|
|
14133
14100
|
} else {
|
|
14134
14101
|
nextStatus = "Done";
|
|
14135
14102
|
for (let i = nextIdxToAssign; i < reviewStack.length; i++) {
|
|
@@ -14139,11 +14106,23 @@ function XViewScene({
|
|
|
14139
14106
|
} else {
|
|
14140
14107
|
nextStatus = "Done";
|
|
14141
14108
|
}
|
|
14142
|
-
if (nextStatus === "
|
|
14109
|
+
if (nextStatus === "Review") {
|
|
14110
|
+
const nextReviewerName = ((_a2 = viewMembers.find((m) => m.id === nextAssigneeId)) == null ? void 0 : _a2.name) || "revisor";
|
|
14143
14111
|
newTimeline.push(createTimelineEntry(
|
|
14144
14112
|
"system",
|
|
14145
|
-
`
|
|
14146
|
-
"
|
|
14113
|
+
`Status "Review" - Respons\xE1vel: ${nextReviewerName}`,
|
|
14114
|
+
"status_changed",
|
|
14115
|
+
{ metadata: { to_assignee_id: nextAssigneeId } }
|
|
14116
|
+
));
|
|
14117
|
+
} else if (nextStatus === "Done") {
|
|
14118
|
+
const finisherName = ((_b2 = viewMembers.find((m) => {
|
|
14119
|
+
var _a3;
|
|
14120
|
+
return m.id === (((_a3 = session == null ? void 0 : session.user) == null ? void 0 : _a3.id) || cleanQuestNode.assignee_id);
|
|
14121
|
+
})) == null ? void 0 : _b2.name) || ((_c2 = session == null ? void 0 : session.user) == null ? void 0 : _c2.name) || "respons\xE1vel";
|
|
14122
|
+
newTimeline.push(createTimelineEntry(
|
|
14123
|
+
((_d2 = session == null ? void 0 : session.user) == null ? void 0 : _d2.id) || cleanQuestNode.assignee_id,
|
|
14124
|
+
`Status "Done" - Finalizado por ${finisherName}`,
|
|
14125
|
+
"status_changed"
|
|
14147
14126
|
));
|
|
14148
14127
|
}
|
|
14149
14128
|
const updatedNode = {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lv-x-software-house/x_view",
|
|
3
|
-
"version": "1.2.5-dev.
|
|
3
|
+
"version": "1.2.5-dev.35",
|
|
4
4
|
"description": "Pacote privado contendo os componentes e lógica de renderização 3D do X View.",
|
|
5
5
|
"author": "iv.x - Engenharia de Software - ivxsoftwarehouse@gmail.com",
|
|
6
6
|
"license": "UNLICENSED",
|