source: trunk/grails-app/views/inventoryItemDetailed/search.gsp @ 566

Last change on this file since 566 was 566, checked in by gav, 14 years ago

Improvements to inventory text search, add inventoryGroup and hide Limit Search unless one of the values is true.

File size: 18.1 KB
Line 
1
2
3<html>
4    <head>
5        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
6        <meta name="layout" content="main" />
7        <title>InventoryItem Search</title>
8        <nav:resources override="true"/>
9        <g:render template="/shared/pictureHead" />
10        <filterpane:includes />
11        <export:resource />
12    </head>
13    <body>
14        <div class="nav">
15            <nav:renderSubItems group="nav"/>
16        </div>
17        <div class="body">
18            <g:render template="/shared/messages" />
19            <filterpane:currentCriteria domainBean="InventoryItem"
20                                    action="search"
21                                    dateFormat="EEE, dd-MMM-yyyy"
22                                    removeImgDir="images"
23                                    removeImgFile="bullet_delete.png"
24                                    title="Advanced Search"/>
25
26            <div class="paginateButtons">
27                <span class="searchButtons">
28                    <a href='' onclick="showElement('searchPane'); return false;">Quick</a>
29                </span>
30                Results: ${inventoryItemInstanceList.size()} / ${inventoryItemInstanceTotal}
31                <span class="searchButtons">
32                    <filterpane:filterButton text="Advanced" appliedText="Advanced" />
33                </span>
34            </div>
35
36            <jsUtil:toggleControl toggleId="options"
37                                                    imageId="optionsImg"
38                                                    closedImgUrl="${resource(dir:'images/skin',file:'bullet_arrow_right.png')}"
39                                                    openImgUrl="${resource(dir:'images/skin',file:'bullet_arrow_down.png')}"
40                                                    text="${g.message(code: 'default.options.text')}"
41                                                    />
42
43            <div id="options" style="display:none;">
44                <g:form method="post" >
45                    <g:hiddenField name="params" value="${filterParams}" />
46                    <div class="dialog">
47                        <table>
48                            <tbody>
49
50                                <tr class="prop">
51                                    <td valign="top" class="name">
52                                        <label for="max">Results per page:</label>
53                                    </td>
54                                    <td valign="top" class="value">
55                                        <input type="text" maxlength="4" id="description" name="newMax" value="${params.max}"/>
56
57                                        <span class="buttons">
58                                            <g:actionSubmit action="setSearchParamsMax" class="go" value="Update" />
59                                        </span>
60                                    </td>
61                                </tr>
62
63                                <tr class="prop">
64                                    <td valign="top" class="name">
65                                        <label for="max">Inventory:</label>
66                                    </td>
67                                    <td valign="top" class="value">
68                                        <g:link action="exportInventory">
69                                            Export
70                                        </g:link>
71                                        /
72                                        <g:link action="exportInventoryTemplate">
73                                            Template
74                                        </g:link>
75                                        /
76                                        <g:link action="exportInventoryExample">
77                                            Example
78                                        </g:link>
79                                        /
80                                        <g:link action="importInventory">
81                                            Import Inventory
82                                        </g:link>
83                                        /
84                                        <g:link action="importInventoryItemPurchases">
85                                            Import Purchases
86                                        </g:link>
87                                    </td>
88                                </tr>
89
90                            </tbody>
91                        </table>
92                    </div>
93                </g:form>
94                <export:formats  params="${filterParams}" formats="['csv', 'excel', 'pdf', 'rtf']"/>
95            </div>
96
97            <br />
98
99            <g:if test="${inventoryItemInstanceList.size() > 10}">
100                <g:if test="${inventoryItemInstanceTotal > inventoryItemInstanceList.size()}">
101                    <div class="paginateButtons">
102                        <g:paginate total="${inventoryItemInstanceTotal}" params="${filterParams}" />
103                    </div>
104                </g:if>
105            </g:if>
106
107            <g:if test="${inventoryItemInstanceList.size() > 0}">
108                <div class="list">
109                    <table>
110                        <thead>
111                            <tr>
112
113                                <th>Picture</th>
114                           
115                                <g:sortableColumn property="name" title="Name" params="${filterParams}" />
116                           
117                                <g:sortableColumn property="description" title="Description" params="${filterParams}" />
118                           
119                                <g:sortableColumn property="inventoryGroup" title="Group" params="${filterParams}" />
120                           
121                                <g:sortableColumn property="unitsInStock" title="In Stock" params="${filterParams}" />
122                               
123                                <th>Unit</th>
124
125                                <th></th>
126                           
127                            </tr>
128                        </thead>
129                        <tbody>
130                        <g:each in="${inventoryItemInstanceList}" status="i" var="inventoryItemInstance">
131                            <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}" />
132
133                                <td class='notClickable'>
134                                    <g:if test="${inventoryItemInstance.picture}" >
135                                        <wa:pictureLightboxAnchor picture="${inventoryItemInstance.picture}"
136                                                                                            size="${Image.Small}"
137                                                                                            lightboxSize="${Image.Large}"
138                                                                                            target="_blank"
139                                                                                            title="Show Original" />
140                                    </g:if>
141                                </td>
142                           
143                                <td onclick='window.location = "${request.getContextPath()}/inventoryItemDetailed/show/${inventoryItemInstance.id}"' >
144                                    ${fieldValue(bean:inventoryItemInstance, field:'name')}
145                                </td>
146                           
147                                <td onclick='window.location = "${request.getContextPath()}/inventoryItemDetailed/show/${inventoryItemInstance.id}"' >
148                                    ${fieldValue(bean:inventoryItemInstance, field:'description')}
149                                </td>
150                           
151                                <td onclick='window.location = "${request.getContextPath()}/inventoryItemDetailed/show/${inventoryItemInstance.id}"' >
152                                    ${fieldValue(bean:inventoryItemInstance, field:'inventoryGroup')}
153                                </td>
154                           
155                                <td onclick='window.location = "${request.getContextPath()}/inventoryItemDetailed/show/${inventoryItemInstance.id}"' >
156                                    ${fieldValue(bean:inventoryItemInstance, field:'unitsInStock')}
157                                </td>
158                           
159                                <td onclick='window.location = "${request.getContextPath()}/inventoryItemDetailed/show/${inventoryItemInstance.id}"' >
160                                    ${fieldValue(bean:inventoryItemInstance, field:'unitOfMeasure')}
161                                </td>
162
163                                <td class="notClickable">
164                                    <g:link action="show" id="${inventoryItemInstance.id}">
165                                        <img  src="${resource(dir:'images/skin',file:'database_go.png')}" alt="Show" />
166                                    </g:link>
167                                </td>
168                           
169                            </tr>
170                        </g:each>
171                        </tbody>
172                    </table>
173                </div>
174            </g:if>
175            <div class="paginateButtons">
176                <g:paginate total="${inventoryItemInstanceTotal}" params="${filterParams}" />
177            </div>
178
179            <filterpane:filterPane domainBean="InventoryItem"
180                                    title="Advanced Search"
181                                    action="search"
182                                    class="overlayPane"
183                                    excludeProperties="estimatedUnitPriceCurrency,
184                                                                    averageDeliveryTime"
185                                    associatedProperties="inventoryLocation.name,
186                                                                            spareFor.name,
187                                                                            preferredManufacturer.name,
188                                                                            preferredSupplier.name"
189                                    filterPropertyValues="${['inventoryLocation.name':[values: associatedPropertyValues.inventoryLocationList],
190                                                                                'spareFor.name':[values: associatedPropertyValues.assetList],
191                                                                                'preferredManufacturer.name':[values: associatedPropertyValues.manufacturerList],
192                                                                                'preferredSupplier.name':[values: associatedPropertyValues.supplierList]
193                                                                                ]}"/>
194        </div> <!-- end body div -->
195
196        <!-- Start Search Pane -->
197        <div class="overlayPane" id="searchPane" style="display:none;">
198            <h2>Quick Search</h2>
199
200            <g:form method="post" id="searchForm" name="searchForm" >
201                <g:hiddenField name="newTextSearch" value="true" />
202
203                <table>
204                    <tbody>
205
206                        <tr class="prop">
207                            <td valign="top" class="name">
208                                <label>Inventory:</label>
209                            </td>
210                            <td valign="top" class="value">
211                                <g:link controller="inventoryItemDetailed"
212                                                action="search"
213                                                params="[quickSearch: 'all']">
214                                                <g:message code="default.all.text" />
215                                </g:link>
216                                <br />
217                                <g:link controller="inventoryItemDetailed"
218                                                action="search"
219                                                params="[quickSearch: 'inventoryBelowReorder']">
220                                                <g:message code="inventoryItem.search.text.below.reorder" />
221                                </g:link> - <g:message code="inventoryItem.search.text.below.reorder.description" />
222                                <br />
223                                <g:link controller="inventoryItemDetailed"
224                                                action="search"
225                                                params="[quickSearch: 'inventoryBelowReorderAll']">
226                                                <g:message code="inventoryItem.search.text.below.reorder.all" />
227                                </g:link> - <g:message code="inventoryItem.search.text.below.reorder.all.description" />
228                                <br />
229                                <g:link controller="inventoryItemDetailed"
230                                                action="search"
231                                                params="[quickSearch: 'recentlyUsed', daysBack: '14']">
232                                                <g:message code="inventoryItem.search.text.recently.used" />
233                                </g:link> - <g:message code="inventoryItem.search.text.recently.used.description" args="[14]"/>
234                                <br />
235                                <g:link controller="inventoryItemDetailed"
236                                                action="search"
237                                                params="[quickSearch: 'recentlyUsed', daysBack: '30']">
238                                                <g:message code="inventoryItem.search.text.recently.used" />
239                                </g:link> - <g:message code="inventoryItem.search.text.recently.used.description" args="[30]"/>
240                            </td>
241                        </tr>
242
243                        <tr class="prop">
244                            <td valign="top" class="name">
245                                <label>Links:</label>
246                            </td>
247                            <td valign="top" class="value">
248                                <g:link controller="inventoryItemPurchaseDetailed"
249                                                action="search">
250                                                Purchases
251                                </g:link>
252                            </td>
253                        </tr>
254
255                    </tbody>
256                </table>
257
258                <table>
259                    <tbody>
260
261                        <tr class="prop">
262                            <td valign="top" class="name">
263                                <label for="searchText">Search:</label>
264                            </td>
265                            <td valign="top" class="value">
266                                <input type="text" style="width:450px" maxlength="75" id="searchText" name="searchText" value="${filterParams.searchText}"/>
267                                <g:helpBalloon code="inventoryItem.search.searchText" />
268                            </td>
269                        </tr>
270
271                        <tr class="prop">
272                            <td valign="top" class="name">
273
274                                <jsUtil:toggleControl toggleId="limitSearch"
275                                                                        imageId="limitSearchImg"
276                                                                        closedImgUrl="${resource(dir:'images/skin',file:'bullet_toggle_plus.png')}"
277                                                                        openImgUrl="${resource(dir:'images/skin',file:'bullet_toggle_minus.png')}"
278                                                                        effect="fade"
279                                                                        text="Limit Search"
280                                                                        />
281                            </td>
282                            <td valign="top" class="value">
283                                <g:if test="${params.searchName || params.searchDescription || params.searchComment || params.searchLocation || params.searchGroup || params.searchSpareFor}" >
284                                    <div id="limitSearch">
285                                </g:if>
286                                <g:else>
287                                    <div id="limitSearch" style="display:none;">
288                                </g:else>
289                                    <g:checkBox name="searchName" value="${params.searchName}" ></g:checkBox>
290                                    <label for="searchName">Name</label>
291                                    <g:checkBox name="searchDescription" value="${params.searchDescription}" ></g:checkBox>
292                                    <label for="searchDescription">Description</label>
293                                    <g:checkBox name="searchComment" value="${params.searchComment}" ></g:checkBox>
294                                    <label for="searchComment">Comment</label>
295                                    <g:checkBox name="searchLocation" value="${params.searchLocation}" ></g:checkBox>
296                                    <label for="searchLocation">Location</label>
297                                    <g:checkBox name="searchGroup" value="${params.searchGroup}" ></g:checkBox>
298                                    <label for="searchGroup">Group</label>
299                                    <br />
300                                    <g:checkBox name="searchSpareFor" value="${params.searchSpareFor}" ></g:checkBox>
301                                    <label for="searchSpareFor">Spare For (Asset: Name, Description and Comment).</label>
302                                </div>
303                            </td>
304                        </tr>
305
306                    </tbody>
307                </table>
308
309                <div class="buttons">
310                    <span class="button">
311                        <g:actionSubmit class="save" value="Update" action="search" />
312                        <g:actionSubmit class="cancel" value="${g.message(code:'fp.tag.filterPane.button.cancel.text', default:'Cancel')}" onclick="return hideElement('searchPane');" />
313                    </span>
314                </div>
315            </g:form>
316        </div> <!-- end search pane -->
317
318    </body>
319</html>
Note: See TracBrowser for help on using the repository browser.