Deploy AIOS web (React glide grid + FastAPI slice)
Browse files
web/src/customer-grid/CustomerGrid.tsx
CHANGED
|
@@ -2985,6 +2985,13 @@ function CustomerGridSurface({
|
|
| 2985 |
[cohortMode, linkCandidateRows, cohortMemberSet]
|
| 2986 |
);
|
| 2987 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2988 |
const { visibleRows, pidToIndex } = useVisibleRows(
|
| 2989 |
scopedRows,
|
| 2990 |
fields,
|
|
@@ -3006,7 +3013,8 @@ function CustomerGridSurface({
|
|
| 3006 |
// wave17 R1 / C-LOCKV: the view's SAVED lock is now the only source. A locked view is a
|
| 3007 |
// saved view whose `config.cohortLock` names its own id, so opening it IS applying the
|
| 3008 |
// lock β the wave-15 transient rail pick that used to outrank this is gone with its rail.
|
| 3009 |
-
config.cohortLock
|
|
|
|
| 3010 |
);
|
| 3011 |
|
| 3012 |
// Owner item 8 β the DISPLAY cap. The pipeline above still ran over the whole book (counts,
|
|
@@ -7528,7 +7536,7 @@ function CustomerGridSurface({
|
|
| 7528 |
);
|
| 7529 |
}
|
| 7530 |
|
| 7531 |
-
const activeView =
|
| 7532 |
// Cohort mode's toolbar control (rendered by Toolbar via the `cohortAction` slot; the popover
|
| 7533 |
// it opens is with the other overlays at the bottom). Disabled without an active cohort β
|
| 7534 |
// zero cohorts is the host page's near-empty state, not this button's error to explain.
|
|
|
|
| 2985 |
[cohortMode, linkCandidateRows, cohortMemberSet]
|
| 2986 |
);
|
| 2987 |
|
| 2988 |
+
// W42-T27 β display mode deliberately ignores an unresolved condition so an
|
| 2989 |
+
// owner's existing view stays unchanged. A view granted to this reader is a
|
| 2990 |
+
// permission boundary instead: an unavailable field must narrow the result,
|
| 2991 |
+
// never make the shared view show extra rows.
|
| 2992 |
+
const activeViewForPermissions = views.find((view) => view.id === activeViewId);
|
| 2993 |
+
const receiverSharedView = activeViewForPermissions?.shared === true;
|
| 2994 |
+
|
| 2995 |
const { visibleRows, pidToIndex } = useVisibleRows(
|
| 2996 |
scopedRows,
|
| 2997 |
fields,
|
|
|
|
| 3013 |
// wave17 R1 / C-LOCKV: the view's SAVED lock is now the only source. A locked view is a
|
| 3014 |
// saved view whose `config.cohortLock` names its own id, so opening it IS applying the
|
| 3015 |
// lock β the wave-15 transient rail pick that used to outrank this is gone with its rail.
|
| 3016 |
+
config.cohortLock,
|
| 3017 |
+
receiverSharedView
|
| 3018 |
);
|
| 3019 |
|
| 3020 |
// Owner item 8 β the DISPLAY cap. The pipeline above still ran over the whole book (counts,
|
|
|
|
| 7536 |
);
|
| 7537 |
}
|
| 7538 |
|
| 7539 |
+
const activeView = activeViewForPermissions;
|
| 7540 |
// Cohort mode's toolbar control (rendered by Toolbar via the `cohortAction` slot; the popover
|
| 7541 |
// it opens is with the other overlays at the bottom). Disabled without an active cohort β
|
| 7542 |
// zero cohorts is the host page's near-empty state, not this button's error to explain.
|
web/wiring_rows/wave42_c.py
CHANGED
|
@@ -175,5 +175,14 @@ ROWS: list[tuple[str, str, str, str, str]] = [
|
|
| 175 |
"customer-grid/CustomerGrid.tsx", r"outcome\.results"),
|
| 176 |
]
|
| 177 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 178 |
#: (what was deleted, file, the pattern that must NOT match, why it matters)
|
| 179 |
DELETIONS: list[tuple[str, str, str, str]] = []
|
|
|
|
| 175 |
"customer-grid/CustomerGrid.tsx", r"outcome\.results"),
|
| 176 |
]
|
| 177 |
|
| 178 |
+
# W42-T27: strict is only effective once the grid passes it into the row
|
| 179 |
+
# pipeline for a receiver's shared view. The owner remains in display mode.
|
| 180 |
+
ROWS.append(
|
| 181 |
+
("W42-T27 a receiver's shared-view filters reach the fail-closed row pipeline",
|
| 182 |
+
"customer-grid/useVisibleRows.ts", r"strict\?: boolean",
|
| 183 |
+
"customer-grid/CustomerGrid.tsx",
|
| 184 |
+
r"useVisibleRows\([\s\S]*config\.cohortLock,\s*receiverSharedView")
|
| 185 |
+
)
|
| 186 |
+
|
| 187 |
#: (what was deleted, file, the pattern that must NOT match, why it matters)
|
| 188 |
DELETIONS: list[tuple[str, str, str, str]] = []
|