Say that a clone's selection is the source, not the destination
The slice filters the rows being copied, so cloning prior year forward means selecting last December and shifting it, not selecting the December you want to fill. Selecting the destination matches nothing -- prior year's rows are labelled with prior year's periods, so a 2027 slice and a 2026 segment share no rows -- and it fails silently, as zero rows cloned. Nothing in the form said which way round it was, and "copy from <segment>" reads like the selection is the target. It now says the selection is what gets copied, and the segment narrows it rather than replacing it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
518a0ca5ba
commit
1904428fbb
@ -786,17 +786,18 @@ export default function OperationPanel({
|
|||||||
slices={slices} lookupDerivedCols={lookupDerivedCols} dimMembers={dimMembers} versionId={versionId}
|
slices={slices} lookupDerivedCols={lookupDerivedCols} dimMembers={dimMembers} versionId={versionId}
|
||||||
extra={
|
extra={
|
||||||
<div className="flex flex-col gap-2">
|
<div className="flex flex-col gap-2">
|
||||||
{/* Where the mix comes from. Left on the adjustable rows,
|
{/* The selection is the SOURCE, not the destination: pick
|
||||||
clone behaves as it always did. Naming a segment reads
|
the cells you want to copy -- last December, say -- and
|
||||||
from that entry instead -- including the reference ones
|
the shift below is what lands them in the target period.
|
||||||
operations are normally kept away from, which is the
|
Naming a segment narrows that selection to one entry,
|
||||||
point: a period with no baseline borrows a shape from
|
including the reference ones operations are normally kept
|
||||||
prior year or plan. */}
|
away from, which is the point: a period with no baseline
|
||||||
|
borrows its shape from prior year or plan. */}
|
||||||
<div className="flex items-center gap-2 flex-wrap">
|
<div className="flex items-center gap-2 flex-wrap">
|
||||||
<span className="text-gray-500 whitespace-nowrap">copy from</span>
|
<span className="text-gray-500 whitespace-nowrap">copy rows from</span>
|
||||||
<select value={cloneFrom} onChange={e => setCloneFrom(e.target.value)}
|
<select value={cloneFrom} onChange={e => setCloneFrom(e.target.value)}
|
||||||
className={`${INPUT} w-auto`}>
|
className={`${INPUT} w-auto`}>
|
||||||
<option value="">current selection</option>
|
<option value="">the whole selection</option>
|
||||||
{(cloneSources || []).map(s => (
|
{(cloneSources || []).map(s => (
|
||||||
<option key={s.id} value={s.id}>
|
<option key={s.id} value={s.id}>
|
||||||
{s.label || `${s.operation} #${s.id}`}
|
{s.label || `${s.operation} #${s.id}`}
|
||||||
@ -818,11 +819,17 @@ export default function OperationPanel({
|
|||||||
<option value="24 months" />
|
<option value="24 months" />
|
||||||
<option value="0 days" />
|
<option value="0 days" />
|
||||||
</datalist>
|
</datalist>
|
||||||
<span className="text-gray-400 text-[11px]">
|
|
||||||
every date column, with period dimensions re-derived
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
{cloneFrom && (
|
||||||
|
<p className="text-gray-500 text-[11px] leading-snug max-w-sm">
|
||||||
|
The cells you have selected are what gets copied. Shifting
|
||||||
|
moves every date column, and the season and month
|
||||||
|
dimensions are re-derived from the calendar to match — so
|
||||||
|
select the period you are copying <em>from</em>, not the
|
||||||
|
one you are filling.
|
||||||
|
</p>
|
||||||
|
)}
|
||||||
|
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<span className="text-gray-500">scale cloned rows by</span>
|
<span className="text-gray-500">scale cloned rows by</span>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user