Changeset 485 for trunk/grails-app


Ignore:
Timestamp:
Apr 13, 2010, 12:37:51 PM (15 years ago)
Author:
gav
Message:

Add inventory item quick search (items below reorder) and remember user's search in session.

Location:
trunk/grails-app
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/InventoryItemDetailedController.groovy

    r453 r485  
    11import org.codehaus.groovy.grails.plugins.springsecurity.Secured
    22import org.codehaus.groovy.grails.commons.ConfigurationHolder
     3import com.zeddware.grails.plugins.filterpane.FilterUtils
     4import org.springframework.web.servlet.support.RequestContextUtils as RCU
    35
    46@Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_InventoryManager'])
     
    911    def inventoryCsvService
    1012    def inventoryItemService
     13    def inventoryItemSearchService
    1114    def inventoryMovementService
    1215
     
    114117    }
    115118
     119    /**
     120    * Search for Inventory items.
     121    */
    116122    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_InventoryManager', 'ROLE_InventoryUser'])
    117123    def search = {
     
    120126            params.max = session.inventoryItemSearchParamsMax
    121127
    122         params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
     128        // Protect filterPane.
     129        params.max = Math.min( params.max ? params.max.toInteger() : 10,  1000)
    123130
    124131        def inventoryItemInstanceList = []
    125132        def inventoryItemInstanceTotal
    126         def filterParams = [:]
    127 
    128         // Quick Search:
    129         if(!params.filter) {
    130             inventoryItemInstanceList = InventoryItem.list( params )
    131             inventoryItemInstanceTotal = InventoryItem.count()
    132             filterParams = params
    133         }
    134         else {
    135         // filterPane:
     133        def filterParams = com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params)
     134        def isFilterApplied = FilterUtils.isFilterApplied(params)
     135
     136        // Restore search unless a new search is being requested.
     137        if(!params.quickSearch && !filterParams) {
     138            if(session.inventoryItemQuickSearch)
     139                params.quickSearch = session.inventoryItemQuickSearch
     140            else if(session.inventoryItemSearchFilterParams) {
     141                session.inventoryItemSearchFilterParams.each() { params[it.key] = it.value }
     142                params.filter = session.inventoryItemSearchFilter
     143                isFilterApplied = FilterUtils.isFilterApplied(params)
     144            }
     145        }
     146
     147        // Remember sort if supplied, otherwise try to restore.
     148        if(params.sort && params.order) {
     149             session.inventoryItemSearchSort = params.sort
     150             session.inventoryItemSearchOrder = params.order
     151        }
     152        else if(session.inventoryItemSearchSort && session.inventoryItemSearchOrder) {
     153            params.sort = session.inventoryItemSearchSort
     154            params.order = session.inventoryItemSearchOrder
     155        }
     156
     157        if(isFilterApplied) {
     158            // filterPane:
    136159            inventoryItemInstanceList = filterService.filter( params, InventoryItem )
    137160            inventoryItemInstanceTotal = filterService.count( params, InventoryItem )
    138161            filterParams = com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params)
     162            // Remember search.
     163            session.inventoryItemSearchFilterParams = new LinkedHashMap(filterParams)
     164            session.inventoryItemSearchFilter = new LinkedHashMap(params.filter)
     165            session.inventoryItemQuickSearch = null
     166        }
     167        else {
     168            // Quick Search:
     169            if(!params.quickSearch) params.quickSearch = "all"
     170            def result = inventoryItemSearchService.getQuickSearch(params, RCU.getLocale(request))
     171            inventoryItemInstanceList = result.inventoryItemList
     172            inventoryItemInstanceTotal = result.inventoryItemList.totalCount
     173            params.message = result.message
     174            filterParams.quickSearch = result.quickSearch
     175            // Remember search.
     176            session.inventoryItemSearchFilterParams = null
     177            session.inventoryItemSearchFilter = null
     178            session.inventoryItemQuickSearch = result.quickSearch
    139179        }
    140180
     
    145185                formatDate(format: "EEE, dd-MMM-yyyy", date: date)
    146186            }
    147             String title = "Inventory List."
     187
     188            String title
     189            if(params.quickSearch)
     190                title = params.message
     191            else
     192                title = "Filtered Inventory List."
    148193
    149194            response.contentType = ConfigurationHolder.config.grails.mime.types[params.format]
     
    152197                                "description",
    153198                                "unitsInStock",
     199                                "reorderPoint",
    154200                                "unitOfMeasure",
    155201                                "inventoryLocation",
     
    158204                                "description": "Description",
    159205                                "unitsInStock":"In Stock",
     206                                "reorderPoint":"Reorder Point",
    160207                                "unitOfMeasure": "UOM",
    161208                                "inventoryLocation": "Location",
     
    177224        filterParams.max = params.max
    178225        filterParams.offset = params.offset?.toInteger() ?: 0
    179         filterParams.sort = params.sort ?: "id"
    180         filterParams.order = params.order ?: "desc"
     226        filterParams.sort = params.sort ?: "name"
     227        filterParams.order = params.order ?: "asc"
    181228
    182229        return[ inventoryItemInstanceList: inventoryItemInstanceList,
    183230                inventoryItemInstanceTotal: inventoryItemInstanceTotal,
    184                 filterParams: filterParams ]
     231                filterParams: filterParams,
     232                params: params ]
    185233    } // end search()
    186234
  • trunk/grails-app/i18n/messages.properties

    r482 r485  
    200200default.options.text=Options
    201201default.none.text=None
     202default.all.text=All
    202203
    203204# Rich UI plugin - Calendar
     
    287288task.search.text.planners.range.none.found=No tasks found in the past week or two weeks ahead.
    288289task.search.calendar.text.too.many.results=Too many results, only {0} are shown.
     290
     291# InventoryItemSearch
     292inventoryItem.search.text.below.reorder=Bellow Reorder
     293inventoryItem.search.text.below.reorder.description=Inventory items at or below reorder point, with reorder enabled.
     294inventoryItem.search.text.below.reorder.all=Below Reorder (all)
     295inventoryItem.search.text.below.reorder.all.description=Inventory items at or below reorder point, including reorder disabled.
     296inventoryItem.search.text.below.reorder.none.found=No inventory items found at or below reorder point.
     297inventoryItem.search.text.all.description=All inventory items.
     298inventoryItem.search.text.all.none.found=No inventory items found.
  • trunk/grails-app/views/inventoryItemDetailed/search.gsp

    r468 r485  
    197197                        <tr class="prop">
    198198                            <td valign="top" class="name">
     199                                <label>Inventory:</label>
     200                            </td>
     201                            <td valign="top" class="value">
     202                                <g:link controller="inventoryItemDetailed"
     203                                                action="search"
     204                                                params="[quickSearch: 'all']">
     205                                                <g:message code="default.all.text" />
     206                                </g:link>
     207                                <br />
     208                                <g:link controller="inventoryItemDetailed"
     209                                                action="search"
     210                                                params="[quickSearch: 'inventoryBelowReorder']">
     211                                                <g:message code="inventoryItem.search.text.below.reorder" />
     212                                </g:link> - <g:message code="inventoryItem.search.text.below.reorder.description" />
     213                                <br />
     214                                <g:link controller="inventoryItemDetailed"
     215                                                action="search"
     216                                                params="[quickSearch: 'inventoryBelowReorderAll']">
     217                                                <g:message code="inventoryItem.search.text.below.reorder.all" />
     218                                </g:link> - <g:message code="inventoryItem.search.text.below.reorder.all.description" />
     219                            </td>
     220                        </tr>
     221
     222                        <tr class="prop">
     223                            <td valign="top" class="name">
    199224                                <label>Links:</label>
    200225                            </td>
     
    204229                                                Purchases
    205230                                </g:link>
    206                                 <br />
    207231                            </td>
    208232                        </tr>
Note: See TracChangeset for help on using the changeset viewer.