Provided is a zip of the FVExtLogger Visual Studio Solution, which can be downloaded from:
https://software.inventu.com/FVExtLogger/FVExtLoggerFW4.zip (Visual Studio 2010 and .NET Framework 4 Compatible)
Download and unzip the version that matches your target server environment--if you have a different version of Visual Studio, download the file that is below but closest to your version so that it will automatically upgrade when opened.
There are a couple of references in the project which may become invalid when unzipped to a development PC:
SCWebControls | This DLL is found in the bin folder of the FVTerm web application, so when updating the reference, browse to a local installation of FVTerm to find the DLL--you will need an updated FVTerm to have the references work! |
ViewerLib or ViewerLib4 | The standard Inventu Viewer+ library providing the FSCProLib namespace--typically found in the GAC as well as the c:\program files\[inventu|flynet]\viewer\bin folder |
The sample code provided is contained in the two logging methods:
LogEnter | Called each time a user enters a screen |
LogScreen | Called each time a new screen update is received from the host (this call is not included in the VS2005 sample--see the next section for source) |
LogEnter and LogScreen are documented inside the code and the documentation is not replicated here--please open in Visual Studio for parameter information as well as samples for accessing the active ScreenID and Fields updated by the user.
Included in the sample is the use of the static GetFieldName method, this will find the fully qualified field name of a user's data entry (represented in a "Field" object). The fully qualified name will have ScreenID.FieldName for fields found in a default map, and ScreenID.FieldMapName.FieldName for other maps, such as row maps.
An added feature of GetFieldName is that if there is a multirow data entry fieldmap, the multiRowIndex of the user's data entry is returned also, so that it is possible to track the "depth" of data entry into multi-row fieldmaps.
GetFieldName is very efficient, using a ScreenID and Field Offset dictionary key to enable rapid retrieval of field names based on the active screen and the field maps contained in the web.config referenced definition file.
For unmapped fields, the name of the field will be ScreenID.unmapped[rr,cc] where ScreenID is the active screen (or "Default" if unrecognized), and the rr=row and cc=column of the unmapped field.