Suche // Search:

09.04.2010

FormCalc Diagramme Teil 3 - Gestapeltes Säulendiagramm
//
FormCalc Charts Pt.3 - Stacked Bar Charts

Dies ist ein Upgrade zum einfachen Säulendiagramm von neulich.
Hier werden nun aus verschiedenen Eingabewerten gestapelte Säulendiagramme generiert.
Dafür kommt eine Tabelle zum Einsatz, die es erlaubt sowohl Zeilen als auch Spalten hinzuzufügen.
Die Kalkulation der Säulen übernimmt auch hier ein verstecktes Feld "Trigger", dass mit FomCalc arbeitet.

This is an Upgrade of the simple bar chart I posted on the other day.
This one generates stacked bar charts from the input values.
Therefore it uses a table that allows to add rows and columns.
The calculations of the bars is done by a hidden field "trigger" with a FormCalc script.

FormCalc Script:
var nRows = Input.Table.ChartValues.instanceManager.count

_Chart.setInstances(nRows)
var nColumns = Input.Table.ChartValues[nRows -1].Col.instanceManager.count
Chart[*].Stack._Bar[*].setInstances(nColumns)
Chart[*].Labels._Label[*].setInstances(nColumns)


for i=0 upto nRows -1 step 1 do
for j=0 upto nColumns -1 step 1 do
var BarValue = Input.Table.ChartValues[i].Col[j].Amount


var nColor = Choose(j+1, "238,0,0", ;Red
"255,48,48", ;FireBrick
"255,99,71", ;Tomato
"255,127,80", ;Coral
"255,140,0", ;DarkOrange
"255,165,0", ;Orange
"255,215,0", ;Gold
"255,255,0", ;Yellow
;"238,238,0", ;Yellow2
"154,205,50") ;YellowGreen
Chart[i].Stack.Bar[j].BarGraph.value.rectangle.fill.color.value = nColor
Chart[i].Stack.Bar[j].BarGraph.value.rectangle.edge.color.value = nColor


var ChartMod = UnitValue(BarValue, "in") / 25.4
Chart[i].Stack.Bar[j].BarGraph.h = UnitValue(ChartMod, "in")
Chart[i].Labels.Label[j].BarValue.h = UnitValue(ChartMod, "in")
Chart[i].Labels.BarTotal = Input.Table.ChartValues[i].Sum
Chart[i].Labels.BarLabel = Input.Table.ChartValues[i].Label

if(Input.Table.ChartValues[i].Col[j].Amount >= 3) then
Chart[i].Labels.Label[j].BarValue.value.text.value = Input.Table.ChartValues[i].Col[j].Amount
else
Chart[i].Labels.Label[j].BarValue.value.text.value = ""
endif


var ContainerHeight = UnitValue(Chart.h, "in")
var ChartOffset = UnitValue(Input.Table.ChartValues[i].Sum, "in") / 25.4
Chart[i].Stack.y = ContainerHeight - ChartOffset
Chart[i].Labels.y = ContainerHeight - ChartOffset - UnitValue("5mm", "in")
endfor
endfor
Gestapeltes Säulendiagramm // Stacked Bar Chart:


Beispiel
//
Example:
https://files.acrobat.com/a/preview/2d351f73-093f-44fa-9881-2fbb04ed3dc8

01.04.2010

Ansicht kontrollieren
//
Control view

Die Ansicht eines Dokuments lässt sich im Acrobat/Reader auf vielfältige Weise einstellen.
Ob einzelne Seite, zwei Seiten fortlaufend, mit Lesezeichen-Panel, an die Breite angepasst usw., vieles ist möglich, aber nur nachträglich über das Menü.

Mit JavaScript können diese Einstellungen aber auch aus einem XFA-Formular heraus geändert werden.
Das ist über die Eigenschaften des viewState-Objekts möglich.

overViewMode steuert die Panels und Vollansicht.
pageViewLayoutMode steuert das Seitenlayout.
pageViewZoom steuert den Zoomfaktor.
pageViewZoomType steuert die Zoomanpassung an das Applikationsfenster.

Diese Eigenschaften lassen sich zur Laufzeit einfach per Button ansteuern oder auch über des docReady:event des Formulars.
Somit kann die Ansicht beim Öffnen effektiv an die eigenen Bedürfnisse angepasst werden.


The view of a document can be set in manifold ways in Acrobat/Reader.
If single page, 2-up continious, with bookmarks panel, fit to width etc..
A lot is possible, but only with the menu.

JavaScript enables control of all these things from within a XFA-form.
Therefore the properties of the viewState object are used.

overViewMode controls the panels and full screen mode.
pageViewLayoutMode controls the page layout.
pageViewZoom controls the zoom level.
pageViewZoomType controls the zoom adaption to the application window.

This properties can be changes through a button script or the docReady:event of the form.
So you're able to control the initial view of the form.

JavaScripts zum Anpassen der Ansicht
//
JavaScripts to change view:


event.target.viewState = {overViewMode:3};
event.target.viewState = {PageViewLayoutMode:1};
event.target.viewState = {PageViewZoom:0.75};
event.target.viewState = {PageViewZoomType:1};
Zwei Seiten // 2-Up:

Zwei Seiten mit Cover // 2-Up with Cover:

Seiten-Panel und an Höhe anpassen // Pages panel and fit to height:


Beispiel // Example:
https://files.acrobat.com/a/preview/64505b6b-7eb9-402a-b89d-63c55271a486