Deploy AIOS web (React glide grid + FastAPI slice)
Browse files- RELEASES.json +1 -1
- VERSION +1 -1
- web/src/customer-grid/CustomerGrid.tsx +14 -0
RELEASES.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
{
|
| 2 |
-
"current": "
|
| 3 |
"releases": [
|
| 4 |
{
|
| 5 |
"version": "v29",
|
|
|
|
| 1 |
{
|
| 2 |
+
"current": "e09d5b9",
|
| 3 |
"releases": [
|
| 4 |
{
|
| 5 |
"version": "v29",
|
VERSION
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
|
|
|
|
| 1 |
+
e09d5b9
|
web/src/customer-grid/CustomerGrid.tsx
CHANGED
|
@@ -5029,6 +5029,20 @@ function CustomerGridSurface({
|
|
| 5029 |
...(extra?.link ? { link: extra.link } : {}),
|
| 5030 |
...(extra?.rollup ? { rollup: extra.rollup } : {}),
|
| 5031 |
...(type === "formula" && extra?.formula ? { formula: extra.formula } : {}),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5032 |
...(field.agg ? { agg: field.agg } : {}),
|
| 5033 |
}).then((made) => {
|
| 5034 |
if (!made) return; // the bridge has already said why
|
|
|
|
| 5029 |
...(extra?.link ? { link: extra.link } : {}),
|
| 5030 |
...(extra?.rollup ? { rollup: extra.rollup } : {}),
|
| 5031 |
...(type === "formula" && extra?.formula ? { formula: extra.formula } : {}),
|
| 5032 |
+
/* ⭐⭐ W37-T22 — THE GEOCODE BAG, AND THIS LINE IS THE THIRD DOOR OF THE SAME FIX.
|
| 5033 |
+
⛔ FOUND BY QA DRIVING THE REAL UI, after the server half and the offer half were both
|
| 5034 |
+
already landed and believed sufficient. `ColumnMenu` builds
|
| 5035 |
+
`extra.geocode = {addressField, country}` and `buildOverlayField` (:679) folds it in for
|
| 5036 |
+
the customers/products path — but THIS branch, the one every `ut_*` database uses, listed
|
| 5037 |
+
`link`/`rollup`/`formula` and not `geocode`. Measured: the POST body was
|
| 5038 |
+
`{key, label, type:"text"}` with no bag at all, so a person picked an address column and
|
| 5039 |
+
got a plain inert text field back.
|
| 5040 |
+
⚠ AND IT FAILED SILENTLY BY DESIGN: `user_tables._clean_field` treats an absent geocode
|
| 5041 |
+
bag as an ordinary text column (correctly — otherwise every text column would 400), so
|
| 5042 |
+
there was no error, no toast, and nothing to tell the person their pick was dropped.
|
| 5043 |
+
⭐ The lesson is the wave's own, arriving a third time: ONE vocabulary, and a write path
|
| 5044 |
+
per surface. Fixing the validator and the offer left the SEND still broken. */
|
| 5045 |
+
...(extra?.geocode ? { geocode: extra.geocode } : {}),
|
| 5046 |
...(field.agg ? { agg: field.agg } : {}),
|
| 5047 |
}).then((made) => {
|
| 5048 |
if (!made) return; // the bridge has already said why
|