Width of MBR for each polygon

I need to create a view that is being used in a jsp. It needs to select from a series objects : the centrex, centrey and a "zoom width" in meters for each object. The centre x and y is not a problem as it is in the underlying tables. However i need to generate the zoom width in the view. The zoom width being the width of the polygon , therefore the view/jsp shows the entire polygon on the web page. However the jsp will only display the zoom width as a number field therefore i do not know if i generate the view using a sdo_geom function or a nother function. Is it possible to use several functions (and if so what would they be) e.g sdo_mbr or sdo_adrea to achieve this zoom width as a number field (in meters) or should i be going about it another way.

you could use the SDO_GEOM.SDO_MAX_MBR_ORDINATE and
SDO_GEOM.SDO_MIN_MBR_ORDINATE function for this.
(http://download.oracle.com/docs/html/B14255_01/sdo_objgeom.htm#i866249)
width: delta x of the MBR:
select SDO_GEOM.SDO_MAX_MBR_ORDINATE(geometry, 1) - SDO_GEOM.SDO_MIN_MBR_ORDINATE(geometry, 1)
from table_name
height: delta y of the MBR:
select SDO_GEOM.SDO_MAX_MBR_ORDINATE(geometry, 2) - SDO_GEOM.SDO_MIN_MBR_ORDINATE(geometry, 2)
from table_name
Maybe you need the max of the delta's as your width in order to have the geometry completly in your map area when zoomed to it, but this can be dependant from your application
select ID, MAX(delta)
from
select ID, SDO_GEOM.SDO_MAX_MBR_ORDINATE(geometry, 1) - SDO_GEOM.SDO_MIN_MBR_ORDINATE(geometry, 1) as delta
from table_name
union
select ID, SDO_GEOM.SDO_MAX_MBR_ORDINATE(geometry, 2) - SDO_GEOM.SDO_MIN_MBR_ORDINATE(geometry, 2) as delta
from table_name
group by id
Luc

Similar Messages

  • Looping through an array to get the index for each measure in a combo box

    Hi folks,
    I am working on a web application that has two combo boxes, one for year (called yearcombo) and for measures (called myURL) for that selected year, and also two radiobuttons (in radioBtnGroup). I have two years and a bunch of measure for each year. I  have a map tool tip that when you mouse over the county you see a measure for that specific year. However I have a bunch of measures for each year and I want to be able to loop through the measures (which are in an array collection inside a combobox) so my "if" expression can find every selectedIndex and bring me the tool tip for that selected measure for that selected radio button. Right now I would have to create if statements for each measure (each selectedIndex inside the myURL combobox)and each radiobutton (inside the radioBtnGroup) instead of creating a if expression to get a map tip tool for each measure. I know I would have to create a loop to search for these indexes and enter that in the if expression and also change the graphic.attributes to reflect the right measure or index selected. Do you API for Flex wizards  can give me any tips on how to code this according to my code below ? Any  help is greatly appreciated! (the print scree is attached)
    Below is the code snippet:
    if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 0 && radioBtnGroup.selectedValue == 0)
    fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
    var graphic:Graphic = Graphic(event.currentTarget);
    graphic.symbol = mouseOverSymbol;
    var htmlText:String = graphic.attributes.htmlText;
    var textArea:TextArea = new TextArea();
    try{
    textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForDirIndOut.toString()
    myMap.infoWindow.content=textArea
    myMap.infoWindow.label = graphic.attributes.NAME;
    myMap.infoWindow.closeButtonVisible = false;
    myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
    catch(error:Error) {
    trace("Caught Error: "+error);
    And below is the combo boxes with the arrays
    <mx:FormItem label="Year        :"  >
    <mx:ComboBox   id="yearcombo" selectedIndex="0" labelField="label" width="100%" change="changeEvt(event)"  >
    <mx:ArrayCollection id="year"  >
    <fx:Object label="2007"  year="2007" />
    <fx:Object label="2009"  year="2009" />
    </mx:ArrayCollection>
    </mx:ComboBox>
    </mx:FormItem>
    <mx:FormItem label="Measure:">
    <mx:ComboBox   id="myURL" selectedIndex="8" width="80%" mouseOver="clickEv2(event)" close="closeHandler(event)">
    <mx:ArrayCollection id="measures"   >
    <fx:Object id="forindout07" labeltext="2007 Forestry Industry Output" label="Forestry Industry Output " value="RADIO_BUTTONS/TFEI_07_forest_industry_output" year="2007"  />
    <fx:Object id="foremp07" label="2007 Forestry Employment " value="RADIO_BUTTONS/TFEI_07_forest_employment" year="2007" />
    <fx:Object id="forlabinc07" label="2007 Forestry Labor Income " value="RADIO_BUTTONS/TFEI_07_forest_labincome" year="2007" />
    <fx:Object id="forindbustax07" label="2007 Forestry Indirect Business Tax" value="RADIO_BUTTONS/TFEI_07_forest_business_tax" year="2007" />
    <fx:Object id="forindout09" label="Forestry Industry Output " value="RADIO_BUTTONS/TFEI_09_forest_industry_output" year="2009"  />
    <fx:Object id="foremp09" label="2009 Forestry Employment " value="RADIO_BUTTONS/TFEI_09_forest_employment" year="2009" />
    <fx:Object id="forlabinc09" label="2009 Forestry Labor Income " value="RADIO_BUTTONS/TFEI_09_forest_labincome" year="2009" />
    <fx:Object id="forindbustax09" label="2009 Forestry Indirect Business Tax" value="RADIO_BUTTONS/TFEI_09_forest_business_tax" year="2009" />
    <fx:Object id="blank" label=" "  />
    </mx:ArrayCollection>

    And here is the entire code
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application       
                    xmlns:fx="http://ns.adobe.com/mxml/2009"
                    xmlns:s="library://ns.adobe.com/flex/spark"
                    xmlns:mx="library://ns.adobe.com/flex/mx"
                    xmlns:esri="http://www.esri.com/2008/ags"
                    paddingBottom="8" paddingLeft="8"
                    paddingRight="8" paddingTop="8"
                    backgroundColor="0xffffff"
                    layout="vertical" >
        <!-- Start Declarations -->
    <fx:Declarations>
            <esri:SimpleFillSymbol id="mouseOverSymbol" alpha="0.5" color="0x808080">
                <esri:SimpleLineSymbol width="0" color="#000000"/>
            </esri:SimpleFillSymbol>
            <esri:SimpleFillSymbol id="defaultsym" alpha="0.01" color="#E0E0E0"   >
                <esri:SimpleLineSymbol width="1" color="#000000"/>
            </esri:SimpleFillSymbol>
        <!-- End Declarations -->
    </fx:Declarations>
        <fx:Script>
            <![CDATA[
                import com.esri.ags.Graphic;
                import com.esri.ags.SpatialReference;
                import com.esri.ags.esri_internal;
                import com.esri.ags.events.GraphicEvent;
                import com.esri.ags.geometry.Extent;
                import com.esri.ags.layers.ArcGISDynamicMapServiceLayer;
                import com.esri.ags.symbols.SimpleFillSymbol;
                import com.esri.ags.symbols.SimpleLineSymbol;
                import flash.utils.flash_proxy;
                import mx.collections.ArrayCollection;
                import mx.controls.Alert;
                import mx.controls.RadioButton;
                import mx.controls.TextArea;
                import mx.events.DropdownEvent;
                import mx.events.ItemClickEvent;
                import mx.rpc.Fault;
                import mx.rpc.events.FaultEvent;
                import flash.display.Sprite;
                import flash.events.ErrorEvent;
                import flash.events.MouseEvent;
                private function closeHandler(evt:DropdownEvent):void {
                    myLabel.text = ComboBox(evt.target).selectedItem.labeltext;
                private function loadLayerName():void
                    myLegend.layers = null;
                    layerPanel.removeAllChildren();
                    //loop through each layer and add as a radiobutton
                    for(var i:uint = 0; i < (dynamicLayer.layerInfos.length); i++)
                        var radioBtn:RadioButton = new RadioButton;
                        radioBtn.groupName = "radioBtnGroup";
                        radioBtn.value = i;
                        radioBtn.label = dynamicLayer.layerInfos[i].name;
                        if (dynamicLayer.layerInfos[i].name == "Direct Impact (Million $)")
                            radioBtn.label = "Direct Impact";
                        else if (dynamicLayer.layerInfos[i].name == "Total Impact (Million $)")
                        {radioBtn.label = "Total Impact";
                        else if (dynamicLayer.layerInfos[i].name == "Total Impact (Jobs)")
                        {radioBtn.label = "Total Impact";
                        else if (dynamicLayer.layerInfos[i].name == "Direct Impact (Jobs)")
                        {radioBtn.label = "Direct Impact";
                        else
                        {radioBtn.visible= false;
                        layerPanel.addChild(radioBtn);
                    /*     myDividerBox.getDividerAt(0).visible = false; */
                    //set the visible layer the first radio button
                     radioBtnGroup.selectedValue = 0;
                     dynamicLayer.visibleLayers = new ArrayCollection([0]);
                    myLegend.layers = [dynamicLayer];
                    myLegend.visible = true;
                private function radioClickHandler(event:ItemClickEvent):void
                    myLegend.layers = null;
                    // update the visible layers to only show the layer selected
                    dynamicLayer.visibleLayers = new ArrayCollection([event.index]);
                    myLegend.layers = [dynamicLayer];
                private function changeEvt(event:Event):void {
                if (yearcombo.selectedItem.year == "2007")
                    measures.filterFunction=filter1
                    measures.refresh()
                    myURL.dataProvider=measures
                else if (yearcombo.selectedItem.year == "2009")
                    measures.filterFunction=filter2
                    measures.refresh();
            public function filter1(item:Object):Boolean
                if (item.year=="2007") return true
                else return false
                public function filter2(item:Object):Boolean
                    if (item.year=="2009") return true
                    else return false
                private function clickEvt(event:Event):void {
                    if (yearcombo.selectedItem.year == "2007")
                        measures.filterFunction=filter3
                        measures.refresh()
                        myURL.dataProvider=measures
                    else if (yearcombo.selectedItem.year == "2009")
                        measures.filterFunction=filter4
                        measures.refresh();
                public function filter3(item:Object):Boolean
                    if (item.year=="2007") return true
                    else return false
                public function filter4(item:Object):Boolean
                    if (item.year=="2009") return true
                    else return false
                private function clickEv2(event:Event):void {
                    if (yearcombo.selectedItem.year == "2007")
                        measures.filterFunction=filter5
                        measures.refresh()
                    else if (yearcombo.selectedItem.year == "2009")
                        measures.filterFunction=filter6
                        measures.refresh();
                    else if (yearcombo.selectedItem.year == 2007 && myURL.selectedIndex==8)
                        myLegend.layers = null;
                        layerPanel.removeAllChildren();
                public function filter5(item:Object):Boolean
                    if (item.year=="2007") return true
                    else return false
                public function filter6(item:Object):Boolean
                    if (item.year=="2009") return true
                    else return false
                /* IF YOU WANT TO INCLUDE OTHER VALUES IN THE MAP TOOLTIP LIKE COUNTY NAME AND THE LABEL OF THE SELECTED ITEM
                if (myURL.selectedIndex==0)
                myTextArea.htmlText = "<b>County: </b>" + gr.attributes.NAME + "\n"
                + "<b>Measure: </b>" + myURL.selectedItem.label + gr.attributes.ForDirIndOut.toString()
                public function fLayer_graphicAddHandler(event:GraphicEvent):void
                    event.graphic.addEventListener(MouseEvent.MOUSE_OVER, onMouseOverHandler);
                    event.graphic.addEventListener(MouseEvent.MOUSE_OUT, onMouseOutHandler);
                public function onMouseOverHandler(event:MouseEvent):void
                    if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 0 && radioBtnGroup.selectedValue == 0)
                        fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
                        var graphic:Graphic = Graphic(event.currentTarget);
                        graphic.symbol = mouseOverSymbol;
                        var htmlText:String = graphic.attributes.htmlText;
                        var textArea:TextArea = new TextArea();
                        try{
                        textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForDirIndOut.toString()
                        myMap.infoWindow.content=textArea
                        myMap.infoWindow.label = graphic.attributes.NAME;
                        myMap.infoWindow.closeButtonVisible = false;
                        myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
                        catch(error:Error) {
                            trace("Caught Error: "+error);
                    if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 0 && radioBtnGroup.selectedValue == 1)
                        fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
                        var graphic:Graphic = Graphic(event.currentTarget);
                        graphic.symbol = mouseOverSymbol;
                        var htmlText:String = graphic.attributes.htmlText;
                        var textArea:TextArea = new TextArea();
                        try{
                            textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForTotImpIndOut.toString()
                            myMap.infoWindow.content=textArea
                            myMap.infoWindow.label = graphic.attributes.NAME;
                            myMap.infoWindow.closeButtonVisible = false;
                            myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
                        catch(error:Error) {
                            trace("Caught Error: "+error);
                    if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 1 && radioBtnGroup.selectedValue == 0)
                        fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
                        var graphic:Graphic = Graphic(event.currentTarget);
                        graphic.symbol = mouseOverSymbol;
                        var htmlText:String = graphic.attributes.htmlText;
                        var textArea:TextArea = new TextArea();
                        try{
                            textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForDirEmp.toString()
                            myMap.infoWindow.content=textArea
                            myMap.infoWindow.label = graphic.attributes.NAME;
                            myMap.infoWindow.closeButtonVisible = false;
                            myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
                        catch(error:Error) {
                            trace("Caught Error: "+error);
                    if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 1 && radioBtnGroup.selectedValue == 1)
                        fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
                        var graphic:Graphic = Graphic(event.currentTarget);
                        graphic.symbol = mouseOverSymbol;
                        var htmlText:String = graphic.attributes.htmlText;
                        var textArea:TextArea = new TextArea();
                        try{
                            textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForTotImpEmp.toString()
                            myMap.infoWindow.content=textArea
                            myMap.infoWindow.label = graphic.attributes.NAME;
                            myMap.infoWindow.closeButtonVisible = false;
                            myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
                        catch(error:Error) {
                            trace("Caught Error: "+error);
                    if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 2 && radioBtnGroup.selectedValue == 0)
                        fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
                        var graphic:Graphic = Graphic(event.currentTarget);
                        graphic.symbol = mouseOverSymbol;
                        var htmlText:String = graphic.attributes.htmlText;
                        var textArea:TextArea = new TextArea();
                        try{
                            textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForDirLabInc.toString()
                            myMap.infoWindow.content=textArea
                            myMap.infoWindow.label = graphic.attributes.NAME;
                            myMap.infoWindow.closeButtonVisible = false;
                            myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
                        catch(error:Error) {
                            trace("Caught Error: "+error);
                    if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 2 && radioBtnGroup.selectedValue == 1)
                        fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
                        var graphic:Graphic = Graphic(event.currentTarget);
                        graphic.symbol = mouseOverSymbol;
                        var htmlText:String = graphic.attributes.htmlText;
                        var textArea:TextArea = new TextArea();
                        try{
                            textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForTotImpLabInc.toString()
                            myMap.infoWindow.content=textArea
                            myMap.infoWindow.label = graphic.attributes.NAME;
                            myMap.infoWindow.closeButtonVisible = false;
                            myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
                        catch(error:Error) {
                            trace("Caught Error: "+error);
                    if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 3 )
                        fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
                        var graphic:Graphic = Graphic(event.currentTarget);
                        graphic.symbol = mouseOverSymbol;
                        var htmlText:String = graphic.attributes.htmlText;
                        var textArea:TextArea = new TextArea();
                        try{
                            textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForIndirBusTax.toString()
                            myMap.infoWindow.content=textArea
                            myMap.infoWindow.label = graphic.attributes.NAME;
                            myMap.infoWindow.closeButtonVisible = false;
                            myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
                        catch(error:Error) {
                            trace("Caught Error: "+error);
                    if (yearcombo.selectedItem.year == "2009" && myURL.selectedIndex == 0 && radioBtnGroup.selectedValue == 0)
                        fLayer.definitionExpression = "DATA_YEAR_TXT like '2009'"
                        var graphic:Graphic = Graphic(event.currentTarget);
                        graphic.symbol = mouseOverSymbol;
                        var htmlText:String = graphic.attributes.htmlText;
                        var textArea:TextArea = new TextArea();
                        try{
                            textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForDirIndOut.toString()
                            myMap.infoWindow.content=textArea
                            myMap.infoWindow.label = graphic.attributes.NAME;
                            myMap.infoWindow.closeButtonVisible = false;
                            myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
                        catch(error:Error) {
                            trace("Caught Error: "+error);
                    if (yearcombo.selectedItem.year == "2009" && myURL.selectedIndex == 0 && radioBtnGroup.selectedValue == 1)
                        fLayer.definitionExpression = "DATA_YEAR_TXT like '2009'"
                        var graphic:Graphic = Graphic(event.currentTarget);
                        graphic.symbol = mouseOverSymbol;
                        var htmlText:String = graphic.attributes.htmlText;
                        var textArea:TextArea = new TextArea();
                        try{
                            textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForTotImpIndOut.toString()
                            myMap.infoWindow.content=textArea
                            myMap.infoWindow.label = graphic.attributes.NAME;
                            myMap.infoWindow.closeButtonVisible = false;
                            myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
                        catch(error:Error) {
                            trace("Caught Error: "+error);
                    if (yearcombo.selectedItem.year == "2009" && myURL.selectedIndex == 1 && radioBtnGroup.selectedValue == 0)
                        fLayer.definitionExpression = "DATA_YEAR_TXT like '2009'"
                        var graphic:Graphic = Graphic(event.currentTarget);
                        graphic.symbol = mouseOverSymbol;
                        var htmlText:String = graphic.attributes.htmlText;
                        var textArea:TextArea = new TextArea();
                        try{
                            textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForDirEmp.toString()
                            myMap.infoWindow.content=textArea
                            myMap.infoWindow.label = graphic.attributes.NAME;
                            myMap.infoWindow.closeButtonVisible = false;
                            myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
                        catch(error:Error) {
                            trace("Caught Error: "+error);
                    if (yearcombo.selectedItem.year == "2009" && myURL.selectedIndex == 1 && radioBtnGroup.selectedValue == 1)
                        fLayer.definitionExpression = "DATA_YEAR_TXT like '2009'"
                        var graphic:Graphic = Graphic(event.currentTarget);
                        graphic.symbol = mouseOverSymbol;
                        var htmlText:String = graphic.attributes.htmlText;
                        var textArea:TextArea = new TextArea();
                        try{
                            textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForTotImpEmp.toString()
                            myMap.infoWindow.content=textArea
                            myMap.infoWindow.label = graphic.attributes.NAME;
                            myMap.infoWindow.closeButtonVisible = false;
                            myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
                        catch(error:Error) {
                            trace("Caught Error: "+error);
                    if (yearcombo.selectedItem.year == "2009" && myURL.selectedIndex == 2 && radioBtnGroup.selectedValue == 0)
                        fLayer.definitionExpression = "DATA_YEAR_TXT like '2009'"
                        var graphic:Graphic = Graphic(event.currentTarget);
                        graphic.symbol = mouseOverSymbol;
                        var htmlText:String = graphic.attributes.htmlText;
                        var textArea:TextArea = new TextArea();
                        try{
                            textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForDirLabInc.toString()
                            myMap.infoWindow.content=textArea
                            myMap.infoWindow.label = graphic.attributes.NAME;
                            myMap.infoWindow.closeButtonVisible = false;
                            myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
                        catch(error:Error) {
                            trace("Caught Error: "+error);
                    if (yearcombo.selectedItem.year == "2009" && myURL.selectedIndex == 2 && radioBtnGroup.selectedValue == 1)
                        fLayer.definitionExpression = "DATA_YEAR_TXT like '2009'"
                        var graphic:Graphic = Graphic(event.currentTarget);
                        graphic.symbol = mouseOverSymbol;
                        var htmlText:String = graphic.attributes.htmlText;
                        var textArea:TextArea = new TextArea();
                        try{
                            textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForTotImpLabInc.toString()
                            myMap.infoWindow.content=textArea
                            myMap.infoWindow.label = graphic.attributes.NAME;
                            myMap.infoWindow.closeButtonVisible = false;
                            myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
                        catch(error:Error) {
                            trace("Caught Error: "+error);
                    if (yearcombo.selectedItem.year == "2009" && myURL.selectedIndex == 3 )
                        fLayer.definitionExpression = "DATA_YEAR_TXT like '2009'"
                        var graphic:Graphic = Graphic(event.currentTarget);
                        graphic.symbol = mouseOverSymbol;
                        var htmlText:String = graphic.attributes.htmlText;
                        var textArea:TextArea = new TextArea();
                        try{
                            textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForIndirBusTax.toString()
                            myMap.infoWindow.content=textArea
                            myMap.infoWindow.label = graphic.attributes.NAME;
                            myMap.infoWindow.closeButtonVisible = false;
                            myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
                        catch(error:Error) {
                            trace("Caught Error: "+error);
                public function onMouseOutHandler(event:MouseEvent):void
                    var gr:Graphic = Graphic(event.target);
                    gr.symbol = defaultsym;
                    myMap.infoWindow.hide();
            ]]>
        </fx:Script>
        <fx:Style>
            @namespace esri "http://www.esri.com/2008/ags";
            @namespace s "library://ns.adobe.com/flex/spark";
            @namespace mx "library://ns.adobe.com/flex/mx";
            @namespace esri "http://www.esri.com/2008/ags";
            @namespace components "com.esri.ags.components.*";
            components|InfoWindow
                content-background-alpha : 0.4;
                background-color : #4A7138;
                background-alpha : 0.7;
                border-style : solid;
        </fx:Style>
        <mx:HBox   width="930" height="800"  id="mapHbox"  horizontalAlign="center" >   
        <mx:HBox width="80">
        </mx:HBox>
        <mx:HBox id="myHBox" width="800" height="600" backgroundColor="0xffffff"  >
            <mx:VBox  height="590" width="358"  >
            <!--    <mx:Panel
                    width="356" height="100%"
                    color="0x000000"
                    borderAlpha="0.15"
                    >
                    -->
                    <mx:Canvas height="100%" width="100%" backgroundColor="0xffffff" >
                        <esri:Map id="myMap" openHandCursorVisible="false"
                                  height="100%" 
                                  logoVisible="false"
                                  doubleClickZoomEnabled="false"
                                  scrollWheelZoomEnabled="false"
                                  zoomSliderVisible="false"
                                  scaleBarVisible="false" scale="4000000" >
                            <esri:extent>
                                <esri:Extent xmin="-10736651.061900" ymin="4024099.909700" xmax="-10409195.669800" ymax="3440153.831100"      >
                                    <esri:SpatialReference wkid="102100"/>
                                </esri:Extent>
                            </esri:extent>
                            <esri:ArcGISDynamicMapServiceLayer id="dynamicLayer2"
                                                               url="http://tfs-24279/ArcGIS/rest/services/RADIO_BUTTONS/counties_layer/MapServer" />
                            <esri:ArcGISDynamicMapServiceLayer id="dynamicLayer" name=" "
                                                               alpha="1"
                                                               load="loadLayerName()"
                                                       url="http://tfs-24279/ArcGIS/rest/services/{myURL.selectedItem.value}/MapServer"   />
                            <esri:FeatureLayer id="fLayer"
                                               graphicAdd="fLayer_graphicAddHandler(event)"
                                               mode="snapshot"
                                               outFields="*"
                                               symbol="{defaultsym}"
                                               url= "http://tfs-24279/ArcGIS/rest/services/RADIO_BUTTONS/feature_layer_0709_five/FeatureServer/ 0" />
                        </esri:Map>
                    </mx:Canvas>
            <!--    </mx:Panel>-->
            </mx:VBox>       
            <mx:VBox  height="590" width="20"  >
            </mx:VBox>       
            <mx:Canvas height="500" width="400" backgroundColor="0xffffff"
                       horizontalScrollPolicy="off"
                       verticalScrollPolicy="off" >
                <mx:VBox  width="420" height="50%" paddingLeft="5" paddingTop="10" paddingRight="10" paddingBottom="10"
                         verticalGap="8">
                    <mx:Form  >
                        <mx:FormItem label="Year        :"  >
                            <mx:ComboBox   id="yearcombo" selectedIndex="0" labelField="label" width="100%" change="changeEvt(event)"  >
                                <mx:ArrayCollection id="year"  >
                                    <fx:Object label="2007"  year="2007" />
                                    <fx:Object label="2009"  year="2009" />
                                </mx:ArrayCollection>
                            </mx:ComboBox>
                        </mx:FormItem>
                        <mx:FormItem label="Measure:">
                            <mx:ComboBox   id="myURL" selectedIndex="8" width="80%" mouseOver="clickEv2(event)" close="closeHandler(event)">
                            <mx:ArrayCollection id="measures"   >
                                <fx:Object id="forindout07" labeltext="Forestry Industry Output" label="Forestry Industry Output " value="RADIO_BUTTONS/TFEI_07_forest_industry_output" year="2007"  />
                                <fx:Object id="foremp07" label="Forestry Employment " value="RADIO_BUTTONS/TFEI_07_forest_employment" year="2007" />
                                <fx:Object id="forlabinc07" label="Forestry Labor Income " value="RADIO_BUTTONS/TFEI_07_forest_labincome" year="2007" />
                                <fx:Object id="forindbustax07" label="Forestry Indirect Business Tax" value="RADIO_BUTTONS/TFEI_07_forest_business_tax" year="2007" />
                                <fx:Object id="forindout09" label="Forestry Industry Output " value="RADIO_BUTTONS/TFEI_09_forest_industry_output" year="2009"  />
                                <fx:Object id="foremp09" label="Forestry Employment " value="RADIO_BUTTONS/TFEI_09_forest_employment" year="2009" />
                                <fx:Object id="forlabinc09" label="Forestry Labor Income " value="RADIO_BUTTONS/TFEI_09_forest_labincome" year="2009" />
                                <fx:Object id="forindbustax09" label="Forestry Indirect Business Tax" value="RADIO_BUTTONS/TFEI_09_forest_business_tax" year="2009" />
                                <fx:Object id="blank" label=" "  />
                            </mx:ArrayCollection>
                        </mx:ComboBox>
                        </mx:FormItem>
                    </mx:Form>
                    <mx:VBox  id="layerPanel" width="50%" height="8%" verticalGap="3" paddingLeft="17">
                        <mx:RadioButtonGroup id="radioBtnGroup" itemClick="radioClickHandler(event)"  />
                    </mx:VBox>
                    <mx:VBox paddingLeft="17" height="50%" >
                    <mx:Canvas  id="legendPanel" width="100%"  >
                        <mx:Label id="myLabel" text=" " fontWeight="bold" />
                        <esri:Legend id="myLegend"
                                     layers="{[dynamicLayer]}"
                                     map="{myMap}" visible="false"
                                     respectCurrentMapScale="false"/>
                    </mx:Canvas>
                    <mx:TextArea width="275"  borderAlpha="0" height="200"  >
                        <mx:htmlText   >
                            <![CDATA[<font size='11'><b>Note:</b> Counties in white indicate either no data is available for that measure or the data has been supressed due to confidentiality.</font>
                            ]]>
                        </mx:htmlText>
                    </mx:TextArea>
                    </mx:VBox>   
                </mx:VBox>
            </mx:Canvas>
        </mx:HBox>
        </mx:HBox>   
    </mx:Application>

  • Add a for each script to loop through HTTPService?

    I'm using Flash Builder 4 with the Flex 4.1 SDK.  I want to add a "for each" script to loop through my HTTPService XML file so only each nepName displays only once in my dropdown list.  In my XML file I have multiple records associated with nepName.  I would like ALL the records associated with each nepName to populate in my datagrid when it is selected from the dropdown.  Currently in my dropdown there is a nepName entry for each XML tag.  I hope I was able to explain that well enough. I'll try to put my code below so you can see everything I'm working with.
    MXML:
    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                   xmlns:s="library://ns.adobe.com/flex/spark"
                   xmlns:esri="http://www.esri.com/2008/ags"
                   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
                   creationComplete="nepInfo.send()">
        <s:layout>
            <s:VerticalLayout horizontalAlign="center" paddingTop="25"/>
        </s:layout>
        <fx:Declarations>
            <s:HTTPService id="nepInfo" url="http://www.epa.gov/owow/estuaries/nep_info.xml"/>
            <!--s:RadioButtonGroup id="optiongroup"/-->
        </fx:Declarations>
        <s:Panel title="NEP Project Information">
            <s:layout>
                <s:VerticalLayout/>
            </s:layout>
            <s:HGroup verticalAlign="middle">
        <mx:Form x="188" y="34" width="338">
        <mx:FormItem label="Search for NEP Information:">
        <s:DropDownList enabled="true" id="dropDownList" prompt="Select NEP" dataProvider="{nepInfo.lastResult.records.record}" labelField="nepName">
        </s:DropDownList>
        </mx:FormItem>
        </mx:Form>       
            </s:HGroup>   
            <mx:DataGrid id="resultsGrid"
                         dataProvider="{dropDownList.selectedItem}"
                         visible="{dropDownList.selectedItem != null}" x="20" y="62" width="1166" height="620">
                <mx:columns>
                    <mx:DataGridColumn dataField="projectName" headerText="Project Name" wordWrap="true"/>
                    <mx:DataGridColumn dataField="projectDescription" headerText="Project Description" wordWrap="true"/>
                    <mx:DataGridColumn dataField="acres" headerText="Acres" wordWrap="true"/>
                    <mx:DataGridColumn dataField="habitatDescription" headerText="Habitat Description" wordWrap="true"/>
                    <mx:DataGridColumn dataField="neportCategory" headerText="Habitat Category" wordWrap="true"/>
                    <mx:DataGridColumn dataField="restorationType" headerText="Restoration Type" wordWrap="true"/>
                    <mx:DataGridColumn dataField="leadPartner" headerText="Lead Partner" wordWrap="true"/>
                </mx:columns>
            </mx:DataGrid>
        </s:Panel>
    </s:Application>
    XML: http://www.epa.gov/owow/estuaries/nep_info.xml
    Thank you in advance for your help!
    -Alison

    ($file, pwd);Assuming "pwd" is meant as the current directory, here a small example :
    TEST@db102 SQL> create or replace procedure test_proc (p1 varchar2, p2 varchar2)
      2  is
      3  begin
      4     dbms_output.put_line (p1||' '||p2);
      5  end;
    TEST@db102 SQL> /
    Procedure created.
    TEST@db102 SQL> exit
    Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options
    $ ls -l /tmp/test/*.sql
    -rw-r--r--  1 ora102 dba  69 Apr 18 23:23 /tmp/test/file1.sql
    -rw-r--r--  1 ora102 dba 112 Apr 18 23:23 /tmp/test/file2.sql
    -rw-r--r--  1 ora102 dba 120 Apr 18 23:23 /tmp/test/file3.sql
    $ cat test_proc.sh
    DIR=/tmp/test
    cd $DIR
    ls *.sql | while read file
    do
            echo "Processing file $file"
            sqlplus -s test/test << EOF
    set feed off
    set pages 0
    set serveroutput on
    exec test_proc('$file', '`pwd`');
    exit
    EOF
    done
    $ ./test_proc.sh
    Processing file file1.sql
    file1.sql /tmp/test
    Processing file file2.sql
    file2.sql /tmp/test
    Processing file file3.sql
    file3.sql /tmp/test
    $

  • Change field value in a table, based on another field value in the same row (for each added row)

    Please Help, I want to change field value in a table, based on another field value in the same row (for each added row)
    I am using this code :
    <HTML>
    <HEAD>
    <SCRIPT>
    function addRow(tableID) {
    var table = document.getElementById(tableID);
    var rowCount = table.rows.length;
    var row = table.insertRow(rowCount);
    var colCount = table.rows[0].cells.length;
    for(var i=0; i<colCount; i++ ) {
    var newcell = row.insertCell(i);
    newcell.innerHTML = table.rows[1].cells[i].innerHTML;
    switch(newcell.childNodes[0].type) {
    case "text":
    newcell.childNodes[0].value = "";
    break;
    case "checkbox":
    newcell.childNodes[0].checked = false;
    break;
    case "select-one":
    newcell.childNodes[0].selectedIndex = 0;
    break;}}}
    function deleteRow(tableID) {
    try {var table = document.getElementById(tableID);
    var rowCount = table.rows.length;
    for(var i=0; i<rowCount; i++) {
    var row = table.rows[i];
    var chkbox = row.cells[0].childNodes[0];
    if(null != chkbox && true == chkbox.checked) {
    if(rowCount <= 2) {
    alert("Cannot delete all the rows.");
    break;}
    table.deleteRow(i);
    rowCount--;
    i--;}}}catch(e) {alert(e);}}
    </SCRIPT>
    </HEAD>
    <BODY>
    <INPUT type="button" value="Add Row" onClick="addRow('dataTable')" />
    <INPUT type="button" value="Delete Row" onClick="deleteRow('dataTable')" />
    <TABLE id="dataTable" width="350px" border="1">
    <TR>
    <TD width="32"></TD>
    <TD width="119" align="center"><strong>Activity</strong></TD>
    <TD width="177" align="center"><strong>Cost</strong></TD>
    </TR>
    <TR>
    <TD><INPUT type="checkbox" name="chk"/></TD>
    <TD>
    <select name="s1" id="s1">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>
    </TD>
    <TD><input type="text" name="txt1" id="txt1"></TD>
    </TR>
    </TABLE>
    </BODY>
    </HTML>

    Hi,
    Let me make sure u r working with table control.
    First u have to create a event(VALIDATE) to do the validation.
    Inside the event,
    1. First get the current index where user has pointed the curson
    2. Once u get the index read the internal table with index value.
    3. Now u can compare the col1 and col2 values and populate the error message.
    1. DATA : lo_elt TYPE REF TO if_wd_context_element,
                   l_index type i.
    lo_elt = wdevent->get_context_element( name = 'CONTEXT_ELEMENT' ).
         CALL METHOD LO_ELT->GET_INDEX( RECEIVING  MY_INDEX = l_index.
    above code should be written inside the event.
    Thanks,

  • How do I program a NI 6602 card to send trigger pulses, one at each output port, triggered by an input trigger signal, using only one counter for each output port?

    Hello,
    I have managed to program a NI 6602 card in LabView to send pulses on three different output ports, one pulse on each output port (with individually chosen delays) for each input trigger pulse coming on a separate input port. It is the DAQmx Create Channel (CO-Pulse Generation-Time)-VI that I have used for this, see attached code. However, this VI controls both pulse delay and pulse width, and therefore uses two counters for each output port (although you only specify one counter in the VI input signals), as I understand.
    In my application though, I only need to have the delay chosen, the pulse width can be arbitrarily short, and thus I should only need one counter for each output port. How do I accomplish to program this in LabView?
    Best regards,
    Claes
    Attachments:
    Configure Side Camera Flash 1 Triggering.vi ‏47 KB

    Well you're welcome to do that--it will work just fine as long as you are configuring a start trigger.
    <rant>
    However, personally I really don't like putting multiple counter outputs in the same task.  I have seen so many people assume that the counter outputs would be synchronized due to having them in the same task when this is not the case (you need to configure a start trigger in order to synchronize the counter outputs even if they are in the same task).  This is the only case I can think of where multiple channels in a DAQmx task are not automatically synchronized.
    As an example:
    Running this on my PCIe X Series gives a measured 2 edge separation of 1 ms + {7.78 us - 10.11 us}.  This would likely be much worse on a bus with more latency (e.g. USB).
    The resulting output is close enough to what you might expect that it might go unnoticed, but really these counter outputs are not synchronized and it would be easy to glance at the code and not even think twice about it.  For the small amount of extra work on my end to create a separate task for each counter, it really clears up some ambiguity about what the counters are actually doing.  For me it's worth it.
    So again, for your case there really isn't a problem with having the counters in the same task since you are using an external start trigger anyway.  I have just gotten in the habit of avoiding doing this.
    </rant>
    Best Regards,
    John Passiak

  • Background image instead of color for each sliding panel

    I'm working with sliding panels and trying to add some style to the page.  I have figured out how to put a different background color on each slide and even how to put a background image on the whole thing, but  I cannot figure out how to use multiple images (one for each pannel). When I put the images in place of the colors it works fine in the Dreamweaver screen but totally disapears in a web browser.  Here is the url:    http://www.centerofdiscovery.com/the_center_of_discovery_home_page.html
    any help would be great!

    Regarding getting the tabs to sit on top of the content panel, speaking generally here, make the containing div for both the tabs and the content panel to have a margin: 0 auto; setting.This is for horizontal alignment.
    The blue rectangle can be belayed by setting border: none; on the specific rule that applies to the "a" links within that container. It is an indication that there is a link there.
    Please rename the images that have word-spaces in their file names. Some browsers react badly to word-spaces.
    I see that you have
    <p>
      </p><div class="slidingpanelandtab">
        <blockquote>
          <p><a onclick="sp1.showPanel(0); return false;" href="#"><img width="144" height="70" class="oneColFixCtrHdr" src="Images/panneltab.jpg"/></a><a onclick="sp1.showPanel(1); return false;" href="#"><img width="144" height="70" src="Images/panneltabb.jpg"/></a><a onclick="sp1.showPanel(2); return false;" href="#"><img width="144" height="70" src="Images/panneltaba.jpg"/></a><a onclick="sp1.showPanel(3); return false;" href="#"><img width="144" height="70" src="Images/panneltabc.jpg"/></a></p>
        </blockquote>
    Which sets off your "slidingpanelandtab" class div with an empty paragraph space <p></p> and then sets off the next section not only with <p></p> paragraph spacing but also with a <blockquote></blockquote>, which will by all rights indent that element.
    I suggest that you get rid of the spurious paragraph tags and the blockquote; that should tighten up your spacing.
    Beth

  • How to add a vertical resize bar for each TableRow in a TableView?

    I am looking for a best approach / best practice to accomplish this task. I need to be able to implement, in the least, re-sizable (by dragging on a divider line) TableRows. I understand this to be a bit more difficult to retain the height of each individual TableRow because they are virtual and reused. My first goal is only to have all TableRows re-sized (eliminating the need to carry individual row sizes ).
    I am able to implement my own TableRow by extending TableRow - and I was able to retrieve a reference to the TableRow's Skin and adding a divider line (Rectangle) and capturing the Mouse events to effectively re-size the height of the Row by dragging.
    My Question is this: Without implementing a new TableRowSkin - how can I force the divider line to be at the bottom of the TableRow? Currently - I am just adding the Rectangle Node (Divider) to the TableRowSkin's children list - causing the divider line to be positioned at the top of the TableRow (This gives an odd feeling when resizing - the line should be on the bottom).
    I feel like I am hacking at the issue without realizing the intent of the JavaFX developers. Is the intent for Row Height resizing to be implemented by providing a new Skin? There doesn't seem to be an easy way to accomplish this task using the existing TableRow or TableRowSkin.
    I can post example code if requested - but I will need to condense the example to a small enough self-contained file.
    If the answer is "Yes - implement a new skin" that is fine, but this task might be difficult without the source code for guidance :) [hint..hint..]

    After attempting to override the TableRow itself - I ran into a bug in the underlying skin causing a ClassCastException when sorting on the headers - apparently the underlying TableRowSkin doesn't like it when you add anything other then a TableCell (I added a Rectangle in this case, could not be cast to a TableCell). The bug was filed in Jira and fixed for 2.1 - so in the mean time I took the individual TableCell approach - add a divider to the bottom of each tableCell.
    The trick is not the the divider - but it is the other Control you have above the divider. I am using a TextArea, and you may generally want to override the PreferredHeight otherwise the height of the Control continues to extend. This behavior may be a result of using VBox to house the TextArea and the Rectangle vs your suggestion of a BorderPane.
    I was able to get the aesthetic functionality working to my desire. NOTE: functionality needs to be added for the table to "remember" any change of tablerowheight for each associated data item - otherwise the TableRow with the differeing height will get recycled and used for a different data item later. This shouldn't be too hard to implement with a Map for every non-default tableRowHeight change with a key of the TableRow Data Item. (Perhaps a max memory of associations as to not use up all available memory if someone wanted to resize all rows, for instance. Or we could also apply a new default Row size as well. I'm thinking this functionality should be applied to a sub-classed TableView).
    editThe posted code does not have a bug - it is placing the vertical resize divider in each cell, not each tablerow. Aesthiticaly - it will take some additional tweaking. You will notice the Textarea scroll bar "bleeds" into the other Transparent cells.. Not a critical bug, but an issue to deal with I will have to tackle later. If I can hack into the TableColumn resizing behavior - or set a minWidth on each Tablecolumn - that will be my approach to deal with it for now.--edit--
    public class TextAreaCell<S> extends TableCell<S,String> {
            private TextArea textArea;
            private StringProperty boundToCurrently = null;
            private Rectangle r = new Rectangle(1,3,Color.TRANSPARENT);
            private VBox vbox = new VBox();
            public TextAreaCell() {
                this.getStyleClass().add("table-cell-for-controls");
                textArea = new TextArea();
                textArea.getStyleClass().add("table-cell-text-field");
                textArea.setWrapText(true);
                textArea.prefHeightProperty().set(5);
                textArea.minHeightProperty().set(0);
                vbox.getChildren().add(textArea);
                vbox.getChildren().add(r);
                vbox.setFillWidth(true);
                r.widthProperty().bind(vbox.widthProperty());
                r.setCursor(Cursor.V_RESIZE);
                r.setOnMouseDragged(new EventHandler<MouseEvent>() {
                    @Override
                    public void handle(MouseEvent event) {
                        TextArea y = TextAreaCell.this.textArea;
                        TextAreaCell.this.printTextAreaInfo(y, event);
                        TableRow tr = TextAreaCell.this.getTableRow();
                        double newHeight = tr.getHeight() + event.getY();
                        if (newHeight <= 24) {
                            newHeight = 24;
                        tr.setPrefHeight(newHeight);
                        tr.requestLayout();
                VBox.setVgrow(textArea, Priority.SOMETIMES);
                vbox.setMinWidth(1);
                this.setGraphic(vbox);
            @Override
            protected void updateItem(String item, boolean empty) {
                super.updateItem(item, empty);           
                if(!empty) {
                    // Show the Text Area
                    this.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
                    // Retrieve the actual String Property that should be bound to the TextField
                    // If the TextField is currently bound to a different StringProperty
                    // Unbind the old property and rebind to the new one
                    ObservableValue<String> ov = getTableColumn().getCellObservableValue(getIndex());
                    SimpleStringProperty sp = (SimpleStringProperty)ov;
                    if(this.boundToCurrently==null) {
                        this.boundToCurrently = sp;
                        this.textArea.textProperty().bindBidirectional(sp);
                    else {
                        if(this.boundToCurrently != sp) {
                            this.textArea.textProperty().unbindBidirectional(this.boundToCurrently);
                            this.boundToCurrently = sp;
                            this.textArea.textProperty().bindBidirectional(this.boundToCurrently);
                else {
                    this.setContentDisplay(ContentDisplay.TEXT_ONLY);
            private void printTextAreaInfo(TextArea t, MouseEvent e) {
                StringBuilder s = new StringBuilder();
                s.append(e.toString()).append("\n");
                s.append("\tTextArea.prefHeight:").append(t.getPrefHeight()).append("\n");
                s.append("\tTextArea.MinHeight:").append(t.getMinHeight()).append("\n");
                s.append("\tTextArea.MaxHeight:").append(t.getMaxHeight()).append("\n");
                s.append("\tTextArea.Height:").append(t.getHeight()).append("\n");
                s.append("------------------------------------------------------------------------------------------------------------------------");
                System.out.println(s.toString());
    }And the Css
    .table-cell-for-controls {
        -fx-skin: "com.sun.javafx.scene.control.skin.TableCellSkin";
        -fx-padding: 0; /* 2px, plus border adds 1px */
        -fx-background-color: transparent;
        -fx-border-color: -fx-table-cell-border-color -fx-table-cell-border-color -fx-table-cell-border-color -fx-table-cell-border-color;
        -fx-border-width: 0.083333em; /* 1 */
        -fx-cell-size: 2.0em; /* 24 */
    .table-cell-text-field {
        -fx-background-color: transparent;/*-fx-control-inner-background;*/
        -fx-background-insets: 0;
        -fx-background-radius: 0;
        -fx-padding: 3 5 3 5;
        -fx-prompt-text-fill: derive(-fx-control-inner-background,-30%);
        -fx-cursor: text;
    }Edited by: jkaufmann on Nov 7, 2011 4:33 AM

  • How do I get a timestamp for each daq counter measuremen​t?

    Hello, I am currently using DAQmx to read a PWM signal and calculate the pulse width using the implicit timer. Is it possible to also get the timestamp of each pulse width measurement? I have been able to do this with an analog signal by using a waveform output, but I can't figure out how to do this with a counter measurement. Thanks in advance for the help!

    I think that you have asked a great question. Something that many engineers may not be aware of is that the DAQ device itself does not actually create the time stamp. It is created by the comptuer system when the data is retreived from the DAQ card. Because of this, the time stamp is actually delayed by a significant amount. This delay may be less than the resolution for time stamps (one millisecond) but it can sometimes be greater than that. This Knowledge Base article discusses it this in more detail: http://ae.natinst.com/public.nsf/web/searchinterna​l/5d42ccb17a70a06686256dba007c5eea?OpenDocument
    If your pulses are closely spaced, the generating a timestamp for each aquisition is not practical. But, if your pulses are spread apart by a significant amount (more than 0.1 seconds or so depending on the specifics) then the timestamp might be accurate enough to be practical. One way to do that with counters would be to use the Get Date/Time in Seconds VI in LabVIEW just after the DAQmx Read VI. Then, once the Counter Input measurement is complete, LabVIEW will create that timestamp very quickly afterward. Please notice that there will be some time delay between the completion of the read and the creation of the time stamp.
    Jeremy P. 
    Applications Engineer
    National Instruments

  •      How to remember checkbox values for each image

    The situation is this: i have a horizontal list which i
    populate with images loaded from xml. After i click on any of the
    images, popup windows is displayed with checkbox. The same popup is
    displayed for all of the images after i click on them. I need to
    remember checkbox values (on/off) for each one of the images in
    horizontal list but i don't know how to do that? How can i know
    which one of the images (they are different) inside horizontal list
    i clicked on in the first place?
    thank you

    I am sorry but i don't quite follow you, i am not sure what
    you are saying so i would really appreciate it if you could explain
    it to me a little bit further. I have the following mxml code where
    i define my HorizontalList:
    <mx:HorizontalList height="326" width="935" id="imageList"
    itemRenderer="mx.controls.Image" columnWidth="427" rowHeight="320"
    itemClick="popUpWindow()" backgroundColor="#4A4A4A"
    borderColor="#444242" themeColor="#000000" verticalCenter="166"
    horizontalCenter="0">
    </mx:HorizontalList>
    and following "popUpWindow()" function which i call when
    image in HorizontalList is clicked:
    //previously i populate horizontal list with images from an
    array "slidePathAC"
    imageList.dataProvider = slidePathAC;
    public function popUpWindow():void{
    trace ("\npopUpWindow function")
    var tw:TitleWindow = new TitleWindow();
    tw.showCloseButton = true;
    tw.setStyle("borderAlpha",0.9);
    mx.managers.PopUpManager.addPopUp(tw, MainPanel, true);
    tw.width = 500;
    tw.height = 500;
    mx.managers.PopUpManager.centerPopUp(tw);
    tw.addEventListener("close",removePopUp);
    Thank you very much for your help

  • How to set the BARCODE width and length for label printing..

    Hi All,
    How to set the Code 39 barcode label format in the sizxe of 0.20" * 1.4". By default while printing barcode size exceeds my current requirement. Please let me know to customize the size of barcode labels.
    Thanks.

    I don't know what you mean by "Code 39" because my Output Designer software doesn't offer that barcode (or do you mean "code 3 of 9?). In any case, are you trying to control the size of the text (which is what I think of when you refer to "label")? If you are, then just change the font & size. If you are wanting to modify the physical characteristics of the barcode itself (height & length for a certain number of characters) then you are probably out of luck. Or at least in for some trial & error.
    There are a series of "barcode.xxx" files in the 'config' folder where Output Designer was installed to. These are text files that contain the physical characteristics of the various barcodes for various printers. The parameters that you would be interested in is the height and width of the bars (black & white). For example, a barcode might be defined as .400 high with narrow bars 3 "dots" wide, wide bars 9 "dots" wide and white space the same or different. Presumably changing these values would affect the generated barcode. For example, in this example the wide bars are 3 times the width of the narrow bars so I would assume that relationship would have to remain. To make the resulting barcode shorter you would then use 2 for the narrow and 6 for the wide.
    You would have to make the change in the file(s) that would be used for your printer(s).
    There are four width values for each of the parameters. Most of the barcodes only use 2 but some have 4. I'm assuming that when there are 4, like in "4 8 12 16", that the barcode definition has 4 different widths of bars and/or spaces.
    There is no guarantee that the scanning hardware & software will "see" and interpret the resulting barcode correctly.

  • Select different style for each border of a rectangle

    Hi,
    I just wanted to have a Rectangle (or some other component) which one must have different style for each of its borders.
    For example I want the top and the right border with a thickness of 2 and others with a thickness of 0 (so we can only see those two borders).
    How can I do it ?
    I tried with stroke (but stroke is for all borders, we can't specify which style for which border).
    Thanks,
    Jeff

    Well it is not clear what he is looking for just rect or a component with specific border. I havnt used flex 4 so i am not sure how to get it working for that
    , but i am sure it will work on the same lines.
    I have also given another option to create a it using lineTo() and moveTo().But this should only be used if this rect is not going to be used as a container.
    I think i should elaborate...
    Create a custom component using UIComponent. In updateDisplayList() after super.updateDisplayList() call a method say drawRect(). In this drawRect() use lineTo() and moveTo() to draw the rectangle. you would have to use the component's height and width to draw the rect.
    Let me know if you need more clearification...

  • Adding A Separate Background Image For Each Menu Item

    I asked this in the Spry forum, and not sure I understand the answer. Plus, I should have been more specific in asking how to do it, as I'm still pretty new to this stuff. Nothing I'd found indicated it could be done, or how.
    Org question -
    I know you can apply a background image to the menu bar items, but is it possible to add a background image for each individual item? What I'm basically trying to keep are the effects (bevel/emboss, etc.,) that I attached to the text, when I created it in PS CS4.
    Answer -
    Yes you can. The widget is just normal plain html markup so you can just add other classNames or id attributes to the elements. And style the elements through those classes/ids.
    Does this mean I'd have to write a new rule for each menu item? What?
    Thank you.

    Did an Adobe Tutorial for creating/entering a Spry Menu Bar. This is the HTML, after I took out the submenus.
    <ul id="MenuBar1" class="MenuBarHorizontal">
          <li><a href="news.html">Features</a></li>
          <li><a href="news.html">News</a></li>
          <li><a href="news.html">Fashion</a></li>
          <li><a href="news.html">Lifestyle</a></li>
          <li><a href="news.html">Calendar</a></li>
        </ul>
    This is from the SpryMenuBarHorizontal.css (It seems like I need to make changes in the Design Info section of this code. But nothing I've tried has worked):
    /* The outermost container of the Menu Bar, an auto width box with no margin or padding */
    ul.MenuBarHorizontal
    margin: 0;
    padding: 0;
    list-style-type: none;
    font-size: 100%;
    cursor: default;
    width: auto;
    text-transform: uppercase;
    /* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
    ul.MenuBarActive
    z-index: 1000;
    /* Menu item containers, position children relative to this container and are a fixed width */
    ul.MenuBarHorizontal li
    margin: 0;
    padding: 0;
    list-style-type: none;
    font-size: 100%;
    position: relative;
    text-align: left;
    cursor: pointer;
    width: 7em;
    float: left;
    /* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
    ul.MenuBarHorizontal ul
    margin: 0;
    padding: 0;
    list-style-type: none;
    font-size: 100%;
    z-index: 1020;
    cursor: default;
    width: 8.2em;
    position: absolute;
    left: -1000em;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
    left: auto;
    /* Menu item containers are same fixed width as parent */
    ul.MenuBarHorizontal ul li
    width: 8.2em;
    /* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
    ul.MenuBarHorizontal ul ul
    position: absolute;
    margin: -5% 0 0 95%;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
    left: auto;
    top: 0;
    DESIGN INFORMATION: describes color scheme, borders, fonts
    /* Submenu containers have borders on all sides */
    ul.MenuBarHorizontal ul
    border: 1px solid #CCC;
    /* Menu items are a light gray block with padding and no text decoration */
    ul.MenuBarHorizontal a
    display: block;
    cursor: pointer;
    background-color: #EEE;
    color: #333;
    text-decoration: none;
    /* Menu items that have mouse over or focus have a blue background and white text */
    ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
    background-color: #33C;
    color: #FFF;
    /* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
    ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
    background-color: #33C;
    color: #FFF;
    SUBMENU INDICATION: styles if there is a submenu under a given menu item
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenu
    background-image: url(SpryMenuBarDown.gif);
    background-repeat: no-repeat;
    background-position: 95% 50%;
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
    background-image: url(SpryMenuBarRight.gif);
    background-repeat: no-repeat;
    background-position: 95% 50%;
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
    background-image: url(SpryMenuBarDownHover.gif);
    background-repeat: no-repeat;
    background-position: 95% 50%;
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
    background-image: url(SpryMenuBarRightHover.gif);
    background-repeat: no-repeat;
    background-position: 95% 50%;
    BROWSER HACKS: the hacks below should not be changed unless you are an expert
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarHorizontal iframe
    position: absolute;
    z-index: 1010;
    filter:alpha(opacity:0.1);
    /* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
    @media screen, projection
    ul.MenuBarHorizontal li.MenuBarItemIE
    display: inline;
    f\loat: left;
    background: #FFF;

  • For Each Child in Controls

    To clear all the checkboxes on a form, I can do either this:
            Dim chk As CheckBox
            For Each ctl As Control In Controls
                If TypeOf ctl Is CheckBox Then
                    chk = CType(ctl, CheckBox)
                    chk.Checked = False
                End If
            Next ctl
    Or this:
            For Each chk As CheckBox In Controls.OfType(Of CheckBox)()
                chk.Checked = False
            Next chk
    However, this will not clear checkboxes inside a container such as a groupbox.
    How can I clear the checkboxes in all the containers at once?
    Solitaire

    Excess code in examples which use recursive control searches.
    Top and bottom examples may be best. 2nd and 3rd examples have code but I don't understand the ienumerable functions used really. They're over my head.
    If all controls were added to a List(Of Control) in form load using a recursive search then just the list could be used to set controls of certain types I would guess. Which would keep from requiring a recursive search of controls each time. Unless
    controls are dynamically added and removed while the app is running I suppose.
    Option Strict On
    Public Class Form1
    Dim ObjColorDict As New Dictionary(Of String, Color)
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.CenterToScreen()
    ObjColorDict.Add("Me", Me.BackColor)
    Me.BackColor = Color.White
    For Each Item As Control In Me.Controls
    If Item.BackColor <> Nothing Then
    ObjColorDict.Add(Item.Name, Item.BackColor)
    Item.BackColor = Color.White
    GetAllChildControls(Item)
    End If
    Next
    For i = 0 To ObjColorDict.Count - 1
    RichTextBox1.AppendText(ObjColorDict.Keys(i).ToString & " Color = .. " & ObjColorDict.Values(i).Name.ToString & vbCrLf)
    Next
    End Sub
    Private Sub GetAllChildControls(ByVal ctrlParent As Control)
    For Each Item As Control In ctrlParent.Controls
    If Item.BackColor <> Nothing Then
    ObjColorDict.Add(Item.Name, Item.BackColor)
    Item.BackColor = Color.White
    End If
    ' If the control has children,
    ' recursively call this sub
    If Item.HasChildren Then
    GetAllChildControls(Item)
    End If
    Next
    End Sub
    End Class
    Option Strict On
    Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.CenterToScreen()
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    For Each RdoButton As RadioButton In Me.Controls.Cast(Of Control).SelectMany(Function(ctrl) GetAll(ctrl, GetType(RadioButton)).Concat(Me.Controls.Cast(Of Control)).Where(Function(c) c.[GetType]() = GetType(RadioButton)))
    RdoButton.Checked = False
    Next
    End Sub
    Public Function GetAll(control As Control, type As Type) As IEnumerable(Of Control)
    Dim controls = control.Controls.Cast(Of Control)()
    Return controls.SelectMany(Function(ctrl) GetAll(ctrl, type)).Concat(controls).Where(Function(c) c.[GetType]() = type)
    End Function
    Private Sub UncheckAllRadios(ContainerControl As Control)
    For Each C As Control In ContainerControl.Controls
    If C.Controls.Count > 0 Then
    UncheckAllRadios(C)
    End If
    If TypeOf C Is RadioButton Then
    DirectCast(C, RadioButton).Checked = False
    End If
    Next
    End Sub
    Private Sub ClearForm(ByVal ctrlParent As Control)
    Dim ctrl As Control
    For Each ctrl In ctrlParent.Controls
    If TypeOf ctrl Is TextBox Then
    ctrl.Text = ""
    End If
    ' If the control has children,
    ' recursively call this function
    If ctrl.HasChildren Then
    ClearForm(ctrl)
    End If
    Next
    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    For Each RdoButton As RadioButton In Me.Controls.Cast(Of Control).SelectMany(Function(ctrl) GetAll(ctrl, GetType(RadioButton)).Concat(Me.Controls.Cast(Of Control)).Where(Function(c) c.[GetType]() = GetType(RadioButton)))
    RdoButton.Checked = False
    Next
    End Sub
    End Class
    Option Strict On
    Public Class Form1
    Dim TableLayoutPanelList As New List(Of TableLayoutPanel)
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.Location = New Point(CInt((Screen.PrimaryScreen.WorkingArea.Width / 2) - (Me.Width / 2)), CInt((Screen.PrimaryScreen.WorkingArea.Height / 2) - (Me.Height / 2)))
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    For Each Item As TableLayoutPanel In Me.Controls.Cast(Of Control).SelectMany(Function(ctrl) GetAll(ctrl, GetType(TableLayoutPanel)).Concat(Me.Controls.Cast(Of Control)).Where(Function(c) c.[GetType]() = GetType(TableLayoutPanel)))
    Dim ContainsItem As Boolean = False
    If TableLayoutPanelList.Count = 0 Then TableLayoutPanelList.Add(Item) : ContainsItem = True
    If TableLayoutPanelList.Count > 0 Then
    For i = 0 To TableLayoutPanelList.Count - 1
    If TableLayoutPanelList(i) Is Item Then
    ContainsItem = True
    End If
    Next
    End If
    If ContainsItem = False Then
    TableLayoutPanelList.Add(Item)
    Else
    ContainsItem = False
    End If
    Next
    End Sub
    Public Function GetAll(control As Control, type As Type) As IEnumerable(Of Control)
    Dim controls = control.Controls.Cast(Of Control)()
    Return controls.SelectMany(Function(ctrl) GetAll(ctrl, type)).Concat(controls).Where(Function(c) c.[GetType]() = type)
    End Function
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    RichTextBox1.Clear()
    If TableLayoutPanelList.Count > 0 Then
    For Each Item In TableLayoutPanelList
    RichTextBox1.AppendText(Item.Name & vbCrLf & " " & Item.BackColor.Name.ToString & vbCrLf)
    Next
    End If
    End Sub
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    For Each Item As ColumnStyle In TableLayoutPanel1.ColumnStyles
    RichTextBox1.AppendText(Item.SizeType.ToString & vbCrLf & " " & Item.Width.ToString & vbCrLf)
    Next
    End Sub
    End Class
    Option Strict On
    Public Class Form1
    Dim FormControlsList As New List(Of Control)
    Dim TblLoutPanel As TableLayoutPanel
    Dim TblLoutPanelsAdded As TableLayoutPanel
    Dim ColorNames As New List(Of String)
    Dim ColorName As System.Type = GetType(System.Drawing.Color)
    Dim ColorPropInfo As System.Reflection.PropertyInfo() = ColorName.GetProperties()
    Dim Rand As New Random
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.Location = New Point(CInt((Screen.PrimaryScreen.WorkingArea.Width / 2) - (Me.Width / 2)), CInt((Screen.PrimaryScreen.WorkingArea.Height / 2) - (Me.Height / 2)))
    For Each CPI As System.Reflection.PropertyInfo In ColorPropInfo
    If CPI.PropertyType.Name = "Color" And CPI.Name <> "Transparent" Then
    ColorNames.Add(CPI.Name)
    End If
    Next
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Button1.Enabled = False
    TblLoutPanel = New TableLayoutPanel
    With TblLoutPanel
    .Name = "TableLayoutPanel1"
    .Size = New Size(400, 400)
    .GrowStyle = TableLayoutPanelGrowStyle.FixedSize
    .CellBorderStyle = TableLayoutPanelCellBorderStyle.InsetDouble
    .Left = 20
    .Top = Button1.Bottom + 20
    .ColumnCount = 3
    .RowCount = 3
    .RowStyles.Clear()
    .ColumnStyles.Clear()
    For i = 0 To .ColumnCount - 1
    .ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33!))
    Next
    For i = 0 To .RowCount - 1
    .RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33!))
    Next
    .BackColor = Color.FromName(ColorNames(Rand.Next(0, ColorNames.Count)))
    End With
    Me.Controls.Add(TblLoutPanel)
    For i = 2 To 10
    TblLoutPanelsAdded = New TableLayoutPanel
    TblLoutPanelsAdded.Name = "TableLayoutPanel" & i.ToString
    With TblLoutPanelsAdded
    .Size = New Size(100, 100)
    .GrowStyle = TableLayoutPanelGrowStyle.FixedSize
    .CellBorderStyle = TableLayoutPanelCellBorderStyle.OutsetDouble
    .Anchor = AnchorStyles.None
    .ColumnCount = 2
    .RowCount = 2
    .RowStyles.Clear()
    .ColumnStyles.Clear()
    For j = 0 To .ColumnCount - 1
    .ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33!))
    Next
    For j = 0 To .RowCount - 1
    .RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33!))
    Next
    .BackColor = Color.FromName(ColorNames(Rand.Next(0, ColorNames.Count)))
    End With
    For Each ctl As Control In Me.Controls.OfType(Of TableLayoutPanel)()
    If ctl.Name = "TableLayoutPanel1" Then
    ctl.Controls.Add(TblLoutPanelsAdded)
    End If
    Next
    Next
    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    FormControlsList.AddRange(RecursiveControlSearch(Me).ToArray)
    End Sub
    Private Function RecursiveControlSearch(ByRef Ctl As Control) As List(Of Control)
    Dim Temp As New List(Of Control)
    For Each Item As Control In Ctl.Controls
    Temp.Add(Item)
    GetAllChildControls(Item)
    Next
    Return Temp
    End Function
    Private Sub GetAllChildControls(ByVal ctrlParent As Control)
    For Each Item As Control In ctrlParent.Controls
    FormControlsList.Add(Item)
    If Item.HasChildren Then
    GetAllChildControls(Item)
    End If
    Next
    End Sub
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    RichTextBox1.Clear()
    For Each Item In FormControlsList
    RichTextBox1.AppendText(Item.Name & vbCrLf)
    Next
    End Sub
    End Class
    La vida loca

  • How to specify height dynamically for each showDetailItem

    Hi,
    I'm using JDeveloper 11.1.1.6 version.
    I have the following requirement:
    I have a create page with one <af:region>.
    The <af:region> displays a page with <af:PanelTabbed> component having 4 <af:showdetailItem> components.
    For each tab I would like to specify the height dynamically based on the content of the tab.
    Any pointers would be helpful.
    Thanks
    Ravi

    Hi,
    actually its the parent component (panelTab) that determines the size
    To quote from http://docs.oracle.com/cd/E23943_01/apirefs.1111/e12419/tagdoc/af_showDetailItem.html
    Geometry Management
    This component should never have any width or height specified in its inlineStyle because it will always gets its dimensions from its ancestor component.
    Frank

  • Construct dynamic menu through iteration of [for each]...

    Hi,
    I'm trying to create a menu based off a json file structure. Per the code below, I'm trying to build a menu structure that resembles the image below. In order to complete this piece of code, I'm trying to figure out what [mcMenuItem.y] and [mcLessonItem.y] would be. I know this is a seemingly simple problem, but I haven't done something such as this in some time and it's slipped my mind on how to construct the y value through iteration. Any help would be very appreciated,
    ~Chipleh
    for each (var module:Object in courseData[0].modules)
        var mcMenuItem:mcMenu=new mcMenu();                           
        menuHolder.addChild(mcMenuItem);                                       
        mcMenuItem.name = "mcMenuItem" + i;
        mcMenuItem.y = mcMenuItem.y + (mcMenuItem.height * i);
        for each (var moduleNumber:Object in module)
            j = 0;
            for each (var lessons:Object in moduleNumber)
                var mcLessonItem:mcMenu=new mcMenu();                           
                menuHolder.addChild(mcLessonItem);                                       
                mcLessonItem.x = mcMenuItem.x + 25;// + mcMenuItem.width;
                mcLessonItem.y = (?);
                mcLessonItem.name = "mcLessonMenuItem" + j;

    You'll need to have a yValue variable that you increment as you add each new menu item.  The increment value will be the height property of the item last planted.

Maybe you are looking for

  • SQL Server Agent Jobs error for Slowly changing dimension

    Hi, I have implemented Slowly changing dimension in 5 of my packages for lookup insert/update. All the packages are running good in SSDT. And when i deployed the project to SSISDB and run the packages all are running successfully. But when i created

  • Negitive inventory

    hi friends i am using purchase order based on sales order scenario. ON the first GRPO the goods were returned as a result GRPO was closed and purchase order was also closed ideally user should also cancel the sales order but the user did not do so an

  • Acquire/manipulate audio data from internet stream

    I want to acquire the audio data from an audio stream (i.e. pandora, youtube, etc.) from the internet.  If I can get this data and be able to play it/graph it/etc in Labview, I will be pleased.  However, I'm not sure if this is even possible not know

  • Replace Chinese Kanji character with Japanese Kanji and vice versa.

    Hi Everyone, Maybe this thread is for someone who knows the difference between Chinese Kanji and Japanese Kanji. So, let me ask you a question. There are more than two characters in Kanji. Several ones for Chinese and one for Japanese Kanji. For exam

  • How-to extend the Sales Order with the Project ID?

    Hello ByD Community, My problem is the following: I want to add an extension field to the Sales Order Header, which would be the Project ID assigned to this Sales Order. My use case only involve one Project ID per Sales Order, and the task will be th