Reviewer Results
ReviewerResults.mxml
<?xml version="1.0" encoding="utf-8"?> <!-- //////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2008-2014 Esri // // All rights reserved under the copyright laws of the United States // and applicable international laws, treaties, and conventions. // // You may freely redistribute and use this software, with or without // modification, provided you include the original copyright and use // restrictions. See use restrictions in the file use_restrictions.txt. // //////////////////////////////////////////////////////////////////////////////// --> <s:Application minHeight="400" minWidth="600" 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:drs="com.esri.drs.*" pageTitle="DRS Reviewer Results reviewerResults.getResults Sample"> <!-- Data Reviewer provides the ability to retrieve Reviewer results and display in a tabular view. The results are based on automated validation or manual inspections and stored in a Reviewer workspace. The ReviewerResultsTask has functions that retrieve non-spatial feature sets of these results. (Note that ReviewerResultsTask differs from DashboardTask in that DashboardTask retrieves aggregate information about the results from a Reviewer workspace in order to report on the data quality.) This sample uses the getResults function to return a feature set of Reviewer results. --> <fx:Declarations> <!-- Create a Reviewer Results task and configure its URL and event handlers --> <drs:ReviewerResultsTask id="resultTask" url="{_soeUrl}" getResultsComplete="resultTask_getResultsCompleteHandler(event)" fault="faultHandler(event)" showBusyCursor="true" disableClientCaching="true"/> </fx:Declarations> <fx:Script> <![CDATA[ import com.esri.ags.FeatureSet; import com.esri.drs.DataReviewerTaskEvent; import com.esri.drs.GetResultsQueryParameters; import com.esri.drs.ReviewerResultsTask; import mx.collections.ArrayList; import mx.controls.Text; import mx.rpc.Fault; import mx.rpc.events.FaultEvent; import mx.controls.Alert; import spark.components.gridClasses.GridColumn; // use this as the data grid's data provider [Bindable]private var _resultList:ArrayList = new ArrayList(); //RevTableFields object. Add any custom fields if required [Bindable]private var _fieldList:ArrayList = new ArrayList( [{ data:'recordId', label:'Record Id' }, { data:'objectId', label:'Object Id' }, { data:'category', label:'Category' }, { data:'sessionId', label:'Session Id' }, { data:'checktitle', label:'Checktitle' }, { data:'resourceName', label:'Resource Name' }, { data:'subtype', label:'Subtype' }, { data:'checkName', label:'Check Name' }, { data:'notes', label:'Notes' }, { data:'severity', label:'Severity' }, { data:'reviewStatus', label:'Review Status' }, { data:'reviewTechnician', label:'Review Technician' }, { data:'reviewDateUtc', label:'Review Date Utc' }, { data:'lifecycleStatus', label:'Life Cycle Status' }]); //Amazon instance for Data Reviewer Server. Change to your Data Reviewer Server SOE URL to run this sample in your environment private var _soeUrl:String = "http://datareviewer.arcgisonline.com/arcgis/rest/services/Samples/reviewerDashboard/MapServer/exts/DataReviewerServer"; //Array of return field names private var selectedFieldNames:Array = new Array(); // Handles click event for Get Reviewer Results button protected function getData_clickHandler(event:MouseEvent):void { if(returnFieldNamesList.selectedItems.length==0 || txtRecords.text.length==0) { Alert.show("Please fill out Get Results inputs"); return; } // display grid currentState = "data"; selectedFieldNames=[]; var columns:ArrayList=new ArrayList(); //get selected indices from the list var selectedIndices:Vector.<int> = returnFieldNamesList.selectedIndices; selectedIndices.sort(Array.NUMERIC); //Create data grid columns and set field names array based on field names selected for (var i:int = 0; i <selectedIndices.length; i++) { var gridCol:GridColumn=new GridColumn(returnFieldNamesList.dataProvider.getItemAt(selectedIndices[i]).label); gridCol.dataField=returnFieldNamesList.dataProvider.getItemAt(selectedIndices[i]).data; selectedFieldNames.push(returnFieldNamesList.dataProvider.getItemAt(selectedIndices[i]).data); gridCol.width=120; columns.addItem(gridCol); } grid.columns=columns; //get query paramters. Display firt page by default var queryParameters:GetResultsQueryParameters=getQueryParamters(1) //get results using the ReviewerResultsTask resultTask.getResults(queryParameters); } // protected function getQueryParamters(pageNumber:int): GetResultsQueryParameters { //create query parameters var queryParameters:GetResultsQueryParameters = new GetResultsQueryParameters(); //set the number of results to be displayed queryParameters.pageSize = int(txtRecords.text);//Mandatory //set the page number of the results. Zero based index queryParameters.pageNumber = pageNumber-1;//Mandatory queryParameters.returnFields =selectedFieldNames ;//Optional //set page number pageNumberLabel.text=pageNumber.toString(); return queryParameters; } // Handles the 'ReviewerResultsTask getResults completed' event private function resultTask_getResultsCompleteHandler(event:DataReviewerTaskEvent):void { var result:FeatureSet = event.result as FeatureSet; if (result == null) { currentState = "error"; errorMsg.text = "Null FeatureSet returned"; } //create an arraylist of attributes in the non-spatial featureset else { _resultList = new ArrayList(result.attributes); currentState = "data"; } } //Handles fault private function faultHandler(event:FaultEvent, token:* = null):void { var fault:Fault = event.fault; var msg:String = fault.faultString; if (fault.content != null && fault.content as Array != null) msg = fault.content[1].message; //handle the last page error if (msg !=null && msg.search("No results returned for specified query")>=0 && int(pageNumberLabel.text)>1) { Alert.show("You are already at last page"); pageNumberLabel.text=(int(pageNumberLabel.text)-1).toString(); nextButton.enabled=false; } else { errorMsg.text = "Error: " + msg; currentState = "error"; } } protected function previousButton_clickHandler(event:MouseEvent):void { //decrement page number var pageNum:int=1; if (int(pageNumberLabel.text)>1) pageNum=(int(pageNumberLabel.text) - 1); var queryParameters:GetResultsQueryParameters=getQueryParamters(pageNum) //get results using the ReviewerResultsTask resultTask.getResults(queryParameters); //enable next button nextButton.enabled=true; } protected function nextButton_clickHandler(event:MouseEvent):void { //increment page number var pageNum:int=0; pageNum=(int(pageNumberLabel.text) + 1); var queryParameters:GetResultsQueryParameters=getQueryParamters(pageNum) //get results using the ReviewerResultsTask resultTask.getResults(queryParameters); } ]]> </fx:Script> <s:states> <s:State name="normal"/> <s:State name="data"/> <s:State name="error"/> </s:states> <s:controlBarContent> <s:Label width="100%" text="The following sample retrieves Reviewer results from an ArcGIS Data Reviewer for Server hosted on Amazon. Results are displayed in a tabular format. To run the sample against your own Data Reviewer Server, see comments in code for _soeUrl variable."/> </s:controlBarContent> <s:Scroller width="100%" height="100%"> <s:VGroup width="100%" paddingLeft="20" paddingRight="20"> <s:Form width="30%"> <s:layout> <s:FormLayout gap="-5"/> </s:layout> <s:FormHeading label="Get Reviewer Results with Paging"/> <s:FormItem label="Records per page: "> <s:TextInput id="txtRecords" width="100%" toolTip="Valid values from 1 to 1000" restrict="0-9" prompt="Number of records per page"/> </s:FormItem> <s:FormItem label="Return Fields: "> <s:List allowMultipleSelection="true" id="returnFieldNamesList" dataProvider="{_fieldList}" width="100%" height="150" /> </s:FormItem> <s:FormItem> <s:layout> <s:HorizontalLayout horizontalAlign="right"/> </s:layout> <s:Button id="getData" height="25" label="Get Dashboard Results" click="getData_clickHandler(event)"/> </s:FormItem> </s:Form> <s:Spacer height="30"/> <!--Paging results--> <s:HGroup paddingLeft="20" paddingRight="20" includeIn="data"> <s:Button id="previousButton" width="40" height="25" label="<" click="previousButton_clickHandler(event)" /> <s:Label id="pageNumberLabel" verticalAlign="bottom"> 1 </s:Label> <s:Button id="nextButton" width="40" height="25" label=">" click="nextButton_clickHandler(event)"/> </s:HGroup> <!--Data grid containing results--> <s:Scroller id="groupGrid" width="100%" includeIn="data"> <s:VGroup paddingLeft="20" paddingRight="20" > <s:DataGrid id="grid" dataProvider="{_resultList}" horizontalScrollPolicy="auto" verticalScrollPolicy="auto"> </s:DataGrid> </s:VGroup> </s:Scroller> <!-- Error message --> <s:HGroup id="error" color="red" horizontalAlign="center" paddingTop="20" includeIn="error" itemCreationPolicy="immediate"> <s:Label id="errorMsg" fontSize="15" text="Error"/> </s:HGroup> </s:VGroup> </s:Scroller> </s:Application>
Copyright © 1995-2015 Esri. All rights reserved.
2/23/2015