Ignore:
Timestamp:
Feb 19, 2010, 1:46:29 AM (14 years ago)
Author:
gav
Message:

Add options div to InventoryItem search view and some minor detailing to other views.

File:
1 edited

Legend:

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

    r382 r392  
    11import org.codehaus.groovy.grails.plugins.springsecurity.Secured
     2import org.codehaus.groovy.grails.commons.ConfigurationHolder
    23
    34@Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_InventoryManager'])
     
    56
    67    def filterService
     8    def exportService
    79    def inventoryItemService
    810    def inventoryMovementService
     
    1416    def index = { redirect(action:search, params:params) }
    1517
     18    /**
     19    * Set session.inventoryItemSearchParamsMax
     20    */
     21    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_InventoryManager', 'ROLE_InventoryUser'])
     22    def setSearchParamsMax = {
     23        def max = 1000
     24        if(params.newMax.isInteger()) {
     25            def i = params.newMax.toInteger()
     26            if(i > 0 && i <= max)
     27                session.inventoryItemSearchParamsMax = params.newMax
     28            if(i > max)
     29                session.inventoryItemSearchParamsMax = max
     30        }
     31        forward(action: 'search', params: params)
     32    }
     33
    1634    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_InventoryManager', 'ROLE_InventoryUser'])
    1735    def search = {
     36
     37        if(session.inventoryItemSearchParamsMax)
     38            params.max = session.inventoryItemSearchParamsMax
     39
    1840        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
     41
     42        def inventoryItemInstanceList = []
     43        def inventoryItemInstanceTotal
     44        def filterParams = [:]
    1945
    2046        // Quick Search:
    2147        if(!params.filter) {
    22             return[ inventoryItemInstanceList: InventoryItem.list( params ), inventoryItemInstanceTotal: InventoryItem.count(), filterParams: params ]
    23         }
     48            inventoryItemInstanceList = InventoryItem.list( params )
     49            inventoryItemInstanceTotal = InventoryItem.count()
     50            filterParams = params
     51        }
     52        else {
    2453        // filterPane:
    25         return[ inventoryItemInstanceList: filterService.filter( params, InventoryItem ),
    26                 inventoryItemInstanceTotal: filterService.count( params, InventoryItem ),
    27                 filterParams: com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params),
    28                 params:params ]
    29     }
     54            inventoryItemInstanceList = filterService.filter( params, InventoryItem )
     55            inventoryItemInstanceTotal = filterService.count( params, InventoryItem )
     56            filterParams = com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params)
     57        }
     58
     59        // export plugin:
     60        if(params?.format && params.format != "html") {
     61
     62            def dateFmt = { date ->
     63                formatDate(format: "EEE, dd-MMM-yyyy", date: date)
     64            }
     65            String title = "Inventory List."
     66
     67            response.contentType = ConfigurationHolder.config.grails.mime.types[params.format]
     68            response.setHeader("Content-disposition", "attachment; filename=Inventory.${params.extension}")
     69            List fields = ["name",
     70                                "description",
     71                                "unitsInStock",
     72                                "unitOfMeasure",
     73                                "inventoryLocation",
     74                                "inventoryLocation.inventoryStore"]
     75            Map labels = ["name": "Name",
     76                                "description": "Description",
     77                                "unitsInStock":"In Stock",
     78                                "unitOfMeasure": "UOM",
     79                                "inventoryLocation": "Location",
     80                                "inventoryLocation.inventoryStore": "Store"]
     81
     82            Map formatters = [:]
     83            Map parameters = [title: title, separator: ","]
     84
     85            exportService.export(params.format,
     86                                                response.outputStream,
     87                                                inventoryItemInstanceList.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) },
     88                                                fields,
     89                                                labels,
     90                                                formatters,
     91                                                parameters)
     92        }
     93
     94        // Add some basic params to filterParams.
     95        filterParams.max = params.max
     96        filterParams.offset = params.offset?.toInteger() ?: 0
     97        filterParams.sort = params.sort ?: "id"
     98        filterParams.order = params.order ?: "desc"
     99
     100        return[ inventoryItemInstanceList: inventoryItemInstanceList,
     101                inventoryItemInstanceTotal: inventoryItemInstanceTotal,
     102                filterParams: filterParams ]
     103    } // end search()
    30104
    31105    /**
Note: See TracChangeset for help on using the changeset viewer.