--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<chapter version="5.0" xml:id="add-data-source" xml:lang="EN"
+ xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:ns5="http://www.w3.org/1998/Math/MathML"
+ xmlns:ns4="http://www.w3.org/2000/svg"
+ xmlns:ns3="http://www.w3.org/1999/xhtml"
+ xmlns:ns="http://docbook.org/ns/docbook">
+ <info>
+ <title>Adding Data Sources to Reporter</title>
+ </info>
+
+ <para>You can further customize your Evergreen reporting environment by
+ adding additional data sources.</para>
+
+ <para>The Evergreen reporter module does not build and execute SQL queries
+ directly, but instead uses a data abstraction layer called Fieldmapper to
+ mediate queries on the Evergreen database. Fieldmapper is also used by other
+ core Evergreen DAO services, including cstore and permacrud. The
+ configuration file fm_IDL.xml contains the mapping between Fieldmapper class
+ definitions and the database. The fm_IDL.xml file is located in the
+ /openils/conf directory.</para>
+
+ <para>There are 3 basic steps to adding a new data source. Each step will be
+ discussed in more detail in the</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Create a PostgreSQL query, view, or table that will provide the
+ data for your data source.</para>
+ </listitem>
+
+ <listitem>
+ <para>Add a new class to fm_IDL.xml for your data source.</para>
+ </listitem>
+
+ <listitem>
+ <para>Restart the affected services to see the new data source in
+ Reporter.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>There are two possbile sources for new data sources:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>An SQL query built directly into the class definition in
+ fm_IDL.xml. You can use this method if you are only going to access this
+ data source through the Evergreen reporter and/or cstore code that you
+ write.</para>
+ </listitem>
+
+ <listitem>
+ <para>A new table or view in the Evergreen PostgresSQL database on which
+ a class definition in fm_IDL.xml. You can use this method if you want to
+ be able to access this data source through directly through SQL or using
+ other reporting tool.</para>
+ </listitem>
+ </itemizedlist>
+
+ <section>
+ <title>Create a PostgreSQL query, view, or table that will provide the
+ data for your data source</title>
+
+ <para>You need to decide whether you will create your data source as a
+ query, a view, or a table.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Create a <emphasis>query</emphasis> if you are planning to
+ access this data source only through the Evergreen reporter and/or
+ cstore code that you write. You will use this query to create an IDL
+ only view.</para>
+ </listitem>
+
+ <listitem>
+ <para>Create a <emphasis>view</emphasis> if you are planning to access
+ this data source through other methods in addition to the Evergreen
+ reporter, or if you may need to do performance tuning to optimize your
+ query.</para>
+ </listitem>
+
+ <listitem>
+ <para>You may also need to use an additional
+ <emphasis>table</emphasis> as part of your data source if you have
+ additional data that's not included in the base Evergreen, or if you
+ need to use a table to store the results of a query for performance
+ reasons.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>To develop and test queries, views, and tables, you will need</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Access to the Evergree PostgreSQL database at the command line.
+ This is normally the psql application. For introductory information,
+ please see <xref linkend="intro_to_sql" />. You can access the
+ Postgres documentation at the <link
+ xlink:href="http://www.postgresql.org/docs/">Official Postgres
+ documentation</link> for more information about PostgreSQL.</para>
+ </listitem>
+
+ <listitem>
+ <para>Knowledge of the Evergreen database structure for the data that
+ you want to access. You can find this information by looking at the
+ Evergreen schema - see <xref linkend="databaseschema" /> and <xref
+ linkend="data_models_and_access" /></para>
+ </listitem>
+ </itemizedlist>
+
+ <para>If the views that you are creating are purely local in usage are are
+ intended for contribution to the core Evergreen code, create the Views and
+ Tables in the extend_reporter schema. This schema is intended to be used
+ for local customizations and will not be modified during upgrades to the
+ Evergreen system.</para>
+
+ <para>You should make that you have an appropriate version control pocess
+ for the SQL used to create you data sources.</para>
+
+ <para>Here's an example of a view created to incorporate some locally
+ defined user statistical categories.<programlisting>create view extend_reporter.patronstats as
+select u.id,
+grp.name as "ptype",
+rl.stat_cat_entry as "reg_lib",
+gr.stat_cat_entry as "gender",
+ag.stat_cat_entry as "age_group",
+EXTRACT(YEAR FROM age(u.dob)) as "age",
+hl.id as "home_lib",
+u.create_date,
+u.expire_date,
+ms_balance_owed
+from actor.usr u
+join permission.grp_tree grp on (u.profile = grp.id and (grp.parent = 2 or grp.name = 'patron'))
+join actor.org_unit hl on (u.home_ou = hl.id)
+left join money.open_usr_summary ms on (ms.usr = u.id)
+left join actor.stat_cat_entry_usr_map rl on (u.id = rl.target_usr and rl.stat_cat = 4)
+left join actor.stat_cat_entry_usr_map bt on (u.id = bt.target_usr and bt.stat_cat = 3)
+left join actor.stat_cat_entry_usr_map gr on (u.id = gr.target_usr and gr.stat_cat = 2)
+left join actor.stat_cat_entry_usr_map gr on (u.id = gr.target_usr and gr.stat_cat = 2)
+left join actor.stat_cat_entry_usr_map ag on (u.id = ag.target_usr and ag.stat_cat = 1)
+where u.active = 't' and u.deleted <> 't';
+</programlisting></para>
+ </section>
+
+ <section>
+ <title>Add a new class to fm_IDL.xml for your data source</title>
+
+ <para>Once you have your data source, the next step is to add that data
+ source as a new class in fm_IDL.xml. </para>
+
+ <para>You will need to add the following attributes for the class
+ definition</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis>id.</emphasis> You should follow a consistent naming
+ convention for your class names that won't create conflicts in the
+ future with any standard classes added in future upgrades. Evergreen
+ normally names each class with the first letter of each word in the
+ schema and table names. You may want to add a local prefix or suffix
+ to your local class names.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>controller=”open-ils.cstore”</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>oils_obj:fieldmapper</emphasis>=”extend_reporter::long_name_of_view”</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>oils_persist.readonly</emphasis>=”true”</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>reporter:core</emphasis>=”true” (if you want this to
+ show up as a “core” reporting source)</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>reporter</emphasis>:label. This is the name that will
+ appear on the data source list in the Evergreen reporter.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>oils_persist:source_definition</emphasis>. If this is
+ an IDL-only view, add the SQL query here. You don't need this
+ attribute if your class is based on a PostgreSQL view or table.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>oils_persist:tablename=</emphasis>"schemaname.viewname
+ or tablename" If this class is based on a PostgreSQL view or table,
+ add the table name here. You don't need this attribute is your class
+ is an IDL-only view.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>For each column in the view or query output, add
+ <emphasis>field</emphasis> element and set the following attributes. The
+ fields should be wrapped with <field> </field> </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>reporter:label. This is the name that appears in the Evergreen
+ reporter.</para>
+ </listitem>
+
+ <listitem>
+ <para>name. This should match the column name in the view or query
+ output.</para>
+ </listitem>
+
+ <listitem>
+ <para>reporter:datatype (which can be id, bool, money, org_unit, int,
+ number, interval, float, text, timestamp, or link)</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>For each linking field, add a <emphasis>link</emphasis> element with
+ the following attributes. The elements should be wrapped with <link>
+ </link></para>
+
+ <itemizedlist>
+ <listitem>
+ <para>field (should match field.name)</para>
+ </listitem>
+
+ <listitem>
+ <para>reltype (“has_a”, “might_have”, or “has_many”)</para>
+ </listitem>
+
+ <listitem>
+ <para>map (“”)</para>
+ </listitem>
+
+ <listitem>
+ <para>key (name of the linking field in the foreign table)</para>
+ </listitem>
+
+ <listitem>
+ <para>class (ID of the IDL class of the table that is to be linked
+ to)</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>The following example is a class definition for the example view
+ that was created in the previous section.</para>
+
+ <para><programlisting><class id="erpstats" controller="open-ils.reporter-store" oils_obj:fieldmapper="extend_reporter::patronstats" oils_persist:tablename="extend_reporter.patronstats" oils_persist:readonly="true" reporter:label="Patron Statistics" reporter:core="true">
+ <fields oils_persist:primary="id">
+ <field reporter:label="Patron ID" name="id" reporter:datatype="link" />
+ <field reporter:label="Patron Type" name="ptype" reporter:datatype="text" />
+ <field reporter:label="Reg Lib" name="reg_lib" reporter:datatype="text" />
+ <field reporter:label="Boro/Twp" name="boro_twp" reporter:datatype="text" />
+ <field reporter:label="Gender" name="gender" reporter:datatype="text" />
+ <field reporter:label="Age Group" name="age_group" reporter:datatype="text" />
+ <field reporter:label="Age" name="age" reporter:datatype="int" />
+ <field reporter:label="Home Lib ID" name="home_lib_id" reporter:datatype="link" />
+ <field reporter:label="Home Lib Code" name="home_lib_code" reporter:datatype="text" />
+ <field reporter:label="Home Lib" name="home_lib" reporter:datatype="text" />
+ <field reporter:label="Create Date" name="create_date" reporter:datatype="timestamp" />
+ <field reporter:label="Expire Date" name="expire_date" reporter:datatype="timestamp" />
+ <field reporter:label="Balance Owed" name="balance_owed" reporter:datatype="money" />
+</fields>
+<links>
+ <link field="id" reltype="has_a" key="id" map="" class="au"/>
+ <link field="home_lib_id" reltype="has_a" key="id" map="" class="aou"/>
+</links>
+</class></programlisting><caution>
+ <para>fm_IDL.xml is used by other core Evergreen DAO services,
+ including cstore and permacrud. So changes to this file can affect the
+ entire Evergreen application, not just reporter. After making changes
+ fm_IDL.xml, it is a good idea to ensure that it is valid XML by using
+ a utility such as xmllint – a syntax error can render much of
+ Evergreen nonfunctional. Set up a good change control system for any
+ changes to fm_IDL.xml. You will need to keep a separate copy of you
+ local class definitions so that you can reapply the changes to
+ fm_IDL.xml after Evergreen upgrades.</para>
+ </caution></para>
+ </section>
+
+ <section>
+ <title>Restart the affected services to see the new data source in the
+ reporter</title>
+
+ <para>The following steps are needed to for Evergreen to recognize the
+ changes to fm_IDL.xml</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Copy the updated fm_IDL.xml Update /openils/conf/fm_IDL.xml to
+ /openils/var/web/reports/fm_IDL.xml<programlisting>cp /openils/conf/fm_IDL.xml /openils/var/web/reports/fm_IDL.xml</programlisting></para>
+ </listitem>
+
+ <listitem>
+ <para>Run Autogen to to update the Javascript versions of the
+ fieldmapper definitions.</para>
+
+ <programlisting>/openils/bin/autogen.sh</programlisting>
+ </listitem>
+
+ <listitem>
+ <para>Restart C services<programlisting>osrf_ctl.sh -l -a restart_c</programlisting></para>
+ </listitem>
+
+ <listitem>
+ <para>Restart the Evergreen reporter. You may need to modify this
+ command depending on your system configuration and pid
+ path<programlisting>opensrf-perl.pl -l -action restart -service open-ils.reporter -config /openils/conf/opensrf_core.xml -pid-dir /openils/var/run</programlisting></para>
+ </listitem>
+
+ <listitem>
+ <para>Restart the Evergreen application or use Admin, For Developers,
+ Clear Cache</para>
+ </listitem>
+ </orderedlist>
+ </section>
+</chapter>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<chapter xml:id="create-template" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="EN"\r
+ xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink">\r
+\r
+ <info>\r
+ <title>Creating Templates</title>\r
+ </info>\r
+\r
+ <para>Once you have created a folder, the next step in building a report is to create or clone a\r
+ template. Templates allow you to run a report more than once without building it anew every\r
+ time, by changing definitions to suit current requirements. For example, you can create a\r
+ shared template that reports on circulation at a given library. Then, other libraries can\r
+ use your template and simply select their own library when they run the report.</para>\r
+\r
+ <para>It may take several tries to refine a report to give the output that you want. It can be\r
+ useful to plan out your report on paper before getting started with the reporting tool.\r
+ Group together related fields and try to identify the key fields that will help you select\r
+ the correct <emphasis>source</emphasis>. </para>\r
+\r
+ <para>It may be useful to create complex queries in several steps. For example, first add all\r
+ fields from the table at the highest source level. Run a report and check to see that you\r
+ get results that seem reasonable. Then clone the report, add any filters on fields at that\r
+ level and run another report. Then drill down to the next table and add any required fields.\r
+ Run another report. Add any filters at that level. Run another report. Continue until you’ve\r
+ drilled down to all the fields you need and added all the filters. This might seem time\r
+ consuming and you will end up cloning your initial report several times. However, it will\r
+ help you to check the correctness of your results, and will help to debug if you run into\r
+ problems because you will know exactly what changes caused the problem. Also consider adding\r
+ extra fields in the intermediate steps to help you check your results for correctness. </para>\r
+\r
+ <para>This example illustrates creating a template for circulation statistics. This is an\r
+ example of the most basic template that you can create. The steps required to create a\r
+ template are the same every time, but the tables chosen, how the data is transformed and\r
+ displayed, and the filters used will vary depending on your needs. </para>\r
+\r
+ <section xml:id="create-template-choosing">\r
+ <info>\r
+ <title>Choosing Report Fields</title>\r
+ </info>\r
+\r
+\r
+ <procedure>\r
+ <step>\r
+\r
+\r
+ <informalfigure>\r
+ <para>Click on the <guilabel>My Folder</guilabel> template folder where you want\r
+ the template to be saved.</para>\r
+ <para>\r
+ <mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-1.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject>\r
+ </para>\r
+ </informalfigure>\r
+ </step>\r
+\r
+ <step>\r
+\r
+ <informalfigure>\r
+ <para>Click on <guilabel>Create a new Template for this\r
+ folder</guilabel>.</para>\r
+ <para> <mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-2.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+ </informalfigure>\r
+ </step>\r
+\r
+ <step>\r
+\r
+ <informalfigure>\r
+ <para>You can now see the template creating interface. The upper half of the\r
+ screen is the <guilabel>Database Source Browser</guilabel>. The top left\r
+ hand pane contains the database <guilabel>Sources</guilabel> drop-down list.\r
+ This is the list of tables available as a starting point for your report.\r
+ Commonly used sources are <guimenuitem>Circulation</guimenuitem> (for circ\r
+ stats and overdue reports), <guimenuitem>ILS User</guimenuitem> (for patron\r
+ reports), and <guimenuitem>Item</guimenuitem> (for reports on a library's\r
+ holdings).</para>\r
+ <para>\r
+ <mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata width="100%" scalefit="1"\r
+ fileref="../media/create-template-3.png"/>\r
+ </imageobject>\r
+ </mediaobject>\r
+ </para>\r
+ </informalfigure>\r
+ <para>The <guilabel>Enable source nullability</guilabel> checkbox below the sources\r
+ list is for advanced reporting and should be left unchecked by default.</para>\r
+\r
+ </step>\r
+\r
+\r
+ <step>\r
+\r
+ <informalfigure>\r
+ <para>Select <guimenuitem>Circulation</guimenuitem> in the <guimenu>Sources\r
+ </guimenu> dropdown menu. Note that the <guimenuitem>Core\r
+ Sources</guimenuitem> for reporting are listed first, however it is\r
+ possible to access all available sources at the bottom of this dropdown\r
+ menu. You may only specify one source per template.</para>\r
+ <para>\r
+ <mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-4.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject>\r
+ </para>\r
+ </informalfigure>\r
+ </step>\r
+\r
+ <step>\r
+\r
+\r
+ <informalfigure>\r
+ <para>Click on <guilabel>Circulation</guilabel> to retrieve all the field names\r
+ in the <guilabel>Field Name</guilabel> pane. Note that the <guilabel>Source\r
+ Specifier</guilabel> (above the middle and right panes) shows the path\r
+ that you took to get to the specific field. </para>\r
+ <para> <mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata width="100%" scalefit="1"\r
+ fileref="../media/create-template-5.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+ </informalfigure>\r
+\r
+\r
+\r
+ </step>\r
+\r
+ <step>\r
+ <informalfigure>\r
+ <para>Select <guimenuitem>Circ ID</guimenuitem> in the middle <guilabel>Field\r
+ Name</guilabel> pane, and <guimenuitem>Count Distinct</guimenuitem> from\r
+ the right <guilabel>Field Transform</guilabel> pane. The <guilabel>Field\r
+ Transform</guilabel> pane is where you choose how to manipulate the data\r
+ from the selected fields. You are counting the number of\r
+ circulations.</para>\r
+ <para><mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata width="100%" scalefit="1"\r
+ fileref="../media/create-template-6.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+ <para><guilabel>Field Transforms</guilabel> have either an\r
+ <guilabel>Aggregate</guilabel> or <guilabel>Non-Aggregate</guilabel> output\r
+ type. See <xref linkend="create-template-transforms"/> for more about\r
+ <guilabel>Count, Count Distinct,</guilabel> and other transform\r
+ options.</para>\r
+\r
+ </step>\r
+\r
+ <step>\r
+ <informalfigure>\r
+ <para>Click <guibutton>Add Selected Fields</guibutton> underneath the\r
+ <guilabel>Field Transform</guilabel> pane to add this field to your\r
+ report output. Note that <guimenuitem>Circ ID</guimenuitem> now shows up in\r
+ the bottom left hand pane under the <guilabel>Displayed Fields</guilabel>\r
+ tab. </para>\r
+ <para><mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata width="100%" scalefit="1"\r
+ fileref="../media/create-template-7.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+ </informalfigure>\r
+\r
+\r
+ </step>\r
+ <step xml:id="create-template-step8" xreflabel="Create Templates Step 8">\r
+\r
+ <informalfigure>\r
+ <para><guimenuitem>Circ ID</guimenuitem> will be the column header in the report\r
+ output. You can rename default display names to something more meaningful.\r
+ To do so in this example, select the <guimenuitem>Circ ID</guimenuitem> row\r
+ and click <guibutton>Alter Display Header</guibutton>. </para>\r
+ <para><mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-8.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+\r
+\r
+ <para>Double-clicking on the displayed field name is a shortcut to altering the\r
+ display header.</para>\r
+ </step>\r
+ <step>\r
+\r
+ <informalfigure>\r
+ <para>Type in the new column header name, for example <emphasis>Circ\r
+ count</emphasis> and click <guibutton>OK</guibutton>. </para>\r
+ <para><mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-9.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+\r
+\r
+ </step>\r
+ <step xml:id="create-template-add-field" xreflabel="Step">\r
+ <para> Add other data to your report by going back to the\r
+ <guilabel>Sources</guilabel> pane and selecting the desired fields. In this\r
+ example, we are going to add <menuchoice>\r
+ <guimenu>Circulating Item</guimenu>\r
+ <guimenuitem>Shelving Location</guimenuitem>\r
+ </menuchoice> to further refine the circulation report. </para>\r
+ <informalfigure>\r
+ <para>In the top left hand <guilabel>Sources</guilabel> pane, expand\r
+ <guimenuitem>Circulation</guimenuitem>. Depending on your computer you\r
+ will either click on the + sign or on an arrow to expand the tree. </para>\r
+ <para><mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-10.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+\r
+ </step>\r
+ <step>\r
+\r
+ <informalfigure>\r
+ <para>Click on the + or arrow to expand <guimenuitem>Circulating\r
+ Item</guimenuitem>. Select <guimenuitem>Shelving Location</guimenuitem>. </para>\r
+ <para> <mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-11.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+ <para>When you are creating a template take the shortest path to the field you need\r
+ in the left hand <guilabel>Sources</guilabel> pane. Sometimes it is possible to\r
+ find the same field name further in the file structure, but the shortest path is\r
+ the most efficient. </para>\r
+\r
+ </step>\r
+\r
+ <step>\r
+\r
+ <informalfigure>\r
+ <para> In the <guilabel>Field Name</guilabel> pane select\r
+ <guimenuitem>Name</guimenuitem>. </para>\r
+ <para> <mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata width="100%" scalefit="1"\r
+ fileref="../media/create-template-12.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+\r
+ </step>\r
+ <step>\r
+ <informalfigure>\r
+ <para>In the upper right <guilabel>Field Transform</guilabel> pane, select\r
+ <guimenuitem>Raw Data</guimenuitem> and click <guibutton>Add Selected\r
+ Fields</guibutton>. Use <guilabel>Raw Data</guilabel> when you do not\r
+ wish to transform field data in any manner. </para>\r
+ <para><mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata width="100%" scalefit="1"\r
+ fileref="../media/create-template-13.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+ </step>\r
+\r
+\r
+ <step xml:id="create-template-step15" xreflabel="Create Templates Step 15">\r
+ <informalfigure>\r
+ <para>\r
+ <guilabel>Name</guilabel> will appear in the bottom left pane. Select the\r
+ <guilabel>Name</guilabel> row and click <guibutton>Alter Display\r
+ Header</guibutton>. </para>\r
+ <para> <mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-15.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+ </step>\r
+ <step>\r
+ <informalfigure>\r
+ <para> Enter a new, more descriptive column header, for example,\r
+ <emphasis>Shelving location</emphasis>. Click <guibutton>OK</guibutton>. </para>\r
+ <para><mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-16.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+ </step>\r
+ <step>\r
+ <informalfigure>\r
+ <para> Note that the order of rows (top to bottom) will correspond to the order\r
+ of columns (left to right) on the final report. Select <guimenuitem>Shelving\r
+ location</guimenuitem> and click on <guibutton>Move Up</guibutton> to\r
+ move <guimenuitem>Shelving location</guimenuitem> before <guimenuitem>Circ\r
+ count</guimenuitem>.</para>\r
+ <para><mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-17.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+ </step>\r
+\r
+ <step>\r
+ <informalfigure>\r
+ <para>Return to the <guilabel>Sources</guilabel> pane to add more fields to your\r
+ template. Under <guilabel>Sources</guilabel> click\r
+ <guilabel>Circulation</guilabel>, then select <guilabel>Check Out\r
+ Date/Time</guilabel> from the middle <guilabel>Field Name</guilabel>\r
+ pane.</para>\r
+ <para> <mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata width="100%" scalefit="1" fileref="../media/create-template-19.png"/>\r
+ </imageobject>\r
+ </mediaobject>\r
+</para>\r
+\r
+ </informalfigure>\r
+ </step>\r
+\r
+ <step>\r
+ <informalfigure>\r
+ <para>Select <guimenuitem>Year + Month</guimenuitem> in the right hand\r
+ <guilabel>Field Transform</guilabel> pane and click <guibutton>Add\r
+ Selected Fields</guibutton></para>\r
+ <para> <mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata width="100%" scalefit="1"\r
+ fileref="../media/create-template-20.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+\r
+ </informalfigure>\r
+\r
+ </step>\r
+ <step>\r
+ <informalfigure>\r
+ <para>\r
+ <guimenuitem>Check Out Date/Time</guimenuitem> will appear in the\r
+ <guilabel>Displayed Fields</guilabel> pane. In the report it will appear\r
+ as a year and month (YYYY-MM) corresponding to the selected tranform.</para>\r
+ <para><mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-21.png"/>\r
+ </imageobject>\r
+ </mediaobject></para>\r
+ </informalfigure>\r
+ </step>\r
+\r
+ <step xml:id="create-template-step22" xreflabel="Create Templates Step 22">\r
+ <informalfigure>\r
+ <para>Select the <guimenuitem>Check Out Date/Time</guimenuitem> row. Click\r
+ <guibutton>Alter Display Header</guibutton> and change the column header\r
+ to <emphasis>Check out month</emphasis>.</para>\r
+ <para> <mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-22.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+ </step>\r
+\r
+ <step>\r
+ <informalfigure>\r
+ <para>Move <guimenuitem>Check out month</guimenuitem> to the top of the list\r
+ using the <guibutton>Move Up</guibutton> button, so that it will be the\r
+ first column in an MS Excel spreadsheet or in a chart. Report output will\r
+ sort by the first column.</para>\r
+ <para><mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-23.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+ </informalfigure>\r
+ </step>\r
+\r
+ </procedure>\r
+ <tip>\r
+\r
+ <informalfigure>\r
+\r
+ <para> Note the <guibutton>Change Transform</guibutton> button in the bottom left\r
+ hand pane. It has the same function as the upper right <guilabel>Field\r
+ Transform</guilabel> pane for fields that have already been added. </para>\r
+\r
+\r
+\r
+ <para> <mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-24.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+ </informalfigure>\r
+\r
+\r
+\r
+ </tip>\r
+ </section>\r
+\r
+ <section xml:id="create-template-filters">\r
+ <info>\r
+ <title>Applying Filters</title>\r
+ </info>\r
+\r
+ <para>Evergreen reports access the entire database, so to limit report output to a single\r
+ library or library system you need to apply filters. </para>\r
+\r
+ <para>After following the steps in the previous section you will see\r
+ three fields in the bottom left hand <guilabel>Template Configuration</guilabel> pane.\r
+ There are three tabs in this pane: <guilabel>Displayed Fields</guilabel> (covered in the\r
+ previous section), <guilabel>Base Filters</guilabel> and <guilabel>Aggregate\r
+ Filters</guilabel>. A filter allows you to return only the results that meet the\r
+ criteria you set. </para>\r
+\r
+ <para><guilabel>Base Filters</guilabel> apply to non-aggregate output types, while \r
+ <guilabel>Aggregate Filters</guilabel> are used for aggregate types. In most reports you will be using the\r
+ <guilabel>Base Filters</guilabel> tab. For more information on\r
+ aggregate and non-aggregate types see\r
+ <xref linkend="create-template-transforms"/>. </para>\r
+\r
+\r
+ \r
+ \r
+ <para>There are many available <guilabel>operators</guilabel> when using filters. Some\r
+ examples are <emphasis>Equals</emphasis>, <emphasis>In list</emphasis>, <emphasis>is\r
+ NULL</emphasis>, <emphasis>Betwee</emphasis>, <emphasis>Greater than or equal\r
+ to</emphasis>, and so on. <emphasis>In list</emphasis> is the most flexible\r
+ operator, and in this case will allow you flexibility when running a report from this\r
+ template. For example, it would be possible to run a report on a list of timestamps (in\r
+ this case will be trimmed to year and month only), run a report on a single month, or\r
+ run a report comparing two months. It is also possible to set up recurring reports to\r
+ run at the end of each month.</para>\r
+ <para>In this example we are going to use a <emphasis>Base Filter</emphasis> to filter out\r
+ one library’s circulations for a specified time frame. The time frame in the template\r
+ will be configured so that you can change it each time you run the report.</para>\r
+\r
+ <procedure>\r
+ <info>\r
+ <title>Using Base Filters</title>\r
+ </info>\r
+\r
+ <step>\r
+ <para>Select the <guilabel>Base Filters</guilabel> tab in the bottom\r
+ <guilabel>Template Configuration</guilabel> pane. </para>\r
+ </step>\r
+\r
+ <step>\r
+ <informalfigure>\r
+ <para> For this circulation statistics example, select <menuchoice>\r
+ <guimenu>Circulation </guimenu>\r
+ <guisubmenu>Check Out Date/Time</guisubmenu>\r
+ <guimenuitem>Year + Month</guimenuitem>\r
+ </menuchoice> and click on <guibutton>Add Selected Fields</guibutton>. You\r
+ are going to filter on the time period. </para>\r
+ <para><mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata width="100%" scalefit="1" fileref="../media/create-template-25.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+ </informalfigure>\r
+ </step>\r
+ <step>\r
+ <informalfigure>\r
+ <para>Select <guimenuitem>Check Out Date/Time</guimenuitem>. Click on\r
+ <guibutton>Change Operator</guibutton> and select <guimenuitem>In\r
+ list</guimenuitem> from the dropdown menu. </para>\r
+ <para> <mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-26.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+ </step>\r
+ <step xml:id="create-template-filter-step" xreflabel="above">\r
+ <informalfigure>\r
+ <para>To filter on the location of the circulation select <menuchoice>\r
+ <guisubmenu>Circulation</guisubmenu>\r
+ <guisubmenu> Circulating library</guisubmenu>\r
+ <guimenuitem> Raw Data</guimenuitem>\r
+ </menuchoice> and click on <guibutton>Add Selected Fields</guibutton>. </para>\r
+ <para> <mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata width="100%" scalefit="1" fileref="../media/create-template-27.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+ </informalfigure>\r
+ </step>\r
+ <step>\r
+ <informalfigure>\r
+ <para>Select <guilabel>Circulating Library</guilabel> and click on\r
+ <guibutton>Change Operator</guibutton> and select\r
+ <guimenuitem>Equals</guimenuitem>. Note that this is a template, so the\r
+ value for <emphasis>Equals</emphasis> will be filled out when you run the\r
+ report </para>\r
+ <para><mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-28.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+ <para> For multi-branch libraries, you would select <emphasis>Circulating\r
+ Library</emphasis> with <emphasis>In list</emphasis> as the operator, so you\r
+ could specify the branch(es) when you run the report. This leaves the template\r
+ configurable to current requirements. In comparison, sometimes you will want to\r
+ hardcode true/false values into a template. For example, deleted bibliographic\r
+ records remain in the database, so perhaps you want to hardcode deleted=false,\r
+ so that deleted records don’t show up in the results. You might want to use\r
+ deleted=true, for a template for a report on deleted items in the last month.\r
+ </para>\r
+ </step>\r
+\r
+ <step>\r
+ <informalfigure>\r
+ <para>Once you have configured your template, you must name and save it. Name\r
+ this template <emphasis>Circulations by month for one library</emphasis>.\r
+ You can also add a description. In this example, the title is descriptive\r
+ enough, so a description is not necessary. Click\r
+ <guibutton>Save</guibutton>. </para>\r
+ <para><mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-29.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+ </step>\r
+ <step>\r
+ <informalfigure>\r
+ <para> Click <guibutton>OK</guibutton>. </para>\r
+ <para><mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-30.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+ </step>\r
+ <step>\r
+ <informalfigure>\r
+ <para> You will get a confirmation dialogue box that the template was\r
+ successfully saved. Click <guibutton>OK</guibutton>. </para>\r
+ <para><mediaobject>\r
+ <alt>Screenshot of staff client report interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-31.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+\r
+ </informalfigure>\r
+ </step>\r
+ </procedure>\r
+\r
+ <para> After saving it is not possible to edit a template. To make changes you will need to\r
+ clone it and edit the clone</para>\r
+ <tip>\r
+\r
+\r
+\r
+ <informalfigure>\r
+ <para> The bottom right hand pane is also a source specifier. By selecting one of\r
+ these rows you will limit the fields that are visible to the sources you have\r
+ specified. This may be helpful when reviewing templates with many fields. Use <keycombo>\r
+ <keycap>Ctrl</keycap>\r
+ <mousebutton>Click</mousebutton>\r
+ </keycombo> to select or deselect items. </para>\r
+\r
+ <para> <mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-32.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+ </informalfigure>\r
+\r
+\r
+ </tip>\r
+ </section>\r
+\r
+ \r
+\r
+</chapter>\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<chapter xml:id="report-exporting-report-templates-using-phpPgAdmin" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="EN"\r
+ xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink">\r
+ <info>\r
+ <title>Exporting Report Templates Using phpPgAdmin</title>\r
+ </info>\r
+ <para>Once the data is exported. Database Administrators/Systems Administrators can easily import this data into the templates folder to make it available in the client.</para>\r
+ <simplesect xml:id="dump-entire-reports-template-table">\r
+ <title>Dump the Entire Reports Template Table</title>\r
+ <para>The data exported in this method can create issues importing into a different system if you do not have a matching folder and owner. This is going to export report templates created in your system. The most important fields for importing into the new system are <emphasis>name</emphasis>, <emphasis>description</emphasis>, and <emphasis>data</emphasis>. Data defines the actual structure of the report. The <emphasis>owner</emphasis> and <emphasis>folder</emphasis> fields will unique to the system they were exported from and will have to be altered to ensure they match the appropriate owner and folder information for the new system.</para>\r
+ \r
+ <orderedlist>\r
+ <listitem>Go to the <emphasis role="bold">Reporter</emphasis> schema. Report templates are located in the <emphasis role="bold">Template</emphasis> table</listitem>\r
+ <listitem>Click on the link to the <emphasis role="bold">Template</emphasis> table</listitem>\r
+ <listitem>Click the <emphasis role="bold">export</emphasis> button at the top right of the phpPgAdmin screen</listitem>\r
+ <listitem>Make sure the following is selected\r
+ <orderedlist>\r
+ <listitem>Data Only (checked)</listitem>\r
+ <listitem>Format: Select CSV or Tabbed did get the data in a text format</listitem>\r
+ <listitem>Download checked</listitem>\r
+ </orderedlist>\r
+ </listitem>\r
+ <listitem>Click export button at the bottom</listitem>\r
+ <listitem>A text file will download to your local system</listitem>\r
+ </orderedlist>\r
+\r
+ </simplesect>\r
+ <simplesect xml:id="dump-data-sql-statement">\r
+ <title>Dump Data with an SQL Statement</title>\r
+ <para>The following statement could be used to grab the data in the folder and dump it with admin account as the owner and the first folder in your system.</para>\r
+ <screen>SELECT 1 as owner, name, description, data, 1 as folder FROM reporter.template</screen>\r
+ <para>or use the following to capture your folder names for export</para>\r
+ <screen>SELECT 1 as owner, t.name, t.description, t.data, f.name as folder FROM reporter.template t JOIN reporter.template_folder f ON t.folder=f.id</screen>\r
+ \r
+ <orderedlist>\r
+ <listitem>Run the above query</listitem>\r
+ <listitem>Click the <emphasis role="bold">download</emphasis> link at the bottom of the page</listitem>\r
+ <listitem>Select the file format (CSV or Tabbed)</listitem>\r
+ <listitem>Check download</listitem>\r
+ <listitem>A text file with the report template data will be downloaded.</listitem>\r
+ </orderedlist>\r
+ \r
+ </simplesect>\r
+</chapter>\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<chapter xml:id="folder" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="EN"\r
+ xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink">\r
+ <info>\r
+ <title>Folders</title>\r
+ </info>\r
+ <para>There are three main components to reports: <guilabel>Templates</guilabel>, <guilabel>Reports</guilabel>, and <guilabel>Output</guilabel>. Each of these\r
+ components must be stored in a folder. Folders can be private (accessible to your login only) or shared with other staff at your library, other libraries in your system or consortium. It is also possible to selectively share only certain folders and/or subfolders. </para>\r
+\r
+ <informalfigure>\r
+ <para>There are two parts to the folders pane. The <guilabel>My Folders</guilabel> section\r
+ contains folders created with your Evergreen account. Folders that other users have\r
+ shared with you appear in the <guilabel>Shared Folders</guilabel> section under the username of the sharing account.</para>\r
+ \r
+ <para>\r
+ <mediaobject>\r
+ <alt>Screenshot of reports interface</alt>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/folder-1.png"/>\r
+ </imageobject>\r
+ </mediaobject>\r
+ </para>\r
+ </informalfigure>\r
+\r
+\r
+ <section xml:id="report-folder-creating">\r
+\r
+ <info>\r
+ <title>Creating Folders</title>\r
+ </info>\r
+ <para>Whether you are creating a report from scratch or working from a shared template you must first create at least one folder.</para>\r
+ \r
+ <para>The steps for creating folders are similar for each reporting function. It is easier\r
+ to create folders for templates, reports, and output all at once at the beginning, though it is\r
+ possible to do it before each step. This example demonstrates creating a folder for a template. </para>\r
+\r
+\r
+ <procedure>\r
+ <step>\r
+ <para>Click on <guilabel>Templates</guilabel> in the <guilabel>My Folders section</guilabel>. </para>\r
+ </step>\r
+\r
+ <step>\r
+ <para>Name the folder. Select <guimenuitem>Share</guimenuitem> or\r
+ <guimenuitem>Do not share</guimenuitem> from the dropdown menu.</para>\r
+ </step>\r
+\r
+ <step>\r
+ <para>If you want to share your folder, select who you want to share this folder\r
+ with from the dropdown menu. </para>\r
+ </step>\r
+\r
+ <step>\r
+ \r
+ <para>Click <guibutton>Create Sub Folder</guibutton>. </para>\r
+ </step>\r
+ <step>\r
+ <para>Click <guibutton>OK</guibutton>.</para>\r
+ </step>\r
+\r
+ <step>\r
+ <para>Next, create a folder for the report definition to be saved to. Click on\r
+ <guilabel>Reports</guilabel>.</para>\r
+ </step>\r
+ <step>\r
+ <para>Repeat steps 2-5 to create a <guilabel>Reports</guilabel> folder also called <guilabel>Circulation</guilabel>. </para>\r
+ </step>\r
+ <step>\r
+ \r
+ <para>Finally, you need to create a folder for the report’s output to be saved\r
+ in. Click on <guilabel> Output</guilabel>.</para>\r
+ </step>\r
+ <step>\r
+ <para>Repeat steps 2-5 to create an <guilabel>Output</guilabel> folder named <guilabel>Circulation</guilabel>.</para>\r
+ </step>\r
+ </procedure>\r
+ <tip>\r
+ <para>Using a parallel naming scheme for folders in <guilabel>Templates</guilabel>, <guilabel>Reports</guilabel>, and <guilabel>Output</guilabel> helps keep your reports organized and easier to find</para>\r
+ </tip>\r
+ <para>The folders you just created will now be visible by clicking the arrows in\r
+ <guilabel>My Folders</guilabel>. Bracketed after the folder name is whom the\r
+ folder is shared with. For example, <guilabel>Circulation (BNCLF)</guilabel>\r
+ is shared with the North Coast Library Federation.\r
+ If it is not a shared folder there will be nothing after the folder name. You may create as many folders and sub-folders as you like.</para>\r
+ </section>\r
+ <section xml:id="report-managing-folder">\r
+ <info>\r
+ <title>Managing Folders</title>\r
+ </info>\r
+ <para>Once a folder has been created you can change the name, delete it, create a new\r
+ subfolder, or change the sharing settings. This example demonstrates changing a folder name; the\r
+ other choices follow similar steps</para>\r
+ <procedure>\r
+ <step>\r
+ <para>Click on the folder that you wish to rename.</para>\r
+ </step>\r
+\r
+ <step>\r
+ <para>Click <guilabel>Manage Folder</guilabel>. </para>\r
+ </step>\r
+ <step>\r
+ <para>Select <guimenuitem>Change folder name</guimenuitem> from the dropdown menu\r
+ and click <guibutton>Go</guibutton>. </para>\r
+ </step>\r
+\r
+ <step>\r
+ <para>Enter the new name and click <guibutton>Submit</guibutton></para>\r
+ </step>\r
+\r
+ <step>\r
+ <para>Click <guibutton>OK</guibutton>. </para>\r
+ </step>\r
+\r
+ <step>\r
+ <para>You will get a confirmation box that the Action Succeeded. Click\r
+ <guibutton>OK</guibutton>.</para>\r
+ </step>\r
+ </procedure>\r
+ </section>\r
+</chapter>\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<chapter xml:id="generate-report" xreflabel="Generating Reports from Templates"\r
+ xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="EN"\r
+ xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink">\r
+\r
+ <info>\r
+\r
+ <title>Generating Reports from Templates</title>\r
+ </info>\r
+\r
+ <para>Now you are ready to run the report from the template you have created. </para>\r
+\r
+ \r
+ <procedure>\r
+\r
+ <step>\r
+ <informalfigure>\r
+ <para>In the <guilabel>My Folders</guilabel> section click the arrow next to\r
+ <guimenu>Templates </guimenu>to expand this folder and select\r
+ <guimenuitem>circulation</guimenuitem>.</para>\r
+\r
+ <para><mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/generate-report-1.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+ </informalfigure>\r
+ </step>\r
+\r
+ <step>\r
+ <informalfigure><para>Select the box beside <guilabel>Circulations by month for one\r
+ library</guilabel>. Select <guimenuitem>Create a new report from selected\r
+ template </guimenuitem>from the dropdown menu. Click\r
+ <guibutton>Submit</guibutton>. </para>\r
+\r
+\r
+\r
+ <para> <mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/generate-report-2.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para></informalfigure>\r
+ </step>\r
+ <step>\r
+ <informalfigure>\r
+ <para>Complete the first part of report settings. Only <guilabel>Report\r
+ Name</guilabel> <inlinemediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../../media/1.png"/>\r
+ </imageobject>\r
+ </inlinemediaobject> and <guilabel>Choose a folder...</guilabel> <inlinemediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../../media/6.png"/>\r
+ </imageobject>\r
+ </inlinemediaobject> are required\r
+ fields.</para>\r
+\r
+ <para><mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/generate-report-3.png"/>\r
+ </imageobject>\r
+ </mediaobject></para>\r
+ </informalfigure>\r
+\r
+ <para>\r
+ <inlinemediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../../media/1.png"/>\r
+ </imageobject>\r
+ </inlinemediaobject>\r
+ <guilabel>Template Name, Template Creator</guilabel>, and <guilabel>Template\r
+ Description</guilabel> are for informational purposes only. They are hard\r
+ coded when the template is created. At the report definition stage it is not\r
+ possible to change them.</para>\r
+\r
+\r
+ <para>\r
+ <inlinemediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../../media/2.png"/>\r
+ </imageobject>\r
+ </inlinemediaobject>\r
+ <guilabel>Report Name</guilabel> is required. Reports stored in the same folder\r
+ must have unique names.</para>\r
+\r
+\r
+ <para>\r
+ <inlinemediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../../media/3.png"/>\r
+ </imageobject>\r
+ </inlinemediaobject>\r
+ <guilabel>Report Description</guilabel> is optional but may help distinguish\r
+ among similar reports. </para>\r
+\r
+ <para>\r
+ <inlinemediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../../media/4.png"/>\r
+ </imageobject>\r
+ </inlinemediaobject>\r
+ <guilabel>Report Columns</guilabel> lists the columns that will appear in the\r
+ output. This is derived from the template and cannot be changed during report\r
+ definition.</para>\r
+\r
+ <para>\r
+ <inlinemediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../../media/5.png"/>\r
+ </imageobject>\r
+ </inlinemediaobject>\r
+ <guilabel>Pivot Label Column</guilabel> and <guilabel>Pivot Data\r
+ Column</guilabel> are optional. Pivot tables are a different way to view\r
+ data. If you currently use pivot tables in <application>MS Excel</application>\r
+ it is better to select an <application>Excel</application> output and continue\r
+ using pivot tables in <application> Excel</application>.</para>\r
+\r
+ <para>\r
+ <inlinemediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../../media/6.png"/>\r
+ </imageobject>\r
+ </inlinemediaobject> You must choose a report folder to store this report\r
+ definition. Only report folders under <guilabel>My Folders</guilabel> are\r
+ available. Click on the desired folder to select it.</para>\r
+\r
+ </step>\r
+ \r
+\r
+ <step>\r
+ <informalfigure>\r
+ <para>Select values for the <guilabel>Circulation > Check Out\r
+ Date/Time</guilabel>. Use the calendar widget or manually enter the\r
+ desired dates, then click <guibutton>Add</guibutton> to include the date on\r
+ the list. You may add multiple dates.</para>\r
+ <para>\r
+ <mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/generate-report-8.png"/>\r
+\r
+ </imageobject>\r
+ </mediaobject>\r
+ </para>\r
+ </informalfigure>\r
+ <para>The <guilabel>Transform</guilabel> for this field is <guilabel>Year +\r
+ Month</guilabel>, so even if you choose a specific date (2009-10-20) it will\r
+ appear as the corresponding month only (2009-10).</para>\r
+\r
+ <para>It is possible to select <emphasis role="bold">relative dates</emphasis>. If\r
+ you select a relative date <emphasis>1 month ago</emphasis> you can schedule\r
+ reports to automatically run each month. If you want to run monthly reports that\r
+ also show comparative data from one year ago, select a relative date <emphasis>1\r
+ month ago</emphasis>, and <emphasis>13 months ago</emphasis>. </para>\r
+\r
+ </step>\r
+\r
+\r
+\r
+ <step>\r
+ <para>Select a value for the <guilabel>Circulating Library</guilabel>.</para>\r
+ </step>\r
+\r
+ <step>\r
+ <informalfigure>\r
+ <para>Complete the bottom portion of the report definition interface, then click\r
+ <guibutton>Save</guibutton>.</para>\r
+\r
+ <para>\r
+ <mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/generate-report-10.png"/>\r
+ </imageobject>\r
+ </mediaobject>\r
+ </para>\r
+ </informalfigure>\r
+\r
+ <para>\r
+ <inlinemediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../../media/1.png"/>\r
+ </imageobject>\r
+ </inlinemediaobject> Select one or more output formats. In this example the\r
+ report output will be available as an <application>Excel</application>\r
+ spreadsheet, an HTML table (for display in the staff client or browser), and as\r
+ a bar chart.</para>\r
+\r
+\r
+ <para>\r
+ <inlinemediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../../media/2.png"/>\r
+ </imageobject>\r
+ </inlinemediaobject> If you want the report to be recurring, check the box and\r
+ select the <guilabel>Recurrence Interval</guilabel> as described in <link\r
+ linkend="recurring-report">Recurring Reports</link>. In this\r
+ example, as this is a report that will only be run once, the <guilabel>Recurring\r
+ Report</guilabel> box is not checked. </para>\r
+\r
+\r
+ <para>\r
+ <inlinemediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../../media/3.png"/>\r
+ </imageobject>\r
+ </inlinemediaobject> Select <guilabel>Run as soon as possible</guilabel> for\r
+ immediate output. It is also possible to set up reports that run automatically\r
+ at future intervals. </para>\r
+\r
+ <para>\r
+ <inlinemediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../../media/4.png"/>\r
+ </imageobject>\r
+ </inlinemediaobject> It is optional to fill out an email address where a\r
+ completion notice can be sent. The email will contain a link to\r
+ password-protected report output (staff login required). If you have an email\r
+ address in your Local System Administrator account it will automatically appear\r
+ in the email notification box. However, you can enter a different email address\r
+ or multiple addresses separated by commas.</para>\r
+\r
+ <para>\r
+ <inlinemediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../../media/5.png"/>\r
+ </imageobject>\r
+ </inlinemediaobject> Select a folder for the report's output.</para>\r
+\r
+ </step>\r
+\r
+\r
+\r
+\r
+\r
+\r
+ <step>\r
+ <informalfigure>\r
+ <para>You will get a confirmation dialogue box that the <guilabel>Action\r
+ Succeeded</guilabel>. Click <guibutton>OK</guibutton>. </para>\r
+\r
+ <para>\r
+ <mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/generate-report-14.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject>\r
+ </para>\r
+ </informalfigure>\r
+ </step>\r
+ </procedure>\r
+\r
+ <para>Once saved, reports stay there forever unless you delete them.</para>\r
+\r
+\r
+ \r
+\r
+\r
+ \r
+\r
+\r
+\r
+\r
+\r
+</chapter>\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<chapter xml:id="recurring-report" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="EN"\r
+ xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink">\r
+\r
+<info><title>Running Recurring Reports</title></info>\r
+\r
+\r
+ <para>Recurring reports are a useful way to save time by scheduling reports that you run on\r
+ a regular basis, such as monthly circulation and monthly patron registration\r
+ statistics. When you have set up a report to run on a monthly basis you’ll get an email\r
+ informing you that the report has successfully run. You can click on a link in the\r
+ email that will take you directly to the report output. You can also access\r
+ the output through the reporter interface as described in <xref linkend="view-output"\r
+ />.</para>\r
+ \r
+ <para>To set up a monthly recurring report follow the procedure in <xref\r
+ linkend="generate-report"/> but make the changes described below.</para>\r
+ <procedure>\r
+ \r
+ <step>\r
+ \r
+ <para>Select the <guilabel>Recurring Report</guilabel> check-box and set the\r
+ recurrence interval to 1 month.</para>\r
+ </step>\r
+ \r
+ <step>\r
+ \r
+ <para>Do not select <guilabel>Run ASAP</guilabel>. Instead schedule the report\r
+ to run early on the first day of the next month. Enter the date in\r
+ YYYY-MM-DD format. </para>\r
+ </step>\r
+ \r
+ <step>\r
+ <para>Ensure there is an email address to receive completion emails. You will\r
+ receive an email completion notice each month when the output is ready. </para>\r
+ \r
+ </step>\r
+ <step>\r
+ <para>Select a folder for the report’s output. </para>\r
+ </step>\r
+ \r
+ <step>\r
+ <para>Click <guibutton>Save Report</guibutton>.</para>\r
+ </step>\r
+ <step>\r
+ <para>You will get a confirmation dialogue box that the <guilabel>Action\r
+ Succeeded</guilabel>. Click <guibutton>OK</guibutton>. </para>\r
+ </step>\r
+ </procedure>\r
+ \r
+ <para> You will get an email on the 1st of each month with a link to the report\r
+ output. By clicking this link it will open the output in a web browser. It is\r
+ still possible to login to the staff client and access the output in\r
+ <guilabel>Output</guilabel> folder. </para>\r
+ \r
+ <formalpara>\r
+ <title>How to stop or make changes to an existing recurring report?</title>\r
+ <para>Sometimes you may wish to stop or make changes to a recurring report, e.g. the\r
+ recurrence interval, generation date, email address to receive completion email,\r
+ output format/folder or even filter values (such as the number of days overdue). You\r
+ will need to delete the current report from the report folder, then use the above\r
+ procedure to set up a new recurring report with the desired changes. Please note\r
+ that deleting a report also deletes all output associated with it.</para>\r
+ </formalpara>\r
+ <tip>\r
+ <para>Once you have been on Evergreen for a year, you could set up your recurring\r
+ monthly reports to show comparative data from one year ago. To do this select \r
+ relative dates of 1 month ago and 13 months ago. </para>\r
+ </tip>\r
+</chapter>\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<chapter xml:id="report-introduction" xmlns="http://docbook.org/ns/docbook" version="5.0"\r
+ xml:lang="EN" xmlns:xi="http://www.w3.org/2001/XInclude"\r
+ xmlns:xlink="http://www.w3.org/1999/xlink">\r
+ <info>\r
+ <title>Reports overview</title>\r
+ </info>\r
+ <para>The reports interface is accessed from the <guimenu>Admin (-)</guimenu> menu, under <menuchoice>\r
+ <guimenu>Local Administration</guimenu>\r
+ <guimenuitem>Reports</guimenuitem>\r
+ </menuchoice>.</para>\r
+ <para>Only users with Local System Administration permissions can create reports but the output\r
+ is visible to all staff accounts. Reports are owned by the account used to create them, though it is possible to share reports with other staff in your library, other libraries or the entire system or consortium. </para>\r
+\r
+ <para>Evergreen has very powerful reporting functionality. It is possible to report on almost\r
+ every field in every table in the database. The reporting interface tries to make\r
+ navigating the database structure easier by pointing at the main database tables.</para>\r
+\r
+ <para>These chapters demonstrate how to create reports in Evergreen by introducing the\r
+ basic concepts of the reporting function. Once you understand how to navigate around the\r
+ reports interface, you can create your own reports from scratch or take advantage of report templates.</para>\r
+\r
+ <para>There are four aspects to creating a report in Evergreen: building a template, choosing a\r
+ template, defining a report, and running a report to create output. Before anything else you must create at least one <guilabel>Template</guilabel>, <guilabel>Report</guilabel>, and\r
+ <guilabel>Output</guilabel> folder as described in <xref linkend="folder"/>. \r
+ \r
+ </para>\r
+\r
+</chapter>\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<chapter xml:id="shared-template" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="EN"\r
+ xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink">\r
+ <info>\r
+ <title>Cloning Shared Templates</title>\r
+ </info>\r
+ <para> This chapter describes how\r
+ to make local copies of shared templates for routine reports or as a starting point for\r
+ customization. When creating a new template it is a good idea to review the shared templates\r
+ first: even if the exact template you need does not exist it is often faster to modify an\r
+ existing template than to build a brand new one. A Local System Administrator account is\r
+ required to clone templates from the <guilabel>Shared Folders</guilabel> section and save them\r
+ to <guilabel>My Folders</guilabel>. </para>\r
+ <para>The steps below assume you have already created at least one <guilabel>Templates</guilabel>\r
+ folder. If you haven’t done this, please see <xref linkend="folder"/>. </para>\r
+\r
+ <procedure>\r
+ <step>\r
+ <para>Access the reports interface from the <guimenu>Admin (-)</guimenu> menu under <menuchoice>\r
+ <guimenu>Local Administration</guimenu>\r
+ <guimenuitem>Reports</guimenuitem>\r
+ </menuchoice></para>\r
+ </step>\r
+\r
+ <step>\r
+ <para>Under <guilabel>Shared Folders</guilabel> expand the\r
+ <guilabel>Templates</guilabel> folder and the subfolder of the report you wish to clone. To expand the folders click on\r
+ the grey arrow or folder icon. Do not click on the blue underlined hyperlink. </para>\r
+ </step>\r
+ <step>\r
+ <para>Click on the subfolder.</para>\r
+</step>\r
+ <step>\r
+ <informalfigure>\r
+ <para>Select the template you wish to clone. From the\r
+ dropdown menu choose <guimenuitem>Clone selected templates</guimenuitem>, then click\r
+ <guibutton>Submit</guibutton>. </para>\r
+\r
+ <para>\r
+ <mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/shared-template-6.png"/>\r
+ </imageobject>\r
+ </mediaobject>\r
+ </para>\r
+ </informalfigure>\r
+ <para>By default Evergreen only displays the first 10 items in any folder. To view all content, change the <guilabel>Limit output</guilabel> setting from <guimenuitem>10</guimenuitem> to <guimenuitem>All</guimenuitem>.</para> \r
+ </step>\r
+ <step>\r
+ <informalfigure>\r
+ <para>Choose the folder where you want to save the cloned template, then click\r
+ <guibutton>Select Folder</guibutton>. Only template folders created with your\r
+ account will be visible. If there are no folders to choose from please see <xref\r
+ linkend="folder"/>.</para>\r
+\r
+ <para>\r
+ <mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/shared-template-7.png"/>\r
+ </imageobject>\r
+ </mediaobject>\r
+ </para>\r
+ </informalfigure>\r
+ </step>\r
+\r
+\r
+ <step>\r
+ <informalfigure>\r
+ <para>The cloned template opens in the template editor. From here you may modify the\r
+ template by adding, removing, or editing fields and filters as described in <xref\r
+ linkend="create-template"/>. Template <guilabel>Name</guilabel> and\r
+ <guilabel>Description</guilabel> can also be edited. When satisfied with your\r
+ changes click <guibutton>Save</guibutton>.</para>\r
+\r
+ <para>\r
+ <mediaobject>\r
+ <imageobject>\r
+ <imagedata width="100%" scalefit="1" fileref="../media/shared-template-9.png"/>\r
+ </imageobject>\r
+ </mediaobject>\r
+ </para>\r
+ </informalfigure>\r
+ </step>\r
+ <step> \r
+ <para>Click OK in the resulting confirmation windows.</para> \r
+ </step>\r
+ </procedure>\r
+ <para>Once saved it is not possible to edit a template. To make changes, clone a template and change the clone.\r
+ </para>\r
+\r
+</chapter>\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<chapter xml:id="report_starting_reporter_service" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="EN"\r
+ xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink">\r
+ <info>\r
+ <title>Starting and Stopping the Reporter Daemon</title>\r
+ </info>\r
+ <para>Before you can view reports, the Evergreen administrator must start the reporter daemon from the command line of the Evergreen server.</para>\r
+ <para>The reporter daemon periodically checks for requests for new reports or scheduled reports and gets them running.</para>\r
+ \r
+ <simplesect xml:id="startingreporter">\r
+ <title>Starting the Reporter Daemon</title>\r
+ <para>To start the reporter daemon, run the following command as the opensrf user:</para>\r
+ <screen>clark-kent.pl --daemon</screen>\r
+ <para>You can also specify other options:</para>\r
+ <itemizedlist>\r
+ <listitem>sleep=interval : number of seconds to sleep between checks for new reports to run; defaults to 10</listitem>\r
+ <listitem>lockfile=filename : where to place the lockfile for the process; defaults to /tmp/reporter-LOCK</listitem>\r
+ <listitem>concurrency=integer : number of reporter daemon processes to run; defaults to 1</listitem> \r
+ <listitem>boostrap=filename : OpenSRF bootstrap configuration file; defaults to /openils/conf/opensrf_core.xml</listitem> \r
+ </itemizedlist>\r
+ <note>\r
+ <para>The open-ils.reporter process must be running and enabled on the gateway before the reporter daemon can be started.</para>\r
+ <para>Remember that if the server is restarted, the reporter daemon will need to be restarted before you can view reports unless you have configured your server to start the daemon \r
+ automatically at start up time.</para></note>\r
+ </simplesect>\r
+ <simplesect xml:id="stoppingreporter">\r
+ <title>Stopping the Reporter Daemon</title>\r
+ <para>To stop the reporter daemon, you have to kill the process and remove the lockfile. Assuming you're running just a single process and that the lockfile is \r
+ in the default location, perform the following commands as the opensrf user:</para>\r
+ <screen>kill `ps wax | grep "Clark Kent" | grep -v grep | cut -b1-6`</screen>\r
+ <screen>rm /tmp/reporter-LOCK</screen>\r
+ </simplesect>\r
+</chapter>\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<chapter xml:id="template-terminology" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="EN"\r
+ xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink">\r
+ <info>\r
+ <title>Template Terminology</title>\r
+ </info>\r
+ <para> </para> \r
+ <simplesect xml:id="create-template-datatypes">\r
+ <info>\r
+ <title>Data Types</title>\r
+ </info> \r
+ <informalfigure> <para>The central column of the <guilabel>Database Source Browser</guilabel> lists\r
+ <guilabel>Field Name</guilabel> and <guilabel>Data Type</guilabel> for the\r
+ selected database table. </para>\r
+ <para><mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-33.png"/>\r
+ </imageobject> \r
+ </mediaobject></para> \r
+ </informalfigure>\r
+ <para>Each data type has its own characteristics and uses:</para>\r
+ <informaltable>\r
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">\r
+ <colspec colnum="1" colname="type" colwidth="1.0*"/>\r
+ <colspec colnum="2" colname="description" colwidth="1.0*"/>\r
+ <colspec colnum="3" colname="notes" colwidth="2.0*"/>\r
+ <thead>\r
+ <row>\r
+ <entry>Data Type</entry>\r
+ <entry>Description</entry>\r
+ <entry>Notes</entry>\r
+ </row>\r
+ </thead>\r
+ <tbody>\r
+ <row>\r
+ <entry>id</entry>\r
+ <entry>Unique number assigned by the database to identify a\r
+ record</entry>\r
+ <entry>A number that is a meaningful reference for the database but not of much use to a human user. Use in <guilabel>displayed fields</guilabel> when counting\r
+ records or in filters.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>text</entry>\r
+ <entry>Text field</entry>\r
+ <entry>Usually uses the <guilabel>Raw Data</guilabel> transform.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>timestamp</entry>\r
+ <entry>Exact date and time</entry>\r
+ <entry>Select appropriate date/time transform. <guilabel>Raw\r
+ Data</guilabel> includes second and timezone information, usually more than is required for a report.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>bool</entry>\r
+ <entry>True or False</entry>\r
+ <entry>Commonly used to filter out deleted item or patron records.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>org_unit</entry>\r
+ <entry>A number representing a library, library system, or\r
+ federation</entry>\r
+ <entry>When you want to filter on a library, make sure that the field\r
+ name is on an <guilabel>org_unit</guilabel> or <guilabel>id</guilabel> data type.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>link</entry>\r
+ <entry>A link to another database table</entry>\r
+ <entry><guilabel>Link</guilabel> outputs a number that is a meaningful\r
+ reference for the database but not of much use to a human user. You\r
+ will usually want to drill further down the tree in the\r
+ <guilabel>Sources</guilabel> pane and select fields from the\r
+ linked table. However, in some instances you might\r
+ want to use a <guilabel>link</guilabel> field. For example, to count the number of patrons who borrowed items you could do\r
+ a count on the <guilabel>Patron</guilabel> <guilabel>link</guilabel> data.</entry>\r
+ </row>\r
+ <row>\r
+ <entry>int</entry>\r
+ <entry>Integer</entry>\r
+ <entry/>\r
+ </row>\r
+ <row>\r
+ <entry>money</entry>\r
+ <entry>Number (in dollars)</entry>\r
+ <entry/>\r
+ </row>\r
+ </tbody>\r
+ </tgroup>\r
+ </informaltable>\r
+ </simplesect>\r
+ <simplesect xml:id="create-template-transforms">\r
+ <info>\r
+ <title>Field Transforms</title>\r
+ </info>\r
+ <informalfigure> <para>A <guilabel>Field Transform</guilabel> tells the reporter how to process a field\r
+ for output. Different data types have different transform options. </para>\r
+ <para> <mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-34.png"/>\r
+ </imageobject>\r
+ </mediaobject></para></informalfigure>\r
+ \r
+ \r
+ <formalpara><title>Raw Data</title><para> To display a field exactly as it appears in\r
+ the database use the <guilabel>Raw Data</guilabel> transform, available for all data\r
+ types.</para></formalpara>\r
+ \r
+ <formalpara><title><guilabel>Count</guilabel> and <guilabel>Count Distinct</guilabel></title><para> These transforms\r
+ apply to the <guilabel>id</guilabel> data type and are used to count database\r
+ records (e.g. for circulation statistics). Use <guimenuitem>Count</guimenuitem> to\r
+ tally the total number of records. Use <guilabel>Count Distinct</guilabel> to count\r
+ the number of unique records, removing duplicates. </para></formalpara>\r
+ <para>To demonstrate the difference between <guilabel>Count</guilabel> and\r
+ <guilabel>Count Distinct</guilabel>, consider an example where you want to know\r
+ the number of active patrons in a given month, where <emphasis>active</emphasis>\r
+ means they borrowed at least one item. Each circulation is linked to a Patron ID, a\r
+ number identifying the patron who borrowed the item. If we use the <guilabel>Count\r
+ Distinct</guilabel> transform for Patron IDs we will know the number of unique\r
+ patrons who circulated at least one book (2 patrons in the table below). If instead,\r
+ we use <guilabel>Count</guilabel>, we will know how many books were circulated,\r
+ since every circulation is linked to a patron ID and duplicate values are also\r
+ counted. To identify the number of active patrons in this example the\r
+ <guilabel>Count Distinct</guilabel> transform should be used.</para>\r
+ \r
+ <informaltable>\r
+ \r
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">\r
+ <colspec colnum="1" colname="title" colwidth="2.0*"/>\r
+ <colspec colnum="2" colname="id" colwidth="1.0*"/>\r
+ <colspec colnum="3" colname="name" colwidth="1.0*"/>\r
+ \r
+ <thead>\r
+ <row>\r
+ <entry>Title</entry>\r
+ <entry> Patron ID</entry>\r
+ <entry> Patron Name</entry>\r
+ </row>\r
+ </thead>\r
+ <tbody>\r
+ <row>\r
+ <entry> Harry Potter and the Chamber of Secrets</entry>\r
+ <entry> 001</entry>\r
+ <entry> John Doe</entry>\r
+ </row>\r
+ \r
+ <row>\r
+ <entry> Northern Lights</entry>\r
+ <entry> 001</entry>\r
+ <entry> John Doe</entry>\r
+ </row>\r
+ <row>\r
+ <entry> Harry Potter and the Philosopher’s Stone</entry>\r
+ <entry> 222</entry>\r
+ <entry> Jane Doe</entry>\r
+ </row>\r
+ \r
+ </tbody>\r
+ </tgroup>\r
+ </informaltable> \r
+ <informalfigure>\r
+ <formalpara><title>Output Type</title><para> Note that each transform has either an <guilabel>Aggregate</guilabel> or\r
+ <guilabel>Non-Aggregate</guilabel> output type. </para></formalpara>\r
+ \r
+ <para> <mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/create-template-35.png"/>\r
+ </imageobject>\r
+ </mediaobject></para>\r
+ </informalfigure>\r
+ <para> Selecting a <guilabel>Non-Aggregate</guilabel> output type will return one row of\r
+ output in your report for each row in the database. Selecting an\r
+ <guilabel>Aggregate</guilabel> output type will group together several rows of\r
+ the database and return just one row of output with, say, the average value or the\r
+ total count for that group. Other common aggregate types include minimum, maximum,\r
+ and sum. </para>\r
+ <para>When used as filters, non-aggregate and aggregate types correspond to <guilabel>Base</guilabel> and <guilabel>Aggregate</guilabel> filters respectively. To see the difference between a base filter and an aggregate filter, imagine that\r
+ you are creating a report to count the number of circulations in January. This would\r
+ require a base filter to specify the month of interest because the month is a\r
+ non-aggregate output type. Now imagine that you wish to list all items with more\r
+ than 25 holds. This would require an aggregate filter on the number of holds per\r
+ item because you must use an aggregate output type to count the holds.</para> \r
+ </simplesect> \r
+</chapter>\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<chapter xml:id="view-output" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="EN"\r
+ xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink">\r
+\r
+ <info>\r
+\r
+ <title>Viewing Report Output</title>\r
+ </info>\r
+\r
+ <para>When a report runs Evergreen sends an email with a link to the output to the address\r
+ defined in the report. Output is also stored in the specified <guilabel>Output</guilabel>\r
+ folder and will remain there until manually deleted.</para>\r
+\r
+ <procedure>\r
+\r
+ <step>\r
+ <para>To view report output in the staff client, open the reports interface from <menuchoice>\r
+ <guimenu>Admin (-)</guimenu>\r
+ <guisubmenu>Local Administration</guisubmenu>\r
+ <guimenuitem>Reports</guimenuitem>\r
+ </menuchoice></para>\r
+ </step>\r
+ <step>\r
+ <informalfigure>\r
+ <para>Click on <guimenu>Output</guimenu> to expand the folder. Select\r
+ <guimenuitem>Circulation</guimenuitem> (where you just saved the\r
+ <emphasis>circulation report output</emphasis>). </para>\r
+\r
+ <para>\r
+ <mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/view-output-1.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject>\r
+ </para>\r
+ </informalfigure>\r
+ </step>\r
+\r
+ <step>\r
+ <para><guimenuitem>View report output</guimenuitem> is the default selection in the\r
+ dropdown menu. Select <guilabel>Recurring Monthly Circ by Location</guilabel> by\r
+ clicking the checkbox and click <guibutton>Submit</guibutton>. </para>\r
+\r
+\r
+\r
+ <para>\r
+ <mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/view-output-2.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject>\r
+ </para>\r
+ </step>\r
+ <step>\r
+ <para>A new tab will open for the report output. Select either <guilabel>Tabular\r
+ Output</guilabel> or <guilabel>Excel Output</guilabel>. If <guilabel>Bar\r
+ Charts</guilabel> was selected during report definition the chart will also\r
+ appear.</para> \r
+ </step>\r
+\r
+ <step>\r
+ <para> Tabular output looks like this: </para>\r
+\r
+\r
+\r
+ <para><mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/view-output-4.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject></para>\r
+ </step>\r
+\r
+\r
+ <step>\r
+ <informalfigure>\r
+ <para>If you want to manipulate, filter or graph this data, Excel output would be\r
+ more useful. Excel output looks like this in Excel: </para>\r
+ <para>\r
+ <mediaobject>\r
+ <imageobject>\r
+ <imagedata scalefit="0" fileref="../media/view-output-5.png"/>\r
+ </imageobject>\r
+\r
+ </mediaobject>\r
+ </para>\r
+ </informalfigure>\r
+ </step>\r
+ </procedure>\r
+\r
+\r
+\r
+</chapter>\r