← 3c.2 Initial PAL demos


PAL-DEMO-4: Palantir ontology function “speedrun” (quick start) (26.0717)

See the working text for this QS in


03
drones









NOTES


1 selecting in the “INLINE ACTION FORM OR TABLE” does not show a result in the “CHART: XY”.

when I select in “OBJECT TABLE” it works. could you compare the code and find error?

FDE/GPT5.5: I inspected the Workshop DSL for :resource[ri.workshop.main.module.8e56100f-095a-43e9-b904-62829182d29b]. The mismatch is here:

What works: OBJECT TABLE

The object table is wired to write its selected row into this variable:

const objectTable1ActiveObject = W.variable.objectSet(
  "Object table 1 Active object",
  undefined,
  { id: "0450e19e-4811-64a5-ee5d-9dba81e99aec" }
);

Then the table uses that variable in its selection config:

Selection: {
  activeObjectConfig: {
    activeObjectSet: objectTable1ActiveObject,
    enableAutoSelection: true,
    onObjectSelect: [],
  },
},

So when you click a clinic in OBJECT TABLE, Workshop updates objectTable1ActiveObject.

The CHART: XY is almost certainly configured internally to use that same active-object variable as its input/filter. The chart config is stored as an unsupported DSL blob:

const chartXy1 = W.widget.chartXy(
  W.unsupportedWorkshopConfig("16bqcke"),
  { editorLabel: "Chart: XY 1", id: "9968a213-70c6-4b2d-8dbf-576cc5fdf65b" }
);

So we cannot see the chart’s internals directly in DSL, but the behavior proves it is listening to the object-table active selection.


What does not work: INLINE ACTION FORM OR TABLE

The inline action form is not wired to the same selected-object variable.

Its config is:

const inlineActionFormOrTable1 = W.widget.inlineActionFormOrTable({
  actionConfigs: [{
    actionConfig: {
      action: {
        actionRid: "ri.actions.main.action-type.03f7a9fc-3e92-4f1b-a1a2-2f3ef433b1ed",
        parameters: {}
      },
      defaultLayout: "FORM",
      isLayoutToggleEnabled: false,
      isFileUploadEnabled: true,
      tableLayout: {
        frozenColumnCount: 0,
        isFileUploadEnabled: true,
        isRowAddEnabled: true,
        isRowRemovalEnabled: true,
        rowHeightInLines: 1
      },
      disableIfInvalid: true
    },
    onSubmitSuccess: [],
    hideHeader: false,
    scenarioApply: undefined,
  }],
});

The important problems:

parameters: {}

and

onSubmitSuccess: []

and no:

outputObjectSet

So the inline action form lets the user choose a Clinic parameter for the action, but that choice is local to the action form. It does not update objectTable1ActiveObject.

That is why the chart does not react.


The error / mismatch

The bug is not in the chart. The bug is the wiring mismatch:

Widget User selects clinic Does it update objectTable1ActiveObject? Chart updates?
OBJECT TABLE Yes Yes Yes
INLINE ACTION FORM OR TABLE Yes No No

The action form is currently only a submit form for the action Set Clinic Goal. It is not acting as a shared selection controller.


Plain-language explanation

Selecting a clinic in the action form is not the same thing as selecting a clinic in the object table.

The object table selection is connected to the chart.
The action form parameter is not connected to the chart.

So when you choose a clinic inside INLINE ACTION FORM OR TABLE, Workshop knows which clinic to submit to the action, but it does not treat that clinic as the page’s active selected clinic.


Likely fix

Use one shared clinic-selection variable and wire both widgets to it.

Possible approaches:

  1. Best UX: Add/use an Object Dropdown or selector widget for clinic selection, bind it to a shared selectedClinic object-set variable, and have both:
    • chart use selectedClinic
    • action form parameter use selectedClinic
  2. Submit-based behavior: Configure the inline action form with an outputObjectSet and onSubmitSuccess event so that after the action submits, it updates/recomputes the selected clinic / chart. This would update only after submit, not immediately when the form dropdown changes.

  3. Keep object table as source of truth: Require selecting the clinic in the object table first, then have the action form use the table’s active object as the hidden or disabled clinic parameter.

The current code does none of these, so the chart only responds to the object table.


2 Yes — I can modify the Workshop module code, and I did it on a new branch.

Module edited:

:resource[ri.workshop.main.module.8e56100f-095a-43e9-b904-62829182d29b]{globalBranchRid=”ri.branch..branch.5aeae78f-8244-46d7-b01b-be009cad66ca”}

Branch:

:resource[ri.branch..branch.5aeae78f-8244-46d7-b01b-be009cad66ca]

What I changed

The OBJECT TABLE already writes its active selected clinic into:

objectTable1ActiveObject

The chart appears to depend on that same variable.

The inline action form previously had no connection to that variable:

onSubmitSuccess: [],
scenarioApply: undefined,

I changed it to:

onSubmitSuccess: [{ type: "refreshDataInModule" }],
hideHeader: false,
scenarioApply: undefined,
outputObjectSet: objectTable1ActiveObject,

So now the inline action form config is:

