Final QuickApp code

A QuickApp consists of a single <dynamic> tag that contains one or more <widget> and <layout> tags and other Macro Language elements.

To run the final version of the QuickApp, paste the following Macro Language code into the Edit Actions (XML) dialog, click Apply, and then click View > Show QuickApp.

<defblock name="sales_by_date" prod_table="" department="" group_by="">
  <link table2="{@prod_table}" col="sku" col2="sku" 
   suffix="_prod" type="select">
    <sel value="dept={@department}"/>
  </link>
  <tabu label="Tabulation on Sales Detail" breaks="{@group_by}">
    <tcol source="xsales" fun="sum" name="tot_sales" 
     label="Sum of`Extended Sales" format="type:currency"/>
  </tabu>
  <sort col="tot_sales" dir="down"/>
  <sel value="({@group_by} <> '')"/>
</defblock>
<dynamic selection="19" product_master="pub.doc.retail.product" 
 sales_detail="pub.doc.retail.salesdetail" aggregate_by="groupdesc_prod"
 mode_="auto" display_chart="1" clicked_value="" list_title="PRODUCT LIST"
 list_selection="" startdate="20140101" enddate="20140131"
 item_title="SALES OVER TIME">
  <do onchange_="@aggregate_by,@selection">
    <set clicked_value=""/>
    <set list_selection=""/>
  </do>
  <do onchange_="@clicked_value">
    <set list_title="{@clicked_value} PRODUCT LIST"/>
    <set list_selection=""/>
  </do>
  <do onchange_="@list_selection" base_="{@product_master}" 
   value_="@item_title" row_="1" col_="1"
   when_="{@list_selection <> ''}">
    <sel value="sku={@list_selection}"/>
    <colord cols="description"/>
  </do>
  <layout type_="splitter" width_="100%" height_="100%" arrange_="h">
    <layout background_="lightblue" border_="10" width_="20%">
      <widget class_="dropdown" base_="{@product_master}" 
       inputwidth_="250" value_="@selection"
       label_="Department:" labelwidth_="75">
        <tabu label="Tabulation on Product Master" breaks="deptdesc">
          <break col="deptdesc" sort="up"/>
          <tcol source="dept" name="dept" fun="first" 
           label="First`Department"/>
        </tabu>
        <colord cols="dept,deptdesc"/>
      </widget>
      <widget class_="dropdown" value_="@aggregate_by" 
       label_="Aggregate by:" labelwidth_="75" inputwidth_="250">
        <table>groupdesc_prod,Group;brand_prod,Brand
        </table>
      </widget>
      <widget class_="checkbox" label_="Display Chart" 
       value_="@display_chart"/>
      <widget class_="button" text_="Run" type_="submit"/>
      <ignore>
        <widget class_="text" text_="Current selection: {@selection}"/>
      </ignore>
    </layout>
    <layout width_="80%">
      <layout>
        <widget class_="grid" base_="{@sales_detail}" 
         insert_="sales_by_date" prod_table="{@product_master}" 
         department="{@selection}" group_by="{@aggregate_by}"
         invmsg_="Click Run for changes to take effect"
         holdfor_="@aggregate_by,@selection"
         clickable_="{@aggregate_by}" value_="@clicked_value"/>
        <widget class_="graphics" base_="{@sales_detail}" width_="800"
         insert_="sales_by_date" prod_table="{@product_master}" 
         department="{@selection}" group_by="{@aggregate_by}"
         invmsg_="Click Run for changes to take effect"
         visible_="{@display_chart}" holdfor_="@aggregate_by,@selection">
          <graphspec>
            <chart type="bar">
              <data x="{@aggregate_by}" y="tot_sales"/>
              <ticks xrot="45"/>
              <style xaxissize="10" yaxissize="10"/>
            </chart>
          </graphspec>
        </widget>
      </layout>
      <layout>
        <widget class_="list" base_="{@product_master}" 
         width_="500" maxheight_="600"
         require_="{@clicked_value <> ''}" invmode_="hide"
         label_="{@list_title}" value_="@list_selection">
          <if test="{@aggregate_by = 'brand_prod'}">
            <then>
              <sel value="(brand='{@clicked_value}')"/>
            </then>
            <else>
              <sel value="(groupdesc='{@clicked_value}')"/>
            </else>
          </if>
          <colord cols="sku,description"/>
          <sort col="description" dir="up"/>
        </widget>
        <widget class_="graphics" base_="{@sales_detail}" 
         width_="800" height_="400" invmode_="hide"
         require_="{@list_selection <> ''}" >
          <if test="{@list_selection <> ''}">
            <sel value="between(trans_date;{@startdate};{@enddate})"/>
            <sel value="(sku={@list_selection})"/>
            <tabu label="Tabulation on Sales Detail" 
             breaks="trans_date,sku">
              <tcol source="xsales" fun="sum" name="tot_sales_by_date" 
               label="Sum of`Extended`Sales" format="type:currency"/>
            </tabu>
            <willbe name="date" value="trans_date" format="type:date4y"/>
            <graphspec>
              <chart type="line" title="{@item_title}">
                <axes xlabel="Date"/>
                <data x="date" y="tot_sales_by_date"/>
                <ticks xrot="45"/>
                <style xaxissize="10" yaxissize="10"/>
              </chart>
            </graphspec>
          </if>
        </widget>
      </layout>
    </layout>
  </layout>
</dynamic>