Scenario : I have an EyeSee chart that is updated from user input.
Problem: The EyeSee chart does not update. There are two methods (AFAIK) to update glamour browser pane and its contents: explicitly send update message to the pane or new transmission to the port of the pane to be updated. Now, the first method does not work for EyeSee (may be a bug, i suggested a fix yesterday). The second method requires that transmissions are triggered but since Merlin is outside Glamour, I have to fake a transmission on a dummy port (I tried that but when I execute my browser, the dummy port is nil). I spent several hours looking into ports and their transmissions but couldn't obtain a workable solution for my problem. Here is a mock executable code to see what I am trying to achieve.
| browser aModel myColor| browser := GLMDashboard new.
browser title: 'Customizable EyeSee Chart Example'. browser addPaneNamed: #chart1 extent: 600@600.
myColor := Color green. browser transmit to: #chart1;
andShow: [ :a | a eyesee title: 'Sample bar chart';
diagram: [:renderer :x | (renderer kiviat) borderWidth: 1;
radius: 150; models: {#(8 10 1). #(7 2 10). #(3 10 8)}; metrics: {#first. #second. #last. [ :each | each first + 2]};
maxs: {[ :model | 10]. [ :model | 10]. [ :model | 10]. [ :model | 10].}; mins: {[ :model | 1]. [ :model | 1]. [ :model | 1]. [ :model | 1]};
roundedBorder: true; backgroundColor: myColor; displayLegend: true;
kiviatBackground: true; useColors: ESAbstractDiagram strongColorsTransparent]; act: [
| wizardControl wizardPane1 dropListPart| wizardControl := WizardControl new. wizardControl renderer: MerlinMorphicWizardRenderer new.
wizardPane1 := WizardSinglePane new. dropListPart := DropListPart new list: #(red black green); yourself.
wizardPane1 row: dropListPart associatedTo: #color. wizardControl addPane: wizardPane1. wizardControl atEndDo: [ :aDictionaryOfOutputs |
myColor := aDictionaryOfOutputs at: #color. (browser paneNamed: #chart1) update ]. wizardControl open.
] entitled: 'Parameterize Color'. ].
browser openOn: #(1 2 3 4 5 6 7 8). "can't put color in the input model"
Can you please have a look and see if I am missing something? regards, Usman _______________________________________________ Moose-dev mailing list [hidden email] https://www.iam.unibe.ch/mailman/listinfo/moose-dev |
On Wed, Feb 13, 2013 at 7:42 PM, Usman Bhatti <[hidden email]> wrote:
The answer is allowNil. Example that works: | browser aModel myColor| browser := GLMDashboard new.
browser title: 'Customizable EyeSee Chart Example'. browser addPaneNamed: #chart1 extent: 600@600.
myColor := Color green. browser transmit to: #chart1; fromOutsidePort: #entity;fromOutsidePort: #metrics;
andShow: [ :a | a eyesee title: 'Sample bar chart';
diagram: [:renderer :x :y | self halt. (renderer kiviat)
borderWidth: 1; radius: 150; models: {#(8 10 1). #(7 2 10). #(3 10 8)};
metrics: {#first. #second. #last. [ :each | each first + 2]}; maxs: {[ :model | 10]. [ :model | 10]. [ :model | 10]. [ :model | 10].};
mins: {[ :model | 1]. [ :model | 1]. [ :model | 1]. [ :model | 1]}; roundedBorder: true; backgroundColor: (y ifNil: [Color red]);
displayLegend: true; kiviatBackground: true; useColors: ESAbstractDiagram strongColorsTransparent];
allowNil; act: [ | wizardControl wizardPane1 dropListPart|
wizardControl := WizardControl new. wizardControl renderer: MerlinMorphicWizardRenderer new. wizardPane1 := WizardSinglePane new.
dropListPart := DropListPart new list: #(red black green); yourself. wizardPane1 row: dropListPart associatedTo: #color.
wizardControl addPane: wizardPane1. wizardControl atEndDo: [ :aDictionaryOfOutputs | myColor := aDictionaryOfOutputs at: #color.
((browser pane) port:#metrics) value: (Color perform: myColor). ]. wizardControl open. ] entitled: 'Parameterize Color'. ]. browser openOn: #(1 2 3 4 5 6 7 8).
_______________________________________________ Moose-dev mailing list [hidden email] https://www.iam.unibe.ch/mailman/listinfo/moose-dev |
Free forum by Nabble | Edit this page |