const inlineActionFormOrTable1 = W.widget.inlineActionFormOrTable({
    actionConfigs: [{
        actionConfig: {
            action: {
                actionRid: "ri.actions.main.action-type.03f7a9fc-3e92-4f1b-a1a2-2f3ef433b1ed",
                parameters: {}
            },
            defaultLayout: "FORM",
            isLayoutToggleEnabled: false,
            isFileUploadEnabled: true,
            tableLayout: {
                frozenColumnCount: 0,
                isFileUploadEnabled: true,
                isRowAddEnabled: true,
                isRowRemovalEnabled: true,
                rowHeightInLines: 1
            },
            disableIfInvalid: true
        },
        onSubmitSuccess: [{ type: "refreshDataInModule" }],
        hideHeader: false,
        scenarioApply: undefined,
        outputObjectSet: objectTable1ActiveObject,
    }],
}, { editorLabel: "Inline Action Form or Table 1", id: "e6019863-cb49-4117-8d3f-b8f4a4955735" });

Important limitation

This probably makes the chart update after the action is submitted, not immediately when you merely choose a clinic inside the inline action form.

Reason: the inline action form widget does not appear to expose the currently selected action parameter as a normal Workshop variable. It can expose an outputObjectSet after submission, so I wired that output into the same object-set variable that the chart already responds to.

So the expected behavior is:

choose clinic in inline action form
submit action
  ↓
inline action outputs affected clinic object set
  ↓
objectTable1ActiveObject is updated
  ↓
chart refreshes / updates

But this likely will not do:

choose clinic in inline action form
  ↓
chart instantly updates before submit

If you want the instant-update behavior

The cleaner design would be to add a separate shared Object Dropdown / Object Selector for Clinic, then wire:

  • the chart to that shared selected-clinic variable
  • the inline action form’s clinic parameter to that shared selected-clinic variable
  • optionally the object table selection to the same variable

That would make selection truly shared across the UI. The inline action form by itself is not a great “selection controller”; it is primarily an action submission widget.


3 FAIL

TypeError network error Here are the details of the error:

[TypeError] network error

Actually, it is possible, but my first attempted fix was wrong.

The failed part was this idea:

outputObjectSet: objectTable1ActiveObject

That produced the UI error you saw:

Failed to apply changes due to a configuration issue.

So I backed away from that approach.

What I changed instead

I added a new Clinic Selector dropdown to the UI and wired it to the same selected-clinic variable that the object table uses:

objectTable1ActiveObject

That means:

Clinic Selector
      ↓
objectTable1ActiveObject
      ↓
Chart: XY

And I also changed the inline action form so its clinic parameter uses that same selected clinic:

parameters: {
  clinic: {
    value: {
      type: "variableReference",
      variable: objectTable1ActiveObject
    },
    displayType: "DISABLED"
  }
}

So now the intended flow is:

Select Clinic in new dropdown
        ↓
Chart updates
        ↓
Inline Action Form uses the selected clinic
        ↓
Submit action

Where I made the edit

Workshop module:

:resource[ri.workshop.main.module.8e56100f-095a-43e9-b904-62829182d29b]{globalBranchRid=”ri.branch..branch.5aeae78f-8244-46d7-b01b-be009cad66ca”}

Branch:

:resource[ri.branch..branch.5aeae78f-8244-46d7-b01b-be009cad66ca]

Important nuance

I cannot make the inline action form’s internal clinic picker itself drive the chart directly, at least not cleanly through the Workshop DSL exposed here.

The inline action form’s parameter value is internal to the action widget. It does not appear to expose “currently selected clinic parameter” as a reusable Workshop variable.

So the practical fix is to add a real shared selector widget and make both the chart and action form use that shared selection.

Capability summary

So, capability-wise:

  • ✅ I can inspect the Workshop module DSL.
  • ✅ I can compare widget wiring.
  • ✅ I can edit the Workshop module on a branch.
  • ✅ I can add widgets and wire variables/events.
  • ✅ I can bind an action parameter to a Workshop variable.
  • ⚠️ I cannot fully inspect/edit unsupported widget internals like the Chart: XY config because it appears as:

    W.unsupportedWorkshopConfig("16bqcke")
    
  • ⚠️ I cannot directly bind to the inline action form’s internal picker state unless Workshop exposes it as a variable or output.

So the answer is: possible, but not by making the original inline action form picker magically behave like a selection widget. The fix requires a shared selector.


3 what did you ??? its working :)

Nice 🙂 — then the second fix worked.

What I changed was:

1. Added a new shared clinic selector

I added an Object Dropdown widget called:

Clinic Selector

It uses the same Clinics object set as the table:

objectSet: clinics

and writes its selected clinic into the existing variable:

selectedObjectSet: objectTable1ActiveObject

That variable was already the one used by the object table selection.

So now both of these can control the same selected clinic:

OBJECT TABLE selection
CLINIC SELECTOR dropdown
        ↓
objectTable1ActiveObject

2. Rewired the inline action form to use that same selected clinic

Before, the inline action form had its own independent clinic input:

parameters: {}

So selecting a clinic inside the form did not update the chart.

I changed it to:

parameters: {
  clinic: {
    value: {
      type: "variableReference",
      variable: objectTable1ActiveObject
    },
    displayType: "DISABLED"
  }
}

So the inline action form now uses the currently selected clinic from the shared variable.

3. Resulting behavior

Now the flow is:

Select clinic in new dropdown or object table
        ↓
objectTable1ActiveObject updates
        ↓
CHART: XY updates
        ↓
Inline action form receives same clinic
        ↓
Submit action for that clinic

So the reason it works is that I stopped trying to use the inline action form as the selector. Instead, I made the app use a shared selected-clinic variable and connected both the chart and the action form to it.


01
drones


02
drones


26.0717 (v1 26.0717)